From ad13cee7a14655db24ead9fef85dda41f92569ff Mon Sep 17 00:00:00 2001 From: zedamota Date: Sun, 13 Nov 2011 16:05:36 +0000 Subject: [PATCH 1/3] Added the basis for GCS and FW version mismatch warning. --- .../uavsettingsimportexportfactory.cpp | 5 +++-- .../plugins/uploader/uploadergadgetwidget.cpp | 22 +++++++++++++++++++ .../plugins/uploader/uploadergadgetwidget.h | 1 + 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/ground/openpilotgcs/src/plugins/uavsettingsimportexport/uavsettingsimportexportfactory.cpp b/ground/openpilotgcs/src/plugins/uavsettingsimportexport/uavsettingsimportexportfactory.cpp index ff6eb233b..285bc7cbf 100644 --- a/ground/openpilotgcs/src/plugins/uavsettingsimportexport/uavsettingsimportexportfactory.cpp +++ b/ground/openpilotgcs/src/plugins/uavsettingsimportexport/uavsettingsimportexportfactory.cpp @@ -212,8 +212,9 @@ QString UAVSettingsImportExportFactory::createXMLDocument( QDomElement fw=doc.createElement("Embedded"); UAVObjectUtilManager* utilMngr = pm->getObject(); - fw.setAttribute("gitcommittag",utilMngr->getBoardDescriptionStruct().gitTag); - fw.setAttribute("fwtag",utilMngr->getBoardDescriptionStruct().description); + deviceDescriptorStruct struc=utilMngr->getBoardDescriptionStruct(); + fw.setAttribute("gitcommittag",struc.gitTag); + fw.setAttribute("fwtag",struc.description); fw.setAttribute("cpuSerial",QString(utilMngr->getBoardCPUSerial().toHex())); versionInfo.appendChild(fw); diff --git a/ground/openpilotgcs/src/plugins/uploader/uploadergadgetwidget.cpp b/ground/openpilotgcs/src/plugins/uploader/uploadergadgetwidget.cpp index 35e45f3f1..dfe62229b 100755 --- a/ground/openpilotgcs/src/plugins/uploader/uploadergadgetwidget.cpp +++ b/ground/openpilotgcs/src/plugins/uploader/uploadergadgetwidget.cpp @@ -25,6 +25,8 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "uploadergadgetwidget.h" +#include +#include #define DFU_DEBUG true @@ -42,6 +44,8 @@ UploaderGadgetWidget::UploaderGadgetWidget(QWidget *parent) : QWidget(parent) ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance(); TelemetryManager* telMngr = pm->getObject(); connect(telMngr, SIGNAL(connected()), this, SLOT(onAutopilotConnect())); + connect(telMngr, SIGNAL(connected()), this, SLOT(versionMatchCheck())); + connect(telMngr, SIGNAL(disconnected()), this, SLOT(onAutopilotDisconnect())); connect(m_config->haltButton, SIGNAL(clicked()), this, SLOT(goToBootloader())); @@ -603,3 +607,21 @@ void UploaderGadgetWidget::info(QString infoString, int infoNumber) Q_UNUSED(infoNumber); m_config->boardStatus->setText(infoString); } + +void UploaderGadgetWidget::versionMatchCheck() +{ + ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance(); + UAVObjectUtilManager* utilMngr = pm->getObject(); + deviceDescriptorStruct boardDescription=utilMngr->getBoardDescriptionStruct(); + QString gcsDescription=QString::fromLatin1(Core::Constants::GCS_REVISION_STR); + /*TODO compare logic + if() + { + }*/ + QString version; + QErrorMessage msg(this); + msg.showMessage(QString("Incompatible GCS and FW detected, you should upgrade your GCS to %1 version").arg(version)); + msg.showMessage(QString("Incompatible GCS and FW detected, you should upgrade your board's Firmware to %1 version").arg(version)); + + +} diff --git a/ground/openpilotgcs/src/plugins/uploader/uploadergadgetwidget.h b/ground/openpilotgcs/src/plugins/uploader/uploadergadgetwidget.h index 74a48425b..9787846b6 100755 --- a/ground/openpilotgcs/src/plugins/uploader/uploadergadgetwidget.h +++ b/ground/openpilotgcs/src/plugins/uploader/uploadergadgetwidget.h @@ -86,6 +86,7 @@ private: QEventLoop m_eventloop; private slots: void onPhisicalHWConnect(); + void versionMatchCheck(); void error(QString errorString,int errorNumber); void info(QString infoString,int infoNumber); void goToBootloader(UAVObject* = NULL, bool = false); From e2c4b2f97882a4ae95c19b83fdb3fdc9ef714825 Mon Sep 17 00:00:00 2001 From: zedamota Date: Sun, 13 Nov 2011 17:39:05 +0000 Subject: [PATCH 2/3] Simple mismatch detection, needs testing to find if message is clear enough for users. --- .../plugins/uploader/uploadergadgetwidget.cpp | 27 ++++++++++++------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/ground/openpilotgcs/src/plugins/uploader/uploadergadgetwidget.cpp b/ground/openpilotgcs/src/plugins/uploader/uploadergadgetwidget.cpp index dfe62229b..00ea87629 100755 --- a/ground/openpilotgcs/src/plugins/uploader/uploadergadgetwidget.cpp +++ b/ground/openpilotgcs/src/plugins/uploader/uploadergadgetwidget.cpp @@ -25,8 +25,10 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "uploadergadgetwidget.h" +#include "../../../../../build/ground/openpilotgcs/gcsversioninfo.h" #include #include +#include #define DFU_DEBUG true @@ -64,7 +66,10 @@ UploaderGadgetWidget::UploaderGadgetWidget(QWidget *parent) : QWidget(parent) // And check whether by any chance we are not already connected if (telMngr->isConnected()) + { onAutopilotConnect(); + versionMatchCheck(); + } } @@ -614,14 +619,16 @@ void UploaderGadgetWidget::versionMatchCheck() UAVObjectUtilManager* utilMngr = pm->getObject(); deviceDescriptorStruct boardDescription=utilMngr->getBoardDescriptionStruct(); QString gcsDescription=QString::fromLatin1(Core::Constants::GCS_REVISION_STR); - /*TODO compare logic - if() - { - }*/ - QString version; - QErrorMessage msg(this); - msg.showMessage(QString("Incompatible GCS and FW detected, you should upgrade your GCS to %1 version").arg(version)); - msg.showMessage(QString("Incompatible GCS and FW detected, you should upgrade your board's Firmware to %1 version").arg(version)); + if(boardDescription.gitTag!=gcsDescription.mid(gcsDescription.indexOf(":")+1,8)) + { + qDebug()<0) + msg->showMessage(QString("Incompatible GCS and FW detected, you should upgrade your board's Firmware to %1 version.").arg(gcsDescription)); + else + msg->showMessage(QString("Incompatible GCS and FW detected, you should upgrade your GCS to %1 version.").arg(boardDescription.gitTag+":"+boardDescription.buildDate)); - -} + } + } From 1632d354a1649becc854f22ad854bd75641a0b0b Mon Sep 17 00:00:00 2001 From: zedamota Date: Sat, 19 Nov 2011 18:47:41 +0000 Subject: [PATCH 3/3] Fix the don't show this again option --- .../src/plugins/uploader/uploadergadgetwidget.cpp | 4 +--- .../openpilotgcs/src/plugins/uploader/uploadergadgetwidget.h | 2 ++ 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ground/openpilotgcs/src/plugins/uploader/uploadergadgetwidget.cpp b/ground/openpilotgcs/src/plugins/uploader/uploadergadgetwidget.cpp index 00ea87629..fce448451 100755 --- a/ground/openpilotgcs/src/plugins/uploader/uploadergadgetwidget.cpp +++ b/ground/openpilotgcs/src/plugins/uploader/uploadergadgetwidget.cpp @@ -27,7 +27,6 @@ #include "uploadergadgetwidget.h" #include "../../../../../build/ground/openpilotgcs/gcsversioninfo.h" #include -#include #include #define DFU_DEBUG true @@ -41,7 +40,7 @@ UploaderGadgetWidget::UploaderGadgetWidget(QWidget *parent) : QWidget(parent) dfu = NULL; m_timer = 0; m_progress = 0; - + msg=new QErrorMessage(this); // Listen to autopilot connection events ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance(); TelemetryManager* telMngr = pm->getObject(); @@ -624,7 +623,6 @@ void UploaderGadgetWidget::versionMatchCheck() qDebug()<0) msg->showMessage(QString("Incompatible GCS and FW detected, you should upgrade your board's Firmware to %1 version.").arg(gcsDescription)); else diff --git a/ground/openpilotgcs/src/plugins/uploader/uploadergadgetwidget.h b/ground/openpilotgcs/src/plugins/uploader/uploadergadgetwidget.h index 9787846b6..93ea6e14d 100755 --- a/ground/openpilotgcs/src/plugins/uploader/uploadergadgetwidget.h +++ b/ground/openpilotgcs/src/plugins/uploader/uploadergadgetwidget.h @@ -54,6 +54,7 @@ #include #include "devicedescriptorstruct.h" #include +#include using namespace OP_DFU; @@ -84,6 +85,7 @@ private: QTimer* m_timer; QLineEdit* openFileNameLE; QEventLoop m_eventloop; + QErrorMessage * msg; private slots: void onPhisicalHWConnect(); void versionMatchCheck();