From 9afd2e4fba1facd3074993304fe91a0944e05076 Mon Sep 17 00:00:00 2001 From: Peter Feerick Date: Fri, 9 Jul 2021 15:29:50 +1000 Subject: [PATCH] Reset MultiProtocol subType reset to zero on protocol change Resolves #410 by ensuring an out of range sub-protocol is not set when the protocol is changed. Stops the module from complaining about an invalid protocol, as well as stops simu from crashing. --- radio/src/gui/colorlcd/model_setup.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/radio/src/gui/colorlcd/model_setup.cpp b/radio/src/gui/colorlcd/model_setup.cpp index cbd353bf6..342199fb5 100644 --- a/radio/src/gui/colorlcd/model_setup.cpp +++ b/radio/src/gui/colorlcd/model_setup.cpp @@ -644,6 +644,7 @@ class ModuleWindow : public FormGroup { } #if defined(MULTIMODULE) else if (isModuleMultimodule(moduleIdx)) { + Choice * mmSubProtocol = nullptr; grid.nextLine(); new StaticText(this, grid.getLabelSlot(true), STR_RF_PROTOCOL); @@ -653,6 +654,8 @@ class ModuleWindow : public FormGroup { GET_DEFAULT(multiRfProto), [=](int32_t newValue) { g_model.moduleData[moduleIdx].setMultiProtocol(newValue); + g_model.moduleData[moduleIdx].subType = 0; + if (mmSubProtocol != nullptr) mmSubProtocol->invalidate(); resetMultiProtocolsOptions(moduleIdx); SET_DIRTY(); update(); @@ -662,7 +665,7 @@ class ModuleWindow : public FormGroup { // Subtype (D16, DSMX,...) const mm_protocol_definition * pdef = getMultiProtocolDefinition(g_model.moduleData[moduleIdx].getMultiProtocol()); if (pdef->maxSubtype > 0) - new Choice(this, grid.getFieldSlot(2, 1), pdef->subTypeString, 0, pdef->maxSubtype,GET_SET_DEFAULT(g_model.moduleData[moduleIdx].subType)); + mmSubProtocol = new Choice(this, grid.getFieldSlot(2, 1), pdef->subTypeString, 0, pdef->maxSubtype,GET_SET_DEFAULT(g_model.moduleData[moduleIdx].subType)); grid.nextLine(); // Multimodule status