diff --git a/companion/src/eeprominterface.h b/companion/src/eeprominterface.h
index ce3e1a71d..96429d6c5 100644
--- a/companion/src/eeprominterface.h
+++ b/companion/src/eeprominterface.h
@@ -858,6 +858,15 @@ class FrSkyScreenData {
void clear() { memset(this, 0, sizeof(FrSkyScreenData)); }
};
+enum TelemetryVarioSources {
+ TELEMETRY_VARIO_SOURCE_ALTI,
+ TELEMETRY_VARIO_SOURCE_ALTI_PLUS,
+ TELEMETRY_VARIO_SOURCE_VSPEED,
+ TELEMETRY_VARIO_SOURCE_A1,
+ TELEMETRY_VARIO_SOURCE_A2,
+ TELEMETRY_VARIO_SOURCE_DTE,
+};
+
enum TelemetryVoltsSources {
TELEMETRY_VOLTS_SOURCE_RXBATT,
TELEMETRY_VOLTS_SOURCE_A1,
diff --git a/companion/src/firmwares/opentx/opentxeeprom.cpp b/companion/src/firmwares/opentx/opentxeeprom.cpp
index 45e5d2014..1b03f5e52 100644
--- a/companion/src/firmwares/opentx/opentxeeprom.cpp
+++ b/companion/src/firmwares/opentx/opentxeeprom.cpp
@@ -2177,6 +2177,25 @@ class RSSIConversionTable: public ConversionTable
}
};
+class TelemetryVarioSourceConversionTable: public ConversionTable
+{
+ public:
+ TelemetryVarioSourceConversionTable(BoardEnum board, unsigned int version)
+ {
+ int val = 0;
+ if (!IS_TARANIS(board)) {
+ addConversion(TELEMETRY_VARIO_SOURCE_ALTI, val++);
+ addConversion(TELEMETRY_VARIO_SOURCE_ALTI_PLUS, val++);
+ }
+ addConversion(TELEMETRY_VARIO_SOURCE_VSPEED, val++);
+ addConversion(TELEMETRY_VARIO_SOURCE_A1, val++);
+ addConversion(TELEMETRY_VARIO_SOURCE_A2, val++);
+ if (IS_TARANIS(board)) {
+ addConversion(TELEMETRY_VARIO_SOURCE_DTE, val++);
+ }
+ }
+};
+
class TelemetryVoltsSourceConversionTable: public ConversionTable
{
public:
@@ -2213,21 +2232,11 @@ class TelemetryCurrentSourceConversionTable: public ConversionTable
}
};
-class VarioConversionTable: public ConversionTable
-{
- public:
- VarioConversionTable()
- {
- addConversion(2, 0); // Vario
- addConversion(3, 1); // A1
- addConversion(4, 2); // A2
- }
-};
-
class FrskyField: public StructField {
public:
FrskyField(FrSkyData & frsky, BoardEnum board, unsigned int version):
StructField("FrSky"),
+ telemetryVarioSourceConversionTable(board, version),
telemetryVoltsSourceConversionTable(board, version),
telemetryCurrentSourceConversionTable(board, version)
{
@@ -2267,10 +2276,8 @@ class FrskyField: public StructField {
for (int i=0; i<3; i++) {
Append(new FrskyScreenField(frsky.screens[i], board, version));
}
- if (IS_TARANIS(board))
- Append(new ConversionField< UnsignedField<8> >(frsky.varioSource, &varioConversionTable, "Vario Source"));
- else
- Append(new UnsignedField<8>(frsky.varioSource));
+
+ Append(new ConversionField< UnsignedField<8> >(frsky.varioSource, &telemetryVarioSourceConversionTable, "Vario Source"));
Append(new SignedField<8>(frsky.varioCenterMax));
Append(new SignedField<8>(frsky.varioCenterMin));
Append(new SignedField<8>(frsky.varioMin));
@@ -2325,7 +2332,7 @@ class FrskyField: public StructField {
protected:
RSSIConversionTable rssiConversionTable[2];
- VarioConversionTable varioConversionTable;
+ TelemetryVarioSourceConversionTable telemetryVarioSourceConversionTable;
TelemetryVoltsSourceConversionTable telemetryVoltsSourceConversionTable;
TelemetryCurrentSourceConversionTable telemetryCurrentSourceConversionTable;
};
diff --git a/companion/src/firmwares/opentx/opentxinterface.cpp b/companion/src/firmwares/opentx/opentxinterface.cpp
index 7e72ed3fa..55cd885d3 100644
--- a/companion/src/firmwares/opentx/opentxinterface.cpp
+++ b/companion/src/firmwares/opentx/opentxinterface.cpp
@@ -621,7 +621,7 @@ int OpenTxFirmware::getCapability(const Capability capability)
case OptrexDisplay:
return (board==BOARD_SKY9X ? true : false);
case HasVario:
- return (IS_TARANIS(board) ? 28 : 31);
+ return 1;
case HasVarioSink:
return ((board == BOARD_GRUVIN9X || IS_ARM(board)) ? true : false);
case HasVariants:
diff --git a/companion/src/modeledit/telemetry.cpp b/companion/src/modeledit/telemetry.cpp
index 4456d6f4c..5a21e01e5 100644
--- a/companion/src/modeledit/telemetry.cpp
+++ b/companion/src/modeledit/telemetry.cpp
@@ -589,24 +589,15 @@ void TelemetryPanel::setup()
ui->varioLimitMin_DSB->setValue(model.frsky.varioMin-10);
ui->varioLimitMax_DSB->setValue(model.frsky.varioMax+10);
ui->varioLimitCenterMax_DSB->setValue((model.frsky.varioCenterMax/10.0)+0.5);
- ui->varioSourceCB->setCurrentIndex(model.frsky.varioSource);
if (model.frsky.varioCenterMin==-16) {
ui->varioLimitMinOff_ChkB->setChecked(true);
ui->varioLimitCenterMin_DSB->setValue(-2.0);
ui->varioLimitCenterMin_DSB->setDisabled(true);
- } else {
+ }
+ else {
ui->varioLimitMinOff_ChkB->setChecked(false);
ui->varioLimitCenterMin_DSB->setValue((model.frsky.varioCenterMin/10.0)-0.5);
}
- int mask=1;
- for (int i=0; i< ui->varioSourceCB->count(); i++) {
- if (!(varioCap&mask)) {
- QModelIndex index = ui->varioSourceCB->model()->index(i, 0);
- QVariant v(0);
- ui->varioSourceCB->model()->setData(index, v, Qt::UserRole - 1);
- }
- mask <<=1;
- }
}
if (!(firmware->getCapability(HasAltitudeSel)||firmware->getCapability(HasVario))) {
@@ -668,10 +659,27 @@ void TelemetryPanel::setup()
populateVoltsSource();
populateCurrentSource();
+ populateVarioSource();
lock = false;
}
+void TelemetryPanel::populateVarioSource()
+{
+ QUnsignedAutoComboBox * cb = ui->varioSourceCB;
+ cb->setField(&model.frsky.varioSource, this);
+ if (!IS_TARANIS(firmware->getBoard())) {
+ cb->addItem(tr("Alti"), TELEMETRY_VARIO_SOURCE_ALTI);
+ cb->addItem(tr("Alti+"), TELEMETRY_VARIO_SOURCE_ALTI_PLUS);
+ }
+ cb->addItem(tr("VSpeed"), TELEMETRY_VARIO_SOURCE_VSPEED);
+ cb->addItem(tr("A1"), TELEMETRY_VARIO_SOURCE_A1);
+ cb->addItem(tr("A2"), TELEMETRY_VARIO_SOURCE_A2);
+ if (IS_TARANIS(firmware->getBoard())) {
+ cb->addItem(tr("dTE"), TELEMETRY_VARIO_SOURCE_DTE);
+ }
+}
+
void TelemetryPanel::populateVoltsSource()
{
QUnsignedAutoComboBox * cb = ui->frskyVoltCB;
@@ -762,12 +770,6 @@ void TelemetryPanel::on_AltitudeToolbar_ChkB_toggled(bool checked)
emit modified();
}
-void TelemetryPanel::on_varioSourceCB_currentIndexChanged(int index)
-{
- model.frsky.varioSource = index;
- emit modified();
-}
-
void TelemetryPanel::on_varioLimitMin_DSB_editingFinished()
{
model.frsky.varioMin = round(ui->varioLimitMin_DSB->value()+10);
diff --git a/companion/src/modeledit/telemetry.h b/companion/src/modeledit/telemetry.h
index 2c1a0f833..ffc9c28c1 100644
--- a/companion/src/modeledit/telemetry.h
+++ b/companion/src/modeledit/telemetry.h
@@ -95,7 +95,6 @@ class TelemetryPanel : public ModelPanel
void on_rxbattAlarm1DSB_editingFinished();
void on_rxbattAlarm2DSB_editingFinished();
void on_AltitudeGPS_ChkB_toggled(bool checked);
- void on_varioSourceCB_currentIndexChanged(int index);
void on_varioLimitMin_DSB_editingFinished();
void on_varioLimitMax_DSB_editingFinished();
void on_varioLimitCenterMin_DSB_editingFinished();
@@ -113,6 +112,7 @@ class TelemetryPanel : public ModelPanel
void telBarUpdate();
void populateVoltsSource();
void populateCurrentSource();
+ void populateVarioSource();
};
#endif // TELEMETRY_H
diff --git a/companion/src/modeledit/telemetry.ui b/companion/src/modeledit/telemetry.ui
index 5e10c50ff..0a735d4fc 100644
--- a/companion/src/modeledit/telemetry.ui
+++ b/companion/src/modeledit/telemetry.ui
@@ -774,38 +774,13 @@
9
-
-
+
0
0
-
-
-
- Alti
-
-
- -
-
- Alti+
-
-
- -
-
- Vario
-
-
- -
-
- A1
-
-
- -
-
- A2
-
-
-
diff --git a/radio/src/myeeprom.h b/radio/src/myeeprom.h
index b4e44ad72..5073fc8d8 100644
--- a/radio/src/myeeprom.h
+++ b/radio/src/myeeprom.h
@@ -1113,7 +1113,7 @@ enum VarioSource {
VARIO_SOURCE_ALTI,
VARIO_SOURCE_ALTI_PLUS,
#endif
- VARIO_SOURCE_VARIO,
+ VARIO_SOURCE_VSPEED,
VARIO_SOURCE_A1,
VARIO_SOURCE_A2,
#if defined(FRSKY_SPORT)