QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
MAVLinkFTP.h
Go to the documentation of this file.
1#pragma once
2
3#include <QtCore/QString>
4#include "MAVLinkLib.h"
5
6class MavlinkFTP {
7public:
12 typedef struct RequestHeader {
13 uint16_t seqNumber;
14 uint8_t session;
15 uint8_t opcode;
16 uint8_t size;
17 uint8_t req_opcode;
18 uint8_t burstComplete;
19 uint8_t paddng;
20 uint32_t offset;
21 }) RequestHeader;
22
24 typedef struct Request{
25 RequestHeader hdr;
26
27 // We use a union here instead of just casting (uint32_t)&payload[0] to not break strict aliasing rules
28 union {
29 // The entire Request must fit into the payload member of the mavlink_file_transfer_protocol_t structure. We use as many leftover bytes
30 // after we use up space for the RequestHeader for the data portion of the Request.
31 uint8_t data[sizeof(((mavlink_file_transfer_protocol_t*)0)->payload) - sizeof(RequestHeader)];
32
33 // File length returned by Open command
34 uint32_t openFileLength;
35 };
36 }) Request;
37
59
74
75 static QString opCodeToString (OpCode_t opCode);
76 static QString errorCodeToString(ErrorCode_t errorCode);
77};
MAVPACKED(typedef struct RequestHeader { uint16_t seqNumber;uint8_t session;uint8_t opcode;uint8_t size;uint8_t req_opcode;uint8_t burstComplete;uint8_t paddng;uint32_t offset;}) RequestHeader
MAVPACKED(typedef struct Request{ RequestHeader hdr;union { uint8_t data[sizeof(((mavlink_file_transfer_protocol_t *) 0) ->payload) - sizeof(RequestHeader)];uint32_t openFileLength;};}) Request
ErrorCode_t
Error codes returned in Nak response PayloadHeader.data[0].
Definition MAVLinkFTP.h:61
@ kErrNoSessionsAvailable
All available Sessions in use.
Definition MAVLinkFTP.h:67
@ kErrFail
Unknown failure.
Definition MAVLinkFTP.h:63
@ kErrEOF
Offset past end of file for List and Read commands.
Definition MAVLinkFTP.h:68
@ kErrUnknownCommand
Unknown command opcode.
Definition MAVLinkFTP.h:69
@ kErrFailFileExists
File exists already.
Definition MAVLinkFTP.h:70
@ kErrInvalidDataSize
PayloadHeader.size is invalid.
Definition MAVLinkFTP.h:65
@ kErrFailErrno
errno sent back in PayloadHeader.data[1]
Definition MAVLinkFTP.h:64
@ kErrInvalidSession
Session is not currently open.
Definition MAVLinkFTP.h:66
@ kErrFailFileNotFound
Definition MAVLinkFTP.h:72
@ kErrFailFileProtected
File is write protected.
Definition MAVLinkFTP.h:71
static QString errorCodeToString(ErrorCode_t errorCode)
Definition MAVLinkFTP.cc:47
@ kCmdRemoveFile
Remove file at <path>
Definition MAVLinkFTP.h:47
@ kCmdRename
Rename <path1> to <path2>
Definition MAVLinkFTP.h:52
@ kCmdWriteFile
Writes <size> bytes to <offset> in <session>
Definition MAVLinkFTP.h:46
@ kCmdCreateFile
Creates file at <path> for writing, returns <session>
Definition MAVLinkFTP.h:45
@ kCmdOpenFileRO
Opens file at <path> for reading, returns <session>
Definition MAVLinkFTP.h:43
@ kCmdRemoveDirectory
Removes Directory at <path>, must be empty.
Definition MAVLinkFTP.h:49
@ kCmdReadFile
Reads <size> bytes from <offset> in <session>
Definition MAVLinkFTP.h:44
@ kCmdTruncateFile
Truncate file at <path> to <offset> length.
Definition MAVLinkFTP.h:51
@ kCmdOpenFileWO
Opens file at <path> for writing, returns <session>
Definition MAVLinkFTP.h:50
@ kCmdResetSessions
Terminates all open Read sessions.
Definition MAVLinkFTP.h:41
@ kCmdNone
ignored, always acked
Definition MAVLinkFTP.h:39
@ kRspAck
Ack response.
Definition MAVLinkFTP.h:56
@ kCmdBurstReadFile
Burst download session file.
Definition MAVLinkFTP.h:54
@ kCmdCreateDirectory
Creates directory at <path>
Definition MAVLinkFTP.h:48
@ kCmdCalcFileCRC32
Calculate CRC32 for file at <path>
Definition MAVLinkFTP.h:53
@ kCmdTerminateSession
Terminates open Read session.
Definition MAVLinkFTP.h:40
@ kRspNak
Nak response.
Definition MAVLinkFTP.h:57
@ kCmdListDirectory
List files in <path> from <offset>
Definition MAVLinkFTP.h:42
static QString opCodeToString(OpCode_t opCode)
Definition MAVLinkFTP.cc:3