#pragma once // MESSAGE QINGXIE_BMS PACKING #define MAVLINK_MSG_ID_QINGXIE_BMS 53300 typedef struct __mavlink_qingxie_bms_t { uint16_t bat_voltage; /*< [cV] Battery voltage.*/ uint16_t servo_current; /*< [cA] Servo current.*/ uint16_t stack_voltage; /*< [cV] Stack voltage.*/ uint16_t servo_voltage; /*< [cV] Servo voltage.*/ uint16_t bat_refuel_current; /*< [cA] Battery refuel current.*/ uint16_t gas_tank_pressure; /*< Gas tank pressure.*/ uint16_t pipe_pressure; /*< Pipe pressure.*/ uint16_t pcb_temp; /*< PCB temperature.*/ uint16_t stack_temp; /*< Stack temperature.*/ uint16_t work_status; /*< */ uint16_t falt_status; /*< */ uint8_t self_check; /*< */ uint8_t Id; /*< */ uint16_t gass_mass; /*< [dg] */ uint16_t gass_percent; /*< [%] */ uint16_t runtime_remain; /*< */ uint8_t fan_percent; /*< */ uint8_t fan_rpm; /*< */ uint8_t sys_run_state; /*< */ uint8_t sys_fault_state; /*< */ uint16_t sys_fault_code; /*< */ uint16_t lipo_current; /*< [dA] */ uint16_t total_runtime; /*< [dh] */ } mavlink_qingxie_bms_t; #define MAVLINK_MSG_ID_QINGXIE_BMS_LEN 40 #define MAVLINK_MSG_ID_QINGXIE_BMS_MIN_LEN 24 #define MAVLINK_MSG_ID_53300_LEN 40 #define MAVLINK_MSG_ID_53300_MIN_LEN 24 #define MAVLINK_MSG_ID_QINGXIE_BMS_CRC 114 #define MAVLINK_MSG_ID_53300_CRC 114 #if MAVLINK_COMMAND_24BIT #define MAVLINK_MESSAGE_INFO_QINGXIE_BMS { \ 53300, \ "QINGXIE_BMS", \ 23, \ { { "bat_voltage", NULL, MAVLINK_TYPE_UINT16_T, 0, 0, offsetof(mavlink_qingxie_bms_t, bat_voltage) }, \ { "servo_current", NULL, MAVLINK_TYPE_UINT16_T, 0, 2, offsetof(mavlink_qingxie_bms_t, servo_current) }, \ { "stack_voltage", NULL, MAVLINK_TYPE_UINT16_T, 0, 4, offsetof(mavlink_qingxie_bms_t, stack_voltage) }, \ { "servo_voltage", NULL, MAVLINK_TYPE_UINT16_T, 0, 6, offsetof(mavlink_qingxie_bms_t, servo_voltage) }, \ { "bat_refuel_current", NULL, MAVLINK_TYPE_UINT16_T, 0, 8, offsetof(mavlink_qingxie_bms_t, bat_refuel_current) }, \ { "gas_tank_pressure", NULL, MAVLINK_TYPE_UINT16_T, 0, 10, offsetof(mavlink_qingxie_bms_t, gas_tank_pressure) }, \ { "pipe_pressure", NULL, MAVLINK_TYPE_UINT16_T, 0, 12, offsetof(mavlink_qingxie_bms_t, pipe_pressure) }, \ { "pcb_temp", NULL, MAVLINK_TYPE_UINT16_T, 0, 14, offsetof(mavlink_qingxie_bms_t, pcb_temp) }, \ { "stack_temp", NULL, MAVLINK_TYPE_UINT16_T, 0, 16, offsetof(mavlink_qingxie_bms_t, stack_temp) }, \ { "work_status", NULL, MAVLINK_TYPE_UINT16_T, 0, 18, offsetof(mavlink_qingxie_bms_t, work_status) }, \ { "falt_status", NULL, MAVLINK_TYPE_UINT16_T, 0, 20, offsetof(mavlink_qingxie_bms_t, falt_status) }, \ { "self_check", NULL, MAVLINK_TYPE_UINT8_T, 0, 22, offsetof(mavlink_qingxie_bms_t, self_check) }, \ { "Id", NULL, MAVLINK_TYPE_UINT8_T, 0, 23, offsetof(mavlink_qingxie_bms_t, Id) }, \ { "gass_mass", NULL, MAVLINK_TYPE_UINT16_T, 0, 24, offsetof(mavlink_qingxie_bms_t, gass_mass) }, \ { "gass_percent", NULL, MAVLINK_TYPE_UINT16_T, 0, 26, offsetof(mavlink_qingxie_bms_t, gass_percent) }, \ { "runtime_remain", NULL, MAVLINK_TYPE_UINT16_T, 0, 28, offsetof(mavlink_qingxie_bms_t, runtime_remain) }, \ { "fan_percent", NULL, MAVLINK_TYPE_UINT8_T, 0, 30, offsetof(mavlink_qingxie_bms_t, fan_percent) }, \ { "fan_rpm", NULL, MAVLINK_TYPE_UINT8_T, 0, 31, offsetof(mavlink_qingxie_bms_t, fan_rpm) }, \ { "sys_run_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 32, offsetof(mavlink_qingxie_bms_t, sys_run_state) }, \ { "sys_fault_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 33, offsetof(mavlink_qingxie_bms_t, sys_fault_state) }, \ { "sys_fault_code", NULL, MAVLINK_TYPE_UINT16_T, 0, 34, offsetof(mavlink_qingxie_bms_t, sys_fault_code) }, \ { "lipo_current", NULL, MAVLINK_TYPE_UINT16_T, 0, 36, offsetof(mavlink_qingxie_bms_t, lipo_current) }, \ { "total_runtime", NULL, MAVLINK_TYPE_UINT16_T, 0, 38, offsetof(mavlink_qingxie_bms_t, total_runtime) }, \ } \ } #else #define MAVLINK_MESSAGE_INFO_QINGXIE_BMS { \ "QINGXIE_BMS", \ 23, \ { { "bat_voltage", NULL, MAVLINK_TYPE_UINT16_T, 0, 0, offsetof(mavlink_qingxie_bms_t, bat_voltage) }, \ { "servo_current", NULL, MAVLINK_TYPE_UINT16_T, 0, 2, offsetof(mavlink_qingxie_bms_t, servo_current) }, \ { "stack_voltage", NULL, MAVLINK_TYPE_UINT16_T, 0, 4, offsetof(mavlink_qingxie_bms_t, stack_voltage) }, \ { "servo_voltage", NULL, MAVLINK_TYPE_UINT16_T, 0, 6, offsetof(mavlink_qingxie_bms_t, servo_voltage) }, \ { "bat_refuel_current", NULL, MAVLINK_TYPE_UINT16_T, 0, 8, offsetof(mavlink_qingxie_bms_t, bat_refuel_current) }, \ { "gas_tank_pressure", NULL, MAVLINK_TYPE_UINT16_T, 0, 10, offsetof(mavlink_qingxie_bms_t, gas_tank_pressure) }, \ { "pipe_pressure", NULL, MAVLINK_TYPE_UINT16_T, 0, 12, offsetof(mavlink_qingxie_bms_t, pipe_pressure) }, \ { "pcb_temp", NULL, MAVLINK_TYPE_UINT16_T, 0, 14, offsetof(mavlink_qingxie_bms_t, pcb_temp) }, \ { "stack_temp", NULL, MAVLINK_TYPE_UINT16_T, 0, 16, offsetof(mavlink_qingxie_bms_t, stack_temp) }, \ { "work_status", NULL, MAVLINK_TYPE_UINT16_T, 0, 18, offsetof(mavlink_qingxie_bms_t, work_status) }, \ { "falt_status", NULL, MAVLINK_TYPE_UINT16_T, 0, 20, offsetof(mavlink_qingxie_bms_t, falt_status) }, \ { "self_check", NULL, MAVLINK_TYPE_UINT8_T, 0, 22, offsetof(mavlink_qingxie_bms_t, self_check) }, \ { "Id", NULL, MAVLINK_TYPE_UINT8_T, 0, 23, offsetof(mavlink_qingxie_bms_t, Id) }, \ { "gass_mass", NULL, MAVLINK_TYPE_UINT16_T, 0, 24, offsetof(mavlink_qingxie_bms_t, gass_mass) }, \ { "gass_percent", NULL, MAVLINK_TYPE_UINT16_T, 0, 26, offsetof(mavlink_qingxie_bms_t, gass_percent) }, \ { "runtime_remain", NULL, MAVLINK_TYPE_UINT16_T, 0, 28, offsetof(mavlink_qingxie_bms_t, runtime_remain) }, \ { "fan_percent", NULL, MAVLINK_TYPE_UINT8_T, 0, 30, offsetof(mavlink_qingxie_bms_t, fan_percent) }, \ { "fan_rpm", NULL, MAVLINK_TYPE_UINT8_T, 0, 31, offsetof(mavlink_qingxie_bms_t, fan_rpm) }, \ { "sys_run_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 32, offsetof(mavlink_qingxie_bms_t, sys_run_state) }, \ { "sys_fault_state", NULL, MAVLINK_TYPE_UINT8_T, 0, 33, offsetof(mavlink_qingxie_bms_t, sys_fault_state) }, \ { "sys_fault_code", NULL, MAVLINK_TYPE_UINT16_T, 0, 34, offsetof(mavlink_qingxie_bms_t, sys_fault_code) }, \ { "lipo_current", NULL, MAVLINK_TYPE_UINT16_T, 0, 36, offsetof(mavlink_qingxie_bms_t, lipo_current) }, \ { "total_runtime", NULL, MAVLINK_TYPE_UINT16_T, 0, 38, offsetof(mavlink_qingxie_bms_t, total_runtime) }, \ } \ } #endif /** * @brief Pack a qingxie_bms message * @param system_id ID of this system * @param component_id ID of this component (e.g. 200 for IMU) * @param msg The MAVLink message to compress the data into * * @param bat_voltage [cV] Battery voltage. * @param servo_current [cA] Servo current. * @param stack_voltage [cV] Stack voltage. * @param servo_voltage [cV] Servo voltage. * @param bat_refuel_current [cA] Battery refuel current. * @param gas_tank_pressure Gas tank pressure. * @param pipe_pressure Pipe pressure. * @param pcb_temp PCB temperature. * @param stack_temp Stack temperature. * @param work_status * @param falt_status * @param self_check * @param Id * @param gass_mass [dg] * @param gass_percent [%] * @param runtime_remain * @param fan_percent * @param fan_rpm * @param sys_run_state * @param sys_fault_state * @param sys_fault_code * @param lipo_current [dA] * @param total_runtime [dh] * @return length of the message in bytes (excluding serial stream start sign) */ static inline uint16_t mavlink_msg_qingxie_bms_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, uint16_t bat_voltage, uint16_t servo_current, uint16_t stack_voltage, uint16_t servo_voltage, uint16_t bat_refuel_current, uint16_t gas_tank_pressure, uint16_t pipe_pressure, uint16_t pcb_temp, uint16_t stack_temp, uint16_t work_status, uint16_t falt_status, uint8_t self_check, uint8_t Id, uint16_t gass_mass, uint16_t gass_percent, uint16_t runtime_remain, uint8_t fan_percent, uint8_t fan_rpm, uint8_t sys_run_state, uint8_t sys_fault_state, uint16_t sys_fault_code, uint16_t lipo_current, uint16_t total_runtime) { #if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS char buf[MAVLINK_MSG_ID_QINGXIE_BMS_LEN]; _mav_put_uint16_t(buf, 0, bat_voltage); _mav_put_uint16_t(buf, 2, servo_current); _mav_put_uint16_t(buf, 4, stack_voltage); _mav_put_uint16_t(buf, 6, servo_voltage); _mav_put_uint16_t(buf, 8, bat_refuel_current); _mav_put_uint16_t(buf, 10, gas_tank_pressure); _mav_put_uint16_t(buf, 12, pipe_pressure); _mav_put_uint16_t(buf, 14, pcb_temp); _mav_put_uint16_t(buf, 16, stack_temp); _mav_put_uint16_t(buf, 18, work_status); _mav_put_uint16_t(buf, 20, falt_status); _mav_put_uint8_t(buf, 22, self_check); _mav_put_uint8_t(buf, 23, Id); _mav_put_uint16_t(buf, 24, gass_mass); _mav_put_uint16_t(buf, 26, gass_percent); _mav_put_uint16_t(buf, 28, runtime_remain); _mav_put_uint8_t(buf, 30, fan_percent); _mav_put_uint8_t(buf, 31, fan_rpm); _mav_put_uint8_t(buf, 32, sys_run_state); _mav_put_uint8_t(buf, 33, sys_fault_state); _mav_put_uint16_t(buf, 34, sys_fault_code); _mav_put_uint16_t(buf, 36, lipo_current); _mav_put_uint16_t(buf, 38, total_runtime); memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_QINGXIE_BMS_LEN); #else mavlink_qingxie_bms_t packet; packet.bat_voltage = bat_voltage; packet.servo_current = servo_current; packet.stack_voltage = stack_voltage; packet.servo_voltage = servo_voltage; packet.bat_refuel_current = bat_refuel_current; packet.gas_tank_pressure = gas_tank_pressure; packet.pipe_pressure = pipe_pressure; packet.pcb_temp = pcb_temp; packet.stack_temp = stack_temp; packet.work_status = work_status; packet.falt_status = falt_status; packet.self_check = self_check; packet.Id = Id; packet.gass_mass = gass_mass; packet.gass_percent = gass_percent; packet.runtime_remain = runtime_remain; packet.fan_percent = fan_percent; packet.fan_rpm = fan_rpm; packet.sys_run_state = sys_run_state; packet.sys_fault_state = sys_fault_state; packet.sys_fault_code = sys_fault_code; packet.lipo_current = lipo_current; packet.total_runtime = total_runtime; memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_QINGXIE_BMS_LEN); #endif msg->msgid = MAVLINK_MSG_ID_QINGXIE_BMS; return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_QINGXIE_BMS_MIN_LEN, MAVLINK_MSG_ID_QINGXIE_BMS_LEN, MAVLINK_MSG_ID_QINGXIE_BMS_CRC); } /** * @brief Pack a qingxie_bms message * @param system_id ID of this system * @param component_id ID of this component (e.g. 200 for IMU) * @param status MAVLink status structure * @param msg The MAVLink message to compress the data into * * @param bat_voltage [cV] Battery voltage. * @param servo_current [cA] Servo current. * @param stack_voltage [cV] Stack voltage. * @param servo_voltage [cV] Servo voltage. * @param bat_refuel_current [cA] Battery refuel current. * @param gas_tank_pressure Gas tank pressure. * @param pipe_pressure Pipe pressure. * @param pcb_temp PCB temperature. * @param stack_temp Stack temperature. * @param work_status * @param falt_status * @param self_check * @param Id * @param gass_mass [dg] * @param gass_percent [%] * @param runtime_remain * @param fan_percent * @param fan_rpm * @param sys_run_state * @param sys_fault_state * @param sys_fault_code * @param lipo_current [dA] * @param total_runtime [dh] * @return length of the message in bytes (excluding serial stream start sign) */ static inline uint16_t mavlink_msg_qingxie_bms_pack_status(uint8_t system_id, uint8_t component_id, mavlink_status_t *_status, mavlink_message_t* msg, uint16_t bat_voltage, uint16_t servo_current, uint16_t stack_voltage, uint16_t servo_voltage, uint16_t bat_refuel_current, uint16_t gas_tank_pressure, uint16_t pipe_pressure, uint16_t pcb_temp, uint16_t stack_temp, uint16_t work_status, uint16_t falt_status, uint8_t self_check, uint8_t Id, uint16_t gass_mass, uint16_t gass_percent, uint16_t runtime_remain, uint8_t fan_percent, uint8_t fan_rpm, uint8_t sys_run_state, uint8_t sys_fault_state, uint16_t sys_fault_code, uint16_t lipo_current, uint16_t total_runtime) { #if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS char buf[MAVLINK_MSG_ID_QINGXIE_BMS_LEN]; _mav_put_uint16_t(buf, 0, bat_voltage); _mav_put_uint16_t(buf, 2, servo_current); _mav_put_uint16_t(buf, 4, stack_voltage); _mav_put_uint16_t(buf, 6, servo_voltage); _mav_put_uint16_t(buf, 8, bat_refuel_current); _mav_put_uint16_t(buf, 10, gas_tank_pressure); _mav_put_uint16_t(buf, 12, pipe_pressure); _mav_put_uint16_t(buf, 14, pcb_temp); _mav_put_uint16_t(buf, 16, stack_temp); _mav_put_uint16_t(buf, 18, work_status); _mav_put_uint16_t(buf, 20, falt_status); _mav_put_uint8_t(buf, 22, self_check); _mav_put_uint8_t(buf, 23, Id); _mav_put_uint16_t(buf, 24, gass_mass); _mav_put_uint16_t(buf, 26, gass_percent); _mav_put_uint16_t(buf, 28, runtime_remain); _mav_put_uint8_t(buf, 30, fan_percent); _mav_put_uint8_t(buf, 31, fan_rpm); _mav_put_uint8_t(buf, 32, sys_run_state); _mav_put_uint8_t(buf, 33, sys_fault_state); _mav_put_uint16_t(buf, 34, sys_fault_code); _mav_put_uint16_t(buf, 36, lipo_current); _mav_put_uint16_t(buf, 38, total_runtime); memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_QINGXIE_BMS_LEN); #else mavlink_qingxie_bms_t packet; packet.bat_voltage = bat_voltage; packet.servo_current = servo_current; packet.stack_voltage = stack_voltage; packet.servo_voltage = servo_voltage; packet.bat_refuel_current = bat_refuel_current; packet.gas_tank_pressure = gas_tank_pressure; packet.pipe_pressure = pipe_pressure; packet.pcb_temp = pcb_temp; packet.stack_temp = stack_temp; packet.work_status = work_status; packet.falt_status = falt_status; packet.self_check = self_check; packet.Id = Id; packet.gass_mass = gass_mass; packet.gass_percent = gass_percent; packet.runtime_remain = runtime_remain; packet.fan_percent = fan_percent; packet.fan_rpm = fan_rpm; packet.sys_run_state = sys_run_state; packet.sys_fault_state = sys_fault_state; packet.sys_fault_code = sys_fault_code; packet.lipo_current = lipo_current; packet.total_runtime = total_runtime; memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_QINGXIE_BMS_LEN); #endif msg->msgid = MAVLINK_MSG_ID_QINGXIE_BMS; #if MAVLINK_CRC_EXTRA return mavlink_finalize_message_buffer(msg, system_id, component_id, _status, MAVLINK_MSG_ID_QINGXIE_BMS_MIN_LEN, MAVLINK_MSG_ID_QINGXIE_BMS_LEN, MAVLINK_MSG_ID_QINGXIE_BMS_CRC); #else return mavlink_finalize_message_buffer(msg, system_id, component_id, _status, MAVLINK_MSG_ID_QINGXIE_BMS_MIN_LEN, MAVLINK_MSG_ID_QINGXIE_BMS_LEN); #endif } /** * @brief Pack a qingxie_bms message on a channel * @param system_id ID of this system * @param component_id ID of this component (e.g. 200 for IMU) * @param chan The MAVLink channel this message will be sent over * @param msg The MAVLink message to compress the data into * @param bat_voltage [cV] Battery voltage. * @param servo_current [cA] Servo current. * @param stack_voltage [cV] Stack voltage. * @param servo_voltage [cV] Servo voltage. * @param bat_refuel_current [cA] Battery refuel current. * @param gas_tank_pressure Gas tank pressure. * @param pipe_pressure Pipe pressure. * @param pcb_temp PCB temperature. * @param stack_temp Stack temperature. * @param work_status * @param falt_status * @param self_check * @param Id * @param gass_mass [dg] * @param gass_percent [%] * @param runtime_remain * @param fan_percent * @param fan_rpm * @param sys_run_state * @param sys_fault_state * @param sys_fault_code * @param lipo_current [dA] * @param total_runtime [dh] * @return length of the message in bytes (excluding serial stream start sign) */ static inline uint16_t mavlink_msg_qingxie_bms_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, uint16_t bat_voltage,uint16_t servo_current,uint16_t stack_voltage,uint16_t servo_voltage,uint16_t bat_refuel_current,uint16_t gas_tank_pressure,uint16_t pipe_pressure,uint16_t pcb_temp,uint16_t stack_temp,uint16_t work_status,uint16_t falt_status,uint8_t self_check,uint8_t Id,uint16_t gass_mass,uint16_t gass_percent,uint16_t runtime_remain,uint8_t fan_percent,uint8_t fan_rpm,uint8_t sys_run_state,uint8_t sys_fault_state,uint16_t sys_fault_code,uint16_t lipo_current,uint16_t total_runtime) { #if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS char buf[MAVLINK_MSG_ID_QINGXIE_BMS_LEN]; _mav_put_uint16_t(buf, 0, bat_voltage); _mav_put_uint16_t(buf, 2, servo_current); _mav_put_uint16_t(buf, 4, stack_voltage); _mav_put_uint16_t(buf, 6, servo_voltage); _mav_put_uint16_t(buf, 8, bat_refuel_current); _mav_put_uint16_t(buf, 10, gas_tank_pressure); _mav_put_uint16_t(buf, 12, pipe_pressure); _mav_put_uint16_t(buf, 14, pcb_temp); _mav_put_uint16_t(buf, 16, stack_temp); _mav_put_uint16_t(buf, 18, work_status); _mav_put_uint16_t(buf, 20, falt_status); _mav_put_uint8_t(buf, 22, self_check); _mav_put_uint8_t(buf, 23, Id); _mav_put_uint16_t(buf, 24, gass_mass); _mav_put_uint16_t(buf, 26, gass_percent); _mav_put_uint16_t(buf, 28, runtime_remain); _mav_put_uint8_t(buf, 30, fan_percent); _mav_put_uint8_t(buf, 31, fan_rpm); _mav_put_uint8_t(buf, 32, sys_run_state); _mav_put_uint8_t(buf, 33, sys_fault_state); _mav_put_uint16_t(buf, 34, sys_fault_code); _mav_put_uint16_t(buf, 36, lipo_current); _mav_put_uint16_t(buf, 38, total_runtime); memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_QINGXIE_BMS_LEN); #else mavlink_qingxie_bms_t packet; packet.bat_voltage = bat_voltage; packet.servo_current = servo_current; packet.stack_voltage = stack_voltage; packet.servo_voltage = servo_voltage; packet.bat_refuel_current = bat_refuel_current; packet.gas_tank_pressure = gas_tank_pressure; packet.pipe_pressure = pipe_pressure; packet.pcb_temp = pcb_temp; packet.stack_temp = stack_temp; packet.work_status = work_status; packet.falt_status = falt_status; packet.self_check = self_check; packet.Id = Id; packet.gass_mass = gass_mass; packet.gass_percent = gass_percent; packet.runtime_remain = runtime_remain; packet.fan_percent = fan_percent; packet.fan_rpm = fan_rpm; packet.sys_run_state = sys_run_state; packet.sys_fault_state = sys_fault_state; packet.sys_fault_code = sys_fault_code; packet.lipo_current = lipo_current; packet.total_runtime = total_runtime; memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_QINGXIE_BMS_LEN); #endif msg->msgid = MAVLINK_MSG_ID_QINGXIE_BMS; return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_QINGXIE_BMS_MIN_LEN, MAVLINK_MSG_ID_QINGXIE_BMS_LEN, MAVLINK_MSG_ID_QINGXIE_BMS_CRC); } /** * @brief Encode a qingxie_bms struct * * @param system_id ID of this system * @param component_id ID of this component (e.g. 200 for IMU) * @param msg The MAVLink message to compress the data into * @param qingxie_bms C-struct to read the message contents from */ static inline uint16_t mavlink_msg_qingxie_bms_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_qingxie_bms_t* qingxie_bms) { return mavlink_msg_qingxie_bms_pack(system_id, component_id, msg, qingxie_bms->bat_voltage, qingxie_bms->servo_current, qingxie_bms->stack_voltage, qingxie_bms->servo_voltage, qingxie_bms->bat_refuel_current, qingxie_bms->gas_tank_pressure, qingxie_bms->pipe_pressure, qingxie_bms->pcb_temp, qingxie_bms->stack_temp, qingxie_bms->work_status, qingxie_bms->falt_status, qingxie_bms->self_check, qingxie_bms->Id, qingxie_bms->gass_mass, qingxie_bms->gass_percent, qingxie_bms->runtime_remain, qingxie_bms->fan_percent, qingxie_bms->fan_rpm, qingxie_bms->sys_run_state, qingxie_bms->sys_fault_state, qingxie_bms->sys_fault_code, qingxie_bms->lipo_current, qingxie_bms->total_runtime); } /** * @brief Encode a qingxie_bms struct on a channel * * @param system_id ID of this system * @param component_id ID of this component (e.g. 200 for IMU) * @param chan The MAVLink channel this message will be sent over * @param msg The MAVLink message to compress the data into * @param qingxie_bms C-struct to read the message contents from */ static inline uint16_t mavlink_msg_qingxie_bms_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_qingxie_bms_t* qingxie_bms) { return mavlink_msg_qingxie_bms_pack_chan(system_id, component_id, chan, msg, qingxie_bms->bat_voltage, qingxie_bms->servo_current, qingxie_bms->stack_voltage, qingxie_bms->servo_voltage, qingxie_bms->bat_refuel_current, qingxie_bms->gas_tank_pressure, qingxie_bms->pipe_pressure, qingxie_bms->pcb_temp, qingxie_bms->stack_temp, qingxie_bms->work_status, qingxie_bms->falt_status, qingxie_bms->self_check, qingxie_bms->Id, qingxie_bms->gass_mass, qingxie_bms->gass_percent, qingxie_bms->runtime_remain, qingxie_bms->fan_percent, qingxie_bms->fan_rpm, qingxie_bms->sys_run_state, qingxie_bms->sys_fault_state, qingxie_bms->sys_fault_code, qingxie_bms->lipo_current, qingxie_bms->total_runtime); } /** * @brief Encode a qingxie_bms struct with provided status structure * * @param system_id ID of this system * @param component_id ID of this component (e.g. 200 for IMU) * @param status MAVLink status structure * @param msg The MAVLink message to compress the data into * @param qingxie_bms C-struct to read the message contents from */ static inline uint16_t mavlink_msg_qingxie_bms_encode_status(uint8_t system_id, uint8_t component_id, mavlink_status_t* _status, mavlink_message_t* msg, const mavlink_qingxie_bms_t* qingxie_bms) { return mavlink_msg_qingxie_bms_pack_status(system_id, component_id, _status, msg, qingxie_bms->bat_voltage, qingxie_bms->servo_current, qingxie_bms->stack_voltage, qingxie_bms->servo_voltage, qingxie_bms->bat_refuel_current, qingxie_bms->gas_tank_pressure, qingxie_bms->pipe_pressure, qingxie_bms->pcb_temp, qingxie_bms->stack_temp, qingxie_bms->work_status, qingxie_bms->falt_status, qingxie_bms->self_check, qingxie_bms->Id, qingxie_bms->gass_mass, qingxie_bms->gass_percent, qingxie_bms->runtime_remain, qingxie_bms->fan_percent, qingxie_bms->fan_rpm, qingxie_bms->sys_run_state, qingxie_bms->sys_fault_state, qingxie_bms->sys_fault_code, qingxie_bms->lipo_current, qingxie_bms->total_runtime); } /** * @brief Send a qingxie_bms message * @param chan MAVLink channel to send the message * * @param bat_voltage [cV] Battery voltage. * @param servo_current [cA] Servo current. * @param stack_voltage [cV] Stack voltage. * @param servo_voltage [cV] Servo voltage. * @param bat_refuel_current [cA] Battery refuel current. * @param gas_tank_pressure Gas tank pressure. * @param pipe_pressure Pipe pressure. * @param pcb_temp PCB temperature. * @param stack_temp Stack temperature. * @param work_status * @param falt_status * @param self_check * @param Id * @param gass_mass [dg] * @param gass_percent [%] * @param runtime_remain * @param fan_percent * @param fan_rpm * @param sys_run_state * @param sys_fault_state * @param sys_fault_code * @param lipo_current [dA] * @param total_runtime [dh] */ #ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS static inline void mavlink_msg_qingxie_bms_send(mavlink_channel_t chan, uint16_t bat_voltage, uint16_t servo_current, uint16_t stack_voltage, uint16_t servo_voltage, uint16_t bat_refuel_current, uint16_t gas_tank_pressure, uint16_t pipe_pressure, uint16_t pcb_temp, uint16_t stack_temp, uint16_t work_status, uint16_t falt_status, uint8_t self_check, uint8_t Id, uint16_t gass_mass, uint16_t gass_percent, uint16_t runtime_remain, uint8_t fan_percent, uint8_t fan_rpm, uint8_t sys_run_state, uint8_t sys_fault_state, uint16_t sys_fault_code, uint16_t lipo_current, uint16_t total_runtime) { #if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS char buf[MAVLINK_MSG_ID_QINGXIE_BMS_LEN]; _mav_put_uint16_t(buf, 0, bat_voltage); _mav_put_uint16_t(buf, 2, servo_current); _mav_put_uint16_t(buf, 4, stack_voltage); _mav_put_uint16_t(buf, 6, servo_voltage); _mav_put_uint16_t(buf, 8, bat_refuel_current); _mav_put_uint16_t(buf, 10, gas_tank_pressure); _mav_put_uint16_t(buf, 12, pipe_pressure); _mav_put_uint16_t(buf, 14, pcb_temp); _mav_put_uint16_t(buf, 16, stack_temp); _mav_put_uint16_t(buf, 18, work_status); _mav_put_uint16_t(buf, 20, falt_status); _mav_put_uint8_t(buf, 22, self_check); _mav_put_uint8_t(buf, 23, Id); _mav_put_uint16_t(buf, 24, gass_mass); _mav_put_uint16_t(buf, 26, gass_percent); _mav_put_uint16_t(buf, 28, runtime_remain); _mav_put_uint8_t(buf, 30, fan_percent); _mav_put_uint8_t(buf, 31, fan_rpm); _mav_put_uint8_t(buf, 32, sys_run_state); _mav_put_uint8_t(buf, 33, sys_fault_state); _mav_put_uint16_t(buf, 34, sys_fault_code); _mav_put_uint16_t(buf, 36, lipo_current); _mav_put_uint16_t(buf, 38, total_runtime); _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_QINGXIE_BMS, buf, MAVLINK_MSG_ID_QINGXIE_BMS_MIN_LEN, MAVLINK_MSG_ID_QINGXIE_BMS_LEN, MAVLINK_MSG_ID_QINGXIE_BMS_CRC); #else mavlink_qingxie_bms_t packet; packet.bat_voltage = bat_voltage; packet.servo_current = servo_current; packet.stack_voltage = stack_voltage; packet.servo_voltage = servo_voltage; packet.bat_refuel_current = bat_refuel_current; packet.gas_tank_pressure = gas_tank_pressure; packet.pipe_pressure = pipe_pressure; packet.pcb_temp = pcb_temp; packet.stack_temp = stack_temp; packet.work_status = work_status; packet.falt_status = falt_status; packet.self_check = self_check; packet.Id = Id; packet.gass_mass = gass_mass; packet.gass_percent = gass_percent; packet.runtime_remain = runtime_remain; packet.fan_percent = fan_percent; packet.fan_rpm = fan_rpm; packet.sys_run_state = sys_run_state; packet.sys_fault_state = sys_fault_state; packet.sys_fault_code = sys_fault_code; packet.lipo_current = lipo_current; packet.total_runtime = total_runtime; _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_QINGXIE_BMS, (const char *)&packet, MAVLINK_MSG_ID_QINGXIE_BMS_MIN_LEN, MAVLINK_MSG_ID_QINGXIE_BMS_LEN, MAVLINK_MSG_ID_QINGXIE_BMS_CRC); #endif } /** * @brief Send a qingxie_bms message * @param chan MAVLink channel to send the message * @param struct The MAVLink struct to serialize */ static inline void mavlink_msg_qingxie_bms_send_struct(mavlink_channel_t chan, const mavlink_qingxie_bms_t* qingxie_bms) { #if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS mavlink_msg_qingxie_bms_send(chan, qingxie_bms->bat_voltage, qingxie_bms->servo_current, qingxie_bms->stack_voltage, qingxie_bms->servo_voltage, qingxie_bms->bat_refuel_current, qingxie_bms->gas_tank_pressure, qingxie_bms->pipe_pressure, qingxie_bms->pcb_temp, qingxie_bms->stack_temp, qingxie_bms->work_status, qingxie_bms->falt_status, qingxie_bms->self_check, qingxie_bms->Id, qingxie_bms->gass_mass, qingxie_bms->gass_percent, qingxie_bms->runtime_remain, qingxie_bms->fan_percent, qingxie_bms->fan_rpm, qingxie_bms->sys_run_state, qingxie_bms->sys_fault_state, qingxie_bms->sys_fault_code, qingxie_bms->lipo_current, qingxie_bms->total_runtime); #else _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_QINGXIE_BMS, (const char *)qingxie_bms, MAVLINK_MSG_ID_QINGXIE_BMS_MIN_LEN, MAVLINK_MSG_ID_QINGXIE_BMS_LEN, MAVLINK_MSG_ID_QINGXIE_BMS_CRC); #endif } #if MAVLINK_MSG_ID_QINGXIE_BMS_LEN <= MAVLINK_MAX_PAYLOAD_LEN /* This variant of _send() can be used to save stack space by re-using memory from the receive buffer. The caller provides a mavlink_message_t which is the size of a full mavlink message. This is usually the receive buffer for the channel, and allows a reply to an incoming message with minimum stack space usage. */ static inline void mavlink_msg_qingxie_bms_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan, uint16_t bat_voltage, uint16_t servo_current, uint16_t stack_voltage, uint16_t servo_voltage, uint16_t bat_refuel_current, uint16_t gas_tank_pressure, uint16_t pipe_pressure, uint16_t pcb_temp, uint16_t stack_temp, uint16_t work_status, uint16_t falt_status, uint8_t self_check, uint8_t Id, uint16_t gass_mass, uint16_t gass_percent, uint16_t runtime_remain, uint8_t fan_percent, uint8_t fan_rpm, uint8_t sys_run_state, uint8_t sys_fault_state, uint16_t sys_fault_code, uint16_t lipo_current, uint16_t total_runtime) { #if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS char *buf = (char *)msgbuf; _mav_put_uint16_t(buf, 0, bat_voltage); _mav_put_uint16_t(buf, 2, servo_current); _mav_put_uint16_t(buf, 4, stack_voltage); _mav_put_uint16_t(buf, 6, servo_voltage); _mav_put_uint16_t(buf, 8, bat_refuel_current); _mav_put_uint16_t(buf, 10, gas_tank_pressure); _mav_put_uint16_t(buf, 12, pipe_pressure); _mav_put_uint16_t(buf, 14, pcb_temp); _mav_put_uint16_t(buf, 16, stack_temp); _mav_put_uint16_t(buf, 18, work_status); _mav_put_uint16_t(buf, 20, falt_status); _mav_put_uint8_t(buf, 22, self_check); _mav_put_uint8_t(buf, 23, Id); _mav_put_uint16_t(buf, 24, gass_mass); _mav_put_uint16_t(buf, 26, gass_percent); _mav_put_uint16_t(buf, 28, runtime_remain); _mav_put_uint8_t(buf, 30, fan_percent); _mav_put_uint8_t(buf, 31, fan_rpm); _mav_put_uint8_t(buf, 32, sys_run_state); _mav_put_uint8_t(buf, 33, sys_fault_state); _mav_put_uint16_t(buf, 34, sys_fault_code); _mav_put_uint16_t(buf, 36, lipo_current); _mav_put_uint16_t(buf, 38, total_runtime); _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_QINGXIE_BMS, buf, MAVLINK_MSG_ID_QINGXIE_BMS_MIN_LEN, MAVLINK_MSG_ID_QINGXIE_BMS_LEN, MAVLINK_MSG_ID_QINGXIE_BMS_CRC); #else mavlink_qingxie_bms_t *packet = (mavlink_qingxie_bms_t *)msgbuf; packet->bat_voltage = bat_voltage; packet->servo_current = servo_current; packet->stack_voltage = stack_voltage; packet->servo_voltage = servo_voltage; packet->bat_refuel_current = bat_refuel_current; packet->gas_tank_pressure = gas_tank_pressure; packet->pipe_pressure = pipe_pressure; packet->pcb_temp = pcb_temp; packet->stack_temp = stack_temp; packet->work_status = work_status; packet->falt_status = falt_status; packet->self_check = self_check; packet->Id = Id; packet->gass_mass = gass_mass; packet->gass_percent = gass_percent; packet->runtime_remain = runtime_remain; packet->fan_percent = fan_percent; packet->fan_rpm = fan_rpm; packet->sys_run_state = sys_run_state; packet->sys_fault_state = sys_fault_state; packet->sys_fault_code = sys_fault_code; packet->lipo_current = lipo_current; packet->total_runtime = total_runtime; _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_QINGXIE_BMS, (const char *)packet, MAVLINK_MSG_ID_QINGXIE_BMS_MIN_LEN, MAVLINK_MSG_ID_QINGXIE_BMS_LEN, MAVLINK_MSG_ID_QINGXIE_BMS_CRC); #endif } #endif #endif // MESSAGE QINGXIE_BMS UNPACKING /** * @brief Get field bat_voltage from qingxie_bms message * * @return [cV] Battery voltage. */ static inline uint16_t mavlink_msg_qingxie_bms_get_bat_voltage(const mavlink_message_t* msg) { return _MAV_RETURN_uint16_t(msg, 0); } /** * @brief Get field servo_current from qingxie_bms message * * @return [cA] Servo current. */ static inline uint16_t mavlink_msg_qingxie_bms_get_servo_current(const mavlink_message_t* msg) { return _MAV_RETURN_uint16_t(msg, 2); } /** * @brief Get field stack_voltage from qingxie_bms message * * @return [cV] Stack voltage. */ static inline uint16_t mavlink_msg_qingxie_bms_get_stack_voltage(const mavlink_message_t* msg) { return _MAV_RETURN_uint16_t(msg, 4); } /** * @brief Get field servo_voltage from qingxie_bms message * * @return [cV] Servo voltage. */ static inline uint16_t mavlink_msg_qingxie_bms_get_servo_voltage(const mavlink_message_t* msg) { return _MAV_RETURN_uint16_t(msg, 6); } /** * @brief Get field bat_refuel_current from qingxie_bms message * * @return [cA] Battery refuel current. */ static inline uint16_t mavlink_msg_qingxie_bms_get_bat_refuel_current(const mavlink_message_t* msg) { return _MAV_RETURN_uint16_t(msg, 8); } /** * @brief Get field gas_tank_pressure from qingxie_bms message * * @return Gas tank pressure. */ static inline uint16_t mavlink_msg_qingxie_bms_get_gas_tank_pressure(const mavlink_message_t* msg) { return _MAV_RETURN_uint16_t(msg, 10); } /** * @brief Get field pipe_pressure from qingxie_bms message * * @return Pipe pressure. */ static inline uint16_t mavlink_msg_qingxie_bms_get_pipe_pressure(const mavlink_message_t* msg) { return _MAV_RETURN_uint16_t(msg, 12); } /** * @brief Get field pcb_temp from qingxie_bms message * * @return PCB temperature. */ static inline uint16_t mavlink_msg_qingxie_bms_get_pcb_temp(const mavlink_message_t* msg) { return _MAV_RETURN_uint16_t(msg, 14); } /** * @brief Get field stack_temp from qingxie_bms message * * @return Stack temperature. */ static inline uint16_t mavlink_msg_qingxie_bms_get_stack_temp(const mavlink_message_t* msg) { return _MAV_RETURN_uint16_t(msg, 16); } /** * @brief Get field work_status from qingxie_bms message * * @return */ static inline uint16_t mavlink_msg_qingxie_bms_get_work_status(const mavlink_message_t* msg) { return _MAV_RETURN_uint16_t(msg, 18); } /** * @brief Get field falt_status from qingxie_bms message * * @return */ static inline uint16_t mavlink_msg_qingxie_bms_get_falt_status(const mavlink_message_t* msg) { return _MAV_RETURN_uint16_t(msg, 20); } /** * @brief Get field self_check from qingxie_bms message * * @return */ static inline uint8_t mavlink_msg_qingxie_bms_get_self_check(const mavlink_message_t* msg) { return _MAV_RETURN_uint8_t(msg, 22); } /** * @brief Get field Id from qingxie_bms message * * @return */ static inline uint8_t mavlink_msg_qingxie_bms_get_Id(const mavlink_message_t* msg) { return _MAV_RETURN_uint8_t(msg, 23); } /** * @brief Get field gass_mass from qingxie_bms message * * @return [dg] */ static inline uint16_t mavlink_msg_qingxie_bms_get_gass_mass(const mavlink_message_t* msg) { return _MAV_RETURN_uint16_t(msg, 24); } /** * @brief Get field gass_percent from qingxie_bms message * * @return [%] */ static inline uint16_t mavlink_msg_qingxie_bms_get_gass_percent(const mavlink_message_t* msg) { return _MAV_RETURN_uint16_t(msg, 26); } /** * @brief Get field runtime_remain from qingxie_bms message * * @return */ static inline uint16_t mavlink_msg_qingxie_bms_get_runtime_remain(const mavlink_message_t* msg) { return _MAV_RETURN_uint16_t(msg, 28); } /** * @brief Get field fan_percent from qingxie_bms message * * @return */ static inline uint8_t mavlink_msg_qingxie_bms_get_fan_percent(const mavlink_message_t* msg) { return _MAV_RETURN_uint8_t(msg, 30); } /** * @brief Get field fan_rpm from qingxie_bms message * * @return */ static inline uint8_t mavlink_msg_qingxie_bms_get_fan_rpm(const mavlink_message_t* msg) { return _MAV_RETURN_uint8_t(msg, 31); } /** * @brief Get field sys_run_state from qingxie_bms message * * @return */ static inline uint8_t mavlink_msg_qingxie_bms_get_sys_run_state(const mavlink_message_t* msg) { return _MAV_RETURN_uint8_t(msg, 32); } /** * @brief Get field sys_fault_state from qingxie_bms message * * @return */ static inline uint8_t mavlink_msg_qingxie_bms_get_sys_fault_state(const mavlink_message_t* msg) { return _MAV_RETURN_uint8_t(msg, 33); } /** * @brief Get field sys_fault_code from qingxie_bms message * * @return */ static inline uint16_t mavlink_msg_qingxie_bms_get_sys_fault_code(const mavlink_message_t* msg) { return _MAV_RETURN_uint16_t(msg, 34); } /** * @brief Get field lipo_current from qingxie_bms message * * @return [dA] */ static inline uint16_t mavlink_msg_qingxie_bms_get_lipo_current(const mavlink_message_t* msg) { return _MAV_RETURN_uint16_t(msg, 36); } /** * @brief Get field total_runtime from qingxie_bms message * * @return [dh] */ static inline uint16_t mavlink_msg_qingxie_bms_get_total_runtime(const mavlink_message_t* msg) { return _MAV_RETURN_uint16_t(msg, 38); } /** * @brief Decode a qingxie_bms message into a struct * * @param msg The message to decode * @param qingxie_bms C-struct to decode the message contents into */ static inline void mavlink_msg_qingxie_bms_decode(const mavlink_message_t* msg, mavlink_qingxie_bms_t* qingxie_bms) { #if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS qingxie_bms->bat_voltage = mavlink_msg_qingxie_bms_get_bat_voltage(msg); qingxie_bms->servo_current = mavlink_msg_qingxie_bms_get_servo_current(msg); qingxie_bms->stack_voltage = mavlink_msg_qingxie_bms_get_stack_voltage(msg); qingxie_bms->servo_voltage = mavlink_msg_qingxie_bms_get_servo_voltage(msg); qingxie_bms->bat_refuel_current = mavlink_msg_qingxie_bms_get_bat_refuel_current(msg); qingxie_bms->gas_tank_pressure = mavlink_msg_qingxie_bms_get_gas_tank_pressure(msg); qingxie_bms->pipe_pressure = mavlink_msg_qingxie_bms_get_pipe_pressure(msg); qingxie_bms->pcb_temp = mavlink_msg_qingxie_bms_get_pcb_temp(msg); qingxie_bms->stack_temp = mavlink_msg_qingxie_bms_get_stack_temp(msg); qingxie_bms->work_status = mavlink_msg_qingxie_bms_get_work_status(msg); qingxie_bms->falt_status = mavlink_msg_qingxie_bms_get_falt_status(msg); qingxie_bms->self_check = mavlink_msg_qingxie_bms_get_self_check(msg); qingxie_bms->Id = mavlink_msg_qingxie_bms_get_Id(msg); qingxie_bms->gass_mass = mavlink_msg_qingxie_bms_get_gass_mass(msg); qingxie_bms->gass_percent = mavlink_msg_qingxie_bms_get_gass_percent(msg); qingxie_bms->runtime_remain = mavlink_msg_qingxie_bms_get_runtime_remain(msg); qingxie_bms->fan_percent = mavlink_msg_qingxie_bms_get_fan_percent(msg); qingxie_bms->fan_rpm = mavlink_msg_qingxie_bms_get_fan_rpm(msg); qingxie_bms->sys_run_state = mavlink_msg_qingxie_bms_get_sys_run_state(msg); qingxie_bms->sys_fault_state = mavlink_msg_qingxie_bms_get_sys_fault_state(msg); qingxie_bms->sys_fault_code = mavlink_msg_qingxie_bms_get_sys_fault_code(msg); qingxie_bms->lipo_current = mavlink_msg_qingxie_bms_get_lipo_current(msg); qingxie_bms->total_runtime = mavlink_msg_qingxie_bms_get_total_runtime(msg); #else uint8_t len = msg->len < MAVLINK_MSG_ID_QINGXIE_BMS_LEN? msg->len : MAVLINK_MSG_ID_QINGXIE_BMS_LEN; memset(qingxie_bms, 0, MAVLINK_MSG_ID_QINGXIE_BMS_LEN); memcpy(qingxie_bms, _MAV_PAYLOAD(msg), len); #endif }