From 688cd9f7247ece75f2e6cc7647989cd773d90e0d Mon Sep 17 00:00:00 2001 From: bsongis Date: Tue, 19 May 2015 07:07:40 +0200 Subject: [PATCH 1/2] Special EU firmware for Taranis Only D16 mode is EU-compatible. This version will hide both D8 and LR12 modes. --- radio/src/Makefile | 8 ++- radio/src/gui/Taranis/menu_model_setup.cpp | 67 ++++++++++++---------- radio/src/myeeprom.h | 10 ++++ radio/src/opentx.cpp | 2 +- 4 files changed, 54 insertions(+), 33 deletions(-) diff --git a/radio/src/Makefile b/radio/src/Makefile index c03f2374f..e8cbb5562 100644 --- a/radio/src/Makefile +++ b/radio/src/Makefile @@ -319,7 +319,6 @@ NANO = NO # NO - use default Lua allocator USE_BIN_ALLOCATOR = NO - # Enable trace of events into Trace Buffer for debugging purposes # Activating any of these options also activates DEBUG and DEBUG_TRACE_BUFFER # Values = NO, YES @@ -343,6 +342,10 @@ LCD_DUAL_BUFFER = NO # Values = NO, YES TARANIS_INTERNAL_PPM = NO +# Support for D16-EU only (no D8, no LR12 which are not EU compatible) +# Value = NO, YES +SUPPORT_D16_EU_ONLY = NO + # Enable disk IO simulation in simulator # Simulator will use FatFs module and simulated IO layer that # uses "./sdcard.image" file as image of SD card. @@ -874,6 +877,9 @@ ifeq ($(PCB), TARANIS) ifeq ($(TARANIS_INTERNAL_PPM), YES) CPPDEFS += -DTARANIS_INTERNAL_PPM endif + ifeq ($(SUPPORT_D16_EU_ONLY), YES) + CPPDEFS += -DMODULE_D16_EU_ONLY_SUPPORT + endif LDSCRIPT = targets/taranis/stm32_flash_bl.ld TRGT = arm-none-eabi- OPT = s diff --git a/radio/src/gui/Taranis/menu_model_setup.cpp b/radio/src/gui/Taranis/menu_model_setup.cpp index e322c6953..23dee1298 100644 --- a/radio/src/gui/Taranis/menu_model_setup.cpp +++ b/radio/src/gui/Taranis/menu_model_setup.cpp @@ -187,38 +187,43 @@ int getSwitchWarningsCount() } #endif +#if defined(TARANIS_INTERNAL_PPM) + #define IF_INTERNAL_MODULE_ON(x) (g_model.moduleData[INTERNAL_MODULE].type == MODULE_TYPE_NONE ? HIDDEN_ROW : (uint8_t)(x)) +#else + #define IF_INTERNAL_MODULE_ON(x) (g_model.moduleData[INTERNAL_MODULE].rfProtocol == RF_PROTO_OFF ? HIDDEN_ROW : (uint8_t)(x)) +#endif +#define IF_EXTERNAL_MODULE_ON(x) (g_model.moduleData[EXTERNAL_MODULE].type == MODULE_TYPE_NONE ? HIDDEN_ROW : (uint8_t)(x)) +#define IF_TRAINER_ON(x) (g_model.trainerMode == TRAINER_MODE_SLAVE ? (uint8_t)(x) : HIDDEN_ROW) +#define IF_EXTERNAL_MODULE_XJT(x) (IS_MODULE_XJT(EXTERNAL_MODULE) ? (uint8_t)x : HIDDEN_ROW) +#define INTERNAL_MODULE_CHANNELS_ROWS IF_INTERNAL_MODULE_ON(1) +#define EXTERNAL_MODULE_CHANNELS_ROWS IF_EXTERNAL_MODULE_ON(IS_MODULE_DSM2(EXTERNAL_MODULE) ? (uint8_t)0 : (uint8_t)1) +#define TRAINER_CHANNELS_ROWS() IF_TRAINER_ON(1) +#define PORT_CHANNELS_ROWS(x) (x==INTERNAL_MODULE ? INTERNAL_MODULE_CHANNELS_ROWS : (x==EXTERNAL_MODULE ? EXTERNAL_MODULE_CHANNELS_ROWS : TRAINER_CHANNELS_ROWS())) +#define FAILSAFE_ROWS(x) (HAS_RF_PROTOCOL_FAILSAFE(g_model.moduleData[x].rfProtocol) ? (g_model.moduleData[x].failsafeMode==FAILSAFE_CUSTOM ? (uint8_t)1 : (uint8_t)0) : HIDDEN_ROW) +#define TIMER_ROWS 2|NAVIGATION_LINE_BY_LINE, 0, CASE_PERSISTENT_TIMERS(0) 0, 0 +#if defined(MODULE_D16_EU_ONLY_SUPPORT) + #define EXTERNAL_MODULE_MODE_ROWS IS_MODULE_DSM2(EXTERNAL_MODULE) ? (uint8_t)1 : (uint8_t)0 +#else + #define EXTERNAL_MODULE_MODE_ROWS (IS_MODULE_XJT(EXTERNAL_MODULE) || IS_MODULE_DSM2(EXTERNAL_MODULE)) ? (uint8_t)1 : (uint8_t)0 +#endif +#if TIMERS == 1 + #define TIMERS_ROWS TIMER_ROWS +#elif TIMERS == 2 + #define TIMERS_ROWS TIMER_ROWS, TIMER_ROWS +#elif TIMERS == 3 + #define TIMERS_ROWS TIMER_ROWS, TIMER_ROWS, TIMER_ROWS +#endif +#if defined(REV9E) + #define SW_WARN_ITEMS() uint8_t(NAVIGATION_LINE_BY_LINE|(getSwitchWarningsCount()-1)), uint8_t(getSwitchWarningsCount() > 8 ? TITLE_ROW : HIDDEN_ROW), uint8_t(getSwitchWarningsCount() > 16 ? TITLE_ROW : HIDDEN_ROW) + #define POT_WARN_ITEMS() uint8_t(g_model.potsWarnMode ? NAVIGATION_LINE_BY_LINE|NUM_POTS : 0), uint8_t(g_model.potsWarnMode ? TITLE_ROW : HIDDEN_ROW) +#else + #define SW_WARN_ITEMS() uint8_t(NAVIGATION_LINE_BY_LINE|getSwitchWarningsCount()) + #define POT_WARN_ITEMS() uint8_t(g_model.potsWarnMode ? NAVIGATION_LINE_BY_LINE|NUM_POTS : 0) +#endif + void menuModelSetup(uint8_t event) { horzpos_t l_posHorz = m_posHorz; -#if defined(TARANIS_INTERNAL_PPM) - #define IF_INTERNAL_MODULE_ON(x) (g_model.moduleData[INTERNAL_MODULE].type == MODULE_TYPE_NONE ? HIDDEN_ROW : (uint8_t)(x)) -#else - #define IF_INTERNAL_MODULE_ON(x) (g_model.moduleData[INTERNAL_MODULE].rfProtocol == RF_PROTO_OFF ? HIDDEN_ROW : (uint8_t)(x)) -#endif - #define IF_EXTERNAL_MODULE_ON(x) (g_model.moduleData[EXTERNAL_MODULE].type == MODULE_TYPE_NONE ? HIDDEN_ROW : (uint8_t)(x)) - #define IF_TRAINER_ON(x) (g_model.trainerMode == TRAINER_MODE_SLAVE ? (uint8_t)(x) : HIDDEN_ROW) - #define IF_EXTERNAL_MODULE_XJT(x) (IS_MODULE_XJT(EXTERNAL_MODULE) ? (uint8_t)x : HIDDEN_ROW) - #define IS_D8_RX(x) (g_model.moduleData[x].rfProtocol == RF_PROTO_D8) - #define INTERNAL_MODULE_CHANNELS_ROWS() IF_INTERNAL_MODULE_ON(1) - #define EXTERNAL_MODULE_CHANNELS_ROWS() IF_EXTERNAL_MODULE_ON(IS_MODULE_DSM2(EXTERNAL_MODULE) ? (uint8_t)0 : (uint8_t)1) - #define TRAINER_CHANNELS_ROWS() IF_TRAINER_ON(1) - #define PORT_CHANNELS_ROWS(x) (x==INTERNAL_MODULE ? INTERNAL_MODULE_CHANNELS_ROWS() : (x==EXTERNAL_MODULE ? EXTERNAL_MODULE_CHANNELS_ROWS() : TRAINER_CHANNELS_ROWS())) - #define FAILSAFE_ROWS(x) ((g_model.moduleData[x].rfProtocol==RF_PROTO_X16 || g_model.moduleData[x].rfProtocol==RF_PROTO_LR12) ? (g_model.moduleData[x].failsafeMode==FAILSAFE_CUSTOM ? (uint8_t)1 : (uint8_t)0) : HIDDEN_ROW) - #define TIMER_ROWS 2|NAVIGATION_LINE_BY_LINE, 0, CASE_PERSISTENT_TIMERS(0) 0, 0 - #if TIMERS == 1 - #define TIMERS_ROWS TIMER_ROWS - #elif TIMERS == 2 - #define TIMERS_ROWS TIMER_ROWS, TIMER_ROWS - #elif TIMERS == 3 - #define TIMERS_ROWS TIMER_ROWS, TIMER_ROWS, TIMER_ROWS - #endif - #if defined(REV9E) - #define SW_WARN_ITEMS() uint8_t(NAVIGATION_LINE_BY_LINE|(getSwitchWarningsCount()-1)), uint8_t(getSwitchWarningsCount() > 8 ? TITLE_ROW : HIDDEN_ROW), uint8_t(getSwitchWarningsCount() > 16 ? TITLE_ROW : HIDDEN_ROW) - #define POT_WARN_ITEMS() uint8_t(g_model.potsWarnMode ? NAVIGATION_LINE_BY_LINE|NUM_POTS : 0), uint8_t(g_model.potsWarnMode ? TITLE_ROW : HIDDEN_ROW) - #else - #define SW_WARN_ITEMS() uint8_t(NAVIGATION_LINE_BY_LINE|getSwitchWarningsCount()) - #define POT_WARN_ITEMS() uint8_t(g_model.potsWarnMode ? NAVIGATION_LINE_BY_LINE|NUM_POTS : 0) - #endif bool CURSOR_ON_CELL = (m_posHorz >= 0); #if defined(TARANIS_INTERNAL_PPM) MENU_TAB({ 0, 0, TIMERS_ROWS, 0, 1, 0, 0, LABEL(Throttle), 0, 0, 0, LABEL(PreflightCheck), 0, 0, SW_WARN_ITEMS(), POT_WARN_ITEMS(), @@ -235,7 +240,7 @@ void menuModelSetup(uint8_t event) IF_EXTERNAL_MODULE_XJT(FAILSAFE_ROWS(EXTERNAL_MODULE)), LABEL(Trainer), 0, TRAINER_CHANNELS_ROWS(), IF_TRAINER_ON(2)}); #else - MENU_TAB({ 0, 0, TIMERS_ROWS, 0, 1, 0, 0, LABEL(Throttle), 0, 0, 0, LABEL(PreflightCheck), 0, 0, SW_WARN_ITEMS(), POT_WARN_ITEMS(), NAVIGATION_LINE_BY_LINE|(NUM_STICKS+NUM_POTS+NUM_ROTARY_ENCODERS-1), 0, LABEL(InternalModule), 0, IF_INTERNAL_MODULE_ON(1), IF_INTERNAL_MODULE_ON(IS_D8_RX(0) ? (uint8_t)1 : (uint8_t)2), IF_INTERNAL_MODULE_ON(FAILSAFE_ROWS(INTERNAL_MODULE)), LABEL(ExternalModule), (IS_MODULE_XJT(EXTERNAL_MODULE) || IS_MODULE_DSM2(EXTERNAL_MODULE)) ? (uint8_t)1 : (uint8_t)0, EXTERNAL_MODULE_CHANNELS_ROWS(), (IS_MODULE_XJT(EXTERNAL_MODULE) && IS_D8_RX(EXTERNAL_MODULE)) ? (uint8_t)1 : (IS_MODULE_PPM(EXTERNAL_MODULE) || IS_MODULE_XJT(EXTERNAL_MODULE) || IS_MODULE_DSM2(EXTERNAL_MODULE)) ? (uint8_t)2 : HIDDEN_ROW, IF_EXTERNAL_MODULE_XJT(FAILSAFE_ROWS(EXTERNAL_MODULE)), LABEL(Trainer), 0, TRAINER_CHANNELS_ROWS(), IF_TRAINER_ON(2)}); + MENU_TAB({ 0, 0, TIMERS_ROWS, 0, 1, 0, 0, LABEL(Throttle), 0, 0, 0, LABEL(PreflightCheck), 0, 0, SW_WARN_ITEMS(), POT_WARN_ITEMS(), NAVIGATION_LINE_BY_LINE|(NUM_STICKS+NUM_POTS+NUM_ROTARY_ENCODERS-1), 0, LABEL(InternalModule), 0, IF_INTERNAL_MODULE_ON(1), IF_INTERNAL_MODULE_ON(HAS_RF_PROTOCOL_FAILSAFE(g_model.moduleData[0].rfProtocol) ? (uint8_t)2 : (uint8_t)1), IF_INTERNAL_MODULE_ON(FAILSAFE_ROWS(INTERNAL_MODULE)), LABEL(ExternalModule), EXTERNAL_MODULE_MODE_ROWS, EXTERNAL_MODULE_CHANNELS_ROWS, (IS_MODULE_XJT(EXTERNAL_MODULE) && !HAS_RF_PROTOCOL_FAILSAFE(g_model.moduleData[EXTERNAL_MODULE].rfProtocol)) ? (uint8_t)1 : (IS_MODULE_PPM(EXTERNAL_MODULE) || IS_MODULE_XJT(EXTERNAL_MODULE) || IS_MODULE_DSM2(EXTERNAL_MODULE)) ? (uint8_t)2 : HIDDEN_ROW, IF_EXTERNAL_MODULE_XJT(FAILSAFE_ROWS(EXTERNAL_MODULE)), LABEL(Trainer), 0, TRAINER_CHANNELS_ROWS(), IF_TRAINER_ON(2)}); #endif MENU_CHECK(STR_MENUSETUP, menuTabModel, e_ModelSetup, ITEM_MODEL_SETUP_MAX); @@ -745,7 +750,7 @@ void menuModelSetup(uint8_t event) else { horzpos_t l_posHorz = m_posHorz; coord_t xOffsetBind = MODEL_SETUP_BIND_OFS; - if (IS_MODULE_XJT(moduleIdx) && IS_D8_RX(moduleIdx)) { + if (IS_MODULE_XJT(moduleIdx) && !HAS_RF_PROTOCOL_FAILSAFE(g_model.moduleData[moduleIdx].rfProtocol)) { xOffsetBind = 0; lcd_putsLeft(y, INDENT "Receiver"); if (attr) l_posHorz += 1; diff --git a/radio/src/myeeprom.h b/radio/src/myeeprom.h index 0b39a38b1..fe222ab0b 100644 --- a/radio/src/myeeprom.h +++ b/radio/src/myeeprom.h @@ -2017,11 +2017,21 @@ enum Protocols { enum RFProtocols { RF_PROTO_OFF = -1, RF_PROTO_X16, +#if defined(MODULE_D16_EU_ONLY_SUPPORT) + RF_PROTO_LAST = RF_PROTO_X16 +#else RF_PROTO_D8, RF_PROTO_LR12, RF_PROTO_LAST = RF_PROTO_LR12 +#endif }; +#if defined(MODULE_D16_EU_ONLY_SUPPORT) + #define HAS_RF_PROTOCOL_FAILSAFE(protocol) ((protocol) == RF_PROTO_X16) +#else + #define HAS_RF_PROTOCOL_FAILSAFE(protocol) ((protocol) == RF_PROTO_X16 || (protocol) == RF_PROTO_LR12) +#endif + enum DSM2Protocols { DSM2_PROTO_LP45, DSM2_PROTO_DSM2, diff --git a/radio/src/opentx.cpp b/radio/src/opentx.cpp index 9f6c08774..13270eb22 100644 --- a/radio/src/opentx.cpp +++ b/radio/src/opentx.cpp @@ -1038,7 +1038,7 @@ void checkFailsafe() for (int i=0; i Date: Sun, 28 Jun 2015 15:38:30 +0200 Subject: [PATCH 2/2] Cosmetics --- radio/src/translations/de.h.txt | 122 ++++++++++++++++---------------- 1 file changed, 61 insertions(+), 61 deletions(-) diff --git a/radio/src/translations/de.h.txt b/radio/src/translations/de.h.txt index f233e49e5..0a5e3757a 100644 --- a/radio/src/translations/de.h.txt +++ b/radio/src/translations/de.h.txt @@ -117,8 +117,8 @@ #define LEN_DSM_PROTOCOLS "\004" #define TR_DSM_PROTOCOLS "LP45""DSM2""DSMX" -#define LEN_VTRIMINC TR("\007","\014") // ursprüglich "\006","\013" -#define TR_VTRIMINC TR("Expo ""ExFein ""Fein ""Mittel ""Grob ","Exponentiell""Extrafein ""Fein ""Mittel ""Grob ") +#define LEN_VTRIMINC TR("\007", "\014") // ursprüglich "\006", "\013" +#define TR_VTRIMINC TR("Expo ""ExFein ""Fein ""Mittel ""Grob ", "Exponentiell""Extrafein ""Fein ""Mittel ""Grob ") #define LEN_VDISPLAYTRIMS "\006" #define TR_VDISPLAYTRIMS "Nein\0 ""Kurz\0 ""Ja\0" //Trimmwerte Keine, kurze Anzeigen, Ja @@ -600,56 +600,56 @@ #define TR_EXPONAME "Info-Name" // Expo Name #endif #define TR_BITMAP "Modellfoto" -#define TR_TIMER TR("Timer","Timer ") // für Timer1 Timer2 Timer3 -#define TR_ELIMITS TR("Erw. Limit","Erw. Wege auf 150%") -#define TR_ETRIMS TR("Erw. Trims","Erw. Trim auf 100%") -#define TR_TRIMINC TR("Trim Schr.","Trimmschritte") +#define TR_TIMER TR("Timer", "Timer ") // für Timer1 Timer2 Timer3 +#define TR_ELIMITS TR("Erw. Limit", "Erw. Wege auf 150%") +#define TR_ETRIMS TR("Erw. Trims", "Erw. Trim auf 100%") +#define TR_TRIMINC TR("Trim Schr.", "Trimmschritte") #define TR_DISPLAY_TRIMS "Trimwerte anzeigen" #define TR_TTRACE TR("Gasquelle", INDENT "Gas-Timerquelle") #define TR_TTRIM TR("Gastrim", INDENT "Gas-Leerlauftrim") -#define TR_BEEPCTR TR("Mitt.Piep","Mittelstell. -Pieps") +#define TR_BEEPCTR TR("Mitt.Piep", "Mittelstell. -Pieps") #define TR_USE_GLOBAL_FUNCS "Globale Funkt verw." #if defined(PCBSKY9X) && defined(REVX) #define TR_OUTPUT_TYPE INDENT "Output" #endif -#define TR_PROTO TR(INDENT"Protok.",INDENT"Protokoll") +#define TR_PROTO TR(INDENT "Protok.", INDENT "Protokoll") #if defined(CPUARM) #define TR_PPMFRAME INDENT "PPM frame" #else #define TR_PPMFRAME "PPM frame" #endif #define TR_MS "ms" -#define TR_SWITCH TR("Schalt.","Schalter") +#define TR_SWITCH TR("Schalt.", "Schalter") #define TR_TRIMS "Trims" #define TR_FADEIN "Langs. Ein" #define TR_FADEOUT "Langs. Aus" #define TR_DEFAULT "(Normal)" #define TR_CHECKTRIMS CENTER"\006Check\012Trims" #define OFS_CHECKTRIMS CENTER_OFS+(9*FW) -#define TR_SWASHTYPE TR("Typ Taumelsch","Typ Taumelscheibe") -#define TR_COLLECTIVE TR("Kollekt. Pitch","Kollekt. Pitch Quelle") +#define TR_SWASHTYPE TR("Typ Taumelsch", "Typ Taumelscheibe") +#define TR_COLLECTIVE TR("Kollekt. Pitch", "Kollekt. Pitch Quelle") #define TR_AILERON "Roll Quelle" #define TR_ELEVATOR "Nick Quelle" -#define TR_SWASHRING TR("Ring Begrenz","Ring Begrenzung") -#define TR_ELEDIRECTION TR("Nick Richtung","Nick Servo Richtung") -#define TR_AILDIRECTION TR("Roll Richtung","Roll Servo Richtung") -#define TR_COLDIRECTION TR("Pitch Richtung","Pitch Servo Richtung") -#define TR_MODE INDENT"Modus" +#define TR_SWASHRING TR("Ring Begrenz", "Ring Begrenzung") +#define TR_ELEDIRECTION TR("Nick Richtung", "Nick Servo Richtung") +#define TR_AILDIRECTION TR("Roll Richtung", "Roll Servo Richtung") +#define TR_COLDIRECTION TR("Pitch Richtung", "Pitch Servo Richtung") +#define TR_MODE INDENT "Modus" #define TR_NOFREEEXPO "Expos voll!" #define TR_NOFREEMIXER "Mischer voll!" #define TR_INSERTMIX "MISCHER Hinz." #define TR_EDITMIX "MISCHER Edit" -#define TR_SOURCE INDENT"Quelle" +#define TR_SOURCE INDENT "Quelle" #define TR_WEIGHT "Gewicht" -#define TR_EXPO TR("Expo","Exponential") +#define TR_EXPO TR("Expo", "Exponential") #define TR_SIDE "Seite" #define TR_DIFFERENTIAL "Diff" -#define TR_OFFSET INDENT"Offset" +#define TR_OFFSET INDENT "Offset" #define TR_TRIM "Trim" #define TR_DREX "DRex" #define DREX_CHBOX_OFFSET 30 #define TR_CURVE "Kurve" -#define TR_FLMODE TR("Phase","Phasen") +#define TR_FLMODE TR("Phase", "Phasen") #define TR_MIXWARNING "Warnung" #define TR_OFF "AUS" #define TR_MULTPX "Wirkung" @@ -660,38 +660,38 @@ #define TR_MIXER "MISCHER" #define TR_CV "KV" #define TR_GV "GV" -#define TR_ACHANNEL TR("A\004gemessen","A\004Kanal gemessen =>") //9XR-Pro -#define TR_RANGE TR(INDENT"Bereich", INDENT "Reichweite") // 9XR-Pro +#define TR_ACHANNEL TR("A\004gemessen", "A\004Kanal gemessen =>") //9XR-Pro +#define TR_RANGE TR(INDENT "Bereich", INDENT "Reichweite") // 9XR-Pro #define TR_CENTER INDENT "Center" #define TR_BAR "Streifen" -#define TR_ALARM INDENT"Alarm" +#define TR_ALARM INDENT "Alarm" #define TR_USRDATA "Daten berechnen aus" -#define TR_BLADES TR(INDENT"Prop",INDENT"Prop-Blätter") //9XR-Pro +#define TR_BLADES TR(INDENT "Prop", INDENT "Prop-Blätter") //9XR-Pro #define TR_SCREEN "Telm-Bild " #define TR_SOUND_LABEL "----Töne---------" -#define TR_LENGTH INDENT"Dauer" +#define TR_LENGTH INDENT "Dauer" #define TR_BEEP_LENGTH INDENT "Beep-Länge" -#define TR_SPKRPITCH INDENT"Beep-Freq. +/-" +#define TR_SPKRPITCH INDENT "Beep-Freq. +/-" #define TR_HAPTIC_LABEL "----Haptik-------" //9XR-Pro -#define TR_HAPTICSTRENGTH INDENT"Stärke" +#define TR_HAPTICSTRENGTH INDENT "Stärke" #define TR_CONTRAST "LCD-Kontrast" #define TR_ALARMS_LABEL "----Alarm wenn---" -#define TR_BATTERY_RANGE TR("Akku Bereich","Akku Spgs-Bereich") // Symbol Akku Ladezustand -#define TR_BATTERYWARNING INDENT"Akkuspg kleiner" -#define TR_INACTIVITYALARM TR(INDENT"Inaktivität",INDENT"Inaktivität nach") //9XR-Pro -#define TR_MEMORYWARNING INDENT"Speicher voll" -#define TR_ALARMWARNING INDENT"Alle Töne ganz aus?" +#define TR_BATTERY_RANGE TR("Akku Bereich", "Akku Spgs-Bereich") // Symbol Akku Ladezustand +#define TR_BATTERYWARNING INDENT "Akkuspg kleiner" +#define TR_INACTIVITYALARM TR(INDENT "Inaktivität", INDENT " Inaktivität nach") //9XR-Pro +#define TR_MEMORYWARNING INDENT "Speicher voll" +#define TR_ALARMWARNING INDENT "Alle Töne ganz aus?" #define TR_RENAVIG "Drehgeb. Navig." #define TR_THROTTLE_LABEL "---Gas-Kontrolle----" #define TR_THROTTLEREVERSE TR("Gas invers", INDENT "Vollgas hinten?") //Änderung wg TH9x, Taranis #define TR_TIMER_NAME INDENT "Name" -#define TR_MINUTEBEEP TR(INDENT"Min-Alarm", INDENT"Minuten-Alarm") -#define TR_BEEPCOUNTDOWN INDENT"Countdown" -#define TR_PERSISTENT TR(INDENT"Permanent", INDENT"Permanent speich.") +#define TR_MINUTEBEEP TR(INDENT "Min-Alarm", INDENT "Minuten-Alarm") +#define TR_BEEPCOUNTDOWN INDENT "Countdown" +#define TR_PERSISTENT TR(INDENT "Permanent", INDENT "Permanent speich.") #define TR_BACKLIGHT_LABEL "----LCD-Beleuchtg----" -#define TR_BLDELAY INDENT"Dauer" -#define TR_BLONBRIGHTNESS INDENT"An-Helligkeit" -#define TR_BLOFFBRIGHTNESS INDENT"Aus-Helligkeit" +#define TR_BLDELAY INDENT "Dauer" +#define TR_BLONBRIGHTNESS INDENT "An-Helligkeit" +#define TR_BLOFFBRIGHTNESS INDENT "Aus-Helligkeit" #define TR_BLCOLOR INDENT "Farbe" #define TR_SPLASHSCREEN TR("Startbild Ein", "Startbild Ein für") #define TR_THROTTLEWARNING TR("Gasalarm", INDENT "Gas Alarm") @@ -754,21 +754,21 @@ #define TR_BADEEPROMDATA "EEPROM ungültig" #define TR_EEPROMFORMATTING "EEPROM Initialisieren" #define TR_EEPROMOVERFLOW "EEPROM Überlauf" -#define TR_MENURADIOSETUP TR("SENDER-EINSTELLEN","SENDER-GRUNDEINSTELLUNGEN") +#define TR_MENURADIOSETUP TR("SENDER-EINSTELLEN", "SENDER-GRUNDEINSTELLUNGEN") #define TR_MENUDATEANDTIME "DATUM UND ZEIT" -#define TR_MENUTRAINER TR("LEHRER/SCHÜLER","LEHRER/SCHÜLER") +#define TR_MENUTRAINER TR("LEHRER/SCHÜLER", "LEHRER/SCHÜLER") #define TR_MENUGLOBALFUNCS "GLOBALE FUNKTIONEN" #define TR_MENUVERSION "VERSION" -#define TR_MENUDIAG TR("Schalt.","Schalter-Test") +#define TR_MENUDIAG TR("Schalt.", "Schalter-Test") #define TR_MENUANA "Analog-Test" -#define TR_MENUCALIBRATION TR("KALIB. ANALOG","KALIBRIERUNG Knüppel+Potis") +#define TR_MENUCALIBRATION TR("KALIB. ANALOG", "KALIBRIERUNG Knüppel+Potis") #if defined(COLORLCD) #define TR_TRIMS2OFFSETS "Trims => Subtrims" #else #define TR_TRIMS2OFFSETS "\006Trims => Subtrims" #endif -#define TR_MENUMODELSEL TR("MODELLE","MODELL WÄHLEN") -#define TR_MENUSETUP TR("MODELL-EINSTELLUNG","MODELL-EINSTELLUNGEN") +#define TR_MENUMODELSEL TR("MODELLE", "MODELL WÄHLEN") +#define TR_MENUSETUP TR("MODELL-EINSTELLUNG", "MODELL-EINSTELLUNGEN") #define TR_MENUFLIGHTPHASE "FLUGPHASE" #define TR_MENUFLIGHTPHASES "FLUGPHASEN" #define TR_MENUHELISETUP "HUBSCHRAUBER" @@ -777,15 +777,15 @@ #define TR_MENUINPUTS "INPUTS" #define TR_MENULIMITS "SERVOWEGE" #else - #define TR_MENUINPUTS TR("DR/EXPO","DUALRATE/EXPO") - #define TR_MENULIMITS TR("GRENZEN","SERVOWEGE") + #define TR_MENUINPUTS TR("DR/EXPO", "DUALRATE/EXPO") + #define TR_MENULIMITS TR("GRENZEN", "SERVOWEGE") #endif #define TR_MENUCURVES "KURVEN" #define TR_MENUCURVE "KURVE" #define TR_MENULOGICALSWITCH "LOGIKSCHALTER" #define TR_MENULOGICALSWITCHES "LOGIKSCHALTER" -#define TR_MENUCUSTOMFUNC TR("SPEZ.-FUNKTIONEN","SPEZIAL-FUNKTIONEN") +#define TR_MENUCUSTOMFUNC TR("SPEZ.-FUNKTIONEN", "SPEZIAL-FUNKTIONEN") #define TR_MENUCUSTOMSCRIPTS "LUA-SCRIPTE" #define TR_MENUCUSTOMSCRIPT "LUA-SCRIPT" #define TR_MENUTELEMETRY "TELEMETRIE" @@ -798,12 +798,12 @@ #define TR_RXNUM "RxNum" #endif #define TR_SYNCMENU "Sync [MENU]" -#define TR_LIMIT INDENT"Grenzen" +#define TR_LIMIT INDENT "Grenzen" #define TR_MINRSSI "Min. RSSI" #define TR_LATITUDE "Breite:" #define TR_LONGITUDE "Länge:" -#define TR_GPSCOORD TR("GPS-Koord.","GPS-Koordinaten-Format") -#define TR_VARIO TR("----Vario--------","----Variometer----") //9XR-Pro +#define TR_GPSCOORD TR("GPS-Koord.", "GPS-Koordinaten-Format") +#define TR_VARIO TR("----Vario--------", "----Variometer----") //9XR-Pro #define TR_PITCH_AT_ZERO INDENT "Niedrigster Ton" #define TR_PITCH_AT_MAX INDENT "Höchster Ton" #define TR_REPEAT_AT_ZERO INDENT "Wiederholrate" @@ -812,8 +812,8 @@ #define TR_SAVEMODEL "Modelleinstellungen speichern" #define TR_BATT_CALIB "Akku abgleichen" #define TR_CURRENT_CALIB "Strom abgl." -#define TR_VOLTAGE TR(INDENT "Spg",INDENT "Spannungsquelle") //9XR-Pro -#define TR_CURRENT TR(INDENT "Strom",INDENT "Stromquelle") +#define TR_VOLTAGE TR(INDENT "Spg", INDENT "Spannungsquelle") //9XR-Pro +#define TR_CURRENT TR(INDENT "Strom", INDENT "Stromquelle") #define TR_SELECT_MODEL "Modell Wählen" #define TR_CREATE_MODEL "Neues Modell" #define TR_COPY_MODEL "Kopiere Modell" @@ -834,7 +834,7 @@ #define TR_FAILSAFEWARN "FAILSAFE" #define TR_NO_FAILSAFE "Failsafe not set" #define TR_KEYSTUCK "Taste klemmt" //Key stuck=Taste klemmt -#define TR_INVERT_THR TR("Gas umkehren?","Vollgas hinten?") // Th9x 9XR +#define TR_INVERT_THR TR("Gas umkehren?", "Vollgas hinten?") // Th9x 9XR #define TR_SPEAKER_VOLUME INDENT "Lautstärke" #define TR_LCD "Bildschirm" #define TR_BRIGHTNESS INDENT "Helligkeit" @@ -894,7 +894,7 @@ #define TR_WRITING "\032Writing..." // #define TR_CONFIRM_FORMAT "Formatieren bestätigen?" #define TR_INTERNALRF "----Internes HF-Modul----------" -#define TR_EXTERNALRF TR("---Externes HF-Modul---","----Externes HF-Modul----------") //9XR-Pro +#define TR_EXTERNALRF TR("---Externes HF-Modul---", "----Externes HF-Modul----------") //9XR-Pro #define TR_FAILSAFE "Failsafe-Modus" #define TR_FAILSAFESET "Failsafe Einst." #define TR_MENUSENSOR "SENSOR" @@ -919,8 +919,8 @@ #define TR_AND_SWITCH "UND Schalt" //UND mit weiterem Schaltern #define TR_SF "SF" //Spezial Funktionen #define TR_GF "GF" // Globale Funktionen -#define TR_SPEAKER INDENT"Lautspr" -#define TR_BUZZER INDENT"Summer" +#define TR_SPEAKER INDENT "Lautspr" +#define TR_BUZZER INDENT "Summer" #define TR_BYTES "Bytes" #define TR_MODULE_BIND "[Bind]" #define TR_MODULE_RANGE "[Range]" @@ -928,7 +928,7 @@ #define TR_SET "[Set]" #define TR_TRAINER "----DSC Buchse PPM In/Out------" //DSC Buchse Trainer Buchse #define TR_ANTENNAPROBLEM CENTER "TX-Antennenproblem!" -#define TR_MODELIDUSED TR("ID schon benutzt","Modell-ID schon benutzt") +#define TR_MODELIDUSED TR("ID schon benutzt", "Modell-ID schon benutzt") #define TR_MODULE INDENT "Modul-Typ" #define TR_TELEMETRY_TYPE TR("Typ", "Telemetrytyp") #define TR_TELEMETRY_SENSORS "----Sensoren----" @@ -946,16 +946,16 @@ #define TR_MIRROR "Spiegeln" #define TR_CLEAR "Löschen" #define TR_RESET "Servowerte rücksetzen" -#define TR_RESET_SUBMENU TR("Reset Werte ==>","Reset=>Timer Flug Telem") +#define TR_RESET_SUBMENU TR("Reset Werte ==>", "Reset=>Timer Flug Telem") #define TR_COUNT "Punkte" #define TR_PT "Pt" #define TR_PTS "Pts" #define TR_SMOOTH "Runden" #define TR_COPY_STICKS_TO_OFS "Kopie Stick to Servo-Mitte" #define TR_COPY_TRIMS_TO_OFS "Kopie Trimm to Servo-Mitte" // "Trim to Subtrim" -#define TR_PERSISTENT_MAH TR(INDENT"Spr. mAh",INDENT "Speichern mAh") //9XR-Pro -#define TR_PREFLIGHT TR("---Vorflug-Checkliste--","----Vorflug-Checkliste----") -#define TR_CHECKLIST TR(INDENT "Checkliste",INDENT "Checkliste anzeigen") //9XR-Pro +#define TR_PERSISTENT_MAH TR(INDENT "Spr. mAh", INDENT "Speichern mAh") //9XR-Pro +#define TR_PREFLIGHT TR("---Vorflug-Checkliste--", "----Vorflug-Checkliste----") +#define TR_CHECKLIST TR(INDENT "Checkliste", INDENT "Checkliste anzeigen") //9XR-Pro #define TR_FAS_OFFSET TR(INDENT "FAS-Ofs", INDENT "FAS-Offset") #define TR_UART3MODE "Serieller Port" #define TR_SCRIPT "Lua-Script"