From cacf03ae7b5b394c054a6c189d6078f4d7950168 Mon Sep 17 00:00:00 2001 From: elafargue Date: Wed, 1 Jun 2011 14:49:22 +0200 Subject: [PATCH] OP-515 Uploader Gadget UI improvements. Not implemented Firmware pre-check yet. --- .../uavobjectutil/uavobjectutilmanager.cpp | 30 +++++++++++++++++++ .../uavobjectutil/uavobjectutilmanager.h | 1 + .../src/plugins/uploader/devicewidget.ui | 6 +++- .../plugins/uploader/runningdevicewidget.cpp | 3 ++ .../plugins/uploader/runningdevicewidget.ui | 12 ++++++-- 5 files changed, 49 insertions(+), 3 deletions(-) diff --git a/ground/openpilotgcs/src/plugins/uavobjectutil/uavobjectutilmanager.cpp b/ground/openpilotgcs/src/plugins/uavobjectutil/uavobjectutilmanager.cpp index 47ad9a8ae..9bfa9f24e 100644 --- a/ground/openpilotgcs/src/plugins/uavobjectutil/uavobjectutilmanager.cpp +++ b/ground/openpilotgcs/src/plugins/uavobjectutil/uavobjectutilmanager.cpp @@ -172,6 +172,36 @@ QByteArray UAVObjectUtilManager::getBoardCPUSerial() return cpuSerial; } +/** + * Get the UAV Board Description, for anyone interested. + */ +QString UAVObjectUtilManager::getBoardDescription() +{ + QString description; + ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance(); + if (!pm) + return 0; + UAVObjectManager *om = pm->getObject(); + if (!om) + return 0; + + UAVDataObject *obj = dynamic_cast(om->getObject(QString("FirmwareIAPObj"))); + // The code below will ask for the object update and wait for the updated to be received, + // or the timeout of the timer, set to 1 second. + QEventLoop loop; + connect(obj, SIGNAL(objectUpdated(UAVObject*)), &loop, SLOT(quit())); + QTimer::singleShot(1000, &loop, SLOT(quit())); // Create a timeout + obj->requestUpdate(); + loop.exec(); + + UAVObjectField* descriptionField = obj->getField("Description"); + // Description starts with an offset of + for (int i = 14; i < descriptionField->getNumElements(); ++i) { + description.append(descriptionField->getValue(i).toChar()); + } + return description; +} + // ****************************** diff --git a/ground/openpilotgcs/src/plugins/uavobjectutil/uavobjectutilmanager.h b/ground/openpilotgcs/src/plugins/uavobjectutil/uavobjectutilmanager.h index f97f969d8..5d6afbfa2 100644 --- a/ground/openpilotgcs/src/plugins/uavobjectutil/uavobjectutilmanager.h +++ b/ground/openpilotgcs/src/plugins/uavobjectutil/uavobjectutilmanager.h @@ -62,6 +62,7 @@ public: int getBoardModel(); QByteArray getBoardCPUSerial(); + QString getBoardDescription(); private: QMutex *mutex; diff --git a/ground/openpilotgcs/src/plugins/uploader/devicewidget.ui b/ground/openpilotgcs/src/plugins/uploader/devicewidget.ui index a5f17794e..ec45f52df 100644 --- a/ground/openpilotgcs/src/plugins/uploader/devicewidget.ui +++ b/ground/openpilotgcs/src/plugins/uploader/devicewidget.ui @@ -17,7 +17,11 @@ - + + + true + + diff --git a/ground/openpilotgcs/src/plugins/uploader/runningdevicewidget.cpp b/ground/openpilotgcs/src/plugins/uploader/runningdevicewidget.cpp index 7e9b1889b..f1511e746 100644 --- a/ground/openpilotgcs/src/plugins/uploader/runningdevicewidget.cpp +++ b/ground/openpilotgcs/src/plugins/uploader/runningdevicewidget.cpp @@ -102,6 +102,9 @@ void runningDeviceWidget::populate() QString serial = utilMngr->getBoardCPUSerial().toHex(); myDevice->cpuSerial->setText(serial); + QString description = utilMngr->getBoardDescription(); + myDevice->description->setText(description); + status("Ready...", STATUSICON_INFO); } diff --git a/ground/openpilotgcs/src/plugins/uploader/runningdevicewidget.ui b/ground/openpilotgcs/src/plugins/uploader/runningdevicewidget.ui index 105a385c7..4a730c509 100644 --- a/ground/openpilotgcs/src/plugins/uploader/runningdevicewidget.ui +++ b/ground/openpilotgcs/src/plugins/uploader/runningdevicewidget.ui @@ -77,10 +77,18 @@ - + + + true + + - + + + true + +