Merge remote-tracking branch 'upstream/master' into abo_fw_alt_vel_control
[inav.git] / lib / main / MAVLink / common / mavlink_msg_debug_vect.h
blob1cb8d77ab576d3a4b3c20f343419956f00350bb0
1 #pragma once
2 // MESSAGE DEBUG_VECT PACKING
4 #define MAVLINK_MSG_ID_DEBUG_VECT 250
7 typedef struct __mavlink_debug_vect_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; /*< x*/
10 float y; /*< y*/
11 float z; /*< z*/
12 char name[10]; /*< Name*/
13 } mavlink_debug_vect_t;
15 #define MAVLINK_MSG_ID_DEBUG_VECT_LEN 30
16 #define MAVLINK_MSG_ID_DEBUG_VECT_MIN_LEN 30
17 #define MAVLINK_MSG_ID_250_LEN 30
18 #define MAVLINK_MSG_ID_250_MIN_LEN 30
20 #define MAVLINK_MSG_ID_DEBUG_VECT_CRC 49
21 #define MAVLINK_MSG_ID_250_CRC 49
23 #define MAVLINK_MSG_DEBUG_VECT_FIELD_NAME_LEN 10
25 #if MAVLINK_COMMAND_24BIT
26 #define MAVLINK_MESSAGE_INFO_DEBUG_VECT { \
27 250, \
28 "DEBUG_VECT", \
29 5, \
30 { { "name", NULL, MAVLINK_TYPE_CHAR, 10, 20, offsetof(mavlink_debug_vect_t, name) }, \
31 { "time_usec", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_debug_vect_t, time_usec) }, \
32 { "x", NULL, MAVLINK_TYPE_FLOAT, 0, 8, offsetof(mavlink_debug_vect_t, x) }, \
33 { "y", NULL, MAVLINK_TYPE_FLOAT, 0, 12, offsetof(mavlink_debug_vect_t, y) }, \
34 { "z", NULL, MAVLINK_TYPE_FLOAT, 0, 16, offsetof(mavlink_debug_vect_t, z) }, \
35 } \
37 #else
38 #define MAVLINK_MESSAGE_INFO_DEBUG_VECT { \
39 "DEBUG_VECT", \
40 5, \
41 { { "name", NULL, MAVLINK_TYPE_CHAR, 10, 20, offsetof(mavlink_debug_vect_t, name) }, \
42 { "time_usec", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_debug_vect_t, time_usec) }, \
43 { "x", NULL, MAVLINK_TYPE_FLOAT, 0, 8, offsetof(mavlink_debug_vect_t, x) }, \
44 { "y", NULL, MAVLINK_TYPE_FLOAT, 0, 12, offsetof(mavlink_debug_vect_t, y) }, \
45 { "z", NULL, MAVLINK_TYPE_FLOAT, 0, 16, offsetof(mavlink_debug_vect_t, z) }, \
46 } \
48 #endif
50 /**
51 * @brief Pack a debug_vect message
52 * @param system_id ID of this system
53 * @param component_id ID of this component (e.g. 200 for IMU)
54 * @param msg The MAVLink message to compress the data into
56 * @param name Name
57 * @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.
58 * @param x x
59 * @param y y
60 * @param z z
61 * @return length of the message in bytes (excluding serial stream start sign)
63 static inline uint16_t mavlink_msg_debug_vect_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
64 const char *name, uint64_t time_usec, float x, float y, float z)
66 #if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
67 char buf[MAVLINK_MSG_ID_DEBUG_VECT_LEN];
68 _mav_put_uint64_t(buf, 0, time_usec);
69 _mav_put_float(buf, 8, x);
70 _mav_put_float(buf, 12, y);
71 _mav_put_float(buf, 16, z);
72 _mav_put_char_array(buf, 20, name, 10);
73 memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_DEBUG_VECT_LEN);
74 #else
75 mavlink_debug_vect_t packet;
76 packet.time_usec = time_usec;
77 packet.x = x;
78 packet.y = y;
79 packet.z = z;
80 mav_array_memcpy(packet.name, name, sizeof(char)*10);
81 memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_DEBUG_VECT_LEN);
82 #endif
84 msg->msgid = MAVLINK_MSG_ID_DEBUG_VECT;
85 return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_DEBUG_VECT_MIN_LEN, MAVLINK_MSG_ID_DEBUG_VECT_LEN, MAVLINK_MSG_ID_DEBUG_VECT_CRC);
88 /**
89 * @brief Pack a debug_vect message on a channel
90 * @param system_id ID of this system
91 * @param component_id ID of this component (e.g. 200 for IMU)
92 * @param chan The MAVLink channel this message will be sent over
93 * @param msg The MAVLink message to compress the data into
94 * @param name Name
95 * @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.
96 * @param x x
97 * @param y y
98 * @param z z
99 * @return length of the message in bytes (excluding serial stream start sign)
101 static inline uint16_t mavlink_msg_debug_vect_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
102 mavlink_message_t* msg,
103 const char *name,uint64_t time_usec,float x,float y,float z)
105 #if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
106 char buf[MAVLINK_MSG_ID_DEBUG_VECT_LEN];
107 _mav_put_uint64_t(buf, 0, time_usec);
108 _mav_put_float(buf, 8, x);
109 _mav_put_float(buf, 12, y);
110 _mav_put_float(buf, 16, z);
111 _mav_put_char_array(buf, 20, name, 10);
112 memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_DEBUG_VECT_LEN);
113 #else
114 mavlink_debug_vect_t packet;
115 packet.time_usec = time_usec;
116 packet.x = x;
117 packet.y = y;
118 packet.z = z;
119 mav_array_memcpy(packet.name, name, sizeof(char)*10);
120 memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_DEBUG_VECT_LEN);
121 #endif
123 msg->msgid = MAVLINK_MSG_ID_DEBUG_VECT;
124 return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_DEBUG_VECT_MIN_LEN, MAVLINK_MSG_ID_DEBUG_VECT_LEN, MAVLINK_MSG_ID_DEBUG_VECT_CRC);
128 * @brief Encode a debug_vect struct
130 * @param system_id ID of this system
131 * @param component_id ID of this component (e.g. 200 for IMU)
132 * @param msg The MAVLink message to compress the data into
133 * @param debug_vect C-struct to read the message contents from
135 static inline uint16_t mavlink_msg_debug_vect_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_debug_vect_t* debug_vect)
137 return mavlink_msg_debug_vect_pack(system_id, component_id, msg, debug_vect->name, debug_vect->time_usec, debug_vect->x, debug_vect->y, debug_vect->z);
141 * @brief Encode a debug_vect struct on a channel
143 * @param system_id ID of this system
144 * @param component_id ID of this component (e.g. 200 for IMU)
145 * @param chan The MAVLink channel this message will be sent over
146 * @param msg The MAVLink message to compress the data into
147 * @param debug_vect C-struct to read the message contents from
149 static inline uint16_t mavlink_msg_debug_vect_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_debug_vect_t* debug_vect)
151 return mavlink_msg_debug_vect_pack_chan(system_id, component_id, chan, msg, debug_vect->name, debug_vect->time_usec, debug_vect->x, debug_vect->y, debug_vect->z);
155 * @brief Send a debug_vect message
156 * @param chan MAVLink channel to send the message
158 * @param name Name
159 * @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.
160 * @param x x
161 * @param y y
162 * @param z z
164 #ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
166 static inline void mavlink_msg_debug_vect_send(mavlink_channel_t chan, const char *name, uint64_t time_usec, float x, float y, float z)
168 #if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
169 char buf[MAVLINK_MSG_ID_DEBUG_VECT_LEN];
170 _mav_put_uint64_t(buf, 0, time_usec);
171 _mav_put_float(buf, 8, x);
172 _mav_put_float(buf, 12, y);
173 _mav_put_float(buf, 16, z);
174 _mav_put_char_array(buf, 20, name, 10);
175 _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_DEBUG_VECT, buf, MAVLINK_MSG_ID_DEBUG_VECT_MIN_LEN, MAVLINK_MSG_ID_DEBUG_VECT_LEN, MAVLINK_MSG_ID_DEBUG_VECT_CRC);
176 #else
177 mavlink_debug_vect_t packet;
178 packet.time_usec = time_usec;
179 packet.x = x;
180 packet.y = y;
181 packet.z = z;
182 mav_array_memcpy(packet.name, name, sizeof(char)*10);
183 _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_DEBUG_VECT, (const char *)&packet, MAVLINK_MSG_ID_DEBUG_VECT_MIN_LEN, MAVLINK_MSG_ID_DEBUG_VECT_LEN, MAVLINK_MSG_ID_DEBUG_VECT_CRC);
184 #endif
188 * @brief Send a debug_vect message
189 * @param chan MAVLink channel to send the message
190 * @param struct The MAVLink struct to serialize
192 static inline void mavlink_msg_debug_vect_send_struct(mavlink_channel_t chan, const mavlink_debug_vect_t* debug_vect)
194 #if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
195 mavlink_msg_debug_vect_send(chan, debug_vect->name, debug_vect->time_usec, debug_vect->x, debug_vect->y, debug_vect->z);
196 #else
197 _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_DEBUG_VECT, (const char *)debug_vect, MAVLINK_MSG_ID_DEBUG_VECT_MIN_LEN, MAVLINK_MSG_ID_DEBUG_VECT_LEN, MAVLINK_MSG_ID_DEBUG_VECT_CRC);
198 #endif
201 #if MAVLINK_MSG_ID_DEBUG_VECT_LEN <= MAVLINK_MAX_PAYLOAD_LEN
203 This varient of _send() can be used to save stack space by re-using
204 memory from the receive buffer. The caller provides a
205 mavlink_message_t which is the size of a full mavlink message. This
206 is usually the receive buffer for the channel, and allows a reply to an
207 incoming message with minimum stack space usage.
209 static inline void mavlink_msg_debug_vect_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan, const char *name, uint64_t time_usec, float x, float y, float z)
211 #if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
212 char *buf = (char *)msgbuf;
213 _mav_put_uint64_t(buf, 0, time_usec);
214 _mav_put_float(buf, 8, x);
215 _mav_put_float(buf, 12, y);
216 _mav_put_float(buf, 16, z);
217 _mav_put_char_array(buf, 20, name, 10);
218 _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_DEBUG_VECT, buf, MAVLINK_MSG_ID_DEBUG_VECT_MIN_LEN, MAVLINK_MSG_ID_DEBUG_VECT_LEN, MAVLINK_MSG_ID_DEBUG_VECT_CRC);
219 #else
220 mavlink_debug_vect_t *packet = (mavlink_debug_vect_t *)msgbuf;
221 packet->time_usec = time_usec;
222 packet->x = x;
223 packet->y = y;
224 packet->z = z;
225 mav_array_memcpy(packet->name, name, sizeof(char)*10);
226 _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_DEBUG_VECT, (const char *)packet, MAVLINK_MSG_ID_DEBUG_VECT_MIN_LEN, MAVLINK_MSG_ID_DEBUG_VECT_LEN, MAVLINK_MSG_ID_DEBUG_VECT_CRC);
227 #endif
229 #endif
231 #endif
233 // MESSAGE DEBUG_VECT UNPACKING
237 * @brief Get field name from debug_vect message
239 * @return Name
241 static inline uint16_t mavlink_msg_debug_vect_get_name(const mavlink_message_t* msg, char *name)
243 return _MAV_RETURN_char_array(msg, name, 10, 20);
247 * @brief Get field time_usec from debug_vect message
249 * @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.
251 static inline uint64_t mavlink_msg_debug_vect_get_time_usec(const mavlink_message_t* msg)
253 return _MAV_RETURN_uint64_t(msg, 0);
257 * @brief Get field x from debug_vect message
259 * @return x
261 static inline float mavlink_msg_debug_vect_get_x(const mavlink_message_t* msg)
263 return _MAV_RETURN_float(msg, 8);
267 * @brief Get field y from debug_vect message
269 * @return y
271 static inline float mavlink_msg_debug_vect_get_y(const mavlink_message_t* msg)
273 return _MAV_RETURN_float(msg, 12);
277 * @brief Get field z from debug_vect message
279 * @return z
281 static inline float mavlink_msg_debug_vect_get_z(const mavlink_message_t* msg)
283 return _MAV_RETURN_float(msg, 16);
287 * @brief Decode a debug_vect message into a struct
289 * @param msg The message to decode
290 * @param debug_vect C-struct to decode the message contents into
292 static inline void mavlink_msg_debug_vect_decode(const mavlink_message_t* msg, mavlink_debug_vect_t* debug_vect)
294 #if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
295 debug_vect->time_usec = mavlink_msg_debug_vect_get_time_usec(msg);
296 debug_vect->x = mavlink_msg_debug_vect_get_x(msg);
297 debug_vect->y = mavlink_msg_debug_vect_get_y(msg);
298 debug_vect->z = mavlink_msg_debug_vect_get_z(msg);
299 mavlink_msg_debug_vect_get_name(msg, debug_vect->name);
300 #else
301 uint8_t len = msg->len < MAVLINK_MSG_ID_DEBUG_VECT_LEN? msg->len : MAVLINK_MSG_ID_DEBUG_VECT_LEN;
302 memset(debug_vect, 0, MAVLINK_MSG_ID_DEBUG_VECT_LEN);
303 memcpy(debug_vect, _MAV_PAYLOAD(msg), len);
304 #endif