From 4dbb954de8c7257c32a49801c46d60191c24fd8b Mon Sep 17 00:00:00 2001 From: Michael Carpenter Date: Tue, 30 Jul 2013 21:09:04 -0400 Subject: [PATCH] Fix for accelerometer config failure leading to inability to recalibrate. Also changing screen will void calibration and require recalibration. --- .../configuration/AccelCalibrationConfig.cc | 34 +++++++++++++++++-- src/ui/configuration/AccelCalibrationConfig.h | 2 ++ 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/src/ui/configuration/AccelCalibrationConfig.cc b/src/ui/configuration/AccelCalibrationConfig.cc index a92702482..f552580d1 100644 --- a/src/ui/configuration/AccelCalibrationConfig.cc +++ b/src/ui/configuration/AccelCalibrationConfig.cc @@ -57,9 +57,29 @@ void AccelCalibrationConfig::calibrateButtonClicked() { m_uas->executeCommandAck(m_accelAckCount++,true); ui.calibrateAccelButton->setText("Calibrate\nAccelerometer"); + if (m_accelAckCount > 8) + { + //We've clicked too many times! Reset. + for (int i=0;i<8;i++) + { + m_uas->executeCommandAck(i,true); + } + m_accelAckCount = 0; + } } } +void AccelCalibrationConfig::hideEvent(QHideEvent *evt) +{ + if (!m_uas || !m_accelAckCount) + { + return; + } + for (int i=m_accelAckCount;i<8;i++) + { + m_uas->executeCommandAck(i,true); //Clear out extra commands. + } +} void AccelCalibrationConfig::uasTextMessageReceived(int uasid, int componentid, int severity, QString text) { //command received: " Severity 1 @@ -70,7 +90,7 @@ void AccelCalibrationConfig::uasTextMessageReceived(int uasid, int componentid, if (m_accelAckCount == 0) { //Calibration Sucessful\r" - ui.calibrateAccelButton->setText("Any\nKey"); + ui.calibrateAccelButton->setText("Continue"); m_accelAckCount++; } if (m_accelAckCount == 7) @@ -86,11 +106,21 @@ void AccelCalibrationConfig::uasTextMessageReceived(int uasid, int componentid, { m_accelAckCount = 0; } + else if (text.contains("Calibration") && text.contains("FAILED")) //Failure + { + m_accelAckCount = 0; + } ui.outputLabel->setText(ui.outputLabel->text() + "\n" + text); } else { - ui.outputLabel->setText(text); + ui.outputLabel->setText(text.replace("press any key","click Continue below")); + if (!this->isVisible()) + { + //Clear out! + m_uas->executeCommandAck(m_accelAckCount++,true); + ui.calibrateAccelButton->setText("Calibrate\nAccelerometer"); + } } } diff --git a/src/ui/configuration/AccelCalibrationConfig.h b/src/ui/configuration/AccelCalibrationConfig.h index ef6f6e1a1..152656253 100644 --- a/src/ui/configuration/AccelCalibrationConfig.h +++ b/src/ui/configuration/AccelCalibrationConfig.h @@ -14,6 +14,8 @@ class AccelCalibrationConfig : public AP2ConfigWidget public: explicit AccelCalibrationConfig(QWidget *parent = 0); ~AccelCalibrationConfig(); +protected: + void hideEvent(QHideEvent *evt); private slots: void activeUASSet(UASInterface *uas); void calibrateButtonClicked(); -- 2.22.0