Wi-Fi Manager ================== 概述 ----- 本文档介绍bl_iot_sdk的WiFi联网功能。主要包括 - 基站模式(即 STA 模式或 Wi-Fi 客户端模式),此时 BL_IoT 连接到接入点 (AP)。 - AP 模式(即 Soft-AP 模式或接入点模式),此时基站连接到 BL_IoT。 - AP-STA 共存模式(BL_IoT 既是接入点,同时又作为基站连接到另外一个接入点)。 - 上述模式的各种安全模式(WPA、WPA2 及 WEP(AP模式不支持))。 - 扫描接入点(包括主动扫描及被动扫描)。 - 使用混杂模式监控 IEEE802.11 Wi-Fi 数据包。 应用实例 ---------- BL_IoT的实例 ``bl602_demo_wifi`` 目录下包含了一个应用程序,该demo介绍了如何使用BL_IoT模组连接到AP等一系列wifi操作。该实例实现的主要思路如下: .. figure:: imgs/wifi_mgmr-1.png :alt: - 在主函数 ``bfl_main()`` 中创建一个 ``aos_loop_proc()`` 线程,在此线程中调用 ``aos_register_event_filter()`` 接口注册一个 ``EV_WIFI`` 事件的监听函数 ``event_cb_wifi_event()`` ; - 首先用户在终端中输入 ``stack_wifi`` 命令后,在 ``cmd_stack_wifi()`` 函数中创建一个 ``wifi_main()`` 的线程,接着调用 ``aos_post_event()`` 接口发布 ``CODE_WIFI_ON_INIT_DONE`` 事件后, ``event_cb_wifi_event()`` 会被调用,并进入case ``CODE_WIFI_ON_INIT_DONE`` 分支从而调用 ``wifi_mgmr_start_background()`` 开启WiFi Manager,同时发布 ``CODE_WIFI_ON_MGMR_DONE`` 事件,进入case ``CODE_WIFI_ON_MGMR_DONE`` 分支调用 ``_connect_wifi()`` 函数,此函数先判断easyflash中是否设置了可连接的ssid,如果设置了则会自动进行wifi连接,没有设置则需手动输命令设置; - 如用户在终端中输入 ``wifi_sta_connect`` 命令,会调用相应的api实现。如需实现wifi相关的其他功能可通过调用对应api来实现。 API参考 --------- .. include:: /_build/inc/wifi_mgmr_ext.inc