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