diff options
author | Don Gagne <don@thegagnes.com> | 2014-06-27 20:33:39 -0700 |
---|---|---|
committer | Don Gagne <don@thegagnes.com> | 2014-06-27 20:33:39 -0700 |
commit | a398d5cbcc1d39d83611543b787c5c8aecae10dd (patch) | |
tree | d01fb8081510d72e55105d976d348b11db68c1fe /src/modules/mavlink/mavlink_ftp.h | |
parent | 7546b99a24a33ff160b29b5be31a9e0d39bbce1a (diff) | |
download | px4-firmware-a398d5cbcc1d39d83611543b787c5c8aecae10dd.tar.gz px4-firmware-a398d5cbcc1d39d83611543b787c5c8aecae10dd.tar.bz2 px4-firmware-a398d5cbcc1d39d83611543b787c5c8aecae10dd.zip |
Support for List, Open, Read, Terminate commands
Fixed various bugs. Flattened Mavlink::Session class while fixing bugs
in this area.
Diffstat (limited to 'src/modules/mavlink/mavlink_ftp.h')
-rw-r--r-- | src/modules/mavlink/mavlink_ftp.h | 33 |
1 files changed, 12 insertions, 21 deletions
diff --git a/src/modules/mavlink/mavlink_ftp.h b/src/modules/mavlink/mavlink_ftp.h index 462594301..8a1b3fbaa 100644 --- a/src/modules/mavlink/mavlink_ftp.h +++ b/src/modules/mavlink/mavlink_ftp.h @@ -115,27 +115,11 @@ private: kErrPerm }; - class Session - { - public: - Session() : _fd(-1) {} - - static int allocate(); - static Session *get(unsigned index); - static bool terminate(unsigned index); - static void reset(); - - void terminate(); - bool open(const char *path, bool create); - int read(off_t offset, uint8_t *buf, uint8_t count); - int append(off_t offset, uint8_t *buf, uint8_t count); + int _findUnusedSession(void); + bool _validSession(unsigned index); - private: - static const unsigned kMaxSession = 2; - static Session _sessions[kMaxSession]; - - int _fd; - }; + static const unsigned kMaxSession = 2; + int _session_fds[kMaxSession]; class Request { @@ -163,7 +147,11 @@ private: unsigned len = mavlink_msg_encapsulated_data_pack_chan(_mavlink->get_system_id(), _mavlink->get_component_id(), _mavlink->get_channel(), &msg, sequence(), rawData()); - if (!_mavlink->message_buffer_write(&msg, len)) { + _mavlink->lockMessageBufferMutex(); + bool fError = _mavlink->message_buffer_write(&msg, len); + _mavlink->unlockMessageBufferMutex(); + + if (!fError) { warnx("FTP TX ERR"); } else { warnx("wrote: sys: %d, comp: %d, chan: %d, len: %d, checksum: %d", @@ -211,6 +199,8 @@ private: ErrorCode _workRead(Request *req); ErrorCode _workWrite(Request *req); ErrorCode _workRemove(Request *req); + ErrorCode _workTerminate(Request *req); + ErrorCode _workReset(); // work freelist Request _workBufs[kRequestQueueSize]; @@ -232,4 +222,5 @@ private: _qUnlock(); return req; } + }; |