From 02d07c4d2dad579dc47c46b30f087b0427757ce8 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Mon, 2 Sep 2019 17:04:25 +0200 Subject: [PATCH] Bsongis/access registration id reinit when zero (#6700) ACCESS registration ID reinitialized when zero (coming from Companion) Fix incorrect module settings on model load --- .../src/firmwares/opentx/opentxeeprom.cpp | 11 ++----- radio/src/storage/eeprom_common.cpp | 3 +- radio/src/storage/sdcard_raw.cpp | 2 ++ radio/src/storage/storage.h | 2 +- radio/src/storage/storage_common.cpp | 30 ++++++++++++++----- 5 files changed, 29 insertions(+), 19 deletions(-) diff --git a/companion/src/firmwares/opentx/opentxeeprom.cpp b/companion/src/firmwares/opentx/opentxeeprom.cpp index 8b86c0f6d..9ea3efd0a 100644 --- a/companion/src/firmwares/opentx/opentxeeprom.cpp +++ b/companion/src/firmwares/opentx/opentxeeprom.cpp @@ -2498,9 +2498,6 @@ void OpenTxModelData::beforeExport() { // qDebug() << QString("before export model") << modelData.name; - for (int module=0; module<2; module++) { - } - if (IS_HORUS(board)) { uint32_t newSwitchWarningStates = 0; for (int i = 0; i < MAX_SWITCHES(board, version); i++) { @@ -2517,11 +2514,6 @@ void OpenTxModelData::afterImport() { qCDebug(eepromImport) << QString("OpenTxModelData::afterImport()") << modelData.name; - // ??? what's this ??? - if (IS_HORUS(board)) { - modelData.moduleData[0].protocol = PULSES_PXX_XJT_X16; - } - if (IS_HORUS(board)) { uint32_t newSwitchWarningStates = 0; for (int i = 0; i < MAX_SWITCHES(board, version); i++) { @@ -2534,8 +2526,9 @@ void OpenTxModelData::afterImport() modelData.switchWarningStates = newSwitchWarningStates; } - if (version <= 218 && IS_HORUS_X10(board) && modelData.thrTraceSrc > 3) + if (version <= 218 && IS_HORUS_X10(board) && modelData.thrTraceSrc > 3) { modelData.thrTraceSrc += 2; + } } OpenTxGeneralData::OpenTxGeneralData(GeneralSettings & generalData, Board::Type board, unsigned int version, unsigned int variant): diff --git a/radio/src/storage/eeprom_common.cpp b/radio/src/storage/eeprom_common.cpp index c6b511d68..9c7ab478a 100644 --- a/radio/src/storage/eeprom_common.cpp +++ b/radio/src/storage/eeprom_common.cpp @@ -27,7 +27,6 @@ void eeLoadModel(uint8_t index) { if (index < MAX_MODELS) { - preModelLoad(); uint16_t size = eeLoadModelData(index); @@ -111,6 +110,8 @@ bool storageReadRadioSettings(bool allowFixes) } } + postRadioSettingsLoad(); + return true; } diff --git a/radio/src/storage/sdcard_raw.cpp b/radio/src/storage/sdcard_raw.cpp index 1128eee5c..472f751ae 100644 --- a/radio/src/storage/sdcard_raw.cpp +++ b/radio/src/storage/sdcard_raw.cpp @@ -169,6 +169,8 @@ const char * loadRadioSettings(const char * path) convertRadioData(version); } + postRadioSettingsLoad(); + return nullptr; } diff --git a/radio/src/storage/storage.h b/radio/src/storage/storage.h index 4e54f0a94..d42bc5878 100644 --- a/radio/src/storage/storage.h +++ b/radio/src/storage/storage.h @@ -49,7 +49,7 @@ void storageReadAll(); void storageDirty(uint8_t msk); void storageCheck(bool immediately); void storageFlushCurrentModel(); - +void postRadioSettingsLoad(); void preModelLoad(); void postModelLoad(bool alarms); diff --git a/radio/src/storage/storage_common.cpp b/radio/src/storage/storage_common.cpp index 78cd7f5d0..b38584b08 100644 --- a/radio/src/storage/storage_common.cpp +++ b/radio/src/storage/storage_common.cpp @@ -53,20 +53,34 @@ void preModelLoad() pauseMixerCalculations(); } -#if defined(PCBTARANIS) || defined(PCBHORUS) -static void fixUpModel() + +void postRadioSettingsLoad() { - // Ensure that when rfProtocol is MODULE_SUBTYPE_PXX1_OFF the type of the module is MODULE_TYPE_NONE - if (g_model.moduleData[INTERNAL_MODULE].type == MODULE_TYPE_XJT_PXX1 && g_model.moduleData[INTERNAL_MODULE].rfProtocol == MODULE_SUBTYPE_PXX1_OFF) - g_model.moduleData[INTERNAL_MODULE].type = MODULE_TYPE_NONE; -} +#if defined(PXX2) + if (is_memclear(g_eeGeneral.ownerRegistrationID, PXX2_LEN_REGISTRATION_ID)) { + setDefaultOwnerId(); + } #endif +} void postModelLoad(bool alarms) { -#if defined(PCBTARANIS) || defined(PCBHORUS) - fixUpModel(); +#if defined(PXX2) + if (is_memclear(g_model.modelRegistrationID, PXX2_LEN_REGISTRATION_ID)) { + memcpy(g_model.modelRegistrationID, g_eeGeneral.ownerRegistrationID, PXX2_LEN_REGISTRATION_ID); + } #endif + +#if defined(HARDWARE_INTERNAL_MODULE) + if (!isInternalModuleAvailable(g_model.moduleData[INTERNAL_MODULE].type)) { + memclear(&g_model.moduleData[INTERNAL_MODULE], sizeof(ModuleData)); + } +#endif + + if (!isExternalModuleAvailable(g_model.moduleData[EXTERNAL_MODULE].type)) { + memclear(&g_model.moduleData[EXTERNAL_MODULE], sizeof(ModuleData)); + } + AUDIO_FLUSH(); flightReset(false);