WLAN-HAL

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

Das Vendor-HAL bietet Android-spezifische Befehle. Sie ist optional (nicht erforderlich) für die Funktion der Infrastruktur-Station (STA) und des Soft-AP-Modus (SAP). Sie ist jedoch für die Dienste Wi-Fi Aware und Wi-Fi RTT erforderlich.

In Android 14 und höher wird die Vendor-HAL-Schnittstelle mit AIDL definiert. In Android 13 und niedriger wird die Vendor-HAL-Schnittstelle mit HIDL definiert.

Vor HIDL (d. h. vor Android 8.0) wurde in Android ein HAL-Mechanismus verwendet, der jetzt als Legacy-HAL bezeichnet wird. Der Android-Quellcode bietet derzeit eine Standardimplementierung von AIDL oder HIDL mit einem Shim, der auf dem Legacy-HAL ausgeführt wird.

Die alten HAL-Header befinden sich unter hardware/libhardware_legacy/include/hardware_legacy/. Die alte HAL-basierte Implementierung befindet sich unter hardware/interfaces/wifi/aidl/default für AIDL und hardware/interfaces/wifi/1.x/default für HIDL.

Supplicant-HAL

Das Supplicant HAL bietet eine Schnittstelle für den wpa_supplicant-Daemon. Ab Android 13 wird für die HAL-Definition AIDL verwendet. Für Releases vor Android 13 verwenden Schnittstellen und Anbieterpartitionen HIDL.

Der Quellcode für wpa_supplicant befindet sich in external/wpa_supplicant_8/wpa_supplicant. Die Referenzimplementierung bietet eine AIDL-Schnittstelle, die im Unterverzeichnis aidl implementiert ist.

Hostapd-HAL

Das Hostapd HAL bietet eine Schnittstelle für den hostapd-Daemon. Ab Android 13 wird für die HAL-Definition AIDL verwendet. Für Releases vor Android 13 verwenden Schnittstellen und Anbieterpartitionen HIDL.

Der Quellcode für hostapd befindet sich in external/wpa_supplicant_8/hostapd. Die Referenzimplementierung bietet eine AIDL-Schnittstelle, die im Unterverzeichnis aidl implementiert ist.

Gleichzeitige Nutzung mehrerer WLAN-Schnittstellen

Verschiedene Android-Geräte können unterschiedliche Kombinationen von WLAN-Schnittstellen gleichzeitig unterstützen. Die unterstützten Kombinationen sind im HAL definiert und werden für das Framework bereitgestellt. Das Spezifikationsformat ist in hardware/interfaces/wifi/aidl/android/hardware/wifi/IWifiChip.aidl für die AIDL-WLAN-HAL, in android/hardware/interfaces/wifi/1.6/IWifiChip.hal für die WLAN-HAL 1.6 und in android/hardware/interfaces/wifi/1.0/IWifiChip.hal für die WLAN-HAL 1.5 und niedriger definiert.

Die AIDL-HAL, die für Android 14 und höher verfügbar ist, und die WLAN-HAL-Version 1.6, die in Android 13 verfügbar ist, bieten die Möglichkeit, eine gebrückte AP-Schnittstelle (Dualband gleichzeitig) als explizites Kombinationselement anzugeben.

Das Format der Spezifikation für die Gleichzeitigkeit ist flexibel und generisch. Es 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 dies so ausgedrückt:

WIFI_HAL_INTERFACE_COMBINATIONS := {{{STA}, 2}, {{NAN, P2P}, 1}}

Ein weiteres Beispiel ist ein Gerät, das eine STA mit einem einzelnen AP oder einen gebrückten AP (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 (Legacy-)Build-Flags aktiviert werden können. Eine Konfigurationsanleitung finden Sie unter: