Platforma Wi-Fi ma 3 interfejsy HAL Wi-Fi. W przypadku urządzeń z Androidem 14 lub nowszym wszystkie te interfejsy są dostępne jako stabilne pakiety AIDL. Te interfejsy zostały wcześniej zdefiniowane za pomocą HIDL.
- Vendor HAL: interfejs HAL dla poleceń specyficznych dla Androida. Pliki AIDL znajdują się w folderze
hardware/interfaces/aidl
, a pliki HIDL – w folderzehardware/interfaces/wifi/1.x
. - Supplicant HAL: interfejs HAL dla wpa_supplicant. Pliki AIDL znajdują się w folderze
hardware/interfaces/supplicant/aidl
, a pliki HIDL w folderzehardware/interfaces/supplicant/1.x
. - Hostapd HAL: interfejs HAL dla hostapd. Pliki AIDL znajdują się w folderze
hardware/interfaces/hostapd/aidl
, a pliki HIDL w folderzehardware/interfaces/hostapd/1.x
.
Interfejs HAL dostawcy
Interfejs HAL dostawcy udostępnia polecenia specyficzne dla Androida. Tryb infrastruktury Station (STA) i Soft AP (SAP) jest opcjonalny (nie jest wymagany). Jest on jednak wymagany w przypadku usług Wi-Fi Aware i Wi-Fi RTT.
W Androidzie 14 i nowszych interfejs HAL dostawcy jest definiowany za pomocą AIDL. W Androidzie 13 i starszych wersjach interfejs HAL dostawcy jest definiowany za pomocą HIDL.
Przed wprowadzeniem interfejsu HIDL (czyli przed Androidem 8.0) Android używał mechanizmu HAL, który jest teraz nazywany starszym interfejsem HAL. Kod źródłowy Androida zawiera obecnie domyślną implementację AIDL lub HIDL za pomocą elementu pośredniczącego działającego na starszej wersji interfejsu HAL.
Starsze nagłówki HAL znajdują się w regionie hardware/libhardware_legacy/include/hardware_legacy/
. Stara implementacja oparta na HAL znajduje się w hardware/interfaces/wifi/aidl/default
(w przypadku AIDL) i hardware/interfaces/wifi/1.x/default
(w przypadku HIDL).
interfejs HAL aplikacji
Supplicant HAL udostępnia interfejs dla demona wpa_supplicant. Od Androida 13 interfejs używa AIDL do definiowania HAL. W przypadku wersji starszych niż Android 13 interfejsy i partycje dostawcy korzystają z HIDL.
Kod źródłowy wpa_supplicant znajduje się w regionie external/wpa_supplicant_8/wpa_supplicant
. Implementacja referencyjna udostępnia interfejs AIDL, który jest implementowany w podkatalogu aidl
.
Hostapd HAL
Biblioteka Hostapd HAL udostępnia interfejs demona hostapd. Od Androida 13 interfejs używa AIDL do definiowania HAL. W przypadku wersji starszych niż Android 13 interfejsy i partycje dostawców używają HIDL.
Kod źródłowy hosta Hostpd znajduje się w regionie external/wpa_supplicant_8/hostapd
.
Implementacja referencyjna udostępnia interfejs AIDL, który jest implementowany w podkatalogu aidl
.
Równoczesność wielu interfejsów Wi-Fi
Różne urządzenia z Androidem mogą obsługiwać różne kombinacje interfejsów Wi-Fi jednocześnie. Obsługiwane kombinacje są definiowane w interfejsie HAL i wyświetlane w ramach. Format specyfikacji jest zdefiniowany w hardware/interfaces/wifi/aidl/android/hardware/wifi/IWifiChip.aidl
w przypadku interfejsu API Google Play w przypadku Wi-Fi HAL,
android/hardware/interfaces/wifi/1.6/IWifiChip.hal
w przypadku interfejsu API Google Play w przypadku Wi-Fi HAL 1.6 oraz
android/hardware/interfaces/wifi/1.0/IWifiChip.hal
w przypadku interfejsu API Google Play w przypadku Wi-Fi HAL 1.5 i starszych.
Interfejs AIDL HAL, dostępny w Androidzie 14 i nowszych, oraz interfejs Wi-Fi HAL w wersji 1.6, dostępny w Androidzie 13, umożliwiają określenie połączonego interfejsu AP (jednoczesna łączność w dwóch pasmach) jako elementu kombinacji.
Format specyfikacji równoczesności jest elastyczny i ogólny. Może ona wyrażać kombinacje, które nie są jeszcze obsługiwane przez framework. Aby skonfigurować konkretną kombinację, użyj flagi WIFI_HAL_INTERFACE_COMBINATIONS
w pliku device/<oem>/<device>/BoardConfig-common.mk
.
Na przykład urządzenie może obsługiwać 2 STA i jeden interfejs typu NAN (Wi-Fi Aware) lub P2P (Wi-Fi Direct) (ale nie oba). W przypadku atrybutu device/<oem>/<device>/BoardConfig-common.mk
:
WIFI_HAL_INTERFACE_COMBINATIONS := {{{STA}, 2}, {{NAN, P2P}, 1}}
Innym przykładem jest urządzenie, które obsługuje STA z jednym AP lub mostk AP (jednoczesny dwuzakresowy) bez innych interfejsów. Jest to wyrażane w ten sposób:
WIFI_HAL_INTERFACE_COMBINATIONS := {{{STA}, 1}, {{AP}, 1}}, {{{AP_BRIDGED}, 1}}
Dokumentacja HAL zawiera też konfiguracje kilku kombinacji, które można aktywować za pomocą flag kompilacji (starszych). Instrukcje konfiguracji znajdziesz w tych artykułach: