diff --git a/.gitignore b/.gitignore index fd92abe27..3e0c0844a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ /.*project /.settings +/.autotools diff --git a/DONATIONS.txt b/DONATIONS.txt index 46df5704e..2c53a5b43 100644 --- a/DONATIONS.txt +++ b/DONATIONS.txt @@ -329,4 +329,5 @@ A Harris Stefan Grunenberg Francisco Gutierrez Muñoz Steve Coley - +Sean Cull +Roberto Orsello diff --git a/companion/src/eeprominterface.cpp b/companion/src/eeprominterface.cpp index f72721f79..052b5a176 100644 --- a/companion/src/eeprominterface.cpp +++ b/companion/src/eeprominterface.cpp @@ -211,21 +211,31 @@ QString RotaryEncoderString(int index) QString RawSource::toString() { - static const QString trims[] = { QObject::tr("TrmR"), QObject::tr("TrmE"), QObject::tr("TrmT"), QObject::tr("TrmA")}; + static const QString trims[] = { + QObject::tr("TrmR"), QObject::tr("TrmE"), QObject::tr("TrmT"), QObject::tr("TrmA") + }; - static const QString telemetry[] = { QObject::tr("Batt"), QObject::tr("Timer1"), QObject::tr("Timer2"), - (IS_TARANIS(GetEepromInterface()->getBoard()) ? QObject::tr("SWR") : QObject::tr("Tx")), (IS_TARANIS(GetEepromInterface()->getBoard()) ? QObject::tr("RSSI") : QObject::tr("Rx")), QObject::tr("A1"), QObject::tr("A2"), QObject::tr("Alt"), QObject::tr("Rpm"), QObject::tr("Fuel"), QObject::tr("T1"), - QObject::tr("T2"), QObject::tr("Speed"), QObject::tr("Dist"), QObject::tr("GPS Alt"), QObject::tr("Cell"), QObject::tr("Cels"), QObject::tr("Vfas"), QObject::tr("Curr"), - QObject::tr("Cnsp"), QObject::tr("Powr"), QObject::tr("AccX"), QObject::tr("AccY"), QObject::tr("AccZ"), QObject::tr("HDG "), QObject::tr("VSpd"), QObject::tr("ASpd"), QObject::tr("dTE"), - QObject::tr("A1-"), QObject::tr("A2-"), QObject::tr("Alt-"), QObject::tr("Alt+"), QObject::tr("Rpm+"), QObject::tr("T1+"), QObject::tr("T2+"), QObject::tr("Spd+"), QObject::tr("Dst+"), QObject::tr("Cel-"), QObject::tr("Vfs-"), QObject::tr("Cur+"), QObject::tr("Pwr+"), - QObject::tr("ACC "), QObject::tr("Time"), - }; + static const QString telemetry[] = { + QObject::tr("Batt"), QObject::tr("Timer1"), QObject::tr("Timer2"), + QObject::tr("SWR"), QObject::tr("RSSI Tx"), QObject::tr("RSSI Rx"), QObject::tr("Rx Batt"), + QObject::tr("A1"), QObject::tr("A2"), QObject::tr("A3"), QObject::tr("A4"), + QObject::tr("Alt"), QObject::tr("Rpm"), QObject::tr("Fuel"), QObject::tr("T1"), QObject::tr("T2"), + QObject::tr("Speed"), QObject::tr("Dist"), QObject::tr("GPS Alt"), + QObject::tr("Cell"), QObject::tr("Cels"), QObject::tr("Vfas"), QObject::tr("Curr"), QObject::tr("Cnsp"), QObject::tr("Powr"), + QObject::tr("AccX"), QObject::tr("AccY"), QObject::tr("AccZ"), + QObject::tr("HDG "), QObject::tr("VSpd"), QObject::tr("ASpd"), QObject::tr("dTE"), + QObject::tr("A1-"), QObject::tr("A2-"), QObject::tr("A3-"), QObject::tr("A4-"), + QObject::tr("Alt-"), QObject::tr("Alt+"), QObject::tr("Rpm+"), QObject::tr("T1+"), QObject::tr("T2+"), QObject::tr("Spd+"), QObject::tr("Dst+"), + QObject::tr("Cel-"), QObject::tr("Cels-"), QObject::tr("Vfs-"), QObject::tr("Cur+"), QObject::tr("Pwr+"), + QObject::tr("ACC"), QObject::tr("Time"), + }; - static const QString virtualSwitches[] = { QObject::tr("LS1"), QObject::tr("LS2"), QObject::tr("LS3"), QObject::tr("LS4"), QObject::tr("LS5"), QObject::tr("LS6"), QObject::tr("LS7"), QObject::tr("LS8"), QObject::tr("LS9"), QObject::tr("LSA"), - QObject::tr("LSB"), QObject::tr("LSC"), QObject::tr("LSD"), QObject::tr("LSE"), QObject::tr("LSF"), QObject::tr("LSG"), QObject::tr("LSH"), QObject::tr("LSI"), QObject::tr("LSJ"), QObject::tr("LSK"), - QObject::tr("LSL"), QObject::tr("LSM"), QObject::tr("LSN"), QObject::tr("LSO"), QObject::tr("LSP"), QObject::tr("LSQ"), QObject::tr("LSR"), QObject::tr("LSS"), QObject::tr("LST"), QObject::tr("LSU"), - QObject::tr("LSV"), QObject::tr("LSW") - }; + static const QString virtualSwitches[] = { + QObject::tr("LS1"), QObject::tr("LS2"), QObject::tr("LS3"), QObject::tr("LS4"), QObject::tr("LS5"), QObject::tr("LS6"), QObject::tr("LS7"), QObject::tr("LS8"), QObject::tr("LS9"), QObject::tr("LSA"), + QObject::tr("LSB"), QObject::tr("LSC"), QObject::tr("LSD"), QObject::tr("LSE"), QObject::tr("LSF"), QObject::tr("LSG"), QObject::tr("LSH"), QObject::tr("LSI"), QObject::tr("LSJ"), QObject::tr("LSK"), + QObject::tr("LSL"), QObject::tr("LSM"), QObject::tr("LSN"), QObject::tr("LSO"), QObject::tr("LSP"), QObject::tr("LSQ"), QObject::tr("LSR"), QObject::tr("LSS"), QObject::tr("LST"), QObject::tr("LSU"), + QObject::tr("LSV"), QObject::tr("LSW") + }; if (index<0) { return QObject::tr("----"); diff --git a/companion/src/eeprominterface.h b/companion/src/eeprominterface.h index a59d276cc..78ee98ff3 100644 --- a/companion/src/eeprominterface.h +++ b/companion/src/eeprominterface.h @@ -162,7 +162,7 @@ enum HeliSwashTypes { #define BOARD_X9D_NUM_POTS 4 #define C9X_NUM_POTS 4 #define NUM_CAL_PPM 4 -#define NUM_PPM 8 +#define NUM_PPM(board) (IS_ARM(board) ? 16 : 8) #define NUM_CYC 3 #define C9X_NUM_SWITCHES 10 #define C9X_NUM_KEYS 6 @@ -175,10 +175,14 @@ enum TelemetrySource { TELEMETRY_SOURCE_TX_BATT, TELEMETRY_SOURCE_TIMER1, TELEMETRY_SOURCE_TIMER2, + TELEMETRY_SOURCE_SWR, TELEMETRY_SOURCE_RSSI_TX, TELEMETRY_SOURCE_RSSI_RX, + TELEMETRY_SOURCE_RX_BATT, TELEMETRY_SOURCE_A1, TELEMETRY_SOURCE_A2, + TELEMETRY_SOURCE_A3, + TELEMETRY_SOURCE_A4, TELEMETRY_SOURCE_ALT, TELEMETRY_SOURCE_RPM, TELEMETRY_SOURCE_FUEL, @@ -202,6 +206,8 @@ enum TelemetrySource { TELEMETRY_SOURCE_DTE, TELEMETRY_SOURCE_A1_MIN, TELEMETRY_SOURCE_A2_MIN, + TELEMETRY_SOURCE_A3_MIN, + TELEMETRY_SOURCE_A4_MIN, TELEMETRY_SOURCE_ALT_MIN, TELEMETRY_SOURCE_ALT_MAX, TELEMETRY_SOURCE_RPM_MAX, @@ -210,14 +216,15 @@ enum TelemetrySource { TELEMETRY_SOURCE_SPEED_MAX, TELEMETRY_SOURCE_DIST_MAX, TELEMETRY_SOURCE_CELL_MIN, + TELEMETRY_SOURCE_CELLS_MIN, TELEMETRY_SOURCE_VFAS_MIN, TELEMETRY_SOURCE_POWER_MAX, TELEMETRY_SOURCE_ACC, TELEMETRY_SOURCE_GPS_TIME, - TELEMETRY_SOURCES_STATUS_COUNT, - TELEMETRY_SOURCES_DISPLAY_COUNT = TELEMETRY_SOURCES_STATUS_COUNT-2, - - TELEMETRY_SOURCES_COUNT = TELEMETRY_SOURCE_VERTICAL_SPEED, + TELEMETRY_SOURCES_STATUS_COUNT = TELEMETRY_SOURCE_GPS_TIME+1, + TELEMETRY_SOURCES_DISPLAY_COUNT = TELEMETRY_SOURCE_POWER_MAX+1, + TELEMETRY_SOURCES_COUNT = TELEMETRY_SOURCE_DTE+1, + TELEMETRY_SOURCE_RESERVE = -1 }; #define TM_HASTELEMETRY 0x01 @@ -662,7 +669,8 @@ enum AssignFunc { FuncBackgroundMusicPause, FuncAdjustGV1, FuncAdjustGVLast = FuncAdjustGV1+C9X_MAX_GVARS-1, - FuncCount + FuncCount, + FuncReserve = -1 }; class FuncSwData { // Function Switches data diff --git a/companion/src/firmwares/opentx/open9xSky9xeeprom.cpp b/companion/src/firmwares/opentx/open9xSky9xeeprom.cpp index 01a7a01b2..36b6229ac 100644 --- a/companion/src/firmwares/opentx/open9xSky9xeeprom.cpp +++ b/companion/src/firmwares/opentx/open9xSky9xeeprom.cpp @@ -268,11 +268,11 @@ t_Open9xArmMixData_v208::operator MixData () else if (srcRaw <= 9+9+O9X_ARM_NUM_CSW+NUM_CYC) { c9x.srcRaw = RawSource(SOURCE_TYPE_CYC, srcRaw-10-9-O9X_ARM_NUM_CSW); } - else if (srcRaw <= 9+9+O9X_ARM_NUM_CSW+NUM_CYC+NUM_PPM) { + else if (srcRaw <= 9+9+O9X_ARM_NUM_CSW+NUM_CYC+8) { c9x.srcRaw = RawSource(SOURCE_TYPE_PPM, srcRaw-10-9-O9X_ARM_NUM_CSW-NUM_CYC); } else { - c9x.srcRaw = RawSource(SOURCE_TYPE_CH, srcRaw-10-9-O9X_ARM_NUM_CSW-NUM_CYC-NUM_PPM); + c9x.srcRaw = RawSource(SOURCE_TYPE_CH, srcRaw-10-9-O9X_ARM_NUM_CSW-NUM_CYC-8); } c9x.weight = weight; c9x.swtch = open9xArmToSwitch(swtch); @@ -334,11 +334,11 @@ t_Open9xArmMixData_v209::operator MixData () else if (srcRaw <= 13+9+O9X_ARM_NUM_CSW+NUM_CYC) { c9x.srcRaw = RawSource(SOURCE_TYPE_CYC, srcRaw-14-9-O9X_ARM_NUM_CSW); } - else if (srcRaw <= 13+9+O9X_ARM_NUM_CSW+NUM_CYC+NUM_PPM) { + else if (srcRaw <= 13+9+O9X_ARM_NUM_CSW+NUM_CYC+8) { c9x.srcRaw = RawSource(SOURCE_TYPE_PPM, srcRaw-14-9-O9X_ARM_NUM_CSW-NUM_CYC); } else { - c9x.srcRaw = RawSource(SOURCE_TYPE_CH, srcRaw-14-9-O9X_ARM_NUM_CSW-NUM_CYC-NUM_PPM); + c9x.srcRaw = RawSource(SOURCE_TYPE_CH, srcRaw-14-9-O9X_ARM_NUM_CSW-NUM_CYC-8); } c9x.weight = weight; @@ -400,11 +400,11 @@ t_Open9xArmMixData_v210::operator MixData () else if (srcRaw <= 13+9+O9X_ARM_NUM_CSW+NUM_CYC) { c9x.srcRaw = RawSource(SOURCE_TYPE_CYC, srcRaw-14-9-O9X_ARM_NUM_CSW); } - else if (srcRaw <= 13+9+O9X_ARM_NUM_CSW+NUM_CYC+NUM_PPM) { + else if (srcRaw <= 13+9+O9X_ARM_NUM_CSW+NUM_CYC+8) { c9x.srcRaw = RawSource(SOURCE_TYPE_PPM, srcRaw-14-9-O9X_ARM_NUM_CSW-NUM_CYC); } else { - c9x.srcRaw = RawSource(SOURCE_TYPE_CH, srcRaw-14-9-O9X_ARM_NUM_CSW-NUM_CYC-NUM_PPM); + c9x.srcRaw = RawSource(SOURCE_TYPE_CH, srcRaw-14-9-O9X_ARM_NUM_CSW-NUM_CYC-8); } c9x.weight = weight; @@ -470,11 +470,11 @@ t_Open9xArmMixData_v212::operator MixData () else if (srcRaw <= 14+9+O9X_ARM_NUM_CSW+NUM_CYC) { c9x.srcRaw = RawSource(SOURCE_TYPE_CYC, srcRaw-15-9-O9X_ARM_NUM_CSW); } - else if (srcRaw <= 14+9+O9X_ARM_NUM_CSW+NUM_CYC+NUM_PPM) { + else if (srcRaw <= 14+9+O9X_ARM_NUM_CSW+NUM_CYC+8) { c9x.srcRaw = RawSource(SOURCE_TYPE_PPM, srcRaw-15-9-O9X_ARM_NUM_CSW-NUM_CYC); } else { - c9x.srcRaw = RawSource(SOURCE_TYPE_CH, srcRaw-15-9-O9X_ARM_NUM_CSW-NUM_CYC-NUM_PPM); + c9x.srcRaw = RawSource(SOURCE_TYPE_CH, srcRaw-15-9-O9X_ARM_NUM_CSW-NUM_CYC-8); } c9x.weight = weight; diff --git a/companion/src/firmwares/opentx/opentxeeprom.cpp b/companion/src/firmwares/opentx/opentxeeprom.cpp index 8090aaf33..5be9f0917 100644 --- a/companion/src/firmwares/opentx/opentxeeprom.cpp +++ b/companion/src/firmwares/opentx/opentxeeprom.cpp @@ -23,6 +23,7 @@ #define MAX_CUSTOM_FUNCTIONS(board, version) (IS_ARM(board) ? (version >= 216 ? 64 : 32) : (IS_DBLEEPROM(board, version) ? 24 : 16)) #define MAX_CURVES(board, version) (IS_ARM(board) ? ((IS_TARANIS(board) && version >= 216) ? 32 : 16) : O9X_MAX_CURVES) #define MAX_GVARS(board, version) ((IS_ARM(board) && version >= 216) ? 9 : 5) +#define NUM_PPM_INPUTS(board, version) ((IS_ARM(board) && version >= 216) ? 16 : 8) #define IS_AFTER_RELEASE_21_MARCH_2013(board, version) (version >= 214 || (!IS_ARM(board) && version >= 213)) #define IS_AFTER_RELEASE_23_MARCH_2013(board, version) (version >= 214 || (board==BOARD_STOCK && version >= 213)) @@ -218,7 +219,7 @@ class SourcesConversionTable: public ConversionTable { addConversion(RawSource(SOURCE_TYPE_CYC, i), val++); } - for (int i=0; i<8; i++) + for (int i=0; i= 216 && IS_ARM(board)) { + if (i==TELEMETRY_SOURCE_DTE) + val += 5; + if (i==TELEMETRY_SOURCE_POWER_MAX) + val += 5; + } } } } @@ -314,6 +318,103 @@ class SwitchField: public ConversionField< SignedField > { int _switch; }; +class TelemetrySourcesConversionTable: public ConversionTable { + + public: + TelemetrySourcesConversionTable(BoardEnum board, unsigned int version) + { + int val = 0; + + if (IS_AFTER_RELEASE_21_MARCH_2013(board, version)) { + addConversion(0, val++); + } + + addConversion(1+TELEMETRY_SOURCE_TX_BATT, val++); + addConversion(1+TELEMETRY_SOURCE_TIMER1, val++); + addConversion(1+TELEMETRY_SOURCE_TIMER2, val++); + if (IS_ARM(board) && version >= 216) + addConversion(1+TELEMETRY_SOURCE_SWR, val++); + addConversion(1+TELEMETRY_SOURCE_RSSI_TX, val++); + addConversion(1+TELEMETRY_SOURCE_RSSI_RX, val++); + if (IS_ARM(board) && version >= 216) + addConversion(1+TELEMETRY_SOURCE_RX_BATT, val++); + addConversion(1+TELEMETRY_SOURCE_A1, val++); + addConversion(1+TELEMETRY_SOURCE_A2, val++); + if (IS_ARM(board) && version >= 216) { + addConversion(1+TELEMETRY_SOURCE_A3, val++); + addConversion(1+TELEMETRY_SOURCE_A4, val++); + } + addConversion(1+TELEMETRY_SOURCE_ALT, val++); + addConversion(1+TELEMETRY_SOURCE_RPM, val++); + addConversion(1+TELEMETRY_SOURCE_FUEL, val++); + addConversion(1+TELEMETRY_SOURCE_T1, val++); + addConversion(1+TELEMETRY_SOURCE_T2, val++); + addConversion(1+TELEMETRY_SOURCE_SPEED, val++); + addConversion(1+TELEMETRY_SOURCE_DIST, val++); + addConversion(1+TELEMETRY_SOURCE_GPS_ALT, val++); + addConversion(1+TELEMETRY_SOURCE_CELL, val++); + addConversion(1+TELEMETRY_SOURCE_CELLS_SUM, val++); + addConversion(1+TELEMETRY_SOURCE_VFAS, val++); + addConversion(1+TELEMETRY_SOURCE_CURRENT, val++); + addConversion(1+TELEMETRY_SOURCE_CONSUMPTION, val++); + addConversion(1+TELEMETRY_SOURCE_POWER, val++); + addConversion(1+TELEMETRY_SOURCE_ACCX, val++); + addConversion(1+TELEMETRY_SOURCE_ACCY, val++); + addConversion(1+TELEMETRY_SOURCE_ACCZ, val++); + addConversion(1+TELEMETRY_SOURCE_HDG, val++); + addConversion(1+TELEMETRY_SOURCE_VERTICAL_SPEED, val++); + if (version >= 216) { + addConversion(1+TELEMETRY_SOURCE_ASPD, val++); + addConversion(1+TELEMETRY_SOURCE_DTE, val++); + } + if (IS_ARM(board) && version >= 216) { + for (int i=0; i<5; i++) + addConversion(1+TELEMETRY_SOURCE_RESERVE, val++); + } + addConversion(1+TELEMETRY_SOURCE_A1_MIN, val++); + addConversion(1+TELEMETRY_SOURCE_A2_MIN, val++); + if (IS_ARM(board) && version >= 216) { + addConversion(1+TELEMETRY_SOURCE_A3_MIN, val++); + addConversion(1+TELEMETRY_SOURCE_A4_MIN, val++); + } + addConversion(1+TELEMETRY_SOURCE_ALT_MIN, val++); + addConversion(1+TELEMETRY_SOURCE_ALT_MAX, val++); + addConversion(1+TELEMETRY_SOURCE_RPM_MAX, val++); + addConversion(1+TELEMETRY_SOURCE_T1_MAX, val++); + addConversion(1+TELEMETRY_SOURCE_T2_MAX, val++); + addConversion(1+TELEMETRY_SOURCE_SPEED_MAX, val++); + addConversion(1+TELEMETRY_SOURCE_DIST_MAX, val++); + addConversion(1+TELEMETRY_SOURCE_CELL_MIN, val++); + addConversion(1+TELEMETRY_SOURCE_VFAS_MIN, val++); + addConversion(1+TELEMETRY_SOURCE_POWER_MAX, val++); + if (IS_ARM(board) && version >= 216) { + for (int i=0; i<5; i++) + addConversion(1+TELEMETRY_SOURCE_RESERVE, val++); + } + addConversion(1+TELEMETRY_SOURCE_ACC, val++); + addConversion(1+TELEMETRY_SOURCE_GPS_TIME, val++); + } +}; + +template +class TelemetrySourceField: public ConversionField< UnsignedField > { + public: + TelemetrySourceField(unsigned int & source, BoardEnum board, unsigned int version): + ConversionField< UnsignedField >(source, &conversionTable, "Telemetry source"), + conversionTable(board, version), + source(source), + board(board), + version(version) + { + } + + protected: + TelemetrySourcesConversionTable conversionTable; + unsigned int & source; + BoardEnum board; + unsigned int version; +}; + template class SourceField: public ConversionField< UnsignedField > { public: @@ -1365,7 +1466,9 @@ class CustomFunctionsConversionTable: public ConversionTable { addConversion(FuncTrainerTHR, val++); addConversion(FuncTrainerAIL, val++); } + addConversion(FuncInstantTrim, val++); + if (version >= 216) { addConversion(FuncReset, val++); if (IS_ARM(board)) { @@ -1376,14 +1479,21 @@ class CustomFunctionsConversionTable: public ConversionTable { for (int i=0; i= 213 && !IS_ARM(board)) addConversion(FuncPlayBoth, val++); addConversion(FuncPlayValue, val++); if (IS_ARM(board)) { + addConversion(FuncReserve, val++); + addConversion(FuncReserve, val++); + addConversion(FuncReserve, val++); addConversion(FuncBackgroundMusic, val++); addConversion(FuncBackgroundMusicPause, val++); } @@ -1822,15 +1932,15 @@ class FrskyScreenField: public DataField { version(version) { for (int i=0; i<4; i++) { - bars.Append(new UnsignedField<8>(_screen.body.bars[i].source)); - bars.Append(new UnsignedField<8>(_screen.body.bars[i].barMin)); - bars.Append(new UnsignedField<8>(_screen.body.bars[i].barMax)); + bars.Append(new TelemetrySourceField<8>(screen.body.bars[i].source, board, version)); + bars.Append(new UnsignedField<8>(screen.body.bars[i].barMin)); + bars.Append(new UnsignedField<8>(screen.body.bars[i].barMax)); } int columns=(IS_TARANIS(board) ? 3:2); for (int i=0; i<4; i++) { for (int j=0; j(_screen.body.lines[i].source[j])); + numbers.Append(new TelemetrySourceField<8>(screen.body.lines[i].source[j], board, version)); } } if (!IS_TARANIS(board)) { @@ -1842,23 +1952,6 @@ class FrskyScreenField: public DataField { virtual void ExportBits(QBitArray & output) { - _screen = screen; - - bool afterrelease21March2013 = IS_AFTER_RELEASE_21_MARCH_2013(board, version); - if (!afterrelease21March2013) { - for (int i=0; i<4; i++) { - if (_screen.body.bars[i].source > 0) - _screen.body.bars[i].source--; - } - int columns=(IS_TARANIS(board) ? 3:2); - for (int i=0; i<4; i++) { - for (int j=0; j 0) - _screen.body.lines[i].source[j]--; - } - } - } - if (screen.type == 0) numbers.ExportBits(output); else @@ -1867,34 +1960,14 @@ class FrskyScreenField: public DataField { virtual void ImportBits(QBitArray & input) { - _screen = screen; - - bool afterrelease21March2013 = IS_AFTER_RELEASE_21_MARCH_2013(board, version); - // NOTA: screen.type should have been imported first! if (screen.type == 0) { numbers.ImportBits(input); - if (!afterrelease21March2013) { - int columns=(IS_TARANIS(board) ? 3:2); - for (int i=0; i<4; i++) { - for (int j=0; j 0) - _screen.body.lines[i].source[j]++; - } - } - } } else { bars.ImportBits(input); - if (!afterrelease21March2013) { - for (int i=0; i<4; i++) { - if (_screen.body.bars[i].source > 0) - _screen.body.bars[i].source++; - } - } } - screen = _screen; } virtual unsigned int size() @@ -1908,7 +1981,6 @@ class FrskyScreenField: public DataField { protected: FrSkyScreenData & screen; - FrSkyScreenData _screen; BoardEnum board; unsigned int version; StructField bars; diff --git a/companion/src/helpers.cpp b/companion/src/helpers.cpp index 17d908ecc..5c9ca7fbd 100644 --- a/companion/src/helpers.cpp +++ b/companion/src/helpers.cpp @@ -102,7 +102,7 @@ void populateCustomScreenFieldCB(QComboBox *b, unsigned int value, bool last=fal b->addItem(RawSource(SOURCE_TYPE_NONE, 0).toString()); - for (unsigned int i = 0; i < (last ? TELEMETRY_SOURCES_DISPLAY_COUNT : TELEMETRY_SOURCES_STATUS_COUNT); i++) { + for (unsigned int i = 0; i <= (last ? TELEMETRY_SOURCES_DISPLAY_COUNT : TELEMETRY_SOURCES_STATUS_COUNT); i++) { b->addItem(RawSource(SOURCE_TYPE_TELEMETRY, i).toString()); if (!(i>=sizeof(telem_hub)/sizeof(int) || telem_hub[i]==0 || ((telem_hub[i]>=hubproto) && hubproto!=0))) { QModelIndex index = b->model()->index(i, 0); @@ -599,7 +599,7 @@ void populateSourceCB(QComboBox *b, const RawSource & source, const ModelData & if (item == source) b->setCurrentIndex(b->count()-1); } - for (int i=0; igetBoard()); i++) { item = RawSource(SOURCE_TYPE_PPM, i); b->addItem(item.toString(), item.toValue()); if (item == source) b->setCurrentIndex(b->count()-1); diff --git a/radio/src/.gitignore b/radio/src/.gitignore index 9bff2bce9..af2b25b2f 100644 --- a/radio/src/.gitignore +++ b/radio/src/.gitignore @@ -15,3 +15,4 @@ /TEMPLATES /SOUNDS /LOGS +/allsrc.cpp diff --git a/radio/src/audio_arm.cpp b/radio/src/audio_arm.cpp index 9f5b07289..96a8514d4 100644 --- a/radio/src/audio_arm.cpp +++ b/radio/src/audio_arm.cpp @@ -277,7 +277,7 @@ void referenceSystemAudioFiles() if (!strcmp(filename, fn)) { availableAudioFiles |= MASK_SYSTEM_AUDIO_FILE(i); break; - } + } } } } @@ -303,7 +303,7 @@ void getPhaseAudioFile(char * filename, int index, unsigned int event) char * tmp = strcat_phasename(str, index); strcpy(tmp, suffixes[event]); strcat(tmp, SOUNDS_EXT); - } +} void getSwitchAudioFile(char * filename, int index) { @@ -314,7 +314,7 @@ void getSwitchAudioFile(char * filename, int index) if (*str == '\300') { strcpy(str, "-up"); str += 3; -} + } else if (*str == '-') { strcpy(str, "-mid"); str += 4; @@ -376,7 +376,7 @@ void referenceModelAudioFiles() sdAvailablePhaseAudioFiles |= MASK_PHASE_AUDIO_FILE(i, event); found = true; break; - } + } } } @@ -386,8 +386,8 @@ void referenceModelAudioFiles() if (!strcmp(filename, fn)) { sdAvailableSwitchAudioFiles |= MASK_SWITCH_AUDIO_FILE(i); found = true; - } -} + } + } // Logical Switches Audio Files -[on|off].wav for (int i=0; idata; @@ -639,6 +644,7 @@ int ToneContext::mixBuffer(AudioBuffer *buffer, int volume, unsigned int fade) double toneIdx = state.idx; if (fragment.tone.reset) { + fragment.tone.reset = 0; state.duration = 0; state.pause = 0; } diff --git a/radio/src/eeprom_conversions.cpp b/radio/src/eeprom_conversions.cpp index 32ee65bed..a4d79de2a 100644 --- a/radio/src/eeprom_conversions.cpp +++ b/radio/src/eeprom_conversions.cpp @@ -235,6 +235,33 @@ void ConvertGeneralSettings_215_to_216(EEGeneral &settings) settings.chkSum = evalChkSum(); } +int ConvertTelemetrySource_215_to_216(int source) +{ + // TELEM_RSSI_TX added + if (source >= TELEM_RSSI_TX) + source += 1; + // RxBatt added + if (source >= TELEM_RX_VOLTAGE) + source += 1; + // A3 and A4 added + if (source >= TELEM_A3) + source += 2; + // ASpd and dTE added + 5 reserve + if (source >= TELEM_ASPD) + source += 7; + // A3 and A4 MIN added + if (source >= TELEM_MIN_A3) + source += 2; + // Cel- Cels- and Vfas- added + if (source >= TELEM_MIN_CELL) + source += 3; + // 5 reserve added + if (source >= TELEM_RESERVE6) + source += 5; + + return source; +} + #if defined(PCBTARANIS) int ConvertSource_215_to_216(int source, bool insertZero=false) { @@ -243,15 +270,15 @@ int ConvertSource_215_to_216(int source, bool insertZero=false) // Virtual Inputs and Lua Outputs added if (source > 0) source += MAX_INPUTS + MAX_SCRIPTS*MAX_SCRIPT_OUTPUTS; + // PPM9-PPM16 added + if (source > MIXSRC_FIRST_PPM+7) + source += 8; // 4 GVARS added if (source > MIXSRC_GVAR1+4) source += 4; - // ASpd and dTE added - if (source >= MIXSRC_FIRST_TELEM-1+TELEM_ASPD) - source += 2; - // Cel- and Vfas- added - if (source >= MIXSRC_FIRST_TELEM-1+TELEM_MIN_CELL) - source += 2; + // Telemetry conversions + if (source >= MIXSRC_FIRST_TELEM) + source = MIXSRC_FIRST_TELEM + ConvertTelemetrySource_215_to_216(source-MIXSRC_FIRST_TELEM+1) - 1; return source; } @@ -273,12 +300,10 @@ int ConvertSource_215_to_216(int source, bool insertZero=false) // 4 GVARS added if (source > MIXSRC_GVAR1+4) source += 4; - // ASpd and dTE added - if (source >= MIXSRC_FIRST_TELEM-1+TELEM_ASPD) - source += 2; - // Cel- and Vfas- added - if (source >= MIXSRC_FIRST_TELEM-1+TELEM_MIN_CELL) - source += 2; + // Telemetry conversions + if (source >= MIXSRC_FIRST_TELEM) + source = MIXSRC_FIRST_TELEM + ConvertTelemetrySource_215_to_216(source-MIXSRC_FIRST_TELEM+1) - 1; + return source; } @@ -637,6 +662,24 @@ void ConvertModel_215_to_216(ModelData &model) } memcpy(&g_model.frsky, &oldModel.frsky, sizeof(oldModel.frsky)); + for (int i=0; i<3; i++) { + if (g_model.frsky.screensType & (1<0) ? BLINK|INVERS : INVERS) : 0); switch(i) { case ITEM_HELI_SWASHTYPE: - g_model.swashR.type = selectMenuItem(HELI_PARAM_OFS, y, STR_SWASHTYPE, STR_VSWASHTYPE, g_model.swashR.type, 0, SWASH_TYPE_NUM, attr, event); + g_model.swashR.type = selectMenuItem(HELI_PARAM_OFS, y, STR_SWASHTYPE, STR_VSWASHTYPE, g_model.swashR.type, 0, SWASH_TYPE_MAX, attr, event); break; case ITEM_HELI_COLLECTIVE: @@ -5754,7 +5754,7 @@ void menuModelTelemetry(uint8_t event) if (attr && (s_editMode>0 || p1valdiff)) { switch (m_posHorz) { case 0: - bar.source = checkIncDecModel(event, barSource, 0, TELEM_DISPLAY_MAX); + bar.source = CHECK_INCDEC_MODELVAR_ZERO_CHECK(event, barSource, TELEM_DISPLAY_MAX, isTelemetrySourceAvailable); if (checkIncDec_Ret) { bar.barMin = 0; bar.barMax = 255 - maxBarTelemValue(bar.source); @@ -5782,7 +5782,7 @@ void menuModelTelemetry(uint8_t event) #endif lcd_putsiAtt(pos[c], y, STR_VTELEMCHNS, value, cellAttr); if (cellAttr && (s_editMode>0 || p1valdiff)) { - CHECK_INCDEC_MODELVAR_ZERO(event, value, (lineIndex==3 && c==0) ? TELEM_STATUS_MAX : TELEM_DISPLAY_MAX); + CHECK_INCDEC_MODELVAR_ZERO_CHECK(event, value, (lineIndex==3 && c==0) ? TELEM_STATUS_MAX : TELEM_DISPLAY_MAX, isTelemetrySourceAvailable); } } if (attr && m_posHorz == NUM_LINE_ITEMS) { diff --git a/radio/src/gui/menus.cpp b/radio/src/gui/menus.cpp index b062f8751..997f6e984 100644 --- a/radio/src/gui/menus.cpp +++ b/radio/src/gui/menus.cpp @@ -113,7 +113,7 @@ int16_t checkIncDec(uint8_t event, int16_t val, int16_t i_min, int16_t i_max, ui #endif { int16_t newval = val; - + #if defined(DBLKEYS) uint8_t in = KEYS_PRESSED(); if (EVT_KEY_MASK(event)) { @@ -1333,7 +1333,7 @@ void drawStatusLine() #endif #if defined(CPUARM) -bool isSourceAvailable(int16_t source) +bool isSourceAvailable(int source) { #if defined(PCBTARANIS) if (source>=MIXSRC_FIRST_INPUT && source<=MIXSRC_LAST_INPUT) { @@ -1376,10 +1376,35 @@ bool isSourceAvailable(int16_t source) return false; #endif + if (source>=MIXSRC_FIRST_TELEM && source<=MIXSRC_LAST_TELEM) + return isTelemetrySourceAvailable(source-MIXSRC_FIRST_TELEM+1); + return true; } -bool isInputSourceAvailable(int16_t source) +bool isTelemetrySourceAvailable(int source) +{ + if (source == TELEM_RX_VOLTAGE || source == TELEM_A3 || source == TELEM_A4 || source == TELEM_MIN_A3 || source == TELEM_MIN_A4) + return false; + +#if defined(PCBTARANIS) + if (source == TELEM_RSSI_TX) + return false; +#endif + + if (source >= TELEM_RESERVE1 && source <= TELEM_RESERVE5) + return false; + + if (source >= TELEM_RESERVE6 && source <= TELEM_RESERVE10) + return false; + + if (source == TELEM_DTE) + return false; + + return true; +} + +bool isInputSourceAvailable(int source) { if (source>=MIXSRC_Rud && source<=MIXSRC_MAX) return true; @@ -1390,13 +1415,16 @@ bool isInputSourceAvailable(int16_t source) if (source>=MIXSRC_FIRST_CH && source<=MIXSRC_LAST_CH) return true; - if (source>=MIXSRC_FIRST_TELEM && source<=MIXSRC_LAST_TELEM) + if (source>=MIXSRC_FIRST_PPM && source<=MIXSRC_LAST_PPM) return true; + if (source>=MIXSRC_FIRST_TELEM && source<=MIXSRC_LAST_TELEM) + return isTelemetrySourceAvailable(source-MIXSRC_FIRST_TELEM+1); + return false; } -bool isSwitchAvailableInLogicalSwitches(int16_t swtch) +bool isSwitchAvailableInLogicalSwitches(int swtch) { if (swtch < 0) { if (swtch <= -SWSRC_ON) @@ -1425,7 +1453,7 @@ bool isSwitchAvailableInLogicalSwitches(int16_t swtch) return true; } -bool isSwitchAvailable(int16_t swtch) +bool isSwitchAvailable(int swtch) { if (!isSwitchAvailableInLogicalSwitches(swtch)) { return false; @@ -1439,13 +1467,12 @@ bool isSwitchAvailable(int16_t swtch) return true; } -// Not available yet, will be needed if we implement the Range function later... -bool isLogicalSwitchFunctionAvailable(int16_t function) +bool isLogicalSwitchFunctionAvailable(int function) { return function != LS_FUNC_RANGE; } -bool isAssignableFunctionAvailable(int16_t function) +bool isAssignableFunctionAvailable(int function) { switch (function) { @@ -1459,6 +1486,14 @@ bool isAssignableFunctionAvailable(int16_t function) return false; #endif + case FUNC_PLAY_DIFF: + case FUNC_RESERVE1: + case FUNC_RESERVE2: + case FUNC_RESERVE3: + case FUNC_RESERVE4: + case FUNC_RESERVE5: + return false; + default: return true; } diff --git a/radio/src/gui/menus.h b/radio/src/gui/menus.h index fca197017..3ee37c250 100644 --- a/radio/src/gui/menus.h +++ b/radio/src/gui/menus.h @@ -171,7 +171,7 @@ extern int8_t s_editMode; // global editmode #define HIDDEN_ROW ((uint8_t)-2) #if defined(CPUARM) -typedef bool (*IsValueAvailable)(int16_t); +typedef bool (*IsValueAvailable)(int); int16_t checkIncDec(uint8_t event, int16_t i_pval, int16_t i_min, int16_t i_max, uint8_t i_flags=0, IsValueAvailable isValueAvailable=NULL); #else int16_t checkIncDec(uint8_t event, int16_t i_pval, int16_t i_min, int16_t i_max, uint8_t i_flags=0); @@ -194,10 +194,18 @@ int8_t checkIncDecGen(uint8_t event, int8_t i_val, int8_t i_min, int8_t i_max); var = checkIncDecModelZero(event,var,max) #if defined(CPUARM) - bool isLogicalSwitchFunctionAvailable(int16_t function); - bool isAssignableFunctionAvailable(int16_t function); - bool isSwitchAvailable(int16_t swtch); - bool isSwitchAvailableInLogicalSwitches(int16_t swtch); + #define CHECK_INCDEC_MODELVAR_ZERO_CHECK(event, var, max, check) \ + var = checkIncDec(event, var, 0, max, EE_MODEL, check) +#else + #define CHECK_INCDEC_MODELVAR_ZERO_CHECK(event, var, max, check) \ + CHECK_INCDEC_MODELVAR_ZERO(event, var, max) +#endif + +#if defined(CPUARM) + bool isLogicalSwitchFunctionAvailable(int function); + bool isAssignableFunctionAvailable(int function); + bool isSwitchAvailable(int swtch); + bool isSwitchAvailableInLogicalSwitches(int swtch); #define AUTOSWITCH_ENTER_LONG() (attr && event==EVT_KEY_LONG(KEY_ENTER)) #define CHECK_INCDEC_MODELSWITCH(event, var, min, max) \ var = checkIncDec(event,var,min,max,EE_MODEL|INCDEC_SWITCH|NO_INCDEC_MARKS, isSwitchAvailable) @@ -211,8 +219,9 @@ int8_t checkIncDecGen(uint8_t event, int8_t i_val, int8_t i_min, int8_t i_max); #endif #if defined(CPUARM) - bool isSourceAvailable(int16_t source); - bool isInputSourceAvailable(int16_t source); + bool isSourceAvailable(int source); + bool isTelemetrySourceAvailable(int source); + bool isInputSourceAvailable(int source); #define CHECK_INCDEC_MODELSOURCE(event, var, min, max) \ var = checkIncDec(event,var,min,max,EE_MODEL|INCDEC_SOURCE|NO_INCDEC_MARKS, isSourceAvailable) #elif defined(AUTOSOURCE) diff --git a/radio/src/lcd.cpp b/radio/src/lcd.cpp index 32087bde7..0bfd78820 100644 --- a/radio/src/lcd.cpp +++ b/radio/src/lcd.cpp @@ -1244,6 +1244,7 @@ void putsTelemetryChannel(xcoord_t x, uint8_t y, uint8_t channel, lcdint_t val, case TELEM_TX_VOLTAGE-1: case TELEM_VFAS-1: case TELEM_CELLS_SUM-1: + case TELEM_MIN_CELLS_SUM-1: case TELEM_MIN_VFAS-1: putsTelemetryValue(x, y, val, UNIT_VOLTS, att|PREC1); break; @@ -1270,6 +1271,9 @@ void putsTelemetryChannel(xcoord_t x, uint8_t y, uint8_t channel, lcdint_t val, putsTelemetryValue(x, y, val, UNIT_RAW, att|PREC2); break; +#if defined(CPUARM) + case TELEM_SWR-1: +#endif case TELEM_RSSI_TX-1: case TELEM_RSSI_RX-1: putsTelemetryValue(x, y, val, UNIT_RAW, att); diff --git a/radio/src/myeeprom.h b/radio/src/myeeprom.h index 35a07a447..881d5a5c4 100644 --- a/radio/src/myeeprom.h +++ b/radio/src/myeeprom.h @@ -77,6 +77,7 @@ #define NUM_CFN 64 // number of functions assigned to switches #define MAX_SCRIPTS 7 #define MAX_INPUTS 32 + #define NUM_PPM 16 #elif defined(CPUARM) #define MAX_MODELS 60 #define NUM_CHNOUT 32 // number of real output channels CH1-CH32 @@ -85,6 +86,7 @@ #define MAX_EXPOS 32 #define NUM_CSW 32 // number of custom switches #define NUM_CFN 64 // number of functions assigned to switches + #define NUM_PPM 16 #elif defined(CPUM2560) || defined(CPUM2561) #define MAX_MODELS 30 #define NUM_CHNOUT 16 // number of real output channels CH1-CH16 @@ -93,6 +95,7 @@ #define MAX_EXPOS 16 #define NUM_CSW 15 // number of custom switches #define NUM_CFN 24 // number of functions assigned to switches + #define NUM_PPM 8 #elif defined(CPUM128) #define MAX_MODELS 30 #define NUM_CHNOUT 16 // number of real output channels CH1-CH16 @@ -101,6 +104,7 @@ #define MAX_EXPOS 14 #define NUM_CSW 15 // number of custom switches #define NUM_CFN 24 // number of functions assigned to switches + #define NUM_PPM 8 #else #define MAX_MODELS 16 #define NUM_CHNOUT 16 // number of real output channels CH1-CH16 @@ -109,9 +113,12 @@ #define MAX_EXPOS 14 #define NUM_CSW 12 // number of custom switches #define NUM_CFN 16 // number of functions assigned to switches + #define NUM_PPM 8 #endif #define MAX_TIMERS 2 +#define NUM_CYC 3 +#define NUM_CAL_PPM 4 #if defined(PCBTARANIS) enum CurveType { @@ -755,6 +762,9 @@ enum Functions { FUNC_ADJUST_GVAR, #if defined(CPUARM) FUNC_VOLUME, + FUNC_RESERVE1, + FUNC_RESERVE2, + FUNC_RESERVE3, #endif // then the other functions @@ -766,6 +776,9 @@ enum Functions { #endif FUNC_PLAY_VALUE, #if defined(CPUARM) + FUNC_PLAY_DIFF, + FUNC_RESERVE4, + FUNC_RESERVE5, FUNC_BACKGND_MUSIC, FUNC_BACKGND_MUSIC_PAUSE, #endif @@ -955,10 +968,20 @@ enum TelemetrySource { TELEM_TX_VOLTAGE, TELEM_TM1, TELEM_TM2, +#if defined(CPUARM) + TELEM_SWR, +#endif TELEM_RSSI_TX, TELEM_RSSI_RX, +#if defined(CPUARM) + TELEM_RX_VOLTAGE, +#endif TELEM_A1, TELEM_A2, +#if defined(CPUARM) + TELEM_A3, + TELEM_A4, +#endif TELEM_ALT, TELEM_RPM, TELEM_FUEL, @@ -980,8 +1003,19 @@ enum TelemetrySource { TELEM_VSPD, TELEM_ASPD, TELEM_DTE, +#if defined(CPUARM) + TELEM_RESERVE1, + TELEM_RESERVE2, + TELEM_RESERVE3, + TELEM_RESERVE4, + TELEM_RESERVE5, +#endif TELEM_MIN_A1, TELEM_MIN_A2, +#if defined(CPUARM) + TELEM_MIN_A3, + TELEM_MIN_A4, +#endif TELEM_MIN_ALT, TELEM_MAX_ALT, TELEM_MAX_RPM, @@ -990,9 +1024,17 @@ enum TelemetrySource { TELEM_MAX_SPEED, TELEM_MAX_DIST, TELEM_MIN_CELL, + TELEM_MIN_CELLS_SUM, TELEM_MIN_VFAS, TELEM_MAX_CURRENT, TELEM_MAX_POWER, +#if defined(CPUARM) + TELEM_RESERVE6, + TELEM_RESERVE7, + TELEM_RESERVE8, + TELEM_RESERVE9, + TELEM_RESERVE10, +#endif TELEM_ACC, TELEM_GPS_TIME, TELEM_CSW_MAX = TELEM_MAX_POWER, @@ -1003,12 +1045,7 @@ enum TelemetrySource { TELEM_DISPLAY_MAX = TELEM_TM2, // because used also in PlayValue #endif TELEM_STATUS_MAX = TELEM_GPS_TIME, -#if defined(FRSKY_SPORT) - TELEM_SWR = TELEM_RSSI_TX, - TELEM_FIRST_STREAMED_VALUE = TELEM_RSSI_RX, -#else TELEM_FIRST_STREAMED_VALUE = TELEM_RSSI_TX, -#endif }; enum VarioSource { @@ -1127,6 +1164,14 @@ PACK(typedef struct t_MavlinkData { }) MavlinkData; #endif +enum SwashType { + SWASH_TYPE_120, + SWASH_TYPE_120X, + SWASH_TYPE_140, + SWASH_TYPE_90, + SWASH_TYPE_MAX = SWASH_TYPE_90 +}; + PACK(typedef struct t_SwashRingData { // Swash Ring data uint8_t invertELE:1; uint8_t invertAIL:1; @@ -1398,7 +1443,7 @@ enum MixSources { MIXSRC_LAST_CSW = MIXSRC_FIRST_CSW+NUM_CSW-1, MIXSRC_FIRST_PPM, - MIXSRC_LAST_PPM = MIXSRC_FIRST_PPM + 7, + MIXSRC_LAST_PPM = MIXSRC_FIRST_PPM+NUM_PPM-1, MIXSRC_FIRST_CH, MIXSRC_CH1 = MIXSRC_FIRST_CH, diff --git a/radio/src/opentx.cpp b/radio/src/opentx.cpp index 1d69e1a6a..e41621775 100644 --- a/radio/src/opentx.cpp +++ b/radio/src/opentx.cpp @@ -1269,6 +1269,9 @@ getvalue_t getValue(uint8_t i) else if (i==MIXSRC_FIRST_TELEM-1+TELEM_TX_VOLTAGE) return g_vbat100mV; else if (i<=MIXSRC_FIRST_TELEM-1+TELEM_TM2) return timersStates[i-MIXSRC_FIRST_TELEM+1-TELEM_TM1].val; #if defined(FRSKY) +#if defined(CPUARM) + else if (i==MIXSRC_FIRST_TELEM-1+TELEM_SWR) return frskyData.swr.value; +#endif else if (i==MIXSRC_FIRST_TELEM-1+TELEM_RSSI_TX) return frskyData.rssi[1].value; else if (i==MIXSRC_FIRST_TELEM-1+TELEM_RSSI_RX) return frskyData.rssi[0].value; else if (i<=MIXSRC_FIRST_TELEM-1+TELEM_A2) return frskyData.analog[i-MIXSRC_FIRST_TELEM+1-TELEM_A1].value; @@ -2001,6 +2004,9 @@ ls_telemetry_value_t minTelemValue(uint8_t channel) { switch (channel) { case TELEM_FUEL: +#if defined(CPUARM) + case TELEM_SWR: +#endif case TELEM_RSSI_TX: case TELEM_RSSI_RX: return 0; @@ -2020,6 +2026,9 @@ ls_telemetry_value_t maxTelemValue(uint8_t channel) { switch (channel) { case TELEM_FUEL: +#if defined(CPUARM) + case TELEM_SWR: +#endif case TELEM_RSSI_TX: case TELEM_RSSI_RX: return 100; @@ -3213,13 +3222,13 @@ PLAY_FUNCTION(playValue, uint8_t idx) case MIXSRC_FIRST_TELEM+TELEM_TM2-1: PLAY_DURATION(val); break; -#if defined(FRSKY) - case MIXSRC_FIRST_TELEM+TELEM_RSSI_TX-1: -#if defined(PCBTARANIS) - // On Taranis RSSI_TX is used for SWR +#if defined(CPUARM) + case MIXSRC_FIRST_TELEM+TELEM_SWR-1: PLAY_NUMBER(val, 0, 0); break; #endif +#if defined(FRSKY) + case MIXSRC_FIRST_TELEM+TELEM_RSSI_TX-1: case MIXSRC_FIRST_TELEM+TELEM_RSSI_RX-1: PLAY_NUMBER(val, 1+UNIT_DBM, 0); break; @@ -3250,6 +3259,7 @@ PLAY_FUNCTION(playValue, uint8_t idx) case MIXSRC_FIRST_TELEM+TELEM_VFAS-1: case MIXSRC_FIRST_TELEM+TELEM_CELLS_SUM-1: + case MIXSRC_FIRST_TELEM+TELEM_MIN_CELLS_SUM-1: case MIXSRC_FIRST_TELEM+TELEM_MIN_VFAS-1: PLAY_NUMBER(val, 1+UNIT_VOLTS, PREC1); break; @@ -4871,10 +4881,10 @@ void perMain() #endif } } -} //endfunc void perMain() +} -int16_t g_ppmIns[8]; -uint8_t ppmInState = 0; //0=unsync 1..8= wait for value i-1 +int16_t g_ppmIns[NUM_PPM]; +uint8_t ppmInState = 0; // 0=unsync 1..8= wait for value i-1 #if !defined(SIMU) && !defined(CPUARM) diff --git a/radio/src/opentx.h b/radio/src/opentx.h index 4b8da9dbe..0ee4b3bf1 100644 --- a/radio/src/opentx.h +++ b/radio/src/opentx.h @@ -622,16 +622,6 @@ enum BaseCurves { CURVE_BASE }; -#define SWASH_TYPE_120 1 -#define SWASH_TYPE_120X 2 -#define SWASH_TYPE_140 3 -#define SWASH_TYPE_90 4 -#define SWASH_TYPE_NUM 4 - -#define NUM_CYC 3 -#define NUM_CAL_PPM 4 -#define NUM_PPM 8 - #define THRCHK_DEADBAND 16 #if defined(FSPLASH) || defined(XSPLASH) @@ -1205,7 +1195,7 @@ extern uint8_t g_beepCnt; extern uint8_t g_beepVal[5]; extern uint8_t ppmInState; //0=unsync 1..8= wait for value i-1 -extern int16_t g_ppmIns[8]; +extern int16_t g_ppmIns[NUM_PPM]; extern int32_t chans[NUM_CHNOUT]; extern int16_t ex_chans[NUM_CHNOUT]; // Outputs (before LIMITS) of the last perMain extern int16_t channelOutputs[NUM_CHNOUT]; diff --git a/radio/src/targets/sky9x/board_sky9x.cpp b/radio/src/targets/sky9x/board_sky9x.cpp index a2cf97855..bb01fd7e4 100644 --- a/radio/src/targets/sky9x/board_sky9x.cpp +++ b/radio/src/targets/sky9x/board_sky9x.cpp @@ -310,11 +310,11 @@ extern "C" void TC3_IRQHandler() //capture ppm in at 2MHz // G: We process g_ppmIns immediately here, to make servo movement as smooth as possible // while under trainee control - if (val>4000 && val<19000) { // G: Prioritize reset pulse. (Needed when less than 8 incoming pulses) + if (val>4000 && val<19000) { // G: Prioritize reset pulse. (Needed when less than 16 incoming pulses) ppmInState = 1; // triggered } else { - if (ppmInState && ppmInState<=8) + if (ppmInState && ppmInState<=16) { if (val>800 && val<2200) // if valid pulse-width range { diff --git a/radio/src/targets/taranis/trainer_driver.cpp b/radio/src/targets/taranis/trainer_driver.cpp index f4b4e548c..5e453d215 100644 --- a/radio/src/targets/taranis/trainer_driver.cpp +++ b/radio/src/targets/taranis/trainer_driver.cpp @@ -126,11 +126,11 @@ extern "C" void TIM3_IRQHandler() // We process g_ppmInsright here to make servo movement as smooth as possible // while under trainee control - if ((val>4000) && (val < 19000)) { // G: Prioritize reset pulse. (Needed when less than 8 incoming pulses) + if ((val>4000) && (val < 19000)) { // G: Prioritize reset pulse. (Needed when less than 16 incoming pulses) ppmInState = 1; // triggered } else { - if (ppmInState && (ppmInState<=8)) { + if (ppmInState && (ppmInState<=16)) { if ((val>800) && (val<2200)) { g_ppmIns[ppmInState++ - 1] = (int16_t)(val - 1500)*(g_eeGeneral.PPM_Multiplier+10)/10; //+-500 != 512, but close enough. } diff --git a/radio/src/telemetry/frsky.cpp b/radio/src/telemetry/frsky.cpp index 1ef552dbf..408fa43cd 100644 --- a/radio/src/telemetry/frsky.cpp +++ b/radio/src/telemetry/frsky.cpp @@ -700,6 +700,9 @@ void telemetryInterrupt10ms() voltage += frskyData.hub.cellVolts[i]; voltage /= 5; frskyData.hub.cellsSum = voltage; + if (frskyData.hub.cellsSum < frskyData.hub.minCells) { + frskyData.hub.minCells = frskyData.hub.cellsSum; + } #endif if (TELEMETRY_STREAMING()) { diff --git a/radio/src/telemetry/frsky.h b/radio/src/telemetry/frsky.h index ff223d268..c2952aa75 100644 --- a/radio/src/telemetry/frsky.h +++ b/radio/src/telemetry/frsky.h @@ -140,6 +140,7 @@ PACK(struct FrskySerialData { uint16_t maxGpsSpeed; uint16_t maxGpsDistance; int16_t minCell; + int16_t minCells; int16_t minVfas; uint16_t maxCurrent; uint16_t maxPower; @@ -187,6 +188,9 @@ PACK(struct FrskySerialData { struct FrskyData { FrskyValueWithMinMax analog[2]; FrskyValueWithMin rssi[2]; +#if defined(CPUARM) + FrskyValueWithMinMax swr; +#endif FrskySerialData hub; }; diff --git a/radio/src/telemetry/frsky_sport.cpp b/radio/src/telemetry/frsky_sport.cpp index 15dcd4ce3..8ac5a0801 100644 --- a/radio/src/telemetry/frsky_sport.cpp +++ b/radio/src/telemetry/frsky_sport.cpp @@ -199,7 +199,7 @@ void processHubPacket(uint8_t id, uint16_t value) break; case CURRENT_ID: - if (((int16_t)frskyData.hub.current + g_model.frsky.fasOffset)>0) + if ((int16_t)frskyData.hub.current > 0 && ((int16_t)frskyData.hub.current + g_model.frsky.fasOffset) > 0) frskyData.hub.current += g_model.frsky.fasOffset; else frskyData.hub.current = 0; @@ -323,7 +323,7 @@ void processSportPacket(uint8_t *packet) frskyData.rssi[0].set(SPORT_DATA_U8(packet)); } if (appId == SWR_ID) { - frskyData.rssi[1].set(SPORT_DATA_U8(packet)); + frskyData.swr.set(SPORT_DATA_U8(packet)); } else if (appId == ADC1_ID || appId == ADC2_ID) { // A1/A2 of DxR receivers @@ -573,6 +573,9 @@ void telemetryInterrupt10ms() voltage += frskyData.hub.cellVolts[i]; voltage /= 10; frskyData.hub.cellsSum = voltage; + if (frskyData.hub.cellsSum < frskyData.hub.minCells) { + frskyData.hub.minCells = frskyData.hub.cellsSum; + } #endif if (TELEMETRY_STREAMING()) { @@ -663,7 +666,7 @@ void telemetryWakeup() alarmsCheckTime = get_tmr10ms() + 100; /* next check in 1second */ if (alarmsCheckStep == 0) { - if ((IS_MODULE_XJT(0) || IS_MODULE_XJT(1)) && frskyData.rssi[1].value > 0x33) { + if ((IS_MODULE_XJT(0) || IS_MODULE_XJT(1)) && frskyData.swr.value > 0x33) { AUDIO_SWR_RED(); s_global_warning = STR_ANTENNAPROBLEM; alarmsCheckTime = get_tmr10ms() + 300; /* next check in 3seconds */ @@ -756,7 +759,7 @@ void resetTelemetry() frskyData.analog[0].set(120); frskyData.analog[1].set(240); frskyData.rssi[0].value = 75; - frskyData.rssi[1].value = 30; + frskyData.swr.value = 30; frskyData.hub.fuelLevel = 75; frskyData.hub.rpm = 12000; frskyData.hub.vfas = 100; diff --git a/radio/src/telemetry/frsky_sport.h b/radio/src/telemetry/frsky_sport.h index 80424e45d..9cdabee42 100644 --- a/radio/src/telemetry/frsky_sport.h +++ b/radio/src/telemetry/frsky_sport.h @@ -124,6 +124,7 @@ PACK(struct FrskySerialData { uint16_t maxGpsSpeed; uint16_t maxGpsDistance; int16_t minCell; + int16_t minCells; int16_t minVfas; uint16_t maxCurrent; uint16_t maxPower; @@ -151,6 +152,7 @@ PACK(struct FrskySerialData { struct FrskyData { FrskyValueWithMinMax analog[2]; FrskyValueWithMinMax rssi[2]; + FrskyValueWithMinMax swr; FrskySerialData hub; }; diff --git a/radio/src/translations/cz.h.txt b/radio/src/translations/cz.h.txt index 87e729301..fba770450 100644 --- a/radio/src/translations/cz.h.txt +++ b/radio/src/translations/cz.h.txt @@ -271,7 +271,7 @@ #define TR_RSSI_0 "Tx\0 " #define TR_RSSI_1 "Rx\0 " #endif -#define TR_VTELEMCHNS "---\0""Bat\0""Tmr1""Tmr2" TR_RSSI_0 TR_RSSI_1 "A1\0 ""A2\0 ""Alt\0""Rpm\0""Fuel""T1\0 ""T2\0 ""Spd\0""Dist""GAlt""Cell""Cels""Vfas""Curr""Cnsp""Powr""AccX""AccY""AccZ""Hdg\0""VSpd""ASpd""dTE\0""A1-\0""A2-\0""Alt-""Alt+""Rpm+""T1+\0""T2+\0""Spd+""Dst+""Cel-""Vfs-""Cur+""Pwr+""Acc\0""Time" +#define TR_VTELEMCHNS "---\0""Bat\0""Tmr1""Tmr2" TR_RSSI_0 TR_RSSI_1 "A1\0 ""A2\0 ""Alt\0""Rpm\0""Fuel""T1\0 ""T2\0 ""Spd\0""Dist""GAlt""Cell""Cels""Vfas""Curr""Cnsp""Powr""AccX""AccY""AccZ""Hdg\0""VSpd""ASpd""dTE\0""A1-\0""A2-\0""Alt-""Alt+""Rpm+""T1+\0""T2+\0""Spd+""Dst+""Cel-""Cls-""Vfs-""Cur+""Pwr+""Acc\0""Time" #define LENGTH_UNIT_IMP "ft\0" #define SPEED_UNIT_IMP "mph" diff --git a/radio/src/translations/de.h.txt b/radio/src/translations/de.h.txt index af609a1a3..b72ebcdb7 100644 --- a/radio/src/translations/de.h.txt +++ b/radio/src/translations/de.h.txt @@ -1,11 +1,8 @@ -/* +/* German checked 28.02.2014 kleine Änderungen * Authors (alphabetical order) * - Bertrand Songis * - Bernet Andre * - Helle - * - Kjell Kernen - * - Martin Hotar - * - Romolo Manfredini * * opentx is based on code named * gruvin9x by Bryan J. Rentoul: http://code.google.com/p/gruvin9x/, @@ -69,10 +66,10 @@ #define TR_TRNCHN "CH1CH2CH3CH4" #define LEN_UART3MODES "\017" -#define TR_UART3MODES "OFF\0 ""S-Port Mirror\0 ""Debug\0 " +#define TR_UART3MODES "AUS\0 ""S-Port Data Out\0""Debug\0 " #define LEN_POTTYPES "\017" -#define TR_POTTYPES "Pot\0 ""Multipos Switch" +#define TR_POTTYPES "Poti\0 ""Stufen-Schalter " #define LEN_DATETIME "\005" #define TR_DATETIME "DATE:""ZEIT:" @@ -84,7 +81,7 @@ #define TR_COUNTRYCODES TR("US""JP""EU", "Amerika""Japan\0 ""Europa\0") #define LEN_VTRIMINC TR("\006","\013") -#define TR_VTRIMINC TR("Expo ""ExFein""Fein ""Mittel""Grob ","Exponential""Extra Fein ""Fein ""Mittel ""Grob ") +#define TR_VTRIMINC TR("Expo ""ExFein""Fein ""Mittel""Grob ","Exponential""Extra Fein ""Fein ""Mittel ""Grob ") #define LEN_VBEEPCOUNTDOWN "\006" #define TR_VBEEPCOUNTDOWN "Kein\0 Pieps\0Stimme" @@ -148,7 +145,7 @@ #define TR_VMLTPX2 "+=""*="":=" #define LEN_VMIXTRIMS "\003" -#define TR_VMIXTRIMS "AUS""EIN""Sei""H\203e""Gas""Que" //Mixer Trim Werte +#define TR_VMIXTRIMS "AUS""EIN""Sei""Höh""Gas""Que" //Mixer Trim Werte #if defined(PCBTARANIS) #define TR_CSWTIMER "Timer" @@ -168,9 +165,9 @@ #endif #if defined(CPUARM) - #define TR_CSWEQUAL "a=x\0 " +#define TR_CSWEQUAL "a=x\0 " #else - #define TR_CSWEQUAL +#define TR_CSWEQUAL #endif #define LEN_VCSWFUNC "\005" @@ -189,7 +186,7 @@ #endif #if defined(AUDIO) - #define TR_SOUND "Spiel T\203ne" + #define TR_SOUND "Spiel Töne" #else #define TR_SOUND "Spiel\0 " #endif @@ -207,14 +204,14 @@ #define TR_PLAY_TRACK "Sag Text\0 " #endif #define TR_PLAY_BOTH "Sag Beide " - #define TR_PLAY_VALUE "Sag Wert\0 " + #define TR_PLAY_VALUE TR("Sag Wert\0 ", "Sag Wert ") #else #define TR_PLAY_TRACK "[Sag Text]" #define TR_PLAY_BOTH "[SagBeide]" #define TR_PLAY_VALUE "[Sag Wert]" #endif -#define TR_CFN_BG_MUSIC "MusikStart""MusikPause" +#define TR_CFN_BG_MUSIC "StartMusik""Stop Musik" #if defined(SDCARD) #define TR_SDCLOGS "SD Aufz.\0 " @@ -223,9 +220,9 @@ #endif #ifdef GVARS - #define TR_ADJUST_GVAR "\200ndere \0 " + #define TR_ADJUST_GVAR "Ändere \0 " #else - #define TR_ADJUST_GVAR "[AdjustGV]" + #define TR_ADJUST_GVAR "[AdjustGV]" #endif #ifdef DEBUG @@ -234,12 +231,14 @@ #define TR_CFN_TEST #endif +#define TR_CFN_RESERVE "[Reserve]\0" + #if defined(CPUARM) - #define TR_VFSWFUNC "Sicher\0 ""Lehrer \0 ""Inst. Trim""R\205cksetz.\0""Set \0 " TR_ADJUST_GVAR "Lautst\201rke" TR_SOUND TR_PLAY_TRACK TR_PLAY_VALUE TR_CFN_BG_MUSIC TR_VVARIO TR_HAPTIC TR_SDCLOGS "LCD Licht\0" TR_CFN_TEST + #define TR_VFSWFUNC "Sicher\0 ""Lehrer \0 ""Inst. Trim""Rücksetz.\0""Setze \0 " TR_ADJUST_GVAR "Lautstr.\0 " TR_CFN_RESERVE TR_CFN_RESERVE TR_CFN_RESERVE TR_SOUND TR_PLAY_TRACK TR_PLAY_VALUE TR_CFN_RESERVE TR_CFN_RESERVE TR_CFN_RESERVE TR_CFN_BG_MUSIC TR_VVARIO TR_HAPTIC TR_SDCLOGS "LCD Licht\0" TR_CFN_TEST #elif defined(PCBGRUVIN9X) - #define TR_VFSWFUNC "Sicher\0 ""Lehrer \0 ""Inst. Trim""R\205cksetz.\0" TR_ADJUST_GVAR TR_SOUND TR_PLAY_TRACK TR_PLAY_BOTH TR_PLAY_VALUE TR_VVARIO TR_HAPTIC TR_SDCLOGS "LCD Licht\0" TR_CFN_TEST + #define TR_VFSWFUNC "Sicher\0 ""Lehrer \0 ""Inst. Trim""Rücksetz.\0" TR_ADJUST_GVAR TR_SOUND TR_PLAY_TRACK TR_PLAY_BOTH TR_PLAY_VALUE TR_VVARIO TR_HAPTIC TR_SDCLOGS "LCD Licht\0" TR_CFN_TEST #else - #define TR_VFSWFUNC "Sicher\0 ""Lehrer \0 ""Inst. Trim""R\205cksetz.\0" TR_ADJUST_GVAR TR_SOUND TR_PLAY_TRACK TR_PLAY_BOTH TR_PLAY_VALUE TR_VVARIO TR_HAPTIC "LCD Licht\0" TR_CFN_TEST + #define TR_VFSWFUNC "Sicher\0 ""Lehrer \0 ""Inst. Trim""Rücksetz.\0" TR_ADJUST_GVAR TR_SOUND TR_PLAY_TRACK TR_PLAY_BOTH TR_PLAY_VALUE TR_VVARIO TR_HAPTIC "LCD Licht\0" TR_CFN_TEST #endif #define LEN_VFSWRESET TR("\004", "\011") @@ -251,9 +250,9 @@ #endif #if ROTARY_ENCODERS == 2 - #define TR_FSW_RESET_ROTENC TR("REa\0""REb\0", "RotEnc A\0""RotEnc B\0") + #define TR_FSW_RESET_ROTENC TR("DGa\0""DGb\0", "DrehGb A\0""DrehGb B\0") #elif ROTARY_ENCODERS == 1 - #define TR_FSW_RESET_ROTENC TR("R.E.", "RotEnc\0 ") + #define TR_FSW_RESET_ROTENC TR("D.G.", "DrehGb\0 ") #else #define TR_FSW_RESET_ROTENC #endif @@ -264,25 +263,28 @@ #define TR_FUNCSOUNDS TR("Bp1\0""Bp2\0""Bp3\0""Wrn1""Wrn2""Chee""Rata""Tick""Sirn""Ring""SciF""Robt""Chrp""Tada""Crck""Alrm", "Piep1\0""Piep2\0""Piep3\0""Warn1 ""Warn2 ""Cheep ""Ratata""Tick ""Siren ""Ring ""SciFi ""Robot ""Chirp ""Tada ""Crickt""AlmClk") #define LEN_VTELEMCHNS "\004" -#if defined(PCBTARANIS) - #define TR_RSSI_0 "SWR\0" - #define TR_RSSI_1 "RSSI" -#else - #define TR_RSSI_0 "Tx\0 " - #define TR_RSSI_1 "Rx\0 " -#endif -#define TR_VTELEMCHNS "---\0""Batt""Uhr1""Uhr2" TR_RSSI_0 TR_RSSI_1 "A1\0 ""A2\0 ""H\203he""Umdr""Fuel""T1\0 ""T2\0 ""Gesc""Dist""GH\203h""Zell""Zels""Vfas""Strm""Verb""Leis""BesX""BesY""BesZ""Rich""VGes""ASpd""dTE\0""A1-\0""A2-\0""H\203h-""H\203h+""Umd+""T1+\0""T2+\0""Ges+""Dst+""Cel-""Vfs-""Str+""Pwr+""Besc""Zeit" - -#define LENGTH_UNIT_IMP "ft\0" -#define SPEED_UNIT_IMP "mph" -#define LENGTH_UNIT_METR "m\0 " -#define SPEED_UNIT_METR "kmh" #if defined(CPUARM) - #define LEN_VUNITSSYSTEM TR("\006", "\010") - #define TR_VUNITSSYSTEM TR("Metrik""Imper.", "Metrisch\0 ""Imperial") - #define LEN_VTELEMUNIT_METR "\003" - #define TR_VTELEMUNIT_METR "V\0 ""A\0 ""m/s""-\0 ""kmh""m\0 ""@\0 ""%\0 ""mA\0""mAh""W\0 " + #define TR_TELEM_RESERVE "[--]" + #define TR_SWR "SWR\0" + #define TR_RX_BATT "RxBt" + #define TR_A3_A4 "A3\0 ""A4\0 " + #define TR_A3_A4_MIN "A3-\0""A4-\0" +#else + #define TR_TELEM_RESERVE + #define TR_SWR + #define TR_RX_BATT + #define TR_A3_A4 + #define TR_A3_A4_MIN +#endif + +#define TR_VTELEMCHNS "---\0""Batt""Tmr1""Tmr2" TR_SWR "Tx\0 ""Rx\0 " TR_RX_BATT "A1\0 ""A2\0 " TR_A3_A4 "Alt\0""Rpm\0""Fuel""T1\0 ""T2\0 ""Spd\0""Dist""GAlt""Cell""Cels""Vfas""Curr""Cnsp""Powr""AccX""AccY""AccZ""Hdg\0""VSpd""ASpd""dTE\0" TR_TELEM_RESERVE TR_TELEM_RESERVE TR_TELEM_RESERVE TR_TELEM_RESERVE TR_TELEM_RESERVE "A1-\0""A2-\0" TR_A3_A4_MIN "Alt-""Alt+""Rpm+""T1+\0""T2+\0""Spd+""Dst+""Cel-""Cls-""Vfs-""Cur+""Pwr+" TR_TELEM_RESERVE TR_TELEM_RESERVE TR_TELEM_RESERVE TR_TELEM_RESERVE TR_TELEM_RESERVE "Acc\0""Time" + +#if defined(CPUARM) + #define LEN_VUNITSSYSTEM TR("\006", "\012") + #define TR_VUNITSSYSTEM TR("Metrik""Imper.", "Metrisch\0 ""Imperial\0 ") + #define LEN_VTELEMUNIT_NORM "\003" + #define TR_VTELEMUNIT_NORM "V\0 ""A\0 ""m/s""-\0 ""kmh""m\0 ""@\0 ""%\0 ""mA\0""mAh""W\0 " #define LEN_VTELEMUNIT_IMP "\003" #define TR_VTELEMUNIT_IMP "V\0 ""A\0 ""m/s""-\0 ""kts""ft\0""@\0 ""%\0 ""mA\0""mAh""W\0 " #else @@ -319,15 +321,15 @@ #define TR_VARIOSRC "Alti\0""Alti+""Vario""A1\0 ""A2\0" #endif -#define LEN_VSCREEN "\006" +#define LEN_VSCREEN "\006" #define TR_VSCREEN "Werte\0""Balken" //Telemetrie Werte oder Balken #define LEN_GPSFORMAT "\004" #define TR_GPSFORMAT "HMS\0""NMEA" //Koordinatenanzeige -#define LEN2_VTEMPLATES 15 // max String L\201nge f\205r Men\205 (original=13) -#define LEN_VTEMPLATES "\017" // max String L\201nge 15+cr+lf -#define TR_VTEMPLATES "Misch. L\203sch.\0 ""Einfach. 4-CH\0 ""Fixe Gassperre\0""V-Stabilisator\0""Delta Mischer\0 ""eCCPM\0 ""Hubschrauber\0 ""Servo Tester\0 " +#define LEN2_VTEMPLATES 15 // max String Länge für Menü (original=13) +#define LEN_VTEMPLATES "\017" // max String Länge 15+cr+lf +#define TR_VTEMPLATES "Misch. Lösch.\0 ""Einfach. 4-CH\0 ""Fixe Gassperre\0""V-Stabilisator\0""Delta Mischer\0 ""eCCPM\0 ""Hubschrauber\0 ""Servo Tester\0 " #define LEN_VSWASHTYPE "\004" #define TR_VSWASHTYPE "--- ""120 ""120X""140 ""90\0" @@ -355,14 +357,14 @@ #endif #if defined(CPUARM) -#define TR_LOGICALSW "PS1""PS2""PS3""PS4""PS5""PS6""PS7""PS8""PS9""PSA""PSB""PSC""PSD""PSE""PSF""PSG""PSH""PSI""PSJ""PSK""PSL""PSM""PSN""PSO""PSP""PSQ""PSR""PSS""PST""PSU""PSV""PSW" + #define TR_LOGICALSW "LS1""LS2""LS3""LS4""LS5""LS6""LS7""LS8""LS9""LSA""LSB""LSC""LSD""LSE""LSF""LSG""LSH""LSI""LSJ""LSK""LSL""LSM""LSN""LSO""LSP""LSQ""LSR""LSS""LST""LSU""LSV""LSW" #elif defined(PCBGRUVIN9X) || defined(CPUM2561) || defined(CPUM128) - #define TR_LOGICALSW "PS1""PS2""PS3""PS4""PS5""PS6""PS7""PS8""PS9""PSA""PSB""PSC""PSD""PSE""PSF" + #define TR_LOGICALSW "LS1""LS2""LS3""LS4""LS5""LS6""LS7""LS8""LS9""LSA""LSB""LSC""LSD""LSE""LSF" #else - #define TR_LOGICALSW "PS1""PS2""PS3""PS4""PS5""PS6""PS7""PS8""PS9""PSA""PSB""PSC" + #define TR_LOGICALSW "LS1""LS2""LS3""LS4""LS5""LS6""LS7""LS8""LS9""LSA""LSB""LSC" #endif -#define TR_TRIMS_SWITCHES "tRl""tRr""tEd""tEu""tTd""tTu""tAl""tAr" +#define TR_TRIMS_SWITCHES "tSl""tSr""tHd""tHu""tGd""tGu""tQl""tQr" #if defined(PCBSKY9X) #define TR_ROTARY_ENCODERS "DGa\0" @@ -379,9 +381,9 @@ #define TR_6POS_POTS "P11""P12""P13""P14""P15""P16""P21""P22""P23""P24""P25""P26" #define TR_VSWITCHES "SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF\301""SG\300""SG-""SG\301""SH\300""SH\301" TR_6POS_POTS TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW #elif defined(CPUARM) - #define TR_VSWITCHES TR_9X_3POS_SWITCHES "THR""RUD""ELE""AIL""GEA""TRN" TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW + #define TR_VSWITCHES TR_9X_3POS_SWITCHES "THR""RUD""ELE""AIL""GEA""TRN" TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_CUSTOMSW #else - #define TR_VSWITCHES TR_9X_3POS_SWITCHES "THR""RUD""ELE""AIL""GEA""TRN" TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW + #define TR_VSWITCHES TR_9X_3POS_SWITCHES "THR""RUD""ELE""AIL""GEA""TRN" TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_CUSTOMSW #endif #if defined(HELI) @@ -390,13 +392,13 @@ #define TR_CYC_VSRCRAW "[C1]""[C2]""[C3]" #endif -#define TR_VSRCRAW "---\0""Sei\0""H\203h\0""Gas\0""Que\0" TR_POTS_VSRCRAW TR_ROTARY_ENCODERS "MAX\0" TR_CYC_VSRCRAW "TrmS" "TrmH" "TrmG" "TrmQ" TR_SW_VSRCRAW +#define TR_VSRCRAW "---\0""Sei\0""Höh\0""Gas\0""Que\0" TR_POTS_VSRCRAW TR_ROTARY_ENCODERS "MAX\0" TR_CYC_VSRCRAW "TrmS" "TrmH" "TrmG" "TrmQ" TR_SW_VSRCRAW #define LEN_VTMRMODES "\003" #define TR_VTMRMODES "AUS""ABS""GSs""GS%""GSt" #define LEN_VTRAINERMODES "\007" // "\006" -#define TR_VTRAINERMODES "Lehrer\0""Sch\205ler\0" // "Master""Slave\0" +#define TR_VTRAINERMODES "Lehrer\0""Schüler\0" // "Master""Slave\0" #define LEN_VFAILSAFE "\011" #define TR_VFAILSAFE "Hold\0 ""Custom\0 ""No pulses" @@ -426,7 +428,7 @@ #define TR_MENUWHENDONE CENTER"\010"TR_ENTER" > Weiter" #define TR_FREE "frei" -#define TR_DELETEMODEL "Modell l\203schen?" +#define TR_DELETEMODEL "Modell löschen?" #define TR_COPYINGMODEL "Kopiere Modell" #define TR_MOVINGMODEL "Schiebe Modell" #define TR_LOADINGMODEL "Lade Modell..." @@ -441,11 +443,11 @@ #define TR_EXPONAME "Expo Name" #endif #define TR_BITMAP "Modell Bild" -#define TR_TIMER TR("Stoppuhr","Stoppuhr ") +#define TR_TIMER TR("Timer","Timer ") #define TR_ELIMITS TR("Erw.Limit","Erweit. Limits") #define TR_ETRIMS TR("Erw.Trims","Erweit. Trimmung") #define TR_TRIMINC TR("Trim Schr.","Trimm Schritte") -#define TR_TTRACE TR("Gasquelle","Gas Quelle") +#define TR_TTRACE TR("Gasquelle","Gas Verfolgung") #define TR_TTRIM TR("Gastrim","Gas Trimmung") #define TR_BEEPCTR TR("Mitt.Piep","Mittelst. Pieps") #define TR_PROTO TR(INDENT"Proto.",INDENT"Protokoll") @@ -456,14 +458,14 @@ #define TR_FADEIN "Langs. Ein" #define TR_FADEOUT "Langs. Aus" #define TR_DEFAULT "(Normal)" -#define TR_CHECKTRIMS "\006Trims\012Pr\205fen" +#define TR_CHECKTRIMS "\006Trims\012Prüfen" #define OFS_CHECKTRIMS (9*FW) #define TR_SWASHTYPE TR("Typ Taumelsch","Typ Taumelscheibe") #define TR_COLLECTIVE TR("Kollekt.Pitch","Kollekt. Pitch Kanal") #define TR_SWASHRING TR("Zykl. Begrenz","Zyklische Begrenzung") -#define TR_ELEDIRECTION TR("Nick Richtung"," Nick Servo Richtung") -#define TR_AILDIRECTION TR("Roll Richtung"," Roll Servo Richtung") -#define TR_COLDIRECTION TR("Pit. Richtung","Pitch Servo Richtung") +#define TR_ELEDIRECTION TR("Nick Richtung"," Nick Servo Richtung") +#define TR_AILDIRECTION TR("Roll Richtung"," Roll Servo Richtung") +#define TR_COLDIRECTION TR("Pit. Richtung"," Pitch Servo Richtung") #define TR_MODE INDENT"Modus" #define TR_NOFREEEXPO "Expos voll!" #define TR_NOFREEMIXER "Mischer voll!" @@ -494,18 +496,18 @@ #define TR_BAR "Streifen" #define TR_ALARM INDENT"Alarm" #define TR_USRDATA "Daten" -#define TR_BLADES INDENT"Bl\201tter" +#define TR_BLADES INDENT"Blätter" #define TR_SCREEN "Bild " -#define TR_SOUND_LABEL "T\203ne" -#define TR_LENGTH INDENT"Dauer" -#define TR_SPKRPITCH INDENT"Tonh\203he" +#define TR_SOUND_LABEL "----Töne---------" +#define TR_LENGTH INDENT"Dauer" +#define TR_SPKRPITCH INDENT"Tonhöhe" #define TR_HAPTIC_LABEL "Vibration" -#define TR_HAPTICSTRENGTH INDENT"St\201rke" -#define TR_CONTRAST "Kontrast" -#define TR_ALARMS_LABEL "Alarm wenn" +#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 Spg-Bereich") // Symbol Akku Ladezustand -#define TR_BATTERYWARNING INDENT"Akku Spg kl." -#define TR_INACTIVITYALARM INDENT"Inaktivit\201t " +#define TR_BATTERYWARNING INDENT"Akku Spg kleiner" +#define TR_INACTIVITYALARM INDENT"Inaktivität " #define TR_MEMORYWARNING INDENT"Speicher voll" #define TR_ALARMWARNING INDENT"Ton aus" #define TR_RENAVIG "Drehgeb. Navig." @@ -513,17 +515,17 @@ #define TR_MINUTEBEEP TR(INDENT"Minute",INDENT"Jede Minute") #define TR_BEEPCOUNTDOWN INDENT"Countdown" #define TR_PERSISTENT TR(INDENT"M-Zeit",INDENT"Modell Zeit") -#define TR_BACKLIGHT_LABEL "LCD Licht an" +#define TR_BACKLIGHT_LABEL "----LCD Licht----" #define TR_BLDELAY INDENT"Dauer" #define TR_BLONBRIGHTNESS INDENT"An Helligkeit" #define TR_BLOFFBRIGHTNESS INDENT"Aus Helligkeit" #define TR_SPLASHSCREEN "Startbild" #define TR_THROTTLEWARNING "Gas Alarm" #define TR_SWITCHWARNING TR("Sch. Alarm","Schalter Alarm") -#define TR_POTWARNING TR("Pot Warn.","Pot Warning") +#define TR_POTWARNING TR("Pot Warn.","Poti Warnung") #define TR_TIMEZONE TR("Zeitzone","GPS Zeit Zone") #define TR_RXCHANNELORD TR("Kanalanordnung","Kanalvoreinstellung") -#define TR_SLAVE "Sch\205ler PPM1-8 als Ausgang" +#define TR_SLAVE "Schüler PPM1-8 als Ausgang" #define TR_MODESRC " Modus\002% Quelle" #define TR_MULTIPLIER "Multiplikator" #define TR_CAL "Kal." @@ -551,7 +553,7 @@ #define TR_FREESTACKMINB "Free Stack\037\124b" #endif -#define TR_MENUTORESET CENTER TR_ENTER" f\205r Reset" +#define TR_MENUTORESET CENTER TR_ENTER" für Reset" #define TR_PPM "PPM" #define TR_CH "CH" #define TR_MODEL "MODELL" @@ -559,33 +561,33 @@ #define TR_MIX "MIX" #define TR_EEPROMLOWMEM "EEPROM voll" #define TR_ALERT "WARNUNG" -#define TR_PRESSANYKEYTOSKIP "Taste dr\205cken" +#define TR_PRESSANYKEYTOSKIP "Taste drücken" #define TR_THROTTLENOTIDLE "Gas nicht Null!" #define TR_ALARMSDISABLED "Alarme ausgeschaltet" -#define TR_PRESSANYKEY TR("Taste dr\205cken",CENTER"Taste dr\205cken") -#define TR_BADEEPROMDATA "EEPROM ung\205ltig" +#define TR_PRESSANYKEY TR("Taste drücken",CENTER"Taste drücken") +#define TR_BADEEPROMDATA "EEPROM ungültig" #define TR_EEPROMFORMATTING "EEPROM Initialisieren" -#define TR_EEPROMOVERFLOW "EEPROM \204berlauf" +#define TR_EEPROMOVERFLOW "EEPROM Überlauf" #define TR_MENURADIOSETUP TR("SENDER EINST.","SENDER GRUNGEINSTELLUNGEN") #define TR_MENUDATEANDTIME "DATUM UND ZEIT" -#define TR_MENUTRAINER TR("Lehr./Sch\204l.","LEHRER/SCH\204LER") +#define TR_MENUTRAINER TR("Lehr./Schül.","LEHRER/SCHÜLER") #define TR_MENUVERSION "VERSION" #define TR_MENUDIAG TR("Schalt.","Schalter Test") #define TR_MENUANA "Analog Test" #define TR_MENUCALIBRATION TR("KALIB. ANALOG","KALIBRIERUNG STICKS+POTIS") #define TR_TRIMS2OFFSETS "\006Trims => Offset" -#define TR_MENUMODELSEL TR("MODELLE","MODELL W\200HLEN") +#define TR_MENUMODELSEL TR("MODELLE","MODELL WÄHLEN") #define TR_MENUSETUP TR("KONF.","MODELL EINSTELLUNGEN") #define TR_MENUFLIGHTPHASE "FLUGPHASE" #define TR_MENUFLIGHTPHASES "FLUGPHASEN" #define TR_MENUHELISETUP "HUBSCHRAUBER" #if defined(PCBTARANIS) - #define TR_MENUINPUTS "EING\200NGE" - #define TR_MENULIMITS "AUSG\200NGE" -#elif defined(PPM_CENTER_ADJUSTABLE) || defined(PPM_LIMITS_SYMETRICAL) // The right menu titles for the gurus ... #define TR_MENUDREXPO "KN\204PPEL" - #define TR_MENUINPUTS "EING\200NGE" - #define TR_MENULIMITS "AUSG\200NGE" + #define TR_MENUINPUTS "INPUTS" + #define TR_MENULIMITS "AUSGÄNGE" +#elif defined(PPM_CENTER_ADJUSTABLE) || defined(PPM_LIMITS_SYMETRICAL) // The right menu titles for the gurus ... #define TR_MENUDREXPO "KNÜPPEL" + #define TR_MENUINPUTS "INPUTS" + #define TR_MENULIMITS "AUSGÄNGE" #else #define TR_MENUINPUTS TR("DR/EXPO","DUALRATE/EXPO") #define TR_MENULIMITS TR("GRENZEN","SERVO WEG") @@ -593,32 +595,32 @@ #define TR_MENUCURVES "KURVEN" #define TR_MENUCURVE "KURVE" -#define TR_MENULOGICALSWITCH "PROG.SCHALTER" -#define TR_MENULOGICALSWITCHES TR_MENULOGICALSWITCH +#define TR_MENULOGICALSWITCH "LOGIK SCHALTER" +#define TR_MENULOGICALSWITCHES "LOGIK SCHALTER" #define TR_MENUCUSTOMFUNC "SPEZ. FUNKTIONEN" #define TR_MENUTELEMETRY "TELEMETRIE" #define TR_MENUTEMPLATES "VORLAGEN" #define TR_MENUSTAT "STAT" #define TR_MENUDEBUG "DEBUG" -#define TR_RXNUM TR("Rx Nummer",INDENT"Empf\201nger Nr.") +#define TR_RXNUM TR("Rx Nummer",INDENT"Empfänger Nr.") #define TR_SYNCMENU "Sync [MENU]" -#define TR_LIMIT INDENT"Limite" +#define TR_LIMIT INDENT"Grenzen" #define TR_MINRSSI "Min. RSSI" #define TR_LATITUDE "Breite:" -#define TR_LONGITUDE "L\201nge:" +#define TR_LONGITUDE "Länge:" #define TR_GPSCOORD TR("Gps Koord.","GPS Koordinaten Format") -#define TR_VARIO TR("Vario","Variometer") +#define TR_VARIO TR("Vario","----Variometer----") #define TR_SHUTDOWN "Herunterfahren" #define TR_BATT_CALIB "Akku. Kalib." #define TR_CURRENT_CALIB "Stromkalib." #define TR_VOLTAGE INDENT"Spann." #define TR_CURRENT INDENT"Strom" -#define TR_SELECT_MODEL "Modell W\201hlen" +#define TR_SELECT_MODEL "Modell Wählen" #define TR_CREATE_MODEL "Neues Modell" #define TR_COPY_MODEL "Kopiere Modell" #define TR_MOVE_MODEL "Verschiebe Modell" #define TR_BACKUP_MODEL "Modell Backup" -#define TR_DELETE_MODEL "Modell L\203schen" // TODO merged into DELETEMODEL? +#define TR_DELETE_MODEL "Modell Löschen" // TODO merged into DELETEMODEL? #define TR_RESTORE_MODEL "Modell Restore" #define TR_SDCARD_ERROR "SDcard Fehler" #define TR_NO_SDCARD "Keine SDcard" @@ -628,8 +630,8 @@ #define TR_THROTTLEWARN "GAS" #define TR_ALARMSWARN "ALARM" #define TR_SWITCHWARN "SCHALTER" -#define TR_INVERT_THR TR("Gas umkehren?","Vollgas hinten?") //\200nderung wg Th9x -#define TR_SPEAKER_VOLUME INDENT "Lautst\201rke" +#define TR_INVERT_THR TR("Gas umkehren?","Vollgas hinten?") //Änderung wg Th9x +#define TR_SPEAKER_VOLUME INDENT "Lautstärke" #define TR_LCD "Bildschirm" #define TR_BRIGHTNESS INDENT "Helligkeit" #define TR_CPU_TEMP "CPU Temp.\016>" @@ -638,27 +640,27 @@ #define TR_COPROC "CoProz." #define TR_COPROC_TEMP "MB Temp. \016>" #define TR_CAPAWARNING INDENT "Kapaz. niedrig" -#define TR_TEMPWARNING INDENT "Temperatur gr\203er" +#define TR_TEMPWARNING INDENT "Temperatur größer" #define TR_FUNC "Funktion" #define TR_V1 "V1" #define TR_V2 "V2" #define TR_DURATION "Dauer" -#define TR_DELAY "Verz\203g." +#define TR_DELAY "Verzög." #define TR_SD_CARD "SD Karte" #define TR_SDHC_CARD "SD-HC Karte" -#define TR_NO_SOUNDS_ON_SD "Keine T\203ne auf SD" +#define TR_NO_SOUNDS_ON_SD "Keine Töne auf SD" #define TR_NO_MODELS_ON_SD "Keine Modelle auf SD" #define TR_NO_BITMAPS_ON_SD "Keine Bitmaps auf SD" #define TR_PLAY_FILE "Spielen" -#define TR_DELETE_FILE "L\203schen" +#define TR_DELETE_FILE "Löschen" #define TR_COPY_FILE "Kopieren" #define TR_RENAME_FILE "Umbenennen" #define TR_ASSIGN_BITMAP "Assign Bitmap" -#define TR_REMOVED " gel\203scht" +#define TR_REMOVED " gelöscht" #define TR_SD_INFO "Information" #define TR_SD_FORMAT "Formattieren" -#define TR_NA "N/V" //NV=Nicht Verf\205gbar Kurz-Meldung -#define TR_HARDWARE "Hardware" +#define TR_NA "N/V" //NV=Nicht Verfügbar Kurz-Meldung +#define TR_HARDWARE "Hardware einstellen" #define TR_FORMATTING "Formattierung..." #define TR_TEMP_CALIB "Temp. Kalib." #define TR_TIME "Uhrzeit:" @@ -667,7 +669,7 @@ #define TR_SD_TYPE "Typ:" #define TR_SD_SPEED "Geschw:" #define TR_SD_SECTORS "Sektoren:" -#define TR_SD_SIZE "Gr\203\206e:" +#define TR_SD_SIZE "Größe:" #define TR_TYPE "Typ" #define TR_GLOBAL_VARS "Globale Variablen" #define TR_GLOBAL_V "GLOBAL V." @@ -711,13 +713,13 @@ #define TR_ANTENNAPROBLEM CENTER "TX Antennen Problem!" #define TR_MODELIDUSED TR("ID schon benutzt","Modell ID schon benutzt") #define TR_MODULE INDENT "Modul-Typ" -#define TR_CHANNELRANGE INDENT "Ausgangs Kan\201le" +#define TR_CHANNELRANGE INDENT "Ausgangs Kanäle" #define TR_LOWALARM INDENT "Low Alarm" #define TR_CRITICALALARM INDENT "Kritisch Alarm" -#define TR_PERSISTENT_MAH INDENT "Store mAh" +#define TR_PERSISTENT_MAH INDENT "Speichern mAh" #define TR_CHECKLIST "Display Checklist" #define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Offset") -#define TR_UART3MODE "Serial port" +#define TR_UART3MODE "Serial Port" #define TR_POT1TYPE "S1 Type" #define TR_POT2TYPE "S2 Type" @@ -747,8 +749,8 @@ #define TR_MAVLINK_LON "LON" #endif -// Taranis column headers -#define TR_PHASES_HEADERS { " Name ", " Schalter ", " Trimmung ", " Fade In ", " Fade Out " } +// Taranis Info Zeile Anzeigen +#define TR_PHASES_HEADERS { " Name ", " Schalter ", " Seite Trim ", " Höhe Trim ", " Gas Trim ", " Quer Trim ", " Fade In ", " Fade Out " } #define TR_LIMITS_HEADERS { " Name ", " Subtrim ", " Min ", " Max ", " Richtung ", " Kurve ", " PPM Mitte ", " Subtrim Mode " } #define TR_CSW_HEADERS { " Funktion ", " Var1 ", " Var2 ", " Var2 ", " UND Schalter ", " Dauer ", " Delay " } @@ -790,7 +792,7 @@ #define TR_ABOUT_HARDWARE_3 "Firmware Vertrieb" #else #define TR_ABOUT_HARDWARE_1 "Brent Nelson" - #define TR_ABOUT_HARDWARE_2 "Sky9x Design/produktion" + #define TR_ABOUT_HARDWARE_2 "Sky9x Design/Produktion" #define TR_ABOUT_HARDWARE_3 "" #endif @@ -799,18 +801,18 @@ #define TR_ABOUT_PARENTS_3 "ER9X (Erez Raviv)" #define TR_ABOUT_PARENTS_4 "TH9X (Thomas Husterer)" -#define TR_CHR_SHORT 's' //Taste short -#define TR_CHR_LONG 'l' //Taste long -#define TR_CHR_TOGGLE 't' //Taste als togglefunktion = Ein Aus Ein -#define TR_CHR_HOUR 'h' //Stunden -#define TR_CHR_INPUT 'I' // Values between A-I will work +#define TR_CHR_SHORT 's' // Taste short +#define TR_CHR_LONG 'l' // Taste long +#define TR_CHR_TOGGLE 't' // Taste als togglefunktion = Ein Aus Ein +#define TR_CHR_HOUR 'h' // Stunden +#define TR_CHR_INPUT 'I' // Values between A-I will work -#define TR_BEEP_VOLUME "Beep Lautst" -#define TR_WAV_VOLUME "Wav Lautst" +#define TR_BEEP_VOLUME "Beep Lautst" +#define TR_WAV_VOLUME "Wav Lautst" #define TR_VARIO_VOLUME "Vario Lautst" -#define TR_BG_VOLUME "Bg Lautst" +#define TR_BG_VOLUME "Bg Lautst" -#define TR_TOP_BAR "Top Bar" -#define TR_ALTITUDE INDENT "Altitude" -#define TR_MODS_FORBIDDEN "Modifications forbidden!" -#define TR_UNLOCKED "Unlocked" +#define TR_TOP_BAR "Info Zeile" +#define TR_ALTITUDE INDENT "Höhe" +#define TR_MODS_FORBIDDEN "Veränderungen verboten!" +#define TR_UNLOCKED "Entsperrt" diff --git a/radio/src/translations/en.h.txt b/radio/src/translations/en.h.txt index b07266b45..93093015e 100644 --- a/radio/src/translations/en.h.txt +++ b/radio/src/translations/en.h.txt @@ -234,8 +234,10 @@ #define TR_CFN_TEST #endif +#define TR_CFN_RESERVE "[reserve]\0" + #if defined(CPUARM) - #define TR_VFSWFUNC "Safety\0 ""Trainer\0 ""Inst. Trim""Reset\0 ""Set \0 " TR_ADJUST_GVAR "Volume\0 " TR_SOUND TR_PLAY_TRACK TR_PLAY_VALUE TR_CFN_BG_MUSIC TR_VVARIO TR_HAPTIC TR_SDCLOGS "Backlight\0" TR_CFN_TEST + #define TR_VFSWFUNC "Safety\0 ""Trainer\0 ""Inst. Trim""Reset\0 ""Set \0 " TR_ADJUST_GVAR "Volume\0 " TR_CFN_RESERVE TR_CFN_RESERVE TR_CFN_RESERVE TR_SOUND TR_PLAY_TRACK TR_PLAY_VALUE TR_CFN_RESERVE TR_CFN_RESERVE TR_CFN_RESERVE TR_CFN_BG_MUSIC TR_VVARIO TR_HAPTIC TR_SDCLOGS "Backlight\0" TR_CFN_TEST #elif defined(PCBGRUVIN9X) #define TR_VFSWFUNC "Safety\0 ""Trainer\0 ""Inst. Trim""Reset\0 " TR_ADJUST_GVAR TR_SOUND TR_PLAY_TRACK TR_PLAY_BOTH TR_PLAY_VALUE TR_VVARIO TR_HAPTIC TR_SDCLOGS "Backlight\0" TR_CFN_TEST #else @@ -264,14 +266,22 @@ #define TR_FUNCSOUNDS TR("Bp1\0""Bp2\0""Bp3\0""Wrn1""Wrn2""Chee""Rata""Tick""Sirn""Ring""SciF""Robt""Chrp""Tada""Crck""Alrm", "Beep1 ""Beep2 ""Beep3 ""Warn1 ""Warn2 ""Cheep ""Ratata""Tick ""Siren ""Ring ""SciFi ""Robot ""Chirp ""Tada ""Crickt""AlmClk") #define LEN_VTELEMCHNS "\004" -#if defined(PCBTARANIS) - #define TR_RSSI_0 "SWR\0" - #define TR_RSSI_1 "RSSI" + +#if defined(CPUARM) + #define TR_TELEM_RESERVE "[--]" + #define TR_SWR "SWR\0" + #define TR_RX_BATT "RxBt" + #define TR_A3_A4 "A3\0 ""A4\0 " + #define TR_A3_A4_MIN "A3-\0""A4-\0" #else - #define TR_RSSI_0 "Tx\0 " - #define TR_RSSI_1 "Rx\0 " + #define TR_TELEM_RESERVE + #define TR_SWR + #define TR_RX_BATT + #define TR_A3_A4 + #define TR_A3_A4_MIN #endif -#define TR_VTELEMCHNS "---\0""Batt""Tmr1""Tmr2" TR_RSSI_0 TR_RSSI_1 "A1\0 ""A2\0 ""Alt\0""Rpm\0""Fuel""T1\0 ""T2\0 ""Spd\0""Dist""GAlt""Cell""Cels""Vfas""Curr""Cnsp""Powr""AccX""AccY""AccZ""Hdg\0""VSpd""ASpd""dTE\0""A1-\0""A2-\0""Alt-""Alt+""Rpm+""T1+\0""T2+\0""Spd+""Dst+""Cel-""Vfs-""Cur+""Pwr+""Acc\0""Time" + +#define TR_VTELEMCHNS "---\0""Batt""Tmr1""Tmr2" TR_SWR "Tx\0 ""Rx\0 " TR_RX_BATT "A1\0 ""A2\0 " TR_A3_A4 "Alt\0""Rpm\0""Fuel""T1\0 ""T2\0 ""Spd\0""Dist""GAlt""Cell""Cels""Vfas""Curr""Cnsp""Powr""AccX""AccY""AccZ""Hdg\0""VSpd""ASpd""dTE\0" TR_TELEM_RESERVE TR_TELEM_RESERVE TR_TELEM_RESERVE TR_TELEM_RESERVE TR_TELEM_RESERVE "A1-\0""A2-\0" TR_A3_A4_MIN "Alt-""Alt+""Rpm+""T1+\0""T2+\0""Spd+""Dst+""Cel-""Cls-""Vfs-""Cur+""Pwr+" TR_TELEM_RESERVE TR_TELEM_RESERVE TR_TELEM_RESERVE TR_TELEM_RESERVE TR_TELEM_RESERVE "Acc\0""Time" #define LENGTH_UNIT_IMP "ft\0" #define SPEED_UNIT_IMP "mph" diff --git a/radio/src/translations/es.h.txt b/radio/src/translations/es.h.txt index 861747449..0952ae695 100644 --- a/radio/src/translations/es.h.txt +++ b/radio/src/translations/es.h.txt @@ -271,7 +271,7 @@ #define TR_RSSI_0 "Tx\0 " #define TR_RSSI_1 "Rx\0 " #endif -#define TR_VTELEMCHNS "---\0""Batt""Tmr1""Tmr2" TR_RSSI_0 TR_RSSI_1 "A1\0 ""A2\0 ""Alt\0""Rpm\0""Fuel""T1\0 ""T2\0 ""Spd\0""Dist""GAlt""Cell""Cels""Vfas""Curr""Cnsp""Powr""AccX""AccY""AccZ""Hdg\0""VSpd""ASpd""dTE\0""A1-\0""A2-\0""Alt-""Alt+""Rpm+""T1+\0""T2+\0""Spd+""Dst+""Cel-""Vfs-""Cur+""Pwr+""Acc\0""Hora" +#define TR_VTELEMCHNS "---\0""Batt""Tmr1""Tmr2" TR_RSSI_0 TR_RSSI_1 "A1\0 ""A2\0 ""Alt\0""Rpm\0""Fuel""T1\0 ""T2\0 ""Spd\0""Dist""GAlt""Cell""Cels""Vfas""Curr""Cnsp""Powr""AccX""AccY""AccZ""Hdg\0""VSpd""ASpd""dTE\0""A1-\0""A2-\0""Alt-""Alt+""Rpm+""T1+\0""T2+\0""Spd+""Dst+""Cel-""Cls-""Vfs-""Cur+""Pwr+""Acc\0""Hora" #define LENGTH_UNIT_IMP "ft\0" #define SPEED_UNIT_IMP "mph" diff --git a/radio/src/translations/fi.h.txt b/radio/src/translations/fi.h.txt index f5cb26f8d..08006d948 100644 --- a/radio/src/translations/fi.h.txt +++ b/radio/src/translations/fi.h.txt @@ -271,7 +271,7 @@ #define TR_RSSI_0 "Tx\0 " #define TR_RSSI_1 "Rx\0 " #endif -#define TR_VTELEMCHNS "---\0""Batt""Tmr1""Tmr2" TR_RSSI_0 TR_RSSI_1 "A1\0 ""A2\0 ""Alt\0""Rpm\0""Fuel""T1\0 ""T2\0 ""Spd\0""Dist""GAlt""Cell""Cels""Vfas""Curr""Cnsp""Powr""AccX""AccY""AccZ""Hdg\0""VSpd""ASpd""dTE\0""A1-\0""A2-\0""Alt-""Alt+""Rpm+""T1+\0""T2+\0""Spd+""Dst+""Cel-""Vfs-""Cel-""Vfs-""Cur+""Pwr+""Acc\0""Time" +#define TR_VTELEMCHNS "---\0""Batt""Tmr1""Tmr2" TR_RSSI_0 TR_RSSI_1 "A1\0 ""A2\0 ""Alt\0""Rpm\0""Fuel""T1\0 ""T2\0 ""Spd\0""Dist""GAlt""Cell""Cels""Vfas""Curr""Cnsp""Powr""AccX""AccY""AccZ""Hdg\0""VSpd""ASpd""dTE\0""A1-\0""A2-\0""Alt-""Alt+""Rpm+""T1+\0""T2+\0""Spd+""Dst+""Cel-""Cls-""Vfs-""Cel-""Cls-""Vfs-""Cur+""Pwr+""Acc\0""Time" #define LENGTH_UNIT_IMP "ft\0" #define SPEED_UNIT_IMP "mph" diff --git a/radio/src/translations/fr.h.txt b/radio/src/translations/fr.h.txt index c922ee01a..f0646a174 100644 --- a/radio/src/translations/fr.h.txt +++ b/radio/src/translations/fr.h.txt @@ -271,7 +271,7 @@ #define TR_RSSI_0 "Tx\0 " #define TR_RSSI_1 "Rx\0 " #endif -#define TR_VTELEMCHNS "---\0""Batt""Chr1""Chr2" TR_RSSI_0 TR_RSSI_1 "A1\0 ""A2\0 ""Alt\0""Rpm\0""Carb""T1\0 ""T2\0 ""Vit\0""Dist""AltG""Elem""Velm""Vfas""Cour""Cnsm""Puis""AccX""AccY""AccZ""Cap\0""VitV""VitA""dET\0""A1-\0""A2-\0""Alt-""Alt+""Rpm+""T1+\0""T2+\0""Vit+""Dst+""Elm-""Vfs-""Cur+""Pui+""Acc\0""Tmps" +#define TR_VTELEMCHNS "---\0""Batt""Chr1""Chr2" TR_RSSI_0 TR_RSSI_1 "A1\0 ""A2\0 ""Alt\0""Rpm\0""Carb""T1\0 ""T2\0 ""Vit\0""Dist""AltG""Elem""Velm""Vfas""Cour""Cnsm""Puis""AccX""AccY""AccZ""Cap\0""VitV""VitA""dET\0""A1-\0""A2-\0""Alt-""Alt+""Rpm+""T1+\0""T2+\0""Vit+""Dst+""Elm-""Els-""Vfs-""Cur+""Pui+""Acc\0""Tmps" #define LENGTH_UNIT_IMP "ft\0" #define SPEED_UNIT_IMP "mph" @@ -390,7 +390,7 @@ #define TR_CYC_VSRCRAW "[C1]""[C2]""[C3]" #endif -#define TR_VSRCRAW "---\0""Dir\0""Prf\0""Gaz\0""Ail\0" TR_POTS_VSRCRAW TR_ROTARY_ENCODER "MAX\0" TR_CYC_VSRCRAW "TrmD" "TrmP" "TrmG" "TrmA" TR_SW_VSRCRAW +#define TR_VSRCRAW "---\0""Dir\0""Prf\0""Gaz\0""Ail\0" TR_POTS_VSRCRAW TR_ROTARY_ENCODERS "MAX\0" TR_CYC_VSRCRAW "TrmD" "TrmP" "TrmG" "TrmA" TR_SW_VSRCRAW #define LEN_VTMRMODES "\003" #define TR_VTMRMODES "OFF""ABS""GZs""GZ%""GZt" diff --git a/radio/src/translations/it.h.txt b/radio/src/translations/it.h.txt index e380674cf..a014aca86 100644 --- a/radio/src/translations/it.h.txt +++ b/radio/src/translations/it.h.txt @@ -271,7 +271,7 @@ #define TR_RSSI_0 "Tx\0 " #define TR_RSSI_1 "Rx\0 " #endif -#define TR_VTELEMCHNS "---\0""Batt""Tmr1""Tmr2" TR_RSSI_0 TR_RSSI_1 "A1\0 ""A2\0 ""Alt\0""Rpm\0""Carb""T1\0 ""T2\0 ""Vel\0""Dist""GAlt""Cell""Cels""Vfas""Curr""Cnsm""Powr""AccX""AccY""AccZ""Dir\0""VelV""ASpd""dTE\0""A1-\0""A2-\0""Alt-""Alt+""Rpm+""T1+\0""T2+\0""Vel+""Dst+""Cel-""Vfs-""Cur+""Pwr+""Acc\0""Time" +#define TR_VTELEMCHNS "---\0""Batt""Tmr1""Tmr2" TR_RSSI_0 TR_RSSI_1 "A1\0 ""A2\0 ""Alt\0""Rpm\0""Carb""T1\0 ""T2\0 ""Vel\0""Dist""GAlt""Cell""Cels""Vfas""Curr""Cnsm""Powr""AccX""AccY""AccZ""Dir\0""VelV""ASpd""dTE\0""A1-\0""A2-\0""Alt-""Alt+""Rpm+""T1+\0""T2+\0""Vel+""Dst+""Cel-""Cls-""Vfs-""Cur+""Pwr+""Acc\0""Time" #define LENGTH_UNIT_IMP "ft\0" #define SPEED_UNIT_IMP "mph" diff --git a/radio/src/translations/pl.h.txt b/radio/src/translations/pl.h.txt index a7f05ffc9..1216179cc 100644 --- a/radio/src/translations/pl.h.txt +++ b/radio/src/translations/pl.h.txt @@ -271,7 +271,7 @@ #define TR_RSSI_0 "Tx\0 " #define TR_RSSI_1 "Rx\0 " #endif -#define TR_VTELEMCHNS "---\0""Bat\0""Tmr1""Tmr2" TR_RSSI_0 TR_RSSI_1 "A1\0 ""A2\0 ""Wys\0""Rpm\0""Pali""T1\0 ""T2\0 ""Spd\0""Dyst""GAlt""Cell""Cels""Vfas""Curr""Cnsp""Moc\0""AccX""AccY""AccZ""Hdg\0""VSpd""ASpd""dTE\0""A1-\0""A2-\0""Wys-""Wys+""Rpm+""T1+\0""T2+\0""Spd+""Dst+""Cel-""Vfs-""Cur+""Moc+""Acc\0""Time" +#define TR_VTELEMCHNS "---\0""Bat\0""Tmr1""Tmr2" TR_RSSI_0 TR_RSSI_1 "A1\0 ""A2\0 ""Wys\0""Rpm\0""Pali""T1\0 ""T2\0 ""Spd\0""Dyst""GAlt""Cell""Cels""Vfas""Curr""Cnsp""Moc\0""AccX""AccY""AccZ""Hdg\0""VSpd""ASpd""dTE\0""A1-\0""A2-\0""Wys-""Wys+""Rpm+""T1+\0""T2+\0""Spd+""Dst+""Cel-""Cls-""Vfs-""Cur+""Moc+""Acc\0""Time" #define LENGTH_UNIT_IMP "ft\0" #define SPEED_UNIT_IMP "mph" diff --git a/radio/src/translations/pt.h.txt b/radio/src/translations/pt.h.txt index 8e0fd3d11..d8965ea56 100644 --- a/radio/src/translations/pt.h.txt +++ b/radio/src/translations/pt.h.txt @@ -271,7 +271,7 @@ #define TR_RSSI_0 "Tx\0 " #define TR_RSSI_1 "Rx\0 " #endif -#define TR_VTELEMCHNS "---\0""Batt""Tmr1""Tmr2" TR_RSSI_0 TR_RSSI_1 "A1\0 ""A2\0 ""Alt\0""Rpm\0""Fuel""T1\0 ""T2\0 ""Spd\0""Dist""GAlt""Cell""Cels""Vfas""Curr""Cnsp""Powr""AccX""AccY""AccZ""Hdg\0""VVel""ASpd""dTE\0""A1-\0""A2-\0""Alt-""Alt+""Rpm+""T1+\0""T2+\0""Vel+""Dst+""Cel-""Vfs-""Cur+""Pwr+""Acc\0""Hora" +#define TR_VTELEMCHNS "---\0""Batt""Tmr1""Tmr2" TR_RSSI_0 TR_RSSI_1 "A1\0 ""A2\0 ""Alt\0""Rpm\0""Fuel""T1\0 ""T2\0 ""Spd\0""Dist""GAlt""Cell""Cels""Vfas""Curr""Cnsp""Powr""AccX""AccY""AccZ""Hdg\0""VVel""ASpd""dTE\0""A1-\0""A2-\0""Alt-""Alt+""Rpm+""T1+\0""T2+\0""Vel+""Dst+""Cel-""Cls-""Vfs-""Cur+""Pwr+""Acc\0""Hora" #define LENGTH_UNIT_IMP "ft\0" #define SPEED_UNIT_IMP "mph"