aboutsummaryrefslogtreecommitdiff
path: root/src/modules/mavlink/mavlink_orb_subscription.cpp
diff options
context:
space:
mode:
authorLorenz Meier <lm@inf.ethz.ch>2014-03-16 13:48:33 +0100
committerLorenz Meier <lm@inf.ethz.ch>2014-03-16 13:48:33 +0100
commit3874bca2084bb88dcd739b309bd4a7929db3b417 (patch)
treee43f65cfe4076fa603aaca2464d046ed8e1ce99f /src/modules/mavlink/mavlink_orb_subscription.cpp
parent717e1bd374e7710ce579e91c45852bbba906eba8 (diff)
downloadpx4-firmware-3874bca2084bb88dcd739b309bd4a7929db3b417.tar.gz
px4-firmware-3874bca2084bb88dcd739b309bd4a7929db3b417.tar.bz2
px4-firmware-3874bca2084bb88dcd739b309bd4a7929db3b417.zip
mavlink: Only send messages when we have updates for them.
Diffstat (limited to 'src/modules/mavlink/mavlink_orb_subscription.cpp')
-rw-r--r--src/modules/mavlink/mavlink_orb_subscription.cpp21
1 files changed, 19 insertions, 2 deletions
diff --git a/src/modules/mavlink/mavlink_orb_subscription.cpp b/src/modules/mavlink/mavlink_orb_subscription.cpp
index 6279e5366..996318468 100644
--- a/src/modules/mavlink/mavlink_orb_subscription.cpp
+++ b/src/modules/mavlink/mavlink_orb_subscription.cpp
@@ -46,11 +46,15 @@
#include "mavlink_orb_subscription.h"
-MavlinkOrbSubscription::MavlinkOrbSubscription(const orb_id_t topic) : _topic(topic), _last_check(0), next(nullptr)
+MavlinkOrbSubscription::MavlinkOrbSubscription(const orb_id_t topic) :
+ _fd(orb_subscribe(_topic)),
+ _published(false),
+ _topic(topic),
+ _last_check(0),
+ next(nullptr)
{
_data = malloc(topic->o_size);
memset(_data, 0, topic->o_size);
- _fd = orb_subscribe(_topic);
}
MavlinkOrbSubscription::~MavlinkOrbSubscription()
@@ -87,3 +91,16 @@ MavlinkOrbSubscription::update(const hrt_abstime t)
return false;
}
+
+bool
+MavlinkOrbSubscription::is_published()
+{
+ bool updated;
+ orb_check(_fd, &updated);
+
+ if (updated) {
+ _published = true;
+ }
+
+ return _published;
+}