feat: Add support for Radiomaster MT12 (#4277)

Co-authored-by: 3djc <lesitewebdejc@hotmail.com>
Co-authored-by: raphaelcoeffic <1050031+raphaelcoeffic@users.noreply.github.com>
Co-authored-by: Peter Feerick <peter.feerick@gmail.com>
This commit is contained in:
Raphael Coeffic
2023-11-04 18:18:17 +10:00
committed by GitHub
co-authored by 3djc raphaelcoeffic Peter Feerick
parent cd89e06194
commit ca5355e0c7
22 changed files with 300 additions and 47 deletions
+7 -4
View File
@@ -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
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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
+3
View File
@@ -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);
@@ -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) {
+1 -1
View File
@@ -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) )
+3 -3
View File
@@ -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()
+5 -1
View File
@@ -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;
+1 -1
View File
@@ -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,
@@ -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
+25
View File
@@ -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
+16 -4
View File
@@ -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
+105 -16
View File
@@ -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
+1 -1
View File
@@ -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
+12 -12
View File
@@ -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"
+15
View File
@@ -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"
+24
View File
@@ -300,6 +300,30 @@ options_radiomaster_boxer = {
"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"),
+39
View File
@@ -258,6 +258,45 @@ LEGACY_NAMES = [
}
}
},
{
"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",
+6
View File
@@ -14,6 +14,12 @@ POT_CONFIG = {
"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"}
+8
View File
@@ -47,6 +47,14 @@ SWITCH_CONFIG = {
"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]},
+3
View File
@@ -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"
;;
+20
View File
@@ -59,6 +59,26 @@ boards = {
"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",