From 87c2858bde268b6636b40d072bbf57c1f97af8f6 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Sun, 3 May 2020 10:55:56 +1000 Subject: [PATCH] GCS_MAVLink: give banner on param download with ftp thanks to Peter for noticing --- libraries/GCS_MAVLink/GCS.h | 1 + libraries/GCS_MAVLink/GCS_FTP.cpp | 16 +++++++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/libraries/GCS_MAVLink/GCS.h b/libraries/GCS_MAVLink/GCS.h index 85d941e5e0..43680f9372 100644 --- a/libraries/GCS_MAVLink/GCS.h +++ b/libraries/GCS_MAVLink/GCS.h @@ -740,6 +740,7 @@ private: FTP_FILE_MODE mode; // work around AP_Filesystem not supporting file modes int16_t current_session; uint32_t last_send_ms; + uint8_t need_banner_send_mask; }; static struct ftp_state ftp; diff --git a/libraries/GCS_MAVLink/GCS_FTP.cpp b/libraries/GCS_MAVLink/GCS_FTP.cpp index 3fff56646e..e77dddd178 100644 --- a/libraries/GCS_MAVLink/GCS_FTP.cpp +++ b/libraries/GCS_MAVLink/GCS_FTP.cpp @@ -85,7 +85,16 @@ void GCS_MAVLINK::handle_file_transfer_protocol(const mavlink_message_t &msg) { } } -void GCS_MAVLINK::send_ftp_replies(void) { +void GCS_MAVLINK::send_ftp_replies(void) +{ + /* + provide same banner we would give with old param download + */ + if (ftp.need_banner_send_mask & (1U<empty()) { return; } @@ -273,6 +282,11 @@ void GCS_MAVLINK::ftp_worker(void) { reply.opcode = FTP_OP::Ack; reply.size = sizeof(uint32_t); *((int32_t *)reply.data) = (int32_t)file_size; + + // provide compatibility with old protocol banner download + if (strncmp((const char *)request.data, "@PARAM/param.pck", 16) == 0) { + ftp.need_banner_send_mask |= 1U<