diff --git a/.github/workflows/actions.yml b/.github/workflows/actions.yml index 0ff1552794b..2813b6902b7 100644 --- a/.github/workflows/actions.yml +++ b/.github/workflows/actions.yml @@ -55,6 +55,7 @@ jobs: - tlite - t20 - t14 + - t20v2 - tx12 - x10 - x12s @@ -99,7 +100,7 @@ jobs: - t16;t18 - t8;zorro;pocket;mt12;commando8 - tlite;tpro;tprov2;lr3pro - - t20;t14 + - t20;t20v2;t14 - tx12;tx12mk2;boxer - tx16s - x10;x10-access diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 0bc16183e0a..205e465203f 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -22,7 +22,7 @@ jobs: - t16;t18 - t8;zorro;pocket;mt12;commando8 - tlite;tpro;tprov2;lr3pro - - t20;t14 + - t20;t20v2;t14 - tx12;tx12mk2;boxer - tx16s - x10;x10-access diff --git a/companion/src/CMakeLists.txt b/companion/src/CMakeLists.txt index bdfe7d900d6..ee5297e9870 100644 --- a/companion/src/CMakeLists.txt +++ b/companion/src/CMakeLists.txt @@ -308,6 +308,8 @@ elseif(PCB STREQUAL X7 AND PCBREV STREQUAL TPROV2) set(FLAVOUR tprov2) elseif(PCB STREQUAL X7 AND PCBREV STREQUAL T20) set(FLAVOUR t20) +elseif(PCB STREQUAL X7 AND PCBREV STREQUAL T20V2) + set(FLAVOUR t20v2) elseif(PCB STREQUAL X7 AND PCBREV STREQUAL TX12) set(FLAVOUR tx12) elseif(PCB STREQUAL X7 AND PCBREV STREQUAL TX12MK2) diff --git a/companion/src/firmwares/boards.cpp b/companion/src/firmwares/boards.cpp index 943bc92c5ea..f0c9d5ee5f3 100644 --- a/companion/src/firmwares/boards.cpp +++ b/companion/src/firmwares/boards.cpp @@ -185,6 +185,7 @@ int Boards::getEEpromSize(Board::Type board) case BOARD_IFLIGHT_COMMANDO8: case BOARD_JUMPER_T12: case BOARD_JUMPER_T20: + case BOARD_JUMPER_T20V2: case BOARD_JUMPER_TLITE: case BOARD_JUMPER_TLITE_F4: case BOARD_JUMPER_TPRO: @@ -235,6 +236,7 @@ int Boards::getFlashSize(Type board) case BOARD_IFLIGHT_COMMANDO8: case BOARD_JUMPER_T12: case BOARD_JUMPER_T20: + case BOARD_JUMPER_T20V2: case BOARD_JUMPER_TLITE: case BOARD_JUMPER_TLITE_F4: case BOARD_JUMPER_TPRO: @@ -533,6 +535,8 @@ QString Boards::getBoardName(Board::Type board) return "Jumper T18"; case BOARD_JUMPER_T20: return "Jumper T20"; + case BOARD_JUMPER_T20V2: + return "Jumper T20 V2"; case BOARD_RADIOMASTER_TX16S: return "Radiomaster TX16S"; case BOARD_RADIOMASTER_TX12: @@ -661,6 +665,7 @@ int Boards::getDefaultInternalModules(Board::Type board) case BOARD_RADIOMASTER_TX12_MK2: case BOARD_IFLIGHT_COMMANDO8: case BOARD_JUMPER_T20: + case BOARD_JUMPER_T20V2: return (int)MODULE_TYPE_CROSSFIRE; case BOARD_FLYSKY_NV14: diff --git a/companion/src/firmwares/boards.h b/companion/src/firmwares/boards.h index 15908b6f9c3..8da2376f7cd 100644 --- a/companion/src/firmwares/boards.h +++ b/companion/src/firmwares/boards.h @@ -80,6 +80,7 @@ namespace Board { BOARD_FLYSKY_EL18, BOARD_JUMPER_TPROV2, BOARD_RADIOMASTER_POCKET, + BOARD_JUMPER_T20V2, BOARD_TYPE_COUNT, BOARD_TYPE_MAX = BOARD_TYPE_COUNT - 1 }; @@ -444,7 +445,7 @@ inline bool IS_JUMPER_T18(Board::Type board) inline bool IS_JUMPER_T20(Board::Type board) { - return board == Board::BOARD_JUMPER_T20; + return board == Board::BOARD_JUMPER_T20 || board == Board::BOARD_JUMPER_T20V2; } inline bool IS_RADIOMASTER_TX16S(Board::Type board) @@ -492,6 +493,7 @@ inline bool IS_FAMILY_T12(Board::Type board) { return board == Board::BOARD_JUMPER_T12 || board == Board::BOARD_JUMPER_T20 || + board == Board::BOARD_JUMPER_T20V2 || board == Board::BOARD_JUMPER_TLITE || board == Board::BOARD_JUMPER_TLITE_F4 || board == Board::BOARD_JUMPER_TPRO || diff --git a/companion/src/firmwares/opentx/opentxinterface.cpp b/companion/src/firmwares/opentx/opentxinterface.cpp index 46eb0269e12..2a9402117a6 100644 --- a/companion/src/firmwares/opentx/opentxinterface.cpp +++ b/companion/src/firmwares/opentx/opentxinterface.cpp @@ -74,6 +74,8 @@ const char * OpenTxEepromInterface::getName() return "EdgeTX for Jumper T18"; case BOARD_JUMPER_T20: return "EdgeTX for Jumper T20"; + case BOARD_JUMPER_T20V2: + return "EdgeTX for Jumper T20 V2"; case BOARD_RADIOMASTER_TX16S: return "EdgeTX for Radiomaster TX16S"; case BOARD_RADIOMASTER_TX12: @@ -1424,6 +1426,13 @@ void registerOpenTxFirmwares() addOpenTxRfOptions(firmware, NONE); registerOpenTxFirmware(firmware); + /* Jumper T20 V2 board */ + firmware = new OpenTxFirmware(FIRMWAREID("t20v2"), Firmware::tr("Jumper T20 V2"), BOARD_JUMPER_T20V2); + addOpenTxFrskyOptions(firmware); + firmware->addOption("internalelrs", Firmware::tr("Select if internal ELRS module is installed")); + addOpenTxRfOptions(firmware, NONE); + registerOpenTxFirmware(firmware); + /* Radiomaster Boxer board */ firmware = new OpenTxFirmware(FIRMWAREID("boxer"), QCoreApplication::translate("Firmware", "Radiomaster Boxer"), Board::BOARD_RADIOMASTER_BOXER); addOpenTxCommonOptions(firmware); diff --git a/fw.json b/fw.json index ae49858e0ed..5c2c8ed1056 100644 --- a/fw.json +++ b/fw.json @@ -28,6 +28,7 @@ ["Jumper T-Pro V2", "tprov2-"], ["Jumper T20", "t20-"], ["Jumper T14", "t14-"], + ["Jumper T20 V2", "t20v2-"], ["RadioMaster Boxer", "boxer-"], ["RadioMaster MT12","mt12-"], ["RadioMaster Pocket", "pocket-"], diff --git a/radio/src/datastructs.h b/radio/src/datastructs.h index b417c2c2def..81a24a9f0cc 100644 --- a/radio/src/datastructs.h +++ b/radio/src/datastructs.h @@ -133,7 +133,7 @@ static inline void check_struct() #elif defined(RADIO_T14) CHKSIZE(RadioData, 869); CHKSIZE(ModelData, 6265); -#elif defined(RADIO_T20) +#elif defined(RADIO_FAMILY_T20) CHKSIZE(RadioData, 869); CHKSIZE(ModelData, 6326); #elif defined(RADIO_BOXER) diff --git a/radio/src/gui/128x64/startup_shutdown.cpp b/radio/src/gui/128x64/startup_shutdown.cpp index b93f2d275d8..b3c4aaf34e4 100644 --- a/radio/src/gui/128x64/startup_shutdown.cpp +++ b/radio/src/gui/128x64/startup_shutdown.cpp @@ -29,7 +29,7 @@ const unsigned char bmp_sleep[] = { #include "sleep.lbm" }; -#if defined(RADIO_T20) +#if defined(RADIO_FAMILY_T20) constexpr uint8_t steps = NUM_FUNCTIONS_SWITCHES/2; #elif defined(FUNCTION_SWITCHES) constexpr uint8_t steps = NUM_FUNCTIONS_SWITCHES; @@ -53,7 +53,7 @@ void drawStartupAnimation(uint32_t duration, uint32_t totalDuration) for (uint8_t j = 0; j < steps; j++) { if (index2 > j) { fsLedOn(j); -#if defined(RADIO_T20) +#if defined(RADIO_FAMILY_T20) fsLedOn(j + steps); #endif } @@ -89,12 +89,12 @@ void drawShutdownAnimation(uint32_t duration, uint32_t totalDuration, for (uint8_t j = 0; j < steps; j++) { fsLedOff(j); -#if defined(RADIO_T20) +#if defined(RADIO_FAMILY_T20) fsLedOff(j + steps); #endif if (steps - index2 > j) { fsLedOn(j); -#if defined(RADIO_T20) +#if defined(RADIO_FAMILY_T20) fsLedOn(j + steps); #endif } diff --git a/radio/src/hal/rotary_encoder.h b/radio/src/hal/rotary_encoder.h index c81539060dc..d1fc7456b39 100644 --- a/radio/src/hal/rotary_encoder.h +++ b/radio/src/hal/rotary_encoder.h @@ -27,7 +27,7 @@ #define ROTENC_MIDSPEED 5 #define ROTENC_HIGHSPEED 50 -#if defined(RADIO_T20) || defined(RADIO_T14) +#if defined(RADIO_FAMILY_T20) || defined(RADIO_T14) #define ROTARY_ENCODER_GRANULARITY 4 #else #define ROTARY_ENCODER_GRANULARITY 2 diff --git a/radio/src/storage/yaml/CMakeLists.txt b/radio/src/storage/yaml/CMakeLists.txt index 61e88b19dfb..6803ba88e7b 100644 --- a/radio/src/storage/yaml/CMakeLists.txt +++ b/radio/src/storage/yaml/CMakeLists.txt @@ -25,7 +25,7 @@ elseif(PCB STREQUAL PL18) elseif(PCB STREQUAL X7) if(PCBREV STREQUAL TPRO) set(YAML_GEN_OUTPUT storage/yaml/yaml_datastructs_tpro.cpp) - elseif(PCBREV STREQUAL T20) + elseif((PCBREV STREQUAL T20) OR (PCBREV STREQUAL T20V2)) set(YAML_GEN_OUTPUT storage/yaml/yaml_datastructs_t20.cpp) else() set(YAML_GEN_OUTPUT storage/yaml/yaml_datastructs_128x64.cpp) diff --git a/radio/src/storage/yaml/yaml_datastructs.cpp b/radio/src/storage/yaml/yaml_datastructs.cpp index dd05b108110..dcc6ceabe92 100644 --- a/radio/src/storage/yaml/yaml_datastructs.cpp +++ b/radio/src/storage/yaml/yaml_datastructs.cpp @@ -39,7 +39,7 @@ #elif defined(PCBX7) #if defined(RADIO_TPRO) || defined(RADIO_TPROV2) #include "yaml_datastructs_tpro.cpp" - #elif defined(RADIO_T20) + #elif defined(RADIO_FAMILY_T20) #include "yaml_datastructs_t20.cpp" #else #include "yaml_datastructs_128x64.cpp" diff --git a/radio/src/targets/common/arm/stm32/bootloader/boot.cpp b/radio/src/targets/common/arm/stm32/bootloader/boot.cpp index 603bed01104..f18b6d22a9a 100644 --- a/radio/src/targets/common/arm/stm32/bootloader/boot.cpp +++ b/radio/src/targets/common/arm/stm32/bootloader/boot.cpp @@ -49,7 +49,7 @@ #define BOOTLOADER_KEYS 0x42 #endif -#if defined(RADIO_T20) +#if defined(RADIO_FAMILY_T20) #define SECONDARY_BOOTLOADER_KEYS 0x1200 #endif diff --git a/radio/src/targets/taranis/CMakeLists.txt b/radio/src/targets/taranis/CMakeLists.txt index 95142bf4d3b..5ca8efb04c3 100644 --- a/radio/src/targets/taranis/CMakeLists.txt +++ b/radio/src/targets/taranis/CMakeLists.txt @@ -169,6 +169,21 @@ elseif(PCB STREQUAL X7) set(FLYSKY_GIMBAL ON) add_definitions(-DFUNCTION_SWITCHES) add_definitions(-DRADIO_T20) + add_definitions(-DRADIO_FAMILY_T20) + add_definitions(-DMANUFACTURER_JUMPER) + set(ENABLE_SERIAL_PASSTHROUGH ON CACHE BOOL "Enable serial passthrough") + elseif(PCBREV STREQUAL T20V2) + set(DEFAULT_INTERNAL_MODULE MULTIMODULE CACHE STRING "Default internal module") + set(INTERNAL_MODULE_SERIAL YES) + set(MODULE_SIZE_SML YES) + set(FLAVOUR t20v2) + set(NAVIGATION_TYPE x7) + set(ROTARY_ENCODER YES) + set(CPU_TYPE_FULL STM32F407xE) + set(FLYSKY_GIMBAL ON) + add_definitions(-DFUNCTION_SWITCHES) + add_definitions(-DRADIO_T20V2) + add_definitions(-DRADIO_FAMILY_T20) add_definitions(-DMANUFACTURER_JUMPER) set(ENABLE_SERIAL_PASSTHROUGH ON CACHE BOOL "Enable serial passthrough") elseif(PCBREV STREQUAL TLITE) diff --git a/radio/src/targets/taranis/board.h b/radio/src/targets/taranis/board.h index 677a4f07ef7..06f51e6f2a0 100644 --- a/radio/src/targets/taranis/board.h +++ b/radio/src/targets/taranis/board.h @@ -163,7 +163,7 @@ extern HardwareOptions hardwareOptions; #define BATTERY_WARN 87 // 8.7V #define BATTERY_MIN 85 // 8.5V #define BATTERY_MAX 115 // 11.5V -#elif defined(PCBXLITE) || defined(RADIO_T20) +#elif defined(PCBXLITE) || defined(RADIO_FAMILY_T20) // 2 x Li-Ion #define BATTERY_WARN 66 // 6.6V #define BATTERY_MIN 67 // 6.7V @@ -416,13 +416,13 @@ void setTopBatteryValue(uint32_t volts); #if defined(RADIO_ZORRO) || defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_MT12) || defined(RADIO_POCKET) #define VOLTAGE_DROP 45 -#elif defined(RADIO_TPROV2) || defined(RADIO_T20) +#elif defined(RADIO_TPROV2) || defined(RADIO_FAMILY_T20) #define VOLTAGE_DROP 60 #else #define VOLTAGE_DROP 20 #endif -#if defined(RADIO_T20) +#if defined(RADIO_FAMILY_T20) #define NUM_TRIMS 8 #else #define NUM_TRIMS 4 diff --git a/radio/src/targets/taranis/hal.h b/radio/src/targets/taranis/hal.h index 25dd86f3231..8455056d54e 100644 --- a/radio/src/targets/taranis/hal.h +++ b/radio/src/targets/taranis/hal.h @@ -152,7 +152,7 @@ #define KEYS_GPIO_PIN_MINUS LL_GPIO_PIN_14 // PE.14 #define KEYS_GPIO_REG_BIND GPIOD #define KEYS_GPIO_PIN_BIND LL_GPIO_PIN_9 // PD.09 -#elif defined(RADIO_T20) +#elif defined(RADIO_FAMILY_T20) #define KEYS_GPIO_REG_PAGE GPIOD #define KEYS_GPIO_PIN_PAGE LL_GPIO_PIN_11 // PD.11 #define KEYS_GPIO_REG_MENU GPIOD @@ -245,7 +245,7 @@ #define USE_EXTI15_10_IRQ #define EXTI15_10_IRQ_Priority 5 #endif -#elif defined(RADIO_X7) || defined(RADIO_X7ACCESS) || defined(RADIO_TPRO) || defined(RADIO_TPROV2) || defined(RADIO_T20) +#elif defined(RADIO_X7) || defined(RADIO_X7ACCESS) || defined(RADIO_TPRO) || defined(RADIO_TPROV2) || defined(RADIO_FAMILY_T20) #define ROTARY_ENCODER_NAVIGATION #define ROTARY_ENCODER_GPIO GPIOE #define ROTARY_ENCODER_GPIO_PIN_A GPIO_Pin_9 // PE.09 @@ -366,7 +366,7 @@ #define TRIMS_GPIO_PIN_RVU LL_GPIO_PIN_2 // PC.02 #define TRIMS_GPIO_REG_RHL GPIOE #define TRIMS_GPIO_PIN_RHL LL_GPIO_PIN_4 // PE.04 -#elif defined(RADIO_T20) +#elif defined(RADIO_FAMILY_T20) #define TRIMS_GPIO_REG_LHL GPIOD #define TRIMS_GPIO_PIN_LHL LL_GPIO_PIN_13 // PD.13 #define TRIMS_GPIO_REG_LHR GPIOG @@ -391,8 +391,13 @@ #define TRIMS_GPIO_PIN_RSD LL_GPIO_PIN_7 // PD.07 #define TRIMS_GPIO_REG_RSU GPIOG #define TRIMS_GPIO_PIN_RSU LL_GPIO_PIN_12 // PG.12 +#if defined(RADIO_T20V2) + #define TRIMS_GPIO_REG_T7L GPIOC + #define TRIMS_GPIO_PIN_T7L LL_GPIO_PIN_13 // PC.13 +#else #define TRIMS_GPIO_REG_T7L GPIOB #define TRIMS_GPIO_PIN_T7L LL_GPIO_PIN_3 // PB.03 +#endif #define TRIMS_GPIO_REG_T7R GPIOG #define TRIMS_GPIO_PIN_T7R LL_GPIO_PIN_15 // PG.15 #define TRIMS_GPIO_REG_T8D GPIOG @@ -567,7 +572,7 @@ #define SWITCHES_GPIO_PIN_A_L LL_GPIO_PIN_13 // PE.13 #define SWITCHES_GPIO_REG_A_H GPIOE #define SWITCHES_GPIO_PIN_A_H LL_GPIO_PIN_7 // PE.07 -#elif defined(RADIO_T20) +#elif defined(RADIO_FAMILY_T20) #define STORAGE_SWITCH_A #define HARDWARE_SWITCH_A #define SWITCHES_A_INVERTED @@ -624,7 +629,7 @@ #define SWITCHES_GPIO_PIN_B_L LL_GPIO_PIN_1 // PE.01 #define SWITCHES_GPIO_REG_B_H GPIOE #define SWITCHES_GPIO_PIN_B_H LL_GPIO_PIN_2 // PE.02 -#elif defined(RADIO_T20) +#elif defined(RADIO_FAMILY_T20) #define STORAGE_SWITCH_B #define HARDWARE_SWITCH_B #define SWITCHES_B_INVERTED @@ -738,7 +743,7 @@ #define HARDWARE_SWITCH_C #define SWITCHES_GPIO_REG_C GPIOE #define SWITCHES_GPIO_PIN_C LL_GPIO_PIN_14 // PE.14 -#elif defined(RADIO_T20) +#elif defined(RADIO_FAMILY_T20) #define STORAGE_SWITCH_C #define HARDWARE_SWITCH_C #define SWITCHES_GPIO_REG_C_L GPIOD @@ -819,7 +824,7 @@ #define SWITCHES_GPIO_PIN_D_L LL_GPIO_PIN_5 // PA.05 #define SWITCHES_GPIO_REG_D_H GPIOE #define SWITCHES_GPIO_PIN_D_H LL_GPIO_PIN_15 // PE.15 -#elif defined(RADIO_T20) +#elif defined(RADIO_FAMILY_T20) #define STORAGE_SWITCH_D #define HARDWARE_SWITCH_D #define SWITCHES_GPIO_REG_D_L GPIOE @@ -918,7 +923,7 @@ #define HARDWARE_SWITCH_E #define SWITCHES_GPIO_REG_E GPIOE #define SWITCHES_GPIO_PIN_E LL_GPIO_PIN_8 // PE.08 -#elif defined(RADIO_T20) +#elif defined(RADIO_FAMILY_T20) #define STORAGE_SWITCH_E #define HARDWARE_SWITCH_E #define SWITCHES_GPIO_REG_E GPIOD @@ -990,7 +995,7 @@ #define HARDWARE_SWITCH_F #define SWITCHES_GPIO_REG_F GPIOC #define SWITCHES_GPIO_PIN_F LL_GPIO_PIN_13// PC.13 -#elif defined(RADIO_T20) +#elif defined(RADIO_FAMILY_T20) #define STORAGE_SWITCH_F #define HARDWARE_SWITCH_F #define SWITCHES_GPIO_REG_F GPIOB @@ -1045,7 +1050,7 @@ #define HARDWARE_SWITCH_G #define SWITCHES_GPIO_REG_G GPIOG #define SWITCHES_GPIO_PIN_G LL_GPIO_PIN_7 // PG.07 -#elif defined(RADIO_T20) +#elif defined(RADIO_FAMILY_T20) //TRIM left low #define STORAGE_SWITCH_G #define HARDWARE_SWITCH_G @@ -1092,7 +1097,7 @@ #define HARDWARE_SWITCH_H #define SWITCHES_GPIO_REG_H GPIOG #define SWITCHES_GPIO_PIN_H LL_GPIO_PIN_6 // PG.06 -#elif defined(RADIO_T20) +#elif defined(RADIO_FAMILY_T20) //TRIM right low #define STORAGE_SWITCH_H #define HARDWARE_SWITCH_H @@ -1213,7 +1218,7 @@ #define HARDWARE_SWITCH_L #define SWITCHES_GPIO_REG_L GPIOG #define SWITCHES_GPIO_PIN_L LL_GPIO_PIN_2 // PG.02 -#elif defined(RADIO_T20) +#elif defined(RADIO_FAMILY_T20) //TRIM left up #define STORAGE_SWITCH_I #define HARDWARE_SWITCH_I @@ -1235,7 +1240,7 @@ #define SWITCHES_GPIO_PIN_J LL_GPIO_PIN_10 // PD.10 #endif -#if defined(RADIO_T20) +#if defined(RADIO_FAMILY_T20) //SW1 #define FUNCTION_SWITCH_1 SK #define STORAGE_SWITCH_K @@ -1338,7 +1343,7 @@ #endif // ADC -#if !defined(RADIO_T20) +#if !defined(RADIO_FAMILY_T20) #define ADC_MAIN ADC1 #define ADC_DMA DMA2 #define ADC_DMA_CHANNEL LL_DMA_CHANNEL_0 @@ -1558,7 +1563,7 @@ #define ADC_CHANNEL_POT2 LL_ADC_CHANNEL_8 #define ADC_CHANNEL_BATT LL_ADC_CHANNEL_10 #define ADC_VREF_PREC2 330 -#elif defined(RADIO_T20) +#elif defined(RADIO_FAMILY_T20) #define ADC_MAIN ADC3 #define ADC_DMA DMA2 #define ADC_DMA_CHANNEL LL_DMA_CHANNEL_2 @@ -1715,7 +1720,7 @@ #define ADC_DIRECTION {1,-1,1,-1, 1,1, 1, 1} #elif defined(RADIO_T14) #define ADC_DIRECTION {1, -1, 1, -1, 1, 1, 1} -#elif defined(RADIO_T20) +#elif defined(RADIO_FAMILY_T20) #define ADC_DIRECTION {1,-1,1,-1, -1,1,-1,-1,-1,-1} #elif defined(RADIO_MT12) #define ADC_DIRECTION {1,-1, -1,-1, 0, 0, 0, 0} @@ -1745,7 +1750,7 @@ #define PWR_SWITCH_GPIO_PIN GPIO_Pin_11 // PD.11 #define PWR_ON_GPIO GPIOD #define PWR_ON_GPIO_PIN GPIO_Pin_10 // PD.10 -#elif defined(RADIO_T20) +#elif defined(RADIO_FAMILY_T20) #define PWR_SWITCH_GPIO GPIOG #define PWR_SWITCH_GPIO_PIN GPIO_Pin_5 // PG.05 #define PWR_ON_GPIO GPIOG @@ -1839,7 +1844,7 @@ #define LED_RED_GPIO_PIN GPIO_Pin_5 // PC.05 #define LED_BLUE_GPIO GPIOC #define LED_BLUE_GPIO_PIN GPIO_Pin_4 // PC.04 -#elif defined(RADIO_T20) +#elif defined(RADIO_FAMILY_T20) #define STATUS_LEDS #define GPIO_LED_GPIO_ON GPIO_SetBits #define GPIO_LED_GPIO_OFF GPIO_ResetBits @@ -1920,7 +1925,7 @@ #endif #if defined(FUNCTION_SWITCHES) -#if defined(RADIO_T20) +#if defined(RADIO_FAMILY_T20) #define FS_RCC_AHB1Periph RCC_AHB1Periph_GPIOF #define GPIO_FSLED_GPIO_ON GPIO_SetBits #define GPIO_FSLED_GPIO_OFF GPIO_ResetBits @@ -2018,10 +2023,25 @@ #define INTMODULE_DMA_STREAM_IRQHandler DMA2_Stream7_IRQHandler #define INTMODULE_DMA_FLAG_TC DMA_IT_TCIF7 #define INTMODULE_DMA_CHANNEL DMA_Channel_4 -#elif defined(RADIO_ZORRO) || defined(RADIO_POCKET) || defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_MT12) || defined(RADIO_T14) +#elif defined(RADIO_ZORRO) || defined(RADIO_POCKET) || defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_MT12) || defined(RADIO_T20V2) || defined(RADIO_T14) #define INTMODULE_RCC_AHB1Periph (RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_DMA2) #define INTMODULE_PWR_GPIO GPIOC +#if defined(RADIO_T20V2) + #define INTMODULE_PWR_GPIO_PIN GPIO_Pin_6 // PC.06 + #define INTMODULE_BOOTCMD_GPIO GPIOE + #define INTMODULE_BOOTCMD_GPIO_PIN GPIO_Pin_4 // PE.04 + #define INTMODULE_BOOTCMD_DEFAULT 0 // RESET +#else #define INTMODULE_PWR_GPIO_PIN GPIO_Pin_4 // PC.04 + #define INTMODULE_BOOTCMD_GPIO GPIOB +#if defined(RADIO_T14) + #define INTMODULE_BOOTCMD_GPIO GPIOE + #define INTMODULE_BOOTCMD_GPIO_PIN GPIO_Pin_14 // PE.14 +#else + #define INTMODULE_BOOTCMD_GPIO GPIOB + #define INTMODULE_BOOTCMD_GPIO_PIN GPIO_Pin_1 // PB.01 +#endif +#endif #define INTMODULE_GPIO GPIOB #define INTMODULE_TX_GPIO_PIN GPIO_Pin_6 // PB.06 #define INTMODULE_RX_GPIO_PIN GPIO_Pin_7 // PB.07 @@ -2040,13 +2060,6 @@ #define INTMODULE_RX_DMA DMA2 #define INTMODULE_RX_DMA_STREAM LL_DMA_STREAM_2 #define INTMODULE_RX_DMA_CHANNEL LL_DMA_CHANNEL_4 -#if defined(RADIO_T14) - #define INTMODULE_BOOTCMD_GPIO GPIOE - #define INTMODULE_BOOTCMD_GPIO_PIN GPIO_Pin_14 // PE.14 -#else - #define INTMODULE_BOOTCMD_GPIO GPIOB - #define INTMODULE_BOOTCMD_GPIO_PIN GPIO_Pin_1 // PB.01 -#endif #define INTMODULE_BOOTCMD_DEFAULT 0 // RESET #define INIT_INTMODULE_BOOTCMD_PIN() GPIO_ResetBits(INTMODULE_BOOTCMD_GPIO, INTMODULE_BOOTCMD_GPIO_PIN); #elif defined(PCBX9E) || defined(PCBX9DP) || defined(RADIO_X7) @@ -2095,7 +2108,7 @@ #define INTMODULE_BOOTCMD_GPIO_PIN GPIO_Pin_11 // PF.11 #define INTMODULE_BOOTCMD_DEFAULT 0 // RESET #define INIT_INTMODULE_BOOTCMD_PIN() GPIO_ResetBits(INTMODULE_BOOTCMD_GPIO, INTMODULE_BOOTCMD_GPIO_PIN); - #elif defined(RADIO_T20) + #elif defined(RADIO_FAMILY_T20) #define INTMODULE_BOOTCMD_GPIO GPIOE #define INTMODULE_BOOTCMD_GPIO_PIN GPIO_Pin_4 // PE.04 #define INTMODULE_BOOTCMD_DEFAULT 0 // RESET @@ -2201,7 +2214,7 @@ #define EXTMODULE_PWR_GPIO_PIN GPIO_Pin_2 //External tuner power pin #define EXTERNAL_MODULE_PWR_ON() GPIO_SetBits(EXTMODULE_PWR_GPIO, EXTMODULE_PWR_GPIO_PIN|EXTMODULE_RF_SWITCH_GPIO_PIN) #define EXTERNAL_MODULE_PWR_OFF() GPIO_ResetBits(EXTMODULE_PWR_GPIO, EXTMODULE_PWR_GPIO_PIN|EXTMODULE_RF_SWITCH_GPIO_PIN) - #elif defined(RADIO_T20) + #elif defined(RADIO_FAMILY_T20) #define EXTMODULE_PWR_GPIO GPIOB #define EXTMODULE_PWR_GPIO_PIN GPIO_Pin_1 // PB.01 #define EXTERNAL_MODULE_PWR_ON() GPIO_SetBits(EXTMODULE_PWR_GPIO, EXTMODULE_PWR_GPIO_PIN) @@ -2257,7 +2270,7 @@ #define TRAINER_IN_TIMER_Channel LL_TIM_CHANNEL_CH3 #define TRAINER_OUT_GPIO_PIN LL_GPIO_PIN_9 // PC.09 #define TRAINER_OUT_TIMER_Channel LL_TIM_CHANNEL_CH4 -#if defined(RADIO_T20) +#if defined(RADIO_FAMILY_T20) #define TRAINER_DETECT_GPIO GPIOE #define TRAINER_DETECT_GPIO_PIN LL_GPIO_PIN_8 // PE.03 #elif defined(RADIO_MT12) @@ -2576,7 +2589,7 @@ #define BACKLIGHT_CCMR1 TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_2 // Channel 1, PWM #define BACKLIGHT_CCER TIM_CCER_CC1E #define BACKLIGHT_COUNTER_REGISTER BACKLIGHT_TIMER->CCR1 -#elif defined(RADIO_T8) || defined(RADIO_TPROV2) || defined(RADIO_T20) || defined(RADIO_T14) +#elif defined(RADIO_T8) || defined(RADIO_TPROV2) || defined(RADIO_FAMILY_T20) || defined(RADIO_T14) #define BACKLIGHT_RCC_AHB1Periph 0 #define BACKLIGHT_RCC_APB1Periph 0 #define BACKLIGHT_RCC_APB2Periph 0 @@ -2620,10 +2633,10 @@ #define KEYS_BACKLIGHT_RCC_AHB1Periph 0 // LCD driver -#if defined(RADIO_TX12) || defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_ZORRO) || defined(RADIO_POCKET) || defined(RADIO_FAMILY_JUMPER_T12) || defined(RADIO_T8) || defined(RADIO_COMMANDO8) || defined(RADIO_TPRO) || defined(RADIO_TPROV2) || defined(RADIO_T20) || defined(RADIO_MT12) +#if defined(RADIO_TX12) || defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_ZORRO) || defined(RADIO_POCKET) || defined(RADIO_FAMILY_JUMPER_T12) || defined(RADIO_T8) || defined(RADIO_COMMANDO8) || defined(RADIO_TPRO) || defined(RADIO_TPROV2) || defined(RADIO_FAMILY_T20) || defined(RADIO_MT12) #define LCD_VERTICAL_INVERT #endif -#if defined(RADIO_LR3PRO) || defined(RADIO_TPROV2) || defined(RADIO_T20) || defined(RADIO_T14) +#if defined(RADIO_LR3PRO) || defined(RADIO_TPROV2) || defined(RADIO_FAMILY_T20) || defined(RADIO_T14) #define LCD_HORIZONTAL_INVERT #define OLED_SCREEN #endif @@ -2683,7 +2696,7 @@ #define LCD_A0_GPIO_PIN GPIO_Pin_11 // PC.11 //MOSI #define LCD_NCS_GPIO GPIOA #define LCD_NCS_GPIO_PIN GPIO_Pin_15 // PA.15 -#if defined(RADIO_T20) +#if defined(RADIO_FAMILY_T20) #define LCD_RST_GPIO GPIOA #define LCD_RST_GPIO_PIN GPIO_Pin_14 // PA.14 #else @@ -2780,7 +2793,7 @@ #endif // SD - SPI2 -#if defined(RADIO_T20) || defined(RADIO_T14) +#if defined(RADIO_FAMILY_T20) || defined(RADIO_T14) // Using chip, so no detect #else #define SD_PRESENT_GPIO GPIOD @@ -2827,7 +2840,7 @@ #define AUDIO_SPEAKER_ENABLE_GPIO_PIN GPIO_Pin_14 // PD.14 #define HEADPHONE_TRAINER_SWITCH_GPIO GPIOD #define HEADPHONE_TRAINER_SWITCH_GPIO_PIN GPIO_Pin_9 // PD.09 -#elif defined(RADIO_T20) +#elif defined(RADIO_FAMILY_T20) #define AUDIO_RCC_AHB1Periph (RCC_AHB1Periph_GPIOG | RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_DMA1) #define AUDIO_MUTE_GPIO GPIOG #define AUDIO_MUTE_GPIO_PIN GPIO_Pin_4 // PG.04 @@ -2854,7 +2867,7 @@ #endif // Haptic -#if defined(PCBXLITE) || defined(PCBX9LITE) || defined(RADIO_ZORRO) || defined(RADIO_POCKET) || defined(RADIO_TX12MK2)|| defined(RADIO_BOXER) || defined(RADIO_MT12) || defined(RADIO_T14) +#if defined(PCBXLITE) || defined(PCBX9LITE) || defined(RADIO_ZORRO) || defined(RADIO_POCKET) || defined(RADIO_TX12MK2)|| defined(RADIO_BOXER) || defined(RADIO_MT12) || defined(RADIO_T20V2) || defined(RADIO_T14) #define HAPTIC_PWM #define HAPTIC_RCC_AHB1Periph RCC_AHB1Periph_GPIOB #define HAPTIC_RCC_APB1Periph RCC_APB1Periph_TIM2 @@ -2905,7 +2918,7 @@ #define HAPTIC_GPIO_PIN GPIO_Pin_12 #endif -#if defined(RADIO_BOXER) || defined(RADIO_T20) || defined(RADIO_X9DP2019) +#if defined(RADIO_BOXER) || defined(RADIO_FAMILY_T20) || defined(RADIO_X9DP2019) // Flysky Hall Stick #define FLYSKY_HALL_SERIAL_USART UART4 #define FLYSKY_HALL_SERIAL_GPIO GPIOA diff --git a/radio/src/targets/taranis/usb_descriptor.h b/radio/src/targets/taranis/usb_descriptor.h index 7215059814d..60deaabf9b3 100644 --- a/radio/src/targets/taranis/usb_descriptor.h +++ b/radio/src/targets/taranis/usb_descriptor.h @@ -70,6 +70,10 @@ #define USB_NAME "Jumper T20" #define USB_MANUFACTURER 'J', 'U', 'M', 'P', 'E', 'R', ' ', ' ' /* 8 bytes */ #define USB_PRODUCT 'T', '2', '0', ' ', ' ', ' ', ' ', ' ' /* 8 Bytes */ +#elif defined(RADIO_T20V2) + #define USB_NAME "Jumper T20 V2" + #define USB_MANUFACTURER 'J', 'U', 'M', 'P', 'E', 'R', ' ', ' ' /* 8 bytes */ + #define USB_PRODUCT 'T', '2', '0', 'V', '2', ' ', ' ', ' ' /* 8 Bytes */ #elif defined(RADIO_COMMANDO8) #define USB_NAME "iFlight Commando 8" #define USB_MANUFACTURER 'i', 'F', 'l', 'i', 'g', 'h', 't', '-' /* 8 bytes */ diff --git a/radio/src/telemetry/crossfire.h b/radio/src/telemetry/crossfire.h index 43573cf618e..cad3365634e 100644 --- a/radio/src/telemetry/crossfire.h +++ b/radio/src/telemetry/crossfire.h @@ -115,7 +115,7 @@ const uint32_t CROSSFIRE_BAUDRATES[] = { 5250000, }; -#if defined(RADIO_TPRO) || defined(RADIO_TPROV2) || defined(RADIO_T20) +#if defined(RADIO_TPRO) || defined(RADIO_TPROV2) || defined(RADIO_FAMILY_T20) #define CROSSFIRE_MAX_INTERNAL_BAUDRATE DIM(CROSSFIRE_BAUDRATES) - 3 #else #define CROSSFIRE_MAX_INTERNAL_BAUDRATE DIM(CROSSFIRE_BAUDRATES) - 1 diff --git a/radio/util/hw_defs/legacy_names.py b/radio/util/hw_defs/legacy_names.py index 69f85253fab..fae75b0a49f 100644 --- a/radio/util/hw_defs/legacy_names.py +++ b/radio/util/hw_defs/legacy_names.py @@ -566,7 +566,7 @@ } }, { - "targets": {"t20"}, + "targets": {"t20","t20v2"}, "inputs": { "LH": { "yaml": "Rud", diff --git a/radio/util/hw_defs/pot_config.py b/radio/util/hw_defs/pot_config.py index e82830e7e9e..b1fdfd6feda 100644 --- a/radio/util/hw_defs/pot_config.py +++ b/radio/util/hw_defs/pot_config.py @@ -54,6 +54,14 @@ "SL3": {"default": "SLIDER"}, "SL4": {"default": "SLIDER"}, }, + "t20v2": { + "P1": {"default": "POT_CENTER"}, + "P2": {"default": "POT_CENTER"}, + "SL1": {"default": "SLIDER"}, + "SL2": {"default": "SLIDER"}, + "SL3": {"default": "SLIDER"}, + "SL4": {"default": "SLIDER"}, + }, "t12": { "P1": {"default": "POT"}, "P2": {"default": "POT"} diff --git a/radio/util/hw_defs/switch_config.py b/radio/util/hw_defs/switch_config.py index 4b005aad585..6840435796e 100644 --- a/radio/util/hw_defs/switch_config.py +++ b/radio/util/hw_defs/switch_config.py @@ -177,6 +177,20 @@ "SH": {"default": "TOGGLE", "display": [1, 3]}, "SJ": {"default": "TOGGLE", "display": [1, 4]} }, + "t20v2": { + # left side + "SA": {"default": "2POS", "display": [0, 0]}, + "SC": {"default": "3POS", "display": [0, 1]}, + "SE": {"default": "2POS", "display": [0, 2]}, + "SG": {"default": "TOGGLE", "display": [0, 3]}, + "SI": {"default": "TOGGLE", "display": [0, 4]}, + # right side + "SB": {"default": "2POS", "display": [1, 0]}, + "SD": {"default": "3POS", "display": [1, 1]}, + "SF": {"default": "2POS", "display": [1, 2]}, + "SH": {"default": "TOGGLE", "display": [1, 3]}, + "SJ": {"default": "TOGGLE", "display": [1, 4]} + }, "tx12": { # left side "SA": {"default": "TOGGLE", "display": [0, 0]}, diff --git a/tools/build-companion.sh b/tools/build-companion.sh index 96a7d35cdf6..569a48ef5e1 100755 --- a/tools/build-companion.sh +++ b/tools/build-companion.sh @@ -134,6 +134,9 @@ do t14) BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=T14" ;; + t20v2) + BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=T20V2" + ;; xlite) BUILD_OPTIONS+="-DPCB=XLITE" ;; diff --git a/tools/build-gh.sh b/tools/build-gh.sh index 21163ab7f74..5a90a49d6f4 100755 --- a/tools/build-gh.sh +++ b/tools/build-gh.sh @@ -146,6 +146,9 @@ do t14) BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=T14" ;; + t20v2) + BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=T20V2" + ;; lr3pro) BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=LR3PRO" ;; diff --git a/tools/commit-tests.sh b/tools/commit-tests.sh index 3c467a68af6..c87c0adb4e7 100755 --- a/tools/commit-tests.sh +++ b/tools/commit-tests.sh @@ -112,6 +112,9 @@ do t14) BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=T14" ;; + t20v2) + BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=T20V2" + ;; xlite) BUILD_OPTIONS+="-DPCB=XLITE" ;; diff --git a/tools/generate-hw-defs.sh b/tools/generate-hw-defs.sh index 9b7b6601568..44b59550769 100755 --- a/tools/generate-hw-defs.sh +++ b/tools/generate-hw-defs.sh @@ -6,7 +6,7 @@ set -e : "${SRCDIR:=$(dirname "$(pwd)/$0")/..}" -: ${FLAVOR:="nv14;t12;t16;t18;t8;zorro;pocket;commando8;tlite;tpro;tprov2;t20;t14;lr3pro;mt12;tx12;tx12mk2;boxer;tx16s;x10;x10-access;x12s;x7;x7-access;x9d;x9dp;x9dp2019;x9e;x9lite;x9lites;xlite;xlites"} +: ${FLAVOR:="nv14;t12;t16;t18;t8;zorro;pocket;commando8;tlite;tpro;tprov2;t20;t20v2;t14;lr3pro;mt12;tx12;tx12mk2;boxer;tx16s;x10;x10-access;x12s;x7;x7-access;x9d;x9dp;x9dp2019;x9e;x9lite;x9lites;xlite;xlites"} : ${COMMON_OPTIONS:="-DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_RULE_MESSAGES=OFF -Wno-dev -DCMAKE_MESSAGE_LOG_LEVEL=WARNING"} # wipe build directory clean @@ -75,6 +75,9 @@ do t14) BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=T14" ;; + t20v2) + BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=T20V2" + ;; lr3pro) BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=LR3PRO" ;; diff --git a/tools/generate-yaml.sh b/tools/generate-yaml.sh index 3c0819b43fc..47702b113e5 100755 --- a/tools/generate-yaml.sh +++ b/tools/generate-yaml.sh @@ -74,6 +74,9 @@ do t20) BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=T20" ;; + t20v2) + BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=T20V2" + ;; t14) BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=T14" ;; diff --git a/tools/msys2_fetch_and_build_all.sh b/tools/msys2_fetch_and_build_all.sh index 4a131dea93d..6e5bf7e1bcf 100644 --- a/tools/msys2_fetch_and_build_all.sh +++ b/tools/msys2_fetch_and_build_all.sh @@ -9,7 +9,7 @@ # ----------------------------------------------------------------------------- export BRANCH_NAME="main" # main|2.9|... -export RADIO_TYPE="tx16s" # tx16s|x10|x10-access|x12s|x9d|x9dp|x9lite|x9lites|x7|x7-access|t12|tx12|tx12mk2|mt12|boxer|t8|zorro|pocket|tlite|tpro|t20|t14|lr3pro|xlite|xlites|x9dp2019|x9e|x9e-hall|t16|t18|nv14|commando8 +export RADIO_TYPE="tx16s" # tx16s|x10|x10-access|x12s|x9d|x9dp|x9lite|x9lites|x7|x7-access|t12|tx12|tx12mk2|mt12|boxer|t8|zorro|pocket|tlite|tpro|t20|t20v2|t14|lr3pro|xlite|xlites|x9dp2019|x9e|x9e-hall|t16|t18|nv14|commando8 export BUILD_OPTIONS="-DDEFAULT_MODE=2 -DGVARS=YES" @@ -60,6 +60,9 @@ case $RADIO_TYPE in t20) BUILD_OPTIONS+=" -DPCB=X7 -DPCBREV=T20" ;; + t20v2) + BUILD_OPTIONS+=" -DPCB=X7 -DPCBREV=T20V2" + ;; t14) BUILD_OPTIONS+=" -DPCB=X7 -DPCBREV=T14" ;;