From 0ea41f21464741ef68a3443dcb591b82cc6d3051 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 7fde1b117ed..eacfe141cae 100644 --- a/companion/src/firmwares/boards.cpp +++ b/companion/src/firmwares/boards.cpp @@ -345,6 +345,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 LcdDepth: diff --git a/companion/src/firmwares/edgetx/yaml_modeldata.cpp b/companion/src/firmwares/edgetx/yaml_modeldata.cpp index a217f33f3dd..f108385c02e 100644 --- a/companion/src/firmwares/edgetx/yaml_modeldata.cpp +++ b/companion/src/firmwares/edgetx/yaml_modeldata.cpp @@ -108,7 +108,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 85dae1b7b03..644295bc0f2 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)) ||