diff --git a/companion/src/firmwares/moduledata.h b/companion/src/firmwares/moduledata.h index 7d03d4bff..c4fd85dc1 100644 --- a/companion/src/firmwares/moduledata.h +++ b/companion/src/firmwares/moduledata.h @@ -56,53 +56,53 @@ enum PulsesProtocol { }; enum MultiModuleRFProtocols { - MM_RF_PROTO_FLYSKY=0, - MM_RF_PROTO_FIRST=MM_RF_PROTO_FLYSKY, - MM_RF_PROTO_HUBSAN, - MM_RF_PROTO_FRSKY, - MM_RF_PROTO_HISKY, - MM_RF_PROTO_V2X2, - MM_RF_PROTO_DSM2, - MM_RF_PROTO_DEVO, - MM_RF_PROTO_YD717, - MM_RF_PROTO_KN, - MM_RF_PROTO_SYMAX, - MM_RF_PROTO_SLT, - MM_RF_PROTO_CX10, - MM_RF_PROTO_CG023, - MM_RF_PROTO_BAYANG, - MM_RF_PROTO_ESky, - MM_RF_PROTO_MT99XX, - MM_RF_PROTO_MJXQ, - MM_RF_PROTO_SHENQI, - MM_RF_PROTO_FY326, - MM_RF_PROTO_SFHSS, - MM_RF_PROTO_J6PRO, - MM_RF_PROTO_FQ777, - MM_RF_PROTO_ASSAN, - MM_RF_PROTO_HONTAI, - MM_RF_PROTO_OLRS, - MM_RF_PROTO_FS_AFHDS2A, - MM_RF_PROTO_Q2X2, - MM_RF_PROTO_WK_2X01, - MM_RF_PROTO_Q303, - MM_RF_PROTO_GW008, - MM_RF_PROTO_DM002, - MM_RF_PROTO_CABELL, - MM_RF_PROTO_ESKY150, - MM_RF_PROTO_H83D, - MM_RF_PROTO_CORONA, - MM_RF_PROTO_CFLIE, - MM_RF_PROTO_HITEC, - MM_RF_PROTO_WFLY, - MM_RF_PROTO_BUGS, - MM_RF_PROTO_BUGS_MINI, - MM_RF_PROTO_TRAXXAS, - MM_RF_PROTO_NCC1701, - MM_RF_PROTO_E01X, - MM_RF_PROTO_V911S, - MM_RF_PROTO_GD00X, - MM_RF_PROTO_LAST = MM_RF_PROTO_GD00X + MODULE_SUBTYPE_MULTI_FLYSKY=0, + MODULE_SUBTYPE_MULTI_FIRST=MODULE_SUBTYPE_MULTI_FLYSKY, + MODULE_SUBTYPE_MULTI_HUBSAN, + MODULE_SUBTYPE_MULTI_FRSKY, + MODULE_SUBTYPE_MULTI_HISKY, + MODULE_SUBTYPE_MULTI_V2X2, + MODULE_SUBTYPE_MULTI_DSM2, + MODULE_SUBTYPE_MULTI_DEVO, + MODULE_SUBTYPE_MULTI_YD717, + MODULE_SUBTYPE_MULTI_KN, + MODULE_SUBTYPE_MULTI_SYMAX, + MODULE_SUBTYPE_MULTI_SLT, + MODULE_SUBTYPE_MULTI_CX10, + MODULE_SUBTYPE_MULTI_CG023, + MODULE_SUBTYPE_MULTI_BAYANG, + MODULE_SUBTYPE_MULTI_ESky, + MODULE_SUBTYPE_MULTI_MT99XX, + MODULE_SUBTYPE_MULTI_MJXQ, + MODULE_SUBTYPE_MULTI_SHENQI, + MODULE_SUBTYPE_MULTI_FY326, + MODULE_SUBTYPE_MULTI_SFHSS, + MODULE_SUBTYPE_MULTI_J6PRO, + MODULE_SUBTYPE_MULTI_FQ777, + MODULE_SUBTYPE_MULTI_ASSAN, + MODULE_SUBTYPE_MULTI_HONTAI, + MODULE_SUBTYPE_MULTI_OLRS, + MODULE_SUBTYPE_MULTI_FS_AFHDS2A, + MODULE_SUBTYPE_MULTI_Q2X2, + MODULE_SUBTYPE_MULTI_WK_2X01, + MODULE_SUBTYPE_MULTI_Q303, + MODULE_SUBTYPE_MULTI_GW008, + MODULE_SUBTYPE_MULTI_DM002, + MODULE_SUBTYPE_MULTI_CABELL, + MODULE_SUBTYPE_MULTI_ESKY150, + MODULE_SUBTYPE_MULTI_H83D, + MODULE_SUBTYPE_MULTI_CORONA, + MODULE_SUBTYPE_MULTI_CFLIE, + MODULE_SUBTYPE_MULTI_HITEC, + MODULE_SUBTYPE_MULTI_WFLY, + MODULE_SUBTYPE_MULTI_BUGS, + MODULE_SUBTYPE_MULTI_BUGS_MINI, + MODULE_SUBTYPE_MULTI_TRAXXAS, + MODULE_SUBTYPE_MULTI_NCC1701, + MODULE_SUBTYPE_MULTI_E01X, + MODULE_SUBTYPE_MULTI_V911S, + MODULE_SUBTYPE_MULTI_GD00X, + MODULE_SUBTYPE_MULTI_LAST = MODULE_SUBTYPE_MULTI_GD00X }; enum TrainerProtocol { @@ -113,7 +113,7 @@ enum TrainerProtocol { TRAINER_MASTER_SBUS_BATT_COMPARTMENT }; -enum R9MSubTypes { +enum ModuleSubtypeR9M { MODULE_SUBTYPE_R9M_FCC, MODULE_SUBTYPE_R9M_EU, MODULE_SUBTYPE_R9M_EUPLUS, diff --git a/companion/src/firmwares/multiprotocols.cpp b/companion/src/firmwares/multiprotocols.cpp index 3d7923a9a..6c2e5bbd7 100644 --- a/companion/src/firmwares/multiprotocols.cpp +++ b/companion/src/firmwares/multiprotocols.cpp @@ -69,34 +69,34 @@ static const QStringList NO_SUBTYPE {STR_MULTI_DEFAULT}; // Table is designed to be shared with gui_common_arm.cpp const Multiprotocols multiProtocols { - {MM_RF_PROTO_FLYSKY, 4, false, STR_SUBTYPE_FLYSKY, nullptr}, - {MM_RF_PROTO_HUBSAN, 2, false, STR_SUBTYPE_HUBSAN, STR_MULTI_VIDFREQ}, - {MM_RF_PROTO_FRSKY, 5, false, STR_SUBTYPE_FRSKY, STR_MULTI_RFTUNE}, - {MM_RF_PROTO_HISKY, 1, false, STR_SUBTYPE_HISKY, nullptr}, - {MM_RF_PROTO_V2X2, 1, false, STR_SUBTYPE_V2X2, nullptr}, - {MM_RF_PROTO_DSM2, 3, false, STR_SUBTYPE_DSM, nullptr}, - {MM_RF_PROTO_YD717, 4, false, STR_SUBTYPE_YD717, nullptr}, - {MM_RF_PROTO_KN, 1, false, STR_SUBTYPE_KN, nullptr}, - {MM_RF_PROTO_SYMAX, 1, false, STR_SUBTYPE_SYMAX, nullptr}, - {MM_RF_PROTO_SLT, 4, false, STR_SUBTYPE_SLT, nullptr}, - {MM_RF_PROTO_CX10, 6, false, STR_SUBTYPE_CX10, nullptr}, - {MM_RF_PROTO_CG023, 1, false, STR_SUBTYPE_CG023, nullptr}, - {MM_RF_PROTO_BAYANG, 3, false, STR_SUBTYPE_BAYANG, STR_MULTI_TELEMETRY}, - {MM_RF_PROTO_MT99XX, 4, false, STR_SUBTYPE_MT99, nullptr}, - {MM_RF_PROTO_MJXQ, 5, false, STR_SUBTYPE_MJXQ, nullptr}, - {MM_RF_PROTO_FY326, 1, false, STR_SUBTYPE_FY326, nullptr}, - {MM_RF_PROTO_SFHSS, 0, true, NO_SUBTYPE, STR_MULTI_RFTUNE}, - {MM_RF_PROTO_HONTAI, 3, false, STR_SUBTYPE_HONTAI, nullptr}, - {MM_RF_PROTO_OLRS, 0, false, NO_SUBTYPE, STR_MULTI_RFPOWER}, - {MM_RF_PROTO_FS_AFHDS2A, 3, true, STR_SUBTYPE_AFHDS2A, STR_MULTI_SERVOFREQ}, - {MM_RF_PROTO_Q2X2, 2, false, STR_SUBTYPE_Q2X2, nullptr}, - {MM_RF_PROTO_WK_2X01, 5, false, STR_SUBTYPE_WK2x01, nullptr}, - {MM_RF_PROTO_Q303, 3, false, STR_SUBTYPE_Q303, nullptr}, - {MM_RF_PROTO_CABELL, 7, false, STR_SUBTYPE_CABELL, STR_MULTI_OPTION}, - {MM_RF_PROTO_H83D, 3, false, STR_SUBTYPE_H83D, nullptr}, - {MM_RF_PROTO_CORONA, 2, false, STR_SUBTYPE_CORONA, STR_MULTI_RFTUNE}, - {MM_RF_PROTO_HITEC, 2, false, STR_SUBTYPE_HITEC, STR_MULTI_RFTUNE}, - {MM_RF_PROTO_E01X, 1, false, STR_SUBTYPE_E01X, nullptr}, + {MODULE_SUBTYPE_MULTI_FLYSKY, 4, false, STR_SUBTYPE_FLYSKY, nullptr}, + {MODULE_SUBTYPE_MULTI_HUBSAN, 2, false, STR_SUBTYPE_HUBSAN, STR_MULTI_VIDFREQ}, + {MODULE_SUBTYPE_MULTI_FRSKY, 5, false, STR_SUBTYPE_FRSKY, STR_MULTI_RFTUNE}, + {MODULE_SUBTYPE_MULTI_HISKY, 1, false, STR_SUBTYPE_HISKY, nullptr}, + {MODULE_SUBTYPE_MULTI_V2X2, 1, false, STR_SUBTYPE_V2X2, nullptr}, + {MODULE_SUBTYPE_MULTI_DSM2, 3, false, STR_SUBTYPE_DSM, nullptr}, + {MODULE_SUBTYPE_MULTI_YD717, 4, false, STR_SUBTYPE_YD717, nullptr}, + {MODULE_SUBTYPE_MULTI_KN, 1, false, STR_SUBTYPE_KN, nullptr}, + {MODULE_SUBTYPE_MULTI_SYMAX, 1, false, STR_SUBTYPE_SYMAX, nullptr}, + {MODULE_SUBTYPE_MULTI_SLT, 4, false, STR_SUBTYPE_SLT, nullptr}, + {MODULE_SUBTYPE_MULTI_CX10, 6, false, STR_SUBTYPE_CX10, nullptr}, + {MODULE_SUBTYPE_MULTI_CG023, 1, false, STR_SUBTYPE_CG023, nullptr}, + {MODULE_SUBTYPE_MULTI_BAYANG, 3, false, STR_SUBTYPE_BAYANG, STR_MULTI_TELEMETRY}, + {MODULE_SUBTYPE_MULTI_MT99XX, 4, false, STR_SUBTYPE_MT99, nullptr}, + {MODULE_SUBTYPE_MULTI_MJXQ, 5, false, STR_SUBTYPE_MJXQ, nullptr}, + {MODULE_SUBTYPE_MULTI_FY326, 1, false, STR_SUBTYPE_FY326, nullptr}, + {MODULE_SUBTYPE_MULTI_SFHSS, 0, true, NO_SUBTYPE, STR_MULTI_RFTUNE}, + {MODULE_SUBTYPE_MULTI_HONTAI, 3, false, STR_SUBTYPE_HONTAI, nullptr}, + {MODULE_SUBTYPE_MULTI_OLRS, 0, false, NO_SUBTYPE, STR_MULTI_RFPOWER}, + {MODULE_SUBTYPE_MULTI_FS_AFHDS2A, 3, true, STR_SUBTYPE_AFHDS2A, STR_MULTI_SERVOFREQ}, + {MODULE_SUBTYPE_MULTI_Q2X2, 2, false, STR_SUBTYPE_Q2X2, nullptr}, + {MODULE_SUBTYPE_MULTI_WK_2X01, 5, false, STR_SUBTYPE_WK2x01, nullptr}, + {MODULE_SUBTYPE_MULTI_Q303, 3, false, STR_SUBTYPE_Q303, nullptr}, + {MODULE_SUBTYPE_MULTI_CABELL, 7, false, STR_SUBTYPE_CABELL, STR_MULTI_OPTION}, + {MODULE_SUBTYPE_MULTI_H83D, 3, false, STR_SUBTYPE_H83D, nullptr}, + {MODULE_SUBTYPE_MULTI_CORONA, 2, false, STR_SUBTYPE_CORONA, STR_MULTI_RFTUNE}, + {MODULE_SUBTYPE_MULTI_HITEC, 2, false, STR_SUBTYPE_HITEC, STR_MULTI_RFTUNE}, + {MODULE_SUBTYPE_MULTI_E01X, 1, false, STR_SUBTYPE_E01X, nullptr}, {MM_RF_CUSTOM_SELECTED, 7, true, STR_SUBTYPE_CUSTOM, STR_MULTI_OPTION}, // Sentinel and default for protocols not listed above (MM_RF_CUSTOM is 0xff) diff --git a/companion/src/modeledit/setup.cpp b/companion/src/modeledit/setup.cpp index 2e86fd2a7..c026ecccc 100644 --- a/companion/src/modeledit/setup.cpp +++ b/companion/src/modeledit/setup.cpp @@ -224,7 +224,7 @@ ModulePanel::ModulePanel(QWidget * parent, ModelData & model, ModuleData & modul ui->protocol->setCurrentIndex(ui->protocol->count()-1); } } - for (int i=0; i<=MM_RF_PROTO_LAST; i++) { + for (int i=0; i<=MODULE_SUBTYPE_MULTI_LAST; i++) { ui->multiProtocol->addItem(Multiprotocols::protocolToString(i), i); } @@ -398,7 +398,7 @@ void ModulePanel::update() case PULSES_MULTIMODULE: mask |= MASK_CHANNELS_RANGE | MASK_RX_NUMBER | MASK_MULTIMODULE | MASK_SUBTYPES; max_rx_num = 15; - if (module.multi.rfProtocol == MM_RF_PROTO_DSM2) + if (module.multi.rfProtocol == MODULE_SUBTYPE_MULTI_DSM2) mask |= MASK_CHANNELS_COUNT; else module.channelsCount = 16; diff --git a/radio/src/CMakeLists.txt b/radio/src/CMakeLists.txt index d3f83f6e7..5dc8d8ac5 100644 --- a/radio/src/CMakeLists.txt +++ b/radio/src/CMakeLists.txt @@ -46,7 +46,7 @@ option(TRACE_LUA_INTERNALS "Turn on traces for Lua internals" OFF) option(FRSKY_STICKS "Reverse sticks for FrSky sticks" OFF) option(NANO "Use nano newlib and binalloc") option(NIGHTLY_BUILD_WARNING "Warn this is a nightly build" OFF) -option(MODULE_R9M_FLEX_FW "Add R9M options for non certified firmwwares" OFF) +option(MODULE_R9M_FLEX "Add R9M options for non certified firmwwares" OFF) option(FRSKY_RELEASE "Used to build FrSky released firmware" OFF) # since we reset all default CMAKE compiler flags for firmware builds, provide an alternate way for user to specify additional flags. @@ -308,8 +308,8 @@ if(NIGHTLY_BUILD_WARNING) add_definitions(-DNIGHTLY_BUILD_WARNING) endif() -if(MODULE_R9M_FLEX_FW) - add_definitions(-DMODULE_R9M_FLEX_FW) +if(MODULE_R9M_FLEX) + add_definitions(-DMODULE_R9M_FLEX) endif() if(FRSKY_RELEASE) diff --git a/radio/src/gui/128x64/model_setup.cpp b/radio/src/gui/128x64/model_setup.cpp index 972317795..09df399c6 100644 --- a/radio/src/gui/128x64/model_setup.cpp +++ b/radio/src/gui/128x64/model_setup.cpp @@ -18,7 +18,7 @@ * GNU General Public License for more details. */ -#include +#include "opentx.h" // TODO find why we need this (for REGISTER at least) #if defined(PCBXLITE) @@ -32,7 +32,7 @@ uint8_t g_moduleIdx; #if defined(PCBTARANIS) uint8_t getSwitchWarningsCount() { - int count = 0; + uint8_t count = 0; for (int i=0; i= ITEM_MODEL_SETUP_EXTERNAL_MODULE_LABEL ? EXTERNAL_MODULE : INTERNAL_MODULE) @@ -170,10 +180,10 @@ enum MenuModelSetupItems { #define SW_WARN_ROWS uint8_t(NAVIGATION_LINE_BY_LINE|(getSwitchWarningsCount()-1)), uint8_t(getSwitchWarningsCount() > 5 ? TITLE_ROW : HIDDEN_ROW) #endif -#define INTERNAL_MODULE_MODE_ROWS ((isModuleXJT(INTERNAL_MODULE) || isModulePXX2(INTERNAL_MODULE)) ? (uint8_t)1 : (uint8_t)0) // Module type + RF protocols +#define INTERNAL_MODULE_TYPE_ROWS ((isModuleXJT(INTERNAL_MODULE) || isModulePXX2(INTERNAL_MODULE)) ? (uint8_t)1 : (uint8_t)0) // Module type + RF protocols #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) -#define EXTERNAL_MODULE_BIND_ROWS() ((isModuleXJT(EXTERNAL_MODULE) && IS_D8_RX(EXTERNAL_MODULE)) || isModuleSBUS(EXTERNAL_MODULE)) ? (uint8_t)1 : (isModulePPM(EXTERNAL_MODULE) || isModulePXX(EXTERNAL_MODULE) || isModuleDSM2(EXTERNAL_MODULE) || isModuleMultimodule(EXTERNAL_MODULE)) ? (uint8_t)2 : HIDDEN_ROW +#define EXTERNAL_MODULE_BIND_ROWS() ((isModuleXJT(EXTERNAL_MODULE) && IS_D8_RX(EXTERNAL_MODULE)) || isModuleSBUS(EXTERNAL_MODULE)) ? (uint8_t)1 : (isModulePPM(EXTERNAL_MODULE) || isModulePXX(EXTERNAL_MODULE) || isModulePXX2(EXTERNAL_MODULE) || isModuleDSM2(EXTERNAL_MODULE) || isModuleMultimodule(EXTERNAL_MODULE)) ? (uint8_t)2 : HIDDEN_ROW #if defined(PCBSKY9X) && defined(REVX) #define OUTPUT_TYPE_ROWS() (isModulePPM(EXTERNAL_MODULE) ? (uint8_t)0 : HIDDEN_ROW) , @@ -182,7 +192,7 @@ enum MenuModelSetupItems { #endif #define PORT_CHANNELS_ROWS(x) (x==EXTERNAL_MODULE ? EXTERNAL_MODULE_CHANNELS_ROWS : 0) -#define EXTERNAL_MODULE_MODE_ROWS (isModuleXJT(EXTERNAL_MODULE) || isModuleR9M(EXTERNAL_MODULE) || isModuleDSM2(EXTERNAL_MODULE) || isModuleMultimodule(EXTERNAL_MODULE)) ? (uint8_t)1 : (uint8_t)0 +#define EXTERNAL_MODULE_TYPE_ROWS (isModulePXX(EXTERNAL_MODULE) || isModulePXX2(EXTERNAL_MODULE) || isModuleDSM2(EXTERNAL_MODULE) || isModuleMultimodule(EXTERNAL_MODULE)) ? (uint8_t)1 : (uint8_t)0 #define POT_WARN_ITEMS() ((g_model.potsWarnMode) ? (uint8_t)(NUM_POTS+NUM_SLIDERS) : (uint8_t)0) #define TIMER_ROWS 2, 0, 0, 0, 0 @@ -515,17 +525,17 @@ void onBluetoothConnectMenu(const char * result) #if defined(HARDWARE_INTERNAL_MODULE) #define INTERNAL_MODULE_ROWS \ LABEL(InternalModule), \ - INTERNAL_MODULE_MODE_ROWS, \ + INTERNAL_MODULE_TYPE_ROWS, \ INTERNAL_MODULE_CHANNELS_ROWS, \ - IF_NOT_PXX2_MODULE(INTERNAL_MODULE, IF_INTERNAL_MODULE_ON(HAS_RF_PROTOCOL_MODELINDEX(g_model.moduleData[INTERNAL_MODULE].rfProtocol) ? (uint8_t)2 : (uint8_t)1)), \ - IF_PXX2_MODULE(INTERNAL_MODULE, 0), \ + IF_NOT_ACCESS_MODULE_RF(INTERNAL_MODULE, IF_INTERNAL_MODULE_ON(HAS_RF_PROTOCOL_MODELINDEX(g_model.moduleData[INTERNAL_MODULE].rfProtocol) ? (uint8_t)2 : (uint8_t)1)), \ + IF_ACCESS_MODULE_RF(INTERNAL_MODULE, 0), \ ANTENNA_ROW \ IF_INTERNAL_MODULE_ON(FAILSAFE_ROWS(INTERNAL_MODULE)), \ - IF_PXX2_MODULE(INTERNAL_MODULE, 1), \ + IF_ACCESS_MODULE_RF(INTERNAL_MODULE, 1), \ IF_PXX2_MODULE(INTERNAL_MODULE, 0), \ - IF_PXX2_MODULE(INTERNAL_MODULE, 0), \ - IF_PXX2_MODULE(INTERNAL_MODULE, 0), \ - IF_PXX2_MODULE(INTERNAL_MODULE, 0), + IF_ACCESS_MODULE_RF(INTERNAL_MODULE, 0), \ + IF_ACCESS_MODULE_RF(INTERNAL_MODULE, 0), \ + IF_ACCESS_MODULE_RF(INTERNAL_MODULE, 0), #else #define INTERNAL_MODULE_ROWS #endif @@ -566,32 +576,33 @@ void menuModelSetup(event_t event) NUM_STICKS + NUM_POTS + NUM_SLIDERS - 1, // Center beeps 0, // Global functions - uint8_t((isDefaultModelRegistrationID() || (warningText && popupFunc == runPopupRegister)) ? HIDDEN_ROW : READONLY_ROW), // Registration ID + REGISTRATION_ID_ROWS INTERNAL_MODULE_ROWS LABEL(ExternalModule), - EXTERNAL_MODULE_MODE_ROWS, + EXTERNAL_MODULE_TYPE_ROWS, MULTIMODULE_SUBTYPE_ROWS(EXTERNAL_MODULE) MULTIMODULE_STATUS_ROWS EXTERNAL_MODULE_CHANNELS_ROWS, - IF_NOT_PXX2_MODULE(EXTERNAL_MODULE, EXTERNAL_MODULE_BIND_ROWS()), // line reused for PPM: PPM settings - IF_PXX2_MODULE(EXTERNAL_MODULE, 0), // RxNum + IF_NOT_ACCESS_MODULE_RF(EXTERNAL_MODULE, EXTERNAL_MODULE_BIND_ROWS()), // line reused for PPM: PPM settings + IF_ACCESS_MODULE_RF(EXTERNAL_MODULE, 0), // RxNum IF_NOT_PXX2_MODULE(EXTERNAL_MODULE, EXTERNAL_MODULE_OPTION_ROW), MULTIMODULE_MODULE_ROWS EXTERNAL_MODULE_POWER_ROW, FAILSAFE_ROWS(EXTERNAL_MODULE), - IF_PXX2_MODULE(EXTERNAL_MODULE, 1), // Range check and Register buttons + IF_ACCESS_MODULE_RF(EXTERNAL_MODULE, 1), // Range check and Register buttons IF_PXX2_MODULE(EXTERNAL_MODULE, 0), // Module options - IF_PXX2_MODULE(EXTERNAL_MODULE, 0), // Receiver 1 - IF_PXX2_MODULE(EXTERNAL_MODULE, 0), // Receiver 2 - IF_PXX2_MODULE(EXTERNAL_MODULE, 0), // Receiver 3 + IF_ACCESS_MODULE_RF(EXTERNAL_MODULE, 0), // Receiver 1 + IF_ACCESS_MODULE_RF(EXTERNAL_MODULE, 0), // Receiver 2 + IF_ACCESS_MODULE_RF(EXTERNAL_MODULE, 0), // Receiver 3 + TRAINER_ROWS }); #else MENU_TAB({ HEADER_LINE_COLUMNS 0, TIMER_ROWS, TIMER_ROWS, TIMER_ROWS, 0, 1, 0, 0, 0, 0, 0, LABEL(PreflightCheck), 0, 0, NUM_SWITCHES-1, NUM_STICKS+NUM_POTS+NUM_SLIDERS-1, 0, LABEL(ExternalModule), - EXTERNAL_MODULE_MODE_ROWS, + EXTERNAL_MODULE_TYPE_ROWS, MULTIMODULE_SUBTYPE_ROWS(EXTERNAL_MODULE) MULTIMODULE_STATUS_ROWS EXTERNAL_MODULE_CHANNELS_ROWS, @@ -800,7 +811,7 @@ void menuModelSetup(event_t event) break; #endif - case ITEM_MODEL_SETUP_SWITCHES_WARNING: + case ITEM_MODEL_SETUP_SWITCHES_WARNING1: #if defined(PCBTARANIS) { #define FIRSTSW_STR STR_VSRCRAW+(MIXSRC_FIRST_SWITCH-MIXSRC_Rud+1)*length @@ -1008,13 +1019,14 @@ void menuModelSetup(event_t event) lcdDrawTextAlignedLeft(y, TR_INTERNALRF); break; - case ITEM_MODEL_SETUP_INTERNAL_MODULE_MODE: + case ITEM_MODEL_SETUP_INTERNAL_MODULE_TYPE: { lcdDrawTextAlignedLeft(y, STR_MODE); +#if defined(PXX1) lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_MODULE_PROTOCOLS, g_model.moduleData[INTERNAL_MODULE].type, menuHorizontalPosition==0 ? attr : 0); if (isModuleXJT(INTERNAL_MODULE)) - lcdDrawTextAtIndex(lcdNextPos + FW, y, STR_ACCST_RF_PROTOCOLS, 1+g_model.moduleData[INTERNAL_MODULE].rfProtocol, menuHorizontalPosition==1 ? attr : 0); - else if (isModulePXX2(INTERNAL_MODULE)) - lcdDrawTextAtIndex(lcdNextPos + FW, y, STR_ACCESS_RF_PROTOCOLS, g_model.moduleData[INTERNAL_MODULE].rfProtocol, menuHorizontalPosition==1 ? attr : 0); + lcdDrawTextAtIndex(lcdNextPos + 3, y, STR_ACCST_RF_PROTOCOLS, 1+g_model.moduleData[INTERNAL_MODULE].rfProtocol, menuHorizontalPosition==1 ? attr : 0); + else if (isModuleXJT2(INTERNAL_MODULE)) + lcdDrawTextAtIndex(lcdNextPos + 3, y, STR_ISRM_PXX2_RF_PROTOCOLS, g_model.moduleData[INTERNAL_MODULE].subType, menuHorizontalPosition==1 ? attr : 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); @@ -1026,18 +1038,37 @@ void menuModelSetup(event_t event) } } else if (isModuleXJT(INTERNAL_MODULE)) { - g_model.moduleData[INTERNAL_MODULE].rfProtocol = checkIncDec(event, g_model.moduleData[INTERNAL_MODULE].rfProtocol, 0, ACCST_RF_PROTO_LAST, EE_MODEL, isRfProtocolAvailable); + g_model.moduleData[INTERNAL_MODULE].rfProtocol = checkIncDec(event, g_model.moduleData[INTERNAL_MODULE].rfProtocol, 0, MODULE_SUBTYPE_PXX1_LAST, EE_MODEL, isRfProtocolAvailable); if (checkIncDec_Ret) { - g_model.moduleData[0].type = MODULE_TYPE_PXX_XJT; + g_model.moduleData[0].type = MODULE_TYPE_PXX1_XJT; g_model.moduleData[0].channelsStart = 0; g_model.moduleData[0].channelsCount = defaultModuleChannels_M8(INTERNAL_MODULE); } } else if (isModulePXX2(INTERNAL_MODULE)) { - g_model.moduleData[INTERNAL_MODULE].rfProtocol = checkIncDec(event, g_model.moduleData[INTERNAL_MODULE].rfProtocol, 0, ACCESS_RF_PROTO_LAST, EE_MODEL, isRfProtocolAvailable); + g_model.moduleData[INTERNAL_MODULE].subType = checkIncDec(event, g_model.moduleData[INTERNAL_MODULE].subType, 0, MODULE_SUBTYPE_ISRM_PXX2_LAST, EE_MODEL, isRfProtocolAvailable); } } +#else + uint8_t index = 0; + if (g_model.moduleData[INTERNAL_MODULE].type == MODULE_TYPE_PXX2_ISRM) { + index = 1 + g_model.moduleData[INTERNAL_MODULE].subType; + } + lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_ISRM_PXX2_RF_PROTOCOLS, index, attr); + if (attr) { + index = checkIncDec(event, index, 0, 3, EE_MODEL); + if (checkIncDec_Ret) { + memclear(&g_model.moduleData[INTERNAL_MODULE], sizeof(ModuleData)); + if (index > 0) { + g_model.moduleData[INTERNAL_MODULE].type = MODULE_TYPE_PXX2_ISRM; + g_model.moduleData[INTERNAL_MODULE].subType = index - 1; + g_model.moduleData[INTERNAL_MODULE].channelsCount = defaultModuleChannels_M8(INTERNAL_MODULE); + } + } + } +#endif break; + } #endif #if defined(PCBSKY9X) @@ -1050,22 +1081,24 @@ void menuModelSetup(event_t event) lcdDrawTextAlignedLeft(y, TR_EXTERNALRF); break; - case ITEM_MODEL_SETUP_EXTERNAL_MODULE_MODE: + case ITEM_MODEL_SETUP_EXTERNAL_MODULE_TYPE: lcdDrawTextAlignedLeft(y, STR_MODE); lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_MODULE_PROTOCOLS, g_model.moduleData[EXTERNAL_MODULE].type, menuHorizontalPosition==0 ? attr : 0); + if (isModuleR9M2(EXTERNAL_MODULE)) + lcdDrawTextAtIndex(lcdNextPos + 3, y, STR_R9M_PXX2_RF_PROTOCOLS, g_model.moduleData[EXTERNAL_MODULE].subType, menuHorizontalPosition==1 ? attr : 0); if (isModuleXJT(EXTERNAL_MODULE)) - lcdDrawTextAtIndex(lcdNextPos + FW, 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(lcdNextPos + FW, 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(lcdNextPos + FW, 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)) { int multi_rfProto = g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(false); if (g_model.moduleData[EXTERNAL_MODULE].multi.customProto) - lcdDrawText(lcdNextPos + FW, y, STR_MULTI_CUSTOM, menuHorizontalPosition==1 ? attr : 0); + lcdDrawText(lcdNextPos + 3, y, STR_MULTI_CUSTOM, menuHorizontalPosition==1 ? attr : 0); else - lcdDrawTextAtIndex(lcdNextPos + FW, y, STR_MULTI_PROTOCOLS, multi_rfProto, menuHorizontalPosition==1 ? attr : 0); + lcdDrawTextAtIndex(lcdNextPos + 3, y, STR_MULTI_PROTOCOLS, multi_rfProto, menuHorizontalPosition==1 ? attr : 0); } #endif if (attr && editMode > 0) { @@ -1090,6 +1123,8 @@ void menuModelSetup(event_t event) } break; case 1: + if (isModuleR9M2(EXTERNAL_MODULE)) + CHECK_INCDEC_MODELVAR(event, g_model.moduleData[EXTERNAL_MODULE].subType, 0, MODULE_SUBTYPE_R9M_PXX2_LAST); 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)) { @@ -1106,15 +1141,15 @@ void menuModelSetup(event_t event) #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); + 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 == MM_RF_PROTO_CUSTOM); + 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) == MM_RF_PROTO_DSM2) { + if (g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(true) == MODULE_SUBTYPE_MULTI_DSM2) { g_model.moduleData[EXTERNAL_MODULE].multi.autoBindMode = 1; } else { @@ -1125,7 +1160,7 @@ void menuModelSetup(event_t event) } #endif else { - CHECK_INCDEC_MODELVAR(event, g_model.moduleData[EXTERNAL_MODULE].rfProtocol, 0, ACCST_RF_PROTO_LAST); + CHECK_INCDEC_MODELVAR(event, g_model.moduleData[EXTERNAL_MODULE].rfProtocol, 0, MODULE_SUBTYPE_PXX1_LAST); } if (checkIncDec_Ret) { g_model.moduleData[EXTERNAL_MODULE].channelsStart = 0; @@ -1280,7 +1315,7 @@ void menuModelSetup(event_t event) CHECK_INCDEC_MODELVAR_ZERO(event, moduleData.channelsStart, 32-8-moduleData.channelsCount); break; case 1: - CHECK_INCDEC_MODELVAR_CHECK(event, moduleData.channelsCount, -4, min(maxModuleChannels_M8(moduleIdx), 32-8-moduleData.channelsStart), moduleData.type == MODULE_TYPE_ACCESS_ISRM ? isPXX2ChannelsCountAllowed : nullptr); + CHECK_INCDEC_MODELVAR_CHECK(event, moduleData.channelsCount, -4, min(maxModuleChannels_M8(moduleIdx), 32-8-moduleData.channelsStart), moduleData.type == MODULE_TYPE_PXX2_ISRM ? isPxx2IsrmChannelsCountAllowed : nullptr); if ((k == ITEM_MODEL_SETUP_EXTERNAL_MODULE_CHANNELS && g_model.moduleData[EXTERNAL_MODULE].type == MODULE_TYPE_PPM)) { SET_DEFAULT_PPM_FRAME_LENGTH(moduleIdx); } @@ -1461,9 +1496,9 @@ void menuModelSetup(event_t event) #endif #if defined(PCBTARANIS) #if defined(HARDWARE_INTERNAL_MODULE) - case ITEM_MODEL_SETUP_INTERNAL_MODULE_NPXX2_BIND: + case ITEM_MODEL_SETUP_INTERNAL_MODULE_NOT_ACCESS_BIND: #endif - case ITEM_MODEL_SETUP_EXTERNAL_MODULE_NPXX2_BIND: + case ITEM_MODEL_SETUP_EXTERNAL_MODULE_NOT_ACCESS_BIND: #endif { uint8_t moduleIdx = CURRENT_MODULE_EDITED(k); @@ -1517,7 +1552,7 @@ void menuModelSetup(event_t event) else { lcdDrawTextAlignedLeft(y, STR_RECEIVER_NUM); } - if (isModulePXX(moduleIdx) || isModuleDSM2(moduleIdx) || isModuleMultimodule(moduleIdx)) { + if (isModulePXX2(moduleIdx) || isModulePXX(moduleIdx) || isModuleDSM2(moduleIdx) || isModuleMultimodule(moduleIdx)) { if (xOffsetBind) lcdDrawNumber(MODEL_SETUP_2ND_COLUMN, y, g_model.header.modelId[moduleIdx], (l_posHorz==0 ? attr : 0) | LEADING0|LEFT, 2); if (attr && l_posHorz == 0) { @@ -1549,7 +1584,7 @@ void menuModelSetup(event_t event) if (attr && l_posHorz > 0) { if (s_editMode > 0) { if (l_posHorz == 1) { - if (isModuleR9M(moduleIdx) || (isModuleXJT(moduleIdx) && g_model.moduleData[moduleIdx].rfProtocol== ACCST_RF_PROTO_D16)) { + if (isModuleR9M(moduleIdx) || (isModuleXJT(moduleIdx) && g_model.moduleData[moduleIdx].rfProtocol == MODULE_SUBTYPE_PXX1_ACCST_D16) || (isModuleXJT2(moduleIdx) && g_model.moduleData[moduleIdx].subType == MODULE_SUBTYPE_ISRM_PXX2_ACCST_D16) || (isModuleR9M2(moduleIdx) && g_model.moduleData[moduleIdx].subType != MODULE_SUBTYPE_R9M_PXX2_ACCESS)) { #if defined(PCBXLITE) if (EVT_KEY_MASK(event) == KEY_ENTER) { #elif defined(PCBSKY9X) || defined(PCBAR9X) @@ -1699,15 +1734,15 @@ void menuModelSetup(event_t event) if (pdef->optionsstr) lcdDrawTextAlignedLeft(y, pdef->optionsstr); - if (multi_proto == MM_RF_PROTO_FS_AFHDS2A) + if (multi_proto == MODULE_SUBTYPE_MULTI_FS_AFHDS2A) optionValue = 50 + 5 * optionValue; lcdDrawNumber(MODEL_SETUP_2ND_COLUMN, y, optionValue, LEFT | attr); if (attr) { - if (multi_proto == MM_RF_PROTO_FS_AFHDS2A) { + if (multi_proto == MODULE_SUBTYPE_MULTI_FS_AFHDS2A) { CHECK_INCDEC_MODELVAR(event, g_model.moduleData[moduleIdx].multi.optionValue, 0, 70); } - else if (multi_proto == MM_RF_PROTO_OLRS) { + else if (multi_proto == MODULE_SUBTYPE_MULTI_OLRS) { CHECK_INCDEC_MODELVAR(event, g_model.moduleData[moduleIdx].multi.optionValue, -1, 7); } else { @@ -1739,7 +1774,7 @@ void menuModelSetup(event_t event) lcdDrawTextAlignedLeft(y, TR_MULTI_RFPOWER); if (isModuleR9M_FCC_VARIANT(moduleIdx)) { g_model.moduleData[moduleIdx].pxx.power = min((uint8_t)g_model.moduleData[moduleIdx].pxx.power, (uint8_t)R9M_FCC_POWER_MAX); // Lite FCC has only one setting - if (g_model.moduleData[moduleIdx].type == MODULE_TYPE_PXX_R9M_LITE) { // R9M lite FCC has only one power value, so displayed for info only + if (g_model.moduleData[moduleIdx].type == MODULE_TYPE_PXX1_R9M_LITE) { // R9M lite FCC has only one power value, so displayed for info only lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_R9M_LITE_FCC_POWER_VALUES, g_model.moduleData[moduleIdx].pxx.power, LEFT); if (attr) REPEAT_LAST_CURSOR_MOVE(); @@ -1750,7 +1785,7 @@ void menuModelSetup(event_t event) CHECK_INCDEC_MODELVAR_ZERO(event, g_model.moduleData[moduleIdx].pxx.power, R9M_FCC_POWER_MAX); } } - else if (g_model.moduleData[moduleIdx].type == MODULE_TYPE_PXX_R9M_LITE) { + else if (g_model.moduleData[moduleIdx].type == MODULE_TYPE_PXX1_R9M_LITE) { g_model.moduleData[moduleIdx].pxx.power = min((uint8_t)g_model.moduleData[moduleIdx].pxx.power, (uint8_t)R9M_LITE_LBT_POWER_MAX); lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_R9M_LITE_LBT_POWER_VALUES, g_model.moduleData[moduleIdx].pxx.power, LEFT | attr); if (attr) { @@ -1763,7 +1798,7 @@ void menuModelSetup(event_t event) reusableBuffer.moduleSetup.r9mPower = g_model.moduleData[moduleIdx].pxx.power; } } - else if (g_model.moduleData[moduleIdx].type == MODULE_TYPE_PXX_R9M) { + else if (g_model.moduleData[moduleIdx].type == MODULE_TYPE_PXX1_R9M) { g_model.moduleData[moduleIdx].pxx.power = min((uint8_t)g_model.moduleData[moduleIdx].pxx.power, (uint8_t)R9M_LBT_POWER_MAX); lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_R9M_LBT_POWER_VALUES, g_model.moduleData[moduleIdx].pxx.power, LEFT | attr); if (attr) { @@ -1788,7 +1823,7 @@ void menuModelSetup(event_t event) #if defined(MULTIMODULE) case ITEM_MODEL_SETUP_EXTERNAL_MODULE_AUTOBIND: - if (g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(true) == MM_RF_PROTO_DSM2) + if (g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(true) == MODULE_SUBTYPE_MULTI_DSM2) g_model.moduleData[EXTERNAL_MODULE].multi.autoBindMode = editCheckBox(g_model.moduleData[EXTERNAL_MODULE].multi.autoBindMode, MODEL_SETUP_2ND_COLUMN, y, STR_MULTI_DSM_AUTODTECT, attr, event); else g_model.moduleData[EXTERNAL_MODULE].multi.autoBindMode = editCheckBox(g_model.moduleData[EXTERNAL_MODULE].multi.autoBindMode, MODEL_SETUP_2ND_COLUMN, y, STR_MULTI_AUTOBIND, attr, event); @@ -1873,7 +1908,7 @@ void menuModelSetup(event_t event) if (old_editMode > 0 && s_editMode == 0) { switch(menuVerticalPosition) { #if defined(HARDWARE_INTERNAL_MODULE) - case ITEM_MODEL_SETUP_INTERNAL_MODULE_NPXX2_BIND: + case ITEM_MODEL_SETUP_INTERNAL_MODULE_NOT_ACCESS_BIND: case ITEM_MODEL_SETUP_INTERNAL_MODULE_PXX2_MODEL_NUM: if (menuHorizontalPosition == 0) checkModelIdUnique(g_eeGeneral.currModel, INTERNAL_MODULE); @@ -1885,7 +1920,7 @@ void menuModelSetup(event_t event) checkModelIdUnique(g_eeGeneral.currModel, EXTRA_MODULE); break; #endif - case ITEM_MODEL_SETUP_EXTERNAL_MODULE_NPXX2_BIND: + case ITEM_MODEL_SETUP_EXTERNAL_MODULE_NOT_ACCESS_BIND: case ITEM_MODEL_SETUP_EXTERNAL_MODULE_PXX2_MODEL_NUM: if (menuHorizontalPosition == 0) checkModelIdUnique(g_eeGeneral.currModel, EXTERNAL_MODULE); diff --git a/radio/src/gui/128x64/model_telemetry.cpp b/radio/src/gui/128x64/model_telemetry.cpp index 64135a84b..846168ba5 100644 --- a/radio/src/gui/128x64/model_telemetry.cpp +++ b/radio/src/gui/128x64/model_telemetry.cpp @@ -240,7 +240,7 @@ void menuModelTelemetryFrsky(event_t event) case ITEM_TELEMETRY_RSSI_LABEL: #if defined(MULTIMODULE) - if (telemetryProtocol == PROTOCOL_TELEMETRY_MULTIMODULE && g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(false) == MM_RF_PROTO_FS_AFHDS2A) + if (telemetryProtocol == PROTOCOL_TELEMETRY_MULTIMODULE && g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(false) == MODULE_SUBTYPE_MULTI_FS_AFHDS2A) lcdDrawTextAlignedLeft(y, "RSNR"); else lcdDrawTextAlignedLeft(y, "RSSI"); diff --git a/radio/src/gui/212x64/model_setup.cpp b/radio/src/gui/212x64/model_setup.cpp index 8816246c6..22f5f99b5 100644 --- a/radio/src/gui/212x64/model_setup.cpp +++ b/radio/src/gui/212x64/model_setup.cpp @@ -22,77 +22,89 @@ uint8_t g_moduleIdx; +uint8_t getSwitchWarningsCount() +{ + uint8_t count = 0; + for (int i=0; i 1 - ITEM_MODEL_TIMER2, - ITEM_MODEL_TIMER2_NAME, - ITEM_MODEL_TIMER2_PERSISTENT, - ITEM_MODEL_TIMER2_MINUTE_BEEP, - ITEM_MODEL_TIMER2_COUNTDOWN_BEEP, + ITEM_MODEL_SETUP_TIMER2, + ITEM_MODEL_SETUP_TIMER2_NAME, + ITEM_MODEL_SETUP_TIMER2_PERSISTENT, + ITEM_MODEL_SETUP_TIMER2_MINUTE_BEEP, + ITEM_MODEL_SETUP_TIMER2_COUNTDOWN_BEEP, #endif #if TIMERS > 2 - ITEM_MODEL_TIMER3, - ITEM_MODEL_TIMER3_NAME, - ITEM_MODEL_TIMER3_PERSISTENT, - ITEM_MODEL_TIMER3_MINUTE_BEEP, - ITEM_MODEL_TIMER3_COUNTDOWN_BEEP, + ITEM_MODEL_SETUP_TIMER3, + ITEM_MODEL_SETUP_TIMER3_NAME, + ITEM_MODEL_SETUP_TIMER3_PERSISTENT, + ITEM_MODEL_SETUP_TIMER3_MINUTE_BEEP, + ITEM_MODEL_SETUP_TIMER3_COUNTDOWN_BEEP, #endif #if defined(PCBX9E) - ITEM_MODEL_TOP_LCD_TIMER, + ITEM_MODEL_SETUP_TOP_LCD_TIMER, #endif - ITEM_MODEL_EXTENDED_LIMITS, - ITEM_MODEL_EXTENDED_TRIMS, - ITEM_MODEL_DISPLAY_TRIMS, - ITEM_MODEL_TRIM_INC, - ITEM_MODEL_THROTTLE_LABEL, - ITEM_MODEL_THROTTLE_REVERSED, - ITEM_MODEL_THROTTLE_TRACE, - ITEM_MODEL_THROTTLE_TRIM, - ITEM_MODEL_PREFLIGHT_LABEL, - ITEM_MODEL_CHECKLIST_DISPLAY, - ITEM_MODEL_THROTTLE_WARNING, - ITEM_MODEL_SWITCHES_WARNING, + ITEM_MODEL_SETUP_EXTENDED_LIMITS, + ITEM_MODEL_SETUP_EXTENDED_TRIMS, + ITEM_MODEL_SETUP_DISPLAY_TRIMS, + ITEM_MODEL_SETUP_TRIM_INC, + ITEM_MODEL_SETUP_THROTTLE_LABEL, + ITEM_MODEL_SETUP_THROTTLE_REVERSED, + ITEM_MODEL_SETUP_THROTTLE_TRACE, + ITEM_MODEL_SETUP_THROTTLE_TRIM, + ITEM_MODEL_SETUP_PREFLIGHT_LABEL, + ITEM_MODEL_SETUP_CHECKLIST_DISPLAY, + ITEM_MODEL_SETUP_THROTTLE_WARNING, + ITEM_MODEL_SETUP_SWITCHES_WARNING1, #if defined(PCBX9E) - ITEM_MODEL_SWITCHES_WARNING2, - ITEM_MODEL_SWITCHES_WARNING3, + ITEM_MODEL_SETUP_SWITCHES_WARNING2, + ITEM_MODEL_SETUP_SWITCHES_WARNING3, #endif - ITEM_MODEL_POTS_WARNING, + ITEM_MODEL_SETUP_POTS_WARNING, #if defined(PCBX9E) - ITEM_MODEL_POTS_WARNING2, + ITEM_MODEL_SETUP_POTS_WARNING2, #endif - ITEM_MODEL_BEEP_CENTER, - ITEM_MODEL_USE_GLOBAL_FUNCTIONS, - ITEM_MODEL_INTERNAL_MODULE_LABEL, - ITEM_MODEL_INTERNAL_MODULE_MODE, - ITEM_MODEL_INTERNAL_MODULE_CHANNELS, - ITEM_MODEL_INTERNAL_MODULE_BIND, - ITEM_MODEL_INTERNAL_MODULE_FAILSAFE, - ITEM_MODEL_EXTERNAL_MODULE_LABEL, - ITEM_MODEL_EXTERNAL_MODULE_MODE, + ITEM_MODEL_SETUP_BEEP_CENTER, + ITEM_MODEL_SETUP_USE_GLOBAL_FUNCTIONS, + ITEM_MODEL_SETUP_REGISTRATION_ID, + ITEM_MODEL_SETUP_INTERNAL_MODULE_LABEL, + ITEM_MODEL_SETUP_INTERNAL_MODULE_MODE, + ITEM_MODEL_SETUP_INTERNAL_MODULE_CHANNELS, + ITEM_MODEL_SETUP_INTERNAL_MODULE_BIND, + ITEM_MODEL_SETUP_INTERNAL_MODULE_FAILSAFE, + ITEM_MODEL_SETUP_EXTERNAL_MODULE_LABEL, + ITEM_MODEL_SETUP_EXTERNAL_MODULE_MODE, #if defined (MULTIMODULE) - ITEM_MODEL_EXTERNAL_MODULE_STATUS, - ITEM_MODEL_EXTERNAL_MODULE_SYNCSTATUS, + ITEM_MODEL_SETUP_EXTERNAL_MODULE_STATUS, + ITEM_MODEL_SETUP_EXTERNAL_MODULE_SYNCSTATUS, #endif - ITEM_MODEL_EXTERNAL_MODULE_CHANNELS, - ITEM_MODEL_EXTERNAL_MODULE_BIND, - ITEM_MODEL_EXTERNAL_MODULE_FAILSAFE, - ITEM_MODEL_EXTERNAL_MODULE_OPTIONS, + ITEM_MODEL_SETUP_EXTERNAL_MODULE_CHANNELS, + ITEM_MODEL_SETUP_EXTERNAL_MODULE_BIND, + ITEM_MODEL_SETUP_EXTERNAL_MODULE_FAILSAFE, + ITEM_MODEL_SETUP_EXTERNAL_MODULE_OPTIONS, #if defined(MULTIMODULE) - ITEM_MODEL_EXTERNAL_MODULE_AUTOBIND, + ITEM_MODEL_SETUP_EXTERNAL_MODULE_AUTOBIND, #endif - ITEM_MODEL_EXTERNAL_MODULE_POWER, - ITEM_MODEL_TRAINER_LABEL, - ITEM_MODEL_TRAINER_MODE, - ITEM_MODEL_TRAINER_LINE1, - ITEM_MODEL_TRAINER_LINE2, - ITEM_MODEL_SETUP_MAX + ITEM_MODEL_SETUP_EXTERNAL_MODULE_POWER, + ITEM_MODEL_SETUP_TRAINER_LABEL, + ITEM_MODEL_SETUP_TRAINER_MODE, + ITEM_MODEL_SETUP_TRAINER_LINE1, + ITEM_MODEL_SETUP_TRAINER_LINE2, + ITEM_MODEL_SETUP_SETUP_MAX }; #define FIELD_PROTOCOL_MAX 1 @@ -103,11 +115,11 @@ enum MenuModelSetupItems { #define MODEL_SETUP_RANGE_OFS 7*FW #define MODEL_SETUP_SET_FAILSAFE_OFS 10*FW-2 -#define CURRENT_MODULE_EDITED(k) (k >= ITEM_MODEL_EXTERNAL_MODULE_LABEL ? EXTERNAL_MODULE : INTERNAL_MODULE) +#define CURRENT_MODULE_EDITED(k) (k >= ITEM_MODEL_SETUP_EXTERNAL_MODULE_LABEL ? EXTERNAL_MODULE : INTERNAL_MODULE) void onBindMenu(const char * result) { - uint8_t moduleIdx = CURRENT_MODULE_EDITED(menuVerticalPosition); + uint8_t moduleIdx = CURRENT_MODULE_EDITED(menuVerticalPosition - HEADER_LINE); if (result == STR_BINDING_1_8_TELEM_ON) { g_model.moduleData[moduleIdx].pxx.receiver_telem_off = false; @@ -221,17 +233,6 @@ void editTimerCountdown(int timerIdx, coord_t y, LcdFlags attr, event_t event) } } -int getSwitchWarningsCount() -{ - int count = 0; - for (int i=0; i 1 - case ITEM_MODEL_TIMER2: + case ITEM_MODEL_SETUP_TIMER2: editTimerMode(1, y, attr, event); break; - case ITEM_MODEL_TIMER2_NAME: + case ITEM_MODEL_SETUP_TIMER2_NAME: editSingleName(MODEL_SETUP_2ND_COLUMN, y, STR_TIMER_NAME, g_model.timers[1].name, LEN_TIMER_NAME, event, attr); break; - case ITEM_MODEL_TIMER2_MINUTE_BEEP: + case ITEM_MODEL_SETUP_TIMER2_MINUTE_BEEP: g_model.timers[1].minuteBeep = editCheckBox(g_model.timers[1].minuteBeep, MODEL_SETUP_2ND_COLUMN, y, STR_MINUTEBEEP, attr, event); break; - case ITEM_MODEL_TIMER2_COUNTDOWN_BEEP: + case ITEM_MODEL_SETUP_TIMER2_COUNTDOWN_BEEP: editTimerCountdown(1, y, attr, event); break; - case ITEM_MODEL_TIMER2_PERSISTENT: + case ITEM_MODEL_SETUP_TIMER2_PERSISTENT: g_model.timers[1].persistent = editChoice(MODEL_SETUP_2ND_COLUMN, y, STR_PERSISTENT, STR_VPERSISTENT, g_model.timers[1].persistent, 0, 2, attr, event); break; #endif #if TIMERS > 2 - case ITEM_MODEL_TIMER3: + case ITEM_MODEL_SETUP_TIMER3: editTimerMode(2, y, attr, event); break; - case ITEM_MODEL_TIMER3_NAME: + case ITEM_MODEL_SETUP_TIMER3_NAME: editSingleName(MODEL_SETUP_2ND_COLUMN, y, STR_TIMER_NAME, g_model.timers[2].name, LEN_TIMER_NAME, event, attr); break; - case ITEM_MODEL_TIMER3_MINUTE_BEEP: + case ITEM_MODEL_SETUP_TIMER3_MINUTE_BEEP: g_model.timers[2].minuteBeep = editCheckBox(g_model.timers[2].minuteBeep, MODEL_SETUP_2ND_COLUMN, y, STR_MINUTEBEEP, attr, event); break; - case ITEM_MODEL_TIMER3_COUNTDOWN_BEEP: + case ITEM_MODEL_SETUP_TIMER3_COUNTDOWN_BEEP: editTimerCountdown(2, y, attr, event); break; - case ITEM_MODEL_TIMER3_PERSISTENT: + case ITEM_MODEL_SETUP_TIMER3_PERSISTENT: g_model.timers[2].persistent = editChoice(MODEL_SETUP_2ND_COLUMN, y, STR_PERSISTENT, STR_VPERSISTENT, g_model.timers[2].persistent, 0, 2, attr, event); break; #endif #if defined(PCBX9E) - case ITEM_MODEL_TOP_LCD_TIMER: + case ITEM_MODEL_SETUP_TOP_LCD_TIMER: lcdDrawTextAlignedLeft(y, STR_TOPLCDTIMER); drawStringWithIndex(MODEL_SETUP_2ND_COLUMN, y, STR_TIMER, g_model.toplcdTimer+1, attr); if (attr) { @@ -421,11 +422,11 @@ void menuModelSetup(event_t event) break; #endif - case ITEM_MODEL_EXTENDED_LIMITS: + case ITEM_MODEL_SETUP_EXTENDED_LIMITS: ON_OFF_MENU_ITEM(g_model.extendedLimits, MODEL_SETUP_2ND_COLUMN, y, STR_ELIMITS, attr, event); break; - case ITEM_MODEL_EXTENDED_TRIMS: + case ITEM_MODEL_SETUP_EXTENDED_TRIMS: ON_OFF_MENU_ITEM(g_model.extendedTrims, MODEL_SETUP_2ND_COLUMN, y, STR_ETRIMS, menuHorizontalPosition<=0 ? attr : 0, event==EVT_KEY_BREAK(KEY_ENTER) ? event : 0); lcdDrawText(MODEL_SETUP_2ND_COLUMN+3*FW, y, STR_RESET_BTN, (menuHorizontalPosition>0 && !NO_HIGHLIGHT()) ? attr : 0); if (attr && menuHorizontalPosition>0) { @@ -441,23 +442,23 @@ void menuModelSetup(event_t event) } break; - case ITEM_MODEL_DISPLAY_TRIMS: + case ITEM_MODEL_SETUP_DISPLAY_TRIMS: g_model.displayTrims = editChoice(MODEL_SETUP_2ND_COLUMN, y, STR_DISPLAY_TRIMS, STR_VDISPLAYTRIMS, g_model.displayTrims, 0, 2, attr, event); break; - case ITEM_MODEL_TRIM_INC: + case ITEM_MODEL_SETUP_TRIM_INC: g_model.trimInc = editChoice(MODEL_SETUP_2ND_COLUMN, y, STR_TRIMINC, STR_VTRIMINC, g_model.trimInc, -2, 2, attr, event); break; - case ITEM_MODEL_THROTTLE_LABEL: + case ITEM_MODEL_SETUP_THROTTLE_LABEL: lcdDrawTextAlignedLeft(y, STR_THROTTLE_LABEL); break; - case ITEM_MODEL_THROTTLE_REVERSED: + case ITEM_MODEL_SETUP_THROTTLE_REVERSED: ON_OFF_MENU_ITEM(g_model.throttleReversed, MODEL_SETUP_2ND_COLUMN, y, STR_THROTTLEREVERSE, attr, event ) ; break; - case ITEM_MODEL_THROTTLE_TRACE: + case ITEM_MODEL_SETUP_THROTTLE_TRACE: { lcdDrawTextAlignedLeft(y, STR_TTRACE); if (attr) CHECK_INCDEC_MODELVAR_ZERO_CHECK(event, g_model.thrTraceSrc, NUM_POTS+NUM_SLIDERS+MAX_OUTPUT_CHANNELS, isThrottleSourceAvailable); @@ -470,26 +471,26 @@ void menuModelSetup(event_t event) break; } - case ITEM_MODEL_THROTTLE_TRIM: + case ITEM_MODEL_SETUP_THROTTLE_TRIM: ON_OFF_MENU_ITEM(g_model.thrTrim, MODEL_SETUP_2ND_COLUMN, y, STR_TTRIM, attr, event); break; - case ITEM_MODEL_PREFLIGHT_LABEL: + case ITEM_MODEL_SETUP_PREFLIGHT_LABEL: lcdDrawTextAlignedLeft(y, STR_PREFLIGHT); break; - case ITEM_MODEL_CHECKLIST_DISPLAY: + case ITEM_MODEL_SETUP_CHECKLIST_DISPLAY: ON_OFF_MENU_ITEM(g_model.displayChecklist, MODEL_SETUP_2ND_COLUMN, y, STR_CHECKLIST, attr, event); break; - case ITEM_MODEL_THROTTLE_WARNING: + case ITEM_MODEL_SETUP_THROTTLE_WARNING: g_model.disableThrottleWarning = !editCheckBox(!g_model.disableThrottleWarning, MODEL_SETUP_2ND_COLUMN, y, STR_THROTTLEWARNING, attr, event); break; #if defined(PCBX9E) - case ITEM_MODEL_SWITCHES_WARNING2: - case ITEM_MODEL_SWITCHES_WARNING3: - case ITEM_MODEL_POTS_WARNING2: + case ITEM_MODEL_SETUP_SWITCHES_WARNING2: + case ITEM_MODEL_SETUP_SWITCHES_WARNING3: + case ITEM_MODEL_SETUP_POTS_WARNING2: if (i==0) { if (CURSOR_MOVED_LEFT(event)) menuVerticalOffset--; @@ -499,7 +500,7 @@ void menuModelSetup(event_t event) break; #endif - case ITEM_MODEL_SWITCHES_WARNING: + case ITEM_MODEL_SETUP_SWITCHES_WARNING1: { #if defined(PCBX9E) if (i>=NUM_BODY_LINES-2 && getSwitchWarningsCount() > 8*(NUM_BODY_LINES-i)) { @@ -562,7 +563,7 @@ void menuModelSetup(event_t event) break; } - case ITEM_MODEL_POTS_WARNING: + case ITEM_MODEL_SETUP_POTS_WARNING: #if defined(PCBX9E) if (i==NUM_BODY_LINES-1 && g_model.potsWarnMode) { if (CURSOR_MOVED_LEFT(event)) @@ -632,7 +633,7 @@ void menuModelSetup(event_t event) } break; - case ITEM_MODEL_BEEP_CENTER: + case ITEM_MODEL_SETUP_BEEP_CENTER: { lcdDrawTextAlignedLeft(y, STR_BEEPCTR); coord_t x = MODEL_SETUP_2ND_COLUMN; @@ -656,18 +657,18 @@ void menuModelSetup(event_t event) break; } - case ITEM_MODEL_USE_GLOBAL_FUNCTIONS: + case ITEM_MODEL_SETUP_USE_GLOBAL_FUNCTIONS: lcdDrawTextAlignedLeft(y, STR_USE_GLOBAL_FUNCS); drawCheckBox(MODEL_SETUP_2ND_COLUMN, y, !g_model.noGlobalFunctions, attr); if (attr) g_model.noGlobalFunctions = !checkIncDecModel(event, !g_model.noGlobalFunctions, 0, 1); break; - case ITEM_MODEL_INTERNAL_MODULE_LABEL: + case ITEM_MODEL_SETUP_INTERNAL_MODULE_LABEL: lcdDrawTextAlignedLeft(y, TR_INTERNALRF); break; #if defined(INTERNAL_MODULE_PPM) - case ITEM_MODEL_INTERNAL_MODULE_MODE: + case ITEM_MODEL_SETUP_INTERNAL_MODULE_MODE: lcdDrawTextAlignedLeft(y, STR_MODE); lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_MODULE_PROTOCOLS, g_model.moduleData[INTERNAL_MODULE].type, menuHorizontalPosition==0 ? attr : 0); if (isModuleXJT(INTERNAL_MODULE)) @@ -675,7 +676,7 @@ void menuModelSetup(event_t event) if (attr && s_editMode>0) { switch (menuHorizontalPosition) { case 0: - g_model.moduleData[INTERNAL_MODULE].type = checkIncDec(event, g_model.moduleData[INTERNAL_MODULE].type, MODULE_TYPE_NONE, MODULE_TYPE_PXX_XJT, EE_MODEL, isModuleAvailable); + g_model.moduleData[INTERNAL_MODULE].type = checkIncDec(event, g_model.moduleData[INTERNAL_MODULE].type, MODULE_TYPE_NONE, MODULE_TYPE_PXX1_XJT, EE_MODEL, isModuleAvailable); if (checkIncDec_Ret) { g_model.moduleData[INTERNAL_MODULE].rfProtocol = 0; g_model.moduleData[INTERNAL_MODULE].channelsStart = 0; @@ -683,7 +684,7 @@ void menuModelSetup(event_t event) } break; case 1: - g_model.moduleData[INTERNAL_MODULE].rfProtocol = checkIncDec(event, g_model.moduleData[INTERNAL_MODULE].rfProtocol, ACCST_RF_PROTO_D16, ACCST_RF_PROTO_LAST, EE_MODEL, isRfProtocolAvailable); + g_model.moduleData[INTERNAL_MODULE].rfProtocol = checkIncDec(event, g_model.moduleData[INTERNAL_MODULE].rfProtocol, MODULE_SUBTYPE_PXX1_ACCST_D16, MODULE_SUBTYPE_PXX1_LAST, EE_MODEL, isRfProtocolAvailable); if (checkIncDec_Ret) { g_model.moduleData[INTERNAL_MODULE].channelsStart = 0; g_model.moduleData[INTERNAL_MODULE].channelsCount = defaultModuleChannels_M8(INTERNAL_MODULE); @@ -692,24 +693,24 @@ void menuModelSetup(event_t event) } break; #else - case ITEM_MODEL_INTERNAL_MODULE_MODE: + case ITEM_MODEL_SETUP_INTERNAL_MODULE_MODE: lcdDrawTextAlignedLeft(y, STR_MODE); lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_ACCST_RF_PROTOCOLS, 1+g_model.moduleData[0].rfProtocol, attr); if (attr) { - g_model.moduleData[INTERNAL_MODULE].rfProtocol = checkIncDec(event, g_model.moduleData[INTERNAL_MODULE].rfProtocol, -1, ACCST_RF_PROTO_LAST, EE_MODEL, isRfProtocolAvailable); + g_model.moduleData[INTERNAL_MODULE].rfProtocol = checkIncDec(event, g_model.moduleData[INTERNAL_MODULE].rfProtocol, -1, MODULE_SUBTYPE_PXX1_LAST, EE_MODEL, isRfProtocolAvailable); if (checkIncDec_Ret) { - g_model.moduleData[INTERNAL_MODULE].type = MODULE_TYPE_PXX_XJT; + g_model.moduleData[INTERNAL_MODULE].type = MODULE_TYPE_PXX1_XJT; g_model.moduleData[INTERNAL_MODULE].channelsStart = 0; g_model.moduleData[INTERNAL_MODULE].channelsCount = defaultModuleChannels_M8(INTERNAL_MODULE); - if (g_model.moduleData[INTERNAL_MODULE].rfProtocol == ACCST_RF_PROTO_OFF) + if (g_model.moduleData[INTERNAL_MODULE].rfProtocol == MODULE_SUBTYPE_PXX1_OFF) g_model.moduleData[INTERNAL_MODULE].type = MODULE_TYPE_NONE; } } break; #endif - case ITEM_MODEL_TRAINER_MODE: + case ITEM_MODEL_SETUP_TRAINER_MODE: lcdDrawTextAlignedLeft(y, STR_MODE); lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_VTRAINERMODES, g_model.trainerData.mode, attr); if (attr) { @@ -723,11 +724,11 @@ void menuModelSetup(event_t event) #endif break; - case ITEM_MODEL_EXTERNAL_MODULE_LABEL: + case ITEM_MODEL_SETUP_EXTERNAL_MODULE_LABEL: lcdDrawTextAlignedLeft(y, TR_EXTERNALRF); break; - case ITEM_MODEL_EXTERNAL_MODULE_MODE: + case ITEM_MODEL_SETUP_EXTERNAL_MODULE_MODE: lcdDrawTextAlignedLeft(y, STR_MODE); lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_MODULE_PROTOCOLS, g_model.moduleData[EXTERNAL_MODULE].type, menuHorizontalPosition==0 ? attr : 0); if (isModuleXJT(EXTERNAL_MODULE)) @@ -774,15 +775,15 @@ void menuModelSetup(event_t event) 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); + 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 == MM_RF_PROTO_CUSTOM); + 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) == MM_RF_PROTO_DSM2) { + if (g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(true) == MODULE_SUBTYPE_MULTI_DSM2) { g_model.moduleData[EXTERNAL_MODULE].multi.autoBindMode = 1; } else { @@ -802,7 +803,7 @@ void menuModelSetup(event_t event) g_model.moduleData[EXTERNAL_MODULE].subType = newR9MType; } else { - g_model.moduleData[EXTERNAL_MODULE].rfProtocol = checkIncDec(event, g_model.moduleData[EXTERNAL_MODULE].rfProtocol, ACCST_RF_PROTO_D16, ACCST_RF_PROTO_LAST, EE_MODEL, isRfProtocolAvailable); + 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; @@ -830,12 +831,12 @@ void menuModelSetup(event_t event) } break; - case ITEM_MODEL_TRAINER_LABEL: + case ITEM_MODEL_SETUP_TRAINER_LABEL: lcdDrawTextAlignedLeft(y, STR_TRAINER); break; #if defined(BLUETOOTH) && defined(USEHORUSBT) - case ITEM_MODEL_TRAINER_LINE1: + case ITEM_MODEL_SETUP_TRAINER_LINE1: if (g_model.trainerData.mode == TRAINER_MODE_MASTER_BLUETOOTH) { if (attr) { s_editMode = 0; @@ -876,7 +877,7 @@ void menuModelSetup(event_t event) } // no break #else - case ITEM_MODEL_TRAINER_LINE1: + case ITEM_MODEL_SETUP_TRAINER_LINE1: lcdDrawTextAlignedLeft(y, STR_CHANNELRANGE); lcdDrawText(MODEL_SETUP_2ND_COLUMN, y, STR_CH, menuHorizontalPosition==0 ? attr : 0); lcdDrawNumber(lcdLastRightPos, y, g_model.trainerData.channelsStart+1, LEFT | (menuHorizontalPosition==0 ? attr : 0)); @@ -895,8 +896,8 @@ void menuModelSetup(event_t event) break; #endif - case ITEM_MODEL_INTERNAL_MODULE_CHANNELS: - case ITEM_MODEL_EXTERNAL_MODULE_CHANNELS: + case ITEM_MODEL_SETUP_INTERNAL_MODULE_CHANNELS: + case ITEM_MODEL_SETUP_EXTERNAL_MODULE_CHANNELS: { uint8_t moduleIdx = CURRENT_MODULE_EDITED(k); ModuleData & moduleData = g_model.moduleData[moduleIdx]; @@ -920,11 +921,11 @@ void menuModelSetup(event_t event) case 1: CHECK_INCDEC_MODELVAR(event, moduleData.channelsCount, -4, min(maxModuleChannels_M8(moduleIdx), 32-8-moduleData.channelsStart)); #if defined(INTERNAL_MODULE_PPM) - if ((k == ITEM_MODEL_EXTERNAL_MODULE_CHANNELS && g_model.moduleData[EXTERNAL_MODULE].type == MODULE_TYPE_PPM) || (k == ITEM_MODEL_INTERNAL_MODULE_CHANNELS && g_model.moduleData[INTERNAL_MODULE].type == MODULE_TYPE_PPM) || (k == ITEM_MODEL_TRAINER_LINE1)) { + if ((k == ITEM_MODEL_SETUP_EXTERNAL_MODULE_CHANNELS && g_model.moduleData[EXTERNAL_MODULE].type == MODULE_TYPE_PPM) || (k == ITEM_MODEL_SETUP_INTERNAL_MODULE_CHANNELS && g_model.moduleData[INTERNAL_MODULE].type == MODULE_TYPE_PPM) || (k == ITEM_MODEL_SETUP_TRAINER_LINE1)) { SET_DEFAULT_PPM_FRAME_LENGTH(moduleIdx); } #else - if ((k == ITEM_MODEL_EXTERNAL_MODULE_CHANNELS && g_model.moduleData[EXTERNAL_MODULE].type == MODULE_TYPE_PPM) || (k == ITEM_MODEL_TRAINER_LINE1)) { + if ((k == ITEM_MODEL_SETUP_EXTERNAL_MODULE_CHANNELS && g_model.moduleData[EXTERNAL_MODULE].type == MODULE_TYPE_PPM) || (k == ITEM_MODEL_SETUP_TRAINER_LINE1)) { SET_DEFAULT_PPM_FRAME_LENGTH(moduleIdx); } #endif @@ -935,7 +936,7 @@ void menuModelSetup(event_t event) break; } - case ITEM_MODEL_TRAINER_LINE2: + case ITEM_MODEL_SETUP_TRAINER_LINE2: lcdDrawTextAlignedLeft(y, STR_PPMFRAME); lcdDrawNumber(MODEL_SETUP_2ND_COLUMN, y, (int16_t)g_model.trainerData.frameLength*5 + 225, (menuHorizontalPosition<=0 ? attr : 0) | PREC1|LEFT); lcdDrawText(lcdLastRightPos, y, STR_MS); @@ -957,8 +958,8 @@ void menuModelSetup(event_t event) } break; - case ITEM_MODEL_INTERNAL_MODULE_BIND: - case ITEM_MODEL_EXTERNAL_MODULE_BIND: + case ITEM_MODEL_SETUP_INTERNAL_MODULE_BIND: + case ITEM_MODEL_SETUP_EXTERNAL_MODULE_BIND: { uint8_t moduleIdx = CURRENT_MODULE_EDITED(k); ModuleData & moduleData = g_model.moduleData[moduleIdx]; @@ -1004,7 +1005,7 @@ void menuModelSetup(event_t event) else { horzpos_t l_posHorz = menuHorizontalPosition; coord_t xOffsetBind = MODEL_SETUP_BIND_OFS; - if (isModuleXJT(moduleIdx) && g_model.moduleData[moduleIdx].rfProtocol == ACCST_RF_PROTO_D8) { + if (isModuleXJT(moduleIdx) && g_model.moduleData[moduleIdx].rfProtocol == MODULE_SUBTYPE_PXX1_ACCST_D8) { xOffsetBind = 0; lcdDrawTextAlignedLeft(y, STR_RECEIVER); if (attr) l_posHorz += 1; @@ -1043,7 +1044,7 @@ void menuModelSetup(event_t event) if (attr && l_posHorz>0) { if (s_editMode>0) { if (l_posHorz == 1) { - if (isModuleR9M(moduleIdx) || (isModuleXJT(moduleIdx) && g_model.moduleData[moduleIdx].rfProtocol == ACCST_RF_PROTO_D16)) { + if (isModuleR9M(moduleIdx) || (isModuleXJT(moduleIdx) && g_model.moduleData[moduleIdx].rfProtocol == MODULE_SUBTYPE_PXX1_ACCST_D16)) { if (event == EVT_KEY_BREAK(KEY_ENTER)) { uint8_t default_selection = 0; // R9M_LBT should default to 0 as available options are variables if (isModuleR9M_LBT(moduleIdx)) { @@ -1096,8 +1097,8 @@ void menuModelSetup(event_t event) break; } - case ITEM_MODEL_INTERNAL_MODULE_FAILSAFE: - case ITEM_MODEL_EXTERNAL_MODULE_FAILSAFE: + case ITEM_MODEL_SETUP_INTERNAL_MODULE_FAILSAFE: + case ITEM_MODEL_SETUP_EXTERNAL_MODULE_FAILSAFE: { uint8_t moduleIdx = CURRENT_MODULE_EDITED(k); ModuleData & moduleData = g_model.moduleData[moduleIdx]; @@ -1138,7 +1139,7 @@ void menuModelSetup(event_t event) } break; - case ITEM_MODEL_EXTERNAL_MODULE_OPTIONS: + case ITEM_MODEL_SETUP_EXTERNAL_MODULE_OPTIONS: { uint8_t moduleIdx = CURRENT_MODULE_EDITED(k); #if defined(MULTIMODULE) @@ -1151,15 +1152,15 @@ void menuModelSetup(event_t event) if (pdef->optionsstr) lcdDrawText(INDENT_WIDTH, y, pdef->optionsstr); - if (multi_proto == MM_RF_PROTO_FS_AFHDS2A) + if (multi_proto == MODULE_SUBTYPE_MULTI_FS_AFHDS2A) optionValue = 50 + 5 * optionValue; lcdDrawNumber(MODEL_SETUP_2ND_COLUMN, y, optionValue, LEFT | attr); if (attr) { - if (multi_proto == MM_RF_PROTO_FS_AFHDS2A) { + if (multi_proto == MODULE_SUBTYPE_MULTI_FS_AFHDS2A) { CHECK_INCDEC_MODELVAR(event, g_model.moduleData[moduleIdx].multi.optionValue, 0, 70); } - else if (multi_proto == MM_RF_PROTO_OLRS) { + else if (multi_proto == MODULE_SUBTYPE_MULTI_OLRS) { CHECK_INCDEC_MODELVAR(event, g_model.moduleData[moduleIdx].multi.optionValue, -1, 7); } else { @@ -1184,7 +1185,7 @@ void menuModelSetup(event_t event) } break; - case ITEM_MODEL_EXTERNAL_MODULE_POWER: + case ITEM_MODEL_SETUP_EXTERNAL_MODULE_POWER: { uint8_t moduleIdx = CURRENT_MODULE_EDITED(k); if (isModuleR9M(moduleIdx)) { @@ -1214,13 +1215,13 @@ void menuModelSetup(event_t event) } #if defined (MULTIMODULE) - case ITEM_MODEL_EXTERNAL_MODULE_AUTOBIND: - if (g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(true) == MM_RF_PROTO_DSM2) + case ITEM_MODEL_SETUP_EXTERNAL_MODULE_AUTOBIND: + if (g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(true) == MODULE_SUBTYPE_MULTI_DSM2) g_model.moduleData[EXTERNAL_MODULE].multi.autoBindMode = editCheckBox(g_model.moduleData[EXTERNAL_MODULE].multi.autoBindMode, MODEL_SETUP_2ND_COLUMN, y, STR_MULTI_DSM_AUTODTECT, attr, event); else g_model.moduleData[EXTERNAL_MODULE].multi.autoBindMode = editCheckBox(g_model.moduleData[EXTERNAL_MODULE].multi.autoBindMode, MODEL_SETUP_2ND_COLUMN, y, STR_MULTI_AUTOBIND, attr, event); break; - case ITEM_MODEL_EXTERNAL_MODULE_STATUS: + case ITEM_MODEL_SETUP_EXTERNAL_MODULE_STATUS: { lcdDrawTextAlignedLeft(y, STR_MODULE_STATUS); char statusText[64]; @@ -1228,7 +1229,7 @@ void menuModelSetup(event_t event) lcdDrawText(MODEL_SETUP_2ND_COLUMN, y, statusText); break; } - case ITEM_MODEL_EXTERNAL_MODULE_SYNCSTATUS: { + case ITEM_MODEL_SETUP_EXTERNAL_MODULE_SYNCSTATUS: { lcdDrawTextAlignedLeft(y, STR_MODULE_SYNC); char statusText[64]; @@ -1249,12 +1250,12 @@ void menuModelSetup(event_t event) if (old_editMode > 0 && s_editMode == 0) { switch(menuVerticalPosition) { - case ITEM_MODEL_INTERNAL_MODULE_BIND: + case ITEM_MODEL_SETUP_INTERNAL_MODULE_BIND: if (menuHorizontalPosition == 0) checkModelIdUnique(g_eeGeneral.currModel, INTERNAL_MODULE); break; - case ITEM_MODEL_EXTERNAL_MODULE_BIND: + case ITEM_MODEL_SETUP_EXTERNAL_MODULE_BIND: if (menuHorizontalPosition == 0) checkModelIdUnique(g_eeGeneral.currModel, EXTERNAL_MODULE); break; diff --git a/radio/src/gui/212x64/model_telemetry.cpp b/radio/src/gui/212x64/model_telemetry.cpp index c496ae687..42661edab 100644 --- a/radio/src/gui/212x64/model_telemetry.cpp +++ b/radio/src/gui/212x64/model_telemetry.cpp @@ -214,9 +214,9 @@ void menuModelTelemetryFrsky(event_t event) case ITEM_TELEMETRY_RSSI_LABEL: #if defined(MULTIMODULE) - if (g_model.moduleData[INTERNAL_MODULE].type != MODULE_TYPE_PXX_XJT && + if (g_model.moduleData[INTERNAL_MODULE].type != MODULE_TYPE_PXX1_XJT && g_model.moduleData[EXTERNAL_MODULE].type == MODULE_TYPE_MULTIMODULE && - g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(false) == MM_RF_PROTO_FS_AFHDS2A) + g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(false) == MODULE_SUBTYPE_MULTI_FS_AFHDS2A) lcdDrawTextAlignedLeft(y, "RSNR"); else #endif diff --git a/radio/src/gui/480x272/model_setup.cpp b/radio/src/gui/480x272/model_setup.cpp index ad3a5dcb0..7540adae8 100644 --- a/radio/src/gui/480x272/model_setup.cpp +++ b/radio/src/gui/480x272/model_setup.cpp @@ -941,9 +941,9 @@ bool menuModelSetup(event_t event) } } else if (isModuleXJT(INTERNAL_MODULE)) { - g_model.moduleData[INTERNAL_MODULE].rfProtocol = checkIncDec(event, g_model.moduleData[INTERNAL_MODULE].rfProtocol, ACCST_RF_PROTO_D16, ACCST_RF_PROTO_LAST, EE_MODEL, isRfProtocolAvailable); + g_model.moduleData[INTERNAL_MODULE].rfProtocol = checkIncDec(event, g_model.moduleData[INTERNAL_MODULE].rfProtocol, MODULE_SUBTYPE_PXX1_ACCST_D16, MODULE_SUBTYPE_PXX1_LAST, EE_MODEL, isRfProtocolAvailable); if (checkIncDec_Ret) { - g_model.moduleData[0].type = MODULE_TYPE_PXX_XJT; + g_model.moduleData[0].type = MODULE_TYPE_PXX1_XJT; g_model.moduleData[0].channelsStart = 0; g_model.moduleData[0].channelsCount = defaultModuleChannels_M8(INTERNAL_MODULE); } @@ -1161,15 +1161,15 @@ bool menuModelSetup(event_t event) 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); + 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 == MM_RF_PROTO_CUSTOM); + 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) == MM_RF_PROTO_DSM2) { + if (g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(true) == MODULE_SUBTYPE_MULTI_DSM2) { g_model.moduleData[EXTERNAL_MODULE].multi.autoBindMode = 1; } else { @@ -1189,7 +1189,7 @@ bool menuModelSetup(event_t event) g_model.moduleData[EXTERNAL_MODULE].subType = newR9MType; } else { - CHECK_INCDEC_MODELVAR(event, g_model.moduleData[EXTERNAL_MODULE].rfProtocol, ACCST_RF_PROTO_D16, ACCST_RF_PROTO_LAST); + 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; @@ -1394,7 +1394,7 @@ bool menuModelSetup(event_t event) if (attr && l_posHorz>0) { if (s_editMode>0) { if (l_posHorz == 1) { - if (isModuleR9M(moduleIdx) || (isModuleXJT(moduleIdx) && g_model.moduleData[moduleIdx].rfProtocol == ACCST_RF_PROTO_D16)) { + if (isModuleR9M(moduleIdx) || (isModuleXJT(moduleIdx) && g_model.moduleData[moduleIdx].rfProtocol == MODULE_SUBTYPE_PXX1_ACCST_D16)) { if (event == EVT_KEY_BREAK(KEY_ENTER)) { uint8_t default_selection = 0; // R9M_LBT should default to 0 as available options are variables if (isModuleR9M_LBT(moduleIdx)) { @@ -1501,15 +1501,15 @@ bool menuModelSetup(event_t event) if (pdef->optionsstr) lcdDrawText(MENUS_MARGIN_LEFT, y, pdef->optionsstr); - if (multi_proto == MM_RF_PROTO_FS_AFHDS2A) + if (multi_proto == MODULE_SUBTYPE_MULTI_FS_AFHDS2A) optionValue = 50 + 5 * optionValue; lcdDrawNumber(MODEL_SETUP_2ND_COLUMN, y, optionValue, LEFT | attr); if (attr) { - if (multi_proto == MM_RF_PROTO_FS_AFHDS2A) { + if (multi_proto == MODULE_SUBTYPE_MULTI_FS_AFHDS2A) { CHECK_INCDEC_MODELVAR(event, g_model.moduleData[moduleIdx].multi.optionValue, 0, 70); } - else if (multi_proto == MM_RF_PROTO_OLRS) { + else if (multi_proto == MODULE_SUBTYPE_MULTI_OLRS) { CHECK_INCDEC_MODELVAR(event, g_model.moduleData[moduleIdx].multi.optionValue, -1, 7); } else { @@ -1559,7 +1559,7 @@ bool menuModelSetup(event_t event) #if defined(MULTIMODULE) case ITEM_MODEL_EXTERNAL_MODULE_AUTOBIND: - if (g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(true) == MM_RF_PROTO_DSM2) + if (g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(true) == MODULE_SUBTYPE_MULTI_DSM2) lcdDrawText(MENUS_MARGIN_LEFT, y, STR_MULTI_DSM_AUTODTECT); else lcdDrawText(MENUS_MARGIN_LEFT, y, STR_MULTI_AUTOBIND); diff --git a/radio/src/gui/480x272/model_telemetry.cpp b/radio/src/gui/480x272/model_telemetry.cpp index ad18a24ae..ae8a8aeda 100644 --- a/radio/src/gui/480x272/model_telemetry.cpp +++ b/radio/src/gui/480x272/model_telemetry.cpp @@ -114,7 +114,7 @@ enum MenuModelTelemetryFrskyItems { #define VARIO_ROWS #endif #define RSSI_ROWS LABEL(RSSI), 0, 0, 0, -#define TELEMETRY_TYPE_ROWS (g_model.moduleData[INTERNAL_MODULE].rfProtocol == ACCST_RF_PROTO_OFF && g_model.moduleData[EXTERNAL_MODULE].type == MODULE_TYPE_PPM) ? (uint8_t)0 : HIDDEN_ROW, +#define TELEMETRY_TYPE_ROWS (g_model.moduleData[INTERNAL_MODULE].rfProtocol == MODULE_SUBTYPE_PXX1_OFF && g_model.moduleData[EXTERNAL_MODULE].type == MODULE_TYPE_PPM) ? (uint8_t)0 : HIDDEN_ROW, void onSensorMenu(const char * result) { @@ -274,7 +274,7 @@ bool menuModelTelemetryFrsky(event_t event) #if defined(MULTIMODULE) if (!IS_INTERNAL_MODULE_ON() && g_model.moduleData[EXTERNAL_MODULE].type == MODULE_TYPE_MULTIMODULE && - g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(false) == MM_RF_PROTO_FS_AFHDS2A) + g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(false) == MODULE_SUBTYPE_MULTI_FS_AFHDS2A) lcdDrawText(MENUS_MARGIN_LEFT, y, "RSNR"); else #endif diff --git a/radio/src/gui/gui_common.cpp b/radio/src/gui/gui_common.cpp index 6a2eff55d..d490a02b5 100644 --- a/radio/src/gui/gui_common.cpp +++ b/radio/src/gui/gui_common.cpp @@ -514,7 +514,7 @@ bool isSourceAvailableInResetSpecialFunction(int index) #if defined(PCBXLITE) bool isR9MModeAvailable(int mode) { -#if defined(MODULE_R9M_FLEX_FW) +#if defined(MODULE_R9M_FLEX) return mode >= MODULE_SUBTYPE_R9M_EUPLUS; #else return mode <= MODULE_SUBTYPE_R9M_EU; @@ -524,7 +524,7 @@ bool isR9MModeAvailable(int mode) #else bool isR9MModeAvailable(int mode) { -#if defined(MODULE_R9M_FLEX_FW) +#if defined(MODULE_R9M_FLEX) return mode < MODULE_SUBTYPE_R9M_EUPLUS; #else return true; @@ -532,9 +532,12 @@ bool isR9MModeAvailable(int mode) } #endif -bool isPXX2ChannelsCountAllowed(int channels) +bool isPxx2IsrmChannelsCountAllowed(int channels) { - return (channels % 8 == 0); + if (g_model.moduleData[INTERNAL_MODULE].rfProtocol == MODULE_SUBTYPE_PXX1_ACCST_D16) + return (channels <= 8); + else + return (channels % 8 == 0); } bool isModuleUSingSport(uint8_t moduleBay, uint8_t moduleType) @@ -545,11 +548,11 @@ bool isModuleUSingSport(uint8_t moduleBay, uint8_t moduleType) case MODULE_TYPE_PPM: case MODULE_TYPE_DSM2: case MODULE_TYPE_MULTIMODULE: - case MODULE_TYPE_ACCESS_R9M_LITE: - case MODULE_TYPE_ACCESS_R9M_LITE_PRO: + case MODULE_TYPE_PXX2_R9M_LITE: + case MODULE_TYPE_PXX2_R9M_LITE_PRO: return false; - case MODULE_TYPE_ACCESS_ISRM: + case MODULE_TYPE_PXX2_ISRM: if (moduleBay == EXTERNAL_MODULE) return false; @@ -569,15 +572,15 @@ bool isInternalModuleAvailable(int moduleType) return true; #if defined(PXX1) && defined(INTERNAL_MODULE_PXX1) - if (moduleType == MODULE_TYPE_PXX_XJT) + if (moduleType == MODULE_TYPE_PXX1_XJT) return !isModuleUSingSport(EXTERNAL_MODULE, g_model.moduleData[EXTERNAL_MODULE].type); #else - if (moduleType == MODULE_TYPE_PXX_XJT) + if (moduleType == MODULE_TYPE_PXX1_XJT) return false; #endif #if defined(PXX2) - if (moduleType == MODULE_TYPE_ACCESS_ISRM) + if (moduleType == MODULE_TYPE_PXX2_ISRM) #if defined(INTMODULE_USART) return true; #else @@ -592,25 +595,25 @@ bool isInternalModuleAvailable(int moduleType) bool isExternalModuleAvailable(int moduleType) { #if !defined(PCBXLITE) && !defined(PCBX9LITE) - if (moduleType == MODULE_TYPE_PXX_R9M_LITE || moduleType == MODULE_TYPE_ACCESS_R9M_LITE || moduleType == MODULE_TYPE_ACCESS_R9M_LITE_PRO) + if (moduleType == MODULE_TYPE_PXX1_R9M_LITE || moduleType == MODULE_TYPE_PXX2_R9M_LITE || moduleType == MODULE_TYPE_PXX2_R9M_LITE_PRO) return false; #endif #if !defined(PXX1) - if (moduleType == MODULE_TYPE_PXX_XJT || moduleType == MODULE_TYPE_PXX_R9M || moduleType == MODULE_TYPE_PXX_R9M_LITE) + if (moduleType == MODULE_TYPE_PXX1_XJT || moduleType == MODULE_TYPE_PXX1_R9M || moduleType == MODULE_TYPE_PXX1_R9M_LITE) return false; #endif #if defined(FRSKY_RELEASE) - if (moduleType == MODULE_TYPE_PXX_R9M) + if (moduleType == MODULE_TYPE_PXX1_R9M) return false; #endif - if (moduleType == MODULE_TYPE_ACCESS_ISRM || moduleType == MODULE_TYPE_ACCESS_R9M) + if (moduleType == MODULE_TYPE_PXX2_ISRM || moduleType == MODULE_TYPE_PXX2_R9M) return false; #if !defined(PXX2) - if (moduleType == MODULE_TYPE_ACCESS_R9M || moduleType == MODULE_TYPE_ACCESS_R9M_LITE || moduleType == MODULE_TYPE_ACCESS_R9M_LITE_PRO) { + if (moduleType == MODULE_TYPE_PXX2_R9M || moduleType == MODULE_TYPE_PXX2_R9M_LITE || moduleType == MODULE_TYPE_PXX2_R9M_LITE_PRO) { return false; } #endif @@ -651,20 +654,20 @@ bool isExternalModuleAvailable(int moduleType) bool isRfProtocolAvailable(int protocol) { #if defined(CROSSFIRE) - if (protocol != ACCST_RF_PROTO_OFF && g_model.moduleData[EXTERNAL_MODULE].type == MODULE_TYPE_CROSSFIRE) { + if (protocol != MODULE_SUBTYPE_PXX1_OFF && g_model.moduleData[EXTERNAL_MODULE].type == MODULE_TYPE_CROSSFIRE) { return false; } #endif #if defined(MODULE_D16_EU_ONLY_SUPPORT) - if (protocol == ACCST_RF_PROTO_D8) { + if (protocol == MODULE_SUBTYPE_PXX1_ACCST_D8) { return false; } #endif #if defined(PCBTARANIS) || defined(PCBHORUS) - if (protocol != ACCST_RF_PROTO_OFF && g_model.moduleData[EXTERNAL_MODULE].type == MODULE_TYPE_PXX_R9M) { + if (protocol != MODULE_SUBTYPE_PXX1_OFF && g_model.moduleData[EXTERNAL_MODULE].type == MODULE_TYPE_PXX1_R9M) { return false; } - if (protocol != ACCST_RF_PROTO_OFF && g_model.moduleData[EXTERNAL_MODULE].type == MODULE_TYPE_ACCESS_R9M) { + if (protocol != MODULE_SUBTYPE_PXX1_OFF && g_model.moduleData[EXTERNAL_MODULE].type == MODULE_TYPE_PXX2_R9M) { return false; } #endif @@ -834,36 +837,36 @@ const char STR_SUBTYPE_BUGS_MINI[] = "\006""Std\0 ""BUGS3H"; const mm_protocol_definition multi_protocols[] = { - {MM_RF_PROTO_FLYSKY, 4, false, STR_SUBTYPE_FLYSKY, nullptr}, - {MM_RF_PROTO_HUBSAN, 2, false, STR_SUBTYPE_HUBSAN, STR_MULTI_VIDFREQ}, - {MM_RF_PROTO_FRSKY, 5, false, STR_SUBTYPE_FRSKY, STR_MULTI_RFTUNE}, - {MM_RF_PROTO_HISKY, 1, false, STR_SUBTYPE_HISKY, nullptr}, - {MM_RF_PROTO_V2X2, 1, false, STR_SUBTYPE_V2X2, nullptr}, - {MM_RF_PROTO_DSM2, 3, false, STR_SUBTYPE_DSM, nullptr}, - {MM_RF_PROTO_YD717, 4, false, STR_SUBTYPE_YD717, nullptr}, - {MM_RF_PROTO_KN, 1, false, STR_SUBTYPE_KN, nullptr}, - {MM_RF_PROTO_SYMAX, 1, false, STR_SUBTYPE_SYMAX, nullptr}, - {MM_RF_PROTO_SLT, 4, false, STR_SUBTYPE_SLT, nullptr}, - {MM_RF_PROTO_CX10, 6, false, STR_SUBTYPE_CX10, nullptr}, - {MM_RF_PROTO_CG023, 1, false, STR_SUBTYPE_CG023, nullptr}, - {MM_RF_PROTO_BAYANG, 3, false, STR_SUBTYPE_BAYANG, STR_MULTI_TELEMETRY}, - {MM_RF_PROTO_MT99XX, 4, false, STR_SUBTYPE_MT99, nullptr}, - {MM_RF_PROTO_MJXQ, 6, false, STR_SUBTYPE_MJXQ, STR_MULTI_RFTUNE}, - {MM_RF_PROTO_FY326, 1, false, STR_SUBTYPE_FY326, nullptr}, - {MM_RF_PROTO_SFHSS, 0, true, NO_SUBTYPE, STR_MULTI_RFTUNE}, - {MM_RF_PROTO_HONTAI, 3, false, STR_SUBTYPE_HONTAI, nullptr}, - {MM_RF_PROTO_OLRS, 0, false, NO_SUBTYPE, STR_MULTI_RFPOWER}, - {MM_RF_PROTO_FS_AFHDS2A, 3, true, STR_SUBTYPE_AFHDS2A, STR_MULTI_SERVOFREQ}, - {MM_RF_PROTO_Q2X2, 2, false, STR_SUBTYPE_Q2X2, nullptr}, - {MM_RF_PROTO_WK_2X01, 5, false, STR_SUBTYPE_WK2x01, nullptr}, - {MM_RF_PROTO_Q303, 3, false, STR_SUBTYPE_Q303, nullptr}, - {MM_RF_PROTO_CABELL, 7, false, STR_SUBTYPE_CABELL, STR_MULTI_OPTION}, - {MM_RF_PROTO_H83D, 3, false, STR_SUBTYPE_H83D, nullptr}, - {MM_RF_PROTO_CORONA, 2, false, STR_SUBTYPE_CORONA, STR_MULTI_RFTUNE}, - {MM_RF_PROTO_HITEC, 2, false, STR_SUBTYPE_HITEC, STR_MULTI_RFTUNE}, - {MM_RF_PROTO_E01X, 2, false, STR_SUBTYPE_E01X, nullptr}, - {MM_RF_PROTO_GD00X, 1, false, STR_SUBTYPE_GD00X, nullptr}, - {MM_RF_PROTO_BUGS_MINI, 1, false, STR_SUBTYPE_BUGS_MINI,nullptr}, + {MODULE_SUBTYPE_MULTI_FLYSKY, 4, false, STR_SUBTYPE_FLYSKY, nullptr}, + {MODULE_SUBTYPE_MULTI_HUBSAN, 2, false, STR_SUBTYPE_HUBSAN, STR_MULTI_VIDFREQ}, + {MODULE_SUBTYPE_MULTI_FRSKY, 5, false, STR_SUBTYPE_FRSKY, STR_MULTI_RFTUNE}, + {MODULE_SUBTYPE_MULTI_HISKY, 1, false, STR_SUBTYPE_HISKY, nullptr}, + {MODULE_SUBTYPE_MULTI_V2X2, 1, false, STR_SUBTYPE_V2X2, nullptr}, + {MODULE_SUBTYPE_MULTI_DSM2, 3, false, STR_SUBTYPE_DSM, nullptr}, + {MODULE_SUBTYPE_MULTI_YD717, 4, false, STR_SUBTYPE_YD717, nullptr}, + {MODULE_SUBTYPE_MULTI_KN, 1, false, STR_SUBTYPE_KN, nullptr}, + {MODULE_SUBTYPE_MULTI_SYMAX, 1, false, STR_SUBTYPE_SYMAX, nullptr}, + {MODULE_SUBTYPE_MULTI_SLT, 4, false, STR_SUBTYPE_SLT, nullptr}, + {MODULE_SUBTYPE_MULTI_CX10, 6, false, STR_SUBTYPE_CX10, nullptr}, + {MODULE_SUBTYPE_MULTI_CG023, 1, false, STR_SUBTYPE_CG023, nullptr}, + {MODULE_SUBTYPE_MULTI_BAYANG, 3, false, STR_SUBTYPE_BAYANG, STR_MULTI_TELEMETRY}, + {MODULE_SUBTYPE_MULTI_MT99XX, 4, false, STR_SUBTYPE_MT99, nullptr}, + {MODULE_SUBTYPE_MULTI_MJXQ, 6, false, STR_SUBTYPE_MJXQ, STR_MULTI_RFTUNE}, + {MODULE_SUBTYPE_MULTI_FY326, 1, false, STR_SUBTYPE_FY326, nullptr}, + {MODULE_SUBTYPE_MULTI_SFHSS, 0, true, NO_SUBTYPE, STR_MULTI_RFTUNE}, + {MODULE_SUBTYPE_MULTI_HONTAI, 3, false, STR_SUBTYPE_HONTAI, nullptr}, + {MODULE_SUBTYPE_MULTI_OLRS, 0, false, NO_SUBTYPE, STR_MULTI_RFPOWER}, + {MODULE_SUBTYPE_MULTI_FS_AFHDS2A, 3, true, STR_SUBTYPE_AFHDS2A, STR_MULTI_SERVOFREQ}, + {MODULE_SUBTYPE_MULTI_Q2X2, 2, false, STR_SUBTYPE_Q2X2, nullptr}, + {MODULE_SUBTYPE_MULTI_WK_2X01, 5, false, STR_SUBTYPE_WK2x01, nullptr}, + {MODULE_SUBTYPE_MULTI_Q303, 3, false, STR_SUBTYPE_Q303, nullptr}, + {MODULE_SUBTYPE_MULTI_CABELL, 7, false, STR_SUBTYPE_CABELL, STR_MULTI_OPTION}, + {MODULE_SUBTYPE_MULTI_H83D, 3, false, STR_SUBTYPE_H83D, nullptr}, + {MODULE_SUBTYPE_MULTI_CORONA, 2, false, STR_SUBTYPE_CORONA, STR_MULTI_RFTUNE}, + {MODULE_SUBTYPE_MULTI_HITEC, 2, false, STR_SUBTYPE_HITEC, STR_MULTI_RFTUNE}, + {MODULE_SUBTYPE_MULTI_E01X, 2, false, STR_SUBTYPE_E01X, nullptr}, + {MODULE_SUBTYPE_MULTI_GD00X, 1, false, STR_SUBTYPE_GD00X, nullptr}, + {MODULE_SUBTYPE_MULTI_BUGS_MINI, 1, false, STR_SUBTYPE_BUGS_MINI,nullptr}, {MM_RF_CUSTOM_SELECTED, 7, true, NO_SUBTYPE, STR_MULTI_OPTION}, // Sentinel and default for protocols not listed above (MM_RF_CUSTOM is 0xff) diff --git a/radio/src/gui/gui_common.h b/radio/src/gui/gui_common.h index 8c69d90b4..1c9279845 100644 --- a/radio/src/gui/gui_common.h +++ b/radio/src/gui/gui_common.h @@ -54,7 +54,7 @@ bool isSwitchAvailableInCustomFunctions(int swtch); bool isSwitchAvailableInMixes(int swtch); bool isSwitchAvailableInTimers(int swtch); bool isR9MModeAvailable(int mode); -bool isPXX2ChannelsCountAllowed(int channels); +bool isPxx2IsrmChannelsCountAllowed(int channels); bool isExternalModuleAvailable(int moduleType); bool isInternalModuleAvailable(int module); bool isRfProtocolAvailable(int protocol); @@ -116,7 +116,7 @@ void lcdDrawMMM(coord_t x, coord_t y, LcdFlags flags=0); // model_setup Defines that are used in all uis in the same way #define INTERNAL_MODULE_CHANNELS_ROWS IF_INTERNAL_MODULE_ON((uint8_t)1) -#define EXTERNAL_MODULE_CHANNELS_ROWS IF_EXTERNAL_MODULE_ON((isModuleDSM2(EXTERNAL_MODULE) || isModuleCrossfire(EXTERNAL_MODULE) || isModuleSBUS(EXTERNAL_MODULE) || (isModuleMultimodule(EXTERNAL_MODULE) && g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(true) != MM_RF_PROTO_DSM2)) ? (uint8_t)0 : (uint8_t)1) +#define EXTERNAL_MODULE_CHANNELS_ROWS IF_EXTERNAL_MODULE_ON((isModuleDSM2(EXTERNAL_MODULE) || isModuleCrossfire(EXTERNAL_MODULE) || isModuleSBUS(EXTERNAL_MODULE) || (isModuleMultimodule(EXTERNAL_MODULE) && g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(true) != MODULE_SUBTYPE_MULTI_DSM2)) ? (uint8_t)0 : (uint8_t)1) #if defined(MULTIMODULE) @@ -127,7 +127,7 @@ void lcdDrawMMM(coord_t x, coord_t y, LcdFlags flags=0); #define MULTIMODULE_SUBTYPE_ROWS(x) isModuleMultimodule(x) ? MULTIMODULE_RFPROTO_ROWS(x) : HIDDEN_ROW, #define MULTIMODULE_HAS_SUBTYPE(x) (getMultiProtocolDefinition(x)->maxSubtype > 0) #define MULTIMODULE_HASOPTIONS(x) (getMultiProtocolDefinition(x)->optionsstr != nullptr) -#define MULTI_MAX_RX_NUM(x) (g_model.moduleData[x].getMultiProtocol(true) == MM_RF_PROTO_OLRS ? 4 : 15) +#define MULTI_MAX_RX_NUM(x) (g_model.moduleData[x].getMultiProtocol(true) == MODULE_SUBTYPE_MULTI_OLRS ? 4 : 15) #define MULTIMODULE_HASFAILSAFE(x) (isModuleMultimodule(x) && multiModuleStatus.isValid() && multiModuleStatus.supportsFailsafe()) #define MULTIMODULE_OPTIONS_ROW (isModuleMultimodule(EXTERNAL_MODULE) && MULTIMODULE_HASOPTIONS(g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(true))) ? (uint8_t) 0: HIDDEN_ROW @@ -153,14 +153,14 @@ const mm_protocol_definition *getMultiProtocolDefinition (uint8_t protocol); #endif #define MAX_RX_NUM(x) (isModuleDSM2(x) ? 20 : isModuleMultimodule(x) ? MULTI_MAX_RX_NUM(x) : 63) -#define IS_D8_RX(x) (g_model.moduleData[x].rfProtocol == ACCST_RF_PROTO_D8) -#define IS_R9M_OR_XJTD16(x) ((isModuleXJT(x) && g_model.moduleData[x].rfProtocol== ACCST_RF_PROTO_D16) || isModuleR9M(x)) +#define IS_D8_RX(x) (g_model.moduleData[x].rfProtocol == MODULE_SUBTYPE_PXX1_ACCST_D8) +#define IS_R9M_OR_XJTD16(x) ((isModuleXJT(x) && g_model.moduleData[x].rfProtocol== MODULE_SUBTYPE_PXX1_ACCST_D16) || isModuleR9M(x)) #define FAILSAFE_ROWS(x) ((isModuleXJTVariant(x) && HAS_RF_PROTOCOL_FAILSAFE(g_model.moduleData[x].rfProtocol)) || MULTIMODULE_HASFAILSAFE(x) || isModuleR9M(x) || isModuleR9M2(x)) ? (g_model.moduleData[x].failsafeMode==FAILSAFE_CUSTOM ? (uint8_t)1 : (uint8_t)0) : HIDDEN_ROW #define EXTERNAL_MODULE_OPTION_ROW (isModuleR9M(EXTERNAL_MODULE) || isModuleSBUS(EXTERNAL_MODULE) ? TITLE_ROW : MULTIMODULE_OPTIONS_ROW) -#define EXTERNAL_MODULE_POWER_ROW (isModuleMultimodule(EXTERNAL_MODULE) || isModuleR9M(EXTERNAL_MODULE)) ? (g_model.moduleData[EXTERNAL_MODULE].type == MODULE_TYPE_PXX_R9M_LITE ? TITLE_ROW : (uint8_t) 0) : HIDDEN_ROW +#define EXTERNAL_MODULE_POWER_ROW (isModuleMultimodule(EXTERNAL_MODULE) || isModuleR9M(EXTERNAL_MODULE)) ? (g_model.moduleData[EXTERNAL_MODULE].type == MODULE_TYPE_PXX1_R9M_LITE ? TITLE_ROW : (uint8_t) 0) : HIDDEN_ROW void editStickHardwareSettings(coord_t x, coord_t y, int idx, event_t event, LcdFlags flags); diff --git a/radio/src/myeeprom.h b/radio/src/myeeprom.h index 6c53180f4..ccbfd0109 100644 --- a/radio/src/myeeprom.h +++ b/radio/src/myeeprom.h @@ -225,42 +225,6 @@ enum TelemetrySensorFormula TELEM_FORMULA_LAST = TELEM_FORMULA_DIST }; -enum VarioSource { - VARIO_SOURCE_VSPEED, - VARIO_SOURCE_A1, - VARIO_SOURCE_A2, - VARIO_SOURCE_DTE, - VARIO_SOURCE_COUNT, - VARIO_SOURCE_LAST = VARIO_SOURCE_COUNT-1 -}; - -enum FrskyUsrProtocols { - USR_PROTO_NONE, - USR_PROTO_FRSKY, - USR_PROTO_WS_HOW_HIGH, - USR_PROTO_LAST = USR_PROTO_WS_HOW_HIGH, -}; - -enum FrskyCurrentSource { - FRSKY_CURRENT_SOURCE_NONE, - FRSKY_CURRENT_SOURCE_A1, - FRSKY_CURRENT_SOURCE_A2, - FRSKY_CURRENT_SOURCE_A3, - FRSKY_CURRENT_SOURCE_A4, - FRSKY_CURRENT_SOURCE_FAS, - FRSKY_CURRENT_SOURCE_LAST=FRSKY_CURRENT_SOURCE_FAS -}; - -enum FrskyVoltsSource { - FRSKY_VOLTS_SOURCE_A1, - FRSKY_VOLTS_SOURCE_A2, - FRSKY_VOLTS_SOURCE_A3, - FRSKY_VOLTS_SOURCE_A4, - FRSKY_VOLTS_SOURCE_FAS, - FRSKY_VOLTS_SOURCE_CELLS, - FRSKY_VOLTS_SOURCE_LAST=FRSKY_VOLTS_SOURCE_CELLS -}; - enum SwashType { SWASH_TYPE_NONE, SWASH_TYPE_120, @@ -275,8 +239,6 @@ enum SwashType { #define TRIM_MAX 125 #define TRIM_MIN (-TRIM_MAX) -#define ROTARY_ENCODER_MAX 1024 - #define TRIMS_ARRAY_SIZE 8 #define TRIM_MODE_NONE 0x1F // 0b11111 @@ -288,153 +250,7 @@ enum SwashType { #define TIMER_COUNTDOWN_START(x) 10 #endif -enum { - ACCST_RF_PROTO_OFF = -1, - ACCST_RF_PROTO_D16, - ACCST_RF_PROTO_D8, - ACCST_RF_PROTO_LR12, - ACCST_RF_PROTO_LAST = ACCST_RF_PROTO_LR12 -}; - -enum { - ACCESS_RF_PROTO_ACCESS, - ACCESS_RF_PROTO_D16, - ACCESS_RF_PROTO_LR12, - ACCESS_RF_PROTO_LAST = ACCESS_RF_PROTO_LR12 -}; - -enum R9MSubTypes -{ - MODULE_SUBTYPE_R9M_FCC, - MODULE_SUBTYPE_R9M_EU, - MODULE_SUBTYPE_R9M_EUPLUS, - MODULE_SUBTYPE_R9M_AUPLUS, - MODULE_SUBTYPE_R9M_LAST=MODULE_SUBTYPE_R9M_AUPLUS -}; - -enum R9MRegion -{ - MODULE_R9M_REGION_FCC, - MODULE_R9M_REGION_EU, - MODULE_R9M_REGION_FLEX, - MODULE_R9M_REGION_LAST=MODULE_R9M_REGION_FLEX -}; - -enum R9MFrenquency -{ - MODULE_R9M_FREQ_868MHZ, - MODULE_R9M_FREQ_915MHZ, - MODULE_R9M_FREQ_LAST=MODULE_R9M_FREQ_915MHZ -}; - -enum MultiModuleRFProtocols { - MM_RF_PROTO_CUSTOM = -1, - MM_RF_PROTO_FIRST = MM_RF_PROTO_CUSTOM, - MM_RF_PROTO_FLYSKY=0, - MM_RF_PROTO_HUBSAN, - MM_RF_PROTO_FRSKY, - MM_RF_PROTO_HISKY, - MM_RF_PROTO_V2X2, - MM_RF_PROTO_DSM2, - MM_RF_PROTO_DEVO, - MM_RF_PROTO_YD717, - MM_RF_PROTO_KN, - MM_RF_PROTO_SYMAX, - MM_RF_PROTO_SLT, - MM_RF_PROTO_CX10, - MM_RF_PROTO_CG023, - MM_RF_PROTO_BAYANG, - MM_RF_PROTO_ESky, - MM_RF_PROTO_MT99XX, - MM_RF_PROTO_MJXQ, - MM_RF_PROTO_SHENQI, - MM_RF_PROTO_FY326, - MM_RF_PROTO_SFHSS, - MM_RF_PROTO_J6PRO, - MM_RF_PROTO_FQ777, - MM_RF_PROTO_ASSAN, - MM_RF_PROTO_HONTAI, - MM_RF_PROTO_OLRS, - MM_RF_PROTO_FS_AFHDS2A, - MM_RF_PROTO_Q2X2, - MM_RF_PROTO_WK_2X01, - MM_RF_PROTO_Q303, - MM_RF_PROTO_GW008, - MM_RF_PROTO_DM002, - MM_RF_PROTO_CABELL, - MM_RF_PROTO_ESKY150, - MM_RF_PROTO_H83D, - MM_RF_PROTO_CORONA, - MM_RF_PROTO_CFLIE, - MM_RF_PROTO_HITEC, - MM_RF_PROTO_WFLY, - MM_RF_PROTO_BUGS, - MM_RF_PROTO_BUGS_MINI, - MM_RF_PROTO_TRAXXAS, - MM_RF_PROTO_NCC1701, - MM_RF_PROTO_E01X, - MM_RF_PROTO_V911S, - MM_RF_PROTO_GD00X, - MM_RF_PROTO_LAST = MM_RF_PROTO_GD00X -}; - -enum MMDSM2Subtypes { - MM_RF_DSM2_SUBTYPE_DSM2_22, - MM_RF_DSM2_SUBTYPE_DSM2_11, - MM_RF_DSM2_SUBTYPE_DSMX_22, - MM_RF_DSM2_SUBTYPE_DSMX_11, - MM_RF_DSM2_SUBTYPE_AUTO -}; - -enum MMRFrskySubtypes { - MM_RF_FRSKY_SUBTYPE_D16, - MM_RF_FRSKY_SUBTYPE_D8, - MM_RF_FRSKY_SUBTYPE_D16_8CH, - MM_RF_FRSKY_SUBTYPE_V8, - MM_RF_FRSKY_SUBTYPE_D16_LBT, - MM_RF_FRSKY_SUBTYPE_D16_LBT_8CH -}; - -#define HAS_RF_PROTOCOL_FAILSAFE(rf) ((rf) == ACCST_RF_PROTO_D16) -#define HAS_RF_PROTOCOL_MODELINDEX(rf) (((rf) == ACCST_RF_PROTO_D16) || ((rf) == ACCST_RF_PROTO_LR12)) - -enum DSM2Protocols { - DSM2_PROTO_LP45, - DSM2_PROTO_DSM2, - DSM2_PROTO_DSMX, -}; - -enum ModuleTypes { - MODULE_TYPE_NONE = 0, - MODULE_TYPE_PPM, - MODULE_TYPE_PXX_XJT, - MODULE_TYPE_ACCESS_ISRM, - MODULE_TYPE_DSM2, - MODULE_TYPE_CROSSFIRE, - MODULE_TYPE_MULTIMODULE, - MODULE_TYPE_PXX_R9M, - MODULE_TYPE_ACCESS_R9M, - MODULE_TYPE_PXX_R9M_LITE, - MODULE_TYPE_ACCESS_R9M_LITE, - MODULE_TYPE_ACCESS_R9M_LITE_PRO, - MODULE_TYPE_SBUS, - MODULE_TYPE_MAX = MODULE_TYPE_SBUS, - MODULE_TYPE_COUNT -}; - -enum AntennaTypes { - XJT_INTERNAL_ANTENNA, - XJT_EXTERNAL_ANTENNA -}; - -enum FailsafeModes { - FAILSAFE_NOT_SET, - FAILSAFE_HOLD, - FAILSAFE_CUSTOM, - FAILSAFE_NOPULSES, - FAILSAFE_RECEIVER, - FAILSAFE_LAST = FAILSAFE_RECEIVER -}; +#include "pulses/modules_constants.h" enum ThrottleSources { THROTTLE_SOURCE_THR, diff --git a/radio/src/opentx.cpp b/radio/src/opentx.cpp index 063de86ea..baa33a8db 100644 --- a/radio/src/opentx.cpp +++ b/radio/src/opentx.cpp @@ -473,7 +473,7 @@ void modelDefault(uint8_t id) #endif #if defined(HARDWARE_INTERNAL_MODULE) - g_model.moduleData[INTERNAL_MODULE].type = IS_PXX2_INTERNAL_ENABLED() ? MODULE_TYPE_ACCESS_ISRM : MODULE_TYPE_PXX_XJT; + g_model.moduleData[INTERNAL_MODULE].type = IS_PXX2_INTERNAL_ENABLED() ? MODULE_TYPE_PXX2_ISRM : MODULE_TYPE_PXX1_XJT; g_model.moduleData[INTERNAL_MODULE].channelsCount = defaultModuleChannels_M8(INTERNAL_MODULE); #elif defined(PCBSKY9X) g_model.moduleData[EXTERNAL_MODULE].type = MODULE_TYPE_PPM; diff --git a/radio/src/opentx.h b/radio/src/opentx.h index 8e0999ab0..2ad1fa993 100644 --- a/radio/src/opentx.h +++ b/radio/src/opentx.h @@ -316,7 +316,7 @@ void memswap(void * a, void * b, uint8_t size); #include "timers.h" #include "storage/storage.h" #include "pulses/pulses.h" -#include "pulses/modules.h" +#include "pulses/modules_helpers.h" #define MASK_CFN_TYPE uint64_t // current max = 64 function switches #define MASK_FUNC_TYPE uint32_t // current max = 32 functions diff --git a/radio/src/pulses/modules_constants.h b/radio/src/pulses/modules_constants.h new file mode 100644 index 000000000..83fd1fd1a --- /dev/null +++ b/radio/src/pulses/modules_constants.h @@ -0,0 +1,162 @@ +enum ModuleType { + MODULE_TYPE_NONE = 0, + MODULE_TYPE_PPM, + MODULE_TYPE_PXX1_XJT, + MODULE_TYPE_PXX2_ISRM, + MODULE_TYPE_DSM2, + MODULE_TYPE_CROSSFIRE, + MODULE_TYPE_MULTIMODULE, + MODULE_TYPE_PXX1_R9M, + MODULE_TYPE_PXX2_R9M, + MODULE_TYPE_PXX1_R9M_LITE, + MODULE_TYPE_PXX2_R9M_LITE, + MODULE_TYPE_PXX2_R9M_LITE_PRO, + MODULE_TYPE_SBUS, + MODULE_TYPE_MAX = MODULE_TYPE_SBUS, + MODULE_TYPE_COUNT +}; + +/* FrSky XJT / ISRM */ + +enum ModuleSubtypePXX1 { + MODULE_SUBTYPE_PXX1_OFF = -1, + MODULE_SUBTYPE_PXX1_ACCST_D16, + MODULE_SUBTYPE_PXX1_ACCST_D8, + MODULE_SUBTYPE_PXX1_ACCST_LR12, + MODULE_SUBTYPE_PXX1_LAST = MODULE_SUBTYPE_PXX1_ACCST_LR12 +}; + +enum ModuleSubtypeISRM_PXX2 { + MODULE_SUBTYPE_ISRM_PXX2_ACCESS, + MODULE_SUBTYPE_ISRM_PXX2_ACCST_D16, + MODULE_SUBTYPE_ISRM_PXX2_ACCST_LR12, + MODULE_SUBTYPE_ISRM_PXX2_LAST = MODULE_SUBTYPE_ISRM_PXX2_ACCST_LR12 +}; + +enum ModuleSubtypeR9M_PXX2 { + MODULE_SUBTYPE_R9M_PXX2_ACCESS, + MODULE_SUBTYPE_R9M_PXX2_FCC, + MODULE_SUBTYPE_R9M_PXX2_EU, +#if defined(MODULE_R9M_FLEX) + MODULE_SUBTYPE_R9M_PXX2_FLEX, +#endif + MODULE_SUBTYPE_R9M_PXX2_COUNT, + MODULE_SUBTYPE_R9M_PXX2_LAST = MODULE_SUBTYPE_R9M_PXX2_COUNT - 1 +}; + +enum AntennaTypes { + XJT_INTERNAL_ANTENNA, + XJT_EXTERNAL_ANTENNA +}; + +#define HAS_RF_PROTOCOL_FAILSAFE(rf) ((rf) == MODULE_SUBTYPE_PXX1_ACCST_D16) +#define HAS_RF_PROTOCOL_MODELINDEX(rf) (((rf) == MODULE_SUBTYPE_PXX1_ACCST_D16) || ((rf) == MODULE_SUBTYPE_PXX1_ACCST_LR12)) + +/* FrSky R9M / R9M-Lite & co */ + +enum ModuleSubtypeR9M { + MODULE_SUBTYPE_R9M_FCC, + MODULE_SUBTYPE_R9M_EU, + MODULE_SUBTYPE_R9M_EUPLUS, + MODULE_SUBTYPE_R9M_AUPLUS, + MODULE_SUBTYPE_R9M_LAST=MODULE_SUBTYPE_R9M_AUPLUS +}; + +enum R9MRegion { + MODULE_R9M_REGION_FCC, + MODULE_R9M_REGION_EU, + MODULE_R9M_REGION_FLEX, + MODULE_R9M_REGION_LAST=MODULE_R9M_REGION_FLEX +}; + +enum R9MFrenquency +{ + MODULE_R9M_FREQ_868MHZ, + MODULE_R9M_FREQ_915MHZ, + MODULE_R9M_FREQ_LAST=MODULE_R9M_FREQ_915MHZ +}; + +/* Multi module */ + +enum ModuleSubtypeMulti { + MODULE_SUBTYPE_MULTI_CUSTOM = -1, + MODULE_SUBTYPE_MULTI_FIRST = MODULE_SUBTYPE_MULTI_CUSTOM, + MODULE_SUBTYPE_MULTI_FLYSKY=0, + MODULE_SUBTYPE_MULTI_HUBSAN, + MODULE_SUBTYPE_MULTI_FRSKY, + MODULE_SUBTYPE_MULTI_HISKY, + MODULE_SUBTYPE_MULTI_V2X2, + MODULE_SUBTYPE_MULTI_DSM2, + MODULE_SUBTYPE_MULTI_DEVO, + MODULE_SUBTYPE_MULTI_YD717, + MODULE_SUBTYPE_MULTI_KN, + MODULE_SUBTYPE_MULTI_SYMAX, + MODULE_SUBTYPE_MULTI_SLT, + MODULE_SUBTYPE_MULTI_CX10, + MODULE_SUBTYPE_MULTI_CG023, + MODULE_SUBTYPE_MULTI_BAYANG, + MODULE_SUBTYPE_MULTI_ESky, + MODULE_SUBTYPE_MULTI_MT99XX, + MODULE_SUBTYPE_MULTI_MJXQ, + MODULE_SUBTYPE_MULTI_SHENQI, + MODULE_SUBTYPE_MULTI_FY326, + MODULE_SUBTYPE_MULTI_SFHSS, + MODULE_SUBTYPE_MULTI_J6PRO, + MODULE_SUBTYPE_MULTI_FQ777, + MODULE_SUBTYPE_MULTI_ASSAN, + MODULE_SUBTYPE_MULTI_HONTAI, + MODULE_SUBTYPE_MULTI_OLRS, + MODULE_SUBTYPE_MULTI_FS_AFHDS2A, + MODULE_SUBTYPE_MULTI_Q2X2, + MODULE_SUBTYPE_MULTI_WK_2X01, + MODULE_SUBTYPE_MULTI_Q303, + MODULE_SUBTYPE_MULTI_GW008, + MODULE_SUBTYPE_MULTI_DM002, + MODULE_SUBTYPE_MULTI_CABELL, + MODULE_SUBTYPE_MULTI_ESKY150, + MODULE_SUBTYPE_MULTI_H83D, + MODULE_SUBTYPE_MULTI_CORONA, + MODULE_SUBTYPE_MULTI_CFLIE, + MODULE_SUBTYPE_MULTI_HITEC, + MODULE_SUBTYPE_MULTI_WFLY, + MODULE_SUBTYPE_MULTI_BUGS, + MODULE_SUBTYPE_MULTI_BUGS_MINI, + MODULE_SUBTYPE_MULTI_TRAXXAS, + MODULE_SUBTYPE_MULTI_NCC1701, + MODULE_SUBTYPE_MULTI_E01X, + MODULE_SUBTYPE_MULTI_V911S, + MODULE_SUBTYPE_MULTI_GD00X, + MODULE_SUBTYPE_MULTI_LAST = MODULE_SUBTYPE_MULTI_GD00X +}; + +enum MMDSM2Subtypes { + MM_RF_DSM2_SUBTYPE_DSM2_22, + MM_RF_DSM2_SUBTYPE_DSM2_11, + MM_RF_DSM2_SUBTYPE_DSMX_22, + MM_RF_DSM2_SUBTYPE_DSMX_11, + MM_RF_DSM2_SUBTYPE_AUTO +}; + +enum MMRFrskySubtypes { + MM_RF_FRSKY_SUBTYPE_D16, + MM_RF_FRSKY_SUBTYPE_D8, + MM_RF_FRSKY_SUBTYPE_D16_8CH, + MM_RF_FRSKY_SUBTYPE_V8, + MM_RF_FRSKY_SUBTYPE_D16_LBT, + MM_RF_FRSKY_SUBTYPE_D16_LBT_8CH +}; + +enum ModuleSubtypeDSM2 { + DSM2_PROTO_LP45, + DSM2_PROTO_DSM2, + DSM2_PROTO_DSMX, +}; + +enum FailsafeModes { + FAILSAFE_NOT_SET, + FAILSAFE_HOLD, + FAILSAFE_CUSTOM, + FAILSAFE_NOPULSES, + FAILSAFE_RECEIVER, + FAILSAFE_LAST = FAILSAFE_RECEIVER +}; diff --git a/radio/src/pulses/modules.h b/radio/src/pulses/modules_helpers.h similarity index 86% rename from radio/src/pulses/modules.h rename to radio/src/pulses/modules_helpers.h index 8a753b575..d2a2d222a 100644 --- a/radio/src/pulses/modules.h +++ b/radio/src/pulses/modules_helpers.h @@ -21,9 +21,10 @@ #ifndef _MODULES_H_ #define _MODULES_H_ -#include "myeeprom.h" #include "bitfield.h" + + #define CROSSFIRE_CHANNELS_COUNT 16 #if defined(MULTIMODULE) @@ -34,7 +35,7 @@ inline bool isModuleMultimodule(uint8_t idx) inline bool isModuleMultimoduleDSM2(uint8_t idx) { - return isModuleMultimodule(idx) && g_model.moduleData[idx].getMultiProtocol(true) == MM_RF_PROTO_DSM2; + return isModuleMultimodule(idx) && g_model.moduleData[idx].getMultiProtocol(true) == MODULE_SUBTYPE_MULTI_DSM2; } #else inline bool isModuleMultimodule(uint8_t) @@ -50,17 +51,17 @@ inline bool isModuleMultimoduleDSM2(uint8_t) inline bool isModuleXJT(uint8_t idx) { - return g_model.moduleData[idx].type == MODULE_TYPE_PXX_XJT; + return g_model.moduleData[idx].type == MODULE_TYPE_PXX1_XJT; } inline bool isModuleXJT2(uint8_t idx) { - return g_model.moduleData[idx].type == MODULE_TYPE_ACCESS_ISRM; + return g_model.moduleData[idx].type == MODULE_TYPE_PXX2_ISRM; } inline bool isModuleXJTVariant(uint8_t idx) { - return g_model.moduleData[idx].type == MODULE_TYPE_PXX_XJT || g_model.moduleData[idx].type == MODULE_TYPE_ACCESS_ISRM; + return g_model.moduleData[idx].type == MODULE_TYPE_PXX1_XJT || g_model.moduleData[idx].type == MODULE_TYPE_PXX2_ISRM; } @@ -104,12 +105,12 @@ inline bool isModulePPM(uint8_t idx) inline bool isModuleR9M(uint8_t idx) { - return g_model.moduleData[idx].type == MODULE_TYPE_PXX_R9M || g_model.moduleData[idx].type == MODULE_TYPE_PXX_R9M_LITE; + return g_model.moduleData[idx].type == MODULE_TYPE_PXX1_R9M || g_model.moduleData[idx].type == MODULE_TYPE_PXX1_R9M_LITE; } inline bool isModuleR9M2(uint8_t idx) { - return g_model.moduleData[idx].type == MODULE_TYPE_ACCESS_R9M || g_model.moduleData[idx].type == MODULE_TYPE_ACCESS_R9M_LITE || g_model.moduleData[idx].type == MODULE_TYPE_ACCESS_R9M_LITE_PRO; + return g_model.moduleData[idx].type == MODULE_TYPE_PXX2_R9M || g_model.moduleData[idx].type == MODULE_TYPE_PXX2_R9M_LITE || g_model.moduleData[idx].type == MODULE_TYPE_PXX2_R9M_LITE_PRO; } @@ -148,6 +149,19 @@ inline bool isModulePXX2(uint8_t idx) return isModuleXJT2(idx) || isModuleR9M2(idx); } +inline bool isModuleRFAccess(uint8_t idx) +{ + if (isModuleXJT2(idx)) { + return g_model.moduleData[idx].subType == MODULE_SUBTYPE_ISRM_PXX2_ACCESS; + } + else if (isModuleR9M2(idx)) { + return g_model.moduleData[idx].subType == MODULE_SUBTYPE_R9M_PXX2_ACCESS; + } + else { + return false; + } +} + #if defined(DSM2) inline bool isModuleDSM2(uint8_t idx) { diff --git a/radio/src/pulses/multi.cpp b/radio/src/pulses/multi.cpp index c5a58729f..cc5ead610 100644 --- a/radio/src/pulses/multi.cpp +++ b/radio/src/pulses/multi.cpp @@ -160,7 +160,7 @@ void sendFrameProtocolHeader(uint8_t port, bool failsafe) protoByte |= MULTI_SEND_RANGECHECK; // rfProtocol - if (g_model.moduleData[port].getMultiProtocol(true) == MM_RF_PROTO_DSM2) { + if (g_model.moduleData[port].getMultiProtocol(true) == MODULE_SUBTYPE_MULTI_DSM2) { // Autobinding should always be done in DSMX 11ms if (g_model.moduleData[port].multi.autoBindMode && moduleState[port].mode == MODULE_MODE_BIND) @@ -180,7 +180,7 @@ void sendFrameProtocolHeader(uint8_t port, bool failsafe) if (type >= 25) type = type + 1; - if (g_model.moduleData[port].getMultiProtocol(true) == MM_RF_PROTO_FRSKY) { + if (g_model.moduleData[port].getMultiProtocol(true) == MODULE_SUBTYPE_MULTI_FRSKY) { if (subtype == MM_RF_FRSKY_SUBTYPE_D8) { //D8 type = 3; @@ -204,7 +204,7 @@ void sendFrameProtocolHeader(uint8_t port, bool failsafe) // Set the highest bit of option byte in AFHDS2A protocol to instruct MULTI to passthrough telemetry bytes instead // of sending Frsky D telemetry - if (g_model.moduleData[port].getMultiProtocol(false) == MM_RF_PROTO_FS_AFHDS2A) + if (g_model.moduleData[port].getMultiProtocol(false) == MODULE_SUBTYPE_MULTI_FS_AFHDS2A) optionValue = optionValue | 0x80; // For custom protocol send unmodified type byte @@ -225,7 +225,7 @@ void sendFrameProtocolHeader(uint8_t port, bool failsafe) // protocol byte protoByte |= (type & 0x1f); - if (g_model.moduleData[port].getMultiProtocol(true) != MM_RF_PROTO_DSM2) + if (g_model.moduleData[port].getMultiProtocol(true) != MODULE_SUBTYPE_MULTI_DSM2) protoByte |= (g_model.moduleData[port].multi.autoBindMode << 6); sendByteSbus(protoByte); diff --git a/radio/src/pulses/pulses.cpp b/radio/src/pulses/pulses.cpp index 3ca0768a3..625ecda37 100755 --- a/radio/src/pulses/pulses.cpp +++ b/radio/src/pulses/pulses.cpp @@ -54,7 +54,7 @@ uint8_t getRequiredProtocol(uint8_t module) protocol = PROTOCOL_CHANNELS_PPM; break; - case MODULE_TYPE_PXX_XJT: + case MODULE_TYPE_PXX1_XJT: #if defined(INTMODULE_USART) if (module == INTERNAL_MODULE) { protocol = PROTOCOL_CHANNELS_PXX1_SERIAL; @@ -63,18 +63,18 @@ uint8_t getRequiredProtocol(uint8_t module) #endif // no break - case MODULE_TYPE_PXX_R9M: + case MODULE_TYPE_PXX1_R9M: protocol = PROTOCOL_CHANNELS_PXX1_PULSES; break; - case MODULE_TYPE_PXX_R9M_LITE: + case MODULE_TYPE_PXX1_R9M_LITE: protocol = PROTOCOL_CHANNELS_PXX1_SERIAL; break; - case MODULE_TYPE_ACCESS_ISRM: - case MODULE_TYPE_ACCESS_R9M: - case MODULE_TYPE_ACCESS_R9M_LITE: - case MODULE_TYPE_ACCESS_R9M_LITE_PRO: + case MODULE_TYPE_PXX2_ISRM: + case MODULE_TYPE_PXX2_R9M: + case MODULE_TYPE_PXX2_R9M_LITE: + case MODULE_TYPE_PXX2_R9M_LITE_PRO: protocol = PROTOCOL_CHANNELS_PXX2; break; diff --git a/radio/src/pulses/pulses.h b/radio/src/pulses/pulses.h index 9a9382f31..8292fb4cd 100644 --- a/radio/src/pulses/pulses.h +++ b/radio/src/pulses/pulses.h @@ -26,7 +26,7 @@ #include "pulses_common.h" #include "pulses/pxx1.h" #include "pulses/pxx2.h" -#include "modules.h" +#include "modules_helpers.h" #include "ff.h" #if NUM_MODULES > 1 @@ -415,5 +415,5 @@ enum R9MLBTPowerValues { }; #define BIND_CH9TO16_ALLOWED(idx) (!isModuleR9M_LBT(idx) || g_model.moduleData[idx].pxx.power != R9M_LBT_POWER_25) -#define BIND_TELEM_ALLOWED(idx) (g_model.moduleData[EXTERNAL_MODULE].type == MODULE_TYPE_PXX_R9M) ? (!(IS_TELEMETRY_INTERNAL_MODULE() && moduleIdx == EXTERNAL_MODULE) && (!isModuleR9M_LBT(idx) || g_model.moduleData[idx].pxx.power < R9M_LBT_POWER_200)) : (!(IS_TELEMETRY_INTERNAL_MODULE() && moduleIdx == EXTERNAL_MODULE) && (!isModuleR9M_LBT(idx) || g_model.moduleData[idx].pxx.power < R9M_LITE_LBT_POWER_100)) +#define BIND_TELEM_ALLOWED(idx) (g_model.moduleData[EXTERNAL_MODULE].type == MODULE_TYPE_PXX1_R9M) ? (!(IS_TELEMETRY_INTERNAL_MODULE() && moduleIdx == EXTERNAL_MODULE) && (!isModuleR9M_LBT(idx) || g_model.moduleData[idx].pxx.power < R9M_LBT_POWER_200)) : (!(IS_TELEMETRY_INTERNAL_MODULE() && moduleIdx == EXTERNAL_MODULE) && (!isModuleR9M_LBT(idx) || g_model.moduleData[idx].pxx.power < R9M_LITE_LBT_POWER_100)) #endif // _PULSES_H_ diff --git a/radio/src/pulses/pxx2.cpp b/radio/src/pulses/pxx2.cpp index e9e7bbca6..cf33ee02a 100644 --- a/radio/src/pulses/pxx2.cpp +++ b/radio/src/pulses/pxx2.cpp @@ -38,7 +38,7 @@ uint8_t Pxx2Pulses::addFlag0(uint8_t module) void Pxx2Pulses::addFlag1(uint8_t module) { - uint8_t flag1 = g_model.moduleData[module].rfProtocol << 4; + uint8_t flag1 = g_model.moduleData[module].subType << 4; Pxx2Transport::addByte(flag1); } @@ -220,7 +220,21 @@ void Pxx2Pulses::setupReceiverSettingsFrame(uint8_t module) } } -void Pxx2Pulses::setupBindFrame(uint8_t module) +void Pxx2Pulses::setupAccstBindFrame(uint8_t module) +{ + addFrameType(PXX2_TYPE_C_MODULE, PXX2_TYPE_ID_BIND); + Pxx2Transport::addByte(0x01); // DATA0 + for (uint8_t i=0; istep == BIND_INFO_REQUEST) { - Pxx2Transport::addByte(0x02); + Pxx2Transport::addByte(0x02); // DATA0 for (uint8_t i=0; icandidateReceiversNames[destination->selectedReceiverIndex][i]); } } else if (destination->step == BIND_START) { - Pxx2Transport::addByte(0x01); + Pxx2Transport::addByte(0x01); // DATA0 for (uint8_t i=0; icandidateReceiversNames[destination->selectedReceiverIndex][i]); } @@ -250,7 +264,7 @@ void Pxx2Pulses::setupBindFrame(uint8_t module) Pxx2Transport::addByte(g_model.header.modelId[module]); } else { - Pxx2Transport::addByte(0x00); + Pxx2Transport::addByte(0x00); // DATA0 for (uint8_t i=0; i= MODULE_TYPE_ACCESS_ISRM) + if (newModel.moduleData[i].type >= MODULE_TYPE_PXX2_ISRM) newModel.moduleData[i].type += 1; - if (newModel.moduleData[i].type >= MODULE_TYPE_ACCESS_R9M) + if (newModel.moduleData[i].type >= MODULE_TYPE_PXX2_R9M) newModel.moduleData[i].type += 4; } diff --git a/radio/src/storage/storage_common.cpp b/radio/src/storage/storage_common.cpp index d919d6c0c..7428ad604 100644 --- a/radio/src/storage/storage_common.cpp +++ b/radio/src/storage/storage_common.cpp @@ -56,8 +56,8 @@ void preModelLoad() #if defined(PCBTARANIS) || defined(PCBHORUS) static void fixUpModel() { - // Ensure that when rfProtocol is ACCST_RF_PROTO_OFF the type of the module is MODULE_TYPE_NONE - if (g_model.moduleData[INTERNAL_MODULE].type == MODULE_TYPE_PXX_XJT && g_model.moduleData[INTERNAL_MODULE].rfProtocol == ACCST_RF_PROTO_OFF) + // Ensure that when rfProtocol is MODULE_SUBTYPE_PXX1_OFF the type of the module is MODULE_TYPE_NONE + if (g_model.moduleData[INTERNAL_MODULE].type == MODULE_TYPE_PXX1_XJT && g_model.moduleData[INTERNAL_MODULE].rfProtocol == MODULE_SUBTYPE_PXX1_OFF) g_model.moduleData[INTERNAL_MODULE].type = MODULE_TYPE_NONE; } #endif diff --git a/radio/src/targets/taranis/extmodule_driver.cpp b/radio/src/targets/taranis/extmodule_driver.cpp index 1617bf00a..dee0d11a2 100644 --- a/radio/src/targets/taranis/extmodule_driver.cpp +++ b/radio/src/targets/taranis/extmodule_driver.cpp @@ -214,7 +214,7 @@ extern "C" void EXTMODULE_USART_IRQHandler(void) void extmodulePxx2Start() { - extmoduleInvertedSerialStart(g_model.moduleData[EXTERNAL_MODULE].type == MODULE_TYPE_ACCESS_R9M_LITE_PRO ? 450000 : 230400); + extmoduleInvertedSerialStart(g_model.moduleData[EXTERNAL_MODULE].type == MODULE_TYPE_PXX2_R9M_LITE_PRO ? 450000 : 230400); } #else void extmodulePxx2Start() diff --git a/radio/src/telemetry/multi.cpp b/radio/src/telemetry/multi.cpp index 161e74126..4f83c58a3 100644 --- a/radio/src/telemetry/multi.cpp +++ b/radio/src/telemetry/multi.cpp @@ -53,9 +53,9 @@ enum MultiBufferState : uint8_t { MultiBufferState guessProtocol() { - if (g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(false) == MM_RF_PROTO_DSM2) + if (g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(false) == MODULE_SUBTYPE_MULTI_DSM2) return SpektrumTelemetryFallback; - else if (g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(false) == MM_RF_PROTO_FS_AFHDS2A) + else if (g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(false) == MODULE_SUBTYPE_MULTI_FS_AFHDS2A) return FlyskyTelemetryFallback; else return FrskyTelemetryFallback; diff --git a/radio/src/telemetry/spektrum.cpp b/radio/src/telemetry/spektrum.cpp index 7e72933e6..17562e787 100644 --- a/radio/src/telemetry/spektrum.cpp +++ b/radio/src/telemetry/spektrum.cpp @@ -373,7 +373,7 @@ void processSpektrumPacket(const uint8_t *packet) void processDSMBindPacket(const uint8_t *packet) { uint32_t debugval; - if (g_model.moduleData[EXTERNAL_MODULE].type == MODULE_TYPE_MULTIMODULE && g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(true) == MM_RF_PROTO_DSM2 + if (g_model.moduleData[EXTERNAL_MODULE].type == MODULE_TYPE_MULTIMODULE && g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(true) == MODULE_SUBTYPE_MULTI_DSM2 && g_model.moduleData[EXTERNAL_MODULE].multi.autoBindMode) { int channels = packet[5]; @@ -400,7 +400,7 @@ void processDSMBindPacket(const uint8_t *packet) setTelemetryValue(TELEM_PROTO_SPEKTRUM, (I2C_PSEUDO_TX << 8) + 4, 0, 0, debugval, UNIT_RAW, 0); /* Finally stop binding as the rx just told us that it is bound */ - if (g_model.moduleData[EXTERNAL_MODULE].type == MODULE_TYPE_MULTIMODULE && g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(true) == MM_RF_PROTO_DSM2 && moduleState[EXTERNAL_MODULE].mode == MODULE_MODE_BIND) { + if (g_model.moduleData[EXTERNAL_MODULE].type == MODULE_TYPE_MULTIMODULE && g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(true) == MODULE_SUBTYPE_MULTI_DSM2 && moduleState[EXTERNAL_MODULE].mode == MODULE_MODE_BIND) { multiBindStatus=MULTI_BIND_FINISHED; } } diff --git a/radio/src/telemetry/telemetry.h b/radio/src/telemetry/telemetry.h index 7568699ca..5f8038183 100644 --- a/radio/src/telemetry/telemetry.h +++ b/radio/src/telemetry/telemetry.h @@ -107,7 +107,7 @@ void frskyDSetDefault(int index, uint16_t id); extern uint8_t telemetryProtocol; #if defined (MULTIMODULE) -#define IS_D16_MULTI() ((g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(false) == MM_RF_PROTO_FRSKY) && (g_model.moduleData[EXTERNAL_MODULE].subType == MM_RF_FRSKY_SUBTYPE_D16 || g_model.moduleData[EXTERNAL_MODULE].subType == MM_RF_FRSKY_SUBTYPE_D16_8CH)) +#define IS_D16_MULTI() ((g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(false) == MODULE_SUBTYPE_MULTI_FRSKY) && (g_model.moduleData[EXTERNAL_MODULE].subType == MM_RF_FRSKY_SUBTYPE_D16 || g_model.moduleData[EXTERNAL_MODULE].subType == MM_RF_FRSKY_SUBTYPE_D16_8CH)) #define IS_FRSKY_SPORT_PROTOCOL() (telemetryProtocol == PROTOCOL_TELEMETRY_FRSKY_SPORT || (telemetryProtocol == PROTOCOL_TELEMETRY_MULTIMODULE && IS_D16_MULTI())) #else #define IS_FRSKY_SPORT_PROTOCOL() (telemetryProtocol == PROTOCOL_TELEMETRY_FRSKY_SPORT) @@ -238,7 +238,7 @@ extern Fifo * luaInputTelemetryFifo; #endif #if defined(STM32) -#define IS_TELEMETRY_INTERNAL_MODULE() (g_model.moduleData[INTERNAL_MODULE].type == MODULE_TYPE_PXX_XJT) +#define IS_TELEMETRY_INTERNAL_MODULE() (g_model.moduleData[INTERNAL_MODULE].type == MODULE_TYPE_PXX1_XJT) #else #define IS_TELEMETRY_INTERNAL_MODULE() (false) #endif diff --git a/radio/src/tests/conversions.cpp b/radio/src/tests/conversions.cpp index e351f9151..dde71449a 100644 --- a/radio/src/tests/conversions.cpp +++ b/radio/src/tests/conversions.cpp @@ -47,7 +47,7 @@ TEST(Conversions, ConversionX9DPFrom22) EXPECT_EQ(SWASH_TYPE_120X, g_model.swashR.type); EXPECT_EQ(10, g_model.flightModeData[0].gvars[0]); EXPECT_ZSTREQ("Tes", g_model.gvars[0].name); - EXPECT_EQ(MODULE_TYPE_PXX_R9M, g_model.moduleData[EXTERNAL_MODULE].type); + EXPECT_EQ(MODULE_TYPE_PXX1_R9M, g_model.moduleData[EXTERNAL_MODULE].type); EXPECT_EQ(MODULE_SUBTYPE_R9M_FCC, g_model.moduleData[EXTERNAL_MODULE].subType); EXPECT_ZSTREQ("Thr", g_model.inputNames[0]); EXPECT_ZSTREQ("Tes", g_model.telemetrySensors[0].label); @@ -66,7 +66,7 @@ TEST(Conversions, ConversionX7From22) eeLoadModel(0); EXPECT_ZSTREQ("Test", g_model.header.name); - EXPECT_EQ(MODULE_TYPE_PXX_R9M, g_model.moduleData[EXTERNAL_MODULE].type); + EXPECT_EQ(MODULE_TYPE_PXX1_R9M, g_model.moduleData[EXTERNAL_MODULE].type); EXPECT_EQ(MODULE_SUBTYPE_R9M_EU, g_model.moduleData[EXTERNAL_MODULE].subType); EXPECT_EQ(80, g_model.mixData[0].weight); EXPECT_EQ(80, g_model.expoData[0].weight); @@ -111,7 +111,7 @@ TEST(Conversions, ConversionHorusFrom22) EXPECT_ZSTREQ("Tes", g_model.flightModeData[0].name); EXPECT_EQ(10, g_model.flightModeData[0].gvars[0]); EXPECT_ZSTREQ("Tes", g_model.gvars[0].name); - EXPECT_EQ(MODULE_TYPE_PXX_R9M, g_model.moduleData[EXTERNAL_MODULE].type); + EXPECT_EQ(MODULE_TYPE_PXX1_R9M, g_model.moduleData[EXTERNAL_MODULE].type); EXPECT_EQ(MODULE_SUBTYPE_R9M_EU, g_model.moduleData[EXTERNAL_MODULE].subType); EXPECT_ZSTREQ("Rud", g_model.inputNames[0]); EXPECT_ZSTREQ("Tes", g_model.telemetrySensors[0].label); diff --git a/radio/src/tests/frsky.cpp b/radio/src/tests/frsky.cpp index 903c7ff96..186f89cdc 100644 --- a/radio/src/tests/frsky.cpp +++ b/radio/src/tests/frsky.cpp @@ -309,10 +309,6 @@ TEST(FrSkySPORT, frskySetCellVoltage) //display test lcdClear(); - -#if defined(PCBX9D) || defined(PCBX9DP) || defined(PCBX9E) - g_model.voltsSource = FRSKY_VOLTS_SOURCE_A1; -#endif } TEST(FrSkySPORT, StrangeCellsBug) @@ -389,10 +385,6 @@ TEST(FrSkySPORT, frskySetCellVoltageTwoSensors) //display test lcdClear(); - -#if defined(PCBX9D) || defined(PCBX9DP) || defined(PCBX9E) - g_model.voltsSource = FRSKY_VOLTS_SOURCE_A1; -#endif } void generateSportFasVoltagePacket(uint8_t * packet, uint32_t voltage) diff --git a/radio/src/translations.cpp b/radio/src/translations.cpp index 426ed7dbf..c067c84b3 100644 --- a/radio/src/translations.cpp +++ b/radio/src/translations.cpp @@ -73,7 +73,8 @@ ISTR(R9M_LITE_FCC_POWER_VALUES); ISTR(R9M_LITE_LBT_POWER_VALUES); ISTR(TELEMETRY_PROTOCOLS); ISTR(ACCST_RF_PROTOCOLS); -ISTR(ACCESS_RF_PROTOCOLS); +ISTR(ISRM_PXX2_RF_PROTOCOLS); +ISTR(R9M_PXX2_RF_PROTOCOLS); ISTR(DSM_PROTOCOLS); ISTR(VOLTSRC); ISTR(CURVE_TYPES); diff --git a/radio/src/translations.h b/radio/src/translations.h index 73b0721d9..edd95d1de 100644 --- a/radio/src/translations.h +++ b/radio/src/translations.h @@ -161,7 +161,8 @@ extern const char STR_R9M_LITE_FCC_POWER_VALUES[]; extern const char STR_R9M_LITE_LBT_POWER_VALUES[]; extern const char STR_TELEMETRY_PROTOCOLS[]; extern const char STR_ACCST_RF_PROTOCOLS[]; -extern const char STR_ACCESS_RF_PROTOCOLS[]; +extern const char STR_ISRM_PXX2_RF_PROTOCOLS[]; +extern const char STR_R9M_PXX2_RF_PROTOCOLS[]; extern const char STR_DSM_PROTOCOLS[]; #if defined(MULTIMODULE) diff --git a/radio/src/translations/cz.h.txt b/radio/src/translations/cz.h.txt index ce37d5d61..1592fcbe7 100644 --- a/radio/src/translations/cz.h.txt +++ b/radio/src/translations/cz.h.txt @@ -103,14 +103,6 @@ #define LEN_JACKMODES "\007" #define TR_JACKMODES "Zeptat\0""Audio\0 ""Trenér" -#if defined(PCBXLITES) || defined(PCBX9LITE) -#define LEN_MODULE_PROTOCOLS "\014" -#define TR_MODULE_PROTOCOLS "Vyp\0 ""PPM\0 ""XJT\0 ""ISRM\0 ""DSM2\0 ""CRSF\0 ""MULT\0 ""R9M\0 ""R9M ACCESS\0 ""R9MLite\0 ""R9ML ACCESS\0""R9M Lite PRO""SBUS\0" -#else -#define LEN_MODULE_PROTOCOLS "\014" -#define TR_MODULE_PROTOCOLS "Vyp\0 ""PPM\0 ""XJT\0 ""XJT ACCESS\0 ""DSM2\0 ""CRSF\0 ""MULT\0 ""R9M\0 ""R9M ACCESS\0 ""R9MLite\0 ""R9ML ACCESS\0""R9M Lite PRO""SBUS\0" -#endif - #define LEN_TELEMETRY_PROTOCOLS "\017" #define TR_TELEMETRY_PROTOCOLS "FrSky S.PORT\0 FrSky D\0 FrSky D (kabel)Spektrum\0 " diff --git a/radio/src/translations/de.h.txt b/radio/src/translations/de.h.txt index c2f30de2b..a16e3fbd3 100644 --- a/radio/src/translations/de.h.txt +++ b/radio/src/translations/de.h.txt @@ -104,14 +104,6 @@ #define LEN_JACKMODES "\007" #define TR_JACKMODES "Popup\0 ""Audio\0 ""Trainer" -#if defined(PCBXLITES) || defined(PCBX9LITE) -#define LEN_MODULE_PROTOCOLS "\014" -#define TR_MODULE_PROTOCOLS "OFF\0 ""PPM\0 ""XJT\0 ""ISRM\0 ""DSM2\0 ""CRSF\0 ""MULT\0 ""R9M\0 ""R9M ACCESS\0 ""R9MLite\0 ""R9ML ACCESS\0""R9M Lite PRO""SBUS\0" -#else -#define LEN_MODULE_PROTOCOLS "\014" -#define TR_MODULE_PROTOCOLS "OFF\0 ""PPM\0 ""XJT\0 ""XJT ACCESS\0 ""DSM2\0 ""CRSF\0 ""MULT\0 ""R9M\0 ""R9M ACCESS\0 ""R9MLite\0 ""R9ML ACCESS\0""R9M Lite PRO""SBUS\0" -#endif - #define LEN_TELEMETRY_PROTOCOLS "\017" #define TR_TELEMETRY_PROTOCOLS "FrSky S.PORT\0 ""FrSky D\0 ""FrSky D (Kabel)""TBS Crossfire\0 ""Spektrum\0 ""AFHDS2A IBUS\0 ""Multi Telemetry" diff --git a/radio/src/translations/en.h.txt b/radio/src/translations/en.h.txt index f47fdbf19..705fa5295 100644 --- a/radio/src/translations/en.h.txt +++ b/radio/src/translations/en.h.txt @@ -104,14 +104,6 @@ #define LEN_JACKMODES "\007" #define TR_JACKMODES "Ask\0 ""Audio\0 ""Trainer" -#if defined(PCBXLITES) || defined(PCBX9LITE) -#define LEN_MODULE_PROTOCOLS "\014" -#define TR_MODULE_PROTOCOLS "OFF\0 ""PPM\0 ""XJT\0 ""ISRM\0 ""DSM2\0 ""CRSF\0 ""MULT\0 ""R9M\0 ""R9M ACCESS\0 ""R9MLite\0 ""R9ML ACCESS\0""R9M Lite PRO""SBUS\0" -#else -#define LEN_MODULE_PROTOCOLS "\014" -#define TR_MODULE_PROTOCOLS "OFF\0 ""PPM\0 ""XJT\0 ""XJT ACCESS\0 ""DSM2\0 ""CRSF\0 ""MULT\0 ""R9M\0 ""R9M ACCESS\0 ""R9MLite\0 ""R9ML ACCESS\0""R9M Lite PRO""SBUS\0" -#endif - #define LEN_TELEMETRY_PROTOCOLS "\017" #define TR_TELEMETRY_PROTOCOLS "FrSky S.PORT\0 ""FrSky D\0 ""FrSky D (cable)""TBS Crossfire\0 ""Spektrum\0 ""AFHDS2A IBUS\0 ""Multi Telemetry" diff --git a/radio/src/translations/es.h.txt b/radio/src/translations/es.h.txt index 5800e5eca..74976e87e 100644 --- a/radio/src/translations/es.h.txt +++ b/radio/src/translations/es.h.txt @@ -104,14 +104,6 @@ #define LEN_JACKMODES "\007" #define TR_JACKMODES "Ask\0 ""Audio\0 ""Trainer" -#if defined(PCBXLITES) || defined(PCBX9LITE) -#define LEN_MODULE_PROTOCOLS "\014" -#define TR_MODULE_PROTOCOLS "OFF\0 ""PPM\0 ""XJT\0 ""ISRM\0 ""DSM2\0 ""CRSF\0 ""MULT\0 ""R9M\0 ""R9M ACCESS\0 ""R9MLite\0 ""R9ML ACCESS\0""R9M Lite PRO""SBUS\0" -#else -#define LEN_MODULE_PROTOCOLS "\014" -#define TR_MODULE_PROTOCOLS "OFF\0 ""PPM\0 ""XJT\0 ""XJT ACCESS\0 ""DSM2\0 ""CRSF\0 ""MULT\0 ""R9M\0 ""R9M ACCESS\0 ""R9MLite\0 ""R9ML ACCESS\0""R9M Lite PRO""SBUS\0" -#endif - #define LEN_TELEMETRY_PROTOCOLS "\017" #define TR_TELEMETRY_PROTOCOLS "FrSky S.PORT\0 ""FrSky D\0 ""FrSky D (cable)""TBS Crossfire\0 ""Spektrum\0 ""AFHDS2A IBUS\0 ""Multi Telemetry" diff --git a/radio/src/translations/fi.h.txt b/radio/src/translations/fi.h.txt index 75b662127..4a47288dc 100644 --- a/radio/src/translations/fi.h.txt +++ b/radio/src/translations/fi.h.txt @@ -104,14 +104,6 @@ #define LEN_JACKMODES "\007" #define TR_JACKMODES "Ask\0 ""Audio\0 ""Trainer" -#if defined(PCBXLITES) || defined(PCBX9LITE) -#define LEN_MODULE_PROTOCOLS "\014" -#define TR_MODULE_PROTOCOLS "OFF\0 ""PPM\0 ""XJT\0 ""ISRM\0 ""DSM2\0 ""CRSF\0 ""MULT\0 ""R9M\0 ""R9M ACCESS\0 ""R9MLite\0 ""R9ML ACCESS\0""R9M Lite PRO""SBUS\0" -#else -#define LEN_MODULE_PROTOCOLS "\014" -#define TR_MODULE_PROTOCOLS "OFF\0 ""PPM\0 ""XJT\0 ""XJT ACCESS\0 ""DSM2\0 ""CRSF\0 ""MULT\0 ""R9M\0 ""R9M ACCESS\0 ""R9MLite\0 ""R9ML ACCESS\0""R9M Lite PRO""SBUS\0" -#endif - #define LEN_TELEMETRY_PROTOCOLS "\017" #define TR_TELEMETRY_PROTOCOLS "FrSky S.PORT\0 ""FrSky D\0 ""FrSky D (cable)""TBS Crossfire\0 ""Spektrum\0 ""AFHDS2A IBUS\0 ""Multi Telemetry" diff --git a/radio/src/translations/fr.h.txt b/radio/src/translations/fr.h.txt index 568e2edc3..bda1aa346 100644 --- a/radio/src/translations/fr.h.txt +++ b/radio/src/translations/fr.h.txt @@ -104,14 +104,6 @@ #define LEN_JACKMODES "\007" #define TR_JACKMODES "Demander""Audio\0 ""Ecolage" -#if defined(PCBXLITES) || defined(PCBX9LITE) -#define LEN_MODULE_PROTOCOLS "\014" -#define TR_MODULE_PROTOCOLS "OFF\0 ""PPM\0 ""XJT\0 ""ISRM\0 ""DSM2\0 ""CRSF\0 ""MULT\0 ""R9M\0 ""R9M ACCESS\0 ""R9MLite\0 ""R9ML ACCESS\0""R9M Lite PRO""SBUS\0" -#else -#define LEN_MODULE_PROTOCOLS "\014" -#define TR_MODULE_PROTOCOLS "OFF\0 ""PPM\0 ""XJT\0 ""XJT ACCESS\0 ""DSM2\0 ""CRSF\0 ""MULT\0 ""R9M\0 ""R9M ACCESS\0 ""R9MLite\0 ""R9ML ACCESS\0""R9M Lite PRO""SBUS\0" -#endif - #define LEN_TELEMETRY_PROTOCOLS "\017" #define TR_TELEMETRY_PROTOCOLS "FrSky S.PORT\0 ""FrSky D\0 ""FrSky D (cable)""TBS Crossfire\0 ""Spektrum\0 ""AFHDS2A IBUS\0 ""Multi Telemetry" diff --git a/radio/src/translations/it.h.txt b/radio/src/translations/it.h.txt index 7c04f49a8..a0f2852d6 100644 --- a/radio/src/translations/it.h.txt +++ b/radio/src/translations/it.h.txt @@ -104,14 +104,6 @@ #define LEN_JACKMODES "\007" #define TR_JACKMODES "Ask\0 ""Audio\0 ""Trainer" -#if defined(PCBXLITES) || defined(PCBX9LITE) -#define LEN_MODULE_PROTOCOLS "\014" -#define TR_MODULE_PROTOCOLS "OFF\0 ""PPM\0 ""XJT\0 ""ISRM\0 ""DSM2\0 ""CRSF\0 ""MULT\0 ""R9M\0 ""R9M ACCESS\0 ""R9MLite\0 ""R9ML ACCESS\0""R9M Lite PRO""SBUS\0" -#else -#define LEN_MODULE_PROTOCOLS "\014" -#define TR_MODULE_PROTOCOLS "OFF\0 ""PPM\0 ""XJT\0 ""XJT ACCESS\0 ""DSM2\0 ""CRSF\0 ""MULT\0 ""R9M\0 ""R9M ACCESS\0 ""R9MLite\0 ""R9ML ACCESS\0""R9M Lite PRO""SBUS\0" -#endif - #define LEN_TELEMETRY_PROTOCOLS "\017" #define TR_TELEMETRY_PROTOCOLS "FrSky S.PORT\0 ""FrSky D\0 ""FrSky D (cable)""TBS Crossfire\0 ""Spektrum\0 ""AFHDS2A IBUS\0 ""Multi Telemetry" diff --git a/radio/src/translations/nl.h.txt b/radio/src/translations/nl.h.txt index dd4c5e6a7..a13c66dcb 100644 --- a/radio/src/translations/nl.h.txt +++ b/radio/src/translations/nl.h.txt @@ -106,14 +106,6 @@ #define LEN_JACKMODES "\007" #define TR_JACKMODES "Popup\0 ""Audio\0 ""Trainer" -#if defined(PCBXLITES) || defined(PCBX9LITE) -#define LEN_MODULE_PROTOCOLS "\014" -#define TR_MODULE_PROTOCOLS "OFF\0 ""PPM\0 ""XJT\0 ""ISRM\0 ""DSM2\0 ""CRSF\0 ""MULT\0 ""R9M\0 ""R9M ACCESS\0 ""R9MLite\0 ""R9ML ACCESS\0""R9M Lite PRO""SBUS\0" -#else -#define LEN_MODULE_PROTOCOLS "\014" -#define TR_MODULE_PROTOCOLS "OFF\0 ""PPM\0 ""XJT\0 ""XJT ACCESS\0 ""DSM2\0 ""CRSF\0 ""MULT\0 ""R9M\0 ""R9M ACCESS\0 ""R9MLite\0 ""R9ML ACCESS\0""R9M Lite PRO""SBUS\0" -#endif - #define LEN_TELEMETRY_PROTOCOLS "\017" #define TR_TELEMETRY_PROTOCOLS "FrSky S.PORT\0 ""FrSky D\0 ""FrSky D (cable)""TBS Crossfire\0 ""Spektrum\0 ""AFHDS2A IBUS\0 ""Multi Telemetry" diff --git a/radio/src/translations/pl.h.txt b/radio/src/translations/pl.h.txt index a6cf832ca..3787db2f4 100644 --- a/radio/src/translations/pl.h.txt +++ b/radio/src/translations/pl.h.txt @@ -104,14 +104,6 @@ #define LEN_JACKMODES "\007" #define TR_JACKMODES "Ask\0 ""Audio\0 ""Trainer" -#if defined(PCBXLITES) || defined(PCBX9LITE) -#define LEN_MODULE_PROTOCOLS "\014" -#define TR_MODULE_PROTOCOLS "OFF\0 ""PPM\0 ""XJT\0 ""ISRM\0 ""DSM2\0 ""CRSF\0 ""MULT\0 ""R9M\0 ""R9M ACCESS\0 ""R9MLite\0 ""R9ML ACCESS\0""R9M Lite PRO""SBUS\0" -#else -#define LEN_MODULE_PROTOCOLS "\014" -#define TR_MODULE_PROTOCOLS "OFF\0 ""PPM\0 ""XJT\0 ""XJT ACCESS\0 ""DSM2\0 ""CRSF\0 ""MULT\0 ""R9M\0 ""R9M ACCESS\0 ""R9MLite\0 ""R9ML ACCESS\0""R9M Lite PRO""SBUS\0" -#endif - #define LEN_TELEMETRY_PROTOCOLS "\017" #define TR_TELEMETRY_PROTOCOLS "FrSky S.PORT\0 ""FrSky D\0 ""FrSky D (cable)""TBS Crossfire\0 ""Spektrum\0 ""AFHDS2A IBUS\0 ""Multi Telemetry" diff --git a/radio/src/translations/pt.h.txt b/radio/src/translations/pt.h.txt index 20f884710..d4bf75507 100644 --- a/radio/src/translations/pt.h.txt +++ b/radio/src/translations/pt.h.txt @@ -104,14 +104,6 @@ #define LEN_JACKMODES "\007" #define TR_JACKMODES "Popup\0 ""Audio\0 ""Trainer" -#if defined(PCBXLITES) || defined(PCBX9LITE) -#define LEN_MODULE_PROTOCOLS "\014" -#define TR_MODULE_PROTOCOLS "OFF\0 ""PPM\0 ""XJT\0 ""ISRM\0 ""DSM2\0 ""CRSF\0 ""MULT\0 ""R9M\0 ""R9M ACCESS\0 ""R9MLite\0 ""R9ML ACCESS\0""R9M Lite PRO""SBUS\0" -#else -#define LEN_MODULE_PROTOCOLS "\014" -#define TR_MODULE_PROTOCOLS "OFF\0 ""PPM\0 ""XJT\0 ""XJT ACCESS\0 ""DSM2\0 ""CRSF\0 ""MULT\0 ""R9M\0 ""R9M ACCESS\0 ""R9MLite\0 ""R9ML ACCESS\0""R9M Lite PRO""SBUS\0" -#endif - #define LEN_TELEMETRY_PROTOCOLS "\017" #define TR_TELEMETRY_PROTOCOLS "FrSky S.PORT\0 ""FrSky D\0 ""FrSky D (cable)""TBS Crossfire\0 ""Spektrum\0 ""AFHDS2A IBUS\0 ""Multi Telemetry" diff --git a/radio/src/translations/se.h.txt b/radio/src/translations/se.h.txt index 18ade3122..ef8c613e1 100644 --- a/radio/src/translations/se.h.txt +++ b/radio/src/translations/se.h.txt @@ -104,14 +104,6 @@ #define LEN_JACKMODES "\007" #define TR_JACKMODES "Ask\0 ""Audio\0 ""Trainer" -#if defined(PCBXLITES) || defined(PCBX9LITE) -#define LEN_MODULE_PROTOCOLS "\014" -#define TR_MODULE_PROTOCOLS "OFF\0 ""PPM\0 ""XJT\0 ""ISRM\0 ""DSM2\0 ""CRSF\0 ""MULT\0 ""R9M\0 ""R9M ACCESS\0 ""R9MLite\0 ""R9ML ACCESS\0""R9M Lite PRO""SBUS\0" -#else -#define LEN_MODULE_PROTOCOLS "\014" -#define TR_MODULE_PROTOCOLS "OFF\0 ""PPM\0 ""XJT\0 ""XJT ACCESS\0 ""DSM2\0 ""CRSF\0 ""MULT\0 ""R9M\0 ""R9M ACCESS\0 ""R9MLite\0 ""R9ML ACCESS\0""R9M Lite PRO""SBUS\0" -#endif - #define LEN_TELEMETRY_PROTOCOLS "\017" #define TR_TELEMETRY_PROTOCOLS "FrSky S.PORT\0 ""FrSky D\0 ""FrSky D (cable)""TBS Crossfire\0 ""Spektrum\0 ""AFHDS2A IBUS\0 ""Multi Telemetry" diff --git a/radio/src/translations/untranslated.h b/radio/src/translations/untranslated.h index 4d8e42929..45be5969b 100644 --- a/radio/src/translations/untranslated.h +++ b/radio/src/translations/untranslated.h @@ -69,24 +69,40 @@ #endif #if defined(PCBHORUS) - #define TR_VTRAINERMODES TR_VTRAINER_MASTER_JACK TR_VTRAINER_SLAVE_JACK TR_VTRAINER_MASTER_BATTERY TR_VTRAINER_BLUETOOTH + #define TR_VTRAINERMODES TR_VTRAINER_MASTER_JACK TR_VTRAINER_SLAVE_JACK TR_VTRAINER_MASTER_BATTERY TR_VTRAINER_BLUETOOTH #elif defined(PCBX9E) - #define TR_VTRAINERMODES TR_VTRAINER_MASTER_JACK TR_VTRAINER_SLAVE_JACK TR_VTRAINER_MASTER_SBUS_MODULE TR_VTRAINER_MASTER_CPPM_MODULE TR_VTRAINER_MASTER_BATTERY TR_VTRAINER_BLUETOOTH + #define TR_VTRAINERMODES TR_VTRAINER_MASTER_JACK TR_VTRAINER_SLAVE_JACK TR_VTRAINER_MASTER_SBUS_MODULE TR_VTRAINER_MASTER_CPPM_MODULE TR_VTRAINER_MASTER_BATTERY TR_VTRAINER_BLUETOOTH #elif defined(PCBTARANIS) && defined(BLUETOOTH) - #define TR_VTRAINERMODES TR_VTRAINER_MASTER_JACK TR_VTRAINER_SLAVE_JACK TR_VTRAINER_MASTER_SBUS_MODULE TR_VTRAINER_MASTER_CPPM_MODULE TR_VTRAINER_MASTER_BATTERY TR_VTRAINER_BLUETOOTH + #define TR_VTRAINERMODES TR_VTRAINER_MASTER_JACK TR_VTRAINER_SLAVE_JACK TR_VTRAINER_MASTER_SBUS_MODULE TR_VTRAINER_MASTER_CPPM_MODULE TR_VTRAINER_MASTER_BATTERY TR_VTRAINER_BLUETOOTH #elif defined(PCBTARANIS) - #define TR_VTRAINERMODES TR_VTRAINER_MASTER_JACK TR_VTRAINER_SLAVE_JACK TR_VTRAINER_MASTER_SBUS_MODULE TR_VTRAINER_MASTER_CPPM_MODULE TR_VTRAINER_MASTER_BATTERY + #define TR_VTRAINERMODES TR_VTRAINER_MASTER_JACK TR_VTRAINER_SLAVE_JACK TR_VTRAINER_MASTER_SBUS_MODULE TR_VTRAINER_MASTER_CPPM_MODULE TR_VTRAINER_MASTER_BATTERY #else - #define TR_VTRAINERMODES TR_VTRAINER_MASTER_JACK TR_VTRAINER_SLAVE_JACK TR_VTRAINER_MASTER_CPPM_MODULE TR_VTRAINER_MASTER_BATTERY + #define TR_VTRAINERMODES TR_VTRAINER_MASTER_JACK TR_VTRAINER_SLAVE_JACK TR_VTRAINER_MASTER_CPPM_MODULE TR_VTRAINER_MASTER_BATTERY #endif -#define TR_VSRCRAW "---\0" TR_STICKS_VSRCRAW TR_POTS_VSRCRAW TR_ROTARY_ENCODERS TR_GYR_VSRCRAW "MAX\0" TR_CYC_VSRCRAW TR_TRIMS_VSRCRAW TR_SW_VSRCRAW TR_EXTRA_VSRCRAW +#define TR_VSRCRAW "---\0" TR_STICKS_VSRCRAW TR_POTS_VSRCRAW TR_ROTARY_ENCODERS TR_GYR_VSRCRAW "MAX\0" TR_CYC_VSRCRAW TR_TRIMS_VSRCRAW TR_SW_VSRCRAW TR_EXTRA_VSRCRAW + +#if defined(PXX1) +#define LEN_MODULE_PROTOCOLS "\010" +#define TR_MODULE_PROTOCOLS "OFF\0 ""PPM\0 ""XJT\0 ""ISRM\0 ""DSM2\0 ""CRSF\0 ""MULT\0 ""R9M\0 ""R9M2\0 ""R9MLite\0""R9ML2\0 ""R9MLP\0 ""SBUS" +#else +#define LEN_MODULE_PROTOCOLS "\010" +#define TR_MODULE_PROTOCOLS "OFF\0 ""PPM\0 ""ACCST\0 ""ISRM\0 ""DSM2\0 ""CRSF\0 ""MULT\0 ""---\0 ""R9M\0 ""---\0 ""R9ML\0 ""R9MLP\0 ""SBUS\0" +#endif #define LEN_ACCST_RF_PROTOCOLS "\004" #define TR_ACCST_RF_PROTOCOLS "OFF\0""D16\0""D8\0 ""LR12" -#define LEN_ACCESS_RF_PROTOCOLS "\006" -#define TR_ACCESS_RF_PROTOCOLS "ACCESS""D16\0 ""LR12" +#if defined(PXX1) +#define LEN_ISRM_PXX2_RF_PROTOCOLS "\006" +#define TR_ISRM_PXX2_RF_PROTOCOLS "ACCESS""D16\0 ""LR12" +#else +#define LEN_ISRM_PXX2_RF_PROTOCOLS "\012" +#define TR_ISRM_PXX2_RF_PROTOCOLS "OFF\0 ""ACCESS\0 ""ACCST D16\0""ACCST LR12" +#endif + +#define LEN_R9M_PXX2_RF_PROTOCOLS "\006" +#define TR_R9M_PXX2_RF_PROTOCOLS "ACCESS""FCC\0 ""EU\0 ""Flex" #define LEN_DSM_PROTOCOLS "\004" #define TR_DSM_PROTOCOLS "LP45""DSM2""DSMX" diff --git a/radio/util/fwoptions.py b/radio/util/fwoptions.py index a715d0cc5..d1b5ddfcd 100755 --- a/radio/util/fwoptions.py +++ b/radio/util/fwoptions.py @@ -41,7 +41,7 @@ options_sky9x = { "faichoice": ("FAI", "CHOICE", None), "nooverridech": ("OVERRIDE_CHANNEL_FUNCTION", "NO", "YES"), "multimodule": ("MULTIMODULE", "YES", "NO"), - "flexr9m": ("MODULE_R9M_FLEX_FW", "YES", None) + "flexr9m": ("MODULE_R9M_FLEX", "YES", None) } options_ar9x = { @@ -63,7 +63,7 @@ options_ar9x = { "nooverridech": ("OVERRIDE_CHANNEL_FUNCTION", "NO", "YES"), # "rtc": ("RTCLOCK", "YES", "NO"), "multimodule": ("MULTIMODULE", "YES", "NO"), - "flexr9m": ("MODULE_R9M_FLEX_FW", "YES", None) + "flexr9m": ("MODULE_R9M_FLEX", "YES", None) } options_taranis_x9d = {