diff --git a/.github/workflows/actions.yml b/.github/workflows/actions.yml
index b24060010e..35ff91170d 100644
--- a/.github/workflows/actions.yml
+++ b/.github/workflows/actions.yml
@@ -49,6 +49,7 @@ jobs:
- pl18
- pl18ev
- t12
+ - t12max
- t15
- t16
- t18
@@ -97,7 +98,7 @@ jobs:
target:
- nv14;el18
- pl18;pl18ev
- - t12
+ - t12;t12max
- t15;t16;t18
- t8;zorro;pocket;mt12;commando8
- tlite;tpro;tprov2;lr3pro
diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml
index 1707e2a56a..68fa7cc8ca 100644
--- a/.github/workflows/nightly.yml
+++ b/.github/workflows/nightly.yml
@@ -18,7 +18,7 @@ jobs:
target:
- nv14;el18
- pl18;pl18ev
- - t12
+ - t12;t12max
- t15;t16;t18
- t8;zorro;pocket;mt12;commando8
- tlite;tpro;tprov2;lr3pro
diff --git a/companion/src/companion.qrc b/companion/src/companion.qrc
index 4f292828b2..17c6a48cf6 100644
--- a/companion/src/companion.qrc
+++ b/companion/src/companion.qrc
@@ -261,6 +261,14 @@
images/simulator/Fatfish/F16/right.png
images/simulator/Fatfish/F16/top.png
images/simulator/Fatfish/F16/bottom.png
+ images/simulator/JumperT12max/bottom.png
+ images/simulator/JumperT12max/left.png
+ images/simulator/JumperT12max/right.png
+ images/simulator/JumperT12max/right-ent.png
+ images/simulator/JumperT12max/top.png
+ images/simulator/JumperT12max/exit.png
+ images/simulator/JumperT12max/menu.png
+ images/simulator/JumperT12max/page.png
images/simulator/JumperT14/bottom.png
images/simulator/JumperT14/left.png
images/simulator/JumperT14/right.png
diff --git a/companion/src/firmwares/boards.cpp b/companion/src/firmwares/boards.cpp
index 35149d6df9..95e270c0b1 100644
--- a/companion/src/firmwares/boards.cpp
+++ b/companion/src/firmwares/boards.cpp
@@ -183,6 +183,7 @@ int Boards::getEEpromSize(Board::Type board)
case BOARD_BETAFPV_LR3PRO:
case BOARD_IFLIGHT_COMMANDO8:
case BOARD_JUMPER_T12:
+ case BOARD_JUMPER_T12MAX:
case BOARD_JUMPER_T14:
case BOARD_JUMPER_T20:
case BOARD_JUMPER_T20V2:
@@ -237,6 +238,7 @@ int Boards::getFlashSize(Type board)
case BOARD_BETAFPV_LR3PRO:
case BOARD_IFLIGHT_COMMANDO8:
case BOARD_JUMPER_T12:
+ case BOARD_JUMPER_T12MAX:
case BOARD_JUMPER_T14:
case BOARD_JUMPER_T20:
case BOARD_JUMPER_T20V2:
@@ -534,6 +536,8 @@ QString Boards::getBoardName(Board::Type board)
return "Jumper T-Pro";
case BOARD_JUMPER_TPROV2:
return "Jumper T-Pro V2";
+ case BOARD_JUMPER_T12MAX:
+ return "Jumper T12 MAX";
case BOARD_JUMPER_T14:
return "Jumper T14";
case BOARD_JUMPER_T15:
@@ -678,6 +682,7 @@ int Boards::getDefaultInternalModules(Board::Type board)
case BOARD_RADIOMASTER_POCKET:
case BOARD_RADIOMASTER_TX12_MK2:
case BOARD_IFLIGHT_COMMANDO8:
+ case BOARD_JUMPER_T12MAX:
case BOARD_JUMPER_T14:
case BOARD_JUMPER_T15:
case BOARD_JUMPER_T20:
diff --git a/companion/src/firmwares/boards.h b/companion/src/firmwares/boards.h
index 521e0a89d3..e6d1a4169e 100644
--- a/companion/src/firmwares/boards.h
+++ b/companion/src/firmwares/boards.h
@@ -61,6 +61,7 @@ namespace Board {
BOARD_TARANIS_X9LITE,
BOARD_TARANIS_X9LITES,
BOARD_JUMPER_T12,
+ BOARD_JUMPER_T12MAX,
BOARD_JUMPER_T14,
BOARD_JUMPER_T15,
BOARD_JUMPER_T16,
@@ -446,6 +447,11 @@ inline bool IS_JUMPER_T16(Board::Type board)
return board == Board::BOARD_JUMPER_T16;
}
+inline bool IS_JUMPER_T12MAX(Board::Type board)
+{
+ return board == Board::BOARD_JUMPER_T12MAX;
+}
+
inline bool IS_JUMPER_T14(Board::Type board)
{
return board == Board::BOARD_JUMPER_T14;
@@ -509,6 +515,7 @@ inline bool IS_FAMILY_T16(Board::Type board)
inline bool IS_FAMILY_T12(Board::Type board)
{
return board == Board::BOARD_JUMPER_T12 ||
+ board == Board::BOARD_JUMPER_T12MAX ||
board == Board::BOARD_JUMPER_T14 ||
board == Board::BOARD_JUMPER_T20 ||
board == Board::BOARD_JUMPER_T20V2 ||
diff --git a/companion/src/firmwares/opentx/opentxinterface.cpp b/companion/src/firmwares/opentx/opentxinterface.cpp
index 3809c52069..e1c626ba40 100644
--- a/companion/src/firmwares/opentx/opentxinterface.cpp
+++ b/companion/src/firmwares/opentx/opentxinterface.cpp
@@ -68,6 +68,8 @@ const char * OpenTxEepromInterface::getName()
return "EdgeTX for Jumper T-Pro";
case BOARD_JUMPER_TPROV2:
return "EdgeTX for Jumper T-Pro V2";
+ case BOARD_JUMPER_T12MAX:
+ return "EdgeTX for Jumper T12 MAX";
case BOARD_JUMPER_T14:
return "EdgeTX for Jumper T14";
case BOARD_JUMPER_T15:
@@ -1448,6 +1450,13 @@ void registerOpenTxFirmwares()
registerOpenTxFirmware(firmware);
addOpenTxRfOptions(firmware, FLEX);
+ /* Jumper T12 MAX board */
+ firmware = new OpenTxFirmware(FIRMWAREID("t12max"), Firmware::tr("Jumper T12 MAX"), BOARD_JUMPER_T12MAX);
+ addOpenTxFrskyOptions(firmware);
+ firmware->addOption("internalelrs", Firmware::tr("Select if internal ELRS module is installed"));
+ addOpenTxRfOptions(firmware, NONE);
+ registerOpenTxFirmware(firmware);
+
/* Jumper T14 board */
firmware = new OpenTxFirmware(FIRMWAREID("t14"), Firmware::tr("Jumper T14"), BOARD_JUMPER_T14);
addOpenTxFrskyOptions(firmware);
diff --git a/companion/src/images/simulator/JumperT12max/bottom.png b/companion/src/images/simulator/JumperT12max/bottom.png
new file mode 100644
index 0000000000..57a329bedd
Binary files /dev/null and b/companion/src/images/simulator/JumperT12max/bottom.png differ
diff --git a/companion/src/images/simulator/JumperT12max/exit.png b/companion/src/images/simulator/JumperT12max/exit.png
new file mode 100644
index 0000000000..4e00002950
Binary files /dev/null and b/companion/src/images/simulator/JumperT12max/exit.png differ
diff --git a/companion/src/images/simulator/JumperT12max/left.png b/companion/src/images/simulator/JumperT12max/left.png
new file mode 100644
index 0000000000..ddfabd3928
Binary files /dev/null and b/companion/src/images/simulator/JumperT12max/left.png differ
diff --git a/companion/src/images/simulator/JumperT12max/menu.png b/companion/src/images/simulator/JumperT12max/menu.png
new file mode 100644
index 0000000000..975f8a64ed
Binary files /dev/null and b/companion/src/images/simulator/JumperT12max/menu.png differ
diff --git a/companion/src/images/simulator/JumperT12max/page.png b/companion/src/images/simulator/JumperT12max/page.png
new file mode 100644
index 0000000000..2418246cca
Binary files /dev/null and b/companion/src/images/simulator/JumperT12max/page.png differ
diff --git a/companion/src/images/simulator/JumperT12max/right-ent.png b/companion/src/images/simulator/JumperT12max/right-ent.png
new file mode 100644
index 0000000000..f342273e01
Binary files /dev/null and b/companion/src/images/simulator/JumperT12max/right-ent.png differ
diff --git a/companion/src/images/simulator/JumperT12max/right.png b/companion/src/images/simulator/JumperT12max/right.png
new file mode 100644
index 0000000000..25fd425e56
Binary files /dev/null and b/companion/src/images/simulator/JumperT12max/right.png differ
diff --git a/companion/src/images/simulator/JumperT12max/top.png b/companion/src/images/simulator/JumperT12max/top.png
new file mode 100644
index 0000000000..04e8490be4
Binary files /dev/null and b/companion/src/images/simulator/JumperT12max/top.png differ
diff --git a/companion/src/simulation/CMakeLists.txt b/companion/src/simulation/CMakeLists.txt
index 5a829e6525..3b7ddaacbb 100644
--- a/companion/src/simulation/CMakeLists.txt
+++ b/companion/src/simulation/CMakeLists.txt
@@ -35,6 +35,7 @@ set(${PROJECT_NAME}_SRCS
simulateduiwidgetEL18.cpp
simulateduiwidgetFatfishF16.cpp
simulateduiwidgetJumperT12.cpp
+ simulateduiwidgetJumperT12max.cpp
simulateduiwidgetJumperT14.cpp
simulateduiwidgetJumperT15.cpp
simulateduiwidgetJumperT16.cpp
diff --git a/companion/src/simulation/simulateduiwidget.h b/companion/src/simulation/simulateduiwidget.h
index 706a5f043f..fe35db331b 100644
--- a/companion/src/simulation/simulateduiwidget.h
+++ b/companion/src/simulation/simulateduiwidget.h
@@ -144,6 +144,7 @@ namespace Ui {
class SimulatedUIWidgetJumperT12;
class SimulatedUIWidgetJumperTLITE;
class SimulatedUIWidgetJumperTPRO;
+ class SimulatedUIWidgetJumperT12max;
class SimulatedUIWidgetJumperT14;
class SimulatedUIWidgetJumperT15;
class SimulatedUIWidgetJumperT16;
@@ -357,6 +358,18 @@ class SimulatedUIWidgetJumperT16: public SimulatedUIWidget
Ui::SimulatedUIWidgetJumperT16 * ui;
};
+class SimulatedUIWidgetJumperT12max: public SimulatedUIWidget
+{
+ Q_OBJECT
+
+public:
+ explicit SimulatedUIWidgetJumperT12max(SimulatorInterface * simulator, QWidget * parent = nullptr);
+ virtual ~SimulatedUIWidgetJumperT12max();
+
+private:
+ Ui::SimulatedUIWidgetJumperT12max * ui;
+};
+
class SimulatedUIWidgetJumperT14: public SimulatedUIWidget
{
Q_OBJECT
diff --git a/companion/src/simulation/simulateduiwidgetJumperT12max.cpp b/companion/src/simulation/simulateduiwidgetJumperT12max.cpp
new file mode 100644
index 0000000000..6587358281
--- /dev/null
+++ b/companion/src/simulation/simulateduiwidgetJumperT12max.cpp
@@ -0,0 +1,54 @@
+#include "simulateduiwidget.h"
+#include "ui_simulateduiwidgetJumperT12max.h"
+
+// NOTE: RadioUiAction(NUMBER,...): NUMBER relates to enum EnumKeys in the specific board.h
+
+SimulatedUIWidgetJumperT12max::SimulatedUIWidgetJumperT12max(SimulatorInterface *simulator, QWidget * parent):
+ SimulatedUIWidget(simulator, parent),
+ ui(new Ui::SimulatedUIWidgetJumperT12max)
+{
+ RadioUiAction * act;
+
+ ui->setupUi(this);
+
+ act = new RadioUiAction(0, QList() << Qt::Key_PageUp << Qt::Key_Up, SIMU_STR_HLP_KEYS_GO_UP, SIMU_STR_HLP_ACT_MENU_ICN);
+ addRadioWidget(ui->leftbuttons->addArea(QRect(17, 45, 90, 30), "JumperT12max/menu.png", act));
+
+ act = new RadioUiAction(3, QList() << Qt::Key_PageDown << Qt::Key_Down, SIMU_STR_HLP_KEYS_GO_DN, SIMU_STR_HLP_ACT_PAGE);
+ addRadioWidget(ui->leftbuttons->addArea(QRect(17, 107, 90, 30), "JumperT12max/page.png", act));
+
+ act = new RadioUiAction(1, QList() << Qt::Key_Delete << Qt::Key_Escape << Qt::Key_Backspace, SIMU_STR_HLP_KEYS_EXIT, SIMU_STR_HLP_ACT_EXIT);
+ addRadioWidget(ui->leftbuttons->addArea(QRect(17, 180, 90, 30), "JumperT12max/exit.png", act));
+
+ m_mouseMidClickAction = new RadioUiAction(2, QList() << Qt::Key_Enter << Qt::Key_Return, SIMU_STR_HLP_KEYS_ACTIVATE, SIMU_STR_HLP_ACT_ROT_DN);
+ addRadioWidget(ui->rightbuttons->addArea(QRect(130, 65, 70, 130), "JumperT12max/right-ent.png", m_mouseMidClickAction));
+
+ //addRadioWidget(ui->leftbuttons->addArea(QRect(10, 65, 70, 50), "JumperT12max/left_scrnshot.png", m_screenshotAction));
+
+ m_backlightColors << QColor(215, 243, 255); // X7 Blue
+ m_backlightColors << QColor(166,247,159);
+ m_backlightColors << QColor(247,159,166);
+ m_backlightColors << QColor(255,195,151);
+ m_backlightColors << QColor(247,242,159);
+
+ setLcd(ui->lcd);
+
+ QString css = "#radioUiWidget {"
+ "background-color: qlineargradient(spread:reflect, x1:0, y1:0, x2:0, y2:1,"
+ "stop:0 rgba(255, 255, 255, 255),"
+ "stop:0.757062 rgba(241, 238, 238, 255),"
+ "stop:1 rgba(247, 245, 245, 255));"
+ "}";
+
+ QTimer * tim = new QTimer(this);
+ tim->setSingleShot(true);
+ connect(tim, &QTimer::timeout, [this, css]() {
+ emit customStyleRequest(css);
+ });
+ tim->start(100);
+}
+
+SimulatedUIWidgetJumperT12max::~SimulatedUIWidgetJumperT12max()
+{
+ delete ui;
+}
diff --git a/companion/src/simulation/simulateduiwidgetJumperT12max.ui b/companion/src/simulation/simulateduiwidgetJumperT12max.ui
new file mode 100644
index 0000000000..0e48057118
--- /dev/null
+++ b/companion/src/simulation/simulateduiwidgetJumperT12max.ui
@@ -0,0 +1,211 @@
+
+
+ SimulatedUIWidgetJumperT12max
+
+
+
+ 0
+ 0
+ 714
+ 308
+
+
+
+
+ 0
+ 0
+
+
+
+
+ 714
+ 308
+
+
+
+
+ 714
+ 308
+
+
+
+ Jumper T12 MAX Simulator
+
+
+ background-color: qlineargradient(spread:reflect, x1:0, y1:0, x2:0, y2:1, stop:0 rgba(255, 255, 255, 255), stop:0.757062 rgba(241, 238, 238, 255), stop:1 rgba(247, 245, 245, 255));
+
+
+
+
+ 0
+ 0
+ 229
+ 308
+
+
+
+
+ 0
+ 0
+
+
+
+
+ 229
+ 308
+
+
+
+
+ 229
+ 308
+
+
+
+ background:url(:/images/simulator/JumperT12max/left.png);
+
+
+
+
+
+ 229
+ 90
+ 256
+ 128
+
+
+
+
+ 0
+ 0
+
+
+
+
+ 256
+ 128
+
+
+
+
+ 256
+ 128
+
+
+
+ background-color: rgb(215, 243, 255);
+
+
+
+
+
+ 485
+ 0
+ 229
+ 308
+
+
+
+
+ 0
+ 0
+
+
+
+
+ 229
+ 308
+
+
+
+
+ 229
+ 308
+
+
+
+ background:url(:/images/simulator/JumperT12max/right.png)
+
+
+
+
+
+ 229
+ 0
+ 256
+ 90
+
+
+
+
+ 0
+ 0
+
+
+
+
+ 256
+ 90
+
+
+
+
+ 256
+ 90
+
+
+
+ background:url(:/images/simulator/JumperT12max/top.png)
+
+
+
+
+
+ 229
+ 218
+ 256
+ 90
+
+
+
+
+ 0
+ 0
+
+
+
+
+ 256
+ 90
+
+
+
+
+ 256
+ 90
+
+
+
+ background:url(:/images/simulator/JumperT12max/bottom.png)
+
+
+
+
+
+ LcdWidget
+ QWidget
+
+ 1
+
+
+ ButtonsWidget
+ QWidget
+
+ 1
+
+
+
+
+
+
+
diff --git a/companion/src/simulation/simulatorwidget.cpp b/companion/src/simulation/simulatorwidget.cpp
index c5b8f1b58b..a356296491 100644
--- a/companion/src/simulation/simulatorwidget.cpp
+++ b/companion/src/simulation/simulatorwidget.cpp
@@ -105,6 +105,9 @@ SimulatorWidget::SimulatorWidget(QWidget * parent, SimulatorInterface * simulato
case Board::BOARD_JUMPER_TPROV2:
radioUiWidget = new SimulatedUIWidgetJumperTPRO(simulator, this);
break;
+ case Board::BOARD_JUMPER_T12MAX:
+ radioUiWidget = new SimulatedUIWidgetJumperT12max(simulator, this);
+ break;
case Board::BOARD_JUMPER_T14:
radioUiWidget = new SimulatedUIWidgetJumperT14(simulator, this);
break;
diff --git a/fw.json b/fw.json
index dcb5a8c8a2..b87910ea72 100644
--- a/fw.json
+++ b/fw.json
@@ -22,6 +22,7 @@
["FrSky X-Lite S", "xlites-"],
["iFlight Commando 8", "commando8-"],
["Jumper T12", "t12-"],
+ ["Jumper T12 MAX", "t12max-"],
["Jumper T14", "t14-"],
["Jumper T15", "t15-"],
["Jumper T16", "t16-"],
diff --git a/radio/src/hal/rotary_encoder.h b/radio/src/hal/rotary_encoder.h
index 370d3cb40c..1b8f5bec84 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_FAMILY_T20) || defined(RADIO_T14) || defined(RADIO_T15)
+#if defined(RADIO_FAMILY_T20) || defined(RADIO_T14) || defined(RADIO_T12MAX) || defined(RADIO_T15)
#define ROTARY_ENCODER_GRANULARITY 4
#else
#define ROTARY_ENCODER_GRANULARITY 2
diff --git a/radio/src/targets/taranis/CMakeLists.txt b/radio/src/targets/taranis/CMakeLists.txt
index 5d6345a064..0fb1933202 100644
--- a/radio/src/targets/taranis/CMakeLists.txt
+++ b/radio/src/targets/taranis/CMakeLists.txt
@@ -156,6 +156,17 @@ elseif(PCB STREQUAL X7)
add_definitions(-DRADIO_T14)
add_definitions(-DMANUFACTURER_JUMPER)
set(ENABLE_SERIAL_PASSTHROUGH ON CACHE BOOL "Enable serial passthrough")
+ elseif (PCBREV STREQUAL T12MAX)
+ set(DEFAULT_INTERNAL_MODULE CROSSFIRE CACHE STRING "Default internal module")
+ set(INTERNAL_MODULE_SERIAL YES)
+ set(MODULE_SIZE_SML YES)
+ set(FLAVOUR t12max)
+ set(NAVIGATION_TYPE x7)
+ set(ROTARY_ENCODER YES)
+ set(CPU_TYPE_FULL STM32F407xG)
+ add_definitions(-DRADIO_T12MAX)
+ add_definitions(-DMANUFACTURER_JUMPER)
+ set(ENABLE_SERIAL_PASSTHROUGH ON CACHE BOOL "Enable serial passthrough")
elseif(PCBREV STREQUAL T20)
set(DEFAULT_INTERNAL_MODULE CROSSFIRE 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 652e8c89d0..c83734f235 100644
--- a/radio/src/targets/taranis/board.h
+++ b/radio/src/targets/taranis/board.h
@@ -338,13 +338,15 @@ void ledBlue();
#if defined(RADIO_MT12)
#define LCD_BRIGHTNESS_DEFAULT 50
+#elif defined(RADIO_T12MAX)
+#define LCD_BRIGHTNESS_DEFAULT 30
#endif
#if defined(OLED_SCREEN)
#define LCD_CONTRAST_DEFAULT 254 // full brightness
#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)
+#elif defined(RADIO_TPRO) || defined(RADIO_FAMILY_JUMPER_T12) || defined(RADIO_TPRO) || defined(RADIO_COMMANDO8) || defined(RADIO_T12MAX)
#define LCD_CONTRAST_DEFAULT 25
#else
#define LCD_CONTRAST_DEFAULT 15
diff --git a/radio/src/targets/taranis/bootloader/boot_menu.cpp b/radio/src/targets/taranis/bootloader/boot_menu.cpp
index e2a7d0a7ce..f6c1b8896a 100644
--- a/radio/src/targets/taranis/bootloader/boot_menu.cpp
+++ b/radio/src/targets/taranis/bootloader/boot_menu.cpp
@@ -39,7 +39,11 @@ void bootloaderInitScreen()
lcdSetContrast(true);
backlightInit();
+#if defined(LCD_BRIGHTNESS_DEFAULT)
+ backlightEnable(LCD_BRIGHTNESS_DEFAULT);
+#else
backlightFullOn();
+#endif
}
static void bootloaderDrawMsg(unsigned int x, const char *str, uint8_t line, bool inverted)
diff --git a/radio/src/targets/taranis/hal.h b/radio/src/targets/taranis/hal.h
index cdbe2a6f15..b788e8af80 100644
--- a/radio/src/targets/taranis/hal.h
+++ b/radio/src/targets/taranis/hal.h
@@ -161,7 +161,7 @@
#define KEYS_GPIO_PIN_EXIT LL_GPIO_PIN_12 // PD.12
#define KEYS_GPIO_REG_ENTER GPIOE
#define KEYS_GPIO_PIN_ENTER LL_GPIO_PIN_7 // PE.7
-#elif defined(RADIO_T14)
+#elif defined(RADIO_T14) || defined(RADIO_T12MAX)
#define KEYS_GPIO_REG_PAGEDN GPIOD
#define KEYS_GPIO_PIN_PAGEDN LL_GPIO_PIN_3 // PD.03
#define KEYS_GPIO_REG_MENU GPIOD
@@ -282,7 +282,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_MT12) || defined(RADIO_POCKET) || defined(RADIO_T14)
+#elif defined(RADIO_TX12) || defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_ZORRO) || defined(RADIO_MT12) || defined(RADIO_POCKET) || defined(RADIO_T14) || defined(RADIO_T12MAX)
#define ROTARY_ENCODER_NAVIGATION
#define ROTARY_ENCODER_GPIO GPIOE
#define ROTARY_ENCODER_GPIO_PIN_A LL_GPIO_PIN_9 // PE.9
@@ -419,7 +419,7 @@
#define TRIMS_GPIO_PIN_T5R LL_GPIO_PIN_15 // PE.15
#define TRIMS_GPIO_REG_T5L GPIOE
#define TRIMS_GPIO_PIN_T5L LL_GPIO_PIN_14 // PE.14
-#elif defined(RADIO_T14)
+#elif defined(RADIO_T14) || defined(RADIO_T12MAX)
#define TRIMS_GPIO_REG_LHL GPIOE
#define TRIMS_GPIO_PIN_LHL LL_GPIO_PIN_3 // PE.03
#define TRIMS_GPIO_REG_LHR GPIOE
@@ -544,7 +544,7 @@
#define HARDWARE_SWITCH_A
#define SWITCHES_GPIO_REG_A GPIOC
#define SWITCHES_GPIO_PIN_A LL_GPIO_PIN_13 // PC.13
-#elif defined(RADIO_T14)
+#elif defined(RADIO_T14) || defined(RADIO_T12MAX)
#define STORAGE_SWITCH_A
#define HARDWARE_SWITCH_A
#define SWITCHES_GPIO_REG_A GPIOC
@@ -643,7 +643,7 @@
#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_T14)
+#elif defined(RADIO_T14) || defined(RADIO_T12MAX)
#define STORAGE_SWITCH_B
#define HARDWARE_SWITCH_B
#define SWITCHES_GPIO_REG_B GPIOE
@@ -697,7 +697,7 @@
#define SWITCHES_GPIO_PIN_C_L LL_GPIO_PIN_0 // PE.00
#define SWITCHES_GPIO_REG_C_H GPIOD
#define SWITCHES_GPIO_PIN_C_H LL_GPIO_PIN_11 // PD.11
-#elif defined(RADIO_T14)
+#elif defined(RADIO_T14) || defined(RADIO_T12MAX)
#define STORAGE_SWITCH_C
#define HARDWARE_SWITCH_C
#define SWITCHES_GPIO_REG_C_H GPIOE
@@ -811,7 +811,7 @@
#define HARDWARE_SWITCH_D
#define SWITCHES_GPIO_REG_D GPIOD
#define SWITCHES_GPIO_PIN_D LL_GPIO_PIN_14 // PD.14
-#elif defined(RADIO_T14)
+#elif defined(RADIO_T14) || defined(RADIO_T12MAX)
#define STORAGE_SWITCH_D
#define HARDWARE_SWITCH_D
#define SWITCHES_GPIO_REG_D_L GPIOA
@@ -912,7 +912,7 @@
#define HARDWARE_SWITCH_E
#define SWITCHES_GPIO_REG_E GPIOG
#define SWITCHES_GPIO_PIN_E LL_GPIO_PIN_10 // PG.10
-#elif defined(RADIO_T14)
+#elif defined(RADIO_T14) || defined(RADIO_T12MAX)
#define STORAGE_SWITCH_E
#define HARDWARE_SWITCH_E
#define SWITCHES_GPIO_REG_E GPIOE
@@ -984,7 +984,7 @@
#define HARDWARE_SWITCH_F
#define SWITCHES_GPIO_REG_F GPIOG
#define SWITCHES_GPIO_PIN_F LL_GPIO_PIN_9 // PG.09
-#elif defined(RADIO_T14)
+#elif defined(RADIO_T14) || defined(RADIO_T12MAX)
#define STORAGE_SWITCH_F
#define HARDWARE_SWITCH_F
#define SWITCHES_GPIO_REG_F GPIOC
@@ -1050,7 +1050,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_MT12) || defined(RADIO_POCKET) || defined(RADIO_T14)
+#elif defined(PCBX7) || defined(PCBXLITE) || defined(PCBX9LITE) || defined(RADIO_T8) || defined(RADIO_COMMANDO8) || defined(RADIO_MT12) || defined(RADIO_POCKET) || defined(RADIO_T14) || defined(RADIO_T12MAX)
// no SWG
#else
#define STORAGE_SWITCH_G
@@ -1077,7 +1077,7 @@
#define STORAGE_SWITCH_H
// no SWH
#elif defined(RADIO_TX12) || defined(RADIO_MT12)
-#elif defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_T14)
+#elif defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_T14) || defined(RADIO_T12MAX)
#define STORAGE_SWITCH_H
#elif defined(RADIO_TPROV2)
#define STORAGE_SWITCH_H
@@ -1148,7 +1148,7 @@
#define STORAGE_SWITCH_I
// no SWJ
#define STORAGE_SWITCH_J
-#elif defined(RADIO_ZORRO) || defined(RADIO_POCKET) || defined(RADIO_T14)
+#elif defined(RADIO_ZORRO) || defined(RADIO_POCKET) || defined(RADIO_T14) || defined(RADIO_T12MAX)
// No I/J
#elif defined(RADIO_TPROV2)
// SW1
@@ -1536,6 +1536,27 @@
#define ADC_CHANNEL_POT2 LL_ADC_CHANNEL_9 // ADC12_IN9
#define ADC_CHANNEL_BATT LL_ADC_CHANNEL_10
#define ADC_VREF_PREC2 330
+#elif defined(RADIO_T12MAX)
+ #define HARDWARE_POT1
+ #define HARDWARE_POT2
+ #define ADC_GPIO_PIN_STICK_LV LL_GPIO_PIN_1 // PA.01
+ #define ADC_GPIO_PIN_STICK_LH LL_GPIO_PIN_0 // PA.00
+ #define ADC_GPIO_PIN_STICK_RV LL_GPIO_PIN_3 // PA.03
+ #define ADC_GPIO_PIN_STICK_RH LL_GPIO_PIN_2 // PA.02
+ #define ADC_CHANNEL_STICK_LV LL_ADC_CHANNEL_1 // ADC1_IN1
+ #define ADC_CHANNEL_STICK_LH LL_ADC_CHANNEL_0 // ADC1_IN0
+ #define ADC_CHANNEL_STICK_RV LL_ADC_CHANNEL_3 // ADC1_IN3
+ #define ADC_CHANNEL_STICK_RH LL_ADC_CHANNEL_2 // ADC1_IN2
+ #define ADC_GPIO_PIN_POT1 LL_GPIO_PIN_0 // PB.00
+ #define ADC_GPIO_PIN_POT2 LL_GPIO_PIN_1 // PB.01
+ #define ADC_GPIO_PIN_BATT LL_GPIO_PIN_0 // PC.00
+ #define ADC_GPIOA_PINS (ADC_GPIO_PIN_STICK_RV | ADC_GPIO_PIN_STICK_RH | ADC_GPIO_PIN_STICK_LH | ADC_GPIO_PIN_STICK_LV)
+ #define ADC_GPIOB_PINS (ADC_GPIO_PIN_POT1 | ADC_GPIO_PIN_POT2)
+ #define ADC_GPIOC_PINS ADC_GPIO_PIN_BATT
+ #define ADC_CHANNEL_POT1 LL_ADC_CHANNEL_8 // ADC12_IN8
+ #define ADC_CHANNEL_POT2 LL_ADC_CHANNEL_9 // ADC12_IN9
+ #define ADC_CHANNEL_BATT LL_ADC_CHANNEL_10
+ #define ADC_VREF_PREC2 300
#elif defined(RADIO_TPRO) || defined(RADIO_TPROV2)
#define HARDWARE_POT1
#define HARDWARE_POT2
@@ -1714,6 +1735,8 @@
#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_T12MAX)
+ #define ADC_DIRECTION {-1, 1, -1, 1, 1, 1, 1}
#elif defined(RADIO_FAMILY_T20)
#define ADC_DIRECTION {1,-1,1,-1, -1,1,-1,-1,-1,-1}
#elif defined(RADIO_MT12)
@@ -1790,7 +1813,7 @@
#define LED_GREEN_GPIO GPIO_PIN(GPIOE, 2) // PE.02
#define LED_RED_GPIO GPIO_PIN(GPIOE, 13) // PE.13
#define LED_BLUE_GPIO GPIO_PIN(GPIOA, 7) // PA.07
-#elif defined(RADIO_T14)
+#elif defined(RADIO_T14) || defined(RADIO_T12MAX)
#define STATUS_LEDS
#define GPIO_LED_GPIO_ON gpio_set
#define GPIO_LED_GPIO_OFF gpio_clear
@@ -1938,12 +1961,12 @@
#define INTMODULE_DMA_STREAM_IRQ DMA2_Stream7_IRQn
#define INTMODULE_DMA_STREAM_IRQHandler DMA2_Stream7_IRQHandler
#define INTMODULE_DMA_CHANNEL LL_DMA_CHANNEL_4
-#elif defined(RADIO_ZORRO) || defined(RADIO_POCKET) || defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_MT12) || defined(RADIO_T20V2) || 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) || defined(RADIO_T12MAX)
#if defined(RADIO_T20V2)
#define INTMODULE_BOOTCMD_GPIO GPIO_PIN(GPIOE, 4) // PE.04
#define INTMODULE_PWR_GPIO GPIO_PIN(GPIOC, 6) // PC.06
#else
-#if defined(RADIO_T14)
+#if defined(RADIO_T14) || defined(RADIO_T12MAX)
#define INTMODULE_BOOTCMD_GPIO GPIO_PIN(GPIOE, 14) // PE.14
#else
#define INTMODULE_BOOTCMD_GPIO GPIO_PIN(GPIOB, 1) // PB.01
@@ -2031,8 +2054,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) || defined(RADIO_MT12) || defined(RADIO_T14)
- #if defined(RADIO_X9DP2019) || defined(RADIO_X7ACCESS) || 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_X9DP2019) || defined(PCBX7ACCESS) || defined(RADIO_ZORRO) || defined(RADIO_POCKET) || defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_MT12) || defined(RADIO_T14) || defined(RADIO_T12MAX)
+ #if defined(RADIO_X9DP2019) || defined(RADIO_X7ACCESS) || defined(RADIO_ZORRO)|| defined(RADIO_POCKET) || defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_MT12)|| defined(RADIO_T14) || defined(RADIO_T12MAX)
#define EXTMODULE_PWR_GPIO GPIO_PIN(GPIOD, 8) // PD.08
#elif defined(PCBX9LITE)
#define EXTMODULE_PWR_GPIO GPIO_PIN(GPIOA, 8) // PA.08
@@ -2286,7 +2309,7 @@
#if defined(PCBX9LITE) || defined(PCBXLITE) || defined(RADIO_X9DP2019) || \
defined(PCBX7ACCESS) || defined(RADIO_ZORRO) || defined(RADIO_POCKET) || \
defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_MT12) ||\
- defined(RADIO_T14)
+ defined(RADIO_T14) || defined(RADIO_T12MAX)
#define TRAINER_MODULE_CPPM_TIMER TIM3
#define TRAINER_MODULE_CPPM_FREQ (PERI1_FREQUENCY * TIMER_MULT_APB1)
#define TRAINER_MODULE_CPPM_GPIO EXTMODULE_RX_GPIO
@@ -2376,7 +2399,7 @@
#endif
// 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_FAMILY_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) || defined(RADIO_T12MAX)
#define LCD_VERTICAL_INVERT
#endif
#if defined(RADIO_LR3PRO) || defined(RADIO_TPROV2) || defined(RADIO_FAMILY_T20) || defined(RADIO_T14)
@@ -2504,7 +2527,7 @@
#endif
// SD - SPI2
-#if defined(RADIO_FAMILY_T20) || defined(RADIO_T14)
+#if defined(RADIO_FAMILY_T20) || defined(RADIO_T14) || defined(RADIO_T12MAX)
// Using chip, so no detect
#else
#define SD_PRESENT_GPIO GPIOD
@@ -2565,7 +2588,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_T20V2) || 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) || defined(RADIO_T12MAX)
#define HAPTIC_PWM
#define HAPTIC_GPIO GPIO_PIN(GPIOB, 3) // PB.03
#define HAPTIC_GPIO_AF GPIO_AF1
diff --git a/radio/src/targets/taranis/lcd_driver_spi.cpp b/radio/src/targets/taranis/lcd_driver_spi.cpp
index 9f723599f3..06295e82af 100644
--- a/radio/src/targets/taranis/lcd_driver_spi.cpp
+++ b/radio/src/targets/taranis/lcd_driver_spi.cpp
@@ -36,7 +36,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) || defined(RADIO_MT12)
+#elif defined(RADIO_FAMILY_JUMPER_T12) || defined(MANUFACTURER_RADIOMASTER) || defined(RADIO_COMMANDO8) || defined(RADIO_TPRO) || defined(RADIO_T12MAX)
#define LCD_CONTRAST_OFFSET -10
#else
#define LCD_CONTRAST_OFFSET 160
diff --git a/radio/src/targets/taranis/usb_descriptor.h b/radio/src/targets/taranis/usb_descriptor.h
index 60deaabf9b..d55e07910e 100644
--- a/radio/src/targets/taranis/usb_descriptor.h
+++ b/radio/src/targets/taranis/usb_descriptor.h
@@ -62,6 +62,10 @@
#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_T12MAX)
+#define USB_NAME "Jumper T12 MAX"
+ #define USB_MANUFACTURER 'J', 'U', 'M', 'P', 'E', 'R', ' ', ' ' /* 8 bytes */
+ #define USB_PRODUCT 'T', '1', '2', ' ', 'M', 'A', 'X', ' ' /* 8 Bytes */
#elif defined(RADIO_T14)
#define USB_NAME "Jumper T14"
#define USB_MANUFACTURER 'J', 'U', 'M', 'P', 'E', 'R', ' ', ' ' /* 8 bytes */
diff --git a/radio/util/hw_defs/legacy_names.py b/radio/util/hw_defs/legacy_names.py
index 1d52e7ff9c..32712cf4f7 100644
--- a/radio/util/hw_defs/legacy_names.py
+++ b/radio/util/hw_defs/legacy_names.py
@@ -379,7 +379,7 @@ LEGACY_NAMES = [
}
},
{
- "targets": {"t14"},
+ "targets": {"t14", "t12max"},
"inputs": {
"LH": {
"yaml": "Rud"
diff --git a/radio/util/hw_defs/pot_config.py b/radio/util/hw_defs/pot_config.py
index 901183e0b9..f25bfb5b52 100644
--- a/radio/util/hw_defs/pot_config.py
+++ b/radio/util/hw_defs/pot_config.py
@@ -66,6 +66,10 @@ POT_CONFIG = {
"P1": {"default": "POT"},
"P2": {"default": "POT"}
},
+ "t12max": {
+ "P1": {"default": "POT_CENTER"},
+ "P2": {"default": "POT_CENTER"}
+ },
"t14": {
"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 8a3ab965f6..f5635bcf7e 100644
--- a/radio/util/hw_defs/switch_config.py
+++ b/radio/util/hw_defs/switch_config.py
@@ -95,6 +95,16 @@ SWITCH_CONFIG = {
"SD": {"default": "3POS", "display": [1, 1]},
"SH": {"default": "2POS", "display": [1, 2]}
},
+ "t12max": {
+ # left side
+ "SA": {"default": "2POS", "display": [0, 0]},
+ "SC": {"default": "3POS", "display": [0, 1]},
+ "SE": {"default": "2POS", "display": [0, 2]},
+ # right side
+ "SB": {"default": "2POS", "display": [1, 0]},
+ "SD": {"default": "3POS", "display": [1, 1]},
+ "SF": {"default": "2POS", "display": [1, 2]}
+ },
"t14": {
# left side
"SA": {"default": "2POS", "display": [0, 0]},
diff --git a/tools/build-companion.sh b/tools/build-companion.sh
index cb8520973e..b0088f778a 100755
--- a/tools/build-companion.sh
+++ b/tools/build-companion.sh
@@ -65,7 +65,7 @@ cd build
declare -a simulator_plugins=(x9lite x9lites
x7 x7access
- t8 t12 tx12 tx12mk2
+ t8 t12 t12max tx12 tx12mk2
zorro commando8 boxer pocket
tlite tpro tprov2 lr3pro t14
x9d x9dp x9dp2019 x9e
@@ -131,6 +131,9 @@ do
t20)
BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=T20"
;;
+ t12max)
+ BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=T12MAX"
+ ;;
t14)
BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=T14"
;;
diff --git a/tools/build-gh.sh b/tools/build-gh.sh
index 15cd0d9c20..7905e3e3e7 100755
--- a/tools/build-gh.sh
+++ b/tools/build-gh.sh
@@ -143,6 +143,9 @@ do
t20)
BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=T20"
;;
+ t12max)
+ BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=T12MAX"
+ ;;
t14)
BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=T14"
;;
diff --git a/tools/commit-tests.sh b/tools/commit-tests.sh
index 6335703c59..6af91a6d52 100755
--- a/tools/commit-tests.sh
+++ b/tools/commit-tests.sh
@@ -109,6 +109,9 @@ do
t20)
BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=T20"
;;
+ t12max)
+ BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=T12MAX"
+ ;;
t14)
BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=T14"
;;
diff --git a/tools/generate-hw-defs.sh b/tools/generate-hw-defs.sh
index 98aec4a60b..66decd16d7 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;t15;t16;t18;t8;zorro;pocket;commando8;tlite;tpro;tprov2;t20;t20v2;t14;lr3pro;mt12;tx12;tx12mk2;boxer;tx16s;x10;x10express;x12s;x7;x7access;x9d;x9dp;x9dp2019;x9e;x9lite;x9lites;xlite;xlites"}
+: ${FLAVOR:="nv14;t12;t12max;t15;t16;t18;t8;zorro;pocket;commando8;tlite;tpro;tprov2;t20;t20v2;t14;lr3pro;mt12;tx12;tx12mk2;boxer;tx16s;x10;x10express;x12s;x7;x7access;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
@@ -72,6 +72,9 @@ do
t20)
BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=T20"
;;
+ t12max)
+ BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=T12MAX"
+ ;;
t14)
BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=T14"
;;
diff --git a/tools/generate-yaml.sh b/tools/generate-yaml.sh
index 2f9857c5f3..0bb695cba6 100755
--- a/tools/generate-yaml.sh
+++ b/tools/generate-yaml.sh
@@ -77,6 +77,9 @@ do
t20v2)
BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=T20V2"
;;
+ t12max)
+ BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=T12MAX"
+ ;;
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 6c26d90254..44aee3fc16 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|x10express|x12s|x9d|x9dp|x9lite|x9lites|x7|x7access|t12|tx12|tx12mk2|mt12|boxer|t8|zorro|pocket|tlite|tpro|t20|t20v2|t14|lr3pro|xlite|xlites|x9dp2019|x9e|x9e-hall|t15|t16|t18|nv14|commando8
+export RADIO_TYPE="tx16s" # tx16s|x10|x10express|x12s|x9d|x9dp|x9lite|x9lites|x7|x7access|t12|t12max|tx12|tx12mk2|mt12|boxer|t8|zorro|pocket|tlite|tpro|t20|t20v2|t14|lr3pro|xlite|xlites|x9dp2019|x9e|x9e-hall|t15|t16|t18|nv14|commando8
export BUILD_OPTIONS="-DDEFAULT_MODE=2 -DGVARS=YES"
@@ -63,6 +63,9 @@ case $RADIO_TYPE in
t20v2)
BUILD_OPTIONS+=" -DPCB=X7 -DPCBREV=T20V2"
;;
+ t12max)
+ BUILD_OPTIONS+=" -DPCB=X7 -DPCBREV=T12MAX"
+ ;;
t14)
BUILD_OPTIONS+=" -DPCB=X7 -DPCBREV=T14"
;;