自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

跟著小白一起學(xué)鴻蒙—簡析 OpenHarmony 的 WiFi 能力

系統(tǒng) OpenHarmony
Wi-Fi(發(fā)音: /?wa?fa?/),又稱“無線網(wǎng)路”,是Wi-Fi聯(lián)盟的商標,一個基于IEEE 802.11標準的無線局域網(wǎng)技術(shù)。

??想了解更多關(guān)于開源的內(nèi)容,請訪問:??

??51CTO 開源基礎(chǔ)軟件社區(qū)??

??https://ost.51cto.com??

WiFi功能是無線短距的重要能力,在工作、生活中我們已經(jīng)離不開WiFi設(shè)備了,比如家里的路由,手機,各種智能家居設(shè)備。Wi-Fi(發(fā)音: /?wa?fa?/),又稱“無線網(wǎng)路”,是Wi-Fi聯(lián)盟的商標,一個基于IEEE 802.11標準的無線局域網(wǎng)技術(shù)。“Wi-Fi”常被寫成“WiFi”或“Wifi”,但是這些寫法并沒有被Wi-Fi聯(lián)盟認可。1999年,幾家富有遠見的公司聯(lián)合起來組成了一個全球性非營利性協(xié)會——無線以太網(wǎng)兼容性聯(lián)盟(Wireless Ethernet Compatibility Alliance, WECA),其目標是使用一種新的無線網(wǎng)絡(luò)技術(shù),無論品牌如何,都能帶來最佳的用戶體驗。在2000年,該小組采用術(shù)語“Wi-Fi”作為其技術(shù)工作的專有名稱,并宣布了正式名稱:Wi-Fi Alliance。Wi-Fi以IEEE 802.11為標準,Wi-Fi聯(lián)盟在2018年發(fā)起“Generational Wi-Fi”行銷計畫,基于主要的Wi-Fi技術(shù)(PHY)版本,引入了更容易讓消費者了解的“Wi-Fi世代名稱”(Wi-Fi generation names),格式為“Wi-Fi”后跟一個整數(shù),并鼓勵采用世代名稱作為行業(yè)術(shù)語。

  • 第一代,以IEEE 802.11原始標準為準,工作頻段為2.4GHz,最高速率半雙工2 Mbit/s。
  • 第二代,以IEEE 802.11b為準,工作頻段為2.4GHz,最高速率半雙工11 Mbit/s,認證計畫為“Wi-Fi CERTIFIED b”。
  • 第三代,以IEEE 802.11a為準,工作頻段為5GHz,最高速率54 Mbit/s,認證計畫為“Wi-Fi CERTIFIED a”?;贗EEE_802.11g、2.4GHz工作頻段、最高速率半雙工54 Mbit/s,認證計畫為“Wi-Fi CERTIFIED g”。
  • 第四代,以IEEE 802.11n為準,世代名稱為“Wi-Fi 4”,信道寬度20MHz、40MHz,工作頻段為2.4GHz和5GHz,最高4條空間流,最大副載波調(diào)制64-QAM,最高速率半雙工600 Mbit/s,認證計畫為“Wi-Fi CERTIFIED n”。
  • 第五代,以IEEE 802.11ac為準,世代名稱為“Wi-Fi 5”,信道寬度20MHz、40MHz、80MHz、80+ 80MHz、160MHz,工作頻段為5GHz,最高8條空間流,最大副載波調(diào)制256-QAM,最高速率半雙工6.9 Gbit/s,認證計畫為“Wi-Fi CERTIFIED ac”。
  • 第六代,以IEEE 802.11ax為準,世代名稱為“Wi-Fi 6”,信道寬度20MHz、40MHz、80MHz、80+ 80MHz、160MHz,工作頻段為2.4GHz和5GHz,最高8條空間流,最大副載波調(diào)制1024-QAM,最高速率半雙工[29][30]9.6 Gbit/s,認證計畫為“Wi-Fi CERTIFIED 6”。

注意:Wi-Fi與??IEEE 802.11??常常被混淆,兩者的區(qū)別可以概述為IEEE 802.11是一種無線局域網(wǎng)標準,而Wi-Fi是IEEE 802.11標準的一種實現(xiàn)。

概述

在開源鴻蒙的源碼里和系統(tǒng)功能相關(guān)的部分大多都放在foundation這個文件夾里,而通訊相關(guān)的部分則是在communication這個文件夾內(nèi)。我們本篇要分析的WiFi功能就是在foundation/communication/wifi路徑下,具體目錄結(jié)構(gòu)如下:

.
├── dhcp //dhcp: 動態(tài)主機設(shè)置協(xié)議(Dynamic Host Configuration Protocol)是IP網(wǎng)絡(luò)的網(wǎng)絡(luò)協(xié)議,在應(yīng)用層使用UDP協(xié)議工作,主要用途為:1,自動分配IP地址;2,對所有電腦做中央管理;
├── BUILD.gn
├── bundle.json
├── dhcp.gni
├── dhcp_lite.gni
├── interfaces
├── services
└── test
└── wifi //wifi實現(xiàn)部分
├── application
├── BUILD.gn
├── bundle.json
├── frameworks
├── hisysevent.yaml
├── interfaces
├── services
├── test
├── utils
├── wifi.gni
└── wifi_lite.gni

在開源鴻蒙的源碼里還有兩個和wifi相關(guān)的目錄,都是針對小型開發(fā)板的。

  • wifi_aware (僅支持Hi3861開發(fā)板)

.
├── BUILD.gn
├── bundle.json
├── frameworks
│ └── source
├── hals
│ └── hal_wifiaware.h
├── interfaces
│ └── kits
├── LICENSE
├── README.md
└── README_zh.md

  • wifi_lite (wifi-iot開發(fā)板)

.
├── BUILD.gn
├── bundle.json
├── interfaces
│ ├── README.md
│ └── wifiservice
├── LICENSE
├── README.md
└── README_zh.md

架構(gòu)簡析

  • 根據(jù)目錄結(jié)構(gòu)和內(nèi)部文件及編譯框架總結(jié)架構(gòu)如下:

#盲盒+碼# #跟著小白一起學(xué)鴻蒙#簡析OpenHarmony的WiFi能力-開源基礎(chǔ)軟件社區(qū)

  • 應(yīng)用層:提供WiFi Direct接口使用DEMO,使用@ohos.wifi接口提供的p2p相關(guān)接口,實現(xiàn)一個WLAN直連的Setting界面。
  • 接口層:提供兩個dts接口(@ohos.wifi.d.ts, @ohos.wifiext.d.ts)和NativeC接口(軟總線會使用這些接口實現(xiàn)分布式通信能力)。
  • 框架層:分兩個子層,NAPI框架實現(xiàn)層,為wifi,wifiext和wifi_native_js,其中wifi_native_js已經(jīng)被淘汰;Native SDK層,實現(xiàn)所有js層代碼接口適配并調(diào)用innerapi的實現(xiàn);WiFi接口實現(xiàn)層,使用IPC架構(gòu)同WiFi服務(wù)層通信(WIFI_DEVICE_ABILITY_ID:1120;WIFI_HOTSPOT_ABILITY_ID:1121;WIFI_P2P_ABILITY_ID:1123;WIFI_SCAN_ABILITY_ID:1124)將從NAPI收到的命令,或者別的子系統(tǒng)收到的命令經(jīng)由IPC架構(gòu)發(fā)送給服務(wù)層,并注冊服務(wù)層observer,收聽由服務(wù)層上報的事件。
  • 服務(wù)層:分三個子部分,能力部分,管理部分,硬件部分,分別如下:
  • 能力集部分,對上提供應(yīng)用接口支持,采用systemability能力框架,分以下幾個功能模塊:
  • wifi_standard_sa_profile: wifi能力配置(1120:wifi_device_ability;1121:wifi_hotspot_ability;1123:wifi_p2p_ability;1124:wifi_scan_ability)
  • wifi_device_ability: wifi設(shè)備能力,如開關(guān)wifi,配置(ssid,加密方式等),連接情況。
  • wifi_hotspot_ability: wifi熱點能力,如wifi熱點配置,開關(guān),設(shè)置黑名單,電源模式。
  • wifi_p2p_ability: p2p能力,如wifi直連的開關(guān),設(shè)備發(fā)現(xiàn),創(chuàng)建群組,p2p連接,獲取連接信息,狀態(tài),hid2d。
  • wifi_scan_ability: 掃描能力,如wifi掃描的開關(guān)。
  • 管理部分,對上對接能力集的功能,對下調(diào)用idl_client接口調(diào)用硬件能力,分以下幾個功能模塊:
  • wifi_manager_service.so: 提供service的管理能力,管理serviceDllMap,通過load對應(yīng)的so提供sta,ap(根據(jù)wifi_feature_with_ap_num配置決定),p2p,scan服務(wù)實例獲取接口; 同時提供wifi服務(wù)的管理能力,比如權(quán)限,wifi的配置,network supplier。
  • wifi_common_service.so: 提供wifi芯片的能力配置,主要服務(wù)是ChipCapability(IsSupportDbdc, Csa, RadarDetect, DfsChannel, IndoorChannel),通過idlclient請求驅(qū)動數(shù)據(jù)。
  • wifi_sta_service: wifi station(無線客戶端)服務(wù),對接實現(xiàn)sta能力集能力。
  • wifi_ap_service: wifi ap(無線接入點)服務(wù),對接實現(xiàn)ap能力集能力。
  • wifi_p2p_service: wifi p2p(無線直連)服務(wù),對接實現(xiàn)p2p能力集能力。
  • wifi_scan_service: wifi掃描服務(wù),對接實現(xiàn)掃描能力集能力。
  • wifi_idl_client: wifi硬件適配層客戶端,提供cRPC調(diào)用wifi設(shè)備的硬件抽象層。
  • wifi_toolkit: wifi工具簇,包括ifconfig,iptools,arp,dhcp,mac,rawsocket,ipv4,ipv6,wifisetting,wificonfig等工具。
  • 硬件抽象部分,分以下功能模塊:
  • wifi_hal_service: 獨立進程,wifi硬件抽象服務(wù),采用cRPC架構(gòu),集成wpa_supplicant-2.9的標準能力,調(diào)用hdi接口。
  • 硬件驅(qū)動:HDF:

功能簡析

NAPI和cadapterWiFi系統(tǒng)能力WiFi服務(wù)idl_clientWiFiHalwpa_supplicantIFACE跨進程,IPC調(diào)用通過samgr獲取服務(wù)Proxy對象鏈接對應(yīng)服務(wù)so,c++調(diào)用鏈接對應(yīng)的idlso,c接口調(diào)用cRPC調(diào)用鏈接wap_supplicant.so, c接口調(diào)用udpNAPI和cadapterWiFi系統(tǒng)能力WiFi服務(wù)idl_clientWiFiHalwpa_supplicantIFACE。

  1. WiFi框架能力(NAPI接口,cadapter接口及wifi_sdk)
  • NAPI接口為應(yīng)用層(ets,js)提供接口,調(diào)用WiFi系統(tǒng)層能力。
  • cadapter實現(xiàn)c接口,為其他能力提供接口(比如軟總線),調(diào)用WiFi系統(tǒng)能力。
  • wifi_sdk封裝了系統(tǒng)能力調(diào)用的框架,通過proxy方式訪問具體的WiFi系統(tǒng)能力,具體如下:
  • #define WIFI_DEVICE_ABILITY_ID 1120。
  • #define WIFI_HOTSPOT_ABILITY_ID 1121。
  • #define WIFI_P2P_ABILITY_ID 1123。
  • #define WIFI_SCAN_ABILITY_ID 1124。
  1. WiFi系統(tǒng)能力
  • WiFi系統(tǒng)能力通過繼承SystemAbility,實現(xiàn)WiFi服務(wù)能力并實現(xiàn)IPC進行通信(服務(wù)端實現(xiàn)stub實現(xiàn))。
  • WiFi系統(tǒng)能力均為so動態(tài)庫,被SystemAbility同一管理,包括:wifi_device_ability,wifi_hotspot_ability,wifi_p2p_ability,wifi_scan_ability。
  • WiFI系統(tǒng)服務(wù)通過調(diào)用WiFi服務(wù)實現(xiàn)功能。
  1. WiFi服務(wù)
  • WiFi服務(wù)層包括:wifi_scan_service,wifi_sta_service 和 wifi_ap_service,wifi_p2p_service(后兩個針對標準設(shè)備)。
  • 主服務(wù)為wifi_manager_service,內(nèi)部管理一張dll表,定義對應(yīng)的WiFi服務(wù),通過WiFi能力層調(diào)用,加載不同dll,獲得不同服務(wù)。
  • WiFi服務(wù)層主要通過idl_client同WiFi硬件抽象層進行數(shù)據(jù)交互。
  1. WiFi硬件抽象
  • WiFi硬件抽象層并不是完全意義的硬件抽象,即是WiFi協(xié)議層(wap_supplicant-2.9)之上的適配層,又基于HDF之上使用HDI接口調(diào)用驅(qū)動能力。
  • WiFi硬件抽象層是獨立的進程,通過cRpc和WiFi服務(wù)層交互。
  • 在WiFi硬件層還有etc配置目錄,內(nèi)部存儲WiFi的默認配置。
  • 目前WiFi主要用的HDI部分集中在ap相關(guān)功能,如:WifiSetPowerModel,GetValidFrequenciesForBand。
  1. WiFi協(xié)議層(wap_supplicant-2.9)
  • 參考鏈接:??https://w1.fi/wpa_supplicant/??。
  • 實現(xiàn)WiFi接入和WiFi熱點的協(xié)議棧。
  • 實現(xiàn)基礎(chǔ)的驅(qū)動(nl80211)。

總結(jié)

  1. WiFi服務(wù)的結(jié)構(gòu)和之前講的藍牙結(jié)構(gòu)略有不同,為了提供更靈活的能力,WiFi實現(xiàn)了更多的SystemAbility,同時通過idl_client,WiFi服務(wù)通過調(diào)用wap_supplicant實現(xiàn)具體的WiFi能力。
  2. 目前開源鴻蒙用的WiFi協(xié)議站為wpa_supplicant-2.9,提供WiFi的接入和熱點能力。

??想了解更多關(guān)于開源的內(nèi)容,請訪問:??

??51CTO 開源基礎(chǔ)軟件社區(qū)??

??https://ost.51cto.com??。

責(zé)任編輯:jianghua 來源: 51CTO開源基礎(chǔ)軟件社區(qū)
相關(guān)推薦

2022-11-28 15:42:39

分布式軟總線鴻蒙

2023-03-30 09:19:54

SELinux安全子系統(tǒng)

2022-12-05 15:02:14

鴻蒙用戶鑒權(quán)

2022-11-08 15:43:45

開源鴻蒙藍牙協(xié)議棧

2022-08-19 19:02:20

開源鴻蒙操作系統(tǒng)

2023-01-03 15:09:10

鴻蒙常用工具

2022-12-06 15:39:16

鴻蒙主干代碼

2022-11-29 16:35:02

Tetris鴻蒙

2022-12-02 14:20:09

Tetris鴻蒙

2022-10-31 15:35:02

Wi-Fi藍牙子系統(tǒng)

2022-11-14 17:01:34

游戲開發(fā)畫布功能

2023-03-30 09:32:27

2023-02-27 16:30:32

鴻蒙開源協(xié)議分析

2023-04-04 09:24:11

鴻蒙HiDumper

2022-10-10 14:47:04

藍牙應(yīng)用鴻蒙

2022-08-29 17:25:19

鴻蒙應(yīng)用開發(fā)

2022-10-20 16:40:16

JS應(yīng)用控制LED鴻蒙

2022-10-09 15:05:50

NAPI框架鴻蒙

2022-11-24 14:34:41

Hap程序鴻蒙

2023-03-15 16:19:03

BinderIPC工具
點贊
收藏

51CTO技術(shù)棧公眾號