diff --git a/companion/src/firmwares/boards.cpp b/companion/src/firmwares/boards.cpp
index fcadea201..b4a35bf5f 100644
--- a/companion/src/firmwares/boards.cpp
+++ b/companion/src/firmwares/boards.cpp
@@ -137,6 +137,7 @@ int Boards::getEEpromSize(Board::Type board)
case BOARD_BETAFPV_LR3PRO:
case BOARD_IFLIGHT_COMMANDO8:
case BOARD_JUMPER_T12:
+ case BOARD_JUMPER_T20:
case BOARD_JUMPER_TLITE:
case BOARD_JUMPER_TLITE_F4:
case BOARD_JUMPER_TPRO:
@@ -184,6 +185,7 @@ int Boards::getFlashSize(Type board)
case BOARD_BETAFPV_LR3PRO:
case BOARD_IFLIGHT_COMMANDO8:
case BOARD_JUMPER_T12:
+ case BOARD_JUMPER_T20:
case BOARD_JUMPER_TLITE:
case BOARD_JUMPER_TLITE_F4:
case BOARD_JUMPER_TPRO:
@@ -360,6 +362,22 @@ SwitchInfo Boards::getSwitchInfo(Board::Type board, int index)
if (index < DIM(switches))
return switches[index];
}
+ else if (IS_JUMPER_T20(board)) {
+ const Board::SwitchInfo switches[] = {
+ {SWITCH_2POS, "SA"},
+ {SWITCH_2POS, "SB"},
+ {SWITCH_3POS, "SC"},
+ {SWITCH_3POS, "SD"},
+ {SWITCH_2POS, "SE"},
+ {SWITCH_2POS, "SF"},
+ {SWITCH_TOGGLE, "SG"},
+ {SWITCH_TOGGLE, "SH"},
+ {SWITCH_TOGGLE, "SI"},
+ {SWITCH_TOGGLE, "SJ"},
+ };
+ if (index < DIM(switches))
+ return switches[index];
+ }
else if (IS_FLYSKY_NV14(board)) {
const Board::SwitchInfo switches[] = {
{SWITCH_2POS, "SA"},
@@ -458,7 +476,7 @@ int Boards::getCapability(Board::Type board, Board::Capability capability)
return 0;
else if (IS_RADIOMASTER_BOXER(board))
return 3;
- else if (IS_TARANIS_SMALL(board) || IS_JUMPER_TPRO(board))
+ else if (IS_TARANIS_SMALL(board) || IS_JUMPER_TPRO(board) || IS_FLYSKY_NV14(board) || IS_JUMPER_T20(board))
return 2;
else if (IS_TARANIS_X9E(board))
return 4;
@@ -466,8 +484,6 @@ int Boards::getCapability(Board::Type board, Board::Capability capability)
return 7;
else if (IS_HORUS_X12S(board))
return 3;
- else if (IS_FLYSKY_NV14(board) || IS_FLYSKY_EL18(board))
- return 2;
else
return 3;
@@ -478,7 +494,7 @@ int Boards::getCapability(Board::Type board, Board::Capability capability)
return getCapability(board, Pots);
case Sliders:
- if (IS_HORUS_X12S(board) || IS_TARANIS_X9E(board))
+ if (IS_HORUS_X12S(board) || IS_TARANIS_X9E(board) || IS_JUMPER_T20(board))
return 4;
else if (IS_TARANIS_X9D(board) || IS_HORUS_X10(board) || IS_FAMILY_T16(board))
return 2;
@@ -539,13 +555,16 @@ int Boards::getCapability(Board::Type board, Board::Capability capability)
return 9;
else if (IS_TARANIS(board))
return 8;
- else if (IS_FAMILY_HORUS_OR_T16(board))
+ else if (IS_FAMILY_HORUS_OR_T16(board) || IS_JUMPER_T20(board))
return 10;
else
return 7;
case FunctionSwitches:
- return (IS_JUMPER_TPRO(board) ? 6 : 0);
+ if (board == BOARD_JUMPER_TPRO || board == BOARD_JUMPER_TPROV2 || board == BOARD_JUMPER_T20)
+ return 6;
+ else
+ return 0;
case FactoryInstalledSwitches:
if (IS_TARANIS_X9E(board))
@@ -578,6 +597,8 @@ int Boards::getCapability(Board::Type board, Board::Capability capability)
return 6;
else if (IS_IFLIGHT_COMMANDO8(board))
return 0;
+ else if (IS_JUMPER_T20(board))
+ return 8;
else
return 4;
@@ -731,7 +752,7 @@ StringTagMappingTable Boards::getAnalogNamesLookupTable(Board::Type board, const
{tr("S2").toStdString(), "POT2"},
{tr("S3").toStdString(), "POT3"},
});
- } else if ((IS_TARANIS_SMALL(board) && !IS_JUMPER_TLITE(board)) || IS_FLYSKY_NV14(board) || IS_FLYSKY_EL18(board)) {
+ } else if ((IS_TARANIS_SMALL(board) && !IS_JUMPER_TLITE(board) && !IS_JUMPER_T20(board)) || IS_FLYSKY_NV14(board) || IS_FLYSKY_EL18(board)) {
if (version < adcVersion) {
tbl.insert(tbl.end(), {
{tr("S1").toStdString(), "POT1"},
@@ -825,6 +846,15 @@ StringTagMappingTable Boards::getAnalogNamesLookupTable(Board::Type board, const
{tr("TltY").toStdString(), "TILT_Y", 16},
});
}
+ } else if (IS_JUMPER_T20(board)) {
+ tbl.insert(tbl.end(), {
+ {tr("S1").toStdString(), "P1", 4},
+ {tr("S2").toStdString(), "P2", 5},
+ {tr("S3").toStdString(), "SL1", 6},
+ {tr("S4").toStdString(), "SL2", 7},
+ {tr("SL").toStdString(), "SL3", 8},
+ {tr("SR").toStdString(), "SL4", 9},
+ });
}
return tbl;
@@ -893,6 +923,8 @@ QString Boards::getBoardName(Board::Type board)
return "Jumper T16";
case BOARD_JUMPER_T18:
return "Jumper T18";
+ case BOARD_JUMPER_T20:
+ return "Jumper T20";
case BOARD_RADIOMASTER_TX16S:
return "Radiomaster TX16S";
case BOARD_RADIOMASTER_TX12:
@@ -1051,6 +1083,14 @@ StringTagMappingTable Boards::getTrimSwitchesLookupTable(Board::Type board)
{std::to_string(TRIM_SW_T6_INC), "TrimT6Up"},
});
+if (getCapability(board, Board::NumTrims) > 6)
+ tbl.insert(tbl.end(), {
+ {std::to_string(TRIM_SW_T7_INC), "TrimT7Up"},
+ {std::to_string(TRIM_SW_T7_DEC), "TrimT7Down"},
+ {std::to_string(TRIM_SW_T8_INC), "TrimT8Up"},
+ {std::to_string(TRIM_SW_T8_DEC), "TrimT8Down"},
+ });
+
return tbl;
}
@@ -1072,6 +1112,11 @@ StringTagMappingTable Boards::getTrimSourcesLookupTable(Board::Type board)
{std::to_string(TRIM_AXIS_T6), "TrimT6"},
});
+ if (getCapability(board, Board::NumTrims) > 6)
+ tbl.insert(tbl.end(), {
+ {std::to_string(TRIM_AXIS_T7), "TrimT7"},
+ {std::to_string(TRIM_AXIS_T8), "TrimT8"},
+ });
return tbl;
}
@@ -1137,6 +1182,7 @@ int Boards::getDefaultInternalModules(Board::Type board)
case BOARD_RADIOMASTER_BOXER:
case BOARD_RADIOMASTER_TX12_MK2:
case BOARD_IFLIGHT_COMMANDO8:
+ case BOARD_JUMPER_T20:
return (int)MODULE_TYPE_CROSSFIRE;
case BOARD_FLYSKY_NV14:
@@ -1167,6 +1213,7 @@ int Boards::getDefaultExternalModuleSize(Board::Type board)
IS_RADIOMASTER_ZORRO(board) ||
IS_JUMPER_TLITE(board) ||
IS_JUMPER_TPRO(board) ||
+ IS_JUMPER_T20(board) ||
IS_BETAFPV_LR3PRO(board))
return EXTMODSIZE_SMALL;
diff --git a/companion/src/firmwares/boards.h b/companion/src/firmwares/boards.h
index efc213dff..1fa8e7884 100644
--- a/companion/src/firmwares/boards.h
+++ b/companion/src/firmwares/boards.h
@@ -61,6 +61,7 @@ namespace Board {
BOARD_JUMPER_T16,
BOARD_RADIOMASTER_TX16S,
BOARD_JUMPER_T18,
+ BOARD_JUMPER_T20,
BOARD_RADIOMASTER_TX12,
BOARD_RADIOMASTER_TX12_MK2,
BOARD_RADIOMASTER_BOXER,
@@ -119,6 +120,8 @@ namespace Board {
TRIM_AXIS_RH,
TRIM_AXIS_T5,
TRIM_AXIS_T6,
+ TRIM_AXIS_T7,
+ TRIM_AXIS_T8,
TRIM_AXIS_COUNT
};
@@ -136,6 +139,10 @@ namespace Board {
TRIM_SW_T5_INC,
TRIM_SW_T6_DEC,
TRIM_SW_T6_INC,
+ TRIM_SW_T7_DEC,
+ TRIM_SW_T7_INC,
+ TRIM_SW_T8_DEC,
+ TRIM_SW_T8_INC,
TRIM_SW_COUNT
};
@@ -316,6 +323,11 @@ inline bool IS_JUMPER_T18(Board::Type board)
return board == Board::BOARD_JUMPER_T18;
}
+inline bool IS_JUMPER_T20(Board::Type board)
+{
+ return board == Board::BOARD_JUMPER_T20;
+}
+
inline bool IS_RADIOMASTER_TX16S(Board::Type board)
{
return board == Board::BOARD_RADIOMASTER_TX16S;
@@ -354,15 +366,16 @@ 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_T20 ||
+ board == Board::BOARD_JUMPER_TLITE ||
+ board == Board::BOARD_JUMPER_TLITE_F4 ||
+ board == Board::BOARD_JUMPER_TPRO ||
+ board == Board::BOARD_JUMPER_TPROV2 ||
board == Board::BOARD_RADIOMASTER_TX12 ||
board == Board::BOARD_RADIOMASTER_TX12_MK2 ||
board == Board::BOARD_RADIOMASTER_ZORRO ||
board == Board::BOARD_RADIOMASTER_BOXER ||
board == Board::BOARD_RADIOMASTER_T8 ||
- board == Board::BOARD_JUMPER_TLITE ||
- board == Board::BOARD_JUMPER_TLITE_F4 ||
- board == Board::BOARD_JUMPER_TPRO ||
- board == Board::BOARD_JUMPER_TPROV2 ||
board == Board::BOARD_BETAFPV_LR3PRO ||
board == Board::BOARD_IFLIGHT_COMMANDO8;
}
diff --git a/companion/src/firmwares/generalsettings.cpp b/companion/src/firmwares/generalsettings.cpp
index 60826f1e0..f9dca964f 100644
--- a/companion/src/firmwares/generalsettings.cpp
+++ b/companion/src/firmwares/generalsettings.cpp
@@ -305,6 +305,10 @@ void GeneralSettings::setDefaultControlTypes(Board::Type board)
potConfig[1] = Board::POT_WITH_DETENT;
potConfig[2] = Board::POT_MULTIPOS_SWITCH;
}
+ else if(IS_JUMPER_T20(board)) {
+ potConfig[0] = Board::POT_WITHOUT_DETENT;
+ potConfig[1] = Board::POT_WITHOUT_DETENT;
+ }
else if (IS_FAMILY_T12(board)) {
potConfig[0] = Board::POT_WITH_DETENT;
potConfig[1] = Board::POT_WITH_DETENT;
@@ -319,7 +323,7 @@ void GeneralSettings::setDefaultControlTypes(Board::Type board)
potConfig[2] = Board::POT_WITHOUT_DETENT;
}
- if (IS_HORUS_X12S(board) || IS_TARANIS_X9E(board)) {
+ if (IS_HORUS_X12S(board) || IS_TARANIS_X9E(board) || IS_JUMPER_T20(board)) {
sliderConfig[0] = Board::SLIDER_WITH_DETENT;
sliderConfig[1] = Board::SLIDER_WITH_DETENT;
sliderConfig[2] = Board::SLIDER_WITH_DETENT;
diff --git a/companion/src/firmwares/opentx/opentxinterface.cpp b/companion/src/firmwares/opentx/opentxinterface.cpp
index c9bbc06d3..d372fbd7b 100644
--- a/companion/src/firmwares/opentx/opentxinterface.cpp
+++ b/companion/src/firmwares/opentx/opentxinterface.cpp
@@ -72,6 +72,8 @@ const char * OpenTxEepromInterface::getName()
return "EdgeTX for Jumper T16";
case BOARD_JUMPER_T18:
return "EdgeTX for Jumper T18";
+ case BOARD_JUMPER_T20:
+ return "EdgeTX for Jumper T20";
case BOARD_RADIOMASTER_TX16S:
return "EdgeTX for Radiomaster TX16S";
case BOARD_RADIOMASTER_TX12:
@@ -790,19 +792,20 @@ int OpenTxFirmware::getCapability(::Capability capability)
IS_TARANIS_X9LITE(board) || IS_RADIOMASTER_TX12(board) ||
IS_RADIOMASTER_TX12_MK2(board) || IS_RADIOMASTER_ZORRO(board) ||
IS_RADIOMASTER_BOXER(board) || IS_RADIOMASTER_TX16S(board) ||
- IS_JUMPER_T18(board));
+ IS_JUMPER_T18(board)) || IS_JUMPER_T20(board);
case HasSoftwareSerialPower:
return IS_RADIOMASTER_TX16S(board);
case HasIntModuleMulti:
return id.contains("internalmulti") || IS_RADIOMASTER_TX16S(board) || IS_JUMPER_T18(board) ||
IS_RADIOMASTER_TX12(board) || IS_JUMPER_TLITE(board) || IS_BETAFPV_LR3PRO(board) ||
(IS_RADIOMASTER_ZORRO(board) && !id.contains("internalelrs")) ||
- IS_RADIOMASTER_BOXER(board);
+ (IS_RADIOMASTER_BOXER(board) && !id.contains("internalelrs"));
case HasIntModuleCRSF:
return id.contains("internalcrsf");
case HasIntModuleELRS:
return id.contains("internalelrs") || IS_RADIOMASTER_TX12_MK2(board) ||
- IS_IFLIGHT_COMMANDO8(board) || IS_RADIOMASTER_BOXER(board);
+ IS_IFLIGHT_COMMANDO8(board) || IS_RADIOMASTER_BOXER(board) ||
+ IS_JUMPER_T20(board);
case HasIntModuleFlySky:
return id.contains("afhds2a") || id.contains("afhds3") ||
IS_FLYSKY_NV14(board) || IS_FLYSKY_EL18(board);
@@ -1359,6 +1362,13 @@ void registerOpenTxFirmwares()
addOpenTxRfOptions(firmware, FLEX);
registerOpenTxFirmware(firmware);
+ /* Jumper T20 board */
+ firmware = new OpenTxFirmware(FIRMWAREID("t20"), Firmware::tr("Jumper T20"), BOARD_JUMPER_T20);
+ addOpenTxFrskyOptions(firmware);
+ firmware->addOption("internalelrs", Firmware::tr("Select if internal ELRS module is installed"));
+ addOpenTxRfOptions(firmware, NONE);
+ registerOpenTxFirmware(firmware);
+
/* Radiomaster TX12 board */
firmware = new OpenTxFirmware(FIRMWAREID("tx12"), QCoreApplication::translate("Firmware", "Radiomaster TX12"), BOARD_RADIOMASTER_TX12);
addOpenTxCommonOptions(firmware);
diff --git a/companion/src/firmwares/rawsource.cpp b/companion/src/firmwares/rawsource.cpp
index c9903c295..fd6936930 100644
--- a/companion/src/firmwares/rawsource.cpp
+++ b/companion/src/firmwares/rawsource.cpp
@@ -133,7 +133,7 @@ QString RawSource::toString(const ModelData * model, const GeneralSettings * con
}
static const QString trims[] = {
- tr("TrmR"), tr("TrmE"), tr("TrmT"), tr("TrmA"), tr("Trm5"), tr("Trm6")
+ tr("TrmR"), tr("TrmE"), tr("TrmT"), tr("TrmA"), tr("Trm5"), tr("Trm6"), tr("Trm7"), tr("Trm8")
};
static const QString trims2[] = {
diff --git a/companion/src/firmwares/rawswitch.cpp b/companion/src/firmwares/rawswitch.cpp
index 60a93bc5b..d0b3502b3 100644
--- a/companion/src/firmwares/rawswitch.cpp
+++ b/companion/src/firmwares/rawswitch.cpp
@@ -42,7 +42,9 @@ QString RawSwitch::toString(Board::Type board, const GeneralSettings * const gen
tr("ThrTrim Down"), tr("ThrTrim Up"),
tr("AilTrim Left"), tr("AilTrim Right"),
tr("Trim 5 Down"), tr("Trim 5 Up"),
- tr("Trim 6 Down"), tr("Trim 6 Up")
+ tr("Trim 6 Down"), tr("Trim 6 Up"),
+ tr("Trim 7 Down"), tr("Trim 7 Up"),
+ tr("Trim 8 Down"), tr("Trim 8 Up")
};
static const QString trimsSwitches2[] = {
diff --git a/companion/src/modeledit/flightmode.ui b/companion/src/modeledit/flightmode.ui
index f3dff650e..4e69ebd41 100644
--- a/companion/src/modeledit/flightmode.ui
+++ b/companion/src/modeledit/flightmode.ui
@@ -502,6 +502,72 @@
+ -
+
+
-
+
+
+ trim8
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+
+ -
+
+
-
+
+
+ -
+
+
+ Qt::AlignCenter
+
+
+ true
+
+
+ -896
+
+
+ 896
+
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+ QSizePolicy::Minimum
+
+
+
+ 20
+ 40
+
+
+
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+ QSlider::TicksBothSides
+
+
+ 25
+
+
+
-
@@ -528,7 +594,7 @@
-
-
+
-
@@ -551,7 +617,73 @@
-
-
+
+
+ Qt::Vertical
+
+
+ QSizePolicy::Minimum
+
+
+
+ 20
+ 40
+
+
+
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+ QSlider::TicksBothSides
+
+
+ 25
+
+
+
+ -
+
+
-
+
+
+ trim7
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+
+ -
+
+
-
+
+
+ -
+
+
+ Qt::AlignCenter
+
+
+ true
+
+
+ -896
+
+
+ 896
+
+
+
+
+
+ -
+
Qt::Vertical
diff --git a/companion/src/modeledit/flightmodes.cpp b/companion/src/modeledit/flightmodes.cpp
index 224d69965..ea2eccbe1 100644
--- a/companion/src/modeledit/flightmodes.cpp
+++ b/companion/src/modeledit/flightmodes.cpp
@@ -89,11 +89,13 @@ FlightModePanel::FlightModePanel(QWidget * parent, ModelData & model, int phaseI
}
labels[4] = "T5"; // TODO firmware function
labels[5] = "T6"; // TODO firmware function
+ labels[6] = "T7"; // TODO firmware function
+ labels[7] = "T8"; // TODO firmware function
- trimsLabel << ui->trim1Label << ui->trim2Label << ui->trim3Label << ui->trim4Label << ui->trim5Label << ui->trim6Label;
- trimsUse << ui->trim1Use << ui->trim2Use << ui->trim3Use << ui->trim4Use << ui->trim5Use << ui->trim6Use;
- trimsValue << ui->trim1Value << ui->trim2Value << ui->trim3Value << ui->trim4Value << ui->trim5Value << ui->trim6Value;
- trimsSlider << ui->trim1Slider << ui->trim2Slider << ui->trim3Slider << ui->trim4Slider << ui->trim5Slider << ui->trim6Slider;
+ trimsLabel << ui->trim1Label << ui->trim2Label << ui->trim3Label << ui->trim4Label << ui->trim5Label << ui->trim6Label << ui->trim7Label << ui->trim8Label;
+ trimsUse << ui->trim1Use << ui->trim2Use << ui->trim3Use << ui->trim4Use << ui->trim5Use << ui->trim6Use << ui->trim7Use << ui->trim8Use;
+ trimsValue << ui->trim1Value << ui->trim2Value << ui->trim3Value << ui->trim4Value << ui->trim5Value << ui->trim6Value << ui->trim7Value << ui->trim8Value;
+ trimsSlider << ui->trim1Slider << ui->trim2Slider << ui->trim3Slider << ui->trim4Slider << ui->trim5Slider << ui->trim6Slider << ui->trim7Slider << ui->trim8Slider;
for (int i = trimCount; i < CPN_MAX_TRIMS; i++) {
trimsLabel[i]->hide();
diff --git a/radio/src/dataconstants.h b/radio/src/dataconstants.h
index a157fd354..24bddd66f 100644
--- a/radio/src/dataconstants.h
+++ b/radio/src/dataconstants.h
@@ -517,7 +517,9 @@ enum MixSources {
//#if defined(PCBHORUS)
MIXSRC_TrimT5,
MIXSRC_TrimT6,
- MIXSRC_LAST_TRIM SKIP = MIXSRC_TrimT6,
+ MIXSRC_TrimT7,
+ MIXSRC_TrimT8,
+ MIXSRC_LAST_TRIM SKIP = MIXSRC_TrimT8,
//#else
//MIXSRC_LAST_TRIM SKIP = MIXSRC_TrimAil,
//#endif
diff --git a/radio/src/storage/yaml/yaml_datastructs_128x64.cpp b/radio/src/storage/yaml/yaml_datastructs_128x64.cpp
index 138cb98c0..a2986cd6f 100644
--- a/radio/src/storage/yaml/yaml_datastructs_128x64.cpp
+++ b/radio/src/storage/yaml/yaml_datastructs_128x64.cpp
@@ -118,6 +118,8 @@ const struct YamlIdStr enum_MixSources[] = {
{ MIXSRC_TrimAil, "TrimAil" },
{ MIXSRC_TrimT5, "TrimT5" },
{ MIXSRC_TrimT6, "TrimT6" },
+ { MIXSRC_TrimT7, "TrimT7" },
+ { MIXSRC_TrimT8, "TrimT8" },
{ MIXSRC_TX_VOLTAGE, "TX_VOLTAGE" },
{ MIXSRC_TX_TIME, "TX_TIME" },
{ MIXSRC_TX_GPS, "TX_GPS" },
diff --git a/radio/src/storage/yaml/yaml_datastructs_nv14.cpp b/radio/src/storage/yaml/yaml_datastructs_nv14.cpp
index 30613dbe8..ac83379bd 100644
--- a/radio/src/storage/yaml/yaml_datastructs_nv14.cpp
+++ b/radio/src/storage/yaml/yaml_datastructs_nv14.cpp
@@ -120,6 +120,8 @@ const struct YamlIdStr enum_MixSources[] = {
{ MIXSRC_TrimAil, "TrimAil" },
{ MIXSRC_TrimT5, "TrimT5" },
{ MIXSRC_TrimT6, "TrimT6" },
+ { MIXSRC_TrimT7, "TrimT7" },
+ { MIXSRC_TrimT8, "TrimT8" },
{ MIXSRC_TX_VOLTAGE, "TX_VOLTAGE" },
{ MIXSRC_TX_TIME, "TX_TIME" },
{ MIXSRC_TX_GPS, "TX_GPS" },
diff --git a/radio/src/storage/yaml/yaml_datastructs_t20.cpp b/radio/src/storage/yaml/yaml_datastructs_t20.cpp
index 662a2cd54..b6b9d9be9 100644
--- a/radio/src/storage/yaml/yaml_datastructs_t20.cpp
+++ b/radio/src/storage/yaml/yaml_datastructs_t20.cpp
@@ -118,6 +118,8 @@ const struct YamlIdStr enum_MixSources[] = {
{ MIXSRC_TrimAil, "TrimAil" },
{ MIXSRC_TrimT5, "TrimT5" },
{ MIXSRC_TrimT6, "TrimT6" },
+ { MIXSRC_TrimT7, "TrimT7" },
+ { MIXSRC_TrimT8, "TrimT8" },
{ MIXSRC_TX_VOLTAGE, "TX_VOLTAGE" },
{ MIXSRC_TX_TIME, "TX_TIME" },
{ MIXSRC_TX_GPS, "TX_GPS" },
diff --git a/radio/src/storage/yaml/yaml_datastructs_tpro.cpp b/radio/src/storage/yaml/yaml_datastructs_tpro.cpp
index dbbdfeaa8..45bb5ba33 100644
--- a/radio/src/storage/yaml/yaml_datastructs_tpro.cpp
+++ b/radio/src/storage/yaml/yaml_datastructs_tpro.cpp
@@ -118,6 +118,8 @@ const struct YamlIdStr enum_MixSources[] = {
{ MIXSRC_TrimAil, "TrimAil" },
{ MIXSRC_TrimT5, "TrimT5" },
{ MIXSRC_TrimT6, "TrimT6" },
+ { MIXSRC_TrimT7, "TrimT7" },
+ { MIXSRC_TrimT8, "TrimT8" },
{ MIXSRC_TX_VOLTAGE, "TX_VOLTAGE" },
{ MIXSRC_TX_TIME, "TX_TIME" },
{ MIXSRC_TX_GPS, "TX_GPS" },
diff --git a/radio/src/storage/yaml/yaml_datastructs_x10.cpp b/radio/src/storage/yaml/yaml_datastructs_x10.cpp
index 6efe02a6d..e6a3f6010 100644
--- a/radio/src/storage/yaml/yaml_datastructs_x10.cpp
+++ b/radio/src/storage/yaml/yaml_datastructs_x10.cpp
@@ -128,6 +128,8 @@ const struct YamlIdStr enum_MixSources[] = {
{ MIXSRC_TrimAil, "TrimAil" },
{ MIXSRC_TrimT5, "TrimT5" },
{ MIXSRC_TrimT6, "TrimT6" },
+ { MIXSRC_TrimT7, "TrimT7" },
+ { MIXSRC_TrimT8, "TrimT8" },
{ MIXSRC_TX_VOLTAGE, "TX_VOLTAGE" },
{ MIXSRC_TX_TIME, "TX_TIME" },
{ MIXSRC_TX_GPS, "TX_GPS" },
diff --git a/radio/src/storage/yaml/yaml_datastructs_x12s.cpp b/radio/src/storage/yaml/yaml_datastructs_x12s.cpp
index 6efe02a6d..e6a3f6010 100644
--- a/radio/src/storage/yaml/yaml_datastructs_x12s.cpp
+++ b/radio/src/storage/yaml/yaml_datastructs_x12s.cpp
@@ -128,6 +128,8 @@ const struct YamlIdStr enum_MixSources[] = {
{ MIXSRC_TrimAil, "TrimAil" },
{ MIXSRC_TrimT5, "TrimT5" },
{ MIXSRC_TrimT6, "TrimT6" },
+ { MIXSRC_TrimT7, "TrimT7" },
+ { MIXSRC_TrimT8, "TrimT8" },
{ MIXSRC_TX_VOLTAGE, "TX_VOLTAGE" },
{ MIXSRC_TX_TIME, "TX_TIME" },
{ MIXSRC_TX_GPS, "TX_GPS" },
diff --git a/radio/src/storage/yaml/yaml_datastructs_x9d.cpp b/radio/src/storage/yaml/yaml_datastructs_x9d.cpp
index e243e0dbb..07fecdc2c 100644
--- a/radio/src/storage/yaml/yaml_datastructs_x9d.cpp
+++ b/radio/src/storage/yaml/yaml_datastructs_x9d.cpp
@@ -118,6 +118,8 @@ const struct YamlIdStr enum_MixSources[] = {
{ MIXSRC_TrimAil, "TrimAil" },
{ MIXSRC_TrimT5, "TrimT5" },
{ MIXSRC_TrimT6, "TrimT6" },
+ { MIXSRC_TrimT7, "TrimT7" },
+ { MIXSRC_TrimT8, "TrimT8" },
{ MIXSRC_TX_VOLTAGE, "TX_VOLTAGE" },
{ MIXSRC_TX_TIME, "TX_TIME" },
{ MIXSRC_TX_GPS, "TX_GPS" },
diff --git a/radio/src/storage/yaml/yaml_datastructs_x9e.cpp b/radio/src/storage/yaml/yaml_datastructs_x9e.cpp
index 9ad6123a9..d23ce959b 100644
--- a/radio/src/storage/yaml/yaml_datastructs_x9e.cpp
+++ b/radio/src/storage/yaml/yaml_datastructs_x9e.cpp
@@ -118,6 +118,8 @@ const struct YamlIdStr enum_MixSources[] = {
{ MIXSRC_TrimAil, "TrimAil" },
{ MIXSRC_TrimT5, "TrimT5" },
{ MIXSRC_TrimT6, "TrimT6" },
+ { MIXSRC_TrimT7, "TrimT7" },
+ { MIXSRC_TrimT8, "TrimT8" },
{ MIXSRC_TX_VOLTAGE, "TX_VOLTAGE" },
{ MIXSRC_TX_TIME, "TX_TIME" },
{ MIXSRC_TX_GPS, "TX_GPS" },
diff --git a/radio/src/storage/yaml/yaml_datastructs_x9lite.cpp b/radio/src/storage/yaml/yaml_datastructs_x9lite.cpp
index c239c8a60..9958d7a53 100644
--- a/radio/src/storage/yaml/yaml_datastructs_x9lite.cpp
+++ b/radio/src/storage/yaml/yaml_datastructs_x9lite.cpp
@@ -118,6 +118,8 @@ const struct YamlIdStr enum_MixSources[] = {
{ MIXSRC_TrimAil, "TrimAil" },
{ MIXSRC_TrimT5, "TrimT5" },
{ MIXSRC_TrimT6, "TrimT6" },
+ { MIXSRC_TrimT7, "TrimT7" },
+ { MIXSRC_TrimT8, "TrimT8" },
{ MIXSRC_TX_VOLTAGE, "TX_VOLTAGE" },
{ MIXSRC_TX_TIME, "TX_TIME" },
{ MIXSRC_TX_GPS, "TX_GPS" },
diff --git a/radio/src/storage/yaml/yaml_datastructs_xlites.cpp b/radio/src/storage/yaml/yaml_datastructs_xlites.cpp
index aacfa68dd..31a3fe3c7 100644
--- a/radio/src/storage/yaml/yaml_datastructs_xlites.cpp
+++ b/radio/src/storage/yaml/yaml_datastructs_xlites.cpp
@@ -120,6 +120,8 @@ const struct YamlIdStr enum_MixSources[] = {
{ MIXSRC_TrimAil, "TrimAil" },
{ MIXSRC_TrimT5, "TrimT5" },
{ MIXSRC_TrimT6, "TrimT6" },
+ { MIXSRC_TrimT7, "TrimT7" },
+ { MIXSRC_TrimT8, "TrimT8" },
{ MIXSRC_TX_VOLTAGE, "TX_VOLTAGE" },
{ MIXSRC_TX_TIME, "TX_TIME" },
{ MIXSRC_TX_GPS, "TX_GPS" },
diff --git a/tools/build-companion.sh b/tools/build-companion.sh
index cd7ce7276..a664d1ea5 100755
--- a/tools/build-companion.sh
+++ b/tools/build-companion.sh
@@ -68,7 +68,6 @@ declare -a simulator_plugins=(x9lite x9lites
t8 t12 tx12 tx12mk2
zorro pocket commando8 boxer
tlite tpro lr3pro
- t20
x9d x9dp x9dp2019 x9e
xlite xlites
nv14