From e4d6171f2c46c1fc3bada360ba982259fea4f120 Mon Sep 17 00:00:00 2001 From: m_thread Date: Sat, 20 Sep 2014 17:30:19 +0200 Subject: [PATCH] OP-1474 Moved TPS settings to PID banks. Rearranged GUI. --- .../config/configstabilizationwidget.cpp | 65 ++++++++++++++----- .../src/plugins/config/stabilization.ui | 26 ++++---- .../stabilizationsettings.xml | 4 -- 3 files changed, 62 insertions(+), 33 deletions(-) diff --git a/ground/openpilotgcs/src/plugins/config/configstabilizationwidget.cpp b/ground/openpilotgcs/src/plugins/config/configstabilizationwidget.cpp index 1e2258c0b..24a4f35d4 100644 --- a/ground/openpilotgcs/src/plugins/config/configstabilizationwidget.cpp +++ b/ground/openpilotgcs/src/plugins/config/configstabilizationwidget.cpp @@ -125,6 +125,9 @@ ConfigStabilizationWidget::ConfigStabilizationWidget(QWidget *parent) : ConfigTa connect(ui->advancedResponsivenessCheckBox, SIGNAL(toggled(bool)), this, SLOT(linkCheckBoxes(bool))); connect(ui->defaultThrottleCurveButton, SIGNAL(clicked()), this, SLOT(resetThrottleCurveToDefault())); + connect(ui->enableThrustPIDScalingCheckBox, SIGNAL(toggled(bool)), ui->ThrustPIDSource, SLOT(setEnabled(bool))); + connect(ui->enableThrustPIDScalingCheckBox, SIGNAL(toggled(bool)), ui->ThrustPIDTarget, SLOT(setEnabled(bool))); + connect(ui->enableThrustPIDScalingCheckBox, SIGNAL(toggled(bool)), ui->ThrustPIDAxis, SLOT(setEnabled(bool))); connect(ui->enableThrustPIDScalingCheckBox, SIGNAL(toggled(bool)), ui->thrustPIDScalingCurve, SLOT(setEnabled(bool))); ui->thrustPIDScalingCurve->setMixerType(MixerCurve::MIXERCURVE_TPA); ui->thrustPIDScalingCurve->setMin(-1); @@ -134,7 +137,6 @@ ConfigStabilizationWidget::ConfigStabilizationWidget(QWidget *parent) : ConfigTa addWidget(ui->enableThrustPIDScalingCheckBox); addWidget(ui->thrustPIDScalingCurve); addWidget(ui->thrustPIDScalingCurve->getCurveWidget()); - connect(this, SIGNAL(widgetContentsChanged(QWidget *)), this, SLOT(processLinkedWidgets(QWidget *))); connect(this, SIGNAL(autoPilotConnected()), this, SLOT(onBoardConnected())); @@ -166,45 +168,73 @@ void ConfigStabilizationWidget::updateObjectsFromWidgets() void ConfigStabilizationWidget::updateThrottleCurveFromObject() { - StabilizationSettings *stabSettings = dynamic_cast(getObjectManager()->getObject(QString("StabilizationSettings"))); + UAVObject *stabBank = getObjectManager()->getObject(QString(m_pidTabBars.at(0)->tabData(m_currentPIDBank).toString())); + Q_ASSERT(stabBank); + qDebug() << "updatingCurveFromObject" << stabBank->getName(); - Q_ASSERT(stabSettings); + UAVObjectField *field = stabBank->getField("ThrustPIDScaleCurve"); + Q_ASSERT(field); QList curve; - for (quint32 i = 0; i < StabilizationSettings::THRUSTPIDSCALECURVE_NUMELEM; i++) { - curve.append(stabSettings->getThrustPIDScaleCurve(i)); + for (quint32 i = 0; i < field->getNumElements(); i++) { + qDebug() << field->getName() << field->getElementNames().at(i) << "=>" << field->getValue(i); + curve.append(field->getValue(i).toDouble()); } ui->thrustPIDScalingCurve->setCurve(&curve); - ui->enableThrustPIDScalingCheckBox->setChecked(stabSettings->getEnableThrustPIDScaling() == StabilizationSettings::ENABLETHRUSTPIDSCALING_TRUE); - ui->thrustPIDScalingCurve->setEnabled(stabSettings->getEnableThrustPIDScaling() == StabilizationSettings::ENABLETHRUSTPIDSCALING_TRUE); + + field = stabBank->getField("EnableThrustPIDScaling"); + Q_ASSERT(field); + + bool enabled = field->getValue() == "TRUE"; + ui->enableThrustPIDScalingCheckBox->setChecked(enabled); + ui->thrustPIDScalingCurve->setEnabled(enabled); } void ConfigStabilizationWidget::updateObjectFromThrottleCurve() { - StabilizationSettings *stabSettings = dynamic_cast(getObjectManager()->getObject(QString("StabilizationSettings"))); + UAVObject *stabBank = getObjectManager()->getObject(QString(m_pidTabBars.at(0)->tabData(m_currentPIDBank).toString())); + Q_ASSERT(stabBank); + qDebug() << "updatingObjectFromCurve" << stabBank->getName(); - Q_ASSERT(stabSettings); + UAVObjectField *field = stabBank->getField("ThrustPIDScaleCurve"); + Q_ASSERT(field); QList curve = ui->thrustPIDScalingCurve->getCurve(); - for (quint32 i = 0; i < StabilizationSettings::THRUSTPIDSCALECURVE_NUMELEM; i++) { - stabSettings->setThrustPIDScaleCurve(i, curve.at(i)); + for (quint32 i = 0; i < field->getNumElements(); i++) { + field->setValue(curve.at(i), i); + qDebug() << field->getName() << field->getElementNames().at(i) << "<=" << curve.at(i); } - stabSettings->setEnableThrustPIDScaling(ui->enableThrustPIDScalingCheckBox->isChecked() ? - StabilizationSettings::ENABLETHRUSTPIDSCALING_TRUE : StabilizationSettings::ENABLETHRUSTPIDSCALING_FALSE); + field = stabBank->getField("EnableThrustPIDScaling"); + Q_ASSERT(field); + field->setValue(ui->enableThrustPIDScalingCheckBox->isChecked() ? "TRUE" : "FALSE"); } void ConfigStabilizationWidget::resetThrottleCurveToDefault() { - StabilizationSettings defaultSettings; + UAVDataObject *defaultStabBank = (UAVDataObject*)getObjectManager()->getObject(QString(m_pidTabBars.at(0)->tabData(m_currentPIDBank).toString())); + Q_ASSERT(defaultStabBank); + defaultStabBank = defaultStabBank->dirtyClone(); + + UAVObjectField *field = defaultStabBank->getField("ThrustPIDScaleCurve"); + Q_ASSERT(field); QList curve; - for (quint32 i = 0; i < StabilizationSettings::THRUSTPIDSCALECURVE_NUMELEM; i++) { - curve.append(defaultSettings.getThrustPIDScaleCurve(i)); + for (quint32 i = 0; i < field->getNumElements(); i++) { + curve.append(field->getValue(i).toDouble()); } ui->thrustPIDScalingCurve->setCurve(&curve); + + field = defaultStabBank->getField("EnableThrustPIDScaling"); + Q_ASSERT(field); + + bool enabled = field->getValue() == "TRUE"; + ui->enableThrustPIDScalingCheckBox->setChecked(enabled); + ui->thrustPIDScalingCurve->setEnabled(enabled); + + delete defaultStabBank; } void ConfigStabilizationWidget::realtimeUpdatesSlot(bool value) @@ -300,6 +330,7 @@ void ConfigStabilizationWidget::onBoardConnected() void ConfigStabilizationWidget::pidBankChanged(int index) { + updateObjectFromThrottleCurve(); foreach(QTabBar * tabBar, m_pidTabBars) { disconnect(tabBar, SIGNAL(currentChanged(int)), this, SLOT(pidBankChanged(int))); tabBar->setCurrentIndex(index); @@ -313,6 +344,8 @@ void ConfigStabilizationWidget::pidBankChanged(int index) setWidgetBindingObjectEnabled(m_pidTabBars.at(0)->tabData(index).toString(), true); m_currentPIDBank = index; + qDebug() << "current bank:" << m_currentPIDBank; + updateThrottleCurveFromObject(); } bool ConfigStabilizationWidget::shouldObjectBeSaved(UAVObject *object) diff --git a/ground/openpilotgcs/src/plugins/config/stabilization.ui b/ground/openpilotgcs/src/plugins/config/stabilization.ui index 26d274637..67368f799 100644 --- a/ground/openpilotgcs/src/plugins/config/stabilization.ui +++ b/ground/openpilotgcs/src/plugins/config/stabilization.ui @@ -6,8 +6,8 @@ 0 0 - 839 - 785 + 882 + 789 @@ -136,8 +136,8 @@ 0 0 - 801 - 726 + 860 + 703 @@ -7836,8 +7836,8 @@ border-radius: 5; 0 - -299 - 801 + 0 + 844 998 @@ -16207,7 +16207,7 @@ border-radius: 5; - + QFrame::NoFrame @@ -16836,7 +16836,7 @@ border-radius: 5; - + objname:StabilizationSettingsBankX fieldname:ThrustPIDScaleSource @@ -17961,7 +17961,7 @@ border-radius: 5; objname:StabilizationSettingsBankX - fieldname:ThrustPIDScaleAxis + fieldname:ThrustPIDScaleAxes buttongroup:99 @@ -18103,8 +18103,8 @@ border-radius: 5; 0 0 - 817 - 699 + 860 + 703 @@ -24046,8 +24046,8 @@ font:bold; 0 0 - 817 - 699 + 860 + 703 diff --git a/shared/uavobjectdefinition/stabilizationsettings.xml b/shared/uavobjectdefinition/stabilizationsettings.xml index be805b737..a79798b4c 100644 --- a/shared/uavobjectdefinition/stabilizationsettings.xml +++ b/shared/uavobjectdefinition/stabilizationsettings.xml @@ -47,10 +47,6 @@ - - - -