Interfejs HAL sieci Wi-Fi

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 folderze hardware/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 folderze hardware/interfaces/supplicant/1.x.
  • Hostapd HAL: interfejs HAL dla hostapd. Pliki AIDL znajdują się w folderze hardware/interfaces/hostapd/aidl, a pliki HIDL – w folderze hardware/interfaces/hostapd/1.x.

Interfejs HAL dostawcy

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 AwareWi-Fi RTT.

W Androidzie 14 i nowszych interfejs HAL dostawcy jest definiowany za pomocą AIDL. Na Androidzie 13 i starszych interfejs HAL dostawcy jest definiowany za pomocą HIDL.

Przed wprowadzeniem interfejsu HIDL (czyli przed Androidem 8.0) Android używał mechanizmu HAL, który teraz nazywa się 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.

Stare nagłówki HAL znajdują się w pliku 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

Interfejs 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 katalogu external/wpa_supplicant_8/wpa_supplicant. Implementacja referencyjna udostępnia interfejs AIDL, który jest implementowany w podkatalogu aidl.

Hostapd HAL

Hostapd HAL udostępnia interfejs dla demona hostapd. 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 hostapd znajduje się w folderze external/wpa_supplicant_8/hostapd. Implementacja referencyjna udostępnia interfejs AIDL, który jest implementowany w podkatalogu aidl.

Równoczesne korzystanie z 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 HAL Wi-Fi AIDL, android/hardware/interfaces/wifi/1.6/IWifiChip.hal w przypadku interfejsu HAL Wi-Fi 1.6, android/hardware/interfaces/wifi/1.0/IWifiChip.hal w przypadku interfejsu HAL Wi-Fi 1.5 i niższych.

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 interfejsu skonfigurowanego jako mostk AP (dwuzakresowy interfejs równoczesny) jako elementu kombinacji.

Format specyfikacji równoległości jest elastyczny i uniwersalny. Może ona wyrażać kombinacje, które nie są jeszcze obsługiwane przez platformę. 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:

WIFI_HAL_INTERFACE_COMBINATIONS := {{{STA}, 1}, {{AP}, 1}}, {{{AP_BRIDGED}, 1}}

Alternatywnie, referencyjny HAL zawiera konfiguracje dla kilku kombinacji, które można aktywować za pomocą (starszych) flag kompilacji. Instrukcje konfiguracji znajdziesz w tych artykułach: