| <html devsite><head> |
| |
| <meta name="book_path" value="/_book.yaml"/> |
| |
| <meta name="project_path" value="/_project.yaml"/> |
| </head> |
| <body> |
| |
| <!-- |
| Copyright 2018 The Android Open Source Project |
| |
| Licensed under the Apache License, Version 2.0 (the "License"); |
| you may not use this file except in compliance with the License. |
| You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --> |
| |
| <h1 id="overview" class="page-title">概览</h1> |
| |
| <p>Android 提供默认 Android 框架实现,其中包括对各种 WLAN 协议和模式的支持,这些协议和模式包括:</p> |
| |
| <ul> |
| <li>WLAN 基础架构 (STA)</li> |
| <li>网络共享模式或仅限本地模式下的 WLAN 热点 (Soft AP)</li> |
| <li>WLAN 直连(点对点)</li> |
| <li>WLAN 感知 (NAN)</li> |
| <li>WLAN RTT (IEEE 802.11mc FTM)</li> |
| </ul> |
| |
| <p>使用 WLAN 服务的应用通过 Binder 直接与各种 WLAN 服务进行通信。WLAN 服务在系统服务中运行,并通过 HIDL 与 HAL 进行通信。下图显示了 Android WLAN 堆栈的常规结构。</p> |
| |
| <p><img src="/devices/tech/connect/images/wifi-arch.png" alt="WLAN 架构"/></p> |
| |
| <p><strong>图 1. </strong> Android WLAN 架构</p> |
| |
| <h2 id="application_framework">应用框架</h2> |
| |
| <p>应用代码位于应用框架级别,它使用各种 <a href="https://developer.android.com/reference/android/net/wifi/package-summary">android.net.wifi</a> API 与 WLAN 框架和硬件进行交互。此代码在内部通过 Binder IPC 机制调用 WLAN 进程。</p> |
| |
| <h2 id="wi_fi_services">WLAN 服务</h2> |
| |
| <p>WLAN 服务在系统服务中运行,这类服务位于 <code>frameworks/opt/net/wifi</code> 中。WLAN 服务通过 HIDL 与 WLAN HAL 进行通信。</p> |
| |
| <p>WLAN 服务有很多种:</p> |
| |
| <ul> |
| <li>WLAN 服务:用于控制 WLAN 基础架构模式(包括 STA 和 AP)的主要机制。</li> |
| <li>WLAN 点对点服务:管理 WLAN 直连模式。</li> |
| <li>WLAN 感知服务:管理 WLAN 感知模式。</li> |
| <li>WLAN RTT 服务:管理 IEEE 802.11mc FTM 功能。</li> |
| </ul> |
| |
| <p>此外,WLAN 框架还包括一个独立的进程 <strong>wificond</strong>,此进程位于 <code>system/connectivity/wificond</code> 中。<strong>wificond</strong> 进程通过标准 <code>nl80211</code> 命令与 WLAN 驱动程序进行通信。</p> |
| |
| <h2 id="wi_fi_hals">WLAN HAL</h2> |
| |
| <p>WLAN 框架具有三个 WLAN HAL 表面,分别由三个不同的 HIDL 软件包表示:供应商 HAL、客户端 HAL 和 Hostapd HAL。</p> |
| |
| <p>要详细了解各种 HAL 的实现,请参阅 <a href="/devices/tech/connect/wifi-hal">WLAN HAL</a>。</p> |
| |
| </body></html> |