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) {
vars.actions.restart = false;
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."));
}
@@ -148,20 +160,9 @@ protected:
// restart
if (this->restartSignalTime > 0 && millis() - this->restartSignalTime > 10000) {
// save settings
fsSettings.updateNow();
if (vars.states.restarting && millis() - this->restartSignalTime > 10000) {
vars.states.restarting = false;
// 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();
}
}
@@ -170,8 +171,10 @@ protected:
unsigned int freeHeap = getFreeHeap();
unsigned int maxFreeBlockHeap = getMaxFreeBlockHeap();
if (!this->restartSignalTime && (freeHeap < 2048 || maxFreeBlockHeap < 2048)) {
// critical heap
if (!vars.states.restarting && (freeHeap < 2048 || maxFreeBlockHeap < 2048)) {
this->restartSignalTime = millis();
vars.states.restarting = true;
}
if (settings.system.logLevel < TinyLogger::Level::VERBOSE) {

View File

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

View File

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

View File

@@ -189,6 +189,11 @@ protected:
return true;
})->setBeforeUpgradeCallback([](UpgradeHandler::UpgradeType type) -> bool {
if (vars.states.restarting) {
return false;
}
vars.states.upgrading = true;
return true;
})->setAfterUpgradeCallback([this](const UpgradeHandler::UpgradeResult& fwResult, const UpgradeHandler::UpgradeResult& fsResult) {
unsigned short status = 200;
@@ -209,6 +214,8 @@ protected:
response.concat(fsResult.error);
response.concat(F("\"}}"));
this->webServer->send(status, F("application/json"), response);
vars.states.upgrading = false;
});
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);
Log.straceln(FPSTR(L_PORTAL_WEBSERVER), F("Request /api/backup/restore %d bytes: %s"), plain.length(), plain.c_str());
@@ -338,6 +349,10 @@ protected:
}
}
if (vars.states.restarting) {
return this->webServer->send(503);
}
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());
@@ -453,6 +468,10 @@ protected:
}
}
if (vars.states.restarting) {
return this->webServer->send(503);
}
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());
@@ -558,6 +577,10 @@ protected:
}
}
if (vars.states.restarting) {
return this->webServer->send(503);
}
#ifdef ARDUINO_ARCH_ESP8266
if (!this->webServer->hasArg(F("id")) || this->webServer->args() != 1) {
return this->webServer->send(400);

View File

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

View File

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

View File

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