diff options
author | Lorenz Meier <lm@inf.ethz.ch> | 2014-03-16 13:48:33 +0100 |
---|---|---|
committer | Lorenz Meier <lm@inf.ethz.ch> | 2014-03-16 13:48:33 +0100 |
commit | 3874bca2084bb88dcd739b309bd4a7929db3b417 (patch) | |
tree | e43f65cfe4076fa603aaca2464d046ed8e1ce99f /src/modules/mavlink/mavlink_orb_subscription.cpp | |
parent | 717e1bd374e7710ce579e91c45852bbba906eba8 (diff) | |
download | px4-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.cpp | 21 |
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; +} |