Update protocols of Multi module (#4093)

* Update protocols of Multi module

* Fix missing ;
This commit is contained in:
Arne Schwabe
2016-12-08 21:33:59 +01:00
committed by Bertrand Songis
parent ec56d2dbdb
commit 85f3e3510e
21 changed files with 191 additions and 92 deletions
+15 -2
View File
@@ -656,6 +656,9 @@ void menuModelSetup(event_t event)
case MM_RF_PROTO_SYMAX:
lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_SUBTYPE_SYMAX, g_model.moduleData[EXTERNAL_MODULE].subType, attr);
break;
case MM_RF_PROTO_SLT:
lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_SUBTYPE_SLT, g_model.moduleData[EXTERNAL_MODULE].subType, attr);
break;
case MM_RF_PROTO_CX10:
lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_SUBTYPE_CX10, g_model.moduleData[EXTERNAL_MODULE].subType, attr);
break;
@@ -674,6 +677,9 @@ void menuModelSetup(event_t event)
case MM_RF_PROTO_FS_AFHDS2A:
lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_SUBTYPE_AFHDS2A, g_model.moduleData[EXTERNAL_MODULE].subType, attr);
break;
case MM_RF_PROTO_Q2X2:
lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_SUBTYPE_Q2X2, g_model.moduleData[EXTERNAL_MODULE].subType, attr);
break;
case MM_RF_CUSTOM_SELECTED:
lcdDrawNumber(MODEL_SETUP_2ND_COLUMN + 3 * FW, y, g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(false), RIGHT | (menuHorizontalPosition == 0 ? attr : 0), 2);
lcdDrawNumber(MODEL_SETUP_2ND_COLUMN + 5 * FW, y, g_model.moduleData[EXTERNAL_MODULE].subType, RIGHT | (menuHorizontalPosition == 1 ? attr : 0), 2);
@@ -686,12 +692,13 @@ void menuModelSetup(event_t event)
case MM_RF_PROTO_HISKY:
case MM_RF_PROTO_SYMAX:
case MM_RF_PROTO_KN:
case MM_RF_PROTO_SLT:
case MM_RF_PROTO_Q2X2:
CHECK_INCDEC_MODELVAR(event, g_model.moduleData[EXTERNAL_MODULE].subType, 0, 1);
break;
case MM_RF_PROTO_CG023:
CHECK_INCDEC_MODELVAR(event, g_model.moduleData[EXTERNAL_MODULE].subType, 0, 2);
break;
case MM_RF_PROTO_FLYSKY:
case MM_RF_PROTO_FRSKY:
case MM_RF_PROTO_DSM2:
case MM_RF_PROTO_MT99XX:
@@ -700,6 +707,7 @@ void menuModelSetup(event_t event)
break;
case MM_RF_PROTO_MJXQ:
case MM_RF_PROTO_YD717:
case MM_RF_PROTO_FLYSKY:
CHECK_INCDEC_MODELVAR(event, g_model.moduleData[EXTERNAL_MODULE].subType, 0, 4);
break;
case MM_RF_PROTO_CX10:
@@ -817,7 +825,7 @@ void menuModelSetup(event_t event)
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) {
if (editMode>0 || p1valdiff) {
CHECK_INCDEC_MODELVAR_ZERO(event, g_model.header.modelId[moduleIdx], IS_MODULE_DSM2(moduleIdx) ? 20 : IS_MODULE_MULTIMODULE(moduleIdx) ? 15 : 63);
CHECK_INCDEC_MODELVAR_ZERO(event, g_model.header.modelId[moduleIdx], MAX_RX_NUM(moduleIdx));
if (checkIncDec_Ret) {
modelHeaders[g_eeGeneral.currModel].modelId[moduleIdx] = g_model.header.modelId[moduleIdx];
}
@@ -909,6 +917,9 @@ void menuModelSetup(event_t event)
case MM_RF_PROTO_HUBSAN:
lcdDrawTextAlignedLeft(y, STR_MULTI_VIDFREQ);
break;
case MM_RF_PROTO_OLRS:
lcdDrawTextAlignedLeft(y, STR_MULTI_RFPOWER);
break;
case MM_RF_PROTO_FS_AFHDS2A:
lcdDrawTextAlignedLeft(y, TR_MULTI_SERVOFREQ);
optionValue = 50 + 5 * optionValue;
@@ -921,6 +932,8 @@ void menuModelSetup(event_t event)
if (attr) {
if (g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(true) == MM_RF_PROTO_FS_AFHDS2A) {
CHECK_INCDEC_MODELVAR(event, g_model.moduleData[moduleIdx].multi.optionValue, 0, 70);
} else if (g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(true) == MM_RF_PROTO_OLRS) {
CHECK_INCDEC_MODELVAR(event, g_model.moduleData[moduleIdx].multi.optionValue, -1, 7);
} else {
CHECK_INCDEC_MODELVAR(event, g_model.moduleData[moduleIdx].multi.optionValue, -128, 127);
}
+16 -4
View File
@@ -725,6 +725,9 @@ void menuModelSetup(event_t event)
case MM_RF_PROTO_SYMAX:
lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN+11*FW, y, STR_SUBTYPE_SYMAX, g_model.moduleData[EXTERNAL_MODULE].subType, menuHorizontalPosition==2 ? attr : 0);
break;
case MM_RF_PROTO_SLT:
lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN+11*FW, y, STR_SUBTYPE_SLT, g_model.moduleData[EXTERNAL_MODULE].subType, menuHorizontalPosition==2 ? attr : 0);
break;
case MM_RF_PROTO_CX10:
lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN+10*FW, y, STR_SUBTYPE_CX10, g_model.moduleData[EXTERNAL_MODULE].subType, menuHorizontalPosition==2 ? attr : 0);
break;
@@ -743,6 +746,9 @@ void menuModelSetup(event_t event)
case MM_RF_PROTO_FS_AFHDS2A:
lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN+10*FW, y, STR_SUBTYPE_AFHDS2A , g_model.moduleData[EXTERNAL_MODULE].subType, menuHorizontalPosition==2 ? attr : 0);
break;
case MM_RF_PROTO_Q2X2:
lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN+10*FW, y, STR_SUBTYPE_Q2X2 , g_model.moduleData[EXTERNAL_MODULE].subType, menuHorizontalPosition==2 ? attr : 0);
break;
case MM_RF_CUSTOM_SELECTED:
lcdDrawNumber(MODEL_SETUP_2ND_COLUMN+14*FW, y, g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(false), menuHorizontalPosition==2 ? attr : 0, 2);
lcdDrawNumber(MODEL_SETUP_2ND_COLUMN+16*FW, y, g_model.moduleData[EXTERNAL_MODULE].subType, menuHorizontalPosition==3 ? attr : 0, 2);
@@ -800,18 +806,20 @@ void menuModelSetup(event_t event)
case MM_RF_PROTO_HISKY:
case MM_RF_PROTO_SYMAX:
case MM_RF_PROTO_KN:
case MM_RF_PROTO_SLT:
case MM_RF_PROTO_Q2X2:
CHECK_INCDEC_MODELVAR(event, g_model.moduleData[EXTERNAL_MODULE].subType, 0, 1);
break;
case MM_RF_PROTO_CG023:
CHECK_INCDEC_MODELVAR(event, g_model.moduleData[EXTERNAL_MODULE].subType, 0, 2);
break;
case MM_RF_PROTO_FLYSKY:
case MM_RF_PROTO_MT99XX:
case MM_RF_PROTO_FRSKY:
case MM_RF_PROTO_DSM2:
case MM_RF_PROTO_FS_AFHDS2A:
CHECK_INCDEC_MODELVAR(event, g_model.moduleData[EXTERNAL_MODULE].subType, 0, 3);
break;
case MM_RF_PROTO_FLYSKY:
case MM_RF_PROTO_MJXQ:
case MM_RF_PROTO_YD717:
CHECK_INCDEC_MODELVAR(event, g_model.moduleData[EXTERNAL_MODULE].subType, 0, 4);
@@ -920,9 +928,8 @@ void menuModelSetup(event_t event)
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) {
if (s_editMode>0) {
CHECK_INCDEC_MODELVAR_ZERO(event, g_model.header.modelId[moduleIdx],
IS_MODULE_DSM2(moduleIdx) ? 20 :
IS_MODULE_MULTIMODULE(moduleIdx) ? 15 : 63);
CHECK_INCDEC_MODELVAR_ZERO(event, g_model.header.modelId[moduleIdx], MAX_RX_NUM(moduleIdx));
if (checkIncDec_Ret) {
modelHeaders[g_eeGeneral.currModel].modelId[moduleIdx] = g_model.header.modelId[moduleIdx];
}
@@ -998,6 +1005,9 @@ void menuModelSetup(event_t event)
case MM_RF_PROTO_HUBSAN:
lcdDrawTextAlignedLeft(y, STR_MULTI_VIDFREQ);
break;
case MM_RF_PROTO_OLRS:
lcdDrawTextAlignedLeft(y, STR_MULTI_RFPOWER);
break;
case MM_RF_PROTO_FS_AFHDS2A:
lcdDrawTextAlignedLeft(y, TR_MULTI_SERVOFREQ);
optionValue = 50 + 5 * optionValue;
@@ -1010,6 +1020,8 @@ void menuModelSetup(event_t event)
if (attr) {
if (g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(true) == MM_RF_PROTO_FS_AFHDS2A) {
CHECK_INCDEC_MODELVAR(event, g_model.moduleData[moduleIdx].multi.optionValue, 0, 70);
} else if (g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(true) == MM_RF_PROTO_OLRS) {
CHECK_INCDEC_MODELVAR(event, g_model.moduleData[moduleIdx].multi.optionValue, -1, 7);
} else {
CHECK_INCDEC_MODELVAR(event, g_model.moduleData[moduleIdx].multi.optionValue, -128, 127);
}
+14 -4
View File
@@ -656,6 +656,9 @@ bool menuModelSetup(event_t event)
case MM_RF_PROTO_SYMAX:
lcdDrawTextAtIndex(MODEL_SETUP_4TH_COLUMN, y, STR_SUBTYPE_SYMAX, g_model.moduleData[EXTERNAL_MODULE].subType, menuHorizontalPosition==2 ? attr : 0);
break;
case MM_RF_PROTO_SLT:
lcdDrawTextAtIndex(MODEL_SETUP_4TH_COLUMN, y, STR_SUBTYPE_SLT, g_model.moduleData[EXTERNAL_MODULE].subType, menuHorizontalPosition==2 ? attr : 0);
break;
case MM_RF_PROTO_CX10:
lcdDrawTextAtIndex(MODEL_SETUP_4TH_COLUMN, y, STR_SUBTYPE_CX10, g_model.moduleData[EXTERNAL_MODULE].subType, menuHorizontalPosition==2 ? attr : 0);
break;
@@ -674,6 +677,9 @@ bool menuModelSetup(event_t event)
case MM_RF_PROTO_FS_AFHDS2A:
lcdDrawTextAtIndex(MODEL_SETUP_4TH_COLUMN, y, STR_SUBTYPE_AFHDS2A , g_model.moduleData[EXTERNAL_MODULE].subType, menuHorizontalPosition==2 ? attr : 0);
break;
case MM_RF_PROTO_Q2X2:
lcdDrawTextAtIndex(MODEL_SETUP_4TH_COLUMN, y, STR_SUBTYPE_Q2X2, g_model.moduleData[EXTERNAL_MODULE].subType, menuHorizontalPosition==2 ? attr : 0);
break;
case MM_RF_CUSTOM_SELECTED:
lcdDrawNumber(MODEL_SETUP_4TH_COLUMN, y, g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(false), menuHorizontalPosition==2 ? attr : 0, 2);
lcdDrawNumber(MODEL_SETUP_4TH_COLUMN + MODEL_SETUP_BIND_OFS, y, g_model.moduleData[EXTERNAL_MODULE].subType, menuHorizontalPosition==3 ? attr : 0, 2);
@@ -732,12 +738,12 @@ bool menuModelSetup(event_t event)
case MM_RF_PROTO_HISKY:
case MM_RF_PROTO_SYMAX:
case MM_RF_PROTO_KN:
case MM_RF_PROTO_SLT:
CHECK_INCDEC_MODELVAR(event, g_model.moduleData[EXTERNAL_MODULE].subType, 0, 1);
break;
case MM_RF_PROTO_CG023:
CHECK_INCDEC_MODELVAR(event, g_model.moduleData[EXTERNAL_MODULE].subType, 0, 2);
break;
case MM_RF_PROTO_FLYSKY:
case MM_RF_PROTO_MT99XX:
case MM_RF_PROTO_FRSKY:
case MM_RF_PROTO_DSM2:
@@ -746,6 +752,7 @@ bool menuModelSetup(event_t event)
break;
case MM_RF_PROTO_MJXQ:
case MM_RF_PROTO_YD717:
case MM_RF_PROTO_FLYSKY:
CHECK_INCDEC_MODELVAR(event, g_model.moduleData[EXTERNAL_MODULE].subType, 0, 4);
break;
case MM_RF_PROTO_CX10:
@@ -842,9 +849,7 @@ bool menuModelSetup(event_t event)
if (IS_MODULE_XJT(moduleIdx) || IS_MODULE_DSM2(moduleIdx) || IS_MODULE_MULTIMODULE(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 && s_editMode>0) {
CHECK_INCDEC_MODELVAR_ZERO(event, g_model.header.modelId[moduleIdx],
IS_MODULE_DSM2(moduleIdx) ? 20 :
IS_MODULE_MULTIMODULE(moduleIdx) ? 15 : 63);
CHECK_INCDEC_MODELVAR_ZERO(event, g_model.header.modelId[moduleIdx], MAX_RX_NUM(moduleIdx));
}
drawButton(MODEL_SETUP_2ND_COLUMN+xOffsetBind, y, STR_MODULE_BIND, (moduleFlag[moduleIdx] == MODULE_BIND ? BUTTON_ON : BUTTON_OFF) | (l_posHorz==1 ? attr : 0));
drawButton(MODEL_SETUP_2ND_COLUMN+MODEL_SETUP_RANGE_OFS+xOffsetBind, y, STR_MODULE_RANGE, (moduleFlag[moduleIdx] == MODULE_RANGECHECK ? BUTTON_ON : BUTTON_OFF) | (l_posHorz==2 ? attr : 0));
@@ -913,6 +918,9 @@ bool menuModelSetup(event_t event)
case MM_RF_PROTO_HUBSAN:
lcdDrawText(MENUS_MARGIN_LEFT, y, STR_MULTI_VIDFREQ);
break;
case MM_RF_PROTO_OLRS:
lcdDrawText(MENUS_MARGIN_LEFT, y, STR_MULTI_RFPOWER);
break;
case MM_RF_PROTO_FS_AFHDS2A:
lcdDrawText(MENUS_MARGIN_LEFT, y, STR_MULTI_SERVOFREQ);
optionValue = 50 + 5 * optionValue;
@@ -925,6 +933,8 @@ bool menuModelSetup(event_t event)
if (attr) {
if (g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(true) == MM_RF_PROTO_FS_AFHDS2A) {
CHECK_INCDEC_MODELVAR(event, g_model.moduleData[moduleIdx].multi.optionValue, 0, 70);
} else if (g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(true) == MM_RF_PROTO_OLRS) {
CHECK_INCDEC_MODELVAR(event, g_model.moduleData[moduleIdx].multi.optionValue, -1, 7);
} else {
CHECK_INCDEC_MODELVAR(event, g_model.moduleData[moduleIdx].multi.optionValue, -128, 127);
}
+8 -3
View File
@@ -120,17 +120,22 @@ void runFatalErrorScreen(const char * message);
#define MULTIMODULE_SUBTYPE_ROWS(x) IS_MODULE_MULTIMODULE(x) ? MULTIMODULE_RFPROTO_ROWS(x) : HIDDEN_ROW,
#define MULTIMODULE_HAS_SUBTYPE(x) (x == MM_RF_PROTO_FLYSKY || x == MM_RF_PROTO_FRSKY || x == MM_RF_PROTO_HISKY || x == MM_RF_PROTO_DSM2 || x == MM_RF_PROTO_YD717 \
|| x == MM_RF_PROTO_KN || x == MM_RF_PROTO_SYMAX || x == MM_RF_PROTO_CX10 || x == MM_RF_PROTO_CG023 || x == MM_RF_PROTO_MT99XX \
|| x == MM_RF_PROTO_MJXQ || x == MM_RF_PROTO_HONTAI || x == MM_RF_PROTO_FS_AFHDS2A || x == MM_RF_CUSTOM_SELECTED)
#define MULTIMODULE_HASOPTIONS(x) (x == MM_RF_PROTO_HUBSAN || x == MM_RF_PROTO_FRSKY || x == MM_RF_PROTO_SFHSS || x == MM_RF_PROTO_FS_AFHDS2A || x == MM_RF_CUSTOM_SELECTED)
|| x == MM_RF_PROTO_MJXQ || x == MM_RF_PROTO_HONTAI || x == MM_RF_PROTO_FS_AFHDS2A || x == MM_RF_PROTO_SLT || x == MM_RF_PROTO_Q2X2 \
|| x == MM_RF_CUSTOM_SELECTED)
#define MULTIMODULE_HASOPTIONS(x) (x == MM_RF_PROTO_HUBSAN || x == MM_RF_PROTO_FRSKY || x == MM_RF_PROTO_SFHSS || x == MM_RF_PROTO_FS_AFHDS2A \
|| x == MM_RF_PROTO_OLRS || x == MM_RF_CUSTOM_SELECTED)
#define MULTIMODULE_FAILSAFEROWS(x) (IS_MODULE_MULTIMODULE(x) && (MULTIMODULE_HASOPTIONS(g_model.moduleData[x].getMultiProtocol(true)))) ? (uint8_t) 0: HIDDEN_ROW
#define MULTI_MAX_RX_NUM(x) (g_model.moduleData[x].getMultiProtocol(true) == MM_RF_PROTO_OLRS ? 4 : 15)
#else
#define MULTIMODULE_MODULE_ROWS
#define MULTIMODULE_FAILSAFEROWS(x) HIDDEN_ROW
#define MULTIMODULE_SUBTYPE_ROWS(x)
#define MULTIMODULE_MODE_ROWS(x) (uint8_t)0
#define MULTI_MAX_RX_NUM(x) 15
#endif
#define MAX_RX_NUM(x) (IS_MODULE_DSM2(x) ? 20 : IS_MODULE_MULTIMODULE(x) ? MULTI_MAX_RX_NUM(x) : 63)
#define IS_D8_RX(x) (g_model.moduleData[x].rfProtocol == RF_PROTO_D8)
#define IF_TRAINER_ON(x) (g_model.trainerMode == TRAINER_MODE_SLAVE ? (uint8_t)(x) : HIDDEN_ROW)