mavlink_msg_debug_vect.h 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362
  1. #pragma once
  2. // MESSAGE DEBUG_VECT PACKING
  3. #define MAVLINK_MSG_ID_DEBUG_VECT 250
  4. typedef struct __mavlink_debug_vect_t {
  5. 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.*/
  6. float x; /*< x*/
  7. float y; /*< y*/
  8. float z; /*< z*/
  9. char name[10]; /*< Name*/
  10. } mavlink_debug_vect_t;
  11. #define MAVLINK_MSG_ID_DEBUG_VECT_LEN 30
  12. #define MAVLINK_MSG_ID_DEBUG_VECT_MIN_LEN 30
  13. #define MAVLINK_MSG_ID_250_LEN 30
  14. #define MAVLINK_MSG_ID_250_MIN_LEN 30
  15. #define MAVLINK_MSG_ID_DEBUG_VECT_CRC 49
  16. #define MAVLINK_MSG_ID_250_CRC 49
  17. #define MAVLINK_MSG_DEBUG_VECT_FIELD_NAME_LEN 10
  18. #if MAVLINK_COMMAND_24BIT
  19. #define MAVLINK_MESSAGE_INFO_DEBUG_VECT { \
  20. 250, \
  21. "DEBUG_VECT", \
  22. 5, \
  23. { { "name", NULL, MAVLINK_TYPE_CHAR, 10, 20, offsetof(mavlink_debug_vect_t, name) }, \
  24. { "time_usec", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_debug_vect_t, time_usec) }, \
  25. { "x", NULL, MAVLINK_TYPE_FLOAT, 0, 8, offsetof(mavlink_debug_vect_t, x) }, \
  26. { "y", NULL, MAVLINK_TYPE_FLOAT, 0, 12, offsetof(mavlink_debug_vect_t, y) }, \
  27. { "z", NULL, MAVLINK_TYPE_FLOAT, 0, 16, offsetof(mavlink_debug_vect_t, z) }, \
  28. } \
  29. }
  30. #else
  31. #define MAVLINK_MESSAGE_INFO_DEBUG_VECT { \
  32. "DEBUG_VECT", \
  33. 5, \
  34. { { "name", NULL, MAVLINK_TYPE_CHAR, 10, 20, offsetof(mavlink_debug_vect_t, name) }, \
  35. { "time_usec", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_debug_vect_t, time_usec) }, \
  36. { "x", NULL, MAVLINK_TYPE_FLOAT, 0, 8, offsetof(mavlink_debug_vect_t, x) }, \
  37. { "y", NULL, MAVLINK_TYPE_FLOAT, 0, 12, offsetof(mavlink_debug_vect_t, y) }, \
  38. { "z", NULL, MAVLINK_TYPE_FLOAT, 0, 16, offsetof(mavlink_debug_vect_t, z) }, \
  39. } \
  40. }
  41. #endif
  42. /**
  43. * @brief Pack a debug_vect message
  44. * @param system_id ID of this system
  45. * @param component_id ID of this component (e.g. 200 for IMU)
  46. * @param msg The MAVLink message to compress the data into
  47. *
  48. * @param name Name
  49. * @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.
  50. * @param x x
  51. * @param y y
  52. * @param z z
  53. * @return length of the message in bytes (excluding serial stream start sign)
  54. */
  55. static inline uint16_t mavlink_msg_debug_vect_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
  56. const char *name, uint64_t time_usec, float x, float y, float z)
  57. {
  58. #if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
  59. char buf[MAVLINK_MSG_ID_DEBUG_VECT_LEN];
  60. _mav_put_uint64_t(buf, 0, time_usec);
  61. _mav_put_float(buf, 8, x);
  62. _mav_put_float(buf, 12, y);
  63. _mav_put_float(buf, 16, z);
  64. _mav_put_char_array(buf, 20, name, 10);
  65. memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_DEBUG_VECT_LEN);
  66. #else
  67. mavlink_debug_vect_t packet;
  68. packet.time_usec = time_usec;
  69. packet.x = x;
  70. packet.y = y;
  71. packet.z = z;
  72. mav_array_memcpy(packet.name, name, sizeof(char)*10);
  73. memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_DEBUG_VECT_LEN);
  74. #endif
  75. msg->msgid = MAVLINK_MSG_ID_DEBUG_VECT;
  76. 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);
  77. }
  78. /**
  79. * @brief Pack a debug_vect message
  80. * @param system_id ID of this system
  81. * @param component_id ID of this component (e.g. 200 for IMU)
  82. * @param status MAVLink status structure
  83. * @param msg The MAVLink message to compress the data into
  84. *
  85. * @param name Name
  86. * @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.
  87. * @param x x
  88. * @param y y
  89. * @param z z
  90. * @return length of the message in bytes (excluding serial stream start sign)
  91. */
  92. static inline uint16_t mavlink_msg_debug_vect_pack_status(uint8_t system_id, uint8_t component_id, mavlink_status_t *_status, mavlink_message_t* msg,
  93. const char *name, uint64_t time_usec, float x, float y, float z)
  94. {
  95. #if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
  96. char buf[MAVLINK_MSG_ID_DEBUG_VECT_LEN];
  97. _mav_put_uint64_t(buf, 0, time_usec);
  98. _mav_put_float(buf, 8, x);
  99. _mav_put_float(buf, 12, y);
  100. _mav_put_float(buf, 16, z);
  101. _mav_put_char_array(buf, 20, name, 10);
  102. memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_DEBUG_VECT_LEN);
  103. #else
  104. mavlink_debug_vect_t packet;
  105. packet.time_usec = time_usec;
  106. packet.x = x;
  107. packet.y = y;
  108. packet.z = z;
  109. mav_array_memcpy(packet.name, name, sizeof(char)*10);
  110. memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_DEBUG_VECT_LEN);
  111. #endif
  112. msg->msgid = MAVLINK_MSG_ID_DEBUG_VECT;
  113. #if MAVLINK_CRC_EXTRA
  114. return mavlink_finalize_message_buffer(msg, system_id, component_id, _status, MAVLINK_MSG_ID_DEBUG_VECT_MIN_LEN, MAVLINK_MSG_ID_DEBUG_VECT_LEN, MAVLINK_MSG_ID_DEBUG_VECT_CRC);
  115. #else
  116. return mavlink_finalize_message_buffer(msg, system_id, component_id, _status, MAVLINK_MSG_ID_DEBUG_VECT_MIN_LEN, MAVLINK_MSG_ID_DEBUG_VECT_LEN);
  117. #endif
  118. }
  119. /**
  120. * @brief Pack a debug_vect message on a channel
  121. * @param system_id ID of this system
  122. * @param component_id ID of this component (e.g. 200 for IMU)
  123. * @param chan The MAVLink channel this message will be sent over
  124. * @param msg The MAVLink message to compress the data into
  125. * @param name Name
  126. * @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.
  127. * @param x x
  128. * @param y y
  129. * @param z z
  130. * @return length of the message in bytes (excluding serial stream start sign)
  131. */
  132. static inline uint16_t mavlink_msg_debug_vect_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
  133. mavlink_message_t* msg,
  134. const char *name,uint64_t time_usec,float x,float y,float z)
  135. {
  136. #if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
  137. char buf[MAVLINK_MSG_ID_DEBUG_VECT_LEN];
  138. _mav_put_uint64_t(buf, 0, time_usec);
  139. _mav_put_float(buf, 8, x);
  140. _mav_put_float(buf, 12, y);
  141. _mav_put_float(buf, 16, z);
  142. _mav_put_char_array(buf, 20, name, 10);
  143. memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_DEBUG_VECT_LEN);
  144. #else
  145. mavlink_debug_vect_t packet;
  146. packet.time_usec = time_usec;
  147. packet.x = x;
  148. packet.y = y;
  149. packet.z = z;
  150. mav_array_memcpy(packet.name, name, sizeof(char)*10);
  151. memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_DEBUG_VECT_LEN);
  152. #endif
  153. msg->msgid = MAVLINK_MSG_ID_DEBUG_VECT;
  154. 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);
  155. }
  156. /**
  157. * @brief Encode a debug_vect struct
  158. *
  159. * @param system_id ID of this system
  160. * @param component_id ID of this component (e.g. 200 for IMU)
  161. * @param msg The MAVLink message to compress the data into
  162. * @param debug_vect C-struct to read the message contents from
  163. */
  164. 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)
  165. {
  166. 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);
  167. }
  168. /**
  169. * @brief Encode a debug_vect struct on a channel
  170. *
  171. * @param system_id ID of this system
  172. * @param component_id ID of this component (e.g. 200 for IMU)
  173. * @param chan The MAVLink channel this message will be sent over
  174. * @param msg The MAVLink message to compress the data into
  175. * @param debug_vect C-struct to read the message contents from
  176. */
  177. 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)
  178. {
  179. 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);
  180. }
  181. /**
  182. * @brief Encode a debug_vect struct with provided status structure
  183. *
  184. * @param system_id ID of this system
  185. * @param component_id ID of this component (e.g. 200 for IMU)
  186. * @param status MAVLink status structure
  187. * @param msg The MAVLink message to compress the data into
  188. * @param debug_vect C-struct to read the message contents from
  189. */
  190. static inline uint16_t mavlink_msg_debug_vect_encode_status(uint8_t system_id, uint8_t component_id, mavlink_status_t* _status, mavlink_message_t* msg, const mavlink_debug_vect_t* debug_vect)
  191. {
  192. return mavlink_msg_debug_vect_pack_status(system_id, component_id, _status, msg, debug_vect->name, debug_vect->time_usec, debug_vect->x, debug_vect->y, debug_vect->z);
  193. }
  194. /**
  195. * @brief Send a debug_vect message
  196. * @param chan MAVLink channel to send the message
  197. *
  198. * @param name Name
  199. * @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.
  200. * @param x x
  201. * @param y y
  202. * @param z z
  203. */
  204. #ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
  205. 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)
  206. {
  207. #if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
  208. char buf[MAVLINK_MSG_ID_DEBUG_VECT_LEN];
  209. _mav_put_uint64_t(buf, 0, time_usec);
  210. _mav_put_float(buf, 8, x);
  211. _mav_put_float(buf, 12, y);
  212. _mav_put_float(buf, 16, z);
  213. _mav_put_char_array(buf, 20, name, 10);
  214. _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);
  215. #else
  216. mavlink_debug_vect_t packet;
  217. packet.time_usec = time_usec;
  218. packet.x = x;
  219. packet.y = y;
  220. packet.z = z;
  221. mav_array_memcpy(packet.name, name, sizeof(char)*10);
  222. _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);
  223. #endif
  224. }
  225. /**
  226. * @brief Send a debug_vect message
  227. * @param chan MAVLink channel to send the message
  228. * @param struct The MAVLink struct to serialize
  229. */
  230. static inline void mavlink_msg_debug_vect_send_struct(mavlink_channel_t chan, const mavlink_debug_vect_t* debug_vect)
  231. {
  232. #if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
  233. mavlink_msg_debug_vect_send(chan, debug_vect->name, debug_vect->time_usec, debug_vect->x, debug_vect->y, debug_vect->z);
  234. #else
  235. _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);
  236. #endif
  237. }
  238. #if MAVLINK_MSG_ID_DEBUG_VECT_LEN <= MAVLINK_MAX_PAYLOAD_LEN
  239. /*
  240. This variant of _send() can be used to save stack space by re-using
  241. memory from the receive buffer. The caller provides a
  242. mavlink_message_t which is the size of a full mavlink message. This
  243. is usually the receive buffer for the channel, and allows a reply to an
  244. incoming message with minimum stack space usage.
  245. */
  246. 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)
  247. {
  248. #if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
  249. char *buf = (char *)msgbuf;
  250. _mav_put_uint64_t(buf, 0, time_usec);
  251. _mav_put_float(buf, 8, x);
  252. _mav_put_float(buf, 12, y);
  253. _mav_put_float(buf, 16, z);
  254. _mav_put_char_array(buf, 20, name, 10);
  255. _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);
  256. #else
  257. mavlink_debug_vect_t *packet = (mavlink_debug_vect_t *)msgbuf;
  258. packet->time_usec = time_usec;
  259. packet->x = x;
  260. packet->y = y;
  261. packet->z = z;
  262. mav_array_memcpy(packet->name, name, sizeof(char)*10);
  263. _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);
  264. #endif
  265. }
  266. #endif
  267. #endif
  268. // MESSAGE DEBUG_VECT UNPACKING
  269. /**
  270. * @brief Get field name from debug_vect message
  271. *
  272. * @return Name
  273. */
  274. static inline uint16_t mavlink_msg_debug_vect_get_name(const mavlink_message_t* msg, char *name)
  275. {
  276. return _MAV_RETURN_char_array(msg, name, 10, 20);
  277. }
  278. /**
  279. * @brief Get field time_usec from debug_vect message
  280. *
  281. * @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.
  282. */
  283. static inline uint64_t mavlink_msg_debug_vect_get_time_usec(const mavlink_message_t* msg)
  284. {
  285. return _MAV_RETURN_uint64_t(msg, 0);
  286. }
  287. /**
  288. * @brief Get field x from debug_vect message
  289. *
  290. * @return x
  291. */
  292. static inline float mavlink_msg_debug_vect_get_x(const mavlink_message_t* msg)
  293. {
  294. return _MAV_RETURN_float(msg, 8);
  295. }
  296. /**
  297. * @brief Get field y from debug_vect message
  298. *
  299. * @return y
  300. */
  301. static inline float mavlink_msg_debug_vect_get_y(const mavlink_message_t* msg)
  302. {
  303. return _MAV_RETURN_float(msg, 12);
  304. }
  305. /**
  306. * @brief Get field z from debug_vect message
  307. *
  308. * @return z
  309. */
  310. static inline float mavlink_msg_debug_vect_get_z(const mavlink_message_t* msg)
  311. {
  312. return _MAV_RETURN_float(msg, 16);
  313. }
  314. /**
  315. * @brief Decode a debug_vect message into a struct
  316. *
  317. * @param msg The message to decode
  318. * @param debug_vect C-struct to decode the message contents into
  319. */
  320. static inline void mavlink_msg_debug_vect_decode(const mavlink_message_t* msg, mavlink_debug_vect_t* debug_vect)
  321. {
  322. #if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
  323. debug_vect->time_usec = mavlink_msg_debug_vect_get_time_usec(msg);
  324. debug_vect->x = mavlink_msg_debug_vect_get_x(msg);
  325. debug_vect->y = mavlink_msg_debug_vect_get_y(msg);
  326. debug_vect->z = mavlink_msg_debug_vect_get_z(msg);
  327. mavlink_msg_debug_vect_get_name(msg, debug_vect->name);
  328. #else
  329. uint8_t len = msg->len < MAVLINK_MSG_ID_DEBUG_VECT_LEN? msg->len : MAVLINK_MSG_ID_DEBUG_VECT_LEN;
  330. memset(debug_vect, 0, MAVLINK_MSG_ID_DEBUG_VECT_LEN);
  331. memcpy(debug_vect, _MAV_PAYLOAD(msg), len);
  332. #endif
  333. }