diff --git a/radio/src/targets/horus/board.cpp b/radio/src/targets/horus/board.cpp index c91f4bbea..23d6fa454 100644 --- a/radio/src/targets/horus/board.cpp +++ b/radio/src/targets/horus/board.cpp @@ -100,6 +100,29 @@ extern "C" void INTERRUPT_1MS_IRQHandler() extern "C" void initialise_monitor_handles(); #endif +#if defined(PCBX10) +void sportUpdateInit() +{ + GPIO_InitTypeDef GPIO_InitStructure; + GPIO_InitStructure.GPIO_Pin = SPORT_UPDATE_PWR_GPIO_PIN; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; + GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; + GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; + GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; + GPIO_Init(SPORT_UPDATE_PWR_GPIO, &GPIO_InitStructure); +} + +void sportUpdatePowerOn() +{ + GPIO_SetBits(SPORT_UPDATE_PWR_GPIO, SPORT_UPDATE_PWR_GPIO_PIN); +} + +void sportUpdatePowerOff() +{ + GPIO_ResetBits(SPORT_UPDATE_PWR_GPIO, SPORT_UPDATE_PWR_GPIO_PIN); +} +#endif + void boardInit() { #if defined(SEMIHOSTING) @@ -125,6 +148,7 @@ void boardInit() INTMODULE_RCC_AHB1Periph | EXTMODULE_RCC_AHB1Periph | GPS_RCC_AHB1Periph | + SPORT_UPDATE_RCC_AHB1Periph | BL_RCC_AHB1Periph, ENABLE); @@ -196,6 +220,7 @@ void boardInit() #if defined(PCBX10) ledInit(); + sportUpdateInit(); #endif ledBlue(); diff --git a/radio/src/targets/horus/board.h b/radio/src/targets/horus/board.h index c02a2b33a..cd9d86985 100644 --- a/radio/src/targets/horus/board.h +++ b/radio/src/targets/horus/board.h @@ -504,8 +504,15 @@ uint8_t telemetryGetByte(uint8_t * byte); extern uint32_t telemetryErrors; // Sport update driver +#if defined(PCBX10) +void sportUpdatePowerOn(void); +void sportUpdatePowerOff(void); +#define SPORT_UPDATE_POWER_ON() sportUpdatePowerOn() +#define SPORT_UPDATE_POWER_OFF() sportUpdatePowerOff() +#else #define SPORT_UPDATE_POWER_ON() EXTERNAL_MODULE_ON() #define SPORT_UPDATE_POWER_OFF() EXTERNAL_MODULE_OFF() +#endif // Haptic driver void hapticInit(void); diff --git a/radio/src/targets/horus/hal.h b/radio/src/targets/horus/hal.h index 164d756b9..2608448cd 100644 --- a/radio/src/targets/horus/hal.h +++ b/radio/src/targets/horus/hal.h @@ -250,9 +250,11 @@ #define PWR_SWITCH_GPIO_PIN GPIO_Pin_0 // PJ.00 #if defined(PCBX10) - #define SPORT_PWR_RCC_AHB1Periph RCC_AHB1Periph_GPIOH - #define SPORT_PWR_GPIO GPIOH - #define SPORT_PWR_GPIO_PIN GPIO_Pin_13 // PH.13 + #define SPORT_UPDATE_RCC_AHB1Periph RCC_AHB1Periph_GPIOH + #define SPORT_UPDATE_PWR_GPIO GPIOH + #define SPORT_UPDATE_PWR_GPIO_PIN GPIO_Pin_13 // PH.13 +#else + #define SPORT_UPDATE_RCC_AHB1Periph 0 #endif // PCBREV