diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml
index 6d25c5459..8dd7c8d59 100644
--- a/.github/ISSUE_TEMPLATE/bug-report.yml
+++ b/.github/ISSUE_TEMPLATE/bug-report.yml
@@ -104,9 +104,11 @@ body:
- FrSky X12
- FrSky X-Lite / S / Pro
- Jumper T12
+ - Jumper T14
- Jumper T16
- Jumper T18
- - Jumper T20
+ - Jumper T20/T20S
+ - Jumper T20 V2
- Jumper T-Lite
- Jumper T-Pro
- Jumper T-Pro V2
diff --git a/companion/src/CMakeLists.txt b/companion/src/CMakeLists.txt
index ee5297e98..448fa3c7d 100644
--- a/companion/src/CMakeLists.txt
+++ b/companion/src/CMakeLists.txt
@@ -332,10 +332,12 @@ elseif(PCB STREQUAL X9D+ AND PCBREV STREQUAL 2019)
set(FLAVOUR x9d+2019)
elseif(PCB STREQUAL X10 AND PCBREV STREQUAL EXPRESS)
set(FLAVOUR x10express)
-elseif(PCB STREQUAL X10 AND PCBREV STREQUAL T16)
- set(FLAVOUR t16)
elseif(PCB STREQUAL X10 AND PCBREV STREQUAL TX16S)
set(FLAVOUR tx16s)
+elseif(PCB STREQUAL X7 AND PCBREV STREQUAL T14)
+ set(FLAVOUR t14)
+elseif(PCB STREQUAL X10 AND PCBREV STREQUAL T16)
+ set(FLAVOUR t16)
elseif(PCB STREQUAL X10 AND PCBREV STREQUAL T18)
set(FLAVOUR t18)
elseif(PCB STREQUAL NV14 AND PCBREV STREQUAL EL18)
diff --git a/companion/src/companion.qrc b/companion/src/companion.qrc
index 79426070f..fde60acfd 100644
--- a/companion/src/companion.qrc
+++ b/companion/src/companion.qrc
@@ -257,6 +257,10 @@
images/simulator/T8/right-dn.png
images/simulator/T8/bottom.png
images/simulator/T8/top.png
+ images/simulator/JumperT14/bottom.png
+ images/simulator/JumperT14/left.png
+ images/simulator/JumperT14/right.png
+ images/simulator/JumperT14/top.png
images/simulator/JumperT16/left.png
images/simulator/JumperT16/right.png
images/simulator/JumperT16/top.png
diff --git a/companion/src/firmwares/boards.cpp b/companion/src/firmwares/boards.cpp
index f0c9d5ee5..f5aa569d4 100644
--- a/companion/src/firmwares/boards.cpp
+++ b/companion/src/firmwares/boards.cpp
@@ -184,6 +184,7 @@ int Boards::getEEpromSize(Board::Type board)
case BOARD_BETAFPV_LR3PRO:
case BOARD_IFLIGHT_COMMANDO8:
case BOARD_JUMPER_T12:
+ case BOARD_JUMPER_T14:
case BOARD_JUMPER_T20:
case BOARD_JUMPER_T20V2:
case BOARD_JUMPER_TLITE:
@@ -235,6 +236,7 @@ int Boards::getFlashSize(Type board)
case BOARD_BETAFPV_LR3PRO:
case BOARD_IFLIGHT_COMMANDO8:
case BOARD_JUMPER_T12:
+ case BOARD_JUMPER_T14:
case BOARD_JUMPER_T20:
case BOARD_JUMPER_T20V2:
case BOARD_JUMPER_TLITE:
@@ -529,6 +531,8 @@ QString Boards::getBoardName(Board::Type board)
return "Jumper T-Pro";
case BOARD_JUMPER_TPROV2:
return "Jumper T-Pro V2";
+ case BOARD_JUMPER_T14:
+ return "Jumper T14";
case BOARD_JUMPER_T16:
return "Jumper T16";
case BOARD_JUMPER_T18:
@@ -664,6 +668,7 @@ int Boards::getDefaultInternalModules(Board::Type board)
case BOARD_RADIOMASTER_POCKET:
case BOARD_RADIOMASTER_TX12_MK2:
case BOARD_IFLIGHT_COMMANDO8:
+ case BOARD_JUMPER_T14:
case BOARD_JUMPER_T20:
case BOARD_JUMPER_T20V2:
return (int)MODULE_TYPE_CROSSFIRE;
diff --git a/companion/src/firmwares/boards.h b/companion/src/firmwares/boards.h
index 8da2376f7..2b469bf01 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_T14,
BOARD_JUMPER_T16,
BOARD_RADIOMASTER_TX16S,
BOARD_JUMPER_T18,
@@ -438,6 +439,11 @@ inline bool IS_JUMPER_T16(Board::Type board)
return board == Board::BOARD_JUMPER_T16;
}
+inline bool IS_JUMPER_T14(Board::Type board)
+{
+ return board == Board::BOARD_JUMPER_T14;
+}
+
inline bool IS_JUMPER_T18(Board::Type board)
{
return board == Board::BOARD_JUMPER_T18;
@@ -492,6 +498,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_T14 ||
board == Board::BOARD_JUMPER_T20 ||
board == Board::BOARD_JUMPER_T20V2 ||
board == Board::BOARD_JUMPER_TLITE ||
diff --git a/companion/src/firmwares/opentx/opentxinterface.cpp b/companion/src/firmwares/opentx/opentxinterface.cpp
index 2a9402117..d9f3581c1 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_T14:
+ return "EdgeTX for Jumper T14";
case BOARD_JUMPER_T16:
return "EdgeTX for Jumper T16";
case BOARD_JUMPER_T18:
@@ -1404,6 +1406,13 @@ void registerOpenTxFirmwares()
registerOpenTxFirmware(firmware);
addOpenTxRfOptions(firmware, FLEX);
+ /* Jumper T14 board */
+ firmware = new OpenTxFirmware(FIRMWAREID("t14"), Firmware::tr("Jumper T14"), BOARD_JUMPER_T14);
+ addOpenTxFrskyOptions(firmware);
+ firmware->addOption("internalelrs", Firmware::tr("Select if internal ELRS module is installed"));
+ addOpenTxRfOptions(firmware, NONE);
+ registerOpenTxFirmware(firmware);
+
/* Jumper T16 board */
firmware = new OpenTxFirmware(FIRMWAREID("t16"), Firmware::tr("Jumper T16 / T16+ / T16 Pro"), BOARD_JUMPER_T16);
addOpenTxFrskyOptions(firmware);
diff --git a/companion/src/images/simulator/JumperT14/bottom.png b/companion/src/images/simulator/JumperT14/bottom.png
new file mode 100644
index 000000000..87c3ba123
Binary files /dev/null and b/companion/src/images/simulator/JumperT14/bottom.png differ
diff --git a/companion/src/images/simulator/JumperT14/left.png b/companion/src/images/simulator/JumperT14/left.png
new file mode 100644
index 000000000..a22312e7b
Binary files /dev/null and b/companion/src/images/simulator/JumperT14/left.png differ
diff --git a/companion/src/images/simulator/JumperT14/right.png b/companion/src/images/simulator/JumperT14/right.png
new file mode 100644
index 000000000..5f8b45cfb
Binary files /dev/null and b/companion/src/images/simulator/JumperT14/right.png differ
diff --git a/companion/src/images/simulator/JumperT14/top.png b/companion/src/images/simulator/JumperT14/top.png
new file mode 100644
index 000000000..d2e7ad6b2
Binary files /dev/null and b/companion/src/images/simulator/JumperT14/top.png differ
diff --git a/companion/src/simulation/CMakeLists.txt b/companion/src/simulation/CMakeLists.txt
index 6e0e9fdd9..4ecdc6418 100644
--- a/companion/src/simulation/CMakeLists.txt
+++ b/companion/src/simulation/CMakeLists.txt
@@ -34,6 +34,7 @@ set(${PROJECT_NAME}_SRCS
simulateduiwidgetCommando8.cpp
simulateduiwidgetEL18.cpp
simulateduiwidgetJumperT12.cpp
+ simulateduiwidgetJumperT14.cpp
simulateduiwidgetJumperT16.cpp
simulateduiwidgetJumperT18.cpp
simulateduiwidgetJumperT20.cpp
diff --git a/companion/src/simulation/simulateduiwidget.h b/companion/src/simulation/simulateduiwidget.h
index 00ba7c2e5..acb2b96dc 100644
--- a/companion/src/simulation/simulateduiwidget.h
+++ b/companion/src/simulation/simulateduiwidget.h
@@ -116,6 +116,7 @@ namespace Ui {
class SimulatedUIWidgetJumperT12;
class SimulatedUIWidgetJumperTLITE;
class SimulatedUIWidgetJumperTPRO;
+ class SimulatedUIWidgetJumperT14;
class SimulatedUIWidgetJumperT16;
class SimulatedUIWidgetJumperT18;
class SimulatedUIWidgetJumperT20;
@@ -314,6 +315,18 @@ class SimulatedUIWidgetJumperT16: public SimulatedUIWidget
Ui::SimulatedUIWidgetJumperT16 * ui;
};
+class SimulatedUIWidgetJumperT14: public SimulatedUIWidget
+{
+ Q_OBJECT
+
+ public:
+ explicit SimulatedUIWidgetJumperT14(SimulatorInterface * simulator, QWidget * parent = nullptr);
+ virtual ~SimulatedUIWidgetJumperT14();
+
+ private:
+ Ui::SimulatedUIWidgetJumperT14 * ui;
+};
+
class SimulatedUIWidgetJumperT18: public SimulatedUIWidget
{
Q_OBJECT
diff --git a/companion/src/simulation/simulateduiwidgetJumperT14.cpp b/companion/src/simulation/simulateduiwidgetJumperT14.cpp
new file mode 100644
index 000000000..f965f4efc
--- /dev/null
+++ b/companion/src/simulation/simulateduiwidgetJumperT14.cpp
@@ -0,0 +1,54 @@
+#include "simulateduiwidget.h"
+#include "ui_simulateduiwidgetJumperT14.h"
+
+// NOTE: RadioUiAction(NUMBER,...): NUMBER relates to enum EnumKeys in the specific board.h
+
+SimulatedUIWidgetJumperT14::SimulatedUIWidgetJumperT14(SimulatorInterface *simulator, QWidget * parent):
+ SimulatedUIWidget(simulator, parent),
+ ui(new Ui::SimulatedUIWidgetJumperT14)
+{
+ 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(130, 50, 50, 30), "JumperT14/left.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(130, 110, 50, 30), "JumperT14/left.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(130, 170, 50, 30), "JumperT14/left.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(100, 80, 70, 100), "JumperT14/right.png", m_mouseMidClickAction));
+
+ //addRadioWidget(ui->leftbuttons->addArea(QRect(10, 65, 70, 50), "JumperT14/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);
+}
+
+SimulatedUIWidgetJumperT14::~SimulatedUIWidgetJumperT14()
+{
+ delete ui;
+}
diff --git a/companion/src/simulation/simulateduiwidgetJumperT14.ui b/companion/src/simulation/simulateduiwidgetJumperT14.ui
new file mode 100644
index 000000000..8d67d20d3
--- /dev/null
+++ b/companion/src/simulation/simulateduiwidgetJumperT14.ui
@@ -0,0 +1,211 @@
+
+
+ SimulatedUIWidgetJumperT14
+
+
+
+ 0
+ 0
+ 838
+ 304
+
+
+
+
+ 0
+ 0
+
+
+
+
+ 838
+ 304
+
+
+
+
+ 838
+ 447
+
+
+
+ Jumper T14 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
+ 284
+ 304
+
+
+
+
+ 0
+ 0
+
+
+
+
+ 284
+ 304
+
+
+
+
+ 284
+ 304
+
+
+
+ background:url(:/images/simulator/JumperT14/left.png);
+
+
+
+
+
+ 284
+ 50
+ 256
+ 128
+
+
+
+
+ 0
+ 0
+
+
+
+
+ 256
+ 128
+
+
+
+
+ 256
+ 128
+
+
+
+ background-color: rgb(215, 243, 255);
+
+
+
+
+
+ 540
+ 0
+ 298
+ 304
+
+
+
+
+ 0
+ 0
+
+
+
+
+ 298
+ 304
+
+
+
+
+ 298
+ 304
+
+
+
+ background:url(:/images/simulator/JumperT14/right.png)
+
+
+
+
+
+ 284
+ 0
+ 256
+ 50
+
+
+
+
+ 0
+ 0
+
+
+
+
+ 256
+ 50
+
+
+
+
+ 256
+ 50
+
+
+
+ background:url(:/images/simulator/JumperT14/top.png)
+
+
+
+
+
+ 284
+ 178
+ 256
+ 126
+
+
+
+
+ 0
+ 0
+
+
+
+
+ 256
+ 126
+
+
+
+
+ 256
+ 126
+
+
+
+ background:url(:/images/simulator/JumperT14/bottom.png)
+
+
+
+
+
+ LcdWidget
+ QWidget
+
+ 1
+
+
+ ButtonsWidget
+ QWidget
+
+ 1
+
+
+
+
+
+
+
diff --git a/companion/src/simulation/simulatorwidget.cpp b/companion/src/simulation/simulatorwidget.cpp
index f673eeeea..bce544d62 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_T14:
+ radioUiWidget = new SimulatedUIWidgetJumperT14(simulator, this);
+ break;
case Board::BOARD_JUMPER_T16:
radioUiWidget = new SimulatedUIWidgetJumperT16(simulator, this);
break;
diff --git a/tools/build-companion.sh b/tools/build-companion.sh
index 569a48ef5..e775c925d 100755
--- a/tools/build-companion.sh
+++ b/tools/build-companion.sh
@@ -67,7 +67,7 @@ declare -a simulator_plugins=(x9lite x9lites
x7 x7-access
t8 t12 tx12 tx12mk2
zorro commando8 boxer pocket
- tlite tpro tprov2 lr3pro
+ tlite tpro tprov2 lr3pro t14
x9d x9dp x9dp2019 x9e
xlite xlites
nv14 el18 pl18 pl18ev