From 61923a9bec80aaf1bb8e6ee5b1289caead8c6461 Mon Sep 17 00:00:00 2001 From: bsongis Date: Wed, 4 Jun 2014 09:02:05 +0200 Subject: [PATCH] Fixes #1172 --- companion/src/eeprominterface.cpp | 17 +++++++++++++++++ companion/src/eeprominterface.h | 4 ++++ companion/src/modeledit/flightmodes.cpp | 12 ++---------- 3 files changed, 23 insertions(+), 10 deletions(-) diff --git a/companion/src/eeprominterface.cpp b/companion/src/eeprominterface.cpp index c990ce8b7..16318dd0c 100644 --- a/companion/src/eeprominterface.cpp +++ b/companion/src/eeprominterface.cpp @@ -1164,6 +1164,23 @@ int ModelData::getTrimValue(int phaseIdx, int trimIdx) return 0; } +bool ModelData::isGVarLinked(int phaseIdx, int gvarIdx) +{ + return phaseData[phaseIdx].gvars[gvarIdx] > 1024; +} + +int ModelData::getGVarValue(int phaseIdx, int gvarIdx) +{ + int idx = phaseData[phaseIdx].gvars[gvarIdx]; + for (int i=0; idx>1024 && i= phaseIdx) nextPhase += 1; + phaseIdx = nextPhase; + idx = phaseData[phaseIdx].gvars[gvarIdx]; + } + return idx; +} + void ModelData::setTrimValue(int phaseIdx, int trimIdx, int value) { for (uint8_t i=0; isetText(model.gvars_names[i]); - gvValues[i]->setDisabled(false); - int idx = phase.gvars[i]; - PhaseData *phasegvar = &phase; - while (idx > 1024) { - idx -= 1025; - phasegvar = &model.phaseData[idx]; - idx = phasegvar->gvars[i]; - gvValues[i]->setDisabled(true); - } + gvValues[i]->setDisabled(model.isGVarLinked(phaseIdx, i)); if (IS_TARANIS(GetEepromInterface()->getBoard())) { - gvValues[i]->setValue(phasegvar->gvars[i]); + gvValues[i]->setValue(model.getGVarValue(phaseIdx, i)); if (phaseIdx == 0) gvPopups[i]->setChecked(model.gvars_popups[i]); }