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..fce448451 100755 --- a/ground/openpilotgcs/src/plugins/uploader/uploadergadgetwidget.cpp +++ b/ground/openpilotgcs/src/plugins/uploader/uploadergadgetwidget.cpp @@ -25,6 +25,9 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "uploadergadgetwidget.h" +#include "../../../../../build/ground/openpilotgcs/gcsversioninfo.h" +#include +#include #define DFU_DEBUG true @@ -37,11 +40,13 @@ 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(); 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())); @@ -60,7 +65,10 @@ UploaderGadgetWidget::UploaderGadgetWidget(QWidget *parent) : QWidget(parent) // And check whether by any chance we are not already connected if (telMngr->isConnected()) + { onAutopilotConnect(); + versionMatchCheck(); + } } @@ -603,3 +611,22 @@ 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); + 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)); + + } + } diff --git a/ground/openpilotgcs/src/plugins/uploader/uploadergadgetwidget.h b/ground/openpilotgcs/src/plugins/uploader/uploadergadgetwidget.h index 74a48425b..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,8 +85,10 @@ private: QTimer* m_timer; QLineEdit* openFileNameLE; QEventLoop m_eventloop; + QErrorMessage * msg; private slots: void onPhisicalHWConnect(); + void versionMatchCheck(); void error(QString errorString,int errorNumber); void info(QString infoString,int infoNumber); void goToBootloader(UAVObject* = NULL, bool = false);