mavlink_msg_debug_vect.h 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305
  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 on a channel
  80. * @param system_id ID of this system
  81. * @param component_id ID of this component (e.g. 200 for IMU)
  82. * @param chan The MAVLink channel this message will be sent over
  83. * @param msg The MAVLink message to compress the data into
  84. * @param name Name
  85. * @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.
  86. * @param x x
  87. * @param y y
  88. * @param z z
  89. * @return length of the message in bytes (excluding serial stream start sign)
  90. */
  91. static inline uint16_t mavlink_msg_debug_vect_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
  92. 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. 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);
  114. }
  115. /**
  116. * @brief Encode a debug_vect struct
  117. *
  118. * @param system_id ID of this system
  119. * @param component_id ID of this component (e.g. 200 for IMU)
  120. * @param msg The MAVLink message to compress the data into
  121. * @param debug_vect C-struct to read the message contents from
  122. */
  123. 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)
  124. {
  125. 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);
  126. }
  127. /**
  128. * @brief Encode a debug_vect struct on a channel
  129. *
  130. * @param system_id ID of this system
  131. * @param component_id ID of this component (e.g. 200 for IMU)
  132. * @param chan The MAVLink channel this message will be sent over
  133. * @param msg The MAVLink message to compress the data into
  134. * @param debug_vect C-struct to read the message contents from
  135. */
  136. 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)
  137. {
  138. 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);
  139. }
  140. /**
  141. * @brief Send a debug_vect message
  142. * @param chan MAVLink channel to send the message
  143. *
  144. * @param name Name
  145. * @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.
  146. * @param x x
  147. * @param y y
  148. * @param z z
  149. */
  150. #ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
  151. 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)
  152. {
  153. #if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
  154. char buf[MAVLINK_MSG_ID_DEBUG_VECT_LEN];
  155. _mav_put_uint64_t(buf, 0, time_usec);
  156. _mav_put_float(buf, 8, x);
  157. _mav_put_float(buf, 12, y);
  158. _mav_put_float(buf, 16, z);
  159. _mav_put_char_array(buf, 20, name, 10);
  160. _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);
  161. #else
  162. mavlink_debug_vect_t packet;
  163. packet.time_usec = time_usec;
  164. packet.x = x;
  165. packet.y = y;
  166. packet.z = z;
  167. mav_array_memcpy(packet.name, name, sizeof(char)*10);
  168. _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);
  169. #endif
  170. }
  171. /**
  172. * @brief Send a debug_vect message
  173. * @param chan MAVLink channel to send the message
  174. * @param struct The MAVLink struct to serialize
  175. */
  176. static inline void mavlink_msg_debug_vect_send_struct(mavlink_channel_t chan, const mavlink_debug_vect_t* debug_vect)
  177. {
  178. #if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
  179. mavlink_msg_debug_vect_send(chan, debug_vect->name, debug_vect->time_usec, debug_vect->x, debug_vect->y, debug_vect->z);
  180. #else
  181. _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);
  182. #endif
  183. }
  184. #if MAVLINK_MSG_ID_DEBUG_VECT_LEN <= MAVLINK_MAX_PAYLOAD_LEN
  185. /*
  186. This variant of _send() can be used to save stack space by re-using
  187. memory from the receive buffer. The caller provides a
  188. mavlink_message_t which is the size of a full mavlink message. This
  189. is usually the receive buffer for the channel, and allows a reply to an
  190. incoming message with minimum stack space usage.
  191. */
  192. 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)
  193. {
  194. #if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
  195. char *buf = (char *)msgbuf;
  196. _mav_put_uint64_t(buf, 0, time_usec);
  197. _mav_put_float(buf, 8, x);
  198. _mav_put_float(buf, 12, y);
  199. _mav_put_float(buf, 16, z);
  200. _mav_put_char_array(buf, 20, name, 10);
  201. _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);
  202. #else
  203. mavlink_debug_vect_t *packet = (mavlink_debug_vect_t *)msgbuf;
  204. packet->time_usec = time_usec;
  205. packet->x = x;
  206. packet->y = y;
  207. packet->z = z;
  208. mav_array_memcpy(packet->name, name, sizeof(char)*10);
  209. _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);
  210. #endif
  211. }
  212. #endif
  213. #endif
  214. // MESSAGE DEBUG_VECT UNPACKING
  215. /**
  216. * @brief Get field name from debug_vect message
  217. *
  218. * @return Name
  219. */
  220. static inline uint16_t mavlink_msg_debug_vect_get_name(const mavlink_message_t* msg, char *name)
  221. {
  222. return _MAV_RETURN_char_array(msg, name, 10, 20);
  223. }
  224. /**
  225. * @brief Get field time_usec from debug_vect message
  226. *
  227. * @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.
  228. */
  229. static inline uint64_t mavlink_msg_debug_vect_get_time_usec(const mavlink_message_t* msg)
  230. {
  231. return _MAV_RETURN_uint64_t(msg, 0);
  232. }
  233. /**
  234. * @brief Get field x from debug_vect message
  235. *
  236. * @return x
  237. */
  238. static inline float mavlink_msg_debug_vect_get_x(const mavlink_message_t* msg)
  239. {
  240. return _MAV_RETURN_float(msg, 8);
  241. }
  242. /**
  243. * @brief Get field y from debug_vect message
  244. *
  245. * @return y
  246. */
  247. static inline float mavlink_msg_debug_vect_get_y(const mavlink_message_t* msg)
  248. {
  249. return _MAV_RETURN_float(msg, 12);
  250. }
  251. /**
  252. * @brief Get field z from debug_vect message
  253. *
  254. * @return z
  255. */
  256. static inline float mavlink_msg_debug_vect_get_z(const mavlink_message_t* msg)
  257. {
  258. return _MAV_RETURN_float(msg, 16);
  259. }
  260. /**
  261. * @brief Decode a debug_vect message into a struct
  262. *
  263. * @param msg The message to decode
  264. * @param debug_vect C-struct to decode the message contents into
  265. */
  266. static inline void mavlink_msg_debug_vect_decode(const mavlink_message_t* msg, mavlink_debug_vect_t* debug_vect)
  267. {
  268. #if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
  269. debug_vect->time_usec = mavlink_msg_debug_vect_get_time_usec(msg);
  270. debug_vect->x = mavlink_msg_debug_vect_get_x(msg);
  271. debug_vect->y = mavlink_msg_debug_vect_get_y(msg);
  272. debug_vect->z = mavlink_msg_debug_vect_get_z(msg);
  273. mavlink_msg_debug_vect_get_name(msg, debug_vect->name);
  274. #else
  275. uint8_t len = msg->len < MAVLINK_MSG_ID_DEBUG_VECT_LEN? msg->len : MAVLINK_MSG_ID_DEBUG_VECT_LEN;
  276. memset(debug_vect, 0, MAVLINK_MSG_ID_DEBUG_VECT_LEN);
  277. memcpy(debug_vect, _MAV_PAYLOAD(msg), len);
  278. #endif
  279. }