Migrate LedSingle to TaskScheduler

This commit is contained in:
Thomas Basler 2023-11-20 21:47:44 +01:00
parent 524483451f
commit 7881d955bd
3 changed files with 13 additions and 6 deletions

View File

@ -2,6 +2,7 @@
#pragma once #pragma once
#include "PinMapping.h" #include "PinMapping.h"
#include <TaskSchedulerDeclarations.h>
#include <TimeoutHelper.h> #include <TimeoutHelper.h>
#define LEDSINGLE_UPDATE_INTERVAL 2000 #define LEDSINGLE_UPDATE_INTERVAL 2000
@ -9,13 +10,16 @@
class LedSingleClass { class LedSingleClass {
public: public:
LedSingleClass(); LedSingleClass();
void init(); void init(Scheduler* scheduler);
void loop();
void turnAllOff(); void turnAllOff();
void turnAllOn(); void turnAllOn();
private: private:
void loop();
Task _loopTask;
enum class LedState_t { enum class LedState_t {
On, On,
Off, Off,

View File

@ -16,7 +16,7 @@ LedSingleClass::LedSingleClass()
{ {
} }
void LedSingleClass::init() void LedSingleClass::init(Scheduler* scheduler)
{ {
_blinkTimeout.set(500); _blinkTimeout.set(500);
_updateTimeout.set(LEDSINGLE_UPDATE_INTERVAL); _updateTimeout.set(LEDSINGLE_UPDATE_INTERVAL);
@ -33,6 +33,11 @@ void LedSingleClass::init()
_ledState[i] = LedState_t::Off; _ledState[i] = LedState_t::Off;
} }
scheduler->addTask(_loopTask);
_loopTask.setCallback(std::bind(&LedSingleClass::loop, this));
_loopTask.setIterations(TASK_FOREVER);
_loopTask.enable();
} }
void LedSingleClass::loop() void LedSingleClass::loop()

View File

@ -128,7 +128,7 @@ void setup()
// Initialize Single LEDs // Initialize Single LEDs
MessageOutput.print("Initialize LEDs... "); MessageOutput.print("Initialize LEDs... ");
LedSingle.init(); LedSingle.init(&scheduler);
MessageOutput.println("done"); MessageOutput.println("done");
// Check for default DTU serial // Check for default DTU serial
@ -163,6 +163,4 @@ void loop()
yield(); yield();
MessageOutput.loop(); MessageOutput.loop();
yield(); yield();
LedSingle.loop();
yield();
} }