yincheng.zhong
7 天以前 b53fff11e6f0d560594834de32886239cbba90a3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
/*******************************************************************************
 * 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_ */