Browse Source

when param widget is loaded we only want to re-request the whole param list if we don't already have one

QGC4.4
tstellanova 12 years ago
parent
commit
d3db72a69d
  1. 9
      src/uas/UASParameterCommsMgr.cc
  2. 2
      src/uas/UASParameterCommsMgr.h
  3. 19
      src/uas/UASParameterDataModel.cc
  4. 4
      src/uas/UASParameterDataModel.h
  5. 2
      src/ui/QGCPX4VehicleConfig.cc
  6. 2
      src/ui/QGCVehicleConfig.cc

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/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