Le framework Wi-Fi comporte trois surfaces HAL Wi-Fi représentées par trois interfaces différentes. Pour les appareils équipés d'Android 14 ou version ultérieure, les trois interfaces sont disponibles en tant que 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/aidl
et les fichiers HIDL danshardware/interfaces/wifi/1.x
. - HAL du demandeur: surface HAL pour wpa_supplicant. Les fichiers AIDL se trouvent dans
hardware/interfaces/supplicant/aidl
et les fichiers HIDL danshardware/interfaces/supplicant/1.x
. - HAL Hostapd: surface HAL pour hostapd. Les fichiers AIDL se trouvent dans
hardware/interfaces/hostapd/aidl
et les fichiers HIDL danshardware/interfaces/hostapd/1.x
.
HAL du fournisseur
La solution HAL du fournisseur fournit des commandes spécifiques à Android. Il est facultatif (non obligatoire) pour les modes Station d'infrastructure (STA) et Point d'accès logiciel (SAP) de fonctionner. Toutefois, il est obligatoire pour les services Wi-Fi Aware et Wi-Fi RTT.
Sous Android 14 et versions ultérieures, l'interface HAL du fournisseur est définie à l'aide d'AIDL. Sous Android 13 et versions antérieures, l'interface HAL du fournisseur est définie à l'aide de HIDL.
Avant le HIDL (avant Android 8.0), Android utilisait un mécanisme HAL désormais appelé ancien HAL. Le code source Android fournit actuellement une implémentation par défaut d'AIDL ou de HIDL à l'aide d'un shim exécuté au-dessus de l'ancien HAL.
Les anciens en-têtes HAL se trouvent dans hardware/libhardware_legacy/include/hardware_legacy/
. L'implémentation basée sur l'ancien HAL se trouve dans hardware/interfaces/wifi/aidl/default
pour AIDL et hardware/interfaces/wifi/1.x/default
pour HIDL.
Supplicant HAL
Le HAL du demandeur 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 de 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
.
HAL Hostapd
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 de 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
.
Concurrency multi-interface Wi-Fi
Différents appareils Android peuvent accepter différentes combinaisons d'interfaces Wi-Fi simultanément. Les combinaisons compatibles sont définies dans le 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 versions antérieures.
Le HAL AIDL, disponible pour Android 14 et versions ultérieures, et la version 1.6 du HAL Wi-Fi, disponible dans Android 13, permettent de spécifier une interface d'AP en pont (double bande simultanée) en tant qu'élément de combinaison explicite.
Le format de spécification de simultanéité est flexible et générique. Il peut exprimer des combinaisons qui ne sont pas encore compatibles avec le framework. Pour configurer une combinaison particulière, utilisez l'option de compilation WIFI_HAL_INTERFACE_COMBINATIONS
située 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}}
Autre exemple : un appareil compatible avec une STA avec un seul point d'accès, ou un point d'accès ponté (double bande en simultané) sans autre interface. Cela se représente comme suit:
WIFI_HAL_INTERFACE_COMBINATIONS := {{{STA}, 1}, {{AP}, 1}}, {{{AP_BRIDGED}, 1}}
Le HAL de référence propose également des configurations pour plusieurs combinaisons pouvant être activées avec des indicateurs de compilation (anciens). Pour obtenir des instructions de configuration, consultez les articles suivants: