refactor(boot): move BT and rotary encoder init to board specifics (#7265)

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Raphael Coeffic
2026-04-29 20:30:25 +10:00
committed by GitHub
co-authored by Claude Opus 4.6
parent ac4c4d7b6b
commit 559866c059
12 changed files with 70 additions and 49 deletions
+4
View File
@@ -100,6 +100,10 @@ void boardBLPreJump()
void boardBLInit()
{
#if defined(ROTARY_ENCODER_NAVIGATION)
rotaryEncoderInit();
#endif
ExtFLASH_Init();
SDRAM_Init();
+4
View File
@@ -135,6 +135,10 @@ void boardBLPreJump()
void boardBLInit()
{
#if defined(ROTARY_ENCODER_NAVIGATION)
rotaryEncoderInit();
#endif
ExtFLASH_Init();
SDRAM_Init();
-20
View File
@@ -23,18 +23,12 @@
#include "hal/usb_driver.h"
#include "hal/abnormal_reboot.h"
#include "hal/rotary_encoder.h"
#include "board.h"
#include "debug.h"
#include "timers_driver.h"
#if defined(BLUETOOTH)
#include "bluetooth_driver.h"
#include "stm32_serial_driver.h"
#endif
#if defined(DEBUG_SEGGER_RTT)
#include "thirdparty/Segger/SEGGER/SEGGER_RTT.h"
#endif
@@ -107,26 +101,12 @@ void bootloaderInitApp()
#endif
}
// TODO: move all this into board specifics
pwrOn();
#if defined(ROTARY_ENCODER_NAVIGATION) && !defined(USE_HATS_AS_KEYS)
rotaryEncoderInit();
#endif
__enable_irq();
TRACE("\nBootloader started :)");
// TODO: move BT into board specifics
#if defined(BLUETOOTH)
// we shutdown the bluetooth module now to be sure it will be detected on
// firmware start
bluetoothInit(BLUETOOTH_DEFAULT_BAUDRATE, false);
#endif
timersInit();
usbInit();
boardBLInit();
}
@@ -24,14 +24,11 @@
#include "stm32_hal_ll.h"
#include "stm32_gpio.h"
#include "stm32_serial_driver.h"
#include "board.h"
#include "debug.h"
#if !defined(BOOT)
#include "stm32_serial_driver.h"
#define BT_USART_IRQ_PRIORITY 6
static const stm32_usart_t btUSART = {
@@ -54,9 +51,7 @@ DEFINE_STM32_SERIAL_PORT(BTModule, btUSART, BT_RX_FIFO_SIZE, BT_TX_FIFO_SIZE);
volatile uint8_t btChipPresent = 0;
#endif
// const etx_serial_driver_t* _bt_usart_drv = nullptr;
void* _bt_usart_ctx = nullptr;
#endif
void bluetoothInit(uint32_t baudrate, bool enable)
{
@@ -67,7 +62,6 @@ void bluetoothInit(uint32_t baudrate, bool enable)
gpio_init(BT_PWR_GPIO, GPIO_OUT, GPIO_PIN_SPEED_LOW);
#endif
#if !defined(BOOT)
etx_serial_init cfg = {
.baudrate = baudrate,
.encoding = ETX_Encoding_8N1,
@@ -81,7 +75,6 @@ void bluetoothInit(uint32_t baudrate, bool enable)
} else {
STM32SerialDriver.setBaudrate(_bt_usart_ctx, baudrate);
}
#endif
#if defined(BT_EN_GPIO)
gpio_write(BT_EN_GPIO, !enable);
@@ -91,7 +84,6 @@ void bluetoothInit(uint32_t baudrate, bool enable)
#endif
}
#if !defined(BOOT)
void bluetoothDisable()
{
#if defined(BT_EN_GPIO)
@@ -123,7 +115,6 @@ uint8_t bluetoothIsWriting(void)
{
if (!_bt_usart_ctx)
return false;
return !STM32SerialDriver.txCompleted(_bt_usart_ctx);
}
#endif // !BOOT
+4 -6
View File
@@ -264,12 +264,6 @@ else()
)
endif()
if(BLUETOOTH)
set(BOARD_COMMON_SRC ${BOARD_COMMON_SRC}
targets/common/arm/stm32/bluetooth_driver.cpp
)
endif()
if (VIDEO_SWITCH)
add_definitions(-DVIDEO_SWITCH)
set(BOARD_COMMON_SRC ${BOARD_COMMON_SRC}
@@ -303,6 +297,10 @@ add_library(board OBJECT EXCLUDE_FROM_ALL
)
set(FIRMWARE_SRC ${FIRMWARE_SRC} $<TARGET_OBJECTS:board>)
if(BLUETOOTH)
target_sources(board PRIVATE targets/common/arm/stm32/bluetooth_driver.cpp)
endif()
if(HARDWARE_TOUCH)
add_definitions(-DHARDWARE_TOUCH)
+18
View File
@@ -59,12 +59,29 @@
HardwareOptions hardwareOptions;
bool boardBacklightOn = false;
#if defined(VIDEO_SWITCH) || (defined(BLUETOOTH) && defined(BOOT))
#if defined(VIDEO_SWITCH)
#include "videoswitch_driver.h"
#endif
void boardBLEarlyInit()
{
#if defined(VIDEO_SWITCH)
videoSwitchInit();
#endif
#if defined(BLUETOOTH)
// Disable the BT module so it will be detected on firmware start
#if defined(BT_EN_GPIO)
gpio_init(BT_EN_GPIO, GPIO_OUT, GPIO_PIN_SPEED_LOW);
gpio_write(BT_EN_GPIO, 1);
#endif
#if defined(BT_PWR_GPIO)
gpio_init(BT_PWR_GPIO, GPIO_OUT, GPIO_PIN_SPEED_LOW);
gpio_set(BT_PWR_GPIO);
#endif
#endif
}
#endif
@@ -77,6 +94,7 @@ void boardBLPreJump()
void boardBLInit()
{
rotaryEncoderInit();
SDRAM_Init();
}
+2
View File
@@ -117,6 +117,8 @@ void boardBLPreJump()
void boardBLInit()
{
rotaryEncoderInit();
ExtFLASH_Init();
SDRAM_Init();
+3
View File
@@ -180,6 +180,9 @@ void boardBLPreJump()
void boardBLInit()
{
#if defined(ROTARY_ENCODER_NAVIGATION) && !defined(USE_HATS_AS_KEYS)
rotaryEncoderInit();
#endif
SDRAM_Init();
}
+2
View File
@@ -164,6 +164,8 @@ void boardBLPreJump()
void boardBLInit()
{
rotaryEncoderInit();
ExtFLASH_Init();
SDRAM_Init();
+4 -6
View File
@@ -581,12 +581,6 @@ if(ROTARY_ENCODER)
)
endif()
if(BLUETOOTH)
list(APPEND BOARD_COMMON_SRC
targets/common/arm/stm32/bluetooth_driver.cpp
)
endif()
# Bootloader board library
add_library(board_bl OBJECT EXCLUDE_FROM_ALL
${BOARD_COMMON_SRC}
@@ -612,6 +606,10 @@ add_library(board OBJECT EXCLUDE_FROM_ALL
)
set(FIRMWARE_SRC ${FIRMWARE_SRC} $<TARGET_OBJECTS:board>)
if(BLUETOOTH)
target_sources(board PRIVATE targets/common/arm/stm32/bluetooth_driver.cpp)
endif()
if(BIND_KEY)
add_definitions(-DBIND_KEY)
target_sources(board PRIVATE ${TARGET_SRC_DIR}/bind_button_driver.cpp)
+23
View File
@@ -27,6 +27,7 @@
#include "hal/switch_driver.h"
#include "hal/module_port.h"
#include "hal/abnormal_reboot.h"
#include "hal/rotary_encoder.h"
#include "hal/usb_driver.h"
#include "hal/gpio.h"
#include "hal/rgbleds.h"
@@ -48,6 +49,28 @@
#include "flysky_gimbal_driver.h"
#endif
#if defined(BOOT)
#if defined(BLUETOOTH)
void boardBLEarlyInit()
{
// Disable the BT module so it will be detected on firmware start
#if defined(BT_EN_GPIO)
gpio_init(BT_EN_GPIO, GPIO_OUT, GPIO_PIN_SPEED_LOW);
gpio_write(BT_EN_GPIO, 1);
#endif
}
#endif
#if defined(ROTARY_ENCODER_NAVIGATION)
void boardBLInit()
{
rotaryEncoderInit();
}
#endif
#endif // BOOT
#if !defined(BOOT)
#include "edgetx.h"
#if defined(PXX1)
+4 -6
View File
@@ -158,12 +158,6 @@ set(BOARD_COMMON_SRC
targets/common/arm/stm32/watchdog_driver.cpp
)
if(BLUETOOTH)
set(BOARD_COMMON_SRC ${BOARD_COMMON_SRC}
targets/common/arm/stm32/bluetooth_driver.cpp
)
endif()
if(KCX_BTAUDIO)
set(BOARD_COMMON_SRC ${BOARD_COMMON_SRC}
drivers/kcx_btaudio.cpp
@@ -204,6 +198,10 @@ add_library(board OBJECT EXCLUDE_FROM_ALL
add_dependencies(board board_lib)
set(FIRMWARE_SRC ${FIRMWARE_SRC} $<TARGET_OBJECTS:board>)
if(BLUETOOTH)
target_sources(board PRIVATE targets/common/arm/stm32/bluetooth_driver.cpp)
endif()
include_directories(${RADIO_SRC_DIR}/fonts/colorlcd gui/${GUI_DIR} gui/${GUI_DIR}/layouts)
if(BOOTLOADER)