diff --git a/src/AgConfigure.cpp b/src/AgConfigure.cpp index fc793fd..bf92879 100644 --- a/src/AgConfigure.cpp +++ b/src/AgConfigure.cpp @@ -41,6 +41,7 @@ JSON_PROP_DEF(ledbarBrightness); JSON_PROP_DEF(displayBrightness); JSON_PROP_DEF(co2CalibrationRequested); JSON_PROP_DEF(ledBarTestRequested); +JSON_PROP_DEF(lastOta); JSON_PROP_DEF(offlineMode); JSONVar jconfig; @@ -1101,6 +1102,17 @@ void Configuration::toConfig(const char *buf) { jconfig[jprop_offlineMode] = false; } + /** Last OTA */ + if(JSON.typeof_(jconfig[jprop_lastOta]) != "number") { + isInvalid = true; + } else { + isInvalid = false; + } + if(isInvalid) { + jconfig[jprop_lastOta] = 0; + changed = true; + } + if (changed) { saveConfig(); } @@ -1196,13 +1208,15 @@ int Configuration::getLastOta(void) { logError("Current year " + String(curYear) + String(" invalid")); return -1; } + double _t = jconfig[jprop_lastOta]; + time_t lastOta = (time_t)_t; time_t curTime = mktime(&timeInfo); - logInfo("Last ota time: " + String(config.lastOta)); - if (config.lastOta == 0) { + logInfo("Last ota time: " + String(lastOta)); + if (lastOta == 0) { return 0; } - int sec = curTime - config.lastOta; + int sec = curTime - lastOta; logInfo("Last ota secconds: " + String(sec)); return sec; } @@ -1218,8 +1232,10 @@ void Configuration::updateLastOta(void) { logError("updateLastOta: lolcal time invalid"); return; } - config.lastOta = mktime(&timeInfo); - logInfo("Last OTA: " + String(config.lastOta)); + + time_t lastOta = mktime(&timeInfo); + jconfig[jprop_lastOta] = (unsigned long)lastOta; + logInfo("Last OTA: " + String(lastOta)); saveConfig(); }