143 lines
3.0 KiB
C
143 lines
3.0 KiB
C
/*================================================================
|
|
Copyright (c) 2021, Quectel Wireless Solutions Co., Ltd. All rights reserved.
|
|
Quectel Wireless Solutions Proprietary and Confidential.
|
|
=================================================================*/
|
|
|
|
#ifndef _QL_PING_H
|
|
#define _QL_PING_H
|
|
|
|
#include "ql_rtos.h"
|
|
|
|
#pragma pack(push)
|
|
#pragma pack(1)
|
|
|
|
typedef struct
|
|
{
|
|
int pdpCid;
|
|
char * host;
|
|
int timeout;
|
|
u8 dataSize;
|
|
u8 pingNum;
|
|
u32 athandle;
|
|
u8 ping_type;
|
|
ql_sem_t qping_bind_sem;
|
|
} _ql_ping_cfg_t;
|
|
|
|
typedef struct
|
|
{
|
|
int pdpCid;
|
|
char * host;
|
|
int timeout;
|
|
u8 dataSize;
|
|
u8 pingNum;
|
|
} ql_ping_cfg_t;
|
|
|
|
typedef struct
|
|
{
|
|
char ipSrc[64];
|
|
u8 dataSize;
|
|
u32 rtt;
|
|
u8 ttl;
|
|
u8 sentNum;
|
|
u8 rcvdNum;
|
|
u8 lostNum;
|
|
u32 minRtt;
|
|
u32 maxRtt;
|
|
u32 avgRtt;
|
|
} ql_ping_stat_t;
|
|
|
|
typedef struct
|
|
{
|
|
ql_timer_t tmrHdl;
|
|
ql_sem_t semHdl;
|
|
ql_task_t threadHdl;
|
|
} ql_ping_dns_t;
|
|
|
|
typedef enum
|
|
{
|
|
QL_PING_INPROGRESS,
|
|
QL_PING_FINISHED
|
|
} ql_ping_state_e;
|
|
|
|
/*****************************************************************
|
|
* Function: ql_ping_cb_t
|
|
*
|
|
* Description:
|
|
* 使用回调函数获取ping结果。
|
|
*
|
|
* Parameters:
|
|
* state [out] 当前ping操作的状态
|
|
* err [out] ping操作的结果。
|
|
* statistic [out] ping操作的状态信息。
|
|
*
|
|
* Return:
|
|
* 无
|
|
*
|
|
*****************************************************************/
|
|
|
|
typedef void (* ql_ping_cb_t)(ql_ping_state_e state, int err, ql_ping_stat_t * statistic);
|
|
|
|
typedef struct
|
|
{
|
|
_ql_ping_cfg_t config;
|
|
ql_ping_stat_t statistic;
|
|
ql_ping_dns_t dns;
|
|
ql_task_t threadHdl;
|
|
ql_ping_cb_t cb;
|
|
u32 reserved;
|
|
void *reserved1;
|
|
u8 reserved2;
|
|
} ql_ping_ctx_t;
|
|
|
|
|
|
|
|
#pragma pack(pop)
|
|
/*****************************************************************
|
|
* Function: ql_ping_init
|
|
*
|
|
* Description:
|
|
* 初始化ping操作的参数,内部会对内存申请,并设置ping操作结果的回调函数,返回ping 句柄。
|
|
*
|
|
* Parameters:
|
|
* cfg [in] ping操作配置参数。
|
|
* cb [in] 回调函数名
|
|
* Return:
|
|
* NULL,初始化失败。
|
|
* 非NULL,初始化成功,返回ping参数句柄。
|
|
*
|
|
*****************************************************************/
|
|
|
|
extern ql_ping_ctx_t * ql_ping_init(ql_ping_cfg_t cfg, ql_ping_cb_t cb);
|
|
/*****************************************************************
|
|
* Function: ql_ping
|
|
*
|
|
* Description:
|
|
* ping操作,非阻塞方式,ping操作结果可以在函调函数处理。
|
|
*
|
|
* Parameters:
|
|
* ping_ctx_ptr [in] ping参数句柄。
|
|
*
|
|
* Return:
|
|
* 0,成功。
|
|
* 非0,失败。
|
|
*
|
|
*****************************************************************/
|
|
|
|
extern int ql_ping(ql_ping_ctx_t * ping_ctx_ptr);
|
|
/*****************************************************************
|
|
* Function: ql_ping_deinit
|
|
*
|
|
* Description:
|
|
* 去初始化操作,对ql_ping_init申请内存进行释放。
|
|
*
|
|
* Parameters:
|
|
* ping_ctx_ptr [in] ping参数句柄。
|
|
*
|
|
* Return:
|
|
* 无
|
|
*****************************************************************/
|
|
|
|
extern void ql_ping_deinit(ql_ping_ctx_t * ping_ctx_ptr);
|
|
|
|
#endif
|