diff --git a/companion/src/eeprominterface.cpp b/companion/src/eeprominterface.cpp index d3859956b3..f251a539cb 100644 --- a/companion/src/eeprominterface.cpp +++ b/companion/src/eeprominterface.cpp @@ -1550,6 +1550,7 @@ void registerEEpromInterfaces() eepromInterfaces.push_back(new OpenTxEepromInterface(BOARD_9XRPRO)); eepromInterfaces.push_back(new OpenTxEepromInterface(BOARD_TARANIS)); eepromInterfaces.push_back(new OpenTxEepromInterface(BOARD_TARANIS_PLUS)); + eepromInterfaces.push_back(new OpenTxEepromInterface(BOARD_TARANIS_X9E)); eepromInterfaces.push_back(new Gruvin9xInterface(BOARD_STOCK)); eepromInterfaces.push_back(new Gruvin9xInterface(BOARD_GRUVIN9X)); eepromInterfaces.push_back(new Ersky9xInterface()); diff --git a/companion/src/firmwares/opentx/opentxeeprom.h b/companion/src/firmwares/opentx/opentxeeprom.h index e14991d5e8..e8734d9716 100644 --- a/companion/src/firmwares/opentx/opentxeeprom.h +++ b/companion/src/firmwares/opentx/opentxeeprom.h @@ -22,14 +22,15 @@ #include "eepromimportexport.h" #include -#define GVARS_VARIANT 0x0001 -#define FRSKY_VARIANT 0x0002 -#define POS3_VARIANT 0x0004 -#define MAVLINK_VARIANT 0x0008 -#define M128_VARIANT 0x8000 +#define GVARS_VARIANT 0x0001 +#define FRSKY_VARIANT 0x0002 +#define POS3_VARIANT 0x0004 +#define MAVLINK_VARIANT 0x0008 +#define M128_VARIANT 0x8000 +#define TARANIS_X9E_VARIANT 0x8000 -#define SIMU_STOCK_VARIANTS (GVARS_VARIANT|FRSKY_VARIANT) -#define SIMU_M128_VARIANTS (M128_VARIANT|SIMU_STOCK_VARIANTS) +#define SIMU_STOCK_VARIANTS (GVARS_VARIANT|FRSKY_VARIANT) +#define SIMU_M128_VARIANTS (M128_VARIANT|SIMU_STOCK_VARIANTS) class OpenTxGeneralData: public TransformedField { public: diff --git a/companion/src/firmwares/opentx/opentxinterface.cpp b/companion/src/firmwares/opentx/opentxinterface.cpp index 4e84533734..9429e856f5 100644 --- a/companion/src/firmwares/opentx/opentxinterface.cpp +++ b/companion/src/firmwares/opentx/opentxinterface.cpp @@ -401,6 +401,9 @@ int OpenTxEepromInterface::save(uint8_t *eeprom, RadioData &radioData, uint32_t if (board == BOARD_M128) { variant |= M128_VARIANT; } + else if (board == BOARD_TARANIS_X9E) { + variant |= TARANIS_X9E_VARIANT; + } int result = saveGeneral(radioData.generalSettings, board, version, variant); if (!result) { @@ -757,6 +760,8 @@ int OpenTxFirmware::getCapability(const Capability capability) return SIMU_STOCK_VARIANTS; else if (board == BOARD_M128) return SIMU_M128_VARIANTS; + else if (board == BOARD_TARANIS_X9E) + return TARANIS_X9E_VARIANT; else return 0; case MavlinkTelemetry: @@ -949,7 +954,7 @@ bool OpenTxEepromInterface::checkVersion(unsigned int version) bool OpenTxEepromInterface::checkVariant(unsigned int version, unsigned int variant) { - if (board == BOARD_M128 && !(variant & 0x8000)) { + if (board == BOARD_M128 && !(variant & M128_VARIANT)) { if (version == 212) { uint8_t tmp[1000]; for (int i=1; i<31; i++) { @@ -961,12 +966,23 @@ bool OpenTxEepromInterface::checkVariant(unsigned int version, unsigned int vari } } } - std::cout << " error when loading M128 general settings (wrong variant)"; + std::cout << " wrong variant (" << variant << ")"; return false; } - else { - return true; + else if (board == BOARD_TARANIS_X9E) { + if (variant != TARANIS_X9E_VARIANT) { + std::cout << " wrong variant (" << variant << ")"; + return false; + } } + else if (IS_TARANIS(board)) { + if (variant != 0) { + std::cout << " wrong variant (" << variant << ")"; + return false; + } + } + + return true; } bool OpenTxEepromInterface::loadBackup(RadioData &radioData, uint8_t *eeprom, int esize, int index)