Fixed race conditions in current time determination
This commit is contained in:
@@ -30,10 +30,11 @@ int cur_hum = 0;
|
|||||||
|
|
||||||
|
|
||||||
unsigned long last_poll = 0;
|
unsigned long last_poll = 0;
|
||||||
|
unsigned long current = 0;
|
||||||
|
|
||||||
Modbus::ResultCode OnModbusRequest(Modbus::FunctionCode fc, const Modbus::RequestData data)
|
Modbus::ResultCode OnModbusRequest(Modbus::FunctionCode fc, const Modbus::RequestData data)
|
||||||
{
|
{
|
||||||
last_poll = millis();
|
last_poll = current;
|
||||||
return Modbus::EX_SUCCESS;
|
return Modbus::EX_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -70,6 +71,8 @@ void setup()
|
|||||||
mb.server(15000);
|
mb.server(15000);
|
||||||
mb.addHreg(REGISTER_CURRENT_TEMP, cur_t);
|
mb.addHreg(REGISTER_CURRENT_TEMP, cur_t);
|
||||||
mb.addHreg(REGISTER_CURRENT_HUM, cur_hum);
|
mb.addHreg(REGISTER_CURRENT_HUM, cur_hum);
|
||||||
|
|
||||||
|
last_poll = millis();
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateDHTData()
|
void UpdateDHTData()
|
||||||
@@ -86,7 +89,7 @@ unsigned long last_log = 0;
|
|||||||
|
|
||||||
void loop()
|
void loop()
|
||||||
{
|
{
|
||||||
unsigned long current = millis();
|
current = millis();
|
||||||
if (current < last_read || current - last_read >= READ_INTERVAL)
|
if (current < last_read || current - last_read >= READ_INTERVAL)
|
||||||
{
|
{
|
||||||
UpdateDHTData();
|
UpdateDHTData();
|
||||||
@@ -110,6 +113,8 @@ void loop()
|
|||||||
}
|
}
|
||||||
if (current < last_poll || current - last_poll > NON_CONNECTED_REBOOT_TIMEOUT)
|
if (current < last_poll || current - last_poll > NON_CONNECTED_REBOOT_TIMEOUT)
|
||||||
{
|
{
|
||||||
|
Serial.println(current);
|
||||||
|
Serial.println(last_poll);
|
||||||
Serial.println("Detected absense of polls, consider it as connection failure");
|
Serial.println("Detected absense of polls, consider it as connection failure");
|
||||||
ESP.restart();
|
ESP.restart();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user