feat(cpn): Initial TX12MK2 support

This commit is contained in:
Peter Feerick
2022-08-27 19:03:05 +10:00
committed by Peter Feerick
parent dc99dd40d2
commit 9cbb3cb2a8
5 changed files with 56 additions and 4 deletions
+21
View File
@@ -95,6 +95,8 @@ uint32_t Boards::getFourCC(Type board)
return 0x3878746F;
case BOARD_RADIOMASTER_TX12:
return 0x4178746F;
case BOARD_RADIOMASTER_TX12_MK2:
return 0x4878746F;
case BOARD_RADIOMASTER_ZORRO:
return 0x4778746F;
case BOARD_RADIOMASTER_T8:
@@ -129,6 +131,7 @@ int Boards::getEEpromSize(Board::Type board)
case BOARD_JUMPER_TLITE:
case BOARD_JUMPER_TPRO:
case BOARD_RADIOMASTER_TX12:
case BOARD_RADIOMASTER_TX12_MK2:
case BOARD_RADIOMASTER_T8:
case BOARD_RADIOMASTER_ZORRO:
return EESIZE_TARANIS;
@@ -170,6 +173,7 @@ int Boards::getFlashSize(Type board)
case BOARD_JUMPER_TLITE:
case BOARD_JUMPER_TPRO:
case BOARD_RADIOMASTER_TX12:
case BOARD_RADIOMASTER_TX12_MK2:
case BOARD_RADIOMASTER_ZORRO:
case BOARD_RADIOMASTER_T8:
return FSIZE_TARANIS;
@@ -256,6 +260,18 @@ SwitchInfo Boards::getSwitchInfo(Board::Type board, int index)
if (index < DIM(switches))
return switches[index];
}
else if (IS_RADIOMASTER_TX12_MK2(board)) {
const Board::SwitchInfo switches[] = {
{SWITCH_TOGGLE, "SA"},
{SWITCH_3POS, "SB"},
{SWITCH_3POS, "SC"},
{SWITCH_TOGGLE, "SD"},
{SWITCH_3POS, "SE"},
{SWITCH_3POS, "SF"}
};
if (index < DIM(switches))
return switches[index];
}
else if (IS_RADIOMASTER_ZORRO(board)) {
const Board::SwitchInfo switches[] = {
{SWITCH_TOGGLE, "SA"},
@@ -440,6 +456,8 @@ int Boards::getCapability(Board::Type board, Board::Capability capability)
return 4;
else if (board == BOARD_FLYSKY_NV14)
return 8;
else if (board == BOARD_RADIOMASTER_TX12_MK2)
return 6;
else if (IS_FAMILY_T12(board))
return 8;
else if (IS_TARANIS_XLITE(board))
@@ -665,6 +683,8 @@ QString Boards::getBoardName(Board::Type board)
return "Radiomaster TX16S";
case BOARD_RADIOMASTER_TX12:
return "Radiomaster TX12";
case BOARD_RADIOMASTER_TX12_MK2:
return "Radiomaster TX12 Mark II";
case BOARD_RADIOMASTER_ZORRO:
return "Radiomaster Zorro";
case BOARD_RADIOMASTER_T8:
@@ -885,6 +905,7 @@ int Boards::getDefaultInternalModules(Board::Type board)
case BOARD_RADIOMASTER_ZORRO:
case BOARD_BETAFPV_LR3PRO:
case BOARD_RADIOMASTER_TX12_MK2:
return (int)MODULE_TYPE_CROSSFIRE;
case BOARD_FLYSKY_NV14:
+7
View File
@@ -60,6 +60,7 @@ namespace Board {
BOARD_RADIOMASTER_TX16S,
BOARD_JUMPER_T18,
BOARD_RADIOMASTER_TX12,
BOARD_RADIOMASTER_TX12_MK2,
BOARD_RADIOMASTER_T8,
BOARD_JUMPER_TLITE,
BOARD_FLYSKY_NV14,
@@ -283,6 +284,11 @@ inline bool IS_RADIOMASTER_TX12(Board::Type board)
return board == Board::BOARD_RADIOMASTER_TX12;
}
inline bool IS_RADIOMASTER_TX12_MK2(Board::Type board)
{
return board == Board::BOARD_RADIOMASTER_TX12_MK2;
}
inline bool IS_RADIOMASTER_ZORRO(Board::Type board)
{
return board == Board::BOARD_RADIOMASTER_ZORRO;
@@ -303,6 +309,7 @@ inline bool IS_FAMILY_T12(Board::Type board)
{
return board == Board::BOARD_JUMPER_T12 ||
board == Board::BOARD_RADIOMASTER_TX12 ||
board == Board::BOARD_RADIOMASTER_TX12_MK2 ||
board == Board::BOARD_RADIOMASTER_ZORRO ||
board == Board::BOARD_RADIOMASTER_T8 ||
board == Board::BOARD_JUMPER_TLITE ||
@@ -42,6 +42,7 @@
#define RADIOMASTER_T8_VARIANT 0x4004
#define RADIOMASTER_ZORRO_VARIANT 0x4006
#define JUMPER_TPRO_VARIANT 0x4005
#define RADIOMASTER_TX12_MK2_VARIANT 0x4008
class OpenTxGeneralData: public TransformedField {
public:
@@ -72,6 +72,8 @@ const char * OpenTxEepromInterface::getName()
return "EdgeTX for Radiomaster TX16S";
case BOARD_RADIOMASTER_TX12:
return "EdgeTX for Radiomaster TX12";
case BOARD_RADIOMASTER_TX12_MK2:
return "EdgeTX for Radiomaster TX12 Mark II";
case BOARD_RADIOMASTER_ZORRO:
return "EdgeTX for Radiomaster Zorro";
case BOARD_RADIOMASTER_T8:
@@ -360,6 +362,9 @@ int OpenTxEepromInterface::save(uint8_t * eeprom, const RadioData & radioData, u
else if (IS_RADIOMASTER_TX12(board)) {
variant |= RADIOMASTER_TX12_VARIANT;
}
else if (IS_RADIOMASTER_TX12_MK2(board)) {
variant |= RADIOMASTER_TX12_MK2_VARIANT;
}
else if (IS_RADIOMASTER_ZORRO(board)) {
variant |= RADIOMASTER_ZORRO_VARIANT;
}
@@ -753,12 +758,12 @@ int OpenTxFirmware::getCapability(::Capability capability)
case HasAuxSerialMode:
return (IS_FAMILY_HORUS_OR_T16(board) && !IS_FLYSKY_NV14(board)) ||
(IS_TARANIS_X9(board) && !IS_TARANIS_X9DP_2019(board)) ||
IS_RADIOMASTER_ZORRO(board);
IS_RADIOMASTER_ZORRO(board) || IS_RADIOMASTER_TX12_MK2(board);
case HasAux2SerialMode:
return IS_FAMILY_T16(board);
case HasVCPSerialMode:
return IS_FAMILY_HORUS_OR_T16(board) || IS_RADIOMASTER_ZORRO(board) ||
IS_JUMPER_TPRO(board);
IS_JUMPER_TPRO(board) || IS_RADIOMASTER_TX12_MK2(board);
case HasBluetooth:
return (IS_FAMILY_HORUS_OR_T16(board) || IS_TARANIS_X7(board) || IS_TARANIS_XLITE(board)|| IS_TARANIS_X9E(board) || IS_TARANIS_X9DP_2019(board) || IS_FLYSKY_NV14(board)) ? true : false;
case HasAntennaChoice:
@@ -777,8 +782,8 @@ int OpenTxFirmware::getCapability(::Capability capability)
return (IS_TARANIS_X9E(board) || IS_TARANIS_X9DP_2019(board) ||
IS_TARANIS_X7(board) || IS_JUMPER_TPRO(board) ||
IS_TARANIS_X9LITE(board) || IS_RADIOMASTER_TX12(board) ||
IS_RADIOMASTER_ZORRO(board) || IS_RADIOMASTER_TX16S(board) ||
IS_JUMPER_T18(board));
IS_RADIOMASTER_TX12_MK2(board) || IS_RADIOMASTER_ZORRO(board) ||
IS_RADIOMASTER_TX16S(board) || IS_JUMPER_T18(board));
case HasSoftwareSerialPower:
return IS_RADIOMASTER_TX16S(board);
default:
@@ -827,6 +832,8 @@ bool OpenTxFirmware::isAvailable(PulsesProtocol proto, int port)
return IS_ACCESS_RADIO(board, id);
case PULSES_MULTIMODULE:
return id.contains("internalmulti") || IS_RADIOMASTER_TX16S(board) || IS_JUMPER_T18(board) || IS_RADIOMASTER_TX12(board) || IS_JUMPER_TLITE(board) || IS_BETAFPV_LR3PRO(board);
case PULSES_CROSSFIRE:
IS_RADIOMASTER_TX12_MK2(board);
case PULSES_AFHDS3:
return IS_FLYSKY_NV14(board);
default:
@@ -1076,6 +1083,11 @@ bool OpenTxEepromInterface::checkVariant(unsigned int version, unsigned int vari
variantError = true;
}
}
else if (IS_RADIOMASTER_TX12_MK2(board)) {
if (variant != RADIOMASTER_TX12_MK2_VARIANT) {
variantError = true;
}
}
else if (IS_RADIOMASTER_ZORRO(board)) {
if (variant != RADIOMASTER_ZORRO_VARIANT) {
variantError = true;
@@ -1449,6 +1461,16 @@ void registerOpenTxFirmwares()
registerOpenTxFirmware(firmware);
addOpenTxRfOptions(firmware, FLEX);
/* Radiomaster TX12 board */
firmware = new OpenTxFirmware(FIRMWAREID("tx12mk2"), QCoreApplication::translate("Firmware", "Radiomaster TX12 Mark II"), BOARD_RADIOMASTER_TX12_MK2);
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);
/* Radiomaster Zorro board */
firmware = new OpenTxFirmware(FIRMWAREID("zorro"), QCoreApplication::translate("Firmware", "Radiomaster Zorro"), Board::BOARD_RADIOMASTER_ZORRO);
addOpenTxCommonOptions(firmware);
@@ -104,6 +104,7 @@ SimulatorWidget::SimulatorWidget(QWidget * parent, SimulatorInterface * simulato
radioUiWidget = new SimulatedUIWidgetJumperT18(simulator, this);
break;
case Board::BOARD_RADIOMASTER_TX12:
case Board::BOARD_RADIOMASTER_TX12_MK2:
radioUiWidget = new SimulatedUIWidgetTX12(simulator, this);
break;
case Board::BOARD_RADIOMASTER_ZORRO: