RflySimSDK v3.05
RflySimSDK说明文档
载入中...
搜索中...
未找到
mavlink_msg_landing_target.h
1#pragma once
2// MESSAGE LANDING_TARGET PACKING
3
4#define MAVLINK_MSG_ID_LANDING_TARGET 149
5
6MAVPACKED(
7typedef struct __mavlink_landing_target_t {
8 uint64_t time_usec; /*< Timestamp (micros since boot or Unix epoch)*/
9 float angle_x; /*< X-axis angular offset (in radians) of the target from the center of the image*/
10 float angle_y; /*< Y-axis angular offset (in radians) of the target from the center of the image*/
11 float distance; /*< Distance to the target from the vehicle in meters*/
12 float size_x; /*< Size in radians of target along x-axis*/
13 float size_y; /*< Size in radians of target along y-axis*/
14 uint8_t target_num; /*< The ID of the target if multiple targets are present*/
15 uint8_t frame; /*< MAV_FRAME enum specifying the whether the following feilds are earth-frame, body-frame, etc.*/
16 float x; /*< X Position of the landing target on MAV_FRAME*/
17 float y; /*< Y Position of the landing target on MAV_FRAME*/
18 float z; /*< Z Position of the landing target on MAV_FRAME*/
19 float q[4]; /*< Quaternion of landing target orientation (w, x, y, z order, zero-rotation is 1, 0, 0, 0)*/
20 uint8_t type; /*< LANDING_TARGET_TYPE enum specifying the type of landing target*/
21 uint8_t position_valid; /*< Boolean indicating known position (1) or default unkown position (0), for validation of positioning of the landing target*/
22}) mavlink_landing_target_t;
23
24#define MAVLINK_MSG_ID_LANDING_TARGET_LEN 60
25#define MAVLINK_MSG_ID_LANDING_TARGET_MIN_LEN 30
26#define MAVLINK_MSG_ID_149_LEN 60
27#define MAVLINK_MSG_ID_149_MIN_LEN 30
28
29#define MAVLINK_MSG_ID_LANDING_TARGET_CRC 200
30#define MAVLINK_MSG_ID_149_CRC 200
31
32#define MAVLINK_MSG_LANDING_TARGET_FIELD_Q_LEN 4
33
34#if MAVLINK_COMMAND_24BIT
35#define MAVLINK_MESSAGE_INFO_LANDING_TARGET { \
36 149, \
37 "LANDING_TARGET", \
38 14, \
39 { { "time_usec", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_landing_target_t, time_usec) }, \
40 { "target_num", NULL, MAVLINK_TYPE_UINT8_T, 0, 28, offsetof(mavlink_landing_target_t, target_num) }, \
41 { "frame", NULL, MAVLINK_TYPE_UINT8_T, 0, 29, offsetof(mavlink_landing_target_t, frame) }, \
42 { "angle_x", NULL, MAVLINK_TYPE_FLOAT, 0, 8, offsetof(mavlink_landing_target_t, angle_x) }, \
43 { "angle_y", NULL, MAVLINK_TYPE_FLOAT, 0, 12, offsetof(mavlink_landing_target_t, angle_y) }, \
44 { "distance", NULL, MAVLINK_TYPE_FLOAT, 0, 16, offsetof(mavlink_landing_target_t, distance) }, \
45 { "size_x", NULL, MAVLINK_TYPE_FLOAT, 0, 20, offsetof(mavlink_landing_target_t, size_x) }, \
46 { "size_y", NULL, MAVLINK_TYPE_FLOAT, 0, 24, offsetof(mavlink_landing_target_t, size_y) }, \
47 { "x", NULL, MAVLINK_TYPE_FLOAT, 0, 30, offsetof(mavlink_landing_target_t, x) }, \
48 { "y", NULL, MAVLINK_TYPE_FLOAT, 0, 34, offsetof(mavlink_landing_target_t, y) }, \
49 { "z", NULL, MAVLINK_TYPE_FLOAT, 0, 38, offsetof(mavlink_landing_target_t, z) }, \
50 { "q", NULL, MAVLINK_TYPE_FLOAT, 4, 42, offsetof(mavlink_landing_target_t, q) }, \
51 { "type", NULL, MAVLINK_TYPE_UINT8_T, 0, 58, offsetof(mavlink_landing_target_t, type) }, \
52 { "position_valid", NULL, MAVLINK_TYPE_UINT8_T, 0, 59, offsetof(mavlink_landing_target_t, position_valid) }, \
53 } \
54}
55#else
56#define MAVLINK_MESSAGE_INFO_LANDING_TARGET { \
57 "LANDING_TARGET", \
58 14, \
59 { { "time_usec", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_landing_target_t, time_usec) }, \
60 { "target_num", NULL, MAVLINK_TYPE_UINT8_T, 0, 28, offsetof(mavlink_landing_target_t, target_num) }, \
61 { "frame", NULL, MAVLINK_TYPE_UINT8_T, 0, 29, offsetof(mavlink_landing_target_t, frame) }, \
62 { "angle_x", NULL, MAVLINK_TYPE_FLOAT, 0, 8, offsetof(mavlink_landing_target_t, angle_x) }, \
63 { "angle_y", NULL, MAVLINK_TYPE_FLOAT, 0, 12, offsetof(mavlink_landing_target_t, angle_y) }, \
64 { "distance", NULL, MAVLINK_TYPE_FLOAT, 0, 16, offsetof(mavlink_landing_target_t, distance) }, \
65 { "size_x", NULL, MAVLINK_TYPE_FLOAT, 0, 20, offsetof(mavlink_landing_target_t, size_x) }, \
66 { "size_y", NULL, MAVLINK_TYPE_FLOAT, 0, 24, offsetof(mavlink_landing_target_t, size_y) }, \
67 { "x", NULL, MAVLINK_TYPE_FLOAT, 0, 30, offsetof(mavlink_landing_target_t, x) }, \
68 { "y", NULL, MAVLINK_TYPE_FLOAT, 0, 34, offsetof(mavlink_landing_target_t, y) }, \
69 { "z", NULL, MAVLINK_TYPE_FLOAT, 0, 38, offsetof(mavlink_landing_target_t, z) }, \
70 { "q", NULL, MAVLINK_TYPE_FLOAT, 4, 42, offsetof(mavlink_landing_target_t, q) }, \
71 { "type", NULL, MAVLINK_TYPE_UINT8_T, 0, 58, offsetof(mavlink_landing_target_t, type) }, \
72 { "position_valid", NULL, MAVLINK_TYPE_UINT8_T, 0, 59, offsetof(mavlink_landing_target_t, position_valid) }, \
73 } \
74}
75#endif
76
99static inline uint16_t mavlink_msg_landing_target_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
100 uint64_t time_usec, uint8_t target_num, uint8_t frame, float angle_x, float angle_y, float distance, float size_x, float size_y, float x, float y, float z, const float *q, uint8_t type, uint8_t position_valid)
101{
102#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
103 char buf[MAVLINK_MSG_ID_LANDING_TARGET_LEN];
104 _mav_put_uint64_t(buf, 0, time_usec);
105 _mav_put_float(buf, 8, angle_x);
106 _mav_put_float(buf, 12, angle_y);
107 _mav_put_float(buf, 16, distance);
108 _mav_put_float(buf, 20, size_x);
109 _mav_put_float(buf, 24, size_y);
110 _mav_put_uint8_t(buf, 28, target_num);
111 _mav_put_uint8_t(buf, 29, frame);
112 _mav_put_float(buf, 30, x);
113 _mav_put_float(buf, 34, y);
114 _mav_put_float(buf, 38, z);
115 _mav_put_uint8_t(buf, 58, type);
116 _mav_put_uint8_t(buf, 59, position_valid);
117 _mav_put_float_array(buf, 42, q, 4);
118 memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_LANDING_TARGET_LEN);
119#else
120 mavlink_landing_target_t packet;
121 packet.time_usec = time_usec;
122 packet.angle_x = angle_x;
123 packet.angle_y = angle_y;
124 packet.distance = distance;
125 packet.size_x = size_x;
126 packet.size_y = size_y;
127 packet.target_num = target_num;
128 packet.frame = frame;
129 packet.x = x;
130 packet.y = y;
131 packet.z = z;
132 packet.type = type;
133 packet.position_valid = position_valid;
134 mav_array_memcpy(packet.q, q, sizeof(float)*4);
135 memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_LANDING_TARGET_LEN);
136#endif
137
138 msg->msgid = MAVLINK_MSG_ID_LANDING_TARGET;
139 return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_LANDING_TARGET_MIN_LEN, MAVLINK_MSG_ID_LANDING_TARGET_LEN, MAVLINK_MSG_ID_LANDING_TARGET_CRC);
140}
141
164static inline uint16_t mavlink_msg_landing_target_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
165 mavlink_message_t* msg,
166 uint64_t time_usec,uint8_t target_num,uint8_t frame,float angle_x,float angle_y,float distance,float size_x,float size_y,float x,float y,float z,const float *q,uint8_t type,uint8_t position_valid)
167{
168#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
169 char buf[MAVLINK_MSG_ID_LANDING_TARGET_LEN];
170 _mav_put_uint64_t(buf, 0, time_usec);
171 _mav_put_float(buf, 8, angle_x);
172 _mav_put_float(buf, 12, angle_y);
173 _mav_put_float(buf, 16, distance);
174 _mav_put_float(buf, 20, size_x);
175 _mav_put_float(buf, 24, size_y);
176 _mav_put_uint8_t(buf, 28, target_num);
177 _mav_put_uint8_t(buf, 29, frame);
178 _mav_put_float(buf, 30, x);
179 _mav_put_float(buf, 34, y);
180 _mav_put_float(buf, 38, z);
181 _mav_put_uint8_t(buf, 58, type);
182 _mav_put_uint8_t(buf, 59, position_valid);
183 _mav_put_float_array(buf, 42, q, 4);
184 memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_LANDING_TARGET_LEN);
185#else
186 mavlink_landing_target_t packet;
187 packet.time_usec = time_usec;
188 packet.angle_x = angle_x;
189 packet.angle_y = angle_y;
190 packet.distance = distance;
191 packet.size_x = size_x;
192 packet.size_y = size_y;
193 packet.target_num = target_num;
194 packet.frame = frame;
195 packet.x = x;
196 packet.y = y;
197 packet.z = z;
198 packet.type = type;
199 packet.position_valid = position_valid;
200 mav_array_memcpy(packet.q, q, sizeof(float)*4);
201 memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_LANDING_TARGET_LEN);
202#endif
203
204 msg->msgid = MAVLINK_MSG_ID_LANDING_TARGET;
205 return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_LANDING_TARGET_MIN_LEN, MAVLINK_MSG_ID_LANDING_TARGET_LEN, MAVLINK_MSG_ID_LANDING_TARGET_CRC);
206}
207
216static inline uint16_t mavlink_msg_landing_target_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_landing_target_t* landing_target)
217{
218 return mavlink_msg_landing_target_pack(system_id, component_id, msg, landing_target->time_usec, landing_target->target_num, landing_target->frame, landing_target->angle_x, landing_target->angle_y, landing_target->distance, landing_target->size_x, landing_target->size_y, landing_target->x, landing_target->y, landing_target->z, landing_target->q, landing_target->type, landing_target->position_valid);
219}
220
230static inline uint16_t mavlink_msg_landing_target_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_landing_target_t* landing_target)
231{
232 return mavlink_msg_landing_target_pack_chan(system_id, component_id, chan, msg, landing_target->time_usec, landing_target->target_num, landing_target->frame, landing_target->angle_x, landing_target->angle_y, landing_target->distance, landing_target->size_x, landing_target->size_y, landing_target->x, landing_target->y, landing_target->z, landing_target->q, landing_target->type, landing_target->position_valid);
233}
234
254#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
255
256static inline void mavlink_msg_landing_target_send(mavlink_channel_t chan, uint64_t time_usec, uint8_t target_num, uint8_t frame, float angle_x, float angle_y, float distance, float size_x, float size_y, float x, float y, float z, const float *q, uint8_t type, uint8_t position_valid)
257{
258#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
259 char buf[MAVLINK_MSG_ID_LANDING_TARGET_LEN];
260 _mav_put_uint64_t(buf, 0, time_usec);
261 _mav_put_float(buf, 8, angle_x);
262 _mav_put_float(buf, 12, angle_y);
263 _mav_put_float(buf, 16, distance);
264 _mav_put_float(buf, 20, size_x);
265 _mav_put_float(buf, 24, size_y);
266 _mav_put_uint8_t(buf, 28, target_num);
267 _mav_put_uint8_t(buf, 29, frame);
268 _mav_put_float(buf, 30, x);
269 _mav_put_float(buf, 34, y);
270 _mav_put_float(buf, 38, z);
271 _mav_put_uint8_t(buf, 58, type);
272 _mav_put_uint8_t(buf, 59, position_valid);
273 _mav_put_float_array(buf, 42, q, 4);
274 _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_LANDING_TARGET, buf, MAVLINK_MSG_ID_LANDING_TARGET_MIN_LEN, MAVLINK_MSG_ID_LANDING_TARGET_LEN, MAVLINK_MSG_ID_LANDING_TARGET_CRC);
275#else
276 mavlink_landing_target_t packet;
277 packet.time_usec = time_usec;
278 packet.angle_x = angle_x;
279 packet.angle_y = angle_y;
280 packet.distance = distance;
281 packet.size_x = size_x;
282 packet.size_y = size_y;
283 packet.target_num = target_num;
284 packet.frame = frame;
285 packet.x = x;
286 packet.y = y;
287 packet.z = z;
288 packet.type = type;
289 packet.position_valid = position_valid;
290 mav_array_memcpy(packet.q, q, sizeof(float)*4);
291 _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_LANDING_TARGET, (const char *)&packet, MAVLINK_MSG_ID_LANDING_TARGET_MIN_LEN, MAVLINK_MSG_ID_LANDING_TARGET_LEN, MAVLINK_MSG_ID_LANDING_TARGET_CRC);
292#endif
293}
294
300static inline void mavlink_msg_landing_target_send_struct(mavlink_channel_t chan, const mavlink_landing_target_t* landing_target)
301{
302#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
303 mavlink_msg_landing_target_send(chan, landing_target->time_usec, landing_target->target_num, landing_target->frame, landing_target->angle_x, landing_target->angle_y, landing_target->distance, landing_target->size_x, landing_target->size_y, landing_target->x, landing_target->y, landing_target->z, landing_target->q, landing_target->type, landing_target->position_valid);
304#else
305 _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_LANDING_TARGET, (const char *)landing_target, MAVLINK_MSG_ID_LANDING_TARGET_MIN_LEN, MAVLINK_MSG_ID_LANDING_TARGET_LEN, MAVLINK_MSG_ID_LANDING_TARGET_CRC);
306#endif
307}
308
309#if MAVLINK_MSG_ID_LANDING_TARGET_LEN <= MAVLINK_MAX_PAYLOAD_LEN
310/*
311 This varient of _send() can be used to save stack space by re-using
312 memory from the receive buffer. The caller provides a
313 mavlink_message_t which is the size of a full mavlink message. This
314 is usually the receive buffer for the channel, and allows a reply to an
315 incoming message with minimum stack space usage.
316 */
317static inline void mavlink_msg_landing_target_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan, uint64_t time_usec, uint8_t target_num, uint8_t frame, float angle_x, float angle_y, float distance, float size_x, float size_y, float x, float y, float z, const float *q, uint8_t type, uint8_t position_valid)
318{
319#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
320 char *buf = (char *)msgbuf;
321 _mav_put_uint64_t(buf, 0, time_usec);
322 _mav_put_float(buf, 8, angle_x);
323 _mav_put_float(buf, 12, angle_y);
324 _mav_put_float(buf, 16, distance);
325 _mav_put_float(buf, 20, size_x);
326 _mav_put_float(buf, 24, size_y);
327 _mav_put_uint8_t(buf, 28, target_num);
328 _mav_put_uint8_t(buf, 29, frame);
329 _mav_put_float(buf, 30, x);
330 _mav_put_float(buf, 34, y);
331 _mav_put_float(buf, 38, z);
332 _mav_put_uint8_t(buf, 58, type);
333 _mav_put_uint8_t(buf, 59, position_valid);
334 _mav_put_float_array(buf, 42, q, 4);
335 _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_LANDING_TARGET, buf, MAVLINK_MSG_ID_LANDING_TARGET_MIN_LEN, MAVLINK_MSG_ID_LANDING_TARGET_LEN, MAVLINK_MSG_ID_LANDING_TARGET_CRC);
336#else
337 mavlink_landing_target_t *packet = (mavlink_landing_target_t *)msgbuf;
338 packet->time_usec = time_usec;
339 packet->angle_x = angle_x;
340 packet->angle_y = angle_y;
341 packet->distance = distance;
342 packet->size_x = size_x;
343 packet->size_y = size_y;
344 packet->target_num = target_num;
345 packet->frame = frame;
346 packet->x = x;
347 packet->y = y;
348 packet->z = z;
349 packet->type = type;
350 packet->position_valid = position_valid;
351 mav_array_memcpy(packet->q, q, sizeof(float)*4);
352 _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_LANDING_TARGET, (const char *)packet, MAVLINK_MSG_ID_LANDING_TARGET_MIN_LEN, MAVLINK_MSG_ID_LANDING_TARGET_LEN, MAVLINK_MSG_ID_LANDING_TARGET_CRC);
353#endif
354}
355#endif
356
357#endif
358
359// MESSAGE LANDING_TARGET UNPACKING
360
361
367static inline uint64_t mavlink_msg_landing_target_get_time_usec(const mavlink_message_t* msg)
368{
369 return _MAV_RETURN_uint64_t(msg, 0);
370}
371
377static inline uint8_t mavlink_msg_landing_target_get_target_num(const mavlink_message_t* msg)
378{
379 return _MAV_RETURN_uint8_t(msg, 28);
380}
381
387static inline uint8_t mavlink_msg_landing_target_get_frame(const mavlink_message_t* msg)
388{
389 return _MAV_RETURN_uint8_t(msg, 29);
390}
391
397static inline float mavlink_msg_landing_target_get_angle_x(const mavlink_message_t* msg)
398{
399 return _MAV_RETURN_float(msg, 8);
400}
401
407static inline float mavlink_msg_landing_target_get_angle_y(const mavlink_message_t* msg)
408{
409 return _MAV_RETURN_float(msg, 12);
410}
411
417static inline float mavlink_msg_landing_target_get_distance(const mavlink_message_t* msg)
418{
419 return _MAV_RETURN_float(msg, 16);
420}
421
427static inline float mavlink_msg_landing_target_get_size_x(const mavlink_message_t* msg)
428{
429 return _MAV_RETURN_float(msg, 20);
430}
431
437static inline float mavlink_msg_landing_target_get_size_y(const mavlink_message_t* msg)
438{
439 return _MAV_RETURN_float(msg, 24);
440}
441
447static inline float mavlink_msg_landing_target_get_x(const mavlink_message_t* msg)
448{
449 return _MAV_RETURN_float(msg, 30);
450}
451
457static inline float mavlink_msg_landing_target_get_y(const mavlink_message_t* msg)
458{
459 return _MAV_RETURN_float(msg, 34);
460}
461
467static inline float mavlink_msg_landing_target_get_z(const mavlink_message_t* msg)
468{
469 return _MAV_RETURN_float(msg, 38);
470}
471
477static inline uint16_t mavlink_msg_landing_target_get_q(const mavlink_message_t* msg, float *q)
478{
479 return _MAV_RETURN_float_array(msg, q, 4, 42);
480}
481
487static inline uint8_t mavlink_msg_landing_target_get_type(const mavlink_message_t* msg)
488{
489 return _MAV_RETURN_uint8_t(msg, 58);
490}
491
497static inline uint8_t mavlink_msg_landing_target_get_position_valid(const mavlink_message_t* msg)
498{
499 return _MAV_RETURN_uint8_t(msg, 59);
500}
501
508static inline void mavlink_msg_landing_target_decode(const mavlink_message_t* msg, mavlink_landing_target_t* landing_target)
509{
510#if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
511 landing_target->time_usec = mavlink_msg_landing_target_get_time_usec(msg);
512 landing_target->angle_x = mavlink_msg_landing_target_get_angle_x(msg);
513 landing_target->angle_y = mavlink_msg_landing_target_get_angle_y(msg);
514 landing_target->distance = mavlink_msg_landing_target_get_distance(msg);
515 landing_target->size_x = mavlink_msg_landing_target_get_size_x(msg);
516 landing_target->size_y = mavlink_msg_landing_target_get_size_y(msg);
517 landing_target->target_num = mavlink_msg_landing_target_get_target_num(msg);
518 landing_target->frame = mavlink_msg_landing_target_get_frame(msg);
519 landing_target->x = mavlink_msg_landing_target_get_x(msg);
520 landing_target->y = mavlink_msg_landing_target_get_y(msg);
521 landing_target->z = mavlink_msg_landing_target_get_z(msg);
522 mavlink_msg_landing_target_get_q(msg, landing_target->q);
523 landing_target->type = mavlink_msg_landing_target_get_type(msg);
524 landing_target->position_valid = mavlink_msg_landing_target_get_position_valid(msg);
525#else
526 uint8_t len = msg->len < MAVLINK_MSG_ID_LANDING_TARGET_LEN? msg->len : MAVLINK_MSG_ID_LANDING_TARGET_LEN;
527 memset(landing_target, 0, MAVLINK_MSG_ID_LANDING_TARGET_LEN);
528 memcpy(landing_target, _MAV_PAYLOAD(msg), len);
529#endif
530}