diff --git a/companion/src/firmwares/opentx/opentxeeprom.h b/companion/src/firmwares/opentx/opentxeeprom.h index c10baa8e2..8110ff76b 100644 --- a/companion/src/firmwares/opentx/opentxeeprom.h +++ b/companion/src/firmwares/opentx/opentxeeprom.h @@ -28,10 +28,10 @@ #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 TARANIS_X7_VARIANT 0x4000 #define SIMU_STOCK_VARIANTS (GVARS_VARIANT|FRSKY_VARIANT) #define SIMU_M128_VARIANTS (M128_VARIANT|SIMU_STOCK_VARIANTS) diff --git a/companion/src/firmwares/opentx/opentxinterface.cpp b/companion/src/firmwares/opentx/opentxinterface.cpp index 42c376984..7f150620a 100644 --- a/companion/src/firmwares/opentx/opentxinterface.cpp +++ b/companion/src/firmwares/opentx/opentxinterface.cpp @@ -96,9 +96,11 @@ uint32_t OpenTxEepromInterface::getFourCC() case BOARD_HORUS: return 0x3478746F; case BOARD_TARANIS_X7: + return 0x3678746F; + case BOARD_TARANIS_X9E: + return 0x3578746F; case BOARD_TARANIS_X9D: case BOARD_TARANIS_X9DP: - case BOARD_TARANIS_X9E: return 0x3378746F; case BOARD_SKY9X: case BOARD_AR9X: @@ -339,9 +341,12 @@ int OpenTxEepromInterface::save(uint8_t * eeprom, const RadioData & radioData, u if (board == BOARD_M128) { variant |= M128_VARIANT; } - else if (board == BOARD_TARANIS_X9E) { + else if (IS_TARANIS_X9E(board)) { variant |= TARANIS_X9E_VARIANT; } + else if (IS_TARANIS_X7(board)) { + variant |= TARANIS_X7_VARIANT; + } int result = saveRadioSettings((GeneralSettings &)radioData.generalSettings, board, version, variant); if (!result) { @@ -737,8 +742,10 @@ int OpenTxFirmware::getCapability(Capability capability) return SIMU_STOCK_VARIANTS; else if (board == BOARD_M128) return SIMU_M128_VARIANTS; - else if (board == BOARD_TARANIS_X9E) + else if (IS_TARANIS_X9E(board)) return TARANIS_X9E_VARIANT; + else if (IS_TARANIS_X7(board)) + return TARANIS_X7_VARIANT; else return 0; case MavlinkTelemetry: @@ -1054,6 +1061,12 @@ bool OpenTxEepromInterface::checkVariant(unsigned int version, unsigned int vari return false; } } + else if (IS_TARANIS_X7(board)) { + if (variant != TARANIS_X7_VARIANT) { + std::cout << " wrong variant (" << variant << ")"; + return false; + } + } else if (IS_TARANIS(board)) { if (variant != 0) { std::cout << " wrong variant (" << variant << ")"; diff --git a/radio/src/sdcard.h b/radio/src/sdcard.h index 39fd795fa..d2998e390 100644 --- a/radio/src/sdcard.h +++ b/radio/src/sdcard.h @@ -117,9 +117,15 @@ const char * getFileExtension(const char * filename, uint8_t size=0, uint8_t ext #if defined(PCBHORUS) #define OTX_FOURCC 0x3478746F // otx for Horus #define O9X_FOURCC 0x3178396F // we forgot it in 2.2 RC .. +#elif defined(PCBX9E) + #define OTX_FOURCC 0x3578746F // otx for Taranis X9E + #define O9X_FOURCC 0x3378396F // o9x for Taranis X9E +#elif defined(PCBX7) + #define OTX_FOURCC 0x3678746F // otx for Taranis X7 + #define O9X_FOURCC 0x3378396F // o9x for Taranis X7 #elif defined(PCBTARANIS) - #define OTX_FOURCC 0x3378746F // otx for Taranis - #define O9X_FOURCC 0x3378396F // o9x for Taranis + #define OTX_FOURCC 0x3378746F // otx for Taranis X9D + #define O9X_FOURCC 0x3378396F // o9x for Taranis X9D #elif defined(PCBSKY9X) #define OTX_FOURCC 0x3278746F // otx for sky9x #define O9X_FOURCC 0x3278396F // o9x for sky9x diff --git a/radio/src/storage/eeprom_rlc.cpp b/radio/src/storage/eeprom_rlc.cpp index d1840bdc5..54fe5f8d9 100644 --- a/radio/src/storage/eeprom_rlc.cpp +++ b/radio/src/storage/eeprom_rlc.cpp @@ -826,6 +826,15 @@ bool eeLoadGeneral() } } +#if defined(PCBX7) + if (g_eeGeneral.variant == 0) { + TRACE("Pre release EEPROM detected, variant %d instead of %d for X7 radio. Loading anyway", g_eeGeneral.variant, EEPROM_VARIANT); + g_eeGeneral.variant = EEPROM_VARIANT; + storageDirty(EE_GENERAL); + return true; + } +#endif + #if defined(PCBTARANIS) if (g_eeGeneral.variant != EEPROM_VARIANT) { TRACE("EEPROM variant %d instead of %d", g_eeGeneral.variant, EEPROM_VARIANT); @@ -922,32 +931,32 @@ void eepromBackup() char filename[60]; uint8_t buffer[1024]; FIL file; - + lcdClear(); drawProgressBar(STR_WRITING); - + // reset unexpectedShutdown to prevent warning when user restores EEPROM backup g_eeGeneral.unexpectedShutdown = 0; storageDirty(EE_GENERAL); storageCheck(true); - + // create the directory if needed... const char * error = sdCheckAndCreateDirectory(EEPROMS_PATH); if (error) { POPUP_WARNING(error); return; } - + // prepare the filename... char * tmp = strAppend(filename, EEPROMS_PATH "/eeprom"); #if defined(RTCLOCK) tmp = strAppendDate(tmp, true); #endif strAppend(tmp, EEPROM_EXT); - + // open the file for writing... f_open(&file, filename, FA_WRITE | FA_CREATE_ALWAYS); - + for (int i=0; i