forked from Archive/PX4-Autopilot
Merge branch 'beta_mavlink2' of github.com:PX4/Firmware into paul_estimator_mavlink2
This commit is contained in:
commit
44bc5db0e3
|
@ -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);
|
||||||
|
|
||||||
|
|
|
@ -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 */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue