From 70f92f4d7ef99a87c6b7d6a8ea71b3859a394ce5 Mon Sep 17 00:00:00 2001 From: Nicu Hodos Date: Fri, 7 Feb 2025 12:13:24 +0100 Subject: [PATCH] display timer for 10 secs when started and then continuously when 16 mins are left --- include/display.h | 44 ++++++++++++++++++++++++++++++-------------- 1 file changed, 30 insertions(+), 14 deletions(-) diff --git a/include/display.h b/include/display.h index a23dd3b..1eb4674 100644 --- a/include/display.h +++ b/include/display.h @@ -78,25 +78,41 @@ namespace Display { } namespace Timer { - int8 timer = 0, currentTimer = 0; - - void start() { - currentTimer = timer; - auto displayTimer = []{ - if (currentTimer >= 0) { - clockDisplay.print(currentTimer--, DEC); + int8 timer = 0, current = 0; + Task tDisplayTimer(SECONDS(10), 2, + []{ + if (current >= 0) { + clockDisplay.print(current, DEC); clockDisplay.writeDisplay(); } - }; - tDisplayTime.setInterval(MINUTES(1)); - tDisplayTime.setCallback(displayTimer); - tDisplayTime.restart(); + }, &ts, false, + []{ + tDisplayTime.disable(); + return true; + }, + []{ + tDisplayTime.enable(); + }); + Task tTimer(MINUTES(1), TASK_FOREVER, + []{ + current--; + if (current == timer) tDisplayTimer.restart(); + if (current == 16) { + tDisplayTimer.setIterations(TASK_FOREVER); + tDisplayTimer.restart(); + } + }, &ts, false, nullptr, + []{ + tDisplayTimer.disable(); + }); + + void start() { + current = timer+1; + tTimer.restart(); } void stop() { - tDisplayTime.setInterval(MILLISECONDS(500)); - tDisplayTime.setCallback(displayTime); - tDisplayTime.restart(); + tTimer.disable(); } }