From 8875fd019abc2346f3bf567f1946bda5cab798b0 Mon Sep 17 00:00:00 2001 From: Yurii Date: Sun, 17 Dec 2023 13:18:42 +0300 Subject: [PATCH] upd heap monitoring --- src/MainTask.h | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/MainTask.h b/src/MainTask.h index a2de4b0..f1d7be7 100644 --- a/src/MainTask.h +++ b/src/MainTask.h @@ -166,17 +166,19 @@ protected: return; } - #if defined(ARDUINO_ARCH_ESP32) - uint8_t heapFrag = 0; - #else - uint8_t heapFrag = ESP.getHeapFragmentation(); - #endif - unsigned int minFreeHeapSizeDiff = 0; + #if defined(ARDUINO_ARCH_ESP32) + unsigned int currentMinFreeHeapSize = ESP.getMinFreeHeap(); + if (currentMinFreeHeapSize < this->minFreeHeapSize) { + minFreeHeapSizeDiff = this->minFreeHeapSize - currentMinFreeHeapSize; + this->minFreeHeapSize = currentMinFreeHeapSize; + } + #else if (freeHeapSize < this->minFreeHeapSize) { minFreeHeapSizeDiff = this->minFreeHeapSize - freeHeapSize; this->minFreeHeapSize = freeHeapSize; } + #endif unsigned int minMaxFreeBlockSizeDiff = 0; if (maxFreeBlockSize < this->minMaxFreeHeapBlockSize) { @@ -184,10 +186,11 @@ protected: this->minMaxFreeHeapBlockSize = maxFreeBlockSize; } + uint8_t heapFrag = 100 - maxFreeBlockSize * 100.0 / freeHeapSize; if (millis() - this->lastHeapInfo > 20000 || minFreeHeapSizeDiff > 0 || minMaxFreeBlockSizeDiff > 0) { Log.sverboseln( "MAIN", - F("Free heap size: %u of %u bytes (min: %u, diff: %u), max free block: %u (min: %u, diff: %u, frag: %hhu)"), + F("Free heap size: %u of %u bytes (min: %u, diff: %u), max free block: %u (min: %u, diff: %u, frag: %hhu%%)"), freeHeapSize, this->heapSize, this->minFreeHeapSize, minFreeHeapSizeDiff, maxFreeBlockSize, this->minMaxFreeHeapBlockSize, minMaxFreeBlockSizeDiff, heapFrag ); this->lastHeapInfo = millis();