diff --git a/include/Led_Single.h b/include/Led_Single.h index ed811824..e01fdfe0 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 24aabbd8..43825619 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 a4874e8a..9e3404af 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