aboutsummaryrefslogtreecommitdiff
path: root/src/modules/mavlink/mavlink_ftp.h
diff options
context:
space:
mode:
authorDon Gagne <don@thegagnes.com>2014-06-27 20:33:39 -0700
committerDon Gagne <don@thegagnes.com>2014-06-27 20:33:39 -0700
commita398d5cbcc1d39d83611543b787c5c8aecae10dd (patch)
treed01fb8081510d72e55105d976d348b11db68c1fe /src/modules/mavlink/mavlink_ftp.h
parent7546b99a24a33ff160b29b5be31a9e0d39bbce1a (diff)
downloadpx4-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.h33
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;
}
+
};