From 0369718a35c84040feaca4d6b6c04f9ddde1a000 Mon Sep 17 00:00:00 2001 From: Peter Feerick Date: Fri, 29 Nov 2024 10:54:04 +1000 Subject: [PATCH] fix(cpn): some trainer options not working (#5684) --- companion/src/firmwares/boards.cpp | 1 + .../src/firmwares/edgetx/yaml_modeldata.cpp | 3 ++- companion/src/firmwares/modeldata.cpp | 20 +++++++++---------- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/companion/src/firmwares/boards.cpp b/companion/src/firmwares/boards.cpp index a0f08570f3c..c36c051aa81 100644 --- a/companion/src/firmwares/boards.cpp +++ b/companion/src/firmwares/boards.cpp @@ -338,6 +338,7 @@ int Boards::getCapability(Board::Type board, Board::Capability capability) return ((IS_TARANIS_X9LITE(board) || (IS_TARANIS_XLITE(board) && !IS_TARANIS_X9LITES(board)) || IS_TARANIS_X9DP_2019(board) || IS_TARANIS_X7_ACCESS(board) || IS_RADIOMASTER_ZORRO(board) || IS_RADIOMASTER_TX12_MK2(board) || IS_RADIOMASTER_BOXER(board) || IS_RADIOMASTER_POCKET(board)) || + IS_FAMILY_T16(board) || IS_FAMILY_HORUS(board) || (getCapability(board, HasExternalModuleSupport) && (IS_TARANIS(board) && !IS_FAMILY_T12(board)))); case MaxAnalogs: diff --git a/companion/src/firmwares/edgetx/yaml_modeldata.cpp b/companion/src/firmwares/edgetx/yaml_modeldata.cpp index c115c4a513a..e7e638317c1 100644 --- a/companion/src/firmwares/edgetx/yaml_modeldata.cpp +++ b/companion/src/firmwares/edgetx/yaml_modeldata.cpp @@ -107,7 +107,8 @@ static const YamlLookupTable trainerModeLut = { { TRAINER_MODE_SLAVE_JACK, "SLAVE" }, { TRAINER_MODE_MASTER_SBUS_EXTERNAL_MODULE, "MASTER_SBUS_EXT" }, { TRAINER_MODE_MASTER_CPPM_EXTERNAL_MODULE, "MASTER_CPPM_EXT" }, - { TRAINER_MODE_MASTER_SERIAL, "MASTER_BATT_COMP" }, + { TRAINER_MODE_MASTER_SERIAL, "MASTER_SERIAL" }, + { TRAINER_MODE_MASTER_SERIAL, "MASTER_BATT_COMP" }, // depreciated, kept for conversion from older settings { TRAINER_MODE_MASTER_BLUETOOTH, "MASTER_BT" }, { TRAINER_MODE_SLAVE_BLUETOOTH, "SLAVE_BT" }, { TRAINER_MODE_MULTI, "MASTER_MULTI" }, diff --git a/companion/src/firmwares/modeldata.cpp b/companion/src/firmwares/modeldata.cpp index e5cdcdb73e5..3f8f3d13e20 100644 --- a/companion/src/firmwares/modeldata.cpp +++ b/companion/src/firmwares/modeldata.cpp @@ -1651,6 +1651,16 @@ bool ModelData::isTrainerModeAvailable(const GeneralSettings & generalSettings, generalSettings.bluetoothMode) return false; + if (value == TRAINER_MODE_MASTER_SBUS_EXTERNAL_MODULE && + !Boards::getCapability(board, Board::HasTrainerModuleSBUS)) + return false; + + if ((value == TRAINER_MODE_MASTER_SBUS_EXTERNAL_MODULE || value == TRAINER_MODE_MASTER_CPPM_EXTERNAL_MODULE) && + (Boards::getCapability(board, Board::HasTrainerModuleCPPM) || + Boards::getCapability(board, Board::HasTrainerModuleSBUS)) && + moduleData[1].protocol != PULSES_OFF) + return false; + if (value == TRAINER_MODE_MASTER_SERIAL && (generalSettings.serialPort[GeneralSettings::SP_AUX1] != GeneralSettings::AUX_SERIAL_SBUS_TRAINER && generalSettings.serialPort[GeneralSettings::SP_AUX2] != GeneralSettings::AUX_SERIAL_SBUS_TRAINER)) @@ -1669,16 +1679,6 @@ bool ModelData::isTrainerModeAvailable(const GeneralSettings & generalSettings, !Boards::getCapability(board, Board::HasTrainerModuleCPPM)) return false; - if (value == TRAINER_MODE_MASTER_SBUS_EXTERNAL_MODULE && - !Boards::getCapability(board, Board::HasTrainerModuleSBUS)) - return false; - - if ((value == TRAINER_MODE_MASTER_SBUS_EXTERNAL_MODULE || value == TRAINER_MODE_MASTER_CPPM_EXTERNAL_MODULE) && - (Boards::getCapability(board, Board::HasTrainerModuleCPPM) || - Boards::getCapability(board, Board::HasTrainerModuleSBUS)) && - moduleData[1].protocol != PULSES_OFF) - return false; - if (value == TRAINER_MODE_MULTI && ((!Boards::getCapability(board, Board::HasInternalModuleSupport) && !Boards::getCapability(board, Board::HasExternalModuleSupport)) ||