Le framework Wi-Fi comporte trois surfaces HAL Wi-Fi représentées par trois interfaces différentes. Pour les appareils fonctionnant sous Android 14 ou version ultérieure, les trois interfaces sont disponibles sous forme de packages AIDL stables. Ces interfaces étaient auparavant définies à l'aide de HIDL.
- HAL du fournisseur : surface HAL pour les commandes spécifiques à Android. Les fichiers AIDL se trouvent dans
hardware/interfaces/wifi/aidl
. - HAL Supplicant : surface HAL pour wpa_supplicant. Les fichiers AIDL se trouvent dans
hardware/interfaces/wifi/supplicant/aidl
. - Hostapd HAL : surface HAL pour hostapd. Les fichiers AIDL se trouvent dans
hardware/interfaces/wifi/hostapd/aidl
.
HAL du fournisseur
Le HAL du fournisseur fournit des commandes spécifiques à Android. Il est facultatif (non requis) pour que les modes STA (station) et SAP (Soft AP) de l'infrastructure fonctionnent. Toutefois, il est obligatoire pour les services Wi-Fi Aware et Wi-Fi RTT.
Dans Android 14 et versions ultérieures, l'interface HAL du fournisseur est définie à l'aide d'AIDL. Dans Android 13 et versions antérieures, l'interface HAL du fournisseur est définie à l'aide de HIDL.
Avant HIDL (c'est-à-dire avant Android 8.0), Android utilisait un mécanisme HAL désormais appelé HAL hérité. Le code source Android fournit actuellement une implémentation par défaut d'AIDL ou HIDL à l'aide d'un shim s'exécutant au-dessus de l'ancienne HAL.
Les anciens en-têtes HAL se trouvent dans hardware/libhardware_legacy/include/hardware_legacy/
. L'ancienne implémentation basée sur HAL se trouve dans hardware/interfaces/wifi/aidl/default
pour AIDL et hardware/interfaces/wifi/1.x/default
pour HIDL.
HAL du supplicant
Le HAL Supplicant fournit une interface pour le daemon wpa_supplicant. À partir d'Android 13, l'interface utilise AIDL pour la définition HAL. Pour les versions antérieures à Android 13, les interfaces et les partitions du fournisseur utilisent HIDL.
Le code source wpa_supplicant se trouve dans external/wpa_supplicant_8/wpa_supplicant
. L'implémentation de référence fournit une interface AIDL, qui est implémentée dans le sous-répertoire aidl
.
Hostapd HAL
Le HAL Hostapd fournit une interface pour le daemon hostapd. À partir d'Android 13, l'interface utilise AIDL pour la définition HAL. Pour les versions antérieures à Android 13, les interfaces et les partitions du fournisseur utilisent HIDL.
Le code source hostapd se trouve dans external/wpa_supplicant_8/hostapd
.
L'implémentation de référence fournit une interface AIDL, qui est implémentée dans le sous-répertoire aidl
.
Simultanéité multi-interface Wi-Fi
Différentes combinaisons d'interfaces Wi-Fi peuvent être prises en charge simultanément par différents appareils Android. Les combinaisons compatibles sont définies dans la HAL et sont exposées au framework. Le format de spécification est défini dans hardware/interfaces/wifi/aidl/android/hardware/wifi/IWifiChip.aidl
pour le HAL Wi-Fi AIDL, android/hardware/interfaces/wifi/1.6/IWifiChip.hal
pour le HAL Wi-Fi 1.6 et android/hardware/interfaces/wifi/1.0/IWifiChip.hal
pour le HAL Wi-Fi 1.5 et les versions antérieures.
Le HAL AIDL, disponible pour Android 14 et versions ultérieures, et le HAL Wi-Fi version 1.6, disponible dans Android 13, permettent de spécifier une interface AP pontée (double bande simultanée) en tant qu'élément de combinaison explicite.
Le format de spécification de la simultanéité est flexible et générique. Il peut exprimer des combinaisons qui ne sont pas encore prises en charge par le framework. Pour configurer une combinaison particulière, utilisez l'indicateur de compilation WIFI_HAL_INTERFACE_COMBINATIONS
situé dans device/<oem>/<device>/BoardConfig-common.mk
.
Par exemple, un appareil peut prendre en charge deux STA et une interface de type NAN (Wi-Fi Aware) ou P2P (Wi-Fi Direct), mais pas les deux. Cela s'exprime dans device/<oem>/<device>/BoardConfig-common.mk
comme suit :
WIFI_HAL_INTERFACE_COMBINATIONS := {{{STA}, 2}, {{NAN, P2P}, 1}}
Un autre exemple est un appareil compatible avec une STA avec un seul point d'accès, ou un point d'accès ponté (double bande simultanée) sans autre interface. Cela se présente comme suit :
WIFI_HAL_INTERFACE_COMBINATIONS := {{{STA}, 1}, {{AP}, 1}}, {{{AP_BRIDGED}, 1}}
La HAL de référence propose également des configurations pour plusieurs combinaisons qui peuvent être activées avec des indicateurs de compilation (anciens). Pour obtenir des instructions de configuration, consultez les sections suivantes :