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