Fix: WebApp was not reloaded after firmware update
With the upgrade from ESPAsyncWebServer to 3.3.1 it seems that something has changed. Have to trigger the reboot from the main context.
This commit is contained in:
parent
34e1c43ca7
commit
3b3e6995c2
@ -6,9 +6,13 @@
|
|||||||
|
|
||||||
class WebApiFirmwareClass {
|
class WebApiFirmwareClass {
|
||||||
public:
|
public:
|
||||||
|
WebApiFirmwareClass();
|
||||||
void init(AsyncWebServer& server, Scheduler& scheduler);
|
void init(AsyncWebServer& server, Scheduler& scheduler);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void onFirmwareUpdateFinish(AsyncWebServerRequest* request);
|
void onFirmwareUpdateFinish(AsyncWebServerRequest* request);
|
||||||
void onFirmwareUpdateUpload(AsyncWebServerRequest* request, String filename, size_t index, uint8_t* data, size_t len, bool final);
|
void onFirmwareUpdateUpload(AsyncWebServerRequest* request, String filename, size_t index, uint8_t* data, size_t len, bool final);
|
||||||
|
|
||||||
|
Task _rebootTask;
|
||||||
|
void rebootTaskCb();
|
||||||
};
|
};
|
||||||
|
|||||||
@ -10,6 +10,11 @@
|
|||||||
#include "helper.h"
|
#include "helper.h"
|
||||||
#include <AsyncJson.h>
|
#include <AsyncJson.h>
|
||||||
|
|
||||||
|
WebApiFirmwareClass::WebApiFirmwareClass()
|
||||||
|
: _rebootTask(TASK_IMMEDIATE, TASK_ONCE, std::bind(&WebApiFirmwareClass::rebootTaskCb, this))
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
void WebApiFirmwareClass::init(AsyncWebServer& server, Scheduler& scheduler)
|
void WebApiFirmwareClass::init(AsyncWebServer& server, Scheduler& scheduler)
|
||||||
{
|
{
|
||||||
using std::placeholders::_1;
|
using std::placeholders::_1;
|
||||||
@ -22,6 +27,8 @@ void WebApiFirmwareClass::init(AsyncWebServer& server, Scheduler& scheduler)
|
|||||||
server.on("/api/firmware/update", HTTP_POST,
|
server.on("/api/firmware/update", HTTP_POST,
|
||||||
std::bind(&WebApiFirmwareClass::onFirmwareUpdateFinish, this, _1),
|
std::bind(&WebApiFirmwareClass::onFirmwareUpdateFinish, this, _1),
|
||||||
std::bind(&WebApiFirmwareClass::onFirmwareUpdateUpload, this, _1, _2, _3, _4, _5, _6));
|
std::bind(&WebApiFirmwareClass::onFirmwareUpdateUpload, this, _1, _2, _3, _4, _5, _6));
|
||||||
|
|
||||||
|
scheduler.addTask(_rebootTask);
|
||||||
}
|
}
|
||||||
|
|
||||||
void WebApiFirmwareClass::onFirmwareUpdateFinish(AsyncWebServerRequest* request)
|
void WebApiFirmwareClass::onFirmwareUpdateFinish(AsyncWebServerRequest* request)
|
||||||
@ -37,7 +44,8 @@ void WebApiFirmwareClass::onFirmwareUpdateFinish(AsyncWebServerRequest* request)
|
|||||||
response->addHeader("Connection", "close");
|
response->addHeader("Connection", "close");
|
||||||
response->addHeader("Access-Control-Allow-Origin", "*");
|
response->addHeader("Access-Control-Allow-Origin", "*");
|
||||||
request->send(response);
|
request->send(response);
|
||||||
Utils::restartDtu();
|
_rebootTask.enable();
|
||||||
|
_rebootTask.restart();
|
||||||
}
|
}
|
||||||
|
|
||||||
void WebApiFirmwareClass::onFirmwareUpdateUpload(AsyncWebServerRequest* request, String filename, size_t index, uint8_t* data, size_t len, bool final)
|
void WebApiFirmwareClass::onFirmwareUpdateUpload(AsyncWebServerRequest* request, String filename, size_t index, uint8_t* data, size_t len, bool final)
|
||||||
@ -78,3 +86,8 @@ void WebApiFirmwareClass::onFirmwareUpdateUpload(AsyncWebServerRequest* request,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void WebApiFirmwareClass::rebootTaskCb()
|
||||||
|
{
|
||||||
|
Utils::restartDtu();
|
||||||
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user