From d2861027b4f7ea4a9eb079785824c559b1ad8020 Mon Sep 17 00:00:00 2001 From: Don Gagne Date: Thu, 2 Mar 2017 13:17:40 -0800 Subject: [PATCH] Handle ArduPilot param behavior --- src/FactSystem/ParameterManager.cc | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/FactSystem/ParameterManager.cc b/src/FactSystem/ParameterManager.cc index 4d3e73cd6..d81511870 100644 --- a/src/FactSystem/ParameterManager.cc +++ b/src/FactSystem/ParameterManager.cc @@ -75,7 +75,7 @@ ParameterManager::ParameterManager(Vehicle* vehicle) connect(&_initialRequestTimeoutTimer, &QTimer::timeout, this, &ParameterManager::_initialRequestTimeout); _waitingParamTimeoutTimer.setSingleShot(true); - _waitingParamTimeoutTimer.setInterval(3000); + _waitingParamTimeoutTimer.setInterval(30000); connect(&_waitingParamTimeoutTimer, &QTimer::timeout, this, &ParameterManager::_waitingParamTimeout); connect(_vehicle->uas(), &UASInterface::parameterUpdate, this, &ParameterManager::_parameterUpdate); @@ -107,6 +107,13 @@ void ParameterManager::_parameterUpdate(int vehicleId, int componentId, QString "value:" << value << ")"; + // ArduPilot has this strange behavior of streaming parameters that we didn't ask for. This even happens before it responds to the + // PARAM_REQUEST_LIST. We disregard any of this until the initial request is responded to. + if (parameterId == 65535 && _initialRequestTimeoutTimer.isActive()) { + qCDebug(ParameterManagerVerbose1Log) << "Disregarding unrequested param prior to intial list response" << parameterName; + return; + } + _initialRequestTimeoutTimer.stop(); #if 0 -- 2.22.0