From 6a4a101ef0e9337ce3df6cd5a7826269096b76c0 Mon Sep 17 00:00:00 2001 From: Peter Feerick Date: Fri, 10 Nov 2023 16:33:12 +1000 Subject: [PATCH] feat(cpn): Radio Type sorted alphabetically (#4273) --- companion/src/firmwares/eeprominterface.h | 9 + .../src/firmwares/opentx/opentxinterface.cpp | 275 +++++++++--------- 2 files changed, 148 insertions(+), 136 deletions(-) diff --git a/companion/src/firmwares/eeprominterface.h b/companion/src/firmwares/eeprominterface.h index 700611d37..665598ae5 100644 --- a/companion/src/firmwares/eeprominterface.h +++ b/companion/src/firmwares/eeprominterface.h @@ -415,6 +415,15 @@ class Firmware currentVariant = value; } + static void sortRegisteredFirmwares() + { + std::sort(registeredFirmwares.begin(), registeredFirmwares.end(), + [](const Firmware *a, const Firmware *b) { + return QString::compare(a->getName(), b->getName(), + Qt::CaseInsensitive) < 0; + }); + } + QString getFlavour(); static Firmware * getFirmwareForFlavour(const QString & flavour) diff --git a/companion/src/firmwares/opentx/opentxinterface.cpp b/companion/src/firmwares/opentx/opentxinterface.cpp index 635b5a624..34d441279 100644 --- a/companion/src/firmwares/opentx/opentxinterface.cpp +++ b/companion/src/firmwares/opentx/opentxinterface.cpp @@ -1220,6 +1220,96 @@ void registerOpenTxFirmwares() { OpenTxFirmware * firmware; + /* BETAFPV LR3PRO board */ + firmware = new OpenTxFirmware(FIRMWAREID("lr3pro"), QCoreApplication::translate("Firmware", "BETAFPV LiteRadio3 Pro"), BOARD_BETAFPV_LR3PRO); + 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); + + /* FlySky NV14 board */ + 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 + AFHDS2A + AFHDS3); + registerOpenTxFirmware(firmware); + + /* FlySky EL18 board */ + firmware = new OpenTxFirmware(FIRMWAREID("el18"), QCoreApplication::translate("Firmware", "FlySky EL18"), BOARD_FLYSKY_EL18); + addOpenTxFrskyOptions(firmware); + firmware->addOption("bluetooth", Firmware::tr("Support for bluetooth module")); + addOpenTxRfOptions(firmware, FLEX + AFHDS2A + AFHDS3); + registerOpenTxFirmware(firmware); + + /* FrSky Horus X10 board */ + 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")); + registerOpenTxFirmware(firmware); + addOpenTxRfOptions(firmware, EU + FLEX); + + /* FrSky Horus X10 Express board */ + firmware = new OpenTxFirmware(FIRMWAREID("x10express"), Firmware::tr("FrSky Horus X10 Express / X10S Express"), BOARD_X10_EXPRESS, "x10-access"); + addOpenTxFrskyOptions(firmware); + registerOpenTxFirmware(firmware); + addOpenTxRfOptions(firmware, FLEX); + + /* FrSky Horus X12 board */ + 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("pcbdev", Firmware::tr("Use ONLY with first DEV pcb version")); + registerOpenTxFirmware(firmware); + addOpenTxRfOptions(firmware, EU + FLEX); + + /* FrSky Taranis X7 board */ + firmware = new OpenTxFirmware(FIRMWAREID("x7"), Firmware::tr("FrSky Taranis X7 / X7S"), BOARD_TARANIS_X7); + addOpenTxTaranisOptions(firmware); + registerOpenTxFirmware(firmware); + addOpenTxRfOptions(firmware, EU + FLEX); + + /* FrSky Taranis X7 Access board */ + firmware = new OpenTxFirmware(FIRMWAREID("x7access"), Firmware::tr("FrSky Taranis X7 / X7S Access"), BOARD_TARANIS_X7_ACCESS, "x7-access"); + addOpenTxTaranisOptions(firmware); + registerOpenTxFirmware(firmware); + addOpenTxRfOptions(firmware, FLEX); + + /* FrSky Taranis X-Lite board */ + 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 Taranis X-Lite S/PRO board */ + firmware = new OpenTxFirmware(FIRMWAREID("xlites"), Firmware::tr("FrSky Taranis X-Lite S/PRO"), BOARD_TARANIS_XLITES); + addOpenTxTaranisOptions(firmware); + registerOpenTxFirmware(firmware); + addOpenTxRfOptions(firmware, FLEX); + + /* FrSky Taranis X9-Lite board */ + firmware = new OpenTxFirmware(FIRMWAREID("x9lite"), Firmware::tr("FrSky Taranis X9-Lite"), BOARD_TARANIS_X9LITE); + addOpenTxTaranisOptions(firmware); + registerOpenTxFirmware(firmware); + addOpenTxRfOptions(firmware, FLEX); + + /* FrSky Taranis X9-LiteS board */ + firmware = new OpenTxFirmware(FIRMWAREID("x9lites"), Firmware::tr("FrSky Taranis X9-Lite S"), BOARD_TARANIS_X9LITES); + addOpenTxTaranisOptions(firmware); + registerOpenTxFirmware(firmware); + addOpenTxRfOptions(firmware, FLEX); + + /* FrSky Taranis X9D board */ + 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); + registerOpenTxFirmware(firmware); + addOpenTxRfOptions(firmware, EU + FLEX + AFHDS2A + AFHDS3); + /* FrSky Taranis X9D+ board */ firmware = new OpenTxFirmware(FIRMWAREID("x9d+"), Firmware::tr("FrSky Taranis X9D+"), BOARD_TARANIS_X9DP, "x9dp"); firmware->addOption("noras", Firmware::tr("Disable RAS (SWR)")); @@ -1233,14 +1323,6 @@ void registerOpenTxFirmwares() registerOpenTxFirmware(firmware); addOpenTxRfOptions(firmware, FLEX); - /* FrSky Taranis X9D board */ - 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); - registerOpenTxFirmware(firmware); - addOpenTxRfOptions(firmware, EU + FLEX + AFHDS2A + AFHDS3); - /* FrSky Taranis X9E board */ firmware = new OpenTxFirmware(FIRMWAREID("x9e"), Firmware::tr("FrSky Taranis X9E"), BOARD_TARANIS_X9E); firmware->addOption("shutdownconfirm", Firmware::tr("Confirmation before radio shutdown")); @@ -1249,74 +1331,15 @@ void registerOpenTxFirmwares() registerOpenTxFirmware(firmware); addOpenTxRfOptions(firmware, EU + FLEX); - /* FrSky X9-Lite board */ - 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(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(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(FIRMWAREID("x7access"), Firmware::tr("FrSky Taranis X7 / X7S Access"), BOARD_TARANIS_X7_ACCESS, "x7-access"); - addOpenTxTaranisOptions(firmware); - registerOpenTxFirmware(firmware); - addOpenTxRfOptions(firmware, FLEX); - - /* FrSky X-Lite S/PRO board */ - 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(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(FIRMWAREID("x10"), Firmware::tr("FrSky Horus X10 / X10S"), BOARD_X10); - addOpenTxFrskyOptions(firmware); - firmware->addOption("internalaccess", Firmware::tr("Support for ACCESS internal module replacement")); - registerOpenTxFirmware(firmware); - addOpenTxRfOptions(firmware, EU + FLEX); - - /* FrSky X10 Express board */ - firmware = new OpenTxFirmware(FIRMWAREID("x10express"), Firmware::tr("FrSky Horus X10 Express / X10S Express"), BOARD_X10_EXPRESS, "x10-access"); - addOpenTxFrskyOptions(firmware); - registerOpenTxFirmware(firmware); - addOpenTxRfOptions(firmware, FLEX); - - /* FrSky X12 (Horus) board */ - 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("pcbdev", Firmware::tr("Use ONLY with first DEV pcb version")); - registerOpenTxFirmware(firmware); - addOpenTxRfOptions(firmware, EU + FLEX); - - /* Jumper T12 board */ - firmware = new OpenTxFirmware(FIRMWAREID("t12"), QCoreApplication::translate("Firmware", "Jumper T12 / T12 Pro"), BOARD_JUMPER_T12); + /* iFlight Commando8 board */ + firmware = new OpenTxFirmware(FIRMWAREID("commando8"), QCoreApplication::translate("Firmware", "iFlight Commando8"), BOARD_IFLIGHT_COMMANDO8); 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")); - firmware->addOption("internalmulti", Firmware::tr("Support for MULTI internal module")); addOpenTxFontOptions(firmware); registerOpenTxFirmware(firmware); - addOpenTxRfOptions(firmware, FLEX); + addOpenTxRfOptions(firmware, NONE); /* Jumper T-Lite board */ firmware = new OpenTxFirmware(FIRMWAREID("tlite"), QCoreApplication::translate("Firmware", "Jumper T-Lite"), BOARD_JUMPER_TLITE); @@ -1328,7 +1351,8 @@ void registerOpenTxFirmwares() registerOpenTxFirmware(firmware); addOpenTxRfOptions(firmware, FLEX); - /* Jumper T-Lite F4 board */ + /* Jumper T-Lite F4 board */ + /* No immediate plans for this to be needed now firmware = new OpenTxFirmware(FIRMWAREID("tlitef4"), QCoreApplication::translate("Firmware", "Jumper T-Lite (F4 MCU)"), BOARD_JUMPER_TLITE_F4, "tlitef4", "edgetx-tlite"); addOpenTxCommonOptions(firmware); firmware->addOption("noheli", Firmware::tr("Disable HELI menu and cyclic mix support")); @@ -1337,6 +1361,7 @@ void registerOpenTxFirmwares() addOpenTxFontOptions(firmware); registerOpenTxFirmware(firmware); addOpenTxRfOptions(firmware, FLEX); + */ /* Jumper T-Pro board */ firmware = new OpenTxFirmware(FIRMWAREID("tpro"), QCoreApplication::translate("Firmware", "Jumper T-Pro"), BOARD_JUMPER_TPRO); @@ -1358,6 +1383,17 @@ void registerOpenTxFirmwares() registerOpenTxFirmware(firmware); addOpenTxRfOptions(firmware, FLEX); + /* Jumper T12 board */ + 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")); + firmware->addOption("lua", Firmware::tr("Enable Lua custom scripts screen")); + firmware->addOption("internalmulti", Firmware::tr("Support for MULTI internal module")); + addOpenTxFontOptions(firmware); + registerOpenTxFirmware(firmware); + addOpenTxRfOptions(firmware, FLEX); + /* Jumper T16 board */ firmware = new OpenTxFirmware(FIRMWAREID("t16"), Firmware::tr("Jumper T16 / T16+ / T16 Pro"), BOARD_JUMPER_T16); addOpenTxFrskyOptions(firmware); @@ -1366,6 +1402,13 @@ void registerOpenTxFirmwares() addOpenTxRfOptions(firmware, FLEX); registerOpenTxFirmware(firmware); + /* Jumper T18 board */ + firmware = new OpenTxFirmware(FIRMWAREID("t18"), Firmware::tr("Jumper T18"), BOARD_JUMPER_T18); + addOpenTxFrskyOptions(firmware); + firmware->addOption("bluetooth", Firmware::tr("Support for bluetooth module")); + registerOpenTxFirmware(firmware); + addOpenTxRfOptions(firmware, FLEX); + /* Jumper T20 board */ firmware = new OpenTxFirmware(FIRMWAREID("t20"), Firmware::tr("Jumper T20"), BOARD_JUMPER_T20); addOpenTxFrskyOptions(firmware); @@ -1373,37 +1416,6 @@ void registerOpenTxFirmwares() addOpenTxRfOptions(firmware, NONE); registerOpenTxFirmware(firmware); - /* Radiomaster TX12 board */ - 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")); - firmware->addOption("lua", Firmware::tr("Enable Lua custom scripts screen")); - addOpenTxFontOptions(firmware); - registerOpenTxFirmware(firmware); - addOpenTxRfOptions(firmware, FLEX); - - /* Radiomaster TX12 Mark II 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); - 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")); - firmware->addOption("internalelrs", Firmware::tr("Select if internal ELRS module is installed")); - addOpenTxFontOptions(firmware); - registerOpenTxFirmware(firmware); - addOpenTxRfOptions(firmware, FLEX + AFHDS2A + AFHDS3); - /* Radiomaster Boxer board */ firmware = new OpenTxFirmware(FIRMWAREID("boxer"), QCoreApplication::translate("Firmware", "Radiomaster Boxer"), Board::BOARD_RADIOMASTER_BOXER); addOpenTxCommonOptions(firmware); @@ -1435,6 +1447,26 @@ void registerOpenTxFirmwares() addOpenTxRfOptions(firmware, NONE); firmware->addOption("bindkey", Firmware::tr("Allow bind using bind key")); + /* Radiomaster TX12 board */ + 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")); + firmware->addOption("lua", Firmware::tr("Enable Lua custom scripts screen")); + addOpenTxFontOptions(firmware); + registerOpenTxFirmware(firmware); + addOpenTxRfOptions(firmware, FLEX); + + /* Radiomaster TX12 Mark II 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 TX16S board */ firmware = new OpenTxFirmware(FIRMWAREID("tx16s"), Firmware::tr("Radiomaster TX16S / SE / Hall / Masterfire"), BOARD_RADIOMASTER_TX16S); addOpenTxFrskyOptions(firmware); @@ -1445,46 +1477,16 @@ void registerOpenTxFirmwares() firmware->addOption("flyskygimbals", Firmware::tr("Support hardware mod: FlySky Paladin EV Gimbals")); registerOpenTxFirmware(firmware); - /* Jumper T18 board */ - firmware = new OpenTxFirmware(FIRMWAREID("t18"), Firmware::tr("Jumper T18"), BOARD_JUMPER_T18); - addOpenTxFrskyOptions(firmware); - firmware->addOption("bluetooth", Firmware::tr("Support for bluetooth module")); - registerOpenTxFirmware(firmware); - addOpenTxRfOptions(firmware, FLEX); - - /* FlySky NV14 board */ - 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 + AFHDS2A + AFHDS3); - registerOpenTxFirmware(firmware); - - /* FlySky EL18 board */ - firmware = new OpenTxFirmware(FIRMWAREID("el18"), QCoreApplication::translate("Firmware", "FlySky EL18"), BOARD_FLYSKY_EL18); - addOpenTxFrskyOptions(firmware); - firmware->addOption("bluetooth", Firmware::tr("Support for bluetooth module")); - addOpenTxRfOptions(firmware, FLEX + AFHDS2A + AFHDS3); - registerOpenTxFirmware(firmware); - - /* BETAFPV LR3PRO board */ - firmware = new OpenTxFirmware(FIRMWAREID("lr3pro"), QCoreApplication::translate("Firmware", "BETAFPV LiteRadio3 Pro"), BOARD_BETAFPV_LR3PRO); + /* Radiomaster Zorro board */ + 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")); firmware->addOption("lua", Firmware::tr("Enable Lua custom scripts screen")); + firmware->addOption("internalelrs", Firmware::tr("Select if internal ELRS module is installed")); addOpenTxFontOptions(firmware); registerOpenTxFirmware(firmware); - addOpenTxRfOptions(firmware, FLEX); - - /* Radiomaster T8 board */ - firmware = new OpenTxFirmware(FIRMWAREID("commando8"), QCoreApplication::translate("Firmware", "iFlight Commando8"), BOARD_IFLIGHT_COMMANDO8); - 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, NONE); + addOpenTxRfOptions(firmware, FLEX + AFHDS2A + AFHDS3); /* 9XR-Pro */ firmware = new OpenTxFirmware(FIRMWAREID("9xrpro"), Firmware::tr("Turnigy 9XR-PRO"), BOARD_9XRPRO); @@ -1503,6 +1505,7 @@ void registerOpenTxFirmwares() addOpenTxArm9xOptions(firmware); registerOpenTxFirmware(firmware, true); + Firmware::sortRegisteredFirmwares(); Firmware::setDefaultVariant(Firmware::getFirmwareForFlavour("tx16s")); Firmware::setCurrentVariant(Firmware::getDefaultVariant()); }