WLAN-HAL

Das WLAN-Framework hat drei WLAN-HAL-Oberflächen, die durch drei verschiedene Schnittstellen dargestellt werden. Für Geräte mit Android 14 oder höher sind alle drei Schnittstellen als stabile Android Interface Definition Language (AIDL)-Pakete verfügbar. Diese Schnittstellen wurden zuvor mit der Hardware Interface Definition Language (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) verwendete Android einen HAL-Mechanismus namens Legacy-HAL. Der Android-Quellcode enthält eine Standardimplementierung von AIDL oder HIDL. Bei dieser Implementierung wird ein Shim verwendet, der auf dem alten 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 für die Angabe der Parallelität ist flexibel und generisch. Es können Kombinationen angegeben werden, die vom Framework noch nicht unterstützt werden. Verwenden Sie das Build-Flag WIFI_HAL_INTERFACE_COMBINATIONS, um eine bestimmte Kombination zu konfigurieren. Dieses Flag befindet sich in device/<oem>/<device>/BoardConfig-common.mk.

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: