XFusion API v1.3.0
载入中...
搜索中...
未找到
examples/wireless/wifi/scan/base_scan/main/xf_main.c

xf_wal wifi 基本扫描 示例。

/* ==================== [Includes] ========================================== */
#include "xf_utils.h"
#include "xf_wifi.h"
#include "xf_task.h"
/* ==================== [Defines] =========================================== */
#define EXAMPLE_SCAN_CHANNEL_START 1
#define EXAMPLE_SCAN_CHANNEL_END 13
#define EXAMPLE_SCAN_RESULT_SIZE 20
#define EXAMPLE_SCAN_BLOCK_IS_ENABLE 1
#if EXAMPLE_SCAN_BLOCK_IS_ENABLE
# define EXAMPLE_SCAN_BLOCK true
#else
# define EXAMPLE_SCAN_BLOCK false
#endif
#define EXAMPLE_WIFI_NTASK_PRIORITY 15
#define EXAMPLE_WIFI_NTASK_PERIOD_MS 10
#define TBL_IT(v) {v, XSTR(v)}
/* ==================== [Typedefs] ========================================== */
typedef struct example_scan_context_s {
uint8_t scan_complete;
uint32_t ap_num;
const char *msg;
/* ==================== [Static Prototypes] ================================= */
static void _error_check_failed(void);
xf_wifi_event_id_t event_id, void *event_data, void *user_args);
static const char *ex_auth_mode_to_name(xf_wifi_auth_mode_t code);
static void _wifi_ntask(xf_task_t task);
/* ==================== [Static Variables] ================================== */
static const char *TAG = "scan";
static ex_scan_ctx_t ctx = {0};
/* ==================== [Macros] ============================================ */
#define ERROR_CHECK(expression) \
do { \
if (unlikely((expression) != XF_OK)) { \
XF_LOGE(TAG, "An error occurred: %s", XSTR(expression != XF_OK)); \
_error_check_failed(); \
} \
} while (0)
/* ==================== [Global Functions] ================================== */
void xf_main(void)
{
/* 1. 使能 wifi 协议栈 */
/* 2. 设置 sta 事件回调 */
/* 3. 启动 sta */
/* 4. 开始扫描任务 */
}
/* ==================== [Static Functions] ================================== */
{
XF_LOGI(TAG, "_wifi_ntask start!");
for (;;) {
xf_wifi_scan_cfg_t scan_cfg = {
.show_hidden = true,
};
#if (!EXAMPLE_SCAN_BLOCK_IS_ENABLE)
if (false == sp_ctx->scan_complete) {
}
#endif
XF_LOGI(TAG, "------------------------------");
XF_LOGI(TAG, "Channel %d scanning is complete. There are %d APs.",
for (uint32_t i = 0;
(i < ARRAY_SIZE(sp_ctx->ap_info)) && (i < sp_ctx->ap_num);
i++) {
"\n"
" index: %d\n"
" ssid: %s\n"
" bssid: " XF_MACSTR "\n"
" rssi: %d\n"
" authmode: %s",
i,
}
XF_LOGI(TAG, "------------------------------");
/* 清除未读完的数据 */
memset(sp_ctx->ap_info, 0, sizeof(sp_ctx->ap_info));
/* 扫描下一个通道 */
XF_LOGI(TAG, "done!");
}
}
}
xf_wifi_event_id_t event_id, void *event_data, void *user_args)
{
UNUSED(user_args);
UNUSED(event_data);
switch (event_id) {
} break;
default:
break;
}
}
static const char *ex_auth_mode_to_name(xf_wifi_auth_mode_t code)
{
static const ex_auth_mode_msg_t ex_auth_mode_msg_table[] = {
};
unsigned int i = 0;
for (i = 0; i < (unsigned int)ARRAY_SIZE(ex_auth_mode_msg_table); ++i) {
if (ex_auth_mode_msg_table[i].code == code) {
return ex_auth_mode_msg_table[i].msg;
}
}
return ex_auth_mode_msg_table[ARRAY_SIZE(ex_auth_mode_msg_table) - 1].msg;
}
static void _error_check_failed(void)
{
XF_LOGI(TAG, "Run-time error.");
for (;;) {
}
}
static void _wifi_sta_event_handler(xf_wifi_event_id_t event_id, void *event_data, void *user_args)
void xf_main(void)
Definition xf_main.c:28
#define XF_MACSTR
Definition xf_mac.h:47
#define XF_MAC2STR(a)
Definition xf_mac.h:44
#define XF_NTASK_BEGIN(ntask)
Definition xf_ntask.h:193
#define XF_NTASK_END()
Definition xf_ntask.h:199
#define xf_ntask_delay(delay_ms)
Definition xf_ntask.h:229
static xf_task_t xf_ttask_create_loop(xf_task_func_t func, void *func_arg, uint16_t priority, uint32_t delay_ms)
在默认的任务管理下,创建 ttask 循环任务。
Definition xf_task.h:162
#define ARRAY_SIZE(arr)
ARRAY_SIZE - 获取数组 arr 中的元素数量。
Definition xf_predef.h:173
xf_err_t xf_wifi_scan_get_result(xf_wifi_ap_info_t result_array[], uint32_t result_array_size, uint32_t *p_result_num)
wifi 获取扫描结果。
xf_err_t xf_wifi_scan_start(const xf_wifi_scan_cfg_t *p_cfg, bool block)
wifi 启动 AP 扫描。
xf_err_t xf_wifi_scan_clear_result(void)
wifi 清除扫描结果。
xf_err_t xf_wifi_sta_set_cb(xf_wifi_cb_t cb_func, void *user_args)
wifi STA 设置回调函数.
xf_err_t xf_wifi_sta_init(const xf_wifi_sta_cfg_t *p_cfg)
启用 wifi STA 模式.
xf_err_t xf_wifi_enable(void)
启用 wifi 协议栈.
enum _xf_wifi_authenticate_mode_t xf_wifi_auth_mode_t
授权模式的强度。 OPEN < WEP < WPA_PSK < OWE < WPA2_PSK = WPA_WPA2_PSK < WAPI_PSK < WPA3_PSK = WPA2_WPA3_PSK
int32_t xf_wifi_event_id_t
wifi 事件 id。见 xf_wifi_event_code_t.
@ XF_WIFI_AUTH_WPA2_PSK
@ XF_WIFI_AUTH_WEP
@ XF_WIFI_AUTH_OPEN
@ XF_WIFI_AUTH_MAX
@ XF_WIFI_AUTH_WPA3_PSK
@ XF_WIFI_AUTH_WPA_WPA2_PSK
@ XF_WIFI_AUTH_ENTERPRISE
@ XF_WIFI_AUTH_WPA_PSK
@ XF_WIFI_AUTH_WPA3_ENT_192
@ XF_WIFI_AUTH_WAPI_PSK
@ XF_WIFI_AUTH_OWE
@ XF_WIFI_AUTH_WPA2_WPA3_PSK
@ XF_WIFI_EVENT_SCAN_DONE
#define TAG
Definition xf_main.c:24
#define ERROR_CHECK(e)
Definition xf_main.c:70
AP 信息。 扫描结果中使用。
uint8_t bssid[XF_MAC_LEN_MAX]
xf_wifi_auth_mode_t authmode
uint8_t ssid[XF_WIFI_SSID_LEN_MAX]
Parameters for an SSID scan.
认证模式与字符串消息。
Definition xf_main.c:50
扫描任务无栈协程上下文。
Definition xf_main.c:43
xf_wifi_ap_info_t ap_info[EXAMPLE_SCAN_RESULT_SIZE]
Definition xf_main.c:46
uint8_t curr_scan_channel
Definition xf_main.c:45
static void task(xf_task_t task)
Definition xf_main.c:45
static void _error_check_failed(void)
Definition xf_main.c:119
#define EXAMPLE_WIFI_NTASK_PERIOD_MS
Definition xf_main.c:31
static void _wifi_ntask(xf_task_t task)
wifi 无栈任务。
Definition xf_main.c:107
#define EXAMPLE_WIFI_NTASK_PRIORITY
Definition xf_main.c:30
#define EXAMPLE_SCAN_CHANNEL_START
Definition xf_main.c:25
struct example_authenticate_mode_message_s ex_auth_mode_msg_t
#define EXAMPLE_SCAN_CHANNEL_END
Definition xf_main.c:26
static ex_scan_ctx_t ctx
Definition xf_main.c:69
#define EXAMPLE_SCAN_BLOCK
Definition xf_main.c:31
#define TBL_IT(v)
Definition xf_main.c:39
static const char * ex_auth_mode_to_name(xf_wifi_auth_mode_t code)
Definition xf_main.c:175
struct example_scan_context_s ex_scan_ctx_t
static ex_scan_ctx_t * sp_ctx
Definition xf_main.c:70
#define EXAMPLE_SCAN_RESULT_SIZE
Definition xf_main.c:27
#define XF_LOGI(tag, format,...)
void * xf_task_t
任务句柄。
#define UNUSED(_x)
xf_wifi 包含 STA、AP 接口。