From 9bdb1a3a4d9c10e8d6c94f03c4b3ba41d4365c18 Mon Sep 17 00:00:00 2001 From: tstellanova Date: Wed, 14 Aug 2013 16:04:03 -0700 Subject: [PATCH 1/3] Fix path for promoted widget --- src/ui/QGCPX4VehicleConfig.ui | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ui/QGCPX4VehicleConfig.ui b/src/ui/QGCPX4VehicleConfig.ui index da0ddfd..b153d73 100644 --- a/src/ui/QGCPX4VehicleConfig.ui +++ b/src/ui/QGCPX4VehicleConfig.ui @@ -1272,7 +1272,7 @@ p, li { white-space: pre-wrap; } QGCPendingParamWidget QWidget -
/ui/QGCPendingParamWidget.h
+
ui/QGCPendingParamWidget.h
1
From d3db72a69d38bda292b0ee65686432fcefd61081 Mon Sep 17 00:00:00 2001 From: tstellanova Date: Wed, 14 Aug 2013 16:18:32 -0700 Subject: [PATCH 2/3] when param widget is loaded we only want to re-request the whole param list if we don't already have one --- src/uas/UASParameterCommsMgr.cc | 9 +++++++++ src/uas/UASParameterCommsMgr.h | 2 ++ src/uas/UASParameterDataModel.cc | 19 ++++++++++++++++--- src/uas/UASParameterDataModel.h | 4 +++- src/ui/QGCPX4VehicleConfig.cc | 2 +- src/ui/QGCVehicleConfig.cc | 2 +- 6 files changed, 32 insertions(+), 6 deletions(-) diff --git a/src/uas/UASParameterCommsMgr.cc b/src/uas/UASParameterCommsMgr.cc index db74186..1a3df2d 100644 --- a/src/uas/UASParameterCommsMgr.cc +++ b/src/uas/UASParameterCommsMgr.cc @@ -60,6 +60,15 @@ void UASParameterCommsMgr::loadParamCommsSettings() } +void UASParameterCommsMgr::requestParameterListIfEmpty() +{ + int totalOnboard = paramDataModel->countOnboardParams(); + if (totalOnboard < 2) { //TODO arbitrary constant, maybe 0 is OK? + requestParameterList(); + } +} + + /** * Send a request to deliver the list of onboard parameters diff --git a/src/uas/UASParameterCommsMgr.h b/src/uas/UASParameterCommsMgr.h index acdab75..39a67d1 100644 --- a/src/uas/UASParameterCommsMgr.h +++ b/src/uas/UASParameterCommsMgr.h @@ -72,6 +72,8 @@ public slots: /** @brief Request list of parameters from MAV */ virtual void requestParameterList(); + /** @brief Request a list of params onboard the MAV if the onboard param list we have is empty */ + virtual void requestParameterListIfEmpty(); /** @brief Check for missing parameters */ virtual void retransmissionGuardTick(); diff --git a/src/uas/UASParameterDataModel.cc b/src/uas/UASParameterDataModel.cc index 66b847e..012749f 100644 --- a/src/uas/UASParameterDataModel.cc +++ b/src/uas/UASParameterDataModel.cc @@ -20,15 +20,28 @@ UASParameterDataModel::UASParameterDataModel(QObject *parent) : int UASParameterDataModel::countPendingParams() { - int totalPending = 0; + int total = 0; QMap*>::iterator i; for (i = pendingParameters.begin(); i != pendingParameters.end(); ++i) { // Iterate through the parameters of the component QMap* paramList = i.value(); - totalPending += paramList->count(); + total += paramList->count(); } - return totalPending; + return total; +} + +int UASParameterDataModel::countOnboardParams() +{ + int total = 0; + QMap*>::iterator i; + for (i = onboardParameters.begin(); i != onboardParameters.end(); ++i) { + // Iterate through the parameters of the component + QMap* paramList = i.value(); + total += paramList->count(); + } + + return total; } diff --git a/src/uas/UASParameterDataModel.h b/src/uas/UASParameterDataModel.h index 2ca9796..40c6cea 100644 --- a/src/uas/UASParameterDataModel.h +++ b/src/uas/UASParameterDataModel.h @@ -69,8 +69,10 @@ public: } /** @brief return a count of all pending parameters */ - int countPendingParams(); + virtual int countPendingParams(); + /** @brief return a count of all onboard parameters we've received */ + virtual int countOnboardParams(); virtual void writeOnboardParamsToStream(QTextStream &stream, const QString& uasName); virtual void readUpdateParamsFromStream(QTextStream &stream); diff --git a/src/ui/QGCPX4VehicleConfig.cc b/src/ui/QGCPX4VehicleConfig.cc index e285693..4f69090 100644 --- a/src/ui/QGCPX4VehicleConfig.cc +++ b/src/ui/QGCPX4VehicleConfig.cc @@ -802,7 +802,7 @@ void QGCPX4VehicleConfig::loadConfig() } doneLoadingConfig = true; //Config is finished, lets do a parameter request to ensure none are missed if someone else started requesting before we were finished. - mav->getParamCommsMgr()->requestParameterList(); + paramCommsMgr->requestParameterListIfEmpty(); } void QGCPX4VehicleConfig::setActiveUAS(UASInterface* active) diff --git a/src/ui/QGCVehicleConfig.cc b/src/ui/QGCVehicleConfig.cc index 2aa2ead..6282368 100644 --- a/src/ui/QGCVehicleConfig.cc +++ b/src/ui/QGCVehicleConfig.cc @@ -791,7 +791,7 @@ void QGCVehicleConfig::loadConfig() mav->getParamManager()->setParamDescriptions(paramTooltips); doneLoadingConfig = true; //Config is finished, lets do a parameter request to ensure none are missed if someone else started requesting before we were finished. - mav->getParamCommsMgr()->requestParameterList(); + mav->getParamCommsMgr()->requestParameterListIfEmpty(); } void QGCVehicleConfig::setActiveUAS(UASInterface* active) From f22f7f7f305b5c11518adc34bc56deb0a0a66298 Mon Sep 17 00:00:00 2001 From: tstellanova Date: Wed, 14 Aug 2013 16:28:01 -0700 Subject: [PATCH 3/3] don't re-request param list each time we open a param widget --- src/uas/QGCUASParamManager.cc | 1 - src/ui/QGCParamWidget.cc | 6 ++++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/uas/QGCUASParamManager.cc b/src/uas/QGCUASParamManager.cc index 569daeb..332f786 100644 --- a/src/uas/QGCUASParamManager.cc +++ b/src/uas/QGCUASParamManager.cc @@ -45,7 +45,6 @@ void QGCUASParamManager::requestParameterList() if (!mav) { return; } - //paramDataModel->forgetAllOnboardParameters(); //TODO really?? setParameterStatusMsg(tr("Requested param list.. waiting")); paramCommsMgr->requestParameterList(); } diff --git a/src/ui/QGCParamWidget.cc b/src/ui/QGCParamWidget.cc index f2fc580..5d7d37d 100644 --- a/src/ui/QGCParamWidget.cc +++ b/src/ui/QGCParamWidget.cc @@ -62,8 +62,9 @@ void QGCParamWidget::init() layoutWidget(); connectSignalsAndSlots(); - // Ensure we're receiving the list of params - requestAllParamsUpdate(); + // Ensure we have a list of params + paramCommsMgr->requestParameterListIfEmpty(); + } void QGCParamWidget::connectSignalsAndSlots() @@ -497,6 +498,7 @@ void QGCParamWidget::requestAllParamsUpdate() // Clear view and request param list clear(); + //paramDataModel->forgetAllOnboardParameters(); //TODO really?? requestParameterList(); }