XFusion API v1.3.0
载入中...
搜索中...
未找到
xf_main.c
浏览该文件的文档.
1
17/* ==================== [Includes] ========================================== */
18
19#include <string.h>
20
21#include "xf_utils.h"
22#include "xf_netif.h"
23#include "xf_wifi.h"
24
25/* ==================== [Defines] =========================================== */
26
27#define EXAMPLE_WIFI_SSID "myssid"
28#define EXAMPLE_WIFI_PASS "mypassword"
29#define EXAMPLE_WIFI_AUTHMODE XF_WIFI_AUTH_WPA_WPA2_PSK
30#define EXAMPLE_WIFI_CHANNEL 6
31#define EXAMPLE_WIFI_SSID_HIDDEN_FLAG 0
33/* ==================== [Typedefs] ========================================== */
34
35/* ==================== [Static Prototypes] ================================= */
36
37static void _error_check_failed(void);
38static void _wifi_ap_event_handler(
39 xf_wifi_event_id_t event_id, void *event_data, void *user_args);
40static void _wifi_ip_event_handler(
41 xf_ip_event_id_t event_id, void *event_data, void *user_args);
42
43/* ==================== [Static Variables] ================================== */
44
45static const char *TAG = "ap";
48 .ip4 = {
49 .ip.addr = XF_IP4TOADDR(192, 168, 6, 1),
50 .gw.addr = XF_IP4TOADDR(192, 168, 6, 1),
51 .netmask.addr = XF_IP4TOADDR(255, 255, 255, 0),
52 },
53 .ip6 = {},
54};
57 .password = EXAMPLE_WIFI_PASS,
58 .authmode = EXAMPLE_WIFI_AUTHMODE,
59 .channel = EXAMPLE_WIFI_CHANNEL,
60 .ssid_hidden = EXAMPLE_WIFI_SSID_HIDDEN_FLAG,
61 .p_cfg_ext = NULL,
62 .p_static_ip = &s_static_ip_cfg,
63};
64
65/* ==================== [Macros] ============================================ */
66
67#define ERROR_CHECK(expression) \
68 do { \
69 if (unlikely((expression) != XF_OK)) { \
70 XF_LOGE(TAG, "An error occurred: %s", XSTR(expression != XF_OK)); \
71 _error_check_failed(); \
72 } \
73 } while (0)
74
75/* ==================== [Global Functions] ================================== */
76
77void xf_main(void)
78{
79 /* 1. 使能 wifi 协议栈. */
81
82 /* 2. 设置事件回调. */
85
86 /* 3. 配置并开始 ap, 由于配置了静态 ip,内部将停止 dhcp 服务端并设置 ip */
88}
89
90/* ==================== [Static Functions] ================================== */
91
93 xf_wifi_event_id_t event_id, void *event_data, void *user_args)
94{
95 UNUSED(user_args);
96 switch (event_id) {
98 XF_LOGI(TAG, "AP has started.");
99 } break;
101 XF_LOGI(TAG, "AP has stopped.");
102 } break;
105 XF_LOGI(TAG, "station "XF_MACSTR" join", XF_MAC2STR(e->mac));
106 } break;
109 XF_LOGI(TAG, "station "XF_MACSTR" leave", XF_MAC2STR(e->mac));
110 } break;
111 default:
112 break;
113 }
114}
115
117 xf_ip_event_id_t event_id, void *event_data, void *user_args)
118{
119 UNUSED(user_args);
120 switch (event_id) {
123 XF_LOGI(TAG, "Assign ip " XF_IPSTR " to site " XF_MACSTR,
124 XF_IP2STR(&e->ip), XF_MAC2STR(e->mac));
125 } break;
126 default:
127 break;
128 }
129}
130
131static void _error_check_failed(void)
132{
133 XF_LOGI(TAG, "Run-time error.");
134 for (;;) {
135 }
136}
void xf_main(void)
Definition xf_main.c:28
int32_t xf_ip_event_id_t
ip 事件 id。见 xf_ip_event_code_t.
#define XF_IPSTR
#define XF_IPADDR_TYPE_V4
#define XF_MACSTR
Definition xf_mac.h:47
#define XF_IP4TOADDR(a, b, c, d)
#define XF_MAC2STR(a)
Definition xf_mac.h:44
#define XF_IP2STR(ipaddr)
@ XF_IP_EVENT_IP_ASSIGNED
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_set_ip_cb(xf_ip_cb_t cb_func, void *user_args)
AP 设置 ip 事件回调函数.
xf_err_t xf_wifi_enable(void)
启用 wifi 协议栈.
int32_t xf_wifi_event_id_t
wifi 事件 id。见 xf_wifi_event_code_t.
@ XF_WIFI_EVENT_AP_STOP
@ XF_WIFI_EVENT_AP_STA_DISCONNECTED
@ XF_WIFI_EVENT_AP_STA_CONNECTED
@ XF_WIFI_EVENT_AP_START
#define TAG
Definition xf_main.c:24
XF_IP_EVENT_AP_STAIPASSIGNED 事件的事件结构。
uint8_t mac[XF_MAC_LEN_MAX]
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.
Soft-AP 基础配置结构体.
uint8_t ssid[XF_WIFI_SSID_LEN_MAX]
static void _wifi_ap_event_handler(xf_wifi_event_id_t event_id, void *event_data, void *user_args)
Definition xf_main.c:80
#define ERROR_CHECK(expression)
Definition xf_main.c:55
#define EXAMPLE_WIFI_CHANNEL
Definition xf_main.c:27
static void _error_check_failed(void)
Definition xf_main.c:119
#define EXAMPLE_WIFI_SSID_HIDDEN_FLAG
Definition xf_main.c:28
#define EXAMPLE_WIFI_AUTHMODE
Definition xf_main.c:26
#define EXAMPLE_WIFI_SSID
Definition xf_main.c:24
#define EXAMPLE_WIFI_PASS
Definition xf_main.c:25
static void _wifi_ip_event_handler(xf_ip_event_id_t event_id, void *event_data, void *user_args)
Definition xf_main.c:104
static xf_wifi_ap_cfg_t s_ap_cfg
Definition xf_main.c:43
static xf_wifi_static_ip_cfg_t s_static_ip_cfg
Definition xf_main.c:65
#define XF_LOGI(tag, format,...)
#define UNUSED(_x)
xf_wifi 包含 STA、AP 接口。