From 7881d955bd4b700ded17e833746e7fcacca60870 Mon Sep 17 00:00:00 2001 From: Thomas Basler Date: Mon, 20 Nov 2023 21:47:44 +0100 Subject: [PATCH] Migrate LedSingle to TaskScheduler --- include/Led_Single.h | 8 ++++++-- src/Led_Single.cpp | 7 ++++++- src/main.cpp | 4 +--- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/include/Led_Single.h b/include/Led_Single.h index ed81182..e01fdfe 100644 --- a/include/Led_Single.h +++ b/include/Led_Single.h @@ -2,6 +2,7 @@ #pragma once #include "PinMapping.h" +#include #include #define LEDSINGLE_UPDATE_INTERVAL 2000 @@ -9,13 +10,16 @@ class LedSingleClass { public: LedSingleClass(); - void init(); - void loop(); + void init(Scheduler* scheduler); void turnAllOff(); void turnAllOn(); private: + void loop(); + + Task _loopTask; + enum class LedState_t { On, Off, diff --git a/src/Led_Single.cpp b/src/Led_Single.cpp index 24aabbd..4382561 100644 --- a/src/Led_Single.cpp +++ b/src/Led_Single.cpp @@ -16,7 +16,7 @@ LedSingleClass::LedSingleClass() { } -void LedSingleClass::init() +void LedSingleClass::init(Scheduler* scheduler) { _blinkTimeout.set(500); _updateTimeout.set(LEDSINGLE_UPDATE_INTERVAL); @@ -33,6 +33,11 @@ void LedSingleClass::init() _ledState[i] = LedState_t::Off; } + + scheduler->addTask(_loopTask); + _loopTask.setCallback(std::bind(&LedSingleClass::loop, this)); + _loopTask.setIterations(TASK_FOREVER); + _loopTask.enable(); } void LedSingleClass::loop() diff --git a/src/main.cpp b/src/main.cpp index a4874e8..9e3404a 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -128,7 +128,7 @@ void setup() // Initialize Single LEDs MessageOutput.print("Initialize LEDs... "); - LedSingle.init(); + LedSingle.init(&scheduler); MessageOutput.println("done"); // Check for default DTU serial @@ -163,6 +163,4 @@ void loop() yield(); MessageOutput.loop(); yield(); - LedSingle.loop(); - yield(); } \ No newline at end of file