diff --git a/src/uas/QGCUASParamManager.cc b/src/uas/QGCUASParamManager.cc index dc11769a905fd05c054b79470e1f8ccbb3374a3e..9103a2b437d3cecfb66d5e0296ef011f24804c43 100644 --- a/src/uas/QGCUASParamManager.cc +++ b/src/uas/QGCUASParamManager.cc @@ -13,6 +13,12 @@ QGCUASParamManager::QGCUASParamManager(UASInterface* uas, QWidget *parent) : { paramDataModel = uas->getParamDataModel(); uas->setParamManager(this); + + // Connect retransmission guard + connect(this, SIGNAL(parameterUpdateRequested(int,QString)), this, SLOT(requestParameterUpdate(int,QString))); + connect(this, SIGNAL(parameterUpdateRequestedById(int,int)), mav, SLOT(requestParameter(int,int))); + + } @@ -29,6 +35,10 @@ void QGCUASParamManager::requestParameterUpdate(int component, const QString& pa } } + + + + /** * Send a request to deliver the list of onboard parameters * to the MAV. @@ -132,7 +142,7 @@ void QGCUASParamManager::retransmissionGuardTick() if (count < retransmissionBurstRequestSize) { //qDebug() << __FILE__ << __LINE__ << "RETRANSMISSION GUARD REQUESTS RETRANSMISSION OF PARAM #" << id << "FROM COMPONENT #" << component; //TODO mavlink msg type for "request parameter set" ? - emit requestParameter(component, id); + emit parameterUpdateRequestedById(component, id); setParameterStatusMsg(tr("Requested retransmission of #%1").arg(id+1)); count++; } else { diff --git a/src/uas/QGCUASParamManager.h b/src/uas/QGCUASParamManager.h index 872273c5229a876cc6fa2e227638e2f4dbb5ab8c..6a87ba7632bbe5a8c281dc4559e3de3350d7d1e7 100644 --- a/src/uas/QGCUASParamManager.h +++ b/src/uas/QGCUASParamManager.h @@ -27,12 +27,13 @@ protected: //TODO decouple this UI message display further virtual void setParameterStatusMsg(const QString& msg); + signals: void parameterChanged(int component, QString parameter, QVariant value); void parameterChanged(int component, int parameterIndex, QVariant value); void parameterListUpToDate(int component); - /** @brief Request a single parameter */ - void requestParameter(int component, int parameter); + void parameterUpdateRequested(int component, const QString& parameter); + void parameterUpdateRequestedById(int componentId, int paramId); public slots: @@ -43,8 +44,7 @@ public slots: /** @brief Check for missing parameters */ virtual void retransmissionGuardTick(); - - /** @brief Request one single parameter */ + /** @brief Request a single parameter by name */ virtual void requestParameterUpdate(int component, const QString& parameter); protected: diff --git a/src/uas/UASManager.cc b/src/uas/UASManager.cc index 072c7aea7a7a317b6ec19854a88b47615d20d80d..8ee92242db1ba16a988521e72f80416b33d8a940 100644 --- a/src/uas/UASManager.cc +++ b/src/uas/UASManager.cc @@ -280,6 +280,7 @@ void UASManager::addUAS(UASInterface* uas) // Only execute if there is no UAS at this index if (!systems.contains(uas)) { + qDebug() << "Add new UAS: " << uas->getUASID(); systems.append(uas); // Set home position on UAV if set in UI // - this is done on a per-UAV basis diff --git a/src/ui/ParameterInterface.cc b/src/ui/ParameterInterface.cc index 2936394cec02ce966555f5f9b6ded62ec8f7c46b..c7d5f811b3ab8b23c29d623bb49b3a77d6425b09 100644 --- a/src/ui/ParameterInterface.cc +++ b/src/ui/ParameterInterface.cc @@ -91,8 +91,9 @@ void ParameterInterface::selectUAS(int index) void ParameterInterface::addUAS(UASInterface* uas) { int uasId = uas->getUASID(); + qDebug() << "ParameterInterface::addUAS : " << uasId ; + if (paramWidgets->contains(uasId) ) { - qDebug() << "Already have QGCParamWidget for: " << uasId ; return; } diff --git a/src/ui/QGCParamWidget.cc b/src/ui/QGCParamWidget.cc index 6b10632b7e5a2c670624e62a31ce44f9e9d129cc..4c973cd2aae6479396d8c2af5eb5b8c91b76454c 100644 --- a/src/ui/QGCParamWidget.cc +++ b/src/ui/QGCParamWidget.cc @@ -144,11 +144,15 @@ QGCParamWidget::QGCParamWidget(UASInterface* uas, QWidget *parent) : // New parameters from UAS connect(uas, SIGNAL(parameterChanged(int,int,int,int,QString,QVariant)), this, SLOT(receivedParameterUpdate(int,int,int,int,QString,QVariant))); - // Connect retransmission guard - connect(this, SIGNAL(requestParameterByName(int,QString)), uas, SLOT(requestParameterByName(int,QString))); - connect(this, SIGNAL(requestParameterByName(int,int)), uas, SLOT(requestParameterByName(int,int))); + connect(&retransmissionTimer, SIGNAL(timeout()), this, SLOT(retransmissionGuardTick())); + +// connect(this, SIGNAL(requestParameter(int,QString)), uas, SLOT(requestParameter(int,QString))); +// connect(this, SIGNAL(requestParameter(int,int)), uas, SLOT(requestParameter(int,int))); + + + // Get parameters if (uas) { requestAllParamsUpdate(); diff --git a/src/ui/QGCParamWidget.h b/src/ui/QGCParamWidget.h index 06a15b83bb2d078a49f70849d72b0d446083dab3..af58eabf3fa990f6f523f5823dbd584ccf4170a8 100644 --- a/src/ui/QGCParamWidget.h +++ b/src/ui/QGCParamWidget.h @@ -59,6 +59,7 @@ signals: /** @brief A parameter was changed in the widget, NOT onboard */ //void parameterChanged(int component, QString parametername, float value); // defined in QGCUASParamManager already + public slots: /** @brief Add a component to the list */ void addComponentItem(int uas, int component, QString componentName); @@ -69,7 +70,7 @@ public slots: /** @brief Request list of parameters from MAV */ void requestAllParamsUpdate(); /** @brief Set one parameter, changes value in RAM of MAV */ - void setParameter(int component, QString parameterName, QVariant value); + virtual void setParameter(int component, QString parameterName, QVariant value); /** @brief Set all parameters, changes the value in RAM of MAV */ void setParameters(); /** @brief Write the current parameters to permanent storage (EEPROM/HDD) */