1
0
Fork 0
mirror of https://github.com/EdgeTX/edgetx.git synced 2025-07-15 12:25:11 +03:00

feat: Jumper T12Max support (#5273)

This commit is contained in:
3djc 2024-07-13 07:24:46 +02:00 committed by GitHub
parent 2407212fc5
commit 195f03929a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
36 changed files with 419 additions and 30 deletions

View file

@ -49,6 +49,7 @@ jobs:
- pl18 - pl18
- pl18ev - pl18ev
- t12 - t12
- t12max
- t15 - t15
- t16 - t16
- t18 - t18
@ -97,7 +98,7 @@ jobs:
target: target:
- nv14;el18 - nv14;el18
- pl18;pl18ev - pl18;pl18ev
- t12 - t12;t12max
- t15;t16;t18 - t15;t16;t18
- t8;zorro;pocket;mt12;commando8 - t8;zorro;pocket;mt12;commando8
- tlite;tpro;tprov2;lr3pro - tlite;tpro;tprov2;lr3pro

View file

@ -18,7 +18,7 @@ jobs:
target: target:
- nv14;el18 - nv14;el18
- pl18;pl18ev - pl18;pl18ev
- t12 - t12;t12max
- t15;t16;t18 - t15;t16;t18
- t8;zorro;pocket;mt12;commando8 - t8;zorro;pocket;mt12;commando8
- tlite;tpro;tprov2;lr3pro - tlite;tpro;tprov2;lr3pro

View file

@ -261,6 +261,14 @@
<file>images/simulator/Fatfish/F16/right.png</file> <file>images/simulator/Fatfish/F16/right.png</file>
<file>images/simulator/Fatfish/F16/top.png</file> <file>images/simulator/Fatfish/F16/top.png</file>
<file>images/simulator/Fatfish/F16/bottom.png</file> <file>images/simulator/Fatfish/F16/bottom.png</file>
<file>images/simulator/JumperT12max/bottom.png</file>
<file>images/simulator/JumperT12max/left.png</file>
<file>images/simulator/JumperT12max/right.png</file>
<file>images/simulator/JumperT12max/right-ent.png</file>
<file>images/simulator/JumperT12max/top.png</file>
<file>images/simulator/JumperT12max/exit.png</file>
<file>images/simulator/JumperT12max/menu.png</file>
<file>images/simulator/JumperT12max/page.png</file>
<file>images/simulator/JumperT14/bottom.png</file> <file>images/simulator/JumperT14/bottom.png</file>
<file>images/simulator/JumperT14/left.png</file> <file>images/simulator/JumperT14/left.png</file>
<file>images/simulator/JumperT14/right.png</file> <file>images/simulator/JumperT14/right.png</file>

View file

@ -183,6 +183,7 @@ int Boards::getEEpromSize(Board::Type board)
case BOARD_BETAFPV_LR3PRO: case BOARD_BETAFPV_LR3PRO:
case BOARD_IFLIGHT_COMMANDO8: case BOARD_IFLIGHT_COMMANDO8:
case BOARD_JUMPER_T12: case BOARD_JUMPER_T12:
case BOARD_JUMPER_T12MAX:
case BOARD_JUMPER_T14: case BOARD_JUMPER_T14:
case BOARD_JUMPER_T20: case BOARD_JUMPER_T20:
case BOARD_JUMPER_T20V2: case BOARD_JUMPER_T20V2:
@ -237,6 +238,7 @@ int Boards::getFlashSize(Type board)
case BOARD_BETAFPV_LR3PRO: case BOARD_BETAFPV_LR3PRO:
case BOARD_IFLIGHT_COMMANDO8: case BOARD_IFLIGHT_COMMANDO8:
case BOARD_JUMPER_T12: case BOARD_JUMPER_T12:
case BOARD_JUMPER_T12MAX:
case BOARD_JUMPER_T14: case BOARD_JUMPER_T14:
case BOARD_JUMPER_T20: case BOARD_JUMPER_T20:
case BOARD_JUMPER_T20V2: case BOARD_JUMPER_T20V2:
@ -534,6 +536,8 @@ QString Boards::getBoardName(Board::Type board)
return "Jumper T-Pro"; return "Jumper T-Pro";
case BOARD_JUMPER_TPROV2: case BOARD_JUMPER_TPROV2:
return "Jumper T-Pro V2"; return "Jumper T-Pro V2";
case BOARD_JUMPER_T12MAX:
return "Jumper T12 MAX";
case BOARD_JUMPER_T14: case BOARD_JUMPER_T14:
return "Jumper T14"; return "Jumper T14";
case BOARD_JUMPER_T15: case BOARD_JUMPER_T15:
@ -678,6 +682,7 @@ int Boards::getDefaultInternalModules(Board::Type board)
case BOARD_RADIOMASTER_POCKET: case BOARD_RADIOMASTER_POCKET:
case BOARD_RADIOMASTER_TX12_MK2: case BOARD_RADIOMASTER_TX12_MK2:
case BOARD_IFLIGHT_COMMANDO8: case BOARD_IFLIGHT_COMMANDO8:
case BOARD_JUMPER_T12MAX:
case BOARD_JUMPER_T14: case BOARD_JUMPER_T14:
case BOARD_JUMPER_T15: case BOARD_JUMPER_T15:
case BOARD_JUMPER_T20: case BOARD_JUMPER_T20:

View file

@ -61,6 +61,7 @@ namespace Board {
BOARD_TARANIS_X9LITE, BOARD_TARANIS_X9LITE,
BOARD_TARANIS_X9LITES, BOARD_TARANIS_X9LITES,
BOARD_JUMPER_T12, BOARD_JUMPER_T12,
BOARD_JUMPER_T12MAX,
BOARD_JUMPER_T14, BOARD_JUMPER_T14,
BOARD_JUMPER_T15, BOARD_JUMPER_T15,
BOARD_JUMPER_T16, BOARD_JUMPER_T16,
@ -446,6 +447,11 @@ inline bool IS_JUMPER_T16(Board::Type board)
return board == Board::BOARD_JUMPER_T16; 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) inline bool IS_JUMPER_T14(Board::Type board)
{ {
return board == Board::BOARD_JUMPER_T14; 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) inline bool IS_FAMILY_T12(Board::Type board)
{ {
return board == Board::BOARD_JUMPER_T12 || return board == Board::BOARD_JUMPER_T12 ||
board == Board::BOARD_JUMPER_T12MAX ||
board == Board::BOARD_JUMPER_T14 || board == Board::BOARD_JUMPER_T14 ||
board == Board::BOARD_JUMPER_T20 || board == Board::BOARD_JUMPER_T20 ||
board == Board::BOARD_JUMPER_T20V2 || board == Board::BOARD_JUMPER_T20V2 ||

View file

@ -68,6 +68,8 @@ const char * OpenTxEepromInterface::getName()
return "EdgeTX for Jumper T-Pro"; return "EdgeTX for Jumper T-Pro";
case BOARD_JUMPER_TPROV2: case BOARD_JUMPER_TPROV2:
return "EdgeTX for Jumper T-Pro V2"; return "EdgeTX for Jumper T-Pro V2";
case BOARD_JUMPER_T12MAX:
return "EdgeTX for Jumper T12 MAX";
case BOARD_JUMPER_T14: case BOARD_JUMPER_T14:
return "EdgeTX for Jumper T14"; return "EdgeTX for Jumper T14";
case BOARD_JUMPER_T15: case BOARD_JUMPER_T15:
@ -1448,6 +1450,13 @@ void registerOpenTxFirmwares()
registerOpenTxFirmware(firmware); registerOpenTxFirmware(firmware);
addOpenTxRfOptions(firmware, FLEX); 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 */ /* Jumper T14 board */
firmware = new OpenTxFirmware(FIRMWAREID("t14"), Firmware::tr("Jumper T14"), BOARD_JUMPER_T14); firmware = new OpenTxFirmware(FIRMWAREID("t14"), Firmware::tr("Jumper T14"), BOARD_JUMPER_T14);
addOpenTxFrskyOptions(firmware); addOpenTxFrskyOptions(firmware);

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

View file

@ -35,6 +35,7 @@ set(${PROJECT_NAME}_SRCS
simulateduiwidgetEL18.cpp simulateduiwidgetEL18.cpp
simulateduiwidgetFatfishF16.cpp simulateduiwidgetFatfishF16.cpp
simulateduiwidgetJumperT12.cpp simulateduiwidgetJumperT12.cpp
simulateduiwidgetJumperT12max.cpp
simulateduiwidgetJumperT14.cpp simulateduiwidgetJumperT14.cpp
simulateduiwidgetJumperT15.cpp simulateduiwidgetJumperT15.cpp
simulateduiwidgetJumperT16.cpp simulateduiwidgetJumperT16.cpp

View file

@ -144,6 +144,7 @@ namespace Ui {
class SimulatedUIWidgetJumperT12; class SimulatedUIWidgetJumperT12;
class SimulatedUIWidgetJumperTLITE; class SimulatedUIWidgetJumperTLITE;
class SimulatedUIWidgetJumperTPRO; class SimulatedUIWidgetJumperTPRO;
class SimulatedUIWidgetJumperT12max;
class SimulatedUIWidgetJumperT14; class SimulatedUIWidgetJumperT14;
class SimulatedUIWidgetJumperT15; class SimulatedUIWidgetJumperT15;
class SimulatedUIWidgetJumperT16; class SimulatedUIWidgetJumperT16;
@ -357,6 +358,18 @@ class SimulatedUIWidgetJumperT16: public SimulatedUIWidget
Ui::SimulatedUIWidgetJumperT16 * ui; 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 class SimulatedUIWidgetJumperT14: public SimulatedUIWidget
{ {
Q_OBJECT Q_OBJECT

View file

@ -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<int>() << 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<int>() << 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<int>() << 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<int>() << 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;
}

View file

@ -0,0 +1,211 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>SimulatedUIWidgetJumperT12max</class>
<widget class="QWidget" name="SimulatedUIWidgetJumperT12max">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>714</width>
<height>308</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>714</width>
<height>308</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>714</width>
<height>308</height>
</size>
</property>
<property name="windowTitle">
<string notr="true">Jumper T12 MAX Simulator</string>
</property>
<property name="styleSheet">
<string notr="true">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));</string>
</property>
<widget class="ButtonsWidget" name="leftbuttons" native="true">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>229</width>
<height>308</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>229</width>
<height>308</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>229</width>
<height>308</height>
</size>
</property>
<property name="styleSheet">
<string notr="true">background:url(:/images/simulator/JumperT12max/left.png);</string>
</property>
</widget>
<widget class="LcdWidget" name="lcd" native="true">
<property name="geometry">
<rect>
<x>229</x>
<y>90</y>
<width>256</width>
<height>128</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>256</width>
<height>128</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>256</width>
<height>128</height>
</size>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgb(215, 243, 255);</string>
</property>
</widget>
<widget class="ButtonsWidget" name="rightbuttons" native="true">
<property name="geometry">
<rect>
<x>485</x>
<y>0</y>
<width>229</width>
<height>308</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>229</width>
<height>308</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>229</width>
<height>308</height>
</size>
</property>
<property name="styleSheet">
<string notr="true">background:url(:/images/simulator/JumperT12max/right.png)</string>
</property>
</widget>
<widget class="QWidget" name="top" native="true">
<property name="geometry">
<rect>
<x>229</x>
<y>0</y>
<width>256</width>
<height>90</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>256</width>
<height>90</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>256</width>
<height>90</height>
</size>
</property>
<property name="styleSheet">
<string notr="true">background:url(:/images/simulator/JumperT12max/top.png)</string>
</property>
</widget>
<widget class="QWidget" name="bottom" native="true">
<property name="geometry">
<rect>
<x>229</x>
<y>218</y>
<width>256</width>
<height>90</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>256</width>
<height>90</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>256</width>
<height>90</height>
</size>
</property>
<property name="styleSheet">
<string notr="true">background:url(:/images/simulator/JumperT12max/bottom.png)</string>
</property>
</widget>
</widget>
<customwidgets>
<customwidget>
<class>LcdWidget</class>
<extends>QWidget</extends>
<header>lcdwidget.h</header>
<container>1</container>
</customwidget>
<customwidget>
<class>ButtonsWidget</class>
<extends>QWidget</extends>
<header>buttonswidget.h</header>
<container>1</container>
</customwidget>
</customwidgets>
<resources>
<include location="../companion.qrc"/>
</resources>
<connections/>
</ui>

View file

@ -105,6 +105,9 @@ SimulatorWidget::SimulatorWidget(QWidget * parent, SimulatorInterface * simulato
case Board::BOARD_JUMPER_TPROV2: case Board::BOARD_JUMPER_TPROV2:
radioUiWidget = new SimulatedUIWidgetJumperTPRO(simulator, this); radioUiWidget = new SimulatedUIWidgetJumperTPRO(simulator, this);
break; break;
case Board::BOARD_JUMPER_T12MAX:
radioUiWidget = new SimulatedUIWidgetJumperT12max(simulator, this);
break;
case Board::BOARD_JUMPER_T14: case Board::BOARD_JUMPER_T14:
radioUiWidget = new SimulatedUIWidgetJumperT14(simulator, this); radioUiWidget = new SimulatedUIWidgetJumperT14(simulator, this);
break; break;

View file

@ -22,6 +22,7 @@
["FrSky X-Lite S", "xlites-"], ["FrSky X-Lite S", "xlites-"],
["iFlight Commando 8", "commando8-"], ["iFlight Commando 8", "commando8-"],
["Jumper T12", "t12-"], ["Jumper T12", "t12-"],
["Jumper T12 MAX", "t12max-"],
["Jumper T14", "t14-"], ["Jumper T14", "t14-"],
["Jumper T15", "t15-"], ["Jumper T15", "t15-"],
["Jumper T16", "t16-"], ["Jumper T16", "t16-"],

View file

@ -27,7 +27,7 @@
#define ROTENC_MIDSPEED 5 #define ROTENC_MIDSPEED 5
#define ROTENC_HIGHSPEED 50 #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 #define ROTARY_ENCODER_GRANULARITY 4
#else #else
#define ROTARY_ENCODER_GRANULARITY 2 #define ROTARY_ENCODER_GRANULARITY 2

View file

@ -156,6 +156,17 @@ elseif(PCB STREQUAL X7)
add_definitions(-DRADIO_T14) add_definitions(-DRADIO_T14)
add_definitions(-DMANUFACTURER_JUMPER) add_definitions(-DMANUFACTURER_JUMPER)
set(ENABLE_SERIAL_PASSTHROUGH ON CACHE BOOL "Enable serial passthrough") 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) elseif(PCBREV STREQUAL T20)
set(DEFAULT_INTERNAL_MODULE CROSSFIRE CACHE STRING "Default internal module") set(DEFAULT_INTERNAL_MODULE CROSSFIRE CACHE STRING "Default internal module")
set(INTERNAL_MODULE_SERIAL YES) set(INTERNAL_MODULE_SERIAL YES)

View file

@ -338,13 +338,15 @@ void ledBlue();
#if defined(RADIO_MT12) #if defined(RADIO_MT12)
#define LCD_BRIGHTNESS_DEFAULT 50 #define LCD_BRIGHTNESS_DEFAULT 50
#elif defined(RADIO_T12MAX)
#define LCD_BRIGHTNESS_DEFAULT 30
#endif #endif
#if defined(OLED_SCREEN) #if defined(OLED_SCREEN)
#define LCD_CONTRAST_DEFAULT 254 // full brightness #define LCD_CONTRAST_DEFAULT 254 // full brightness
#elif defined(RADIO_TX12) || defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_MT12) #elif defined(RADIO_TX12) || defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_MT12)
#define LCD_CONTRAST_DEFAULT 20 #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 #define LCD_CONTRAST_DEFAULT 25
#else #else
#define LCD_CONTRAST_DEFAULT 15 #define LCD_CONTRAST_DEFAULT 15

View file

@ -39,7 +39,11 @@ void bootloaderInitScreen()
lcdSetContrast(true); lcdSetContrast(true);
backlightInit(); backlightInit();
#if defined(LCD_BRIGHTNESS_DEFAULT)
backlightEnable(LCD_BRIGHTNESS_DEFAULT);
#else
backlightFullOn(); backlightFullOn();
#endif
} }
static void bootloaderDrawMsg(unsigned int x, const char *str, uint8_t line, bool inverted) static void bootloaderDrawMsg(unsigned int x, const char *str, uint8_t line, bool inverted)

View file

@ -161,7 +161,7 @@
#define KEYS_GPIO_PIN_EXIT LL_GPIO_PIN_12 // PD.12 #define KEYS_GPIO_PIN_EXIT LL_GPIO_PIN_12 // PD.12
#define KEYS_GPIO_REG_ENTER GPIOE #define KEYS_GPIO_REG_ENTER GPIOE
#define KEYS_GPIO_PIN_ENTER LL_GPIO_PIN_7 // PE.7 #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_REG_PAGEDN GPIOD
#define KEYS_GPIO_PIN_PAGEDN LL_GPIO_PIN_3 // PD.03 #define KEYS_GPIO_PIN_PAGEDN LL_GPIO_PIN_3 // PD.03
#define KEYS_GPIO_REG_MENU GPIOD #define KEYS_GPIO_REG_MENU GPIOD
@ -282,7 +282,7 @@
#define USE_EXTI15_10_IRQ #define USE_EXTI15_10_IRQ
#define EXTI15_10_IRQ_Priority 5 #define EXTI15_10_IRQ_Priority 5
#endif #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_NAVIGATION
#define ROTARY_ENCODER_GPIO GPIOE #define ROTARY_ENCODER_GPIO GPIOE
#define ROTARY_ENCODER_GPIO_PIN_A LL_GPIO_PIN_9 // PE.9 #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_PIN_T5R LL_GPIO_PIN_15 // PE.15
#define TRIMS_GPIO_REG_T5L GPIOE #define TRIMS_GPIO_REG_T5L GPIOE
#define TRIMS_GPIO_PIN_T5L LL_GPIO_PIN_14 // PE.14 #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_REG_LHL GPIOE
#define TRIMS_GPIO_PIN_LHL LL_GPIO_PIN_3 // PE.03 #define TRIMS_GPIO_PIN_LHL LL_GPIO_PIN_3 // PE.03
#define TRIMS_GPIO_REG_LHR GPIOE #define TRIMS_GPIO_REG_LHR GPIOE
@ -544,7 +544,7 @@
#define HARDWARE_SWITCH_A #define HARDWARE_SWITCH_A
#define SWITCHES_GPIO_REG_A GPIOC #define SWITCHES_GPIO_REG_A GPIOC
#define SWITCHES_GPIO_PIN_A LL_GPIO_PIN_13 // PC.13 #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 STORAGE_SWITCH_A
#define HARDWARE_SWITCH_A #define HARDWARE_SWITCH_A
#define SWITCHES_GPIO_REG_A GPIOC #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_PIN_B_L LL_GPIO_PIN_15 // PE.15
#define SWITCHES_GPIO_REG_B_H GPIOE #define SWITCHES_GPIO_REG_B_H GPIOE
#define SWITCHES_GPIO_PIN_B_H LL_GPIO_PIN_7 // PE.07 #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 STORAGE_SWITCH_B
#define HARDWARE_SWITCH_B #define HARDWARE_SWITCH_B
#define SWITCHES_GPIO_REG_B GPIOE #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_PIN_C_L LL_GPIO_PIN_0 // PE.00
#define SWITCHES_GPIO_REG_C_H GPIOD #define SWITCHES_GPIO_REG_C_H GPIOD
#define SWITCHES_GPIO_PIN_C_H LL_GPIO_PIN_11 // PD.11 #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 STORAGE_SWITCH_C
#define HARDWARE_SWITCH_C #define HARDWARE_SWITCH_C
#define SWITCHES_GPIO_REG_C_H GPIOE #define SWITCHES_GPIO_REG_C_H GPIOE
@ -811,7 +811,7 @@
#define HARDWARE_SWITCH_D #define HARDWARE_SWITCH_D
#define SWITCHES_GPIO_REG_D GPIOD #define SWITCHES_GPIO_REG_D GPIOD
#define SWITCHES_GPIO_PIN_D LL_GPIO_PIN_14 // PD.14 #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 STORAGE_SWITCH_D
#define HARDWARE_SWITCH_D #define HARDWARE_SWITCH_D
#define SWITCHES_GPIO_REG_D_L GPIOA #define SWITCHES_GPIO_REG_D_L GPIOA
@ -912,7 +912,7 @@
#define HARDWARE_SWITCH_E #define HARDWARE_SWITCH_E
#define SWITCHES_GPIO_REG_E GPIOG #define SWITCHES_GPIO_REG_E GPIOG
#define SWITCHES_GPIO_PIN_E LL_GPIO_PIN_10 // PG.10 #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 STORAGE_SWITCH_E
#define HARDWARE_SWITCH_E #define HARDWARE_SWITCH_E
#define SWITCHES_GPIO_REG_E GPIOE #define SWITCHES_GPIO_REG_E GPIOE
@ -984,7 +984,7 @@
#define HARDWARE_SWITCH_F #define HARDWARE_SWITCH_F
#define SWITCHES_GPIO_REG_F GPIOG #define SWITCHES_GPIO_REG_F GPIOG
#define SWITCHES_GPIO_PIN_F LL_GPIO_PIN_9 // PG.09 #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 STORAGE_SWITCH_F
#define HARDWARE_SWITCH_F #define HARDWARE_SWITCH_F
#define SWITCHES_GPIO_REG_F GPIOC #define SWITCHES_GPIO_REG_F GPIOC
@ -1050,7 +1050,7 @@
#define HARDWARE_SWITCH_G #define HARDWARE_SWITCH_G
#define SWITCHES_GPIO_REG_G GPIOD #define SWITCHES_GPIO_REG_G GPIOD
#define SWITCHES_GPIO_PIN_G LL_GPIO_PIN_15 // PD.15 #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 // no SWG
#else #else
#define STORAGE_SWITCH_G #define STORAGE_SWITCH_G
@ -1077,7 +1077,7 @@
#define STORAGE_SWITCH_H #define STORAGE_SWITCH_H
// no SWH // no SWH
#elif defined(RADIO_TX12) || defined(RADIO_MT12) #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 #define STORAGE_SWITCH_H
#elif defined(RADIO_TPROV2) #elif defined(RADIO_TPROV2)
#define STORAGE_SWITCH_H #define STORAGE_SWITCH_H
@ -1148,7 +1148,7 @@
#define STORAGE_SWITCH_I #define STORAGE_SWITCH_I
// no SWJ // no SWJ
#define STORAGE_SWITCH_J #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 // No I/J
#elif defined(RADIO_TPROV2) #elif defined(RADIO_TPROV2)
// SW1 // SW1
@ -1536,6 +1536,27 @@
#define ADC_CHANNEL_POT2 LL_ADC_CHANNEL_9 // ADC12_IN9 #define ADC_CHANNEL_POT2 LL_ADC_CHANNEL_9 // ADC12_IN9
#define ADC_CHANNEL_BATT LL_ADC_CHANNEL_10 #define ADC_CHANNEL_BATT LL_ADC_CHANNEL_10
#define ADC_VREF_PREC2 330 #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) #elif defined(RADIO_TPRO) || defined(RADIO_TPROV2)
#define HARDWARE_POT1 #define HARDWARE_POT1
#define HARDWARE_POT2 #define HARDWARE_POT2
@ -1714,6 +1735,8 @@
#define ADC_DIRECTION {1,-1,1,-1, 1,1, 1, 1} #define ADC_DIRECTION {1,-1,1,-1, 1,1, 1, 1}
#elif defined(RADIO_T14) #elif defined(RADIO_T14)
#define ADC_DIRECTION {1, -1, 1, -1, 1, 1, 1} #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) #elif defined(RADIO_FAMILY_T20)
#define ADC_DIRECTION {1,-1,1,-1, -1,1,-1,-1,-1,-1} #define ADC_DIRECTION {1,-1,1,-1, -1,1,-1,-1,-1,-1}
#elif defined(RADIO_MT12) #elif defined(RADIO_MT12)
@ -1790,7 +1813,7 @@
#define LED_GREEN_GPIO GPIO_PIN(GPIOE, 2) // PE.02 #define LED_GREEN_GPIO GPIO_PIN(GPIOE, 2) // PE.02
#define LED_RED_GPIO GPIO_PIN(GPIOE, 13) // PE.13 #define LED_RED_GPIO GPIO_PIN(GPIOE, 13) // PE.13
#define LED_BLUE_GPIO GPIO_PIN(GPIOA, 7) // PA.07 #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 STATUS_LEDS
#define GPIO_LED_GPIO_ON gpio_set #define GPIO_LED_GPIO_ON gpio_set
#define GPIO_LED_GPIO_OFF gpio_clear #define GPIO_LED_GPIO_OFF gpio_clear
@ -1938,12 +1961,12 @@
#define INTMODULE_DMA_STREAM_IRQ DMA2_Stream7_IRQn #define INTMODULE_DMA_STREAM_IRQ DMA2_Stream7_IRQn
#define INTMODULE_DMA_STREAM_IRQHandler DMA2_Stream7_IRQHandler #define INTMODULE_DMA_STREAM_IRQHandler DMA2_Stream7_IRQHandler
#define INTMODULE_DMA_CHANNEL LL_DMA_CHANNEL_4 #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) #if defined(RADIO_T20V2)
#define INTMODULE_BOOTCMD_GPIO GPIO_PIN(GPIOE, 4) // PE.04 #define INTMODULE_BOOTCMD_GPIO GPIO_PIN(GPIOE, 4) // PE.04
#define INTMODULE_PWR_GPIO GPIO_PIN(GPIOC, 6) // PC.06 #define INTMODULE_PWR_GPIO GPIO_PIN(GPIOC, 6) // PC.06
#else #else
#if defined(RADIO_T14) #if defined(RADIO_T14) || defined(RADIO_T12MAX)
#define INTMODULE_BOOTCMD_GPIO GPIO_PIN(GPIOE, 14) // PE.14 #define INTMODULE_BOOTCMD_GPIO GPIO_PIN(GPIOE, 14) // PE.14
#else #else
#define INTMODULE_BOOTCMD_GPIO GPIO_PIN(GPIOB, 1) // PB.01 #define INTMODULE_BOOTCMD_GPIO GPIO_PIN(GPIOB, 1) // PB.01
@ -2031,8 +2054,8 @@
#endif #endif
// External Module // 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(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) #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 #define EXTMODULE_PWR_GPIO GPIO_PIN(GPIOD, 8) // PD.08
#elif defined(PCBX9LITE) #elif defined(PCBX9LITE)
#define EXTMODULE_PWR_GPIO GPIO_PIN(GPIOA, 8) // PA.08 #define EXTMODULE_PWR_GPIO GPIO_PIN(GPIOA, 8) // PA.08
@ -2286,7 +2309,7 @@
#if defined(PCBX9LITE) || defined(PCBXLITE) || defined(RADIO_X9DP2019) || \ #if defined(PCBX9LITE) || defined(PCBXLITE) || defined(RADIO_X9DP2019) || \
defined(PCBX7ACCESS) || defined(RADIO_ZORRO) || defined(RADIO_POCKET) || \ defined(PCBX7ACCESS) || defined(RADIO_ZORRO) || defined(RADIO_POCKET) || \
defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_MT12) ||\ 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_TIMER TIM3
#define TRAINER_MODULE_CPPM_FREQ (PERI1_FREQUENCY * TIMER_MULT_APB1) #define TRAINER_MODULE_CPPM_FREQ (PERI1_FREQUENCY * TIMER_MULT_APB1)
#define TRAINER_MODULE_CPPM_GPIO EXTMODULE_RX_GPIO #define TRAINER_MODULE_CPPM_GPIO EXTMODULE_RX_GPIO
@ -2376,7 +2399,7 @@
#endif #endif
// LCD driver // 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 #define LCD_VERTICAL_INVERT
#endif #endif
#if defined(RADIO_LR3PRO) || defined(RADIO_TPROV2) || defined(RADIO_FAMILY_T20) || defined(RADIO_T14) #if defined(RADIO_LR3PRO) || defined(RADIO_TPROV2) || defined(RADIO_FAMILY_T20) || defined(RADIO_T14)
@ -2504,7 +2527,7 @@
#endif #endif
// SD - SPI2 // 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 // Using chip, so no detect
#else #else
#define SD_PRESENT_GPIO GPIOD #define SD_PRESENT_GPIO GPIOD
@ -2565,7 +2588,7 @@
#endif #endif
// Haptic // 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_PWM
#define HAPTIC_GPIO GPIO_PIN(GPIOB, 3) // PB.03 #define HAPTIC_GPIO GPIO_PIN(GPIOB, 3) // PB.03
#define HAPTIC_GPIO_AF GPIO_AF1 #define HAPTIC_GPIO_AF GPIO_AF1

View file

@ -36,7 +36,7 @@
#if defined(OLED_SCREEN) #if defined(OLED_SCREEN)
#define LCD_CONTRAST_OFFSET 0 #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 #define LCD_CONTRAST_OFFSET -10
#else #else
#define LCD_CONTRAST_OFFSET 160 #define LCD_CONTRAST_OFFSET 160

View file

@ -62,6 +62,10 @@
#define USB_NAME "Jumper TPro V2" #define USB_NAME "Jumper TPro V2"
#define USB_MANUFACTURER 'J', 'U', 'M', 'P', 'E', 'R', ' ', ' ' /* 8 bytes */ #define USB_MANUFACTURER 'J', 'U', 'M', 'P', 'E', 'R', ' ', ' ' /* 8 bytes */
#define USB_PRODUCT 'T', '-', 'P', 'r', 'o', ' ', 'V', '2' /* 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) #elif defined(RADIO_T14)
#define USB_NAME "Jumper T14" #define USB_NAME "Jumper T14"
#define USB_MANUFACTURER 'J', 'U', 'M', 'P', 'E', 'R', ' ', ' ' /* 8 bytes */ #define USB_MANUFACTURER 'J', 'U', 'M', 'P', 'E', 'R', ' ', ' ' /* 8 bytes */

View file

@ -379,7 +379,7 @@ LEGACY_NAMES = [
} }
}, },
{ {
"targets": {"t14"}, "targets": {"t14", "t12max"},
"inputs": { "inputs": {
"LH": { "LH": {
"yaml": "Rud" "yaml": "Rud"

View file

@ -66,6 +66,10 @@ POT_CONFIG = {
"P1": {"default": "POT"}, "P1": {"default": "POT"},
"P2": {"default": "POT"} "P2": {"default": "POT"}
}, },
"t12max": {
"P1": {"default": "POT_CENTER"},
"P2": {"default": "POT_CENTER"}
},
"t14": { "t14": {
"P1": {"default": "POT_CENTER"}, "P1": {"default": "POT_CENTER"},
"P2": {"default": "POT_CENTER"} "P2": {"default": "POT_CENTER"}

View file

@ -95,6 +95,16 @@ SWITCH_CONFIG = {
"SD": {"default": "3POS", "display": [1, 1]}, "SD": {"default": "3POS", "display": [1, 1]},
"SH": {"default": "2POS", "display": [1, 2]} "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": { "t14": {
# left side # left side
"SA": {"default": "2POS", "display": [0, 0]}, "SA": {"default": "2POS", "display": [0, 0]},

View file

@ -65,7 +65,7 @@ cd build
declare -a simulator_plugins=(x9lite x9lites declare -a simulator_plugins=(x9lite x9lites
x7 x7access x7 x7access
t8 t12 tx12 tx12mk2 t8 t12 t12max tx12 tx12mk2
zorro commando8 boxer pocket zorro commando8 boxer pocket
tlite tpro tprov2 lr3pro t14 tlite tpro tprov2 lr3pro t14
x9d x9dp x9dp2019 x9e x9d x9dp x9dp2019 x9e
@ -131,6 +131,9 @@ do
t20) t20)
BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=T20" BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=T20"
;; ;;
t12max)
BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=T12MAX"
;;
t14) t14)
BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=T14" BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=T14"
;; ;;

View file

@ -143,6 +143,9 @@ do
t20) t20)
BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=T20" BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=T20"
;; ;;
t12max)
BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=T12MAX"
;;
t14) t14)
BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=T14" BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=T14"
;; ;;

View file

@ -109,6 +109,9 @@ do
t20) t20)
BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=T20" BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=T20"
;; ;;
t12max)
BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=T12MAX"
;;
t14) t14)
BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=T14" BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=T14"
;; ;;

View file

@ -6,7 +6,7 @@ set -e
: "${SRCDIR:=$(dirname "$(pwd)/$0")/..}" : "${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"} : ${COMMON_OPTIONS:="-DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_RULE_MESSAGES=OFF -Wno-dev -DCMAKE_MESSAGE_LOG_LEVEL=WARNING"}
# wipe build directory clean # wipe build directory clean
@ -72,6 +72,9 @@ do
t20) t20)
BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=T20" BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=T20"
;; ;;
t12max)
BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=T12MAX"
;;
t14) t14)
BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=T14" BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=T14"
;; ;;

View file

@ -77,6 +77,9 @@ do
t20v2) t20v2)
BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=T20V2" BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=T20V2"
;; ;;
t12max)
BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=T12MAX"
;;
t14) t14)
BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=T14" BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=T14"
;; ;;

View file

@ -9,7 +9,7 @@
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
export BRANCH_NAME="main" # main|2.9|... 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" export BUILD_OPTIONS="-DDEFAULT_MODE=2 -DGVARS=YES"
@ -63,6 +63,9 @@ case $RADIO_TYPE in
t20v2) t20v2)
BUILD_OPTIONS+=" -DPCB=X7 -DPCBREV=T20V2" BUILD_OPTIONS+=" -DPCB=X7 -DPCBREV=T20V2"
;; ;;
t12max)
BUILD_OPTIONS+=" -DPCB=X7 -DPCBREV=T12MAX"
;;
t14) t14)
BUILD_OPTIONS+=" -DPCB=X7 -DPCBREV=T14" BUILD_OPTIONS+=" -DPCB=X7 -DPCBREV=T14"
;; ;;