Skip to content

Commit

Permalink
chore(cpn): add PL18EV support (#5849)
Browse files Browse the repository at this point in the history
  • Loading branch information
pfeerick authored Jan 30, 2025
1 parent 79bde7e commit 8256688
Show file tree
Hide file tree
Showing 8 changed files with 52 additions and 12 deletions.
2 changes: 2 additions & 0 deletions companion/src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -354,6 +354,8 @@ elseif(PCB STREQUAL X10 AND PCBREV STREQUAL T18)
set(FLAVOUR t18)
elseif(PCB STREQUAL NV14 AND PCBREV STREQUAL EL18)
set(FLAVOUR el18)
elseif(PCB STREQUAL PL18 AND PCBREV STREQUAL PL18EV)
set(FLAVOUR pl18ev)
elseif(PCB STREQUAL PL18)
set(FLAVOUR pl18)
else()
Expand Down
28 changes: 23 additions & 5 deletions companion/src/firmwares/boards.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -153,10 +153,10 @@ uint32_t Boards::getFourCC(Type board)
case BOARD_RADIOMASTER_T8:
return 0x4378746F;
case BOARD_FLYSKY_NV14:
return 0x3A78746F;
case BOARD_FLYSKY_EL18:
return 0x3A78746F;
case BOARD_FLYSKY_PL18:
case BOARD_FLYSKY_PL18EV:
return 0x4878746F;
default:
return 0;
Expand Down Expand Up @@ -215,6 +215,7 @@ int Boards::getEEpromSize(Board::Type board)
case BOARD_FLYSKY_NV14:
case BOARD_FLYSKY_EL18:
case BOARD_FLYSKY_PL18:
case BOARD_FLYSKY_PL18EV:
case BOARD_FATFISH_F16:
case BOARD_HELLORADIOSKY_V16:
return 0;
Expand Down Expand Up @@ -273,6 +274,7 @@ int Boards::getFlashSize(Type board)
case BOARD_FLYSKY_NV14:
case BOARD_FLYSKY_EL18:
case BOARD_FLYSKY_PL18:
case BOARD_FLYSKY_PL18EV:
case BOARD_FATFISH_F16:
case BOARD_HELLORADIOSKY_V16:
return FSIZE_HORUS;
Expand Down Expand Up @@ -307,7 +309,7 @@ int Boards::getCapability(Board::Type board, Board::Capability capability)
return 4;
else if(IS_RADIOMASTER_ZORRO(board))
return 8;
else if (board == BOARD_RADIOMASTER_POCKET)
else if (IS_RADIOMASTER_POCKET(board))
return 5;
else if (IS_FAMILY_T12(board))
return 6;
Expand Down Expand Up @@ -337,7 +339,7 @@ int Boards::getCapability(Board::Type board, Board::Capability capability)
return (IS_STM32(board) && !IS_TARANIS_X9(board));

case HasLedStripGPIO:
return (IS_RADIOMASTER_MT12(board) || IS_FLYSKY_PL18(board) ||
return (IS_RADIOMASTER_MT12(board) || IS_FAMILY_PL18(board) ||
IS_HELLORADIOSKY_V16(board));

case HasSDCard:
Expand Down Expand Up @@ -371,7 +373,7 @@ int Boards::getCapability(Board::Type board, Board::Capability capability)
case LcdHeight:
if (IS_FLYSKY_NV14(board) || IS_FLYSKY_EL18(board))
return 480;
else if (IS_FLYSKY_PL18(board) || IS_JUMPER_T15(board))
else if (IS_FAMILY_PL18(board) || IS_JUMPER_T15(board))
return 320;
else if (IS_FAMILY_HORUS_OR_T16(board))
return 272;
Expand All @@ -381,7 +383,7 @@ int Boards::getCapability(Board::Type board, Board::Capability capability)
case LcdWidth:
if (IS_FLYSKY_NV14(board) || IS_FLYSKY_EL18(board))
return 320;
else if (IS_FLYSKY_PL18(board))
else if (IS_FAMILY_PL18(board))
return 480;
else if (IS_FAMILY_HORUS_OR_T16(board))
return 480;
Expand Down Expand Up @@ -518,6 +520,18 @@ StringTagMappingTable Boards::getLegacyAnalogsLookupTable(Board::Type board)
{tr("SL1").toStdString(), "LS"},
{tr("SL2").toStdString(), "RS"},
});
} else if (IS_FLYSKY_PL18EV(board)) {
tbl.insert(tbl.end(), {
{tr("P1").toStdString(), "POT1"},
{tr("P2").toStdString(), "POT2"},
{tr("P3").toStdString(), "POT3"},
{tr("SL1").toStdString(), "LS"},
{tr("SL2").toStdString(), "RS"},
{tr("EXT1").toStdString(), "EXT1"},
{tr("EXT2").toStdString(), "EXT2"},
{tr("EXT3").toStdString(), "EXT3"},
{tr("EXT4").toStdString(), "EXT4"},
});
} else if (IS_HORUS_X10(board) || IS_FAMILY_T16(board)) {
tbl.insert(tbl.end(), {
{tr("P1").toStdString(), "S1"},
Expand Down Expand Up @@ -641,6 +655,8 @@ QString Boards::getBoardName(Board::Type board)
return "FlySky EL18";
case BOARD_FLYSKY_PL18:
return "FlySky PL18";
case BOARD_FLYSKY_PL18EV:
return "FlySky PL18EV";
case BOARD_BETAFPV_LR3PRO:
return "BETAFPV LR3PRO";
case BOARD_IFLIGHT_COMMANDO8:
Expand Down Expand Up @@ -752,6 +768,7 @@ int Boards::getDefaultInternalModules(Board::Type board)
case BOARD_JUMPER_TPRO:
case BOARD_JUMPER_TPROV2:
case BOARD_FLYSKY_PL18:
case BOARD_FLYSKY_PL18EV:
return (int)MODULE_TYPE_MULTIMODULE;

case BOARD_BETAFPV_LR3PRO:
Expand Down Expand Up @@ -836,6 +853,7 @@ void Boards::getBattRange(Board::Type board, int& vmin, int& vmax, unsigned int&
BR(35, 42, 37)
break;
case BOARD_FLYSKY_PL18:
case BOARD_FLYSKY_PL18EV:
BR(35, 43, 37)
break;
case BOARD_IFLIGHT_COMMANDO8:
Expand Down
15 changes: 13 additions & 2 deletions companion/src/firmwares/boards.h
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@ namespace Board {
BOARD_JUMPER_TLITE_F4,
BOARD_FLYSKY_NV14,
BOARD_FLYSKY_PL18,
BOARD_FLYSKY_PL18EV,
BOARD_RADIOMASTER_ZORRO,
BOARD_JUMPER_TPRO,
BOARD_BETAFPV_LR3PRO,
Expand Down Expand Up @@ -660,6 +661,16 @@ inline bool IS_FLYSKY_PL18(Board::Type board)
return (board == Board::BOARD_FLYSKY_PL18);
}

inline bool IS_FLYSKY_PL18EV(Board::Type board)
{
return (board == Board::BOARD_FLYSKY_PL18EV);
}

inline bool IS_FAMILY_PL18(Board::Type board)
{
return IS_FLYSKY_PL18(board) || IS_FLYSKY_PL18EV(board);
}

inline bool IS_TARANIS_XLITE(Board::Type board)
{
return board == Board::BOARD_TARANIS_XLITE || board == Board::BOARD_TARANIS_XLITES;
Expand Down Expand Up @@ -739,7 +750,7 @@ inline bool IS_FAMILY_HORUS_OR_T16(Board::Type board)
{
return IS_FAMILY_HORUS(board) || IS_FAMILY_T16(board) ||
IS_FLYSKY_NV14(board)/*generally*/ || IS_FLYSKY_EL18(board)/*generally*/
|| IS_FLYSKY_PL18(board);
|| IS_FAMILY_PL18(board);
}

inline bool IS_HORUS_OR_TARANIS(Board::Type board)
Expand All @@ -750,7 +761,7 @@ inline bool IS_HORUS_OR_TARANIS(Board::Type board)
inline bool IS_STM32(Board::Type board)
{
return IS_TARANIS(board) || IS_FAMILY_HORUS_OR_T16(board) ||
IS_FLYSKY_NV14(board) || IS_FLYSKY_EL18(board) || IS_FLYSKY_PL18(board);
IS_FLYSKY_NV14(board) || IS_FLYSKY_EL18(board) || IS_FAMILY_PL18(board);
}

inline bool IS_ARM(Board::Type board)
Expand Down
4 changes: 3 additions & 1 deletion companion/src/firmwares/generalsettings.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -222,6 +222,8 @@ void GeneralSettings::init()
strcpy(bluetoothName, "nv14");
else if (IS_FLYSKY_PL18(board))
strcpy(bluetoothName, "pl18");
else if (IS_FLYSKY_PL18EV(board))
strcpy(bluetoothName, "pl18ev");
else if (IS_FAMILY_HORUS_OR_T16(board))
strcpy(bluetoothName, "horus");
else if (IS_TARANIS_X9E(board) || IS_TARANIS_SMALL(board))
Expand Down Expand Up @@ -328,7 +330,7 @@ void GeneralSettings::init()

internalModule = g.profile[g.sessionId()].defaultInternalModule();

if (IS_FLYSKY_NV14(board) || IS_FLYSKY_PL18(board))
if (IS_FLYSKY_NV14(board) || IS_FAMILY_PL18(board))
stickDeadZone = 2;

}
Expand Down
9 changes: 8 additions & 1 deletion companion/src/firmwares/opentx/opentxinterface.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -314,7 +314,7 @@ int OpenTxFirmware::getCapability(::Capability capability)
IS_RADIOMASTER_MT12(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) || IS_FLYSKY_EL18(board) || IS_FLYSKY_PL18(board)) ? true : false;
IS_TARANIS_X9DP_2019(board) || IS_FLYSKY_NV14(board) || IS_FLYSKY_EL18(board) || IS_FAMILY_PL18(board)) ? true : false;
case HasADCJitterFilter:
return IS_HORUS_OR_TARANIS(board);
case HasTelemetryBaudrate:
Expand Down Expand Up @@ -505,6 +505,13 @@ void registerOpenTxFirmwares()
addOpenTxRfOptions(firmware, FLEX + AFHDS3);
registerOpenTxFirmware(firmware);

/* FlySky PL18EV board */
firmware = new OpenTxFirmware(FIRMWAREID("pl18ev"), Firmware::tr("FlySky PL18EV"), BOARD_FLYSKY_PL18EV);
addOpenTxFrskyOptions(firmware);
firmware->addOption(opt_bt);
addOpenTxRfOptions(firmware, FLEX + AFHDS3);
registerOpenTxFirmware(firmware);

/* FrSky Horus X10 board */
firmware = new OpenTxFirmware(FIRMWAREID("x10"), Firmware::tr("FrSky Horus X10 / X10S"), BOARD_X10);
addOpenTxFrskyOptions(firmware);
Expand Down
2 changes: 1 addition & 1 deletion companion/src/generaledit/generalsetup.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -190,7 +190,7 @@ ui(new Ui::GeneralSetup)
ui->usbModeCB->hide();
}

if (IS_FLYSKY_EL18(board) || IS_FLYSKY_NV14(board) || IS_FLYSKY_PL18(board)) {
if (IS_FLYSKY_EL18(board) || IS_FLYSKY_NV14(board) || IS_FAMILY_PL18(board)) {
ui->hatsModeCB->setModel(panelFilteredModels->getItemModel(FIM_HATSMODE));
ui->hatsModeCB->setField(generalSettings.hatsMode, this);
}
Expand Down
2 changes: 1 addition & 1 deletion companion/src/modeledit/setup.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -284,7 +284,7 @@ SetupPanel::SetupPanel(QWidget * parent, ModelData & model, GeneralSettings & ge

ui->trimsDisplay->setField(model.trimsDisplay, this);

if (IS_FLYSKY_EL18(board) || IS_FLYSKY_NV14(board) || IS_FLYSKY_PL18(board)) {
if (IS_FLYSKY_EL18(board) || IS_FLYSKY_NV14(board) || IS_FAMILY_PL18(board)) {
ui->cboHatsMode->setModel(panelFilteredModels->getItemModel(FIM_HATSMODE));
ui->cboHatsMode->setField(model.hatsMode, this);
}
Expand Down
2 changes: 1 addition & 1 deletion companion/src/modelprinter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -866,7 +866,7 @@ QString ModelPrinter::printSettingsTrim()
str << printLabelValue(tr("Display"), printTrimsDisplayMode());
str << printLabelValue(tr("Extended"), printBoolean(model.extendedTrims, BOOLEAN_YESNO));
Board::Type board = firmware->getBoard();
if (IS_FLYSKY_EL18(board) || IS_FLYSKY_NV14(board) || IS_FLYSKY_PL18(board)) {
if (IS_FLYSKY_EL18(board) || IS_FLYSKY_NV14(board) || IS_FAMILY_PL18(board)) {
str << printLabelValue(tr("Hats Mode"), printHatsMode());
}
return str.join(" ");
Expand Down

0 comments on commit 8256688

Please sign in to comment.