XFusion API v1.3.0
载入中...
搜索中...
未找到
xf_iperf.h
浏览该文件的文档.
1
12/* Iperf Example - iperf declaration
13
14 This example code is in the Public Domain (or CC0 licensed, at your option.)
15
16 Unless required by applicable law or agreed to in writing, this
17 software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
18 CONDITIONS OF ANY KIND, either express or implied.
19*/
20
29#ifndef __XF_IPERF_H__
30#define __XF_IPERF_H__
31
32/* ==================== [Includes] ========================================== */
33
34#include "xf_utils.h"
35#include "xf_osal.h"
36#include "xf_netif.h"
37
45#ifdef __cplusplus
46extern "C" {
47#endif
48
49/* ==================== [Defines] =========================================== */
50
51#define IPERF_IP_TYPE_IPV4 0
52#define IPERF_IP_TYPE_IPV6 1
53#define IPERF_TRANS_TYPE_TCP 0
54#define IPERF_TRANS_TYPE_UDP 1
55
56#define IPERF_FLAG_SET(cfg, flag) ((cfg) |= (flag))
57#define IPERF_FLAG_CLR(cfg, flag) ((cfg) &= (~(flag)))
58
59#define IPERF_FLAG_CLIENT (1)
60#define IPERF_FLAG_SERVER (1 << 1)
61#define IPERF_FLAG_TCP (1 << 2)
62#define IPERF_FLAG_UDP (1 << 3)
63
64#define IPERF_DEFAULT_PORT 5001
65#define IPERF_DEFAULT_INTERVAL 1
66#define IPERF_DEFAULT_TIME 30
67#define IPERF_DEFAULT_NO_BW_LIMIT -1
68
69#define IPERF_TRAFFIC_TASK_NAME "iperf_traffic"
70#define IPERF_TRAFFIC_TASK_PRIORITY XF_OSAL_PRIORITY_NORMOL
71#define IPERF_TRAFFIC_TASK_STACK 4096
72#define IPERF_REPORT_TASK_NAME "iperf_report"
73#define IPERF_REPORT_TASK_PRIORITY XF_OSAL_PRIORITY_NORMOL
74#define IPERF_REPORT_TASK_STACK 4096
75
76#define IPERF_DEFAULT_IPV4_UDP_TX_LEN (1470)
77#define IPERF_DEFAULT_IPV6_UDP_TX_LEN (1450)
78#define IPERF_DEFAULT_UDP_RX_LEN (16 << 10)
79#define IPERF_DEFAULT_TCP_TX_LEN (16 << 10)
80#define IPERF_DEFAULT_TCP_RX_LEN (16 << 10)
81
82#define IPERF_MAX_DELAY 64
83
84#define IPERF_SOCKET_RX_TIMEOUT_MS 3000
85
86/* ==================== [Typedefs] ========================================== */
87
91struct _xf_iperf_ctx_t;
92
97
116
120typedef int32_t xf_iperf_event_id_t;
121
131typedef void (*xf_iperf_cb_t)(
132 xf_iperf_event_id_t event_id, xf_iperf_t hdl, void *user_args);
133
161
165#define XF_IPERF_DEFAULT_CONFIG() (xf_iperf_cfg_t) { \
166 .flag = 0, \
167 .dip = {}, \
168 .sip = {}, \
169 .type = IPERF_IP_TYPE_IPV4, \
170 .dport = IPERF_DEFAULT_PORT, \
171 .sport = IPERF_DEFAULT_PORT, \
172 .interval = IPERF_DEFAULT_INTERVAL, \
173 .time = IPERF_DEFAULT_TIME, \
174 .len_send_buf = 0, \
175 .bw_lim = IPERF_DEFAULT_NO_BW_LIMIT, \
176 .traffic_task_stack_size = IPERF_TRAFFIC_TASK_STACK, \
177 .traffic_task_prio = IPERF_TRAFFIC_TASK_PRIORITY, \
178 .report_enabled = true, \
179 .report_task_stack_size = IPERF_REPORT_TASK_STACK, \
180 .report_task_prio = IPERF_REPORT_TASK_PRIORITY, \
181 }
182
223
224/* ==================== [Global Prototypes] ================================= */
225
241 const xf_iperf_cfg_t *p_cfg, xf_iperf_cb_t cb_func, void *user_args);
242
251
259bool xf_iperf_is_running(void);
260
269
270/* ==================== [Macros] ============================================ */
271
272#ifdef __cplusplus
273} /* extern "C" */
274#endif
275
281#endif /* __XF_IPERF_H__ */
xf_iperf_t xf_iperf_get_handle(void)
获取 iperf 句柄。
xf_err_t xf_iperf_start(const xf_iperf_cfg_t *p_cfg, xf_iperf_cb_t cb_func, void *user_args)
启动 iperf.
Definition xf_iperf.c:81
enum _xf_iperf_event_code_t xf_iperf_event_code_t
iperf 事件声明。
struct _xf_iperf_ctx_t * xf_iperf_t
iperf 句柄。
Definition xf_iperf.h:96
void(* xf_iperf_cb_t)(xf_iperf_event_id_t event_id, xf_iperf_t hdl, void *user_args)
iperf 回调函数原型。
Definition xf_iperf.h:131
struct _xf_iperf_cfg_t xf_iperf_cfg_t
iperf 配置类型。
struct _xf_iperf_ctx_t xf_iperf_ctx_t
iperf 上下文.
int32_t xf_iperf_event_id_t
iperf 事件 id。见 xf_iperf_event_code_t.
Definition xf_iperf.h:120
_xf_iperf_event_code_t
iperf 事件声明。
Definition xf_iperf.h:101
bool xf_iperf_is_running(void)
检查 iperf 是否正在运行。
Definition xf_iperf.c:140
xf_err_t xf_iperf_stop(void)
停止 iperf.
Definition xf_iperf.c:126
@ XF_IPERF_EVENT_MAX
Definition xf_iperf.h:114
@ XF_IPERF_EVENT_END
Definition xf_iperf.h:109
@ XF_IPERF_EVENT_REPORT
Definition xf_iperf.h:103
@ XF_IPERF_EVENT_START
Definition xf_iperf.h:102
void * xf_osal_thread_t
线程句柄。
int32_t xf_err_t
整形错误类型。 错误码具体值见 xf_err_code_t.
Definition xf_err.h:69
iperf 配置类型。
Definition xf_iperf.h:137
xf_ip_addr_t dip
Definition xf_iperf.h:141
uint32_t traffic_task_prio
Definition xf_iperf.h:155
uint32_t report_task_stack_size
Definition xf_iperf.h:158
uint16_t dport
Definition xf_iperf.h:144
xf_ip_addr_t sip
Definition xf_iperf.h:142
bool report_enabled
Definition xf_iperf.h:157
uint16_t sport
Definition xf_iperf.h:145
uint32_t report_task_prio
Definition xf_iperf.h:159
uint32_t flag
Definition xf_iperf.h:138
uint16_t len_send_buf
Definition xf_iperf.h:148
uint32_t interval
Definition xf_iperf.h:146
int32_t bw_lim
Definition xf_iperf.h:152
uint32_t time
Definition xf_iperf.h:147
uint32_t traffic_task_stack_size
Definition xf_iperf.h:154
iperf 上下文.
Definition xf_iperf.h:188
uint32_t sockfd
Definition xf_iperf.h:206
xf_iperf_cb_t cb_func
Definition xf_iperf.h:214
xf_osal_thread_t report_task_hdl
Definition xf_iperf.h:220
uint32_t curr_time
Definition xf_iperf.h:192
xf_osal_thread_t traffic_task_hdl
Definition xf_iperf.h:217
float average_bandwidth
Definition xf_iperf.h:202
bool report_is_running
Definition xf_iperf.h:221
uint32_t actual_len_internal
Definition xf_iperf.h:209
uint8_t * buffer
Definition xf_iperf.h:207
uint32_t buffer_len
Definition xf_iperf.h:208
void * user_args
Definition xf_iperf.h:215
bool traffic_is_running
Definition xf_iperf.h:218
uint32_t actual_len
Definition xf_iperf.h:196
float actual_bandwidth
Definition xf_iperf.h:201
xf_iperf_cfg_t cfg
Definition xf_iperf.h:191