mirror of
https://github.com/anklimov/lighthub
synced 2025-12-06 11:49:51 +03:00
GET cmd refactored to operate in safe time
This commit is contained in:
@@ -170,6 +170,13 @@ bool cleanConf(bool wait)
|
|||||||
{
|
{
|
||||||
if (!root) return true;
|
if (!root) return true;
|
||||||
bool clean = true;
|
bool clean = true;
|
||||||
|
if (configLocked)
|
||||||
|
{
|
||||||
|
errorSerial<<F("Can not clean - locked")<<endl;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
No more unsafe operations
|
||||||
if (wait)
|
if (wait)
|
||||||
{
|
{
|
||||||
debugSerial<<F("Unlocking config ...")<<endl;
|
debugSerial<<F("Unlocking config ...")<<endl;
|
||||||
@@ -196,6 +203,7 @@ if (configLocked)
|
|||||||
clean = false;
|
clean = false;
|
||||||
}
|
}
|
||||||
} //wait
|
} //wait
|
||||||
|
*/
|
||||||
|
|
||||||
debugSerial<<F("Stopping channels ...")<<endl;
|
debugSerial<<F("Stopping channels ...")<<endl;
|
||||||
timerHandlerBusy++;
|
timerHandlerBusy++;
|
||||||
@@ -763,6 +771,29 @@ lan_status lanLoop() {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case DO_GET:
|
||||||
|
if (mqttClient.connected()) mqttClient.disconnect();
|
||||||
|
timerLanCheckTime = millis();// + 5000;
|
||||||
|
lanStatus = GET;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case GET:
|
||||||
|
statusLED.set(ledRED|ledGREEN|((configLoaded)?ledBLINK:0));
|
||||||
|
if (configLocked) return GET;
|
||||||
|
|
||||||
|
if (loadConfigFromHttp()==200) lanStatus = IP_READY_CONFIG_LOADED_CONNECTING_TO_BROKER;
|
||||||
|
else if (configLoaded) {
|
||||||
|
infoSerial<<F("Continue with previously loaded config")<<endl;
|
||||||
|
lanStatus = IP_READY_CONFIG_LOADED_CONNECTING_TO_BROKER;
|
||||||
|
}
|
||||||
|
|
||||||
|
else if (Ethernet.localIP()) lanStatus = DO_READ_RE_CONFIG;
|
||||||
|
|
||||||
|
else lanStatus = DO_REINIT; //Load from NVRAM
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
|
||||||
case DO_NOTHING:
|
case DO_NOTHING:
|
||||||
case OPERATION_NO_MQTT:
|
case OPERATION_NO_MQTT:
|
||||||
;
|
;
|
||||||
@@ -1680,7 +1711,10 @@ if (arg_cnt>1)
|
|||||||
if (lanStatus>=HAVE_IP_ADDRESS)
|
if (lanStatus>=HAVE_IP_ADDRESS)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
lanStatus = DO_GET;
|
||||||
|
return 200;
|
||||||
|
/*
|
||||||
|
let Re-Get will be only in safe time
|
||||||
int retCode=loadConfigFromHttp();
|
int retCode=loadConfigFromHttp();
|
||||||
if (retCode==200)
|
if (retCode==200)
|
||||||
{
|
{
|
||||||
@@ -1699,6 +1733,7 @@ int retCode=loadConfigFromHttp();
|
|||||||
if (configLoaded) lanStatus =IP_READY_CONFIG_LOADED_CONNECTING_TO_BROKER;
|
if (configLoaded) lanStatus =IP_READY_CONFIG_LOADED_CONNECTING_TO_BROKER;
|
||||||
else lanStatus = DO_READ_RE_CONFIG;
|
else lanStatus = DO_READ_RE_CONFIG;
|
||||||
return retCode;
|
return retCode;
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
errorSerial<<F("No IP adress")<<endl;
|
errorSerial<<F("No IP adress")<<endl;
|
||||||
return 500;
|
return 500;
|
||||||
@@ -1772,7 +1807,12 @@ if (!sysConf.getServer(configServer,sizeof(configServer)))
|
|||||||
infoSerial<<F("got Config\n"); delay(500);
|
infoSerial<<F("got Config\n"); delay(500);
|
||||||
aJsonFileStream as = aJsonFileStream(configStream);
|
aJsonFileStream as = aJsonFileStream(configStream);
|
||||||
noInterrupts();
|
noInterrupts();
|
||||||
cleanConf(true);
|
if (!cleanConf(true))
|
||||||
|
{
|
||||||
|
errorSerial<<F("Get aborted")<<endl;
|
||||||
|
htclient.stop();
|
||||||
|
return 500;
|
||||||
|
}
|
||||||
root = aJson.parse(&as);
|
root = aJson.parse(&as);
|
||||||
interrupts();
|
interrupts();
|
||||||
hclient.closeStream(configStream); // this is very important -- be sure to close the STREAM
|
hclient.closeStream(configStream); // this is very important -- be sure to close the STREAM
|
||||||
@@ -1844,7 +1884,13 @@ if (!sysConf.getServer(configServer,sizeof(configServer)))
|
|||||||
if (responseStatusCode == 200) {
|
if (responseStatusCode == 200) {
|
||||||
aJsonStream socketStream = aJsonStream(&htclient);
|
aJsonStream socketStream = aJsonStream(&htclient);
|
||||||
debugSerial<<F("Free:")<<freeRam()<<endl;
|
debugSerial<<F("Free:")<<freeRam()<<endl;
|
||||||
cleanConf(true);
|
if (!cleanConf(true))
|
||||||
|
{
|
||||||
|
errorSerial<<F("Get aborted")<<endl;
|
||||||
|
htclient.stop();
|
||||||
|
return 500;
|
||||||
|
}
|
||||||
|
|
||||||
debugSerial<<F("Configuration cleaned")<<endl;
|
debugSerial<<F("Configuration cleaned")<<endl;
|
||||||
debugSerial<<F("Free:")<<freeRam()<<endl;
|
debugSerial<<F("Free:")<<freeRam()<<endl;
|
||||||
//root = aJson.parse((char *) response.c_str());
|
//root = aJson.parse((char *) response.c_str());
|
||||||
@@ -1917,7 +1963,12 @@ if (!sysConf.getServer(configServer,sizeof(configServer)))
|
|||||||
sysConf.setETAG(httpClient.header("ETag"));
|
sysConf.setETAG(httpClient.header("ETag"));
|
||||||
//String response = httpClient.getString();
|
//String response = httpClient.getString();
|
||||||
//debugSerial<<response;
|
//debugSerial<<response;
|
||||||
cleanConf(true);
|
if (!cleanConf(true))
|
||||||
|
{
|
||||||
|
errorSerial<<F("Get aborted")<<endl;
|
||||||
|
htclient.stop();
|
||||||
|
return 500;
|
||||||
|
}
|
||||||
//root = aJson.parse((char *) response.c_str());
|
//root = aJson.parse((char *) response.c_str());
|
||||||
root = aJson.parse(&socketStream);
|
root = aJson.parse(&socketStream);
|
||||||
|
|
||||||
|
|||||||
@@ -218,7 +218,9 @@ enum lan_status {
|
|||||||
RECONNECT = 13,
|
RECONNECT = 13,
|
||||||
READ_RE_CONFIG = 14,
|
READ_RE_CONFIG = 14,
|
||||||
DO_READ_RE_CONFIG = 15,
|
DO_READ_RE_CONFIG = 15,
|
||||||
DO_NOTHING = -15
|
DO_NOTHING = -15,
|
||||||
|
DO_GET = -16,
|
||||||
|
GET = -17
|
||||||
};
|
};
|
||||||
|
|
||||||
extern lan_status lanStatus;
|
extern lan_status lanStatus;
|
||||||
|
|||||||
Reference in New Issue
Block a user