feat: Support for MPM DSM clone mode (#3974)

This commit is contained in:
3djc
2023-10-10 13:04:52 +10:00
committed by GitHub
parent 2295148ed9
commit f4f04c1827
11 changed files with 150 additions and 75 deletions
+14 -3
View File
@@ -487,7 +487,7 @@ void editTimerCountdown(int timerIdx, coord_t y, LcdFlags attr, event_t event)
MULTIMODULE_MODULE_ROWS(INTERNAL_MODULE) /* ITEM_MODEL_SETUP_INTERNAL_MODULE_AUTOBIND */ \
EXTERNAL_ANTENNA_ROW /* ITEM_MODEL_SETUP_INTERNAL_MODULE_ANTENNA */ \
MODULE_POWER_ROW(INTERNAL_MODULE), /* ITEM_MODEL_SETUP_INTERNAL_MODULE_POWER */ \
IF_INTERNAL_MODULE_ON(FAILSAFE_ROWS(INTERNAL_MODULE)), /* ITEM_MODEL_SETUP_INTERNAL_MODULE_FAILSAFE */ \
IF_INTERNAL_MODULE_ON(FAILSAFE_ROW(INTERNAL_MODULE)), /* ITEM_MODEL_SETUP_INTERNAL_MODULE_FAILSAFE */ \
IF_ACCESS_MODULE_RF(INTERNAL_MODULE, 1), /* ITEM_MODEL_SETUP_INTERNAL_MODULE_PXX2_REGISTER_RANGE */ \
IF_PXX2_MODULE(INTERNAL_MODULE, 0), /* ITEM_MODEL_SETUP_INTERNAL_MODULE_PXX2_OPTIONS */ \
IF_ACCESS_MODULE_RF(INTERNAL_MODULE, 0), /* ITEM_MODEL_SETUP_INTERNAL_MODULE_PXX2_RECEIVER_1 */ \
@@ -515,7 +515,7 @@ void editTimerCountdown(int timerIdx, coord_t y, LcdFlags attr, event_t event)
MODULE_POWER_ROW(EXTERNAL_MODULE), \
IF_NOT_PXX2_MODULE(EXTERNAL_MODULE, MODULE_OPTION_ROW(EXTERNAL_MODULE)), \
MULTIMODULE_MODULE_ROWS(EXTERNAL_MODULE) \
FAILSAFE_ROWS(EXTERNAL_MODULE), /* ITEM_MODEL_SETUP_EXTERNAL_MODULE_FAILSAFE */ \
FAILSAFE_ROW(EXTERNAL_MODULE), /* ITEM_MODEL_SETUP_EXTERNAL_MODULE_FAILSAFE */ \
IF_ACCESS_MODULE_RF(EXTERNAL_MODULE, 1), /* Range check and Register buttons */ \
IF_PXX2_MODULE(EXTERNAL_MODULE, 0), /* Module options */ \
IF_ACCESS_MODULE_RF(EXTERNAL_MODULE, 0), /* Receiver 1 */ \
@@ -1397,7 +1397,11 @@ void menuModelSetup(event_t event)
#endif
{
lcdDrawTextAlignedLeft(y, STR_SUBTYPE);
lcdDrawMultiSubProtocolString(MODEL_SETUP_2ND_COLUMN, y, moduleIdx, g_model.moduleData[moduleIdx].subType, attr);
lcdDrawMultiSubProtocolString(MODEL_SETUP_2ND_COLUMN, y, moduleIdx, g_model.moduleData[moduleIdx].subType, menuHorizontalPosition == 0 ? attr : 0);
int8_t optionValue = (g_model.moduleData[moduleIdx].multi.optionValue & 0x04) >> 2;
if (isMultiProtocolDSMCloneAvailable(moduleIdx)) {
lcdDrawTextAtIndex(LCD_W, y, STR_MULTI_DSM_CLONE, optionValue, RIGHT | (menuHorizontalPosition == 1 ? attr : 0));
}
if (attr && s_editMode > 0) {
switch (menuHorizontalPosition) {
case 0:{
@@ -1407,6 +1411,13 @@ void menuModelSetup(event_t event)
}
break;
}
case 1:{
CHECK_INCDEC_MODELVAR(event, optionValue, 0, 1);
if (checkIncDec_Ret) {
g_model.moduleData[moduleIdx].multi.optionValue = (g_model.moduleData[moduleIdx].multi.optionValue & 0xFB) + (optionValue << 2);
}
break;
}
}
}
}