From 77779a1ed9358f3184d2bfd2b5b66c1c1a18d921 Mon Sep 17 00:00:00 2001 From: Thomas Basler Date: Mon, 20 Nov 2023 21:55:00 +0100 Subject: [PATCH] Migrate InverterSettings to TaskScheduler --- include/InverterSettings.h | 8 ++++++-- src/InverterSettings.cpp | 7 ++++++- src/main.cpp | 4 +--- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/include/InverterSettings.h b/include/InverterSettings.h index 6375dfc..8de7253 100644 --- a/include/InverterSettings.h +++ b/include/InverterSettings.h @@ -1,16 +1,20 @@ // SPDX-License-Identifier: GPL-2.0-or-later #pragma once +#include #include #define INVERTER_UPDATE_SETTINGS_INTERVAL 60000l class InverterSettingsClass { public: - void init(); - void loop(); + void init(Scheduler* scheduler); private: + void loop(); + + Task _loopTask; + uint32_t _lastUpdate = 0; }; diff --git a/src/InverterSettings.cpp b/src/InverterSettings.cpp index 425ecd6..22b331a 100644 --- a/src/InverterSettings.cpp +++ b/src/InverterSettings.cpp @@ -25,7 +25,7 @@ InverterSettingsClass InverterSettings; -void InverterSettingsClass::init() +void InverterSettingsClass::init(Scheduler* scheduler) { const CONFIG_T& config = Configuration.get(); const PinMapping_t& pin = PinMapping.get(); @@ -87,6 +87,11 @@ void InverterSettingsClass::init() } else { MessageOutput.println("Invalid pin config"); } + + scheduler->addTask(_loopTask); + _loopTask.setCallback(std::bind(&InverterSettingsClass::loop, this)); + _loopTask.setIterations(TASK_FOREVER); + _loopTask.enable(); } void InverterSettingsClass::loop() diff --git a/src/main.cpp b/src/main.cpp index 63bc83c..eade584 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -144,7 +144,7 @@ void setup() } MessageOutput.println("done"); - InverterSettings.init(); + InverterSettings.init(&scheduler); Datastore.init(&scheduler); } @@ -153,8 +153,6 @@ void loop() { scheduler.execute(); - InverterSettings.loop(); - yield(); WebApi.loop(); yield(); Display.loop();