From 61028293b866cf13b098a3d18c8f00e3e59205b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20G=C3=B6ttgens?= Date: Fri, 27 Jan 2023 14:46:53 +0100 Subject: [PATCH] move temporary reboot code to blink thread --- src/concurrency/OSThread.cpp | 15 +-------------- src/main.cpp | 11 +++++++++++ 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/src/concurrency/OSThread.cpp b/src/concurrency/OSThread.cpp index c52efd626..af50d28f5 100644 --- a/src/concurrency/OSThread.cpp +++ b/src/concurrency/OSThread.cpp @@ -1,9 +1,5 @@ #include "OSThread.h" #include "configuration.h" -#ifdef HAS_SCREEN -#include "graphics/Screen.h" -#endif -#include "main.h" #include namespace concurrency @@ -83,21 +79,12 @@ void OSThread::run() #endif currentThread = this; auto newDelay = runOnce(); -#ifdef ARCH_ESP32 - auto newHeap = ESP.getFreeHeap(); - if (newHeap < 10000) { - LOG_DEBUG("\n\n====== heap too low [10000] -> reboot in 5s ======\n\n"); -#ifdef HAS_SCREEN - screen->startRebootScreen(); -#endif - rebootAtMsec = millis() + 5000; - } #ifdef DEBUG_HEAP + auto newHeap = ESP.getFreeHeap(); if (newHeap < heap) LOG_DEBUG("------ Thread %s leaked heap %d -> %d (%d) ------\n", ThreadName.c_str(), heap, newHeap, newHeap - heap); if (heap < newHeap) LOG_DEBUG("++++++ Thread %s freed heap %d -> %d (%d) ++++++\n", ThreadName.c_str(), heap, newHeap, newHeap - heap); -#endif #endif runned(); diff --git a/src/main.cpp b/src/main.cpp index 4f72be7da..c91a71719 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -128,6 +128,17 @@ static int32_t ledBlinker() setLed(ledOn); +#ifdef ARCH_ESP32 + auto newHeap = ESP.getFreeHeap(); + if (newHeap < 11000) { + LOG_DEBUG("\n\n====== heap too low [11000] -> reboot in 1s ======\n\n"); +#ifdef HAS_SCREEN + screen->startRebootScreen(); +#endif + rebootAtMsec = millis() + 900; + } +#endif + // have a very sparse duty cycle of LED being on, unless charging, then blink 0.5Hz square wave rate to indicate that return powerStatus->getIsCharging() ? 1000 : (ledOn ? 1 : 1000); }