2016-10-05 22:52:07 +00:00
# pragma once
2015-02-10 22:23:12 +00:00
// MESSAGE ATT_POS_MOCAP PACKING
# define MAVLINK_MSG_ID_ATT_POS_MOCAP 138
2016-08-02 12:16:40 +00:00
MAVPACKED (
typedef struct __mavlink_att_pos_mocap_t {
2015-08-14 21:55:31 +00:00
uint64_t time_usec ; /*< Timestamp (micros since boot or Unix epoch)*/
float q [ 4 ] ; /*< Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0)*/
float x ; /*< X position in meters (NED)*/
float y ; /*< Y position in meters (NED)*/
float z ; /*< Z position in meters (NED)*/
2018-04-29 09:48:09 +08:00
float covariance [ 21 ] ; /*< Pose covariance matrix upper right triangular (first six entries are the first ROW, next five entries are the second ROW, etc.)*/
2016-08-02 12:16:40 +00:00
} ) mavlink_att_pos_mocap_t ;
2015-02-10 22:23:12 +00:00
2018-04-29 09:48:09 +08:00
# define MAVLINK_MSG_ID_ATT_POS_MOCAP_LEN 120
2016-05-16 08:33:08 +00:00
# define MAVLINK_MSG_ID_ATT_POS_MOCAP_MIN_LEN 36
2018-04-29 09:48:09 +08:00
# define MAVLINK_MSG_ID_138_LEN 120
2016-05-16 08:33:08 +00:00
# define MAVLINK_MSG_ID_138_MIN_LEN 36
2015-02-10 22:23:12 +00:00
# define MAVLINK_MSG_ID_ATT_POS_MOCAP_CRC 109
# define MAVLINK_MSG_ID_138_CRC 109
# define MAVLINK_MSG_ATT_POS_MOCAP_FIELD_Q_LEN 4
2018-04-29 09:48:09 +08:00
# define MAVLINK_MSG_ATT_POS_MOCAP_FIELD_COVARIANCE_LEN 21
2015-02-10 22:23:12 +00:00
2016-05-16 08:33:08 +00:00
# if MAVLINK_COMMAND_24BIT
2015-02-10 22:23:12 +00:00
# define MAVLINK_MESSAGE_INFO_ATT_POS_MOCAP { \
2016-10-10 10:40:57 +00:00
138, \
"ATT_POS_MOCAP", \
2018-04-29 09:48:09 +08:00
6, \
2016-10-10 10:40:57 +00:00
{ { "time_usec", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_att_pos_mocap_t, time_usec) }, \
2015-02-10 22:23:12 +00:00
{ "q", NULL, MAVLINK_TYPE_FLOAT, 4, 8, offsetof(mavlink_att_pos_mocap_t, q) }, \
{ "x", NULL, MAVLINK_TYPE_FLOAT, 0, 24, offsetof(mavlink_att_pos_mocap_t, x) }, \
{ "y", NULL, MAVLINK_TYPE_FLOAT, 0, 28, offsetof(mavlink_att_pos_mocap_t, y) }, \
{ "z", NULL, MAVLINK_TYPE_FLOAT, 0, 32, offsetof(mavlink_att_pos_mocap_t, z) }, \
2018-04-29 09:48:09 +08:00
{ "covariance", NULL, MAVLINK_TYPE_FLOAT, 21, 36, offsetof(mavlink_att_pos_mocap_t, covariance) }, \
2015-02-10 22:23:12 +00:00
} \
}
2016-05-16 08:33:08 +00:00
# else
# define MAVLINK_MESSAGE_INFO_ATT_POS_MOCAP { \
2016-10-10 10:40:57 +00:00
"ATT_POS_MOCAP", \
2018-04-29 09:48:09 +08:00
6, \
2016-10-10 10:40:57 +00:00
{ { "time_usec", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_att_pos_mocap_t, time_usec) }, \
2016-05-16 08:33:08 +00:00
{ "q", NULL, MAVLINK_TYPE_FLOAT, 4, 8, offsetof(mavlink_att_pos_mocap_t, q) }, \
{ "x", NULL, MAVLINK_TYPE_FLOAT, 0, 24, offsetof(mavlink_att_pos_mocap_t, x) }, \
{ "y", NULL, MAVLINK_TYPE_FLOAT, 0, 28, offsetof(mavlink_att_pos_mocap_t, y) }, \
{ "z", NULL, MAVLINK_TYPE_FLOAT, 0, 32, offsetof(mavlink_att_pos_mocap_t, z) }, \
2018-04-29 09:48:09 +08:00
{ "covariance", NULL, MAVLINK_TYPE_FLOAT, 21, 36, offsetof(mavlink_att_pos_mocap_t, covariance) }, \
2016-05-16 08:33:08 +00:00
} \
}
# endif
2015-02-10 22:23:12 +00:00
/**
* @brief Pack a att_pos_mocap message
* @param system_id ID of this system
* @param component_id ID of this component (e.g. 200 for IMU)
* @param msg The MAVLink message to compress the data into
*
* @param time_usec Timestamp (micros since boot or Unix epoch)
* @param q Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0)
* @param x X position in meters (NED)
* @param y Y position in meters (NED)
* @param z Z position in meters (NED)
2018-04-29 09:48:09 +08:00
* @param covariance Pose covariance matrix upper right triangular (first six entries are the first ROW, next five entries are the second ROW, etc.)
2015-02-10 22:23:12 +00:00
* @return length of the message in bytes (excluding serial stream start sign)
*/
static inline uint16_t mavlink_msg_att_pos_mocap_pack ( uint8_t system_id , uint8_t component_id , mavlink_message_t * msg ,
2018-04-29 09:48:09 +08:00
uint64_t time_usec , const float * q , float x , float y , float z , const float * covariance )
2015-02-10 22:23:12 +00:00
{
# if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
2016-10-10 10:40:57 +00:00
char buf [ MAVLINK_MSG_ID_ATT_POS_MOCAP_LEN ] ;
_mav_put_uint64_t ( buf , 0 , time_usec ) ;
_mav_put_float ( buf , 24 , x ) ;
_mav_put_float ( buf , 28 , y ) ;
_mav_put_float ( buf , 32 , z ) ;
_mav_put_float_array ( buf , 8 , q , 4 ) ;
2018-04-29 09:48:09 +08:00
_mav_put_float_array ( buf , 36 , covariance , 21 ) ;
2015-02-10 22:23:12 +00:00
memcpy ( _MAV_PAYLOAD_NON_CONST ( msg ) , buf , MAVLINK_MSG_ID_ATT_POS_MOCAP_LEN ) ;
# else
2016-10-10 10:40:57 +00:00
mavlink_att_pos_mocap_t packet ;
packet . time_usec = time_usec ;
packet . x = x ;
packet . y = y ;
packet . z = z ;
mav_array_memcpy ( packet . q , q , sizeof ( float ) * 4 ) ;
2018-04-29 09:48:09 +08:00
mav_array_memcpy ( packet . covariance , covariance , sizeof ( float ) * 21 ) ;
2015-02-10 22:23:12 +00:00
memcpy ( _MAV_PAYLOAD_NON_CONST ( msg ) , & packet , MAVLINK_MSG_ID_ATT_POS_MOCAP_LEN ) ;
# endif
2016-10-10 10:40:57 +00:00
msg - > msgid = MAVLINK_MSG_ID_ATT_POS_MOCAP ;
2016-05-16 08:33:08 +00:00
return mavlink_finalize_message ( msg , system_id , component_id , MAVLINK_MSG_ID_ATT_POS_MOCAP_MIN_LEN , MAVLINK_MSG_ID_ATT_POS_MOCAP_LEN , MAVLINK_MSG_ID_ATT_POS_MOCAP_CRC ) ;
2015-02-10 22:23:12 +00:00
}
/**
* @brief Pack a att_pos_mocap message on a channel
* @param system_id ID of this system
* @param component_id ID of this component (e.g. 200 for IMU)
* @param chan The MAVLink channel this message will be sent over
* @param msg The MAVLink message to compress the data into
* @param time_usec Timestamp (micros since boot or Unix epoch)
* @param q Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0)
* @param x X position in meters (NED)
* @param y Y position in meters (NED)
* @param z Z position in meters (NED)
2018-04-29 09:48:09 +08:00
* @param covariance Pose covariance matrix upper right triangular (first six entries are the first ROW, next five entries are the second ROW, etc.)
2015-02-10 22:23:12 +00:00
* @return length of the message in bytes (excluding serial stream start sign)
*/
static inline uint16_t mavlink_msg_att_pos_mocap_pack_chan ( uint8_t system_id , uint8_t component_id , uint8_t chan ,
2016-10-10 10:40:57 +00:00
mavlink_message_t * msg ,
2018-04-29 09:48:09 +08:00
uint64_t time_usec , const float * q , float x , float y , float z , const float * covariance )
2015-02-10 22:23:12 +00:00
{
# if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
2016-10-10 10:40:57 +00:00
char buf [ MAVLINK_MSG_ID_ATT_POS_MOCAP_LEN ] ;
_mav_put_uint64_t ( buf , 0 , time_usec ) ;
_mav_put_float ( buf , 24 , x ) ;
_mav_put_float ( buf , 28 , y ) ;
_mav_put_float ( buf , 32 , z ) ;
_mav_put_float_array ( buf , 8 , q , 4 ) ;
2018-04-29 09:48:09 +08:00
_mav_put_float_array ( buf , 36 , covariance , 21 ) ;
2015-02-10 22:23:12 +00:00
memcpy ( _MAV_PAYLOAD_NON_CONST ( msg ) , buf , MAVLINK_MSG_ID_ATT_POS_MOCAP_LEN ) ;
# else
2016-10-10 10:40:57 +00:00
mavlink_att_pos_mocap_t packet ;
packet . time_usec = time_usec ;
packet . x = x ;
packet . y = y ;
packet . z = z ;
mav_array_memcpy ( packet . q , q , sizeof ( float ) * 4 ) ;
2018-04-29 09:48:09 +08:00
mav_array_memcpy ( packet . covariance , covariance , sizeof ( float ) * 21 ) ;
2015-02-10 22:23:12 +00:00
memcpy ( _MAV_PAYLOAD_NON_CONST ( msg ) , & packet , MAVLINK_MSG_ID_ATT_POS_MOCAP_LEN ) ;
# endif
2016-10-10 10:40:57 +00:00
msg - > msgid = MAVLINK_MSG_ID_ATT_POS_MOCAP ;
2016-05-16 08:33:08 +00:00
return mavlink_finalize_message_chan ( msg , system_id , component_id , chan , MAVLINK_MSG_ID_ATT_POS_MOCAP_MIN_LEN , MAVLINK_MSG_ID_ATT_POS_MOCAP_LEN , MAVLINK_MSG_ID_ATT_POS_MOCAP_CRC ) ;
2015-02-10 22:23:12 +00:00
}
/**
* @brief Encode a att_pos_mocap struct
*
* @param system_id ID of this system
* @param component_id ID of this component (e.g. 200 for IMU)
* @param msg The MAVLink message to compress the data into
* @param att_pos_mocap C-struct to read the message contents from
*/
static inline uint16_t mavlink_msg_att_pos_mocap_encode ( uint8_t system_id , uint8_t component_id , mavlink_message_t * msg , const mavlink_att_pos_mocap_t * att_pos_mocap )
{
2018-04-29 09:48:09 +08:00
return mavlink_msg_att_pos_mocap_pack ( system_id , component_id , msg , att_pos_mocap - > time_usec , att_pos_mocap - > q , att_pos_mocap - > x , att_pos_mocap - > y , att_pos_mocap - > z , att_pos_mocap - > covariance ) ;
2015-02-10 22:23:12 +00:00
}
/**
* @brief Encode a att_pos_mocap struct on a channel
*
* @param system_id ID of this system
* @param component_id ID of this component (e.g. 200 for IMU)
* @param chan The MAVLink channel this message will be sent over
* @param msg The MAVLink message to compress the data into
* @param att_pos_mocap C-struct to read the message contents from
*/
static inline uint16_t mavlink_msg_att_pos_mocap_encode_chan ( uint8_t system_id , uint8_t component_id , uint8_t chan , mavlink_message_t * msg , const mavlink_att_pos_mocap_t * att_pos_mocap )
{
2018-04-29 09:48:09 +08:00
return mavlink_msg_att_pos_mocap_pack_chan ( system_id , component_id , chan , msg , att_pos_mocap - > time_usec , att_pos_mocap - > q , att_pos_mocap - > x , att_pos_mocap - > y , att_pos_mocap - > z , att_pos_mocap - > covariance ) ;
2015-02-10 22:23:12 +00:00
}
/**
* @brief Send a att_pos_mocap message
* @param chan MAVLink channel to send the message
*
* @param time_usec Timestamp (micros since boot or Unix epoch)
* @param q Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0)
* @param x X position in meters (NED)
* @param y Y position in meters (NED)
* @param z Z position in meters (NED)
2018-04-29 09:48:09 +08:00
* @param covariance Pose covariance matrix upper right triangular (first six entries are the first ROW, next five entries are the second ROW, etc.)
2015-02-10 22:23:12 +00:00
*/
# ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
2018-04-29 09:48:09 +08:00
static inline void mavlink_msg_att_pos_mocap_send ( mavlink_channel_t chan , uint64_t time_usec , const float * q , float x , float y , float z , const float * covariance )
2015-02-10 22:23:12 +00:00
{
# if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
2016-10-10 10:40:57 +00:00
char buf [ MAVLINK_MSG_ID_ATT_POS_MOCAP_LEN ] ;
_mav_put_uint64_t ( buf , 0 , time_usec ) ;
_mav_put_float ( buf , 24 , x ) ;
_mav_put_float ( buf , 28 , y ) ;
_mav_put_float ( buf , 32 , z ) ;
_mav_put_float_array ( buf , 8 , q , 4 ) ;
2018-04-29 09:48:09 +08:00
_mav_put_float_array ( buf , 36 , covariance , 21 ) ;
2016-05-16 08:33:08 +00:00
_mav_finalize_message_chan_send ( chan , MAVLINK_MSG_ID_ATT_POS_MOCAP , buf , MAVLINK_MSG_ID_ATT_POS_MOCAP_MIN_LEN , MAVLINK_MSG_ID_ATT_POS_MOCAP_LEN , MAVLINK_MSG_ID_ATT_POS_MOCAP_CRC ) ;
2015-02-10 22:23:12 +00:00
# else
2016-10-10 10:40:57 +00:00
mavlink_att_pos_mocap_t packet ;
packet . time_usec = time_usec ;
packet . x = x ;
packet . y = y ;
packet . z = z ;
mav_array_memcpy ( packet . q , q , sizeof ( float ) * 4 ) ;
2018-04-29 09:48:09 +08:00
mav_array_memcpy ( packet . covariance , covariance , sizeof ( float ) * 21 ) ;
2016-05-16 08:33:08 +00:00
_mav_finalize_message_chan_send ( chan , MAVLINK_MSG_ID_ATT_POS_MOCAP , ( const char * ) & packet , MAVLINK_MSG_ID_ATT_POS_MOCAP_MIN_LEN , MAVLINK_MSG_ID_ATT_POS_MOCAP_LEN , MAVLINK_MSG_ID_ATT_POS_MOCAP_CRC ) ;
2015-02-10 22:23:12 +00:00
# endif
2016-05-16 08:33:08 +00:00
}
/**
* @brief Send a att_pos_mocap message
* @param chan MAVLink channel to send the message
* @param struct The MAVLink struct to serialize
*/
static inline void mavlink_msg_att_pos_mocap_send_struct ( mavlink_channel_t chan , const mavlink_att_pos_mocap_t * att_pos_mocap )
{
# if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
2018-04-29 09:48:09 +08:00
mavlink_msg_att_pos_mocap_send ( chan , att_pos_mocap - > time_usec , att_pos_mocap - > q , att_pos_mocap - > x , att_pos_mocap - > y , att_pos_mocap - > z , att_pos_mocap - > covariance ) ;
2016-05-16 08:33:08 +00:00
# else
_mav_finalize_message_chan_send ( chan , MAVLINK_MSG_ID_ATT_POS_MOCAP , ( const char * ) att_pos_mocap , MAVLINK_MSG_ID_ATT_POS_MOCAP_MIN_LEN , MAVLINK_MSG_ID_ATT_POS_MOCAP_LEN , MAVLINK_MSG_ID_ATT_POS_MOCAP_CRC ) ;
2015-02-10 22:23:12 +00:00
# endif
}
# if MAVLINK_MSG_ID_ATT_POS_MOCAP_LEN <= MAVLINK_MAX_PAYLOAD_LEN
/*
This varient of _send() can be used to save stack space by re-using
memory from the receive buffer. The caller provides a
mavlink_message_t which is the size of a full mavlink message. This
is usually the receive buffer for the channel, and allows a reply to an
incoming message with minimum stack space usage.
*/
2018-04-29 09:48:09 +08:00
static inline void mavlink_msg_att_pos_mocap_send_buf ( mavlink_message_t * msgbuf , mavlink_channel_t chan , uint64_t time_usec , const float * q , float x , float y , float z , const float * covariance )
2015-02-10 22:23:12 +00:00
{
# if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
2016-10-10 10:40:57 +00:00
char * buf = ( char * ) msgbuf ;
_mav_put_uint64_t ( buf , 0 , time_usec ) ;
_mav_put_float ( buf , 24 , x ) ;
_mav_put_float ( buf , 28 , y ) ;
_mav_put_float ( buf , 32 , z ) ;
_mav_put_float_array ( buf , 8 , q , 4 ) ;
2018-04-29 09:48:09 +08:00
_mav_put_float_array ( buf , 36 , covariance , 21 ) ;
2016-05-16 08:33:08 +00:00
_mav_finalize_message_chan_send ( chan , MAVLINK_MSG_ID_ATT_POS_MOCAP , buf , MAVLINK_MSG_ID_ATT_POS_MOCAP_MIN_LEN , MAVLINK_MSG_ID_ATT_POS_MOCAP_LEN , MAVLINK_MSG_ID_ATT_POS_MOCAP_CRC ) ;
2015-02-10 22:23:12 +00:00
# else
2016-10-10 10:40:57 +00:00
mavlink_att_pos_mocap_t * packet = ( mavlink_att_pos_mocap_t * ) msgbuf ;
packet - > time_usec = time_usec ;
packet - > x = x ;
packet - > y = y ;
packet - > z = z ;
mav_array_memcpy ( packet - > q , q , sizeof ( float ) * 4 ) ;
2018-04-29 09:48:09 +08:00
mav_array_memcpy ( packet - > covariance , covariance , sizeof ( float ) * 21 ) ;
2016-05-16 08:33:08 +00:00
_mav_finalize_message_chan_send ( chan , MAVLINK_MSG_ID_ATT_POS_MOCAP , ( const char * ) packet , MAVLINK_MSG_ID_ATT_POS_MOCAP_MIN_LEN , MAVLINK_MSG_ID_ATT_POS_MOCAP_LEN , MAVLINK_MSG_ID_ATT_POS_MOCAP_CRC ) ;
2015-02-10 22:23:12 +00:00
# endif
}
# endif
# endif
// MESSAGE ATT_POS_MOCAP UNPACKING
/**
* @brief Get field time_usec from att_pos_mocap message
*
* @return Timestamp (micros since boot or Unix epoch)
*/
static inline uint64_t mavlink_msg_att_pos_mocap_get_time_usec ( const mavlink_message_t * msg )
{
2016-10-10 10:40:57 +00:00
return _MAV_RETURN_uint64_t ( msg , 0 ) ;
2015-02-10 22:23:12 +00:00
}
/**
* @brief Get field q from att_pos_mocap message
*
* @return Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0)
*/
static inline uint16_t mavlink_msg_att_pos_mocap_get_q ( const mavlink_message_t * msg , float * q )
{
2016-10-10 10:40:57 +00:00
return _MAV_RETURN_float_array ( msg , q , 4 , 8 ) ;
2015-02-10 22:23:12 +00:00
}
/**
* @brief Get field x from att_pos_mocap message
*
* @return X position in meters (NED)
*/
static inline float mavlink_msg_att_pos_mocap_get_x ( const mavlink_message_t * msg )
{
2016-10-10 10:40:57 +00:00
return _MAV_RETURN_float ( msg , 24 ) ;
2015-02-10 22:23:12 +00:00
}
/**
* @brief Get field y from att_pos_mocap message
*
* @return Y position in meters (NED)
*/
static inline float mavlink_msg_att_pos_mocap_get_y ( const mavlink_message_t * msg )
{
2016-10-10 10:40:57 +00:00
return _MAV_RETURN_float ( msg , 28 ) ;
2015-02-10 22:23:12 +00:00
}
/**
* @brief Get field z from att_pos_mocap message
*
* @return Z position in meters (NED)
*/
static inline float mavlink_msg_att_pos_mocap_get_z ( const mavlink_message_t * msg )
{
2016-10-10 10:40:57 +00:00
return _MAV_RETURN_float ( msg , 32 ) ;
2015-02-10 22:23:12 +00:00
}
2018-04-29 09:48:09 +08:00
/**
* @brief Get field covariance from att_pos_mocap message
*
* @return Pose covariance matrix upper right triangular (first six entries are the first ROW, next five entries are the second ROW, etc.)
*/
static inline uint16_t mavlink_msg_att_pos_mocap_get_covariance ( const mavlink_message_t * msg , float * covariance )
{
return _MAV_RETURN_float_array ( msg , covariance , 21 , 36 ) ;
}
2015-02-10 22:23:12 +00:00
/**
* @brief Decode a att_pos_mocap message into a struct
*
* @param msg The message to decode
* @param att_pos_mocap C-struct to decode the message contents into
*/
static inline void mavlink_msg_att_pos_mocap_decode ( const mavlink_message_t * msg , mavlink_att_pos_mocap_t * att_pos_mocap )
{
2016-05-16 08:33:08 +00:00
# if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
2016-10-10 10:40:57 +00:00
att_pos_mocap - > time_usec = mavlink_msg_att_pos_mocap_get_time_usec ( msg ) ;
mavlink_msg_att_pos_mocap_get_q ( msg , att_pos_mocap - > q ) ;
att_pos_mocap - > x = mavlink_msg_att_pos_mocap_get_x ( msg ) ;
att_pos_mocap - > y = mavlink_msg_att_pos_mocap_get_y ( msg ) ;
att_pos_mocap - > z = mavlink_msg_att_pos_mocap_get_z ( msg ) ;
2018-04-29 09:48:09 +08:00
mavlink_msg_att_pos_mocap_get_covariance ( msg , att_pos_mocap - > covariance ) ;
2015-02-10 22:23:12 +00:00
# else
2016-05-16 08:33:08 +00:00
uint8_t len = msg - > len < MAVLINK_MSG_ID_ATT_POS_MOCAP_LEN ? msg - > len : MAVLINK_MSG_ID_ATT_POS_MOCAP_LEN ;
memset ( att_pos_mocap , 0 , MAVLINK_MSG_ID_ATT_POS_MOCAP_LEN ) ;
2016-10-10 10:40:57 +00:00
memcpy ( att_pos_mocap , _MAV_PAYLOAD ( msg ) , len ) ;
2015-02-10 22:23:12 +00:00
# endif
}