這些天在研究軟總線組件,因為要連接WiFi進行調試,如果按照官方文檔的如下步驟進行操作,肯定不合適:
在社區上找到連志安老師的《Hi3861 WiFi操作,熱點連接》以及網友double__整理的《Hi3861 WiFi連接》,參考代碼可以運行和連接WiFi,但個人感覺仍稍顯復雜/繁雜,於是我自己就研究了一下。
首先,上面官方的步驟,我們可以簡化為:
step 1: AT+STARTSTA # 啟動STA模式
step 2: AT+CONN="SSID", ,2,"PASSWORD" # 連接指定AP,其中SSID/PASSWORD為待連接的熱點名稱和密碼
step 3: AT+DHCP=wlan0,1 # 通過DHCP向AP請求wlan0的IP地址
中間的其他步驟,完全可以省略。
我們到 at 模塊去看一下:
hi_at_sys_cmd_register() 注冊了Hi3861工程所支持的所有 AT 指令,詳情請各位可以自己去查閱代碼,我們只看上面三條指令:
step 1: AT+STARTSTA:位於 at_wifi.c,調用 hi_wifi_sta_start(ifname, &len) 實現功能
{"+STARTSTA", 9, HI_NULL, HI_NULL, (at_call_back_func)cmd_sta_start_adv, (at_call_back_func)cmd_sta_start}
step 2: AT+CONN="SSID", ,2,"PASSWORD" 位於 at_wifi.c ,調用 hi_wifi_sta_connect(&assoc_req) 實現功能
{"+CONN", 5, HI_NULL, HI_NULL, (at_call_back_func)cmd_sta_connect, HI_NULL}
step 3: AT+DHCP=wlan0,1 位於 at_general.c,調用 netifapi_netif_find(argv[0]) 和 netifapi_dhcp_start(netif_p) 實現功能
{"+DHCP", 5, HI_NULL, HI_NULL, (at_call_back_func)at_setup_dhcp, HI_NULL}
把上面三步封裝到 API: WifiLink(),實現如下: