diff --git a/src/FactSystem/ParameterManager.cc b/src/FactSystem/ParameterManager.cc index 4d3e73cd68aca3852726bb292b5f7e2b0d1543c7..d81511870089908387851b5a2b12d351123e421d 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