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
/*******************************************************************************
 * File Name         : MsgPack.c
 * Description       :
 *******************************************************************************/
 
/*******************************************************************************
 *                              Include Files                                  *
 *******************************************************************************/
#include "MsgPack.h"
 
#include "stdio.h"
#include "string.h"
#include "Module.h"
#include "HIDO_Util.h"
#include "HIDO_Debug.h"
 
/*******************************************************************************
 *                                  Macro                                      *
 *******************************************************************************/
#define MSG_PACK(package, len, ...) \
    len += HIDO_UtilSnprintf((HIDO_CHAR *)(package)->m_au8Data + (len), sizeof(package->m_au8Data) - (len), __VA_ARGS__);
 
/*******************************************************************************
 *                             Type Definition                                 *
 *******************************************************************************/
 
/*******************************************************************************
 *                             Local Variable                                  *
 *******************************************************************************/
 
/*******************************************************************************
 *                        Local Function Declaration                           *
 *******************************************************************************/
 
/*******************************************************************************
 *                             Local Function                                  *
 *******************************************************************************/
 
/*******************************************************************************
 *                             Global Function                                 *
 *******************************************************************************/
 
/*******************************************************************************
 * Function Name     : MsgPack_ReportGps
 * Description       :
 * Input             :
 * Output            :
 * Return            :
 *******************************************************************************/
HIDO_INT32 MsgPack_ReportGps(ST_MsgPackage *_pstPackage, ST_ReportGps *_pstReportGps)
{
    HIDO_UINT32 u32Len = 0;
 
    if (HIDO_NULL == _pstReportGps)
    {
        return HIDO_ERR;
    }
 
    /* ����json */
    MSG_PACK(_pstPackage, u32Len, "{");
    MSG_PACK(_pstPackage, u32Len, "\"msg_id\":\"%s\"", _pstReportGps->msg_id);
    MSG_PACK(_pstPackage, u32Len, ",\"timestamp\":%llu", _pstReportGps->timestamp);
    MSG_PACK(_pstPackage, u32Len, ",\"device_id\":\"%s\"", _pstReportGps->device_id);
    MSG_PACK(_pstPackage, u32Len, ",\"data_type\":\"%s\"", _pstReportGps->data_type);
    MSG_PACK(_pstPackage, u32Len, ",\"gps_raw\":\"%s\"", _pstReportGps->gps_raw);
    MSG_PACK(_pstPackage, u32Len, ",\"imu_data\":{");
    MSG_PACK(_pstPackage, u32Len, "\"roll\":%.1f", _pstReportGps->imu_data.roll);
    MSG_PACK(_pstPackage, u32Len, ",\"pitch\":%.1f", _pstReportGps->imu_data.pitch);
    MSG_PACK(_pstPackage, u32Len, ",\"yaw\":%.1f", _pstReportGps->imu_data.yaw);
    MSG_PACK(_pstPackage, u32Len, "}");
    MSG_PACK(_pstPackage, u32Len, ",\"status\":{");
    MSG_PACK(_pstPackage, u32Len, "\"battery_level\":%u", _pstReportGps->status.battery_level);
    MSG_PACK(_pstPackage, u32Len, ",\"battery_voltage\":%.1f", _pstReportGps->status.battery_voltage);
    MSG_PACK(_pstPackage, u32Len, ",\"operation_mode\":\"%s\"", _pstReportGps->status.operation_mode);
    MSG_PACK(_pstPackage, u32Len, ",\"motor_status\":\"%s\"", _pstReportGps->status.motor_status);
    MSG_PACK(_pstPackage, u32Len, ",\"blade_status\":\"%s\"", _pstReportGps->status.blade_status);
    MSG_PACK(_pstPackage, u32Len, ",\"blade_height\":%u", _pstReportGps->status.blade_height);
    MSG_PACK(_pstPackage, u32Len, ",\"self_check_status\":%u", _pstReportGps->status.self_check_status);
    MSG_PACK(_pstPackage, u32Len, ",\"error_code\":%u", _pstReportGps->status.error_code);
    MSG_PACK(_pstPackage, u32Len, ",\"error_message\":\"%s\"", _pstReportGps->status.error_message);
    MSG_PACK(_pstPackage, u32Len, "}");
    MSG_PACK(_pstPackage, u32Len, "}");
    _pstPackage->m_u32Len = u32Len;
 
    return u32Len;
}
 
/*******************************************************************************
 * Function Name     : MsgPack_Parse
 * Description       :
 * Input             :
 * Output            :
 * Return            :
 *******************************************************************************/
HIDO_INT32 MsgPack_Parse(HIDO_CHAR *_pcJson, ST_CtrlData *_pstCtrl)
{
    return HIDO_OK;
}