20#define EXAMPLE_WIFI_AUTHMODE XF_WIFI_AUTH_WPA_WPA2_PSK
21#define EXAMPLE_WIFI_CHANNEL 6
22#define EXAMPLE_WIFI_SSID_HIDDEN_FLAG 0
29#if !defined(EX_EASY_WIFI_AP_MAC)
30# define EX_EASY_WIFI_AP_MAC "\x11\x22\x33\x44\x55\x66"
32#if !defined(EX_EASY_WIFI_STA_MAC)
33# define EX_EASY_WIFI_STA_MAC "\xaa\xbb\xcc\xdd\xee\xff"
54static const char *
TAG =
"ex_easy_wifi";
63 .
ssid = CONFIG_EX_EASY_WIFI_SSID,
64 .password = CONFIG_EX_EASY_WIFI_PASSWORD,
83 .
ssid = CONFIG_EX_EASY_WIFI_SSID,
84 .password = CONFIG_EX_EASY_WIFI_PASSWORD,
94#define EX_THREAD_NAME "ex_sta"
95#define EX_THREAD_PRIORITY XF_OSAL_PRIORITY_NORMOL
96#define EX_THREAD_STACK_SIZE (1024 * 4)
131 uint32_t sta_num = 0;
134 if (
XF_OK != xf_ret) {
138 if (sta_num >
ARRAY_SIZE(sta_array) || (0 == sta_num)) {
144 if (
XF_OK != xf_ret) {
151 netif_hdl, pair_mac_ip,
ARRAY_SIZE(pair_mac_ip));
152 if (
XF_OK != xf_ret) {
171 if (
XF_OK != xf_ret) {
177 if (
XF_OK != xf_ret) {
236 if (
XF_OK != xf_ret) {
242 if (
XF_OK != xf_ret) {
262 if (
XF_OK != xf_ret) {
268 if (
XF_OK != xf_ret) {
351 XF_LOGI(
TAG,
"The STA is connected to the AP.");
365 XF_LOGI(
TAG,
"The STA has been disconnected from the AP.");
xf_ip4_addr_t ex_easy_wifi_ap_get_onw_ip(void)
xf_ip4_addr_t ex_easy_wifi_ap_get_last_sta_ip(void)
#define EX_THREAD_PRIORITY
#define EX_THREAD_STACK_SIZE
#define EX_EASY_WIFI_STA_MAC
bool ex_easy_wifi_sta_got_ip(void)
static xf_wifi_ap_cfg_ext_t s_ap_cfg_ext
xf_ip4_addr_t ex_easy_wifi_sta_get_onw_ip(void)
bool ex_easy_wifi_sta_is_connected(void)
xf_err_t ex_easy_wifi_sta(void)
#define EX_EASY_WIFI_AP_MAC
xf_err_t ex_easy_wifi_ap(void)
static void _sta_task(void *argument)
static uint8_t s_sta_got_ip_flag
static const xf_osal_thread_attr_t s_sta_attr
static void _wifi_ap_event_handler(xf_wifi_event_id_t event_id, void *event_data, void *user_args)
static xf_wifi_sta_cfg_ext_t s_sta_cfg_ext
static uint8_t s_ap_ip_assigned
static void _wifi_sta_event_handler(xf_wifi_event_id_t event_id, void *event_data, void *user_args)
static uint8_t s_sta_connected
#define EXAMPLE_WIFI_CHANNEL
xf_ip4_addr_t ex_easy_wifi_sta_get_gw_ip(void)
#define EXAMPLE_WIFI_SSID_HIDDEN_FLAG
#define EXAMPLE_WIFI_AUTHMODE
static xf_osal_thread_t s_sta_thread_hdl
static xf_wifi_sta_cfg_t s_sta_cfg
static void _wifi_ip_event_handler(xf_ip_event_id_t event_id, void *event_data, void *user_args)
static xf_wifi_ap_cfg_t s_ap_cfg
static void _ip_event_handler(xf_ip_event_id_t event_id, void *event_data, void *user_args)
#define xf_ip4_addr1_16(ipaddr)
int32_t xf_ip_event_id_t
ip 事件 id。见 xf_ip_event_code_t.
#define xf_ip4_addr3_16(ipaddr)
#define XF_IP4TOADDR(a, b, c, d)
void * xf_netif_t
xfusion netif 句柄。
#define XF_IP2STR(ipaddr)
#define xf_ip4_addr2_16(ipaddr)
@ XF_IP_EVENT_IP_ASSIGNED
xf_err_t xf_netif_dhcps_get_clients_by_mac(xf_netif_t netif_hdl, xf_netif_pair_mac_ip_t mac_ip_pair_array[], uint32_t pair_array_size)
根据 MAC 地址获取对应的 IP(对于 DHCP 服务器)。
xf_err_t xf_netif_set_ip_info(xf_netif_t netif_hdl, const xf_netif_ip_info_t *ip_info)
设置指定 netif 句柄的 IPv4 信息(ip地址、网关、子网掩码)。
xf_err_t xf_netif_get_ip_info(xf_netif_t netif_hdl, xf_netif_ip_info_t *ip_info)
获取指定 netif 句柄的 IPv4 信息(ip地址、网关、子网掩码)。
xf_err_t xf_osal_thread_delete(xf_osal_thread_t thread)
终止线程的执行。
xf_osal_thread_t xf_osal_thread_create(xf_osal_thread_func_t func, void *argument, const xf_osal_thread_attr_t *attr)
创建一个线程并将其添加到活动线程中。
void * xf_osal_thread_t
线程句柄。
xf_err_t xf_osal_delay_ms(uint32_t ms)
(睡眠)等待超时,以 ms 为单位。
#define XF_ERROR_CHECK(expression)
xfusion 错误检查宏(表达式 不等于 XF_OK 时则调用 XF_CHECK_ERROR_HANDLER)。
int32_t xf_err_t
整形错误类型。 错误码具体值见 xf_err_code_t.
const char * xf_err_to_name(xf_err_t code)
返回 xf_err_code_t 错误代码对应的错误信息字符串。
#define ARRAY_SIZE(arr)
ARRAY_SIZE - 获取数组 arr 中的元素数量。
#define xf_memcpy(dest, src, n)
xf_err_t xf_wifi_ap_init(const xf_wifi_ap_cfg_t *p_cfg)
启用 wifi AP 模式.
xf_err_t xf_wifi_ap_set_cb(xf_wifi_cb_t cb_func, void *user_args)
AP 设置 wifi 事件回调函数.
xf_err_t xf_wifi_ap_get_netif(xf_netif_t *p_netif_hdl)
获取 AP 的 netif 句柄.
xf_err_t xf_wifi_ap_set_ip_cb(xf_ip_cb_t cb_func, void *user_args)
AP 设置 ip 事件回调函数.
xf_err_t xf_wifi_ap_get_sta_list(xf_wifi_sta_info_t sta_array[], uint32_t sta_array_size, uint32_t *p_sta_num)
获取 AP 已连接的 STA 列表.
xf_err_t xf_wifi_sta_set_ip_cb(xf_ip_cb_t cb_func, void *user_args)
STA 设置 ip 事件回调函数.
xf_err_t xf_wifi_sta_get_netif(xf_netif_t *p_netif_hdl)
获取 STA 的 netif 句柄.
xf_err_t xf_wifi_sta_connect(xf_wifi_sta_cfg_t *p_cfg)
STA 连接到指定 AP.
bool xf_wifi_sta_is_connected(void)
STA 检查是否已经连接到 AP.
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 协议栈.
int32_t xf_wifi_event_id_t
wifi 事件 id。见 xf_wifi_event_code_t.
#define XF_WIFI_PASSWORD_LEN_MAX
wifi 密码最大长度。 64 字节有效字符 + 一个 '\0'。
@ XF_WIFI_EVENT_STA_START
@ XF_WIFI_EVENT_AP_STA_DISCONNECTED
@ XF_WIFI_EVENT_AP_STA_CONNECTED
@ XF_WIFI_EVENT_STA_DISCONNECTED
@ XF_WIFI_EVENT_STA_CONNECTED
XF_IP_EVENT_STA_GOT_IP 事件的事件结构。
xf_netif_ip_info_t ip_info
XF_IP_EVENT_AP_STAIPASSIGNED 事件的事件结构。
uint8_t mac[XF_MAC_LEN_MAX]
DHCP 客户端的地址信息(MAC 和 IP 地址对)。
AP 事件消息类型: STA 连接。 事件 id 见 XF_WIFI_EVENT_AP_STA_CONNECTED.
uint8_t mac[XF_MAC_LEN_MAX]
AP 事件消息类型: STA 断开连接。 事件 id 见 XF_WIFI_EVENT_AP_STA_DISCONNECTED.
uint8_t mac[XF_MAC_LEN_MAX]
STA 事件消息类型: 已连接到 AP。 事件 id 见 XF_WIFI_EVENT_STA_CONNECTED.
uint8_t bssid[XF_MAC_LEN_MAX]
xf_wifi_auth_mode_t authmode
uint8_t ssid[XF_WIFI_SSID_LEN_MAX]
STA 事件消息类型: 已从 AP 断开连接。 事件 id 见 XF_WIFI_EVENT_STA_DISCONNECTED.
uint8_t bssid[XF_MAC_LEN_MAX]
uint8_t ssid[XF_WIFI_SSID_LEN_MAX]
Soft-AP 扩展配置结构体。 谨慎使用,不同平台对这些配置的处理不一定相同。
uint8_t password[XF_WIFI_PASSWORD_LEN_MAX]
xf_wifi_auth_mode_t authmode
uint8_t ssid[XF_WIFI_SSID_LEN_MAX]
uint8_t password[XF_WIFI_PASSWORD_LEN_MAX]
xf_wifi_auth_mode_t authmode
uint8_t ssid[XF_WIFI_SSID_LEN_MAX]
#define XF_LOGI(tag, format,...)
#define XF_LOGE(tag, format,...)