diff --git a/.github/workflows/actions.yml b/.github/workflows/actions.yml index 7a24e5c8d..ef89abcd6 100644 --- a/.github/workflows/actions.yml +++ b/.github/workflows/actions.yml @@ -96,7 +96,7 @@ jobs: - t16 - t18 - t8;zorro;commando8 - - tlite;tlitef4;tpro;lr3pro + - tlite;tlitef4;tpro;tprov2;lr3pro - tx12;tx12mk2;boxer - tx16s - x10;x10-access diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 7e6f22b1d..8fff11b16 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -23,7 +23,7 @@ jobs: - t16 - t18 - t8;zorro;commando8 - - tlite;tlitef4;tpro;lr3pro + - tlite;tlitef4;tpro;tprov2;lr3pro - tx12;tx12mk2;boxer - tx16s - x10;x10-access diff --git a/fw.json b/fw.json index 3433729a1..8508f0c35 100644 --- a/fw.json +++ b/fw.json @@ -24,6 +24,7 @@ ["Jumper T-Lite", "tlite-"], ["Jumper T-Lite (F4 MCU)", "tlitef4-"], ["Jumper T-Pro", "tpro-"], + ["Jumper T-Pro V2", "tprov2-"], ["RadioMaster T8", "t8-"], ["RadioMaster TX12", "tx12-"], ["RadioMaster Boxer", "boxer-"], diff --git a/radio/src/datastructs.h b/radio/src/datastructs.h index 6168aff0d..c3c8cd73a 100644 --- a/radio/src/datastructs.h +++ b/radio/src/datastructs.h @@ -125,6 +125,9 @@ static inline void check_struct() #elif defined(RADIO_TPRO) CHKSIZE(RadioData, 859); CHKSIZE(ModelData, 6290); +#elif defined(RADIO_TPROV2) + CHKSIZE(RadioData, 859); + CHKSIZE(ModelData, 6290); #elif defined(RADIO_BOXER) CHKSIZE(RadioData, 870); CHKSIZE(ModelData, 6265); diff --git a/radio/src/gui/128x64/radio_diagkeys.cpp b/radio/src/gui/128x64/radio_diagkeys.cpp index 9e8c324ed..f708cfd52 100644 --- a/radio/src/gui/128x64/radio_diagkeys.cpp +++ b/radio/src/gui/128x64/radio_diagkeys.cpp @@ -113,13 +113,6 @@ void menuRadioDiagKeys(event_t event) } } -#if defined(AUTOSWITCH) - lcdDrawText(13*FW+FWNUM, LCD_H - FH + 1,"Last"); - swsrc_t swtch = getMovedSwitch(); - if (swtch) - drawSwitch(17*FW+FWNUM+2, LCD_H - FH + 1, swtch, 0); -#endif - #if defined(ROTARY_ENCODER_NAVIGATION) coord_t y = LCD_H - FH + 1; lcdDrawText(8*FW-9, y, STR_ROTARY_ENCODER); diff --git a/radio/src/opentx.cpp b/radio/src/opentx.cpp index f47051df3..ddb0b7222 100644 --- a/radio/src/opentx.cpp +++ b/radio/src/opentx.cpp @@ -330,6 +330,10 @@ void generalDefault() g_eeGeneral.pwrOffSpeed = 2; #endif +#if defined(RADIO_TPROV2) + g_eeGeneral.rotEncMode = ROTARY_ENCODER_MODE_INVERT_BOTH; +#endif + g_eeGeneral.chkSum = 0xFFFF; } diff --git a/radio/src/opentx.h b/radio/src/opentx.h index b877c735c..103788275 100644 --- a/radio/src/opentx.h +++ b/radio/src/opentx.h @@ -65,6 +65,13 @@ #define CASE_BACKLIGHT(x) #endif +#if defined(OLED_SCREEN) +#define CASE_CONTRAST(x) +#else +#define CASE_CONTRAST(x) x, +#endif + + #if defined(LUA) #define CASE_LUA(x) x, #else diff --git a/radio/src/simu.cpp b/radio/src/simu.cpp index fef343a32..7ae46874e 100644 --- a/radio/src/simu.cpp +++ b/radio/src/simu.cpp @@ -443,7 +443,7 @@ void OpenTxSim::updateKeysAndSwitches(bool start) SWITCH_KEY(C, 2, 3); SWITCH_KEY(D, 3, 3); - #if defined(RADIO_TPRO) + #if defined(RADIO_TPRO) || defined(RADIO_TPROV2) SWITCH_KEY(1, 4, 2); SWITCH_KEY(2, 5, 2); SWITCH_KEY(3, 6, 2); diff --git a/radio/src/stamp.cpp b/radio/src/stamp.cpp index 1ca053ca7..902135820 100644 --- a/radio/src/stamp.cpp +++ b/radio/src/stamp.cpp @@ -72,7 +72,7 @@ #elif defined(RADIOMASTER_RELEASE) const char vers_stamp[] = "FW" TAB ": edgetx-" FLAVOUR "\036VERS" TAB ": RM Factory (" GIT_STR ")" "\036BUILT BY : EdgeTX" "\036DATE" TAB ": " DATE " " TIME; #elif defined(JUMPER_RELEASE) || defined(IFLIGHT_RELEASE) - const char vers_stamp[] = "FW" TAB ": edgetx-" FLAVOUR CPU_NAME"\036VERS" TAB ": Factory (" GIT_STR ")" "\036BUILT BY : EdgeTX" "\036DATE" TAB ": " DATE " " TIME; + const char vers_stamp[] = "FW" TAB ": edgetx-" FLAVOUR "\036VERS" TAB ": Factory (" GIT_STR ")" "\036BUILT BY : EdgeTX" "\036DATE" TAB ": " DATE " " TIME; #else #if defined(VERSION_TAG) const char vers_stamp[] = "FW" TAB ": edgetx-" FLAVOUR "\036VERS" TAB ": " VERSION_TAG DISPLAY_VERSION "\036NAME" ": " CODENAME "\036DATE" TAB ": " DATE " " TIME; diff --git a/radio/src/storage/yaml/yaml_datastructs.cpp b/radio/src/storage/yaml/yaml_datastructs.cpp index 6a4230c13..4b4515dbc 100644 --- a/radio/src/storage/yaml/yaml_datastructs.cpp +++ b/radio/src/storage/yaml/yaml_datastructs.cpp @@ -35,7 +35,7 @@ #elif defined(PCBNV14) #include "yaml_datastructs_nv14.cpp" #elif defined(PCBX7) - #if defined(RADIO_TPRO) + #if defined(RADIO_TPRO) || defined(RADIO_TPROV2) #include "yaml_datastructs_tpro.cpp" #else #include "yaml_datastructs_128x64.cpp" diff --git a/radio/src/targets/taranis/CMakeLists.txt b/radio/src/targets/taranis/CMakeLists.txt index fdf466a94..b9bb5c9c2 100644 --- a/radio/src/targets/taranis/CMakeLists.txt +++ b/radio/src/targets/taranis/CMakeLists.txt @@ -130,6 +130,17 @@ elseif(PCB STREQUAL X7) add_definitions(-DEEPROM_VARIANT=0x4005) add_definitions(-DMANUFACTURER_JUMPER) set(ENABLE_SERIAL_PASSTHROUGH ON CACHE BOOL "Enable serial passthrough") + elseif(PCBREV STREQUAL TPROV2) + set(DEFAULT_INTERNAL_MODULE MULTIMODULE CACHE STRING "Default internal module") + set(INTERNAL_MODULE_SERIAL YES) + set(FLAVOUR tprov2) + set(NAVIGATION_TYPE x7) + set(CPU_TYPE_FULL STM32F407xE) + set(ROTARY_ENCODER YES) + add_definitions(-DFUNCTION_SWITCHES) + add_definitions(-DRADIO_TPROV2) + add_definitions(-DMANUFACTURER_JUMPER) + set(ENABLE_SERIAL_PASSTHROUGH ON CACHE BOOL "Enable serial passthrough") elseif(PCBREV STREQUAL TLITE) set(DEFAULT_INTERNAL_MODULE MULTIMODULE CACHE STRING "Default internal module") set(INTERNAL_MODULE_SERIAL YES) diff --git a/radio/src/targets/taranis/board.h b/radio/src/targets/taranis/board.h index 1192b9ec4..f0c91f396 100644 --- a/radio/src/targets/taranis/board.h +++ b/radio/src/targets/taranis/board.h @@ -292,6 +292,10 @@ uint8_t isBacklightEnabled(); #define USB_NAME "Jumper TPro" #define USB_MANUFACTURER 'J', 'U', 'M', 'P', 'E', 'R', ' ', ' ' /* 8 bytes */ #define USB_PRODUCT 'T', '-', 'P', 'R', 'O', ' ', ' ', ' ' /* 8 Bytes */ +#elif defined(RADIO_TPROV2) + #define USB_NAME "Jumper TPro V2" + #define USB_MANUFACTURER 'J', 'U', 'M', 'P', 'E', 'R', ' ', ' ' /* 8 bytes */ + #define USB_PRODUCT 'T', '-', 'P', 'R', 'O', ' ', '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 */ @@ -388,16 +392,24 @@ void ledBlue(); #define LCD_H 64 #define LCD_DEPTH 1 #define IS_LCD_RESET_NEEDED() true +#if defined(OLED_SCREEN) +#define LCD_CONTRAST_MIN 5 +#define LCD_CONTRAST_MAX 255 +#else #define LCD_CONTRAST_MIN 10 #define LCD_CONTRAST_MAX 30 -#if defined(RADIO_TX12) || defined(RADIO_TX12MK2) || defined(RADIO_ZORRO) || defined(RADIO_BOXER) +#endif + +#if defined(OLED_SCREEN) + #define LCD_CONTRAST_DEFAULT 255 // full brightness +#elif defined(RADIO_TX12) || defined(RADIO_TX12MK2) || defined(RADIO_ZORRO) || defined(RADIO_BOXER) #define LCD_CONTRAST_DEFAULT 20 #elif defined(RADIO_TPRO) || defined(RADIO_FAMILY_JUMPER_T12) || defined(RADIO_TPRO) || defined(RADIO_COMMANDO8) #define LCD_CONTRAST_DEFAULT 25 #else #define LCD_CONTRAST_DEFAULT 15 #endif -#if defined(RADIO_LR3PRO) +#if defined(OLED_SCREEN) // add offset 2px because driver (SH1106) of the 1.3 OLED is for a 132 display #define LCD_W_OFFSET 0x02 #endif @@ -465,6 +477,8 @@ void setTopBatteryValue(uint32_t volts); #if defined(RADIO_ZORRO) || defined(RADIO_TX12MK2) || defined(RADIO_BOXER) #define VOLTAGE_DROP 45 +#elif defined(RADIO_TPROV2) + #define VOLTAGE_DROP 60 #else #define VOLTAGE_DROP 20 #endif diff --git a/radio/src/targets/taranis/hal.h b/radio/src/targets/taranis/hal.h index 73aadb6d7..ea1e25017 100644 --- a/radio/src/targets/taranis/hal.h +++ b/radio/src/targets/taranis/hal.h @@ -69,7 +69,7 @@ #define KEYS_GPIO_PIN_LEFT LL_GPIO_PIN_12 // PE.12 #define KEYS_GPIO_REG_RIGHT GPIOE #define KEYS_GPIO_PIN_RIGHT LL_GPIO_PIN_13 // PE.13 -#elif defined(RADIO_FAMILY_JUMPER_T12) && !defined(RADIO_TPRO) +#elif defined(RADIO_FAMILY_JUMPER_T12) && !defined(RADIO_TPRO) && !defined(RADIO_TPROV2) #define KEYS_GPIO_REG_EXIT GPIOD #define KEYS_GPIO_PIN_EXIT LL_GPIO_PIN_2 // PD.02 #define KEYS_GPIO_REG_ENTER GPIOE @@ -100,7 +100,6 @@ #else #define KEYS_GPIO_REG_ENTER GPIOA #define KEYS_GPIO_PIN_ENTER LL_GPIO_PIN_13 // PA.13 - #endif #define KEYS_GPIO_REG_SYS GPIOB #define KEYS_GPIO_PIN_SYS LL_GPIO_PIN_4 // PB.04 @@ -221,7 +220,7 @@ #define USE_EXTI15_10_IRQ #define EXTI15_10_IRQ_Priority 5 #endif -#elif defined(RADIO_X7) || defined(RADIO_X7ACCESS) || defined(RADIO_TPRO) +#elif defined(RADIO_X7) || defined(RADIO_X7ACCESS) || defined(RADIO_TPRO) || defined(RADIO_TPROV2) #define ROTARY_ENCODER_NAVIGATION #define ROTARY_ENCODER_GPIO GPIOE #define ROTARY_ENCODER_GPIO_PIN_A GPIO_Pin_9 // PE.09 @@ -458,7 +457,7 @@ #define HARDWARE_SWITCH_A #define SWITCHES_GPIO_REG_A GPIOE #define SWITCHES_GPIO_PIN_A LL_GPIO_PIN_3 // PE.03 -#elif defined(RADIO_TPRO) +#elif defined(RADIO_TPRO) || defined(RADIO_TPROV2) #define STORAGE_SWITCH_A #define HARDWARE_SWITCH_A #define SWITCHES_GPIO_REG_A_L GPIOE @@ -509,7 +508,7 @@ #define SWITCHES_GPIO_PIN_B_L LL_GPIO_PIN_5 // PE.05 #define SWITCHES_GPIO_REG_B_H GPIOE #define SWITCHES_GPIO_PIN_B_H LL_GPIO_PIN_4 // PE.04 -#elif defined(RADIO_TLITE) || defined(RADIO_TPRO) +#elif defined(RADIO_TLITE) || defined(RADIO_TPRO) || defined(RADIO_TPROV2) #define STORAGE_SWITCH_B #define HARDWARE_SWITCH_B #define SWITCHES_GPIO_REG_B_L GPIOE @@ -602,7 +601,7 @@ #define SWITCHES_GPIO_PIN_C_L LL_GPIO_PIN_4 // PC.04 #define SWITCHES_GPIO_REG_C_H GPIOA #define SWITCHES_GPIO_PIN_C_H LL_GPIO_PIN_6 // PA.06 -#elif defined(RADIO_TLITE) || defined(RADIO_TPRO) || defined(RADIO_LR3PRO) +#elif defined(RADIO_TLITE) || defined(RADIO_TPRO) || defined(RADIO_TPROV2) || defined(RADIO_LR3PRO) #define STORAGE_SWITCH_C #define HARDWARE_SWITCH_C #define SWITCHES_GPIO_REG_C GPIOE @@ -664,7 +663,7 @@ #define HARDWARE_SWITCH_D #define SWITCHES_GPIO_REG_D GPIOE #define SWITCHES_GPIO_PIN_D LL_GPIO_PIN_8 // PE.08 -#elif defined(RADIO_TLITE) || defined(RADIO_TPRO) || defined(RADIO_LR3PRO) +#elif defined(RADIO_TLITE) || defined(RADIO_TPRO) || defined(RADIO_TPROV2) || defined(RADIO_LR3PRO) #define STORAGE_SWITCH_D #define HARDWARE_SWITCH_D #define SWITCHES_GPIO_REG_D GPIOD @@ -741,13 +740,16 @@ #define SWITCHES_GPIO_PIN_E_H LL_GPIO_PIN_14 // PE.14 #define SWITCHES_GPIO_REG_E_L GPIOE #define SWITCHES_GPIO_PIN_E_L LL_GPIO_PIN_7 // PE.07 -#elif defined(RADIO_TPRO) - // SW1 - #define FUNCTION_SWITCH_1 SE +#elif defined(RADIO_TPROV2) #define STORAGE_SWITCH_E #define HARDWARE_SWITCH_E #define SWITCHES_GPIO_REG_E GPIOG - #define SWITCHES_GPIO_PIN_E LL_GPIO_PIN_7 // PG.07 + #define SWITCHES_GPIO_PIN_E LL_GPIO_PIN_0 // PG.00 +#elif defined(RADIO_TPRO) + #define STORAGE_SWITCH_E + #define HARDWARE_SWITCH_E + #define SWITCHES_GPIO_REG_E GPIOG + #define SWITCHES_GPIO_PIN_E LL_GPIO_PIN_10 // PG.10 #elif defined(PCBX7) // no SWE #else @@ -798,14 +800,17 @@ #define SWITCHES_GPIO_PIN_F_L LL_GPIO_PIN_14 // PD.14 #define SWITCHES_GPIO_REG_F_H GPIOE #define SWITCHES_GPIO_PIN_F_H LL_GPIO_PIN_1 // PE.01 -#elif defined(RADIO_TPRO) - // SW2 - #define FUNCTION_SWITCH_2 SF +#elif defined(RADIO_TPROV2) #define STORAGE_SWITCH_F #define HARDWARE_SWITCH_F #define SWITCHES_GPIO_REG_F GPIOG - #define SWITCHES_GPIO_PIN_F LL_GPIO_PIN_6 // PG.06 -#elif defined(RADIO_T8) || defined(RADIO_TLITE) || defined(RADIO_TPRO) || defined(RADIO_COMMANDO8) || defined(RADIO_LR3PRO) + #define SWITCHES_GPIO_PIN_F LL_GPIO_PIN_1 // PG.01 +#elif defined(RADIO_TPRO) + #define STORAGE_SWITCH_F + #define HARDWARE_SWITCH_F + #define SWITCHES_GPIO_REG_F GPIOG + #define SWITCHES_GPIO_PIN_F LL_GPIO_PIN_9 // PG.09 +#elif defined(RADIO_T8) || defined(RADIO_TLITE) || defined(RADIO_TPRO) || defined(RADIO_TPROV2) || defined(RADIO_COMMANDO8) || defined(RADIO_LR3PRO) // no SWF #define STORAGE_SWITCH_F #elif defined(RADIO_T12) @@ -841,13 +846,18 @@ #define SWITCHES_GPIO_PIN_G LL_GPIO_PIN_14 // PE.14 #elif defined(RADIO_TX12MK2) || defined(RADIO_BOXER) #define STORAGE_SWITCH_G -#elif defined(RADIO_TPRO) - // SW3 - #define FUNCTION_SWITCH_3 SG +#elif defined(RADIO_TPROV2) #define STORAGE_SWITCH_G #define HARDWARE_SWITCH_G #define SWITCHES_GPIO_REG_G GPIOG - #define SWITCHES_GPIO_PIN_G LL_GPIO_PIN_5 // PG.05 + #define SWITCHES_GPIO_PIN_G LL_GPIO_PIN_10 // PG.10 +#elif defined(RADIO_TPRO) + // SW1 + #define FUNCTION_SWITCH_1 SG + #define STORAGE_SWITCH_G + #define HARDWARE_SWITCH_G + #define SWITCHES_GPIO_REG_G GPIOG + #define SWITCHES_GPIO_PIN_G LL_GPIO_PIN_7 // PG.07 #elif defined(PCBX7) || defined(PCBXLITE) || defined(PCBX9LITE) || defined(RADIO_T8) || defined(RADIO_COMMANDO8) // no SWG #else @@ -877,14 +887,19 @@ #elif defined(RADIO_TX12) #elif defined(RADIO_TX12MK2) || defined(RADIO_BOXER) #define STORAGE_SWITCH_H -#elif defined(RADIO_TPRO) - // SW4 - #define FUNCTION_SWITCH_4 SH +#elif defined(RADIO_TPROV2) #define STORAGE_SWITCH_H #define HARDWARE_SWITCH_H #define SWITCHES_GPIO_REG_H GPIOG - #define SWITCHES_GPIO_PIN_H LL_GPIO_PIN_4 // PG.04 -#elif defined(RADIO_TLITE) || defined(RADIO_TPRO) || defined(RADIO_LR3PRO) + #define SWITCHES_GPIO_PIN_H LL_GPIO_PIN_9 // PG.09 +#elif defined(RADIO_TPRO) + // SW2 + #define FUNCTION_SWITCH_2 SH + #define STORAGE_SWITCH_H + #define HARDWARE_SWITCH_H + #define SWITCHES_GPIO_REG_H GPIOG + #define SWITCHES_GPIO_PIN_H LL_GPIO_PIN_6 // PG.06 +#elif defined(RADIO_TLITE) || defined(RADIO_TPRO) || defined(RADIO_TPROV2) || defined(RADIO_LR3PRO) // no SWH #define STORAGE_SWITCH_H #elif defined(PCBX7) @@ -937,19 +952,68 @@ #define STORAGE_SWITCH_J #elif defined(RADIO_ZORRO) // No I/J -#elif defined(RADIO_TPRO) - // SW5 - #define FUNCTION_SWITCH_5 SI +#elif defined(RADIO_TPROV2) + // SW1 + #define FUNCTION_SWITCH_1 SI #define STORAGE_SWITCH_I #define HARDWARE_SWITCH_I #define SWITCHES_GPIO_REG_I GPIOG - #define SWITCHES_GPIO_PIN_I LL_GPIO_PIN_3 // PG.03 - // SW6 - #define FUNCTION_SWITCH_6 SJ + #define SWITCHES_GPIO_PIN_I LL_GPIO_PIN_7 // PG.07 + // SW2 + #define FUNCTION_SWITCH_2 SJ #define STORAGE_SWITCH_J #define HARDWARE_SWITCH_J #define SWITCHES_GPIO_REG_J GPIOG - #define SWITCHES_GPIO_PIN_J LL_GPIO_PIN_2 // PG.02 + #define SWITCHES_GPIO_PIN_J LL_GPIO_PIN_6 // PG.06 + // SW3 + #define FUNCTION_SWITCH_3 SK + #define STORAGE_SWITCH_K + #define HARDWARE_SWITCH_K + #define SWITCHES_GPIO_REG_K GPIOG + #define SWITCHES_GPIO_PIN_K LL_GPIO_PIN_5 // PG.05 + // SW4 + #define FUNCTION_SWITCH_4 SL + #define STORAGE_SWITCH_L + #define HARDWARE_SWITCH_L + #define SWITCHES_GPIO_REG_L GPIOG + #define SWITCHES_GPIO_PIN_L LL_GPIO_PIN_4 // PG.04 + // SW5 + #define FUNCTION_SWITCH_5 SM + #define STORAGE_SWITCH_M + #define HARDWARE_SWITCH_M + #define SWITCHES_GPIO_REG_M GPIOG + #define SWITCHES_GPIO_PIN_M LL_GPIO_PIN_3 // PG.03 + // SW6 + #define FUNCTION_SWITCH_6 SO + #define STORAGE_SWITCH_O + #define HARDWARE_SWITCH_O + #define SWITCHES_GPIO_REG_O GPIOG + #define SWITCHES_GPIO_PIN_O LL_GPIO_PIN_2 // PG.02 +#elif defined(RADIO_TPRO) + // SW3 + #define FUNCTION_SWITCH_3 SI + #define STORAGE_SWITCH_I + #define HARDWARE_SWITCH_I + #define SWITCHES_GPIO_REG_I GPIOG + #define SWITCHES_GPIO_PIN_I LL_GPIO_PIN_5 // PG.05 + // SW4 + #define FUNCTION_SWITCH_4 SJ + #define STORAGE_SWITCH_J + #define HARDWARE_SWITCH_J + #define SWITCHES_GPIO_REG_J GPIOG + #define SWITCHES_GPIO_PIN_J LL_GPIO_PIN_4 // PG.04 + // SW5 + #define FUNCTION_SWITCH_5 SK + #define STORAGE_SWITCH_K + #define HARDWARE_SWITCH_K + #define SWITCHES_GPIO_REG_K GPIOG + #define SWITCHES_GPIO_PIN_K LL_GPIO_PIN_3 // PG.03 + // SW6 + #define FUNCTION_SWITCH_6 SL + #define STORAGE_SWITCH_L + #define HARDWARE_SWITCH_L + #define SWITCHES_GPIO_REG_L GPIOG + #define SWITCHES_GPIO_PIN_L LL_GPIO_PIN_2 // PG.02 #elif defined(PCBX7) #define STORAGE_SWITCH_I #define HARDWARE_SWITCH_I @@ -1059,6 +1123,13 @@ #define KEYS_GPIOB_PINS (GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_4 | GPIO_Pin_5) #define KEYS_GPIOC_PINS (GPIO_Pin_4 | GPIO_Pin_5) #define KEYS_GPIOE_PINS (GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14) +#elif defined(RADIO_TPROV2) + #define KEYS_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_GPIOE | RCC_AHB1Periph_GPIOG) + #define KEYS_GPIOA_PINS (GPIO_Pin_5) + #define KEYS_GPIOC_PINS (GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3) + #define KEYS_GPIOD_PINS (GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_7 | GPIO_Pin_11 | GPIO_Pin_14 | GPIO_Pin_15) + #define KEYS_GPIOE_PINS (GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15) + #define KEYS_GPIOG_PINS (GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7) #elif defined(RADIO_TPRO) #define KEYS_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_GPIOE | RCC_AHB1Periph_GPIOG) #define KEYS_GPIOA_PINS (GPIO_Pin_5) @@ -1343,7 +1414,7 @@ #define ADC_GPIOC_PINS ADC_GPIO_PIN_BATT #define ADC_CHANNEL_BATT LL_ADC_CHANNEL_10 #define ADC_VREF_PREC2 330 -#elif defined(RADIO_TPRO) +#elif defined(RADIO_TPRO) || defined(RADIO_TPROV2) #define HARDWARE_POT1 #define HARDWARE_POT2 #define ADC_RCC_AHB1Periph (RCC_AHB1Periph_DMA2) @@ -1468,7 +1539,7 @@ #define ADC_DIRECTION {1,-1,1,-1, -1,-1, 1} #elif defined(RADIO_ZORRO) #define ADC_DIRECTION {-1, 1, 1, -1, -1, 1, 1, 1} -#elif defined(RADIO_TPRO) +#elif defined(RADIO_TPRO) || defined(RADIO_TPROV2) #define ADC_DIRECTION {1,-1,1,-1, 1,1, 1, 1} #elif defined(PCBX7) #define ADC_DIRECTION {-1,1,-1,1, 1,1, 1, 1} @@ -1565,7 +1636,7 @@ #define LED_RED_GPIO_PIN GPIO_Pin_13 // PE.13 #define LED_BLUE_GPIO GPIOA #define LED_BLUE_GPIO_PIN GPIO_Pin_7 // PA.07 -#elif defined(RADIO_TLITE) || defined(RADIO_TPRO) || defined(RADIO_TX12) +#elif defined(RADIO_TLITE) || defined(RADIO_TPRO) || defined(RADIO_TPROV2) || defined(RADIO_TX12) #define STATUS_LEDS #define GPIO_LED_GPIO_ON GPIO_SetBits #define GPIO_LED_GPIO_OFF GPIO_ResetBits @@ -1745,7 +1816,7 @@ #define INTMODULE_TIMER_DMA_STREAM_IRQn DMA2_Stream5_IRQn #define INTMODULE_TIMER_DMA_IRQHandler DMA2_Stream5_IRQHandler #define INTMODULE_TIMER_FREQ (PERI2_FREQUENCY * TIMER_MULT_APB2) -#elif (defined(RADIO_FAMILY_JUMPER_T12) && defined(HARDWARE_INTERNAL_MODULE)) || defined(RADIO_TX12) || defined(RADIO_T8) || defined(RADIO_TPRO) +#elif (defined(RADIO_FAMILY_JUMPER_T12) && defined(HARDWARE_INTERNAL_MODULE)) || defined(RADIO_TX12) || defined(RADIO_T8) || defined(RADIO_TPRO) || defined(RADIO_TPROV2) #define INTMODULE_RCC_AHB1Periph (RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOF | RCC_AHB1Periph_DMA1) #define INTMODULE_PWR_GPIO GPIOC #define INTMODULE_PWR_GPIO_PIN GPIO_Pin_6 // PC.06 @@ -1768,7 +1839,7 @@ #define INTMODULE_BOOTCMD_GPIO_PIN GPIO_Pin_5 // PA.05 #define INTMODULE_BOOTCMD_DEFAULT 0 // RESET #define INIT_INTMODULE_BOOTCMD_PIN() GPIO_ResetBits(INTMODULE_BOOTCMD_GPIO, INTMODULE_BOOTCMD_GPIO_PIN); - #elif defined(RADIO_TPRO) + #elif defined(RADIO_TPRO) || defined(RADIO_TPROV2) #define INTMODULE_BOOTCMD_GPIO GPIOF #define INTMODULE_BOOTCMD_GPIO_PIN GPIO_Pin_11 // PF.11 #define INTMODULE_BOOTCMD_DEFAULT 0 // RESET @@ -1871,6 +1942,9 @@ #define EXTMODULE_USART_RX_DMA_STREAM DMA2_Stream1 #define EXTMODULE_USART_RX_DMA_STREAM_LL LL_DMA_STREAM_1 #else + #if defined(RADIO_TPRO) || defined(RADIO_TPROV2) || defined(RADIO_TLITE) + #define HARDWARE_EXTERNAL_MODULE_SIZE_SML + #endif #define EXTMODULE_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_DMA2) #if defined(RADIO_COMMANDO8) #define EXTMODULE_RF_SWITCH_GPIO GPIOE //Antenna switching port @@ -2128,9 +2202,7 @@ #define USE_EXTI1_IRQ #define EXTI1_IRQ_Priority 5 #endif -#elif defined(RADIO_ZORRO) || defined(RADIO_TX12MK2) || defined(RADIO_BOXER) - #define INTMODULE_HEARTBEAT_RCC_AHB1Periph 0 -#else +#elif defined(MANUFACTURER_FRSKY) #define INTMODULE_HEARTBEAT #define INTMODULE_HEARTBEAT_RCC_AHB1Periph RCC_AHB1Periph_GPIOC #define INTMODULE_HEARTBEAT_GPIO GPIOC @@ -2143,6 +2215,8 @@ #define USE_EXTI9_5_IRQ #define EXTI9_5_IRQ_Priority 5 #endif +#else + #define INTMODULE_HEARTBEAT_RCC_AHB1Periph 0 #endif // Trainer / Trainee from the module bay @@ -2247,7 +2321,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) +#elif defined(RADIO_T8) || defined(RADIO_TPROV2) #define BACKLIGHT_RCC_AHB1Periph 0 #define BACKLIGHT_RCC_APB1Periph 0 #define BACKLIGHT_RCC_APB2Periph 0 @@ -2291,11 +2365,12 @@ #define KEYS_BACKLIGHT_RCC_AHB1Periph 0 // LCD driver -#if defined(RADIO_TX12) || defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_ZORRO) || defined(RADIO_FAMILY_JUMPER_T12) || defined(RADIO_T8) || defined(RADIO_COMMANDO8) || defined(RADIO_TPRO) +#if defined(RADIO_TX12) || defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_ZORRO) || defined(RADIO_FAMILY_JUMPER_T12) || defined(RADIO_T8) || defined(RADIO_COMMANDO8) || defined(RADIO_TPRO) || defined(RADIO_TPROV2) #define LCD_VERTICAL_INVERT #endif -#if defined(RADIO_LR3PRO) +#if defined(RADIO_LR3PRO) || defined(RADIO_TPROV2) #define LCD_HORIZONTAL_INVERT + #define OLED_SCREEN #endif #if defined(PCBX9E) #define LCD_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_DMA1) @@ -2489,12 +2564,12 @@ #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_TX12) || defined(RADIO_TX12MK2) || defined(RADIO_ZORRO) || defined(RADIO_BOXER) || defined(RADIO_T8) || defined(RADIO_TLITE) || defined(RADIO_TPRO) || defined(RADIO_LR3PRO) +#elif defined(RADIO_TX12) || defined(RADIO_TX12MK2) || defined(RADIO_ZORRO) || defined(RADIO_BOXER) || defined(RADIO_T8) || defined(RADIO_TLITE) || defined(RADIO_TPRO) || defined(RADIO_TPROV2) || defined(RADIO_LR3PRO) #define AUDIO_RCC_AHB1Periph (RCC_AHB1Periph_GPIOE | RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_DMA1) #define AUDIO_MUTE_GPIO GPIOE #define AUDIO_MUTE_GPIO_PIN GPIO_Pin_12 // PE.12 #define AUDIO_MUTE_DELAY 500 // ms -#if defined(RADIO_TLITE) || defined(RADIO_TPRO) || defined(RADIO_LR3PRO) +#if defined(RADIO_TLITE) || defined(RADIO_TPRO) || defined(RADIO_TPROV2) || defined(RADIO_LR3PRO) #define AUDIO_UNMUTE_DELAY 250 // ms #else #define AUDIO_UNMUTE_DELAY 150 // ms diff --git a/radio/src/targets/taranis/lcd_driver_spi.cpp b/radio/src/targets/taranis/lcd_driver_spi.cpp index 7e0ae0ca3..9b765bc0f 100644 --- a/radio/src/targets/taranis/lcd_driver_spi.cpp +++ b/radio/src/targets/taranis/lcd_driver_spi.cpp @@ -27,7 +27,9 @@ #include "opentx.h" #endif -#if (defined(RADIO_FAMILY_JUMPER_T12) || defined(RADIO_TX12) || defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_ZORRO) || defined(RADIO_T8) || defined(RADIO_COMMANDO8) || defined(RADIO_TPRO)) && !defined(RADIO_LR3PRO) +#if defined(OLED_SCREEN) + #define LCD_CONTRAST_OFFSET 0 +#elif defined(RADIO_FAMILY_JUMPER_T12) || defined(RADIO_TX12) || defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_ZORRO) || defined(RADIO_T8) || defined(RADIO_COMMANDO8) || defined(RADIO_TPRO) #define LCD_CONTRAST_OFFSET -10 #else #define LCD_CONTRAST_OFFSET 160 diff --git a/radio/src/telemetry/crossfire.h b/radio/src/telemetry/crossfire.h index e2c238817..7e6965dfd 100644 --- a/radio/src/telemetry/crossfire.h +++ b/radio/src/telemetry/crossfire.h @@ -113,7 +113,7 @@ const uint32_t CROSSFIRE_BAUDRATES[] = { 5250000, }; -#if defined(RADIO_TPRO) +#if defined(RADIO_TPRO) || defined(RADIO_TPROV2) #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 e71622df4..b992fd6f6 100644 --- a/radio/util/hw_defs/legacy_names.py +++ b/radio/util/hw_defs/legacy_names.py @@ -272,7 +272,7 @@ LEGACY_NAMES = [ "lr3pro", "nv14", "t8", "t12", - "tlite", "tlitef4", "tpro", + "tlite", "tlitef4", "tpro","tprov2", "tx12", "tx12mk2", "x7", "x7access", "xlite", "xlites", diff --git a/radio/util/hw_defs/pot_config.py b/radio/util/hw_defs/pot_config.py index ea5560f85..f6c1bd15e 100644 --- a/radio/util/hw_defs/pot_config.py +++ b/radio/util/hw_defs/pot_config.py @@ -9,6 +9,10 @@ POT_CONFIG = { "P1": { "default": "WITH_DETENT" }, "P2": { "default": "WITH_DETENT" } }, + "tprov2": { + "P1": { "default": "WITH_DETENT" }, + "P2": { "default": "WITH_DETENT" } + }, "t12": { "P1": { "default": "WITHOUT_DETENT" }, "P2": { "default": "WITHOUT_DETENT" } diff --git a/radio/util/hw_defs/switch_config.py b/radio/util/hw_defs/switch_config.py index 4a03e009d..84fa375ed 100644 --- a/radio/util/hw_defs/switch_config.py +++ b/radio/util/hw_defs/switch_config.py @@ -93,10 +93,24 @@ SWITCH_CONFIG = { "tpro": { # left side "SA": { "default": "3POS", "display": [ 0, 0 ] }, - "SC": { "default": "TOGGLE", "display": [ 0, 1 ] }, + "SC": { "default": "TOGGLE", "display": [ 0, 1 ] }, + "SE": { "default": "TOGGLE", "display": [ 0, 2 ] }, # right side "SB": { "default": "3POS", "display": [ 1, 0 ] }, - "SD": { "default": "TOGGLE", "display": [ 1, 1 ] } + "SD": { "default": "TOGGLE", "display": [ 1, 1 ] }, + "SF": { "default": "TOGGLE", "display": [ 1, 2 ] }, + }, + "tprov2": { + # left side + "SA": { "default": "3POS", "display": [ 0, 0 ] }, + "SC": { "default": "TOGGLE", "display": [ 0, 1 ] }, + "SE": { "default": "2POS", "display": [ 0, 2 ] }, + "SG": { "default": "TOGGLE", "display": [ 0, 3 ] }, + # right side + "SB": { "default": "3POS", "display": [ 1, 0 ] }, + "SD": { "default": "TOGGLE", "display": [ 1, 1 ] }, + "SF": { "default": "2POS", "display": [ 1, 2 ] }, + "SH": { "default": "TOGGLE", "display": [ 1, 3 ] }, }, "tx12": { # left side diff --git a/tools/build-gh.sh b/tools/build-gh.sh index 2f057586d..785c7ee61 100755 --- a/tools/build-gh.sh +++ b/tools/build-gh.sh @@ -131,6 +131,9 @@ do tpro) BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=TPRO" ;; + tprov2) + BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=TPROV2" + ;; lr3pro) BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=LR3PRO" ;; diff --git a/tools/generate-hw-defs.sh b/tools/generate-hw-defs.sh index 770e62952..598920dbd 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;commando8;tlite;tpro;lr3pro;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;commando8;tlite;tpro;tprov2;lr3pro;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 @@ -60,6 +60,9 @@ do tpro) BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=TPRO" ;; + tprov2) + BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=TPROV2" + ;; lr3pro) BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=LR3PRO" ;;