diff --git a/radio/src/cli.cpp b/radio/src/cli.cpp index 544d00724..912f9870e 100644 --- a/radio/src/cli.cpp +++ b/radio/src/cli.cpp @@ -158,24 +158,24 @@ int cliStackInfo(const char ** argv) int total = 0; switch(tid) { case MENU_TASK_INDEX: - total = menusStack.getSize(); + total = menusStack.size(); available = menusStack.available(); break; case MIXER_TASK_INDEX: - total = mixerStack.getSize(); + total = mixerStack.size(); available = mixerStack.available(); break; case AUDIO_TASK_INDEX: - total = audioStack.getSize(); + total = audioStack.size(); available = audioStack.available(); break; case CLI_TASK_INDEX: - total = cliStack.getSize(); + total = cliStack.size(); available = cliStack.available(); break; case MAIN_TASK_INDEX: - total = mainStackAvailable(); - available = mainStackSize(); + total = stackAvailable(); + available = stackSize(); break; default: break; diff --git a/radio/src/gui/Taranis/view_statistics.cpp b/radio/src/gui/Taranis/view_statistics.cpp index 0a6f83e33..575a45f0b 100755 --- a/radio/src/gui/Taranis/view_statistics.cpp +++ b/radio/src/gui/Taranis/view_statistics.cpp @@ -195,7 +195,7 @@ void menuStatisticsDebug(uint8_t event) lcd_putsAtt(lcdLastPos+2, MENU_DEBUG_Y_RTOS+1, "[A]", SMLSIZE); lcd_outdezAtt(lcdLastPos, MENU_DEBUG_Y_RTOS, audioStack.available(), UNSIGN|LEFT); lcd_putsAtt(lcdLastPos+2, MENU_DEBUG_Y_RTOS+1, "[I]", SMLSIZE); - lcd_outdezAtt(lcdLastPos, MENU_DEBUG_Y_RTOS, mainStackAvailable(), UNSIGN|LEFT); + lcd_outdezAtt(lcdLastPos, MENU_DEBUG_Y_RTOS, stackAvailable(), UNSIGN|LEFT); lcd_puts(3*FW, 7*FH+1, STR_MENUTORESET); lcd_status_line(); diff --git a/radio/src/targets/simu/simpgmspace.cpp b/radio/src/targets/simu/simpgmspace.cpp index 4ed004709..74213bdfa 100644 --- a/radio/src/targets/simu/simpgmspace.cpp +++ b/radio/src/targets/simu/simpgmspace.cpp @@ -657,12 +657,10 @@ void eepromWriteBlock(uint8_t * pointer_ram, uint32_t pointer_eeprom, uint32_t s #endif -#if !defined(CPUARM) uint16_t stackAvailable() { return 500; } -#endif #if 0 static void EeFsDump(){ diff --git a/radio/src/tasks_arm.cpp b/radio/src/tasks_arm.cpp index 803eb9aad..7b990e387 100644 --- a/radio/src/tasks_arm.cpp +++ b/radio/src/tasks_arm.cpp @@ -75,34 +75,34 @@ enum TaskIndex { MAIN_TASK_INDEX = 255 }; -template -void TaskStack::paint() +template +void TaskStack::paint() { - for (uint32_t i=0; i -uint32_t TaskStack::getSize() +template +uint16_t TaskStack::size() { - return size; + return SIZE*4; } -uint32_t getStackAvailable(void * address, uint32_t size) +uint16_t getStackAvailable(void * address, uint16_t size) { uint32_t * array = (uint32_t *)address; - uint32_t i = 0; + uint16_t i = 0; while (i < size && array[i] == 0x55555555) { i++; } return i*4; } -template -uint32_t TaskStack::available() +template +uint16_t TaskStack::available() { - return getStackAvailable(stack, size); + return getStackAvailable(stack, SIZE); } void stackPaint() @@ -115,15 +115,15 @@ void stackPaint() #endif } -#if defined(CPUSTM32) -uint32_t mainStackSize() +#if defined(CPUSTM32) && !defined(SIMU) +uint16_t stackSize() { return ((unsigned char *)&_estack - (unsigned char *)&_main_stack_start) / 4; } -uint32_t mainStackAvailable() +uint16_t stackAvailable() { - return getStackAvailable(&_main_stack_start, mainStackSize()); + return getStackAvailable(&_main_stack_start, stackSize()); } #endif @@ -216,7 +216,7 @@ void tasksStart() #endif #if defined(BLUETOOTH) - btTaskId = CoCreateTask(btTask, NULL, 15, &bluetoothStack[BLUETOOTH_STACK_SIZE-1], BLUETOOTH_STACK_SIZE); + btTaskId = CoCreateTask(btTask, NULL, 15, &bluetoothStack.stack[BLUETOOTH_STACK_SIZE-1], BLUETOOTH_STACK_SIZE); #endif mixerTaskId = CoCreateTask(mixerTask, NULL, 5, &mixerStack.stack[MIXER_STACK_SIZE-1], MIXER_STACK_SIZE); diff --git a/radio/src/tasks_arm.h b/radio/src/tasks_arm.h index 9bb404b41..e4d61db91 100644 --- a/radio/src/tasks_arm.h +++ b/radio/src/tasks_arm.h @@ -43,19 +43,19 @@ extern "C" { } #endif -template +template class TaskStack { public: TaskStack() { } void paint(); - uint32_t getSize(); - uint32_t available(); - OS_STK stack[size]; + uint16_t size(); + uint16_t available(); + OS_STK stack[SIZE]; }; void stackPaint(); -uint32_t mainStackSize(); -uint32_t mainStackAvailable(); +uint16_t stackSize(); +uint16_t stackAvailable(); #endif // _TASKS_ARM_H_