Das WLAN-Framework hat drei WLAN-HAL-Oberflächen, die durch drei verschiedene Schnittstellen dargestellt werden. Auf Geräten mit Android 14 oder höher sind alle drei Schnittstellen als stabile AIDL-Pakete verfügbar. Diese Schnittstellen wurden zuvor mit HIDL definiert.
- Anbieter HAL: Eine HAL-Oberfläche für Android-spezifische Befehle. Die AIDL-Dateien befinden sich in
hardware/interfaces/aidl
und die HIDL-Dateien inhardware/interfaces/wifi/1.x
. - Supplicant HAL: Eine HAL-Oberfläche für wpa_supplicant. Die AIDL-Dateien befinden sich in
hardware/interfaces/supplicant/aidl
und die HIDL-Dateien inhardware/interfaces/supplicant/1.x
. - Hostapd HAL: Eine HAL-Oberfläche für hostapd. Die AIDL-Dateien befinden sich in
hardware/interfaces/hostapd/aidl
und die HIDL-Dateien inhardware/interfaces/hostapd/1.x
.
Anbieter-HAL
Die HAL des Anbieters bietet Android-spezifische Befehle. Es ist optional (nicht erforderlich), dass die Modi „Infrastrukturstation“ (STA) und „Soft-AP“ (SAP) funktionieren. Sie ist jedoch für Wi‑Fi Aware und für Wi‑Fi RTT-Dienste obligatorisch.
In Android 14 und höher wird die HAL-Schnittstelle des Anbieters mit AIDL definiert. In Android 13 und niedriger wird die HAL-Schnittstelle des Anbieters mithilfe von HIDL definiert.
Vor HIDL (vor Android 8.0) verwendete Android einen HAL-Mechanismus, der jetzt Legacy-HAL genannt wird. Der Android-Quellcode bietet derzeit eine Standardimplementierung von AIDL oder HIDL mit einem Shim, der über der alten HAL ausgeführt wird.
Die alten HAL-Header befinden sich unter hardware/libhardware_legacy/include/hardware_legacy/
. Die Legacy-HAL-basierte Implementierung befindet sich in hardware/interfaces/wifi/aidl/default
für AIDL und hardware/interfaces/wifi/1.x/default
für HIDL.
Supplicant HAL
Die Supplicant HAL bietet eine Schnittstelle für den Daemon wpa_supplicant. Ab Android 13 verwendet die Schnittstelle AIDL für die HAL-Definition. Bei Releases vor Android 13 verwenden Schnittstellen und Anbieterpartitionen HIDL.
Der Quellcode von wpa_supplicant befindet sich unter external/wpa_supplicant_8/wpa_supplicant
. Die Referenzimplementierung bietet eine AIDL-Schnittstelle, die im Unterverzeichnis aidl
implementiert ist.
Hostapd HAL
Hostapd HAL bietet eine Schnittstelle für den hostapd-Daemon. Ab Android 13 verwendet die Schnittstelle AIDL für die HAL-Definition. Bei Releases vor Android 13 werden für Schnittstellen und Anbieterpartitionen HIDL verwendet.
Der Quellcode von hostapd befindet sich unter external/wpa_supplicant_8/hostapd
.
Die Referenzimplementierung bietet eine AIDL-Schnittstelle, die im Unterverzeichnis aidl
implementiert ist.
WLAN-Parallelität mit mehreren Schnittstellen
Unterschiedliche Android-Geräte können gleichzeitig unterschiedliche Kombinationen von WLAN-Schnittstellen unterstützen. Die unterstützten Kombinationen sind im HAL definiert und werden dem Framework bereitgestellt. Das Spezifikationsformat ist in hardware/interfaces/wifi/aidl/android/hardware/wifi/IWifiChip.aidl
für die AIDL-Wi‑Fi HAL, in android/hardware/interfaces/wifi/1.6/IWifiChip.hal
für Wi‑Fi HAL 1.6 und in android/hardware/interfaces/wifi/1.0/IWifiChip.hal
für Wi‑Fi HAL 1.5 und niedriger definiert.
AIDL HAL, verfügbar für Android 14 und höher, und Wi-Fi HAL Version 1.6 in Android 13 bieten die Möglichkeit, eine Bridged AP-Schnittstelle (simultanes Dualband) als explizites Kombinationselement anzugeben.
Das Format der Spezifikation für die Parallelität ist flexibel und generisch. Sie kann Kombinationen ausdrücken, die vom Framework noch nicht unterstützt werden. Verwenden Sie das Build-Flag WIFI_HAL_INTERFACE_COMBINATIONS
in device/<oem>/<device>/BoardConfig-common.mk
, um eine bestimmte Kombination zu konfigurieren.
Ein Gerät kann beispielsweise zwei STAs und eine Schnittstelle vom Typ NAN (Wi‑Fi Aware) oder P2P (Wi‑Fi Direct) unterstützen, aber nicht beides. In device/<oem>/<device>/BoardConfig-common.mk
wird das so ausgedrückt:
WIFI_HAL_INTERFACE_COMBINATIONS := {{{STA}, 2}, {{NAN, P2P}, 1}}
Ein weiteres Beispiel ist ein Gerät, das einen STA mit einem einzelnen ZP oder einen gebrückenen ZP (Dualband gleichzeitig) ohne andere Schnittstellen unterstützt. Das wird so dargestellt:
WIFI_HAL_INTERFACE_COMBINATIONS := {{{STA}, 1}, {{AP}, 1}}, {{{AP_BRIDGED}, 1}}
Alternativ enthält die Referenz-HAL Konfigurationen für mehrere Kombinationen, die mit (alten) Build-Flags aktiviert werden können. Eine Konfigurationsanleitung finden Sie unter: