diff --git a/companion/src/modeledit/setup_module.ui b/companion/src/modeledit/setup_module.ui index 4e94e0424..2f6426870 100644 --- a/companion/src/modeledit/setup_module.ui +++ b/companion/src/modeledit/setup_module.ui @@ -768,7 +768,7 @@ - WARNING: Requires non-certified R9M firmware! + WARNING: Requires non-certified firmware! diff --git a/companion/src/translations/companion_fr.ts b/companion/src/translations/companion_fr.ts index 026419b09..46c62cf12 100644 --- a/companion/src/translations/companion_fr.ts +++ b/companion/src/translations/companion_fr.ts @@ -8696,8 +8696,8 @@ Mixage actif par défaut si non-renseigné. - WARNING: Requires non-certified R9M firmware! - ATTENTION: Nécessite un firmware R9M non certifié! + WARNING: Requires non-certified firmware! + ATTENTION: Nécessite un firmware non certifié! diff --git a/companion/src/translations/companion_ja.ts b/companion/src/translations/companion_ja.ts index 22ad93af4..98ba35c33 100644 --- a/companion/src/translations/companion_ja.ts +++ b/companion/src/translations/companion_ja.ts @@ -8650,7 +8650,7 @@ If blank then the mix is considered to be "ON" all the time. - WARNING: Requires non-certified R9M firmware! + WARNING: Requires non-certified firmware! 警告: 未認定のR9Mファームウェアが必要です! diff --git a/radio/src/gui/128x64/model_setup.cpp b/radio/src/gui/128x64/model_setup.cpp index e9b4614d7..c257080ca 100644 --- a/radio/src/gui/128x64/model_setup.cpp +++ b/radio/src/gui/128x64/model_setup.cpp @@ -754,7 +754,7 @@ void menuModelSetup(event_t event) #if defined(HARDWARE_INTERNAL_MODULE) case ITEM_MODEL_SETUP_INTERNAL_MODULE_LABEL: - lcdDrawTextAlignedLeft(y, TR_INTERNALRF); + lcdDrawTextAlignedLeft(y, STR_INTERNALRF); break; case ITEM_MODEL_SETUP_INTERNAL_MODULE_TYPE: @@ -817,7 +817,7 @@ void menuModelSetup(event_t event) #endif case ITEM_MODEL_SETUP_EXTERNAL_MODULE_LABEL: - lcdDrawTextAlignedLeft(y, TR_EXTERNALRF); + lcdDrawTextAlignedLeft(y, STR_EXTERNALRF); break; case ITEM_MODEL_SETUP_EXTERNAL_MODULE_TYPE: @@ -863,8 +863,9 @@ void menuModelSetup(event_t event) break; case 1: - if (isModuleDSM2(EXTERNAL_MODULE)) + if (isModuleDSM2(EXTERNAL_MODULE)) { CHECK_INCDEC_MODELVAR(event, g_model.moduleData[EXTERNAL_MODULE].rfProtocol, DSM2_PROTO_LP45, DSM2_PROTO_DSMX); + } else if (isModuleR9M(EXTERNAL_MODULE)) { g_model.moduleData[EXTERNAL_MODULE].subType = checkIncDec(event, g_model.moduleData[EXTERNAL_MODULE].subType, @@ -872,13 +873,6 @@ void menuModelSetup(event_t event) MODULE_SUBTYPE_R9M_LAST, EE_MODEL, isR9MModeAvailable); -#if defined(R9M_PROTO_FLEX) - if (g_model.moduleData[EXTERNAL_MODULE].subType > MODULE_SUBTYPE_R9M_EU && old_editMode && !s_editMode) { - POPUP_WARNING(STR_R9MFLEXWARN1); - const char *w = STR_R9MFLEXWARN2; - SET_WARNING_INFO(w, strlen(w), 0); - } -#endif } #if defined(MULTIMODULE) @@ -911,13 +905,21 @@ void menuModelSetup(event_t event) } } } - else { -#if defined(R9M_PROTO_FLEX) - if (isModuleR9M(EXTERNAL_MODULE) && g_model.moduleData[EXTERNAL_MODULE].subType > MODULE_SUBTYPE_R9M_EU && old_editMode) { - POPUP_WARNING(STR_R9MFLEXWARN1); - SET_WARNING_INFO(STR_R9MFLEXWARN2, sizeof(TR_R9MFLEXWARN2), 0); + else if (old_editMode > 0) { + if (isModuleR9M(EXTERNAL_MODULE)) { + if (g_model.moduleData[EXTERNAL_MODULE].subType > MODULE_SUBTYPE_R9M_EU) { + POPUP_WARNING(STR_R9M_PROTO_FLEX_WARN1); + SET_WARNING_INFO(STR_R9M_PROTO_WARN2, sizeof(TR_R9M_PROTO_WARN2), 0); + } + else if (g_model.moduleData[EXTERNAL_MODULE].subType == MODULE_SUBTYPE_R9M_EU) { + POPUP_WARNING(STR_R9M_PROTO_EU_WARN1); + SET_WARNING_INFO(STR_R9M_PROTO_WARN2, sizeof(TR_R9M_PROTO_WARN2), 0); + } + else { + POPUP_WARNING(STR_R9M_PROTO_FCC_WARN1); + SET_WARNING_INFO(STR_R9M_PROTO_WARN2, sizeof(TR_R9M_PROTO_WARN2), 0); + } } -#endif } } break; diff --git a/radio/src/gui/212x64/model_setup.cpp b/radio/src/gui/212x64/model_setup.cpp index dbf14846a..38b7cf864 100644 --- a/radio/src/gui/212x64/model_setup.cpp +++ b/radio/src/gui/212x64/model_setup.cpp @@ -274,7 +274,10 @@ void editTimerCountdown(int timerIdx, coord_t y, LcdFlags attr, event_t event) #define CURRENT_RECEIVER_EDITED(k) (k - (k >= ITEM_MODEL_SETUP_EXTERNAL_MODULE_LABEL ? ITEM_MODEL_SETUP_EXTERNAL_MODULE_PXX2_RECEIVER_1 : ITEM_MODEL_SETUP_INTERNAL_MODULE_PXX2_RECEIVER_1)) #include "common/stdlcd/model_setup_pxx1.cpp" + +#if defined(PXX2) #include "common/stdlcd/model_setup_pxx2.cpp" +#endif void menuModelSetup(event_t event) { @@ -715,7 +718,7 @@ void menuModelSetup(event_t event) break; case ITEM_MODEL_SETUP_INTERNAL_MODULE_LABEL: - lcdDrawTextAlignedLeft(y, TR_INTERNALRF); + lcdDrawTextAlignedLeft(y, STR_INTERNALRF); break; case ITEM_MODEL_SETUP_INTERNAL_MODULE_TYPE: @@ -785,18 +788,18 @@ void menuModelSetup(event_t event) break; case ITEM_MODEL_SETUP_EXTERNAL_MODULE_LABEL: - lcdDrawTextAlignedLeft(y, TR_EXTERNALRF); + lcdDrawTextAlignedLeft(y, STR_EXTERNALRF); break; case ITEM_MODEL_SETUP_EXTERNAL_MODULE_TYPE: lcdDrawTextAlignedLeft(y, STR_MODE); lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_EXTERNAL_MODULE_PROTOCOLS, g_model.moduleData[EXTERNAL_MODULE].type, menuHorizontalPosition==0 ? attr : 0); if (isModuleXJT(EXTERNAL_MODULE)) - lcdDrawTextAtIndex(MODEL_SETUP_3RD_COLUMN, y, STR_ACCST_RF_PROTOCOLS, 1+g_model.moduleData[EXTERNAL_MODULE].rfProtocol, menuHorizontalPosition==1 ? attr : 0); + lcdDrawTextAtIndex(lcdNextPos + 3, y, STR_ACCST_RF_PROTOCOLS, 1+g_model.moduleData[EXTERNAL_MODULE].rfProtocol, menuHorizontalPosition==1 ? attr : 0); else if (isModuleDSM2(EXTERNAL_MODULE)) - lcdDrawTextAtIndex(MODEL_SETUP_3RD_COLUMN, y, STR_DSM_PROTOCOLS, g_model.moduleData[EXTERNAL_MODULE].rfProtocol, menuHorizontalPosition==1 ? attr : 0); + lcdDrawTextAtIndex(lcdNextPos + 3, y, STR_DSM_PROTOCOLS, g_model.moduleData[EXTERNAL_MODULE].rfProtocol, menuHorizontalPosition==1 ? attr : 0); else if (isModuleR9M(EXTERNAL_MODULE)) - lcdDrawTextAtIndex(MODEL_SETUP_3RD_COLUMN, y, STR_R9M_REGION, g_model.moduleData[EXTERNAL_MODULE].subType, (menuHorizontalPosition==1 ? attr : 0)); + lcdDrawTextAtIndex(lcdNextPos + 3, y, STR_R9M_REGION, g_model.moduleData[EXTERNAL_MODULE].subType, (menuHorizontalPosition==1 ? attr : 0)); #if defined(MULTIMODULE) else if (isModuleMultimodule(EXTERNAL_MODULE)) { uint8_t multi_rfProto = g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(false); @@ -809,84 +812,104 @@ void menuModelSetup(event_t event) } else { lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN+5*FW, y, STR_MULTI_PROTOCOLS, multi_rfProto, menuHorizontalPosition==1 ? attr : 0); - const mm_protocol_definition *pdef = getMultiProtocolDefinition(multi_rfProto); - if (pdef->subTypeString != nullptr) + if (pdef->subTypeString != nullptr) { lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN+11*FW, y, pdef->subTypeString, g_model.moduleData[EXTERNAL_MODULE].subType, menuHorizontalPosition==2 ? attr : 0); + } } } #endif - if (attr && s_editMode>0) { - switch (menuHorizontalPosition) { - case 0: - g_model.moduleData[EXTERNAL_MODULE].type = checkIncDec(event, g_model.moduleData[EXTERNAL_MODULE].type, MODULE_TYPE_NONE, IS_TRAINER_EXTERNAL_MODULE() ? MODULE_TYPE_NONE : MODULE_TYPE_COUNT-1, EE_MODEL, isExternalModuleAvailable); - if (checkIncDec_Ret) { - g_model.moduleData[EXTERNAL_MODULE].rfProtocol = 0; - g_model.moduleData[EXTERNAL_MODULE].channelsStart = 0; - g_model.moduleData[EXTERNAL_MODULE].channelsCount = defaultModuleChannels_M8(EXTERNAL_MODULE); - if (isModuleSBUS(EXTERNAL_MODULE)) - g_model.moduleData[EXTERNAL_MODULE].sbus.refreshRate = -31; - if(isModulePPM(EXTERNAL_MODULE)) - SET_DEFAULT_PPM_FRAME_LENGTH(EXTERNAL_MODULE); - } - break; - case 1: - if (isModuleDSM2(EXTERNAL_MODULE)) - CHECK_INCDEC_MODELVAR(event, g_model.moduleData[EXTERNAL_MODULE].rfProtocol, DSM2_PROTO_LP45, DSM2_PROTO_DSMX); -#if defined(MULTIMODULE) - else if (isModuleMultimodule(EXTERNAL_MODULE)) { - int multiRfProto = g_model.moduleData[EXTERNAL_MODULE].multi.customProto == 1 ? MODULE_SUBTYPE_MULTI_CUSTOM : g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(false); - CHECK_INCDEC_MODELVAR(event, multiRfProto, MODULE_SUBTYPE_MULTI_FIRST, MODULE_SUBTYPE_MULTI_LAST); + if (attr) { + if (s_editMode > 0) { + switch (menuHorizontalPosition) { + case 0: + g_model.moduleData[EXTERNAL_MODULE].type = checkIncDec(event, g_model.moduleData[EXTERNAL_MODULE].type, MODULE_TYPE_NONE, + IS_TRAINER_EXTERNAL_MODULE() ? MODULE_TYPE_NONE : MODULE_TYPE_COUNT - 1, EE_MODEL, + isExternalModuleAvailable); if (checkIncDec_Ret) { - g_model.moduleData[EXTERNAL_MODULE].multi.customProto = (multiRfProto == MODULE_SUBTYPE_MULTI_CUSTOM); - if (!g_model.moduleData[EXTERNAL_MODULE].multi.customProto) - g_model.moduleData[EXTERNAL_MODULE].setMultiProtocol(multiRfProto); - g_model.moduleData[EXTERNAL_MODULE].subType = 0; - // Sensible default for DSM2 (same as for ppm): 7ch@22ms + Autodetect settings enabled - if (g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(true) == MODULE_SUBTYPE_MULTI_DSM2) { - g_model.moduleData[EXTERNAL_MODULE].multi.autoBindMode = 1; - } - else { - g_model.moduleData[EXTERNAL_MODULE].multi.autoBindMode = 0; - } - g_model.moduleData[EXTERNAL_MODULE].multi.optionValue = 0; + g_model.moduleData[EXTERNAL_MODULE].rfProtocol = 0; + g_model.moduleData[EXTERNAL_MODULE].channelsStart = 0; + g_model.moduleData[EXTERNAL_MODULE].channelsCount = defaultModuleChannels_M8(EXTERNAL_MODULE); + if (isModuleSBUS(EXTERNAL_MODULE)) + g_model.moduleData[EXTERNAL_MODULE].sbus.refreshRate = -31; + if (isModulePPM(EXTERNAL_MODULE)) + SET_DEFAULT_PPM_FRAME_LENGTH(EXTERNAL_MODULE); } - } -#endif - else if (isModuleR9M(EXTERNAL_MODULE)) { - uint8_t newR9MType = checkIncDec(event, g_model.moduleData[EXTERNAL_MODULE].subType, MODULE_SUBTYPE_R9M_FCC, MODULE_SUBTYPE_R9M_LAST, EE_MODEL, isR9MModeAvailable); - if (newR9MType != g_model.moduleData[EXTERNAL_MODULE].subType && newR9MType > MODULE_SUBTYPE_R9M_EU) { - POPUP_WARNING(STR_R9MFLEXWARN1); - const char * w = STR_R9MFLEXWARN2; - SET_WARNING_INFO(w, strlen(w), 0); - } - g_model.moduleData[EXTERNAL_MODULE].subType = newR9MType; - } - else { - g_model.moduleData[EXTERNAL_MODULE].rfProtocol = checkIncDec(event, g_model.moduleData[EXTERNAL_MODULE].rfProtocol, MODULE_SUBTYPE_PXX1_ACCST_D16, MODULE_SUBTYPE_PXX1_LAST, EE_MODEL, isRfProtocolAvailable); - } - if (checkIncDec_Ret) { - g_model.moduleData[EXTERNAL_MODULE].channelsStart = 0; - g_model.moduleData[EXTERNAL_MODULE].channelsCount = defaultModuleChannels_M8(EXTERNAL_MODULE); - } - break; -#if defined(MULTIMODULE) - case 2: - if (g_model.moduleData[EXTERNAL_MODULE].multi.customProto) { - g_model.moduleData[EXTERNAL_MODULE].setMultiProtocol(checkIncDec(event, g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(false), 0, 63, EE_MODEL)); break; + case 1: + if (isModuleDSM2(EXTERNAL_MODULE)) + CHECK_INCDEC_MODELVAR(event, g_model.moduleData[EXTERNAL_MODULE].rfProtocol, DSM2_PROTO_LP45, DSM2_PROTO_DSMX); +#if defined(MULTIMODULE) + else if (isModuleMultimodule(EXTERNAL_MODULE)) { + int multiRfProto = g_model.moduleData[EXTERNAL_MODULE].multi.customProto == 1 ? MODULE_SUBTYPE_MULTI_CUSTOM : g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(false); + CHECK_INCDEC_MODELVAR(event, multiRfProto, MODULE_SUBTYPE_MULTI_FIRST, MODULE_SUBTYPE_MULTI_LAST); + if (checkIncDec_Ret) { + g_model.moduleData[EXTERNAL_MODULE].multi.customProto = (multiRfProto == MODULE_SUBTYPE_MULTI_CUSTOM); + if (!g_model.moduleData[EXTERNAL_MODULE].multi.customProto) + g_model.moduleData[EXTERNAL_MODULE].setMultiProtocol(multiRfProto); + g_model.moduleData[EXTERNAL_MODULE].subType = 0; + // Sensible default for DSM2 (same as for ppm): 7ch@22ms + Autodetect settings enabled + if (g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(true) == MODULE_SUBTYPE_MULTI_DSM2) { + g_model.moduleData[EXTERNAL_MODULE].multi.autoBindMode = 1; + } + else { + g_model.moduleData[EXTERNAL_MODULE].multi.autoBindMode = 0; + } + g_model.moduleData[EXTERNAL_MODULE].multi.optionValue = 0; + } + } +#endif + else if (isModuleR9M(EXTERNAL_MODULE)) { + g_model.moduleData[EXTERNAL_MODULE].subType = checkIncDec(event, g_model.moduleData[EXTERNAL_MODULE].subType, + MODULE_SUBTYPE_R9M_FCC, MODULE_SUBTYPE_R9M_LAST, EE_MODEL, + isR9MModeAvailable); + } + else { + g_model.moduleData[EXTERNAL_MODULE].rfProtocol = checkIncDec(event, g_model.moduleData[EXTERNAL_MODULE].rfProtocol, + MODULE_SUBTYPE_PXX1_ACCST_D16, MODULE_SUBTYPE_PXX1_LAST, EE_MODEL, + isRfProtocolAvailable); + } + if (checkIncDec_Ret) { + g_model.moduleData[EXTERNAL_MODULE].channelsStart = 0; + g_model.moduleData[EXTERNAL_MODULE].channelsCount = defaultModuleChannels_M8(EXTERNAL_MODULE); + } + break; + +#if defined(MULTIMODULE) + case 2: + if (g_model.moduleData[EXTERNAL_MODULE].multi.customProto) { + g_model.moduleData[EXTERNAL_MODULE].setMultiProtocol(checkIncDec(event, g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(false), 0, 63, EE_MODEL)); + break; + } + else { + const mm_protocol_definition * pdef = getMultiProtocolDefinition(g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(false)); + if (pdef->maxSubtype > 0) + CHECK_INCDEC_MODELVAR(event, g_model.moduleData[EXTERNAL_MODULE].subType, 0, pdef->maxSubtype); + } + break; + + case 3: + // Custom protocol, third column is subtype + CHECK_INCDEC_MODELVAR(event, g_model.moduleData[EXTERNAL_MODULE].subType, 0, 7); + break; +#endif + } + } + else if (old_editMode > 0) { + if (isModuleR9M(EXTERNAL_MODULE)) { + if (g_model.moduleData[EXTERNAL_MODULE].subType > MODULE_SUBTYPE_R9M_EU) { + POPUP_WARNING(STR_R9M_PROTO_FLEX_WARN1); + SET_WARNING_INFO(STR_R9M_PROTO_WARN2, sizeof(TR_R9M_PROTO_WARN2), 0); + } + else if (g_model.moduleData[EXTERNAL_MODULE].subType == MODULE_SUBTYPE_R9M_EU) { + POPUP_WARNING(STR_R9M_PROTO_EU_WARN1); + SET_WARNING_INFO(STR_R9M_PROTO_WARN2, sizeof(TR_R9M_PROTO_WARN2), 0); } else { - const mm_protocol_definition * pdef = getMultiProtocolDefinition(g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(false)); - if (pdef->maxSubtype > 0) - CHECK_INCDEC_MODELVAR(event, g_model.moduleData[EXTERNAL_MODULE].subType, 0, pdef->maxSubtype); + POPUP_WARNING(STR_R9M_PROTO_FCC_WARN1); + SET_WARNING_INFO(STR_R9M_PROTO_WARN2, sizeof(TR_R9M_PROTO_WARN2), 0); } - break; - case 3: - // Custom protocol, third column is subtype - CHECK_INCDEC_MODELVAR(event, g_model.moduleData[EXTERNAL_MODULE].subType, 0, 7); - break; -#endif + } } } break; diff --git a/radio/src/gui/480x272/model_setup.cpp b/radio/src/gui/480x272/model_setup.cpp index e27981289..a55c7d9a7 100644 --- a/radio/src/gui/480x272/model_setup.cpp +++ b/radio/src/gui/480x272/model_setup.cpp @@ -642,7 +642,7 @@ bool menuModelSetup(event_t event) break; case ITEM_MODEL_INTERNAL_MODULE_LABEL: - lcdDrawText(MENUS_MARGIN_LEFT, y, TR_INTERNALRF); + lcdDrawText(MENUS_MARGIN_LEFT, y, STR_INTERNALRF); break; case ITEM_MODEL_INTERNAL_MODULE_MODE: @@ -685,7 +685,7 @@ bool menuModelSetup(event_t event) break; case ITEM_MODEL_EXTERNAL_MODULE_LABEL: - lcdDrawText(MENUS_MARGIN_LEFT, y, TR_EXTERNALRF); + lcdDrawText(MENUS_MARGIN_LEFT, y, STR_EXTERNALRF); break; case ITEM_MODEL_EXTERNAL_MODULE_MODE: @@ -713,78 +713,75 @@ bool menuModelSetup(event_t event) } } #endif - if (attr && s_editMode>0) { - switch (menuHorizontalPosition) { - case 0: - g_model.moduleData[EXTERNAL_MODULE].type = checkIncDec(event, g_model.moduleData[EXTERNAL_MODULE].type, - MODULE_TYPE_NONE, MODULE_TYPE_COUNT - 1, EE_MODEL, - isExternalModuleAvailable); - if (checkIncDec_Ret) { - g_model.moduleData[EXTERNAL_MODULE].rfProtocol = 0; - g_model.moduleData[EXTERNAL_MODULE].channelsStart = 0; - g_model.moduleData[EXTERNAL_MODULE].channelsCount = defaultModuleChannels_M8(EXTERNAL_MODULE); - if (isModuleSBUS(EXTERNAL_MODULE)) - g_model.moduleData[EXTERNAL_MODULE].sbus.refreshRate = -31; - if (isModulePPM(EXTERNAL_MODULE)) - SET_DEFAULT_PPM_FRAME_LENGTH(EXTERNAL_MODULE); - } - break; - case 1: - if (isModuleDSM2(EXTERNAL_MODULE)) - CHECK_INCDEC_MODELVAR(event, g_model.moduleData[EXTERNAL_MODULE].rfProtocol, DSM2_PROTO_LP45, DSM2_PROTO_DSMX); -#if defined(MULTIMODULE) - else if (isModuleMultimodule(EXTERNAL_MODULE)) { - int multiRfProto = g_model.moduleData[EXTERNAL_MODULE].multi.customProto == 1 ? MM_RF_PROTO_CUSTOM : g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(false); - CHECK_INCDEC_MODELVAR(event, multiRfProto, MM_RF_PROTO_FIRST, MM_RF_PROTO_LAST); + if (attr) { + if (s_editMode > 0) { + switch (menuHorizontalPosition) { + case 0: + g_model.moduleData[EXTERNAL_MODULE].type = checkIncDec(event, g_model.moduleData[EXTERNAL_MODULE].type, + MODULE_TYPE_NONE, MODULE_TYPE_COUNT - 1, EE_MODEL, + isExternalModuleAvailable); if (checkIncDec_Ret) { - g_model.moduleData[EXTERNAL_MODULE].multi.customProto = (multiRfProto == MM_RF_PROTO_CUSTOM); - if (!g_model.moduleData[EXTERNAL_MODULE].multi.customProto) - g_model.moduleData[EXTERNAL_MODULE].setMultiProtocol(multiRfProto); - g_model.moduleData[EXTERNAL_MODULE].subType = 0; - // Sensible default for DSM2 (same as for ppm): 7ch@22ms + Autodetect settings enabled - if (g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(true) == MM_RF_PROTO_DSM2) { - g_model.moduleData[EXTERNAL_MODULE].multi.autoBindMode = 1; - } - else { - g_model.moduleData[EXTERNAL_MODULE].multi.autoBindMode = 0; - } - g_model.moduleData[EXTERNAL_MODULE].multi.optionValue = 0; + g_model.moduleData[EXTERNAL_MODULE].rfProtocol = 0; + g_model.moduleData[EXTERNAL_MODULE].channelsStart = 0; + g_model.moduleData[EXTERNAL_MODULE].channelsCount = defaultModuleChannels_M8(EXTERNAL_MODULE); + if (isModuleSBUS(EXTERNAL_MODULE)) + g_model.moduleData[EXTERNAL_MODULE].sbus.refreshRate = -31; + if (isModulePPM(EXTERNAL_MODULE)) + SET_DEFAULT_PPM_FRAME_LENGTH(EXTERNAL_MODULE); } - } -#endif - else if (isModuleR9M(EXTERNAL_MODULE)) { - uint8_t newR9MType = checkIncDec(event, g_model.moduleData[EXTERNAL_MODULE].subType, MODULE_SUBTYPE_R9M_FCC, MODULE_SUBTYPE_R9M_LAST, EE_MODEL, isR9MModeAvailable); - if (newR9MType != g_model.moduleData[EXTERNAL_MODULE].subType && newR9MType > MODULE_SUBTYPE_R9M_EU) { - POPUP_WARNING(STR_R9MFLEXWARN1); - const char * w = STR_R9MFLEXWARN2; - SET_WARNING_INFO(w, strlen(w), 0); - } - g_model.moduleData[EXTERNAL_MODULE].subType = newR9MType; - } - else { - CHECK_INCDEC_MODELVAR(event, g_model.moduleData[EXTERNAL_MODULE].rfProtocol, MODULE_SUBTYPE_PXX1_ACCST_D16, MODULE_SUBTYPE_PXX1_LAST); - } - if (checkIncDec_Ret) { - g_model.moduleData[EXTERNAL_MODULE].channelsStart = 0; - g_model.moduleData[EXTERNAL_MODULE].channelsCount = defaultModuleChannels_M8(EXTERNAL_MODULE); - } - break; -#if defined(MULTIMODULE) - case 2: - if (g_model.moduleData[EXTERNAL_MODULE].multi.customProto) { - g_model.moduleData[EXTERNAL_MODULE].setMultiProtocol(checkIncDec(event, g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(false), 0, 63, EE_MODEL)); break; - } else { - const mm_protocol_definition *pdef = getMultiProtocolDefinition(g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(false)); - if (pdef->maxSubtype > 0) - CHECK_INCDEC_MODELVAR(event, g_model.moduleData[EXTERNAL_MODULE].subType, 0, pdef->maxSubtype); - } - break; - case 3: - // Custom protocol, third column is subtype - CHECK_INCDEC_MODELVAR(event, g_model.moduleData[EXTERNAL_MODULE].subType, 0, 7); - break; + case 1: + if (isModuleDSM2(EXTERNAL_MODULE)) + CHECK_INCDEC_MODELVAR(event, g_model.moduleData[EXTERNAL_MODULE].rfProtocol, DSM2_PROTO_LP45, DSM2_PROTO_DSMX); +#if defined(MULTIMODULE) + else if (isModuleMultimodule(EXTERNAL_MODULE)) { + int multiRfProto = g_model.moduleData[EXTERNAL_MODULE].multi.customProto == 1 ? MM_RF_PROTO_CUSTOM : g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(false); + CHECK_INCDEC_MODELVAR(event, multiRfProto, MM_RF_PROTO_FIRST, MM_RF_PROTO_LAST); + if (checkIncDec_Ret) { + g_model.moduleData[EXTERNAL_MODULE].multi.customProto = (multiRfProto == MM_RF_PROTO_CUSTOM); + if (!g_model.moduleData[EXTERNAL_MODULE].multi.customProto) + g_model.moduleData[EXTERNAL_MODULE].setMultiProtocol(multiRfProto); + g_model.moduleData[EXTERNAL_MODULE].subType = 0; + // Sensible default for DSM2 (same as for ppm): 7ch@22ms + Autodetect settings enabled + if (g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(true) == MM_RF_PROTO_DSM2) { + g_model.moduleData[EXTERNAL_MODULE].multi.autoBindMode = 1; + } + else { + g_model.moduleData[EXTERNAL_MODULE].multi.autoBindMode = 0; + } + g_model.moduleData[EXTERNAL_MODULE].multi.optionValue = 0; + } + } #endif + else if (isModuleR9M(EXTERNAL_MODULE)) { + g_model.moduleData[EXTERNAL_MODULE].subType = checkIncDec(event, g_model.moduleData[EXTERNAL_MODULE].subType, MODULE_SUBTYPE_R9M_FCC, + MODULE_SUBTYPE_R9M_LAST, EE_MODEL, isR9MModeAvailable); + } + else { + CHECK_INCDEC_MODELVAR(event, g_model.moduleData[EXTERNAL_MODULE].rfProtocol, MODULE_SUBTYPE_PXX1_ACCST_D16, MODULE_SUBTYPE_PXX1_LAST); + } + if (checkIncDec_Ret) { + g_model.moduleData[EXTERNAL_MODULE].channelsStart = 0; + g_model.moduleData[EXTERNAL_MODULE].channelsCount = defaultModuleChannels_M8(EXTERNAL_MODULE); + } + break; +#if defined(MULTIMODULE) + case 2: + if (g_model.moduleData[EXTERNAL_MODULE].multi.customProto) { + g_model.moduleData[EXTERNAL_MODULE].setMultiProtocol(checkIncDec(event, g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(false), 0, 63, EE_MODEL)); + break; + } else { + const mm_protocol_definition *pdef = getMultiProtocolDefinition(g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(false)); + if (pdef->maxSubtype > 0) + CHECK_INCDEC_MODELVAR(event, g_model.moduleData[EXTERNAL_MODULE].subType, 0, pdef->maxSubtype); + } + break; + case 3: + // Custom protocol, third column is subtype + CHECK_INCDEC_MODELVAR(event, g_model.moduleData[EXTERNAL_MODULE].subType, 0, 7); + break; +#endif + } } } break; diff --git a/radio/src/gui/gui_common.cpp b/radio/src/gui/gui_common.cpp index 6e9185a70..0d9aebd2c 100644 --- a/radio/src/gui/gui_common.cpp +++ b/radio/src/gui/gui_common.cpp @@ -547,7 +547,7 @@ bool isPxx2IsrmChannelsCountAllowed(int channels) } #endif -bool isModuleUSingSport(uint8_t moduleBay, uint8_t moduleType) +bool isModuleUsingSport(uint8_t moduleBay, uint8_t moduleType) { switch(moduleType) { case MODULE_TYPE_NONE: @@ -555,18 +555,15 @@ bool isModuleUSingSport(uint8_t moduleBay, uint8_t moduleType) case MODULE_TYPE_PPM: case MODULE_TYPE_DSM2: case MODULE_TYPE_MULTIMODULE: + case MODULE_TYPE_ISRM_PXX2: case MODULE_TYPE_R9M_LITE_PXX2: case MODULE_TYPE_R9M_LITE_PRO_PXX2: return false; - case MODULE_TYPE_ISRM_PXX2: + case MODULE_TYPE_XJT_PXX1: if (moduleBay == EXTERNAL_MODULE) return false; -#if defined(INTMODULE_USART) - return false; -#endif - default: return true; } @@ -580,7 +577,7 @@ bool isInternalModuleAvailable(int moduleType) #if defined(PXX1) && defined(INTERNAL_MODULE_PXX1) if (moduleType == MODULE_TYPE_XJT_PXX1) - return !isModuleUSingSport(EXTERNAL_MODULE, g_model.moduleData[EXTERNAL_MODULE].type); + return !isModuleUsingSport(EXTERNAL_MODULE, g_model.moduleData[EXTERNAL_MODULE].type); #else if (moduleType == MODULE_TYPE_XJT_PXX1) return false; @@ -591,7 +588,7 @@ bool isInternalModuleAvailable(int moduleType) #if defined(INTMODULE_USART) return true; #else - return (!isModuleUSingSport(EXTERNAL_MODULE, g_model.moduleData[EXTERNAL_MODULE].type)); + return (!isModuleUsingSport(EXTERNAL_MODULE, g_model.moduleData[EXTERNAL_MODULE].type)); #endif #endif @@ -601,7 +598,7 @@ bool isInternalModuleAvailable(int moduleType) bool isExternalModuleAvailable(int moduleType) { -#if !defined(PCBXLITE) && !defined(PCBX9LITE) +#if !defined(HARDWARE_EXTERNAL_MODULE_SIZE_SML) if (moduleType == MODULE_TYPE_R9M_LITE_PXX1 || moduleType == MODULE_TYPE_R9M_LITE_PXX2 || moduleType == MODULE_TYPE_R9M_LITE_PRO_PXX2) return false; #endif @@ -651,7 +648,7 @@ bool isExternalModuleAvailable(int moduleType) #endif #if defined(HARDWARE_INTERNAL_MODULE) - if (isModuleUSingSport(EXTERNAL_MODULE, moduleType) && isModuleUSingSport(INTERNAL_MODULE, g_model.moduleData[INTERNAL_MODULE].type)) + if (isModuleUsingSport(EXTERNAL_MODULE, moduleType) && isModuleUsingSport(INTERNAL_MODULE, g_model.moduleData[INTERNAL_MODULE].type)) return false; #endif diff --git a/radio/src/targets/taranis/hal.h b/radio/src/targets/taranis/hal.h index 1886a8a24..c2a5f1f3b 100644 --- a/radio/src/targets/taranis/hal.h +++ b/radio/src/targets/taranis/hal.h @@ -918,6 +918,7 @@ #define EXTMODULE_PULSES #if defined(PCBXLITE) || defined(PCBX9LITE) + #define HARDWARE_EXTERNAL_MODULE_SIZE_SML #define EXTMODULE_RCC_APB2Periph (RCC_APB2Periph_TIM8 | RCC_APB2Periph_USART6) #if defined(PCBX9LITE) #define EXTMODULE_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_DMA2) diff --git a/radio/src/translations.cpp b/radio/src/translations.cpp index 025540084..22538aed5 100644 --- a/radio/src/translations.cpp +++ b/radio/src/translations.cpp @@ -254,6 +254,8 @@ const char STR_MONITOR_SWITCHES[] = TR_MONITOR_SWITCHES; const char STR_MONITOR_OUTPUT_DESC[] = TR_MONITOR_OUTPUT_DESC; const char STR_MONITOR_MIXER_DESC[] = TR_MONITOR_MIXER_DESC; const char STR_MENUGLOBALVARS[] = TR_MENUGLOBALVARS; +const char STR_INTERNALRF[] = TR_INTERNALRF; +const char STR_EXTERNALRF[] = TR_EXTERNALRF; const char STR_MODULE_TELEMETRY[] = TR_MODULE_TELEMETRY; const char STR_MODULE_TELEM_ON[] = TR_MODULE_TELEM_ON; const char STR_COUNTRYCODE[] = TR_COUNTRYCODE; @@ -463,8 +465,10 @@ const char STR_CHANNELRANGE[] = TR_CHANNELRANGE; const char STR_ANTENNASELECTION[] = TR_ANTENNASELECTION; const char STR_ANTENNACONFIRM1[] = TR_ANTENNACONFIRM1; const char STR_ANTENNACONFIRM2[] = TR_ANTENNACONFIRM2; -const char STR_R9MFLEXWARN1[] = TR_R9MFLEXWARN1; -const char STR_R9MFLEXWARN2[] = TR_R9MFLEXWARN2; +const char STR_R9M_PROTO_FLEX_WARN1[] = TR_R9M_PROTO_FLEX_WARN1; +const char STR_R9M_PROTO_FCC_WARN1[] = TR_R9M_PROTO_FCC_WARN1; +const char STR_R9M_PROTO_EU_WARN1[] = TR_R9M_PROTO_EU_WARN1; +const char STR_R9M_PROTO_WARN2[] = TR_R9M_PROTO_WARN2; const char STR_SET[] = TR_SET; const char STR_PREFLIGHT[] = TR_PREFLIGHT; const char STR_CHECKLIST[] = TR_CHECKLIST; diff --git a/radio/src/translations.h b/radio/src/translations.h index 9623fdb15..8deb7fdca 100644 --- a/radio/src/translations.h +++ b/radio/src/translations.h @@ -414,6 +414,8 @@ extern const char STR_REG_OK[]; extern const char STR_BIND_OK[]; #endif +extern const char STR_INTERNALRF[]; +extern const char STR_EXTERNALRF[]; extern const char STR_MODULE_TELEMETRY[]; extern const char STR_MODULE_TELEM_ON[]; extern const char STR_FAILSAFE[]; @@ -721,8 +723,10 @@ extern const char STR_CHANNELRANGE[]; extern const char STR_ANTENNASELECTION[]; extern const char STR_ANTENNACONFIRM1[]; extern const char STR_ANTENNACONFIRM2[]; -extern const char STR_R9MFLEXWARN1[]; -extern const char STR_R9MFLEXWARN2[]; +extern const char STR_R9M_PROTO_FLEX_WARN1[]; +extern const char STR_R9M_PROTO_FCC_WARN1[]; +extern const char STR_R9M_PROTO_EU_WARN1[]; +extern const char STR_R9M_PROTO_WARN2[]; extern const char STR_SET[]; extern const char STR_PREFLIGHT[]; extern const char STR_CHECKLIST[]; diff --git a/radio/src/translations/cz.h.txt b/radio/src/translations/cz.h.txt index 1592fcbe7..c65c9dd2d 100644 --- a/radio/src/translations/cz.h.txt +++ b/radio/src/translations/cz.h.txt @@ -984,8 +984,10 @@ #define TR_ANTENNASELECTION TR(INDENT "Antenna", INDENT "Volba antény") #define TR_ANTENNACONFIRM1 "Opravdu přepnout?" #define TR_ANTENNACONFIRM2 TR("Zkont. anténu", "Ujisti se že je anténa připojena!") -#define TR_R9MFLEXWARN1 "Potřebuje" -#define TR_R9MFLEXWARN2 "necertifikovaný R9M firm." +#define TR_R9M_PROTO_FLEX_WARN1 "Potřebuje" +#define TR_R9M_PROTO_FCC_WARN1 "Requires FCC" +#define TR_R9M_PROTO_EU_WARN1 "Requires EU" +#define TR_R9M_PROTO_WARN2 "necertifikovaný R9M firm." #define TR_LOWALARM INDENT "Nízký Alarm" #define TR_CRITICALALARM INDENT "Kritický Alarm" #define TR_RSSIALARM_WARN TR("RSSI","RSSI TELEMETRIE") diff --git a/radio/src/translations/de.h.txt b/radio/src/translations/de.h.txt index a16e3fbd3..17c74b2be 100644 --- a/radio/src/translations/de.h.txt +++ b/radio/src/translations/de.h.txt @@ -991,8 +991,10 @@ #define TR_ANTENNASELECTION TR(INDENT "Antenna", INDENT "Antenne auswählen") #define TR_ANTENNACONFIRM1 "Ant. umschalten" #define TR_ANTENNACONFIRM2 TR("Check antenna", "Ist eine externe Antenne installiert?") -#define TR_R9MFLEXWARN1 "Requires non" -#define TR_R9MFLEXWARN2 "certified R9M firm." +#define TR_R9M_PROTO_FLEX_WARN1 "Requires non" +#define TR_R9M_PROTO_FCC_WARN1 "Requires FCC" +#define TR_R9M_PROTO_EU_WARN1 "Requires EU" +#define TR_R9M_PROTO_WARN2 "certified firmware" #define TR_LOWALARM INDENT "Warnungsschwelle" #define TR_CRITICALALARM INDENT "Kritischer Alarm" #define TR_RSSIALARM_WARN "Telemetry" diff --git a/radio/src/translations/en.h.txt b/radio/src/translations/en.h.txt index 705fa5295..97c65e9da 100644 --- a/radio/src/translations/en.h.txt +++ b/radio/src/translations/en.h.txt @@ -990,8 +990,10 @@ #define TR_ANTENNASELECTION TR(INDENT "Antenna", TR(INDENT "Antenna", INDENT "Antenna selection")) #define TR_ANTENNACONFIRM1 "Really switch?" #define TR_ANTENNACONFIRM2 TR("Check antenna", "Make sure antenna is installed!") -#define TR_R9MFLEXWARN1 "Requires non" -#define TR_R9MFLEXWARN2 "certified R9M firm." +#define TR_R9M_PROTO_FLEX_WARN1 "Requires FLEX non" +#define TR_R9M_PROTO_FCC_WARN1 "Requires FCC" +#define TR_R9M_PROTO_EU_WARN1 "Requires EU" +#define TR_R9M_PROTO_WARN2 "certified firmware" #define TR_LOWALARM INDENT "Low alarm" #define TR_CRITICALALARM INDENT "Critical alarm" #define TR_RSSIALARM_WARN "RSSI" diff --git a/radio/src/translations/es.h.txt b/radio/src/translations/es.h.txt index 74976e87e..d8deae264 100644 --- a/radio/src/translations/es.h.txt +++ b/radio/src/translations/es.h.txt @@ -1006,8 +1006,10 @@ #define TR_ANTENNASELECTION TR(INDENT "Antenna", TR(INDENT "Antenna", INDENT "Antenna selection")) #define TR_ANTENNACONFIRM1 "Really switch?" #define TR_ANTENNACONFIRM2 TR("Check antenna", "Make sure antenna is installed!") -#define TR_R9MFLEXWARN1 "Requires non" -#define TR_R9MFLEXWARN2 "certified R9M firm." +#define TR_R9M_PROTO_FLEX_WARN1 "Requires non" +#define TR_R9M_PROTO_FCC_WARN1 "Requires FCC" +#define TR_R9M_PROTO_EU_WARN1 "Requires EU" +#define TR_R9M_PROTO_WARN2 "certified firmware" #define TR_LOWALARM INDENT "Alarma baja" #define TR_CRITICALALARM INDENT "Alarma Critica" #define TR_RSSIALARM_WARN TR("RSSI","TELEMETRY RSSI") diff --git a/radio/src/translations/fi.h.txt b/radio/src/translations/fi.h.txt index 4a47288dc..197d8257a 100644 --- a/radio/src/translations/fi.h.txt +++ b/radio/src/translations/fi.h.txt @@ -999,8 +999,10 @@ #define TR_ANTENNASELECTION TR(INDENT "Antenna", TR(INDENT "Antenna", INDENT "Antenna selection")) #define TR_ANTENNACONFIRM1 "Really switch?" #define TR_ANTENNACONFIRM2 TR("Check antenna", "Make sure antenna is installed!") -#define TR_R9MFLEXWARN1 "Requires non" -#define TR_R9MFLEXWARN2 "certified R9M firm." +#define TR_R9M_PROTO_FLEX_WARN1 "Requires non" +#define TR_R9M_PROTO_FCC_WARN1 "Requires FCC" +#define TR_R9M_PROTO_EU_WARN1 "Requires EU" +#define TR_R9M_PROTO_WARN2 "certified firmware" #define TR_LOWALARM INDENT "Low Alarm" #define TR_CRITICALALARM INDENT "Critical Alarm" #define TR_RSSIALARM_WARN TR("RSSI","TELEMETRY RSSI") diff --git a/radio/src/translations/fr.h.txt b/radio/src/translations/fr.h.txt index bda1aa346..a85ddccad 100644 --- a/radio/src/translations/fr.h.txt +++ b/radio/src/translations/fr.h.txt @@ -1001,8 +1001,10 @@ #define TR_ANTENNASELECTION TR(INDENT "Antenne", INDENT "Choix antenne") #define TR_ANTENNACONFIRM1 "Vraiment changer?" #define TR_ANTENNACONFIRM2 TR("Vérif antenne", "Installer l'antenne d'abord!") -#define TR_R9MFLEXWARN1 "Nécessite firm." -#define TR_R9MFLEXWARN2 "R9M non certifié" +#define TR_R9M_PROTO_FLEX_WARN1 "Nécessite firm." +#define TR_R9M_PROTO_FCC_WARN1 "Requires FCC" +#define TR_R9M_PROTO_EU_WARN1 "Requires EU" +#define TR_R9M_PROTO_WARN2 "R9M non certifié" #define TR_LOWALARM INDENT "Alarme basse" #define TR_CRITICALALARM INDENT "Alarme critique" #define TR_RSSIALARM_WARN TR("RSSI", "TELEMETRIE") diff --git a/radio/src/translations/it.h.txt b/radio/src/translations/it.h.txt index a0f2852d6..cd3001368 100644 --- a/radio/src/translations/it.h.txt +++ b/radio/src/translations/it.h.txt @@ -1000,8 +1000,10 @@ #define TR_ANTENNASELECTION TR(INDENT "Antenna", INDENT "Antenna selection") #define TR_ANTENNACONFIRM1 "Really switch?" #define TR_ANTENNACONFIRM2 TR("Check antenna", "Make sure antenna is installed!") -#define TR_R9MFLEXWARN1 "Requires non" -#define TR_R9MFLEXWARN2 "certified R9M firm." +#define TR_R9M_PROTO_FLEX_WARN1 "Requires non" +#define TR_R9M_PROTO_FCC_WARN1 "Requires FCC" +#define TR_R9M_PROTO_EU_WARN1 "Requires EU" +#define TR_R9M_PROTO_WARN2 "certified firmware" #define TR_LOWALARM INDENT "Allarme Basso" #define TR_CRITICALALARM INDENT "Allarme Critico" #define TR_RSSIALARM_WARN TR("RSSI","TELEMETRY RSSI") diff --git a/radio/src/translations/nl.h.txt b/radio/src/translations/nl.h.txt index a13c66dcb..dd631c571 100644 --- a/radio/src/translations/nl.h.txt +++ b/radio/src/translations/nl.h.txt @@ -989,8 +989,10 @@ TR_GYR_VSRCRAW #define TR_ANTENNASELECTION TR(INDENT "Antenna", INDENT "Antenna selection") #define TR_ANTENNACONFIRM1 "Antennes wisselen?" #define TR_ANTENNACONFIRM2 TR("Check antenna", "Is er zeker een antenne geplaatst!") -#define TR_R9MFLEXWARN1 "Requires non" -#define TR_R9MFLEXWARN2 "certified R9M firm." +#define TR_R9M_PROTO_FLEX_WARN1 "Requires non" +#define TR_R9M_PROTO_FCC_WARN1 "Requires FCC" +#define TR_R9M_PROTO_EU_WARN1 "Requires EU" +#define TR_R9M_PROTO_WARN2 "certified firmware" #define TR_LOWALARM INDENT "Waarschuwing" #define TR_CRITICALALARM INDENT "Kritiek Alarm" #define TR_RSSIALARM_WARN TR("RSSI","TELEMETRY RSSI") diff --git a/radio/src/translations/pl.h.txt b/radio/src/translations/pl.h.txt index 3787db2f4..c7b886f4a 100644 --- a/radio/src/translations/pl.h.txt +++ b/radio/src/translations/pl.h.txt @@ -1000,8 +1000,10 @@ #define TR_ANTENNASELECTION TR(INDENT "Antenna", INDENT "Antenna selection") #define TR_ANTENNACONFIRM1 "Really switch?" #define TR_ANTENNACONFIRM2 TR("Check antenna", "Make sure antenna is installed!") -#define TR_R9MFLEXWARN1 "Requires non" -#define TR_R9MFLEXWARN2 "certified R9M firm." +#define TR_R9M_PROTO_FLEX_WARN1 "Requires non" +#define TR_R9M_PROTO_FCC_WARN1 "Requires FCC" +#define TR_R9M_PROTO_EU_WARN1 "Requires EU" +#define TR_R9M_PROTO_WARN2 "certified firmware" #define TR_LOWALARM INDENT "Alarm niski" #define TR_CRITICALALARM INDENT "Alarm krytyczny" #define TR_RSSIALARM_WARN TR("RSSI","TELEMETRY RSSI") diff --git a/radio/src/translations/pt.h.txt b/radio/src/translations/pt.h.txt index d4bf75507..89e6c0814 100644 --- a/radio/src/translations/pt.h.txt +++ b/radio/src/translations/pt.h.txt @@ -990,8 +990,10 @@ #define TR_ANTENNASELECTION TR(INDENT "Antenna", INDENT "Antenna selection") #define TR_ANTENNACONFIRM1 "Really switch?" #define TR_ANTENNACONFIRM2 TR("Check antenna", "Make sure antenna is installed!") -#define TR_R9MFLEXWARN1 "Requires non" -#define TR_R9MFLEXWARN2 "certified R9M firm." +#define TR_R9M_PROTO_FLEX_WARN1 "Requires non" +#define TR_R9M_PROTO_FCC_WARN1 "Requires FCC" +#define TR_R9M_PROTO_EU_WARN1 "Requires EU" +#define TR_R9M_PROTO_WARN2 "certified firmware" #define TR_LOWALARM INDENT "Low Alarm" #define TR_CRITICALALARM INDENT "Critical Alarm" #define TR_RSSIALARM_WARN TR("RSSI","TELEMETRY RSSI") diff --git a/radio/src/translations/se.h.txt b/radio/src/translations/se.h.txt index ef8c613e1..535a2c6d1 100644 --- a/radio/src/translations/se.h.txt +++ b/radio/src/translations/se.h.txt @@ -1000,8 +1000,10 @@ #define TR_ANTENNASELECTION TR(INDENT "Antenna", INDENT "Antenna selection") #define TR_ANTENNACONFIRM1 "Really switch?" #define TR_ANTENNACONFIRM2 TR("Check antenna", "Make sure antenna is installed!") -#define TR_R9MFLEXWARN1 "Requires non" -#define TR_R9MFLEXWARN2 "certified R9M firm." +#define TR_R9M_PROTO_FLEX_WARN1 "Requires non" +#define TR_R9M_PROTO_FCC_WARN1 "Requires FCC" +#define TR_R9M_PROTO_EU_WARN1 "Requires EU" +#define TR_R9M_PROTO_WARN2 "certified firmware" #define TR_LOWALARM INDENT "Låg-alarm" #define TR_CRITICALALARM INDENT "Kritiskt alarm" #define TR_RSSIALARM_WARN TR("RSSI","TELEMETRY RSSI")