/******************************************************************************* * 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_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_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_ */