mavlink_msg_shangfei_bms.h 40 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876
  1. #pragma once
  2. // MESSAGE SHANGFEI_BMS PACKING
  3. #define MAVLINK_MSG_ID_SHANGFEI_BMS 53310
  4. typedef struct __mavlink_shangfei_bms_t {
  5. uint32_t time_boot_ms; /*< [ms] Timestamp in ms from system boot.*/
  6. uint16_t bat_voltage; /*< [dV] Battery voltage.*/
  7. int16_t bat_current; /*< [dA] Battery current.*/
  8. uint16_t cell_max_volt; /*< [mV] Cell max voltage.*/
  9. uint16_t cell_min_volt; /*< [mV] Cell min voltage.*/
  10. uint16_t dc28_volt; /*< [dV] High volt-box voltage.*/
  11. uint16_t hvb_voltage; /*< [dV] High volt-box voltage.*/
  12. int8_t bat_maxtemp; /*< Battery Max_temperature.*/
  13. int8_t bat_mintemp; /*< Battery Min_temperature.*/
  14. uint8_t contactor_sta; /*< Contactor status.*/
  15. uint8_t soh_value; /*< [%] Battery SOH value.*/
  16. uint8_t max_volt_id; /*< Cell max voltage id.*/
  17. uint8_t min_volt_id; /*< Cell min voltage id.*/
  18. int8_t max_temp_id; /*< Cell max temperature id.*/
  19. int8_t min_temp_id; /*< Cell min temperature id.*/
  20. uint8_t fault_level; /*< Fault level.*/
  21. uint8_t irt_status; /*< Insulation Resistance Tester status.*/
  22. uint8_t cap_percent; /*< [%] Battery capacity.*/
  23. uint8_t bat_id; /*< Battery id.*/
  24. uint8_t err_code; /*< Error code.*/
  25. uint8_t dc28_current; /*< [A] High volt-box current.*/
  26. int8_t hvb_temp; /*< High volt-box temperature.*/
  27. uint8_t hvb_status; /*< High volt-box status.*/
  28. } mavlink_shangfei_bms_t;
  29. #define MAVLINK_MSG_ID_SHANGFEI_BMS_LEN 32
  30. #define MAVLINK_MSG_ID_SHANGFEI_BMS_MIN_LEN 32
  31. #define MAVLINK_MSG_ID_53310_LEN 32
  32. #define MAVLINK_MSG_ID_53310_MIN_LEN 32
  33. #define MAVLINK_MSG_ID_SHANGFEI_BMS_CRC 203
  34. #define MAVLINK_MSG_ID_53310_CRC 203
  35. #if MAVLINK_COMMAND_24BIT
  36. #define MAVLINK_MESSAGE_INFO_SHANGFEI_BMS { \
  37. 53310, \
  38. "SHANGFEI_BMS", \
  39. 23, \
  40. { { "time_boot_ms", NULL, MAVLINK_TYPE_UINT32_T, 0, 0, offsetof(mavlink_shangfei_bms_t, time_boot_ms) }, \
  41. { "bat_voltage", NULL, MAVLINK_TYPE_UINT16_T, 0, 4, offsetof(mavlink_shangfei_bms_t, bat_voltage) }, \
  42. { "bat_current", NULL, MAVLINK_TYPE_INT16_T, 0, 6, offsetof(mavlink_shangfei_bms_t, bat_current) }, \
  43. { "cell_max_volt", NULL, MAVLINK_TYPE_UINT16_T, 0, 8, offsetof(mavlink_shangfei_bms_t, cell_max_volt) }, \
  44. { "cell_min_volt", NULL, MAVLINK_TYPE_UINT16_T, 0, 10, offsetof(mavlink_shangfei_bms_t, cell_min_volt) }, \
  45. { "bat_maxtemp", NULL, MAVLINK_TYPE_INT8_T, 0, 16, offsetof(mavlink_shangfei_bms_t, bat_maxtemp) }, \
  46. { "bat_mintemp", NULL, MAVLINK_TYPE_INT8_T, 0, 17, offsetof(mavlink_shangfei_bms_t, bat_mintemp) }, \
  47. { "contactor_sta", NULL, MAVLINK_TYPE_UINT8_T, 0, 18, offsetof(mavlink_shangfei_bms_t, contactor_sta) }, \
  48. { "soh_value", NULL, MAVLINK_TYPE_UINT8_T, 0, 19, offsetof(mavlink_shangfei_bms_t, soh_value) }, \
  49. { "max_volt_id", NULL, MAVLINK_TYPE_UINT8_T, 0, 20, offsetof(mavlink_shangfei_bms_t, max_volt_id) }, \
  50. { "min_volt_id", NULL, MAVLINK_TYPE_UINT8_T, 0, 21, offsetof(mavlink_shangfei_bms_t, min_volt_id) }, \
  51. { "max_temp_id", NULL, MAVLINK_TYPE_INT8_T, 0, 22, offsetof(mavlink_shangfei_bms_t, max_temp_id) }, \
  52. { "min_temp_id", NULL, MAVLINK_TYPE_INT8_T, 0, 23, offsetof(mavlink_shangfei_bms_t, min_temp_id) }, \
  53. { "fault_level", NULL, MAVLINK_TYPE_UINT8_T, 0, 24, offsetof(mavlink_shangfei_bms_t, fault_level) }, \
  54. { "irt_status", NULL, MAVLINK_TYPE_UINT8_T, 0, 25, offsetof(mavlink_shangfei_bms_t, irt_status) }, \
  55. { "cap_percent", NULL, MAVLINK_TYPE_UINT8_T, 0, 26, offsetof(mavlink_shangfei_bms_t, cap_percent) }, \
  56. { "bat_id", NULL, MAVLINK_TYPE_UINT8_T, 0, 27, offsetof(mavlink_shangfei_bms_t, bat_id) }, \
  57. { "err_code", NULL, MAVLINK_TYPE_UINT8_T, 0, 28, offsetof(mavlink_shangfei_bms_t, err_code) }, \
  58. { "dc28_volt", NULL, MAVLINK_TYPE_UINT16_T, 0, 12, offsetof(mavlink_shangfei_bms_t, dc28_volt) }, \
  59. { "dc28_current", NULL, MAVLINK_TYPE_UINT8_T, 0, 29, offsetof(mavlink_shangfei_bms_t, dc28_current) }, \
  60. { "hvb_voltage", NULL, MAVLINK_TYPE_UINT16_T, 0, 14, offsetof(mavlink_shangfei_bms_t, hvb_voltage) }, \
  61. { "hvb_temp", NULL, MAVLINK_TYPE_INT8_T, 0, 30, offsetof(mavlink_shangfei_bms_t, hvb_temp) }, \
  62. { "hvb_status", NULL, MAVLINK_TYPE_UINT8_T, 0, 31, offsetof(mavlink_shangfei_bms_t, hvb_status) }, \
  63. } \
  64. }
  65. #else
  66. #define MAVLINK_MESSAGE_INFO_SHANGFEI_BMS { \
  67. "SHANGFEI_BMS", \
  68. 23, \
  69. { { "time_boot_ms", NULL, MAVLINK_TYPE_UINT32_T, 0, 0, offsetof(mavlink_shangfei_bms_t, time_boot_ms) }, \
  70. { "bat_voltage", NULL, MAVLINK_TYPE_UINT16_T, 0, 4, offsetof(mavlink_shangfei_bms_t, bat_voltage) }, \
  71. { "bat_current", NULL, MAVLINK_TYPE_INT16_T, 0, 6, offsetof(mavlink_shangfei_bms_t, bat_current) }, \
  72. { "cell_max_volt", NULL, MAVLINK_TYPE_UINT16_T, 0, 8, offsetof(mavlink_shangfei_bms_t, cell_max_volt) }, \
  73. { "cell_min_volt", NULL, MAVLINK_TYPE_UINT16_T, 0, 10, offsetof(mavlink_shangfei_bms_t, cell_min_volt) }, \
  74. { "bat_maxtemp", NULL, MAVLINK_TYPE_INT8_T, 0, 16, offsetof(mavlink_shangfei_bms_t, bat_maxtemp) }, \
  75. { "bat_mintemp", NULL, MAVLINK_TYPE_INT8_T, 0, 17, offsetof(mavlink_shangfei_bms_t, bat_mintemp) }, \
  76. { "contactor_sta", NULL, MAVLINK_TYPE_UINT8_T, 0, 18, offsetof(mavlink_shangfei_bms_t, contactor_sta) }, \
  77. { "soh_value", NULL, MAVLINK_TYPE_UINT8_T, 0, 19, offsetof(mavlink_shangfei_bms_t, soh_value) }, \
  78. { "max_volt_id", NULL, MAVLINK_TYPE_UINT8_T, 0, 20, offsetof(mavlink_shangfei_bms_t, max_volt_id) }, \
  79. { "min_volt_id", NULL, MAVLINK_TYPE_UINT8_T, 0, 21, offsetof(mavlink_shangfei_bms_t, min_volt_id) }, \
  80. { "max_temp_id", NULL, MAVLINK_TYPE_INT8_T, 0, 22, offsetof(mavlink_shangfei_bms_t, max_temp_id) }, \
  81. { "min_temp_id", NULL, MAVLINK_TYPE_INT8_T, 0, 23, offsetof(mavlink_shangfei_bms_t, min_temp_id) }, \
  82. { "fault_level", NULL, MAVLINK_TYPE_UINT8_T, 0, 24, offsetof(mavlink_shangfei_bms_t, fault_level) }, \
  83. { "irt_status", NULL, MAVLINK_TYPE_UINT8_T, 0, 25, offsetof(mavlink_shangfei_bms_t, irt_status) }, \
  84. { "cap_percent", NULL, MAVLINK_TYPE_UINT8_T, 0, 26, offsetof(mavlink_shangfei_bms_t, cap_percent) }, \
  85. { "bat_id", NULL, MAVLINK_TYPE_UINT8_T, 0, 27, offsetof(mavlink_shangfei_bms_t, bat_id) }, \
  86. { "err_code", NULL, MAVLINK_TYPE_UINT8_T, 0, 28, offsetof(mavlink_shangfei_bms_t, err_code) }, \
  87. { "dc28_volt", NULL, MAVLINK_TYPE_UINT16_T, 0, 12, offsetof(mavlink_shangfei_bms_t, dc28_volt) }, \
  88. { "dc28_current", NULL, MAVLINK_TYPE_UINT8_T, 0, 29, offsetof(mavlink_shangfei_bms_t, dc28_current) }, \
  89. { "hvb_voltage", NULL, MAVLINK_TYPE_UINT16_T, 0, 14, offsetof(mavlink_shangfei_bms_t, hvb_voltage) }, \
  90. { "hvb_temp", NULL, MAVLINK_TYPE_INT8_T, 0, 30, offsetof(mavlink_shangfei_bms_t, hvb_temp) }, \
  91. { "hvb_status", NULL, MAVLINK_TYPE_UINT8_T, 0, 31, offsetof(mavlink_shangfei_bms_t, hvb_status) }, \
  92. } \
  93. }
  94. #endif
  95. /**
  96. * @brief Pack a shangfei_bms message
  97. * @param system_id ID of this system
  98. * @param component_id ID of this component (e.g. 200 for IMU)
  99. * @param msg The MAVLink message to compress the data into
  100. *
  101. * @param time_boot_ms [ms] Timestamp in ms from system boot.
  102. * @param bat_voltage [dV] Battery voltage.
  103. * @param bat_current [dA] Battery current.
  104. * @param cell_max_volt [mV] Cell max voltage.
  105. * @param cell_min_volt [mV] Cell min voltage.
  106. * @param bat_maxtemp Battery Max_temperature.
  107. * @param bat_mintemp Battery Min_temperature.
  108. * @param contactor_sta Contactor status.
  109. * @param soh_value [%] Battery SOH value.
  110. * @param max_volt_id Cell max voltage id.
  111. * @param min_volt_id Cell min voltage id.
  112. * @param max_temp_id Cell max temperature id.
  113. * @param min_temp_id Cell min temperature id.
  114. * @param fault_level Fault level.
  115. * @param irt_status Insulation Resistance Tester status.
  116. * @param cap_percent [%] Battery capacity.
  117. * @param bat_id Battery id.
  118. * @param err_code Error code.
  119. * @param dc28_volt [dV] High volt-box voltage.
  120. * @param dc28_current [A] High volt-box current.
  121. * @param hvb_voltage [dV] High volt-box voltage.
  122. * @param hvb_temp High volt-box temperature.
  123. * @param hvb_status High volt-box status.
  124. * @return length of the message in bytes (excluding serial stream start sign)
  125. */
  126. static inline uint16_t mavlink_msg_shangfei_bms_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
  127. uint32_t time_boot_ms, uint16_t bat_voltage, int16_t bat_current, uint16_t cell_max_volt, uint16_t cell_min_volt, int8_t bat_maxtemp, int8_t bat_mintemp, uint8_t contactor_sta, uint8_t soh_value, uint8_t max_volt_id, uint8_t min_volt_id, int8_t max_temp_id, int8_t min_temp_id, uint8_t fault_level, uint8_t irt_status, uint8_t cap_percent, uint8_t bat_id, uint8_t err_code, uint16_t dc28_volt, uint8_t dc28_current, uint16_t hvb_voltage, int8_t hvb_temp, uint8_t hvb_status)
  128. {
  129. #if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
  130. char buf[MAVLINK_MSG_ID_SHANGFEI_BMS_LEN];
  131. _mav_put_uint32_t(buf, 0, time_boot_ms);
  132. _mav_put_uint16_t(buf, 4, bat_voltage);
  133. _mav_put_int16_t(buf, 6, bat_current);
  134. _mav_put_uint16_t(buf, 8, cell_max_volt);
  135. _mav_put_uint16_t(buf, 10, cell_min_volt);
  136. _mav_put_uint16_t(buf, 12, dc28_volt);
  137. _mav_put_uint16_t(buf, 14, hvb_voltage);
  138. _mav_put_int8_t(buf, 16, bat_maxtemp);
  139. _mav_put_int8_t(buf, 17, bat_mintemp);
  140. _mav_put_uint8_t(buf, 18, contactor_sta);
  141. _mav_put_uint8_t(buf, 19, soh_value);
  142. _mav_put_uint8_t(buf, 20, max_volt_id);
  143. _mav_put_uint8_t(buf, 21, min_volt_id);
  144. _mav_put_int8_t(buf, 22, max_temp_id);
  145. _mav_put_int8_t(buf, 23, min_temp_id);
  146. _mav_put_uint8_t(buf, 24, fault_level);
  147. _mav_put_uint8_t(buf, 25, irt_status);
  148. _mav_put_uint8_t(buf, 26, cap_percent);
  149. _mav_put_uint8_t(buf, 27, bat_id);
  150. _mav_put_uint8_t(buf, 28, err_code);
  151. _mav_put_uint8_t(buf, 29, dc28_current);
  152. _mav_put_int8_t(buf, 30, hvb_temp);
  153. _mav_put_uint8_t(buf, 31, hvb_status);
  154. memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_SHANGFEI_BMS_LEN);
  155. #else
  156. mavlink_shangfei_bms_t packet;
  157. packet.time_boot_ms = time_boot_ms;
  158. packet.bat_voltage = bat_voltage;
  159. packet.bat_current = bat_current;
  160. packet.cell_max_volt = cell_max_volt;
  161. packet.cell_min_volt = cell_min_volt;
  162. packet.dc28_volt = dc28_volt;
  163. packet.hvb_voltage = hvb_voltage;
  164. packet.bat_maxtemp = bat_maxtemp;
  165. packet.bat_mintemp = bat_mintemp;
  166. packet.contactor_sta = contactor_sta;
  167. packet.soh_value = soh_value;
  168. packet.max_volt_id = max_volt_id;
  169. packet.min_volt_id = min_volt_id;
  170. packet.max_temp_id = max_temp_id;
  171. packet.min_temp_id = min_temp_id;
  172. packet.fault_level = fault_level;
  173. packet.irt_status = irt_status;
  174. packet.cap_percent = cap_percent;
  175. packet.bat_id = bat_id;
  176. packet.err_code = err_code;
  177. packet.dc28_current = dc28_current;
  178. packet.hvb_temp = hvb_temp;
  179. packet.hvb_status = hvb_status;
  180. memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_SHANGFEI_BMS_LEN);
  181. #endif
  182. msg->msgid = MAVLINK_MSG_ID_SHANGFEI_BMS;
  183. return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_SHANGFEI_BMS_MIN_LEN, MAVLINK_MSG_ID_SHANGFEI_BMS_LEN, MAVLINK_MSG_ID_SHANGFEI_BMS_CRC);
  184. }
  185. /**
  186. * @brief Pack a shangfei_bms message
  187. * @param system_id ID of this system
  188. * @param component_id ID of this component (e.g. 200 for IMU)
  189. * @param status MAVLink status structure
  190. * @param msg The MAVLink message to compress the data into
  191. *
  192. * @param time_boot_ms [ms] Timestamp in ms from system boot.
  193. * @param bat_voltage [dV] Battery voltage.
  194. * @param bat_current [dA] Battery current.
  195. * @param cell_max_volt [mV] Cell max voltage.
  196. * @param cell_min_volt [mV] Cell min voltage.
  197. * @param bat_maxtemp Battery Max_temperature.
  198. * @param bat_mintemp Battery Min_temperature.
  199. * @param contactor_sta Contactor status.
  200. * @param soh_value [%] Battery SOH value.
  201. * @param max_volt_id Cell max voltage id.
  202. * @param min_volt_id Cell min voltage id.
  203. * @param max_temp_id Cell max temperature id.
  204. * @param min_temp_id Cell min temperature id.
  205. * @param fault_level Fault level.
  206. * @param irt_status Insulation Resistance Tester status.
  207. * @param cap_percent [%] Battery capacity.
  208. * @param bat_id Battery id.
  209. * @param err_code Error code.
  210. * @param dc28_volt [dV] High volt-box voltage.
  211. * @param dc28_current [A] High volt-box current.
  212. * @param hvb_voltage [dV] High volt-box voltage.
  213. * @param hvb_temp High volt-box temperature.
  214. * @param hvb_status High volt-box status.
  215. * @return length of the message in bytes (excluding serial stream start sign)
  216. */
  217. static inline uint16_t mavlink_msg_shangfei_bms_pack_status(uint8_t system_id, uint8_t component_id, mavlink_status_t *_status, mavlink_message_t* msg,
  218. uint32_t time_boot_ms, uint16_t bat_voltage, int16_t bat_current, uint16_t cell_max_volt, uint16_t cell_min_volt, int8_t bat_maxtemp, int8_t bat_mintemp, uint8_t contactor_sta, uint8_t soh_value, uint8_t max_volt_id, uint8_t min_volt_id, int8_t max_temp_id, int8_t min_temp_id, uint8_t fault_level, uint8_t irt_status, uint8_t cap_percent, uint8_t bat_id, uint8_t err_code, uint16_t dc28_volt, uint8_t dc28_current, uint16_t hvb_voltage, int8_t hvb_temp, uint8_t hvb_status)
  219. {
  220. #if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
  221. char buf[MAVLINK_MSG_ID_SHANGFEI_BMS_LEN];
  222. _mav_put_uint32_t(buf, 0, time_boot_ms);
  223. _mav_put_uint16_t(buf, 4, bat_voltage);
  224. _mav_put_int16_t(buf, 6, bat_current);
  225. _mav_put_uint16_t(buf, 8, cell_max_volt);
  226. _mav_put_uint16_t(buf, 10, cell_min_volt);
  227. _mav_put_uint16_t(buf, 12, dc28_volt);
  228. _mav_put_uint16_t(buf, 14, hvb_voltage);
  229. _mav_put_int8_t(buf, 16, bat_maxtemp);
  230. _mav_put_int8_t(buf, 17, bat_mintemp);
  231. _mav_put_uint8_t(buf, 18, contactor_sta);
  232. _mav_put_uint8_t(buf, 19, soh_value);
  233. _mav_put_uint8_t(buf, 20, max_volt_id);
  234. _mav_put_uint8_t(buf, 21, min_volt_id);
  235. _mav_put_int8_t(buf, 22, max_temp_id);
  236. _mav_put_int8_t(buf, 23, min_temp_id);
  237. _mav_put_uint8_t(buf, 24, fault_level);
  238. _mav_put_uint8_t(buf, 25, irt_status);
  239. _mav_put_uint8_t(buf, 26, cap_percent);
  240. _mav_put_uint8_t(buf, 27, bat_id);
  241. _mav_put_uint8_t(buf, 28, err_code);
  242. _mav_put_uint8_t(buf, 29, dc28_current);
  243. _mav_put_int8_t(buf, 30, hvb_temp);
  244. _mav_put_uint8_t(buf, 31, hvb_status);
  245. memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_SHANGFEI_BMS_LEN);
  246. #else
  247. mavlink_shangfei_bms_t packet;
  248. packet.time_boot_ms = time_boot_ms;
  249. packet.bat_voltage = bat_voltage;
  250. packet.bat_current = bat_current;
  251. packet.cell_max_volt = cell_max_volt;
  252. packet.cell_min_volt = cell_min_volt;
  253. packet.dc28_volt = dc28_volt;
  254. packet.hvb_voltage = hvb_voltage;
  255. packet.bat_maxtemp = bat_maxtemp;
  256. packet.bat_mintemp = bat_mintemp;
  257. packet.contactor_sta = contactor_sta;
  258. packet.soh_value = soh_value;
  259. packet.max_volt_id = max_volt_id;
  260. packet.min_volt_id = min_volt_id;
  261. packet.max_temp_id = max_temp_id;
  262. packet.min_temp_id = min_temp_id;
  263. packet.fault_level = fault_level;
  264. packet.irt_status = irt_status;
  265. packet.cap_percent = cap_percent;
  266. packet.bat_id = bat_id;
  267. packet.err_code = err_code;
  268. packet.dc28_current = dc28_current;
  269. packet.hvb_temp = hvb_temp;
  270. packet.hvb_status = hvb_status;
  271. memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_SHANGFEI_BMS_LEN);
  272. #endif
  273. msg->msgid = MAVLINK_MSG_ID_SHANGFEI_BMS;
  274. #if MAVLINK_CRC_EXTRA
  275. return mavlink_finalize_message_buffer(msg, system_id, component_id, _status, MAVLINK_MSG_ID_SHANGFEI_BMS_MIN_LEN, MAVLINK_MSG_ID_SHANGFEI_BMS_LEN, MAVLINK_MSG_ID_SHANGFEI_BMS_CRC);
  276. #else
  277. return mavlink_finalize_message_buffer(msg, system_id, component_id, _status, MAVLINK_MSG_ID_SHANGFEI_BMS_MIN_LEN, MAVLINK_MSG_ID_SHANGFEI_BMS_LEN);
  278. #endif
  279. }
  280. /**
  281. * @brief Pack a shangfei_bms message on a channel
  282. * @param system_id ID of this system
  283. * @param component_id ID of this component (e.g. 200 for IMU)
  284. * @param chan The MAVLink channel this message will be sent over
  285. * @param msg The MAVLink message to compress the data into
  286. * @param time_boot_ms [ms] Timestamp in ms from system boot.
  287. * @param bat_voltage [dV] Battery voltage.
  288. * @param bat_current [dA] Battery current.
  289. * @param cell_max_volt [mV] Cell max voltage.
  290. * @param cell_min_volt [mV] Cell min voltage.
  291. * @param bat_maxtemp Battery Max_temperature.
  292. * @param bat_mintemp Battery Min_temperature.
  293. * @param contactor_sta Contactor status.
  294. * @param soh_value [%] Battery SOH value.
  295. * @param max_volt_id Cell max voltage id.
  296. * @param min_volt_id Cell min voltage id.
  297. * @param max_temp_id Cell max temperature id.
  298. * @param min_temp_id Cell min temperature id.
  299. * @param fault_level Fault level.
  300. * @param irt_status Insulation Resistance Tester status.
  301. * @param cap_percent [%] Battery capacity.
  302. * @param bat_id Battery id.
  303. * @param err_code Error code.
  304. * @param dc28_volt [dV] High volt-box voltage.
  305. * @param dc28_current [A] High volt-box current.
  306. * @param hvb_voltage [dV] High volt-box voltage.
  307. * @param hvb_temp High volt-box temperature.
  308. * @param hvb_status High volt-box status.
  309. * @return length of the message in bytes (excluding serial stream start sign)
  310. */
  311. static inline uint16_t mavlink_msg_shangfei_bms_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
  312. mavlink_message_t* msg,
  313. uint32_t time_boot_ms,uint16_t bat_voltage,int16_t bat_current,uint16_t cell_max_volt,uint16_t cell_min_volt,int8_t bat_maxtemp,int8_t bat_mintemp,uint8_t contactor_sta,uint8_t soh_value,uint8_t max_volt_id,uint8_t min_volt_id,int8_t max_temp_id,int8_t min_temp_id,uint8_t fault_level,uint8_t irt_status,uint8_t cap_percent,uint8_t bat_id,uint8_t err_code,uint16_t dc28_volt,uint8_t dc28_current,uint16_t hvb_voltage,int8_t hvb_temp,uint8_t hvb_status)
  314. {
  315. #if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
  316. char buf[MAVLINK_MSG_ID_SHANGFEI_BMS_LEN];
  317. _mav_put_uint32_t(buf, 0, time_boot_ms);
  318. _mav_put_uint16_t(buf, 4, bat_voltage);
  319. _mav_put_int16_t(buf, 6, bat_current);
  320. _mav_put_uint16_t(buf, 8, cell_max_volt);
  321. _mav_put_uint16_t(buf, 10, cell_min_volt);
  322. _mav_put_uint16_t(buf, 12, dc28_volt);
  323. _mav_put_uint16_t(buf, 14, hvb_voltage);
  324. _mav_put_int8_t(buf, 16, bat_maxtemp);
  325. _mav_put_int8_t(buf, 17, bat_mintemp);
  326. _mav_put_uint8_t(buf, 18, contactor_sta);
  327. _mav_put_uint8_t(buf, 19, soh_value);
  328. _mav_put_uint8_t(buf, 20, max_volt_id);
  329. _mav_put_uint8_t(buf, 21, min_volt_id);
  330. _mav_put_int8_t(buf, 22, max_temp_id);
  331. _mav_put_int8_t(buf, 23, min_temp_id);
  332. _mav_put_uint8_t(buf, 24, fault_level);
  333. _mav_put_uint8_t(buf, 25, irt_status);
  334. _mav_put_uint8_t(buf, 26, cap_percent);
  335. _mav_put_uint8_t(buf, 27, bat_id);
  336. _mav_put_uint8_t(buf, 28, err_code);
  337. _mav_put_uint8_t(buf, 29, dc28_current);
  338. _mav_put_int8_t(buf, 30, hvb_temp);
  339. _mav_put_uint8_t(buf, 31, hvb_status);
  340. memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_SHANGFEI_BMS_LEN);
  341. #else
  342. mavlink_shangfei_bms_t packet;
  343. packet.time_boot_ms = time_boot_ms;
  344. packet.bat_voltage = bat_voltage;
  345. packet.bat_current = bat_current;
  346. packet.cell_max_volt = cell_max_volt;
  347. packet.cell_min_volt = cell_min_volt;
  348. packet.dc28_volt = dc28_volt;
  349. packet.hvb_voltage = hvb_voltage;
  350. packet.bat_maxtemp = bat_maxtemp;
  351. packet.bat_mintemp = bat_mintemp;
  352. packet.contactor_sta = contactor_sta;
  353. packet.soh_value = soh_value;
  354. packet.max_volt_id = max_volt_id;
  355. packet.min_volt_id = min_volt_id;
  356. packet.max_temp_id = max_temp_id;
  357. packet.min_temp_id = min_temp_id;
  358. packet.fault_level = fault_level;
  359. packet.irt_status = irt_status;
  360. packet.cap_percent = cap_percent;
  361. packet.bat_id = bat_id;
  362. packet.err_code = err_code;
  363. packet.dc28_current = dc28_current;
  364. packet.hvb_temp = hvb_temp;
  365. packet.hvb_status = hvb_status;
  366. memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_SHANGFEI_BMS_LEN);
  367. #endif
  368. msg->msgid = MAVLINK_MSG_ID_SHANGFEI_BMS;
  369. return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_SHANGFEI_BMS_MIN_LEN, MAVLINK_MSG_ID_SHANGFEI_BMS_LEN, MAVLINK_MSG_ID_SHANGFEI_BMS_CRC);
  370. }
  371. /**
  372. * @brief Encode a shangfei_bms struct
  373. *
  374. * @param system_id ID of this system
  375. * @param component_id ID of this component (e.g. 200 for IMU)
  376. * @param msg The MAVLink message to compress the data into
  377. * @param shangfei_bms C-struct to read the message contents from
  378. */
  379. static inline uint16_t mavlink_msg_shangfei_bms_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_shangfei_bms_t* shangfei_bms)
  380. {
  381. return mavlink_msg_shangfei_bms_pack(system_id, component_id, msg, shangfei_bms->time_boot_ms, shangfei_bms->bat_voltage, shangfei_bms->bat_current, shangfei_bms->cell_max_volt, shangfei_bms->cell_min_volt, shangfei_bms->bat_maxtemp, shangfei_bms->bat_mintemp, shangfei_bms->contactor_sta, shangfei_bms->soh_value, shangfei_bms->max_volt_id, shangfei_bms->min_volt_id, shangfei_bms->max_temp_id, shangfei_bms->min_temp_id, shangfei_bms->fault_level, shangfei_bms->irt_status, shangfei_bms->cap_percent, shangfei_bms->bat_id, shangfei_bms->err_code, shangfei_bms->dc28_volt, shangfei_bms->dc28_current, shangfei_bms->hvb_voltage, shangfei_bms->hvb_temp, shangfei_bms->hvb_status);
  382. }
  383. /**
  384. * @brief Encode a shangfei_bms struct on a channel
  385. *
  386. * @param system_id ID of this system
  387. * @param component_id ID of this component (e.g. 200 for IMU)
  388. * @param chan The MAVLink channel this message will be sent over
  389. * @param msg The MAVLink message to compress the data into
  390. * @param shangfei_bms C-struct to read the message contents from
  391. */
  392. static inline uint16_t mavlink_msg_shangfei_bms_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_shangfei_bms_t* shangfei_bms)
  393. {
  394. return mavlink_msg_shangfei_bms_pack_chan(system_id, component_id, chan, msg, shangfei_bms->time_boot_ms, shangfei_bms->bat_voltage, shangfei_bms->bat_current, shangfei_bms->cell_max_volt, shangfei_bms->cell_min_volt, shangfei_bms->bat_maxtemp, shangfei_bms->bat_mintemp, shangfei_bms->contactor_sta, shangfei_bms->soh_value, shangfei_bms->max_volt_id, shangfei_bms->min_volt_id, shangfei_bms->max_temp_id, shangfei_bms->min_temp_id, shangfei_bms->fault_level, shangfei_bms->irt_status, shangfei_bms->cap_percent, shangfei_bms->bat_id, shangfei_bms->err_code, shangfei_bms->dc28_volt, shangfei_bms->dc28_current, shangfei_bms->hvb_voltage, shangfei_bms->hvb_temp, shangfei_bms->hvb_status);
  395. }
  396. /**
  397. * @brief Encode a shangfei_bms struct with provided status structure
  398. *
  399. * @param system_id ID of this system
  400. * @param component_id ID of this component (e.g. 200 for IMU)
  401. * @param status MAVLink status structure
  402. * @param msg The MAVLink message to compress the data into
  403. * @param shangfei_bms C-struct to read the message contents from
  404. */
  405. static inline uint16_t mavlink_msg_shangfei_bms_encode_status(uint8_t system_id, uint8_t component_id, mavlink_status_t* _status, mavlink_message_t* msg, const mavlink_shangfei_bms_t* shangfei_bms)
  406. {
  407. return mavlink_msg_shangfei_bms_pack_status(system_id, component_id, _status, msg, shangfei_bms->time_boot_ms, shangfei_bms->bat_voltage, shangfei_bms->bat_current, shangfei_bms->cell_max_volt, shangfei_bms->cell_min_volt, shangfei_bms->bat_maxtemp, shangfei_bms->bat_mintemp, shangfei_bms->contactor_sta, shangfei_bms->soh_value, shangfei_bms->max_volt_id, shangfei_bms->min_volt_id, shangfei_bms->max_temp_id, shangfei_bms->min_temp_id, shangfei_bms->fault_level, shangfei_bms->irt_status, shangfei_bms->cap_percent, shangfei_bms->bat_id, shangfei_bms->err_code, shangfei_bms->dc28_volt, shangfei_bms->dc28_current, shangfei_bms->hvb_voltage, shangfei_bms->hvb_temp, shangfei_bms->hvb_status);
  408. }
  409. /**
  410. * @brief Send a shangfei_bms message
  411. * @param chan MAVLink channel to send the message
  412. *
  413. * @param time_boot_ms [ms] Timestamp in ms from system boot.
  414. * @param bat_voltage [dV] Battery voltage.
  415. * @param bat_current [dA] Battery current.
  416. * @param cell_max_volt [mV] Cell max voltage.
  417. * @param cell_min_volt [mV] Cell min voltage.
  418. * @param bat_maxtemp Battery Max_temperature.
  419. * @param bat_mintemp Battery Min_temperature.
  420. * @param contactor_sta Contactor status.
  421. * @param soh_value [%] Battery SOH value.
  422. * @param max_volt_id Cell max voltage id.
  423. * @param min_volt_id Cell min voltage id.
  424. * @param max_temp_id Cell max temperature id.
  425. * @param min_temp_id Cell min temperature id.
  426. * @param fault_level Fault level.
  427. * @param irt_status Insulation Resistance Tester status.
  428. * @param cap_percent [%] Battery capacity.
  429. * @param bat_id Battery id.
  430. * @param err_code Error code.
  431. * @param dc28_volt [dV] High volt-box voltage.
  432. * @param dc28_current [A] High volt-box current.
  433. * @param hvb_voltage [dV] High volt-box voltage.
  434. * @param hvb_temp High volt-box temperature.
  435. * @param hvb_status High volt-box status.
  436. */
  437. #ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
  438. static inline void mavlink_msg_shangfei_bms_send(mavlink_channel_t chan, uint32_t time_boot_ms, uint16_t bat_voltage, int16_t bat_current, uint16_t cell_max_volt, uint16_t cell_min_volt, int8_t bat_maxtemp, int8_t bat_mintemp, uint8_t contactor_sta, uint8_t soh_value, uint8_t max_volt_id, uint8_t min_volt_id, int8_t max_temp_id, int8_t min_temp_id, uint8_t fault_level, uint8_t irt_status, uint8_t cap_percent, uint8_t bat_id, uint8_t err_code, uint16_t dc28_volt, uint8_t dc28_current, uint16_t hvb_voltage, int8_t hvb_temp, uint8_t hvb_status)
  439. {
  440. #if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
  441. char buf[MAVLINK_MSG_ID_SHANGFEI_BMS_LEN];
  442. _mav_put_uint32_t(buf, 0, time_boot_ms);
  443. _mav_put_uint16_t(buf, 4, bat_voltage);
  444. _mav_put_int16_t(buf, 6, bat_current);
  445. _mav_put_uint16_t(buf, 8, cell_max_volt);
  446. _mav_put_uint16_t(buf, 10, cell_min_volt);
  447. _mav_put_uint16_t(buf, 12, dc28_volt);
  448. _mav_put_uint16_t(buf, 14, hvb_voltage);
  449. _mav_put_int8_t(buf, 16, bat_maxtemp);
  450. _mav_put_int8_t(buf, 17, bat_mintemp);
  451. _mav_put_uint8_t(buf, 18, contactor_sta);
  452. _mav_put_uint8_t(buf, 19, soh_value);
  453. _mav_put_uint8_t(buf, 20, max_volt_id);
  454. _mav_put_uint8_t(buf, 21, min_volt_id);
  455. _mav_put_int8_t(buf, 22, max_temp_id);
  456. _mav_put_int8_t(buf, 23, min_temp_id);
  457. _mav_put_uint8_t(buf, 24, fault_level);
  458. _mav_put_uint8_t(buf, 25, irt_status);
  459. _mav_put_uint8_t(buf, 26, cap_percent);
  460. _mav_put_uint8_t(buf, 27, bat_id);
  461. _mav_put_uint8_t(buf, 28, err_code);
  462. _mav_put_uint8_t(buf, 29, dc28_current);
  463. _mav_put_int8_t(buf, 30, hvb_temp);
  464. _mav_put_uint8_t(buf, 31, hvb_status);
  465. _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SHANGFEI_BMS, buf, MAVLINK_MSG_ID_SHANGFEI_BMS_MIN_LEN, MAVLINK_MSG_ID_SHANGFEI_BMS_LEN, MAVLINK_MSG_ID_SHANGFEI_BMS_CRC);
  466. #else
  467. mavlink_shangfei_bms_t packet;
  468. packet.time_boot_ms = time_boot_ms;
  469. packet.bat_voltage = bat_voltage;
  470. packet.bat_current = bat_current;
  471. packet.cell_max_volt = cell_max_volt;
  472. packet.cell_min_volt = cell_min_volt;
  473. packet.dc28_volt = dc28_volt;
  474. packet.hvb_voltage = hvb_voltage;
  475. packet.bat_maxtemp = bat_maxtemp;
  476. packet.bat_mintemp = bat_mintemp;
  477. packet.contactor_sta = contactor_sta;
  478. packet.soh_value = soh_value;
  479. packet.max_volt_id = max_volt_id;
  480. packet.min_volt_id = min_volt_id;
  481. packet.max_temp_id = max_temp_id;
  482. packet.min_temp_id = min_temp_id;
  483. packet.fault_level = fault_level;
  484. packet.irt_status = irt_status;
  485. packet.cap_percent = cap_percent;
  486. packet.bat_id = bat_id;
  487. packet.err_code = err_code;
  488. packet.dc28_current = dc28_current;
  489. packet.hvb_temp = hvb_temp;
  490. packet.hvb_status = hvb_status;
  491. _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SHANGFEI_BMS, (const char *)&packet, MAVLINK_MSG_ID_SHANGFEI_BMS_MIN_LEN, MAVLINK_MSG_ID_SHANGFEI_BMS_LEN, MAVLINK_MSG_ID_SHANGFEI_BMS_CRC);
  492. #endif
  493. }
  494. /**
  495. * @brief Send a shangfei_bms message
  496. * @param chan MAVLink channel to send the message
  497. * @param struct The MAVLink struct to serialize
  498. */
  499. static inline void mavlink_msg_shangfei_bms_send_struct(mavlink_channel_t chan, const mavlink_shangfei_bms_t* shangfei_bms)
  500. {
  501. #if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
  502. mavlink_msg_shangfei_bms_send(chan, shangfei_bms->time_boot_ms, shangfei_bms->bat_voltage, shangfei_bms->bat_current, shangfei_bms->cell_max_volt, shangfei_bms->cell_min_volt, shangfei_bms->bat_maxtemp, shangfei_bms->bat_mintemp, shangfei_bms->contactor_sta, shangfei_bms->soh_value, shangfei_bms->max_volt_id, shangfei_bms->min_volt_id, shangfei_bms->max_temp_id, shangfei_bms->min_temp_id, shangfei_bms->fault_level, shangfei_bms->irt_status, shangfei_bms->cap_percent, shangfei_bms->bat_id, shangfei_bms->err_code, shangfei_bms->dc28_volt, shangfei_bms->dc28_current, shangfei_bms->hvb_voltage, shangfei_bms->hvb_temp, shangfei_bms->hvb_status);
  503. #else
  504. _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SHANGFEI_BMS, (const char *)shangfei_bms, MAVLINK_MSG_ID_SHANGFEI_BMS_MIN_LEN, MAVLINK_MSG_ID_SHANGFEI_BMS_LEN, MAVLINK_MSG_ID_SHANGFEI_BMS_CRC);
  505. #endif
  506. }
  507. #if MAVLINK_MSG_ID_SHANGFEI_BMS_LEN <= MAVLINK_MAX_PAYLOAD_LEN
  508. /*
  509. This variant of _send() can be used to save stack space by re-using
  510. memory from the receive buffer. The caller provides a
  511. mavlink_message_t which is the size of a full mavlink message. This
  512. is usually the receive buffer for the channel, and allows a reply to an
  513. incoming message with minimum stack space usage.
  514. */
  515. static inline void mavlink_msg_shangfei_bms_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan, uint32_t time_boot_ms, uint16_t bat_voltage, int16_t bat_current, uint16_t cell_max_volt, uint16_t cell_min_volt, int8_t bat_maxtemp, int8_t bat_mintemp, uint8_t contactor_sta, uint8_t soh_value, uint8_t max_volt_id, uint8_t min_volt_id, int8_t max_temp_id, int8_t min_temp_id, uint8_t fault_level, uint8_t irt_status, uint8_t cap_percent, uint8_t bat_id, uint8_t err_code, uint16_t dc28_volt, uint8_t dc28_current, uint16_t hvb_voltage, int8_t hvb_temp, uint8_t hvb_status)
  516. {
  517. #if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
  518. char *buf = (char *)msgbuf;
  519. _mav_put_uint32_t(buf, 0, time_boot_ms);
  520. _mav_put_uint16_t(buf, 4, bat_voltage);
  521. _mav_put_int16_t(buf, 6, bat_current);
  522. _mav_put_uint16_t(buf, 8, cell_max_volt);
  523. _mav_put_uint16_t(buf, 10, cell_min_volt);
  524. _mav_put_uint16_t(buf, 12, dc28_volt);
  525. _mav_put_uint16_t(buf, 14, hvb_voltage);
  526. _mav_put_int8_t(buf, 16, bat_maxtemp);
  527. _mav_put_int8_t(buf, 17, bat_mintemp);
  528. _mav_put_uint8_t(buf, 18, contactor_sta);
  529. _mav_put_uint8_t(buf, 19, soh_value);
  530. _mav_put_uint8_t(buf, 20, max_volt_id);
  531. _mav_put_uint8_t(buf, 21, min_volt_id);
  532. _mav_put_int8_t(buf, 22, max_temp_id);
  533. _mav_put_int8_t(buf, 23, min_temp_id);
  534. _mav_put_uint8_t(buf, 24, fault_level);
  535. _mav_put_uint8_t(buf, 25, irt_status);
  536. _mav_put_uint8_t(buf, 26, cap_percent);
  537. _mav_put_uint8_t(buf, 27, bat_id);
  538. _mav_put_uint8_t(buf, 28, err_code);
  539. _mav_put_uint8_t(buf, 29, dc28_current);
  540. _mav_put_int8_t(buf, 30, hvb_temp);
  541. _mav_put_uint8_t(buf, 31, hvb_status);
  542. _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SHANGFEI_BMS, buf, MAVLINK_MSG_ID_SHANGFEI_BMS_MIN_LEN, MAVLINK_MSG_ID_SHANGFEI_BMS_LEN, MAVLINK_MSG_ID_SHANGFEI_BMS_CRC);
  543. #else
  544. mavlink_shangfei_bms_t *packet = (mavlink_shangfei_bms_t *)msgbuf;
  545. packet->time_boot_ms = time_boot_ms;
  546. packet->bat_voltage = bat_voltage;
  547. packet->bat_current = bat_current;
  548. packet->cell_max_volt = cell_max_volt;
  549. packet->cell_min_volt = cell_min_volt;
  550. packet->dc28_volt = dc28_volt;
  551. packet->hvb_voltage = hvb_voltage;
  552. packet->bat_maxtemp = bat_maxtemp;
  553. packet->bat_mintemp = bat_mintemp;
  554. packet->contactor_sta = contactor_sta;
  555. packet->soh_value = soh_value;
  556. packet->max_volt_id = max_volt_id;
  557. packet->min_volt_id = min_volt_id;
  558. packet->max_temp_id = max_temp_id;
  559. packet->min_temp_id = min_temp_id;
  560. packet->fault_level = fault_level;
  561. packet->irt_status = irt_status;
  562. packet->cap_percent = cap_percent;
  563. packet->bat_id = bat_id;
  564. packet->err_code = err_code;
  565. packet->dc28_current = dc28_current;
  566. packet->hvb_temp = hvb_temp;
  567. packet->hvb_status = hvb_status;
  568. _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_SHANGFEI_BMS, (const char *)packet, MAVLINK_MSG_ID_SHANGFEI_BMS_MIN_LEN, MAVLINK_MSG_ID_SHANGFEI_BMS_LEN, MAVLINK_MSG_ID_SHANGFEI_BMS_CRC);
  569. #endif
  570. }
  571. #endif
  572. #endif
  573. // MESSAGE SHANGFEI_BMS UNPACKING
  574. /**
  575. * @brief Get field time_boot_ms from shangfei_bms message
  576. *
  577. * @return [ms] Timestamp in ms from system boot.
  578. */
  579. static inline uint32_t mavlink_msg_shangfei_bms_get_time_boot_ms(const mavlink_message_t* msg)
  580. {
  581. return _MAV_RETURN_uint32_t(msg, 0);
  582. }
  583. /**
  584. * @brief Get field bat_voltage from shangfei_bms message
  585. *
  586. * @return [dV] Battery voltage.
  587. */
  588. static inline uint16_t mavlink_msg_shangfei_bms_get_bat_voltage(const mavlink_message_t* msg)
  589. {
  590. return _MAV_RETURN_uint16_t(msg, 4);
  591. }
  592. /**
  593. * @brief Get field bat_current from shangfei_bms message
  594. *
  595. * @return [dA] Battery current.
  596. */
  597. static inline int16_t mavlink_msg_shangfei_bms_get_bat_current(const mavlink_message_t* msg)
  598. {
  599. return _MAV_RETURN_int16_t(msg, 6);
  600. }
  601. /**
  602. * @brief Get field cell_max_volt from shangfei_bms message
  603. *
  604. * @return [mV] Cell max voltage.
  605. */
  606. static inline uint16_t mavlink_msg_shangfei_bms_get_cell_max_volt(const mavlink_message_t* msg)
  607. {
  608. return _MAV_RETURN_uint16_t(msg, 8);
  609. }
  610. /**
  611. * @brief Get field cell_min_volt from shangfei_bms message
  612. *
  613. * @return [mV] Cell min voltage.
  614. */
  615. static inline uint16_t mavlink_msg_shangfei_bms_get_cell_min_volt(const mavlink_message_t* msg)
  616. {
  617. return _MAV_RETURN_uint16_t(msg, 10);
  618. }
  619. /**
  620. * @brief Get field bat_maxtemp from shangfei_bms message
  621. *
  622. * @return Battery Max_temperature.
  623. */
  624. static inline int8_t mavlink_msg_shangfei_bms_get_bat_maxtemp(const mavlink_message_t* msg)
  625. {
  626. return _MAV_RETURN_int8_t(msg, 16);
  627. }
  628. /**
  629. * @brief Get field bat_mintemp from shangfei_bms message
  630. *
  631. * @return Battery Min_temperature.
  632. */
  633. static inline int8_t mavlink_msg_shangfei_bms_get_bat_mintemp(const mavlink_message_t* msg)
  634. {
  635. return _MAV_RETURN_int8_t(msg, 17);
  636. }
  637. /**
  638. * @brief Get field contactor_sta from shangfei_bms message
  639. *
  640. * @return Contactor status.
  641. */
  642. static inline uint8_t mavlink_msg_shangfei_bms_get_contactor_sta(const mavlink_message_t* msg)
  643. {
  644. return _MAV_RETURN_uint8_t(msg, 18);
  645. }
  646. /**
  647. * @brief Get field soh_value from shangfei_bms message
  648. *
  649. * @return [%] Battery SOH value.
  650. */
  651. static inline uint8_t mavlink_msg_shangfei_bms_get_soh_value(const mavlink_message_t* msg)
  652. {
  653. return _MAV_RETURN_uint8_t(msg, 19);
  654. }
  655. /**
  656. * @brief Get field max_volt_id from shangfei_bms message
  657. *
  658. * @return Cell max voltage id.
  659. */
  660. static inline uint8_t mavlink_msg_shangfei_bms_get_max_volt_id(const mavlink_message_t* msg)
  661. {
  662. return _MAV_RETURN_uint8_t(msg, 20);
  663. }
  664. /**
  665. * @brief Get field min_volt_id from shangfei_bms message
  666. *
  667. * @return Cell min voltage id.
  668. */
  669. static inline uint8_t mavlink_msg_shangfei_bms_get_min_volt_id(const mavlink_message_t* msg)
  670. {
  671. return _MAV_RETURN_uint8_t(msg, 21);
  672. }
  673. /**
  674. * @brief Get field max_temp_id from shangfei_bms message
  675. *
  676. * @return Cell max temperature id.
  677. */
  678. static inline int8_t mavlink_msg_shangfei_bms_get_max_temp_id(const mavlink_message_t* msg)
  679. {
  680. return _MAV_RETURN_int8_t(msg, 22);
  681. }
  682. /**
  683. * @brief Get field min_temp_id from shangfei_bms message
  684. *
  685. * @return Cell min temperature id.
  686. */
  687. static inline int8_t mavlink_msg_shangfei_bms_get_min_temp_id(const mavlink_message_t* msg)
  688. {
  689. return _MAV_RETURN_int8_t(msg, 23);
  690. }
  691. /**
  692. * @brief Get field fault_level from shangfei_bms message
  693. *
  694. * @return Fault level.
  695. */
  696. static inline uint8_t mavlink_msg_shangfei_bms_get_fault_level(const mavlink_message_t* msg)
  697. {
  698. return _MAV_RETURN_uint8_t(msg, 24);
  699. }
  700. /**
  701. * @brief Get field irt_status from shangfei_bms message
  702. *
  703. * @return Insulation Resistance Tester status.
  704. */
  705. static inline uint8_t mavlink_msg_shangfei_bms_get_irt_status(const mavlink_message_t* msg)
  706. {
  707. return _MAV_RETURN_uint8_t(msg, 25);
  708. }
  709. /**
  710. * @brief Get field cap_percent from shangfei_bms message
  711. *
  712. * @return [%] Battery capacity.
  713. */
  714. static inline uint8_t mavlink_msg_shangfei_bms_get_cap_percent(const mavlink_message_t* msg)
  715. {
  716. return _MAV_RETURN_uint8_t(msg, 26);
  717. }
  718. /**
  719. * @brief Get field bat_id from shangfei_bms message
  720. *
  721. * @return Battery id.
  722. */
  723. static inline uint8_t mavlink_msg_shangfei_bms_get_bat_id(const mavlink_message_t* msg)
  724. {
  725. return _MAV_RETURN_uint8_t(msg, 27);
  726. }
  727. /**
  728. * @brief Get field err_code from shangfei_bms message
  729. *
  730. * @return Error code.
  731. */
  732. static inline uint8_t mavlink_msg_shangfei_bms_get_err_code(const mavlink_message_t* msg)
  733. {
  734. return _MAV_RETURN_uint8_t(msg, 28);
  735. }
  736. /**
  737. * @brief Get field dc28_volt from shangfei_bms message
  738. *
  739. * @return [dV] High volt-box voltage.
  740. */
  741. static inline uint16_t mavlink_msg_shangfei_bms_get_dc28_volt(const mavlink_message_t* msg)
  742. {
  743. return _MAV_RETURN_uint16_t(msg, 12);
  744. }
  745. /**
  746. * @brief Get field dc28_current from shangfei_bms message
  747. *
  748. * @return [A] High volt-box current.
  749. */
  750. static inline uint8_t mavlink_msg_shangfei_bms_get_dc28_current(const mavlink_message_t* msg)
  751. {
  752. return _MAV_RETURN_uint8_t(msg, 29);
  753. }
  754. /**
  755. * @brief Get field hvb_voltage from shangfei_bms message
  756. *
  757. * @return [dV] High volt-box voltage.
  758. */
  759. static inline uint16_t mavlink_msg_shangfei_bms_get_hvb_voltage(const mavlink_message_t* msg)
  760. {
  761. return _MAV_RETURN_uint16_t(msg, 14);
  762. }
  763. /**
  764. * @brief Get field hvb_temp from shangfei_bms message
  765. *
  766. * @return High volt-box temperature.
  767. */
  768. static inline int8_t mavlink_msg_shangfei_bms_get_hvb_temp(const mavlink_message_t* msg)
  769. {
  770. return _MAV_RETURN_int8_t(msg, 30);
  771. }
  772. /**
  773. * @brief Get field hvb_status from shangfei_bms message
  774. *
  775. * @return High volt-box status.
  776. */
  777. static inline uint8_t mavlink_msg_shangfei_bms_get_hvb_status(const mavlink_message_t* msg)
  778. {
  779. return _MAV_RETURN_uint8_t(msg, 31);
  780. }
  781. /**
  782. * @brief Decode a shangfei_bms message into a struct
  783. *
  784. * @param msg The message to decode
  785. * @param shangfei_bms C-struct to decode the message contents into
  786. */
  787. static inline void mavlink_msg_shangfei_bms_decode(const mavlink_message_t* msg, mavlink_shangfei_bms_t* shangfei_bms)
  788. {
  789. #if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
  790. shangfei_bms->time_boot_ms = mavlink_msg_shangfei_bms_get_time_boot_ms(msg);
  791. shangfei_bms->bat_voltage = mavlink_msg_shangfei_bms_get_bat_voltage(msg);
  792. shangfei_bms->bat_current = mavlink_msg_shangfei_bms_get_bat_current(msg);
  793. shangfei_bms->cell_max_volt = mavlink_msg_shangfei_bms_get_cell_max_volt(msg);
  794. shangfei_bms->cell_min_volt = mavlink_msg_shangfei_bms_get_cell_min_volt(msg);
  795. shangfei_bms->dc28_volt = mavlink_msg_shangfei_bms_get_dc28_volt(msg);
  796. shangfei_bms->hvb_voltage = mavlink_msg_shangfei_bms_get_hvb_voltage(msg);
  797. shangfei_bms->bat_maxtemp = mavlink_msg_shangfei_bms_get_bat_maxtemp(msg);
  798. shangfei_bms->bat_mintemp = mavlink_msg_shangfei_bms_get_bat_mintemp(msg);
  799. shangfei_bms->contactor_sta = mavlink_msg_shangfei_bms_get_contactor_sta(msg);
  800. shangfei_bms->soh_value = mavlink_msg_shangfei_bms_get_soh_value(msg);
  801. shangfei_bms->max_volt_id = mavlink_msg_shangfei_bms_get_max_volt_id(msg);
  802. shangfei_bms->min_volt_id = mavlink_msg_shangfei_bms_get_min_volt_id(msg);
  803. shangfei_bms->max_temp_id = mavlink_msg_shangfei_bms_get_max_temp_id(msg);
  804. shangfei_bms->min_temp_id = mavlink_msg_shangfei_bms_get_min_temp_id(msg);
  805. shangfei_bms->fault_level = mavlink_msg_shangfei_bms_get_fault_level(msg);
  806. shangfei_bms->irt_status = mavlink_msg_shangfei_bms_get_irt_status(msg);
  807. shangfei_bms->cap_percent = mavlink_msg_shangfei_bms_get_cap_percent(msg);
  808. shangfei_bms->bat_id = mavlink_msg_shangfei_bms_get_bat_id(msg);
  809. shangfei_bms->err_code = mavlink_msg_shangfei_bms_get_err_code(msg);
  810. shangfei_bms->dc28_current = mavlink_msg_shangfei_bms_get_dc28_current(msg);
  811. shangfei_bms->hvb_temp = mavlink_msg_shangfei_bms_get_hvb_temp(msg);
  812. shangfei_bms->hvb_status = mavlink_msg_shangfei_bms_get_hvb_status(msg);
  813. #else
  814. uint8_t len = msg->len < MAVLINK_MSG_ID_SHANGFEI_BMS_LEN? msg->len : MAVLINK_MSG_ID_SHANGFEI_BMS_LEN;
  815. memset(shangfei_bms, 0, MAVLINK_MSG_ID_SHANGFEI_BMS_LEN);
  816. memcpy(shangfei_bms, _MAV_PAYLOAD(msg), len);
  817. #endif
  818. }