refactor: some changes

This commit is contained in:
Yurii
2024-11-15 00:25:41 +03:00
parent 0d71a674b6
commit 19feb85230
7 changed files with 62 additions and 15 deletions

View File

@@ -73,8 +73,20 @@ protected:
} }
if (vars.actions.restart) { if (vars.actions.restart) {
vars.actions.restart = false;
this->restartSignalTime = millis(); this->restartSignalTime = millis();
vars.actions.restart = false;
vars.states.restarting = true;
// save settings
fsSettings.updateNow();
// save sensors settings
fsSensorsSettings.updateNow();
// force save network settings
if (fsNetworkSettings.updateNow() == FD_FILE_ERR && LittleFS.begin()) {
fsNetworkSettings.write();
}
Log.sinfoln(FPSTR(L_MAIN), F("Restart signal received. Restart after 10 sec.")); Log.sinfoln(FPSTR(L_MAIN), F("Restart signal received. Restart after 10 sec."));
} }
@@ -148,20 +160,9 @@ protected:
// restart // restart
if (this->restartSignalTime > 0 && millis() - this->restartSignalTime > 10000) { if (vars.states.restarting && millis() - this->restartSignalTime > 10000) {
// save settings vars.states.restarting = false;
fsSettings.updateNow();
// save sensors settings
fsSensorsSettings.updateNow();
// force save network settings
if (fsNetworkSettings.updateNow() == FD_FILE_ERR && LittleFS.begin()) {
fsNetworkSettings.write();
}
this->restartSignalTime = 0;
this->delay(500);
ESP.restart(); ESP.restart();
} }
} }
@@ -170,8 +171,10 @@ protected:
unsigned int freeHeap = getFreeHeap(); unsigned int freeHeap = getFreeHeap();
unsigned int maxFreeBlockHeap = getMaxFreeBlockHeap(); unsigned int maxFreeBlockHeap = getMaxFreeBlockHeap();
if (!this->restartSignalTime && (freeHeap < 2048 || maxFreeBlockHeap < 2048)) { // critical heap
if (!vars.states.restarting && (freeHeap < 2048 || maxFreeBlockHeap < 2048)) {
this->restartSignalTime = millis(); this->restartSignalTime = millis();
vars.states.restarting = true;
} }
if (settings.system.logLevel < TinyLogger::Level::VERBOSE) { if (settings.system.logLevel < TinyLogger::Level::VERBOSE) {

View File

@@ -184,6 +184,10 @@ protected:
} }
void loop() { void loop() {
if (vars.states.restarting || vars.states.upgrading) {
return;
}
if (this->connected && !this->client->connected()) { if (this->connected && !this->client->connected()) {
this->connected = false; this->connected = false;
this->onDisconnect(); this->onDisconnect();

View File

@@ -106,6 +106,10 @@ protected:
} }
void loop() { void loop() {
if (vars.states.restarting || vars.states.upgrading) {
return;
}
if (this->instanceInGpio != settings.opentherm.inGpio || this->instanceOutGpio != settings.opentherm.outGpio) { if (this->instanceInGpio != settings.opentherm.inGpio || this->instanceOutGpio != settings.opentherm.outGpio) {
this->setup(); this->setup();

View File

@@ -189,6 +189,11 @@ protected:
return true; return true;
})->setBeforeUpgradeCallback([](UpgradeHandler::UpgradeType type) -> bool { })->setBeforeUpgradeCallback([](UpgradeHandler::UpgradeType type) -> bool {
if (vars.states.restarting) {
return false;
}
vars.states.upgrading = true;
return true; return true;
})->setAfterUpgradeCallback([this](const UpgradeHandler::UpgradeResult& fwResult, const UpgradeHandler::UpgradeResult& fsResult) { })->setAfterUpgradeCallback([this](const UpgradeHandler::UpgradeResult& fwResult, const UpgradeHandler::UpgradeResult& fsResult) {
unsigned short status = 200; unsigned short status = 200;
@@ -209,6 +214,8 @@ protected:
response.concat(fsResult.error); response.concat(fsResult.error);
response.concat(F("\"}}")); response.concat(F("\"}}"));
this->webServer->send(status, F("application/json"), response); this->webServer->send(status, F("application/json"), response);
vars.states.upgrading = false;
}); });
this->webServer->addHandler(upgradeHandler); this->webServer->addHandler(upgradeHandler);
@@ -247,6 +254,10 @@ protected:
} }
} }
if (vars.states.restarting) {
return this->webServer->send(503);
}
const String& plain = this->webServer->arg(0); const String& plain = this->webServer->arg(0);
Log.straceln(FPSTR(L_PORTAL_WEBSERVER), F("Request /api/backup/restore %d bytes: %s"), plain.length(), plain.c_str()); Log.straceln(FPSTR(L_PORTAL_WEBSERVER), F("Request /api/backup/restore %d bytes: %s"), plain.length(), plain.c_str());
@@ -337,6 +348,10 @@ protected:
return this->webServer->send(401); return this->webServer->send(401);
} }
} }
if (vars.states.restarting) {
return this->webServer->send(503);
}
const String& plain = this->webServer->arg(0); const String& plain = this->webServer->arg(0);
Log.straceln(FPSTR(L_PORTAL_WEBSERVER), F("Request /api/network/settings %d bytes: %s"), plain.length(), plain.c_str()); Log.straceln(FPSTR(L_PORTAL_WEBSERVER), F("Request /api/network/settings %d bytes: %s"), plain.length(), plain.c_str());
@@ -452,6 +467,10 @@ protected:
return this->webServer->send(401); return this->webServer->send(401);
} }
} }
if (vars.states.restarting) {
return this->webServer->send(503);
}
const String& plain = this->webServer->arg(0); const String& plain = this->webServer->arg(0);
Log.straceln(FPSTR(L_PORTAL_WEBSERVER), F("Request /api/settings %d bytes: %s"), plain.length(), plain.c_str()); Log.straceln(FPSTR(L_PORTAL_WEBSERVER), F("Request /api/settings %d bytes: %s"), plain.length(), plain.c_str());
@@ -557,6 +576,10 @@ protected:
return this->webServer->send(401); return this->webServer->send(401);
} }
} }
if (vars.states.restarting) {
return this->webServer->send(503);
}
#ifdef ARDUINO_ARCH_ESP8266 #ifdef ARDUINO_ARCH_ESP8266
if (!this->webServer->hasArg(F("id")) || this->webServer->args() != 1) { if (!this->webServer->hasArg(F("id")) || this->webServer->args() != 1) {

View File

@@ -32,6 +32,10 @@ protected:
#endif #endif
void loop() { void loop() {
if (vars.states.restarting || vars.states.upgrading) {
return;
}
this->indoorSensorsConnected = Sensors::existsConnectedSensorsByPurpose(Sensors::Purpose::INDOOR_TEMP); this->indoorSensorsConnected = Sensors::existsConnectedSensorsByPurpose(Sensors::Purpose::INDOOR_TEMP);
//this->outdoorSensorsConnected = Sensors::existsConnectedSensorsByPurpose(Sensors::Purpose::OUTDOOR_TEMP); //this->outdoorSensorsConnected = Sensors::existsConnectedSensorsByPurpose(Sensors::Purpose::OUTDOOR_TEMP);

View File

@@ -59,6 +59,10 @@ protected:
#endif #endif
void loop() { void loop() {
if (vars.states.restarting || vars.states.upgrading) {
return;
}
if (isPollingDallasSensors()) { if (isPollingDallasSensors()) {
pollingDallasSensors(false); pollingDallasSensors(false);
this->yield(); this->yield();

View File

@@ -366,4 +366,9 @@ struct Variables {
bool resetFault = false; bool resetFault = false;
bool resetDiagnostic = false; bool resetDiagnostic = false;
} actions; } actions;
struct {
bool restarting = false;
bool upgrading = false;
} states;
} vars; } vars;