mavlink: MavlinkOrbSubscription.update() result fixed

This commit is contained in:
Anton Babushkin 2014-03-16 17:03:39 +04:00
parent 3874bca208
commit df5d702bae
2 changed files with 15 additions and 11 deletions

View File

@ -78,12 +78,15 @@ MavlinkOrbSubscription::get_data()
bool
MavlinkOrbSubscription::update(const hrt_abstime t)
{
if (_last_check != t) {
_last_check = t;
bool updated;
orb_check(_fd, &updated);
if (_last_check == t) {
/* already checked right now, return result of the check */
return _updated;
if (updated) {
} else {
_last_check = t;
orb_check(_fd, &_updated);
if (_updated) {
orb_copy(_topic, _fd, _data);
return true;
}

View File

@ -48,7 +48,7 @@
class MavlinkOrbSubscription
{
public:
MavlinkOrbSubscription *next;
MavlinkOrbSubscription *next; /*< pointer to next subscription in list */
MavlinkOrbSubscription(const orb_id_t topic);
~MavlinkOrbSubscription();
@ -66,11 +66,12 @@ public:
const orb_id_t get_topic();
private:
const orb_id_t _topic;
int _fd;
bool _published;
void *_data;
hrt_abstime _last_check;
const orb_id_t _topic; /*< topic metadata */
int _fd; /*< subscription handle */
bool _published; /*< topic was ever published */
void *_data; /*< pointer to data buffer */
hrt_abstime _last_check; /*< time of last check */
bool _updated; /*< updated on last check */
};