From f6266e94e9b798569c87ce48b1c204980e7a0db7 Mon Sep 17 00:00:00 2001 From: pixhawk Date: Sun, 25 Jul 2010 11:23:22 +0200 Subject: [PATCH] Started to add support for autopilot firmware updates, added Linux compile instructions, fixed date in mavlink.h to english independent of OS language settings --- README | 40 ++++++++++++--- qgroundcontrol.pro | 20 +++++--- src/comm/MAVLinkXMLParser.cc | 6 ++- src/ui/QGCFirmwareUpdate.cc | 26 ++++++++++ src/ui/QGCFirmwareUpdate.h | 23 +++++++++ src/ui/QGCFirmwareUpdate.ui | 21 ++++++++ src/ui/QGCPxImuFirmwareUpdate.cc | 26 ++++++++++ src/ui/QGCPxImuFirmwareUpdate.h | 23 +++++++++ src/ui/QGCPxImuFirmwareUpdate.ui | 108 +++++++++++++++++++++++++++++++++++++++ 9 files changed, 276 insertions(+), 17 deletions(-) create mode 100644 src/ui/QGCFirmwareUpdate.cc create mode 100644 src/ui/QGCFirmwareUpdate.h create mode 100644 src/ui/QGCFirmwareUpdate.ui create mode 100644 src/ui/QGCPxImuFirmwareUpdate.cc create mode 100644 src/ui/QGCPxImuFirmwareUpdate.h create mode 100644 src/ui/QGCPxImuFirmwareUpdate.ui diff --git a/README b/README index 09bae4c..f412e02 100644 --- a/README +++ b/README @@ -1,6 +1,17 @@ QGroundControl Open Source Micro Air Vehicle Ground Control Station -http://pixhawk.ethz.ch +Project: +http://qgroundcontrol.org + +Files: +http://github.com/pixhawk/qgroundcontrol +http://github.com/pixhawk/mavlink + + +********************************************************************************************** +* PLEASE NOTE: YOU NEED TO DOWNLOAD THE MAVLINK LIBRARY IN ORDER TO COMPILE THIS APPLICATION * +********************************************************************************************** + Mac OS X ======== @@ -21,7 +32,7 @@ Install QT with Cocoa Get the MAVLINK Library ----------------------- -1) Clone the MAVLINK repository : `git clone git@pixhawk.ethz.ch:mavlink.git` (You need to have emailed your ssh key). **NOTE:** Make sure that the mavlink directory is in the same directory as groundcontrol. QGround control will look for mavlink library in ../mavlink +1) Clone the MAVLINK repository : `git clone git@github.com:pixhawk/mavlink.git`. **NOTE:** Make sure that the mavlink directory is in the same directory as groundcontrol. QGround control will look for mavlink library in ../mavlink Build QGroundControl -------------------- @@ -35,13 +46,28 @@ Build QGroundControl Linux ===== -********************************************************************************************** -* PLEASE NOTE: YOU NEED TO DOWNLOAD THE MAVLINK LIBRARY IN ORDER TO COMPILE THIS APPLICATION * -********************************************************************************************** - To build on Linux: - + +sudo apt-get install phonon libqt4-dev libqt4-phonon-dev \ +libqt4-phonon libphonon-dev libphonon4 phonon-backend-gstreamer \ +qt-creator libsdl1.2-dev libflite1 flite1-dev + +cd directory + +git clone git@github.com:pixhawk/mavlink.git +git clone git@github.com:pixhawk/qgroundcontrol.git + +Ubuntu Application Menu -> Development -> Qt Creator + +QtCreator Menu File -> Open File or Project.. + +Open directory/qgroundcontrol/qgroundcontrol.pro + +Hit the green play button to compile and launch it + +Done. + Windows ======= diff --git a/qgroundcontrol.pro b/qgroundcontrol.pro index 90fbdff..2a6e331 100644 --- a/qgroundcontrol.pro +++ b/qgroundcontrol.pro @@ -45,11 +45,9 @@ INCLUDEPATH += . \ $$BASEDIR/../mavlink/contrib/slugs/include \ $$BASEDIR/../mavlink/include - - # ../mavlink/include \ - #MAVLink/include \ - #mavlink/include - +# ../mavlink/include \ +# MAVLink/include \ +# mavlink/include # Input FORMS += src/ui/MainWindow.ui \ src/ui/CommSettings.ui \ @@ -73,7 +71,9 @@ FORMS += src/ui/MainWindow.ui \ src/ui/QGCSensorSettingsWidget.ui \ src/ui/watchdog/WatchdogControl.ui \ src/ui/watchdog/WatchdogProcessView.ui \ - src/ui/watchdog/WatchdogView.ui + src/ui/watchdog/WatchdogView.ui \ + src/ui/QGCFirmwareUpdate.ui \ + src/ui/QGCPxImuFirmwareUpdate.ui INCLUDEPATH += src \ src/ui \ src/ui/linechart \ @@ -147,7 +147,9 @@ HEADERS += src/MG.h \ src/ui/watchdog/WatchdogView.h \ src/uas/UASWaypointManager.h \ src/ui/HSIDisplay.h \ - src/QGC.h + src/QGC.h \ + src/ui/QGCFirmwareUpdate.h \ + src/ui/QGCPxImuFirmwareUpdate.h SOURCES += src/main.cc \ src/Core.cc \ src/uas/UASManager.cc \ @@ -203,5 +205,7 @@ SOURCES += src/main.cc \ src/ui/watchdog/WatchdogView.cc \ src/uas/UASWaypointManager.cc \ src/ui/HSIDisplay.cc \ - src/QGC.cc + src/QGC.cc \ + src/ui/QGCFirmwareUpdate.cc \ + src/ui/QGCPxImuFirmwareUpdate.cc RESOURCES = mavground.qrc diff --git a/src/comm/MAVLinkXMLParser.cc b/src/comm/MAVLinkXMLParser.cc index 62a47ee..645841e 100644 --- a/src/comm/MAVLinkXMLParser.cc +++ b/src/comm/MAVLinkXMLParser.cc @@ -4,6 +4,7 @@ #include #include #include +#include #include "MAVLinkXMLParser.h" #include @@ -222,7 +223,7 @@ bool MAVLinkXMLParser::generate() while (!f.isNull()) { QDomElement e2 = f.toElement(); - if (!e2.isNull()) + if (!e2.isNull() && e2.tagName() == "field") { QString fieldType = e2.attribute("type", ""); QString fieldName = e2.attribute("name", ""); @@ -362,8 +363,9 @@ bool MAVLinkXMLParser::generate() // XML parsed and converted to C code. Now generating the files QDateTime now = QDateTime::currentDateTime().toUTC(); + QLocale loc(QLocale::English); QString dateFormat = "dddd, MMMM d yyyy, hh:mm UTC"; - QString date = now.toString(dateFormat); + QString date = loc.toString(now, dateFormat); QString mainHeader = QString("/** @file\n *\t@brief MAVLink comm protocol.\n *\t@see http://pixhawk.ethz.ch/software/mavlink\n *\t Generated on %1\n */\n#ifndef MAVLINK_H\n#define MAVLINK_H\n\n").arg(date); // The main header includes all messages // Mark all code as C code mainHeader += "#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n"; diff --git a/src/ui/QGCFirmwareUpdate.cc b/src/ui/QGCFirmwareUpdate.cc new file mode 100644 index 0000000..7e943d7 --- /dev/null +++ b/src/ui/QGCFirmwareUpdate.cc @@ -0,0 +1,26 @@ +#include "QGCFirmwareUpdate.h" +#include "ui_QGCFirmwareUpdate.h" + +QGCFirmwareUpdate::QGCFirmwareUpdate(QWidget *parent) : + QWidget(parent), + ui(new Ui::QGCFirmwareUpdate) +{ + ui->setupUi(this); +} + +QGCFirmwareUpdate::~QGCFirmwareUpdate() +{ + delete ui; +} + +void QGCFirmwareUpdate::changeEvent(QEvent *e) +{ + QWidget::changeEvent(e); + switch (e->type()) { + case QEvent::LanguageChange: + ui->retranslateUi(this); + break; + default: + break; + } +} diff --git a/src/ui/QGCFirmwareUpdate.h b/src/ui/QGCFirmwareUpdate.h new file mode 100644 index 0000000..c03b05b --- /dev/null +++ b/src/ui/QGCFirmwareUpdate.h @@ -0,0 +1,23 @@ +#ifndef QGCFIRMWAREUPDATE_H +#define QGCFIRMWAREUPDATE_H + +#include + +namespace Ui { + class QGCFirmwareUpdate; +} + +class QGCFirmwareUpdate : public QWidget { + Q_OBJECT +public: + QGCFirmwareUpdate(QWidget *parent = 0); + ~QGCFirmwareUpdate(); + +protected: + void changeEvent(QEvent *e); + +private: + Ui::QGCFirmwareUpdate *ui; +}; + +#endif // QGCFIRMWAREUPDATE_H diff --git a/src/ui/QGCFirmwareUpdate.ui b/src/ui/QGCFirmwareUpdate.ui new file mode 100644 index 0000000..389514f --- /dev/null +++ b/src/ui/QGCFirmwareUpdate.ui @@ -0,0 +1,21 @@ + + + + + QGCFirmwareUpdate + + + + 0 + 0 + 400 + 300 + + + + Form + + + + + diff --git a/src/ui/QGCPxImuFirmwareUpdate.cc b/src/ui/QGCPxImuFirmwareUpdate.cc new file mode 100644 index 0000000..91a9e34 --- /dev/null +++ b/src/ui/QGCPxImuFirmwareUpdate.cc @@ -0,0 +1,26 @@ +#include "QGCPxImuFirmwareUpdate.h" +#include "ui_QGCPxImuFirmwareUpdate.h" + +QGCPxImuFirmwareUpdate::QGCPxImuFirmwareUpdate(QWidget *parent) : + QWidget(parent), + ui(new Ui::QGCPxImuFirmwareUpdate) +{ + ui->setupUi(this); +} + +QGCPxImuFirmwareUpdate::~QGCPxImuFirmwareUpdate() +{ + delete ui; +} + +void QGCPxImuFirmwareUpdate::changeEvent(QEvent *e) +{ + QWidget::changeEvent(e); + switch (e->type()) { + case QEvent::LanguageChange: + ui->retranslateUi(this); + break; + default: + break; + } +} diff --git a/src/ui/QGCPxImuFirmwareUpdate.h b/src/ui/QGCPxImuFirmwareUpdate.h new file mode 100644 index 0000000..c48ce17 --- /dev/null +++ b/src/ui/QGCPxImuFirmwareUpdate.h @@ -0,0 +1,23 @@ +#ifndef QGCPXIMUFIRMWAREUPDATE_H +#define QGCPXIMUFIRMWAREUPDATE_H + +#include + +namespace Ui { + class QGCPxImuFirmwareUpdate; +} + +class QGCPxImuFirmwareUpdate : public QWidget { + Q_OBJECT +public: + QGCPxImuFirmwareUpdate(QWidget *parent = 0); + ~QGCPxImuFirmwareUpdate(); + +protected: + void changeEvent(QEvent *e); + +private: + Ui::QGCPxImuFirmwareUpdate *ui; +}; + +#endif // QGCPXIMUFIRMWAREUPDATE_H diff --git a/src/ui/QGCPxImuFirmwareUpdate.ui b/src/ui/QGCPxImuFirmwareUpdate.ui new file mode 100644 index 0000000..8f4111c --- /dev/null +++ b/src/ui/QGCPxImuFirmwareUpdate.ui @@ -0,0 +1,108 @@ + + + QGCPxImuFirmwareUpdate + + + + 0 + 0 + 400 + 300 + + + + Form + + + + + + Instructions + + + + 2 + + + + + <h1>pxIMU Firmware Update</h1> + +<li> + <item>Item 1</item> +</li> + + + + + + + + + + + From File + + + + + + + Choose file.. + + + + + + + Choose File + + + + + + + From Internet + + + + + + + Firmware v.0.2.1 + + + + + + + Download + + + + + + + + + + + + + + Waiting for first user action + + + + + + + Flash Firmware + + + + + + + +