diff --git a/radio/src/dataconstants.h b/radio/src/dataconstants.h index 82b4b9498..d87e91760 100644 --- a/radio/src/dataconstants.h +++ b/radio/src/dataconstants.h @@ -295,8 +295,8 @@ enum BeeperMode { TRAINER_MODE_SLAVE, #if defined(PCBTARANIS) TRAINER_MODE_MASTER_SBUS_EXTERNAL_MODULE, -#endif TRAINER_MODE_MASTER_CPPM_EXTERNAL_MODULE, +#endif TRAINER_MODE_MASTER_BATTERY_COMPARTMENT, }; #elif defined(PCBSKY9X) diff --git a/radio/src/gui/gui_helpers.cpp b/radio/src/gui/gui_helpers.cpp index ade430129..b8bb10c6a 100644 --- a/radio/src/gui/gui_helpers.cpp +++ b/radio/src/gui/gui_helpers.cpp @@ -490,10 +490,7 @@ bool isRfProtocolAvailable(int protocol) #if defined(PCBHORUS) bool isTrainerModeAvailable(int mode) { - if (IS_EXTERNAL_MODULE_PRESENT() && mode == TRAINER_MODE_MASTER_CPPM_EXTERNAL_MODULE) - return false; - else - return true; + return true; } #elif defined(PCBTARANIS) bool isTrainerModeAvailable(int mode) diff --git a/radio/src/gui/horus/menu_model_setup.cpp b/radio/src/gui/horus/menu_model_setup.cpp index 228e927f5..ea67721b8 100644 --- a/radio/src/gui/horus/menu_model_setup.cpp +++ b/radio/src/gui/horus/menu_model_setup.cpp @@ -559,7 +559,7 @@ bool menuModelSetup(evt_t event) case ITEM_MODEL_TRAINER_MODE: lcdDrawText(MENUS_MARGIN_LEFT, y, STR_MODE); - g_model.trainerMode = selectMenuItem(MODEL_SETUP_2ND_COLUMN, y, STR_VTRAINERMODES, g_model.trainerMode, 0, HAS_WIRELESS_TRAINER_HARDWARE() ? TRAINER_MODE_MASTER_BATTERY_COMPARTMENT : TRAINER_MODE_MASTER_CPPM_EXTERNAL_MODULE, attr, event); + g_model.trainerMode = selectMenuItem(MODEL_SETUP_2ND_COLUMN, y, STR_VTRAINERMODES, g_model.trainerMode, 0, HAS_WIRELESS_TRAINER_HARDWARE() ? TRAINER_MODE_MASTER_BATTERY_COMPARTMENT : TRAINER_MODE_SLAVE, attr, event); break; case ITEM_MODEL_EXTERNAL_MODULE_LABEL: diff --git a/radio/src/myeeprom.h b/radio/src/myeeprom.h index 71dd5ab26..a7274df08 100644 --- a/radio/src/myeeprom.h +++ b/radio/src/myeeprom.h @@ -48,9 +48,9 @@ #endif #if defined(PCBSTD) - #define GVAR_VALUE(x, p) g_model.gvars[x] + #define GVAR_VALUE(x, p) g_model.gvars[x] #else - #define GVAR_VALUE(gv, fm) g_model.flightModeData[fm].gvars[gv] + #define GVAR_VALUE(gv, fm) g_model.flightModeData[fm].gvars[gv] #endif #define GET_PPM_POLARITY(idx) g_model.moduleData[idx].ppm.pulsePol @@ -58,7 +58,7 @@ #define SET_DEFAULT_PPM_FRAME_LENGTH(idx) g_model.moduleData[idx].ppm.frameLength = 4 * max((int8_t)0, g_model.moduleData[idx].channelsCount) #if defined(PCBHORUS) - #define IS_TRAINER_EXTERNAL_MODULE() (g_model.trainerMode == TRAINER_MODE_MASTER_CPPM_EXTERNAL_MODULE) + #define IS_TRAINER_EXTERNAL_MODULE() false #define HAS_WIRELESS_TRAINER_HARDWARE() (g_eeGeneral.serial2Mode==UART_MODE_SBUS_TRAINER) #elif defined(PCBTARANIS) #define IS_TRAINER_EXTERNAL_MODULE() (g_model.trainerMode == TRAINER_MODE_MASTER_SBUS_EXTERNAL_MODULE || g_model.trainerMode == TRAINER_MODE_MASTER_CPPM_EXTERNAL_MODULE) diff --git a/radio/src/targets/horus/board_horus.cpp b/radio/src/targets/horus/board_horus.cpp index 2db387527..a99f3ccde 100644 --- a/radio/src/targets/horus/board_horus.cpp +++ b/radio/src/targets/horus/board_horus.cpp @@ -18,7 +18,7 @@ * GNU General Public License for more details. */ -#include "../../opentx.h" +#include "opentx.h" #if defined(__cplusplus) && !defined(SIMU) extern "C" { @@ -31,12 +31,12 @@ extern "C" { void watchdogInit(unsigned int duration) { - IWDG->KR = 0x5555 ; // Unlock registers - IWDG->PR = 3 ; // Divide by 32 => 1kHz clock - IWDG->KR = 0x5555 ; // Unlock registers - IWDG->RLR = duration ; // 1.5 seconds nominal - IWDG->KR = 0xAAAA ; // reload - IWDG->KR = 0xCCCC ; // start + IWDG->KR = 0x5555; // Unlock registers + IWDG->PR = 3; // Divide by 32 => 1kHz clock + IWDG->KR = 0x5555; // Unlock registers + IWDG->RLR = duration; // 1.5 seconds nominal + IWDG->KR = 0xAAAA; // reload + IWDG->KR = 0xCCCC; // start } void getCPUUniqueID(char * s) @@ -52,7 +52,7 @@ void getCPUUniqueID(char * s) // Start TIMER7 at 2000000Hz void init2MhzTimer() { - TIMER_2MHz_TIMER->PSC = (PERI1_FREQUENCY * TIMER_MULT_APB1) / 2000000 - 1 ; // 0.5 uS, 2 MHz + TIMER_2MHz_TIMER->PSC = (PERI1_FREQUENCY * TIMER_MULT_APB1) / 2000000 - 1; // 0.5 uS, 2 MHz TIMER_2MHz_TIMER->ARR = 65535; TIMER_2MHz_TIMER->CR2 = 0; TIMER_2MHz_TIMER->CR1 = TIM_CR1_CEN; @@ -61,21 +61,21 @@ void init2MhzTimer() // Starts TIMER at 1000Hz void init1msTimer() { - INTERRUPT_5MS_TIMER->ARR = 999 ; // 1mS - INTERRUPT_5MS_TIMER->PSC = (PERI1_FREQUENCY * TIMER_MULT_APB1) / 1000000 - 1 ; // 1uS from 30MHz - INTERRUPT_5MS_TIMER->CCER = 0 ; - INTERRUPT_5MS_TIMER->CCMR1 = 0 ; - INTERRUPT_5MS_TIMER->EGR = 0 ; - INTERRUPT_5MS_TIMER->CR1 = 5 ; - INTERRUPT_5MS_TIMER->DIER |= 1 ; - NVIC_EnableIRQ(TIM8_TRG_COM_TIM14_IRQn) ; + INTERRUPT_5MS_TIMER->ARR = 999; // 1mS + INTERRUPT_5MS_TIMER->PSC = (PERI1_FREQUENCY * TIMER_MULT_APB1) / 1000000 - 1; // 1uS from 30MHz + INTERRUPT_5MS_TIMER->CCER = 0; + INTERRUPT_5MS_TIMER->CCMR1 = 0; + INTERRUPT_5MS_TIMER->EGR = 0; + INTERRUPT_5MS_TIMER->CR1 = 5; + INTERRUPT_5MS_TIMER->DIER |= 1; + NVIC_EnableIRQ(TIM8_TRG_COM_TIM14_IRQn); NVIC_SetPriority(TIM8_TRG_COM_TIM14_IRQn, 7); } // TODO use the same than board_sky9x.cpp void interrupt1ms() { - static uint32_t pre_scale ; // Used to get 10 Hz counter + static uint32_t pre_scale; // Used to get 10 Hz counter ++pre_scale; @@ -89,8 +89,8 @@ void interrupt1ms() } - if ( pre_scale == 10 ) { - pre_scale = 0 ; + if (pre_scale == 10) { + pre_scale = 0; DEBUG_TIMER_START(debugTimerPer10ms); per10ms(); DEBUG_TIMER_STOP(debugTimerPer10ms); @@ -104,40 +104,39 @@ void interrupt1ms() #if !defined(SIMU) extern "C" void TIM8_TRG_COM_TIM14_IRQHandler() { - TIM14->SR &= ~TIM_SR_UIF ; - interrupt1ms() ; + TIM14->SR &= ~TIM_SR_UIF; + interrupt1ms(); DEBUG_INTERRUPT(INT_1MS); } void boardInit() { - RCC_AHB1PeriphClockCmd(PWR_RCC_AHB1Periph | - LED_RCC_AHB1Periph | - LCD_RCC_AHB1Periph | - AUDIO_RCC_AHB1Periph | - KEYS_RCC_AHB1Periph_GPIO | - ADC_RCC_AHB1Periph | - SERIAL_RCC_AHB1Periph | + RCC_AHB1PeriphClockCmd(PWR_RCC_AHB1Periph | + LED_RCC_AHB1Periph | + LCD_RCC_AHB1Periph | + AUDIO_RCC_AHB1Periph | + KEYS_RCC_AHB1Periph_GPIO | + ADC_RCC_AHB1Periph | + SERIAL_RCC_AHB1Periph | TELEMETRY_RCC_AHB1Periph | TRAINER_RCC_AHB1Periph | - HEARTBEAT_RCC_AHB1Periph | - AUDIO_RCC_AHB1Periph | - HAPTIC_RCC_AHB1Periph | - INTMODULE_RCC_AHB1Periph | - EXTMODULE_RCC_AHB1Periph, + AUDIO_RCC_AHB1Periph | + HAPTIC_RCC_AHB1Periph | + INTMODULE_RCC_AHB1Periph | + EXTMODULE_RCC_AHB1Periph, ENABLE); - RCC_APB1PeriphClockCmd(INTERRUPT_5MS_APB1Periph | - TIMER_2MHz_APB1Periph | - AUDIO_RCC_APB1Periph | - SERIAL_RCC_APB1Periph | + RCC_APB1PeriphClockCmd(INTERRUPT_5MS_APB1Periph | + TIMER_2MHz_APB1Periph | + AUDIO_RCC_APB1Periph | + SERIAL_RCC_APB1Periph | TELEMETRY_RCC_APB1Periph | TRAINER_RCC_APB1Periph | - AUDIO_RCC_APB1Periph | - EXTMODULE_RCC_APB1Periph, + AUDIO_RCC_APB1Periph | + EXTMODULE_RCC_APB1Periph, ENABLE); - RCC_APB2PeriphClockCmd(LCD_RCC_APB2Periph | - ADC_RCC_APB2Periph | - HAPTIC_RCC_APB2Periph | + RCC_APB2PeriphClockCmd(LCD_RCC_APB2Periph | + ADC_RCC_APB2Periph | + HAPTIC_RCC_APB2Periph | INTMODULE_RCC_APB2Periph, ENABLE); pwrInit(); @@ -201,7 +200,7 @@ void usbJoystickUpdate(void) //buttons HID_Buffer[0] = 0; //buttons for (int i = 0; i < 8; ++i) { - if ( channelOutputs[i+8] > 0 ) { + if (channelOutputs[i+8] > 0) { HID_Buffer[0] |= (1 << i); } } @@ -210,12 +209,12 @@ void usbJoystickUpdate(void) //uint8_t * p = HID_Buffer + 1; for (int i = 0; i < 8; ++i) { int16_t value = channelOutputs[i] / 8; - if ( value > 127 ) value = 127; - else if ( value < -127 ) value = -127; + if (value > 127) value = 127; + else if (value < -127) value = -127; HID_Buffer[i+1] = static_cast(value); } - USBD_HID_SendReport (&USB_OTG_dev, HID_Buffer, HID_IN_PACKET ); + USBD_HID_SendReport (&USB_OTG_dev, HID_Buffer, HID_IN_PACKET); } #endif //#if defined(USB_JOYSTICK) && defined(PCBTARANIS) && !defined(SIMU) @@ -234,9 +233,6 @@ void checkTrainerSettings() case TRAINER_MODE_SLAVE: stop_trainer_ppm(); break; - case TRAINER_MODE_MASTER_CPPM_EXTERNAL_MODULE: - stop_cppm_on_heartbeat_capture() ; - break; case TRAINER_MODE_MASTER_BATTERY_COMPARTMENT: serial2Stop(); } @@ -246,9 +242,6 @@ void checkTrainerSettings() case TRAINER_MODE_SLAVE: init_trainer_ppm(); break; - case TRAINER_MODE_MASTER_CPPM_EXTERNAL_MODULE: - init_cppm_on_heartbeat_capture() ; - break; case TRAINER_MODE_MASTER_BATTERY_COMPARTMENT: if (g_eeGeneral.serial2Mode == UART_MODE_SBUS_TRAINER) { serial2SbusInit(); @@ -266,5 +259,5 @@ void checkTrainerSettings() uint16_t getBatteryVoltage() { int32_t instant_vbat = anaIn(TX_VOLTAGE); // using filtered ADC value on purpose - return (uint16_t)((instant_vbat * (1000 + g_eeGeneral.txVoltageCalibration) ) / 1629); + return (uint16_t)((instant_vbat * (1000 + g_eeGeneral.txVoltageCalibration)) / 1629); } diff --git a/radio/src/targets/horus/board_horus.h b/radio/src/targets/horus/board_horus.h index 7b7b308fb..040373ebe 100644 --- a/radio/src/targets/horus/board_horus.h +++ b/radio/src/targets/horus/board_horus.h @@ -50,12 +50,12 @@ extern "C" { #include "usbd_msc_core.h" #include "usbd_hid_core.h" #include "usbd_usr.h" - #include "../horus/usbd_desc.h" - #include "../horus/usb_conf.h" - #include "../horus/usbd_conf.h" + #include "usbd_desc.h" + #include "usb_conf.h" + #include "usbd_conf.h" #endif -#include "../horus/hal.h" +#include "hal.h" #if defined(__cplusplus) && !defined(SIMU) } @@ -179,8 +179,6 @@ void init_trainer_ppm(void); void stop_trainer_ppm(void); void init_trainer_capture(void); void stop_trainer_capture(void); -void init_cppm_on_heartbeat_capture(void); -void stop_cppm_on_heartbeat_capture(void); // Keys driver void keysInit(void); diff --git a/radio/src/targets/horus/extmodule_driver.cpp b/radio/src/targets/horus/extmodule_driver.cpp index 1ae7e21c3..a580c48da 100644 --- a/radio/src/targets/horus/extmodule_driver.cpp +++ b/radio/src/targets/horus/extmodule_driver.cpp @@ -31,16 +31,12 @@ void extmoduleStop() EXTMODULE_TIMER->DIER &= ~(TIM_DIER_CC2IE | TIM_DIER_UDE); EXTMODULE_TIMER->CR1 &= ~TIM_CR1_CEN; - if (!IS_TRAINER_EXTERNAL_MODULE()) { - EXTERNAL_MODULE_OFF(); - } + EXTERNAL_MODULE_OFF(); } void extmoduleNoneStart() { - if (!IS_TRAINER_EXTERNAL_MODULE()) { - EXTERNAL_MODULE_OFF(); - } + EXTERNAL_MODULE_OFF(); GPIO_PinAFConfig(EXTMODULE_PPM_GPIO, EXTMODULE_PPM_GPIO_PinSource, 0); diff --git a/radio/src/targets/horus/hal.h b/radio/src/targets/horus/hal.h index ea0608761..a7682bd06 100644 --- a/radio/src/targets/horus/hal.h +++ b/radio/src/targets/horus/hal.h @@ -2,7 +2,7 @@ * Copyright (C) OpenTX * * Based on code named - * th9x - http://code.google.com/p/th9x + * th9x - http://code.google.com/p/th9x * er9x - http://code.google.com/p/er9x * gruvin9x - http://code.google.com/p/gruvin9x * @@ -121,8 +121,8 @@ #define ADC_SPI_PIN_MOSI GPIO_Pin_6 #define ADC_SPI_PIN_MISO GPIO_Pin_5 #define ADC_SPI_PinSource_SCK GPIO_PinSource2 -#define ADC_SPI_PinSource_MISO GPIO_PinSource5 -#define ADC_SPI_PinSource_MOSI GPIO_PinSource6 +#define ADC_SPI_PinSource_MISO GPIO_PinSource5 +#define ADC_SPI_PinSource_MOSI GPIO_PinSource6 #define ADC_GPIO_PIN_MOUSE1 GPIO_Pin_8 // PF.8 ADC3_IN6 J5 MOUSE_X #define ADC_GPIO_PIN_MOUSE2 GPIO_Pin_9 // PF.9 ADC3_IN7 J6 MOUSE_Y #define ADC_IN_MOUSE1 6 @@ -326,13 +326,6 @@ #define TRAINER_DMA_FLAG_TC DMA_IT_TCIF2 #define TRAINER_TIMER_FREQ (PERI1_FREQUENCY * TIMER_MULT_APB1) -// Heartbeat -#define HEARTBEAT_RCC_AHB1Periph RCC_AHB1Periph_GPIOD -#define HEARTBEAT_GPIO_PIN GPIO_Pin_12 // PD.12 -#define HEARTBEAT_TIMER TIM4 -#define HEARTBEAT_TIMER_IRQn TIM4_IRQn -#define HEARTBEAT_TIMER_IRQHandler TIM4_IRQHandler - // 5ms Interrupt #define INTERRUPT_5MS_APB1Periph RCC_APB1Periph_TIM14 #define INTERRUPT_5MS_TIMER TIM14 diff --git a/radio/src/targets/horus/trainer_driver.cpp b/radio/src/targets/horus/trainer_driver.cpp index 1cebf075c..925c227b4 100644 --- a/radio/src/targets/horus/trainer_driver.cpp +++ b/radio/src/targets/horus/trainer_driver.cpp @@ -152,50 +152,3 @@ extern "C" void TRAINER_TIMER_IRQHandler() trainerSendNextFrame(); } } - -extern "C" void HEARTBEAT_TIMER_IRQHandler() -{ - uint16_t capture = 0; - bool doCapture = false; - - if ((HEARTBEAT_TIMER->DIER & TIM_DIER_CC2IE ) && (HEARTBEAT_TIMER->SR & TIM_SR_CC2IF)) { - // capture mode on heartbeat pin (external module) - capture = HEARTBEAT_TIMER->CCR2; - if (currentTrainerMode == TRAINER_MODE_MASTER_CPPM_EXTERNAL_MODULE) { - doCapture = true; - } - } - - if (doCapture) { - captureTrainerPulses(capture); - } -} - -void init_cppm_on_heartbeat_capture(void) -{ - EXTERNAL_MODULE_ON(); - - configure_pins(HEARTBEAT_GPIO_PIN, PIN_PERIPHERAL | PIN_PORTD | PIN_PER_2); - - HEARTBEAT_TIMER->ARR = 0xFFFF; - HEARTBEAT_TIMER->PSC = (PERI1_FREQUENCY * TIMER_MULT_APB1) / 2000000 - 1; // 0.5uS - HEARTBEAT_TIMER->CR2 = 0; - HEARTBEAT_TIMER->CCMR1 = TIM_CCMR1_IC2F_0 | TIM_CCMR1_IC2F_1 | TIM_CCMR1_CC2S_0; - HEARTBEAT_TIMER->CCER = TIM_CCER_CC2E; - HEARTBEAT_TIMER->SR &= ~TIM_SR_CC2IF; // Clear flag - HEARTBEAT_TIMER->DIER |= TIM_DIER_CC2IE; - HEARTBEAT_TIMER->CR1 = TIM_CR1_CEN; - NVIC_SetPriority(HEARTBEAT_TIMER_IRQn, 7); - NVIC_EnableIRQ(HEARTBEAT_TIMER_IRQn); -} - -void stop_cppm_on_heartbeat_capture(void) -{ - HEARTBEAT_TIMER->DIER = 0; - HEARTBEAT_TIMER->CR1 &= ~TIM_CR1_CEN; // Stop counter - NVIC_DisableIRQ(HEARTBEAT_TIMER_IRQn); // Stop Interrupt - - if (!IS_EXTERNAL_MODULE_PRESENT()) { - EXTERNAL_MODULE_OFF(); - } -} diff --git a/radio/src/translations.h b/radio/src/translations.h index 5d5370cde..e8b6fb07b 100644 --- a/radio/src/translations.h +++ b/radio/src/translations.h @@ -77,7 +77,9 @@ #define BUTTON(x) "[" x "]" #endif -#if defined(PCBTARANIS) +#if defined(PCBHORUS) +#define TR_VTRAINERMODES TR_VTRAINER_MASTER_JACK TR_VTRAINER_SLAVE_JACK TR_VTRAINER_MASTER_BATTERY +#elif defined(PCBTARANIS) #define TR_VTRAINERMODES TR_VTRAINER_MASTER_JACK TR_VTRAINER_SLAVE_JACK TR_VTRAINER_MASTER_SBUS_MODULE TR_VTRAINER_MASTER_CPPM_MODULE TR_VTRAINER_MASTER_BATTERY #elif defined(CPUARM) #define TR_VTRAINERMODES TR_VTRAINER_MASTER_JACK TR_VTRAINER_SLAVE_JACK TR_VTRAINER_MASTER_CPPM_MODULE TR_VTRAINER_MASTER_BATTERY