diff --git a/radio/src/boards/jumper-h750/board.cpp b/radio/src/boards/jumper-h750/board.cpp index fec8f4ce1..fe955f4f6 100644 --- a/radio/src/boards/jumper-h750/board.cpp +++ b/radio/src/boards/jumper-h750/board.cpp @@ -100,6 +100,10 @@ void boardBLPreJump() void boardBLInit() { +#if defined(ROTARY_ENCODER_NAVIGATION) + rotaryEncoderInit(); +#endif + ExtFLASH_Init(); SDRAM_Init(); diff --git a/radio/src/boards/rm-h750/board.cpp b/radio/src/boards/rm-h750/board.cpp index e64f55bdb..c5f0e11ee 100644 --- a/radio/src/boards/rm-h750/board.cpp +++ b/radio/src/boards/rm-h750/board.cpp @@ -135,6 +135,10 @@ void boardBLPreJump() void boardBLInit() { +#if defined(ROTARY_ENCODER_NAVIGATION) + rotaryEncoderInit(); +#endif + ExtFLASH_Init(); SDRAM_Init(); diff --git a/radio/src/bootloader/boot.cpp b/radio/src/bootloader/boot.cpp index 805977d64..be3321184 100644 --- a/radio/src/bootloader/boot.cpp +++ b/radio/src/bootloader/boot.cpp @@ -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(); } diff --git a/radio/src/targets/common/arm/stm32/bluetooth_driver.cpp b/radio/src/targets/common/arm/stm32/bluetooth_driver.cpp index f43a74929..07056f0ad 100644 --- a/radio/src/targets/common/arm/stm32/bluetooth_driver.cpp +++ b/radio/src/targets/common/arm/stm32/bluetooth_driver.cpp @@ -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 diff --git a/radio/src/targets/horus/CMakeLists.txt b/radio/src/targets/horus/CMakeLists.txt index 819a52cba..4fbd33062 100644 --- a/radio/src/targets/horus/CMakeLists.txt +++ b/radio/src/targets/horus/CMakeLists.txt @@ -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} $) +if(BLUETOOTH) + target_sources(board PRIVATE targets/common/arm/stm32/bluetooth_driver.cpp) +endif() + if(HARDWARE_TOUCH) add_definitions(-DHARDWARE_TOUCH) diff --git a/radio/src/targets/horus/board.cpp b/radio/src/targets/horus/board.cpp index ff5b1d138..c5dbcc4df 100644 --- a/radio/src/targets/horus/board.cpp +++ b/radio/src/targets/horus/board.cpp @@ -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(); } diff --git a/radio/src/targets/pa01/board.cpp b/radio/src/targets/pa01/board.cpp index 19fb21756..8bf588aed 100644 --- a/radio/src/targets/pa01/board.cpp +++ b/radio/src/targets/pa01/board.cpp @@ -117,6 +117,8 @@ void boardBLPreJump() void boardBLInit() { + rotaryEncoderInit(); + ExtFLASH_Init(); SDRAM_Init(); diff --git a/radio/src/targets/pl18/board.cpp b/radio/src/targets/pl18/board.cpp index c2d051e31..ef34fe87e 100644 --- a/radio/src/targets/pl18/board.cpp +++ b/radio/src/targets/pl18/board.cpp @@ -180,6 +180,9 @@ void boardBLPreJump() void boardBLInit() { +#if defined(ROTARY_ENCODER_NAVIGATION) && !defined(USE_HATS_AS_KEYS) + rotaryEncoderInit(); +#endif SDRAM_Init(); } diff --git a/radio/src/targets/st16/board.cpp b/radio/src/targets/st16/board.cpp index 1b2dd36ae..a5a3ba9ca 100644 --- a/radio/src/targets/st16/board.cpp +++ b/radio/src/targets/st16/board.cpp @@ -164,6 +164,8 @@ void boardBLPreJump() void boardBLInit() { + rotaryEncoderInit(); + ExtFLASH_Init(); SDRAM_Init(); diff --git a/radio/src/targets/taranis/CMakeLists.txt b/radio/src/targets/taranis/CMakeLists.txt index 45b18e59d..ea8cf7c35 100644 --- a/radio/src/targets/taranis/CMakeLists.txt +++ b/radio/src/targets/taranis/CMakeLists.txt @@ -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} $) +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) diff --git a/radio/src/targets/taranis/board.cpp b/radio/src/targets/taranis/board.cpp index 9e6d06d7e..b66f6e384 100644 --- a/radio/src/targets/taranis/board.cpp +++ b/radio/src/targets/taranis/board.cpp @@ -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) diff --git a/radio/src/targets/tx15/CMakeLists.txt b/radio/src/targets/tx15/CMakeLists.txt index a61dd05bd..2f320e96e 100644 --- a/radio/src/targets/tx15/CMakeLists.txt +++ b/radio/src/targets/tx15/CMakeLists.txt @@ -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} $) +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)