AccelCalibrationConfig.cc 2.77 KB
Newer Older
1 2 3
#include "AccelCalibrationConfig.h"


4
AccelCalibrationConfig::AccelCalibrationConfig(QWidget *parent) : AP2ConfigWidget(parent)
5
{
6
    m_uas=0;
7
    ui.setupUi(this);
8 9 10 11
    connect(ui.calibrateAccelButton,SIGNAL(clicked()),this,SLOT(calibrateButtonClicked()));

    connect(UASManager::instance(),SIGNAL(activeUASSet(UASInterface*)),this,SLOT(activeUASSet(UASInterface*)));
    activeUASSet(UASManager::instance()->getActiveUAS());
12
    m_accelAckCount=0;
13 14 15 16 17
}

AccelCalibrationConfig::~AccelCalibrationConfig()
{
}
18 19
void AccelCalibrationConfig::activeUASSet(UASInterface *uas)
{
20
    if (m_uas)
21
    {
22
        disconnect(m_uas,SIGNAL(textMessageReceived(int,int,int,QString)),this,SLOT(uasTextMessageReceived(int,int,int,QString)));
23
    }
24 25
    AP2ConfigWidget::activeUASSet(uas);
    if (!uas)
26
    {
27
        return;
28 29
    }
    connect(m_uas,SIGNAL(textMessageReceived(int,int,int,QString)),this,SLOT(uasTextMessageReceived(int,int,int,QString)));
30

31 32 33 34
}

void AccelCalibrationConfig::calibrateButtonClicked()
{
35 36 37 38 39 40
    if (!m_uas)
    {
        showNullMAVErrorMessageBox();
        return;
    }
    if (m_accelAckCount == 0)
41 42 43
    {
        MAV_CMD command = MAV_CMD_PREFLIGHT_CALIBRATION;
        int confirm = 0;
44 45 46 47 48 49 50
        float param1 = 0.0;
        float param2 = 0.0;
        float param3 = 0.0;
        float param4 = 0.0;
        float param5 = 1.0;
        float param6 = 0.0;
        float param7 = 0.0;
51 52 53
        int component = 1;
        m_uas->executeCommand(command, confirm, param1, param2, param3, param4, param5, param6, param7, component);
    }
54
    else if (m_accelAckCount <= 5)
55
    {
56
        m_uas->executeCommandAck(m_accelAckCount++,true);
57 58 59
    }
    else
    {
60
        m_uas->executeCommandAck(m_accelAckCount++,true);
61 62 63 64 65 66 67 68 69 70 71
        ui.calibrateAccelButton->setText("Calibrate\nAccelerometer");
    }

}
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
72
        if (m_accelAckCount == 0)
73 74 75
        {
            //Calibration Sucessful\r"
            ui.calibrateAccelButton->setText("Any\nKey");
76
            m_accelAckCount++;
77
        }
78
        if (m_accelAckCount == 7)
79 80 81 82
        {
            //All finished
            //ui.outputLabel->setText(ui.outputLabel->text() + "\n" + text);
            ui.outputLabel->setText(text);
83
            m_accelAckCount++;
84
        }
85
        if (m_accelAckCount == 8)
86 87 88
        {
            if (text.contains("Calibration") && text.contains("successful"))
            {
89
                m_accelAckCount = 0;
90 91 92 93 94 95 96 97 98 99
            }
            ui.outputLabel->setText(ui.outputLabel->text() + "\n" + text);
        }
        else
        {
            ui.outputLabel->setText(text);
        }
    }

}