Rework failsafe : POC for discussion
This commit is contained in:
@@ -22,71 +22,63 @@
|
||||
|
||||
extern uint8_t g_moduleIdx;
|
||||
|
||||
void onFailsafeMenu(const char *result)
|
||||
{
|
||||
uint8_t sub = menuVerticalPosition + HEADER_LINE;
|
||||
|
||||
if (result == STR_NONE) {
|
||||
|
||||
}
|
||||
else if (result == STR_HOLD) {
|
||||
|
||||
}
|
||||
else if (result == STR_CHANNEL2FAILSAFE) {
|
||||
|
||||
}
|
||||
else if (result == STR_OUTPUTS2FAILSAFE) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
void menuModelFailsafe(event_t event)
|
||||
{
|
||||
const uint8_t channelStart = g_model.moduleData[g_moduleIdx].channelsStart;
|
||||
uint8_t sub = menuVerticalPosition + HEADER_LINE;
|
||||
const coord_t x = 1;
|
||||
const int lim = (g_model.extendedLimits ? (512 * LIMIT_EXT_PERCENT / 100) : 512) * 2;
|
||||
uint8_t wbar = LCD_W - FW * 4 - FWNUM * 4;
|
||||
#if defined(PPM_UNIT_PERCENT_PREC1)
|
||||
wbar -= 6;
|
||||
#endif
|
||||
|
||||
if (event == EVT_KEY_LONG(KEY_ENTER)) {
|
||||
killEvents(event);
|
||||
event = 0;
|
||||
|
||||
if (menuVerticalPosition < sentModuleChannels(g_moduleIdx)) {
|
||||
if (s_editMode > 0) {
|
||||
g_model.failsafeChannels[menuVerticalPosition] = channelOutputs[menuVerticalPosition+channelStart];
|
||||
s_editMode = 0;
|
||||
}
|
||||
else {
|
||||
int16_t & failsafe = g_model.failsafeChannels[menuVerticalPosition];
|
||||
if (failsafe < FAILSAFE_CHANNEL_HOLD)
|
||||
failsafe = FAILSAFE_CHANNEL_HOLD;
|
||||
else if (failsafe == FAILSAFE_CHANNEL_HOLD)
|
||||
failsafe = FAILSAFE_CHANNEL_NOPULSE;
|
||||
else
|
||||
failsafe = 0;
|
||||
}
|
||||
}
|
||||
else {
|
||||
// "Outputs => Failsafe" menu item
|
||||
setCustomFailsafe(g_moduleIdx);
|
||||
}
|
||||
|
||||
storageDirty(EE_MODEL);
|
||||
AUDIO_WARNING1();
|
||||
SEND_FAILSAFE_NOW(g_moduleIdx);
|
||||
}
|
||||
|
||||
SIMPLE_SUBMENU_NOTITLE(sentModuleChannels(g_moduleIdx) + 1);
|
||||
SIMPLE_SUBMENU_NOTITLE(sentModuleChannels(g_moduleIdx));
|
||||
|
||||
lcdDrawTextAlignedCenter(0, FAILSAFESET);
|
||||
lcdInvertLine(0);
|
||||
|
||||
const coord_t x = 1;
|
||||
coord_t y = FH + 1;
|
||||
uint8_t line = (menuVerticalPosition >= sentModuleChannels(g_moduleIdx) ? 2 : 0);
|
||||
uint8_t ch = (menuVerticalPosition & ~0x07) + + line;
|
||||
for (uint8_t i=0; i<LCD_LINES-1; i++) {
|
||||
coord_t y = MENU_HEADER_HEIGHT + 1 + i * FH;
|
||||
uint8_t k = i + menuVerticalOffset + HEADER_LINE;
|
||||
LcdFlags attr = (sub == k) ? INVERS : 0;
|
||||
|
||||
// Channels
|
||||
for (; line < 8; line++) {
|
||||
const int32_t channelValue = channelOutputs[ch+channelStart];
|
||||
int32_t failsafeValue = g_model.failsafeChannels[ch];
|
||||
uint8_t wbar = LCD_W - FW * 4 - FWNUM * 4;
|
||||
#if defined(PPM_UNIT_PERCENT_PREC1)
|
||||
wbar -= 6;
|
||||
#endif
|
||||
|
||||
if (menuVerticalPosition >= sentModuleChannels(g_moduleIdx)) {
|
||||
// Outputs => Failsafe
|
||||
lcdDrawText(CENTER_OFS, LCD_H - (FH + 1), STR_OUTPUTS2FAILSAFE, INVERS);
|
||||
break;
|
||||
if (sub==k && event==EVT_KEY_FIRST(KEY_ENTER) && !READ_ONLY()) {
|
||||
killEvents(event);
|
||||
POPUP_MENU_ADD_ITEM(STR_NONE);
|
||||
POPUP_MENU_ADD_ITEM(STR_HOLD);
|
||||
POPUP_MENU_ADD_ITEM(STR_CHANNEL2FAILSAFE);
|
||||
POPUP_MENU_ADD_ITEM(STR_OUTPUTS2FAILSAFE);
|
||||
POPUP_MENU_START(onFailsafeMenu);
|
||||
}
|
||||
|
||||
const int32_t channelValue = channelOutputs[k];
|
||||
int32_t failsafeValue = g_model.failsafeChannels[k];
|
||||
|
||||
// Channel
|
||||
putsChn(x+1, y, ch+1, SMLSIZE);
|
||||
putsChn(0, y, k, SMLSIZE);
|
||||
|
||||
// Value
|
||||
LcdFlags flags = TINSIZE;
|
||||
if (menuVerticalPosition == ch) {
|
||||
if (attr) {
|
||||
flags |= INVERS;
|
||||
if (s_editMode > 0) {
|
||||
if (failsafeValue == FAILSAFE_CHANNEL_HOLD || failsafeValue == FAILSAFE_CHANNEL_NOPULSE) {
|
||||
@@ -94,7 +86,7 @@ void menuModelFailsafe(event_t event)
|
||||
}
|
||||
else {
|
||||
flags |= BLINK;
|
||||
CHECK_INCDEC_MODELVAR(event, g_model.failsafeChannels[ch], -lim, +lim);
|
||||
CHECK_INCDEC_MODELVAR(event, g_model.failsafeChannels[k], -lim, +lim);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -130,10 +122,5 @@ void menuModelFailsafe(event_t event)
|
||||
lcdDrawHorizontalLine(xChannel, y+2, lenChannel, DOTTED, 0);
|
||||
lcdDrawSolidHorizontalLine(xFailsafe, y+3, lenFailsafe);
|
||||
lcdDrawSolidHorizontalLine(xFailsafe, y+4, lenFailsafe);
|
||||
|
||||
y += FH - 1;
|
||||
|
||||
if (++ch >= sentModuleChannels(g_moduleIdx))
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -293,6 +293,7 @@ const char STR_ALARMSDISABLED[] = TR_ALARMSDISABLED;
|
||||
const char STR_PRESSANYKEY[] = TR_PRESSANYKEY;
|
||||
const char STR_TRIMS2OFFSETS[] = TR_TRIMS2OFFSETS;
|
||||
const char STR_OUTPUTS2FAILSAFE[] = TR_OUTPUTS2FAILSAFE;
|
||||
const char STR_CHANNEL2FAILSAFE[] = TR_CHANNEL2FAILSAFE;
|
||||
const char STR_MENURADIOSETUP[] = TR_MENURADIOSETUP;
|
||||
|
||||
#if defined(EEPROM)
|
||||
|
||||
@@ -512,6 +512,7 @@ extern const char STR_STORAGE_FORMAT[];
|
||||
extern const char STR_EEPROMOVERFLOW[];
|
||||
extern const char STR_TRIMS2OFFSETS[];
|
||||
extern const char STR_OUTPUTS2FAILSAFE[];
|
||||
extern const char STR_CHANNEL2FAILSAFE[];
|
||||
extern const char STR_MENURADIOSETUP[];
|
||||
extern const char STR_MENUDATEANDTIME[];
|
||||
extern const char STR_MENUTRAINER[];
|
||||
|
||||
@@ -748,7 +748,8 @@
|
||||
#define TR_TRIMS2OFFSETS "\006Trimy => Subtrimy"
|
||||
#endif
|
||||
#if defined(COLORLCD)
|
||||
#define TR_OUTPUTS2FAILSAFE "Outputs => Failsafe"
|
||||
#define TR_OUTPUTS2FAILSAFE "Outputs=>Failsafe"
|
||||
#define TR_CHANNEL2FAILSAFE "Channel=>Failsafe"
|
||||
#else
|
||||
#define TR_OUTPUTS2FAILSAFE "\006Outputs => Failsafe"
|
||||
#endif
|
||||
|
||||
@@ -759,7 +759,8 @@
|
||||
#define TR_TRIMS2OFFSETS "\006Trims => Subtrims"
|
||||
#endif
|
||||
#if defined(COLORLCD)
|
||||
#define TR_OUTPUTS2FAILSAFE "Outputs => Failsafe"
|
||||
#define TR_OUTPUTS2FAILSAFE "Outputs=>Failsafe"
|
||||
#define TR_CHANNEL2FAILSAFE "Channel=>Failsafe"
|
||||
#else
|
||||
#define TR_OUTPUTS2FAILSAFE "\006Outputs => Failsafe"
|
||||
#endif
|
||||
|
||||
@@ -752,11 +752,8 @@
|
||||
#else
|
||||
#define TR_TRIMS2OFFSETS "\006Trims => Subtrims"
|
||||
#endif
|
||||
#if defined(COLORLCD)
|
||||
#define TR_OUTPUTS2FAILSAFE "Outputs => Failsafe"
|
||||
#else
|
||||
#define TR_OUTPUTS2FAILSAFE "\006Outputs => Failsafe"
|
||||
#endif
|
||||
#define TR_OUTPUTS2FAILSAFE "Outputs=>Failsafe"
|
||||
#define TR_CHANNEL2FAILSAFE "Channel=>Failsafe"
|
||||
#define TR_MENUMODELSEL TR("MODELSEL", "MODEL SELECTION")
|
||||
#define TR_MENUSETUP TR("SETUP", "MODEL SETUP")
|
||||
#define TR_MENUFLIGHTMODES "FLIGHT MODES"
|
||||
|
||||
@@ -752,7 +752,8 @@
|
||||
#define TR_TRIMS2OFFSETS "\006Trims => Offsets"
|
||||
#endif
|
||||
#if defined(COLORLCD)
|
||||
#define TR_OUTPUTS2FAILSAFE "Outputs => Failsafe"
|
||||
#define TR_OUTPUTS2FAILSAFE "Outputs=>Failsafe"
|
||||
#define TR_CHANNEL2FAILSAFE "Channel=>Failsafe"
|
||||
#else
|
||||
#define TR_OUTPUTS2FAILSAFE "\006Outputs => Failsafe"
|
||||
#endif
|
||||
|
||||
@@ -743,11 +743,8 @@
|
||||
#else
|
||||
#define TR_TRIMS2OFFSETS "\006Trims => Subtrims"
|
||||
#endif
|
||||
#if defined(COLORLCD)
|
||||
#define TR_OUTPUTS2FAILSAFE "Outputs => Failsafe"
|
||||
#else
|
||||
#define TR_OUTPUTS2FAILSAFE "\006Outputs => Failsafe"
|
||||
#endif
|
||||
#define TR_OUTPUTS2FAILSAFE "Outputs=>Failsafe"
|
||||
#define TR_CHANNEL2FAILSAFE "Channel=>Failsafe"
|
||||
#define TR_MENUMODELSEL TR("MODELSEL","MODEL SELECTION")
|
||||
#define TR_MENUSETUP TR("SETUP","MODEL SETUP")
|
||||
#define TR_MENUFLIGHTMODE "FLIGHT MODE"
|
||||
|
||||
@@ -764,11 +764,8 @@
|
||||
#else
|
||||
#define TR_TRIMS2OFFSETS "\006Trims => Subtrims"
|
||||
#endif
|
||||
#if defined(COLORLCD)
|
||||
#define TR_OUTPUTS2FAILSAFE "Outputs => Failsafe"
|
||||
#else
|
||||
#define TR_OUTPUTS2FAILSAFE "\006Outputs => Failsafe"
|
||||
#endif
|
||||
#define TR_OUTPUTS2FAILSAFE "Outputs=>Failsafe"
|
||||
#define TR_CHANNEL2FAILSAFE "Channel=>Failsafe"
|
||||
#define TR_MENUMODELSEL "MODELES"
|
||||
#define TR_MENUSETUP TR("CONF. MODELE", "CONFIGURATION")
|
||||
#define TR_MENUFLIGHTMODE "PHASE DE VOL"
|
||||
|
||||
@@ -754,7 +754,8 @@
|
||||
#define TR_TRIMS2OFFSETS "\006Trim => Offset "
|
||||
#endif
|
||||
#if defined(COLORLCD)
|
||||
#define TR_OUTPUTS2FAILSAFE "Outputs => Failsafe"
|
||||
#define TR_OUTPUTS2FAILSAFE "Outputs=>Failsafe"
|
||||
#define TR_CHANNEL2FAILSAFE "Channel=>Failsafe"
|
||||
#else
|
||||
#define TR_OUTPUTS2FAILSAFE "\006Outputs => Failsafe"
|
||||
#endif
|
||||
|
||||
@@ -473,7 +473,7 @@
|
||||
#else
|
||||
#define TR_GYR_VSRCRAW
|
||||
#endif
|
||||
TR_GYR_VSRCRAW
|
||||
TR_GYR_VSRCRAW
|
||||
#if defined(HELI)
|
||||
#define TR_CYC_VSRCRAW "CYC1""CYC2""CYC3"
|
||||
#else
|
||||
@@ -755,7 +755,8 @@ TR_GYR_VSRCRAW
|
||||
#define TR_TRIMS2OFFSETS "\006Trims => Subtrims"
|
||||
#endif
|
||||
#if defined(COLORLCD)
|
||||
#define TR_OUTPUTS2FAILSAFE "Outputs => Failsafe"
|
||||
#define TR_OUTPUTS2FAILSAFE "Outputs=>Failsafe"
|
||||
#define TR_CHANNEL2FAILSAFE "Channel=>Failsafe"
|
||||
#else
|
||||
#define TR_OUTPUTS2FAILSAFE "\006Outputs => Failsafe"
|
||||
#endif
|
||||
|
||||
@@ -755,7 +755,8 @@
|
||||
#define TR_TRIMS2OFFSETS "\006Trims => Subtrims"
|
||||
#endif
|
||||
#if defined(COLORLCD)
|
||||
#define TR_OUTPUTS2FAILSAFE "Outputs => Failsafe"
|
||||
#define TR_OUTPUTS2FAILSAFE "Outputs=>Failsafe"
|
||||
#define TR_CHANNEL2FAILSAFE "Channel=>Failsafe"
|
||||
#else
|
||||
#define TR_OUTPUTS2FAILSAFE "\006Outputs => Failsafe"
|
||||
#endif
|
||||
|
||||
@@ -751,7 +751,8 @@
|
||||
#define TR_TRIMS2OFFSETS "\006Trims => Subtrims"
|
||||
#endif
|
||||
#if defined(COLORLCD)
|
||||
#define TR_OUTPUTS2FAILSAFE "Outputs => Failsafe"
|
||||
#define TR_OUTPUTS2FAILSAFE "Outputs=>Failsafe"
|
||||
#define TR_CHANNEL2FAILSAFE "Channel=>Failsafe"
|
||||
#else
|
||||
#define TR_OUTPUTS2FAILSAFE "\006Outputs => Failsafe"
|
||||
#endif
|
||||
|
||||
@@ -767,7 +767,8 @@
|
||||
#define TR_TRIMS2OFFSETS "\006[Spara Trimvärden]"
|
||||
#endif
|
||||
#if defined(COLORLCD)
|
||||
#define TR_OUTPUTS2FAILSAFE "Outputs => Failsafe"
|
||||
#define TR_OUTPUTS2FAILSAFE "Outputs=>Failsafe"
|
||||
#define TR_CHANNEL2FAILSAFE "Channel=>Failsafe"
|
||||
#else
|
||||
#define TR_OUTPUTS2FAILSAFE "\006Outputs => Failsafe"
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user