diff --git a/src/ui/configuration/AccelCalibrationConfig.cc b/src/ui/configuration/AccelCalibrationConfig.cc index b861e6e78cf5e5612ed9f4eb293ae2e2c103db18..eedd35e963b0bd9cb266551c15b9038107667b07 100644 --- a/src/ui/configuration/AccelCalibrationConfig.cc +++ b/src/ui/configuration/AccelCalibrationConfig.cc @@ -3,9 +3,91 @@ AccelCalibrationConfig::AccelCalibrationConfig(QWidget *parent) : QWidget(parent) { + m_uas=0; ui.setupUi(this); + connect(ui.calibrateAccelButton,SIGNAL(clicked()),this,SLOT(calibrateButtonClicked())); + + connect(UASManager::instance(),SIGNAL(activeUASSet(UASInterface*)),this,SLOT(activeUASSet(UASInterface*))); + activeUASSet(UASManager::instance()->getActiveUAS()); + accelAckCount=0; } AccelCalibrationConfig::~AccelCalibrationConfig() { } +void AccelCalibrationConfig::activeUASSet(UASInterface *uas) +{ + if (!uas) + { + return; + } + if (m_uas) + { + } + m_uas = uas; + connect(m_uas,SIGNAL(textMessageReceived(int,int,int,QString)),this,SLOT(uasTextMessageReceived(int,int,int,QString))); +} + +void AccelCalibrationConfig::calibrateButtonClicked() +{ + if (accelAckCount == 0) + { + MAV_CMD command = MAV_CMD_PREFLIGHT_CALIBRATION; + int confirm = 0; + float param1 = 0; + float param2 = 0; + float param3 = 0; + float param4 = 0; + float param5 = 1; + float param6 = 0; + float param7 = 0; + int component = 1; + m_uas->executeCommand(command, confirm, param1, param2, param3, param4, param5, param6, param7, component); + } + else if (accelAckCount <= 5) + { + m_uas->executeCommandAck(accelAckCount++,true); + } + else + { + m_uas->executeCommandAck(accelAckCount++,true); + ui.calibrateAccelButton->setText("Calibrate\nAccelerometer"); + //accelAckCount = 0; + } + +} +void AccelCalibrationConfig::uasTextMessageReceived(int uasid, int componentid, int severity, QString text) +{ + //command received: " Severity 1 + //Place APM Level and press any key" severity 5 + if (severity == 5) + { + //This is a calibration instruction + if (accelAckCount == 0) + { + //Calibration Sucessful\r" + ui.calibrateAccelButton->setText("Any\nKey"); + accelAckCount++; + } + if (accelAckCount == 7) + { + //All finished + //ui.outputLabel->setText(ui.outputLabel->text() + "\n" + text); + ui.outputLabel->setText(text); + accelAckCount++; + } + if (accelAckCount == 8) + { + if (text.contains("Calibration") && text.contains("successful")) + { + accelAckCount = 0; + } + ui.outputLabel->setText(ui.outputLabel->text() + "\n" + text); + } + else + { + ui.outputLabel->setText(text); + } + } + +} diff --git a/src/ui/configuration/AccelCalibrationConfig.h b/src/ui/configuration/AccelCalibrationConfig.h index 51ae8d76f6fff26d717aab0cd2ce642b975d5b8a..a9e5f20534d4ab66ebc87a58c95dd8640b1cc4af 100644 --- a/src/ui/configuration/AccelCalibrationConfig.h +++ b/src/ui/configuration/AccelCalibrationConfig.h @@ -3,7 +3,8 @@ #include #include "ui_AccelCalibrationConfig.h" - +#include "UASManager.h" +#include "UASInterface.h" class AccelCalibrationConfig : public QWidget { Q_OBJECT @@ -11,9 +12,14 @@ class AccelCalibrationConfig : public QWidget public: explicit AccelCalibrationConfig(QWidget *parent = 0); ~AccelCalibrationConfig(); - +private slots: + void activeUASSet(UASInterface *uas); + void calibrateButtonClicked(); + void uasTextMessageReceived(int uasid, int componentid, int severity, QString text); private: + int accelAckCount; Ui::AccelCalibrationConfig ui; + UASInterface *m_uas; }; #endif // ACCELCALIBRATIONCONFIG_H diff --git a/src/ui/configuration/AccelCalibrationConfig.ui b/src/ui/configuration/AccelCalibrationConfig.ui index 43ca6a1536ad76dfecd97ddcd0ea7f1a60547c9b..a1b99045e6bb722490a4ceefb2eebec1e7b946f4 100644 --- a/src/ui/configuration/AccelCalibrationConfig.ui +++ b/src/ui/configuration/AccelCalibrationConfig.ui @@ -32,8 +32,8 @@ - 60 - 60 + 70 + 160 81 31 @@ -43,13 +43,13 @@ Accelerometer - + - 40 - 120 - 161 - 51 + 20 + 50 + 211 + 91