From efa109cfc1c4969b394af5ab63f0cae2783b3849 Mon Sep 17 00:00:00 2001 From: davidsastresas Date: Mon, 20 May 2024 10:59:34 +0200 Subject: [PATCH] GimbalController: Limit how fast we send gimbal status message request: There was no wait between such requests, and Ardupilot was failing to detect the handshake some times --- src/Gimbal/GimbalController.cc | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/Gimbal/GimbalController.cc b/src/Gimbal/GimbalController.cc index f05e1cd..cdb8853 100644 --- a/src/Gimbal/GimbalController.cc +++ b/src/Gimbal/GimbalController.cc @@ -310,8 +310,11 @@ GimbalController::_checkComplete(Gimbal& gimbal, uint8_t compid) _requestGimbalInformation(compid); --gimbal._requestInformationRetries; } - - if (!gimbal._receivedStatus && gimbal._requestStatusRetries > 0) { + // Limit to 1 second between set message interfacl requests + static qint64 lastRequestStatusMessage = 0; + qint64 now = QDateTime::currentMSecsSinceEpoch(); + if (!gimbal._receivedStatus && gimbal._requestStatusRetries > 0 && now - lastRequestStatusMessage > 1000) { + lastRequestStatusMessage = now; _vehicle->sendMavCommand(compid, MAV_CMD_SET_MESSAGE_INTERVAL, false /* no error */,