mirror of
https://github.com/MarekZegare4/MeshCore-Solo.git
synced 2026-09-14 15:16:40 +00:00
fix(diag): report real heap/stack stats on ESP32, not just nRF52
DeviceDiag::getHeapStats()/getStackFreeBytes() only had an implementation for NRF52_PLATFORM; every other platform fell through to the 0/0 stub, so Diagnostics > Live showed "N/A" for Heap free and Stack free on ESP32 boards (Heltec v3/v4) -- exactly the boards where that number is most useful to see. Added an ESP32 branch using heap_caps_get_free_size()/ heap_caps_get_total_size() (MALLOC_CAP_8BIT, matching the general-purpose heap `new`/malloc() actually draw from) and the same uxTaskGetStackHighWaterMark() call nRF52 already uses, since Arduino-ESP32 runs on FreeRTOS too. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -24,6 +24,25 @@ uint32_t DeviceDiag::getStackFreeBytes() {
|
||||
return (uint32_t)uxTaskGetStackHighWaterMark(NULL) * sizeof(StackType_t);
|
||||
}
|
||||
|
||||
#elif defined(ESP32)
|
||||
#include <freertos/FreeRTOS.h>
|
||||
#include <freertos/task.h>
|
||||
#include <esp_heap_caps.h>
|
||||
|
||||
// MALLOC_CAP_8BIT: the general-purpose byte-addressable heap (what `new`/
|
||||
// malloc() actually draw from) -- excludes DMA-only/IRAM regions a plain
|
||||
// allocation could never land in, so this matches what's really available to
|
||||
// the rest of the firmware rather than overstating it with capability pools
|
||||
// nothing here can use.
|
||||
void DeviceDiag::getHeapStats(uint32_t& free_bytes, uint32_t& total_bytes) {
|
||||
free_bytes = (uint32_t)heap_caps_get_free_size(MALLOC_CAP_8BIT);
|
||||
total_bytes = (uint32_t)heap_caps_get_total_size(MALLOC_CAP_8BIT);
|
||||
}
|
||||
|
||||
uint32_t DeviceDiag::getStackFreeBytes() {
|
||||
return (uint32_t)uxTaskGetStackHighWaterMark(NULL) * sizeof(StackType_t);
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
void DeviceDiag::getHeapStats(uint32_t& free_bytes, uint32_t& total_bytes) {
|
||||
|
||||
Reference in New Issue
Block a user