From 1f0885dd4f4b081b5413789b41f9e966c1bc6b24 Mon Sep 17 00:00:00 2001 From: Alessio Morale Date: Wed, 9 Apr 2014 19:57:23 +0200 Subject: [PATCH] OP-975 Calibrating a single sensor doesn't mean reset the other... --- .../src/plugins/config/configrevowidget.cpp | 22 ++++++++++++++----- .../src/plugins/config/configrevowidget.h | 8 ++++++- 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/ground/openpilotgcs/src/plugins/config/configrevowidget.cpp b/ground/openpilotgcs/src/plugins/config/configrevowidget.cpp index 6faef0f9b..d0c36a934 100644 --- a/ground/openpilotgcs/src/plugins/config/configrevowidget.cpp +++ b/ground/openpilotgcs/src/plugins/config/configrevowidget.cpp @@ -435,8 +435,10 @@ void ConfigRevoWidget::doStartSixPointCalibration(bool calibrateAccel, bool cali Q_ASSERT(revoCalibration); Q_ASSERT(homeLocation); RevoCalibration::DataFields revoCalibrationData = revoCalibration->getData(); + savedSettings.revoCalibration = revoCalibration->getData(); HomeLocation::DataFields homeLocationData = homeLocation->getData(); AccelGyroSettings::DataFields accelGyroSettingsData = accelGyroSettings->getData(); + savedSettings.accelGyroSettings = accelGyroSettings->getData(); // check if Homelocation is set if (!homeLocationData.Set) { @@ -721,14 +723,22 @@ void ConfigRevoWidget::computeScaleBias(bool mag, bool accel) accelGyroSettingsData.accel_bias[AccelGyroSettings::ACCEL_BIAS_Z]; } if (good_calibration) { - revoCalibration->setData(revoCalibrationData); - accelGyroSettings->setData(accelGyroSettingsData); + if(mag){ + revoCalibration->setData(revoCalibrationData); + } else { + revoCalibration->setData(savedSettings.revoCalibration); + } + + if(accel){ + accelGyroSettings->setData(accelGyroSettingsData); + } else { + accelGyroSettings->setData(savedSettings.accelGyroSettings); + } m_ui->sixPointCalibInstructions->append("Computed sensor scale and bias..."); - } else { - revoCalibrationData = revoCalibration->getData(); - accelGyroSettingsData = accelGyroSettings->getData(); - m_ui->sixPointCalibInstructions->append("Bad calibration. Please repeat."); } + + m_ui->sixPointCalibInstructions->append("Bad calibration. Please repeat."); + position = -1; // set to run again } diff --git a/ground/openpilotgcs/src/plugins/config/configrevowidget.h b/ground/openpilotgcs/src/plugins/config/configrevowidget.h index 0c46880a0..53bf3ce9f 100644 --- a/ground/openpilotgcs/src/plugins/config/configrevowidget.h +++ b/ground/openpilotgcs/src/plugins/config/configrevowidget.h @@ -43,9 +43,13 @@ #include "calibration/thermal/thermalcalibrationmodel.h" class Ui_Widget; + class ConfigRevoWidget : public ConfigTaskWidget { Q_OBJECT - + typedef struct { + RevoCalibration::DataFields revoCalibration; + AccelGyroSettings::DataFields accelGyroSettings; + } SavedSettings; public: ConfigRevoWidget(QWidget *parent = 0); ~ConfigRevoWidget(); @@ -56,6 +60,8 @@ private: // ! Computes the scale and bias of the mag based on collected data void computeScaleBias(bool mag, bool accel); + SavedSettings savedSettings; + OpenPilot::ThermalCalibrationModel *m_thermalCalibrationModel; Ui_RevoSensorsWidget *m_ui; QMutex sensorsUpdateLock;