1
0
Fork 0
mirror of https://github.com/opentx/opentx.git synced 2025-07-25 17:25:13 +03:00

Merge remote-tracking branch 'origin/next' into

bsongis/Issue524_SPORT_GPS

Conflicts:
	radio/src/telemetry/frsky_sport.cpp
	radio/src/translations/de.h.txt
This commit is contained in:
bsongis 2014-03-03 15:36:34 +01:00
commit cdce9b0da7
32 changed files with 545 additions and 286 deletions

1
.gitignore vendored
View file

@ -1,2 +1,3 @@
/.*project
/.settings
/.autotools

View file

@ -329,4 +329,5 @@ A Harris
Stefan Grunenberg
Francisco Gutierrez Muñoz
Steve Coley
Sean Cull
Roberto Orsello

View file

@ -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("----");

View file

@ -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

View file

@ -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;

View file

@ -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<NUM_PPM_INPUTS(board, version); i++)
addConversion(RawSource(SOURCE_TYPE_PPM, i), val++);
for (int i=0; i<MAX_CHANNELS(board, version); i++)
@ -232,15 +233,18 @@ class SourcesConversionTable: public ConversionTable {
}
}
if (afterrelease21March2013)
addConversion(RawSource(SOURCE_TYPE_TELEMETRY, 0), val++);
for (int i=1; i<TELEMETRY_SOURCE_ACC; i++) {
for (int i=0; i<TELEMETRY_SOURCE_ACC; i++) {
if (version < 216) {
if (i==TELEMETRY_SOURCE_ASPD-1 || i==TELEMETRY_SOURCE_DTE-1 || i==TELEMETRY_SOURCE_CELL_MIN-1 || i==TELEMETRY_SOURCE_VFAS_MIN-1)
if (i==TELEMETRY_SOURCE_SWR || i==TELEMETRY_SOURCE_RX_BATT || i==TELEMETRY_SOURCE_A3 || i==TELEMETRY_SOURCE_A4 || i==TELEMETRY_SOURCE_ASPD || i==TELEMETRY_SOURCE_DTE || i==TELEMETRY_SOURCE_CELL_MIN || i==TELEMETRY_SOURCE_CELLS_MIN || i==TELEMETRY_SOURCE_VFAS_MIN)
continue;
}
addConversion(RawSource(SOURCE_TYPE_TELEMETRY, i), val++);
if (version >= 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<N> > {
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 <int N>
class TelemetrySourceField: public ConversionField< UnsignedField<N> > {
public:
TelemetrySourceField(unsigned int & source, BoardEnum board, unsigned int version):
ConversionField< UnsignedField<N> >(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 <int N>
class SourceField: public ConversionField< UnsignedField<N> > {
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<MAX_GVARS(board, version); i++)
addConversion(FuncAdjustGV1+i, val);
val++;
if (IS_ARM(board))
if (IS_ARM(board)) {
addConversion(FuncVolume, val++);
addConversion(FuncReserve, val++);
addConversion(FuncReserve, val++);
addConversion(FuncReserve, val++);
}
addConversion(FuncPlaySound, val++);
addConversion(FuncPlayPrompt, val++);
if (version >= 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<columns; j++) {
numbers.Append(new UnsignedField<8>(_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<columns;j++) {
if (_screen.body.lines[i].source[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<columns;j++) {
if (_screen.body.lines[i].source[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;

View file

@ -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; i<NUM_PPM; i++) {
for (int i=0; i<NUM_PPM(GetEepromInterface()->getBoard()); i++) {
item = RawSource(SOURCE_TYPE_PPM, i);
b->addItem(item.toString(), item.toValue());
if (item == source) b->setCurrentIndex(b->count()-1);

View file

@ -15,3 +15,4 @@
/TEMPLATES
/SOUNDS
/LOGS
/allsrc.cpp

View file

@ -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 <switchname>-[on|off].wav
for (int i=0; i<NUM_CSW && !found; i++) {
@ -430,7 +430,7 @@ bool isAudioFileReferenced(uint32_t i, char * filename)
if (sdAvailableSwitchAudioFiles & MASK_SWITCH_AUDIO_FILE(index)) {
getSwitchAudioFile(filename, index);
return true;
}
}
}
else if (category == LOGICAL_SWITCH_AUDIO_CATEGORY) {
if (sdAvailableLogicalSwitchAudioFiles & MASK_LOGICAL_SWITCH_AUDIO_FILE(index, event)) {
@ -589,19 +589,24 @@ int WavContext::mixBuffer(AudioBuffer *buffer, int volume, unsigned int fade)
if (state.codec == CODEC_ID_PCM_S16LE) {
read /= 2;
for (uint32_t i=0; i<read; i++) {
for (uint8_t j=0; j<state.resampleRatio; j++)
for (uint8_t j=0; j<state.resampleRatio; j++) {
mixSample(samples++, ((int16_t *)wavBuffer)[i], fade+2-volume);
}
}
}
else if (state.codec == CODEC_ID_PCM_ALAW) {
for (uint32_t i=0; i<read; i++)
for (uint8_t j=0; j<state.resampleRatio; j++)
for (uint32_t i=0; i<read; i++) {
for (uint8_t j=0; j<state.resampleRatio; j++) {
mixSample(samples++, alawTable[wavBuffer[i]], fade+2-volume);
}
}
}
else if (state.codec == CODEC_ID_PCM_MULAW) {
for (uint32_t i=0; i<read; i++)
for (uint8_t j=0; j<state.resampleRatio; j++)
for (uint32_t i=0; i<read; i++) {
for (uint8_t j=0; j<state.resampleRatio; j++) {
mixSample(samples++, ulawTable[wavBuffer[i]], fade+2-volume);
}
}
}
return samples - buffer->data;
@ -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;
}

View file

@ -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<<i)) {
// gauges
for (int j=0; j<4; j++) {
uint8_t & source = g_model.frsky.screens[i].bars[j].source;
source = ConvertTelemetrySource_215_to_216(source);
}
}
else {
// numbers
for (int j=0; j<4; j++) {
for (int k=0; k<NUM_LINE_ITEMS; k++) {
uint8_t & source = g_model.frsky.screens[i].lines[j].sources[k];
source = ConvertTelemetrySource_215_to_216(source);
}
}
}
}
#if defined(PCBTARANIS)
g_model.externalModule = oldModel.externalModule;

View file

@ -1815,7 +1815,7 @@ enum FlightModesItems {
ITEM_PHASES_LAST = ITEM_PHASES_COUNT-1
};
bool isTrimModeAvailable(int16_t mode)
bool isTrimModeAvailable(int mode)
{
return (mode == TRIM_MODE_NONE || (mode%2) == 0 || (mode/2) != (m_posVert-1));
}
@ -2186,7 +2186,7 @@ void menuModelHeli(uint8_t event)
uint8_t attr = (sub == i ? ((s_editMode>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) {

View file

@ -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;
}

View file

@ -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)

View file

@ -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);

View file

@ -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,

View file

@ -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)

View file

@ -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];

View file

@ -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
{

View file

@ -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.
}

View file

@ -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()) {

View file

@ -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;
};

View file

@ -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;

View file

@ -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;
};

View file

@ -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"

View file

@ -1,11 +1,8 @@
/*
/* German checked 28.02.2014 kleine Änderungen
* Authors (alphabetical order)
* - Bertrand Songis <bsongis@gmail.com>
* - Bernet Andre <bernet.andre@gmail.com>
* - Helle <hrenz62961@aol.com>
* - Kjell Kernen <kjell.kernen@gmail.com>
* - Martin Hotar <mhotar@gmail.com>
* - Romolo Manfredini <romolo.manfredini@gmail.com>
*
* 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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"