diff --git a/radio/src/cli.cpp b/radio/src/cli.cpp index 5366334bd..db201e93c 100644 --- a/radio/src/cli.cpp +++ b/radio/src/cli.cpp @@ -861,14 +861,21 @@ int cliTrace(const char ** argv) int cliStackInfo(const char ** argv) { - cliSerialPrint("[MAIN] %d available / %d bytes", mainStackAvailable()*4, stackSize()*4); - cliSerialPrint("[MENUS] %d available / %d bytes", menusStack.available()*4, menusStack.size()); - cliSerialPrint("[MIXER] %d available / %d bytes", mixerStack.available()*4, mixerStack.size()); + cliSerialPrint("[MENUS] %d available / %d bytes", + task_get_stack_usage(&menusTaskId) * 4, + task_get_stack_size(&menusTaskId)); + cliSerialPrint("[MIXER] %d available / %d bytes", + task_get_stack_usage(&mixerTaskId) * 4, + task_get_stack_size(&mixerTaskId)); #if defined(AUDIO) - cliSerialPrint("[AUDIO] %d available / %d bytes", audioStack.available()*4, audioStack.size()); + cliSerialPrint("[AUDIO] %d available / %d bytes", + task_get_stack_usage(&audioTaskId) * 4, + task_get_stack_size(&audioTaskId)); #endif #if defined(CLI) - cliSerialPrint("[CLI] %d available / %d bytes", cliStack.available()*4, cliStack.size()); + cliSerialPrint("[CLI] %d available / %d bytes", + task_get_stack_usage(&cliTaskId), + task_get_stack_size(&cliTaskId)); #endif return 0; } diff --git a/radio/src/gui/212x64/view_statistics.cpp b/radio/src/gui/212x64/view_statistics.cpp index 93dfb4e08..9708a19ab 100644 --- a/radio/src/gui/212x64/view_statistics.cpp +++ b/radio/src/gui/212x64/view_statistics.cpp @@ -197,8 +197,6 @@ void menuStatisticsDebug(event_t event) lcdDrawText(lcdLastRightPos+2, y+1, "[A]", SMLSIZE); lcdDrawNumber(lcdLastRightPos, y, task_get_stack_usage(&audioTaskId), LEFT); #endif - lcdDrawText(lcdLastRightPos+2, y+1, "[I]", SMLSIZE); - lcdDrawNumber(lcdLastRightPos, y, mainStackAvailable(), LEFT); y += FH; #if defined(DEBUG_LATENCY) diff --git a/radio/src/os/task_freertos.cpp b/radio/src/os/task_freertos.cpp index ae60ff40b..3eedbb0ee 100644 --- a/radio/src/os/task_freertos.cpp +++ b/radio/src/os/task_freertos.cpp @@ -38,7 +38,8 @@ void task_create(task_handle_t* h, task_func_t func, const char* name, unsigned task_get_stack_usage(task_handle_t* h) { - return uxTaskGetStackHighWaterMark(h->_rtos_handle); + return (h->_stack_size - uxTaskGetStackHighWaterMark(h->_rtos_handle)) * + sizeof(StackType_t); } unsigned task_get_stack_size(task_handle_t* h) diff --git a/radio/src/rtos.h b/radio/src/rtos.h index e0beae59c..b51b03dfe 100644 --- a/radio/src/rtos.h +++ b/radio/src/rtos.h @@ -36,11 +36,6 @@ extern "C++" { { } - static inline uint32_t mainStackAvailable() - { - return 500; - } - #elif defined(FREE_RTOS) #include @@ -51,28 +46,6 @@ extern "C++" { vTaskStartScheduler(); } - static inline uint32_t getStackAvailable(void * address, uint32_t size) - { - uint32_t * array = (uint32_t *)address; - uint32_t i = 0; - while (i < size && array[i] == 0x55555555) { - i++; - } - return i; - } - - extern int _estack; - extern int _main_stack_start; - static inline uint32_t stackSize() - { - return ((unsigned char *)&_estack - (unsigned char *)&_main_stack_start) / 4; - } - - static inline uint32_t mainStackAvailable() - { - return getStackAvailable(&_main_stack_start, stackSize()); - } - #endif // RTOS type #ifdef __cplusplus