working recovery mode
This commit is contained in:
parent
c4d2db98d5
commit
5ce76bfef7
|
@ -75,13 +75,19 @@ void ESPMegaRecovery::enterRecoveryMode() {
|
|||
this->web_server->loadCredentialsFromFRAM();
|
||||
ESP_LOGI("ESPMegaRecovery", "Aquiring the web server instance");
|
||||
AsyncWebServer *server = this->web_server->getServer();
|
||||
server->begin();
|
||||
// Add OTA update and restart endpoint
|
||||
ESP_LOGI("ESPMegaRecovery", "Adding OTA update and reboot endpoints");
|
||||
auto bindedDashboardHandler = std::bind(&ESPMegaWebServer::dashboardHandler, this->web_server, std::placeholders::_1);
|
||||
auto bindedOtaRequestHandler = std::bind(&ESPMegaWebServer::otaRequestHandler, this->web_server, std::placeholders::_1);
|
||||
auto bindedOtaUploadHandler = std::bind(&ESPMegaWebServer::otaUploadHandler, this->web_server, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, std::placeholders::_4, std::placeholders::_5, std::placeholders::_6);
|
||||
auto bindedDeviceInfoHandler = std::bind(&ESPMegaRecovery::getDeviceInfoHandler, this, std::placeholders::_1);
|
||||
auto bindedConfigHandler = std::bind(&ESPMegaRecovery::configHandler, this, std::placeholders::_1);
|
||||
server->on("/", HTTP_GET, bindedDashboardHandler);
|
||||
server->on("/ota_update", HTTP_POST, bindedOtaRequestHandler, bindedOtaUploadHandler);
|
||||
server->on("/reboot", HTTP_GET, std::bind(&ESPMegaWebServer::rebootHandler, this->web_server, std::placeholders::_1));
|
||||
|
||||
server->on("/get_device_info", HTTP_GET, bindedDeviceInfoHandler);
|
||||
server->on("/config", HTTP_GET, bindedConfigHandler);
|
||||
}
|
||||
void ESPMegaRecovery::bindFRAM(FRAM *fram, uint32_t address) {
|
||||
this->fram = fram;
|
||||
|
@ -105,3 +111,31 @@ void ESPMegaRecovery::resetBootloopCounter() {
|
|||
bool ESPMegaRecovery::isRecoveryMode() {
|
||||
return this->recovery_mode;
|
||||
}
|
||||
|
||||
void ESPMegaRecovery::getDeviceInfoHandler(AsyncWebServerRequest *request) {
|
||||
if (!request->authenticate(this->web_server->getWebUsername(), this->web_server->getWebPassword()))
|
||||
{
|
||||
return request->requestAuthentication();
|
||||
}
|
||||
StaticJsonDocument<512> doc;
|
||||
doc["hostname"] = this->iot->getNetworkConfig()->hostname;
|
||||
doc["ip_address"] = this->iot->getIp().toString();
|
||||
doc["mac_address"] = this->iot->getMac();
|
||||
doc["model"] = BOARD_MODEL;
|
||||
doc["mqtt_server"] = "Recovery";
|
||||
doc["mqtt_port"] = "Mode";
|
||||
doc["base_topic"] = "Recovery Mode";
|
||||
doc["mqtt_connected"] = "Recovery Mode";
|
||||
doc["software_version"] = "EMG-SAFE-1.0.0";
|
||||
doc["sdk_version"] = SDK_VESRION;
|
||||
doc["idf_version"] = IDF_VER;
|
||||
char buffer[512];
|
||||
serializeJson(doc, buffer);
|
||||
request->send(200, "application/json", buffer);
|
||||
}
|
||||
|
||||
void ESPMegaRecovery::configHandler(AsyncWebServerRequest *request){
|
||||
// Say Not Available in Recovery Mode
|
||||
// Wait 3s then redirect to /
|
||||
request->send(500, "text/html", "<h1>RECOVERY MODE</h1><p>Configuration is not available in recovery mode</p><script>setTimeout(function(){window.location.href = '/';}, 1500);</script>");
|
||||
}
|
|
@ -25,7 +25,8 @@ public:
|
|||
void resetBootloopCounter(); // Reset the bootloop counter
|
||||
bool isRecoveryMode(); // Check if the device is in recovery mode
|
||||
private:
|
||||
|
||||
void getDeviceInfoHandler(AsyncWebServerRequest *request);
|
||||
void configHandler(AsyncWebServerRequest *request);
|
||||
FRAM* fram;
|
||||
uint32_t fram_address;
|
||||
uint8_t bootloop_counter;
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
// #define FRAM_DEBUG
|
||||
// #define MQTT_DEBUG
|
||||
// #define WRITE_DEFAULT_NETCONF
|
||||
#define WRITE_DEFAULT_NETCONF
|
||||
//#define CLIMATE_CARD_ENABLE
|
||||
#define MQTT_CARD_REGISTER
|
||||
#define DISPLAY_ENABLE
|
||||
|
|
Loading…
Reference in New Issue