/******************************************************************************* * File Name : MsgPack.h * Description : * Created on : 2019��11��5�� * Author : www.hido-studio.com *******************************************************************************/ #ifndef APL_MSGPACK_H_ #define APL_MSGPACK_H_ /******************************************************************************* * Include Files * *******************************************************************************/ #include "HIDO_Typedef.h" #include "Module.h" /******************************************************************************* * Macro * *******************************************************************************/ #define MSG_FLAG(n) (1 << (n)) /******************************************************************************* * Type Definition * *******************************************************************************/ typedef struct { HIDO_UINT8 m_au8Data[1024]; HIDO_UINT32 m_u32Len; } ST_MsgPackage; typedef enum { MSG_TYPE_ACK, MSG_TYPE_PARAM_CONFIG, MSG_TYPE_MODBUS_CONFIG, MSG_TYPE_POWER_CTRL, MSG_TYPE_CLEAN_DEVICE, MSG_TYPE_SWITCH, MSG_TYPE_UPDATE, } E_MsgType; typedef struct { #define FENCE_FLAG_1 MSG_FLAG(0) #define FENCE_FLAG_2 MSG_FLAG(1) #define FENCE_FLAG_3 MSG_FLAG(2) #define FENCE_FLAG_4 MSG_FLAG(3) #define FENCE_FLAG_5 MSG_FLAG(4) HIDO_UINT32 m_u32Flag; HIDO_DOUBLE m_dLat; HIDO_DOUBLE m_dLon; HIDO_FLOAT m_fSpeed; HIDO_FLOAT m_fDir; } ST_LocationData; typedef struct{ HIDO_FLOAT accel_x; HIDO_FLOAT accel_y; HIDO_FLOAT accel_z; HIDO_FLOAT gyro_x; HIDO_FLOAT gyro_y; HIDO_FLOAT gyro_z; HIDO_FLOAT roll; HIDO_FLOAT pitch; HIDO_FLOAT yaw; } ST_IMUData; typedef struct { HIDO_UINT8 battery_level; // 电池电量百分比 HIDO_FLOAT battery_voltage; // 电池电压 HIDO_CHAR operation_mode[16]; // 操作模式:manual, auto, emergency_stop HIDO_CHAR motor_status[16]; // 电机状态:stopped, running, error HIDO_CHAR blade_status[16]; // 刀片状态:stopped, rotating HIDO_UINT8 blade_height; // 刀盘高度(厘米) HIDO_UINT8 self_check_status; // 自检状态:1-完成,0-未完成 HIDO_UINT32 error_code; // 错误代码 HIDO_CHAR error_message[128]; // 错误信息 } ST_StatusData; typedef struct { HIDO_CHAR msg_id[64]; HIDO_UINT64 timestamp; HIDO_CHAR device_id[64]; HIDO_CHAR data_type[16]; HIDO_CHAR gps_raw[256]; ST_IMUData imu_data; ST_StatusData status; } ST_ReportGps; typedef struct { #define FLAG_LOCATION MSG_FLAG(0) #define FLAG_STATUS MSG_FLAG(1) #define FLAG_TEMP MSG_FLAG(2) #define FLAG_CHARGE_STATE MSG_FLAG(3) #define FLAG_BATTERY_LEVEL MSG_FLAG(4) #define FLAG_CHARGE_VOLTAGE MSG_FLAG(5) #define FLAG_SAFE_CODE MSG_FLAG(6) #define FLAG_FAULT_CODE MSG_FLAG(7) HIDO_UINT32 m_u32Flag; ST_LocationData m_stLocation; HIDO_UINT32 m_u32Status; HIDO_FLOAT m_fTemp; HIDO_UINT8 m_u8ChargeState; HIDO_UINT8 m_u8BatteryLevel; HIDO_FLOAT m_fChargeVoltage; HIDO_UINT32 m_u32SafeCode; HIDO_UINT32 m_u32FaultCode; } ST_ReportData; typedef struct { #define F_CNT 5 #define FLAG_B MSG_FLAG(0) #define FLAG_DUF MSG_FLAG(1) #define FLAG_FxE(n) MSG_FLAG(2 + (n)) #define FLAG_FxB(n) MSG_FLAG(7 + (n)) #define FLAG_L MSG_FLAG(12) #define FLAG_V MSG_FLAG(13) #define FLAG_URL MSG_FLAG(14) #define FLAG_MD5 MSG_FLAG(15) #define FLAG_VSU MSG_FLAG(16) #define FLAG_IP MSG_FLAG(17) #define FLAG_VT MSG_FLAG(18) #define FLAG_FCT MSG_FLAG(19) #define FLAG_ATX MSG_FLAG(20) #define FLAG_ATY MSG_FLAG(21) #define FLAG_ATZ MSG_FLAG(22) #define FLAG_AZMT MSG_FLAG(23) HIDO_UINT32 m_u32Flag; HIDO_UINT32 m_u32B; HIDO_UINT32 m_u32DUF; /* ���ڣ���λ���� */ HIDO_UINT32 m_au32FxE[5]; /* ����xʹ�� */ HIDO_UINT32 m_au32FxBCnt[5]; /* ����x����� */ HIDO_UINT32 m_u32L; /* �豸��ʧ��λ */ HIDO_CHAR m_acV[16]; /* Ӳ���豸Զ������ */ HIDO_CHAR m_acURL[128]; HIDO_CHAR m_acMD5[36]; HIDO_UINT32 m_u32VSU; /**/ HIDO_CHAR m_acIP[32]; HIDO_FLOAT m_fVT; /* �ٶ���ֵ */ HIDO_UINT32 m_u32FCT; /* Ƶ�ʱ仯��ֵ */ HIDO_UINT32 m_u32ATX; /* X����ٶ���ֵ */ HIDO_UINT32 m_u32ATY; /* Y����ٶ���ֵ */ HIDO_UINT32 m_u32ATZ; /* Z����ٶ���ֵ */ HIDO_UINT32 m_u32AZMT; /* Z����𶯷�����ֵ */ } ST_CtrlData; /******************************************************************************* * Global Function * *******************************************************************************/ HIDO_INT32 MsgPack_ReportGps(ST_MsgPackage *_pstPackage, ST_ReportGps *_pstReportGps); HIDO_INT32 MsgPack_Parse(HIDO_CHAR *_pcJson, ST_CtrlData *_pstCtrl); #endif /* APL_MSGPACK_H_ */