diff options
author | Lorenz Meier <lm@inf.ethz.ch> | 2014-06-23 13:51:05 +0200 |
---|---|---|
committer | Lorenz Meier <lm@inf.ethz.ch> | 2014-06-23 13:51:05 +0200 |
commit | a9653fa10db3884d3d17ee33f80f23aa2e3ef842 (patch) | |
tree | 8ad5ea39c49311a5727dc9d8c54125c7b4922098 /src/modules | |
parent | 87857cdd48d43a28c3b8ed1f1fe500ad28a93bbc (diff) | |
download | px4-firmware-a9653fa10db3884d3d17ee33f80f23aa2e3ef842.tar.gz px4-firmware-a9653fa10db3884d3d17ee33f80f23aa2e3ef842.tar.bz2 px4-firmware-a9653fa10db3884d3d17ee33f80f23aa2e3ef842.zip |
Hotfix: Only orb_copy items in mavlink app if the timestamp changed
Diffstat (limited to 'src/modules')
-rw-r--r-- | src/modules/mavlink/mavlink_orb_subscription.cpp | 26 |
1 files changed, 15 insertions, 11 deletions
diff --git a/src/modules/mavlink/mavlink_orb_subscription.cpp b/src/modules/mavlink/mavlink_orb_subscription.cpp index 901fa8f05..3807323c2 100644 --- a/src/modules/mavlink/mavlink_orb_subscription.cpp +++ b/src/modules/mavlink/mavlink_orb_subscription.cpp @@ -44,6 +44,8 @@ #include <uORB/uORB.h> #include <stdio.h> +#include <systemlib/err.h> + #include "mavlink_orb_subscription.h" MavlinkOrbSubscription::MavlinkOrbSubscription(const orb_id_t topic) : @@ -77,21 +79,23 @@ MavlinkOrbSubscription::update(uint64_t *time, void* data) time_topic = 0; } - if (orb_copy(_topic, _fd, data)) { - /* error copying topic data */ - memset(data, 0, _topic->o_size); - return false; + if (time_topic != *time) { - } else { - /* data copied successfully */ - _published = true; - if (time_topic != *time) { - *time = time_topic; - return true; + if (orb_copy(_topic, _fd, data)) { + /* error copying topic data */ + memset(data, 0, _topic->o_size); + //warnx("err copy, fd: %d, obj: %s, size: %d", _fd, _topic->o_name, _topic->o_size); + return false; } else { - return false; + /* data copied successfully */ + _published = true; + *time = time_topic; + return true; } + + } else { + return false; } } |