Move network reconfiguration to main loop to prevent crashes

This commit is contained in:
Thomas Basler 2025-01-24 21:08:38 +01:00
parent e1641131d0
commit 226ed94346
2 changed files with 17 additions and 0 deletions

View File

@ -6,10 +6,14 @@
class WebApiNetworkClass {
public:
WebApiNetworkClass();
void init(AsyncWebServer& server, Scheduler& scheduler);
private:
void onNetworkStatus(AsyncWebServerRequest* request);
void onNetworkAdminGet(AsyncWebServerRequest* request);
void onNetworkAdminPost(AsyncWebServerRequest* request);
Task _applyDataTask;
void applyDataTaskCb();
};

View File

@ -10,6 +10,11 @@
#include "helper.h"
#include <AsyncJson.h>
WebApiNetworkClass::WebApiNetworkClass()
: _applyDataTask(500 * TASK_MILLISECOND, TASK_ONCE, std::bind(&WebApiNetworkClass::applyDataTaskCb, this))
{
}
void WebApiNetworkClass::init(AsyncWebServer& server, Scheduler& scheduler)
{
using std::placeholders::_1;
@ -17,6 +22,8 @@ void WebApiNetworkClass::init(AsyncWebServer& server, Scheduler& scheduler)
server.on("/api/network/status", HTTP_GET, std::bind(&WebApiNetworkClass::onNetworkStatus, this, _1));
server.on("/api/network/config", HTTP_GET, std::bind(&WebApiNetworkClass::onNetworkAdminGet, this, _1));
server.on("/api/network/config", HTTP_POST, std::bind(&WebApiNetworkClass::onNetworkAdminPost, this, _1));
scheduler.addTask(_applyDataTask);
}
void WebApiNetworkClass::onNetworkStatus(AsyncWebServerRequest* request)
@ -204,6 +211,12 @@ void WebApiNetworkClass::onNetworkAdminPost(AsyncWebServerRequest* request)
WebApi.sendJsonResponse(request, response, __FUNCTION__, __LINE__);
_applyDataTask.enable();
_applyDataTask.restart();
}
void WebApiNetworkClass::applyDataTaskCb()
{
NetworkSettings.enableAdminMode();
NetworkSettings.applyConfig();
}