diff --git a/src/Makefile b/src/Makefile index 25f69e95e..c2c2e40bd 100644 --- a/src/Makefile +++ b/src/Makefile @@ -114,9 +114,13 @@ IRPROTOS = NO SOMO = NO # TRANSLATIONS -# Values = en, fr, se +# Values = cz, de, en, fr, it, se TRANSLATIONS = EN +# TTS +# Values = en, fr +TTS = $(TRANSLATIONS) + # UNITS # Values = imperial, metric UNITS = METRIC @@ -196,8 +200,9 @@ FORMAT = ihex TARGET = open9x # List C++ source files here. (C dependencies are automatically generated.) -SRC = -CPPSRC = open9x.cpp $(PULSESSRC) stamp.cpp menus.cpp model_menus.cpp general_menus.cpp main_views.cpp statistics_views.cpp $(EEPROMSRC) lcd.cpp drivers.cpp translations.cpp +SRC = +TTS_SRC = translations/tts_$(shell sh -c "echo $(TTS) | tr '[:upper:]' '[:lower:]'").cpp +CPPSRC = open9x.cpp $(PULSESSRC) stamp.cpp menus.cpp model_menus.cpp general_menus.cpp main_views.cpp statistics_views.cpp $(EEPROMSRC) lcd.cpp drivers.cpp translations.cpp $(TTS_SRC) ifeq ($(EXT), JETI) CPPSRC += jeti.cpp @@ -226,7 +231,7 @@ EXTRAINCDIRS = . translations # NOTE: PCB version now overrides all the earlier individual settings # These individual settings work only for PCB=STD -CPPDEFS += -DTRANSLATIONS_$(TRANSLATIONS) +CPPDEFS += -DTRANSLATIONS_$(TRANSLATIONS) -DTTS_$(TTS) ifeq ($(UNITS), IMPERIAL) CPPDEFS += -DIMPERIAL_UNITS diff --git a/src/frsky.cpp b/src/frsky.cpp index dc86e0d47..b18274fa2 100644 --- a/src/frsky.cpp +++ b/src/frsky.cpp @@ -265,7 +265,11 @@ void parseTelemHubByte(uint8_t byte) break; case offsetof(FrskyHubData, volts_ap): +#if defined(OLDVFAS) frskyData.hub.vfas = ((frskyData.hub.volts_bp * 100 + frskyData.hub.volts_ap * 10) * 21) / 110; +#else + frskyData.hub.vfas = (frskyData.hub.volts_bp * 10 + frskyData.hub.volts_ap); +#endif /* TODO later if (!frskyData.hub.minVfas || frskyData.hub.minVfas > frskyData.hub.vfas) frskyData.hub.minVfas = frskyData.hub.vfas; */ break; diff --git a/src/menus.cpp b/src/menus.cpp index 496f9415f..7df26581a 100644 --- a/src/menus.cpp +++ b/src/menus.cpp @@ -501,7 +501,7 @@ void popMenu() void chainMenu(MenuFuncP newMenu) { -#if defined(ROTARY_ENCODERS) && defined(PCBV4) +#if defined(ROTARY_ENCODERS) s_inflight_enable = false; #endif g_menuStack[g_menuStackPtr] = newMenu; @@ -511,7 +511,7 @@ void chainMenu(MenuFuncP newMenu) void pushMenu(MenuFuncP newMenu) { -#if defined(ROTARY_ENCODERS) && defined(PCBV4) +#if defined(ROTARY_ENCODERS) s_inflight_enable = false; #endif diff --git a/src/menus.h b/src/menus.h index f7babf45a..5013127da 100644 --- a/src/menus.h +++ b/src/menus.h @@ -119,7 +119,7 @@ int8_t checkIncDecGen(uint8_t event, int8_t i_val, int8_t i_min, int8_t i_max); #define CHECK_INCDEC_GENVAR(event, var, min, max) \ var = checkIncDecGen(event,var,min,max) -#if defined(PCBV4) && defined(ROTARY_ENCODERS) +#if defined(ROTARY_ENCODERS) extern bool s_inflight_enable; extern int8_t *s_inflight_value; extern const pm_char *s_inflight_label; @@ -127,13 +127,17 @@ extern int8_t s_inflight_min; extern int8_t s_inflight_max; extern int8_t s_inflight_shift; extern uint8_t s_inflight_bitshift; +#if defined(PCBV4) #define PREPARE_INFLIGHT_BITFIELD(a) int8_t *bitfield = (a) +#endif #define INFLIGHT(val) (s_inflight_value==&val ? SURROUNDED : 0) void checkInFlightIncDecModel(uint8_t event, int8_t *value, int8_t i_min, int8_t i_max, int8_t i_shift, const pm_char *label, uint8_t bitshift=0); #define CHECK_INFLIGHT_INCDEC_MODELVAR(event, var, imin, imax, ishift, label) \ checkInFlightIncDecModel(event, &var, imin, imax, ishift, label) +#if defined(PCBV4) #define CHECK_INFLIGHT_INCDEC_MODELVAR_BITFIELD(event, var, imin, imax, ishift, label, bitshift) \ checkInFlightIncDecModel(event, bitfield, imin, imax, ishift, label, bitshift); +#endif void check_rotary_encoder(); #else #define PREPARE_INFLIGHT_BITFIELD(a) diff --git a/src/model_menus.cpp b/src/model_menus.cpp index 49b825932..7b46bbfde 100644 --- a/src/model_menus.cpp +++ b/src/model_menus.cpp @@ -1429,9 +1429,14 @@ void menuProcExpoOne(uint8_t event) case EXPO_FIELD_WIDTH: { +#if defined(PCBARM) + lcd_outdezAtt(9*FW+5, y, ed->weight, attr|INFLIGHT(ed->weight)); + if (attr) CHECK_INFLIGHT_INCDEC_MODELVAR(event, ed->weight, 0, 100, 0, STR_DRWEIGHT); +#else PREPARE_INFLIGHT_BITFIELD(&ed->expo - 1); lcd_outdezAtt(9*FW+5, y, ed->weight, attr|INFLIGHT(*bitfield)); if (attr) CHECK_INFLIGHT_INCDEC_MODELVAR_BITFIELD(event, ed->weight, 0, 100, 0, STR_DRWEIGHT, 1); +#endif } break; case EXPO_FIELD_EXPO: diff --git a/src/myeeprom.h b/src/myeeprom.h index b25e6ca1e..ee049d70f 100644 --- a/src/myeeprom.h +++ b/src/myeeprom.h @@ -150,6 +150,8 @@ PACK(typedef struct t_EEGeneral { EXTRA_ARM_FIELDS + uint8_t lightOnStickMove; + }) EEGeneral; // eeprom modelspec @@ -160,8 +162,8 @@ PACK(typedef struct t_ExpoData { uint8_t chn; int8_t curve; // 0=no curve, 1-6=std curves, 7-10=CV1-CV4, 11-15=CV9-CV13 int8_t swtch; - int8_t phase; // if negPhase is 0: 0=normal, 5=FP4 if negPhase is 1: 5=!FP4 - uint8_t weight; + int8_t phase; + int8_t weight; int8_t expo; char name[6]; uint8_t spare[4]; diff --git a/src/translations.cpp b/src/translations.cpp index 74ba3a5ee..b0b3af82e 100644 --- a/src/translations.cpp +++ b/src/translations.cpp @@ -360,9 +360,3 @@ const pm_uchar font_dblsize[] PROGMEM = { #include "font_dblsize_fr.lbm" #endif }; - -#if defined(TRANSLATIONS_FR) -#include "translations/fr.cpp" -#else -#include "translations/en.cpp" -#endif diff --git a/src/translations/en.cpp b/src/translations/tts_en.cpp similarity index 100% rename from src/translations/en.cpp rename to src/translations/tts_en.cpp diff --git a/src/translations/fr.cpp b/src/translations/tts_fr.cpp similarity index 68% rename from src/translations/fr.cpp rename to src/translations/tts_fr.cpp index ae43ddcda..ac4903f81 100644 --- a/src/translations/fr.cpp +++ b/src/translations/tts_fr.cpp @@ -61,6 +61,37 @@ enum FrenchPrompts { PROMPT_DEGREES = PROMPT_UNITS_BASE+UNIT_DEGREES, PROMPT_PERCENT = PROMPT_UNITS_BASE+UNIT_PERCENT, PROMPT_MILLIAMPS = PROMPT_UNITS_BASE+UNIT_MILLIAMPS, + PROMPT_MAH = PROMPT_UNITS_BASE+UNIT_MAH, + PROMPT_WATTS = PROMPT_UNITS_BASE+UNIT_WATTS, + PROMPT_FEET = PROMPT_UNITS_BASE+UNIT_FEET, + PROMPT_KTS = PROMPT_UNITS_BASE+UNIT_KTS, + + PROMPT_LABELS_BASE = 100, + PROMPT_TIMER1 = PROMPT_LABELS_BASE+TELEM_TM1, + PROMPT_TIMER2 = PROMPT_LABELS_BASE+TELEM_TM2, + PROMPT_A1 = PROMPT_LABELS_BASE+TELEM_A1, + PROMPT_A2 = PROMPT_LABELS_BASE+TELEM_A2, + PROMPT_RSSI_TX = PROMPT_LABELS_BASE+TELEM_RSSI_TX, + PROMPT_RSSI_RX = PROMPT_LABELS_BASE+TELEM_RSSI_RX, + PROMPT_ALTITUDE = PROMPT_LABELS_BASE+TELEM_ALT, + PROMPT_RPM = PROMPT_LABELS_BASE+TELEM_RPM, + PROMPT_ESSENCE = PROMPT_LABELS_BASE+TELEM_FUEL, + PROMPT_T1 = PROMPT_LABELS_BASE+TELEM_T1, + PROMPT_T2 = PROMPT_LABELS_BASE+TELEM_T2, + PROMPT_VITESSE = PROMPT_LABELS_BASE+TELEM_SPEED, + PROMPT_DISTANCE = PROMPT_LABELS_BASE+TELEM_DIST, + PROMPT_GPSALTITUDE = PROMPT_LABELS_BASE+TELEM_GPSALT, + PROMPT_ELEMENTS_LIPO = PROMPT_LABELS_BASE+TELEM_CELL, + PROMPT_TOTAL_LIPO = PROMPT_LABELS_BASE+TELEM_CELLS_SUM, + PROMPT_VFAS = PROMPT_LABELS_BASE+TELEM_VFAS, + PROMPT_COURANT = PROMPT_LABELS_BASE+TELEM_CURRENT, + PROMPT_CONSOMMATION = PROMPT_LABELS_BASE+TELEM_CONSUMPTION, + PROMPT_PUISSANCE = PROMPT_LABELS_BASE+TELEM_POWER, + PROMPT_ACCELx = PROMPT_LABELS_BASE+TELEM_ACCx, + PROMPT_ACCELy = PROMPT_LABELS_BASE+TELEM_ACCy, + PROMPT_ACCELz = PROMPT_LABELS_BASE+TELEM_ACCz, + PROMPT_HDG = PROMPT_LABELS_BASE+TELEM_HDG, + PROMPT_VARIO = PROMPT_LABELS_BASE+TELEM_VSPD, }; #if defined(SOMO) || defined(PCBARM)