Stdlcd UI for Lemon-Rx DSMP

This commit is contained in:
Raphael Coeffic
2022-03-24 10:40:17 +01:00
committed by Raphael Coeffic
parent 2c6bd12c6e
commit 9e40aaa215
3 changed files with 33 additions and 5 deletions
+16 -2
View File
@@ -986,6 +986,7 @@ void menuModelSetup(event_t event)
g_model.moduleData[moduleIdx].type = reusableBuffer.moduleSetup.newType;
reusableBuffer.moduleSetup.previousType = reusableBuffer.moduleSetup.newType;
setModuleType(moduleIdx, g_model.moduleData[moduleIdx].type);
storageDirty(EE_MODEL);
}
else if (g_model.moduleData[moduleIdx].type == MODULE_TYPE_NONE) {
g_model.moduleData[moduleIdx].type = reusableBuffer.moduleSetup.newType;
@@ -1005,7 +1006,7 @@ void menuModelSetup(event_t event)
}
else
#endif
reusableBuffer.moduleSetup.newType = checkIncDec(event, reusableBuffer.moduleSetup.newType, MODULE_TYPE_NONE, MODULE_TYPE_MAX, EE_MODEL,
reusableBuffer.moduleSetup.newType = checkIncDec(event, reusableBuffer.moduleSetup.newType, MODULE_TYPE_NONE, MODULE_TYPE_MAX, 0,
isExternalModuleAvailable);
break;
@@ -1519,6 +1520,7 @@ void menuModelSetup(event_t event)
lcdDrawText(lcdNextPos + 2, y, STR_MODULE_RANGE, l_posHorz == 2 ? attr : 0);
}
uint8_t newFlag = 0;
uint8_t oldFlag = moduleState[moduleIdx].mode;
#if defined(MULTIMODULE)
if (isModuleMultimodule(moduleIdx) &&
getMultiBindStatus(moduleIdx) == MULTI_BIND_FINISHED) {
@@ -1548,7 +1550,7 @@ void menuModelSetup(event_t event)
startBindMenu(moduleIdx);
continue;
}
if (moduleState[moduleIdx].mode == MODULE_MODE_BIND) {
if (oldFlag == MODULE_MODE_BIND) {
newFlag = MODULE_MODE_BIND;
}
else {
@@ -1560,6 +1562,12 @@ void menuModelSetup(event_t event)
else {
newFlag = MODULE_MODE_BIND;
}
if (!event && (oldFlag != newFlag) &&
(oldFlag == MODULE_MODE_NORMAL)) {
// Bind mode switched off from somewhere else
s_editMode = 0;
}
}
else if (l_posHorz == 2) {
newFlag = MODULE_MODE_RANGECHECK;
@@ -1582,6 +1590,12 @@ void menuModelSetup(event_t event)
setMultiBindStatus(moduleIdx, MULTI_BIND_INITIATED);
}
#endif
if (isModuleDSMP(moduleIdx) &&
(oldFlag != newFlag) &&
(oldFlag == MODULE_MODE_BIND)) {
// Restart DSMP module when exiting bind mode
restartModule(moduleIdx);
}
}
}
break;