[X7] EEPROM Variant introduced for Companion import (#4245)
* [X7] EEPROM Variant introduced for Companion import * [X7] Also different FourCC needed if we want to use .otx files * Allow early version of X7 firmware Eeprom to migrate to new variant (#4246) * Allow early version of X7 firmware Eeprom to migrate to new variant
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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<OpenTxGeneralData>((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 << ")";
|
||||
|
||||
+8
-2
@@ -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
|
||||
|
||||
@@ -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<EEPROM_SIZE; i+=1024) {
|
||||
UINT count;
|
||||
eepromReadBlock(buffer, i, 1024);
|
||||
@@ -955,9 +964,9 @@ void eepromBackup()
|
||||
updateProgressBar(i, EEPROM_SIZE);
|
||||
SIMU_SLEEP(100/*ms*/);
|
||||
}
|
||||
|
||||
|
||||
f_close(&file);
|
||||
|
||||
|
||||
//set back unexpectedShutdown
|
||||
g_eeGeneral.unexpectedShutdown = 1;
|
||||
storageDirty(EE_GENERAL);
|
||||
|
||||
@@ -11,7 +11,7 @@ if(PCB STREQUAL X9E)
|
||||
set(LUA_EXPORT lua_export_x9e)
|
||||
set(FLAVOUR x9e)
|
||||
add_definitions(-DSTM32F40_41xxx -DPCBX9E)
|
||||
add_definitions(-DEEPROM_VARIANT=32768)
|
||||
add_definitions(-DEEPROM_VARIANT=0x8000)
|
||||
set(FIRMWARE_TARGET_SRC
|
||||
${FIRMWARE_TARGET_SRC}
|
||||
top_lcd_driver.cpp
|
||||
@@ -65,7 +65,7 @@ elseif(PCB STREQUAL X7)
|
||||
set(LUA_EXPORT lua_export_x7)
|
||||
set(FLAVOUR x7)
|
||||
add_definitions(-DPCBX7 -DSOFTWARE_VOLUME)
|
||||
add_definitions(-DEEPROM_VARIANT=0)
|
||||
add_definitions(-DEEPROM_VARIANT=0x4000)
|
||||
set(FIRMWARE_TARGET_SRC
|
||||
${FIRMWARE_TARGET_SRC}
|
||||
bluetooth_driver.cpp
|
||||
|
||||
Reference in New Issue
Block a user