diff --git a/radio/src/gui/colorlcd/radio_hardware.cpp b/radio/src/gui/colorlcd/radio_hardware.cpp index f57d20412..2abd41226 100644 --- a/radio/src/gui/colorlcd/radio_hardware.cpp +++ b/radio/src/gui/colorlcd/radio_hardware.cpp @@ -330,10 +330,17 @@ void RadioHardwarePage::build(FormWindow * window) #if defined(HARDWARE_INTERNAL_MODULE) new StaticText(window, grid.getLabelSlot(), TR_INTERNAL_MODULE, 0, COLOR_THEME_PRIMARY1); - auto internalModule = - new Choice(window, grid.getFieldSlot(1, 0), STR_INTERNAL_MODULE_PROTOCOLS, - MODULE_TYPE_NONE, MODULE_TYPE_COUNT - 1, - GET_SET_DEFAULT(g_eeGeneral.internalModule)); + auto internalModule = new Choice(window, grid.getFieldSlot(1, 0), + STR_INTERNAL_MODULE_PROTOCOLS, MODULE_TYPE_NONE, MODULE_TYPE_COUNT - 1, + GET_DEFAULT(g_eeGeneral.internalModule), + [=](int moduleType) { + if (g_model.moduleData[INTERNAL_MODULE].type != moduleType) { + memclear(&g_model.moduleData[INTERNAL_MODULE], sizeof(ModuleData)); + storageDirty(EE_MODEL); + } + g_eeGeneral.internalModule = moduleType; + SET_DIRTY(); + }); internalModule->setAvailableHandler([](int module){ return isInternalModuleSupported(module); diff --git a/radio/src/gui/common/stdlcd/radio_hardware.cpp b/radio/src/gui/common/stdlcd/radio_hardware.cpp index 7b02037fb..7ff084a6c 100644 --- a/radio/src/gui/common/stdlcd/radio_hardware.cpp +++ b/radio/src/gui/common/stdlcd/radio_hardware.cpp @@ -528,13 +528,19 @@ void menuRadioHardware(event_t event) #endif #if !defined(PCBX9D) && !defined(PCBX9DP) && !defined(PCBX9E) - case ITEM_RADIO_HARDWARE_INTERNAL_MODULE: + case ITEM_RADIO_HARDWARE_INTERNAL_MODULE: { g_eeGeneral.internalModule = editChoice(HW_SETTINGS_COLUMN2, y, STR_INTERNAL_MODULE, STR_INTERNAL_MODULE_PROTOCOLS, g_eeGeneral.internalModule, MODULE_TYPE_NONE, MODULE_TYPE_MAX, attr, event, isInternalModuleSupported); - break; + if (g_model.moduleData[INTERNAL_MODULE].type != + g_eeGeneral.internalModule) { + memclear(&g_model.moduleData[INTERNAL_MODULE], sizeof(ModuleData)); + storageDirty(EE_MODEL); + storageDirty(EE_GENERAL); + } + } break; #endif #if (defined(CROSSFIRE) || defined(GHOST))