Merge branch 'beta_mavlink2' of github.com:PX4/Firmware into paul_estimator_mavlink2

This commit is contained in:
Lorenz Meier 2014-03-17 15:08:18 +01:00
commit 44bc5db0e3
2 changed files with 20 additions and 12 deletions

View File

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

View File

@ -48,7 +48,7 @@
class MavlinkOrbSubscription class MavlinkOrbSubscription
{ {
public: public:
MavlinkOrbSubscription *next; MavlinkOrbSubscription *next; /*< pointer to next subscription in list */
MavlinkOrbSubscription(const orb_id_t topic); MavlinkOrbSubscription(const orb_id_t topic);
~MavlinkOrbSubscription(); ~MavlinkOrbSubscription();
@ -59,18 +59,19 @@ public:
* Check if the topic has been published. * Check if the topic has been published.
* *
* This call will return true if the topic was ever published. * This call will return true if the topic was ever published.
* @param true if the topic has been published at least once. * @return true if the topic has been published at least once.
*/ */
bool is_published(); bool is_published();
void *get_data(); void *get_data();
const orb_id_t get_topic(); const orb_id_t get_topic();
private: private:
const orb_id_t _topic; const orb_id_t _topic; /*< topic metadata */
int _fd; int _fd; /*< subscription handle */
bool _published; bool _published; /*< topic was ever published */
void *_data; void *_data; /*< pointer to data buffer */
hrt_abstime _last_check; hrt_abstime _last_check; /*< time of last check */
bool _updated; /*< updated on last check */
}; };