From f7e3458bac2bdbfbc5cac57058bb99551b743aa3 Mon Sep 17 00:00:00 2001 From: Raphael Coeffic Date: Thu, 6 Oct 2022 12:03:39 +0200 Subject: [PATCH] fix(multi): set bind status explicitly when aborted manually (#2455) * fix(multi): set bind status explicitly when aborted manually Fixes #2263 * fix: adjust MPM bind status on B&W as well --- radio/src/gui/128x64/model_setup.cpp | 9 ++++++--- radio/src/gui/212x64/model_setup.cpp | 9 ++++++--- radio/src/gui/colorlcd/module_setup.cpp | 5 +++++ 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/radio/src/gui/128x64/model_setup.cpp b/radio/src/gui/128x64/model_setup.cpp index 7d91d33d3..ea2f099de 100644 --- a/radio/src/gui/128x64/model_setup.cpp +++ b/radio/src/gui/128x64/model_setup.cpp @@ -1641,9 +1641,12 @@ void menuModelSetup(event_t event) moduleState[moduleIdx].mode = newFlag; #if defined(MULTIMODULE) - if (isModuleMultimodule(moduleIdx) && - (newFlag == MODULE_MODE_BIND)) { - setMultiBindStatus(moduleIdx, MULTI_BIND_INITIATED); + if (isModuleMultimodule(moduleIdx) && (oldFlag != newFlag)) { + if (newFlag == MODULE_MODE_BIND) { + setMultiBindStatus(moduleIdx, MULTI_BIND_INITIATED); + } else if (getMultiBindStatus(moduleIdx) != MULTI_BIND_NONE) { + setMultiBindStatus(moduleIdx, MULTI_BIND_NONE); + } } #endif if (isModuleDSMP(moduleIdx) && diff --git a/radio/src/gui/212x64/model_setup.cpp b/radio/src/gui/212x64/model_setup.cpp index be56ca6f0..795caef3b 100644 --- a/radio/src/gui/212x64/model_setup.cpp +++ b/radio/src/gui/212x64/model_setup.cpp @@ -1435,9 +1435,12 @@ void menuModelSetup(event_t event) } moduleState[moduleIdx].mode = newFlag; #if defined(MULTIMODULE) - if (isModuleMultimodule(moduleIdx) && - (newFlag == MODULE_MODE_BIND)) { - setMultiBindStatus(moduleIdx, MULTI_BIND_INITIATED); + if (isModuleMultimodule(moduleIdx) && (oldFlag != newFlag)) { + if (newFlag == MODULE_MODE_BIND) { + setMultiBindStatus(moduleIdx, MULTI_BIND_INITIATED); + } else if (getMultiBindStatus(moduleIdx) != MULTI_BIND_NONE) { + setMultiBindStatus(moduleIdx, MULTI_BIND_NONE); + } } #endif if (isModuleDSMP(moduleIdx) && diff --git a/radio/src/gui/colorlcd/module_setup.cpp b/radio/src/gui/colorlcd/module_setup.cpp index 3c6593350..11d5480ea 100644 --- a/radio/src/gui/colorlcd/module_setup.cpp +++ b/radio/src/gui/colorlcd/module_setup.cpp @@ -284,6 +284,11 @@ void ModuleWindow::updateModule() } if (moduleState[moduleIdx].mode == MODULE_MODE_BIND) { moduleState[moduleIdx].mode = MODULE_MODE_NORMAL; +#if defined(MULTIMODULE) + if (isModuleMultimodule(moduleIdx)) { + setMultiBindStatus(moduleIdx, MULTI_BIND_NONE); + } +#endif #if defined(AFHDS2) if (isModuleFlySky(moduleIdx)) resetPulsesAFHDS2(); #endif