Migrate WebApi to TaskScheduler

This commit is contained in:
Thomas Basler 2023-11-20 22:07:07 +01:00
parent ab8679e7b9
commit 80d534e045
3 changed files with 13 additions and 7 deletions

View File

@ -22,12 +22,12 @@
#include "WebApi_ws_console.h" #include "WebApi_ws_console.h"
#include "WebApi_ws_live.h" #include "WebApi_ws_live.h"
#include <ESPAsyncWebServer.h> #include <ESPAsyncWebServer.h>
#include <TaskSchedulerDeclarations.h>
class WebApiClass { class WebApiClass {
public: public:
WebApiClass(); WebApiClass();
void init(); void init(Scheduler* scheduler);
void loop();
static bool checkCredentials(AsyncWebServerRequest* request); static bool checkCredentials(AsyncWebServerRequest* request);
static bool checkCredentialsReadonly(AsyncWebServerRequest* request); static bool checkCredentialsReadonly(AsyncWebServerRequest* request);
@ -35,6 +35,10 @@ public:
static void sendTooManyRequests(AsyncWebServerRequest* request); static void sendTooManyRequests(AsyncWebServerRequest* request);
private: private:
void loop();
Task _loopTask;
AsyncWebServer _server; AsyncWebServer _server;
AsyncEventSource _events; AsyncEventSource _events;

View File

@ -13,7 +13,7 @@ WebApiClass::WebApiClass()
{ {
} }
void WebApiClass::init() void WebApiClass::init(Scheduler* scheduler)
{ {
_server.addHandler(&_events); _server.addHandler(&_events);
@ -39,6 +39,11 @@ void WebApiClass::init()
_webApiWsLive.init(&_server); _webApiWsLive.init(&_server);
_server.begin(); _server.begin();
scheduler->addTask(_loopTask);
_loopTask.setCallback(std::bind(&WebApiClass::loop, this));
_loopTask.setIterations(TASK_FOREVER);
_loopTask.enable();
} }
void WebApiClass::loop() void WebApiClass::loop()

View File

@ -108,7 +108,7 @@ void setup()
// Initialize WebApi // Initialize WebApi
MessageOutput.print("Initialize WebApi... "); MessageOutput.print("Initialize WebApi... ");
WebApi.init(); WebApi.init(&scheduler);
MessageOutput.println("done"); MessageOutput.println("done");
// Initialize Display // Initialize Display
@ -154,7 +154,4 @@ void setup()
void loop() void loop()
{ {
scheduler.execute(); scheduler.execute();
WebApi.loop();
yield();
} }