aboutsummaryrefslogtreecommitdiff
path: root/src/modules/mavlink/mavlink_orb_subscription.cpp
diff options
context:
space:
mode:
authorAnton Babushkin <anton.babushkin@me.com>2014-02-26 21:28:35 +0400
committerAnton Babushkin <anton.babushkin@me.com>2014-02-26 21:28:35 +0400
commit7310fd608500be69153c5d033f74b056f1bb986e (patch)
tree47792aa5bfba108ee53a580573ab6b1e3a3b928f /src/modules/mavlink/mavlink_orb_subscription.cpp
parent769a2af1f8925a2d47fd47a2d25f8d7baac150ec (diff)
downloadpx4-firmware-7310fd608500be69153c5d033f74b056f1bb986e.tar.gz
px4-firmware-7310fd608500be69153c5d033f74b056f1bb986e.tar.bz2
px4-firmware-7310fd608500be69153c5d033f74b056f1bb986e.zip
mavlink: use inherited classes instead of callbacks for mavlink messages formatting, fixes and cleanup
Diffstat (limited to 'src/modules/mavlink/mavlink_orb_subscription.cpp')
-rw-r--r--src/modules/mavlink/mavlink_orb_subscription.cpp36
1 files changed, 24 insertions, 12 deletions
diff --git a/src/modules/mavlink/mavlink_orb_subscription.cpp b/src/modules/mavlink/mavlink_orb_subscription.cpp
index 84ac11483..b504b6955 100644
--- a/src/modules/mavlink/mavlink_orb_subscription.cpp
+++ b/src/modules/mavlink/mavlink_orb_subscription.cpp
@@ -13,28 +13,40 @@
#include "mavlink_orb_subscription.h"
-MavlinkOrbSubscription::MavlinkOrbSubscription(const struct orb_metadata *topic, size_t size)
+MavlinkOrbSubscription::MavlinkOrbSubscription(const struct orb_metadata *topic, size_t size) : _topic(topic), _last_check(0), next(nullptr)
{
- this->topic = topic;
- this->data = malloc(size);
- memset(this->data, 0, size);
- this->fd = orb_subscribe(topic);
- this->last_update = 0;
+ _data = malloc(size);
+ memset(_data, 0, size);
+ _fd = orb_subscribe(_topic);
}
MavlinkOrbSubscription::~MavlinkOrbSubscription()
{
- close(fd);
- free(data);
+ close(_fd);
+ free(_data);
}
-bool MavlinkOrbSubscription::update(const hrt_abstime t)
+const struct orb_metadata *
+MavlinkOrbSubscription::get_topic()
{
- if (last_update != t) {
+ return _topic;
+}
+
+void *
+MavlinkOrbSubscription::get_data()
+{
+ return _data;
+}
+
+bool
+MavlinkOrbSubscription::update(const hrt_abstime t)
+{
+ if (_last_check != t) {
+ _last_check = t;
bool updated;
- orb_check(fd, &updated);
+ orb_check(_fd, &updated);
if (updated) {
- orb_copy(topic, fd, data);
+ orb_copy(_topic, _fd, _data);
return true;
}
}