From 980ec0542cec55ddab4a6a3398eb33f29dab9eb2 Mon Sep 17 00:00:00 2001 From: tstellanova Date: Wed, 28 Aug 2013 18:23:03 -0700 Subject: [PATCH 1/3] ensure data model knows the mav's ID --- src/uas/QGCUASParamManager.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/src/uas/QGCUASParamManager.cc b/src/uas/QGCUASParamManager.cc index 90991f8..c4d81c7 100644 --- a/src/uas/QGCUASParamManager.cc +++ b/src/uas/QGCUASParamManager.cc @@ -24,6 +24,7 @@ QGCUASParamManager* QGCUASParamManager::initWithUAS(UASInterface* uas) // Load default values and tooltips for data model loadParamMetaInfoCSV(); + paramDataModel.setUASID(mav->getUASID()); paramCommsMgr = new UASParameterCommsMgr(this); paramCommsMgr->initWithUAS(uas); From 30be74b224f69df508ae5dca6bc36bae127303de Mon Sep 17 00:00:00 2001 From: tstellanova Date: Wed, 28 Aug 2013 18:23:25 -0700 Subject: [PATCH 2/3] ensure that delta files with new params are loaded --- src/uas/UASParameterDataModel.cc | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/uas/UASParameterDataModel.cc b/src/uas/UASParameterDataModel.cc index 0a16a3a..80b7f70 100644 --- a/src/uas/UASParameterDataModel.cc +++ b/src/uas/UASParameterDataModel.cc @@ -264,13 +264,13 @@ void UASParameterDataModel::readUpdateParamsFromStream( QTextStream& stream) if (wpParams.size() == 5) { // Only load parameters for right mav if (!userWarned && (uasId != lineMavId)) { - //TODO warn the user somehow ?? + //TODO warn the user somehow ?? Appears these are saved currently with mav ID 0 but mav ID is often nonzero? QString msg = tr("The parameters in the stream have been saved from system %1, but the currently selected system has the ID %2.").arg(lineMavId).arg(uasId); -// MainWindow::instance()->showCriticalMessage( -// tr("Parameter loading warning"), -// tr("The parameters from the file %1 have been saved from system %2, but the currently selected system has the ID %3. If this is unintentional, please click on to revert to the parameters that are currently onboard").arg(fileName).arg(wpParams.at(0).toInt()).arg(mav->getUASID())); + qWarning() << msg ; + //MainWindow::instance()->showCriticalMessage( + // tr("Parameter loading warning"), + // tr("The parameters from the file %1 have been saved from system %2, but the currently selected system has the ID %3. If this is unintentional, please click on to revert to the parameters that are currently onboard").arg(fileName).arg(wpParams.at(0).toInt()).arg(mav->getUASID())); userWarned = true; - return; } bool changed = false; @@ -286,8 +286,9 @@ void UASParameterDataModel::readUpdateParamsFromStream( QTextStream& stream) changed = true; } else { - if (fabs((static_cast(onboardParameters.value(componentId)->value(key, dblVal).toDouble())) - (dblVal)) > - 2.0f * FLT_EPSILON) { + QMap* compParams = onboardParameters.value(componentId); + if (!compParams->contains(key) || + (fabs((static_cast(compParams->value(key).toDouble())) - (dblVal)) > 2.0f * FLT_EPSILON)) { changed = true; qDebug() << "Changed" << key << "VAL" << dblVal; } From 6623bd765120292f0e15f097f23326a0bc93bde1 Mon Sep 17 00:00:00 2001 From: tstellanova Date: Wed, 28 Aug 2013 18:23:56 -0700 Subject: [PATCH 3/3] stop timer when maxSilenceTimeout is exceeded to avoid infinite loop --- src/uas/UASParameterCommsMgr.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/uas/UASParameterCommsMgr.cc b/src/uas/UASParameterCommsMgr.cc index d33eed7..126a691 100644 --- a/src/uas/UASParameterCommsMgr.cc +++ b/src/uas/UASParameterCommsMgr.cc @@ -253,6 +253,8 @@ void UASParameterCommsMgr::silenceTimerExpired() qDebug() << "maxSilenceTimeout exceeded: " << totalElapsed; int missingReads, missingWrites; clearRetransmissionLists(missingReads,missingWrites); + silenceTimer.stop(); + lastSilenceTimerReset = curTime; setParameterStatusMsg(tr("TIMEOUT: Abandoning %1 reads %2 writes after %3 seconds").arg(missingReads).arg(missingWrites).arg(totalElapsed/1000)); } else {