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 Android Interface Definition Language (AIDL) Pakete verfügbar. Diese Schnittstellen wurden zuvor mit der Hardware Interface Definition Language (HIDL) definiert.

Vendor HAL

Die Vendor HAL bietet Android-spezifische Befehle. Sie ist optional (nicht erforderlich), damit 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 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 bietet eine Standardimplementierung von AIDL oder HIDL. Diese Implementierung verwendet einen Shim, der auf der Legacy HAL ausgeführt wird.

Die Legacy HAL-Header befinden sich in hardware/libhardware_legacy/include/hardware_legacy/. Die auf Legacy HAL basierende 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 wpa_supplicant-Daemon. Ab Android 13 verwendet die Schnittstelle AIDL für die HAL-Definition. Für Versionen vor Android 13 verwenden Schnittstellen und Anbieterpartitionen HIDL.

Der Quellcode von 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

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

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

Gleichzeitige Verwendung mehrerer WLAN-Schnittstellen

Verschiedene Android-Geräte können unterschiedliche Kombinationen von WLAN-Schnittstellen gleichzeitig unterstützen. Die unterstützten Kombinationen sind in der HAL definiert und werden für das Framework verfügbar gemacht. Das Spezifikationsformat ist in hardware/interfaces/wifi/aidl/android/hardware/wifi/IWifiChip.aidl für die AIDL-WLAN-HAL, android/hardware/interfaces/wifi/1.6/IWifiChip.hal für die WLAN-HAL 1.6 und 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 überbrückte ZP-Schnittstelle (Dualband gleichzeitig) als explizites Kombinationselement anzugeben.

Das Format für die Nebenläufigkeitsspezifikation ist flexibel und allgemein. Es kann Kombinationen ausdrücken, 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 beide. Dies wird in device/<oem>/<device>/BoardConfig-common.mk 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 überbrückten AP (Dualband gleichzeitig) ohne andere Schnittstellen unterstützt. Dies 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. Konfigurationsanleitungen finden Sie unter: