From 4acef445a3288e5a6f107e2bb22d0a298f1305fb Mon Sep 17 00:00:00 2001 From: bsongis Date: Sat, 31 May 2014 08:16:13 +0200 Subject: [PATCH] Companion Vario Sources were not in line with the firmware --- companion/src/eeprominterface.h | 9 +++++ .../src/firmwares/opentx/opentxeeprom.cpp | 39 +++++++++++-------- .../src/firmwares/opentx/opentxinterface.cpp | 2 +- companion/src/modeledit/telemetry.cpp | 36 +++++++++-------- companion/src/modeledit/telemetry.h | 2 +- companion/src/modeledit/telemetry.ui | 27 +------------ radio/src/myeeprom.h | 2 +- 7 files changed, 55 insertions(+), 62 deletions(-) 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)