diff --git a/ESP32_AP-Flasher/include/system.h b/ESP32_AP-Flasher/include/system.h index 9b34420d..4854489c 100644 --- a/ESP32_AP-Flasher/include/system.h +++ b/ESP32_AP-Flasher/include/system.h @@ -8,7 +8,7 @@ #define WAKEUP_REASON_NETWORK_SCAN 0xFD #define WAKEUP_REASON_WDT_RESET 0xFE -void init_time(); +void initTime(void* parameter); void logLine(char* buffer); void logLine(String text); void logStartUp(); diff --git a/ESP32_AP-Flasher/src/main.cpp b/ESP32_AP-Flasher/src/main.cpp index 6705c8e1..000d4d2f 100644 --- a/ESP32_AP-Flasher/src/main.cpp +++ b/ESP32_AP-Flasher/src/main.cpp @@ -26,9 +26,11 @@ void pinTest(); void delayedStart(void* parameter) { vTaskDelay(30000 / portTICK_PERIOD_MS); - Serial.println("Resuming content generation"); - wsLog("resuming content generation"); - config.runStatus = RUNSTATUS_RUN; + if (config.runStatus != RUNSTATUS_RUN) { + Serial.println("Starting content generation"); + wsLog("starting content generation"); + config.runStatus = RUNSTATUS_RUN; + } vTaskDelay(10 / portTICK_PERIOD_MS); vTaskDelete(NULL); } @@ -123,8 +125,6 @@ void setup() { #endif initAPconfig(); - configTzTime(config.timeZone, "0.nl.pool.ntp.org", "europe.pool.ntp.org", "time.nist.gov"); - // https://github.com/nayarsystems/posix_tz_db/blob/master/zones.csv updateLanguageFromConfig(); updateBrightnessFromConfig(); @@ -142,20 +142,15 @@ void setup() { vTaskDelay(10 / portTICK_PERIOD_MS); config.runStatus = RUNSTATUS_INIT; - - xTaskCreate(timeTask, "timed tasks", 12000, NULL, 2, NULL); - - init_time(); - logStartUp(); - esp_reset_reason_t resetReason = esp_reset_reason(); if (resetReason == ESP_RST_PANIC) { Serial.println("Panic! Pausing content generation for 30 seconds"); config.runStatus = RUNSTATUS_PAUSE; - xTaskCreate(delayedStart, "delaystart", 2000, NULL, 2, NULL); - } else { - config.runStatus = RUNSTATUS_RUN; } + + xTaskCreate(timeTask, "timed tasks", 12000, NULL, 2, NULL); + xTaskCreate(initTime, "init time", 5000, NULL, 2, NULL); + xTaskCreate(delayedStart, "delaystart", 2000, NULL, 2, NULL); } void loop() { diff --git a/ESP32_AP-Flasher/src/newproto.cpp b/ESP32_AP-Flasher/src/newproto.cpp index 24133219..d587c62b 100644 --- a/ESP32_AP-Flasher/src/newproto.cpp +++ b/ESP32_AP-Flasher/src/newproto.cpp @@ -478,14 +478,16 @@ void processDataReq(struct espAvailDataReq* eadr, bool local) { memset(taginfo->md5, 0, 16 * sizeof(uint8_t)); memset(taginfo->md5pending, 0, 16 * sizeof(uint8_t)); - const char* reason = ""; - if (eadr->adr.wakeupReason == WAKEUP_REASON_FIRSTBOOT) reason = "Booting"; - else if (eadr->adr.wakeupReason == WAKEUP_REASON_NETWORK_SCAN) reason = "Network scan"; - else if (eadr->adr.wakeupReason == WAKEUP_REASON_WDT_RESET) reason = "Watchdog reset"; - sprintf(buffer, "%02X%02X%02X%02X%02X%02X%02X%02X %s", eadr->src[7], eadr->src[6], eadr->src[5], eadr->src[4], eadr->src[3], eadr->src[2], eadr->src[1], eadr->src[0], reason); - logLine(buffer); + if (local) { + const char* reason = ""; + if (eadr->adr.wakeupReason == WAKEUP_REASON_FIRSTBOOT) reason = "Booting"; + else if (eadr->adr.wakeupReason == WAKEUP_REASON_NETWORK_SCAN) reason = "Network scan"; + else if (eadr->adr.wakeupReason == WAKEUP_REASON_WDT_RESET) reason = "Watchdog reset"; + sprintf(buffer, "%02X%02X%02X%02X%02X%02X%02X%02X %s", eadr->src[7], eadr->src[6], eadr->src[5], eadr->src[4], eadr->src[3], eadr->src[2], eadr->src[1], eadr->src[0], reason); + logLine(buffer); + } } - if (taginfo->batteryMv != eadr->adr.batteryMv) { + if (local && taginfo->batteryMv != eadr->adr.batteryMv) { sprintf(buffer, "%02X%02X%02X%02X%02X%02X%02X%02X battery went from %.2fV to %.2fV", eadr->src[7], eadr->src[6], eadr->src[5], eadr->src[4], eadr->src[3], eadr->src[2], eadr->src[1], eadr->src[0], static_cast(taginfo->batteryMv) / 1000.0, static_cast(eadr->adr.batteryMv) / 1000.0); logLine(buffer); } diff --git a/ESP32_AP-Flasher/src/system.cpp b/ESP32_AP-Flasher/src/system.cpp index 819a7fb7..78763469 100644 --- a/ESP32_AP-Flasher/src/system.cpp +++ b/ESP32_AP-Flasher/src/system.cpp @@ -2,10 +2,19 @@ #include #include +#include #include "storage.h" +#include "tag_db.h" -void init_time() { +void timeSyncCallback(struct timeval* tv) { + Serial.println("time succesfully synced"); +} + +void initTime(void* parameter) { + sntp_set_time_sync_notification_cb(timeSyncCallback); + sntp_set_sync_interval(300 * 1000); + configTzTime(config.timeZone, "nl.pool.ntp.org", "europe.pool.ntp.org", "time.nist.gov"); struct tm timeinfo; while (true) { if (!getLocalTime(&timeinfo)) { @@ -15,6 +24,10 @@ void init_time() { break; } } + logStartUp(); + if (config.runStatus = RUNSTATUS_INIT) config.runStatus = RUNSTATUS_RUN; + vTaskDelay(10 / portTICK_PERIOD_MS); + vTaskDelete(NULL); } void logLine(char* buffer) {