PX4 Firmware
PX4 Autopilot Software http://px4.io
MavlinkFTP Class Reference

MAVLink remote file server. Support FTP like commands using MAVLINK_MSG_ID_FILE_TRANSFER_PROTOCOL message. More...

#include <mavlink_ftp.h>

Collaboration diagram for MavlinkFTP:

Classes

struct  _session_info
 Session info, fd=-1 for no active session. More...
 
struct  SessionInfo
 

Public Types

enum  Opcode : uint8_t {
  kCmdNone, kCmdTerminateSession, kCmdResetSessions, kCmdListDirectory,
  kCmdOpenFileRO, kCmdReadFile, kCmdCreateFile, kCmdWriteFile,
  kCmdRemoveFile, kCmdCreateDirectory, kCmdRemoveDirectory, kCmdOpenFileWO,
  kCmdTruncateFile, kCmdRename, kCmdCalcFileCRC32, kCmdBurstReadFile,
  kRspAck = 128, kRspNak
}
 Command opcodes. More...
 
enum  ErrorCode : uint8_t {
  kErrNone, kErrFail, kErrFailErrno, kErrInvalidDataSize,
  kErrInvalidSession, kErrNoSessionsAvailable, kErrEOF, kErrUnknownCommand,
  kErrFailFileExists, kErrFailFileProtected
}
 Error codes returned in Nak response PayloadHeader.data[0]. More...
 
typedef void(* ReceiveMessageFunc_t) (const mavlink_file_transfer_protocol_t *ftp_req, void *worker_data)
 

Public Member Functions

 MavlinkFTP (Mavlink *mavlink)
 
 ~MavlinkFTP ()
 
void send (const hrt_abstime t)
 Handle sending of messages. More...
 
void handle_message (const mavlink_message_t *msg)
 Handle possible FTP message. More...
 
void set_unittest_worker (ReceiveMessageFunc_t rcvMsgFunc, void *worker_data)
 Sets up the server to run in unit test mode. More...
 
struct __attribute__ ((__packed__)) PayloadHeader
 This is the payload which is in mavlink_file_transfer_protocol_t.payload. More...
 
unsigned get_size ()
 

Private Member Functions

char * _data_as_cstring (PayloadHeader *payload)
 Guarantees that the payload data is null terminated. More...
 
void _process_request (mavlink_file_transfer_protocol_t *ftp_req, uint8_t target_system_id, uint8_t target_comp_id)
 Processes an FTP message. More...
 
void _reply (mavlink_file_transfer_protocol_t *ftp_req)
 Sends the specified FTP response message out through mavlink. More...
 
int _copy_file (const char *src_path, const char *dst_path, size_t length)
 Copy file (with limited space) More...
 
ErrorCode _workList (PayloadHeader *payload, bool list_hidden=false)
 Responds to a List command. More...
 
ErrorCode _workOpen (PayloadHeader *payload, int oflag)
 Responds to an Open command. More...
 
ErrorCode _workRead (PayloadHeader *payload)
 Responds to a Read command. More...
 
ErrorCode _workBurst (PayloadHeader *payload, uint8_t target_system_id, uint8_t target_component_id)
 Responds to a Stream command. More...
 
ErrorCode _workWrite (PayloadHeader *payload)
 Responds to a Write command. More...
 
ErrorCode _workTerminate (PayloadHeader *payload)
 Responds to a Terminate command. More...
 
ErrorCode _workReset (PayloadHeader *payload)
 Responds to a Reset command. More...
 
ErrorCode _workRemoveDirectory (PayloadHeader *payload)
 Responds to a RemoveDirectory command. More...
 
ErrorCode _workCreateDirectory (PayloadHeader *payload)
 Responds to a CreateDirectory command. More...
 
ErrorCode _workRemoveFile (PayloadHeader *payload)
 Responds to a RemoveFile command. More...
 
ErrorCode _workTruncateFile (PayloadHeader *payload)
 Responds to a TruncateFile command. More...
 
ErrorCode _workRename (PayloadHeader *payload)
 Responds to a Rename command. More...
 
ErrorCode _workCalcFileCRC32 (PayloadHeader *payload)
 Responds to a CalcFileCRC32 command. More...
 
uint8_t _getServerSystemId (void)
 
uint8_t _getServerComponentId (void)
 
uint8_t _getServerChannel (void)
 
bool _ensure_buffers_exist ()
 make sure that the working buffers _work_buffer* are allocated More...
 
 MavlinkFTP (const MavlinkFTP &)
 
MavlinkFTP operator= (const MavlinkFTP &)
 

Private Attributes

ReceiveMessageFunc_t _utRcvMsgFunc {}
 Unit test override for mavlink message sending. More...
 
void * _worker_data {nullptr}
 Additional parameter to _utRcvMsgFunc;. More...
 
Mavlink_mavlink
 
char * _work_buffer1 {nullptr}
 
char * _work_buffer2 {nullptr}
 
hrt_abstime _last_work_buffer_access {0}
 timestamp when the buffers were last accessed More...
 
bool _last_reply_valid = false
 
uint8_t _last_reply [MAVLINK_MSG_ID_FILE_TRANSFER_PROTOCOL_LEN - MAVLINK_MSG_FILE_TRANSFER_PROTOCOL_FIELD_PAYLOAD_LEN+sizeof(PayloadHeader)+sizeof(uint32_t)]
 

Static Private Attributes

static const char kDirentFile = 'F'
 Identifies File returned from List command. More...
 
static const char kDirentDir = 'D'
 Identifies Directory returned from List command. More...
 
static const char kDirentSkip = 'S'
 Identifies Skipped entry from List command. More...
 
static const uint8_t kMaxDataLength = MAVLINK_MSG_FILE_TRANSFER_PROTOCOL_FIELD_PAYLOAD_LEN - sizeof(PayloadHeader)
 Maximum data size in RequestHeader::data. More...
 
static constexpr int _work_buffer1_len = kMaxDataLength
 
static constexpr int _work_buffer2_len = 256
 
static constexpr const char _root_dir [] = PX4_ROOTFSDIR
 
static constexpr const int _root_dir_len = sizeof(_root_dir) - 1
 

Friends

class MavlinkFtpTest
 

Detailed Description

MAVLink remote file server. Support FTP like commands using MAVLINK_MSG_ID_FILE_TRANSFER_PROTOCOL message.

Definition at line 52 of file mavlink_ftp.h.

Member Typedef Documentation

◆ ReceiveMessageFunc_t

typedef void(* MavlinkFTP::ReceiveMessageFunc_t) (const mavlink_file_transfer_protocol_t *ftp_req, void *worker_data)

Definition at line 67 of file mavlink_ftp.h.

Member Enumeration Documentation

◆ ErrorCode

enum MavlinkFTP::ErrorCode : uint8_t

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

Enumerator
kErrNone 
kErrFail 

Unknown failure.

kErrFailErrno 

Command failed, 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.

Definition at line 113 of file mavlink_ftp.h.

◆ Opcode

enum MavlinkFTP::Opcode : uint8_t

Command opcodes.

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 90 of file mavlink_ftp.h.

Constructor & Destructor Documentation

◆ MavlinkFTP() [1/2]

MavlinkFTP::MavlinkFTP ( Mavlink mavlink)

Definition at line 51 of file mavlink_ftp.cpp.

◆ ~MavlinkFTP()

MavlinkFTP::~MavlinkFTP ( )

Definition at line 58 of file mavlink_ftp.cpp.

References _work_buffer1, and _work_buffer2.

◆ MavlinkFTP() [2/2]

MavlinkFTP::MavlinkFTP ( const MavlinkFTP )
private

Member Function Documentation

◆ __attribute__()

struct MavlinkFTP::__attribute__ ( (__packed__)  )
inline

This is the payload which is in mavlink_file_transfer_protocol_t.payload.

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

< sequence number for message

< Session id for read and write commands

< Command opcode

< Size of data

< Request opcode returned in kRspAck, kRspNak message

< Only used if req_opcode=kCmdBurstReadFile - 1: set of burst packets complete, 0: More burst packets coming.

< 32 bit aligment padding

< Offsets for List and Read commands

< command data, varies by Opcode

Definition at line 77 of file mavlink_ftp.h.

References data.

◆ _copy_file()

int MavlinkFTP::_copy_file ( const char *  src_path,
const char *  dst_path,
size_t  length 
)
private

Copy file (with limited space)

Definition at line 889 of file mavlink_ftp.cpp.

References _work_buffer2, _work_buffer2_len, read(), and write().

Referenced by _workTruncateFile().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ _data_as_cstring()

char * MavlinkFTP::_data_as_cstring ( PayloadHeader *  payload)
private

Guarantees that the payload data is null terminated.

Returns
Returns a pointer to the payload data as a char *

Definition at line 873 of file mavlink_ftp.cpp.

References kMaxDataLength.

Referenced by _workCalcFileCRC32(), _workCreateDirectory(), _workList(), _workOpen(), _workRemoveDirectory(), _workRemoveFile(), _workRename(), and _workTruncateFile().

Here is the caller graph for this function:

◆ _ensure_buffers_exist()

bool MavlinkFTP::_ensure_buffers_exist ( )
private

make sure that the working buffers _work_buffer* are allocated

Returns
true if buffers exist, false if allocation failed

Definition at line 294 of file mavlink_ftp.cpp.

References _last_work_buffer_access, _work_buffer1, _work_buffer1_len, _work_buffer2, _work_buffer2_len, and hrt_absolute_time().

Referenced by _process_request().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ _getServerChannel()

uint8_t MavlinkFTP::_getServerChannel ( void  )
private

Definition at line 109 of file mavlink_ftp.cpp.

References _mavlink, Mavlink::get_channel(), and MavlinkFtpTest::serverChannel.

Referenced by _process_request().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ _getServerComponentId()

uint8_t MavlinkFTP::_getServerComponentId ( void  )
private

Definition at line 97 of file mavlink_ftp.cpp.

References _mavlink, Mavlink::get_component_id(), and MavlinkFtpTest::serverComponentId.

Referenced by handle_message().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ _getServerSystemId()

uint8_t MavlinkFTP::_getServerSystemId ( void  )
private

Definition at line 85 of file mavlink_ftp.cpp.

References _mavlink, Mavlink::get_system_id(), and MavlinkFtpTest::serverSystemId.

Referenced by handle_message().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ _process_request()

void MavlinkFTP::_process_request ( mavlink_file_transfer_protocol_t *  ftp_req,
uint8_t  target_system_id,
uint8_t  target_comp_id 
)
private

Processes an FTP message.

Definition at line 143 of file mavlink_ftp.cpp.

References _ensure_buffers_exist(), _getServerChannel(), _last_reply, _last_reply_valid, _mavlink, _reply(), _workBurst(), _workCalcFileCRC32(), _workCreateDirectory(), _workList(), _workOpen(), _workRead(), _workRemoveDirectory(), _workRemoveFile(), _workRename(), _workReset(), _workTerminate(), _workTruncateFile(), _workWrite(), Mavlink::get_channel(), kCmdBurstReadFile, kCmdCalcFileCRC32, kCmdCreateDirectory, kCmdCreateFile, kCmdListDirectory, kCmdNone, kCmdOpenFileRO, kCmdOpenFileWO, kCmdReadFile, kCmdRemoveDirectory, kCmdRemoveFile, kCmdRename, kCmdResetSessions, kCmdTerminateSession, kCmdTruncateFile, kCmdWriteFile, kErrFailErrno, kErrFailFileExists, kErrInvalidDataSize, kErrNone, kErrUnknownCommand, kMaxDataLength, kRspAck, and kRspNak.

Referenced by handle_message().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ _reply()

void MavlinkFTP::_reply ( mavlink_file_transfer_protocol_t *  ftp_req)
private

Sends the specified FTP response message out through mavlink.

Definition at line 311 of file mavlink_ftp.cpp.

References _last_reply, _last_reply_valid, _mavlink, _utRcvMsgFunc, _worker_data, Mavlink::get_channel(), and kRspAck.

Referenced by _process_request(), and send().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ _workBurst()

MavlinkFTP::ErrorCode MavlinkFTP::_workBurst ( PayloadHeader *  payload,
uint8_t  target_system_id,
uint8_t  target_component_id 
)
private

Responds to a Stream command.

Definition at line 575 of file mavlink_ftp.cpp.

References kErrInvalidSession, and kErrNone.

Referenced by _process_request().

Here is the caller graph for this function:

◆ _workCalcFileCRC32()

MavlinkFTP::ErrorCode MavlinkFTP::_workCalcFileCRC32 ( PayloadHeader *  payload)
private

Responds to a CalcFileCRC32 command.

Definition at line 835 of file mavlink_ftp.cpp.

References _data_as_cstring(), _root_dir, _root_dir_len, _work_buffer2, _work_buffer2_len, fd, kErrFailErrno, kErrNone, and read().

Referenced by _process_request().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ _workCreateDirectory()

MavlinkFTP::ErrorCode MavlinkFTP::_workCreateDirectory ( PayloadHeader *  payload)
private

Responds to a CreateDirectory command.

Definition at line 817 of file mavlink_ftp.cpp.

References _data_as_cstring(), _root_dir, _root_dir_len, _work_buffer1, _work_buffer1_len, kErrFailErrno, and kErrNone.

Referenced by _process_request().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ _workList()

MavlinkFTP::ErrorCode MavlinkFTP::_workList ( PayloadHeader *  payload,
bool  list_hidden = false 
)
private

Responds to a List command.

Definition at line 339 of file mavlink_ftp.cpp.

References _data_as_cstring(), _root_dir, _root_dir_len, _work_buffer1, _work_buffer1_len, _work_buffer2, _work_buffer2_len, kDirentDir, kDirentFile, kDirentSkip, kErrEOF, kErrFailErrno, kErrNone, and kMaxDataLength.

Referenced by _process_request().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ _workOpen()

MavlinkFTP::ErrorCode MavlinkFTP::_workOpen ( PayloadHeader *  payload,
int  oflag 
)
private

Responds to an Open command.

Definition at line 490 of file mavlink_ftp.cpp.

References _data_as_cstring(), _root_dir, _root_dir_len, _work_buffer1, _work_buffer1_len, fd, kErrFailErrno, kErrNone, and kErrNoSessionsAvailable.

Referenced by _process_request().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ _workRead()

MavlinkFTP::ErrorCode MavlinkFTP::_workRead ( PayloadHeader *  payload)
private

Responds to a Read command.

Definition at line 539 of file mavlink_ftp.cpp.

References kErrEOF, kErrFailErrno, kErrInvalidSession, kErrNone, kMaxDataLength, and read().

Referenced by _process_request().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ _workRemoveDirectory()

MavlinkFTP::ErrorCode MavlinkFTP::_workRemoveDirectory ( PayloadHeader *  payload)
private

Responds to a RemoveDirectory command.

Definition at line 799 of file mavlink_ftp.cpp.

References _data_as_cstring(), _root_dir, _root_dir_len, _work_buffer1, _work_buffer1_len, kErrFailErrno, and kErrNone.

Referenced by _process_request().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ _workRemoveFile()

MavlinkFTP::ErrorCode MavlinkFTP::_workRemoveFile ( PayloadHeader *  payload)
private

Responds to a RemoveFile command.

Definition at line 625 of file mavlink_ftp.cpp.

References _data_as_cstring(), _root_dir, _root_dir_len, _work_buffer1, _work_buffer1_len, kErrFailErrno, and kErrNone.

Referenced by _process_request().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ _workRename()

MavlinkFTP::ErrorCode MavlinkFTP::_workRename ( PayloadHeader *  payload)
private

Responds to a Rename command.

Definition at line 769 of file mavlink_ftp.cpp.

References _data_as_cstring(), _root_dir, _root_dir_len, _work_buffer1, _work_buffer1_len, _work_buffer2, _work_buffer2_len, kErrFailErrno, and kErrNone.

Referenced by _process_request().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ _workReset()

MavlinkFTP::ErrorCode MavlinkFTP::_workReset ( PayloadHeader *  payload)
private

Responds to a Reset command.

Definition at line 754 of file mavlink_ftp.cpp.

References kErrNone.

Referenced by _process_request().

Here is the caller graph for this function:

◆ _workTerminate()

MavlinkFTP::ErrorCode MavlinkFTP::_workTerminate ( PayloadHeader *  payload)
private

Responds to a Terminate command.

Definition at line 737 of file mavlink_ftp.cpp.

References kErrInvalidSession, and kErrNone.

Referenced by _process_request().

Here is the caller graph for this function:

◆ _workTruncateFile()

MavlinkFTP::ErrorCode MavlinkFTP::_workTruncateFile ( PayloadHeader *  payload)
private

Responds to a TruncateFile command.

Definition at line 643 of file mavlink_ftp.cpp.

References _copy_file(), _data_as_cstring(), _root_dir, _root_dir_len, _work_buffer1, _work_buffer1_len, fd, kErrFailErrno, kErrNone, and write().

Referenced by _process_request().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ _workWrite()

MavlinkFTP::ErrorCode MavlinkFTP::_workWrite ( PayloadHeader *  payload)
private

Responds to a Write command.

Definition at line 597 of file mavlink_ftp.cpp.

References kErrFailErrno, kErrInvalidSession, kErrNone, and write().

Referenced by _process_request().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_size()

unsigned MavlinkFTP::get_size ( )

Definition at line 65 of file mavlink_ftp.cpp.

References _utRcvMsgFunc, _worker_data, and set_unittest_worker().

Referenced by MavlinkFtpTest::_receive_message_handler_burst(), and send().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ handle_message()

void MavlinkFTP::handle_message ( const mavlink_message_t *  msg)

Handle possible FTP message.

Definition at line 121 of file mavlink_ftp.cpp.

References _getServerComponentId(), _getServerSystemId(), and _process_request().

Referenced by MavlinkFtpTest::_bad_datasize_test(), MavlinkFtpTest::_burst_test(), MavlinkFtpTest::_send_receive_msg(), and MavlinkReceiver::Run().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ operator=()

MavlinkFTP MavlinkFTP::operator= ( const MavlinkFTP )
private

◆ send()

void MavlinkFTP::send ( const hrt_abstime  t)

Handle sending of messages.

Call this regularly at a fixed frequency.

Parameters
tcurrent time

Definition at line 948 of file mavlink_ftp.cpp.

References _last_work_buffer_access, _mavlink, _reply(), _work_buffer1, _work_buffer2, Mavlink::get_free_tx_buf(), get_size(), hrt_elapsed_time(), kCmdBurstReadFile, kErrEOF, kErrFailErrno, kErrNone, kMaxDataLength, kRspAck, kRspNak, and read().

Referenced by MavlinkFtpTest::_burst_test(), MavlinkFtpTest::_receive_message_handler_burst(), and MavlinkReceiver::Run().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ set_unittest_worker()

void MavlinkFTP::set_unittest_worker ( ReceiveMessageFunc_t  rcvMsgFunc,
void *  worker_data 
)

Sets up the server to run in unit test mode.

Parameters
rcvmsgFuncFunction which will be called to handle outgoing mavlink messages.
worker_dataData to pass to worker

Referenced by MavlinkFtpTest::_burst_test(), MavlinkFtpTest::_init(), and get_size().

Here is the caller graph for this function:

Friends And Related Function Documentation

◆ MavlinkFtpTest

friend class MavlinkFtpTest
friend

Definition at line 208 of file mavlink_ftp.h.

Member Data Documentation

◆ _last_reply

uint8_t MavlinkFTP::_last_reply[MAVLINK_MSG_ID_FILE_TRANSFER_PROTOCOL_LEN - MAVLINK_MSG_FILE_TRANSFER_PROTOCOL_FIELD_PAYLOAD_LEN+sizeof(PayloadHeader)+sizeof(uint32_t)]
private

Definition at line 205 of file mavlink_ftp.h.

Referenced by _process_request(), and _reply().

◆ _last_reply_valid

bool MavlinkFTP::_last_reply_valid = false
private

Definition at line 203 of file mavlink_ftp.h.

Referenced by _process_request(), and _reply().

◆ _last_work_buffer_access

hrt_abstime MavlinkFTP::_last_work_buffer_access {0}
private

timestamp when the buffers were last accessed

Definition at line 192 of file mavlink_ftp.h.

Referenced by _ensure_buffers_exist(), and send().

◆ _mavlink

Mavlink* MavlinkFTP::_mavlink
private

◆ _root_dir

constexpr const char MavlinkFTP::_root_dir = PX4_ROOTFSDIR
staticprivate

◆ _root_dir_len

constexpr const int MavlinkFTP::_root_dir_len = sizeof(_root_dir) - 1
staticprivate

◆ _utRcvMsgFunc

ReceiveMessageFunc_t MavlinkFTP::_utRcvMsgFunc {}
private

Unit test override for mavlink message sending.

Definition at line 178 of file mavlink_ftp.h.

Referenced by _reply(), and get_size().

◆ _work_buffer1

char* MavlinkFTP::_work_buffer1 {nullptr}
private

◆ _work_buffer1_len

constexpr int MavlinkFTP::_work_buffer1_len = kMaxDataLength
staticprivate

◆ _work_buffer2

char* MavlinkFTP::_work_buffer2 {nullptr}
private

◆ _work_buffer2_len

constexpr int MavlinkFTP::_work_buffer2_len = 256
staticprivate

◆ _worker_data

void* MavlinkFTP::_worker_data {nullptr}
private

Additional parameter to _utRcvMsgFunc;.

Definition at line 179 of file mavlink_ftp.h.

Referenced by _reply(), and get_size().

◆ kDirentDir

const char MavlinkFTP::kDirentDir = 'D'
staticprivate

Identifies Directory returned from List command.

Definition at line 160 of file mavlink_ftp.h.

Referenced by _workList().

◆ kDirentFile

const char MavlinkFTP::kDirentFile = 'F'
staticprivate

Identifies File returned from List command.

Definition at line 159 of file mavlink_ftp.h.

Referenced by _workList().

◆ kDirentSkip

const char MavlinkFTP::kDirentSkip = 'S'
staticprivate

Identifies Skipped entry from List command.

Definition at line 161 of file mavlink_ftp.h.

Referenced by _workList().

◆ kMaxDataLength

const uint8_t MavlinkFTP::kMaxDataLength = MAVLINK_MSG_FILE_TRANSFER_PROTOCOL_FIELD_PAYLOAD_LEN - sizeof(PayloadHeader)
staticprivate

Maximum data size in RequestHeader::data.

Definition at line 164 of file mavlink_ftp.h.

Referenced by _data_as_cstring(), _process_request(), _workList(), _workRead(), and send().


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