/*******************************************************************************
|
* 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;
|
}
|