From 111dcd704f30b5877962c34bad7e903fb027a572 Mon Sep 17 00:00:00 2001 From: Philippe Renon Date: Fri, 30 May 2014 19:02:21 +0200 Subject: [PATCH] OP-1351 SixPointCalibrationModel will now only save relevant parts of uavobjects to avoid stomping irrelevant parts --- .../calibration/sixpointcalibrationmodel.cpp | 24 +++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/ground/openpilotgcs/src/plugins/config/calibration/sixpointcalibrationmodel.cpp b/ground/openpilotgcs/src/plugins/config/calibration/sixpointcalibrationmodel.cpp index 272c20059..62ea2458e 100644 --- a/ground/openpilotgcs/src/plugins/config/calibration/sixpointcalibrationmodel.cpp +++ b/ground/openpilotgcs/src/plugins/config/calibration/sixpointcalibrationmodel.cpp @@ -469,8 +469,28 @@ void SixPointCalibrationModel::save() if (!m_dirty) { return; } - revoCalibration->setData(result.revoCalibrationData); - accelGyroSettings->setData(result.accelGyroSettingsData); + if (calibratingMag) { + RevoCalibration::DataFields revoCalibrationData = revoCalibration->getData(); + + for (int i = 0; i < RevoCalibration::MAG_TRANSFORM_R2C2; i++) { + revoCalibrationData.mag_transform[i] = result.revoCalibrationData.mag_transform[i]; + } + for (int i = 0; i < 3; i++) { + revoCalibrationData.mag_bias[i] = result.revoCalibrationData.mag_bias[i]; + } + + revoCalibration->setData(revoCalibrationData); + } + if (calibratingAccel) { + AccelGyroSettings::DataFields accelGyroSettingsData = accelGyroSettings->getData(); + + for (int i = 0; i < 3; i++) { + accelGyroSettingsData.accel_scale[i] = result.accelGyroSettingsData.accel_scale[i]; + accelGyroSettingsData.accel_bias[i] = result.accelGyroSettingsData.accel_bias[i]; + } + + accelGyroSettings->setData(accelGyroSettingsData); + } m_dirty = false; }