From 80d534e0451613351142da16b77ccc40746985ab Mon Sep 17 00:00:00 2001 From: Thomas Basler Date: Mon, 20 Nov 2023 22:07:07 +0100 Subject: [PATCH] Migrate WebApi to TaskScheduler --- include/WebApi.h | 8 ++++++-- src/WebApi.cpp | 7 ++++++- src/main.cpp | 5 +---- 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/include/WebApi.h b/include/WebApi.h index b61091d..b96184b 100644 --- a/include/WebApi.h +++ b/include/WebApi.h @@ -22,12 +22,12 @@ #include "WebApi_ws_console.h" #include "WebApi_ws_live.h" #include +#include class WebApiClass { public: WebApiClass(); - void init(); - void loop(); + void init(Scheduler* scheduler); static bool checkCredentials(AsyncWebServerRequest* request); static bool checkCredentialsReadonly(AsyncWebServerRequest* request); @@ -35,6 +35,10 @@ public: static void sendTooManyRequests(AsyncWebServerRequest* request); private: + void loop(); + + Task _loopTask; + AsyncWebServer _server; AsyncEventSource _events; diff --git a/src/WebApi.cpp b/src/WebApi.cpp index 717c352..2c5cc80 100644 --- a/src/WebApi.cpp +++ b/src/WebApi.cpp @@ -13,7 +13,7 @@ WebApiClass::WebApiClass() { } -void WebApiClass::init() +void WebApiClass::init(Scheduler* scheduler) { _server.addHandler(&_events); @@ -39,6 +39,11 @@ void WebApiClass::init() _webApiWsLive.init(&_server); _server.begin(); + + scheduler->addTask(_loopTask); + _loopTask.setCallback(std::bind(&WebApiClass::loop, this)); + _loopTask.setIterations(TASK_FOREVER); + _loopTask.enable(); } void WebApiClass::loop() diff --git a/src/main.cpp b/src/main.cpp index 2a1b592..e7dd14d 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -108,7 +108,7 @@ void setup() // Initialize WebApi MessageOutput.print("Initialize WebApi... "); - WebApi.init(); + WebApi.init(&scheduler); MessageOutput.println("done"); // Initialize Display @@ -154,7 +154,4 @@ void setup() void loop() { scheduler.execute(); - - WebApi.loop(); - yield(); } \ No newline at end of file