fix: x10 Express boot freeze and bluetooth lockup (#3349)

* Fix attempt for boot issue

* fix: reset BT usart context after de-init
This commit is contained in:
Raphael Coeffic
2023-03-26 11:07:56 +10:00
committed by GitHub
parent d0b95e0a5b
commit 8560c1f6bf
5 changed files with 26 additions and 2 deletions
+2
View File
@@ -1694,6 +1694,8 @@ int main()
#endif
boardInit();
modulePortInit();
pulsesInit();
checkValidMCU();
+12 -2
View File
@@ -21,6 +21,7 @@
#include "opentx.h"
#include "timers_driver.h"
#include "tasks/mixer_task.h"
#if defined(USBJ_EX)
#include "usb_joystick.h"
@@ -60,7 +61,10 @@ void preModelLoad()
logsClose();
#endif
pulsesStop();
if (mixerTaskStarted()) {
pulsesStop();
}
stopTrainer();
#if defined(COLORLCD)
deleteCustomScreens();
@@ -182,7 +186,13 @@ void postModelLoad(bool alarms)
PLAY_MODEL_NAME();
}
#endif
pulsesStart();
// Mixer should only be restarted
// if we are switching between models,
// not on first boot (started later on)
if (mixerTaskStarted()) {
pulsesStart();
}
#if defined(SDCARD)
referenceModelAudioFiles();
@@ -97,6 +97,7 @@ void bluetoothDisable()
LL_GPIO_SetOutputPin(BT_EN_GPIO, BT_EN_GPIO_PIN);
if (_bt_usart_ctx) {
STM32SerialDriver.deinit(_bt_usart_ctx);
_bt_usart_ctx = nullptr;
}
}
+7
View File
@@ -35,6 +35,7 @@ static RTOS_MUTEX_HANDLE mixerMutex;
// The mixer will start in 'paused' mode
// and start working properly once
// mixerTaskStart() has been called.
static bool _mixer_started = false;
static bool _mixer_running = false;
static bool _mixer_exit = false;
@@ -61,8 +62,14 @@ void mixerTaskInit()
MIXER_STACK_SIZE, MIXER_TASK_PRIO);
}
bool mixerTaskStarted()
{
return _mixer_started;
}
void mixerTaskStart()
{
_mixer_started = true;
_mixer_running = true;
}
+4
View File
@@ -30,6 +30,10 @@ TASK_FUNCTION(mixerTask);
// init, create and start the OS task itself
void mixerTaskInit();
// return true if the mixer has
// already started at least once since boot
bool mixerTaskStarted();
// start the main computations
// and pushing channels out
//