diff --git a/radio/src/fonts/std/font_05x07_extra.png b/radio/src/fonts/std/font_05x07_extra.png index c6f1f39ff..0d75d0b1b 100644 Binary files a/radio/src/fonts/std/font_05x07_extra.png and b/radio/src/fonts/std/font_05x07_extra.png differ diff --git a/radio/src/gui/Taranis/helpers.cpp b/radio/src/gui/Taranis/helpers.cpp index ac1037337..a2ae48121 100755 --- a/radio/src/gui/Taranis/helpers.cpp +++ b/radio/src/gui/Taranis/helpers.cpp @@ -347,3 +347,14 @@ bool modelHasNotes() return isFileAvailable(filename); } +int getFirstAvailableSource(int min, int max, bool (*func)(int)) +{ + int retval = MIXSRC_NONE; + for (int i = min; i <= max; i++) { + if ((*func)(i)) { + retval = i; + break; + } + } + return retval; +} diff --git a/radio/src/gui/Taranis/menus.h b/radio/src/gui/Taranis/menus.h index 6640661ea..ddb639f46 100755 --- a/radio/src/gui/Taranis/menus.h +++ b/radio/src/gui/Taranis/menus.h @@ -202,6 +202,7 @@ bool isSwitchAvailableInCustomFunctions(int swtch); bool isSwitchAvailableInMixes(int swtch); bool isSwitchAvailableInTimers(int swtch); bool isModuleAvailable(int module); +int getFirstAvailableSource(int min, int max, bool (*func)(int)); #define AUTOSWITCH_ENTER_LONG() (attr && event==EVT_KEY_LONG(KEY_ENTER)) #define CHECK_INCDEC_SWITCH(event, var, min, max, flags, available) \ var = checkIncDec(event, var, min, max, (flags)|INCDEC_SWITCH, available) @@ -326,7 +327,8 @@ extern uint8_t s_warning_info_flags; #define NAVIGATION_MENUS #define MENU_ADD_ITEM(s) s_menu[s_menu_count++] = s -#define MENU_MAX_LINES 6 +#define MENU_MAX_LINES 11 +#define MENU_MAX_DISPLAY_LINES 6 #define MENU_ADD_SD_ITEM(s) MENU_ADD_ITEM(s) #define MENU_LINE_LENGTH (LEN_MODEL_NAME+12) extern const char *s_menu[MENU_MAX_LINES]; diff --git a/radio/src/gui/Taranis/navigation.cpp b/radio/src/gui/Taranis/navigation.cpp index b4ace4091..18a7308b2 100755 --- a/radio/src/gui/Taranis/navigation.cpp +++ b/radio/src/gui/Taranis/navigation.cpp @@ -42,6 +42,7 @@ horzpos_t m_posHorz; int8_t s_editMode; uint8_t s_noHi; uint8_t calibrationState; +int s_source = MIXSRC_NONE; #if defined(AUTOSWITCH) int8_t checkIncDecMovedSwitch(int8_t val) @@ -70,6 +71,42 @@ INIT_STOPS(stops100, 3, -100, 0, 100) INIT_STOPS(stops1000, 3, -1000, 0, 1000) INIT_STOPS(stopsSwitch, 15, SWSRC_FIRST, CATEGORY_END(-SWSRC_FIRST_LOGICAL_SWITCH), CATEGORY_END(-SWSRC_FIRST_TRIM), CATEGORY_END(-SWSRC_LAST_SWITCH+1), 0, CATEGORY_END(SWSRC_LAST_SWITCH), CATEGORY_END(SWSRC_FIRST_TRIM-1), CATEGORY_END(SWSRC_FIRST_LOGICAL_SWITCH-1), SWSRC_LAST) +void onLongEnterPress(const char *result) +{ + if (result == STR_MENU_INPUTS) + s_source = getFirstAvailableSource(MIXSRC_FIRST_INPUT, MIXSRC_LAST_INPUT, isInputAvailable)+1; +#if defined(LUA_MODEL_SCRIPTS) + else if (result == STR_MENU_LUA) + s_source = getFirstAvailableSource(MIXSRC_FIRST_LUA, MIXSRC_LAST_LUA, isSourceAvailable); +#endif + else if (result == STR_MENU_STICKS) + s_source = MIXSRC_FIRST_STICK; + else if (result == STR_MENU_POTS) + s_source = MIXSRC_FIRST_POT; + else if (result == STR_MENU_MAX) + s_source = MIXSRC_MAX; + else if (result == STR_MENU_HELI) + s_source = MIXSRC_FIRST_HELI; + else if (result == STR_MENU_TRIMS) + s_source = MIXSRC_FIRST_TRIM; + else if (result == STR_MENU_SWITCHES) + s_source = MIXSRC_FIRST_SWITCH; + else if (result == STR_MENU_TRAINER) + s_source = MIXSRC_FIRST_TRAINER; + else if (result == STR_MENU_CHANNELS) + s_source = getFirstAvailableSource(MIXSRC_FIRST_CH, MIXSRC_LAST_CH, isSourceAvailable); + + else if (result == STR_MENU_TELEMETRY) { + for (int i = 0; i < TELEM_VALUES_MAX; i++) { + TelemetrySensor * sensor = & g_model.telemetrySensors[i]; + if (sensor->isAvailable()) { + s_source = MIXSRC_FIRST_TELEM + 3*i; + break; + } + } + } +} + int checkIncDec(unsigned int event, int val, int i_min, int i_max, unsigned int i_flags, IsValueAvailable isValueAvailable, const CheckIncDecStops &stops) { int newval = val; @@ -207,6 +244,54 @@ int checkIncDec(unsigned int event, int val, int i_min, int i_max, unsigned int else { checkIncDec_Ret = 0; } + + if (i_flags & INCDEC_SOURCE) { + if (event == EVT_KEY_LONG(KEY_ENTER)) { + killEvents(event); + s_source = MIXSRC_NONE; + + if (i_min <= MIXSRC_FIRST_INPUT && i_max >= MIXSRC_FIRST_INPUT) { + if (getFirstAvailableSource(MIXSRC_FIRST_INPUT, MIXSRC_LAST_INPUT, isInputAvailable) != MIXSRC_NONE) + MENU_ADD_ITEM(STR_MENU_INPUTS); + } +#if defined(LUA_MODEL_SCRIPTS) + if (i_min <= MIXSRC_FIRST_LUA && i_max >= MIXSRC_FIRST_LUA) { + if (getFirstAvailableSource(MIXSRC_FIRST_LUA, MIXSRC_LAST_LUA, isSourceAvailable) != MIXSRC_NONE) + MENU_ADD_ITEM(STR_MENU_LUA); + } +#endif + if (i_min <= MIXSRC_FIRST_STICK && i_max >= MIXSRC_FIRST_STICK) MENU_ADD_ITEM(STR_MENU_STICKS); + if (i_min <= MIXSRC_FIRST_POT && i_max >= MIXSRC_FIRST_POT) MENU_ADD_ITEM(STR_MENU_POTS); + if (i_min <= MIXSRC_MAX && i_max >= MIXSRC_MAX) MENU_ADD_ITEM(STR_MENU_MAX); +#if defined(HELI) + if (i_min <= MIXSRC_FIRST_HELI && i_max >= MIXSRC_FIRST_HELI) MENU_ADD_ITEM(STR_MENU_HELI); +#endif + if (i_min <= MIXSRC_FIRST_TRIM && i_max >= MIXSRC_FIRST_TRIM) MENU_ADD_ITEM(STR_MENU_TRIMS); + if (i_min <= MIXSRC_FIRST_SWITCH && i_max >= MIXSRC_FIRST_SWITCH) MENU_ADD_ITEM(STR_MENU_SWITCHES); + if (i_min <= MIXSRC_FIRST_TRAINER && i_max >= MIXSRC_FIRST_TRAINER) MENU_ADD_ITEM(STR_MENU_TRAINER); + if (i_min <= MIXSRC_FIRST_CH && i_max >= MIXSRC_FIRST_CH) MENU_ADD_ITEM(STR_MENU_CHANNELS); + + if (i_min <= MIXSRC_FIRST_TELEM && i_max >= MIXSRC_FIRST_TELEM) { + bool available = false; + for (int i = 0; i < TELEM_VALUES_MAX; i++) { + TelemetrySensor * sensor = & g_model.telemetrySensors[i]; + if (sensor->isAvailable()) { + available = true; + break; + } + } + if (available) + MENU_ADD_ITEM(STR_MENU_TELEMETRY); + } + menuHandler = onLongEnterPress; + } + if (s_source != MIXSRC_NONE) { + newval = s_source; + if (s_source != MIXSRC_MAX) + s_editMode = 1; + s_source = MIXSRC_NONE; + } + } return newval; } @@ -229,6 +314,7 @@ void onLongMenuPress(const char *result) } } + tmr10ms_t menuEntryTime; void check(const char *name, check_event_t event, uint8_t curr, const MenuFuncP *menuTab, uint8_t menuTabSize, const pm_uint8_t *horTab, uint8_t horTabMax, vertpos_t rowcount, uint8_t flags) diff --git a/radio/src/gui/Taranis/popups.cpp b/radio/src/gui/Taranis/popups.cpp index 36646b54f..b55afd760 100755 --- a/radio/src/gui/Taranis/popups.cpp +++ b/radio/src/gui/Taranis/popups.cpp @@ -127,18 +127,18 @@ const char * displayMenu(uint8_t event) { const char * result = NULL; - uint8_t display_count = min(s_menu_count, (uint16_t)MENU_MAX_LINES); + uint8_t display_count = min(s_menu_count, (uint16_t)MENU_MAX_DISPLAY_LINES); uint8_t y = (display_count >= 5 ? MENU_Y - FH - 1 : MENU_Y); drawFilledRect(MENU_X, y, MENU_W, display_count * (FH+1) + 2, SOLID, ERASE); lcd_rect(MENU_X, y, MENU_W, display_count * (FH+1) + 2); for (uint8_t i=0; i display_count) { - displayScrollbar(MENU_X+MENU_W-1, y+1, MENU_MAX_LINES * (FH+1), s_menu_offset, s_menu_count, MENU_MAX_LINES); + displayScrollbar(MENU_X+MENU_W-1, y+1, MENU_MAX_DISPLAY_LINES * (FH+1), s_menu_offset, s_menu_count, display_count); } switch(event) { @@ -152,9 +152,9 @@ const char * displayMenu(uint8_t event) result = STR_UPDATE_LIST; } else { - s_menu_item = display_count - 1; - if (s_menu_count > MENU_MAX_LINES) { - s_menu_offset = s_menu_count - display_count; + s_menu_item = min(display_count, (uint8_t)MENU_MAX_DISPLAY_LINES)-1; + if (s_menu_count > MENU_MAX_DISPLAY_LINES) { + s_menu_offset = s_menu_count - MENU_MAX_DISPLAY_LINES; result = STR_UPDATE_LIST; } } @@ -179,7 +179,7 @@ const char * displayMenu(uint8_t event) break; CASE_EVT_ROTARY_BREAK case EVT_KEY_BREAK(KEY_ENTER): - result = s_menu[s_menu_item]; + result = s_menu[s_menu_item+s_menu_offset]; // no break case EVT_KEY_BREAK(KEY_EXIT): s_menu_count = 0; diff --git a/radio/src/myeeprom.h b/radio/src/myeeprom.h index 383422e50..af4a513d7 100644 --- a/radio/src/myeeprom.h +++ b/radio/src/myeeprom.h @@ -1766,10 +1766,11 @@ enum MixSources { MIXSRC_LAST_LUA = MIXSRC_FIRST_LUA+(MAX_SCRIPTS*MAX_SCRIPT_OUTPUTS)-1, #endif - MIXSRC_Rud, LUA_EXPORT("rud", "Rudder") - MIXSRC_Ele, LUA_EXPORT("ele", "Elevator") - MIXSRC_Thr, LUA_EXPORT("thr", "Throttle") - MIXSRC_Ail, LUA_EXPORT("ail", "Aileron") + MIXSRC_FIRST_STICK, + MIXSRC_Rud = MIXSRC_FIRST_STICK, LUA_EXPORT("rud", "Rudder") + MIXSRC_Ele, LUA_EXPORT("ele", "Elevator") + MIXSRC_Thr, LUA_EXPORT("thr", "Throttle") + MIXSRC_Ail, LUA_EXPORT("ail", "Aileron") MIXSRC_FIRST_POT, #if defined(PCBTARANIS) @@ -1812,14 +1813,16 @@ enum MixSources { MIXSRC_MAX, - MIXSRC_CYC1, LUA_EXPORT("cyc1", "Cyclic 1") - MIXSRC_CYC2, LUA_EXPORT("cyc2", "Cyclic 2") - MIXSRC_CYC3, LUA_EXPORT("cyc3", "Cyclic 3") + MIXSRC_FIRST_HELI, + MIXSRC_CYC1 = MIXSRC_FIRST_HELI, LUA_EXPORT("cyc1", "Cyclic 1") + MIXSRC_CYC2, LUA_EXPORT("cyc2", "Cyclic 2") + MIXSRC_CYC3, LUA_EXPORT("cyc3", "Cyclic 3") - MIXSRC_TrimRud, LUA_EXPORT("trim-rud", "Rudder trim") - MIXSRC_TrimEle, LUA_EXPORT("trim-ele", "Elevator trim") - MIXSRC_TrimThr, LUA_EXPORT("trim-thr", "Throttle trim") - MIXSRC_TrimAil, LUA_EXPORT("trim-ail", "Aileron trim") + MIXSRC_FIRST_TRIM, + MIXSRC_TrimRud = MIXSRC_FIRST_TRIM, LUA_EXPORT("trim-rud", "Rudder trim") + MIXSRC_TrimEle, LUA_EXPORT("trim-ele", "Elevator trim") + MIXSRC_TrimThr, LUA_EXPORT("trim-thr", "Throttle trim") + MIXSRC_TrimAil, LUA_EXPORT("trim-ail", "Aileron trim") MIXSRC_FIRST_SWITCH, diff --git a/radio/src/translations.cpp b/radio/src/translations.cpp index 8414e8863..fe3d2aeef 100644 --- a/radio/src/translations.cpp +++ b/radio/src/translations.cpp @@ -588,6 +588,17 @@ const pm_char STR_BLCOLOR[] PROGMEM = TR_BLCOLOR; const pm_char STR_SCRIPT[] PROGMEM = TR_SCRIPT; const pm_char STR_INPUTS[] PROGMEM = TR_INPUTS; const pm_char STR_OUTPUTS[] PROGMEM = TR_OUTPUTS; + const pm_char STR_MENU_INPUTS[] PROGMEM = TR_MENU_INPUTS; + const pm_char STR_MENU_LUA[] PROGMEM = TR_MENU_LUA; + const pm_char STR_MENU_STICKS[] PROGMEM = TR_MENU_STICKS; + const pm_char STR_MENU_POTS[] PROGMEM = TR_MENU_POTS; + const pm_char STR_MENU_MAX[] PROGMEM = TR_MENU_MAX; + const pm_char STR_MENU_HELI[] PROGMEM = TR_MENU_HELI; + const pm_char STR_MENU_TRIMS[] PROGMEM = TR_MENU_TRIMS; + const pm_char STR_MENU_SWITCHES[] PROGMEM = TR_MENU_SWITCHES; + const pm_char STR_MENU_TRAINER[] PROGMEM = TR_MENU_TRAINER; + const pm_char STR_MENU_CHANNELS[] PROGMEM = TR_MENU_CHANNELS; + const pm_char STR_MENU_TELEMETRY[] PROGMEM = TR_MENU_TELEMETRY; #endif #if MENUS_LOCK == 1 diff --git a/radio/src/translations.h b/radio/src/translations.h index 74eb7f43d..c0e857fc6 100644 --- a/radio/src/translations.h +++ b/radio/src/translations.h @@ -798,6 +798,17 @@ extern const pm_char STR_BLCOLOR[]; extern const pm_char STR_SCRIPT[]; extern const pm_char STR_INPUTS[]; extern const pm_char STR_OUTPUTS[]; + extern const pm_char STR_MENU_INPUTS[]; + extern const pm_char STR_MENU_LUA[]; + extern const pm_char STR_MENU_STICKS[]; + extern const pm_char STR_MENU_POTS[]; + extern const pm_char STR_MENU_MAX[]; + extern const pm_char STR_MENU_HELI[]; + extern const pm_char STR_MENU_TRIMS[]; + extern const pm_char STR_MENU_SWITCHES[]; + extern const pm_char STR_MENU_TRAINER[]; + extern const pm_char STR_MENU_CHANNELS[]; + extern const pm_char STR_MENU_TELEMETRY[]; #endif #if MENUS_LOCK == 1 diff --git a/radio/src/translations/cz.h.txt b/radio/src/translations/cz.h.txt index 7794b600a..bb255f023 100644 --- a/radio/src/translations/cz.h.txt +++ b/radio/src/translations/cz.h.txt @@ -1065,6 +1065,18 @@ #define TR_FILTER "Filter" #define TR_TELEMETRYFULL "All telemetry slots full!" +#define TR_MENU_INPUTS "\314Inputs" +#define TR_MENU_LUA "\322Lua scripts" +#define TR_MENU_STICKS "\307Sticks" +#define TR_MENU_POTS "\310Pots" +#define TR_MENU_MAX "\315MAX" +#define TR_MENU_HELI "\316Cyclic" +#define TR_MENU_TRIMS "\313Trims" +#define TR_MENU_SWITCHES "\312Switches" +#define TR_MENU_TRAINER "\317Trainer" +#define TR_MENU_CHANNELS "\320Channels" +#define TR_MENU_TELEMETRY "\321Telemetry" + #define ZSTR_RSSI "RSSI" #define ZSTR_SWR "SWR" #define ZSTR_A1 "A1" diff --git a/radio/src/translations/de.h.txt b/radio/src/translations/de.h.txt index 6ea81624b..87e1f55bb 100644 --- a/radio/src/translations/de.h.txt +++ b/radio/src/translations/de.h.txt @@ -1064,6 +1064,18 @@ #define TR_FILTER "Filter" #define TR_TELEMETRYFULL "All telemetry slots full!" +#define TR_MENU_INPUTS "\314Inputs" +#define TR_MENU_LUA "\322Lua scripts" +#define TR_MENU_STICKS "\307Sticks" +#define TR_MENU_POTS "\310Pots" +#define TR_MENU_MAX "\315MAX" +#define TR_MENU_HELI "\316Cyclic" +#define TR_MENU_TRIMS "\313Trims" +#define TR_MENU_SWITCHES "\312Switches" +#define TR_MENU_TRAINER "\317Trainer" +#define TR_MENU_CHANNELS "\320Channels" +#define TR_MENU_TELEMETRY "\321Telemetry" + #define ZSTR_RSSI "RSSI" #define ZSTR_SWR "SWR" #define ZSTR_A1 "A1" diff --git a/radio/src/translations/en.h.txt b/radio/src/translations/en.h.txt index ec3a2f59d..53d1a1591 100644 --- a/radio/src/translations/en.h.txt +++ b/radio/src/translations/en.h.txt @@ -1064,6 +1064,18 @@ #define TR_FILTER "Filter" #define TR_TELEMETRYFULL "All telemetry slots full!" +#define TR_MENU_INPUTS "\314Inputs" +#define TR_MENU_LUA "\322Lua scripts" +#define TR_MENU_STICKS "\307Sticks" +#define TR_MENU_POTS "\310Pots" +#define TR_MENU_MAX "\315MAX" +#define TR_MENU_HELI "\316Cyclic" +#define TR_MENU_TRIMS "\313Trims" +#define TR_MENU_SWITCHES "\312Switches" +#define TR_MENU_TRAINER "\317Trainer" +#define TR_MENU_CHANNELS "\320Channels" +#define TR_MENU_TELEMETRY "\321Telemetry" + #define ZSTR_RSSI "RSSI" #define ZSTR_SWR "SWR" #define ZSTR_A1 "A1" diff --git a/radio/src/translations/es.h.txt b/radio/src/translations/es.h.txt index f1e1c24e8..2e9e89c91 100644 --- a/radio/src/translations/es.h.txt +++ b/radio/src/translations/es.h.txt @@ -1000,6 +1000,18 @@ #define TR_FILTER "Filter" #define TR_TELEMETRYFULL "All telemetry slots full!" +#define TR_MENU_INPUTS "\314Inputs" +#define TR_MENU_LUA "Lua scripts" +#define TR_MENU_STICKS "\307Sticks" +#define TR_MENU_POTS "\310Pots" +#define TR_MENU_MAX "\315MAX" +#define TR_MENU_HELI "\316Cyclic" +#define TR_MENU_TRIMS "\313Trims" +#define TR_MENU_SWITCHES "\312Switches" +#define TR_MENU_TRAINER "\317Trainer" +#define TR_MENU_CHANNELS "\318Channels" +#define TR_MENU_TELEMETRY "\319Telemetry" + #define ZSTR_RSSI "RSSI" #define ZSTR_SWR "SWR" #define ZSTR_A1 "A1" diff --git a/radio/src/translations/fi.h.txt b/radio/src/translations/fi.h.txt index 8b35c8ba6..b109c2fee 100644 --- a/radio/src/translations/fi.h.txt +++ b/radio/src/translations/fi.h.txt @@ -1000,6 +1000,18 @@ #define TR_FILTER "Filter" #define TR_TELEMETRYFULL "All telemetry slots full!" +#define TR_MENU_INPUTS "\314Inputs" +#define TR_MENU_LUA "\322Lua scripts" +#define TR_MENU_STICKS "\307Sticks" +#define TR_MENU_POTS "\310Pots" +#define TR_MENU_MAX "\315MAX" +#define TR_MENU_HELI "\316Cyclic" +#define TR_MENU_TRIMS "\313Trims" +#define TR_MENU_SWITCHES "\312Switches" +#define TR_MENU_TRAINER "\317Trainer" +#define TR_MENU_CHANNELS "\320Channels" +#define TR_MENU_TELEMETRY "\321Telemetry" + #define ZSTR_RSSI "RSSI" #define ZSTR_SWR "SWR" #define ZSTR_A1 "A1" diff --git a/radio/src/translations/fr.h.txt b/radio/src/translations/fr.h.txt index 201573513..0930dab45 100644 --- a/radio/src/translations/fr.h.txt +++ b/radio/src/translations/fr.h.txt @@ -1060,6 +1060,18 @@ #define TR_FILTER "Filtrage" #define TR_TELEMETRYFULL "Plus de capteurs libres!" +#define TR_MENU_INPUTS "\314Entrées" +#define TR_MENU_LUA "\322Scripts Lua" +#define TR_MENU_STICKS "\307Manches" +#define TR_MENU_POTS "\310Pots" +#define TR_MENU_MAX "\315MAX" +#define TR_MENU_HELI "\316Cyclique" +#define TR_MENU_TRIMS "\313Trims" +#define TR_MENU_SWITCHES "\312Inters" +#define TR_MENU_TRAINER "\317Ecolage" +#define TR_MENU_CHANNELS "\320Canaux" +#define TR_MENU_TELEMETRY "\321Télémesure" + #define ZSTR_RSSI "RSSI" #define ZSTR_SWR "SWR" #define ZSTR_A1 "A1" diff --git a/radio/src/translations/it.h.txt b/radio/src/translations/it.h.txt index 987ed947e..56a8b27d5 100644 --- a/radio/src/translations/it.h.txt +++ b/radio/src/translations/it.h.txt @@ -1000,6 +1000,18 @@ #define TR_FILTER "Filter" #define TR_TELEMETRYFULL "All telemetry slots full!" +#define TR_MENU_INPUTS "\314Inputs" +#define TR_MENU_LUA "\322Lua scripts" +#define TR_MENU_STICKS "\307Sticks" +#define TR_MENU_POTS "\310Pots" +#define TR_MENU_MAX "\315MAX" +#define TR_MENU_HELI "\316Cyclic" +#define TR_MENU_TRIMS "\313Trims" +#define TR_MENU_SWITCHES "\312Switches" +#define TR_MENU_TRAINER "\317Trainer" +#define TR_MENU_CHANNELS "\320Channels" +#define TR_MENU_TELEMETRY "\321Telemetry" + #define ZSTR_RSSI "RSSI" #define ZSTR_SWR "SWR" #define ZSTR_A1 "A1" diff --git a/radio/src/translations/pl.h.txt b/radio/src/translations/pl.h.txt index a88fee4ea..f462963fa 100644 --- a/radio/src/translations/pl.h.txt +++ b/radio/src/translations/pl.h.txt @@ -998,6 +998,18 @@ #define TR_FILTER "Filter" #define TR_TELEMETRYFULL "All telemetry slots full!" +#define TR_MENU_INPUTS "\314Inputs" +#define TR_MENU_LUA "\322Lua scripts" +#define TR_MENU_STICKS "\307Sticks" +#define TR_MENU_POTS "\310Pots" +#define TR_MENU_MAX "\315MAX" +#define TR_MENU_HELI "\316Cyclic" +#define TR_MENU_TRIMS "\313Trims" +#define TR_MENU_SWITCHES "\312Switches" +#define TR_MENU_TRAINER "\317Trainer" +#define TR_MENU_CHANNELS "\320Channels" +#define TR_MENU_TELEMETRY "\321Telemetry" + #define ZSTR_RSSI "RSSI" #define ZSTR_SWR "SWR" #define ZSTR_A1 "A1" diff --git a/radio/src/translations/pt.h.txt b/radio/src/translations/pt.h.txt index 7c7299a2e..01a2fd704 100644 --- a/radio/src/translations/pt.h.txt +++ b/radio/src/translations/pt.h.txt @@ -1000,6 +1000,18 @@ #define TR_FILTER "Filter" #define TR_TELEMETRYFULL "All telemetry slots full!" +#define TR_MENU_INPUTS "\314Inputs" +#define TR_MENU_LUA "\322Lua scripts" +#define TR_MENU_STICKS "\307Sticks" +#define TR_MENU_POTS "\310Pots" +#define TR_MENU_MAX "\315MAX" +#define TR_MENU_HELI "\316Cyclic" +#define TR_MENU_TRIMS "\313Trims" +#define TR_MENU_SWITCHES "\312Switches" +#define TR_MENU_TRAINER "\317Trainer" +#define TR_MENU_CHANNELS "\320Channels" +#define TR_MENU_TELEMETRY "\321Telemetry" + #define ZSTR_RSSI "RSSI" #define ZSTR_SWR "SWR" #define ZSTR_A1 "A1" diff --git a/radio/src/translations/se.h.txt b/radio/src/translations/se.h.txt index de897e54a..3b9d171fc 100644 --- a/radio/src/translations/se.h.txt +++ b/radio/src/translations/se.h.txt @@ -1000,6 +1000,18 @@ #define TR_FILTER "Filter" #define TR_TELEMETRYFULL "All telemetry slots full!" +#define TR_MENU_INPUTS "\314Inputs" +#define TR_MENU_LUA "\322Lua scripts" +#define TR_MENU_STICKS "\307Sticks" +#define TR_MENU_POTS "\310Pots" +#define TR_MENU_MAX "\315MAX" +#define TR_MENU_HELI "\316Cyclic" +#define TR_MENU_TRIMS "\313Trims" +#define TR_MENU_SWITCHES "\312Switches" +#define TR_MENU_TRAINER "\317Trainer" +#define TR_MENU_CHANNELS "\320Channels" +#define TR_MENU_TELEMETRY "\321Telemetry" + #define ZSTR_RSSI "RSSI" #define ZSTR_SWR "SWR" #define ZSTR_A1 "A1"