From 81eb287c0fdbd710762e8097fb1fdd1275070a53 Mon Sep 17 00:00:00 2001 From: 3djc Date: Mon, 14 Apr 2025 11:15:06 +0200 Subject: [PATCH] feat: force gimbal detection on serial passthrough init (#6089) --- radio/src/cli.cpp | 2 +- radio/src/targets/common/arm/stm32/flysky_gimbal_driver.cpp | 4 ++-- radio/src/targets/common/arm/stm32/flysky_gimbal_driver.h | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/radio/src/cli.cpp b/radio/src/cli.cpp index 36e1289d5..108b9dc9b 100644 --- a/radio/src/cli.cpp +++ b/radio/src/cli.cpp @@ -1115,7 +1115,7 @@ static void spGimbalDeInit(int port_n) { (void)port_n; _sp_drv->deinit(_sp_ctx); - flysky_gimbal_init(); + flysky_gimbal_init(true); } #endif diff --git a/radio/src/targets/common/arm/stm32/flysky_gimbal_driver.cpp b/radio/src/targets/common/arm/stm32/flysky_gimbal_driver.cpp index 9a1a328a5..e3b298dfe 100644 --- a/radio/src/targets/common/arm/stm32/flysky_gimbal_driver.cpp +++ b/radio/src/targets/common/arm/stm32/flysky_gimbal_driver.cpp @@ -165,7 +165,7 @@ void flysky_gimbal_deinit() STM32SerialDriver.deinit(_fs_usart_ctx); } -bool flysky_gimbal_init() +bool flysky_gimbal_init(bool force) { etx_serial_init cfg = { .baudrate = FLYSKY_HALL_BAUDRATE, @@ -174,7 +174,7 @@ bool flysky_gimbal_init() .polarity = ETX_Pol_Normal, }; - _fs_gimbal_detected = false; + _fs_gimbal_detected = force; _fs_usart_ctx = STM32SerialDriver.init(REF_STM32_SERIAL_PORT(FSGimbal), &cfg); STM32SerialDriver.setIdleCb(_fs_usart_ctx, flysky_gimbal_loop, 0); diff --git a/radio/src/targets/common/arm/stm32/flysky_gimbal_driver.h b/radio/src/targets/common/arm/stm32/flysky_gimbal_driver.h index 14a9f04a6..9c6c18456 100644 --- a/radio/src/targets/common/arm/stm32/flysky_gimbal_driver.h +++ b/radio/src/targets/common/arm/stm32/flysky_gimbal_driver.h @@ -128,7 +128,7 @@ extern signed short hall_raw_values[FLYSKY_HALL_CHANNEL_COUNT]; extern unsigned short hall_adc_values[FLYSKY_HALL_CHANNEL_COUNT]; // returns true if the gimbals were detected properly -bool flysky_gimbal_init(); +bool flysky_gimbal_init(bool force = false); void flysky_gimbal_deinit(); const etx_serial_port_t* flysky_gimbal_get_port();