From ec463819febe91cc3c755b4b78a32b54ce65d761 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Wed, 4 Apr 2018 23:40:21 +0200 Subject: [PATCH] Bsongis/xlite fixes (#5803) X-Lite fixes --- radio/src/gui/128x64/radio_hardware.cpp | 17 ++++++++-- radio/src/gui/128x64/view_main.cpp | 2 +- radio/src/opentx.cpp | 8 +++-- .../common/arm/stm32/analog_adc_driver.cpp | 14 +++------ radio/src/targets/taranis/board.h | 3 +- radio/src/targets/taranis/hal.h | 31 ++++++++++--------- radio/src/targets/taranis/led_driver.cpp | 12 +++---- radio/src/translations/en.h.txt | 2 +- 8 files changed, 50 insertions(+), 39 deletions(-) diff --git a/radio/src/gui/128x64/radio_hardware.cpp b/radio/src/gui/128x64/radio_hardware.cpp index 79a834815..f1e3a8866 100644 --- a/radio/src/gui/128x64/radio_hardware.cpp +++ b/radio/src/gui/128x64/radio_hardware.cpp @@ -109,8 +109,10 @@ enum MenuRadioHardwareItems { ITEM_RADIO_HARDWARE_SB, ITEM_RADIO_HARDWARE_SC, ITEM_RADIO_HARDWARE_SD, +#if NUM_SWITCHES > 4 ITEM_RADIO_HARDWARE_SF, ITEM_RADIO_HARDWARE_SH, +#endif ITEM_RADIO_HARDWARE_SERIAL_BAUDRATE, #if defined(BLUETOOTH) ITEM_RADIO_HARDWARE_BLUETOOTH_MODE, @@ -124,7 +126,13 @@ enum MenuRadioHardwareItems { }; #define POTS_ROWS NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1 + +#if NUM_SWITCHES > 4 #define SWITCHES_ROWS NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1 +#else +#define SWITCHES_ROWS NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1 +#endif + #if defined(PCBTARANIS) #define BLUETOOTH_ROWS uint8_t(btChipPresent ? 0 : HIDDEN_ROW), uint8_t(g_eeGeneral.bluetoothMode == BLUETOOTH_TELEMETRY ? -1 : HIDDEN_ROW), uint8_t(g_eeGeneral.bluetoothMode == BLUETOOTH_OFF ? HIDDEN_ROW : -1), uint8_t(g_eeGeneral.bluetoothMode == BLUETOOTH_OFF ? HIDDEN_ROW : -1), uint8_t(g_eeGeneral.bluetoothMode == BLUETOOTH_OFF ? HIDDEN_ROW : 0), #elif defined(BLUETOOTH) @@ -133,18 +141,19 @@ enum MenuRadioHardwareItems { #define BLUETOOTH_ROWS #endif #if defined(PCBXLITE) -#define SWITCH_TYPE_MAX(sw) SWITCH_3POS +#define SWITCH_TYPE_MAX(sw) ((MIXSRC_SC-MIXSRC_FIRST_SWITCH == sw || MIXSRC_SD-MIXSRC_FIRST_SWITCH == sw) ? SWITCH_2POS : SWITCH_3POS) #else #define SWITCH_TYPE_MAX(sw) ((MIXSRC_SF-MIXSRC_FIRST_SWITCH == sw || MIXSRC_SH-MIXSRC_FIRST_SWITCH == sw) ? SWITCH_2POS : SWITCH_3POS) #endif + #define HW_SETTINGS_COLUMN1 30 #define HW_SETTINGS_COLUMN2 (30 + 5*FW) void menuRadioHardware(event_t event) { - MENU(STR_HARDWARE, menuTabGeneral, MENU_RADIO_HARDWARE, ITEM_RADIO_HARDWARE_MAX, { LABEL(Sticks), 0, 0, 0, 0, LABEL(Pots), POTS_ROWS, LABEL(Switches), SWITCHES_ROWS, 0, BLUETOOTH_ROWS 0 }); + MENU(STR_HARDWARE, menuTabGeneral, MENU_RADIO_HARDWARE, HEADER_LINE+ITEM_RADIO_HARDWARE_MAX, { HEADER_LINE_COLUMNS LABEL(Sticks), 0, 0, 0, 0, LABEL(Pots), POTS_ROWS, LABEL(Switches), SWITCHES_ROWS, 0, BLUETOOTH_ROWS 0 }); - uint8_t sub = menuVerticalPosition; + uint8_t sub = menuVerticalPosition - HEADER_LINE; for (uint8_t i=0; i 4 case ITEM_RADIO_HARDWARE_SF: case ITEM_RADIO_HARDWARE_SH: +#endif { int index = k-ITEM_RADIO_HARDWARE_SA; int config = SWITCH_CONFIG(index); diff --git a/radio/src/gui/128x64/view_main.cpp b/radio/src/gui/128x64/view_main.cpp index 3077b3f16..a307748a9 100644 --- a/radio/src/gui/128x64/view_main.cpp +++ b/radio/src/gui/128x64/view_main.cpp @@ -549,7 +549,7 @@ void menuMainView(event_t event) uint8_t x = 2*FW-2, y = 4*FH+i*FH+1; if (i >= NUM_SWITCHES/2) { x = 16*FW+1; - y -= 3*FH; + y -= (NUM_SWITCHES/2)*FH; } getvalue_t val = getValue(MIXSRC_FIRST_SWITCH+i); getvalue_t sw = ((val < 0) ? 3*i+1 : ((val == 0) ? 3*i+2 : 3*i+3)); diff --git a/radio/src/opentx.cpp b/radio/src/opentx.cpp index b9f4d2395..517ac523f 100644 --- a/radio/src/opentx.cpp +++ b/radio/src/opentx.cpp @@ -261,7 +261,7 @@ void generalDefault() #endif g_eeGeneral.slidersConfig = 0x0f; // 4 sliders g_eeGeneral.blOffBright = 20; -#elif defined(PCBX7) || defined(PCBXLITE) +#elif defined(PCBX7) || defined(PCBXLITE) g_eeGeneral.potsConfig = 0x07; // S1 = pot without detent, S2 = pot with detent #elif defined(PCBTARANIS) g_eeGeneral.potsConfig = 0x05; // S1 and S2 = pots with detent @@ -269,7 +269,7 @@ void generalDefault() #endif #if defined(PCBXLITE) - g_eeGeneral.switchConfig = 0x0000000f; // 2x3POS + g_eeGeneral.switchConfig = (SWITCH_2POS << 6) + (SWITCH_2POS << 4) + (SWITCH_3POS << 2) + (SWITCH_3POS << 0); // 2x3POS, 2x2POS #elif defined(PCBX7) g_eeGeneral.switchConfig = 0x000006ff; // 4x3POS, 1x2POS, 1xTOGGLE #elif defined(PCBTARANIS) || defined(PCBHORUS) @@ -1268,7 +1268,7 @@ void alert(const pm_char * title, const pm_char * msg ALERT_SOUND_ARG) bool refresh = false; #endif - while(1) { + while (1) { SIMU_SLEEP(1); #if defined(CPUARM) CoTickDelay(10); @@ -1283,6 +1283,7 @@ void alert(const pm_char * title, const pm_char * msg ALERT_SOUND_ARG) #if defined(PWR_BUTTON_PRESS) uint32_t pwr_check = pwrCheck(); if (pwr_check == e_power_off) { + drawSleepBitmap(); boardOff(); } else if (pwr_check == e_power_press) { @@ -1294,6 +1295,7 @@ void alert(const pm_char * title, const pm_char * msg ALERT_SOUND_ARG) } #else if (pwrCheck() == e_power_off) { + drawSleepBitmap(); boardOff(); // turn power off now } #endif diff --git a/radio/src/targets/common/arm/stm32/analog_adc_driver.cpp b/radio/src/targets/common/arm/stm32/analog_adc_driver.cpp index ce24b6736..a62113254 100644 --- a/radio/src/targets/common/arm/stm32/analog_adc_driver.cpp +++ b/radio/src/targets/common/arm/stm32/analog_adc_driver.cpp @@ -36,8 +36,10 @@ 9 /*TX_VOLTAGE*/ }; #elif defined(PCBX9DP) const int8_t ana_direction[NUM_ANALOGS] = {1,-1,1,-1, 1,1,-1, 1,1, 1}; -#elif defined(PCBX7) || defined(PCBXLITE) +#elif defined(PCBX7) const int8_t ana_direction[NUM_ANALOGS] = {-1,1,-1,1, 1,1, 1}; +#elif defined(PCBXLITE) + const int8_t ana_direction[NUM_ANALOGS] = {1,-1,-1,1, -1,1, 1}; #elif defined(REV4a) const int8_t ana_direction[NUM_ANALOGS] = {1,-1,1,-1, 1,-1,0, 1,1, 1}; #else @@ -103,14 +105,8 @@ void adcInit() ADC_MAIN->SQR2 = (ADC_CHANNEL_POT4<<0) + (ADC_CHANNEL_SLIDER3<<5) + (ADC_CHANNEL_SLIDER4<<10) + (ADC_CHANNEL_BATT<<15); // conversions 7 and more ADC_MAIN->SQR3 = (ADC_CHANNEL_STICK_LH<<0) + (ADC_CHANNEL_STICK_LV<<5) + (ADC_CHANNEL_STICK_RV<<10) + (ADC_CHANNEL_STICK_RH<<15) + (ADC_CHANNEL_POT2<<20) + (ADC_CHANNEL_POT3<<25); // conversions 1 to 6 #elif defined(PCBXLITE) - if (ANALOGS_PWM_ENABLED()) { - ADC_MAIN->SQR2 = 0; - ADC_MAIN->SQR3 = (ADC_CHANNEL_POT1<<25) + (ADC_CHANNEL_POT2<<20) + (ADC_CHANNEL_BATT<<0); - } - else { - ADC_MAIN->SQR2 = (ADC_CHANNEL_BATT<<0); // conversions 7 and more - ADC_MAIN->SQR3 = (ADC_CHANNEL_STICK_LH<<0) + (ADC_CHANNEL_STICK_LV<<5) + (ADC_CHANNEL_STICK_RV<<10) + (ADC_CHANNEL_STICK_RH<<15) + (ADC_CHANNEL_POT1<<25) + (ADC_CHANNEL_POT2<<20); // conversions 1 to 6 - } + ADC_MAIN->SQR2 = 0; + ADC_MAIN->SQR3 = (ADC_CHANNEL_POT1<<0) + (ADC_CHANNEL_POT2<<5) + (ADC_CHANNEL_BATT<<10); #elif defined(PCBX7) ADC_MAIN->SQR2 = (ADC_CHANNEL_BATT<<0); // conversions 7 and more ADC_MAIN->SQR3 = (ADC_CHANNEL_STICK_LH<<0) + (ADC_CHANNEL_STICK_LV<<5) + (ADC_CHANNEL_STICK_RV<<10) + (ADC_CHANNEL_STICK_RH<<15) + (ADC_CHANNEL_POT1<<25) + (ADC_CHANNEL_POT2<<20); // conversions 1 to 6 diff --git a/radio/src/targets/taranis/board.h b/radio/src/targets/taranis/board.h index 71b467282..a486d5477 100644 --- a/radio/src/targets/taranis/board.h +++ b/radio/src/targets/taranis/board.h @@ -430,8 +430,7 @@ enum Analogs { #if defined(PCBXLITE) #define NUM_PWMANALOGS 4 - extern uint8_t analogs_pwm_disabled; - #define ANALOGS_PWM_ENABLED() (analogs_pwm_disabled == false) + #define ANALOGS_PWM_ENABLED() (true) void analogPwmInit(void); void analogPwmRead(uint16_t * values); void analogPwmCheck(); diff --git a/radio/src/targets/taranis/hal.h b/radio/src/targets/taranis/hal.h index 5aef2e054..05d804c22 100644 --- a/radio/src/targets/taranis/hal.h +++ b/radio/src/targets/taranis/hal.h @@ -114,10 +114,10 @@ #define TRIMS_GPIO_PIN_LHL GPIO_Pin_4 // PC.04 #define TRIMS_GPIO_REG_LHR GPIOC->IDR #define TRIMS_GPIO_PIN_LHR GPIO_Pin_5 // PC.05 - #define TRIMS_GPIO_REG_LVD GPIOB->IDR - #define TRIMS_GPIO_PIN_LVD GPIO_Pin_0 // PB.00 #define TRIMS_GPIO_REG_LVU GPIOB->IDR - #define TRIMS_GPIO_PIN_LVU GPIO_Pin_1 // PB.01 + #define TRIMS_GPIO_PIN_LVU GPIO_Pin_0 // PB.00 + #define TRIMS_GPIO_REG_LVD GPIOB->IDR + #define TRIMS_GPIO_PIN_LVD GPIO_Pin_1 // PB.01 #elif defined(PCBX7) #define TRIMS_GPIO_REG_LHL GPIOD->IDR #define TRIMS_GPIO_PIN_LHL GPIO_Pin_15 // PD.15 @@ -480,13 +480,12 @@ #define ADC_GPIO_PIN_POT1 GPIO_Pin_1 // PC.01 #define ADC_GPIO_PIN_POT2 GPIO_Pin_2 // PC.02 #define ADC_GPIO_PIN_BATT GPIO_Pin_0 // PC.00 - #define STICKS_GPIOA_PINS (GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3) - #define PWM_GPIOA_PINS STICKS_GPIOA_PINS - #define ADC_GPIOA_PINS (ADC_GPIO_PIN_POT1 | (ANALOGS_PWM_ENABLED() ? 0 : STICKS_GPIOA_PINS)) - #define ADC_GPIOB_PINS ADC_GPIO_PIN_POT2 - #define ADC_GPIOC_PINS ADC_GPIO_PIN_BATT - #define ADC_CHANNEL_POT1 ADC_Channel_6 - #define ADC_CHANNEL_POT2 ADC_Channel_8 + #define PWM_GPIOA_PINS (GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3) + #define ADC_GPIOA_PINS 0 + #define ADC_GPIOB_PINS 0 + #define ADC_GPIOC_PINS (GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2) + #define ADC_CHANNEL_POT1 ADC_Channel_11 + #define ADC_CHANNEL_POT2 ADC_Channel_12 #define ADC_CHANNEL_BATT ADC_Channel_10 #elif defined(PCBX7) #define ADC_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_DMA2) @@ -558,14 +557,18 @@ #if defined(PCBXLITE) #define STATUS_LEDS + #define GPIO_LED_GPIO_ON GPIO_ResetBits + #define GPIO_LED_GPIO_OFF GPIO_SetBits + #define LED_BLUE_GPIO GPIOE + #define LED_BLUE_GPIO_PIN GPIO_Pin_4 // PE.04 + #define LED_RED_GPIO GPIOE + #define LED_RED_GPIO_PIN GPIO_Pin_6 // PE.06 #define LED_GREEN_GPIO GPIOE #define LED_GREEN_GPIO_PIN GPIO_Pin_5 // PE.05 - #define LED_RED_GPIO GPIOE - #define LED_RED_GPIO_PIN GPIO_Pin_4 // PE.04 - #define LED_BLUE_GPIO GPIOE - #define LED_BLUE_GPIO_PIN GPIO_Pin_6 // PE.06 #elif defined(PCBX7) #define STATUS_LEDS + #define GPIO_LED_GPIO_ON GPIO_SetBits + #define GPIO_LED_GPIO_OFF GPIO_ResetBits #define LED_GREEN_GPIO GPIOC #define LED_GREEN_GPIO_PIN GPIO_Pin_4 // PC.04 #define LED_RED_GPIO GPIOC diff --git a/radio/src/targets/taranis/led_driver.cpp b/radio/src/targets/taranis/led_driver.cpp index 2b5c2707b..c84d23a3c 100644 --- a/radio/src/targets/taranis/led_driver.cpp +++ b/radio/src/targets/taranis/led_driver.cpp @@ -39,25 +39,25 @@ void ledInit() void ledOff() { - GPIO_ResetBits(LED_RED_GPIO, LED_RED_GPIO_PIN); - GPIO_ResetBits(LED_BLUE_GPIO, LED_BLUE_GPIO_PIN); - GPIO_ResetBits(LED_GREEN_GPIO, LED_GREEN_GPIO_PIN); + GPIO_LED_GPIO_OFF(LED_RED_GPIO, LED_RED_GPIO_PIN); + GPIO_LED_GPIO_OFF(LED_BLUE_GPIO, LED_BLUE_GPIO_PIN); + GPIO_LED_GPIO_OFF(LED_GREEN_GPIO, LED_GREEN_GPIO_PIN); } void ledRed() { ledOff(); - GPIO_SetBits(LED_RED_GPIO, LED_RED_GPIO_PIN); + GPIO_LED_GPIO_ON(LED_RED_GPIO, LED_RED_GPIO_PIN); } void ledGreen() { ledOff(); - GPIO_SetBits(LED_GREEN_GPIO, LED_GREEN_GPIO_PIN); + GPIO_LED_GPIO_ON(LED_GREEN_GPIO, LED_GREEN_GPIO_PIN); } void ledBlue() { ledOff(); - GPIO_SetBits(LED_BLUE_GPIO, LED_BLUE_GPIO_PIN); + GPIO_LED_GPIO_ON(LED_BLUE_GPIO, LED_BLUE_GPIO_PIN); } diff --git a/radio/src/translations/en.h.txt b/radio/src/translations/en.h.txt index 18dc7a058..e1801269d 100644 --- a/radio/src/translations/en.h.txt +++ b/radio/src/translations/en.h.txt @@ -477,7 +477,7 @@ #define TR_SW_VSRCRAW "\312SA\0""\312SB\0""\312SC\0""\312SD\0""\312SE\0""\312SF\0""\312SG\0""\312SH\0""\312SI\0""\312SJ\0""\312SK\0""\312SL\0""\312SM\0""\312SN\0""\312SO\0""\312SP\0""\312SQ\0""\312SR\0" #elif defined(PCBXLITE) #define TR_POTS_VSRCRAW "\310S1\0""\310S2\0" - #define TR_SW_VSRCRAW "\312SA\0""\312SB\0" + #define TR_SW_VSRCRAW "\312SA\0""\312SB\0""\312SC\0""\312SD\0" #elif defined(PCBX7) #define TR_POTS_VSRCRAW "\310S1\0""\310S2\0" #define TR_SW_VSRCRAW "\312SA\0""\312SB\0""\312SC\0""\312SD\0""\312SF\0""\312SH\0"