diff --git a/radio/src/gui/128x64/model_setup.cpp b/radio/src/gui/128x64/model_setup.cpp index 93de351b4d..d23bc2e396 100644 --- a/radio/src/gui/128x64/model_setup.cpp +++ b/radio/src/gui/128x64/model_setup.cpp @@ -377,6 +377,10 @@ void runPopupRegister(event_t event) } else if (reusableBuffer.moduleSetup.pxx2.registerStep >= REGISTER_RX_NAME_RECEIVED && menuHorizontalPosition == 0) { // [Enter] pressed + if (memcmp(reusableBuffer.moduleSetup.pxx2.registrationId, g_eeGeneral.ownerRegistrationID, PXX2_LEN_REGISTRATION_ID) == 0) + memclear(g_model.modelRegistrationID, PXX2_LEN_REGISTRATION_ID); + else + memcpy(g_model.modelRegistrationID, reusableBuffer.moduleSetup.pxx2.registrationId, PXX2_LEN_REGISTRATION_ID); reusableBuffer.moduleSetup.pxx2.registerStep = REGISTER_RX_NAME_SELECTED; backupEditMode = EDIT_MODIFY_FIELD; // so that the [Register] button blinks and the REGISTER process can continue } @@ -401,7 +405,7 @@ void runPopupRegister(event_t event) // registration password lcdDrawText(WARNING_LINE_X, WARNING_LINE_Y - 4, STR_REG_ID); - editName(WARNING_LINE_X + 8*FW, WARNING_LINE_Y - 4, g_model.modelRegistrationID, PXX2_LEN_REGISTRATION_ID, event, menuVerticalPosition == ITEM_REGISTER_PASSWORD); + editName(WARNING_LINE_X + 8*FW, WARNING_LINE_Y - 4, reusableBuffer.moduleSetup.pxx2.registrationId, PXX2_LEN_REGISTRATION_ID, event, menuVerticalPosition == ITEM_REGISTER_PASSWORD); // loop index (will be removed in future) lcdDrawText(WARNING_LINE_X, WARNING_LINE_Y - 4 + FH, "UID"); @@ -436,15 +440,13 @@ void runPopupRegister(event_t event) void startRegisterDialog(uint8_t module) { memclear(&reusableBuffer.moduleSetup.pxx2, sizeof(reusableBuffer.moduleSetup.pxx2)); + memcpy(reusableBuffer.moduleSetup.pxx2.registrationId, currentRegistrationID(), PXX2_LEN_REGISTRATION_ID); moduleSettings[module].mode = MODULE_MODE_REGISTER; s_editMode = 0; POPUP_INPUT("", runPopupRegister); } -inline bool isDefaultModelRegistrationID() -{ - return memcmp(g_model.modelRegistrationID, g_eeGeneral.ownerRegistrationID, PXX2_LEN_REGISTRATION_ID) == 0; -} + void menuModelSetup(event_t event) { @@ -1250,7 +1252,7 @@ void menuModelSetup(event_t event) if (isDefaultModelRegistrationID()) lcdDrawText(MODEL_SETUP_2ND_COLUMN, y, ""); else - lcdDrawSizedText(MODEL_SETUP_2ND_COLUMN, y, g_model.modelRegistrationID, sizeof(g_model.modelRegistrationID), ZCHAR); + lcdDrawSizedText(MODEL_SETUP_2ND_COLUMN, y, g_model.modelRegistrationID, PXX2_LEN_REGISTRATION_ID, ZCHAR); break; case ITEM_MODEL_INTERNAL_MODULE_PXX2_MODEL_NUM: diff --git a/radio/src/opentx.cpp b/radio/src/opentx.cpp index 7662da2c95..edb4a317b4 100644 --- a/radio/src/opentx.cpp +++ b/radio/src/opentx.cpp @@ -461,8 +461,6 @@ void modelDefault(uint8_t id) applyDefaultTemplate(); - memcpy(g_model.modelRegistrationID, g_eeGeneral.ownerRegistrationID, PXX2_LEN_REGISTRATION_ID); - #if defined(LUA) && defined(PCBTARANIS) //Horus uses menuModelWizard() for wizard if (isFileAvailable(WIZARD_PATH "/" WIZARD_NAME)) { f_chdir(WIZARD_PATH); diff --git a/radio/src/opentx.h b/radio/src/opentx.h index b406c50b2d..d5164c2559 100644 --- a/radio/src/opentx.h +++ b/radio/src/opentx.h @@ -1132,6 +1132,7 @@ union ReusableBuffer uint8_t bindStep; uint8_t resetStep; }; + char registrationId[PXX2_LEN_REGISTRATION_ID]; uint32_t bindWaitTimeout; uint8_t registerPopupVerticalPosition; uint8_t registerPopupHorizontalPosition; diff --git a/radio/src/pulses/modules.h b/radio/src/pulses/modules.h index 1a0c7a7124..80511d5b5c 100644 --- a/radio/src/pulses/modules.h +++ b/radio/src/pulses/modules.h @@ -268,4 +268,14 @@ inline bool isModuleOptionAvailable(uint8_t modelId, uint8_t option) return moduleOptions[modelId] & (1 << option); } +inline bool isDefaultModelRegistrationID() +{ + return is_memclear(g_model.modelRegistrationID, PXX2_LEN_REGISTRATION_ID); +} + +inline const char * currentRegistrationID() +{ + return isDefaultModelRegistrationID() ? g_eeGeneral.ownerRegistrationID : g_model.modelRegistrationID; +} + #endif // _MODULES_H_ diff --git a/radio/src/pulses/pxx2.cpp b/radio/src/pulses/pxx2.cpp index 1bf0bc58e9..6f95a2dc71 100644 --- a/radio/src/pulses/pxx2.cpp +++ b/radio/src/pulses/pxx2.cpp @@ -157,8 +157,9 @@ void Pxx2Pulses::setupRegisterFrame(uint8_t module) for (uint8_t i=0; i