aboutsummaryrefslogtreecommitdiff
path: root/src/modules/mavlink/mavlink_ftp.cpp
diff options
context:
space:
mode:
authorpx4dev <px4@purgatory.org>2014-06-07 14:46:46 -0700
committerpx4dev <px4@purgatory.org>2014-06-07 14:46:46 -0700
commite8906619005a09d98fe68b04f2867c537f0895a8 (patch)
treef741b94b694af35f709f149c725e68b24755afb1 /src/modules/mavlink/mavlink_ftp.cpp
parent99dfef357b2f9228df54f0f26481c37204afa591 (diff)
downloadpx4-firmware-e8906619005a09d98fe68b04f2867c537f0895a8.tar.gz
px4-firmware-e8906619005a09d98fe68b04f2867c537f0895a8.tar.bz2
px4-firmware-e8906619005a09d98fe68b04f2867c537f0895a8.zip
Don't queue empty work items.
Diffstat (limited to 'src/modules/mavlink/mavlink_ftp.cpp')
-rw-r--r--src/modules/mavlink/mavlink_ftp.cpp13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/modules/mavlink/mavlink_ftp.cpp b/src/modules/mavlink/mavlink_ftp.cpp
index 7a72835cc..d4d659d91 100644
--- a/src/modules/mavlink/mavlink_ftp.cpp
+++ b/src/modules/mavlink/mavlink_ftp.cpp
@@ -73,10 +73,13 @@ MavlinkFTP::handle_message(mavlink_message_t *msg, mavlink_channel_t channel)
if (req != nullptr) {
// decode the request
- req->decode(channel, msg);
+ if (req->decode(msg, channel)) {
- // and queue it for the worker
- work_queue(LPWORK, &req->work, &MavlinkFTP::_workerTrampoline, req, 0);
+ // and queue it for the worker
+ work_queue(LPWORK, &req->work, &MavlinkFTP::_workerTrampoline, req, 0);
+ } else {
+ _qFree(req);
+ }
}
}
@@ -112,7 +115,7 @@ MavlinkFTP::_worker(Request *req)
printf("ftp: bad crc\n");
}
- printf("ftp: opc %u size %u offset %u\n", hdr->opcode, hdr->size, hdr->offset);
+ printf("ftp: channel %u opc %u size %u offset %u\n", req->channel(), hdr->opcode, hdr->size, hdr->offset);
switch (hdr->opcode) {
case kCmdNone:
@@ -186,7 +189,7 @@ MavlinkFTP::_reply(Request *req)
hdr->crc32 = crc32(req->rawData(), req->dataSize());
// then pack and send the reply back to the request source
- mavlink_msg_encapsulated_data_send(req->channel, req->sequence(), req->rawData());
+ req->reply();
}
MavlinkFTP::ErrorCode