A estrutura Wi-Fi possui três superfícies Wi-Fi HAL representadas por três pacotes HIDL diferentes:
- Vendor HAL: uma superfície HAL para comandos específicos do Android. Os arquivos HIDL estão em
hardware/interfaces/wifi/1.x
. - Supplicant HAL: Uma superfície HAL para wpa_supplicant . Os arquivos HIDL estão em
hardware/interfaces/supplicant/1.x
. - Hostapd HAL: Uma superfície HAL para hostapd . Os arquivos HIDL estão em
hardware/interfaces/hostapd/1.x
.
Fornecedor HAL
O Vendor HAL fornece comandos específicos do Android. É opcional (não obrigatório) para que os modos de estação de infraestrutura (STA) e Soft AP (SAP) funcionem. No entanto, é obrigatório para serviços Wi-Fi Aware e Wi-Fi RTT .
Pré-HIDL (ou seja, pré-Android 8.0) O Android usava um mecanismo HAL agora chamado HAL legado . O código-fonte do Android atualmente fornece uma implementação padrão de HIDL usando um shim executado em cima do HAL legado.
Os cabeçalhos HAL legados estão localizados em hardware/libhardware_legacy/include/hardware_legacy/
. A implementação baseada em HAL legada está localizada em hardware/interfaces/wifi/1.x/default
.
Suplicante HAL
O Supplicant HAL fornece uma interface HIDL para o daemon wpa_supplicant .
O código-fonte wpa_supplicant está localizado em external/wpa_supplicant_8/wpa_supplicant
. O código wpa_supplicant que fornece a interface HIDL está localizado no subdiretório hidl
.
Hostapd HAL
O Hostapd HAL fornece uma interface HIDL para o daemon hostapd .
O código-fonte do hostapd está localizado em external/wpa_supplicant_8/hostapd
. O código hostapd que fornece a interface HIDL está localizado no subdiretório hidl
.
Simultaneidade de várias interfaces Wi-Fi
Diferentes dispositivos Android podem suportar diferentes combinações de interfaces Wi-Fi simultaneamente. As combinações com suporte são definidas no HAL e expostas à estrutura. O formato de especificação é definido em android/hardware/interfaces/wifi/1.0/IWifiChip.hal
. Por exemplo, um dispositivo pode suportar dois STAs e uma interface do tipo NAN ( Wi-Fi Aware ) ou P2P ( Wi-Fi Direct ) (mas não ambos). Isso seria expresso como:
[{STA} <= 2, {NAN,P2P} <= 1]
O formato de especificação de simultaneidade é flexível e genérico. Ele pode expressar combinações que ainda não são suportadas pelo framework. Para configurar uma combinação específica, use o sinalizador de compilação WIFI_HAL_INTERFACE_COMBINATIONS
localizado em device/<oem>/<device>/BoardConfig-common.mk
. Alternativamente, o HAL de referência possui configurações para várias combinações que podem ser ativadas com sinalizadores de compilação (legado). Para instruções de configuração, consulte: