Commit b2f67f06 authored by Bryan Godbolt's avatar Bryan Godbolt
Browse files

working on radio calibration

parent 596ba778
......@@ -107,6 +107,7 @@ void QGCRemoteControlView::setUASId(int id)
{
// New UAS exists, connect
nameLabel->setText(QString("RC Input of %1").arg(newUAS->getUASName()));
calibrationWindow->setUASId(id);
connect(newUAS, SIGNAL(remoteControlChannelChanged(int,float,float)), this, SLOT(setChannel(int,float,float)));
connect(newUAS, SIGNAL(remoteControlChannelChanged(int,float,float)), calibrationWindow, SLOT(setChannel(int,float,float)));
connect(newUAS, SIGNAL(remoteControlRSSIChanged(float)), this, SLOT(setRemoteRSSI(float)));
......
......@@ -24,6 +24,8 @@ RadioCalibrationWindow::RadioCalibrationWindow(QWidget *parent) :
throttle = new CurveCalibrator(tr("Throttle"));
grid->addWidget(throttle, 1, 2, 1, 2);
/* Buttons for loading/transmitting calibration data */
QHBoxLayout *hbox = new QHBoxLayout();
this->setLayout(grid);
}
......@@ -56,3 +58,79 @@ void RadioCalibrationWindow::setChannel(int ch, float raw, float normalized)
}
}
/*
** RadioCalibrationData Function Definitions **
*/
RadioCalibrationWindow::RadioCalibrationData::RadioCalibrationData(RadioCalibrationWindow *parent)
:parent(parent)
{
data = new QVector<QVector<float> >();
}
RadioCalibrationWindow::RadioCalibrationData::RadioCalibrationData(const QVector<float> &aileron,
const QVector<float> &elevator,
const QVector<float> &rudder,
const QVector<float> &gyro,
const QVector<float> &pitch,
const QVector<float> &throttle,
RadioCalibrationWindow *parent)
:parent(parent)
{
data = new QVector<QVector<float> >();
(*data) << aileron
<< elevator
<< rudder
<< gyro
<< pitch
<< throttle;
}
RadioCalibrationWindow::RadioCalibrationData::RadioCalibrationData(RadioCalibrationData &other)
:parent(other.parent)
{
data = new QVector<QVector<float> >(*other.data);
}
void RadioCalibrationWindow::RadioCalibrationData::saveFile()
{
}
void RadioCalibrationWindow::RadioCalibrationData::loadFile()
{
}
void RadioCalibrationWindow::RadioCalibrationData::send()
{
#ifdef MAVLINK_ENABLE_UALBERTA_MESSAGES
UAS *uas = dynamic_cast<UAS>(UASManager::instance()->getUASForId(uasId));
if (uas)
{
qDebug()<< "we have a uas";
mavlink_message_t msg;
mavlink_msg_radio_calibration_pack(uasId, 0, &msg,
(*data)[AILERON].constData(),
(*data)[ELEVATOR].constData(),
(*data)[RUDDER].constData(),
(*data)[GYRO].constData(),
(*data)[PITCH].constData(),
(*data)[THROTTLE].constData());
uas.sendMessage(msg);
}
#endif
}
void RadioCalibrationWindow::RadioCalibrationData::receive()
{
}
void RadioCalibrationWindow::RadioCalibrationData::setUASId(int id)
{
this->uasID = id;
}
......@@ -7,14 +7,21 @@
#include <QPushButton>
#include <QVector>
#include <QGridLayout>
#include <QHBoxLayout>
#include <QDebug>
#include "AirfoilServoCalibrator.h"
#include "SwitchCalibrator.h"
#include "CurveCalibrator.h"
#include "UASManager.h"
#include "UASInterface.h"
#include "mavlink.h"
class RadioCalibrationWindow : public QWidget
{
Q_OBJECT
public:
explicit RadioCalibrationWindow(QWidget *parent = 0);
......@@ -22,6 +29,12 @@ signals:
public slots:
void setChannel(int ch, float raw, float normalized);
void loadFile() {this->radio->loadFile();}
void saveFile() {this->radio->saveFile();}
void send() {this->radio->send();}
void receive() {this->radio->receive();}
void setUASId(int id) {this->radio->setUASId(id);}
protected:
AirfoilServoCalibrator *aileron;
......@@ -31,6 +44,53 @@ protected:
CurveCalibrator *pitch;
CurveCalibrator *throttle;
class RadioCalibrationData
{
public:
explicit RadioCalibrationData(RadioCalibrationWindow *parent=0);
RadioCalibrationData(RadioCalibrationData&);
RadioCalibrationData(const QVector<float>& aileron,
const QVector<float>& elevator,
const QVector<float>& rudder,
const QVector<float>& gyro,
const QVector<float>& pitch,
const QVector<float>& throttle,
RadioCalibrationWindow *parent=0);
enum RadioElement
{
AILERON=0,
ELEVATOR,
RUDDER,
GYRO,
PITCH,
THROTTLE
};
void loadFile();
void saveFile();
void send();
void receive();
void setUASId(int id);
protected:
QVector<QVector<float> > *data;
int uasID;
void init(const QVector<float>& aileron,
const QVector<float>& elevator,
const QVector<float>& rudder,
const QVector<float>& gyro,
const QVector<float>& pitch,
const QVector<float>& throttle);
private:
RadioCalibrationWindow *parent;
};
RadioCalibrationData *radio;
};
#endif // RADIOCALIBRATIONWINDOW_H
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment