Removing PPM support also removed Trainer / Trainee feature

This commit is contained in:
Bertrand Songis
2019-05-20 08:59:22 +02:00
parent 09a89581e2
commit 5313285a35
2 changed files with 167 additions and 176 deletions
+166 -169
View File
@@ -43,101 +43,101 @@ uint8_t getSwitchWarningsCount()
#endif
enum MenuModelSetupItems {
ITEM_MODEL_NAME,
ITEM_MODEL_TIMER1,
ITEM_MODEL_TIMER1_NAME,
ITEM_MODEL_TIMER1_PERSISTENT,
ITEM_MODEL_TIMER1_MINUTE_BEEP,
ITEM_MODEL_TIMER1_COUNTDOWN_BEEP,
ITEM_MODEL_TIMER2,
ITEM_MODEL_TIMER2_NAME,
ITEM_MODEL_TIMER2_PERSISTENT,
ITEM_MODEL_TIMER2_MINUTE_BEEP,
ITEM_MODEL_TIMER2_COUNTDOWN_BEEP,
ITEM_MODEL_TIMER3,
ITEM_MODEL_TIMER3_NAME,
ITEM_MODEL_TIMER3_PERSISTENT,
ITEM_MODEL_TIMER3_MINUTE_BEEP,
ITEM_MODEL_TIMER3_COUNTDOWN_BEEP,
ITEM_MODEL_EXTENDED_LIMITS,
ITEM_MODEL_EXTENDED_TRIMS,
ITEM_MODEL_DISPLAY_TRIMS,
ITEM_MODEL_TRIM_INC,
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_NAME,
ITEM_MODEL_SETUP_TIMER1,
ITEM_MODEL_SETUP_TIMER1_NAME,
ITEM_MODEL_SETUP_TIMER1_PERSISTENT,
ITEM_MODEL_SETUP_TIMER1_MINUTE_BEEP,
ITEM_MODEL_SETUP_TIMER1_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,
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,
ITEM_MODEL_SETUP_EXTENDED_LIMITS,
ITEM_MODEL_SETUP_EXTENDED_TRIMS,
ITEM_MODEL_SETUP_DISPLAY_TRIMS,
ITEM_MODEL_SETUP_TRIM_INC,
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_WARNING,
#if defined(PCBTARANIS)
ITEM_MODEL_SWITCHES_WARNING2,
ITEM_MODEL_POTS_WARNING,
ITEM_MODEL_SETUP_SWITCHES_WARNING2,
ITEM_MODEL_SETUP_POTS_WARNING,
#endif
ITEM_MODEL_BEEP_CENTER,
ITEM_MODEL_USE_GLOBAL_FUNCTIONS,
ITEM_MODEL_REGISTRATION_ID,
ITEM_MODEL_SETUP_BEEP_CENTER,
ITEM_MODEL_SETUP_USE_GLOBAL_FUNCTIONS,
ITEM_MODEL_SETUP_REGISTRATION_ID,
#if defined(PCBTARANIS)
ITEM_MODEL_INTERNAL_MODULE_LABEL,
ITEM_MODEL_INTERNAL_MODULE_MODE,
ITEM_MODEL_INTERNAL_MODULE_CHANNELS,
ITEM_MODEL_INTERNAL_MODULE_NPXX2_BIND,
ITEM_MODEL_INTERNAL_MODULE_PXX2_MODEL_NUM,
ITEM_MODEL_SETUP_INTERNAL_MODULE_LABEL,
ITEM_MODEL_SETUP_INTERNAL_MODULE_MODE,
ITEM_MODEL_SETUP_INTERNAL_MODULE_CHANNELS,
ITEM_MODEL_SETUP_INTERNAL_MODULE_NPXX2_BIND,
ITEM_MODEL_SETUP_INTERNAL_MODULE_PXX2_MODEL_NUM,
#if defined(EXTERNAL_ANTENNA)
ITEM_MODEL_INTERNAL_MODULE_ANTENNA,
ITEM_MODEL_SETUP_INTERNAL_MODULE_ANTENNA,
#endif
ITEM_MODEL_INTERNAL_MODULE_FAILSAFE,
ITEM_MODEL_INTERNAL_MODULE_PXX2_REGISTER_RANGE,
ITEM_MODEL_INTERNAL_MODULE_PXX2_OPTIONS,
ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_1,
ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_2,
ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_3,
ITEM_MODEL_SETUP_INTERNAL_MODULE_FAILSAFE,
ITEM_MODEL_SETUP_INTERNAL_MODULE_PXX2_REGISTER_RANGE,
ITEM_MODEL_SETUP_INTERNAL_MODULE_PXX2_OPTIONS,
ITEM_MODEL_SETUP_INTERNAL_MODULE_PXX2_RECEIVER_1,
ITEM_MODEL_SETUP_INTERNAL_MODULE_PXX2_RECEIVER_2,
ITEM_MODEL_SETUP_INTERNAL_MODULE_PXX2_RECEIVER_3,
#endif
ITEM_MODEL_EXTERNAL_MODULE_LABEL,
ITEM_MODEL_EXTERNAL_MODULE_MODE,
ITEM_MODEL_SETUP_EXTERNAL_MODULE_LABEL,
ITEM_MODEL_SETUP_EXTERNAL_MODULE_MODE,
#if defined(MULTIMODULE)
ITEM_MODEL_EXTERNAL_MODULE_SUBTYPE,
ITEM_MODEL_EXTERNAL_MODULE_STATUS,
ITEM_MODEL_EXTERNAL_MODULE_SYNCSTATUS,
ITEM_MODEL_SETUP_EXTERNAL_MODULE_SUBTYPE,
ITEM_MODEL_SETUP_EXTERNAL_MODULE_STATUS,
ITEM_MODEL_SETUP_EXTERNAL_MODULE_SYNCSTATUS,
#endif
ITEM_MODEL_EXTERNAL_MODULE_CHANNELS,
ITEM_MODEL_EXTERNAL_MODULE_NPXX2_BIND,
ITEM_MODEL_EXTERNAL_MODULE_PXX2_MODEL_NUM,
ITEM_MODEL_SETUP_EXTERNAL_MODULE_CHANNELS,
ITEM_MODEL_SETUP_EXTERNAL_MODULE_NPXX2_BIND,
ITEM_MODEL_SETUP_EXTERNAL_MODULE_PXX2_MODEL_NUM,
#if defined(PCBSKY9X) && defined(REVX)
ITEM_MODEL_EXTERNAL_MODULE_OUTPUT_TYPE,
ITEM_MODEL_SETUP_EXTERNAL_MODULE_OUTPUT_TYPE,
#endif
ITEM_MODEL_EXTERNAL_MODULE_OPTIONS,
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_EXTERNAL_MODULE_FAILSAFE,
ITEM_MODEL_EXTERNAL_MODULE_PXX2_REGISTER_RANGE,
ITEM_MODEL_EXTERNAL_MODULE_PXX2_OPTIONS,
ITEM_MODEL_EXTERNAL_MODULE_PXX2_RECEIVER_1,
ITEM_MODEL_EXTERNAL_MODULE_PXX2_RECEIVER_2,
ITEM_MODEL_EXTERNAL_MODULE_PXX2_RECEIVER_3,
ITEM_MODEL_SETUP_EXTERNAL_MODULE_POWER,
ITEM_MODEL_SETUP_EXTERNAL_MODULE_FAILSAFE,
ITEM_MODEL_SETUP_EXTERNAL_MODULE_PXX2_REGISTER_RANGE,
ITEM_MODEL_SETUP_EXTERNAL_MODULE_PXX2_OPTIONS,
ITEM_MODEL_SETUP_EXTERNAL_MODULE_PXX2_RECEIVER_1,
ITEM_MODEL_SETUP_EXTERNAL_MODULE_PXX2_RECEIVER_2,
ITEM_MODEL_SETUP_EXTERNAL_MODULE_PXX2_RECEIVER_3,
#if defined(PCBSKY9X)
ITEM_MODEL_EXTRA_MODULE_LABEL,
ITEM_MODEL_EXTRA_MODULE_CHANNELS,
ITEM_MODEL_EXTRA_MODULE_BIND,
ITEM_MODEL_SETUP_EXTRA_MODULE_LABEL,
ITEM_MODEL_SETUP_EXTRA_MODULE_CHANNELS,
ITEM_MODEL_SETUP_EXTRA_MODULE_BIND,
#endif
#if defined(PCBTARANIS)
ITEM_MODEL_TRAINER_LABEL,
ITEM_MODEL_TRAINER_MODE,
ITEM_MODEL_SETUP_TRAINER_LABEL,
ITEM_MODEL_SETUP_TRAINER_MODE,
#endif
#if defined(PCBX7) || defined(PCBX9LITE)
#if defined(BLUETOOTH)
ITEM_MODEL_TRAINER_BLUETOOTH,
ITEM_MODEL_SETUP_TRAINER_BLUETOOTH,
#endif
ITEM_MODEL_TRAINER_CHANNELS,
ITEM_MODEL_TRAINER_PARAMS,
ITEM_MODEL_SETUP_TRAINER_CHANNELS,
ITEM_MODEL_SETUP_TRAINER_PARAMS,
#elif defined(PCBXLITE)
ITEM_MODEL_TRAINER_BLUETOOTH,
ITEM_MODEL_TRAINER_CHANNELS,
ITEM_MODEL_TRAINER_PARAMS,
ITEM_MODEL_SETUP_TRAINER_BLUETOOTH,
ITEM_MODEL_SETUP_TRAINER_CHANNELS,
ITEM_MODEL_SETUP_TRAINER_PARAMS,
#endif
ITEM_MODEL_SETUP_MAX
ITEM_MODEL_SETUP_LINES_COUNT
};
#if defined(PCBSKY9X)
@@ -155,10 +155,10 @@ enum MenuModelSetupItems {
#define IF_NOT_PXX2_MODULE(module, xxx) (isModulePXX2(module) ? HIDDEN_ROW : (uint8_t)(xxx))
#if defined(PCBTARANIS)
#define CURRENT_MODULE_EDITED(k) (k >= ITEM_MODEL_EXTERNAL_MODULE_LABEL ? EXTERNAL_MODULE : INTERNAL_MODULE)
#define CURRENT_RECEIVER_EDITED(k) (k - (k >= ITEM_MODEL_EXTERNAL_MODULE_LABEL ? ITEM_MODEL_EXTERNAL_MODULE_PXX2_RECEIVER_1 : ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_1))
#define CURRENT_MODULE_EDITED(k) (k >= ITEM_MODEL_SETUP_EXTERNAL_MODULE_LABEL ? EXTERNAL_MODULE : INTERNAL_MODULE)
#define CURRENT_RECEIVER_EDITED(k) (k - (k >= ITEM_MODEL_SETUP_EXTERNAL_MODULE_LABEL ? ITEM_MODEL_SETUP_EXTERNAL_MODULE_PXX2_RECEIVER_1 : ITEM_MODEL_SETUP_INTERNAL_MODULE_PXX2_RECEIVER_1))
#elif defined(PCBSKY9X)
#define CURRENT_MODULE_EDITED(k) (k >= ITEM_MODEL_EXTRA_MODULE_LABEL ? EXTRA_MODULE : EXTERNAL_MODULE)
#define CURRENT_MODULE_EDITED(k) (k >= ITEM_MODEL_SETUP_EXTRA_MODULE_LABEL ? EXTRA_MODULE : EXTERNAL_MODULE)
#else
#define CURRENT_MODULE_EDITED(k) (EXTERNAL_MODULE)
#endif
@@ -175,17 +175,14 @@ enum MenuModelSetupItems {
#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
#if defined(PCBSKY9X) && defined(REVX)
#define OUTPUT_TYPE_ROWS() (isModulePPM(EXTERNAL_MODULE) ? (uint8_t)0 : HIDDEN_ROW) ,
#define OUTPUT_TYPE_ROWS() (isModulePPM(EXTERNAL_MODULE) ? (uint8_t)0 : HIDDEN_ROW) ,
#elif defined(PCBSKY9X)
#define OUTPUT_TYPE_ROWS()
#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 CURSOR_ON_CELL (true)
#define MODEL_SETUP_MAX_LINES (HEADER_LINE+ITEM_MODEL_SETUP_MAX)
#define POT_WARN_ITEMS() ((g_model.potsWarnMode) ? (uint8_t)(NUM_POTS+NUM_SLIDERS) : (uint8_t)0)
#define TIMER_ROWS 2, 0, 0, 0, 0
@@ -601,7 +598,7 @@ void menuModelSetup(event_t event)
});
#endif
MENU_CHECK(menuTabModel, MENU_MODEL_SETUP, HEADER_LINE+MODEL_SETUP_MAX_LINES);
MENU_CHECK(menuTabModel, MENU_MODEL_SETUP, HEADER_LINE + ITEM_MODEL_SETUP_LINES_COUNT);
#if (defined(DSM2) || defined(PXX))
if (menuEvent) {
@@ -636,16 +633,16 @@ void menuModelSetup(event_t event)
LcdFlags attr = (sub == k ? blink : 0);
switch (k) {
case ITEM_MODEL_NAME:
case ITEM_MODEL_SETUP_NAME:
editSingleName(MODEL_SETUP_2ND_COLUMN, y, STR_MODELNAME, g_model.header.name, sizeof(g_model.header.name), event, attr);
memcpy(modelHeaders[g_eeGeneral.currModel].name, g_model.header.name, sizeof(g_model.header.name));
break;
case ITEM_MODEL_TIMER1:
case ITEM_MODEL_TIMER2:
case ITEM_MODEL_TIMER3:
case ITEM_MODEL_SETUP_TIMER1:
case ITEM_MODEL_SETUP_TIMER2:
case ITEM_MODEL_SETUP_TIMER3:
{
unsigned int timerIdx = (k>=ITEM_MODEL_TIMER3 ? 2 : (k>=ITEM_MODEL_TIMER2 ? 1 : 0));
unsigned int timerIdx = (k>=ITEM_MODEL_SETUP_TIMER3 ? 2 : (k>=ITEM_MODEL_SETUP_TIMER2 ? 1 : 0));
TimerData * timer = &g_model.timers[timerIdx];
drawStringWithIndex(0*FW, y, STR_TIMER, timerIdx+1);
drawTimerMode(MODEL_SETUP_2ND_COLUMN, y, timer->mode, menuHorizontalPosition==0 ? attr : 0);
@@ -687,47 +684,47 @@ void menuModelSetup(event_t event)
break;
}
case ITEM_MODEL_TIMER1_NAME:
case ITEM_MODEL_TIMER2_NAME:
case ITEM_MODEL_TIMER3_NAME:
case ITEM_MODEL_SETUP_TIMER1_NAME:
case ITEM_MODEL_SETUP_TIMER2_NAME:
case ITEM_MODEL_SETUP_TIMER3_NAME:
{
TimerData * timer = &g_model.timers[k>=ITEM_MODEL_TIMER3 ? 2 : (k>=ITEM_MODEL_TIMER2 ? 1 : 0)];
TimerData * timer = &g_model.timers[k>=ITEM_MODEL_SETUP_TIMER3 ? 2 : (k>=ITEM_MODEL_SETUP_TIMER2 ? 1 : 0)];
editSingleName(MODEL_SETUP_2ND_COLUMN, y, STR_TIMER_NAME, timer->name, sizeof(timer->name), event, attr);
break;
}
case ITEM_MODEL_TIMER1_MINUTE_BEEP:
case ITEM_MODEL_TIMER2_MINUTE_BEEP:
case ITEM_MODEL_TIMER3_MINUTE_BEEP:
case ITEM_MODEL_SETUP_TIMER1_MINUTE_BEEP:
case ITEM_MODEL_SETUP_TIMER2_MINUTE_BEEP:
case ITEM_MODEL_SETUP_TIMER3_MINUTE_BEEP:
{
TimerData * timer = &g_model.timers[k>=ITEM_MODEL_TIMER3 ? 2 : (k>=ITEM_MODEL_TIMER2 ? 1 : 0)];
TimerData * timer = &g_model.timers[k>=ITEM_MODEL_SETUP_TIMER3 ? 2 : (k>=ITEM_MODEL_SETUP_TIMER2 ? 1 : 0)];
timer->minuteBeep = editCheckBox(timer->minuteBeep, MODEL_SETUP_2ND_COLUMN, y, STR_MINUTEBEEP, attr, event);
break;
}
case ITEM_MODEL_TIMER1_COUNTDOWN_BEEP:
case ITEM_MODEL_TIMER2_COUNTDOWN_BEEP:
case ITEM_MODEL_TIMER3_COUNTDOWN_BEEP:
case ITEM_MODEL_SETUP_TIMER1_COUNTDOWN_BEEP:
case ITEM_MODEL_SETUP_TIMER2_COUNTDOWN_BEEP:
case ITEM_MODEL_SETUP_TIMER3_COUNTDOWN_BEEP:
{
TimerData * timer = &g_model.timers[k>=ITEM_MODEL_TIMER3 ? 2 : (k>=ITEM_MODEL_TIMER2 ? 1 : 0)];
TimerData * timer = &g_model.timers[k>=ITEM_MODEL_SETUP_TIMER3 ? 2 : (k>=ITEM_MODEL_SETUP_TIMER2 ? 1 : 0)];
timer->countdownBeep = editChoice(MODEL_SETUP_2ND_COLUMN, y, STR_BEEPCOUNTDOWN, STR_VBEEPCOUNTDOWN, timer->countdownBeep, COUNTDOWN_SILENT, COUNTDOWN_COUNT-1, attr, event);
break;
}
case ITEM_MODEL_TIMER1_PERSISTENT:
case ITEM_MODEL_TIMER2_PERSISTENT:
case ITEM_MODEL_TIMER3_PERSISTENT:
case ITEM_MODEL_SETUP_TIMER1_PERSISTENT:
case ITEM_MODEL_SETUP_TIMER2_PERSISTENT:
case ITEM_MODEL_SETUP_TIMER3_PERSISTENT:
{
TimerData * timer = &g_model.timers[k>=ITEM_MODEL_TIMER3 ? 2 : (k>=ITEM_MODEL_TIMER2 ? 1 : 0)];
TimerData * timer = &g_model.timers[k>=ITEM_MODEL_SETUP_TIMER3 ? 2 : (k>=ITEM_MODEL_SETUP_TIMER2 ? 1 : 0)];
timer->persistent = editChoice(MODEL_SETUP_2ND_COLUMN, y, STR_PERSISTENT, STR_VPERSISTENT, timer->persistent, 0, 2, attr, event);
break;
}
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+4*FW, y, STR_RESET_BTN, (menuHorizontalPosition>0 && !NO_HIGHLIGHT()) ? attr : 0);
if (attr && menuHorizontalPosition>0) {
@@ -743,19 +740,19 @@ 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_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(event, g_model.thrTraceSrc, NUM_POTS+NUM_SLIDERS+MAX_OUTPUT_CHANNELS);
@@ -768,24 +765,24 @@ 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(PCBTARANIS)
case ITEM_MODEL_SWITCHES_WARNING2:
case ITEM_MODEL_SETUP_SWITCHES_WARNING2:
if (i==0) {
if (CURSOR_MOVED_LEFT(event))
menuVerticalOffset--;
@@ -795,7 +792,7 @@ void menuModelSetup(event_t event)
break;
#endif
case ITEM_MODEL_SWITCHES_WARNING:
case ITEM_MODEL_SETUP_SWITCHES_WARNING:
#if defined(PCBTARANIS)
{
#define FIRSTSW_STR STR_VSRCRAW+(MIXSRC_FIRST_SWITCH-MIXSRC_Rud+1)*length
@@ -926,7 +923,7 @@ void menuModelSetup(event_t event)
}
#if defined(PCBTARANIS)
case ITEM_MODEL_POTS_WARNING:
case ITEM_MODEL_SETUP_POTS_WARNING:
lcdDrawTextAlignedLeft(y, STR_POTWARNING);
lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, "\004""OFF\0""Man\0""Auto", g_model.potsWarnMode, (menuHorizontalPosition == 0) ? attr : 0);
if (attr && (menuHorizontalPosition == 0)) {
@@ -974,14 +971,14 @@ void menuModelSetup(event_t event)
break;
#endif
case ITEM_MODEL_BEEP_CENTER:
case ITEM_MODEL_SETUP_BEEP_CENTER:
lcdDrawTextAlignedLeft(y, STR_BEEPCTR);
for (uint8_t i=0; i<NUM_STICKS+NUM_POTS+NUM_SLIDERS; i++) {
// TODO flash saving, \001 not needed in STR_RETA123
coord_t x = MODEL_SETUP_2ND_COLUMN+i*FW;
lcdDrawTextAtIndex(x, y, STR_RETA123, i, ((menuHorizontalPosition==i) && attr) ? BLINK|INVERS : (((g_model.beepANACenter & ((BeepANACenter)1<<i)) || (attr && CURSOR_ON_LINE())) ? INVERS : 0 ) );
}
if (attr && CURSOR_ON_CELL) {
if (attr) {
if (event == EVT_KEY_BREAK(KEY_ENTER)) {
if (READ_ONLY_UNLOCKED()) {
s_editMode = 0;
@@ -992,18 +989,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;
#if defined(HARDWARE_INTERNAL_MODULE)
case ITEM_MODEL_INTERNAL_MODULE_LABEL:
case ITEM_MODEL_SETUP_INTERNAL_MODULE_LABEL:
lcdDrawTextAlignedLeft(y, TR_INTERNALRF);
break;
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))
@@ -1036,16 +1033,16 @@ void menuModelSetup(event_t event)
#endif
#if defined(PCBSKY9X)
case ITEM_MODEL_EXTRA_MODULE_LABEL:
case ITEM_MODEL_SETUP_EXTRA_MODULE_LABEL:
lcdDrawTextAlignedLeft(y, "RF Port 2 (PPM)");
break;
#endif
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))
@@ -1131,7 +1128,7 @@ void menuModelSetup(event_t event)
break;
#if defined(MULTIMODULE)
case ITEM_MODEL_EXTERNAL_MODULE_SUBTYPE:
case ITEM_MODEL_SETUP_EXTERNAL_MODULE_SUBTYPE:
{
lcdDrawTextAlignedLeft(y, STR_SUBTYPE);
uint8_t multi_rfProto = g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(true);
@@ -1164,11 +1161,11 @@ void menuModelSetup(event_t event)
#endif
#if defined(PCBTARANIS)
case ITEM_MODEL_TRAINER_LABEL:
case ITEM_MODEL_SETUP_TRAINER_LABEL:
lcdDrawTextAlignedLeft(y, STR_TRAINER);
break;
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) {
@@ -1184,7 +1181,7 @@ void menuModelSetup(event_t event)
#endif
#if defined(PCBTARANIS) && defined(BLUETOOTH)
case ITEM_MODEL_TRAINER_BLUETOOTH:
case ITEM_MODEL_SETUP_TRAINER_BLUETOOTH:
if (g_model.trainerData.mode == TRAINER_MODE_MASTER_BLUETOOTH) {
if (attr) {
s_editMode = 0;
@@ -1234,7 +1231,7 @@ void menuModelSetup(event_t event)
#endif
#if defined(PCBTARANIS)
case ITEM_MODEL_TRAINER_CHANNELS:
case ITEM_MODEL_SETUP_TRAINER_CHANNELS:
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));
@@ -1254,12 +1251,12 @@ void menuModelSetup(event_t event)
#endif
#if defined(PCBTARANIS)
case ITEM_MODEL_INTERNAL_MODULE_CHANNELS:
case ITEM_MODEL_SETUP_INTERNAL_MODULE_CHANNELS:
#endif
#if defined(PCBSKY9X)
case ITEM_MODEL_EXTRA_MODULE_CHANNELS:
case ITEM_MODEL_SETUP_EXTRA_MODULE_CHANNELS:
#endif
case ITEM_MODEL_EXTERNAL_MODULE_CHANNELS:
case ITEM_MODEL_SETUP_EXTERNAL_MODULE_CHANNELS:
{
uint8_t moduleIdx = CURRENT_MODULE_EDITED(k);
ModuleData & moduleData = g_model.moduleData[moduleIdx];
@@ -1276,7 +1273,7 @@ void menuModelSetup(event_t event)
break;
case 1:
CHECK_INCDEC_MODELVAR_CHECK(event, moduleData.channelsCount, -4, min<int8_t>(maxModuleChannels_M8(moduleIdx), 32-8-moduleData.channelsStart), moduleData.type == MODULE_TYPE_ACCESS_ISRM ? isPXX2ChannelsCountAllowed : nullptr);
if ((k == ITEM_MODEL_EXTERNAL_MODULE_CHANNELS && g_model.moduleData[EXTERNAL_MODULE].type == MODULE_TYPE_PPM)) {
if ((k == ITEM_MODEL_SETUP_EXTERNAL_MODULE_CHANNELS && g_model.moduleData[EXTERNAL_MODULE].type == MODULE_TYPE_PPM)) {
SET_DEFAULT_PPM_FRAME_LENGTH(moduleIdx);
}
break;
@@ -1286,8 +1283,8 @@ void menuModelSetup(event_t event)
break;
}
#if defined(PCBX7) || defined(PCBX9LITE)
case ITEM_MODEL_TRAINER_PARAMS:
#if defined(PCBX7) || defined(PCBX9LITE) || defined(PCBXLITE)
case ITEM_MODEL_SETUP_TRAINER_PARAMS:
lcdDrawTextAlignedLeft(y, STR_PPMFRAME);
lcdDrawText(MODEL_SETUP_2ND_COLUMN+3*FW, y, STR_MS);
lcdDrawNumber(MODEL_SETUP_2ND_COLUMN, y, (int16_t)g_model.trainerData.frameLength*5 + 225, (menuHorizontalPosition<=0 ? attr : 0) | PREC1|LEFT);
@@ -1311,7 +1308,7 @@ void menuModelSetup(event_t event)
#endif
#if defined(PXX2)
case ITEM_MODEL_REGISTRATION_ID:
case ITEM_MODEL_SETUP_REGISTRATION_ID:
lcdDrawTextAlignedLeft(y, STR_REG_ID);
if (isDefaultModelRegistrationID())
lcdDrawText(MODEL_SETUP_2ND_COLUMN, y, STR_PXX2_DEFAULT);
@@ -1319,8 +1316,8 @@ void menuModelSetup(event_t event)
lcdDrawSizedText(MODEL_SETUP_2ND_COLUMN, y, g_model.modelRegistrationID, PXX2_LEN_REGISTRATION_ID, ZCHAR);
break;
case ITEM_MODEL_INTERNAL_MODULE_PXX2_MODEL_NUM:
case ITEM_MODEL_EXTERNAL_MODULE_PXX2_MODEL_NUM:
case ITEM_MODEL_SETUP_INTERNAL_MODULE_PXX2_MODEL_NUM:
case ITEM_MODEL_SETUP_EXTERNAL_MODULE_PXX2_MODEL_NUM:
{
uint8_t moduleIdx = CURRENT_MODULE_EDITED(k);
lcdDrawTextAlignedLeft(y, STR_RECEIVER_NUM);
@@ -1334,8 +1331,8 @@ void menuModelSetup(event_t event)
}
break;
case ITEM_MODEL_INTERNAL_MODULE_PXX2_REGISTER_RANGE:
case ITEM_MODEL_EXTERNAL_MODULE_PXX2_REGISTER_RANGE:
case ITEM_MODEL_SETUP_INTERNAL_MODULE_PXX2_REGISTER_RANGE:
case ITEM_MODEL_SETUP_EXTERNAL_MODULE_PXX2_REGISTER_RANGE:
{
uint8_t moduleIdx = CURRENT_MODULE_EDITED(k);
lcdDrawTextAlignedLeft(y, STR_MODULE);
@@ -1361,8 +1358,8 @@ void menuModelSetup(event_t event)
}
break;
case ITEM_MODEL_INTERNAL_MODULE_PXX2_OPTIONS:
case ITEM_MODEL_EXTERNAL_MODULE_PXX2_OPTIONS:
case ITEM_MODEL_SETUP_INTERNAL_MODULE_PXX2_OPTIONS:
case ITEM_MODEL_SETUP_EXTERNAL_MODULE_PXX2_OPTIONS:
lcdDrawText(INDENT_WIDTH, y, STR_OPTIONS);
lcdDrawText(MODEL_SETUP_2ND_COLUMN, y, STR_SET, attr);
if (event == EVT_KEY_BREAK(KEY_ENTER) && attr) {
@@ -1371,12 +1368,12 @@ void menuModelSetup(event_t event)
}
break;
case ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_1:
case ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_2:
case ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_3:
case ITEM_MODEL_EXTERNAL_MODULE_PXX2_RECEIVER_1:
case ITEM_MODEL_EXTERNAL_MODULE_PXX2_RECEIVER_2:
case ITEM_MODEL_EXTERNAL_MODULE_PXX2_RECEIVER_3:
case ITEM_MODEL_SETUP_INTERNAL_MODULE_PXX2_RECEIVER_1:
case ITEM_MODEL_SETUP_INTERNAL_MODULE_PXX2_RECEIVER_2:
case ITEM_MODEL_SETUP_INTERNAL_MODULE_PXX2_RECEIVER_3:
case ITEM_MODEL_SETUP_EXTERNAL_MODULE_PXX2_RECEIVER_1:
case ITEM_MODEL_SETUP_EXTERNAL_MODULE_PXX2_RECEIVER_2:
case ITEM_MODEL_SETUP_EXTERNAL_MODULE_PXX2_RECEIVER_3:
{
uint8_t moduleIdx = CURRENT_MODULE_EDITED(k);
uint8_t receiverIdx = CURRENT_RECEIVER_EDITED(k);
@@ -1452,11 +1449,11 @@ void menuModelSetup(event_t event)
#endif
#if defined(PCBSKY9X)
case ITEM_MODEL_EXTRA_MODULE_BIND:
case ITEM_MODEL_SETUP_EXTRA_MODULE_BIND:
#endif
#if defined(PCBTARANIS)
case ITEM_MODEL_INTERNAL_MODULE_NPXX2_BIND:
case ITEM_MODEL_EXTERNAL_MODULE_NPXX2_BIND:
case ITEM_MODEL_SETUP_INTERNAL_MODULE_NPXX2_BIND:
case ITEM_MODEL_SETUP_EXTERNAL_MODULE_NPXX2_BIND:
#endif
{
uint8_t moduleIdx = CURRENT_MODULE_EDITED(k);
@@ -1614,7 +1611,7 @@ void menuModelSetup(event_t event)
}
#if defined(PCBSKY9X) && defined(REVX)
case ITEM_MODEL_EXTERNAL_MODULE_OUTPUT_TYPE:
case ITEM_MODEL_SETUP_EXTERNAL_MODULE_OUTPUT_TYPE:
{
uint8_t moduleIdx = CURRENT_MODULE_EDITED(k);
ModuleData & moduleData = g_model.moduleData[moduleIdx];
@@ -1624,9 +1621,9 @@ void menuModelSetup(event_t event)
#endif
#if defined(PCBTARANIS)
case ITEM_MODEL_INTERNAL_MODULE_FAILSAFE:
case ITEM_MODEL_SETUP_INTERNAL_MODULE_FAILSAFE:
#endif
case ITEM_MODEL_EXTERNAL_MODULE_FAILSAFE: {
case ITEM_MODEL_SETUP_EXTERNAL_MODULE_FAILSAFE: {
uint8_t moduleIdx = CURRENT_MODULE_EDITED(k);
ModuleData &moduleData = g_model.moduleData[moduleIdx];
lcdDrawTextAlignedLeft(y, STR_FAILSAFE);
@@ -1666,7 +1663,7 @@ void menuModelSetup(event_t event)
break;
#if defined(PCBXLITE)
case ITEM_MODEL_INTERNAL_MODULE_ANTENNA:
case ITEM_MODEL_SETUP_INTERNAL_MODULE_ANTENNA:
{
uint8_t newAntennaSel = editChoice(MODEL_SETUP_2ND_COLUMN, y, STR_ANTENNASELECTION, STR_VANTENNATYPES, g_model.moduleData[INTERNAL_MODULE].pxx.external_antenna, 0, 1, attr, event);
if (newAntennaSel != g_model.moduleData[INTERNAL_MODULE].pxx.external_antenna && newAntennaSel == XJT_EXTERNAL_ANTENNA) {
@@ -1680,7 +1677,7 @@ void menuModelSetup(event_t event)
break;
}
#endif
case ITEM_MODEL_EXTERNAL_MODULE_OPTIONS:
case ITEM_MODEL_SETUP_EXTERNAL_MODULE_OPTIONS:
{
uint8_t moduleIdx = CURRENT_MODULE_EDITED(k);
#if defined(MULTIMODULE)
@@ -1725,7 +1722,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)) {
@@ -1750,7 +1747,7 @@ void menuModelSetup(event_t event)
CHECK_INCDEC_MODELVAR_ZERO(event, g_model.moduleData[moduleIdx].pxx.power, R9M_LITE_LBT_POWER_MAX);
}
if (attr && editMode == 0 && reusableBuffer.moduleSetup.r9mPower != g_model.moduleData[moduleIdx].pxx.power) {
if((reusableBuffer.moduleSetup.r9mPower + g_model.moduleData[moduleIdx].pxx.power) < 5) { //switching between mode 2 and 3 does not require rebind
if (reusableBuffer.moduleSetup.r9mPower + g_model.moduleData[moduleIdx].pxx.power < 5) { //switching between mode 2 and 3 does not require rebind
POPUP_WARNING(STR_REBIND);
}
reusableBuffer.moduleSetup.r9mPower = g_model.moduleData[moduleIdx].pxx.power;
@@ -1763,7 +1760,7 @@ void menuModelSetup(event_t event)
CHECK_INCDEC_MODELVAR_ZERO(event, g_model.moduleData[moduleIdx].pxx.power, R9M_LBT_POWER_MAX);
}
if (attr && editMode == 0 && reusableBuffer.moduleSetup.r9mPower != g_model.moduleData[moduleIdx].pxx.power) {
if((reusableBuffer.moduleSetup.r9mPower + g_model.moduleData[moduleIdx].pxx.power) < 5) { //switching between mode 2 and 3 does not require rebind
if (reusableBuffer.moduleSetup.r9mPower + g_model.moduleData[moduleIdx].pxx.power < 5) { //switching between mode 2 and 3 does not require rebind
POPUP_WARNING(STR_REBIND);
}
reusableBuffer.moduleSetup.r9mPower = g_model.moduleData[moduleIdx].pxx.power;
@@ -1780,14 +1777,14 @@ void menuModelSetup(event_t event)
break;
#if defined(MULTIMODULE)
case ITEM_MODEL_EXTERNAL_MODULE_AUTOBIND:
case ITEM_MODEL_SETUP_EXTERNAL_MODULE_AUTOBIND:
if (g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(true) == MM_RF_PROTO_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];
@@ -1796,7 +1793,7 @@ void menuModelSetup(event_t event)
break;
}
case ITEM_MODEL_EXTERNAL_MODULE_SYNCSTATUS: {
case ITEM_MODEL_SETUP_EXTERNAL_MODULE_SYNCSTATUS: {
lcdDrawTextAlignedLeft(y, STR_MODULE_SYNC);
char statusText[64];
@@ -1808,7 +1805,7 @@ void menuModelSetup(event_t event)
#if 0
case ITEM_MODEL_PPM2_PROTOCOL:
case ITEM_MODEL_SETUP_PPM2_PROTOCOL:
lcdDrawTextAlignedLeft(y, "Port2");
lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_VPROTOS, 0, 0);
lcdDrawText(MODEL_SETUP_2ND_COLUMN+4*FW+3, y, STR_CH, menuHorizontalPosition<=0 ? attr : 0);
@@ -1829,7 +1826,7 @@ void menuModelSetup(event_t event)
}
break;
case ITEM_MODEL_PPM2_PARAMS:
case ITEM_MODEL_SETUP_PPM2_PARAMS:
lcdDrawTextAlignedLeft(y, STR_PPMFRAME);
lcdDrawText(MODEL_SETUP_2ND_COLUMN+3*FW, y, STR_MS);
lcdDrawNumber(MODEL_SETUP_2ND_COLUMN, y, (int16_t)g_model.moduleData[1].ppmFrameLength*5 + 225, (menuHorizontalPosition<=0 ? attr : 0) | PREC1 | LEFT);
@@ -1866,20 +1863,20 @@ void menuModelSetup(event_t event)
if (old_editMode > 0 && s_editMode == 0) {
switch(menuVerticalPosition) {
#if defined(PCBTARANIS)
case ITEM_MODEL_INTERNAL_MODULE_NPXX2_BIND:
case ITEM_MODEL_INTERNAL_MODULE_PXX2_MODEL_NUM:
case ITEM_MODEL_SETUP_INTERNAL_MODULE_NPXX2_BIND:
case ITEM_MODEL_SETUP_INTERNAL_MODULE_PXX2_MODEL_NUM:
if (menuHorizontalPosition == 0)
checkModelIdUnique(g_eeGeneral.currModel, INTERNAL_MODULE);
break;
#endif
#if defined(PCBSKY9X)
case ITEM_MODEL_EXTRA_MODULE_BIND:
case ITEM_MODEL_SETUP_EXTRA_MODULE_BIND:
if (menuHorizontalPosition == 0)
checkModelIdUnique(g_eeGeneral.currModel, EXTRA_MODULE);
break;
#endif
case ITEM_MODEL_EXTERNAL_MODULE_NPXX2_BIND:
case ITEM_MODEL_EXTERNAL_MODULE_PXX2_MODEL_NUM:
case ITEM_MODEL_SETUP_EXTERNAL_MODULE_NPXX2_BIND:
case ITEM_MODEL_SETUP_EXTERNAL_MODULE_PXX2_MODEL_NUM:
if (menuHorizontalPosition == 0)
checkModelIdUnique(g_eeGeneral.currModel, EXTERNAL_MODULE);
break;