Browse Source

Merge pull request #333 from tstellanova/flow_debug

Avoid re-requesting paramlist when opening new param widget; Fix widget promotion
QGC4.4
Lorenz Meier 12 years ago
parent
commit
5218dcaf49
  1. 1
      src/uas/QGCUASParamManager.cc
  2. 9
      src/uas/UASParameterCommsMgr.cc
  3. 2
      src/uas/UASParameterCommsMgr.h
  4. 19
      src/uas/UASParameterDataModel.cc
  5. 4
      src/uas/UASParameterDataModel.h
  6. 2
      src/ui/QGCPX4VehicleConfig.cc
  7. 2
      src/ui/QGCPX4VehicleConfig.ui
  8. 6
      src/ui/QGCParamWidget.cc
  9. 2
      src/ui/QGCVehicleConfig.cc

1
src/uas/QGCUASParamManager.cc

@ -45,7 +45,6 @@ void QGCUASParamManager::requestParameterList() @@ -45,7 +45,6 @@ void QGCUASParamManager::requestParameterList()
if (!mav) {
return;
}
//paramDataModel->forgetAllOnboardParameters(); //TODO really??
setParameterStatusMsg(tr("Requested param list.. waiting"));
paramCommsMgr->requestParameterList();
}

9
src/uas/UASParameterCommsMgr.cc

@ -60,6 +60,15 @@ void UASParameterCommsMgr::loadParamCommsSettings() @@ -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

2
src/uas/UASParameterCommsMgr.h

@ -72,6 +72,8 @@ public slots: @@ -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();

19
src/uas/UASParameterDataModel.cc

@ -20,15 +20,28 @@ UASParameterDataModel::UASParameterDataModel(QObject *parent) : @@ -20,15 +20,28 @@ UASParameterDataModel::UASParameterDataModel(QObject *parent) :
int UASParameterDataModel::countPendingParams()
{
int totalPending = 0;
int total = 0;
QMap<int, QMap<QString, QVariant>*>::iterator i;
for (i = pendingParameters.begin(); i != pendingParameters.end(); ++i) {
// Iterate through the parameters of the component
QMap<QString, QVariant>* paramList = i.value();
totalPending += paramList->count();
total += paramList->count();
}
return totalPending;
return total;
}
int UASParameterDataModel::countOnboardParams()
{
int total = 0;
QMap<int, QMap<QString, QVariant>*>::iterator i;
for (i = onboardParameters.begin(); i != onboardParameters.end(); ++i) {
// Iterate through the parameters of the component
QMap<QString, QVariant>* paramList = i.value();
total += paramList->count();
}
return total;
}

4
src/uas/UASParameterDataModel.h

@ -69,8 +69,10 @@ public: @@ -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);

2
src/ui/QGCPX4VehicleConfig.cc

@ -802,7 +802,7 @@ void QGCPX4VehicleConfig::loadConfig() @@ -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)

2
src/ui/QGCPX4VehicleConfig.ui

@ -1272,7 +1272,7 @@ p, li { white-space: pre-wrap; } @@ -1272,7 +1272,7 @@ p, li { white-space: pre-wrap; }
<customwidget>
<class>QGCPendingParamWidget</class>
<extends>QWidget</extends>
<header>/ui/QGCPendingParamWidget.h</header>
<header>ui/QGCPendingParamWidget.h</header>
<container>1</container>
</customwidget>
</customwidgets>

6
src/ui/QGCParamWidget.cc

@ -62,8 +62,9 @@ void QGCParamWidget::init() @@ -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() @@ -497,6 +498,7 @@ void QGCParamWidget::requestAllParamsUpdate()
// Clear view and request param list
clear();
//paramDataModel->forgetAllOnboardParameters(); //TODO really??
requestParameterList();
}

2
src/ui/QGCVehicleConfig.cc

@ -791,7 +791,7 @@ void QGCVehicleConfig::loadConfig() @@ -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)

Loading…
Cancel
Save