diff options
author | Anton Babushkin <anton.babushkin@me.com> | 2014-02-26 21:28:35 +0400 |
---|---|---|
committer | Anton Babushkin <anton.babushkin@me.com> | 2014-02-26 21:28:35 +0400 |
commit | 7310fd608500be69153c5d033f74b056f1bb986e (patch) | |
tree | 47792aa5bfba108ee53a580573ab6b1e3a3b928f /src/modules/mavlink/mavlink_orb_subscription.cpp | |
parent | 769a2af1f8925a2d47fd47a2d25f8d7baac150ec (diff) | |
download | px4-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.cpp | 36 |
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; } } |