feat(cpn): TProV2 support (#4206)

This commit is contained in:
3djc
2023-10-19 10:44:09 +10:00
committed by GitHub
parent 6d3aa573d4
commit ecd4a437f2
8 changed files with 77 additions and 15 deletions
+2
View File
@@ -320,6 +320,8 @@ elseif(PCB STREQUAL X7 AND PCBREV STREQUAL TLITEF4)
set(FLAVOUR tlitef4)
elseif(PCB STREQUAL X7 AND PCBREV STREQUAL TPRO)
set(FLAVOUR tpro)
elseif(PCB STREQUAL X7 AND PCBREV STREQUAL TPROV2)
set(FLAVOUR tprov2)
elseif(PCB STREQUAL X7 AND PCBREV STREQUAL T20)
set(FLAVOUR t20)
elseif(PCB STREQUAL X7 AND PCBREV STREQUAL TX12)
+24 -3
View File
@@ -140,6 +140,7 @@ int Boards::getEEpromSize(Board::Type board)
case BOARD_JUMPER_TLITE:
case BOARD_JUMPER_TLITE_F4:
case BOARD_JUMPER_TPRO:
case BOARD_JUMPER_TPROV2:
case BOARD_RADIOMASTER_TX12:
case BOARD_RADIOMASTER_TX12_MK2:
case BOARD_RADIOMASTER_T8:
@@ -186,6 +187,7 @@ int Boards::getFlashSize(Type board)
case BOARD_JUMPER_TLITE:
case BOARD_JUMPER_TLITE_F4:
case BOARD_JUMPER_TPRO:
case BOARD_JUMPER_TPROV2:
case BOARD_RADIOMASTER_TX12:
case BOARD_RADIOMASTER_TX12_MK2:
case BOARD_RADIOMASTER_ZORRO:
@@ -225,7 +227,19 @@ SwitchInfo Boards::getSwitchInfo(Board::Type board, int index)
if (index < DIM(switches))
return switches[index];
}
else if (IS_TARANIS_XLITE(board) || IS_JUMPER_TLITE(board) || IS_JUMPER_TPRO(board) || IS_BETAFPV_LR3PRO(board)) {
else if (IS_JUMPER_TPROV2(board)) {
const Board::SwitchInfo switches[] = {
{SWITCH_3POS, "SA"},
{SWITCH_3POS, "SB"},
{SWITCH_2POS, "SC"},
{SWITCH_2POS, "SD"},
{SWITCH_2POS, "SE"},
{SWITCH_2POS, "SF"},
};
if (index < DIM(switches))
return switches[index];
}
else if (IS_TARANIS_XLITE(board) || IS_JUMPER_TLITE(board) || IS_JUMPER_TPROV1(board) || IS_BETAFPV_LR3PRO(board)) {
const Board::SwitchInfo switches[] = {
{SWITCH_3POS, "SA"},
{SWITCH_3POS, "SB"},
@@ -511,9 +525,11 @@ int Boards::getCapability(Board::Type board, Board::Capability capability)
board == BOARD_JUMPER_TPRO || board == BOARD_BETAFPV_LR3PRO ||
board == BOARD_IFLIGHT_COMMANDO8)
return 4;
else if (board == BOARD_JUMPER_TPROV2)
return 6;
else if (board == BOARD_FLYSKY_NV14 || board == BOARD_FLYSKY_EL18)
return 8;
else if (board == BOARD_RADIOMASTER_TX12_MK2 || board == BOARD_RADIOMASTER_BOXER)
else if (board == BOARD_RADIOMASTER_TX12_MK2 || board == BOARD_RADIOMASTER_BOXER || board == BOARD_JUMPER_TPRO)
return 6;
else if (IS_FAMILY_T12(board))
return 8;
@@ -534,7 +550,9 @@ int Boards::getCapability(Board::Type board, Board::Capability capability)
case FactoryInstalledSwitches:
if (IS_TARANIS_X9E(board))
return 8;
else if (IS_JUMPER_TLITE(board) || IS_JUMPER_TPRO(board) || IS_BETAFPV_LR3PRO(board) || IS_IFLIGHT_COMMANDO8(board))
else if (IS_JUMPER_TPROV2(board))
return 6;
else if (IS_JUMPER_TLITE(board) || IS_JUMPER_TPROV1(board) || IS_BETAFPV_LR3PRO(board) || IS_IFLIGHT_COMMANDO8(board))
return 4;
else if(IS_RADIOMASTER_ZORRO(board))
return 8;
@@ -869,6 +887,8 @@ QString Boards::getBoardName(Board::Type board)
return "Jumper T-Lite (F4 MCU)";
case BOARD_JUMPER_TPRO:
return "Jumper T-Pro";
case BOARD_JUMPER_TPROV2:
return "Jumper T-ProV2";
case BOARD_JUMPER_T16:
return "Jumper T16";
case BOARD_JUMPER_T18:
@@ -1109,6 +1129,7 @@ int Boards::getDefaultInternalModules(Board::Type board)
case BOARD_JUMPER_TLITE:
case BOARD_JUMPER_TLITE_F4:
case BOARD_JUMPER_TPRO:
case BOARD_JUMPER_TPROV2:
return (int)MODULE_TYPE_MULTIMODULE;
case BOARD_BETAFPV_LR3PRO:
+12
View File
@@ -73,6 +73,7 @@ namespace Board {
BOARD_BETAFPV_LR3PRO,
BOARD_IFLIGHT_COMMANDO8,
BOARD_FLYSKY_EL18,
BOARD_JUMPER_TPROV2,
BOARD_TYPE_COUNT,
BOARD_TYPE_MAX = BOARD_TYPE_COUNT - 1
};
@@ -291,10 +292,20 @@ inline bool IS_JUMPER_TLITE(Board::Type board)
}
inline bool IS_JUMPER_TPRO(Board::Type board)
{
return board == Board::BOARD_JUMPER_TPRO || board == Board::BOARD_JUMPER_TPROV2;
}
inline bool IS_JUMPER_TPROV1(Board::Type board)
{
return board == Board::BOARD_JUMPER_TPRO;
}
inline bool IS_JUMPER_TPROV2(Board::Type board)
{
return board == Board::BOARD_JUMPER_TPROV2;
}
inline bool IS_JUMPER_T16(Board::Type board)
{
return board == Board::BOARD_JUMPER_T16;
@@ -351,6 +362,7 @@ inline bool IS_FAMILY_T12(Board::Type board)
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;
}
@@ -67,11 +67,9 @@ std::string YamlRawSourceEncode(const RawSource& rhs)
src_str += ")";
break;
case SOURCE_TYPE_FUNCTIONSWITCH:
if (IS_JUMPER_TPRO(getCurrentBoard())) {
c += Boards::getCapability(getCurrentBoard(), Board::Switches);
c += rhs.index;
src_str += "S";
src_str += c;
if (Boards::getCapability(getCurrentBoard(), Board::FunctionSwitches)) {
src_str += "SW";
src_str += std::to_string(rhs.index + 1);
}
break;
case SOURCE_TYPE_CYC:
@@ -153,6 +151,14 @@ RawSource YamlRawSourceDecode(const std::string& src_str)
rhs = RawSource(SOURCE_TYPE_FUNCTIONSWITCH, idx);
}
}
} else if (val_len == 3
&& val[0] == 'S'
&& val[1] == 'W'
&& (val[2] >= '1' && val[2] <= '6')
&& Boards::getCapability(getCurrentBoard(), Board::FunctionSwitches)) {
// Customisable switches
int idx = val[2] - '1';
rhs = RawSource(SOURCE_TYPE_FUNCTIONSWITCH, idx);
} else if (val_len > 4 &&
val[0] == 'l' &&
@@ -45,11 +45,9 @@ std::string YamlRawSwitchEncode(const RawSwitch& rhs)
break;
case SWITCH_TYPE_FUNCTIONSWITCH:
if (IS_JUMPER_TPRO(getCurrentBoard())) {
c += Boards::getCapability(getCurrentBoard(), Board::Switches);
c += (sval - 1) / 3;
sw_str += "S";
sw_str += c;
if (Boards::getCapability(getCurrentBoard(), Board::FunctionSwitches)) {
sw_str += "SW";
sw_str += std::to_string(1 + ((sval - 1) / 3));
sw_str += std::to_string((sval - 1) % 3);
}
break;
@@ -141,7 +139,14 @@ RawSwitch YamlRawSwitchDecode(const std::string& sw_str)
rhs.type = SWITCH_TYPE_TRIM;
rhs.index = tsw_idx + 1;
}
} else if (val_len >= 3 && val[0] == 'S' && val[1] == 'W' &&
(val[2] >= '1' && val[2] <= '6') &&
(val[3] >= '0' && val[3] <= '2') &&
Boards::getCapability(getCurrentBoard(), Board::FunctionSwitches)) {
// Customisable switches
int idx = val[2] - '1';
idx = idx * 3 + (val[3] - '0' + 1);
rhs = RawSwitch(SWITCH_TYPE_FUNCTIONSWITCH, idx);
} else if (val_len >= 3 && val[0] == 'S' &&
(val[1] >= 'A' && val[1] <= 'Z') &&
(val[2] >= '0' && val[2] <= '2')) {
@@ -43,7 +43,10 @@ inline int MAX_SWITCHES(Board::Type board, int version)
if (IS_TARANIS_X9D(board))
return 9;
if (IS_JUMPER_TPRO(board))
if (IS_JUMPER_TPROV2(board))
return 12;
if (IS_JUMPER_TPROV1(board))
return 10;
if (IS_FAMILY_T12(board))
@@ -66,6 +66,8 @@ const char * OpenTxEepromInterface::getName()
return "EdgeTX for Jumper T-Lite (F4 MCU)";
case BOARD_JUMPER_TPRO:
return "EdgeTX for Jumper T-Pro";
case BOARD_JUMPER_TPROV2:
return "EdgeTX for Jumper T-Pro V2";
case BOARD_JUMPER_T16:
return "EdgeTX for Jumper T16";
case BOARD_JUMPER_T18:
@@ -1339,6 +1341,16 @@ void registerOpenTxFirmwares()
registerOpenTxFirmware(firmware);
addOpenTxRfOptions(firmware, FLEX);
/* Jumper T-Pro V2 board */
firmware = new OpenTxFirmware(FIRMWAREID("tprov2"), QCoreApplication::translate("Firmware", "Jumper T-Pro v2"), BOARD_JUMPER_TPROV2);
addOpenTxCommonOptions(firmware);
firmware->addOption("noheli", Firmware::tr("Disable HELI menu and cyclic mix support"));
firmware->addOption("nogvars", Firmware::tr("Disable Global variables"));
firmware->addOption("lua", Firmware::tr("Enable Lua custom scripts screen"));
addOpenTxFontOptions(firmware);
registerOpenTxFirmware(firmware);
addOpenTxRfOptions(firmware, FLEX);
/* Jumper T16 board */
firmware = new OpenTxFirmware(FIRMWAREID("t16"), Firmware::tr("Jumper T16 / T16+ / T16 Pro"), BOARD_JUMPER_T16);
addOpenTxFrskyOptions(firmware);
@@ -101,6 +101,7 @@ SimulatorWidget::SimulatorWidget(QWidget * parent, SimulatorInterface * simulato
radioUiWidget = new SimulatedUIWidgetJumperTLITE(simulator, this);
break;
case Board::BOARD_JUMPER_TPRO:
case Board::BOARD_JUMPER_TPROV2:
radioUiWidget = new SimulatedUIWidgetJumperTPRO(simulator, this);
break;
case Board::BOARD_JUMPER_T16: