QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
MavlinkFTP Class Reference

#include <MAVLinkFTP.h>

Public Types

enum  OpCode_t {
  kCmdNone = 0 , kCmdTerminateSession , kCmdResetSessions , kCmdListDirectory ,
  kCmdOpenFileRO , kCmdReadFile , kCmdCreateFile , kCmdWriteFile ,
  kCmdRemoveFile , kCmdCreateDirectory , kCmdRemoveDirectory , kCmdOpenFileWO ,
  kCmdTruncateFile , kCmdRename , kCmdCalcFileCRC32 , kCmdBurstReadFile ,
  kRspAck = 128 , kRspNak
}
 
enum  ErrorCode_t {
  kErrNone = 0 , kErrFail , kErrFailErrno , kErrInvalidDataSize ,
  kErrInvalidSession , kErrNoSessionsAvailable , kErrEOF , kErrUnknownCommand ,
  kErrFailFileExists , kErrFailFileProtected , kErrFailFileNotFound
}
 Error codes returned in Nak response PayloadHeader.data[0]. More...
 

Public Member Functions

 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
 

Static Public Member Functions

static QString opCodeToString (OpCode_t opCode)
 
static QString errorCodeToString (ErrorCode_t errorCode)
 

Detailed Description

Definition at line 10 of file MAVLinkFTP.h.

Member Enumeration Documentation

◆ ErrorCode_t

Error codes returned in Nak response PayloadHeader.data[0].

Enumerator
kErrNone 
kErrFail 

Unknown failure.

kErrFailErrno 

errno sent back in PayloadHeader.data[1]

kErrInvalidDataSize 

PayloadHeader.size is invalid.

kErrInvalidSession 

Session is not currently open.

kErrNoSessionsAvailable 

All available Sessions in use.

kErrEOF 

Offset past end of file for List and Read commands.

kErrUnknownCommand 

Unknown command opcode.

kErrFailFileExists 

File exists already.

kErrFailFileProtected 

File is write protected.

kErrFailFileNotFound 

Definition at line 65 of file MAVLinkFTP.h.

◆ OpCode_t

Enumerator
kCmdNone 

ignored, always acked

kCmdTerminateSession 

Terminates open Read session.

kCmdResetSessions 

Terminates all open Read sessions.

kCmdListDirectory 

List files in <path> from <offset>

kCmdOpenFileRO 

Opens file at <path> for reading, returns <session>

kCmdReadFile 

Reads <size> bytes from <offset> in <session>

kCmdCreateFile 

Creates file at <path> for writing, returns <session>

kCmdWriteFile 

Writes <size> bytes to <offset> in <session>

kCmdRemoveFile 

Remove file at <path>

kCmdCreateDirectory 

Creates directory at <path>

kCmdRemoveDirectory 

Removes Directory at <path>, must be empty.

kCmdOpenFileWO 

Opens file at <path> for writing, returns <session>

kCmdTruncateFile 

Truncate file at <path> to <offset> length.

kCmdRename 

Rename <path1> to <path2>

kCmdCalcFileCRC32 

Calculate CRC32 for file at <path>

kCmdBurstReadFile 

Burst download session file.

kRspAck 

Ack response.

kRspNak 

Nak response.

Definition at line 42 of file MAVLinkFTP.h.

Member Function Documentation

◆ errorCodeToString()

◆ MAVPACKED() [1/2]

MavlinkFTP::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;}  )

This is the fixed length portion of the protocol data. This needs to be packed, because it's typecasted from mavlink_file_transfer_protocol_t.payload, which starts at a 3 byte offset, causing an unaligned access to seq_number and offset

◆ MAVPACKED() [2/2]

MavlinkFTP::MAVPACKED ( typedef struct Request{ RequestHeader hdr;union { uint8_t data[sizeof(((mavlink_file_transfer_protocol_t *) 0) ->payload) - sizeof(RequestHeader)];uint32_t openFileLength;};}  )

◆ opCodeToString()


The documentation for this class was generated from the following files: