From c70f9b058b22fc0cc7aae1f8543e809e7e37056f Mon Sep 17 00:00:00 2001 From: 3djc Date: Tue, 30 Apr 2019 10:05:44 +0200 Subject: [PATCH] Rework failsafe : POC for discussion --- radio/src/gui/128x64/model_failsafe.cpp | 97 +++++++++++-------------- radio/src/translations.cpp | 1 + radio/src/translations.h | 1 + radio/src/translations/cz.h.txt | 3 +- radio/src/translations/de.h.txt | 3 +- radio/src/translations/en.h.txt | 7 +- radio/src/translations/es.h.txt | 3 +- radio/src/translations/fi.h.txt | 7 +- radio/src/translations/fr.h.txt | 7 +- radio/src/translations/it.h.txt | 3 +- radio/src/translations/nl.h.txt | 5 +- radio/src/translations/pl.h.txt | 3 +- radio/src/translations/pt.h.txt | 3 +- radio/src/translations/se.h.txt | 3 +- 14 files changed, 67 insertions(+), 79 deletions(-) diff --git a/radio/src/gui/128x64/model_failsafe.cpp b/radio/src/gui/128x64/model_failsafe.cpp index 099367c1c..cb4069567 100644 --- a/radio/src/gui/128x64/model_failsafe.cpp +++ b/radio/src/gui/128x64/model_failsafe.cpp @@ -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= 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; } } diff --git a/radio/src/translations.cpp b/radio/src/translations.cpp index 81f19f61f..e7002dbf1 100644 --- a/radio/src/translations.cpp +++ b/radio/src/translations.cpp @@ -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) diff --git a/radio/src/translations.h b/radio/src/translations.h index ea35034eb..ada05b6fc 100644 --- a/radio/src/translations.h +++ b/radio/src/translations.h @@ -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[]; diff --git a/radio/src/translations/cz.h.txt b/radio/src/translations/cz.h.txt index 14c019278..e1a4c372a 100644 --- a/radio/src/translations/cz.h.txt +++ b/radio/src/translations/cz.h.txt @@ -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 diff --git a/radio/src/translations/de.h.txt b/radio/src/translations/de.h.txt index 997edca65..c9e1b0b37 100644 --- a/radio/src/translations/de.h.txt +++ b/radio/src/translations/de.h.txt @@ -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 diff --git a/radio/src/translations/en.h.txt b/radio/src/translations/en.h.txt index 63c5fb58e..d55b1d27d 100644 --- a/radio/src/translations/en.h.txt +++ b/radio/src/translations/en.h.txt @@ -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" diff --git a/radio/src/translations/es.h.txt b/radio/src/translations/es.h.txt index 589373ee8..04b8d93d4 100644 --- a/radio/src/translations/es.h.txt +++ b/radio/src/translations/es.h.txt @@ -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 diff --git a/radio/src/translations/fi.h.txt b/radio/src/translations/fi.h.txt index ce44916df..4f4ad7594 100644 --- a/radio/src/translations/fi.h.txt +++ b/radio/src/translations/fi.h.txt @@ -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" diff --git a/radio/src/translations/fr.h.txt b/radio/src/translations/fr.h.txt index d8294f665..07bdd07ed 100644 --- a/radio/src/translations/fr.h.txt +++ b/radio/src/translations/fr.h.txt @@ -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" diff --git a/radio/src/translations/it.h.txt b/radio/src/translations/it.h.txt index e5869e234..1bfea2cbb 100644 --- a/radio/src/translations/it.h.txt +++ b/radio/src/translations/it.h.txt @@ -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 diff --git a/radio/src/translations/nl.h.txt b/radio/src/translations/nl.h.txt index 15b42cfae..53c43da30 100644 --- a/radio/src/translations/nl.h.txt +++ b/radio/src/translations/nl.h.txt @@ -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 diff --git a/radio/src/translations/pl.h.txt b/radio/src/translations/pl.h.txt index ec3971696..b9660e73a 100644 --- a/radio/src/translations/pl.h.txt +++ b/radio/src/translations/pl.h.txt @@ -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 diff --git a/radio/src/translations/pt.h.txt b/radio/src/translations/pt.h.txt index 8f121334a..cd20b31e8 100644 --- a/radio/src/translations/pt.h.txt +++ b/radio/src/translations/pt.h.txt @@ -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 diff --git a/radio/src/translations/se.h.txt b/radio/src/translations/se.h.txt index 16bf0d517..b4ce69e42 100644 --- a/radio/src/translations/se.h.txt +++ b/radio/src/translations/se.h.txt @@ -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