diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml index 0198ab6bf6b..0e01cd1f6eb 100644 --- a/.github/ISSUE_TEMPLATE/bug-report.yml +++ b/.github/ISSUE_TEMPLATE/bug-report.yml @@ -104,11 +104,14 @@ body: - Jumper T18 - Jumper T-Lite - Jumper T-Pro - - Radiomaster Boxer - - Radiomaster T8 + - Jumper T-Pro V2 + - RadioMaster Boxer + - RadioMaster MT12 + - RadioMaster Pocket + - RadioMaster T8 - RadioMaster TX12 / TX12MK2 - - Radiomaster TX16S / TX16SMK2 - - Radiomaster Zorro + - RadioMaster TX16S / TX16SMK2 + - RadioMaster Zorro - Other (Please specify below) validations: required: true diff --git a/.github/workflows/actions.yml b/.github/workflows/actions.yml index a140d22c8d6..faa22599f1d 100644 --- a/.github/workflows/actions.yml +++ b/.github/workflows/actions.yml @@ -97,7 +97,7 @@ jobs: - t12 - t16 - t18 - - t8;zorro;pocket;commando8 + - t8;zorro;pocket;mt12;commando8 - tlite;tpro;tprov2;lr3pro - t20 - tx12;tx12mk2;boxer diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 7efd556501e..ed3eb6c1ef0 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -22,7 +22,7 @@ jobs: - t12 - t16 - t18 - - t8;zorro;pocket;commando8 + - t8;zorro;pocket;mt12;commando8 - tlite;tpro;tprov2;lr3pro - t20 - tx12;tx12mk2;boxer diff --git a/radio/src/datastructs.h b/radio/src/datastructs.h index f87d84b7df6..392aefe8fba 100644 --- a/radio/src/datastructs.h +++ b/radio/src/datastructs.h @@ -136,6 +136,9 @@ static inline void check_struct() #elif defined(RADIO_BOXER) CHKSIZE(RadioData, 870); CHKSIZE(ModelData, 6265); +#elif defined(RADIO_MT12) + CHKSIZE(RadioData, 859); + CHKSIZE(ModelData, 6265); #elif defined(PCBX7) CHKSIZE(RadioData, 870); CHKSIZE(ModelData, 6265); diff --git a/radio/src/gui/128x64/model_special_functions.cpp b/radio/src/gui/128x64/model_special_functions.cpp index 1030116f7b5..54a6841911b 100644 --- a/radio/src/gui/128x64/model_special_functions.cpp +++ b/radio/src/gui/128x64/model_special_functions.cpp @@ -65,8 +65,8 @@ void onCustomFunctionsFileSelectionMenu(const char * result) strcpy(directory, SOUNDS_PATH); strncpy(directory+SOUNDS_PATH_LNG_OFS, currentLanguagePack->id, 2); } - if (!sdListFiles(directory, func==FUNC_PLAY_SCRIPT ? SCRIPTS_EXT : SOUNDS_EXT, sizeof(cfn->play.name), nullptr)) { - POPUP_WARNING(func==FUNC_PLAY_SCRIPT ? STR_NO_SCRIPTS_ON_SD : STR_NO_SOUNDS_ON_SD); + if (!sdListFiles(directory, func==FUNC_PLAY_SCRIPT || func==FUNC_RGB_LED ? SCRIPTS_EXT : SOUNDS_EXT, sizeof(cfn->play.name), nullptr)) { + POPUP_WARNING(func==FUNC_PLAY_SCRIPT || func==FUNC_RGB_LED ? STR_NO_SCRIPTS_ON_SD : STR_NO_SOUNDS_ON_SD); } } else if (result != STR_EXIT) { diff --git a/radio/src/lua/api_general.cpp b/radio/src/lua/api_general.cpp index d25971a36eb..93af382f516 100644 --- a/radio/src/lua/api_general.cpp +++ b/radio/src/lua/api_general.cpp @@ -3202,7 +3202,7 @@ LROT_BEGIN(etxcst, NULL, 0) LROT_NUMENTRY( EVT_VIRTUAL_ENTER_LONG, EVT_KEY_LONG(KEY_ENTER) ) LROT_NUMENTRY( EVT_VIRTUAL_EXIT, EVT_KEY_BREAK(KEY_EXIT) ) #elif defined(NAVIGATION_X7) || defined(NAVIGATION_X9D) -#if defined(RADIO_TX12) || defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_ZORRO) || defined(RADIO_POCKET) || defined(RADIO_T8) || defined(RADIO_COMMANDO8) +#if defined(RADIO_TX12) || defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_ZORRO) || defined(RADIO_POCKET) || defined(RADIO_T8) || defined(RADIO_COMMANDO8) || defined(RADIO_MT12) LROT_NUMENTRY( EVT_VIRTUAL_PREV_PAGE, EVT_KEY_BREAK(KEY_PAGEUP) ) LROT_NUMENTRY( EVT_VIRTUAL_NEXT_PAGE, EVT_KEY_BREAK(KEY_PAGEDN) ) LROT_NUMENTRY( EVT_VIRTUAL_MENU, EVT_KEY_BREAK(KEY_MODEL) ) diff --git a/radio/src/mixer.cpp b/radio/src/mixer.cpp index 0212bb0d51c..6e7f0e6b19a 100644 --- a/radio/src/mixer.cpp +++ b/radio/src/mixer.cpp @@ -460,10 +460,10 @@ getvalue_t getValue(mixsrc_t i, bool* valid) default: return telemetryItem.value; } - } else { - if (valid != nullptr) *valid = false; - return 0; } + + if (valid != nullptr) *valid = false; + return 0; } void evalTrims() diff --git a/radio/src/opentx.cpp b/radio/src/opentx.cpp index 35f992eb274..520de716864 100644 --- a/radio/src/opentx.cpp +++ b/radio/src/opentx.cpp @@ -273,6 +273,10 @@ void generalDefault() g_eeGeneral.contrast = LCD_CONTRAST_DEFAULT; #endif +#if defined(LCD_BRIGHTNESS_DEFAULT) + g_eeGeneral.backlightBright = LCD_BRIGHTNESS_DEFAULT; +#endif + #if defined(DEFAULT_INTERNAL_MODULE) g_eeGeneral.internalModule = DEFAULT_INTERNAL_MODULE; #endif @@ -296,7 +300,7 @@ void generalDefault() #if defined(SURFACE_RADIO) g_eeGeneral.stickMode = 0; - g_eeGeneral.templateSetup = 0; + g_eeGeneral.templateSetup = 1; #elif defined(DEFAULT_MODE) g_eeGeneral.stickMode = DEFAULT_MODE - 1; g_eeGeneral.templateSetup = DEFAULT_TEMPLATE_SETUP; diff --git a/radio/src/simu.cpp b/radio/src/simu.cpp index 6421a5cd649..9523affbbbc 100644 --- a/radio/src/simu.cpp +++ b/radio/src/simu.cpp @@ -369,7 +369,7 @@ void OpenTxSim::updateKeysAndSwitches(bool start) KEY_Left, KEY_LEFT, KEY_Up, KEY_UP, KEY_Down, KEY_DOWN, -#elif defined(RADIO_TX12) || defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_ZORRO) || defined(RADIO_POCKET) +#elif defined(RADIO_TX12) || defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_ZORRO) || defined(RADIO_MT12) || defined(RADIO_POCKET) KEY_Page_Up, KEY_PAGEUP, KEY_Page_Down, KEY_PAGEDN, KEY_Return, KEY_ENTER, diff --git a/radio/src/targets/common/arm/stm32/bootloader/boot.cpp b/radio/src/targets/common/arm/stm32/bootloader/boot.cpp index d2d2635b4bc..72efdcc0552 100644 --- a/radio/src/targets/common/arm/stm32/bootloader/boot.cpp +++ b/radio/src/targets/common/arm/stm32/bootloader/boot.cpp @@ -45,6 +45,8 @@ #if defined(PCBXLITE) #define BOOTLOADER_KEYS 0x0F +#elif defined(RADIO_MT12) + #define BOOTLOADER_KEYS 0x09 #else #define BOOTLOADER_KEYS 0x42 #endif diff --git a/radio/src/targets/taranis/CMakeLists.txt b/radio/src/targets/taranis/CMakeLists.txt index 3999f8f7fde..33f82ac2632 100644 --- a/radio/src/targets/taranis/CMakeLists.txt +++ b/radio/src/targets/taranis/CMakeLists.txt @@ -225,6 +225,24 @@ elseif(PCB STREQUAL X7) add_definitions(-DMANUFACTURER_RADIOMASTER) set(PXX2 ON) set(ENABLE_SERIAL_PASSTHROUGH ON CACHE BOOL "Enable serial passthrough") + elseif(PCBREV STREQUAL MT12) + set(DEFAULT_INTERNAL_MODULE CROSSFIRE CACHE STRING "Default internal module") + set(INTERNAL_MODULE_SERIAL YES) + set(MODULE_SIZE_SML YES) + set(FLAVOUR mt12) + set(NAVIGATION_TYPE x7) + set(CPU_TYPE_FULL STM32F407xG) + set(ROTARY_ENCODER YES) + set(BLUETOOTH NO) + set(USB_CHARGER YES) + set(AUX_SERIAL NO) + set(HELI NO) + add_definitions(-DRADIO_MT12) + add_definitions(-DMANUFACTURER_RADIOMASTER) + set(PXX2 ON) + set(ENABLE_SERIAL_PASSTHROUGH ON CACHE BOOL "Enable serial passthrough") + set(LUA_MIXER YES) + set(FLEXSW "2" CACHE STRING "Max flex inputs usable as switches") elseif(PCBREV STREQUAL BOXER) set(DEFAULT_INTERNAL_MODULE CROSSFIRE CACHE STRING "Default internal module") set(INTERNAL_MODULE_SERIAL YES) @@ -586,6 +604,13 @@ if(PCB STREQUAL XLITE OR PCB STREQUAL XLITES OR PCBREV STREQUAL COMMANDO8) targets/common/arm/stm32/sticks_pwm_driver.cpp) endif() +if(PCBREV STREQUAL MT12) + set(FIRMWARE_SRC + ${FIRMWARE_SRC} + targets/common/arm/stm32/stm32_ws2812.cpp + boards/generic_stm32/rgb_leds.cpp) +endif() + set(FIRMWARE_SRC ${FIRMWARE_SRC} hal/adc_driver.cpp diff --git a/radio/src/targets/taranis/board.h b/radio/src/targets/taranis/board.h index f41c8610360..d830df0fe75 100644 --- a/radio/src/targets/taranis/board.h +++ b/radio/src/targets/taranis/board.h @@ -31,7 +31,7 @@ #include "opentx_constants.h" #include "board_common.h" -#if defined(RADIO_TX12) || defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_ZORRO) || defined(RADIO_POCKET) +#if defined(RADIO_TX12) || defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_ZORRO) || defined(RADIO_POCKET) || defined(RADIO_MT12) #define NAVIGATION_X7_TX12 #endif @@ -147,6 +147,10 @@ uint8_t getFSPhysicalState(uint8_t index); bool getFSLedState(uint8_t index); #endif +#if defined(ADC_GPIO_PIN_STICK_TH) + #define SURFACE_RADIO true +#endif + PACK(typedef struct { uint8_t pcbrev:2; }) HardwareOptions; @@ -254,6 +258,10 @@ uint8_t isBacklightEnabled(); #define USB_NAME "Radiomaster Zorro" #define USB_MANUFACTURER 'R', 'M', '_', 'T', 'X', ' ', ' ', ' ' /* 8 bytes */ #define USB_PRODUCT 'R', 'M', ' ', 'Z', 'O', 'R', 'R', 'O' /* 8 Bytes */ +#elif defined(RADIO_MT12) + #define USB_NAME "Radiomaster MT12" + #define USB_MANUFACTURER 'R', 'M', '_', 'T', 'X', ' ', ' ', ' ' /* 8 bytes */ + #define USB_PRODUCT 'R', 'M', ' ', 'M', 'T', '1', '2', ' ' /* 8 Bytes */ #elif defined(RADIO_POCKET) #define USB_NAME "Radiomaster Pocket" #define USB_MANUFACTURER 'R', 'M', '_', 'T', 'X', ' ', ' ', ' ' /* 8 bytes */ @@ -386,9 +394,13 @@ void ledBlue(); #define LCD_CONTRAST_MAX 30 #endif +#if defined(RADIO_MT12) +#define LCD_BRIGHTNESS_DEFAULT 50 +#endif + #if defined(OLED_SCREEN) #define LCD_CONTRAST_DEFAULT 254 // full brightness -#elif defined(RADIO_TX12) || defined(RADIO_TX12MK2) || defined(RADIO_BOXER) +#elif defined(RADIO_TX12) || defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_MT12) #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 @@ -453,7 +465,7 @@ void setTopBatteryValue(uint32_t volts); #define BATTERY_DIVIDER 22830 #elif defined (RADIO_T8) || defined(RADIO_COMMANDO8) #define BATTERY_DIVIDER 50000 -#elif defined (RADIO_ZORRO) || defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_POCKET) +#elif defined (RADIO_ZORRO) || defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_MT12) || defined(RADIO_POCKET) #define BATTERY_DIVIDER 23711 // = 2047*128*BATT_SCALE/(100*(VREF*(160+499)/160)) #elif defined (RADIO_LR3PRO) #define BATTERY_DIVIDER 39500 @@ -461,7 +473,7 @@ void setTopBatteryValue(uint32_t volts); #define BATTERY_DIVIDER 26214 #endif -#if defined(RADIO_ZORRO) || defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_POCKET) +#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) #define VOLTAGE_DROP 60 diff --git a/radio/src/targets/taranis/hal.h b/radio/src/targets/taranis/hal.h index 7f3e81ed37f..53cf96cc806 100644 --- a/radio/src/targets/taranis/hal.h +++ b/radio/src/targets/taranis/hal.h @@ -82,11 +82,18 @@ #define KEYS_GPIO_PIN_LEFT LL_GPIO_PIN_7 // PD.07 #define KEYS_GPIO_REG_RIGHT GPIOD #define KEYS_GPIO_PIN_RIGHT LL_GPIO_PIN_3 // PD.03 -#elif defined(RADIO_TX12) || defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_ZORRO) || defined(RADIO_POCKET) +#elif defined(RADIO_TX12) || defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_ZORRO) || defined(RADIO_MT12) || defined(RADIO_POCKET) +#if defined(RADIO_MT12) + #define KEYS_GPIO_REG_PAGEUP GPIOD + #define KEYS_GPIO_PIN_PAGEUP LL_GPIO_PIN_7 // PD.03 + #define KEYS_GPIO_REG_PAGEDN GPIOD + #define KEYS_GPIO_PIN_PAGEDN LL_GPIO_PIN_3 // PD.07 +#else #define KEYS_GPIO_REG_PAGEUP GPIOD #define KEYS_GPIO_PIN_PAGEUP LL_GPIO_PIN_3 // PD.03 #define KEYS_GPIO_REG_PAGEDN GPIOD #define KEYS_GPIO_PIN_PAGEDN LL_GPIO_PIN_7 // PD.07 +#endif #if defined(RADIO_TX12) #define KEYS_GPIO_REG_EXIT GPIOB #define KEYS_GPIO_PIN_EXIT LL_GPIO_PIN_3 // PB.03 @@ -94,7 +101,7 @@ #define KEYS_GPIO_REG_EXIT GPIOC #define KEYS_GPIO_PIN_EXIT LL_GPIO_PIN_5 // PC.05 #endif -#if defined(RADIO_TX12MK2) || defined(RADIO_BOXER) +#if defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_MT12) #define KEYS_GPIO_REG_ENTER GPIOA #define KEYS_GPIO_PIN_ENTER LL_GPIO_PIN_10 // PA.10 #else @@ -266,7 +273,7 @@ #define USE_EXTI15_10_IRQ #define EXTI15_10_IRQ_Priority 5 #endif -#elif defined(RADIO_TX12) || defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_ZORRO) || defined(RADIO_POCKET) +#elif defined(RADIO_TX12) || defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_ZORRO) || defined(RADIO_MT12) || defined(RADIO_POCKET) #define ROTARY_ENCODER_NAVIGATION #define ROTARY_ENCODER_GPIO GPIOE #define ROTARY_ENCODER_GPIO_PIN_A GPIO_Pin_9 // PE.9 @@ -290,7 +297,7 @@ #if defined(RADIO_TX12) #define ROTARY_ENCODER_SUPPORT_BUGGY_WIRING #endif - #if defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_ZORRO) || defined(RADIO_POCKET) + #if defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_ZORRO) || defined(RADIO_MT12) || defined(RADIO_POCKET) #define ROTARY_ENCODER_INVERTED #endif #endif @@ -383,6 +390,27 @@ #define TRIMS_GPIO_PIN_T8D LL_GPIO_PIN_13 // PG.13 #define TRIMS_GPIO_REG_T8U GPIOB #define TRIMS_GPIO_PIN_T8U LL_GPIO_PIN_4 // PB.04 +#elif defined(RADIO_MT12) + #define TRIMS_GPIO_REG_T1R GPIOC + #define TRIMS_GPIO_PIN_T1R LL_GPIO_PIN_1 // PC.01 + #define TRIMS_GPIO_REG_T1L GPIOC + #define TRIMS_GPIO_PIN_T1L LL_GPIO_PIN_2 // PC.02 + #define TRIMS_GPIO_REG_T2R GPIOE + #define TRIMS_GPIO_PIN_T2R LL_GPIO_PIN_3 // PE.03 + #define TRIMS_GPIO_REG_T2L GPIOE + #define TRIMS_GPIO_PIN_T2L LL_GPIO_PIN_4 // PE.04 + #define TRIMS_GPIO_REG_T3R GPIOE + #define TRIMS_GPIO_PIN_T3R LL_GPIO_PIN_5 // PE.05 + #define TRIMS_GPIO_REG_T3L GPIOE + #define TRIMS_GPIO_PIN_T3L LL_GPIO_PIN_6 // PE.06 + #define TRIMS_GPIO_REG_T4R GPIOE + #define TRIMS_GPIO_PIN_T4R LL_GPIO_PIN_7 // PE.07 + #define TRIMS_GPIO_REG_T4L GPIOE + #define TRIMS_GPIO_PIN_T4L LL_GPIO_PIN_8 // PE.08 + #define TRIMS_GPIO_REG_T5R GPIOE + #define TRIMS_GPIO_PIN_T5R LL_GPIO_PIN_14 // PE.14 + #define TRIMS_GPIO_REG_T5L GPIOE + #define TRIMS_GPIO_PIN_T5L LL_GPIO_PIN_15 // PE.15 #elif defined(PCBX7) && !defined(RADIO_COMMANDO8) #define TRIMS_GPIO_REG_LHL GPIOD #define TRIMS_GPIO_PIN_LHL LL_GPIO_PIN_15 // PD.15 @@ -479,7 +507,7 @@ #define SWITCHES_GPIO_PIN_A_H LL_GPIO_PIN_10 // PD.10 #define SWITCHES_GPIO_REG_A_L GPIOD #define SWITCHES_GPIO_PIN_A_L LL_GPIO_PIN_14 // PD.14 -#elif defined(PCBXLITE) || defined(PCBX9LITE) +#elif defined(PCBXLITE) || defined(PCBX9LITE) || defined(RADIO_MT12) #define STORAGE_SWITCH_A #define HARDWARE_SWITCH_A #define SWITCHES_GPIO_REG_A_H GPIOE @@ -585,6 +613,11 @@ #define SWITCHES_GPIO_PIN_B_L LL_GPIO_PIN_15 // PE.15 #define SWITCHES_GPIO_REG_B_H GPIOE #define SWITCHES_GPIO_PIN_B_H LL_GPIO_PIN_7 // PE.07 +#elif defined(RADIO_MT12) + #define STORAGE_SWITCH_B + #define HARDWARE_SWITCH_B + #define SWITCHES_GPIO_REG_B GPIOD + #define SWITCHES_GPIO_PIN_B LL_GPIO_PIN_11 // PD.11 #elif defined(PCBX7) #define STORAGE_SWITCH_B #define HARDWARE_SWITCH_B @@ -669,6 +702,11 @@ #define SWITCHES_GPIO_PIN_C_L LL_GPIO_PIN_2 // PD.02 #define SWITCHES_GPIO_REG_C_H GPIOD #define SWITCHES_GPIO_PIN_C_H LL_GPIO_PIN_1 // PD.01 +#elif defined(RADIO_MT12) + #define STORAGE_SWITCH_C + #define HARDWARE_SWITCH_C + #define SWITCHES_GPIO_REG_C GPIOC + #define SWITCHES_GPIO_PIN_C LL_GPIO_PIN_13 // PC.13 #elif defined(PCBX7) #define STORAGE_SWITCH_C #define HARDWARE_SWITCH_C @@ -738,6 +776,11 @@ #define SWITCHES_GPIO_PIN_D_L LL_GPIO_PIN_0 // PE.00 #define SWITCHES_GPIO_REG_D_H GPIOE #define SWITCHES_GPIO_PIN_D_H LL_GPIO_PIN_1 // PE.01 +#elif defined(RADIO_MT12) + #define STORAGE_SWITCH_D + #define HARDWARE_SWITCH_D + #define SWITCHES_GPIO_REG_D GPIOC + #define SWITCHES_GPIO_PIN_D LL_GPIO_PIN_3 // PC.03 #elif defined(PCBX7) && !defined(RADIO_COMMANDO8) #define STORAGE_SWITCH_D #define HARDWARE_SWITCH_D @@ -825,6 +868,8 @@ #define HARDWARE_SWITCH_E #define SWITCHES_GPIO_REG_E GPIOD #define SWITCHES_GPIO_PIN_E LL_GPIO_PIN_3 // PD.03 +#elif defined(RADIO_MT12) + // ADC based switch/pot #elif defined(PCBX7) // no SWE #else @@ -890,6 +935,8 @@ #define HARDWARE_SWITCH_F #define SWITCHES_GPIO_REG_F GPIOB #define SWITCHES_GPIO_PIN_F LL_GPIO_PIN_5 // PB.05 +#elif defined(RADIO_MT12) + // ADC based switch/pot #elif defined(RADIO_T8) || defined(RADIO_TLITE) || defined(RADIO_TPROV2) || defined(RADIO_COMMANDO8) || defined(RADIO_LR3PRO) || defined(RADIO_POCKET) // no SWF #define STORAGE_SWITCH_F @@ -944,7 +991,7 @@ #define HARDWARE_SWITCH_G #define SWITCHES_GPIO_REG_G GPIOD #define SWITCHES_GPIO_PIN_G LL_GPIO_PIN_15 // PD.15 -#elif defined(PCBX7) || defined(PCBXLITE) || defined(PCBX9LITE) || defined(RADIO_T8) || defined(RADIO_COMMANDO8) || defined(RADIO_POCKET) +#elif defined(PCBX7) || defined(PCBXLITE) || defined(PCBX9LITE) || defined(RADIO_T8) || defined(RADIO_COMMANDO8) || defined(RADIO_MT12) || defined(RADIO_POCKET) // no SWG #else #define STORAGE_SWITCH_G @@ -970,7 +1017,7 @@ #elif defined(RADIO_T8) || defined(RADIO_COMMANDO8) #define STORAGE_SWITCH_H // no SWH -#elif defined(RADIO_TX12) +#elif defined(RADIO_TX12) || defined(RADIO_MT12) #elif defined(RADIO_TX12MK2) || defined(RADIO_BOXER) #define STORAGE_SWITCH_H #elif defined(RADIO_TPROV2) @@ -1035,7 +1082,7 @@ #define HARDWARE_SWITCH_J #define SWITCHES_GPIO_REG_J GPIOD #define SWITCHES_GPIO_PIN_J LL_GPIO_PIN_14 // PD.14 -#elif defined(RADIO_TX12MK2) || defined(RADIO_BOXER) +#elif defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_MT12) // no headers #elif defined(RADIO_TLITE) || defined(RADIO_LR3PRO) // no SWI @@ -1466,6 +1513,27 @@ #define ADC_EXT_CHANNELS { ADC_CHANNEL_RTC_BATT } #define ADC_EXT_SAMPTIME LL_ADC_SAMPLINGTIME_56CYCLES #define ADC_VREF_PREC2 330 +#elif defined(RADIO_MT12) + #define ADC_RCC_AHB1Periph (RCC_AHB1Periph_DMA2) + #define ADC_RCC_APB1Periph 0 + #define ADC_RCC_APB2Periph 0 + #define ADC_GPIO_PIN_STICK_TH LL_GPIO_PIN_0 // PA.00 + #define ADC_GPIO_PIN_STICK_ST LL_GPIO_PIN_1 // PA.01 + #define ADC_CHANNEL_STICK_TH LL_ADC_CHANNEL_0 // ADC1_IN0 + #define ADC_CHANNEL_STICK_ST LL_ADC_CHANNEL_1 // ADC1_IN1 + #define ADC_GPIO_PIN_POT1 LL_GPIO_PIN_2 // PA.02 + #define ADC_GPIO_PIN_POT2 LL_GPIO_PIN_3 // PA.03 + #define ADC_GPIO_PIN_POT3 LL_GPIO_PIN_5 // PA.05 + #define ADC_GPIO_PIN_POT4 LL_GPIO_PIN_6 // PA.06 + #define ADC_GPIO_PIN_BATT LL_GPIO_PIN_0 // PC.00 + #define ADC_CHANNEL_POT1 LL_ADC_CHANNEL_2 // ADC123_IN2 + #define ADC_CHANNEL_POT2 LL_ADC_CHANNEL_3 // ADC123_IN3 + #define ADC_CHANNEL_POT3 LL_ADC_CHANNEL_5 // ADC12_IN5 + #define ADC_CHANNEL_POT4 LL_ADC_CHANNEL_6 // ADC12_IN6 + #define ADC_CHANNEL_BATT LL_ADC_CHANNEL_10 // ADC123_IN10 + #define ADC_GPIOA_PINS (ADC_GPIO_PIN_STICK_TH | ADC_GPIO_PIN_STICK_ST | ADC_GPIO_PIN_POT1 | ADC_GPIO_PIN_POT2 | ADC_GPIO_PIN_POT3 | ADC_GPIO_PIN_POT4) + #define ADC_GPIOC_PINS (ADC_GPIO_PIN_BATT) + #define ADC_VREF_PREC2 330 #elif defined(PCBX7) #define HARDWARE_POT1 #define HARDWARE_POT2 @@ -1566,6 +1634,8 @@ #define ADC_DIRECTION {1,-1,1,-1, 1,1, 1, 1} #elif defined(RADIO_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} #elif defined(PCBX7) #define ADC_DIRECTION {-1,1,-1,1, 1,1, 1, 1} #elif defined(PCBX9LITE) @@ -1686,7 +1756,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_TX12MK2) || defined(RADIO_BOXER) +#elif defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_MT12) #define STATUS_LEDS #define GPIO_LED_GPIO_ON GPIO_SetBits #define GPIO_LED_GPIO_OFF GPIO_ResetBits @@ -1726,6 +1796,22 @@ #define LED_BLUE_GPIO_PIN GPIO_Pin_6 // PE.06 #endif +#if defined(RADIO_MT12) + #define LED_STRIP_LENGTH 7 + #define LED_STRIP_GPIO GPIOA + #define LED_STRIP_GPIO_PIN_DATA LL_GPIO_PIN_8 // PA.08 / TIM1_CH1 + #define LED_STRIP_GPIO_PIN_AF LL_GPIO_AF_1 // TIM1 / TIM2 + #define LED_STRIP_TIMER TIM1 + #define LED_STRIP_TIMER_FREQ (PERI2_FREQUENCY * TIMER_MULT_APB2) + #define LED_STRIP_TIMER_CHANNEL LL_TIM_CHANNEL_CH1 + #define LED_STRIP_TIMER_DMA DMA2 + #define LED_STRIP_TIMER_DMA_CHANNEL LL_DMA_CHANNEL_6 + #define LED_STRIP_TIMER_DMA_STREAM LL_DMA_STREAM_5 + #define LED_STRIP_TIMER_DMA_IRQn DMA2_Stream5_IRQn + #define LED_STRIP_TIMER_DMA_IRQHandler DMA2_Stream5_IRQHandler + #define LED_STRIP_REFRESH_PERIOD 50 //ms +#endif + #if defined(FUNCTION_SWITCHES) #if defined(RADIO_T20) #define FS_RCC_AHB1Periph RCC_AHB1Periph_GPIOF @@ -1825,7 +1911,7 @@ #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) +#elif defined(RADIO_ZORRO) || defined(RADIO_POCKET) || defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_MT12) #define INTMODULE_RCC_AHB1Periph (RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_DMA2) #define INTMODULE_PWR_GPIO GPIOC #define INTMODULE_PWR_GPIO_PIN GPIO_Pin_4 // PC.04 @@ -1949,8 +2035,8 @@ #endif // External Module -#if defined(PCBXLITE) || defined(PCBX9LITE) || defined(RADIO_X9DP2019) || defined(PCBX7ACCESS) || defined(RADIO_ZORRO) || defined(RADIO_POCKET) || defined(RADIO_TX12MK2) || defined(RADIO_BOXER) - #if defined(RADIO_X9DP2019) || defined(RADIO_X7ACCESS) || defined(RADIO_ZORRO)|| defined(RADIO_POCKET) || defined(RADIO_TX12MK2) || defined(RADIO_BOXER) +#if defined(PCBXLITE) || defined(PCBX9LITE) || defined(RADIO_X9DP2019) || defined(PCBX7ACCESS) || defined(RADIO_ZORRO) || defined(RADIO_POCKET) || defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_MT12) + #if defined(RADIO_X9DP2019) || defined(RADIO_X7ACCESS) || defined(RADIO_ZORRO)|| defined(RADIO_POCKET) || defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_MT12) #define EXTMODULE_RCC_AHB1Periph (RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_DMA2) #define EXTMODULE_PWR_GPIO GPIOD #define EXTMODULE_PWR_GPIO_PIN GPIO_Pin_8 // PD.08 @@ -2057,7 +2143,7 @@ #define TRAINER_TIMER_IRQn TIM4_IRQn #define TRAINER_TIMER_IRQHandler TIM4_IRQHandler #else - #define TRAINER_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_DMA1) + #define TRAINER_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_DMA1) #define TRAINER_GPIO GPIOC #define TRAINER_IN_GPIO_PIN LL_GPIO_PIN_8 // PC.08 #define TRAINER_IN_TIMER_Channel LL_TIM_CHANNEL_CH3 @@ -2066,6 +2152,9 @@ #if defined(RADIO_T20) #define TRAINER_DETECT_GPIO GPIOE #define TRAINER_DETECT_GPIO_PIN LL_GPIO_PIN_8 // PE.03 +#elif defined(RADIO_MT12) + #define TRAINER_DETECT_GPIO GPIOD + #define TRAINER_DETECT_GPIO_PIN LL_GPIO_PIN_14 // PD.14 #else #define TRAINER_DETECT_GPIO GPIOA #define TRAINER_DETECT_GPIO_PIN LL_GPIO_PIN_8 // PA.08 @@ -2284,7 +2373,7 @@ // Trainer / Trainee from the module bay #if defined(PCBX9LITE) || defined(PCBXLITE) || defined(RADIO_X9DP2019) || \ - defined(PCBX7ACCESS) || defined(RADIO_ZORRO) || defined(RADIO_POCKET) || defined(RADIO_TX12MK2) || defined(RADIO_BOXER) + defined(PCBX7ACCESS) || defined(RADIO_ZORRO) || defined(RADIO_POCKET) || defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_MT12) #define TRAINER_MODULE_CPPM #define TRAINER_MODULE_CPPM_TIMER TIM3 #define TRAINER_MODULE_CPPM_FREQ (PERI1_FREQUENCY * TIMER_MULT_APB1) @@ -2428,7 +2517,7 @@ #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) +#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) #define LCD_VERTICAL_INVERT #endif #if defined(RADIO_LR3PRO) || defined(RADIO_TPROV2) || defined(RADIO_T20) @@ -2654,7 +2743,7 @@ #endif // Haptic -#if defined(PCBXLITE) || defined(PCBX9LITE) || defined(RADIO_ZORRO) || defined(RADIO_POCKET) || defined(RADIO_TX12MK2)|| defined(RADIO_BOXER) +#if defined(PCBXLITE) || defined(PCBX9LITE) || defined(RADIO_ZORRO) || defined(RADIO_POCKET) || defined(RADIO_TX12MK2)|| defined(RADIO_BOXER) || defined(RADIO_MT12) #define HAPTIC_PWM #define HAPTIC_RCC_AHB1Periph RCC_AHB1Periph_GPIOB #define HAPTIC_RCC_APB1Periph RCC_APB1Periph_TIM2 diff --git a/radio/src/targets/taranis/lcd_driver_spi.cpp b/radio/src/targets/taranis/lcd_driver_spi.cpp index 974d4ce8e10..0b40ee587c9 100644 --- a/radio/src/targets/taranis/lcd_driver_spi.cpp +++ b/radio/src/targets/taranis/lcd_driver_spi.cpp @@ -29,7 +29,7 @@ #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_POCKET) || defined(RADIO_T8) || defined(RADIO_COMMANDO8) || defined(RADIO_TPRO) +#elif defined(RADIO_FAMILY_JUMPER_T12) || defined(RADIO_TX12) || defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_ZORRO) || defined(RADIO_POCKET) || defined(RADIO_T8) || defined(RADIO_COMMANDO8) || defined(RADIO_TPRO) || defined(RADIO_MT12) #define LCD_CONTRAST_OFFSET -10 #else #define LCD_CONTRAST_OFFSET 160 diff --git a/radio/src/translations/en.h b/radio/src/translations/en.h index ff93958aec5..0fdb11c4406 100644 --- a/radio/src/translations/en.h +++ b/radio/src/translations/en.h @@ -386,7 +386,7 @@ #define TR_ADJUST_RTC "Adjust RTC" #define TR_GPS "GPS" #define TR_DEF_CHAN_ORD TR("Def chan order", "Default channel order") -#define TR_STICKS "Sticks" +#define TR_STICKS "Axis" #define TR_POTS "Pots" #define TR_SWITCHES "Switches" #define TR_SWITCHES_DELAY TR("Play delay", "Play delay (sw. mid pos)") @@ -400,15 +400,15 @@ #if defined(PCBHORUS) #define TR_MENUTOSTART "Press [Enter] to start" #define TR_SETMIDPOINT "Center sticks/pots/sliders and press [Enter]" - #define TR_MOVESTICKSPOTS "Move sticks/pots/sliders and press [Enter]" + #define TR_MOVESTICKSPOTS "Move axis/pots/sliders and press [Enter]" #elif defined(COLORLCD) #define TR_MENUTOSTART TR_ENTER " TO START" - #define TR_SETMIDPOINT "CENTER STICKS/SLIDERS" - #define TR_MOVESTICKSPOTS "MOVE STICKS/POTS" + #define TR_SETMIDPOINT "CENTER AXIS/SLIDERS" + #define TR_MOVESTICKSPOTS "MOVE AXIS/POTS" #else #define TR_MENUTOSTART CENTER "\010" TR_ENTER " TO START" - #define TR_SETMIDPOINT TR(CENTER "\004SET STICKS MIDPOINT", CENTER "\004CENTER STICKS/SLIDERS") - #define TR_MOVESTICKSPOTS CENTER "\006MOVE STICKS/POTS" + #define TR_SETMIDPOINT TR(CENTER "\004SET AXIS MIDPOINT", CENTER "\004CENTER AXIS/SLIDERS") + #define TR_MOVESTICKSPOTS CENTER "\006MOVE AXIS/POTS" #define TR_MENUWHENDONE CENTER "\006" TR_ENTER " WHEN DONE" #endif #define TR_TXnRX "Tx:\0Rx:" @@ -613,8 +613,8 @@ #define TR_MENU_MODULES_RX_VERSION "MODULES / RX VERSION" #define TR_MENU_FIRM_OPTIONS "FIRMWARE OPTIONS" #define TR_IMU "IMU" -#define TR_STICKS_POTS_SLIDERS "Sticks/Pots/Sliders" -#define TR_PWM_STICKS_POTS_SLIDERS "PWM Sticks/Pots/Sliders" +#define TR_STICKS_POTS_SLIDERS "Axis/Pots/Sliders" +#define TR_PWM_STICKS_POTS_SLIDERS "PWM Axis/Pots/Sliders" #define TR_RF_PROTOCOL "RF Protocol" #define TR_MODULE_OPTIONS "Module options" #define TR_POWER "Power" @@ -821,7 +821,7 @@ #define TR_PASTE_BEFORE "Paste before" #define TR_DELETE "Delete" #define TR_INSERT "Insert" -#define TR_RESET_FLIGHT "Reset flight" +#define TR_RESET_FLIGHT "Reset session" #define TR_RESET_TIMER1 "Reset timer1" #define TR_RESET_TIMER2 "Reset timer2" #define TR_RESET_TIMER3 "Reset timer3" @@ -918,7 +918,7 @@ #define TR_PT "pt" #define TR_PTS "pts" #define TR_SMOOTH "Smooth" -#define TR_COPY_STICKS_TO_OFS TR("Cpy stick->subtrim", "Copy sticks to subtrim") +#define TR_COPY_STICKS_TO_OFS TR("Cpy stick->subtrim", "Copy axis to subtrim") #define TR_COPY_MIN_MAX_TO_OUTPUTS TR("Cpy min/max to all", "Copy min/max/center to all outputs") #define TR_COPY_TRIMS_TO_OFS TR("Cpy trim->subtrim", "Copy trims to subtrim") #define TR_INCDEC "Inc/Decrement" @@ -926,7 +926,7 @@ #define TR_MIXSOURCE "Mixer source" #define TR_CONSTANT "Constant" #define TR_PREFLIGHT_POTSLIDER_CHECK "OFF","ON","AUTO" -#define TR_PREFLIGHT "Preflight Checks" +#define TR_PREFLIGHT "Pre-start Checks" #define TR_CHECKLIST TR(INDENT "Checklist", INDENT "Display checklist") #define TR_CHECKLIST_INTERACTIVE TR3(INDENT "C-Interact", INDENT "Interact. checklist", INDENT "Interactive checklist") #define TR_AUX_SERIAL_MODE "Serial port" @@ -1118,7 +1118,7 @@ #define TR_TEXT_VIEWER "Text Viewer" #define TR_MENU_INPUTS STR_CHAR_INPUT "Inputs" #define TR_MENU_LUA STR_CHAR_LUA "Lua scripts" -#define TR_MENU_STICKS STR_CHAR_STICK "Sticks" +#define TR_MENU_STICKS STR_CHAR_STICK "Axis" #define TR_MENU_POTS STR_CHAR_POT "Pots" #define TR_MENU_MIN STR_CHAR_FUNCTION "MIN" #define TR_MENU_MAX STR_CHAR_FUNCTION "MAX" diff --git a/radio/util/build-firmware.py b/radio/util/build-firmware.py index 8330fc7f450..3f524e01a4c 100755 --- a/radio/util/build-firmware.py +++ b/radio/util/build-firmware.py @@ -149,6 +149,21 @@ def main(): cmake_options["PCBREV"] = "ZORRO" firmware_options = options_radiomaster_zorro maxsize = 65536 * 8 + elif board_name == "boxer": + cmake_options["PCB"] = "X7" + cmake_options["PCBREV"] = "BOXER" + firmware_options = options_radiomaster_boxer + maxsize = 65536 * 8 * 2 + elif board_name == "pocket": + cmake_options["PCB"] = "X7" + cmake_options["PCBREV"] = "POCKET" + firmware_options = options_radiomaster_pocket + maxsize = 65536 * 8 + elif board_name == "mt12": + cmake_options["PCB"] = "X7" + cmake_options["PCBREV"] = "MT12" + firmware_options = options_radiomaster_mt12 + maxsize = 65536 * 8 * 2 elif board_name == "t8": cmake_options["PCB"] = "X7" cmake_options["PCBREV"] = "T8" diff --git a/radio/util/fwoptions.py b/radio/util/fwoptions.py index a74b8189e95..1eacbf20a4a 100755 --- a/radio/util/fwoptions.py +++ b/radio/util/fwoptions.py @@ -300,6 +300,30 @@ "internalelrs": ("INTERNAL_MODULE_ELRS", "YES", "NO"), } +options_radiomaster_pocket = { + "noheli": ("HELI", "NO", "YES"), + "lua": ("LUA", "YES", "NO_MODEL_SCRIPTS"), + "nogvars": ("GVARS", "NO", "YES"), + "faimode": ("FAI", "YES", None), + "faichoice": ("FAI", "CHOICE", None), + "nooverridech": ("OVERRIDE_CHANNEL_FUNCTION", "NO", "YES"), + "flexr9m": ("MODULE_PROTOCOL_FLEX", "YES", None), + "afhds3": ("AFHDS3", "YES", "NO"), + "internalelrs": ("INTERNAL_MODULE_ELRS", "YES", "NO"), +} + +options_radiomaster_mt12 = { + "noheli": ("HELI", "NO", "YES"), + "lua": ("LUA", "YES", "NO_MODEL_SCRIPTS"), + "nogvars": ("GVARS", "NO", "YES"), + "faimode": ("FAI", "YES", None), + "faichoice": ("FAI", "CHOICE", None), + "nooverridech": ("OVERRIDE_CHANNEL_FUNCTION", "NO", "YES"), + "flexr9m": ("MODULE_PROTOCOL_FLEX", "YES", None), + "afhds3": ("AFHDS3", "YES", "NO"), + "internalelrs": ("INTERNAL_MODULE_ELRS", "YES", "NO"), +} + options_radiomaster_t8 = { "noheli": ("HELI", "NO", "YES"), "lua": ("LUA", "YES", "NO_MODEL_SCRIPTS"), diff --git a/radio/util/hw_defs/legacy_names.py b/radio/util/hw_defs/legacy_names.py index 70e47544382..77f21d27c08 100644 --- a/radio/util/hw_defs/legacy_names.py +++ b/radio/util/hw_defs/legacy_names.py @@ -258,6 +258,45 @@ } } }, + { + "targets": {"mt12"}, + "inputs": { + "ST": { + "yaml": "ST" + }, + "TH": { + "yaml": "TH" + }, + "P1": { + "yaml": "POT1", + "lua": "s1", + "label": "S1", + "short_label": "1", + "description": "Potentiometer 1" + }, + "P2": { + "yaml": "POT2", + "lua": "s2", + "label": "S2", + "short_label": "2", + "description": "Potentiometer 2" + }, + "P3": { + "yaml": "POT3", + "lua": "s3", + "label": "S3", + "short_label": "3", + "description": "Analog 3" + }, + "P4": { + "yaml": "POT4", + "lua": "s4", + "label": "S4", + "short_label": "4", + "description": "Analog 4" + } + } + }, { "targets": { "commando8", diff --git a/radio/util/hw_defs/pot_config.py b/radio/util/hw_defs/pot_config.py index d5088e747f1..637ac16717e 100644 --- a/radio/util/hw_defs/pot_config.py +++ b/radio/util/hw_defs/pot_config.py @@ -14,6 +14,12 @@ "P1": {"default": "POT_CENTER"}, "P2": {"default": "POT_CENTER"} }, + "mt12": { + "P1": {"default": "POT"}, + "P2": {"default": "POT"}, + "P3": {"default": "NONE"}, + "P4": {"default": "NONE"} + }, "tpro": { "P1": {"default": "POT_CENTER"}, "P2": {"default": "POT_CENTER"} diff --git a/radio/util/hw_defs/switch_config.py b/radio/util/hw_defs/switch_config.py index 230de304476..3d7cb80cd25 100644 --- a/radio/util/hw_defs/switch_config.py +++ b/radio/util/hw_defs/switch_config.py @@ -47,6 +47,14 @@ "SG": {"default": "3POS"}, "SH": {"default": "TOGGLE"} }, + "mt12": { + # left side + "SA": { "default": "3POS", "display": [ 0, 0 ] }, + "SB": { "default": "TOGGLE", "display": [ 0, 1 ] }, + # right side + "SC": { "default": "TOGGLE", "display": [ 1, 0 ] }, + "SD": { "default": "TOGGLE", "display": [ 1, 1 ] }, + }, "t8": { # left side "SA": {"default": "2POS", "display": [0, 0]}, diff --git a/tools/build-gh.sh b/tools/build-gh.sh index a0020a27cdf..aa154af5959 100755 --- a/tools/build-gh.sh +++ b/tools/build-gh.sh @@ -125,6 +125,9 @@ do pocket) BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=POCKET" ;; + mt12) + BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=MT12" + ;; tlite) BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=TLITE" ;; diff --git a/tools/build-radiomaster.py b/tools/build-radiomaster.py index 78f87e0ffd5..77b494930de 100755 --- a/tools/build-radiomaster.py +++ b/tools/build-radiomaster.py @@ -59,6 +59,26 @@ "PCBREV": "BOXER", "DEFAULT_MODE": "2", }, + "POCKET_1": { + "PCB": "X7", + "PCBREV": "POCKET", + "DEFAULT_MODE": "1", + }, + "POCKET_2": { + "PCB": "X7", + "PCBREV": "POCKET", + "DEFAULT_MODE": "2", + }, + "MT12_1": { + "PCB": "X7", + "PCBREV": "MT12", + "DEFAULT_MODE": "1", + }, + "MT12_2": { + "PCB": "X7", + "PCBREV": "MT12", + "DEFAULT_MODE": "2", + }, "T8_1": { "PCB": "X7", "PCBREV": "T8",