国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

Hi3516如何連接WiFi(三)

系統
文章由鴻蒙社區產出,想要了解更多內容請前往:51CTO和華為官方戰略合作共建的鴻蒙技術社區https://harmonyos.51cto.com

[[391922]]

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com

小伙伴們大家好,上一篇(Hi3516如何連接Wifi(二))介紹了用程序啟動wap_supplicant,也就是Wifi的Daemon。下一步就是如何向Daemon發信息,我們可以參考//applications/sample/camera/communication/wpa_cli,他實現了連接Daemon、掃描熱點、連接熱點等功能。

我們打開wpa_cli_sample.c文件,核心功能在于這幾個函數:

  • InitControlInterface:初始化
  • TestScan:掃描周圍熱點
  • TestNetworkConfig:連接到指定熱點

首先看InitControlInterface函數,他先調用了wpa_ctrl_open函數,獲取了用于發送命令的控制接口g_ctrlConn,是一個類型為struct wpa_ctrl的結構體。又調用一遍wpa_ctrl_open打開了一個用于事件監控的控制接口g_monitorConn。然后啟動了事件監控的線程執行MonitorTask函數,這個監控線程不是必須,可以省略。

  1. int InitControlInterface() 
  2.     g_ctrlConn = wpa_ctrl_open(WPA_IFACE_NAME); // create control interface for send cmd 
  3.     g_monitorConn = wpa_ctrl_open(WPA_IFACE_NAME); // create control interface for event monitor 
  4.     if (!g_ctrlConn || !g_monitorConn) { 
  5.         SAMPLE_ERROR("open wpa control interface failed."); 
  6.         return -1; 
  7.     } 
  8.     if (wpa_ctrl_attach(g_monitorConn) == 0) { // start monitor 
  9.         pthread_create(&g_wpaThreadId, NULL, MonitorTask, NULL); // create thread for read event 
  10.         return 0; 
  11.     } 
  12.     return -1; 

然后我們來著重分析一下TestNetworkConfig函數。實際上就是一系列SendCtrlCommand向Daemon發送指令。

  1. static void TestNetworkConfig(void) 
  2.     char networkId[20] = {0}; 
  3.     size_t networkIdLen = sizeof(networkId); 
  4.     int ret = SendCtrlCommand("DISCONNECT", networkId, &networkIdLen); 
  5.     ret += SendCtrlCommand("ADD_NETWORK", networkId, &networkIdLen); 
  6.     if (ret != 0) { 
  7.         SAMPLE_ERROR("add network failed."); 
  8.         return
  9.     } 
  10.     SAMPLE_INFO("add network success, network id [%.*s]", networkIdLen, networkId); 
  11.     char reply[100] = {0}; 
  12.     size_t replyLen = sizeof(reply); 
  13.     char cmd[200] = {0}; 
  14.     sprintf_s(cmd, sizeof(cmd), "SET_NETWORK %.*s ssid \"example\"", networkIdLen, networkId); 
  15.     ret += SendCtrlCommand(cmd, reply, &replyLen); 
  16.     replyLen = sizeof(reply); 
  17.     sprintf_s(cmd, sizeof(cmd), "SET_NETWORK %.*s psk \"012345678\"", networkIdLen, networkId); 
  18.     ret += SendCtrlCommand(cmd, reply, &replyLen); 
  19.     replyLen = sizeof(reply); 
  20.     sprintf_s(cmd, sizeof(cmd), "ENABLE_NETWORK %.*s", networkIdLen, networkId); 
  21.     ret += SendCtrlCommand(cmd, reply, &replyLen); 
  22.     replyLen = sizeof(reply); 
  23.     ret += SendCtrlCommand("RECONNECT", reply, &replyLen); 
  24.     replyLen = sizeof(reply); 
  25.     if (ret == 0) { 
  26.         SAMPLE_INFO("network config success."); 
  27.         return
  28.     } 
  29.     sprintf_s(cmd, sizeof(cmd), "REMOVE_NETWORK %.*s", networkIdLen, networkId); 
  30.     SendCtrlCommand(cmd, reply, &replyLen); 
  31.     SAMPLE_ERROR("network config failed remove network [%.*s].", networkIdLen, networkId); 

wpa_supplicant定義了許多命令,常見的有:

  • PING:心跳檢測命令??蛻舳擞盟袛郬PAS是否工作正常。WPAS收到”PING”命令后需要回復“PONG”。
  • MIB:客戶端用該命令獲取設備的MIB信息。
  • STATUS:客戶端用該命令來獲取WPAS的工作狀態。
  • ADD_NETWORK:為WPAS添加一個新的無線網絡。它將返回此新無線網絡的id(從0開始)。注意:此network id非常重要,客戶端后續將通過它來指明自己想操作的無線網絡。
  • SET_NETWORK :network id是無線網絡的id。此命令用于設置指定無線網絡的信息。其中variable為參數名,value為參數的值。
  • ENABLE_NETWORK:使能某個無線網絡。此命令最終將促使WPAS發起一系列操作以加入該無線網絡。
  • SCAN: 掃描附近AP
  • SCAN_RESULT:列出最近一次掃描的結果
  • LIST_NETWORKS: 列出添加的所有AP

看完上邊就很好理解了,先是DISCONNECT斷開已有連接,ADD_NETWORK添加一個新的無線網絡,SET_NETWORK設置ssid和psk,ENABLE_NETWORK使能這個無線網絡,最后一個RECONNECT重新連接有點迷,去掉應該也沒關系,不過本人沒有嘗試。

TestScan函數就留給讀者自行分析。

了解了這些,我們就可以在自己的代碼中去連接WIFI熱點了,我是放在了ACE模塊IDE自建module中,這樣就可以在JS中調用了。還可以傳遞ssid和psk參數,連接指定的熱點。如果需要,也可以增加掃描熱點并獲得熱點列表的功能。

在移植的過程中,需要注意的是,BUILD.gn文件需要增加相關配置,頭文件目錄增加:

  1. "//third_party/wpa_supplicant/wpa_supplicant-2.9/src/"

依賴項deps增加:

  1. "//third_party/wpa_supplicant/wpa_supplicant-2.9:wpa_supplicant"
  2.  
  3. ldflags選項增加"-lwpa_client"。 

 這樣應該就可以正常編譯了。

運行后觀察日志輸出,有點多:

  1. 01-01 00:01:32.597 11 60 D 03B00/JS-3RD-APP: [Console Debug] Connecting to ap: huaweim20 
  2. 01-01 00:01:32.597 11 60 I 03900/ACE: ConnectToWifi invoked! 
  3. 01-01 00:01:32.597 11 60 I 03900/ACE: ssid: huaweim20 
  4.  WpaCliSample(DumpString:584):  SendCtrlCommand raw return dump start. 
  5. OK 
  6.  
  7.  WpaCliSample(DumpString:589):  SendCtrlCommand raw return dump end
  8. 01-01 00:01:32.597 11 60 I 03900/ACE: psk: huaweim20 
  9.  WpaCliSample(DumpString:584):  SendCtrlCommand raw return dump start. 
  10.  
  11.  WpaCliSample(DumpString:589):  SendCtrlCommand raw return dump end
  12.  WpaCliSample(ConnectToWifiInner:717):  add network success, network id [1 
  13. 01-01 00:01:32.597 11 60 I 03900/ACE: InitControlInterface 
  14.  WpaCliSample(DumpString:584):  SendCtrlCommand raw return dump start. 
  15. OK 
  16.  
  17.  WpaCliSample(DumpString:589):  SendCtrlCommand raw return dump end
  18. 01-01 00:01:32.623 11 60 I 03900/ACE: ConnectToWifiInner 
  19.  WpaCliSample(DumpString:584):  SendCtrlCommand raw return dump start. 
  20. OK 
  21.  
  22.  WpaCliSample(DumpString:589):  SendCtrlCommand raw return dump end
  23.  WpaCliSample(DumpString:584):  SendCtrlCommand raw return dump start. 
  24. OK 
  25.  
  26.  WpaCliSample(DumpString:589):  SendCtrlCommand raw return dump end
  27.  WpaCliSample(DumpString:584):  SendCtrlCommand raw return dump start. 
  28. OK 
  29.  
  30.  WpaCliSample(DumpString:589):  SendCtrlCommand raw return dump end
  31.  WpaCliSample(ConnectToWifiInner:733):  network config success. 
  32. WIFI: Scan : (null) SSID : 0 
  33.  
  34. [HDF:I/HDF_LOG_TAG]WifiWpaCmdBlockSyncSend: cmd=15, ret=0 
  35. [ERR][HDF:E/HDF_LOG_TAG]HdfWifiSendEvent event=5 
  36. [ERR][HDF:E/HDF_LOG_TAG]HdfWifiSendEvent event=5 
  37. [ERR][HDF:E/HDF_LOG_TAG]HdfWifiSendEvent event=5 
  38. [ERR][HDF:E/HDF_LOG_TAG]HdfWifiSendEvent event=5 
  39. [ERR][HDF:E/HDF_LOG_TAG]HdfWifiSendEvent event=5 
  40. [ERR][HDF:E/HDF_LOG_TAG]HdfWifiSendEvent event=4 
  41. WifiWpaDriverEventProcess event=5 
  42. WifiWpaEventScanResultProcess: ie_len=248, beacon_ie_len=248 
  43. WifiWpaEventScanResultProcess done 
  44. WifiWpaDriverEventProcess event=5 
  45. WifiWpaEventScanResultProcess: ie_len=310, beacon_ie_len=310 
  46. WifiWpaEventScanResultProcess done 
  47. WifiWpaDriverEventProcess event=5 
  48. WifiWpaEventScanResultProcess: ie_len=226, beacon_ie_len=226 
  49. WifiWpaEventScanResultProcess done 
  50. WifiWpaDriverEventProcess event=5 
  51. WifiWpaEventScanResultProcess: ie_len=243, beacon_ie_len=243 
  52. WifiWpaEventScanResultProcess done 
  53. WifiWpaDriverEventProcess event=5 
  54. WifiWpaEventScanResultProcess: ie_len=198, beacon_ie_len=198 
  55. WifiWpaEventScanResultProcess done 
  56. WifiWpaDriverEventProcess event=4 
  57. WifiWpaGetScanResults2 done 
  58. WifiWpaEventScanDoneProcess done 
  59. wlan0: Trying to associate with bc:e2:65:3c:19:70 (SSID='huaweim20' freq=2462 MHz) 
  60. [97854][E:1786]{oal_sdio_transfer_scatt::write failed=-84} 
  61. [E]oal_exception_submit, g_pst_exception_info is null 
  62. [97859][E:1786]{oal_sdio_transfer_scatt::write failed=-84} 
  63. [E]oal_exception_submit, g_pst_exception_info is null 
  64. [HDF:I/HDF_LOG_TAG]WifiWpaCmdBlockSyncSend: cmd=17, ret=0 
  65. WifiWpaAssociate done ret=0 
  66. [97876][E:1786]{oal_sdio_transfer_scatt::write failed=-84} 
  67. [E]oal_exception_submit, g_pst_exception_info is null 
  68. [97887][E:1786]{oal_sdio_transfer_scatt::write failed=-84} 
  69. [E]oal_exception_submit, g_pst_exception_info is null 
  70. [97897][E:1786]{oal_sdio_transfer_scatt::write failed=-84} 
  71. [E]oal_exception_submit, g_pst_exception_info is null 
  72. [97907][E:1786]{oal_sdio_transfer_scatt::write failed=-84} 
  73. [E]oal_exception_submit, g_pst_exception_info is null 
  74. [97917][E:1786]{oal_sdio_transfer_scatt::write failed=-84} 
  75. [E]oal_exception_submit, g_pst_exception_info is null 
  76. [ERR][HDF:E/HDF_LOG_TAG]HdfWifiSendEvent event=13 
  77. [97931][E:1786]{oal_sdio_transfer_scatt::write failed=-84} 
  78. WifiWpaDriverEventProcess event=13[E]oal_exception_submit, g_pst_exception_info is null 
  79.  
  80. [97944][E:1786]{oal_sdio_transfer_scatt::write failed=-84} 
  81. WifiWpaDriverEventEapolRecvProcess call[E]oal_exception_submit, g_pst_exception_info is null 
  82.  
  83. [ERR] 
  84.  l2_packet_receive1 
  85.  [HDF:E/HDF_LOG_TAG]HdfWifiSendEvent event=6 
  86.  
  87.  l2_packet_receive2 
  88.  [HDF:I/HDF_LOG_TAG]WifiWpaCmdBlockSyncSend: cmd=6, ret=0 
  89.  
  90.  l2_packet_receive3 
  91.  
  92.  rx_callback 
  93.  WifiWpaReceiveEapol done 
  94. WifiWpaDriverEventProcess event=6 
  95. wlan0: Associated with bc:e2:65:3c:19:70 
  96. [HDF:I/HDF_LOG_TAG]WifiWpaCmdBlockSyncSend: cmd=5, ret=0 
  97. WifiWpaWpaSendEapol done ret=0 
  98. wlan0: CTRL-EVENT-SUBNET-STATUS-UPDATE status=0 
  99. WifiWpaEventConnectResultProcess done 
  100. [ERR][HDF:E/HDF_LOG_TAG]HdfWifiSendEvent event=13 
  101. WifiWpaDriverEventProcess event=13 
  102. WifiWpaDriverEventEapolRecvProcess call 
  103.  
  104.  l2_packet_receive1 
  105.  
  106.  l2_packet_receive2 
  107.  [HDF:I/HDF_LOG_TAG]WifiWpaCmdBlockSyncSend: cmd=6, ret=0 
  108.  
  109.  l2_packet_receive3 
  110.  
  111.  rx_callback 
  112.  [HDF:I/HDF_LOG_TAG]WifiWpaCmdBlockSyncSend: cmd=5, ret=0 
  113. WifiWpaWpaSendEapol done ret=0 
  114. [HDF:I/HDF_LOG_TAG]WifiWpaCmdBlockSyncSend: cmd=1, ret=0 
  115. [HDF:I/HDF_LOG_TAG]WifiWpaCmdBlockSyncSend: cmd=3, ret=0 
  116. [HDF:I/HDF_LOG_TAG]WifiWpaCmdBlockSyncSend: cmd=1, ret=0 
  117. wlan0: WPA: Key negotiation completed with bc:e2:65:3c:19:70 [PTK=CCMP GTK=CCMP] 
  118. wlan0: CTRL-EVENT-CONNECTED - Connection to bc:e2:65:3c:19:70 completed [id=1 id_str=] 
  119. WifiWpaReceiveEapol done 
  120. [ERR][HDF:E/NetDeviceLite]LiteNetDhcpIsBound fail, ret = -5! 
  121. [ERR][HDF:E/NetDeviceLite]LiteNetDhcpIsBound fail, ret = -5! 

能清楚的看到SendCtrlCommand的過程。最后看到wlan0: CTRL-EVENT-CONNECTED,就是連接成功了。同時手機熱點已連接設備數顯示為1。

稍后,我會做一個帶有界面的視頻Demo,展示效果。

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com

 

責任編輯:jianghua 來源: 鴻蒙社區
相關推薦

2021-03-29 15:36:46

鴻蒙HarmonyOS應用

2021-03-16 09:49:16

鴻蒙HarmonyOS應用

2021-07-09 14:20:23

鴻蒙HarmonyOS應用

2021-11-09 15:28:41

鴻蒙HarmonyOS應用

2021-05-25 14:47:43

鴻蒙HarmonyOS應用

2022-04-15 14:45:49

Hi3516系統類型燒錄鴻蒙

2021-12-03 09:50:39

鴻蒙HarmonyOS應用

2021-09-24 10:20:42

鴻蒙HarmonyOS應用

2021-06-25 09:28:46

鴻蒙HarmonyOS應用

2021-07-21 09:58:50

鴻蒙HarmonyOS應用

2021-10-09 10:12:39

鴻蒙HarmonyOS應用

2021-03-02 14:30:20

鴻蒙HarmonyOS應用

2021-07-19 15:34:05

鴻蒙HarmonyOS應用

2021-07-07 09:45:20

鴻蒙HarmonyOS應用

2022-02-16 16:01:02

Hi3516開發板鴻蒙

2020-10-16 09:50:37

Hi3861WiFi熱點

2022-03-14 15:26:59

Hi3516Ark子系統鴻蒙

2021-08-06 15:09:22

鴻蒙HarmonyOS應用

2021-07-08 16:16:59

鴻蒙HarmonyOS應用

2021-07-05 09:35:36

鴻蒙HarmonyOS應用
點贊
收藏

51CTO技術棧公眾號

久久uomeier| 久久一本综合频道| 91精品国产综合久久久久久久久久| 夜夜爽99久久国产综合精品女不卡| 国产成人免费视频网站视频社区 | **欧美日韩vr在线| 羞羞网站在线免费观看| 一区二区三区精品视频在线| 超碰人人爱人人| 亚洲午夜极品| 欧美综合在线第二页| 蜜桃成人精品| 日韩午夜精品电影| 天堂视频中文在线| 中文字幕日韩一区二区| 国产在线观看欧美| 视频在线观看91| 97夜夜澡人人双人人人喊| 日韩mv欧美mv国产网站| 这里只有精品丝袜| 国产剧情av在线播放| 日韩一区二区三区视频| 精品电影在线| 亚洲一区二区欧美日韩| 久久美女福利视频| 国产麻豆精品在线观看| 日本欧洲国产一区二区| 欧美91精品| 成人免费xxxxx在线观看| 偷拍亚洲精品| 97久久精品国产| 国产精品巨作av| 久久久久久91| 136国产福利精品导航网址应用| 最近2019中文字幕mv免费看 | 久久福利在线| 亚洲天堂视频在线观看| 123区在线| 亚洲国产天堂久久国产91| 亚洲h片在线看| 亚洲成人中文字幕| 欧美性受ⅹ╳╳╳黑人a性爽| 精品视频在线免费看| 18免费在线视频| 91精品国产综合久久久久久漫画 | 亚洲淫片在线视频| 999国产精品999久久久久久| 国产精品久久久久久搜索| 色777狠狠狠综合伊人| 91精品国产综合久久香蕉最新版 | 亚洲少妇中文在线| 精品3atv在线视频| 色婷婷成人综合| 日韩三级久久| 日本亚洲欧美成人| 成人在线免费观看视频| 99一区二区三区| 日韩电影免费在线看| 免费看污污视频| 久久久亚洲午夜电影| 国产区二区三区| 午夜电影网一区| 黄色视屏免费在线观看| 国产视频一区在线| 激情视频亚洲| 国产精品人人做人人爽| 先锋资源久久| 性欧美大战久久久久久久免费观看| 国产麻豆视频一区二区| 视频二区在线播放| 日本精品免费观看高清观看| mm1313亚洲国产精品美女| 日韩精品中文字幕有码专区| 黄色成人小视频| 国产精品成人观看视频国产奇米| 在线电影一区二区| 伊人久久大香线蕉午夜av| 久久婷婷国产综合精品青草| 久久国产情侣| 欧美精品少妇一区二区三区| 综合在线影院| 国产ts人妖一区二区三区 | 97久久亚洲| 国产精品视频区| 丝袜美腿成人在线| 国内外免费激情视频| 色香蕉成人二区免费| 黄色软件视频在线观看| 性欧美在线看片a免费观看| 精品69视频一区二区三区Q| 欧美与动交zoz0z| 亚洲一区二区高清| 天堂网在线最新版www中文网| 97免费视频在线播放| 久久国产66| 四虎影视av| 精品五月天久久| 五月精品视频| 日韩a级在线观看| 色综合久久中文字幕综合网| 69堂精品视频在线播放| 国产日韩欧美电影在线观看| 国产精品一区二区无线| 天堂中文资源在线| 欧美xxxx18国产| 美女久久一区| 蜜桃臀av在线| 欧美日本亚洲视频| 青青草国产精品97视觉盛宴| 免费观影入口看日本视频| 日韩精品一二三四区| 综合久久久久| 色片在线免费观看| 亚洲男人天堂手机在线| 欧美日一区二区三区在线观看国产免| 波多野结衣之无限发射| 欧美美女视频在线观看| 亚洲永久精品唐人导航网址| 91视频成人免费| 欧美视频在线一区二区三区 | 欧美国产二区| 亚洲在线中文字幕| 男人天堂久久| 日韩亚洲一区在线播放| 黑人巨大精品欧美一区免费视频| www.久久99| 大荫蒂性生交片| 欧美精品一区二区三区在线播放| 亚洲自拍偷拍网| 免费视频二区| 欧美激情精品久久久久久黑人 | 精品激情国产视频| 亚洲欧美日韩精品一区二区| 宅男午夜在线| 97久久精品在线| 久久久国际精品| 欧美天堂一区| 国产美女永久无遮挡| 欧美mv和日韩mv的网站| 欧美激情91| 蜜芽视频在线观看| 日本91av在线播放| 国产精品免费看片| av自拍一区| 三级在线视频观看| 久久精品国产免费观看| 国产91在线观看丝袜| 九色porny视频在线观看| 欧美美乳视频网站在线观看| 欧美在线视频全部完| 久久99精品久久久久久久青青日本| 久操网在线观看| 81精品国产乱码久久久久久| 欧美裸身视频免费观看| 亚洲最大的成人av| 日本在线不卡视频| 伊人影院在线视频| 精精国产xxxx视频在线播放| 国产综合视频在线观看| 亚洲欧美一区二区不卡| 一个人www欧美| 欧美1区免费| 丁香在线视频| 久久精品国产美女| 欧美哺乳videos| 日本v片在线高清不卡在线观看| 免费不卡视频| 午夜精品区一区二区三| 日韩大陆欧美高清视频区| 精品一区二区精品| av有声小说一区二区三区| www在线观看免费| 欧美美女18p| 亚洲欧美成人一区二区三区| 国产精品一区2区3区| 中文字幕在线视频不卡| 91在线直播亚洲| 欧美精品色一区二区三区| 久久69国产一区二区蜜臀| 蜜桃视频成人m3u8| 亚洲少妇久久久| 成人激情在线观看| 91精品欧美福利在线观看| 老司机精品视频导航| 91欧美精品| 美日韩黄色片| 久久99精品久久久久久久青青日本| 亚洲国产欧美精品| 久久精品夜色噜噜亚洲aⅴ| 精品av一区二区| 免费a级在线播放| 日韩精品一区二区在线视频| 久久久久久久久久久人体| 亚洲第一成年网| 视频一区中文字幕| 精品视频91| 国产精品91久久久| 欧美福利网站| 伊人资源视频在线| 日本中文字幕在线2020|