1
0
Fork 0
mirror of https://github.com/EdgeTX/edgetx.git synced 2025-07-22 15:55:17 +03:00

R9M ACCESS / ACCST refactoring

This commit is contained in:
Bertrand Songis 2019-05-28 11:00:12 +02:00
parent 15c65a6c91
commit d8dbe5abda
No known key found for this signature in database
GPG key ID: F189F79290FEC50F
9 changed files with 32 additions and 43 deletions

View file

@ -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(FRSKY_STICKS "Reverse sticks for FrSky sticks" OFF)
option(NANO "Use nano newlib and binalloc") option(NANO "Use nano newlib and binalloc")
option(NIGHTLY_BUILD_WARNING "Warn this is a nightly build" OFF) option(NIGHTLY_BUILD_WARNING "Warn this is a nightly build" OFF)
option(MODULE_R9M_FLEX "Add R9M options for non certified firmwwares" OFF) option(R9M_PROTO_FLEX "Add R9M options for non certified firmwwares" OFF)
option(FRSKY_RELEASE "Used to build FrSky released firmware" 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. # 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) add_definitions(-DNIGHTLY_BUILD_WARNING)
endif() endif()
if(MODULE_R9M_FLEX) if(R9M_PROTO_FLEX)
add_definitions(-DMODULE_R9M_FLEX) add_definitions(-DR9M_PROTO_FLEX)
endif() endif()
if(FRSKY_RELEASE) if(FRSKY_RELEASE)

View file

@ -1015,7 +1015,6 @@ void menuModelSetup(event_t event)
case ITEM_MODEL_SETUP_INTERNAL_MODULE_TYPE: { case ITEM_MODEL_SETUP_INTERNAL_MODULE_TYPE: {
lcdDrawTextAlignedLeft(y, STR_MODE); 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); lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_MODULE_PROTOCOLS, g_model.moduleData[INTERNAL_MODULE].type, menuHorizontalPosition==0 ? attr : 0);
if (isModuleXJT(INTERNAL_MODULE)) if (isModuleXJT(INTERNAL_MODULE))
lcdDrawTextAtIndex(lcdNextPos + 3, y, STR_ACCST_RF_PROTOCOLS, 1+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);
@ -1043,24 +1042,6 @@ void menuModelSetup(event_t event)
g_model.moduleData[INTERNAL_MODULE].subType = checkIncDec(event, g_model.moduleData[INTERNAL_MODULE].subType, 0, MODULE_SUBTYPE_ISRM_PXX2_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; break;
} }
#endif #endif
@ -1078,8 +1059,6 @@ void menuModelSetup(event_t event)
case ITEM_MODEL_SETUP_EXTERNAL_MODULE_TYPE: case ITEM_MODEL_SETUP_EXTERNAL_MODULE_TYPE:
lcdDrawTextAlignedLeft(y, STR_MODE); lcdDrawTextAlignedLeft(y, STR_MODE);
lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_MODULE_PROTOCOLS, g_model.moduleData[EXTERNAL_MODULE].type, menuHorizontalPosition==0 ? attr : 0); 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)) if (isModuleXJT(EXTERNAL_MODULE))
lcdDrawTextAtIndex(lcdNextPos + 3, 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)) else if (isModuleDSM2(EXTERNAL_MODULE))
@ -1117,8 +1096,6 @@ void menuModelSetup(event_t event)
} }
break; break;
case 1: 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)) if (isModuleDSM2(EXTERNAL_MODULE))
CHECK_INCDEC_MODELVAR(event, g_model.moduleData[EXTERNAL_MODULE].rfProtocol, DSM2_PROTO_LP45, DSM2_PROTO_DSMX); CHECK_INCDEC_MODELVAR(event, g_model.moduleData[EXTERNAL_MODULE].rfProtocol, DSM2_PROTO_LP45, DSM2_PROTO_DSMX);
else if (isModuleR9M(EXTERNAL_MODULE)) { else if (isModuleR9M(EXTERNAL_MODULE)) {

View file

@ -514,7 +514,7 @@ bool isSourceAvailableInResetSpecialFunction(int index)
#if defined(PCBXLITE) #if defined(PCBXLITE)
bool isR9MModeAvailable(int mode) bool isR9MModeAvailable(int mode)
{ {
#if defined(MODULE_R9M_FLEX) #if defined(R9M_PROTO_FLEX)
return mode >= MODULE_SUBTYPE_R9M_EUPLUS; return mode >= MODULE_SUBTYPE_R9M_EUPLUS;
#else #else
return mode <= MODULE_SUBTYPE_R9M_EU; return mode <= MODULE_SUBTYPE_R9M_EU;
@ -524,7 +524,7 @@ bool isR9MModeAvailable(int mode)
#else #else
bool isR9MModeAvailable(int mode) bool isR9MModeAvailable(int mode)
{ {
#if defined(MODULE_R9M_FLEX) #if defined(R9M_PROTO_FLEX)
return mode < MODULE_SUBTYPE_R9M_EUPLUS; return mode < MODULE_SUBTYPE_R9M_EUPLUS;
#else #else
return true; return true;
@ -611,7 +611,12 @@ bool isExternalModuleAvailable(int moduleType)
return false; return false;
#endif #endif
#if defined(FRSKY_RELEASE) #if !defined(XJT)
if (moduleType == MODULE_TYPE_PXX1_XJT)
return false;
#endif
#if !defined(R9M_SIZE_STD)
if (moduleType == MODULE_TYPE_PXX1_R9M) if (moduleType == MODULE_TYPE_PXX1_R9M)
return false; return false;
#endif #endif

View file

@ -37,7 +37,7 @@ enum ModuleSubtypeR9M_PXX2 {
MODULE_SUBTYPE_R9M_PXX2_ACCESS, MODULE_SUBTYPE_R9M_PXX2_ACCESS,
MODULE_SUBTYPE_R9M_PXX2_FCC, MODULE_SUBTYPE_R9M_PXX2_FCC,
MODULE_SUBTYPE_R9M_PXX2_EU, MODULE_SUBTYPE_R9M_PXX2_EU,
#if defined(MODULE_R9M_FLEX) #if defined(R9M_PROTO_FLEX)
MODULE_SUBTYPE_R9M_PXX2_FLEX, MODULE_SUBTYPE_R9M_PXX2_FLEX,
#endif #endif
MODULE_SUBTYPE_R9M_PXX2_COUNT, MODULE_SUBTYPE_R9M_PXX2_COUNT,

View file

@ -155,7 +155,7 @@ inline bool isModuleRFAccess(uint8_t idx)
return g_model.moduleData[idx].subType == MODULE_SUBTYPE_ISRM_PXX2_ACCESS; return g_model.moduleData[idx].subType == MODULE_SUBTYPE_ISRM_PXX2_ACCESS;
} }
else if (isModuleR9M2(idx)) { else if (isModuleR9M2(idx)) {
return g_model.moduleData[idx].subType == MODULE_SUBTYPE_R9M_PXX2_ACCESS; return true;
} }
else { else {
return false; return false;

View file

@ -227,10 +227,7 @@ void Pxx2Pulses::setupAccstBindFrame(uint8_t module)
for (uint8_t i=0; i<PXX2_LEN_RX_NAME; i++) { for (uint8_t i=0; i<PXX2_LEN_RX_NAME; i++) {
Pxx2Transport::addByte(0x00); Pxx2Transport::addByte(0x00);
} }
if (g_model.moduleData[module].type == MODULE_TYPE_PXX2_ISRM) Pxx2Transport::addByte((g_model.moduleData[module].pxx.receiver_telem_off << 7) + (g_model.moduleData[module].pxx.receiver_telem_off << 6));
Pxx2Transport::addByte((g_model.moduleData[module].pxx.receiver_telem_off << 7) + (g_model.moduleData[module].pxx.receiver_telem_off << 6));
else
Pxx2Transport::addByte(0x00);
Pxx2Transport::addByte(g_model.header.modelId[module]); Pxx2Transport::addByte(g_model.header.modelId[module]);
} }
@ -357,10 +354,10 @@ void Pxx2Pulses::setupFrame(uint8_t module)
setupRegisterFrame(module); setupRegisterFrame(module);
break; break;
case MODULE_MODE_BIND: case MODULE_MODE_BIND:
if (g_model.moduleData[module].subType == MODULE_SUBTYPE_ISRM_PXX2_ACCESS || g_model.moduleData[module].subType == MODULE_SUBTYPE_R9M_PXX2_ACCESS) if (g_model.moduleData[module].type == MODULE_TYPE_PXX2_ISRM && g_model.moduleData[module].subType != MODULE_SUBTYPE_ISRM_PXX2_ACCESS)
setupAccessBindFrame(module);
else
setupAccstBindFrame(module); setupAccstBindFrame(module);
else
setupAccessBindFrame(module);
break; break;
case MODULE_MODE_RESET: case MODULE_MODE_RESET:
setupResetFrame(module); setupResetFrame(module);

View file

@ -7,6 +7,8 @@ option(TRACE_SD_CARD "Traces SD enabled" OFF)
option(TRACE_FATFS "Traces FatFS enabled" OFF) option(TRACE_FATFS "Traces FatFS enabled" OFF)
option(TRACE_AUDIO "Traces audio enabled" OFF) option(TRACE_AUDIO "Traces audio enabled" OFF)
option(DEBUG_TRACE_BUFFER "Debug Trace Screen" OFF) option(DEBUG_TRACE_BUFFER "Debug Trace Screen" OFF)
option(XJT "XJT TX Module" ON)
option(R9M_SIZE_STD "R9M standard size TX Module" ON)
option(PPM "PPM TX Module" ON) option(PPM "PPM TX Module" ON)
option(DSM2 "DSM2 TX Module" ON) option(DSM2 "DSM2 TX Module" ON)
option(SBUS "SBUS TX Module" ON) option(SBUS "SBUS TX Module" ON)
@ -117,6 +119,14 @@ if(PXX2)
) )
endif() endif()
if(XJT)
add_definitions(-DXJT)
endif()
if(R9M_SIZE_STD)
add_definitions(-DR9M_SIZE_STD)
endif()
if(MULTIMODULE) if(MULTIMODULE)
add_definitions(-DMULTIMODULE) add_definitions(-DMULTIMODULE)
set(SRC ${SRC} pulses/multi.cpp telemetry/spektrum.cpp telemetry/flysky_ibus.cpp telemetry/multi.cpp) set(SRC ${SRC} pulses/multi.cpp telemetry/spektrum.cpp telemetry/flysky_ibus.cpp telemetry/multi.cpp)

View file

@ -82,9 +82,9 @@
#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) #if 1 // defined(PXX1)
#define LEN_MODULE_PROTOCOLS "\010" #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 ""R9M2\0 ""R9MLite\0""R9ML2\0 ""R9MLP\0 ""SBUS" #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""R9MLP ACCESS""SBUS"
#else #else
#define LEN_MODULE_PROTOCOLS "\010" #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" #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"

View file

@ -41,7 +41,7 @@ options_sky9x = {
"faichoice": ("FAI", "CHOICE", None), "faichoice": ("FAI", "CHOICE", None),
"nooverridech": ("OVERRIDE_CHANNEL_FUNCTION", "NO", "YES"), "nooverridech": ("OVERRIDE_CHANNEL_FUNCTION", "NO", "YES"),
"multimodule": ("MULTIMODULE", "YES", "NO"), "multimodule": ("MULTIMODULE", "YES", "NO"),
"flexr9m": ("MODULE_R9M_FLEX", "YES", None) "flexr9m": ("R9M_PROTO_FLEX", "YES", None)
} }
options_ar9x = { options_ar9x = {
@ -63,7 +63,7 @@ options_ar9x = {
"nooverridech": ("OVERRIDE_CHANNEL_FUNCTION", "NO", "YES"), "nooverridech": ("OVERRIDE_CHANNEL_FUNCTION", "NO", "YES"),
# "rtc": ("RTCLOCK", "YES", "NO"), # "rtc": ("RTCLOCK", "YES", "NO"),
"multimodule": ("MULTIMODULE", "YES", "NO"), "multimodule": ("MULTIMODULE", "YES", "NO"),
"flexr9m": ("MODULE_R9M_FLEX", "YES", None) "flexr9m": ("R9M_PROTO_FLEX", "YES", None)
} }
options_taranis_x9d = { options_taranis_x9d = {