XFusion API v1.3.0
载入中...
搜索中...
未找到
xf_ping.h
浏览该文件的文档.
1
20#ifndef __XF_PING_H__
21#define __XF_PING_H__
22
23/* ==================== [Includes] ========================================== */
24
25#include "lwip/ip_addr.h"
26#include "lwip/icmp.h"
27
28#include "xf_osal.h"
29#include "xf_utils.h"
30
38#ifdef __cplusplus
39extern "C" {
40#endif
41
42/* ==================== [Defines] =========================================== */
43
44#define XF_PING_THREAD_NAME "xf_ping"
45
46/* ==================== [Typedefs] ========================================== */
47
51struct _xf_ping_ctx_t;
52
56typedef struct _xf_ping_ctx_t *xf_ping_t;
57
61typedef struct _xf_ping_cfg_t {
62 uint32_t count;
63 uint32_t interval_ms;
64 uint32_t timeout_ms;
65 uint32_t data_size;
66 uint8_t tos;
67 uint8_t ttl;
68 ip_addr_t target_addr;
69 uint32_t task_stack_size;
70 uint32_t task_prio;
71 uint32_t interface;
74
79 uint32_t b_count : 1;
80 uint32_t b_interval_ms : 1;
81 uint32_t b_timeout_ms : 1;
82 uint32_t b_tos : 1;
83 uint32_t b_ttl : 1;
84 uint32_t b_target_addr : 1;
85 uint32_t b_interface : 1;
86 uint32_t b_auto_delete_flag : 1;
87 uint32_t reserve : 24;
89
93#define XF_PING_DEFAULT_CONFIG() (xf_ping_cfg_t) { \
94 .count = 5, \
95 .interval_ms = 1000, \
96 .timeout_ms = 1000, \
97 .data_size = 64, \
98 .tos = 0, \
99 .ttl = IP_DEFAULT_TTL, \
100 .target_addr = *(IP_ANY_TYPE), \
101 .task_stack_size = (4 * 1024), \
102 .task_prio = XF_OSAL_PRIORITY_NORMOL, \
103 .interface = 0, \
104 .auto_delete_flag = 0, \
105 }
106
130
134typedef int32_t xf_ping_event_id_t;
135
143typedef void (*xf_ping_cb_t)(
144 xf_ping_event_id_t event_id, xf_ping_t hdl, void *user_args);
145
151typedef struct _xf_ping_ctx_t {
152 /* public: */
153 /* 只读数据 */
154 struct icmp_echo_hdr *packet_hdr;
155 ip_addr_t recv_addr;
156 uint32_t recv_len;
158 uint32_t total_time_ms;
159 uint32_t interval_ms;
160 uint32_t count;
161 uint32_t transmitted;
162 uint32_t received;
163 uint8_t ttl;
164 uint8_t tos;
167 /* privte: */
168 int sock;
169 /*
170 struct sockaddr_storage 太大,在某些芯片上(ws63)无法正常收发,不使用。
171 struct sockaddr_storage target_addr;
172 */
174 struct sockaddr_in in;
175 struct sockaddr_in6 in6;
179 uint32_t flags;
180 uint32_t icmp_pkt_size;
187 void *user_args;
189
190/* ==================== [Global Prototypes] ================================= */
191
206 const xf_ping_cfg_t *p_cfg, xf_ping_cb_t cb_func, void *user_args,
207 xf_ping_t *hdl_out);
208
218
228
241 xf_ping_t hdl, const xf_ping_cfg_t *p_cfg, xf_ping_cfg_update_flags_t *p_flags);
242
252
262
263/* ==================== [Macros] ============================================ */
264
265#ifdef __cplusplus
266} /* extern "C" */
267#endif
268
274#endif /* __XF_PING_H__ */
void * xf_osal_thread_t
线程句柄。
_xf_ping_event_code_t
Ping 事件声明。
Definition xf_ping.h:122
xf_err_t xf_ping_new_session(const xf_ping_cfg_t *p_cfg, xf_ping_cb_t cb_func, void *user_args, xf_ping_t *hdl_out)
创建 ping 会话。
Definition xf_ping.c:70
xf_err_t xf_ping_restart(xf_ping_t hdl, const xf_ping_cfg_t *p_cfg, xf_ping_cfg_update_flags_t *p_flags)
重新启动 ping 会话。
Definition xf_ping.c:239
struct _xf_ping_cfg_update_flags_t xf_ping_cfg_update_flags_t
ping 更新配置标志。
struct _xf_ping_ctx_t * xf_ping_t
ping 会话句柄。
Definition xf_ping.h:56
xf_err_t xf_ping_stop(xf_ping_t hdl)
停止 ping 会话。
Definition xf_ping.c:331
xf_err_t xf_ping_start(xf_ping_t hdl)
启动 ping 会话。
Definition xf_ping.c:224
bool xf_ping_is_running(xf_ping_t hdl)
检查 ping 是否正在运行。
Definition xf_ping.c:320
int32_t xf_ping_event_id_t
ping 事件 id。见 xf_ping_event_code_t.
Definition xf_ping.h:134
void(* xf_ping_cb_t)(xf_ping_event_id_t event_id, xf_ping_t hdl, void *user_args)
ping 回调函数原型。
Definition xf_ping.h:143
struct _xf_ping_cfg_t xf_ping_cfg_t
ping 配置类型。
struct _xf_ping_ctx_t xf_ping_ctx_t
ping 会话的上下文。
xf_err_t xf_ping_delete_session(xf_ping_t hdl)
删除 ping 会话。
Definition xf_ping.c:196
enum _xf_ping_event_code_t xf_ping_event_code_t
Ping 事件声明。
@ XF_PING_EVENT_DELETE
Definition xf_ping.h:126
@ XF_PING_EVENT_TIMEOUT
Definition xf_ping.h:124
@ XF_PING_EVENT_END
Definition xf_ping.h:125
@ XF_PING_EVENT_SUCC
Definition xf_ping.h:123
@ XF_PING_EVENT_MAX
Definition xf_ping.h:128
int32_t xf_err_t
整形错误类型。 错误码具体值见 xf_err_code_t.
Definition xf_err.h:69
ping 配置类型。
Definition xf_ping.h:61
uint32_t task_prio
Definition xf_ping.h:70
uint8_t tos
Definition xf_ping.h:66
uint8_t ttl
Definition xf_ping.h:67
uint32_t interface
Definition xf_ping.h:71
uint8_t auto_delete_flag
Definition xf_ping.h:72
uint32_t count
Definition xf_ping.h:62
uint32_t interval_ms
Definition xf_ping.h:63
uint32_t data_size
Definition xf_ping.h:65
uint32_t timeout_ms
Definition xf_ping.h:64
uint32_t task_stack_size
Definition xf_ping.h:69
ip_addr_t target_addr
Definition xf_ping.h:68
ping 更新配置标志。
Definition xf_ping.h:78
ping 会话的上下文。
Definition xf_ping.h:151
uint32_t elapsed_time_ms
Definition xf_ping.h:157
xf_ping_cb_t cb_func
Definition xf_ping.h:186
union _xf_ping_ctx_t::sockaddr_in_in6_u target_addr
uint32_t transmitted
Definition xf_ping.h:161
uint32_t received
Definition xf_ping.h:162
uint8_t tos
Definition xf_ping.h:164
uint8_t ttl
Definition xf_ping.h:163
uint8_t target_addr_type
Definition xf_ping.h:177
uint32_t total_time_ms
Definition xf_ping.h:158
uint8_t auto_delete_flag
Definition xf_ping.h:165
struct icmp_echo_hdr * packet_hdr
Definition xf_ping.h:154
uint32_t flags
Definition xf_ping.h:179
ip_addr_t recv_addr
Definition xf_ping.h:155
xf_osal_thread_t task_hdl
Definition xf_ping.h:182
uint32_t count
Definition xf_ping.h:160
uint8_t task_exit_flag
Definition xf_ping.h:183
uint32_t interval_ms
Definition xf_ping.h:159
uint32_t icmp_pkt_size
Definition xf_ping.h:180
void * user_args
Definition xf_ping.h:187
uint32_t recv_len
Definition xf_ping.h:156
uint8_t ping_running_flag
Definition xf_ping.h:184
struct sockaddr_in6 in6
Definition xf_ping.h:175