From 5f9f298a1d71e6921e292d942a7bd1ee769bd9d7 Mon Sep 17 00:00:00 2001 From: physicsboy0709 Date: Tue, 29 Sep 2015 12:48:21 -0400 Subject: [PATCH] modified: ground/gcs/src/plugins/uploader/op_dfu.cpp --- ground/gcs/src/plugins/uploader/op_dfu.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/ground/gcs/src/plugins/uploader/op_dfu.cpp b/ground/gcs/src/plugins/uploader/op_dfu.cpp index 58401b8a0..d05374c76 100644 --- a/ground/gcs/src/plugins/uploader/op_dfu.cpp +++ b/ground/gcs/src/plugins/uploader/op_dfu.cpp @@ -575,6 +575,19 @@ OP_DFU::Status DFUObject::StatusRequest() buf[9] = 0; int result = sendData(buf, BUF_LEN); + int retry_cnt = 0; + const int MaxSendRetry = 10, SendRetryIntervalMS = 1000; + while (result < 0 && retry_cnt < MaxSendRetry) { + retry_cnt++; + qWarning() << "StatusRequest failed, sleeping" << SendRetryIntervalMS << "ms"; + delay::msleep(SendRetryIntervalMS); + qWarning() << "StatusRequest retry attempt" << retry_cnt; + result = sendData(buf, BUF_LEN); + } + if (retry_cnt >= MaxSendRetry) { + qWarning() << "StatusRequest failed too many times, aborting"; + return OP_DFU::abort; + } if (debug) { qDebug() << "StatusRequest: " << result << " bytes sent"; }