int main()
{
/* Ensure all priority bits are assigned as preemption priority bits. */
NVIC_PriorityGroupConfig( NVIC_PriorityGroup_4 );
boardInit();
modulePortInit();
pulsesInit();
checkValidMCU();
tasksStart(); // 🌟
}
void tasksStart()
{
RTOS_CREATE_MUTEX(audioMutex);
#if defined(CLI) && !defined(SIMU)
cliStart();
#endif
mixerTaskInit();
RTOS_CREATE_TASK(menusTaskId, menusTask, "menus", menusStack,
MENUS_STACK_SIZE, MENUS_TASK_PRIO);
#if !defined(SIMU)
RTOS_CREATE_TASK(audioTaskId, audioTask, "audio", audioStack,
AUDIO_STACK_SIZE, AUDIO_TASK_PRIO);
#endif
RTOS_START();
}
TASK_FUNCTION(menusTask)
{
#if defined(LIBOPENUI)
LvglWrapper::instance();
#endif
#if defined(SPLASH) && !defined(STARTUP_ANIMATION)
if (!UNEXPECTED_SHUTDOWN()) {
drawSplash();
TRACE("drawSplash() completed");
}
#endif
#if defined(HARDWARE_TOUCH) && !defined(PCBFLYSKY) && !defined(SIMU)
touchPanelInit();
#endif
opentxInit();
void opentxInit()
{
TRACE("opentxInit");
#if defined(LIBOPENUI)
// create ViewMain
ViewMain::instance();