Hotfix: Only orb_copy items in mavlink app if the timestamp changed

This commit is contained in:
Lorenz Meier 2014-06-23 13:51:05 +02:00
parent 87857cdd48
commit a9653fa10d
1 changed files with 15 additions and 11 deletions

View File

@ -44,6 +44,8 @@
#include <uORB/uORB.h> #include <uORB/uORB.h>
#include <stdio.h> #include <stdio.h>
#include <systemlib/err.h>
#include "mavlink_orb_subscription.h" #include "mavlink_orb_subscription.h"
MavlinkOrbSubscription::MavlinkOrbSubscription(const orb_id_t topic) : MavlinkOrbSubscription::MavlinkOrbSubscription(const orb_id_t topic) :
@ -77,23 +79,25 @@ MavlinkOrbSubscription::update(uint64_t *time, void* data)
time_topic = 0; time_topic = 0;
} }
if (time_topic != *time) {
if (orb_copy(_topic, _fd, data)) { if (orb_copy(_topic, _fd, data)) {
/* error copying topic data */ /* error copying topic data */
memset(data, 0, _topic->o_size); memset(data, 0, _topic->o_size);
//warnx("err copy, fd: %d, obj: %s, size: %d", _fd, _topic->o_name, _topic->o_size);
return false; return false;
} else { } else {
/* data copied successfully */ /* data copied successfully */
_published = true; _published = true;
if (time_topic != *time) {
*time = time_topic; *time = time_topic;
return true; return true;
}
} else { } else {
return false; return false;
} }
} }
}
bool bool
MavlinkOrbSubscription::update(void* data) MavlinkOrbSubscription::update(void* data)