From 7e58bde8268f42e1810e51030540f42935591c63 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Thu, 21 Mar 2013 21:55:12 +1100 Subject: [PATCH] GCS_MAVLink: added comm_is_idle() function this will make CLI detection more reliable --- libraries/GCS_MAVLink/GCS_MAVLink.cpp | 12 ++++++++++++ libraries/GCS_MAVLink/GCS_MAVLink.h | 6 ++++++ 2 files changed, 18 insertions(+) diff --git a/libraries/GCS_MAVLink/GCS_MAVLink.cpp b/libraries/GCS_MAVLink/GCS_MAVLink.cpp index ed7aef2006..081fa24586 100644 --- a/libraries/GCS_MAVLink/GCS_MAVLink.cpp +++ b/libraries/GCS_MAVLink/GCS_MAVLink.cpp @@ -75,3 +75,15 @@ uint8_t mavlink_get_message_crc(uint8_t msgid) { return pgm_read_byte(&mavlink_message_crc_progmem[msgid]); } + +extern const AP_HAL::HAL& hal; + +/* + return true if the MAVLink parser is idle, so there is no partly parsed + MAVLink message being processed + */ +bool comm_is_idle(mavlink_channel_t chan) +{ + mavlink_status_t *status = mavlink_get_channel_status(chan); + return status == NULL || status->parse_state <= MAVLINK_PARSE_STATE_IDLE; +} diff --git a/libraries/GCS_MAVLink/GCS_MAVLink.h b/libraries/GCS_MAVLink/GCS_MAVLink.h index 1728b39435..3e55382971 100644 --- a/libraries/GCS_MAVLink/GCS_MAVLink.h +++ b/libraries/GCS_MAVLink/GCS_MAVLink.h @@ -142,6 +142,12 @@ static inline void crc_accumulate(uint8_t data, uint16_t *crcAccum) } #endif +/* + return true if the MAVLink parser is idle, so there is no partly parsed + MAVLink message being processed + */ +bool comm_is_idle(mavlink_channel_t chan); + #define MAVLINK_USE_CONVENIENCE_FUNCTIONS #include "include/mavlink/v1.0/ardupilotmega/mavlink.h"