mavlink_msg_terrain_request.h 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344
  1. #pragma once
  2. // MESSAGE TERRAIN_REQUEST PACKING
  3. #define MAVLINK_MSG_ID_TERRAIN_REQUEST 133
  4. typedef struct __mavlink_terrain_request_t {
  5. uint64_t mask; /*< Bitmask of requested 4x4 grids (row major 8x7 array of grids, 56 bits)*/
  6. int32_t lat; /*< [degE7] Latitude of SW corner of first grid*/
  7. int32_t lon; /*< [degE7] Longitude of SW corner of first grid*/
  8. uint16_t grid_spacing; /*< [m] Grid spacing*/
  9. } mavlink_terrain_request_t;
  10. #define MAVLINK_MSG_ID_TERRAIN_REQUEST_LEN 18
  11. #define MAVLINK_MSG_ID_TERRAIN_REQUEST_MIN_LEN 18
  12. #define MAVLINK_MSG_ID_133_LEN 18
  13. #define MAVLINK_MSG_ID_133_MIN_LEN 18
  14. #define MAVLINK_MSG_ID_TERRAIN_REQUEST_CRC 6
  15. #define MAVLINK_MSG_ID_133_CRC 6
  16. #if MAVLINK_COMMAND_24BIT
  17. #define MAVLINK_MESSAGE_INFO_TERRAIN_REQUEST { \
  18. 133, \
  19. "TERRAIN_REQUEST", \
  20. 4, \
  21. { { "lat", NULL, MAVLINK_TYPE_INT32_T, 0, 8, offsetof(mavlink_terrain_request_t, lat) }, \
  22. { "lon", NULL, MAVLINK_TYPE_INT32_T, 0, 12, offsetof(mavlink_terrain_request_t, lon) }, \
  23. { "grid_spacing", NULL, MAVLINK_TYPE_UINT16_T, 0, 16, offsetof(mavlink_terrain_request_t, grid_spacing) }, \
  24. { "mask", "0x%07x", MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_terrain_request_t, mask) }, \
  25. } \
  26. }
  27. #else
  28. #define MAVLINK_MESSAGE_INFO_TERRAIN_REQUEST { \
  29. "TERRAIN_REQUEST", \
  30. 4, \
  31. { { "lat", NULL, MAVLINK_TYPE_INT32_T, 0, 8, offsetof(mavlink_terrain_request_t, lat) }, \
  32. { "lon", NULL, MAVLINK_TYPE_INT32_T, 0, 12, offsetof(mavlink_terrain_request_t, lon) }, \
  33. { "grid_spacing", NULL, MAVLINK_TYPE_UINT16_T, 0, 16, offsetof(mavlink_terrain_request_t, grid_spacing) }, \
  34. { "mask", "0x%07x", MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_terrain_request_t, mask) }, \
  35. } \
  36. }
  37. #endif
  38. /**
  39. * @brief Pack a terrain_request message
  40. * @param system_id ID of this system
  41. * @param component_id ID of this component (e.g. 200 for IMU)
  42. * @param msg The MAVLink message to compress the data into
  43. *
  44. * @param lat [degE7] Latitude of SW corner of first grid
  45. * @param lon [degE7] Longitude of SW corner of first grid
  46. * @param grid_spacing [m] Grid spacing
  47. * @param mask Bitmask of requested 4x4 grids (row major 8x7 array of grids, 56 bits)
  48. * @return length of the message in bytes (excluding serial stream start sign)
  49. */
  50. static inline uint16_t mavlink_msg_terrain_request_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
  51. int32_t lat, int32_t lon, uint16_t grid_spacing, uint64_t mask)
  52. {
  53. #if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
  54. char buf[MAVLINK_MSG_ID_TERRAIN_REQUEST_LEN];
  55. _mav_put_uint64_t(buf, 0, mask);
  56. _mav_put_int32_t(buf, 8, lat);
  57. _mav_put_int32_t(buf, 12, lon);
  58. _mav_put_uint16_t(buf, 16, grid_spacing);
  59. memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_TERRAIN_REQUEST_LEN);
  60. #else
  61. mavlink_terrain_request_t packet;
  62. packet.mask = mask;
  63. packet.lat = lat;
  64. packet.lon = lon;
  65. packet.grid_spacing = grid_spacing;
  66. memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_TERRAIN_REQUEST_LEN);
  67. #endif
  68. msg->msgid = MAVLINK_MSG_ID_TERRAIN_REQUEST;
  69. return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_TERRAIN_REQUEST_MIN_LEN, MAVLINK_MSG_ID_TERRAIN_REQUEST_LEN, MAVLINK_MSG_ID_TERRAIN_REQUEST_CRC);
  70. }
  71. /**
  72. * @brief Pack a terrain_request message
  73. * @param system_id ID of this system
  74. * @param component_id ID of this component (e.g. 200 for IMU)
  75. * @param status MAVLink status structure
  76. * @param msg The MAVLink message to compress the data into
  77. *
  78. * @param lat [degE7] Latitude of SW corner of first grid
  79. * @param lon [degE7] Longitude of SW corner of first grid
  80. * @param grid_spacing [m] Grid spacing
  81. * @param mask Bitmask of requested 4x4 grids (row major 8x7 array of grids, 56 bits)
  82. * @return length of the message in bytes (excluding serial stream start sign)
  83. */
  84. static inline uint16_t mavlink_msg_terrain_request_pack_status(uint8_t system_id, uint8_t component_id, mavlink_status_t *_status, mavlink_message_t* msg,
  85. int32_t lat, int32_t lon, uint16_t grid_spacing, uint64_t mask)
  86. {
  87. #if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
  88. char buf[MAVLINK_MSG_ID_TERRAIN_REQUEST_LEN];
  89. _mav_put_uint64_t(buf, 0, mask);
  90. _mav_put_int32_t(buf, 8, lat);
  91. _mav_put_int32_t(buf, 12, lon);
  92. _mav_put_uint16_t(buf, 16, grid_spacing);
  93. memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_TERRAIN_REQUEST_LEN);
  94. #else
  95. mavlink_terrain_request_t packet;
  96. packet.mask = mask;
  97. packet.lat = lat;
  98. packet.lon = lon;
  99. packet.grid_spacing = grid_spacing;
  100. memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_TERRAIN_REQUEST_LEN);
  101. #endif
  102. msg->msgid = MAVLINK_MSG_ID_TERRAIN_REQUEST;
  103. #if MAVLINK_CRC_EXTRA
  104. return mavlink_finalize_message_buffer(msg, system_id, component_id, _status, MAVLINK_MSG_ID_TERRAIN_REQUEST_MIN_LEN, MAVLINK_MSG_ID_TERRAIN_REQUEST_LEN, MAVLINK_MSG_ID_TERRAIN_REQUEST_CRC);
  105. #else
  106. return mavlink_finalize_message_buffer(msg, system_id, component_id, _status, MAVLINK_MSG_ID_TERRAIN_REQUEST_MIN_LEN, MAVLINK_MSG_ID_TERRAIN_REQUEST_LEN);
  107. #endif
  108. }
  109. /**
  110. * @brief Pack a terrain_request message on a channel
  111. * @param system_id ID of this system
  112. * @param component_id ID of this component (e.g. 200 for IMU)
  113. * @param chan The MAVLink channel this message will be sent over
  114. * @param msg The MAVLink message to compress the data into
  115. * @param lat [degE7] Latitude of SW corner of first grid
  116. * @param lon [degE7] Longitude of SW corner of first grid
  117. * @param grid_spacing [m] Grid spacing
  118. * @param mask Bitmask of requested 4x4 grids (row major 8x7 array of grids, 56 bits)
  119. * @return length of the message in bytes (excluding serial stream start sign)
  120. */
  121. static inline uint16_t mavlink_msg_terrain_request_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
  122. mavlink_message_t* msg,
  123. int32_t lat,int32_t lon,uint16_t grid_spacing,uint64_t mask)
  124. {
  125. #if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
  126. char buf[MAVLINK_MSG_ID_TERRAIN_REQUEST_LEN];
  127. _mav_put_uint64_t(buf, 0, mask);
  128. _mav_put_int32_t(buf, 8, lat);
  129. _mav_put_int32_t(buf, 12, lon);
  130. _mav_put_uint16_t(buf, 16, grid_spacing);
  131. memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_TERRAIN_REQUEST_LEN);
  132. #else
  133. mavlink_terrain_request_t packet;
  134. packet.mask = mask;
  135. packet.lat = lat;
  136. packet.lon = lon;
  137. packet.grid_spacing = grid_spacing;
  138. memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_TERRAIN_REQUEST_LEN);
  139. #endif
  140. msg->msgid = MAVLINK_MSG_ID_TERRAIN_REQUEST;
  141. return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_TERRAIN_REQUEST_MIN_LEN, MAVLINK_MSG_ID_TERRAIN_REQUEST_LEN, MAVLINK_MSG_ID_TERRAIN_REQUEST_CRC);
  142. }
  143. /**
  144. * @brief Encode a terrain_request struct
  145. *
  146. * @param system_id ID of this system
  147. * @param component_id ID of this component (e.g. 200 for IMU)
  148. * @param msg The MAVLink message to compress the data into
  149. * @param terrain_request C-struct to read the message contents from
  150. */
  151. static inline uint16_t mavlink_msg_terrain_request_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_terrain_request_t* terrain_request)
  152. {
  153. return mavlink_msg_terrain_request_pack(system_id, component_id, msg, terrain_request->lat, terrain_request->lon, terrain_request->grid_spacing, terrain_request->mask);
  154. }
  155. /**
  156. * @brief Encode a terrain_request struct on a channel
  157. *
  158. * @param system_id ID of this system
  159. * @param component_id ID of this component (e.g. 200 for IMU)
  160. * @param chan The MAVLink channel this message will be sent over
  161. * @param msg The MAVLink message to compress the data into
  162. * @param terrain_request C-struct to read the message contents from
  163. */
  164. static inline uint16_t mavlink_msg_terrain_request_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_terrain_request_t* terrain_request)
  165. {
  166. return mavlink_msg_terrain_request_pack_chan(system_id, component_id, chan, msg, terrain_request->lat, terrain_request->lon, terrain_request->grid_spacing, terrain_request->mask);
  167. }
  168. /**
  169. * @brief Encode a terrain_request struct with provided status structure
  170. *
  171. * @param system_id ID of this system
  172. * @param component_id ID of this component (e.g. 200 for IMU)
  173. * @param status MAVLink status structure
  174. * @param msg The MAVLink message to compress the data into
  175. * @param terrain_request C-struct to read the message contents from
  176. */
  177. static inline uint16_t mavlink_msg_terrain_request_encode_status(uint8_t system_id, uint8_t component_id, mavlink_status_t* _status, mavlink_message_t* msg, const mavlink_terrain_request_t* terrain_request)
  178. {
  179. return mavlink_msg_terrain_request_pack_status(system_id, component_id, _status, msg, terrain_request->lat, terrain_request->lon, terrain_request->grid_spacing, terrain_request->mask);
  180. }
  181. /**
  182. * @brief Send a terrain_request message
  183. * @param chan MAVLink channel to send the message
  184. *
  185. * @param lat [degE7] Latitude of SW corner of first grid
  186. * @param lon [degE7] Longitude of SW corner of first grid
  187. * @param grid_spacing [m] Grid spacing
  188. * @param mask Bitmask of requested 4x4 grids (row major 8x7 array of grids, 56 bits)
  189. */
  190. #ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
  191. static inline void mavlink_msg_terrain_request_send(mavlink_channel_t chan, int32_t lat, int32_t lon, uint16_t grid_spacing, uint64_t mask)
  192. {
  193. #if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
  194. char buf[MAVLINK_MSG_ID_TERRAIN_REQUEST_LEN];
  195. _mav_put_uint64_t(buf, 0, mask);
  196. _mav_put_int32_t(buf, 8, lat);
  197. _mav_put_int32_t(buf, 12, lon);
  198. _mav_put_uint16_t(buf, 16, grid_spacing);
  199. _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_TERRAIN_REQUEST, buf, MAVLINK_MSG_ID_TERRAIN_REQUEST_MIN_LEN, MAVLINK_MSG_ID_TERRAIN_REQUEST_LEN, MAVLINK_MSG_ID_TERRAIN_REQUEST_CRC);
  200. #else
  201. mavlink_terrain_request_t packet;
  202. packet.mask = mask;
  203. packet.lat = lat;
  204. packet.lon = lon;
  205. packet.grid_spacing = grid_spacing;
  206. _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_TERRAIN_REQUEST, (const char *)&packet, MAVLINK_MSG_ID_TERRAIN_REQUEST_MIN_LEN, MAVLINK_MSG_ID_TERRAIN_REQUEST_LEN, MAVLINK_MSG_ID_TERRAIN_REQUEST_CRC);
  207. #endif
  208. }
  209. /**
  210. * @brief Send a terrain_request message
  211. * @param chan MAVLink channel to send the message
  212. * @param struct The MAVLink struct to serialize
  213. */
  214. static inline void mavlink_msg_terrain_request_send_struct(mavlink_channel_t chan, const mavlink_terrain_request_t* terrain_request)
  215. {
  216. #if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
  217. mavlink_msg_terrain_request_send(chan, terrain_request->lat, terrain_request->lon, terrain_request->grid_spacing, terrain_request->mask);
  218. #else
  219. _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_TERRAIN_REQUEST, (const char *)terrain_request, MAVLINK_MSG_ID_TERRAIN_REQUEST_MIN_LEN, MAVLINK_MSG_ID_TERRAIN_REQUEST_LEN, MAVLINK_MSG_ID_TERRAIN_REQUEST_CRC);
  220. #endif
  221. }
  222. #if MAVLINK_MSG_ID_TERRAIN_REQUEST_LEN <= MAVLINK_MAX_PAYLOAD_LEN
  223. /*
  224. This variant of _send() can be used to save stack space by re-using
  225. memory from the receive buffer. The caller provides a
  226. mavlink_message_t which is the size of a full mavlink message. This
  227. is usually the receive buffer for the channel, and allows a reply to an
  228. incoming message with minimum stack space usage.
  229. */
  230. static inline void mavlink_msg_terrain_request_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan, int32_t lat, int32_t lon, uint16_t grid_spacing, uint64_t mask)
  231. {
  232. #if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
  233. char *buf = (char *)msgbuf;
  234. _mav_put_uint64_t(buf, 0, mask);
  235. _mav_put_int32_t(buf, 8, lat);
  236. _mav_put_int32_t(buf, 12, lon);
  237. _mav_put_uint16_t(buf, 16, grid_spacing);
  238. _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_TERRAIN_REQUEST, buf, MAVLINK_MSG_ID_TERRAIN_REQUEST_MIN_LEN, MAVLINK_MSG_ID_TERRAIN_REQUEST_LEN, MAVLINK_MSG_ID_TERRAIN_REQUEST_CRC);
  239. #else
  240. mavlink_terrain_request_t *packet = (mavlink_terrain_request_t *)msgbuf;
  241. packet->mask = mask;
  242. packet->lat = lat;
  243. packet->lon = lon;
  244. packet->grid_spacing = grid_spacing;
  245. _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_TERRAIN_REQUEST, (const char *)packet, MAVLINK_MSG_ID_TERRAIN_REQUEST_MIN_LEN, MAVLINK_MSG_ID_TERRAIN_REQUEST_LEN, MAVLINK_MSG_ID_TERRAIN_REQUEST_CRC);
  246. #endif
  247. }
  248. #endif
  249. #endif
  250. // MESSAGE TERRAIN_REQUEST UNPACKING
  251. /**
  252. * @brief Get field lat from terrain_request message
  253. *
  254. * @return [degE7] Latitude of SW corner of first grid
  255. */
  256. static inline int32_t mavlink_msg_terrain_request_get_lat(const mavlink_message_t* msg)
  257. {
  258. return _MAV_RETURN_int32_t(msg, 8);
  259. }
  260. /**
  261. * @brief Get field lon from terrain_request message
  262. *
  263. * @return [degE7] Longitude of SW corner of first grid
  264. */
  265. static inline int32_t mavlink_msg_terrain_request_get_lon(const mavlink_message_t* msg)
  266. {
  267. return _MAV_RETURN_int32_t(msg, 12);
  268. }
  269. /**
  270. * @brief Get field grid_spacing from terrain_request message
  271. *
  272. * @return [m] Grid spacing
  273. */
  274. static inline uint16_t mavlink_msg_terrain_request_get_grid_spacing(const mavlink_message_t* msg)
  275. {
  276. return _MAV_RETURN_uint16_t(msg, 16);
  277. }
  278. /**
  279. * @brief Get field mask from terrain_request message
  280. *
  281. * @return Bitmask of requested 4x4 grids (row major 8x7 array of grids, 56 bits)
  282. */
  283. static inline uint64_t mavlink_msg_terrain_request_get_mask(const mavlink_message_t* msg)
  284. {
  285. return _MAV_RETURN_uint64_t(msg, 0);
  286. }
  287. /**
  288. * @brief Decode a terrain_request message into a struct
  289. *
  290. * @param msg The message to decode
  291. * @param terrain_request C-struct to decode the message contents into
  292. */
  293. static inline void mavlink_msg_terrain_request_decode(const mavlink_message_t* msg, mavlink_terrain_request_t* terrain_request)
  294. {
  295. #if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
  296. terrain_request->mask = mavlink_msg_terrain_request_get_mask(msg);
  297. terrain_request->lat = mavlink_msg_terrain_request_get_lat(msg);
  298. terrain_request->lon = mavlink_msg_terrain_request_get_lon(msg);
  299. terrain_request->grid_spacing = mavlink_msg_terrain_request_get_grid_spacing(msg);
  300. #else
  301. uint8_t len = msg->len < MAVLINK_MSG_ID_TERRAIN_REQUEST_LEN? msg->len : MAVLINK_MSG_ID_TERRAIN_REQUEST_LEN;
  302. memset(terrain_request, 0, MAVLINK_MSG_ID_TERRAIN_REQUEST_LEN);
  303. memcpy(terrain_request, _MAV_PAYLOAD(msg), len);
  304. #endif
  305. }