diff --git a/src/platform/arduino/esp32/Platform.cpp b/src/platform/arduino/esp32/Platform.cpp index 9c4ec73..74c956e 100644 --- a/src/platform/arduino/esp32/Platform.cpp +++ b/src/platform/arduino/esp32/Platform.cpp @@ -7,6 +7,32 @@ __NOINIT_ATTR static uint8_t s_rebootCount; __NOINIT_ATTR static uint16_t s_forceSafeMode; #define SAFE_MODE_MAGIC 6942 +template<> +void +PlatformImpl::forceSafeMode() +{ + s_forceSafeMode = SAFE_MODE_MAGIC; +} + +template<> +void +PlatformImpl::bootSplash() +{ + Log.trace("ESP32 startup reason: %d", Platform::bootopts.resetReason); +} + +template<> +void +PlatformImpl::printCrashInfo() +{ + /*auto rInfo = ESP.getResetInfoPtr(); + if (Platform::bootopts.resetReason == REASON_EXCEPTION_RST) { + Log.error("Fatal exception (%d):", rInfo->exccause); + } + Log.error("epc1=%X, epc2=%X, epc3=%X, excvaddr=%X, depc=%X", + rInfo->epc1, rInfo->epc2, rInfo->epc3, rInfo->excvaddr, rInfo->depc);*/ +} + template<> void PlatformImpl::initBootOptions(BootOptions& opts) @@ -18,12 +44,12 @@ PlatformImpl::initBootOptions(BootOptions& opts) // on platformio builds if (opts.crashCount++ >= 3) { // Boot into safe mode if the watchdog reset us three times in a row. - isSafeMode = true; + opts.isSafeMode = true; } } else { opts.crashCount = 0; } - s_rebootCount = crashCount; + s_rebootCount = opts.crashCount; } template<> @@ -44,8 +70,8 @@ template<> const char* PlatformImpl::deviceID() { - uint64_t chipid; - chipid = ESP.getEfuseMac(); + static char s_deviceID[15]; + uint64_t chipid = ESP.getEfuseMac(); snprintf(s_deviceID, sizeof(s_deviceID), "%08X", (uint32_t)chipid); return s_deviceID; } @@ -95,6 +121,7 @@ PlatformImpl::getLocalTime(struct tm* timedata, int timezone) memset(&rawtime, 0, sizeof(rawtime)); time(&rawtime); (*timedata) = (*localtime(&rawtime)); + timedata->tm_hour += timezone; return (timedata->tm_year > (2016-1990)); }