aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLorenz Meier <lm@inf.ethz.ch>2014-06-23 13:51:05 +0200
committerLorenz Meier <lm@inf.ethz.ch>2014-06-23 13:51:05 +0200
commita9653fa10db3884d3d17ee33f80f23aa2e3ef842 (patch)
tree8ad5ea39c49311a5727dc9d8c54125c7b4922098
parent87857cdd48d43a28c3b8ed1f1fe500ad28a93bbc (diff)
downloadpx4-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
-rw-r--r--src/modules/mavlink/mavlink_orb_subscription.cpp26
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;
}
}