diff --git a/RestartReason.h b/RestartReason.h index 5c7815d..4542da3 100644 --- a/RestartReason.h +++ b/RestartReason.h @@ -18,6 +18,7 @@ enum class RestartReason OTAAborted, OTAUnknownState, DeviceUnpaired, + NotApplicable }; #define RESTART_REASON_VALID_DETECT 0xa00ab00bc00bd00d; @@ -25,6 +26,8 @@ enum class RestartReason extern int restartReason; extern uint64_t restartReasonValid; +extern RestartReason currentRestartReason; + inline static void restartEsp(RestartReason reason) { restartReason = (int)reason; @@ -32,15 +35,19 @@ inline static void restartEsp(RestartReason reason) ESP.restart(); } -inline static String getRestartReason() +inline static void initializeRestartReason() { uint64_t cmp = RESTART_REASON_VALID_DETECT; - if(restartReasonValid != cmp) + if(restartReasonValid == cmp) { - return "UnknownNoRestartRegistered"; + currentRestartReason = (RestartReason)restartReason; + memset(&restartReasonValid, 0, sizeof(restartReasonValid)); } +} - switch((RestartReason)restartReason) +inline static String getRestartReason() +{ + switch(currentRestartReason) { case RestartReason::RequestedViaMqtt: return "RequestedViaMqtt"; @@ -74,6 +81,8 @@ inline static String getRestartReason() return "OTAUnknownState"; case RestartReason::DeviceUnpaired: return "DeviceUnpaired"; + case RestartReason::NotApplicable: + return "NotApplicable"; default: return "Unknown: " + restartReason; } diff --git a/main.cpp b/main.cpp index 19b37eb..b6ffd5b 100644 --- a/main.cpp +++ b/main.cpp @@ -31,6 +31,7 @@ unsigned long restartTs = (2^32) - 5 * 60000; RTC_NOINIT_ATTR int restartReason; RTC_NOINIT_ATTR uint64_t restartReasonValid; +RestartReason currentRestartReason = RestartReason::NotApplicable; TaskHandle_t networkTaskHandle = nullptr; TaskHandle_t nukiTaskHandle = nullptr; @@ -167,6 +168,7 @@ void setup() Log->print(F("NUKI Hub version ")); Log->println(NUKI_HUB_VERSION); bool firstStart = initPreferences(); + initializeRestartReason(); if(preferences->getInt(preference_restart_timer) > 0) { diff --git a/webflash/nuki_hub.bin b/webflash/nuki_hub.bin index 08181dd..e353d9d 100644 Binary files a/webflash/nuki_hub.bin and b/webflash/nuki_hub.bin differ