From a3d44d7b09837c53a558c61f6326ba219a28564b Mon Sep 17 00:00:00 2001 From: Peter Feerick Date: Fri, 5 Aug 2022 21:21:56 +1000 Subject: [PATCH] chore: Remove "OFF" from protocol lists (#2186) * chore: Remove "OFF" from protocol lists * Fix subType setting for X9D+2019 * fix: Chan start and count for ISRM, dup type set Channel start and count wasn't being updated for ISRM. Also remove duplicate modulke type setting, which was the cause of an earlier bug that was worked around on 128x64 * fix(colorlcd): Shorter ACCST opts string crash * chore: Formatting only Co-authored-by: Raphael Coeffic --- radio/src/gui/128x64/model_setup.cpp | 135 +++++++++++++++--------- radio/src/gui/212x64/model_setup.cpp | 72 ++++++------- radio/src/gui/colorlcd/module_setup.cpp | 6 +- radio/src/translations/untranslated.h | 6 +- 4 files changed, 120 insertions(+), 99 deletions(-) diff --git a/radio/src/gui/128x64/model_setup.cpp b/radio/src/gui/128x64/model_setup.cpp index bc2cb1474..cfc151d77 100644 --- a/radio/src/gui/128x64/model_setup.cpp +++ b/radio/src/gui/128x64/model_setup.cpp @@ -988,30 +988,50 @@ void menuModelSetup(event_t event) case ITEM_MODEL_SETUP_EXTERNAL_MODULE_TYPE: #endif lcdDrawTextAlignedLeft(y, INDENT TR_MODE); - lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y,moduleIdx == EXTERNAL_MODULE ? STR_EXTERNAL_MODULE_PROTOCOLS : STR_INTERNAL_MODULE_PROTOCOLS,moduleIdx == EXTERNAL_MODULE ? reusableBuffer.moduleSetup.newType: g_model.moduleData[moduleIdx].type,menuHorizontalPosition == 0 ? attr : 0); + lcdDrawTextAtIndex( + MODEL_SETUP_2ND_COLUMN, y, + moduleIdx == EXTERNAL_MODULE ? STR_EXTERNAL_MODULE_PROTOCOLS + : STR_INTERNAL_MODULE_PROTOCOLS, + moduleIdx == EXTERNAL_MODULE ? reusableBuffer.moduleSetup.newType + : g_model.moduleData[moduleIdx].type, + menuHorizontalPosition == 0 ? attr : 0); if (isModuleXJT(moduleIdx)) - lcdDrawTextAtIndex(lcdNextPos + 3, y, STR_XJT_ACCST_RF_PROTOCOLS, 1+g_model.moduleData[moduleIdx].subType, menuHorizontalPosition==1 ? attr : 0); + lcdDrawTextAtIndex(lcdNextPos + 3, y, STR_XJT_ACCST_RF_PROTOCOLS, + g_model.moduleData[moduleIdx].subType, + menuHorizontalPosition == 1 ? attr : 0); else if (isModuleISRM(moduleIdx)) - lcdDrawTextAtIndex(lcdNextPos + 3, y, STR_ISRM_RF_PROTOCOLS, g_model.moduleData[INTERNAL_MODULE].subType, menuHorizontalPosition==1 ? attr : 0); + lcdDrawTextAtIndex(lcdNextPos + 3, y, STR_ISRM_RF_PROTOCOLS, + g_model.moduleData[INTERNAL_MODULE].subType, + menuHorizontalPosition == 1 ? attr : 0); else if (isModuleDSM2(moduleIdx)) - lcdDrawTextAtIndex(lcdNextPos + 3, y, STR_DSM_PROTOCOLS, g_model.moduleData[moduleIdx].subType, menuHorizontalPosition==1 ? attr : 0); + lcdDrawTextAtIndex(lcdNextPos + 3, y, STR_DSM_PROTOCOLS, + g_model.moduleData[moduleIdx].subType, + menuHorizontalPosition == 1 ? attr : 0); else if (isModuleR9MNonAccess(moduleIdx)) - lcdDrawTextAtIndex(lcdNextPos + 3, y, STR_R9M_REGION, g_model.moduleData[moduleIdx].subType, (menuHorizontalPosition==1 ? attr : 0)); - else if (moduleIdx == INTERNAL_MODULE && isModuleCrossfire(INTERNAL_MODULE)) - lcdDrawTextAtIndex(lcdNextPos + 3, y, STR_CRSF_BAUDRATE, CROSSFIRE_STORE_TO_INDEX(g_eeGeneral.internalModuleBaudrate),0); + lcdDrawTextAtIndex(lcdNextPos + 3, y, STR_R9M_REGION, + g_model.moduleData[moduleIdx].subType, + (menuHorizontalPosition == 1 ? attr : 0)); + else if (moduleIdx == INTERNAL_MODULE && + isModuleCrossfire(INTERNAL_MODULE)) + lcdDrawTextAtIndex( + lcdNextPos + 3, y, STR_CRSF_BAUDRATE, + CROSSFIRE_STORE_TO_INDEX(g_eeGeneral.internalModuleBaudrate), 0); - if (attr && menuHorizontalPosition == 0 && moduleIdx == EXTERNAL_MODULE) { + if (attr && menuHorizontalPosition == 0 && + moduleIdx == EXTERNAL_MODULE) { if (s_editMode > 0) { g_model.moduleData[moduleIdx].type = MODULE_TYPE_NONE; - } - else if (reusableBuffer.moduleSetup.newType != reusableBuffer.moduleSetup.previousType) { - g_model.moduleData[moduleIdx].type = reusableBuffer.moduleSetup.newType; - reusableBuffer.moduleSetup.previousType = reusableBuffer.moduleSetup.newType; + } else if (reusableBuffer.moduleSetup.newType != + reusableBuffer.moduleSetup.previousType) { + 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; + } else if (g_model.moduleData[moduleIdx].type == MODULE_TYPE_NONE) { + g_model.moduleData[moduleIdx].type = + reusableBuffer.moduleSetup.newType; } } if (attr) { @@ -1020,73 +1040,84 @@ void menuModelSetup(event_t event) case 0: #if defined(HARDWARE_INTERNAL_MODULE) if (moduleIdx == INTERNAL_MODULE) { - uint8_t moduleType = checkIncDec(event, g_model.moduleData[moduleIdx].type, MODULE_TYPE_NONE, MODULE_TYPE_MAX, EE_MODEL, - isInternalModuleAvailable); + uint8_t moduleType = + checkIncDec(event, g_model.moduleData[moduleIdx].type, + MODULE_TYPE_NONE, MODULE_TYPE_MAX, EE_MODEL, + isInternalModuleAvailable); if (checkIncDec_Ret) { setModuleType(moduleIdx, moduleType); } - } - else + } else #endif - reusableBuffer.moduleSetup.newType = checkIncDec(event, reusableBuffer.moduleSetup.newType, MODULE_TYPE_NONE, MODULE_TYPE_MAX, 0, - isExternalModuleAvailable); + reusableBuffer.moduleSetup.newType = + checkIncDec(event, reusableBuffer.moduleSetup.newType, + MODULE_TYPE_NONE, MODULE_TYPE_MAX, 0, + isExternalModuleAvailable); break; case 1: if (isModuleXJT(moduleIdx)) { - g_model.moduleData[moduleIdx].subType = checkIncDec(event, g_model.moduleData[moduleIdx].subType, 0, MODULE_SUBTYPE_PXX1_LAST, EE_MODEL, isRfProtocolAvailable); + g_model.moduleData[moduleIdx].subType = + checkIncDec(event, g_model.moduleData[moduleIdx].subType, + 0, MODULE_SUBTYPE_PXX1_LAST, EE_MODEL, + isRfProtocolAvailable); if (checkIncDec_Ret) { - if (isModuleXJTLite(moduleIdx)) - g_model.moduleData[moduleIdx].type = MODULE_TYPE_XJT_LITE_PXX2; - else - g_model.moduleData[moduleIdx].type = MODULE_TYPE_XJT_PXX1; g_model.moduleData[moduleIdx].channelsStart = 0; - g_model.moduleData[moduleIdx].channelsCount = defaultModuleChannels_M8(moduleIdx); + g_model.moduleData[moduleIdx].channelsCount = + defaultModuleChannels_M8(moduleIdx); } - } - else if (isModuleISRM(moduleIdx)) { - g_model.moduleData[moduleIdx].subType = checkIncDec(event, g_model.moduleData[moduleIdx].subType, 0, MODULE_SUBTYPE_ISRM_PXX2_ACCST_D16, EE_MODEL, isRfProtocolAvailable); - } - else if (isModuleDSM2(moduleIdx)) { - CHECK_INCDEC_MODELVAR(event, g_model.moduleData[moduleIdx].subType, DSM2_PROTO_LP45, DSM2_PROTO_DSMX); - } - else if (isModuleR9MNonAccess(moduleIdx)) { - g_model.moduleData[moduleIdx].subType = checkIncDec(event, - g_model.moduleData[moduleIdx].subType, - MODULE_SUBTYPE_R9M_FCC, - MODULE_SUBTYPE_R9M_LAST, - EE_MODEL); + } else if (isModuleISRM(moduleIdx)) { + g_model.moduleData[moduleIdx].subType = + checkIncDec(event, g_model.moduleData[moduleIdx].subType, + 0, MODULE_SUBTYPE_ISRM_PXX2_ACCST_D16, + EE_MODEL, isRfProtocolAvailable); + } else if (isModuleDSM2(moduleIdx)) { + CHECK_INCDEC_MODELVAR(event, + g_model.moduleData[moduleIdx].subType, + DSM2_PROTO_LP45, DSM2_PROTO_DSMX); + } else if (isModuleR9MNonAccess(moduleIdx)) { + g_model.moduleData[moduleIdx].subType = + checkIncDec(event, g_model.moduleData[moduleIdx].subType, + MODULE_SUBTYPE_R9M_FCC, + MODULE_SUBTYPE_R9M_LAST, EE_MODEL); if (checkIncDec_Ret) { g_model.moduleData[moduleIdx].pxx.power = 0; g_model.moduleData[moduleIdx].channelsStart = 0; - g_model.moduleData[moduleIdx].channelsCount = defaultModuleChannels_M8(moduleIdx); + g_model.moduleData[moduleIdx].channelsCount = + defaultModuleChannels_M8(moduleIdx); } - } - else { - CHECK_INCDEC_MODELVAR(event, g_model.moduleData[moduleIdx].subType, 0, MODULE_SUBTYPE_PXX1_LAST); + } else { + CHECK_INCDEC_MODELVAR(event, + g_model.moduleData[moduleIdx].subType, + 0, MODULE_SUBTYPE_PXX1_LAST); } if (checkIncDec_Ret) { g_model.moduleData[moduleIdx].channelsStart = 0; - g_model.moduleData[moduleIdx].channelsCount = defaultModuleChannels_M8(moduleIdx); + g_model.moduleData[moduleIdx].channelsCount = + defaultModuleChannels_M8(moduleIdx); } } } #if POPUP_LEVEL > 1 else if (old_editMode > 0) { if (isModuleR9MNonAccess(moduleIdx)) { - if (g_model.moduleData[moduleIdx].subType > MODULE_SUBTYPE_R9M_EU) { + if (g_model.moduleData[moduleIdx].subType > + MODULE_SUBTYPE_R9M_EU) { POPUP_WARNING(STR_MODULE_PROTOCOL_FLEX_WARN_LINE1); - SET_WARNING_INFO(STR_MODULE_PROTOCOL_WARN_LINE2, sizeof(TR_MODULE_PROTOCOL_WARN_LINE2) - 1, 0); + SET_WARNING_INFO(STR_MODULE_PROTOCOL_WARN_LINE2, + sizeof(TR_MODULE_PROTOCOL_WARN_LINE2) - 1, 0); } #if POPUP_LEVEL >= 3 - else if (g_model.moduleData[moduleIdx].subType == MODULE_SUBTYPE_R9M_EU) { + else if (g_model.moduleData[moduleIdx].subType == + MODULE_SUBTYPE_R9M_EU) { POPUP_WARNING(STR_MODULE_PROTOCOL_EU_WARN_LINE1); - SET_WARNING_INFO(STR_MODULE_PROTOCOL_WARN_LINE2, sizeof(TR_MODULE_PROTOCOL_WARN_LINE2) - 1, 0); - } - else { + SET_WARNING_INFO(STR_MODULE_PROTOCOL_WARN_LINE2, + sizeof(TR_MODULE_PROTOCOL_WARN_LINE2) - 1, 0); + } else { POPUP_WARNING(STR_MODULE_PROTOCOL_FCC_WARN_LINE1); - SET_WARNING_INFO(STR_MODULE_PROTOCOL_WARN_LINE2, sizeof(TR_MODULE_PROTOCOL_WARN_LINE2) - 1, 0); + SET_WARNING_INFO(STR_MODULE_PROTOCOL_WARN_LINE2, + sizeof(TR_MODULE_PROTOCOL_WARN_LINE2) - 1, 0); } #endif } diff --git a/radio/src/gui/212x64/model_setup.cpp b/radio/src/gui/212x64/model_setup.cpp index ef22d8989..be56ca6f0 100644 --- a/radio/src/gui/212x64/model_setup.cpp +++ b/radio/src/gui/212x64/model_setup.cpp @@ -282,12 +282,7 @@ void editTimerCountdown(int timerIdx, coord_t y, LcdFlags attr, event_t event) #define IF_INTERNAL_MODULE_ON(x) (IS_INTERNAL_MODULE_ENABLED() ? (uint8_t)(x) : HIDDEN_ROW) #define IF_EXTERNAL_MODULE_ON(x) (IS_EXTERNAL_MODULE_ENABLED() ? (uint8_t)(x) : HIDDEN_ROW) -#if defined(INTERNAL_MODULE_PXX1) #define INTERNAL_MODULE_TYPE_ROWS ((isModuleXJT(INTERNAL_MODULE) || isModulePXX2(INTERNAL_MODULE)) ? (uint8_t)1 : (uint8_t)0) // Module type + RF protocols -#else -#define INTERNAL_MODULE_TYPE_ROWS (0) // Module type + RF protocols -#endif - #define TRAINER_CHANNELS_ROW (IS_SLAVE_TRAINER() ? (uint8_t)1 : HIDDEN_ROW) #define TRAINER_PPM_PARAMS_ROW (g_model.trainerData.mode == TRAINER_MODE_SLAVE ? (uint8_t)2 : HIDDEN_ROW) #define TRAINER_BLUETOOTH_M_ROW ((bluetooth.distantAddr[0] == '\0' || bluetooth.state == BLUETOOTH_STATE_CONNECTED) ? (uint8_t)0 : (uint8_t)1) @@ -912,51 +907,52 @@ void menuModelSetup(event_t event) case ITEM_MODEL_SETUP_INTERNAL_MODULE_TYPE: { lcdDrawTextAlignedLeft(y, INDENT TR_MODE); -#if defined(INTERNAL_MODULE_PXX1) - lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_INTERNAL_MODULE_PROTOCOLS, g_model.moduleData[INTERNAL_MODULE].type, menuHorizontalPosition==0 ? attr : 0); + lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, + STR_INTERNAL_MODULE_PROTOCOLS, + g_model.moduleData[INTERNAL_MODULE].type, + menuHorizontalPosition == 0 ? attr : 0); if (isModuleXJT(INTERNAL_MODULE)) - lcdDrawTextAtIndex(lcdNextPos + 3, y, STR_XJT_ACCST_RF_PROTOCOLS, 1 + g_model.moduleData[INTERNAL_MODULE].subType, menuHorizontalPosition==1 ? attr : 0); + lcdDrawTextAtIndex(lcdNextPos + 3, y, STR_XJT_ACCST_RF_PROTOCOLS, + g_model.moduleData[INTERNAL_MODULE].subType, + menuHorizontalPosition == 1 ? attr : 0); else if (isModuleISRM(INTERNAL_MODULE)) - lcdDrawTextAtIndex(lcdNextPos + 3, y, STR_ISRM_RF_PROTOCOLS, 1 + g_model.moduleData[INTERNAL_MODULE].subType, menuHorizontalPosition==1 ? attr : 0); + lcdDrawTextAtIndex(lcdNextPos + 3, y, STR_ISRM_RF_PROTOCOLS, + g_model.moduleData[INTERNAL_MODULE].subType, + menuHorizontalPosition == 1 ? attr : 0); else if (isModuleCrossfire(INTERNAL_MODULE)) - lcdDrawTextAtIndex(lcdNextPos + 3, y, STR_CRSF_BAUDRATE, CROSSFIRE_STORE_TO_INDEX(g_eeGeneral.internalModuleBaudrate),0); + lcdDrawTextAtIndex( + lcdNextPos + 3, y, STR_CRSF_BAUDRATE, + CROSSFIRE_STORE_TO_INDEX(g_eeGeneral.internalModuleBaudrate), 0); if (attr) { if (menuHorizontalPosition == 0) { - uint8_t moduleType = checkIncDec(event, g_model.moduleData[INTERNAL_MODULE].type, MODULE_TYPE_NONE, MODULE_TYPE_MAX, EE_MODEL, isInternalModuleAvailable); + uint8_t moduleType = + checkIncDec(event, g_model.moduleData[INTERNAL_MODULE].type, + MODULE_TYPE_NONE, MODULE_TYPE_MAX, EE_MODEL, + isInternalModuleAvailable); if (checkIncDec_Ret) { setModuleType(INTERNAL_MODULE, moduleType); } - } - else if (isModuleXJT(INTERNAL_MODULE)) { - g_model.moduleData[INTERNAL_MODULE].subType = checkIncDec(event, g_model.moduleData[INTERNAL_MODULE].subType, 0, MODULE_SUBTYPE_PXX1_LAST, EE_MODEL, isRfProtocolAvailable); + } else if (isModuleXJT(INTERNAL_MODULE)) { + g_model.moduleData[INTERNAL_MODULE].subType = checkIncDec( + event, g_model.moduleData[INTERNAL_MODULE].subType, 0, + MODULE_SUBTYPE_PXX1_LAST, EE_MODEL, isRfProtocolAvailable); if (checkIncDec_Ret) { - g_model.moduleData[0].type = MODULE_TYPE_XJT_PXX1; - g_model.moduleData[0].channelsStart = 0; - g_model.moduleData[0].channelsCount = defaultModuleChannels_M8(INTERNAL_MODULE); + g_model.moduleData[INTERNAL_MODULE].channelsStart = 0; + g_model.moduleData[INTERNAL_MODULE].channelsCount = + defaultModuleChannels_M8(INTERNAL_MODULE); } - } - else if (isModulePXX2(INTERNAL_MODULE)) { - g_model.moduleData[INTERNAL_MODULE].subType = checkIncDec(event, g_model.moduleData[INTERNAL_MODULE].subType, 0, MODULE_SUBTYPE_ISRM_PXX2_ACCST_D16, EE_MODEL, isRfProtocolAvailable); - } - } -#else - uint8_t index = 0; - if (g_model.moduleData[INTERNAL_MODULE].type == MODULE_TYPE_ISRM_PXX2) { - index = 1 + g_model.moduleData[INTERNAL_MODULE].subType; - } - lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_ISRM_RF_PROTOCOLS, index, attr); - if (attr) { - index = checkIncDec(event, index, 0, MODULE_SUBTYPE_ISRM_PXX2_ACCST_D16 + 1 /* because of --- */, EE_MODEL); - if (checkIncDec_Ret) { - memclear(&g_model.moduleData[INTERNAL_MODULE], sizeof(ModuleData)); - if (index > 0) { - g_model.moduleData[INTERNAL_MODULE].type = MODULE_TYPE_ISRM_PXX2; - g_model.moduleData[INTERNAL_MODULE].subType = index - 1; - g_model.moduleData[INTERNAL_MODULE].channelsCount = defaultModuleChannels_M8(INTERNAL_MODULE); + } else if (isModuleISRM(INTERNAL_MODULE)) { + g_model.moduleData[INTERNAL_MODULE].subType = + checkIncDec(event, g_model.moduleData[INTERNAL_MODULE].subType, + 0, MODULE_SUBTYPE_ISRM_PXX2_ACCST_D16, EE_MODEL, + isRfProtocolAvailable); + if (checkIncDec_Ret) { + g_model.moduleData[INTERNAL_MODULE].channelsStart = 0; + g_model.moduleData[INTERNAL_MODULE].channelsCount = + defaultModuleChannels_M8(INTERNAL_MODULE); } } } -#endif break; } @@ -968,7 +964,7 @@ void menuModelSetup(event_t event) lcdDrawTextAlignedLeft(y, INDENT TR_MODE); lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_EXTERNAL_MODULE_PROTOCOLS, reusableBuffer.moduleSetup.newType, menuHorizontalPosition==0 ? attr : 0); if (isModuleXJT(EXTERNAL_MODULE)) - lcdDrawTextAtIndex(lcdNextPos + 3, y, STR_XJT_ACCST_RF_PROTOCOLS, 1+g_model.moduleData[EXTERNAL_MODULE].subType, menuHorizontalPosition==1 ? attr : 0); + lcdDrawTextAtIndex(lcdNextPos + 3, y, STR_XJT_ACCST_RF_PROTOCOLS, g_model.moduleData[EXTERNAL_MODULE].subType, menuHorizontalPosition==1 ? attr : 0); else if (isModuleDSM2(EXTERNAL_MODULE)) lcdDrawTextAtIndex(lcdNextPos + 3, y, STR_DSM_PROTOCOLS, g_model.moduleData[EXTERNAL_MODULE].subType, menuHorizontalPosition==1 ? attr : 0); else if (isModuleR9MNonAccess(EXTERNAL_MODULE)) diff --git a/radio/src/gui/colorlcd/module_setup.cpp b/radio/src/gui/colorlcd/module_setup.cpp index fb3ca90ec..6a8fc6db9 100644 --- a/radio/src/gui/colorlcd/module_setup.cpp +++ b/radio/src/gui/colorlcd/module_setup.cpp @@ -468,8 +468,7 @@ void ModuleSubTypeChoice::update() ModuleData* md = &g_model.moduleData[moduleIdx]; if (isModuleXJT(moduleIdx)) { - - setMin(MODULE_SUBTYPE_PXX1_OFF); + setMin(MODULE_SUBTYPE_PXX1_ACCST_D16); setMax(MODULE_SUBTYPE_PXX1_LAST); setValues(STR_XJT_ACCST_RF_PROTOCOLS); setGetValueHandler(GET_DEFAULT(md->subType)); @@ -479,8 +478,7 @@ void ModuleSubTypeChoice::update() md->channelsCount = defaultModuleChannels_M8(moduleIdx); SET_DIRTY(); }); - setAvailableHandler( - [](int index) { return index != MODULE_SUBTYPE_PXX1_OFF; }); + setAvailableHandler(nullptr); } else if (isModuleDSM2(moduleIdx)) { setMin(DSM2_PROTO_LP45); diff --git a/radio/src/translations/untranslated.h b/radio/src/translations/untranslated.h index 23869374f..f8bcd87fa 100644 --- a/radio/src/translations/untranslated.h +++ b/radio/src/translations/untranslated.h @@ -142,12 +142,8 @@ #define TR_INTERNAL_MODULE_PROTOCOLS TR_EXTERNAL_MODULE_PROTOCOLS #define TR_FLYSKY_PROTOCOLS "AFHDS3","AFHDS2A" -#define TR_XJT_ACCST_RF_PROTOCOLS "OFF","D16","D8","LR12" -#if defined(COLORLCD) +#define TR_XJT_ACCST_RF_PROTOCOLS "D16","D8","LR12" #define TR_ISRM_RF_PROTOCOLS "ACCESS","D16","LR12" -#else -#define TR_ISRM_RF_PROTOCOLS "OFF","ACCESS","D16","LR12" -#endif #define TR_R9M_PXX2_RF_PROTOCOLS "ACCESS","FCC","EU","Flex" #define TR_SPORT_MODES "S.PORT","F.PORT","FBUS(FPORT2)" #define TR_R9M_REGION "FCC","EU","868MHz","915MHz"