diff --git a/companion/src/firmwares/edgetx/yaml_moduledata.cpp b/companion/src/firmwares/edgetx/yaml_moduledata.cpp index 1064ef6921e..ff9c4a5a5eb 100644 --- a/companion/src/firmwares/edgetx/yaml_moduledata.cpp +++ b/companion/src/firmwares/edgetx/yaml_moduledata.cpp @@ -419,6 +419,7 @@ bool convert::decode(const Node& node, ModuleData& rhs) if (rcvrname.IsMap()) { if (rcvrname["val"]) { rcvrname["val"] >> rhs.access.receiverName[i]; + rhs.access.receivers |= (1 << i); // fix colorLCD radios not writing tag receivers } } } diff --git a/radio/src/gui/colorlcd/access_settings.cpp b/radio/src/gui/colorlcd/access_settings.cpp index ee93e25930a..2e26ea264ec 100644 --- a/radio/src/gui/colorlcd/access_settings.cpp +++ b/radio/src/gui/colorlcd/access_settings.cpp @@ -38,8 +38,8 @@ static void startBindWaitDialog(Window* parent, uint8_t moduleIdx, bindInfo.candidateReceiversNames[bindInfo.selectedReceiverIndex]; memcpy(g_model.moduleData[moduleIdx].pxx2.receiverName[receiverIdx], receiverName, PXX2_LEN_RX_NAME); - storageDirty(EE_MODEL); bindInfo.step = BIND_OK; + setPXX2ReceiverUsed(moduleIdx, receiverIdx); moduleState[moduleIdx].mode = MODULE_MODE_NORMAL; new MessageDialog(parent, STR_BIND, STR_BIND_OK); #else @@ -161,6 +161,7 @@ void BindWaitDialog::checkEvents() deleteLater(); if (bindInfo.step == BIND_OK) { POPUP_INFORMATION(STR_REG_OK); + setPXX2ReceiverUsed(moduleIdx, receiverIdx); } return; } diff --git a/radio/src/pulses/modules_helpers.h b/radio/src/pulses/modules_helpers.h index 237d1343b65..f58c0005a6c 100644 --- a/radio/src/pulses/modules_helpers.h +++ b/radio/src/pulses/modules_helpers.h @@ -740,6 +740,7 @@ inline bool isPXX2ReceiverUsed(uint8_t moduleIdx, uint8_t receiverIdx) inline void setPXX2ReceiverUsed(uint8_t moduleIdx, uint8_t receiverIdx) { g_model.moduleData[moduleIdx].pxx2.receivers |= (1 << receiverIdx); + storageDirty(EE_MODEL); } inline bool isPXX2ReceiverEmpty(uint8_t moduleIdx, uint8_t receiverIdx) diff --git a/radio/src/storage/storage_common.cpp b/radio/src/storage/storage_common.cpp index b67d776bb9d..a39a0d1573d 100644 --- a/radio/src/storage/storage_common.cpp +++ b/radio/src/storage/storage_common.cpp @@ -132,6 +132,19 @@ void postModelLoad(bool alarms) if (is_memclear(g_model.modelRegistrationID, PXX2_LEN_REGISTRATION_ID)) { memcpy(g_model.modelRegistrationID, g_eeGeneral.ownerRegistrationID, PXX2_LEN_REGISTRATION_ID); } + + // fix colorLCD radios not writing yaml tag receivers + ModuleData *intModule = &g_model.moduleData[INTERNAL_MODULE]; + ModuleData *extModule = &g_model.moduleData[EXTERNAL_MODULE]; + + for(uint8_t receiverIdx = 0; receiverIdx < 3; receiverIdx++) { + if(intModule->pxx2.receiverName[receiverIdx][0]) + intModule->pxx2.receivers |= (1 << receiverIdx); + + if(extModule->pxx2.receiverName[receiverIdx][0]) + extModule->pxx2.receivers |= (1 << receiverIdx); + } + storageDirty(EE_MODEL); #endif #if defined(MULTIMODULE) && defined(MULTI_PROTOLIST)