mavlink_msg_servo_output_raw.h 36 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736
  1. #pragma once
  2. // MESSAGE SERVO_OUTPUT_RAW PACKING
  3. #define MAVLINK_MSG_ID_SERVO_OUTPUT_RAW 36
  4. MAVPACKED(
  5. typedef struct __mavlink_servo_output_raw_t {
  6. uint32_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.*/
  7. uint16_t servo1_raw; /*< [us] Servo output 1 value*/
  8. uint16_t servo2_raw; /*< [us] Servo output 2 value*/
  9. uint16_t servo3_raw; /*< [us] Servo output 3 value*/
  10. uint16_t servo4_raw; /*< [us] Servo output 4 value*/
  11. uint16_t servo5_raw; /*< [us] Servo output 5 value*/
  12. uint16_t servo6_raw; /*< [us] Servo output 6 value*/
  13. uint16_t servo7_raw; /*< [us] Servo output 7 value*/
  14. uint16_t servo8_raw; /*< [us] Servo output 8 value*/
  15. uint8_t port; /*< Servo output port (set of 8 outputs = 1 port). Flight stacks running on Pixhawk should use: 0 = MAIN, 1 = AUX.*/
  16. uint16_t servo9_raw; /*< [us] Servo output 9 value*/
  17. uint16_t servo10_raw; /*< [us] Servo output 10 value*/
  18. uint16_t servo11_raw; /*< [us] Servo output 11 value*/
  19. uint16_t servo12_raw; /*< [us] Servo output 12 value*/
  20. uint16_t servo13_raw; /*< [us] Servo output 13 value*/
  21. uint16_t servo14_raw; /*< [us] Servo output 14 value*/
  22. uint16_t servo15_raw; /*< [us] Servo output 15 value*/
  23. uint16_t servo16_raw; /*< [us] Servo output 16 value*/
  24. }) mavlink_servo_output_raw_t;
  25. #define MAVLINK_MSG_ID_SERVO_OUTPUT_RAW_LEN 37
  26. #define MAVLINK_MSG_ID_SERVO_OUTPUT_RAW_MIN_LEN 21
  27. #define MAVLINK_MSG_ID_36_LEN 37
  28. #define MAVLINK_MSG_ID_36_MIN_LEN 21
  29. #define MAVLINK_MSG_ID_SERVO_OUTPUT_RAW_CRC 222
  30. #define MAVLINK_MSG_ID_36_CRC 222
  31. #if MAVLINK_COMMAND_24BIT
  32. #define MAVLINK_MESSAGE_INFO_SERVO_OUTPUT_RAW { \
  33. 36, \
  34. "SERVO_OUTPUT_RAW", \
  35. 18, \
  36. { { "time_usec", NULL, MAVLINK_TYPE_UINT32_T, 0, 0, offsetof(mavlink_servo_output_raw_t, time_usec) }, \
  37. { "port", NULL, MAVLINK_TYPE_UINT8_T, 0, 20, offsetof(mavlink_servo_output_raw_t, port) }, \
  38. { "servo1_raw", NULL, MAVLINK_TYPE_UINT16_T, 0, 4, offsetof(mavlink_servo_output_raw_t, servo1_raw) }, \
  39. { "servo2_raw", NULL, MAVLINK_TYPE_UINT16_T, 0, 6, offsetof(mavlink_servo_output_raw_t, servo2_raw) }, \
  40. { "servo3_raw", NULL, MAVLINK_TYPE_UINT16_T, 0, 8, offsetof(mavlink_servo_output_raw_t, servo3_raw) }, \
  41. { "servo4_raw", NULL, MAVLINK_TYPE_UINT16_T, 0, 10, offsetof(mavlink_servo_output_raw_t, servo4_raw) }, \
  42. { "servo5_raw", NULL, MAVLINK_TYPE_UINT16_T, 0, 12, offsetof(mavlink_servo_output_raw_t, servo5_raw) }, \
  43. { "servo6_raw", NULL, MAVLINK_TYPE_UINT16_T, 0, 14, offsetof(mavlink_servo_output_raw_t, servo6_raw) }, \
  44. { "servo7_raw", NULL, MAVLINK_TYPE_UINT16_T, 0, 16, offsetof(mavlink_servo_output_raw_t, servo7_raw) }, \
  45. { "servo8_raw", NULL, MAVLINK_TYPE_UINT16_T, 0, 18, offsetof(mavlink_servo_output_raw_t, servo8_raw) }, \
  46. { "servo9_raw", NULL, MAVLINK_TYPE_UINT16_T, 0, 21, offsetof(mavlink_servo_output_raw_t, servo9_raw) }, \
  47. { "servo10_raw", NULL, MAVLINK_TYPE_UINT16_T, 0, 23, offsetof(mavlink_servo_output_raw_t, servo10_raw) }, \
  48. { "servo11_raw", NULL, MAVLINK_TYPE_UINT16_T, 0, 25, offsetof(mavlink_servo_output_raw_t, servo11_raw) }, \
  49. { "servo12_raw", NULL, MAVLINK_TYPE_UINT16_T, 0, 27, offsetof(mavlink_servo_output_raw_t, servo12_raw) }, \
  50. { "servo13_raw", NULL, MAVLINK_TYPE_UINT16_T, 0, 29, offsetof(mavlink_servo_output_raw_t, servo13_raw) }, \
  51. { "servo14_raw", NULL, MAVLINK_TYPE_UINT16_T, 0, 31, offsetof(mavlink_servo_output_raw_t, servo14_raw) }, \
  52. { "servo15_raw", NULL, MAVLINK_TYPE_UINT16_T, 0, 33, offsetof(mavlink_servo_output_raw_t, servo15_raw) }, \
  53. { "servo16_raw", NULL, MAVLINK_TYPE_UINT16_T, 0, 35, offsetof(mavlink_servo_output_raw_t, servo16_raw) }, \
  54. } \
  55. }
  56. #else
  57. #define MAVLINK_MESSAGE_INFO_SERVO_OUTPUT_RAW { \
  58. "SERVO_OUTPUT_RAW", \
  59. 18, \
  60. { { "time_usec", NULL, MAVLINK_TYPE_UINT32_T, 0, 0, offsetof(mavlink_servo_output_raw_t, time_usec) }, \
  61. { "port", NULL, MAVLINK_TYPE_UINT8_T, 0, 20, offsetof(mavlink_servo_output_raw_t, port) }, \
  62. { "servo1_raw", NULL, MAVLINK_TYPE_UINT16_T, 0, 4, offsetof(mavlink_servo_output_raw_t, servo1_raw) }, \
  63. { "servo2_raw", NULL, MAVLINK_TYPE_UINT16_T, 0, 6, offsetof(mavlink_servo_output_raw_t, servo2_raw) }, \
  64. { "servo3_raw", NULL, MAVLINK_TYPE_UINT16_T, 0, 8, offsetof(mavlink_servo_output_raw_t, servo3_raw) }, \
  65. { "servo4_raw", NULL, MAVLINK_TYPE_UINT16_T, 0, 10, offsetof(mavlink_servo_output_raw_t, servo4_raw) }, \
  66. { "servo5_raw", NULL, MAVLINK_TYPE_UINT16_T, 0, 12, offsetof(mavlink_servo_output_raw_t, servo5_raw) }, \
  67. { "servo6_raw", NULL, MAVLINK_TYPE_UINT16_T, 0, 14, offsetof(mavlink_servo_output_raw_t, servo6_raw) }, \
  68. { "servo7_raw", NULL, MAVLINK_TYPE_UINT16_T, 0, 16, offsetof(mavlink_servo_output_raw_t, servo7_raw) }, \
  69. { "servo8_raw", NULL, MAVLINK_TYPE_UINT16_T, 0, 18, offsetof(mavlink_servo_output_raw_t, servo8_raw) }, \
  70. { "servo9_raw", NULL, MAVLINK_TYPE_UINT16_T, 0, 21, offsetof(mavlink_servo_output_raw_t, servo9_raw) }, \
  71. { "servo10_raw", NULL, MAVLINK_TYPE_UINT16_T, 0, 23, offsetof(mavlink_servo_output_raw_t, servo10_raw) }, \
  72. { "servo11_raw", NULL, MAVLINK_TYPE_UINT16_T, 0, 25, offsetof(mavlink_servo_output_raw_t, servo11_raw) }, \
  73. { "servo12_raw", NULL, MAVLINK_TYPE_UINT16_T, 0, 27, offsetof(mavlink_servo_output_raw_t, servo12_raw) }, \
  74. { "servo13_raw", NULL, MAVLINK_TYPE_UINT16_T, 0, 29, offsetof(mavlink_servo_output_raw_t, servo13_raw) }, \
  75. { "servo14_raw", NULL, MAVLINK_TYPE_UINT16_T, 0, 31, offsetof(mavlink_servo_output_raw_t, servo14_raw) }, \
  76. { "servo15_raw", NULL, MAVLINK_TYPE_UINT16_T, 0, 33, offsetof(mavlink_servo_output_raw_t, servo15_raw) }, \
  77. { "servo16_raw", NULL, MAVLINK_TYPE_UINT16_T, 0, 35, offsetof(mavlink_servo_output_raw_t, servo16_raw) }, \
  78. } \
  79. }
  80. #endif
  81. /**
  82. * @brief Pack a servo_output_raw message
  83. * @param system_id ID of this system
  84. * @param component_id ID of this component (e.g. 200 for IMU)
  85. * @param msg The MAVLink message to compress the data into
  86. *
  87. * @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.
  88. * @param port Servo output port (set of 8 outputs = 1 port). Flight stacks running on Pixhawk should use: 0 = MAIN, 1 = AUX.
  89. * @param servo1_raw [us] Servo output 1 value
  90. * @param servo2_raw [us] Servo output 2 value
  91. * @param servo3_raw [us] Servo output 3 value
  92. * @param servo4_raw [us] Servo output 4 value
  93. * @param servo5_raw [us] Servo output 5 value
  94. * @param servo6_raw [us] Servo output 6 value
  95. * @param servo7_raw [us] Servo output 7 value
  96. * @param servo8_raw [us] Servo output 8 value
  97. * @param servo9_raw [us] Servo output 9 value
  98. * @param servo10_raw [us] Servo output 10 value
  99. * @param servo11_raw [us] Servo output 11 value
  100. * @param servo12_raw [us] Servo output 12 value
  101. * @param servo13_raw [us] Servo output 13 value
  102. * @param servo14_raw [us] Servo output 14 value
  103. * @param servo15_raw [us] Servo output 15 value
  104. * @param servo16_raw [us] Servo output 16 value
  105. * @return length of the message in bytes (excluding serial stream start sign)
  106. */
  107. static inline uint16_t mavlink_msg_servo_output_raw_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
  108. uint32_t time_usec, uint8_t port, uint16_t servo1_raw, uint16_t servo2_raw, uint16_t servo3_raw, uint16_t servo4_raw, uint16_t servo5_raw, uint16_t servo6_raw, uint16_t servo7_raw, uint16_t servo8_raw, uint16_t servo9_raw, uint16_t servo10_raw, uint16_t servo11_raw, uint16_t servo12_raw, uint16_t servo13_raw, uint16_t servo14_raw, uint16_t servo15_raw, uint16_t servo16_raw)
  109. {
  110. #if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
  111. char buf[MAVLINK_MSG_ID_SERVO_OUTPUT_RAW_LEN];
  112. _mav_put_uint32_t(buf, 0, time_usec);
  113. _mav_put_uint16_t(buf, 4, servo1_raw);
  114. _mav_put_uint16_t(buf, 6, servo2_raw);
  115. _mav_put_uint16_t(buf, 8, servo3_raw);
  116. _mav_put_uint16_t(buf, 10, servo4_raw);
  117. _mav_put_uint16_t(buf, 12, servo5_raw);
  118. _mav_put_uint16_t(buf, 14, servo6_raw);
  119. _mav_put_uint16_t(buf, 16, servo7_raw);
  120. _mav_put_uint16_t(buf, 18, servo8_raw);
  121. _mav_put_uint8_t(buf, 20, port);
  122. _mav_put_uint16_t(buf, 21, servo9_raw);
  123. _mav_put_uint16_t(buf, 23, servo10_raw);
  124. _mav_put_uint16_t(buf, 25, servo11_raw);
  125. _mav_put_uint16_t(buf, 27, servo12_raw);
  126. _mav_put_uint16_t(buf, 29, servo13_raw);
  127. _mav_put_uint16_t(buf, 31, servo14_raw);
  128. _mav_put_uint16_t(buf, 33, servo15_raw);
  129. _mav_put_uint16_t(buf, 35, servo16_raw);
  130. memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_SERVO_OUTPUT_RAW_LEN);
  131. #else
  132. mavlink_servo_output_raw_t packet;
  133. packet.time_usec = time_usec;
  134. packet.servo1_raw = servo1_raw;
  135. packet.servo2_raw = servo2_raw;
  136. packet.servo3_raw = servo3_raw;
  137. packet.servo4_raw = servo4_raw;
  138. packet.servo5_raw = servo5_raw;
  139. packet.servo6_raw = servo6_raw;
  140. packet.servo7_raw = servo7_raw;
  141. packet.servo8_raw = servo8_raw;
  142. packet.port = port;
  143. packet.servo9_raw = servo9_raw;
  144. packet.servo10_raw = servo10_raw;
  145. packet.servo11_raw = servo11_raw;
  146. packet.servo12_raw = servo12_raw;
  147. packet.servo13_raw = servo13_raw;
  148. packet.servo14_raw = servo14_raw;
  149. packet.servo15_raw = servo15_raw;
  150. packet.servo16_raw = servo16_raw;
  151. memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_SERVO_OUTPUT_RAW_LEN);
  152. #endif
  153. msg->msgid = MAVLINK_MSG_ID_SERVO_OUTPUT_RAW;
  154. return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_SERVO_OUTPUT_RAW_MIN_LEN, MAVLINK_MSG_ID_SERVO_OUTPUT_RAW_LEN, MAVLINK_MSG_ID_SERVO_OUTPUT_RAW_CRC);
  155. }
  156. /**
  157. * @brief Pack a servo_output_raw message
  158. * @param system_id ID of this system
  159. * @param component_id ID of this component (e.g. 200 for IMU)
  160. * @param status MAVLink status structure
  161. * @param msg The MAVLink message to compress the data into
  162. *
  163. * @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.
  164. * @param port Servo output port (set of 8 outputs = 1 port). Flight stacks running on Pixhawk should use: 0 = MAIN, 1 = AUX.
  165. * @param servo1_raw [us] Servo output 1 value
  166. * @param servo2_raw [us] Servo output 2 value
  167. * @param servo3_raw [us] Servo output 3 value
  168. * @param servo4_raw [us] Servo output 4 value
  169. * @param servo5_raw [us] Servo output 5 value
  170. * @param servo6_raw [us] Servo output 6 value
  171. * @param servo7_raw [us] Servo output 7 value
  172. * @param servo8_raw [us] Servo output 8 value
  173. * @param servo9_raw [us] Servo output 9 value
  174. * @param servo10_raw [us] Servo output 10 value
  175. * @param servo11_raw [us] Servo output 11 value
  176. * @param servo12_raw [us] Servo output 12 value
  177. * @param servo13_raw [us] Servo output 13 value
  178. * @param servo14_raw [us] Servo output 14 value
  179. * @param servo15_raw [us] Servo output 15 value
  180. * @param servo16_raw [us] Servo output 16 value
  181. * @return length of the message in bytes (excluding serial stream start sign)
  182. */
  183. static inline uint16_t mavlink_msg_servo_output_raw_pack_status(uint8_t system_id, uint8_t component_id, mavlink_status_t *_status, mavlink_message_t* msg,
  184. uint32_t time_usec, uint8_t port, uint16_t servo1_raw, uint16_t servo2_raw, uint16_t servo3_raw, uint16_t servo4_raw, uint16_t servo5_raw, uint16_t servo6_raw, uint16_t servo7_raw, uint16_t servo8_raw, uint16_t servo9_raw, uint16_t servo10_raw, uint16_t servo11_raw, uint16_t servo12_raw, uint16_t servo13_raw, uint16_t servo14_raw, uint16_t servo15_raw, uint16_t servo16_raw)
  185. {
  186. #if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
  187. char buf[MAVLINK_MSG_ID_SERVO_OUTPUT_RAW_LEN];
  188. _mav_put_uint32_t(buf, 0, time_usec);
  189. _mav_put_uint16_t(buf, 4, servo1_raw);
  190. _mav_put_uint16_t(buf, 6, servo2_raw);
  191. _mav_put_uint16_t(buf, 8, servo3_raw);
  192. _mav_put_uint16_t(buf, 10, servo4_raw);
  193. _mav_put_uint16_t(buf, 12, servo5_raw);
  194. _mav_put_uint16_t(buf, 14, servo6_raw);
  195. _mav_put_uint16_t(buf, 16, servo7_raw);
  196. _mav_put_uint16_t(buf, 18, servo8_raw);
  197. _mav_put_uint8_t(buf, 20, port);
  198. _mav_put_uint16_t(buf, 21, servo9_raw);
  199. _mav_put_uint16_t(buf, 23, servo10_raw);
  200. _mav_put_uint16_t(buf, 25, servo11_raw);
  201. _mav_put_uint16_t(buf, 27, servo12_raw);
  202. _mav_put_uint16_t(buf, 29, servo13_raw);
  203. _mav_put_uint16_t(buf, 31, servo14_raw);
  204. _mav_put_uint16_t(buf, 33, servo15_raw);
  205. _mav_put_uint16_t(buf, 35, servo16_raw);
  206. memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_SERVO_OUTPUT_RAW_LEN);
  207. #else
  208. mavlink_servo_output_raw_t packet;
  209. packet.time_usec = time_usec;
  210. packet.servo1_raw = servo1_raw;
  211. packet.servo2_raw = servo2_raw;
  212. packet.servo3_raw = servo3_raw;
  213. packet.servo4_raw = servo4_raw;
  214. packet.servo5_raw = servo5_raw;
  215. packet.servo6_raw = servo6_raw;
  216. packet.servo7_raw = servo7_raw;
  217. packet.servo8_raw = servo8_raw;
  218. packet.port = port;
  219. packet.servo9_raw = servo9_raw;
  220. packet.servo10_raw = servo10_raw;
  221. packet.servo11_raw = servo11_raw;
  222. packet.servo12_raw = servo12_raw;
  223. packet.servo13_raw = servo13_raw;
  224. packet.servo14_raw = servo14_raw;
  225. packet.servo15_raw = servo15_raw;
  226. packet.servo16_raw = servo16_raw;
  227. memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_SERVO_OUTPUT_RAW_LEN);
  228. #endif
  229. msg->msgid = MAVLINK_MSG_ID_SERVO_OUTPUT_RAW;
  230. #if MAVLINK_CRC_EXTRA
  231. return mavlink_finalize_message_buffer(msg, system_id, component_id, _status, MAVLINK_MSG_ID_SERVO_OUTPUT_RAW_MIN_LEN, MAVLINK_MSG_ID_SERVO_OUTPUT_RAW_LEN, MAVLINK_MSG_ID_SERVO_OUTPUT_RAW_CRC);
  232. #else
  233. return mavlink_finalize_message_buffer(msg, system_id, component_id, _status, MAVLINK_MSG_ID_SERVO_OUTPUT_RAW_MIN_LEN, MAVLINK_MSG_ID_SERVO_OUTPUT_RAW_LEN);
  234. #endif
  235. }
  236. /**
  237. * @brief Pack a servo_output_raw message on a channel
  238. * @param system_id ID of this system
  239. * @param component_id ID of this component (e.g. 200 for IMU)
  240. * @param chan The MAVLink channel this message will be sent over
  241. * @param msg The MAVLink message to compress the data into
  242. * @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.
  243. * @param port Servo output port (set of 8 outputs = 1 port). Flight stacks running on Pixhawk should use: 0 = MAIN, 1 = AUX.
  244. * @param servo1_raw [us] Servo output 1 value
  245. * @param servo2_raw [us] Servo output 2 value
  246. * @param servo3_raw [us] Servo output 3 value
  247. * @param servo4_raw [us] Servo output 4 value
  248. * @param servo5_raw [us] Servo output 5 value
  249. * @param servo6_raw [us] Servo output 6 value
  250. * @param servo7_raw [us] Servo output 7 value
  251. * @param servo8_raw [us] Servo output 8 value
  252. * @param servo9_raw [us] Servo output 9 value
  253. * @param servo10_raw [us] Servo output 10 value
  254. * @param servo11_raw [us] Servo output 11 value
  255. * @param servo12_raw [us] Servo output 12 value
  256. * @param servo13_raw [us] Servo output 13 value
  257. * @param servo14_raw [us] Servo output 14 value
  258. * @param servo15_raw [us] Servo output 15 value
  259. * @param servo16_raw [us] Servo output 16 value
  260. * @return length of the message in bytes (excluding serial stream start sign)
  261. */
  262. static inline uint16_t mavlink_msg_servo_output_raw_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
  263. mavlink_message_t* msg,
  264. uint32_t time_usec,uint8_t port,uint16_t servo1_raw,uint16_t servo2_raw,uint16_t servo3_raw,uint16_t servo4_raw,uint16_t servo5_raw,uint16_t servo6_raw,uint16_t servo7_raw,uint16_t servo8_raw,uint16_t servo9_raw,uint16_t servo10_raw,uint16_t servo11_raw,uint16_t servo12_raw,uint16_t servo13_raw,uint16_t servo14_raw,uint16_t servo15_raw,uint16_t servo16_raw)
  265. {
  266. #if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
  267. char buf[MAVLINK_MSG_ID_SERVO_OUTPUT_RAW_LEN];
  268. _mav_put_uint32_t(buf, 0, time_usec);
  269. _mav_put_uint16_t(buf, 4, servo1_raw);
  270. _mav_put_uint16_t(buf, 6, servo2_raw);
  271. _mav_put_uint16_t(buf, 8, servo3_raw);
  272. _mav_put_uint16_t(buf, 10, servo4_raw);
  273. _mav_put_uint16_t(buf, 12, servo5_raw);
  274. _mav_put_uint16_t(buf, 14, servo6_raw);
  275. _mav_put_uint16_t(buf, 16, servo7_raw);
  276. _mav_put_uint16_t(buf, 18, servo8_raw);
  277. _mav_put_uint8_t(buf, 20, port);
  278. _mav_put_uint16_t(buf, 21, servo9_raw);
  279. _mav_put_uint16_t(buf, 23, servo10_raw);
  280. _mav_put_uint16_t(buf, 25, servo11_raw);
  281. _mav_put_uint16_t(buf, 27, servo12_raw);
  282. _mav_put_uint16_t(buf, 29, servo13_raw);
  283. _mav_put_uint16_t(buf, 31, servo14_raw);
  284. _mav_put_uint16_t(buf, 33, servo15_raw);
  285. _mav_put_uint16_t(buf, 35, servo16_raw);
  286. memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_SERVO_OUTPUT_RAW_LEN);
  287. #else
  288. mavlink_servo_output_raw_t packet;
  289. packet.time_usec = time_usec;
  290. packet.servo1_raw = servo1_raw;
  291. packet.servo2_raw = servo2_raw;
  292. packet.servo3_raw = servo3_raw;
  293. packet.servo4_raw = servo4_raw;
  294. packet.servo5_raw = servo5_raw;
  295. packet.servo6_raw = servo6_raw;
  296. packet.servo7_raw = servo7_raw;
  297. packet.servo8_raw = servo8_raw;
  298. packet.port = port;
  299. packet.servo9_raw = servo9_raw;
  300. packet.servo10_raw = servo10_raw;
  301. packet.servo11_raw = servo11_raw;
  302. packet.servo12_raw = servo12_raw;
  303. packet.servo13_raw = servo13_raw;
  304. packet.servo14_raw = servo14_raw;
  305. packet.servo15_raw = servo15_raw;
  306. packet.servo16_raw = servo16_raw;
  307. memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_SERVO_OUTPUT_RAW_LEN);
  308. #endif
  309. msg->msgid = MAVLINK_MSG_ID_SERVO_OUTPUT_RAW;
  310. return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_SERVO_OUTPUT_RAW_MIN_LEN, MAVLINK_MSG_ID_SERVO_OUTPUT_RAW_LEN, MAVLINK_MSG_ID_SERVO_OUTPUT_RAW_CRC);
  311. }
  312. /**
  313. * @brief Encode a servo_output_raw struct
  314. *
  315. * @param system_id ID of this system
  316. * @param component_id ID of this component (e.g. 200 for IMU)
  317. * @param msg The MAVLink message to compress the data into
  318. * @param servo_output_raw C-struct to read the message contents from
  319. */
  320. static inline uint16_t mavlink_msg_servo_output_raw_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_servo_output_raw_t* servo_output_raw)
  321. {
  322. return mavlink_msg_servo_output_raw_pack(system_id, component_id, msg, servo_output_raw->time_usec, servo_output_raw->port, servo_output_raw->servo1_raw, servo_output_raw->servo2_raw, servo_output_raw->servo3_raw, servo_output_raw->servo4_raw, servo_output_raw->servo5_raw, servo_output_raw->servo6_raw, servo_output_raw->servo7_raw, servo_output_raw->servo8_raw, servo_output_raw->servo9_raw, servo_output_raw->servo10_raw, servo_output_raw->servo11_raw, servo_output_raw->servo12_raw, servo_output_raw->servo13_raw, servo_output_raw->servo14_raw, servo_output_raw->servo15_raw, servo_output_raw->servo16_raw);
  323. }
  324. /**
  325. * @brief Encode a servo_output_raw struct on a channel
  326. *
  327. * @param system_id ID of this system
  328. * @param component_id ID of this component (e.g. 200 for IMU)
  329. * @param chan The MAVLink channel this message will be sent over
  330. * @param msg The MAVLink message to compress the data into
  331. * @param servo_output_raw C-struct to read the message contents from
  332. */
  333. static inline uint16_t mavlink_msg_servo_output_raw_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_servo_output_raw_t* servo_output_raw)
  334. {
  335. return mavlink_msg_servo_output_raw_pack_chan(system_id, component_id, chan, msg, servo_output_raw->time_usec, servo_output_raw->port, servo_output_raw->servo1_raw, servo_output_raw->servo2_raw, servo_output_raw->servo3_raw, servo_output_raw->servo4_raw, servo_output_raw->servo5_raw, servo_output_raw->servo6_raw, servo_output_raw->servo7_raw, servo_output_raw->servo8_raw, servo_output_raw->servo9_raw, servo_output_raw->servo10_raw, servo_output_raw->servo11_raw, servo_output_raw->servo12_raw, servo_output_raw->servo13_raw, servo_output_raw->servo14_raw, servo_output_raw->servo15_raw, servo_output_raw->servo16_raw);
  336. }
  337. /**
  338. * @brief Encode a servo_output_raw struct with provided status structure
  339. *
  340. * @param system_id ID of this system
  341. * @param component_id ID of this component (e.g. 200 for IMU)
  342. * @param status MAVLink status structure
  343. * @param msg The MAVLink message to compress the data into
  344. * @param servo_output_raw C-struct to read the message contents from
  345. */
  346. static inline uint16_t mavlink_msg_servo_output_raw_encode_status(uint8_t system_id, uint8_t component_id, mavlink_status_t* _status, mavlink_message_t* msg, const mavlink_servo_output_raw_t* servo_output_raw)
  347. {
  348. return mavlink_msg_servo_output_raw_pack_status(system_id, component_id, _status, msg, servo_output_raw->time_usec, servo_output_raw->port, servo_output_raw->servo1_raw, servo_output_raw->servo2_raw, servo_output_raw->servo3_raw, servo_output_raw->servo4_raw, servo_output_raw->servo5_raw, servo_output_raw->servo6_raw, servo_output_raw->servo7_raw, servo_output_raw->servo8_raw, servo_output_raw->servo9_raw, servo_output_raw->servo10_raw, servo_output_raw->servo11_raw, servo_output_raw->servo12_raw, servo_output_raw->servo13_raw, servo_output_raw->servo14_raw, servo_output_raw->servo15_raw, servo_output_raw->servo16_raw);
  349. }
  350. /**
  351. * @brief Send a servo_output_raw message
  352. * @param chan MAVLink channel to send the message
  353. *
  354. * @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.
  355. * @param port Servo output port (set of 8 outputs = 1 port). Flight stacks running on Pixhawk should use: 0 = MAIN, 1 = AUX.
  356. * @param servo1_raw [us] Servo output 1 value
  357. * @param servo2_raw [us] Servo output 2 value
  358. * @param servo3_raw [us] Servo output 3 value
  359. * @param servo4_raw [us] Servo output 4 value
  360. * @param servo5_raw [us] Servo output 5 value
  361. * @param servo6_raw [us] Servo output 6 value
  362. * @param servo7_raw [us] Servo output 7 value
  363. * @param servo8_raw [us] Servo output 8 value
  364. * @param servo9_raw [us] Servo output 9 value
  365. * @param servo10_raw [us] Servo output 10 value
  366. * @param servo11_raw [us] Servo output 11 value
  367. * @param servo12_raw [us] Servo output 12 value
  368. * @param servo13_raw [us] Servo output 13 value
  369. * @param servo14_raw [us] Servo output 14 value
  370. * @param servo15_raw [us] Servo output 15 value
  371. * @param servo16_raw [us] Servo output 16 value
  372. */
  373. #ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
  374. static inline void mavlink_msg_servo_output_raw_send(mavlink_channel_t chan, uint32_t time_usec, uint8_t port, uint16_t servo1_raw, uint16_t servo2_raw, uint16_t servo3_raw, uint16_t servo4_raw, uint16_t servo5_raw, uint16_t servo6_raw, uint16_t servo7_raw, uint16_t servo8_raw, uint16_t servo9_raw, uint16_t servo10_raw, uint16_t servo11_raw, uint16_t servo12_raw, uint16_t servo13_raw, uint16_t servo14_raw, uint16_t servo15_raw, uint16_t servo16_raw)
  375. {
  376. #if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
  377. char buf[MAVLINK_MSG_ID_SERVO_OUTPUT_RAW_LEN];
  378. _mav_put_uint32_t(buf, 0, time_usec);
  379. _mav_put_uint16_t(buf, 4, servo1_raw);
  380. _mav_put_uint16_t(buf, 6, servo2_raw);
  381. _mav_put_uint16_t(buf, 8, servo3_raw);
  382. _mav_put_uint16_t(buf, 10, servo4_raw);
  383. _mav_put_uint16_t(buf, 12, servo5_raw);
  384. _mav_put_uint16_t(buf, 14, servo6_raw);
  385. _mav_put_uint16_t(buf, 16, servo7_raw);
  386. _mav_put_uint16_t(buf, 18, servo8_raw);
  387. _mav_put_uint8_t(buf, 20, port);
  388. _mav_put_uint16_t(buf, 21, servo9_raw);
  389. _mav_put_uint16_t(buf, 23, servo10_raw);
  390. _mav_put_uint16_t(buf, 25, servo11_raw);
  391. _mav_put_uint16_t(buf, 27, servo12_raw);
  392. _mav_put_uint16_t(buf, 29, servo13_raw);
  393. _mav_put_uint16_t(buf, 31, servo14_raw);
  394. _mav_put_uint16_t(buf, 33, servo15_raw);
  395. _mav_put_uint16_t(buf, 35, servo16_raw);
  396. _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SERVO_OUTPUT_RAW, buf, MAVLINK_MSG_ID_SERVO_OUTPUT_RAW_MIN_LEN, MAVLINK_MSG_ID_SERVO_OUTPUT_RAW_LEN, MAVLINK_MSG_ID_SERVO_OUTPUT_RAW_CRC);
  397. #else
  398. mavlink_servo_output_raw_t packet;
  399. packet.time_usec = time_usec;
  400. packet.servo1_raw = servo1_raw;
  401. packet.servo2_raw = servo2_raw;
  402. packet.servo3_raw = servo3_raw;
  403. packet.servo4_raw = servo4_raw;
  404. packet.servo5_raw = servo5_raw;
  405. packet.servo6_raw = servo6_raw;
  406. packet.servo7_raw = servo7_raw;
  407. packet.servo8_raw = servo8_raw;
  408. packet.port = port;
  409. packet.servo9_raw = servo9_raw;
  410. packet.servo10_raw = servo10_raw;
  411. packet.servo11_raw = servo11_raw;
  412. packet.servo12_raw = servo12_raw;
  413. packet.servo13_raw = servo13_raw;
  414. packet.servo14_raw = servo14_raw;
  415. packet.servo15_raw = servo15_raw;
  416. packet.servo16_raw = servo16_raw;
  417. _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SERVO_OUTPUT_RAW, (const char *)&packet, MAVLINK_MSG_ID_SERVO_OUTPUT_RAW_MIN_LEN, MAVLINK_MSG_ID_SERVO_OUTPUT_RAW_LEN, MAVLINK_MSG_ID_SERVO_OUTPUT_RAW_CRC);
  418. #endif
  419. }
  420. /**
  421. * @brief Send a servo_output_raw message
  422. * @param chan MAVLink channel to send the message
  423. * @param struct The MAVLink struct to serialize
  424. */
  425. static inline void mavlink_msg_servo_output_raw_send_struct(mavlink_channel_t chan, const mavlink_servo_output_raw_t* servo_output_raw)
  426. {
  427. #if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
  428. mavlink_msg_servo_output_raw_send(chan, servo_output_raw->time_usec, servo_output_raw->port, servo_output_raw->servo1_raw, servo_output_raw->servo2_raw, servo_output_raw->servo3_raw, servo_output_raw->servo4_raw, servo_output_raw->servo5_raw, servo_output_raw->servo6_raw, servo_output_raw->servo7_raw, servo_output_raw->servo8_raw, servo_output_raw->servo9_raw, servo_output_raw->servo10_raw, servo_output_raw->servo11_raw, servo_output_raw->servo12_raw, servo_output_raw->servo13_raw, servo_output_raw->servo14_raw, servo_output_raw->servo15_raw, servo_output_raw->servo16_raw);
  429. #else
  430. _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SERVO_OUTPUT_RAW, (const char *)servo_output_raw, MAVLINK_MSG_ID_SERVO_OUTPUT_RAW_MIN_LEN, MAVLINK_MSG_ID_SERVO_OUTPUT_RAW_LEN, MAVLINK_MSG_ID_SERVO_OUTPUT_RAW_CRC);
  431. #endif
  432. }
  433. #if MAVLINK_MSG_ID_SERVO_OUTPUT_RAW_LEN <= MAVLINK_MAX_PAYLOAD_LEN
  434. /*
  435. This variant of _send() can be used to save stack space by re-using
  436. memory from the receive buffer. The caller provides a
  437. mavlink_message_t which is the size of a full mavlink message. This
  438. is usually the receive buffer for the channel, and allows a reply to an
  439. incoming message with minimum stack space usage.
  440. */
  441. static inline void mavlink_msg_servo_output_raw_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan, uint32_t time_usec, uint8_t port, uint16_t servo1_raw, uint16_t servo2_raw, uint16_t servo3_raw, uint16_t servo4_raw, uint16_t servo5_raw, uint16_t servo6_raw, uint16_t servo7_raw, uint16_t servo8_raw, uint16_t servo9_raw, uint16_t servo10_raw, uint16_t servo11_raw, uint16_t servo12_raw, uint16_t servo13_raw, uint16_t servo14_raw, uint16_t servo15_raw, uint16_t servo16_raw)
  442. {
  443. #if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
  444. char *buf = (char *)msgbuf;
  445. _mav_put_uint32_t(buf, 0, time_usec);
  446. _mav_put_uint16_t(buf, 4, servo1_raw);
  447. _mav_put_uint16_t(buf, 6, servo2_raw);
  448. _mav_put_uint16_t(buf, 8, servo3_raw);
  449. _mav_put_uint16_t(buf, 10, servo4_raw);
  450. _mav_put_uint16_t(buf, 12, servo5_raw);
  451. _mav_put_uint16_t(buf, 14, servo6_raw);
  452. _mav_put_uint16_t(buf, 16, servo7_raw);
  453. _mav_put_uint16_t(buf, 18, servo8_raw);
  454. _mav_put_uint8_t(buf, 20, port);
  455. _mav_put_uint16_t(buf, 21, servo9_raw);
  456. _mav_put_uint16_t(buf, 23, servo10_raw);
  457. _mav_put_uint16_t(buf, 25, servo11_raw);
  458. _mav_put_uint16_t(buf, 27, servo12_raw);
  459. _mav_put_uint16_t(buf, 29, servo13_raw);
  460. _mav_put_uint16_t(buf, 31, servo14_raw);
  461. _mav_put_uint16_t(buf, 33, servo15_raw);
  462. _mav_put_uint16_t(buf, 35, servo16_raw);
  463. _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SERVO_OUTPUT_RAW, buf, MAVLINK_MSG_ID_SERVO_OUTPUT_RAW_MIN_LEN, MAVLINK_MSG_ID_SERVO_OUTPUT_RAW_LEN, MAVLINK_MSG_ID_SERVO_OUTPUT_RAW_CRC);
  464. #else
  465. mavlink_servo_output_raw_t *packet = (mavlink_servo_output_raw_t *)msgbuf;
  466. packet->time_usec = time_usec;
  467. packet->servo1_raw = servo1_raw;
  468. packet->servo2_raw = servo2_raw;
  469. packet->servo3_raw = servo3_raw;
  470. packet->servo4_raw = servo4_raw;
  471. packet->servo5_raw = servo5_raw;
  472. packet->servo6_raw = servo6_raw;
  473. packet->servo7_raw = servo7_raw;
  474. packet->servo8_raw = servo8_raw;
  475. packet->port = port;
  476. packet->servo9_raw = servo9_raw;
  477. packet->servo10_raw = servo10_raw;
  478. packet->servo11_raw = servo11_raw;
  479. packet->servo12_raw = servo12_raw;
  480. packet->servo13_raw = servo13_raw;
  481. packet->servo14_raw = servo14_raw;
  482. packet->servo15_raw = servo15_raw;
  483. packet->servo16_raw = servo16_raw;
  484. _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SERVO_OUTPUT_RAW, (const char *)packet, MAVLINK_MSG_ID_SERVO_OUTPUT_RAW_MIN_LEN, MAVLINK_MSG_ID_SERVO_OUTPUT_RAW_LEN, MAVLINK_MSG_ID_SERVO_OUTPUT_RAW_CRC);
  485. #endif
  486. }
  487. #endif
  488. #endif
  489. // MESSAGE SERVO_OUTPUT_RAW UNPACKING
  490. /**
  491. * @brief Get field time_usec from servo_output_raw message
  492. *
  493. * @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.
  494. */
  495. static inline uint32_t mavlink_msg_servo_output_raw_get_time_usec(const mavlink_message_t* msg)
  496. {
  497. return _MAV_RETURN_uint32_t(msg, 0);
  498. }
  499. /**
  500. * @brief Get field port from servo_output_raw message
  501. *
  502. * @return Servo output port (set of 8 outputs = 1 port). Flight stacks running on Pixhawk should use: 0 = MAIN, 1 = AUX.
  503. */
  504. static inline uint8_t mavlink_msg_servo_output_raw_get_port(const mavlink_message_t* msg)
  505. {
  506. return _MAV_RETURN_uint8_t(msg, 20);
  507. }
  508. /**
  509. * @brief Get field servo1_raw from servo_output_raw message
  510. *
  511. * @return [us] Servo output 1 value
  512. */
  513. static inline uint16_t mavlink_msg_servo_output_raw_get_servo1_raw(const mavlink_message_t* msg)
  514. {
  515. return _MAV_RETURN_uint16_t(msg, 4);
  516. }
  517. /**
  518. * @brief Get field servo2_raw from servo_output_raw message
  519. *
  520. * @return [us] Servo output 2 value
  521. */
  522. static inline uint16_t mavlink_msg_servo_output_raw_get_servo2_raw(const mavlink_message_t* msg)
  523. {
  524. return _MAV_RETURN_uint16_t(msg, 6);
  525. }
  526. /**
  527. * @brief Get field servo3_raw from servo_output_raw message
  528. *
  529. * @return [us] Servo output 3 value
  530. */
  531. static inline uint16_t mavlink_msg_servo_output_raw_get_servo3_raw(const mavlink_message_t* msg)
  532. {
  533. return _MAV_RETURN_uint16_t(msg, 8);
  534. }
  535. /**
  536. * @brief Get field servo4_raw from servo_output_raw message
  537. *
  538. * @return [us] Servo output 4 value
  539. */
  540. static inline uint16_t mavlink_msg_servo_output_raw_get_servo4_raw(const mavlink_message_t* msg)
  541. {
  542. return _MAV_RETURN_uint16_t(msg, 10);
  543. }
  544. /**
  545. * @brief Get field servo5_raw from servo_output_raw message
  546. *
  547. * @return [us] Servo output 5 value
  548. */
  549. static inline uint16_t mavlink_msg_servo_output_raw_get_servo5_raw(const mavlink_message_t* msg)
  550. {
  551. return _MAV_RETURN_uint16_t(msg, 12);
  552. }
  553. /**
  554. * @brief Get field servo6_raw from servo_output_raw message
  555. *
  556. * @return [us] Servo output 6 value
  557. */
  558. static inline uint16_t mavlink_msg_servo_output_raw_get_servo6_raw(const mavlink_message_t* msg)
  559. {
  560. return _MAV_RETURN_uint16_t(msg, 14);
  561. }
  562. /**
  563. * @brief Get field servo7_raw from servo_output_raw message
  564. *
  565. * @return [us] Servo output 7 value
  566. */
  567. static inline uint16_t mavlink_msg_servo_output_raw_get_servo7_raw(const mavlink_message_t* msg)
  568. {
  569. return _MAV_RETURN_uint16_t(msg, 16);
  570. }
  571. /**
  572. * @brief Get field servo8_raw from servo_output_raw message
  573. *
  574. * @return [us] Servo output 8 value
  575. */
  576. static inline uint16_t mavlink_msg_servo_output_raw_get_servo8_raw(const mavlink_message_t* msg)
  577. {
  578. return _MAV_RETURN_uint16_t(msg, 18);
  579. }
  580. /**
  581. * @brief Get field servo9_raw from servo_output_raw message
  582. *
  583. * @return [us] Servo output 9 value
  584. */
  585. static inline uint16_t mavlink_msg_servo_output_raw_get_servo9_raw(const mavlink_message_t* msg)
  586. {
  587. return _MAV_RETURN_uint16_t(msg, 21);
  588. }
  589. /**
  590. * @brief Get field servo10_raw from servo_output_raw message
  591. *
  592. * @return [us] Servo output 10 value
  593. */
  594. static inline uint16_t mavlink_msg_servo_output_raw_get_servo10_raw(const mavlink_message_t* msg)
  595. {
  596. return _MAV_RETURN_uint16_t(msg, 23);
  597. }
  598. /**
  599. * @brief Get field servo11_raw from servo_output_raw message
  600. *
  601. * @return [us] Servo output 11 value
  602. */
  603. static inline uint16_t mavlink_msg_servo_output_raw_get_servo11_raw(const mavlink_message_t* msg)
  604. {
  605. return _MAV_RETURN_uint16_t(msg, 25);
  606. }
  607. /**
  608. * @brief Get field servo12_raw from servo_output_raw message
  609. *
  610. * @return [us] Servo output 12 value
  611. */
  612. static inline uint16_t mavlink_msg_servo_output_raw_get_servo12_raw(const mavlink_message_t* msg)
  613. {
  614. return _MAV_RETURN_uint16_t(msg, 27);
  615. }
  616. /**
  617. * @brief Get field servo13_raw from servo_output_raw message
  618. *
  619. * @return [us] Servo output 13 value
  620. */
  621. static inline uint16_t mavlink_msg_servo_output_raw_get_servo13_raw(const mavlink_message_t* msg)
  622. {
  623. return _MAV_RETURN_uint16_t(msg, 29);
  624. }
  625. /**
  626. * @brief Get field servo14_raw from servo_output_raw message
  627. *
  628. * @return [us] Servo output 14 value
  629. */
  630. static inline uint16_t mavlink_msg_servo_output_raw_get_servo14_raw(const mavlink_message_t* msg)
  631. {
  632. return _MAV_RETURN_uint16_t(msg, 31);
  633. }
  634. /**
  635. * @brief Get field servo15_raw from servo_output_raw message
  636. *
  637. * @return [us] Servo output 15 value
  638. */
  639. static inline uint16_t mavlink_msg_servo_output_raw_get_servo15_raw(const mavlink_message_t* msg)
  640. {
  641. return _MAV_RETURN_uint16_t(msg, 33);
  642. }
  643. /**
  644. * @brief Get field servo16_raw from servo_output_raw message
  645. *
  646. * @return [us] Servo output 16 value
  647. */
  648. static inline uint16_t mavlink_msg_servo_output_raw_get_servo16_raw(const mavlink_message_t* msg)
  649. {
  650. return _MAV_RETURN_uint16_t(msg, 35);
  651. }
  652. /**
  653. * @brief Decode a servo_output_raw message into a struct
  654. *
  655. * @param msg The message to decode
  656. * @param servo_output_raw C-struct to decode the message contents into
  657. */
  658. static inline void mavlink_msg_servo_output_raw_decode(const mavlink_message_t* msg, mavlink_servo_output_raw_t* servo_output_raw)
  659. {
  660. #if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
  661. servo_output_raw->time_usec = mavlink_msg_servo_output_raw_get_time_usec(msg);
  662. servo_output_raw->servo1_raw = mavlink_msg_servo_output_raw_get_servo1_raw(msg);
  663. servo_output_raw->servo2_raw = mavlink_msg_servo_output_raw_get_servo2_raw(msg);
  664. servo_output_raw->servo3_raw = mavlink_msg_servo_output_raw_get_servo3_raw(msg);
  665. servo_output_raw->servo4_raw = mavlink_msg_servo_output_raw_get_servo4_raw(msg);
  666. servo_output_raw->servo5_raw = mavlink_msg_servo_output_raw_get_servo5_raw(msg);
  667. servo_output_raw->servo6_raw = mavlink_msg_servo_output_raw_get_servo6_raw(msg);
  668. servo_output_raw->servo7_raw = mavlink_msg_servo_output_raw_get_servo7_raw(msg);
  669. servo_output_raw->servo8_raw = mavlink_msg_servo_output_raw_get_servo8_raw(msg);
  670. servo_output_raw->port = mavlink_msg_servo_output_raw_get_port(msg);
  671. servo_output_raw->servo9_raw = mavlink_msg_servo_output_raw_get_servo9_raw(msg);
  672. servo_output_raw->servo10_raw = mavlink_msg_servo_output_raw_get_servo10_raw(msg);
  673. servo_output_raw->servo11_raw = mavlink_msg_servo_output_raw_get_servo11_raw(msg);
  674. servo_output_raw->servo12_raw = mavlink_msg_servo_output_raw_get_servo12_raw(msg);
  675. servo_output_raw->servo13_raw = mavlink_msg_servo_output_raw_get_servo13_raw(msg);
  676. servo_output_raw->servo14_raw = mavlink_msg_servo_output_raw_get_servo14_raw(msg);
  677. servo_output_raw->servo15_raw = mavlink_msg_servo_output_raw_get_servo15_raw(msg);
  678. servo_output_raw->servo16_raw = mavlink_msg_servo_output_raw_get_servo16_raw(msg);
  679. #else
  680. uint8_t len = msg->len < MAVLINK_MSG_ID_SERVO_OUTPUT_RAW_LEN? msg->len : MAVLINK_MSG_ID_SERVO_OUTPUT_RAW_LEN;
  681. memset(servo_output_raw, 0, MAVLINK_MSG_ID_SERVO_OUTPUT_RAW_LEN);
  682. memcpy(servo_output_raw, _MAV_PAYLOAD(msg), len);
  683. #endif
  684. }