diff --git a/radio/src/dataconstants.h b/radio/src/dataconstants.h index f36dbcc78..ee7f3beca 100644 --- a/radio/src/dataconstants.h +++ b/radio/src/dataconstants.h @@ -604,7 +604,7 @@ enum MixSources { #if defined(PCBX10) MIXSRC_EXT1, LUA_EXPORT("ext1", "Ext 1") MIXSRC_EXT2, LUA_EXPORT("ext2", "Ext 2") -#if defined(RADIO_TX16S) && defined(FLYSKY_HALL_STICKS) +#if defined(FLYSKY_HALL_STICKS) && defined(FLYSKY_HALL_STICKS_EXT3_EXT4) MIXSRC_EXT3, LUA_EXPORT("ext3", "Ext 3") MIXSRC_EXT4, LUA_EXPORT("ext4", "Ext 4") #endif diff --git a/radio/src/opentx.cpp b/radio/src/opentx.cpp index bdb781927..20881ea6d 100644 --- a/radio/src/opentx.cpp +++ b/radio/src/opentx.cpp @@ -1067,23 +1067,23 @@ void getADC() uint16_t v; #if defined(FLYSKY_HALL_STICKS) - if (x < 4) + if (x < 4) { v = get_flysky_hall_adc_value(x) >> (1 - ANALOG_SCALE); - else - #if defined(RADIO_TX16S) - switch (x) - { - case EXT3: - case EXT4: - v = getAnalogValue(x-7) >> (1 - ANALOG_SCALE); - break; - default: - v = getAnalogValue(x) >> (1 - ANALOG_SCALE); - break; - } - #else + } else { + #if defined(FLYSKY_HALL_STICKS_EXT3_EXT4) + switch (x) { + case EXT3: + case EXT4: + v = getAnalogValue(x - 7) >> (1 - ANALOG_SCALE); + break; + default: v = getAnalogValue(x) >> (1 - ANALOG_SCALE); - #endif + break; + } + #else + v = getAnalogValue(x) >> (1 - ANALOG_SCALE); + #endif + } #else v = getAnalogValue(x) >> (1 - ANALOG_SCALE); #endif diff --git a/radio/src/targets/common/arm/stm32/stm32_hal_adc.cpp b/radio/src/targets/common/arm/stm32/stm32_hal_adc.cpp index 4659a528e..7a3802e71 100644 --- a/radio/src/targets/common/arm/stm32/stm32_hal_adc.cpp +++ b/radio/src/targets/common/arm/stm32/stm32_hal_adc.cpp @@ -85,7 +85,7 @@ stm32_hal_adc_channel ADC_MAIN_channels[] = { { ADC_CHANNEL_POT3, ADC_SAMPTIME }, { ADC_CHANNEL_EXT1, ADC_SAMPTIME }, { ADC_CHANNEL_EXT2, ADC_SAMPTIME }, -#if (defined(RADIO_TX16S) && defined(FLYSKY_HALL_STICKS)) +#if defined(FLYSKY_HALL_STICKS_EXT3_EXT4) { ADC_CHANNEL_EXT3, ADC_SAMPTIME }, { ADC_CHANNEL_EXT4, ADC_SAMPTIME }, #endif diff --git a/radio/src/targets/horus/CMakeLists.txt b/radio/src/targets/horus/CMakeLists.txt index d265a96a2..a06854d91 100644 --- a/radio/src/targets/horus/CMakeLists.txt +++ b/radio/src/targets/horus/CMakeLists.txt @@ -192,6 +192,11 @@ if(FLYSKY_HALL_STICKS) add_definitions(-DFLYSKY_HALL_STICKS) add_definitions(-DFLYSKY_HALL_STICKS_REVERSE) set(FLYSKY_HALL_STICKS_DRIVER flyskyHallStick_driver.cpp) + + option(FLYSKY_HALL_STICKS_EXT3_EXT4 "Additional EXT3 & EXT4 inputs for FlySky Hall Sticks" OFF) + if(FLYSKY_HALL_STICKS_EXT3_EXT4) + add_definitions(-DFLYSKY_HALL_STICKS_EXT3_EXT4) + endif() endif() if(IMU_LSM6DS33) diff --git a/radio/src/targets/horus/board.h b/radio/src/targets/horus/board.h index ee74a331a..3a59811ef 100644 --- a/radio/src/targets/horus/board.h +++ b/radio/src/targets/horus/board.h @@ -335,7 +335,7 @@ void watchdogInit(unsigned int duration); // ADC driver #if defined(PCBX10) - #if defined(RADIO_TX16S) && defined(FLYSKY_HALL_STICKS) + #if defined(FLYSKY_HALL_STICKS_EXT3_EXT4) #define NUM_POTS 7 #else #define NUM_POTS 5 @@ -374,7 +374,7 @@ enum Analogs { EXT1, EXT2, #endif -#if defined(RADIO_TX16S) && defined(FLYSKY_HALL_STICKS) +#if defined(FLYSKY_HALL_STICKS_EXT3_EXT4) EXT3, EXT4, #endif @@ -420,7 +420,7 @@ enum Analogs { #if !defined(PCBX12S) // ext are used by mouse on X12S #define HARDWARE_EXT1 #define HARDWARE_EXT2 - #if (defined(RADIO_TX16S) && defined(FLYSKY_HALL_STICKS)) + #if defined(FLYSKY_HALL_STICKS_EXT3_EXT4) #define HARDWARE_EXT3 #define HARDWARE_EXT4 #endif @@ -444,7 +444,7 @@ enum CalibratedAnalogs { #else CALIBRATED_POT_EXT1, CALIBRATED_POT_EXT2, - #if (defined(RADIO_TX16S) && defined(FLYSKY_HALL_STICKS)) + #if defined(FLYSKY_HALL_STICKS_EXT3_EXT4) CALIBRATED_POT_EXT3, CALIBRATED_POT_EXT4, #endif diff --git a/radio/src/targets/horus/hal.h b/radio/src/targets/horus/hal.h index dc89a1bca..5ef6012f4 100644 --- a/radio/src/targets/horus/hal.h +++ b/radio/src/targets/horus/hal.h @@ -282,12 +282,12 @@ #define ADC_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOF | RCC_AHB1Periph_DMA2) #define ADC_RCC_APB1Periph (RCC_APB1Periph_TIM5) #define ADC_RCC_APB2Periph (RCC_APB2Periph_ADC1 | RCC_APB2Periph_ADC3) - #if !(defined(RADIO_TX16S) && defined(FLYSKY_HALL_STICKS)) + #if !defined(FLYSKY_HALL_STICKS) #define ADC_GPIO_PIN_STICK_LH GPIO_Pin_0 // PA.00 #define ADC_GPIO_PIN_STICK_LV GPIO_Pin_1 // PA.01 #define ADC_GPIO_PIN_STICK_RH GPIO_Pin_2 // PA.02 #define ADC_GPIO_PIN_STICK_RV GPIO_Pin_3 // PA.03 - #else + #elif defined(FLYSKY_HALL_STICKS_EXT3_EXT4) #define ADC_GPIO_PIN_EXT3 GPIO_Pin_2 // PA.02 #define ADC_GPIO_PIN_EXT4 GPIO_Pin_3 // PA.03 #endif diff --git a/radio/src/translations/untranslated.h b/radio/src/translations/untranslated.h index 45ef3232a..29fa724ad 100644 --- a/radio/src/translations/untranslated.h +++ b/radio/src/translations/untranslated.h @@ -33,7 +33,7 @@ #define TR_POTS_VSRCRAW STR_CHAR_POT"S1\0" STR_CHAR_POT"6P\0" STR_CHAR_POT"S2\0" STR_CHAR_TRIM "L1\0" STR_CHAR_TRIM "L2\0" STR_CHAR_SLIDER"LS\0" STR_CHAR_SLIDER"RS\0" STR_CHAR_POT"JSx" STR_CHAR_POT"JSy" #define TR_SW_VSRCRAW STR_CHAR_SWITCH"SA\0" STR_CHAR_SWITCH"SB\0" STR_CHAR_SWITCH"SC\0" STR_CHAR_SWITCH"SD\0" STR_CHAR_SWITCH"SE\0" STR_CHAR_SWITCH"SF\0" STR_CHAR_SWITCH"SG\0" STR_CHAR_SWITCH"SH\0" STR_CHAR_SWITCH"SI\0" STR_CHAR_SWITCH"SJ\0" #elif defined(PCBX10) - #if defined (RADIO_TX16S) && defined(FLYSKY_HALL_STICKS) + #if defined (FLYSKY_HALL_STICKS_EXT3_EXT4) #define TR_POTS_VSRCRAW STR_CHAR_POT"S1\0" STR_CHAR_POT"6P\0" STR_CHAR_POT"S2\0" STR_CHAR_POT"EX1" STR_CHAR_POT"EX2" STR_CHAR_POT"EX3" STR_CHAR_POT"EX4" STR_CHAR_SLIDER"LS\0" STR_CHAR_SLIDER"RS\0" STR_CHAR_POT"JSx" STR_CHAR_POT"JSy" #else #define TR_POTS_VSRCRAW STR_CHAR_POT"S1\0" STR_CHAR_POT"6P\0" STR_CHAR_POT"S2\0" STR_CHAR_POT"EX1" STR_CHAR_POT"EX2" STR_CHAR_SLIDER"LS\0" STR_CHAR_SLIDER"RS\0" STR_CHAR_POT"JSx" STR_CHAR_POT"JSy"