Android S WLAN 架构

Android S WLAN 架构

Android S WLAN 架构

  • Android S WLAN 架构
    • 一、WLAN架构
    • AppLication Framework(应用程序框架)
    • Wi-Fi Service(WiFi服务)
    • Wi-Fi HAL
  • 二、AIDL、HIDL、HAL
    • AIDL
    • HIDL
    • HAL

一、WLAN架构

Android S WLAN 架构_第1张图片

AppLication Framework(应用程序框架)

应用代码都位于此,使用各种 android.net.wifi API 与 WLAN 框架和硬件进行交互。此代码在内部通过 Binder IPC(跨进程通信) 机制调用 WLAN 进程

Wi-Fi Service(WiFi服务)

Wi-Fi Service在系统Service中运行,这类服务位于 packages/modules/Wifi/service/ 中。Wi-Fi Service通过 HIDL 与 Wi-Fi HAL 进行通信

Wi-Fi 服务有很多种:

  • WifiService(WLAN 服务):用于控制 WLAN 基础架构模式(包括 STA 和 AP)的主要机制。
  • WifiP2pService(WLAN 点对点服务):管理 WLAN 直连模式。
  • WifiAwareService(WLAN 感知服务):管理 WLAN 感知模式。
  • WifiRttService(Wi-Fi RTT 服务):管理 IEEE 802.11mc FTM 功能。

此外,Wi-Fi 框架还包含一个独立的 wificond 进程,该进程位于 system/connectivity/wificond 中。WifiService通过binder与wificond 进程通信,wificond 进程通过标准的 nl80211 命令与 Wi-Fi 驱动程序进行通信

Wi-Fi HAL

WLAN 框架具有三个 WLAN HAL 表面,分别由三个不同的 HIDL 软件包表示:供应商 HAL、客户端 HAL 和 Hostapd HAL。

  • 供应商 HAL:Android 专用命令的 HAL 表面。HIDL 文件位于 hardware/interfaces/wifi/1.x 中。
  • 客户端 HAL:wpa_supplicant 的 HAL 表面。HIDL 文件位于 hardware/interfaces/supplicant/1.x 中。
  • Hostapd HAL:hostapd 的 HAL 表面。HIDL 文件位于 hardware/interfaces/hostapd/1.x 中。

二、AIDL、HIDL、HAL

AIDL

AIDL(Android 接口定义语言)是常用的安卓IPC(跨进程通信)的方式,常用于连接App和Framework,AIDL是架构在Android binder之上,用来定义Android基于Binder通信的Client与Service之间的接口

HIDL

HIDL(HAL interface definition language)是用于指定 HAL 和其用户之间的接口的一种接口描述语言 (IDL),HIDL则是用来连接Framework和HAL,HIDL则使用HwBinder通信。
HIDL可以分为:HIDL C++(C++实现)、HIDL Java(Java 实现),并且还主要分为直通式和绑定式

AIDL常用于连接App和Framework,HIDL则是用来连接Framework和HAL,AIDL使用Binder通信,HIDL则使用HwBinder通信,他们都是通过Binder驱动完成通信,只不过两个Binder域不一样

HAL

HAL(Hardware Abstraction Layer)即硬件抽象层是连接Android Framework与Linux设备驱动的桥梁,有两个方面的目的

  1. 屏蔽掉不同硬件设备的差异,为Android提供了统一的设备访问接口;不同的硬件厂商遵循HAL标准来实现自己的硬件控制逻辑,开发者不必关心硬件设备的差异,只需按照HAL提供的标准接口对硬件进行访问即可。
  2. 帮助硬件厂商隐藏了设备的核心细节,HAL层位于用户空间,遵循Apache协议,允许硬件厂商不公开源码,将设备相关的实现放在HAL层中实现,并以共享库(.so)的形式进行提供。

你可能感兴趣的:(android)