From b2f67f060e94d658e76f39bc58a8626433ca46ed Mon Sep 17 00:00:00 2001 From: Bryan Godbolt Date: Tue, 21 Sep 2010 14:47:36 -0600 Subject: [PATCH] working on radio calibration --- src/ui/QGCRemoteControlView.cc | 1 + .../RadioCalibrationWindow.cc | 78 +++++++++++++++++++ .../RadioCalibration/RadioCalibrationWindow.h | 60 ++++++++++++++ 3 files changed, 139 insertions(+) diff --git a/src/ui/QGCRemoteControlView.cc b/src/ui/QGCRemoteControlView.cc index 95f2f4d877..8b28f800e7 100644 --- a/src/ui/QGCRemoteControlView.cc +++ b/src/ui/QGCRemoteControlView.cc @@ -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))); diff --git a/src/ui/RadioCalibration/RadioCalibrationWindow.cc b/src/ui/RadioCalibration/RadioCalibrationWindow.cc index 12b2512410..0d7f3e8ac4 100644 --- a/src/ui/RadioCalibration/RadioCalibrationWindow.cc +++ b/src/ui/RadioCalibration/RadioCalibrationWindow.cc @@ -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 >(); +} + +RadioCalibrationWindow::RadioCalibrationData::RadioCalibrationData(const QVector &aileron, + const QVector &elevator, + const QVector &rudder, + const QVector &gyro, + const QVector &pitch, + const QVector &throttle, + RadioCalibrationWindow *parent) + :parent(parent) +{ + data = new QVector >(); + (*data) << aileron + << elevator + << rudder + << gyro + << pitch + << throttle; +} + +RadioCalibrationWindow::RadioCalibrationData::RadioCalibrationData(RadioCalibrationData &other) + :parent(other.parent) +{ + data = new QVector >(*other.data); +} + +void RadioCalibrationWindow::RadioCalibrationData::saveFile() +{ + +} + +void RadioCalibrationWindow::RadioCalibrationData::loadFile() +{ + +} + +void RadioCalibrationWindow::RadioCalibrationData::send() +{ +#ifdef MAVLINK_ENABLE_UALBERTA_MESSAGES + UAS *uas = dynamic_cast(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; +} diff --git a/src/ui/RadioCalibration/RadioCalibrationWindow.h b/src/ui/RadioCalibration/RadioCalibrationWindow.h index be3c1b09c8..1b10489b96 100644 --- a/src/ui/RadioCalibration/RadioCalibrationWindow.h +++ b/src/ui/RadioCalibration/RadioCalibrationWindow.h @@ -7,14 +7,21 @@ #include #include #include +#include +#include #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& aileron, + const QVector& elevator, + const QVector& rudder, + const QVector& gyro, + const QVector& pitch, + const QVector& 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 > *data; + int uasID; + + void init(const QVector& aileron, + const QVector& elevator, + const QVector& rudder, + const QVector& gyro, + const QVector& pitch, + const QVector& throttle); + + private: + RadioCalibrationWindow *parent; + + + }; + + RadioCalibrationData *radio; }; #endif // RADIOCALIBRATIONWINDOW_H -- GitLab