From 50c23fa394b1575db798b6e4163cede0005f4835 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Fri, 5 Jul 2019 17:21:36 +0200 Subject: [PATCH] Move RTC again to RADIO/HARDWARE --- radio/src/gui/128x64/CMakeLists.txt | 1 - radio/src/gui/128x64/view_statistics.cpp | 6 - radio/src/gui/212x64/CMakeLists.txt | 1 - radio/src/gui/212x64/radio_hardware.cpp | 252 ------------------ radio/src/gui/212x64/view_statistics.cpp | 6 - radio/src/gui/common/stdlcd/CMakeLists.txt | 1 + .../stdlcd}/radio_hardware.cpp | 216 ++++++++++++--- .../src/gui/common/stdlcd/radio_sdmanager.cpp | 2 +- radio/src/opentx.cpp | 9 +- .../targets/common/arm/stm32/adc_driver.cpp | 2 +- .../targets/common/arm/stm32/board_common.h | 5 + radio/src/targets/horus/adc_driver.cpp | 2 +- radio/src/targets/sky9x/CMakeLists.txt | 1 - radio/src/targets/taranis/CMakeLists.txt | 1 - radio/src/targets/taranis/board.h | 28 +- radio/src/targets/taranis/hal.h | 18 +- 16 files changed, 234 insertions(+), 317 deletions(-) delete mode 100644 radio/src/gui/212x64/radio_hardware.cpp rename radio/src/gui/{128x64 => common/stdlcd}/radio_hardware.cpp (65%) diff --git a/radio/src/gui/128x64/CMakeLists.txt b/radio/src/gui/128x64/CMakeLists.txt index 9b60f7158..5773629a1 100644 --- a/radio/src/gui/128x64/CMakeLists.txt +++ b/radio/src/gui/128x64/CMakeLists.txt @@ -16,7 +16,6 @@ set(GUI_SRC model_telemetry_sensor.cpp menu_radio.cpp radio_setup.cpp - radio_hardware.cpp radio_calibration.cpp view_main.cpp view_statistics.cpp diff --git a/radio/src/gui/128x64/view_statistics.cpp b/radio/src/gui/128x64/view_statistics.cpp index 7a62401e6..9e210af92 100644 --- a/radio/src/gui/128x64/view_statistics.cpp +++ b/radio/src/gui/128x64/view_statistics.cpp @@ -250,12 +250,6 @@ void menuStatisticsDebug(event_t event) y += FH; #endif -#if defined(STM32) - lcdDrawTextAlignedLeft(y, STR_RTC_BATT); - putsVolts(MENU_DEBUG_COL1_OFS, y, getRTCBatteryVoltage(), PREC2|LEFT); - y += FH; -#endif - lcdDrawText(LCD_W/2, 7*FH+1, STR_MENUTORESET, CENTERED); lcdInvertLastLine(); } diff --git a/radio/src/gui/212x64/CMakeLists.txt b/radio/src/gui/212x64/CMakeLists.txt index 9b60f7158..5773629a1 100644 --- a/radio/src/gui/212x64/CMakeLists.txt +++ b/radio/src/gui/212x64/CMakeLists.txt @@ -16,7 +16,6 @@ set(GUI_SRC model_telemetry_sensor.cpp menu_radio.cpp radio_setup.cpp - radio_hardware.cpp radio_calibration.cpp view_main.cpp view_statistics.cpp diff --git a/radio/src/gui/212x64/radio_hardware.cpp b/radio/src/gui/212x64/radio_hardware.cpp deleted file mode 100644 index 98e1e3af6..000000000 --- a/radio/src/gui/212x64/radio_hardware.cpp +++ /dev/null @@ -1,252 +0,0 @@ -/* - * Copyright (C) OpenTX - * - * Based on code named - * th9x - http://code.google.com/p/th9x - * er9x - http://code.google.com/p/er9x - * gruvin9x - http://code.google.com/p/gruvin9x - * - * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - */ - -#include "opentx.h" - -enum { - ITEM_RADIO_HARDWARE_LABEL_STICKS, - ITEM_RADIO_HARDWARE_STICK1, - ITEM_RADIO_HARDWARE_STICK2, - ITEM_RADIO_HARDWARE_STICK3, - ITEM_RADIO_HARDWARE_STICK4, - ITEM_RADIO_HARDWARE_LABEL_POTS, - ITEM_RADIO_HARDWARE_POT1, - ITEM_RADIO_HARDWARE_POT2, - CASE_PCBX9E_PCBX9DP(ITEM_RADIO_HARDWARE_POT3) - CASE_PCBX9E(ITEM_RADIO_HARDWARE_POT4) - ITEM_RADIO_HARDWARE_LS, - ITEM_RADIO_HARDWARE_RS, - CASE_PCBX9E(ITEM_RADIO_HARDWARE_LS2) - CASE_PCBX9E(ITEM_RADIO_HARDWARE_RS2) - ITEM_RADIO_HARDWARE_LABEL_SWITCHES, - ITEM_RADIO_HARDWARE_SA, - ITEM_RADIO_HARDWARE_SB, - ITEM_RADIO_HARDWARE_SC, - ITEM_RADIO_HARDWARE_SD, - ITEM_RADIO_HARDWARE_SE, - ITEM_RADIO_HARDWARE_SF, - ITEM_RADIO_HARDWARE_SG, - ITEM_RADIO_HARDWARE_SH, - CASE_PCBX9E(ITEM_RADIO_HARDWARE_SI) - CASE_PCBX9E(ITEM_RADIO_HARDWARE_SJ) - CASE_PCBX9E(ITEM_RADIO_HARDWARE_SK) - CASE_PCBX9E(ITEM_RADIO_HARDWARE_SL) - CASE_PCBX9E(ITEM_RADIO_HARDWARE_SM) - CASE_PCBX9E(ITEM_RADIO_HARDWARE_SN) - CASE_PCBX9E(ITEM_RADIO_HARDWARE_SO) - CASE_PCBX9E(ITEM_RADIO_HARDWARE_SP) - CASE_PCBX9E(ITEM_RADIO_HARDWARE_SQ) - CASE_PCBX9E(ITEM_RADIO_HARDWARE_SR) - CASE_BLUETOOTH(ITEM_RADIO_HARDWARE_BLUETOOTH_MODE) -#if defined(AUX_SERIAL) - ITEM_RADIO_HARDWARE_AUX_SERIAL_MODE, -#endif - ITEM_RADIO_HARDWARE_JITTER_FILTER, - ITEM_RADIO_HARDWARE_DEBUG, - ITEM_RADIO_HARDWARE_MAX -}; - -#if defined(AUX_SERIAL) - #define AUX_SERIAL_ROWS 0, -#else - #define AUX_SERIAL_ROWS -#endif - -#define HW_SETTINGS_COLUMN 15*FW - -#if defined(PCBX9E) - #define POTS_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, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1 -#elif defined(PCBX9DP) - #define POTS_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 -#else - #define POTS_ROWS NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1 -#endif - -#if defined(PCBX9E) - #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, 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, 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, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1 -#endif - -#if defined(BLUETOOTH) -#define BLUETOOTH_ROWS (uint8_t)0, -#else -#define BLUETOOTH_ROWS -#endif - -#define SWITCH_TYPE_MAX(sw) ((MIXSRC_SF-MIXSRC_FIRST_SWITCH == sw || MIXSRC_SH-MIXSRC_FIRST_SWITCH == sw) ? SWITCH_2POS : SWITCH_3POS) - - -void menuRadioHardware(event_t event) -{ - MENU(STR_HARDWARE, menuTabGeneral, MENU_RADIO_HARDWARE, ITEM_RADIO_HARDWARE_MAX, { 0, 0, 0, 0, 0, LABEL(Pots), POTS_ROWS, LABEL(Switches), SWITCHES_ROWS, BLUETOOTH_ROWS AUX_SERIAL_ROWS 1 }); - - uint8_t sub = menuVerticalPosition; - - for (int i=0; i0) ? BLINK|INVERS : INVERS) : 0); - switch (k) { - case ITEM_RADIO_HARDWARE_LABEL_STICKS: - lcdDrawTextAlignedLeft(y, STR_STICKS); - lcdDrawText(HW_SETTINGS_COLUMN, y, BUTTON(TR_CALIBRATION), attr); - if (attr && event == EVT_KEY_FIRST(KEY_ENTER)) { - pushMenu(menuRadioCalibration); - } - break; - case ITEM_RADIO_HARDWARE_STICK1: - case ITEM_RADIO_HARDWARE_STICK2: - case ITEM_RADIO_HARDWARE_STICK3: - case ITEM_RADIO_HARDWARE_STICK4: - editStickHardwareSettings(HW_SETTINGS_COLUMN, y, k - ITEM_RADIO_HARDWARE_STICK1, event, attr); - break; - - case ITEM_RADIO_HARDWARE_LS: - case ITEM_RADIO_HARDWARE_RS: -#if defined(PCBX9E) - case ITEM_RADIO_HARDWARE_LS2: - case ITEM_RADIO_HARDWARE_RS2: -#endif - { - int idx = k - ITEM_RADIO_HARDWARE_LS; - lcdDrawTextAtIndex(INDENT_WIDTH, y, STR_VSRCRAW, NUM_STICKS+NUM_POTS+idx+1, menuHorizontalPosition < 0 ? attr : 0); - if (ZEXIST(g_eeGeneral.anaNames[NUM_STICKS+NUM_POTS+idx]) || (attr && menuHorizontalPosition == 0 && s_editMode > 0)) - editName(HW_SETTINGS_COLUMN, y, g_eeGeneral.anaNames[NUM_STICKS+NUM_POTS+idx], LEN_ANA_NAME, event, attr && menuHorizontalPosition == 0); - else - lcdDrawMMM(HW_SETTINGS_COLUMN, y, menuHorizontalPosition == 0 ? attr : 0); - uint8_t mask = (0x01 << idx); - uint8_t potType = (g_eeGeneral.slidersConfig & mask) >> idx; - potType = editChoice(HW_SETTINGS_COLUMN+5*FW, y, "", STR_SLIDERTYPES, potType, SLIDER_NONE, SLIDER_WITH_DETENT, menuHorizontalPosition == 1 ? attr : 0, event); - g_eeGeneral.slidersConfig &= ~mask; - g_eeGeneral.slidersConfig |= (potType << idx); - break; - } - - case ITEM_RADIO_HARDWARE_LABEL_POTS: - lcdDrawTextAlignedLeft(y, STR_POTS); - break; - case ITEM_RADIO_HARDWARE_POT1: - case ITEM_RADIO_HARDWARE_POT2: -#if defined(PCBX9DP) || defined(PCBX9E) - case ITEM_RADIO_HARDWARE_POT3: -#endif -#if defined(PCBX9E) - case ITEM_RADIO_HARDWARE_POT4: -#endif - { - int idx = k - ITEM_RADIO_HARDWARE_POT1; - uint8_t shift = (2*idx); - uint8_t mask = (0x03 << shift); - lcdDrawTextAtIndex(INDENT_WIDTH, y, STR_VSRCRAW, NUM_STICKS+idx+1, menuHorizontalPosition < 0 ? attr : 0); - if (ZEXIST(g_eeGeneral.anaNames[NUM_STICKS+idx]) || (attr && menuHorizontalPosition == 0 && s_editMode > 0)) - editName(HW_SETTINGS_COLUMN, y, g_eeGeneral.anaNames[NUM_STICKS+idx], LEN_ANA_NAME, event, attr && menuHorizontalPosition == 0); - else - lcdDrawMMM(HW_SETTINGS_COLUMN, y, menuHorizontalPosition == 0 ? attr : 0); - uint8_t potType = (g_eeGeneral.potsConfig & mask) >> shift; - potType = editChoice(HW_SETTINGS_COLUMN+5*FW, y, "", STR_POTTYPES, potType, POT_NONE, POT_WITHOUT_DETENT, menuHorizontalPosition == 1 ? attr : 0, event); - g_eeGeneral.potsConfig &= ~mask; - g_eeGeneral.potsConfig |= (potType << shift); - break; - } - - case ITEM_RADIO_HARDWARE_LABEL_SWITCHES: - lcdDrawTextAlignedLeft(y, STR_SWITCHES); - break; - case ITEM_RADIO_HARDWARE_SA: - case ITEM_RADIO_HARDWARE_SB: - case ITEM_RADIO_HARDWARE_SC: - case ITEM_RADIO_HARDWARE_SD: - case ITEM_RADIO_HARDWARE_SE: - case ITEM_RADIO_HARDWARE_SF: - case ITEM_RADIO_HARDWARE_SG: - case ITEM_RADIO_HARDWARE_SH: -#if defined(PCBX9E) - case ITEM_RADIO_HARDWARE_SI: - case ITEM_RADIO_HARDWARE_SJ: - case ITEM_RADIO_HARDWARE_SK: - case ITEM_RADIO_HARDWARE_SL: - case ITEM_RADIO_HARDWARE_SM: - case ITEM_RADIO_HARDWARE_SN: - case ITEM_RADIO_HARDWARE_SO: - case ITEM_RADIO_HARDWARE_SP: - case ITEM_RADIO_HARDWARE_SQ: - case ITEM_RADIO_HARDWARE_SR: -#endif - { - int index = k-ITEM_RADIO_HARDWARE_SA; - int config = SWITCH_CONFIG(index); - lcdDrawTextAtIndex(INDENT_WIDTH, y, STR_VSRCRAW, MIXSRC_FIRST_SWITCH-MIXSRC_Rud+index+1, menuHorizontalPosition < 0 ? attr : 0); - if (ZEXIST(g_eeGeneral.switchNames[index]) || (attr && menuHorizontalPosition == 0 && s_editMode > 0)) - editName(HW_SETTINGS_COLUMN, y, g_eeGeneral.switchNames[index], LEN_SWITCH_NAME, event, menuHorizontalPosition == 0 ? attr : 0); - else - lcdDrawMMM(HW_SETTINGS_COLUMN, y, menuHorizontalPosition == 0 ? attr : 0); - config = editChoice(HW_SETTINGS_COLUMN+5*FW, y, "", STR_SWTYPES, config, SWITCH_NONE, SWITCH_TYPE_MAX(index), menuHorizontalPosition == 1 ? attr : 0, event); - if (attr && checkIncDec_Ret) { - g_eeGeneral.switchConfig = bfSet(g_eeGeneral.switchConfig, config, 2*index, 2); - } - break; - } - -#if defined(BLUETOOTH) - case ITEM_RADIO_HARDWARE_BLUETOOTH_MODE: - lcdDrawText(INDENT_WIDTH, y, STR_BLUETOOTH); - lcdDrawTextAtIndex(HW_SETTINGS_COLUMN, y, STR_BLUETOOTH_MODES, g_eeGeneral.bluetoothMode, attr); - if (attr) { - g_eeGeneral.bluetoothMode = checkIncDecGen(event, g_eeGeneral.bluetoothMode, BLUETOOTH_OFF, BLUETOOTH_TELEMETRY); - } - break; -#endif - -#if defined(AUX_SERIAL) - case ITEM_RADIO_HARDWARE_AUX_SERIAL_MODE: - g_eeGeneral.auxSerialMode = editChoice(HW_SETTINGS_COLUMN, y, STR_AUX_SERIAL_MODE, STR_AUX_SERIAL_MODES, g_eeGeneral.auxSerialMode, 0, UART_MODE_MAX, attr, event); - if (attr && checkIncDec_Ret) { - auxSerialInit(g_eeGeneral.auxSerialMode, modelTelemetryProtocol()); - } - break; -#endif - - case ITEM_RADIO_HARDWARE_JITTER_FILTER: - { - uint8_t b = 1-g_eeGeneral.jitterFilter; - g_eeGeneral.jitterFilter = 1 - editCheckBox(b, HW_SETTINGS_COLUMN, y, STR_JITTER_FILTER, attr, event); - break; - } - - case ITEM_RADIO_HARDWARE_DEBUG: - lcdDrawTextAlignedLeft(y, STR_DEBUG); - lcdDrawText(HW_SETTINGS_COLUMN - , y, STR_ANALOGS_BTN, menuHorizontalPosition == 0 ? attr : 0); - lcdDrawText(lcdLastRightPos + 2, y, STR_KEYS_BTN, menuHorizontalPosition == 1 ? attr : 0); - if (attr && event == EVT_KEY_FIRST(KEY_ENTER)) { - if (menuHorizontalPosition == 0) - pushMenu(menuRadioDiagAnalogs); - else - pushMenu(menuRadioDiagKeys); - } - break; - } - } -} diff --git a/radio/src/gui/212x64/view_statistics.cpp b/radio/src/gui/212x64/view_statistics.cpp index af6a4d697..263e54c9b 100644 --- a/radio/src/gui/212x64/view_statistics.cpp +++ b/radio/src/gui/212x64/view_statistics.cpp @@ -220,12 +220,6 @@ void menuStatisticsDebug(event_t event) y += FH; #endif -#if defined(STM32) - lcdDrawTextAlignedLeft(y, STR_RTC_BATT); - putsVolts(MENU_DEBUG_COL1_OFS, y, getRTCBatteryVoltage(), PREC2|LEFT); - y += FH; -#endif - lcdDrawText(LCD_W/2, 7*FH+1, STR_MENUTORESET, CENTERED); lcdInvertLastLine(); } diff --git a/radio/src/gui/common/stdlcd/CMakeLists.txt b/radio/src/gui/common/stdlcd/CMakeLists.txt index 7918bb6d7..fddacafed 100644 --- a/radio/src/gui/common/stdlcd/CMakeLists.txt +++ b/radio/src/gui/common/stdlcd/CMakeLists.txt @@ -13,6 +13,7 @@ set(GUI_SRC ../common/stdlcd/model_notes.cpp ../common/stdlcd/model_curves.cpp ../common/stdlcd/radio_tools.cpp + ../common/stdlcd/radio_hardware.cpp ../common/stdlcd/radio_version.cpp ../common/stdlcd/radio_trainer.cpp model_curve_edit.cpp diff --git a/radio/src/gui/128x64/radio_hardware.cpp b/radio/src/gui/common/stdlcd/radio_hardware.cpp similarity index 65% rename from radio/src/gui/128x64/radio_hardware.cpp rename to radio/src/gui/common/stdlcd/radio_hardware.cpp index dada28aa0..c068d5cc6 100644 --- a/radio/src/gui/128x64/radio_hardware.cpp +++ b/radio/src/gui/common/stdlcd/radio_hardware.cpp @@ -96,31 +96,71 @@ enum { ITEM_RADIO_HARDWARE_STICK4, ITEM_RADIO_HARDWARE_LABEL_POTS, ITEM_RADIO_HARDWARE_POT1, -#if !defined(PCBX9LITE) +#if defined(HARDWARE_POT2) ITEM_RADIO_HARDWARE_POT2, +#endif +#if defined(HARDWARE_POT3) + ITEM_RADIO_HARDWARE_POT3, +#endif +#if defined(HARDWARE_POT4) + ITEM_RADIO_HARDWARE_POT4, +#endif +#if NUM_SLIDERS > 0 + ITEM_RADIO_HARDWARE_SLIDER1, + ITEM_RADIO_HARDWARE_SLIDER2, +#endif +#if NUM_SLIDERS > 2 + ITEM_RADIO_HARDWARE_SLIDER3, + ITEM_RADIO_HARDWARE_SLIDER4, #endif ITEM_RADIO_HARDWARE_LABEL_SWITCHES, ITEM_RADIO_HARDWARE_SA, ITEM_RADIO_HARDWARE_SB, ITEM_RADIO_HARDWARE_SC, ITEM_RADIO_HARDWARE_SD, -#if NUM_SWITCHES >= 5 +#if defined(HARDWARE_SWITCH_E) + ITEM_RADIO_HARDWARE_SE, +#endif +#if defined(HARDWARE_SWITCH_F) ITEM_RADIO_HARDWARE_SF, #endif -#if NUM_SWITCHES >= 6 +#if defined(HARDWARE_SWITCH_G) + ITEM_RADIO_HARDWARE_SG, +#endif +#if defined(HARDWARE_SWITCH_H) ITEM_RADIO_HARDWARE_SH, #endif -#if NUM_SWITCHES >= 8 +#if defined(HARDWARE_SWITCH_I) ITEM_RADIO_HARDWARE_SI, +#endif +#if defined(HARDWARE_SWITCH_J) ITEM_RADIO_HARDWARE_SJ, #endif +#if defined(HARDWARE_SWITCH_K) + ITEM_RADIO_HARDWARE_SK, + ITEM_RADIO_HARDWARE_SL, + ITEM_RADIO_HARDWARE_SM, + ITEM_RADIO_HARDWARE_SN, + ITEM_RADIO_HARDWARE_SO, + ITEM_RADIO_HARDWARE_SP, + ITEM_RADIO_HARDWARE_SQ, + ITEM_RADIO_HARDWARE_SR, +#endif + ITEM_RADIO_HARDWARE_BATTERY_CALIB, + +#if defined(STM32) + ITEM_RADIO_HARDWARE_RTC_BATTERY, +#endif + #if defined(TX_CAPACITY_MEASUREMENT) ITEM_RADIO_HARDWARE_CAPACITY_CALIB, #endif + #if defined(CROSSFIRE) && SPORT_MAX_BAUDRATE < 400000 ITEM_RADIO_HARDWARE_SERIAL_BAUDRATE, #endif + #if defined(BLUETOOTH) ITEM_RADIO_HARDWARE_BLUETOOTH_MODE, ITEM_RADIO_HARDWARE_BLUETOOTH_PAIRING_CODE, @@ -128,40 +168,55 @@ enum { ITEM_RADIO_HARDWARE_BLUETOOTH_DISTANT_ADDR, ITEM_RADIO_HARDWARE_BLUETOOTH_NAME, #endif + +#if defined(AUX_SERIAL) + ITEM_RADIO_HARDWARE_AUX_SERIAL_MODE, +#endif + ITEM_RADIO_HARDWARE_JITTER_FILTER, ITEM_RADIO_HARDWARE_RAS, ITEM_RADIO_HARDWARE_DEBUG, ITEM_RADIO_HARDWARE_MAX }; -#if defined(PCBX9LITE) -#define POTS_ROWS NAVIGATION_LINE_BY_LINE|1 -#else -#define POTS_ROWS NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1 +#if (NUM_POTS + NUM_SLIDERS) == 1 + #define POTS_ROWS NAVIGATION_LINE_BY_LINE|1 +#elif (NUM_POTS + NUM_SLIDERS) == 2 + #define POTS_ROWS NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1 +#elif (NUM_POTS + NUM_SLIDERS) == 3 + #define POTS_ROWS NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1 +#elif (NUM_POTS + NUM_SLIDERS) == 4 + #define POTS_ROWS NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1 +#elif (NUM_POTS + NUM_SLIDERS) == 5 + #define POTS_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 +#elif (NUM_POTS + NUM_SLIDERS) == 8 + #define POTS_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, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1 #endif -#if NUM_SWITCHES == 8 -#if defined(RADIO_T12) -#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, NAVIGATION_LINE_BY_LINE|HIDDEN_ROW, NAVIGATION_LINE_BY_LINE|HIDDEN_ROW -#else -#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, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1 -#endif +#if defined(PCBX9E) + #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, 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, 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 +#elif defined(RADIO_T12) + #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, NAVIGATION_LINE_BY_LINE|HIDDEN_ROW, NAVIGATION_LINE_BY_LINE|HIDDEN_ROW +#elif NUM_SWITCHES == 9 + #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, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1 +#elif NUM_SWITCHES == 8 + #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, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1 #elif NUM_SWITCHES == 6 -#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 + #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 #elif NUM_SWITCHES == 5 -#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 + #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 #elif 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 + #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(PCBX9LITE) +#if !defined(BLUETOOTH) #define BLUETOOTH_ROWS -#elif defined(PCBTARANIS) - #define BLUETOOTH_ROWS uint8_t(IS_BLUETOOTH_CHIP_PRESENT() ? 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) +#elif defined(PCBX9E) + #define BLUETOOTH_ROWS +#elif defined(PCBSKY9X) #define BLUETOOTH_ROWS 0, uint8_t(g_eeGeneral.bluetoothMode == BLUETOOTH_OFF ? HIDDEN_ROW : READONLY_ROW), uint8_t(g_eeGeneral.bluetoothMode == BLUETOOTH_OFF ? HIDDEN_ROW : READONLY_ROW), uint8_t(g_eeGeneral.bluetoothMode == BLUETOOTH_OFF ? HIDDEN_ROW : 0), #else - #define BLUETOOTH_ROWS + #define BLUETOOTH_ROWS uint8_t(IS_BLUETOOTH_CHIP_PRESENT() ? 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), #endif #if defined(PCBX9LITE) @@ -170,8 +225,16 @@ enum { #define SWITCH_TYPE_MAX(sw) (sw >= MIXSRC_SE-MIXSRC_FIRST_SWITCH ? SWITCH_2POS : SWITCH_3POS) #elif defined(PCBXLITE) #define SWITCH_TYPE_MAX(sw) (SWITCH_3POS) +#elif defined(PCBX9E) + #define SWITCH_TYPE_MAX(sw) ((MIXSRC_SF - MIXSRC_FIRST_SWITCH == sw || MIXSRC_SH - 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 || MIXSRC_SI-MIXSRC_FIRST_SWITCH == sw || MIXSRC_SJ-MIXSRC_FIRST_SWITCH == sw) ? SWITCH_2POS : SWITCH_3POS) + #define SWITCH_TYPE_MAX(sw) ((MIXSRC_SF - MIXSRC_FIRST_SWITCH == sw || MIXSRC_SH - MIXSRC_FIRST_SWITCH <= sw) ? SWITCH_2POS : SWITCH_3POS) +#endif + +#if defined(STM32) + #define RTC_ROW READONLY_ROW, +#else + #define RTC_ROW #endif #if defined(TX_CAPACITY_MEASUREMENT) @@ -186,8 +249,19 @@ enum { #define MAX_BAUD_ROWS #endif -#define HW_SETTINGS_COLUMN1 30 -#define HW_SETTINGS_COLUMN2 (30 + 5*FW) +#if defined(AUX_SERIAL) + #define AUX_SERIAL_ROWS 0, +#else + #define AUX_SERIAL_ROWS +#endif + +#if LCD_W >= 212 + #define HW_SETTINGS_COLUMN1 12*FW + #define HW_SETTINGS_COLUMN2 (HW_SETTINGS_COLUMN1 + 6*FW) +#else + #define HW_SETTINGS_COLUMN1 30 + #define HW_SETTINGS_COLUMN2 (HW_SETTINGS_COLUMN1 + 5*FW) +#endif void menuRadioHardware(event_t event) { @@ -202,16 +276,21 @@ void menuRadioHardware(event_t event) POTS_ROWS, LABEL(Switches), SWITCHES_ROWS, - 0 /* battery calib */, + 0 /* battery calib */, + RTC_ROW TX_CAPACITY_MEASUREMENT_ROWS MAX_BAUD_ROWS BLUETOOTH_ROWS - 0 /* jitter filter */, - READONLY_ROW, - 1 /* debugs */, + + AUX_SERIAL_ROWS + + 0 /* ADC filter */, + READONLY_ROW /* RAS */, + + 1 /* debugs */ }); uint8_t sub = menuVerticalPosition - HEADER_LINE; @@ -219,6 +298,7 @@ void menuRadioHardware(event_t event) #if defined(BLUETOOTH) if (g_eeGeneral.bluetoothMode != BLUETOOTH_OFF && !IS_BLUETOOTH_CHIP_PRESENT()) { g_eeGeneral.bluetoothMode = BLUETOOTH_OFF; + storageDirty(EE_GENERAL); } #endif @@ -230,8 +310,8 @@ void menuRadioHardware(event_t event) k++; } } - uint8_t blink = ((s_editMode>0) ? BLINK|INVERS : INVERS); - uint8_t attr = (sub == k ? blink : 0); + LcdFlags blink = ((s_editMode>0) ? BLINK|INVERS : INVERS); + LcdFlags attr = (sub == k ? blink : 0); switch(k) { case ITEM_RADIO_HARDWARE_LABEL_STICKS: @@ -241,6 +321,7 @@ void menuRadioHardware(event_t event) pushMenu(menuRadioCalibration); } break; + case ITEM_RADIO_HARDWARE_STICK1: case ITEM_RADIO_HARDWARE_STICK2: case ITEM_RADIO_HARDWARE_STICK3: @@ -253,8 +334,14 @@ void menuRadioHardware(event_t event) break; case ITEM_RADIO_HARDWARE_POT1: -#if !defined(PCBX9LITE) +#if defined(HARDWARE_POT2) case ITEM_RADIO_HARDWARE_POT2: +#endif +#if defined(HARDWARE_POT3) + case ITEM_RADIO_HARDWARE_POT3: +#endif +#if defined(HARDWARE_POT4) + case ITEM_RADIO_HARDWARE_POT4: #endif { int idx = k - ITEM_RADIO_HARDWARE_POT1; @@ -272,6 +359,29 @@ void menuRadioHardware(event_t event) break; } +#if NUM_SLIDERS > 0 + case ITEM_RADIO_HARDWARE_SLIDER1: + case ITEM_RADIO_HARDWARE_SLIDER2: +#if NUM_SLIDERS > 2 + case ITEM_RADIO_HARDWARE_SLIDER3: + case ITEM_RADIO_HARDWARE_SLIDER4: +#endif + { + int idx = k - ITEM_RADIO_HARDWARE_SLIDER1; + lcdDrawTextAtIndex(INDENT_WIDTH, y, STR_VSRCRAW, NUM_STICKS+NUM_POTS+idx+1, menuHorizontalPosition < 0 ? attr : 0); + if (ZEXIST(g_eeGeneral.anaNames[NUM_STICKS+NUM_POTS+idx]) || (attr && menuHorizontalPosition == 0 && s_editMode > 0)) + editName(HW_SETTINGS_COLUMN1, y, g_eeGeneral.anaNames[NUM_STICKS+NUM_POTS+idx], LEN_ANA_NAME, event, attr && menuHorizontalPosition == 0); + else + lcdDrawMMM(HW_SETTINGS_COLUMN1, y, menuHorizontalPosition == 0 ? attr : 0); + uint8_t mask = (0x01 << idx); + uint8_t potType = (g_eeGeneral.slidersConfig & mask) >> idx; + potType = editChoice(HW_SETTINGS_COLUMN2, y, "", STR_SLIDERTYPES, potType, SLIDER_NONE, SLIDER_WITH_DETENT, menuHorizontalPosition == 1 ? attr : 0, event); + g_eeGeneral.slidersConfig &= ~mask; + g_eeGeneral.slidersConfig |= (potType << idx); + break; + } +#endif + case ITEM_RADIO_HARDWARE_LABEL_SWITCHES: lcdDrawTextAlignedLeft(y, STR_SWITCHES); break; @@ -280,18 +390,36 @@ void menuRadioHardware(event_t event) case ITEM_RADIO_HARDWARE_SB: case ITEM_RADIO_HARDWARE_SC: case ITEM_RADIO_HARDWARE_SD: -#if NUM_SWITCHES >= 5 +#if defined(HARDWARE_SWITCH_E) + case ITEM_RADIO_HARDWARE_SE: +#endif +#if defined(HARDWARE_SWITCH_F) case ITEM_RADIO_HARDWARE_SF: #endif -#if NUM_SWITCHES >= 6 +#if defined(HARDWARE_SWITCH_G) + case ITEM_RADIO_HARDWARE_SG: +#endif +#if defined(HARDWARE_SWITCH_H) case ITEM_RADIO_HARDWARE_SH: #endif -#if NUM_SWITCHES >= 8 +#if defined(HARDWARE_SWITCH_I) case ITEM_RADIO_HARDWARE_SI: +#endif +#if defined(HARDWARE_SWITCH_J) case ITEM_RADIO_HARDWARE_SJ: +#endif +#if defined(HARDWARE_SWITCH_K) + case ITEM_RADIO_HARDWARE_SK: + case ITEM_RADIO_HARDWARE_SL: + case ITEM_RADIO_HARDWARE_SM: + case ITEM_RADIO_HARDWARE_SN: + case ITEM_RADIO_HARDWARE_SO: + case ITEM_RADIO_HARDWARE_SP: + case ITEM_RADIO_HARDWARE_SQ: + case ITEM_RADIO_HARDWARE_SR: #endif { - int index = k-ITEM_RADIO_HARDWARE_SA; + int index = k - ITEM_RADIO_HARDWARE_SA; int config = SWITCH_CONFIG(index); lcdDrawTextAtIndex(INDENT_WIDTH, y, STR_VSRCRAW, MIXSRC_FIRST_SWITCH-MIXSRC_Rud+index+1, menuHorizontalPosition < 0 ? attr : 0); if (ZEXIST(g_eeGeneral.switchNames[index]) || (attr && s_editMode > 0 && menuHorizontalPosition == 0)) @@ -327,6 +455,13 @@ void menuRadioHardware(event_t event) } break; +#if defined(STM32) + case ITEM_RADIO_HARDWARE_RTC_BATTERY: + lcdDrawTextAlignedLeft(y, STR_RTC_BATT); + putsVolts(HW_SETTINGS_COLUMN2, y, getRTCBatteryVoltage(), PREC2|LEFT); + break; +#endif + #if defined(TX_CAPACITY_MEASUREMENT) case ITEM_RADIO_HARDWARE_CAPACITY_CALIB: lcdDrawTextAlignedLeft(y, STR_CURRENT_CALIB); @@ -387,6 +522,15 @@ void menuRadioHardware(event_t event) break; #endif +#if defined(AUX_SERIAL) + case ITEM_RADIO_HARDWARE_AUX_SERIAL_MODE: + g_eeGeneral.auxSerialMode = editChoice(HW_SETTINGS_COLUMN2, y, STR_AUX_SERIAL_MODE, STR_AUX_SERIAL_MODES, g_eeGeneral.auxSerialMode, 0, UART_MODE_MAX, attr, event); + if (attr && checkIncDec_Ret) { + auxSerialInit(g_eeGeneral.auxSerialMode, modelTelemetryProtocol()); + } + break; +#endif + case ITEM_RADIO_HARDWARE_JITTER_FILTER: g_eeGeneral.jitterFilter = 1 - editCheckBox(1 - g_eeGeneral.jitterFilter, HW_SETTINGS_COLUMN2, y, STR_JITTER_FILTER, attr, event); break; diff --git a/radio/src/gui/common/stdlcd/radio_sdmanager.cpp b/radio/src/gui/common/stdlcd/radio_sdmanager.cpp index 5a2bbd1fe..1c191395f 100644 --- a/radio/src/gui/common/stdlcd/radio_sdmanager.cpp +++ b/radio/src/gui/common/stdlcd/radio_sdmanager.cpp @@ -291,7 +291,7 @@ void menuRadioSdManager(event_t _event) menuVerticalOffset = reusableBuffer.sdManager.offset; break; -#if defined(KEYS_GPIO_REG_MENU) +#if defined(PCBX9) || defined(PCBX7) // TODO NO_MENU_KEY case EVT_KEY_LONG(KEY_MENU): if (SD_CARD_PRESENT() && !READ_ONLY() && s_editMode == 0) { killEvents(_event); diff --git a/radio/src/opentx.cpp b/radio/src/opentx.cpp index a0c0d45d4..dcae492a8 100644 --- a/radio/src/opentx.cpp +++ b/radio/src/opentx.cpp @@ -846,11 +846,12 @@ void checkSDVersion() #if defined(STM32) static void checkRTCBattery() { - if (getRTCBatteryVoltage() < 200) { - ALERT("BATTERY", STR_WARN_RTC_BATTERY_LOW, AU_ERROR); + if (isVBatBridgeEnabled()) { + if (getRTCBatteryVoltage() < 200) { + ALERT("BATTERY", STR_WARN_RTC_BATTERY_LOW, AU_ERROR); + } + disableVBatBridge(); } - - disableVBatBridge(); } #endif diff --git a/radio/src/targets/common/arm/stm32/adc_driver.cpp b/radio/src/targets/common/arm/stm32/adc_driver.cpp index 73a5d7567..dc08ae7b7 100644 --- a/radio/src/targets/common/arm/stm32/adc_driver.cpp +++ b/radio/src/targets/common/arm/stm32/adc_driver.cpp @@ -211,7 +211,7 @@ void adcSingleRead() #endif #if defined(PCBX10) - if (ADC->CCR & ADC_CCR_VBATE) { + if (isVBatBridgeEnabled()) { rtcBatteryVoltage = ADC1->DR; } #endif diff --git a/radio/src/targets/common/arm/stm32/board_common.h b/radio/src/targets/common/arm/stm32/board_common.h index 9ede09768..58c83d5f7 100644 --- a/radio/src/targets/common/arm/stm32/board_common.h +++ b/radio/src/targets/common/arm/stm32/board_common.h @@ -117,6 +117,11 @@ static inline void disableVBatBridge() ADC->CCR &= ~ADC_CCR_VBATE; } +static inline bool isVBatBridgeEnabled() +{ + return ADC->CCR & ADC_CCR_VBATE; +} + // Delays driver #ifdef __cplusplus extern "C" { diff --git a/radio/src/targets/horus/adc_driver.cpp b/radio/src/targets/horus/adc_driver.cpp index 6e333bc0b..23c0becd8 100644 --- a/radio/src/targets/horus/adc_driver.cpp +++ b/radio/src/targets/horus/adc_driver.cpp @@ -261,7 +261,7 @@ void adcRead() adcValues[MOUSE1+x] = temp[x] >> 2; } - if (ADC->CCR & ADC_CCR_VBATE) { + if (isVBatBridgeEnabled()) { rtcBatteryVoltage = ADC1->DR; } } diff --git a/radio/src/targets/sky9x/CMakeLists.txt b/radio/src/targets/sky9x/CMakeLists.txt index 9add10595..2e9c92ff1 100644 --- a/radio/src/targets/sky9x/CMakeLists.txt +++ b/radio/src/targets/sky9x/CMakeLists.txt @@ -68,7 +68,6 @@ set(GUI_SRC model_display.cpp radio_diagkeys.cpp radio_diaganas.cpp - radio_hardware.cpp view_telemetry.cpp view_about.cpp ) diff --git a/radio/src/targets/taranis/CMakeLists.txt b/radio/src/targets/taranis/CMakeLists.txt index 7bcd07a48..3837c3d1f 100644 --- a/radio/src/targets/taranis/CMakeLists.txt +++ b/radio/src/targets/taranis/CMakeLists.txt @@ -233,7 +233,6 @@ set(GUI_SRC model_display.cpp radio_diagkeys.cpp radio_diaganas.cpp - radio_hardware.cpp view_channels.cpp view_telemetry.cpp view_about.cpp diff --git a/radio/src/targets/taranis/board.h b/radio/src/targets/taranis/board.h index 7dc7445dc..7173aea8a 100644 --- a/radio/src/targets/taranis/board.h +++ b/radio/src/targets/taranis/board.h @@ -458,11 +458,31 @@ enum Analogs { NUM_ANALOGS }; -#define NUM_POTS (POT_LAST-POT_FIRST+1) +#if defined(PCBX9LITE) + #define NUM_POTS 1 + #define NUM_SLIDERS 0 + #define STORAGE_NUM_POTS 1 + #define STORAGE_NUM_SLIDERS 0 +#elif defined(PCBXLITE) || defined(PCBX7) + #define NUM_POTS 2 + #define NUM_SLIDERS 0 + #define STORAGE_NUM_POTS 2 + #define STORAGE_NUM_SLIDERS 0 +#elif defined(PCBX9E) + #define NUM_POTS 4 + #define NUM_SLIDERS 4 + #define STORAGE_NUM_POTS 4 + #define STORAGE_NUM_SLIDERS 4 +#else + #define NUM_POTS 3 + #define NUM_SLIDERS 2 + #define STORAGE_NUM_POTS 3 + #define STORAGE_NUM_SLIDERS 2 +#endif + +#define NUM_XPOTS NUM_POTS + #define NUM_XPOTS NUM_POTS -#define STORAGE_NUM_POTS NUM_POTS -#define NUM_SLIDERS (TX_VOLTAGE-POT_LAST-1) -#define STORAGE_NUM_SLIDERS NUM_SLIDERS #define NUM_TRIMS 4 #define NUM_MOUSE_ANALOGS 0 #define STORAGE_NUM_MOUSE_ANALOGS 0 diff --git a/radio/src/targets/taranis/hal.h b/radio/src/targets/taranis/hal.h index 5a50c4895..bfac13e42 100644 --- a/radio/src/targets/taranis/hal.h +++ b/radio/src/targets/taranis/hal.h @@ -605,6 +605,10 @@ #define ADC_TRANSFER_COMPLETE() (ADC_DMA->HISR & DMA_HISR_TCIF4) #define ADC_SAMPTIME 2 // sample time = 28 cycles #if defined(PCBX9E) + #define HARDWARE_POT1 + #define HARDWARE_POT2 + #define HARDWARE_POT3 + #define HARDWARE_POT4 #define ADC_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOF | RCC_AHB1Periph_DMA2) #define ADC_RCC_APB1Periph 0 #define ADC_RCC_APB2Periph (RCC_APB2Periph_ADC1 | RCC_APB2Periph_ADC3) @@ -645,6 +649,9 @@ #define ADC_EXT_TRANSFER_COMPLETE() (ADC_DMA->LISR & DMA_LISR_TCIF0) #define ADC_EXT_SAMPTIME 3 // sample time = 56 cycles #elif defined(PCBX9DP) + #define HARDWARE_POT1 + #define HARDWARE_POT2 + #define HARDWARE_POT3 #define ADC_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_DMA2) #define ADC_RCC_APB1Periph 0 #define ADC_RCC_APB2Periph RCC_APB2Periph_ADC1 @@ -672,6 +679,8 @@ #define ADC_CHANNEL_SLIDER2 ADC_Channel_15 #define ADC_CHANNEL_BATT ADC_Channel_10 #elif defined(PCBXLITE) + #define HARDWARE_POT1 + #define HARDWARE_POT2 #define ADC_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_DMA2) #define ADC_RCC_APB1Periph RCC_APB1Periph_TIM5 #define ADC_RCC_APB2Periph RCC_APB2Periph_ADC1 @@ -698,6 +707,8 @@ #define ADC_CHANNEL_POT2 ADC_Channel_12 // ADC1_IN12 #define ADC_CHANNEL_BATT ADC_Channel_10 // ADC1_IN10 #elif defined(PCBX7) + #define HARDWARE_POT1 + #define HARDWARE_POT2 #define ADC_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_DMA2) #define ADC_RCC_APB1Periph 0 #define ADC_RCC_APB2Periph RCC_APB2Periph_ADC1 @@ -709,16 +720,17 @@ #define ADC_CHANNEL_STICK_RH ADC_Channel_1 // ADC1_IN1 #define ADC_CHANNEL_STICK_LV ADC_Channel_2 // ADC1_IN2 #define ADC_CHANNEL_STICK_LH ADC_Channel_3 // ADC1_IN3 - #define ADC_GPIO_PIN_POT2 GPIO_Pin_6 // PA.06 #define ADC_GPIO_PIN_POT1 GPIO_Pin_0 // PB.00 + #define ADC_GPIO_PIN_POT2 GPIO_Pin_6 // PA.06 #define ADC_GPIO_PIN_BATT GPIO_Pin_0 // PC.00 #define ADC_GPIOA_PINS (ADC_GPIO_PIN_STICK_RV | ADC_GPIO_PIN_STICK_RH | ADC_GPIO_PIN_STICK_LH | ADC_GPIO_PIN_STICK_LV | ADC_GPIO_PIN_POT2) #define ADC_GPIOB_PINS ADC_GPIO_PIN_POT1 #define ADC_GPIOC_PINS ADC_GPIO_PIN_BATT - #define ADC_CHANNEL_POT2 ADC_Channel_6 #define ADC_CHANNEL_POT1 ADC_Channel_8 + #define ADC_CHANNEL_POT2 ADC_Channel_6 #define ADC_CHANNEL_BATT ADC_Channel_10 #elif defined(PCBX9LITE) + #define HARDWARE_POT1 #define ADC_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_DMA2) #define ADC_RCC_APB1Periph 0 #define ADC_RCC_APB2Periph RCC_APB2Periph_ADC1 @@ -737,6 +749,8 @@ #define ADC_CHANNEL_POT1 ADC_Channel_11 // ADC1_IN11 #define ADC_CHANNEL_BATT ADC_Channel_10 // ADC1_IN10 #else + #define HARDWARE_POT1 + #define HARDWARE_POT2 #define ADC_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_DMA2) #define ADC_RCC_APB1Periph 0 #define ADC_RCC_APB2Periph RCC_APB2Periph_ADC1