2016-10-05 22:52:07 +00:00
# pragma once
2014-08-10 21:01:07 +02:00
// MESSAGE HIL_STATE_QUATERNION PACKING
# define MAVLINK_MSG_ID_HIL_STATE_QUATERNION 115
2020-09-20 10:12:24 +08:00
2016-08-02 12:16:40 +00:00
typedef struct __mavlink_hil_state_quaternion_t {
2020-09-20 13:56:18 +08:00
uint32_t time_usec ; /*< [us] Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since 1.1.1970 or since system boot) by checking for the magnitude of the number.*/
2018-06-03 17:07:10 +08:00
float attitude_quaternion [ 4 ] ; /*< Vehicle attitude expressed as normalized quaternion in w, x, y, z order (with 1 0 0 0 being the null-rotation)*/
2018-08-07 10:12:17 +08:00
float rollspeed ; /*< [rad/s] Body frame roll / phi angular speed*/
float pitchspeed ; /*< [rad/s] Body frame pitch / theta angular speed*/
float yawspeed ; /*< [rad/s] Body frame yaw / psi angular speed*/
int32_t lat ; /*< [degE7] Latitude*/
int32_t lon ; /*< [degE7] Longitude*/
int32_t alt ; /*< [mm] Altitude*/
int16_t vx ; /*< [cm/s] Ground X Speed (Latitude)*/
int16_t vy ; /*< [cm/s] Ground Y Speed (Longitude)*/
int16_t vz ; /*< [cm/s] Ground Z Speed (Altitude)*/
uint16_t ind_airspeed ; /*< [cm/s] Indicated airspeed*/
uint16_t true_airspeed ; /*< [cm/s] True airspeed*/
int16_t xacc ; /*< [mG] X acceleration*/
int16_t yacc ; /*< [mG] Y acceleration*/
int16_t zacc ; /*< [mG] Z acceleration*/
2020-09-20 10:12:24 +08:00
} mavlink_hil_state_quaternion_t ;
2014-08-10 21:01:07 +02:00
2020-09-20 10:12:24 +08:00
# define MAVLINK_MSG_ID_HIL_STATE_QUATERNION_LEN 60
# define MAVLINK_MSG_ID_HIL_STATE_QUATERNION_MIN_LEN 60
# define MAVLINK_MSG_ID_115_LEN 60
# define MAVLINK_MSG_ID_115_MIN_LEN 60
2014-08-10 21:01:07 +02:00
2020-09-20 10:12:24 +08:00
# define MAVLINK_MSG_ID_HIL_STATE_QUATERNION_CRC 188
# define MAVLINK_MSG_ID_115_CRC 188
2014-08-10 21:01:07 +02:00
# define MAVLINK_MSG_HIL_STATE_QUATERNION_FIELD_ATTITUDE_QUATERNION_LEN 4
2016-05-16 08:33:08 +00:00
# if MAVLINK_COMMAND_24BIT
2014-08-10 21:01:07 +02:00
# define MAVLINK_MESSAGE_INFO_HIL_STATE_QUATERNION { \
2016-10-10 10:40:57 +00:00
115, \
"HIL_STATE_QUATERNION", \
16, \
2020-09-20 10:12:24 +08:00
{ { "time_usec", NULL, MAVLINK_TYPE_UINT32_T, 0, 0, offsetof(mavlink_hil_state_quaternion_t, time_usec) }, \
{ "attitude_quaternion", NULL, MAVLINK_TYPE_FLOAT, 4, 4, offsetof(mavlink_hil_state_quaternion_t, attitude_quaternion) }, \
{ "rollspeed", NULL, MAVLINK_TYPE_FLOAT, 0, 20, offsetof(mavlink_hil_state_quaternion_t, rollspeed) }, \
{ "pitchspeed", NULL, MAVLINK_TYPE_FLOAT, 0, 24, offsetof(mavlink_hil_state_quaternion_t, pitchspeed) }, \
{ "yawspeed", NULL, MAVLINK_TYPE_FLOAT, 0, 28, offsetof(mavlink_hil_state_quaternion_t, yawspeed) }, \
{ "lat", NULL, MAVLINK_TYPE_INT32_T, 0, 32, offsetof(mavlink_hil_state_quaternion_t, lat) }, \
{ "lon", NULL, MAVLINK_TYPE_INT32_T, 0, 36, offsetof(mavlink_hil_state_quaternion_t, lon) }, \
{ "alt", NULL, MAVLINK_TYPE_INT32_T, 0, 40, offsetof(mavlink_hil_state_quaternion_t, alt) }, \
{ "vx", NULL, MAVLINK_TYPE_INT16_T, 0, 44, offsetof(mavlink_hil_state_quaternion_t, vx) }, \
{ "vy", NULL, MAVLINK_TYPE_INT16_T, 0, 46, offsetof(mavlink_hil_state_quaternion_t, vy) }, \
{ "vz", NULL, MAVLINK_TYPE_INT16_T, 0, 48, offsetof(mavlink_hil_state_quaternion_t, vz) }, \
{ "ind_airspeed", NULL, MAVLINK_TYPE_UINT16_T, 0, 50, offsetof(mavlink_hil_state_quaternion_t, ind_airspeed) }, \
{ "true_airspeed", NULL, MAVLINK_TYPE_UINT16_T, 0, 52, offsetof(mavlink_hil_state_quaternion_t, true_airspeed) }, \
{ "xacc", NULL, MAVLINK_TYPE_INT16_T, 0, 54, offsetof(mavlink_hil_state_quaternion_t, xacc) }, \
{ "yacc", NULL, MAVLINK_TYPE_INT16_T, 0, 56, offsetof(mavlink_hil_state_quaternion_t, yacc) }, \
{ "zacc", NULL, MAVLINK_TYPE_INT16_T, 0, 58, offsetof(mavlink_hil_state_quaternion_t, zacc) }, \
2014-08-10 21:01:07 +02:00
} \
}
2016-05-16 08:33:08 +00:00
# else
# define MAVLINK_MESSAGE_INFO_HIL_STATE_QUATERNION { \
2016-10-10 10:40:57 +00:00
"HIL_STATE_QUATERNION", \
16, \
2020-09-20 10:12:24 +08:00
{ { "time_usec", NULL, MAVLINK_TYPE_UINT32_T, 0, 0, offsetof(mavlink_hil_state_quaternion_t, time_usec) }, \
{ "attitude_quaternion", NULL, MAVLINK_TYPE_FLOAT, 4, 4, offsetof(mavlink_hil_state_quaternion_t, attitude_quaternion) }, \
{ "rollspeed", NULL, MAVLINK_TYPE_FLOAT, 0, 20, offsetof(mavlink_hil_state_quaternion_t, rollspeed) }, \
{ "pitchspeed", NULL, MAVLINK_TYPE_FLOAT, 0, 24, offsetof(mavlink_hil_state_quaternion_t, pitchspeed) }, \
{ "yawspeed", NULL, MAVLINK_TYPE_FLOAT, 0, 28, offsetof(mavlink_hil_state_quaternion_t, yawspeed) }, \
{ "lat", NULL, MAVLINK_TYPE_INT32_T, 0, 32, offsetof(mavlink_hil_state_quaternion_t, lat) }, \
{ "lon", NULL, MAVLINK_TYPE_INT32_T, 0, 36, offsetof(mavlink_hil_state_quaternion_t, lon) }, \
{ "alt", NULL, MAVLINK_TYPE_INT32_T, 0, 40, offsetof(mavlink_hil_state_quaternion_t, alt) }, \
{ "vx", NULL, MAVLINK_TYPE_INT16_T, 0, 44, offsetof(mavlink_hil_state_quaternion_t, vx) }, \
{ "vy", NULL, MAVLINK_TYPE_INT16_T, 0, 46, offsetof(mavlink_hil_state_quaternion_t, vy) }, \
{ "vz", NULL, MAVLINK_TYPE_INT16_T, 0, 48, offsetof(mavlink_hil_state_quaternion_t, vz) }, \
{ "ind_airspeed", NULL, MAVLINK_TYPE_UINT16_T, 0, 50, offsetof(mavlink_hil_state_quaternion_t, ind_airspeed) }, \
{ "true_airspeed", NULL, MAVLINK_TYPE_UINT16_T, 0, 52, offsetof(mavlink_hil_state_quaternion_t, true_airspeed) }, \
{ "xacc", NULL, MAVLINK_TYPE_INT16_T, 0, 54, offsetof(mavlink_hil_state_quaternion_t, xacc) }, \
{ "yacc", NULL, MAVLINK_TYPE_INT16_T, 0, 56, offsetof(mavlink_hil_state_quaternion_t, yacc) }, \
{ "zacc", NULL, MAVLINK_TYPE_INT16_T, 0, 58, offsetof(mavlink_hil_state_quaternion_t, zacc) }, \
2016-05-16 08:33:08 +00:00
} \
}
# endif
2014-08-10 21:01:07 +02:00
/**
* @brief Pack a hil_state_quaternion 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
*
2020-09-20 13:56:18 +08:00
* @param time_usec [us] Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since 1.1.1970 or since system boot) by checking for the magnitude of the number.
2018-06-03 17:07:10 +08:00
* @param attitude_quaternion Vehicle attitude expressed as normalized quaternion in w, x, y, z order (with 1 0 0 0 being the null-rotation)
2018-08-07 10:12:17 +08:00
* @param rollspeed [rad/s] Body frame roll / phi angular speed
* @param pitchspeed [rad/s] Body frame pitch / theta angular speed
* @param yawspeed [rad/s] Body frame yaw / psi angular speed
* @param lat [degE7] Latitude
* @param lon [degE7] Longitude
* @param alt [mm] Altitude
* @param vx [cm/s] Ground X Speed (Latitude)
* @param vy [cm/s] Ground Y Speed (Longitude)
* @param vz [cm/s] Ground Z Speed (Altitude)
* @param ind_airspeed [cm/s] Indicated airspeed
* @param true_airspeed [cm/s] True airspeed
* @param xacc [mG] X acceleration
* @param yacc [mG] Y acceleration
* @param zacc [mG] Z acceleration
2014-08-10 21:01:07 +02:00
* @return length of the message in bytes (excluding serial stream start sign)
*/
2020-09-20 10:12:24 +08:00
static inline uint16_t mavlink_msg_hil_state_quaternion_pack ( uint16_t system_id , uint8_t component_id , mavlink_message_t * msg ,
uint32_t time_usec , const float * attitude_quaternion , float rollspeed , float pitchspeed , float yawspeed , int32_t lat , int32_t lon , int32_t alt , int16_t vx , int16_t vy , int16_t vz , uint16_t ind_airspeed , uint16_t true_airspeed , int16_t xacc , int16_t yacc , int16_t zacc )
2014-08-10 21:01:07 +02:00
{
# if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
2016-10-10 10:40:57 +00:00
char buf [ MAVLINK_MSG_ID_HIL_STATE_QUATERNION_LEN ] ;
2020-09-20 10:12:24 +08:00
_mav_put_uint32_t ( buf , 0 , time_usec ) ;
_mav_put_float ( buf , 20 , rollspeed ) ;
_mav_put_float ( buf , 24 , pitchspeed ) ;
_mav_put_float ( buf , 28 , yawspeed ) ;
_mav_put_int32_t ( buf , 32 , lat ) ;
_mav_put_int32_t ( buf , 36 , lon ) ;
_mav_put_int32_t ( buf , 40 , alt ) ;
_mav_put_int16_t ( buf , 44 , vx ) ;
_mav_put_int16_t ( buf , 46 , vy ) ;
_mav_put_int16_t ( buf , 48 , vz ) ;
_mav_put_uint16_t ( buf , 50 , ind_airspeed ) ;
_mav_put_uint16_t ( buf , 52 , true_airspeed ) ;
_mav_put_int16_t ( buf , 54 , xacc ) ;
_mav_put_int16_t ( buf , 56 , yacc ) ;
_mav_put_int16_t ( buf , 58 , zacc ) ;
_mav_put_float_array ( buf , 4 , attitude_quaternion , 4 ) ;
2014-08-10 21:01:07 +02:00
memcpy ( _MAV_PAYLOAD_NON_CONST ( msg ) , buf , MAVLINK_MSG_ID_HIL_STATE_QUATERNION_LEN ) ;
# else
2016-10-10 10:40:57 +00:00
mavlink_hil_state_quaternion_t packet ;
packet . time_usec = time_usec ;
packet . rollspeed = rollspeed ;
packet . pitchspeed = pitchspeed ;
packet . yawspeed = yawspeed ;
packet . lat = lat ;
packet . lon = lon ;
packet . alt = alt ;
packet . vx = vx ;
packet . vy = vy ;
packet . vz = vz ;
packet . ind_airspeed = ind_airspeed ;
packet . true_airspeed = true_airspeed ;
packet . xacc = xacc ;
packet . yacc = yacc ;
packet . zacc = zacc ;
mav_array_memcpy ( packet . attitude_quaternion , attitude_quaternion , sizeof ( float ) * 4 ) ;
2014-08-10 21:01:07 +02:00
memcpy ( _MAV_PAYLOAD_NON_CONST ( msg ) , & packet , MAVLINK_MSG_ID_HIL_STATE_QUATERNION_LEN ) ;
# endif
2016-10-10 10:40:57 +00:00
msg - > msgid = MAVLINK_MSG_ID_HIL_STATE_QUATERNION ;
2016-05-16 08:33:08 +00:00
return mavlink_finalize_message ( msg , system_id , component_id , MAVLINK_MSG_ID_HIL_STATE_QUATERNION_MIN_LEN , MAVLINK_MSG_ID_HIL_STATE_QUATERNION_LEN , MAVLINK_MSG_ID_HIL_STATE_QUATERNION_CRC ) ;
2014-08-10 21:01:07 +02:00
}
/**
* @brief Pack a hil_state_quaternion 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
2020-09-20 13:56:18 +08:00
* @param time_usec [us] Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since 1.1.1970 or since system boot) by checking for the magnitude of the number.
2018-06-03 17:07:10 +08:00
* @param attitude_quaternion Vehicle attitude expressed as normalized quaternion in w, x, y, z order (with 1 0 0 0 being the null-rotation)
2018-08-07 10:12:17 +08:00
* @param rollspeed [rad/s] Body frame roll / phi angular speed
* @param pitchspeed [rad/s] Body frame pitch / theta angular speed
* @param yawspeed [rad/s] Body frame yaw / psi angular speed
* @param lat [degE7] Latitude
* @param lon [degE7] Longitude
* @param alt [mm] Altitude
* @param vx [cm/s] Ground X Speed (Latitude)
* @param vy [cm/s] Ground Y Speed (Longitude)
* @param vz [cm/s] Ground Z Speed (Altitude)
* @param ind_airspeed [cm/s] Indicated airspeed
* @param true_airspeed [cm/s] True airspeed
* @param xacc [mG] X acceleration
* @param yacc [mG] Y acceleration
* @param zacc [mG] Z acceleration
2014-08-10 21:01:07 +02:00
* @return length of the message in bytes (excluding serial stream start sign)
*/
2020-09-20 10:12:24 +08:00
static inline uint16_t mavlink_msg_hil_state_quaternion_pack_chan ( uint16_t system_id , uint8_t component_id , uint8_t chan ,
2016-10-10 10:40:57 +00:00
mavlink_message_t * msg ,
2020-09-20 10:12:24 +08:00
uint32_t time_usec , const float * attitude_quaternion , float rollspeed , float pitchspeed , float yawspeed , int32_t lat , int32_t lon , int32_t alt , int16_t vx , int16_t vy , int16_t vz , uint16_t ind_airspeed , uint16_t true_airspeed , int16_t xacc , int16_t yacc , int16_t zacc )
2014-08-10 21:01:07 +02:00
{
# if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
2016-10-10 10:40:57 +00:00
char buf [ MAVLINK_MSG_ID_HIL_STATE_QUATERNION_LEN ] ;
2020-09-20 10:12:24 +08:00
_mav_put_uint32_t ( buf , 0 , time_usec ) ;
_mav_put_float ( buf , 20 , rollspeed ) ;
_mav_put_float ( buf , 24 , pitchspeed ) ;
_mav_put_float ( buf , 28 , yawspeed ) ;
_mav_put_int32_t ( buf , 32 , lat ) ;
_mav_put_int32_t ( buf , 36 , lon ) ;
_mav_put_int32_t ( buf , 40 , alt ) ;
_mav_put_int16_t ( buf , 44 , vx ) ;
_mav_put_int16_t ( buf , 46 , vy ) ;
_mav_put_int16_t ( buf , 48 , vz ) ;
_mav_put_uint16_t ( buf , 50 , ind_airspeed ) ;
_mav_put_uint16_t ( buf , 52 , true_airspeed ) ;
_mav_put_int16_t ( buf , 54 , xacc ) ;
_mav_put_int16_t ( buf , 56 , yacc ) ;
_mav_put_int16_t ( buf , 58 , zacc ) ;
_mav_put_float_array ( buf , 4 , attitude_quaternion , 4 ) ;
2014-08-10 21:01:07 +02:00
memcpy ( _MAV_PAYLOAD_NON_CONST ( msg ) , buf , MAVLINK_MSG_ID_HIL_STATE_QUATERNION_LEN ) ;
# else
2016-10-10 10:40:57 +00:00
mavlink_hil_state_quaternion_t packet ;
packet . time_usec = time_usec ;
packet . rollspeed = rollspeed ;
packet . pitchspeed = pitchspeed ;
packet . yawspeed = yawspeed ;
packet . lat = lat ;
packet . lon = lon ;
packet . alt = alt ;
packet . vx = vx ;
packet . vy = vy ;
packet . vz = vz ;
packet . ind_airspeed = ind_airspeed ;
packet . true_airspeed = true_airspeed ;
packet . xacc = xacc ;
packet . yacc = yacc ;
packet . zacc = zacc ;
mav_array_memcpy ( packet . attitude_quaternion , attitude_quaternion , sizeof ( float ) * 4 ) ;
2014-08-10 21:01:07 +02:00
memcpy ( _MAV_PAYLOAD_NON_CONST ( msg ) , & packet , MAVLINK_MSG_ID_HIL_STATE_QUATERNION_LEN ) ;
# endif
2016-10-10 10:40:57 +00:00
msg - > msgid = MAVLINK_MSG_ID_HIL_STATE_QUATERNION ;
2016-05-16 08:33:08 +00:00
return mavlink_finalize_message_chan ( msg , system_id , component_id , chan , MAVLINK_MSG_ID_HIL_STATE_QUATERNION_MIN_LEN , MAVLINK_MSG_ID_HIL_STATE_QUATERNION_LEN , MAVLINK_MSG_ID_HIL_STATE_QUATERNION_CRC ) ;
2014-08-10 21:01:07 +02:00
}
/**
* @brief Encode a hil_state_quaternion 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 hil_state_quaternion C-struct to read the message contents from
*/
2020-09-20 10:12:24 +08:00
static inline uint16_t mavlink_msg_hil_state_quaternion_encode ( uint16_t system_id , uint8_t component_id , mavlink_message_t * msg , const mavlink_hil_state_quaternion_t * hil_state_quaternion )
2014-08-10 21:01:07 +02:00
{
2016-10-10 10:40:57 +00:00
return mavlink_msg_hil_state_quaternion_pack ( system_id , component_id , msg , hil_state_quaternion - > time_usec , hil_state_quaternion - > attitude_quaternion , hil_state_quaternion - > rollspeed , hil_state_quaternion - > pitchspeed , hil_state_quaternion - > yawspeed , hil_state_quaternion - > lat , hil_state_quaternion - > lon , hil_state_quaternion - > alt , hil_state_quaternion - > vx , hil_state_quaternion - > vy , hil_state_quaternion - > vz , hil_state_quaternion - > ind_airspeed , hil_state_quaternion - > true_airspeed , hil_state_quaternion - > xacc , hil_state_quaternion - > yacc , hil_state_quaternion - > zacc ) ;
2014-08-10 21:01:07 +02:00
}
/**
* @brief Encode a hil_state_quaternion 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 hil_state_quaternion C-struct to read the message contents from
*/
2020-09-20 10:12:24 +08:00
static inline uint16_t mavlink_msg_hil_state_quaternion_encode_chan ( uint16_t system_id , uint8_t component_id , uint8_t chan , mavlink_message_t * msg , const mavlink_hil_state_quaternion_t * hil_state_quaternion )
2014-08-10 21:01:07 +02:00
{
2016-10-10 10:40:57 +00:00
return mavlink_msg_hil_state_quaternion_pack_chan ( system_id , component_id , chan , msg , hil_state_quaternion - > time_usec , hil_state_quaternion - > attitude_quaternion , hil_state_quaternion - > rollspeed , hil_state_quaternion - > pitchspeed , hil_state_quaternion - > yawspeed , hil_state_quaternion - > lat , hil_state_quaternion - > lon , hil_state_quaternion - > alt , hil_state_quaternion - > vx , hil_state_quaternion - > vy , hil_state_quaternion - > vz , hil_state_quaternion - > ind_airspeed , hil_state_quaternion - > true_airspeed , hil_state_quaternion - > xacc , hil_state_quaternion - > yacc , hil_state_quaternion - > zacc ) ;
2014-08-10 21:01:07 +02:00
}
/**
* @brief Send a hil_state_quaternion message
* @param chan MAVLink channel to send the message
*
2020-09-20 13:56:18 +08:00
* @param time_usec [us] Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since 1.1.1970 or since system boot) by checking for the magnitude of the number.
2018-06-03 17:07:10 +08:00
* @param attitude_quaternion Vehicle attitude expressed as normalized quaternion in w, x, y, z order (with 1 0 0 0 being the null-rotation)
2018-08-07 10:12:17 +08:00
* @param rollspeed [rad/s] Body frame roll / phi angular speed
* @param pitchspeed [rad/s] Body frame pitch / theta angular speed
* @param yawspeed [rad/s] Body frame yaw / psi angular speed
* @param lat [degE7] Latitude
* @param lon [degE7] Longitude
* @param alt [mm] Altitude
* @param vx [cm/s] Ground X Speed (Latitude)
* @param vy [cm/s] Ground Y Speed (Longitude)
* @param vz [cm/s] Ground Z Speed (Altitude)
* @param ind_airspeed [cm/s] Indicated airspeed
* @param true_airspeed [cm/s] True airspeed
* @param xacc [mG] X acceleration
* @param yacc [mG] Y acceleration
* @param zacc [mG] Z acceleration
2014-08-10 21:01:07 +02:00
*/
# ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
2020-09-20 10:12:24 +08:00
static inline void mavlink_msg_hil_state_quaternion_send ( mavlink_channel_t chan , uint32_t time_usec , const float * attitude_quaternion , float rollspeed , float pitchspeed , float yawspeed , int32_t lat , int32_t lon , int32_t alt , int16_t vx , int16_t vy , int16_t vz , uint16_t ind_airspeed , uint16_t true_airspeed , int16_t xacc , int16_t yacc , int16_t zacc )
2014-08-10 21:01:07 +02:00
{
# if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
2016-10-10 10:40:57 +00:00
char buf [ MAVLINK_MSG_ID_HIL_STATE_QUATERNION_LEN ] ;
2020-09-20 10:12:24 +08:00
_mav_put_uint32_t ( buf , 0 , time_usec ) ;
_mav_put_float ( buf , 20 , rollspeed ) ;
_mav_put_float ( buf , 24 , pitchspeed ) ;
_mav_put_float ( buf , 28 , yawspeed ) ;
_mav_put_int32_t ( buf , 32 , lat ) ;
_mav_put_int32_t ( buf , 36 , lon ) ;
_mav_put_int32_t ( buf , 40 , alt ) ;
_mav_put_int16_t ( buf , 44 , vx ) ;
_mav_put_int16_t ( buf , 46 , vy ) ;
_mav_put_int16_t ( buf , 48 , vz ) ;
_mav_put_uint16_t ( buf , 50 , ind_airspeed ) ;
_mav_put_uint16_t ( buf , 52 , true_airspeed ) ;
_mav_put_int16_t ( buf , 54 , xacc ) ;
_mav_put_int16_t ( buf , 56 , yacc ) ;
_mav_put_int16_t ( buf , 58 , zacc ) ;
_mav_put_float_array ( buf , 4 , attitude_quaternion , 4 ) ;
2016-05-16 08:33:08 +00:00
_mav_finalize_message_chan_send ( chan , MAVLINK_MSG_ID_HIL_STATE_QUATERNION , buf , MAVLINK_MSG_ID_HIL_STATE_QUATERNION_MIN_LEN , MAVLINK_MSG_ID_HIL_STATE_QUATERNION_LEN , MAVLINK_MSG_ID_HIL_STATE_QUATERNION_CRC ) ;
2014-08-10 21:01:07 +02:00
# else
2016-10-10 10:40:57 +00:00
mavlink_hil_state_quaternion_t packet ;
packet . time_usec = time_usec ;
packet . rollspeed = rollspeed ;
packet . pitchspeed = pitchspeed ;
packet . yawspeed = yawspeed ;
packet . lat = lat ;
packet . lon = lon ;
packet . alt = alt ;
packet . vx = vx ;
packet . vy = vy ;
packet . vz = vz ;
packet . ind_airspeed = ind_airspeed ;
packet . true_airspeed = true_airspeed ;
packet . xacc = xacc ;
packet . yacc = yacc ;
packet . zacc = zacc ;
mav_array_memcpy ( packet . attitude_quaternion , attitude_quaternion , sizeof ( float ) * 4 ) ;
2016-05-16 08:33:08 +00:00
_mav_finalize_message_chan_send ( chan , MAVLINK_MSG_ID_HIL_STATE_QUATERNION , ( const char * ) & packet , MAVLINK_MSG_ID_HIL_STATE_QUATERNION_MIN_LEN , MAVLINK_MSG_ID_HIL_STATE_QUATERNION_LEN , MAVLINK_MSG_ID_HIL_STATE_QUATERNION_CRC ) ;
2014-08-10 21:01:07 +02:00
# endif
2016-05-16 08:33:08 +00:00
}
/**
* @brief Send a hil_state_quaternion message
* @param chan MAVLink channel to send the message
* @param struct The MAVLink struct to serialize
*/
static inline void mavlink_msg_hil_state_quaternion_send_struct ( mavlink_channel_t chan , const mavlink_hil_state_quaternion_t * hil_state_quaternion )
{
# if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
mavlink_msg_hil_state_quaternion_send ( chan , hil_state_quaternion - > time_usec , hil_state_quaternion - > attitude_quaternion , hil_state_quaternion - > rollspeed , hil_state_quaternion - > pitchspeed , hil_state_quaternion - > yawspeed , hil_state_quaternion - > lat , hil_state_quaternion - > lon , hil_state_quaternion - > alt , hil_state_quaternion - > vx , hil_state_quaternion - > vy , hil_state_quaternion - > vz , hil_state_quaternion - > ind_airspeed , hil_state_quaternion - > true_airspeed , hil_state_quaternion - > xacc , hil_state_quaternion - > yacc , hil_state_quaternion - > zacc ) ;
# else
_mav_finalize_message_chan_send ( chan , MAVLINK_MSG_ID_HIL_STATE_QUATERNION , ( const char * ) hil_state_quaternion , MAVLINK_MSG_ID_HIL_STATE_QUATERNION_MIN_LEN , MAVLINK_MSG_ID_HIL_STATE_QUATERNION_LEN , MAVLINK_MSG_ID_HIL_STATE_QUATERNION_CRC ) ;
2014-08-10 21:01:07 +02:00
# endif
}
# if MAVLINK_MSG_ID_HIL_STATE_QUATERNION_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.
*/
2020-09-20 10:12:24 +08:00
static inline void mavlink_msg_hil_state_quaternion_send_buf ( mavlink_message_t * msgbuf , mavlink_channel_t chan , uint32_t time_usec , const float * attitude_quaternion , float rollspeed , float pitchspeed , float yawspeed , int32_t lat , int32_t lon , int32_t alt , int16_t vx , int16_t vy , int16_t vz , uint16_t ind_airspeed , uint16_t true_airspeed , int16_t xacc , int16_t yacc , int16_t zacc )
2014-08-10 21:01:07 +02:00
{
# if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
2016-10-10 10:40:57 +00:00
char * buf = ( char * ) msgbuf ;
2020-09-20 10:12:24 +08:00
_mav_put_uint32_t ( buf , 0 , time_usec ) ;
_mav_put_float ( buf , 20 , rollspeed ) ;
_mav_put_float ( buf , 24 , pitchspeed ) ;
_mav_put_float ( buf , 28 , yawspeed ) ;
_mav_put_int32_t ( buf , 32 , lat ) ;
_mav_put_int32_t ( buf , 36 , lon ) ;
_mav_put_int32_t ( buf , 40 , alt ) ;
_mav_put_int16_t ( buf , 44 , vx ) ;
_mav_put_int16_t ( buf , 46 , vy ) ;
_mav_put_int16_t ( buf , 48 , vz ) ;
_mav_put_uint16_t ( buf , 50 , ind_airspeed ) ;
_mav_put_uint16_t ( buf , 52 , true_airspeed ) ;
_mav_put_int16_t ( buf , 54 , xacc ) ;
_mav_put_int16_t ( buf , 56 , yacc ) ;
_mav_put_int16_t ( buf , 58 , zacc ) ;
_mav_put_float_array ( buf , 4 , attitude_quaternion , 4 ) ;
2016-05-16 08:33:08 +00:00
_mav_finalize_message_chan_send ( chan , MAVLINK_MSG_ID_HIL_STATE_QUATERNION , buf , MAVLINK_MSG_ID_HIL_STATE_QUATERNION_MIN_LEN , MAVLINK_MSG_ID_HIL_STATE_QUATERNION_LEN , MAVLINK_MSG_ID_HIL_STATE_QUATERNION_CRC ) ;
2014-08-10 21:01:07 +02:00
# else
2016-10-10 10:40:57 +00:00
mavlink_hil_state_quaternion_t * packet = ( mavlink_hil_state_quaternion_t * ) msgbuf ;
packet - > time_usec = time_usec ;
packet - > rollspeed = rollspeed ;
packet - > pitchspeed = pitchspeed ;
packet - > yawspeed = yawspeed ;
packet - > lat = lat ;
packet - > lon = lon ;
packet - > alt = alt ;
packet - > vx = vx ;
packet - > vy = vy ;
packet - > vz = vz ;
packet - > ind_airspeed = ind_airspeed ;
packet - > true_airspeed = true_airspeed ;
packet - > xacc = xacc ;
packet - > yacc = yacc ;
packet - > zacc = zacc ;
mav_array_memcpy ( packet - > attitude_quaternion , attitude_quaternion , sizeof ( float ) * 4 ) ;
2016-05-16 08:33:08 +00:00
_mav_finalize_message_chan_send ( chan , MAVLINK_MSG_ID_HIL_STATE_QUATERNION , ( const char * ) packet , MAVLINK_MSG_ID_HIL_STATE_QUATERNION_MIN_LEN , MAVLINK_MSG_ID_HIL_STATE_QUATERNION_LEN , MAVLINK_MSG_ID_HIL_STATE_QUATERNION_CRC ) ;
2014-08-10 21:01:07 +02:00
# endif
}
# endif
# endif
// MESSAGE HIL_STATE_QUATERNION UNPACKING
/**
* @brief Get field time_usec from hil_state_quaternion message
*
2020-09-20 13:56:18 +08:00
* @return [us] Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since 1.1.1970 or since system boot) by checking for the magnitude of the number.
2014-08-10 21:01:07 +02:00
*/
2020-09-20 10:12:24 +08:00
static inline uint32_t mavlink_msg_hil_state_quaternion_get_time_usec ( const mavlink_message_t * msg )
2014-08-10 21:01:07 +02:00
{
2020-09-20 10:12:24 +08:00
return _MAV_RETURN_uint32_t ( msg , 0 ) ;
2014-08-10 21:01:07 +02:00
}
/**
* @brief Get field attitude_quaternion from hil_state_quaternion message
*
2018-06-03 17:07:10 +08:00
* @return Vehicle attitude expressed as normalized quaternion in w, x, y, z order (with 1 0 0 0 being the null-rotation)
2014-08-10 21:01:07 +02:00
*/
static inline uint16_t mavlink_msg_hil_state_quaternion_get_attitude_quaternion ( const mavlink_message_t * msg , float * attitude_quaternion )
{
2020-09-20 10:12:24 +08:00
return _MAV_RETURN_float_array ( msg , attitude_quaternion , 4 , 4 ) ;
2014-08-10 21:01:07 +02:00
}
/**
* @brief Get field rollspeed from hil_state_quaternion message
*
2018-08-07 10:12:17 +08:00
* @return [rad/s] Body frame roll / phi angular speed
2014-08-10 21:01:07 +02:00
*/
static inline float mavlink_msg_hil_state_quaternion_get_rollspeed ( const mavlink_message_t * msg )
{
2020-09-20 10:12:24 +08:00
return _MAV_RETURN_float ( msg , 20 ) ;
2014-08-10 21:01:07 +02:00
}
/**
* @brief Get field pitchspeed from hil_state_quaternion message
*
2018-08-07 10:12:17 +08:00
* @return [rad/s] Body frame pitch / theta angular speed
2014-08-10 21:01:07 +02:00
*/
static inline float mavlink_msg_hil_state_quaternion_get_pitchspeed ( const mavlink_message_t * msg )
{
2020-09-20 10:12:24 +08:00
return _MAV_RETURN_float ( msg , 24 ) ;
2014-08-10 21:01:07 +02:00
}
/**
* @brief Get field yawspeed from hil_state_quaternion message
*
2018-08-07 10:12:17 +08:00
* @return [rad/s] Body frame yaw / psi angular speed
2014-08-10 21:01:07 +02:00
*/
static inline float mavlink_msg_hil_state_quaternion_get_yawspeed ( const mavlink_message_t * msg )
{
2020-09-20 10:12:24 +08:00
return _MAV_RETURN_float ( msg , 28 ) ;
2014-08-10 21:01:07 +02:00
}
/**
* @brief Get field lat from hil_state_quaternion message
*
2018-08-07 10:12:17 +08:00
* @return [degE7] Latitude
2014-08-10 21:01:07 +02:00
*/
static inline int32_t mavlink_msg_hil_state_quaternion_get_lat ( const mavlink_message_t * msg )
{
2020-09-20 10:12:24 +08:00
return _MAV_RETURN_int32_t ( msg , 32 ) ;
2014-08-10 21:01:07 +02:00
}
/**
* @brief Get field lon from hil_state_quaternion message
*
2018-08-07 10:12:17 +08:00
* @return [degE7] Longitude
2014-08-10 21:01:07 +02:00
*/
static inline int32_t mavlink_msg_hil_state_quaternion_get_lon ( const mavlink_message_t * msg )
{
2020-09-20 10:12:24 +08:00
return _MAV_RETURN_int32_t ( msg , 36 ) ;
2014-08-10 21:01:07 +02:00
}
/**
* @brief Get field alt from hil_state_quaternion message
*
2018-08-07 10:12:17 +08:00
* @return [mm] Altitude
2014-08-10 21:01:07 +02:00
*/
static inline int32_t mavlink_msg_hil_state_quaternion_get_alt ( const mavlink_message_t * msg )
{
2020-09-20 10:12:24 +08:00
return _MAV_RETURN_int32_t ( msg , 40 ) ;
2014-08-10 21:01:07 +02:00
}
/**
* @brief Get field vx from hil_state_quaternion message
*
2018-08-07 10:12:17 +08:00
* @return [cm/s] Ground X Speed (Latitude)
2014-08-10 21:01:07 +02:00
*/
static inline int16_t mavlink_msg_hil_state_quaternion_get_vx ( const mavlink_message_t * msg )
{
2020-09-20 10:12:24 +08:00
return _MAV_RETURN_int16_t ( msg , 44 ) ;
2014-08-10 21:01:07 +02:00
}
/**
* @brief Get field vy from hil_state_quaternion message
*
2018-08-07 10:12:17 +08:00
* @return [cm/s] Ground Y Speed (Longitude)
2014-08-10 21:01:07 +02:00
*/
static inline int16_t mavlink_msg_hil_state_quaternion_get_vy ( const mavlink_message_t * msg )
{
2020-09-20 10:12:24 +08:00
return _MAV_RETURN_int16_t ( msg , 46 ) ;
2014-08-10 21:01:07 +02:00
}
/**
* @brief Get field vz from hil_state_quaternion message
*
2018-08-07 10:12:17 +08:00
* @return [cm/s] Ground Z Speed (Altitude)
2014-08-10 21:01:07 +02:00
*/
static inline int16_t mavlink_msg_hil_state_quaternion_get_vz ( const mavlink_message_t * msg )
{
2020-09-20 10:12:24 +08:00
return _MAV_RETURN_int16_t ( msg , 48 ) ;
2014-08-10 21:01:07 +02:00
}
/**
* @brief Get field ind_airspeed from hil_state_quaternion message
*
2018-08-07 10:12:17 +08:00
* @return [cm/s] Indicated airspeed
2014-08-10 21:01:07 +02:00
*/
static inline uint16_t mavlink_msg_hil_state_quaternion_get_ind_airspeed ( const mavlink_message_t * msg )
{
2020-09-20 10:12:24 +08:00
return _MAV_RETURN_uint16_t ( msg , 50 ) ;
2014-08-10 21:01:07 +02:00
}
/**
* @brief Get field true_airspeed from hil_state_quaternion message
*
2018-08-07 10:12:17 +08:00
* @return [cm/s] True airspeed
2014-08-10 21:01:07 +02:00
*/
static inline uint16_t mavlink_msg_hil_state_quaternion_get_true_airspeed ( const mavlink_message_t * msg )
{
2020-09-20 10:12:24 +08:00
return _MAV_RETURN_uint16_t ( msg , 52 ) ;
2014-08-10 21:01:07 +02:00
}
/**
* @brief Get field xacc from hil_state_quaternion message
*
2018-08-07 10:12:17 +08:00
* @return [mG] X acceleration
2014-08-10 21:01:07 +02:00
*/
static inline int16_t mavlink_msg_hil_state_quaternion_get_xacc ( const mavlink_message_t * msg )
{
2020-09-20 10:12:24 +08:00
return _MAV_RETURN_int16_t ( msg , 54 ) ;
2014-08-10 21:01:07 +02:00
}
/**
* @brief Get field yacc from hil_state_quaternion message
*
2018-08-07 10:12:17 +08:00
* @return [mG] Y acceleration
2014-08-10 21:01:07 +02:00
*/
static inline int16_t mavlink_msg_hil_state_quaternion_get_yacc ( const mavlink_message_t * msg )
{
2020-09-20 10:12:24 +08:00
return _MAV_RETURN_int16_t ( msg , 56 ) ;
2014-08-10 21:01:07 +02:00
}
/**
* @brief Get field zacc from hil_state_quaternion message
*
2018-08-07 10:12:17 +08:00
* @return [mG] Z acceleration
2014-08-10 21:01:07 +02:00
*/
static inline int16_t mavlink_msg_hil_state_quaternion_get_zacc ( const mavlink_message_t * msg )
{
2020-09-20 10:12:24 +08:00
return _MAV_RETURN_int16_t ( msg , 58 ) ;
2014-08-10 21:01:07 +02:00
}
/**
* @brief Decode a hil_state_quaternion message into a struct
*
* @param msg The message to decode
* @param hil_state_quaternion C-struct to decode the message contents into
*/
static inline void mavlink_msg_hil_state_quaternion_decode ( const mavlink_message_t * msg , mavlink_hil_state_quaternion_t * hil_state_quaternion )
{
2016-05-16 08:33:08 +00:00
# if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
2016-10-10 10:40:57 +00:00
hil_state_quaternion - > time_usec = mavlink_msg_hil_state_quaternion_get_time_usec ( msg ) ;
mavlink_msg_hil_state_quaternion_get_attitude_quaternion ( msg , hil_state_quaternion - > attitude_quaternion ) ;
hil_state_quaternion - > rollspeed = mavlink_msg_hil_state_quaternion_get_rollspeed ( msg ) ;
hil_state_quaternion - > pitchspeed = mavlink_msg_hil_state_quaternion_get_pitchspeed ( msg ) ;
hil_state_quaternion - > yawspeed = mavlink_msg_hil_state_quaternion_get_yawspeed ( msg ) ;
hil_state_quaternion - > lat = mavlink_msg_hil_state_quaternion_get_lat ( msg ) ;
hil_state_quaternion - > lon = mavlink_msg_hil_state_quaternion_get_lon ( msg ) ;
hil_state_quaternion - > alt = mavlink_msg_hil_state_quaternion_get_alt ( msg ) ;
hil_state_quaternion - > vx = mavlink_msg_hil_state_quaternion_get_vx ( msg ) ;
hil_state_quaternion - > vy = mavlink_msg_hil_state_quaternion_get_vy ( msg ) ;
hil_state_quaternion - > vz = mavlink_msg_hil_state_quaternion_get_vz ( msg ) ;
hil_state_quaternion - > ind_airspeed = mavlink_msg_hil_state_quaternion_get_ind_airspeed ( msg ) ;
hil_state_quaternion - > true_airspeed = mavlink_msg_hil_state_quaternion_get_true_airspeed ( msg ) ;
hil_state_quaternion - > xacc = mavlink_msg_hil_state_quaternion_get_xacc ( msg ) ;
hil_state_quaternion - > yacc = mavlink_msg_hil_state_quaternion_get_yacc ( msg ) ;
hil_state_quaternion - > zacc = mavlink_msg_hil_state_quaternion_get_zacc ( msg ) ;
2014-08-10 21:01:07 +02:00
# else
2016-05-16 08:33:08 +00:00
uint8_t len = msg - > len < MAVLINK_MSG_ID_HIL_STATE_QUATERNION_LEN ? msg - > len : MAVLINK_MSG_ID_HIL_STATE_QUATERNION_LEN ;
memset ( hil_state_quaternion , 0 , MAVLINK_MSG_ID_HIL_STATE_QUATERNION_LEN ) ;
2016-10-10 10:40:57 +00:00
memcpy ( hil_state_quaternion , _MAV_PAYLOAD ( msg ) , len ) ;
2014-08-10 21:01:07 +02:00
# endif
}