mavlink_msg_camera_trigger.h 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238
  1. #pragma once
  2. // MESSAGE CAMERA_TRIGGER PACKING
  3. #define MAVLINK_MSG_ID_CAMERA_TRIGGER 112
  4. typedef struct __mavlink_camera_trigger_t {
  5. uint64_t time_usec; /*< [us] Timestamp for image frame (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. uint32_t seq; /*< Image frame sequence*/
  7. } mavlink_camera_trigger_t;
  8. #define MAVLINK_MSG_ID_CAMERA_TRIGGER_LEN 12
  9. #define MAVLINK_MSG_ID_CAMERA_TRIGGER_MIN_LEN 12
  10. #define MAVLINK_MSG_ID_112_LEN 12
  11. #define MAVLINK_MSG_ID_112_MIN_LEN 12
  12. #define MAVLINK_MSG_ID_CAMERA_TRIGGER_CRC 174
  13. #define MAVLINK_MSG_ID_112_CRC 174
  14. #if MAVLINK_COMMAND_24BIT
  15. #define MAVLINK_MESSAGE_INFO_CAMERA_TRIGGER { \
  16. 112, \
  17. "CAMERA_TRIGGER", \
  18. 2, \
  19. { { "time_usec", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_camera_trigger_t, time_usec) }, \
  20. { "seq", NULL, MAVLINK_TYPE_UINT32_T, 0, 8, offsetof(mavlink_camera_trigger_t, seq) }, \
  21. } \
  22. }
  23. #else
  24. #define MAVLINK_MESSAGE_INFO_CAMERA_TRIGGER { \
  25. "CAMERA_TRIGGER", \
  26. 2, \
  27. { { "time_usec", NULL, MAVLINK_TYPE_UINT64_T, 0, 0, offsetof(mavlink_camera_trigger_t, time_usec) }, \
  28. { "seq", NULL, MAVLINK_TYPE_UINT32_T, 0, 8, offsetof(mavlink_camera_trigger_t, seq) }, \
  29. } \
  30. }
  31. #endif
  32. /**
  33. * @brief Pack a camera_trigger message
  34. * @param system_id ID of this system
  35. * @param component_id ID of this component (e.g. 200 for IMU)
  36. * @param msg The MAVLink message to compress the data into
  37. *
  38. * @param time_usec [us] Timestamp for image frame (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.
  39. * @param seq Image frame sequence
  40. * @return length of the message in bytes (excluding serial stream start sign)
  41. */
  42. static inline uint16_t mavlink_msg_camera_trigger_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
  43. uint64_t time_usec, uint32_t seq)
  44. {
  45. #if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
  46. char buf[MAVLINK_MSG_ID_CAMERA_TRIGGER_LEN];
  47. _mav_put_uint64_t(buf, 0, time_usec);
  48. _mav_put_uint32_t(buf, 8, seq);
  49. memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_CAMERA_TRIGGER_LEN);
  50. #else
  51. mavlink_camera_trigger_t packet;
  52. packet.time_usec = time_usec;
  53. packet.seq = seq;
  54. memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_CAMERA_TRIGGER_LEN);
  55. #endif
  56. msg->msgid = MAVLINK_MSG_ID_CAMERA_TRIGGER;
  57. return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_CAMERA_TRIGGER_MIN_LEN, MAVLINK_MSG_ID_CAMERA_TRIGGER_LEN, MAVLINK_MSG_ID_CAMERA_TRIGGER_CRC);
  58. }
  59. /**
  60. * @brief Pack a camera_trigger message on a channel
  61. * @param system_id ID of this system
  62. * @param component_id ID of this component (e.g. 200 for IMU)
  63. * @param chan The MAVLink channel this message will be sent over
  64. * @param msg The MAVLink message to compress the data into
  65. * @param time_usec [us] Timestamp for image frame (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.
  66. * @param seq Image frame sequence
  67. * @return length of the message in bytes (excluding serial stream start sign)
  68. */
  69. static inline uint16_t mavlink_msg_camera_trigger_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
  70. mavlink_message_t* msg,
  71. uint64_t time_usec,uint32_t seq)
  72. {
  73. #if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
  74. char buf[MAVLINK_MSG_ID_CAMERA_TRIGGER_LEN];
  75. _mav_put_uint64_t(buf, 0, time_usec);
  76. _mav_put_uint32_t(buf, 8, seq);
  77. memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_CAMERA_TRIGGER_LEN);
  78. #else
  79. mavlink_camera_trigger_t packet;
  80. packet.time_usec = time_usec;
  81. packet.seq = seq;
  82. memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_CAMERA_TRIGGER_LEN);
  83. #endif
  84. msg->msgid = MAVLINK_MSG_ID_CAMERA_TRIGGER;
  85. return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_CAMERA_TRIGGER_MIN_LEN, MAVLINK_MSG_ID_CAMERA_TRIGGER_LEN, MAVLINK_MSG_ID_CAMERA_TRIGGER_CRC);
  86. }
  87. /**
  88. * @brief Encode a camera_trigger struct
  89. *
  90. * @param system_id ID of this system
  91. * @param component_id ID of this component (e.g. 200 for IMU)
  92. * @param msg The MAVLink message to compress the data into
  93. * @param camera_trigger C-struct to read the message contents from
  94. */
  95. static inline uint16_t mavlink_msg_camera_trigger_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_camera_trigger_t* camera_trigger)
  96. {
  97. return mavlink_msg_camera_trigger_pack(system_id, component_id, msg, camera_trigger->time_usec, camera_trigger->seq);
  98. }
  99. /**
  100. * @brief Encode a camera_trigger struct on a channel
  101. *
  102. * @param system_id ID of this system
  103. * @param component_id ID of this component (e.g. 200 for IMU)
  104. * @param chan The MAVLink channel this message will be sent over
  105. * @param msg The MAVLink message to compress the data into
  106. * @param camera_trigger C-struct to read the message contents from
  107. */
  108. static inline uint16_t mavlink_msg_camera_trigger_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_camera_trigger_t* camera_trigger)
  109. {
  110. return mavlink_msg_camera_trigger_pack_chan(system_id, component_id, chan, msg, camera_trigger->time_usec, camera_trigger->seq);
  111. }
  112. /**
  113. * @brief Send a camera_trigger message
  114. * @param chan MAVLink channel to send the message
  115. *
  116. * @param time_usec [us] Timestamp for image frame (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.
  117. * @param seq Image frame sequence
  118. */
  119. #ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
  120. static inline void mavlink_msg_camera_trigger_send(mavlink_channel_t chan, uint64_t time_usec, uint32_t seq)
  121. {
  122. #if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
  123. char buf[MAVLINK_MSG_ID_CAMERA_TRIGGER_LEN];
  124. _mav_put_uint64_t(buf, 0, time_usec);
  125. _mav_put_uint32_t(buf, 8, seq);
  126. _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_CAMERA_TRIGGER, buf, MAVLINK_MSG_ID_CAMERA_TRIGGER_MIN_LEN, MAVLINK_MSG_ID_CAMERA_TRIGGER_LEN, MAVLINK_MSG_ID_CAMERA_TRIGGER_CRC);
  127. #else
  128. mavlink_camera_trigger_t packet;
  129. packet.time_usec = time_usec;
  130. packet.seq = seq;
  131. _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_CAMERA_TRIGGER, (const char *)&packet, MAVLINK_MSG_ID_CAMERA_TRIGGER_MIN_LEN, MAVLINK_MSG_ID_CAMERA_TRIGGER_LEN, MAVLINK_MSG_ID_CAMERA_TRIGGER_CRC);
  132. #endif
  133. }
  134. /**
  135. * @brief Send a camera_trigger message
  136. * @param chan MAVLink channel to send the message
  137. * @param struct The MAVLink struct to serialize
  138. */
  139. static inline void mavlink_msg_camera_trigger_send_struct(mavlink_channel_t chan, const mavlink_camera_trigger_t* camera_trigger)
  140. {
  141. #if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
  142. mavlink_msg_camera_trigger_send(chan, camera_trigger->time_usec, camera_trigger->seq);
  143. #else
  144. _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_CAMERA_TRIGGER, (const char *)camera_trigger, MAVLINK_MSG_ID_CAMERA_TRIGGER_MIN_LEN, MAVLINK_MSG_ID_CAMERA_TRIGGER_LEN, MAVLINK_MSG_ID_CAMERA_TRIGGER_CRC);
  145. #endif
  146. }
  147. #if MAVLINK_MSG_ID_CAMERA_TRIGGER_LEN <= MAVLINK_MAX_PAYLOAD_LEN
  148. /*
  149. This variant of _send() can be used to save stack space by re-using
  150. memory from the receive buffer. The caller provides a
  151. mavlink_message_t which is the size of a full mavlink message. This
  152. is usually the receive buffer for the channel, and allows a reply to an
  153. incoming message with minimum stack space usage.
  154. */
  155. static inline void mavlink_msg_camera_trigger_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan, uint64_t time_usec, uint32_t seq)
  156. {
  157. #if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
  158. char *buf = (char *)msgbuf;
  159. _mav_put_uint64_t(buf, 0, time_usec);
  160. _mav_put_uint32_t(buf, 8, seq);
  161. _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_CAMERA_TRIGGER, buf, MAVLINK_MSG_ID_CAMERA_TRIGGER_MIN_LEN, MAVLINK_MSG_ID_CAMERA_TRIGGER_LEN, MAVLINK_MSG_ID_CAMERA_TRIGGER_CRC);
  162. #else
  163. mavlink_camera_trigger_t *packet = (mavlink_camera_trigger_t *)msgbuf;
  164. packet->time_usec = time_usec;
  165. packet->seq = seq;
  166. _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_CAMERA_TRIGGER, (const char *)packet, MAVLINK_MSG_ID_CAMERA_TRIGGER_MIN_LEN, MAVLINK_MSG_ID_CAMERA_TRIGGER_LEN, MAVLINK_MSG_ID_CAMERA_TRIGGER_CRC);
  167. #endif
  168. }
  169. #endif
  170. #endif
  171. // MESSAGE CAMERA_TRIGGER UNPACKING
  172. /**
  173. * @brief Get field time_usec from camera_trigger message
  174. *
  175. * @return [us] Timestamp for image frame (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.
  176. */
  177. static inline uint64_t mavlink_msg_camera_trigger_get_time_usec(const mavlink_message_t* msg)
  178. {
  179. return _MAV_RETURN_uint64_t(msg, 0);
  180. }
  181. /**
  182. * @brief Get field seq from camera_trigger message
  183. *
  184. * @return Image frame sequence
  185. */
  186. static inline uint32_t mavlink_msg_camera_trigger_get_seq(const mavlink_message_t* msg)
  187. {
  188. return _MAV_RETURN_uint32_t(msg, 8);
  189. }
  190. /**
  191. * @brief Decode a camera_trigger message into a struct
  192. *
  193. * @param msg The message to decode
  194. * @param camera_trigger C-struct to decode the message contents into
  195. */
  196. static inline void mavlink_msg_camera_trigger_decode(const mavlink_message_t* msg, mavlink_camera_trigger_t* camera_trigger)
  197. {
  198. #if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
  199. camera_trigger->time_usec = mavlink_msg_camera_trigger_get_time_usec(msg);
  200. camera_trigger->seq = mavlink_msg_camera_trigger_get_seq(msg);
  201. #else
  202. uint8_t len = msg->len < MAVLINK_MSG_ID_CAMERA_TRIGGER_LEN? msg->len : MAVLINK_MSG_ID_CAMERA_TRIGGER_LEN;
  203. memset(camera_trigger, 0, MAVLINK_MSG_ID_CAMERA_TRIGGER_LEN);
  204. memcpy(camera_trigger, _MAV_PAYLOAD(msg), len);
  205. #endif
  206. }