From e64f57768aa927d40e3d20b30c15024fa1b1b57c Mon Sep 17 00:00:00 2001 From: elecpower Date: Thu, 30 Dec 2021 07:43:41 +1100 Subject: [PATCH] Add board flavour --- .../firmwares/edgetx/yaml_generalsettings.cpp | 51 +++++--- companion/src/firmwares/eeprominterface.cpp | 6 + companion/src/firmwares/eeprominterface.h | 9 ++ .../src/firmwares/opentx/opentxinterface.cpp | 111 +++++++++--------- companion/src/mdichild.cpp | 1 + companion/src/storage/categorized.cpp | 3 +- 6 files changed, 111 insertions(+), 70 deletions(-) diff --git a/companion/src/firmwares/edgetx/yaml_generalsettings.cpp b/companion/src/firmwares/edgetx/yaml_generalsettings.cpp index d824414f9..e51cc5b2f 100644 --- a/companion/src/firmwares/edgetx/yaml_generalsettings.cpp +++ b/companion/src/firmwares/edgetx/yaml_generalsettings.cpp @@ -27,6 +27,8 @@ #include "eeprominterface.h" #include "edgetxinterface.h" +#include + const YamlLookupTable beeperModeLut = { { GeneralSettings::BEEPER_QUIET, "mode_quiet" }, { GeneralSettings::BEEPER_ALARMS_ONLY, "mode_alarms" }, @@ -81,9 +83,11 @@ Node convert::encode(const GeneralSettings& rhs) { Node node; + std::string board = getCurrentFirmware()->getFlavour().toStdString(); + node["board"] = board; + node["version"] = CPN_CURRENT_SETTINGS_VERSION; - // Radio calib YamlCalibData calib(rhs.calibMid, rhs.calibSpanNeg, rhs.calibSpanPos); node["calib"] = calib; @@ -198,21 +202,40 @@ bool convert::decode(const Node& node, GeneralSettings& rhs) // qDebug() << QString::fromStdString(n.first.Scalar()); // } - // TODO: check board string and fetch Board instance - std::string board; - node["board"] >> board; - // TODO: we should be able to fetch the board based on 'board' - // auto fw = getCurrentFirmware(); - // if (fw) { - // qDebug() << "FW Id: " << fw->getId(); - // if (fw->getId() != ("edgetx-" + radioData.generalSettings.board)) { - // throw std::runtime_error("Wrong board"); - // } - // } - node["version"] >> rhs.version; - // Radio calib + // Decoding uses profile firmare therefore all conversions are performed on the fly + // So set board to firmware board + // However we should alert users that conversions may have occured + // If conversion should rename file with _converted suffix as done for bin + // Need to pass back messages and flags like converted so they can be handled in a more suitable section + + rhs.variant = Board::BOARD_UNKNOWN; + + std::string flavour; + node["board"] >> flavour; + + auto fw = getCurrentFirmware(); + auto msfw = Firmware::getFirmwareForFlavour(QString(flavour.c_str())); + + if (flavour.empty()) { + qDebug() << "Warning: Settings file does not contain board flavour! Default firmware board will be used"; + flavour = msfw->getFlavour().toStdString(); + } + + qDebug() << "Settings version:" << rhs.version << "File flavour:" << flavour.c_str() << "Firmware flavour:" << fw->getFlavour(); + + if (fw->getFlavour().toStdString() != flavour) { + QString prmpt = QCoreApplication::translate("YamlGeneralSettings", "File board (%1) does not match current profile board (%2), models and settings will be converted where possible.\n\nDo you wish to continue?").arg(Boards::getBoardName(msfw->getBoard())).arg(Boards::getBoardName(fw->getBoard())); + + if (QMessageBox::question(NULL, CPN_STR_APP_NAME, prmpt, (QMessageBox::Yes | QMessageBox::No), QMessageBox::No) != QMessageBox::Yes) { + // TODO: this triggers an error in the calling code so we need a graceful way to handle + return false; + } + } + + rhs.variant = fw->getBoard(); + YamlCalibData calib; node["calib"] >> calib; calib.copy(rhs.calibMid, rhs.calibSpanNeg, rhs.calibSpanPos); diff --git a/companion/src/firmwares/eeprominterface.cpp b/companion/src/firmwares/eeprominterface.cpp index 90272d0ad..7cefd6d7e 100644 --- a/companion/src/firmwares/eeprominterface.cpp +++ b/companion/src/firmwares/eeprominterface.cpp @@ -178,3 +178,9 @@ void Firmware::addOptionsGroup(const OptionsGroup & options) { this->opts.append(options); } + +QString Firmware::getFlavour() +{ + QStringList strl = id.split("-"); + return strl.count() >= 2 ? strl.at(1) : QString(); +} diff --git a/companion/src/firmwares/eeprominterface.h b/companion/src/firmwares/eeprominterface.h index b91d7262e..77a9ce783 100644 --- a/companion/src/firmwares/eeprominterface.h +++ b/companion/src/firmwares/eeprominterface.h @@ -262,6 +262,8 @@ enum EepromLoadErrors { NUM_ERRORS }; +constexpr char FIRMWARE_ID_PREFIX[] = { "edgetx-" }; + class Firmware { Q_DECLARE_TR_FUNCTIONS(Firmware) @@ -405,6 +407,13 @@ class Firmware currentVariant = value; } + QString getFlavour(); + + static Firmware * getFirmwareForFlavour(const QString & flavour) + { + return getFirmwareForId(FIRMWARE_ID_PREFIX + flavour); + } + const StringTagMappingTable* getAnalogIndexNamesLookupTable() { return &analogInputNamesLookupTable; diff --git a/companion/src/firmwares/opentx/opentxinterface.cpp b/companion/src/firmwares/opentx/opentxinterface.cpp index c1be0e465..97ea8ddbc 100644 --- a/companion/src/firmwares/opentx/opentxinterface.cpp +++ b/companion/src/firmwares/opentx/opentxinterface.cpp @@ -59,59 +59,59 @@ const char * OpenTxEepromInterface::getName() { switch (board) { case BOARD_JUMPER_T12: - return "OpenTX for Jumper T12"; + return "EdgeTX for Jumper T12"; case BOARD_JUMPER_TLITE: - return "OpenTX for Jumper T-Lite"; + return "EdgeTX for Jumper T-Lite"; case BOARD_JUMPER_TPRO: - return "OpenTX for Jumper T-Pro"; + return "EdgeTX for Jumper T-Pro"; case BOARD_JUMPER_T16: - return "OpenTX for Jumper T16"; + return "EdgeTX for Jumper T16"; case BOARD_JUMPER_T18: - return "OpenTX for Jumper T18"; + return "EdgeTX for Jumper T18"; case BOARD_RADIOMASTER_TX16S: - return "OpenTX for Radiomaster TX16S"; + return "EdgeTX for Radiomaster TX16S"; case BOARD_RADIOMASTER_TX12: - return "OpenTX for Radiomaster TX12"; + return "EdgeTX for Radiomaster TX12"; case BOARD_RADIOMASTER_ZORRO: - return "OpenTX for Radiomaster Zorro"; + return "EdgeTX for Radiomaster Zorro"; case BOARD_RADIOMASTER_T8: - return "OpenTX for Radiomaster T8"; + return "EdgeTX for Radiomaster T8"; case BOARD_TARANIS_X9D: - return "OpenTX for FrSky Taranis X9D"; + return "EdgeTX for FrSky Taranis X9D"; case BOARD_TARANIS_X9DP: - return "OpenTX for FrSky Taranis X9D+"; + return "EdgeTX for FrSky Taranis X9D+"; case BOARD_TARANIS_X9DP_2019: - return "OpenTX for FrSky Taranis X9D+ 2019"; + return "EdgeTX for FrSky Taranis X9D+ 2019"; case BOARD_TARANIS_X9E: - return "OpenTX for FrSky Taranis X9E"; + return "EdgeTX for FrSky Taranis X9E"; case BOARD_TARANIS_X7: - return "OpenTX for FrSky Taranis X7"; + return "EdgeTX for FrSky Taranis X7"; case BOARD_TARANIS_X7_ACCESS: - return "OpenTX for FrSky Taranis X7 Access"; + return "EdgeTX for FrSky Taranis X7 Access"; case BOARD_TARANIS_X9LITES: - return "OpenTX for FrSky Taranis X9-Lite S"; + return "EdgeTX for FrSky Taranis X9-Lite S"; case BOARD_TARANIS_X9LITE: - return "OpenTX for FrSky Taranis X9-Lite"; + return "EdgeTX for FrSky Taranis X9-Lite"; case BOARD_TARANIS_XLITE: - return "OpenTX for FrSky Taranis X-Lite"; + return "EdgeTX for FrSky Taranis X-Lite"; case BOARD_TARANIS_XLITES: - return "OpenTX for FrSky Taranis X-Lite S/Pro"; + return "EdgeTX for FrSky Taranis X-Lite S/Pro"; case BOARD_SKY9X: - return "OpenTX for Sky9x board / 9X"; + return "EdgeTX for Sky9x board / 9X"; case BOARD_9XRPRO: - return "OpenTX for 9XR-PRO"; + return "EdgeTX for 9XR-PRO"; case BOARD_AR9X: - return "OpenTX for ar9x board / 9X"; + return "EdgeTX for ar9x board / 9X"; case BOARD_HORUS_X12S: - return "OpenTX for FrSky Horus"; + return "EdgeTX for FrSky Horus"; case BOARD_X10: - return "OpenTX for FrSky X10"; + return "EdgeTX for FrSky X10"; case BOARD_X10_EXPRESS: - return "OpenTX for FrSky X10 Express"; + return "EdgeTX for FrSky X10 Express"; case BOARD_FLYSKY_NV14: - return "OpenTX for FlySky NV14"; + return "EdgeTX for FlySky NV14"; default: - return "OpenTX for an unknown board"; + return "Board is unknown to EdgeTX"; } } @@ -1280,25 +1280,28 @@ void addOpenTxArm9xOptions(OpenTxFirmware * firmware, bool dblkeys = true) addOpenTxRfOptions(firmware, FLEX); } +// TODO: refactoring OpenTxFirmware constructor - need to check if used elsewhere and how +#define FIRMWAREID(flavour) std::string(FIRMWARE_ID_PREFIX).append(flavour).c_str() + void registerOpenTxFirmwares() { OpenTxFirmware * firmware; /* FrSky Taranis X9D+ board */ - firmware = new OpenTxFirmware("edgetx-x9d+", Firmware::tr("FrSky Taranis X9D+"), BOARD_TARANIS_X9DP); + firmware = new OpenTxFirmware(FIRMWAREID("x9d+"), Firmware::tr("FrSky Taranis X9D+"), BOARD_TARANIS_X9DP); firmware->addOption("noras", Firmware::tr("Disable RAS (SWR)")); addOpenTxTaranisOptions(firmware); registerOpenTxFirmware(firmware); addOpenTxRfOptions(firmware, EU + FLEX + AFHDS3); /* FrSky Taranis X9D+ 2019 board */ - firmware = new OpenTxFirmware("edgetx-x9d+2019", Firmware::tr("FrSky Taranis X9D+ 2019"), BOARD_TARANIS_X9DP_2019); + firmware = new OpenTxFirmware(FIRMWAREID("x9d+2019"), Firmware::tr("FrSky Taranis X9D+ 2019"), BOARD_TARANIS_X9DP_2019); addOpenTxTaranisOptions(firmware); registerOpenTxFirmware(firmware); addOpenTxRfOptions(firmware, FLEX); /* FrSky Taranis X9D board */ - firmware = new OpenTxFirmware("edgetx-x9d", Firmware::tr("FrSky Taranis X9D"), BOARD_TARANIS_X9D); + firmware = new OpenTxFirmware(FIRMWAREID("x9d"), Firmware::tr("FrSky Taranis X9D"), BOARD_TARANIS_X9D); firmware->addOption("noras", Firmware::tr("Disable RAS (SWR)")); firmware->addOption("haptic", Firmware::tr("Haptic module installed")); addOpenTxTaranisOptions(firmware); @@ -1306,7 +1309,7 @@ void registerOpenTxFirmwares() addOpenTxRfOptions(firmware, EU + FLEX + AFHDS3); /* FrSky Taranis X9E board */ - firmware = new OpenTxFirmware("edgetx-x9e", Firmware::tr("FrSky Taranis X9E"), BOARD_TARANIS_X9E); + firmware = new OpenTxFirmware(FIRMWAREID("x9e"), Firmware::tr("FrSky Taranis X9E"), BOARD_TARANIS_X9E); firmware->addOption("shutdownconfirm", Firmware::tr("Confirmation before radio shutdown")); firmware->addOption("horussticks", Firmware::tr("Horus gimbals installed (Hall sensors)")); addOpenTxTaranisOptions(firmware); @@ -1314,44 +1317,44 @@ void registerOpenTxFirmwares() addOpenTxRfOptions(firmware, EU + FLEX); /* FrSky X9-Lite board */ - firmware = new OpenTxFirmware("edgetx-x9lite", Firmware::tr("FrSky Taranis X9-Lite"), BOARD_TARANIS_X9LITE); + firmware = new OpenTxFirmware(FIRMWAREID("x9lite"), Firmware::tr("FrSky Taranis X9-Lite"), BOARD_TARANIS_X9LITE); addOpenTxTaranisOptions(firmware); registerOpenTxFirmware(firmware); addOpenTxRfOptions(firmware, FLEX); /* FrSky X9-LiteS board */ - firmware = new OpenTxFirmware("edgetx-x9lites", Firmware::tr("FrSky Taranis X9-Lite S"), BOARD_TARANIS_X9LITES); + firmware = new OpenTxFirmware(FIRMWAREID("x9lites"), Firmware::tr("FrSky Taranis X9-Lite S"), BOARD_TARANIS_X9LITES); addOpenTxTaranisOptions(firmware); registerOpenTxFirmware(firmware); addOpenTxRfOptions(firmware, FLEX); /* FrSky X7 board */ - firmware = new OpenTxFirmware("edgetx-x7", Firmware::tr("FrSky Taranis X7 / X7S"), BOARD_TARANIS_X7); + firmware = new OpenTxFirmware(FIRMWAREID("x7"), Firmware::tr("FrSky Taranis X7 / X7S"), BOARD_TARANIS_X7); addOpenTxTaranisOptions(firmware); registerOpenTxFirmware(firmware); addOpenTxRfOptions(firmware, EU + FLEX); /* FrSky X7 Access board */ - firmware = new OpenTxFirmware("edgetx-x7access", Firmware::tr("FrSky Taranis X7 / X7S Access"), BOARD_TARANIS_X7_ACCESS); + firmware = new OpenTxFirmware(FIRMWAREID("x7access"), Firmware::tr("FrSky Taranis X7 / X7S Access"), BOARD_TARANIS_X7_ACCESS); addOpenTxTaranisOptions(firmware); registerOpenTxFirmware(firmware); addOpenTxRfOptions(firmware, FLEX); /* FrSky X-Lite S/PRO board */ - firmware = new OpenTxFirmware("edgetx-xlites", Firmware::tr("FrSky Taranis X-Lite S/PRO"), BOARD_TARANIS_XLITES); + firmware = new OpenTxFirmware(FIRMWAREID("xlites"), Firmware::tr("FrSky Taranis X-Lite S/PRO"), BOARD_TARANIS_XLITES); addOpenTxTaranisOptions(firmware); registerOpenTxFirmware(firmware); addOpenTxRfOptions(firmware, FLEX); /* FrSky X-Lite board */ - firmware = new OpenTxFirmware("edgetx-xlite", Firmware::tr("FrSky Taranis X-Lite"), BOARD_TARANIS_XLITE); + firmware = new OpenTxFirmware(FIRMWAREID("xlite"), Firmware::tr("FrSky Taranis X-Lite"), BOARD_TARANIS_XLITE); // firmware->addOption("stdr9m", Firmware::tr("Use JR-sized R9M module")); addOpenTxTaranisOptions(firmware); registerOpenTxFirmware(firmware); addOpenTxRfOptions(firmware, EU + FLEX); /* FrSky X10 board */ - firmware = new OpenTxFirmware("edgetx-x10", Firmware::tr("FrSky Horus X10 / X10S"), BOARD_X10); + firmware = new OpenTxFirmware(FIRMWAREID("x10"), Firmware::tr("FrSky Horus X10 / X10S"), BOARD_X10); addOpenTxFrskyOptions(firmware); firmware->addOption("internalaccess", Firmware::tr("Support for ACCESS internal module replacement")); firmware->addOption("externalaccessmod", Firmware::tr("Support hardware mod: R9M ACCESS")); @@ -1359,13 +1362,13 @@ void registerOpenTxFirmwares() addOpenTxRfOptions(firmware, EU + FLEX); /* FrSky X10 Express board */ - firmware = new OpenTxFirmware("edgetx-x10express", Firmware::tr("FrSky Horus X10 Express / X10S Express"), BOARD_X10_EXPRESS); + firmware = new OpenTxFirmware(FIRMWAREID("x10express"), Firmware::tr("FrSky Horus X10 Express / X10S Express"), BOARD_X10_EXPRESS); addOpenTxFrskyOptions(firmware); registerOpenTxFirmware(firmware); addOpenTxRfOptions(firmware, FLEX); /* FrSky X12 (Horus) board */ - firmware = new OpenTxFirmware("edgetx-x12s", Firmware::tr("FrSky Horus X12S"), BOARD_HORUS_X12S); + firmware = new OpenTxFirmware(FIRMWAREID("x12s"), Firmware::tr("FrSky Horus X12S"), BOARD_HORUS_X12S); addOpenTxFrskyOptions(firmware); firmware->addOption("internalaccess", Firmware::tr("Support for ACCESS internal module replacement")); firmware->addOption("externalaccessmod", Firmware::tr("Support hardware mod: R9M ACCESS")); @@ -1374,7 +1377,7 @@ void registerOpenTxFirmwares() addOpenTxRfOptions(firmware, EU + FLEX); /* Jumper T12 board */ - firmware = new OpenTxFirmware("edgetx-t12", QCoreApplication::translate("Firmware", "Jumper T12 / T12 Pro"), BOARD_JUMPER_T12); + firmware = new OpenTxFirmware(FIRMWAREID("t12"), QCoreApplication::translate("Firmware", "Jumper T12 / T12 Pro"), BOARD_JUMPER_T12); addOpenTxCommonOptions(firmware); firmware->addOption("noheli", Firmware::tr("Disable HELI menu and cyclic mix support")); firmware->addOption("nogvars", Firmware::tr("Disable Global variables")); @@ -1385,7 +1388,7 @@ void registerOpenTxFirmwares() addOpenTxRfOptions(firmware, FLEX); /* Jumper T-Lite board */ - firmware = new OpenTxFirmware("edgetx-tlite", QCoreApplication::translate("Firmware", "Jumper T-Lite"), BOARD_JUMPER_TLITE); + firmware = new OpenTxFirmware(FIRMWAREID("tlite"), QCoreApplication::translate("Firmware", "Jumper T-Lite"), BOARD_JUMPER_TLITE); addOpenTxCommonOptions(firmware); firmware->addOption("noheli", Firmware::tr("Disable HELI menu and cyclic mix support")); firmware->addOption("nogvars", Firmware::tr("Disable Global variables")); @@ -1395,7 +1398,7 @@ void registerOpenTxFirmwares() addOpenTxRfOptions(firmware, FLEX); /* Jumper T-Pro board */ - firmware = new OpenTxFirmware("edgetx-tpro", QCoreApplication::translate("Firmware", "Jumper T-Pro"), BOARD_JUMPER_TPRO); + firmware = new OpenTxFirmware(FIRMWAREID("tpro"), QCoreApplication::translate("Firmware", "Jumper T-Pro"), BOARD_JUMPER_TPRO); addOpenTxCommonOptions(firmware); firmware->addOption("noheli", Firmware::tr("Disable HELI menu and cyclic mix support")); firmware->addOption("nogvars", Firmware::tr("Disable Global variables")); @@ -1405,7 +1408,7 @@ void registerOpenTxFirmwares() addOpenTxRfOptions(firmware, FLEX); /* Jumper T16 board */ - firmware = new OpenTxFirmware("edgetx-t16", Firmware::tr("Jumper T16 / T16+ / T16 Pro"), BOARD_JUMPER_T16); + firmware = new OpenTxFirmware(FIRMWAREID("t16"), Firmware::tr("Jumper T16 / T16+ / T16 Pro"), BOARD_JUMPER_T16); addOpenTxFrskyOptions(firmware); firmware->addOption("internalmulti", Firmware::tr("Support for MULTI internal module")); firmware->addOption("bluetooth", Firmware::tr("Support for bluetooth module")); @@ -1414,7 +1417,7 @@ void registerOpenTxFirmwares() registerOpenTxFirmware(firmware); /* Radiomaster TX12 board */ - firmware = new OpenTxFirmware("edgetx-tx12", QCoreApplication::translate("Firmware", "Radiomaster TX12"), BOARD_RADIOMASTER_TX12); + firmware = new OpenTxFirmware(FIRMWAREID("tx12"), QCoreApplication::translate("Firmware", "Radiomaster TX12"), BOARD_RADIOMASTER_TX12); addOpenTxCommonOptions(firmware); firmware->addOption("noheli", Firmware::tr("Disable HELI menu and cyclic mix support")); firmware->addOption("nogvars", Firmware::tr("Disable Global variables")); @@ -1424,7 +1427,7 @@ void registerOpenTxFirmwares() addOpenTxRfOptions(firmware, FLEX); /* Radiomaster Zorro board */ - firmware = new OpenTxFirmware("edgetx-zorro", QCoreApplication::translate("Firmware", "Radiomaster Zorro"), Board::BOARD_RADIOMASTER_ZORRO); + firmware = new OpenTxFirmware(FIRMWAREID("zorro"), QCoreApplication::translate("Firmware", "Radiomaster Zorro"), Board::BOARD_RADIOMASTER_ZORRO); addOpenTxCommonOptions(firmware); firmware->addOption("noheli", Firmware::tr("Disable HELI menu and cyclic mix support")); firmware->addOption("nogvars", Firmware::tr("Disable Global variables")); @@ -1435,7 +1438,7 @@ void registerOpenTxFirmwares() addOpenTxRfOptions(firmware, FLEX + AFHDS3); /* Radiomaster T8 board */ - firmware = new OpenTxFirmware("edgetx-t8", QCoreApplication::translate("Firmware", "Radiomaster T8"), BOARD_RADIOMASTER_T8); + firmware = new OpenTxFirmware(FIRMWAREID("t8"), QCoreApplication::translate("Firmware", "Radiomaster T8"), BOARD_RADIOMASTER_T8); addOpenTxCommonOptions(firmware); firmware->addOption("noheli", Firmware::tr("Disable HELI menu and cyclic mix support")); firmware->addOption("nogvars", Firmware::tr("Disable Global variables")); @@ -1446,7 +1449,7 @@ void registerOpenTxFirmwares() firmware->addOption("bindkey", Firmware::tr("Allow bind using bind key")); /* Radiomaster TX16S board */ - firmware = new OpenTxFirmware("edgetx-tx16s", Firmware::tr("Radiomaster TX16S / SE / Hall / Masterfire"), BOARD_RADIOMASTER_TX16S); + firmware = new OpenTxFirmware(FIRMWAREID("tx16s"), Firmware::tr("Radiomaster TX16S / SE / Hall / Masterfire"), BOARD_RADIOMASTER_TX16S); addOpenTxFrskyOptions(firmware); addOpenTxRfOptions(firmware, FLEX); static const Firmware::Option opt_bt("bluetooth", Firmware::tr("Support for bluetooth module")); @@ -1457,7 +1460,7 @@ void registerOpenTxFirmwares() registerOpenTxFirmware(firmware); /* Jumper T18 board */ - firmware = new OpenTxFirmware("edgetx-t18", Firmware::tr("Jumper T18"), BOARD_JUMPER_T18); + firmware = new OpenTxFirmware(FIRMWAREID("t18"), Firmware::tr("Jumper T18"), BOARD_JUMPER_T18); addOpenTxFrskyOptions(firmware); firmware->addOption("bluetooth", Firmware::tr("Support for bluetooth module")); firmware->addOption("externalaccessmod", Firmware::tr("Support hardware mod: R9M ACCESS")); @@ -1465,30 +1468,30 @@ void registerOpenTxFirmwares() addOpenTxRfOptions(firmware, FLEX); /* FlySky NV14 board */ - firmware = new OpenTxFirmware("edgetx-nv14", QCoreApplication::translate("Firmware", "FlySky NV14"), BOARD_FLYSKY_NV14); + firmware = new OpenTxFirmware(FIRMWAREID("nv14"), QCoreApplication::translate("Firmware", "FlySky NV14"), BOARD_FLYSKY_NV14); addOpenTxFrskyOptions(firmware); firmware->addOption("bluetooth", Firmware::tr("Support for bluetooth module")); addOpenTxRfOptions(firmware, FLEX + AFHDS3); registerOpenTxFirmware(firmware); /* 9XR-Pro */ - firmware = new OpenTxFirmware("edgetx-9xrpro", Firmware::tr("Turnigy 9XR-PRO"), BOARD_9XRPRO); + firmware = new OpenTxFirmware(FIRMWAREID("9xrpro"), Firmware::tr("Turnigy 9XR-PRO"), BOARD_9XRPRO); addOpenTxArm9xOptions(firmware, false); registerOpenTxFirmware(firmware, true); /* ar9x board */ - firmware = new OpenTxFirmware("edgetx-ar9x", Firmware::tr("9X with AR9X board"), BOARD_AR9X); + firmware = new OpenTxFirmware(FIRMWAREID("ar9x"), Firmware::tr("9X with AR9X board"), BOARD_AR9X); addOpenTxArm9xOptions(firmware, true); //firmware->addOption("rtc", Firmware::tr("Optional RTC added")); //firmware->addOption("volume", Firmware::tr("i2c volume control added")); registerOpenTxFirmware(firmware, true); /* Sky9x board */ - firmware = new OpenTxFirmware("edgetx-sky9x", Firmware::tr("9X with Sky9x board"), BOARD_SKY9X); + firmware = new OpenTxFirmware(FIRMWAREID("sky9x"), Firmware::tr("9X with Sky9x board"), BOARD_SKY9X); addOpenTxArm9xOptions(firmware); registerOpenTxFirmware(firmware, true); - Firmware::setDefaultVariant(Firmware::getFirmwareForId("edgetx-tx16s")); + Firmware::setDefaultVariant(Firmware::getFirmwareForFlavour("tx16s")); Firmware::setCurrentVariant(Firmware::getDefaultVariant()); } diff --git a/companion/src/mdichild.cpp b/companion/src/mdichild.cpp index e1d59e041..4e4d36ebd 100644 --- a/companion/src/mdichild.cpp +++ b/companion/src/mdichild.cpp @@ -1345,6 +1345,7 @@ bool MdiChild::loadFile(const QString & filename, bool resetCurrentFile) setCurrentFile(filename); } + // For etx files this will never be true as any conversion occurs when parsing file if (!Boards::isBoardCompatible(storage.getBoard(), getCurrentBoard())) { if (!convertStorage(storage.getBoard(), getCurrentBoard(), true)) return false; diff --git a/companion/src/storage/categorized.cpp b/companion/src/storage/categorized.cpp index 63f98ffa7..b5745d51f 100644 --- a/companion/src/storage/categorized.cpp +++ b/companion/src/storage/categorized.cpp @@ -240,8 +240,7 @@ bool CategorizedStorageFormat::loadYaml(RadioData & radioData) return false; } - // TODO: provide a simple text mapping - board = Board::BOARD_RADIOMASTER_TX16S; + board = (Board::Type)radioData.generalSettings.variant; // get models QByteArray modelslistBuffer;