Merge pull request #10476 from radiolinkW/RADIOLINKF722
[inav.git] / lib / main / MAVLink / common / mavlink_msg_control_system_state.h
blobb4381cff4e263afe447f68e4f1a355ef992be1fc
1 #pragma once
2 // MESSAGE CONTROL_SYSTEM_STATE PACKING
4 #define MAVLINK_MSG_ID_CONTROL_SYSTEM_STATE 146
7 typedef struct __mavlink_control_system_state_t {
8 uint64_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.*/
9 float x_acc; /*< [m/s/s] X acceleration in body frame*/
10 float y_acc; /*< [m/s/s] Y acceleration in body frame*/
11 float z_acc; /*< [m/s/s] Z acceleration in body frame*/
12 float x_vel; /*< [m/s] X velocity in body frame*/
13 float y_vel; /*< [m/s] Y velocity in body frame*/
14 float z_vel; /*< [m/s] Z velocity in body frame*/
15 float x_pos; /*< [m] X position in local frame*/
16 float y_pos; /*< [m] Y position in local frame*/
17 float z_pos; /*< [m] Z position in local frame*/
18 float airspeed; /*< [m/s] Airspeed, set to -1 if unknown*/
19 float vel_variance[3]; /*< Variance of body velocity estimate*/
20 float pos_variance[3]; /*< Variance in local position*/
21 float q[4]; /*< The attitude, represented as Quaternion*/
22 float roll_rate; /*< [rad/s] Angular rate in roll axis*/
23 float pitch_rate; /*< [rad/s] Angular rate in pitch axis*/
24 float yaw_rate; /*< [rad/s] Angular rate in yaw axis*/
25 } mavlink_control_system_state_t;
27 #define MAVLINK_MSG_ID_CONTROL_SYSTEM_STATE_LEN 100
28 #define MAVLINK_MSG_ID_CONTROL_SYSTEM_STATE_MIN_LEN 100
29 #define MAVLINK_MSG_ID_146_LEN 100
30 #define MAVLINK_MSG_ID_146_MIN_LEN 100
32 #define MAVLINK_MSG_ID_CONTROL_SYSTEM_STATE_CRC 103
33 #define MAVLINK_MSG_ID_146_CRC 103
35 #define MAVLINK_MSG_CONTROL_SYSTEM_STATE_FIELD_VEL_VARIANCE_LEN 3
36 #define MAVLINK_MSG_CONTROL_SYSTEM_STATE_FIELD_POS_VARIANCE_LEN 3
37 #define MAVLINK_MSG_CONTROL_SYSTEM_STATE_FIELD_Q_LEN 4
39 #if MAVLINK_COMMAND_24BIT
40 #define MAVLINK_MESSAGE_INFO_CONTROL_SYSTEM_STATE { \
41 146, \
42 "CONTROL_SYSTEM_STATE", \
43 17, \
44 { { "time_usec", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_control_system_state_t, time_usec) }, \
45 { "x_acc", NULL, MAVLINK_TYPE_FLOAT, 0, 8, offsetof(mavlink_control_system_state_t, x_acc) }, \
46 { "y_acc", NULL, MAVLINK_TYPE_FLOAT, 0, 12, offsetof(mavlink_control_system_state_t, y_acc) }, \
47 { "z_acc", NULL, MAVLINK_TYPE_FLOAT, 0, 16, offsetof(mavlink_control_system_state_t, z_acc) }, \
48 { "x_vel", NULL, MAVLINK_TYPE_FLOAT, 0, 20, offsetof(mavlink_control_system_state_t, x_vel) }, \
49 { "y_vel", NULL, MAVLINK_TYPE_FLOAT, 0, 24, offsetof(mavlink_control_system_state_t, y_vel) }, \
50 { "z_vel", NULL, MAVLINK_TYPE_FLOAT, 0, 28, offsetof(mavlink_control_system_state_t, z_vel) }, \
51 { "x_pos", NULL, MAVLINK_TYPE_FLOAT, 0, 32, offsetof(mavlink_control_system_state_t, x_pos) }, \
52 { "y_pos", NULL, MAVLINK_TYPE_FLOAT, 0, 36, offsetof(mavlink_control_system_state_t, y_pos) }, \
53 { "z_pos", NULL, MAVLINK_TYPE_FLOAT, 0, 40, offsetof(mavlink_control_system_state_t, z_pos) }, \
54 { "airspeed", NULL, MAVLINK_TYPE_FLOAT, 0, 44, offsetof(mavlink_control_system_state_t, airspeed) }, \
55 { "vel_variance", NULL, MAVLINK_TYPE_FLOAT, 3, 48, offsetof(mavlink_control_system_state_t, vel_variance) }, \
56 { "pos_variance", NULL, MAVLINK_TYPE_FLOAT, 3, 60, offsetof(mavlink_control_system_state_t, pos_variance) }, \
57 { "q", NULL, MAVLINK_TYPE_FLOAT, 4, 72, offsetof(mavlink_control_system_state_t, q) }, \
58 { "roll_rate", NULL, MAVLINK_TYPE_FLOAT, 0, 88, offsetof(mavlink_control_system_state_t, roll_rate) }, \
59 { "pitch_rate", NULL, MAVLINK_TYPE_FLOAT, 0, 92, offsetof(mavlink_control_system_state_t, pitch_rate) }, \
60 { "yaw_rate", NULL, MAVLINK_TYPE_FLOAT, 0, 96, offsetof(mavlink_control_system_state_t, yaw_rate) }, \
61 } \
63 #else
64 #define MAVLINK_MESSAGE_INFO_CONTROL_SYSTEM_STATE { \
65 "CONTROL_SYSTEM_STATE", \
66 17, \
67 { { "time_usec", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_control_system_state_t, time_usec) }, \
68 { "x_acc", NULL, MAVLINK_TYPE_FLOAT, 0, 8, offsetof(mavlink_control_system_state_t, x_acc) }, \
69 { "y_acc", NULL, MAVLINK_TYPE_FLOAT, 0, 12, offsetof(mavlink_control_system_state_t, y_acc) }, \
70 { "z_acc", NULL, MAVLINK_TYPE_FLOAT, 0, 16, offsetof(mavlink_control_system_state_t, z_acc) }, \
71 { "x_vel", NULL, MAVLINK_TYPE_FLOAT, 0, 20, offsetof(mavlink_control_system_state_t, x_vel) }, \
72 { "y_vel", NULL, MAVLINK_TYPE_FLOAT, 0, 24, offsetof(mavlink_control_system_state_t, y_vel) }, \
73 { "z_vel", NULL, MAVLINK_TYPE_FLOAT, 0, 28, offsetof(mavlink_control_system_state_t, z_vel) }, \
74 { "x_pos", NULL, MAVLINK_TYPE_FLOAT, 0, 32, offsetof(mavlink_control_system_state_t, x_pos) }, \
75 { "y_pos", NULL, MAVLINK_TYPE_FLOAT, 0, 36, offsetof(mavlink_control_system_state_t, y_pos) }, \
76 { "z_pos", NULL, MAVLINK_TYPE_FLOAT, 0, 40, offsetof(mavlink_control_system_state_t, z_pos) }, \
77 { "airspeed", NULL, MAVLINK_TYPE_FLOAT, 0, 44, offsetof(mavlink_control_system_state_t, airspeed) }, \
78 { "vel_variance", NULL, MAVLINK_TYPE_FLOAT, 3, 48, offsetof(mavlink_control_system_state_t, vel_variance) }, \
79 { "pos_variance", NULL, MAVLINK_TYPE_FLOAT, 3, 60, offsetof(mavlink_control_system_state_t, pos_variance) }, \
80 { "q", NULL, MAVLINK_TYPE_FLOAT, 4, 72, offsetof(mavlink_control_system_state_t, q) }, \
81 { "roll_rate", NULL, MAVLINK_TYPE_FLOAT, 0, 88, offsetof(mavlink_control_system_state_t, roll_rate) }, \
82 { "pitch_rate", NULL, MAVLINK_TYPE_FLOAT, 0, 92, offsetof(mavlink_control_system_state_t, pitch_rate) }, \
83 { "yaw_rate", NULL, MAVLINK_TYPE_FLOAT, 0, 96, offsetof(mavlink_control_system_state_t, yaw_rate) }, \
84 } \
86 #endif
88 /**
89 * @brief Pack a control_system_state message
90 * @param system_id ID of this system
91 * @param component_id ID of this component (e.g. 200 for IMU)
92 * @param msg The MAVLink message to compress the data into
94 * @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.
95 * @param x_acc [m/s/s] X acceleration in body frame
96 * @param y_acc [m/s/s] Y acceleration in body frame
97 * @param z_acc [m/s/s] Z acceleration in body frame
98 * @param x_vel [m/s] X velocity in body frame
99 * @param y_vel [m/s] Y velocity in body frame
100 * @param z_vel [m/s] Z velocity in body frame
101 * @param x_pos [m] X position in local frame
102 * @param y_pos [m] Y position in local frame
103 * @param z_pos [m] Z position in local frame
104 * @param airspeed [m/s] Airspeed, set to -1 if unknown
105 * @param vel_variance Variance of body velocity estimate
106 * @param pos_variance Variance in local position
107 * @param q The attitude, represented as Quaternion
108 * @param roll_rate [rad/s] Angular rate in roll axis
109 * @param pitch_rate [rad/s] Angular rate in pitch axis
110 * @param yaw_rate [rad/s] Angular rate in yaw axis
111 * @return length of the message in bytes (excluding serial stream start sign)
113 static inline uint16_t mavlink_msg_control_system_state_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
114 uint64_t time_usec, float x_acc, float y_acc, float z_acc, float x_vel, float y_vel, float z_vel, float x_pos, float y_pos, float z_pos, float airspeed, const float *vel_variance, const float *pos_variance, const float *q, float roll_rate, float pitch_rate, float yaw_rate)
116 #if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
117 char buf[MAVLINK_MSG_ID_CONTROL_SYSTEM_STATE_LEN];
118 _mav_put_uint64_t(buf, 0, time_usec);
119 _mav_put_float(buf, 8, x_acc);
120 _mav_put_float(buf, 12, y_acc);
121 _mav_put_float(buf, 16, z_acc);
122 _mav_put_float(buf, 20, x_vel);
123 _mav_put_float(buf, 24, y_vel);
124 _mav_put_float(buf, 28, z_vel);
125 _mav_put_float(buf, 32, x_pos);
126 _mav_put_float(buf, 36, y_pos);
127 _mav_put_float(buf, 40, z_pos);
128 _mav_put_float(buf, 44, airspeed);
129 _mav_put_float(buf, 88, roll_rate);
130 _mav_put_float(buf, 92, pitch_rate);
131 _mav_put_float(buf, 96, yaw_rate);
132 _mav_put_float_array(buf, 48, vel_variance, 3);
133 _mav_put_float_array(buf, 60, pos_variance, 3);
134 _mav_put_float_array(buf, 72, q, 4);
135 memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_CONTROL_SYSTEM_STATE_LEN);
136 #else
137 mavlink_control_system_state_t packet;
138 packet.time_usec = time_usec;
139 packet.x_acc = x_acc;
140 packet.y_acc = y_acc;
141 packet.z_acc = z_acc;
142 packet.x_vel = x_vel;
143 packet.y_vel = y_vel;
144 packet.z_vel = z_vel;
145 packet.x_pos = x_pos;
146 packet.y_pos = y_pos;
147 packet.z_pos = z_pos;
148 packet.airspeed = airspeed;
149 packet.roll_rate = roll_rate;
150 packet.pitch_rate = pitch_rate;
151 packet.yaw_rate = yaw_rate;
152 mav_array_memcpy(packet.vel_variance, vel_variance, sizeof(float)*3);
153 mav_array_memcpy(packet.pos_variance, pos_variance, sizeof(float)*3);
154 mav_array_memcpy(packet.q, q, sizeof(float)*4);
155 memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_CONTROL_SYSTEM_STATE_LEN);
156 #endif
158 msg->msgid = MAVLINK_MSG_ID_CONTROL_SYSTEM_STATE;
159 return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_CONTROL_SYSTEM_STATE_MIN_LEN, MAVLINK_MSG_ID_CONTROL_SYSTEM_STATE_LEN, MAVLINK_MSG_ID_CONTROL_SYSTEM_STATE_CRC);
163 * @brief Pack a control_system_state message on a channel
164 * @param system_id ID of this system
165 * @param component_id ID of this component (e.g. 200 for IMU)
166 * @param chan The MAVLink channel this message will be sent over
167 * @param msg The MAVLink message to compress the data into
168 * @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.
169 * @param x_acc [m/s/s] X acceleration in body frame
170 * @param y_acc [m/s/s] Y acceleration in body frame
171 * @param z_acc [m/s/s] Z acceleration in body frame
172 * @param x_vel [m/s] X velocity in body frame
173 * @param y_vel [m/s] Y velocity in body frame
174 * @param z_vel [m/s] Z velocity in body frame
175 * @param x_pos [m] X position in local frame
176 * @param y_pos [m] Y position in local frame
177 * @param z_pos [m] Z position in local frame
178 * @param airspeed [m/s] Airspeed, set to -1 if unknown
179 * @param vel_variance Variance of body velocity estimate
180 * @param pos_variance Variance in local position
181 * @param q The attitude, represented as Quaternion
182 * @param roll_rate [rad/s] Angular rate in roll axis
183 * @param pitch_rate [rad/s] Angular rate in pitch axis
184 * @param yaw_rate [rad/s] Angular rate in yaw axis
185 * @return length of the message in bytes (excluding serial stream start sign)
187 static inline uint16_t mavlink_msg_control_system_state_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
188 mavlink_message_t* msg,
189 uint64_t time_usec,float x_acc,float y_acc,float z_acc,float x_vel,float y_vel,float z_vel,float x_pos,float y_pos,float z_pos,float airspeed,const float *vel_variance,const float *pos_variance,const float *q,float roll_rate,float pitch_rate,float yaw_rate)
191 #if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
192 char buf[MAVLINK_MSG_ID_CONTROL_SYSTEM_STATE_LEN];
193 _mav_put_uint64_t(buf, 0, time_usec);
194 _mav_put_float(buf, 8, x_acc);
195 _mav_put_float(buf, 12, y_acc);
196 _mav_put_float(buf, 16, z_acc);
197 _mav_put_float(buf, 20, x_vel);
198 _mav_put_float(buf, 24, y_vel);
199 _mav_put_float(buf, 28, z_vel);
200 _mav_put_float(buf, 32, x_pos);
201 _mav_put_float(buf, 36, y_pos);
202 _mav_put_float(buf, 40, z_pos);
203 _mav_put_float(buf, 44, airspeed);
204 _mav_put_float(buf, 88, roll_rate);
205 _mav_put_float(buf, 92, pitch_rate);
206 _mav_put_float(buf, 96, yaw_rate);
207 _mav_put_float_array(buf, 48, vel_variance, 3);
208 _mav_put_float_array(buf, 60, pos_variance, 3);
209 _mav_put_float_array(buf, 72, q, 4);
210 memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_CONTROL_SYSTEM_STATE_LEN);
211 #else
212 mavlink_control_system_state_t packet;
213 packet.time_usec = time_usec;
214 packet.x_acc = x_acc;
215 packet.y_acc = y_acc;
216 packet.z_acc = z_acc;
217 packet.x_vel = x_vel;
218 packet.y_vel = y_vel;
219 packet.z_vel = z_vel;
220 packet.x_pos = x_pos;
221 packet.y_pos = y_pos;
222 packet.z_pos = z_pos;
223 packet.airspeed = airspeed;
224 packet.roll_rate = roll_rate;
225 packet.pitch_rate = pitch_rate;
226 packet.yaw_rate = yaw_rate;
227 mav_array_memcpy(packet.vel_variance, vel_variance, sizeof(float)*3);
228 mav_array_memcpy(packet.pos_variance, pos_variance, sizeof(float)*3);
229 mav_array_memcpy(packet.q, q, sizeof(float)*4);
230 memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_CONTROL_SYSTEM_STATE_LEN);
231 #endif
233 msg->msgid = MAVLINK_MSG_ID_CONTROL_SYSTEM_STATE;
234 return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_CONTROL_SYSTEM_STATE_MIN_LEN, MAVLINK_MSG_ID_CONTROL_SYSTEM_STATE_LEN, MAVLINK_MSG_ID_CONTROL_SYSTEM_STATE_CRC);
238 * @brief Encode a control_system_state struct
240 * @param system_id ID of this system
241 * @param component_id ID of this component (e.g. 200 for IMU)
242 * @param msg The MAVLink message to compress the data into
243 * @param control_system_state C-struct to read the message contents from
245 static inline uint16_t mavlink_msg_control_system_state_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_control_system_state_t* control_system_state)
247 return mavlink_msg_control_system_state_pack(system_id, component_id, msg, control_system_state->time_usec, control_system_state->x_acc, control_system_state->y_acc, control_system_state->z_acc, control_system_state->x_vel, control_system_state->y_vel, control_system_state->z_vel, control_system_state->x_pos, control_system_state->y_pos, control_system_state->z_pos, control_system_state->airspeed, control_system_state->vel_variance, control_system_state->pos_variance, control_system_state->q, control_system_state->roll_rate, control_system_state->pitch_rate, control_system_state->yaw_rate);
251 * @brief Encode a control_system_state struct on a channel
253 * @param system_id ID of this system
254 * @param component_id ID of this component (e.g. 200 for IMU)
255 * @param chan The MAVLink channel this message will be sent over
256 * @param msg The MAVLink message to compress the data into
257 * @param control_system_state C-struct to read the message contents from
259 static inline uint16_t mavlink_msg_control_system_state_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_control_system_state_t* control_system_state)
261 return mavlink_msg_control_system_state_pack_chan(system_id, component_id, chan, msg, control_system_state->time_usec, control_system_state->x_acc, control_system_state->y_acc, control_system_state->z_acc, control_system_state->x_vel, control_system_state->y_vel, control_system_state->z_vel, control_system_state->x_pos, control_system_state->y_pos, control_system_state->z_pos, control_system_state->airspeed, control_system_state->vel_variance, control_system_state->pos_variance, control_system_state->q, control_system_state->roll_rate, control_system_state->pitch_rate, control_system_state->yaw_rate);
265 * @brief Send a control_system_state message
266 * @param chan MAVLink channel to send the message
268 * @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.
269 * @param x_acc [m/s/s] X acceleration in body frame
270 * @param y_acc [m/s/s] Y acceleration in body frame
271 * @param z_acc [m/s/s] Z acceleration in body frame
272 * @param x_vel [m/s] X velocity in body frame
273 * @param y_vel [m/s] Y velocity in body frame
274 * @param z_vel [m/s] Z velocity in body frame
275 * @param x_pos [m] X position in local frame
276 * @param y_pos [m] Y position in local frame
277 * @param z_pos [m] Z position in local frame
278 * @param airspeed [m/s] Airspeed, set to -1 if unknown
279 * @param vel_variance Variance of body velocity estimate
280 * @param pos_variance Variance in local position
281 * @param q The attitude, represented as Quaternion
282 * @param roll_rate [rad/s] Angular rate in roll axis
283 * @param pitch_rate [rad/s] Angular rate in pitch axis
284 * @param yaw_rate [rad/s] Angular rate in yaw axis
286 #ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
288 static inline void mavlink_msg_control_system_state_send(mavlink_channel_t chan, uint64_t time_usec, float x_acc, float y_acc, float z_acc, float x_vel, float y_vel, float z_vel, float x_pos, float y_pos, float z_pos, float airspeed, const float *vel_variance, const float *pos_variance, const float *q, float roll_rate, float pitch_rate, float yaw_rate)
290 #if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
291 char buf[MAVLINK_MSG_ID_CONTROL_SYSTEM_STATE_LEN];
292 _mav_put_uint64_t(buf, 0, time_usec);
293 _mav_put_float(buf, 8, x_acc);
294 _mav_put_float(buf, 12, y_acc);
295 _mav_put_float(buf, 16, z_acc);
296 _mav_put_float(buf, 20, x_vel);
297 _mav_put_float(buf, 24, y_vel);
298 _mav_put_float(buf, 28, z_vel);
299 _mav_put_float(buf, 32, x_pos);
300 _mav_put_float(buf, 36, y_pos);
301 _mav_put_float(buf, 40, z_pos);
302 _mav_put_float(buf, 44, airspeed);
303 _mav_put_float(buf, 88, roll_rate);
304 _mav_put_float(buf, 92, pitch_rate);
305 _mav_put_float(buf, 96, yaw_rate);
306 _mav_put_float_array(buf, 48, vel_variance, 3);
307 _mav_put_float_array(buf, 60, pos_variance, 3);
308 _mav_put_float_array(buf, 72, q, 4);
309 _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_CONTROL_SYSTEM_STATE, buf, MAVLINK_MSG_ID_CONTROL_SYSTEM_STATE_MIN_LEN, MAVLINK_MSG_ID_CONTROL_SYSTEM_STATE_LEN, MAVLINK_MSG_ID_CONTROL_SYSTEM_STATE_CRC);
310 #else
311 mavlink_control_system_state_t packet;
312 packet.time_usec = time_usec;
313 packet.x_acc = x_acc;
314 packet.y_acc = y_acc;
315 packet.z_acc = z_acc;
316 packet.x_vel = x_vel;
317 packet.y_vel = y_vel;
318 packet.z_vel = z_vel;
319 packet.x_pos = x_pos;
320 packet.y_pos = y_pos;
321 packet.z_pos = z_pos;
322 packet.airspeed = airspeed;
323 packet.roll_rate = roll_rate;
324 packet.pitch_rate = pitch_rate;
325 packet.yaw_rate = yaw_rate;
326 mav_array_memcpy(packet.vel_variance, vel_variance, sizeof(float)*3);
327 mav_array_memcpy(packet.pos_variance, pos_variance, sizeof(float)*3);
328 mav_array_memcpy(packet.q, q, sizeof(float)*4);
329 _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_CONTROL_SYSTEM_STATE, (const char *)&packet, MAVLINK_MSG_ID_CONTROL_SYSTEM_STATE_MIN_LEN, MAVLINK_MSG_ID_CONTROL_SYSTEM_STATE_LEN, MAVLINK_MSG_ID_CONTROL_SYSTEM_STATE_CRC);
330 #endif
334 * @brief Send a control_system_state message
335 * @param chan MAVLink channel to send the message
336 * @param struct The MAVLink struct to serialize
338 static inline void mavlink_msg_control_system_state_send_struct(mavlink_channel_t chan, const mavlink_control_system_state_t* control_system_state)
340 #if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
341 mavlink_msg_control_system_state_send(chan, control_system_state->time_usec, control_system_state->x_acc, control_system_state->y_acc, control_system_state->z_acc, control_system_state->x_vel, control_system_state->y_vel, control_system_state->z_vel, control_system_state->x_pos, control_system_state->y_pos, control_system_state->z_pos, control_system_state->airspeed, control_system_state->vel_variance, control_system_state->pos_variance, control_system_state->q, control_system_state->roll_rate, control_system_state->pitch_rate, control_system_state->yaw_rate);
342 #else
343 _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_CONTROL_SYSTEM_STATE, (const char *)control_system_state, MAVLINK_MSG_ID_CONTROL_SYSTEM_STATE_MIN_LEN, MAVLINK_MSG_ID_CONTROL_SYSTEM_STATE_LEN, MAVLINK_MSG_ID_CONTROL_SYSTEM_STATE_CRC);
344 #endif
347 #if MAVLINK_MSG_ID_CONTROL_SYSTEM_STATE_LEN <= MAVLINK_MAX_PAYLOAD_LEN
349 This varient of _send() can be used to save stack space by re-using
350 memory from the receive buffer. The caller provides a
351 mavlink_message_t which is the size of a full mavlink message. This
352 is usually the receive buffer for the channel, and allows a reply to an
353 incoming message with minimum stack space usage.
355 static inline void mavlink_msg_control_system_state_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan, uint64_t time_usec, float x_acc, float y_acc, float z_acc, float x_vel, float y_vel, float z_vel, float x_pos, float y_pos, float z_pos, float airspeed, const float *vel_variance, const float *pos_variance, const float *q, float roll_rate, float pitch_rate, float yaw_rate)
357 #if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
358 char *buf = (char *)msgbuf;
359 _mav_put_uint64_t(buf, 0, time_usec);
360 _mav_put_float(buf, 8, x_acc);
361 _mav_put_float(buf, 12, y_acc);
362 _mav_put_float(buf, 16, z_acc);
363 _mav_put_float(buf, 20, x_vel);
364 _mav_put_float(buf, 24, y_vel);
365 _mav_put_float(buf, 28, z_vel);
366 _mav_put_float(buf, 32, x_pos);
367 _mav_put_float(buf, 36, y_pos);
368 _mav_put_float(buf, 40, z_pos);
369 _mav_put_float(buf, 44, airspeed);
370 _mav_put_float(buf, 88, roll_rate);
371 _mav_put_float(buf, 92, pitch_rate);
372 _mav_put_float(buf, 96, yaw_rate);
373 _mav_put_float_array(buf, 48, vel_variance, 3);
374 _mav_put_float_array(buf, 60, pos_variance, 3);
375 _mav_put_float_array(buf, 72, q, 4);
376 _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_CONTROL_SYSTEM_STATE, buf, MAVLINK_MSG_ID_CONTROL_SYSTEM_STATE_MIN_LEN, MAVLINK_MSG_ID_CONTROL_SYSTEM_STATE_LEN, MAVLINK_MSG_ID_CONTROL_SYSTEM_STATE_CRC);
377 #else
378 mavlink_control_system_state_t *packet = (mavlink_control_system_state_t *)msgbuf;
379 packet->time_usec = time_usec;
380 packet->x_acc = x_acc;
381 packet->y_acc = y_acc;
382 packet->z_acc = z_acc;
383 packet->x_vel = x_vel;
384 packet->y_vel = y_vel;
385 packet->z_vel = z_vel;
386 packet->x_pos = x_pos;
387 packet->y_pos = y_pos;
388 packet->z_pos = z_pos;
389 packet->airspeed = airspeed;
390 packet->roll_rate = roll_rate;
391 packet->pitch_rate = pitch_rate;
392 packet->yaw_rate = yaw_rate;
393 mav_array_memcpy(packet->vel_variance, vel_variance, sizeof(float)*3);
394 mav_array_memcpy(packet->pos_variance, pos_variance, sizeof(float)*3);
395 mav_array_memcpy(packet->q, q, sizeof(float)*4);
396 _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_CONTROL_SYSTEM_STATE, (const char *)packet, MAVLINK_MSG_ID_CONTROL_SYSTEM_STATE_MIN_LEN, MAVLINK_MSG_ID_CONTROL_SYSTEM_STATE_LEN, MAVLINK_MSG_ID_CONTROL_SYSTEM_STATE_CRC);
397 #endif
399 #endif
401 #endif
403 // MESSAGE CONTROL_SYSTEM_STATE UNPACKING
407 * @brief Get field time_usec from control_system_state message
409 * @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.
411 static inline uint64_t mavlink_msg_control_system_state_get_time_usec(const mavlink_message_t* msg)
413 return _MAV_RETURN_uint64_t(msg, 0);
417 * @brief Get field x_acc from control_system_state message
419 * @return [m/s/s] X acceleration in body frame
421 static inline float mavlink_msg_control_system_state_get_x_acc(const mavlink_message_t* msg)
423 return _MAV_RETURN_float(msg, 8);
427 * @brief Get field y_acc from control_system_state message
429 * @return [m/s/s] Y acceleration in body frame
431 static inline float mavlink_msg_control_system_state_get_y_acc(const mavlink_message_t* msg)
433 return _MAV_RETURN_float(msg, 12);
437 * @brief Get field z_acc from control_system_state message
439 * @return [m/s/s] Z acceleration in body frame
441 static inline float mavlink_msg_control_system_state_get_z_acc(const mavlink_message_t* msg)
443 return _MAV_RETURN_float(msg, 16);
447 * @brief Get field x_vel from control_system_state message
449 * @return [m/s] X velocity in body frame
451 static inline float mavlink_msg_control_system_state_get_x_vel(const mavlink_message_t* msg)
453 return _MAV_RETURN_float(msg, 20);
457 * @brief Get field y_vel from control_system_state message
459 * @return [m/s] Y velocity in body frame
461 static inline float mavlink_msg_control_system_state_get_y_vel(const mavlink_message_t* msg)
463 return _MAV_RETURN_float(msg, 24);
467 * @brief Get field z_vel from control_system_state message
469 * @return [m/s] Z velocity in body frame
471 static inline float mavlink_msg_control_system_state_get_z_vel(const mavlink_message_t* msg)
473 return _MAV_RETURN_float(msg, 28);
477 * @brief Get field x_pos from control_system_state message
479 * @return [m] X position in local frame
481 static inline float mavlink_msg_control_system_state_get_x_pos(const mavlink_message_t* msg)
483 return _MAV_RETURN_float(msg, 32);
487 * @brief Get field y_pos from control_system_state message
489 * @return [m] Y position in local frame
491 static inline float mavlink_msg_control_system_state_get_y_pos(const mavlink_message_t* msg)
493 return _MAV_RETURN_float(msg, 36);
497 * @brief Get field z_pos from control_system_state message
499 * @return [m] Z position in local frame
501 static inline float mavlink_msg_control_system_state_get_z_pos(const mavlink_message_t* msg)
503 return _MAV_RETURN_float(msg, 40);
507 * @brief Get field airspeed from control_system_state message
509 * @return [m/s] Airspeed, set to -1 if unknown
511 static inline float mavlink_msg_control_system_state_get_airspeed(const mavlink_message_t* msg)
513 return _MAV_RETURN_float(msg, 44);
517 * @brief Get field vel_variance from control_system_state message
519 * @return Variance of body velocity estimate
521 static inline uint16_t mavlink_msg_control_system_state_get_vel_variance(const mavlink_message_t* msg, float *vel_variance)
523 return _MAV_RETURN_float_array(msg, vel_variance, 3, 48);
527 * @brief Get field pos_variance from control_system_state message
529 * @return Variance in local position
531 static inline uint16_t mavlink_msg_control_system_state_get_pos_variance(const mavlink_message_t* msg, float *pos_variance)
533 return _MAV_RETURN_float_array(msg, pos_variance, 3, 60);
537 * @brief Get field q from control_system_state message
539 * @return The attitude, represented as Quaternion
541 static inline uint16_t mavlink_msg_control_system_state_get_q(const mavlink_message_t* msg, float *q)
543 return _MAV_RETURN_float_array(msg, q, 4, 72);
547 * @brief Get field roll_rate from control_system_state message
549 * @return [rad/s] Angular rate in roll axis
551 static inline float mavlink_msg_control_system_state_get_roll_rate(const mavlink_message_t* msg)
553 return _MAV_RETURN_float(msg, 88);
557 * @brief Get field pitch_rate from control_system_state message
559 * @return [rad/s] Angular rate in pitch axis
561 static inline float mavlink_msg_control_system_state_get_pitch_rate(const mavlink_message_t* msg)
563 return _MAV_RETURN_float(msg, 92);
567 * @brief Get field yaw_rate from control_system_state message
569 * @return [rad/s] Angular rate in yaw axis
571 static inline float mavlink_msg_control_system_state_get_yaw_rate(const mavlink_message_t* msg)
573 return _MAV_RETURN_float(msg, 96);
577 * @brief Decode a control_system_state message into a struct
579 * @param msg The message to decode
580 * @param control_system_state C-struct to decode the message contents into
582 static inline void mavlink_msg_control_system_state_decode(const mavlink_message_t* msg, mavlink_control_system_state_t* control_system_state)
584 #if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
585 control_system_state->time_usec = mavlink_msg_control_system_state_get_time_usec(msg);
586 control_system_state->x_acc = mavlink_msg_control_system_state_get_x_acc(msg);
587 control_system_state->y_acc = mavlink_msg_control_system_state_get_y_acc(msg);
588 control_system_state->z_acc = mavlink_msg_control_system_state_get_z_acc(msg);
589 control_system_state->x_vel = mavlink_msg_control_system_state_get_x_vel(msg);
590 control_system_state->y_vel = mavlink_msg_control_system_state_get_y_vel(msg);
591 control_system_state->z_vel = mavlink_msg_control_system_state_get_z_vel(msg);
592 control_system_state->x_pos = mavlink_msg_control_system_state_get_x_pos(msg);
593 control_system_state->y_pos = mavlink_msg_control_system_state_get_y_pos(msg);
594 control_system_state->z_pos = mavlink_msg_control_system_state_get_z_pos(msg);
595 control_system_state->airspeed = mavlink_msg_control_system_state_get_airspeed(msg);
596 mavlink_msg_control_system_state_get_vel_variance(msg, control_system_state->vel_variance);
597 mavlink_msg_control_system_state_get_pos_variance(msg, control_system_state->pos_variance);
598 mavlink_msg_control_system_state_get_q(msg, control_system_state->q);
599 control_system_state->roll_rate = mavlink_msg_control_system_state_get_roll_rate(msg);
600 control_system_state->pitch_rate = mavlink_msg_control_system_state_get_pitch_rate(msg);
601 control_system_state->yaw_rate = mavlink_msg_control_system_state_get_yaw_rate(msg);
602 #else
603 uint8_t len = msg->len < MAVLINK_MSG_ID_CONTROL_SYSTEM_STATE_LEN? msg->len : MAVLINK_MSG_ID_CONTROL_SYSTEM_STATE_LEN;
604 memset(control_system_state, 0, MAVLINK_MSG_ID_CONTROL_SYSTEM_STATE_LEN);
605 memcpy(control_system_state, _MAV_PAYLOAD(msg), len);
606 #endif