diff --git a/src/uas/UASParameterCommsMgr.cc b/src/uas/UASParameterCommsMgr.cc index 126a6910fc072d2ccb993b866174fd36b19b4aa5..8110651a8b1c9b4fe63f6d9a16425a88548f1b4e 100644 --- a/src/uas/UASParameterCommsMgr.cc +++ b/src/uas/UASParameterCommsMgr.cc @@ -11,6 +11,7 @@ UASParameterCommsMgr::UASParameterCommsMgr(QObject *parent) : QObject(parent), + lastReceiveTime(0), mav(NULL), maxSilenceTimeout(30000), paramDataModel(NULL), @@ -254,6 +255,7 @@ void UASParameterCommsMgr::silenceTimerExpired() int missingReads, missingWrites; clearRetransmissionLists(missingReads,missingWrites); silenceTimer.stop(); + lastReceiveTime = 0; lastSilenceTimerReset = curTime; setParameterStatusMsg(tr("TIMEOUT: Abandoning %1 reads %2 writes after %3 seconds").arg(missingReads).arg(missingWrites).arg(totalElapsed/1000)); } @@ -362,14 +364,18 @@ void UASParameterCommsMgr::updateSilenceTimer() if (missReadCount > 0 || missWriteCount > 0) { - silenceTimer.start(silenceTimeout); lastSilenceTimerReset = QGC::groundTimeMilliseconds(); + if (0 == lastReceiveTime) { + lastReceiveTime = lastSilenceTimerReset; + } + silenceTimer.start(silenceTimeout); } else { //all parameters have been received, broadcast to UI emit parameterListUpToDate(); resetAfterListReceive(); silenceTimer.stop(); + lastReceiveTime = 0; } diff --git a/src/ui/QGCPX4VehicleConfig.cc b/src/ui/QGCPX4VehicleConfig.cc index dc0e7b5fed910c63cca71c47e852d3687774e1f1..ceb17af298504b9db7eccdae72234e650ba10a67 100644 --- a/src/ui/QGCPX4VehicleConfig.cc +++ b/src/ui/QGCPX4VehicleConfig.cc @@ -426,6 +426,11 @@ void QGCPX4VehicleConfig::startCalibrationRC() return; } + // reset all channel mappings above Ch 5 to invalid/unused value before starting calibration + for (unsigned int j= 5; j < chanMappedMax; j++) { + rcMapping[j] = -1; + } + configEnabled = true; QMessageBox::warning(0,tr("Safety Warning"),