Wi-Fi Aware

Funkcja Wi-Fi Aware dodana w Androidzie 8.0 umożliwia obsługiwanym urządzeniom wykrywanie się nawzajem, łączenie się ze sobą, i określanie odległości (dodane w Androidzie 9) bezpośrednio za pomocą protokołu Wi-Fi Aware bez dostępu do internetu ani sieci komórkowej. Ta funkcja, oparta na specyfikacji Wi-Fi Aware (wersje 2.0, 3.0, 3.1 i 4.0) opracowanej przez Wi-Fi Alliance (WFA), ułatwia udostępnianie danych o dużej przepustowości między zaufanymi urządzeniami i aplikacjami, które w przeciwnym razie nie byłyby połączone z siecią.

Szczegółowy opis architektury Wi-Fi Aware w Androidzie 17 i nowszych wersjach znajdziesz w artykule Architektura Wi-Fi Aware.

Przykłady i źródło

Aby korzystać z tej funkcji, producenci urządzeń powinni zaimplementować HAL dostawcy Wi-Fi. W Androidzie 14 i nowszych wersjach interfejs HAL dostawcy jest zdefiniowany za pomocą AIDL. W Androidzie 13 i starszych wersjach interfejs HAL dostawcy jest zdefiniowany za pomocą HIDL.

Aby korzystać z funkcji Wi-Fi Aware, postępuj zgodnie z instrukcjami dotyczącymi interfejsu Wi-Fi. W zależności od tego, który interfejs jest zaimplementowany, może to być:

  • AIDL: hardware/interfaces/wifi/aidl
  • HIDL: hardware/interfaces/wifi/1.2 lub nowszy

Aby sprawdzić, jak starszy HAL Wi-Fi jest powiązany z interfejsami AIDL i HIDL, hardware/libhardware_legacy/+/android17-release/include/hardware_legacy/wifi_nan.h.

Implementacja

Producenci urządzeń muszą zapewnić obsługę zarówno platformy, jak i HAL/oprogramowania układowego:

  • Platforma:
    • kod projektu Android Open Source (AOSP)
    • Włączanie funkcji Aware: wymaga flagi funkcji i flagi kompilacji.
  • Obsługa HAL Wi-Fi Aware (NAN) (co oznacza obsługę oprogramowania układowego).

Aby zaimplementować tę funkcję, producenci urządzeń muszą zaimplementować interfejs Wi-Fi i włączyć 2 flagi funkcji:

  • W BoardConfig.mk lub BoardConfig-common.mk znajdującym się w device/<oem>/<device> dodaj tę flagę:

    WIFI_HIDL_FEATURE_AWARE := true
    
  • W device.mk znajdującym się w device/<oem>/<device> zmodyfikuj zmienną środowiskową PRODUCT_COPY_FILES, aby uwzględnić obsługę funkcji Wi-Fi Aware:

    PRODUCT_COPY_FILES +=
    frameworks/native/data/etc/android.hardware.wifi.aware.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.aware.xml
    

Wi-Fi Aware obejmuje określanie odległości do urządzeń równorzędnych za pomocą protokołu IEEE 802.11mc, znanego też jako Round Trip Time (RTT). Ta podfunkcja Wi-Fi Aware jest warunkowa i zależy od tego, czy urządzenie obsługuje funkcję Wi-Fi RTT. Oznacza to, że urządzenie musi obsługiwać zarówno Wi-Fi Aware, jak i Wi-Fi RTT. Więcej informacji znajdziesz w artykule Wi-Fi RTT.

Wszystko, co jest potrzebne do korzystania z tej funkcji, jest zawarte w AOSP.

Jeśli określono flagę WIFI_HAL_INTERFACE_COMBINATIONS, flaga WIFI_HIDL_FEATURE_AWARE jest ignorowana. Więcej informacji znajdziesz w artykule Współbieżność wielu interfejsów Wi-Fi.

Randomizacja adresu MAC

Android wymaga, aby adres MAC interfejsów wykrywania (NMI) i danych (NDP) Wi-Fi Aware był randomizowany i nie był identyczny z prawdziwym adresem MAC urządzenia. Adresy MAC muszą być:

  • randomizowane za każdym razem, gdy Wi-Fi Aware jest włączane lub włączane ponownie;
  • gdy Wi-Fi Aware jest włączone, adres MAC musi być randomizowany w regularnych odstępach czasu skonfigurowanych przez parametr NanConfigRequest.macAddressRandomizationIntervalSec. Domyślnie jest to 30 minut.

Zawieszanie i wznawianie

W Androidzie 14 i nowszych wersjach Wi-Fi Aware umożliwia aplikacjom z uprawnieniami zawieszanie i wznawianie aktywnych sesji wykrywania (w tym wszystkich ścieżek danych powiązanych z tymi sesjami). Obsługa tej funkcji umożliwia urządzeniom szybsze wznawianie sesji wykrywania i zużywanie mniejszej ilości energii, ponieważ sesje wykrywania można zawiesić.

Jeśli urządzenie obsługuje funkcję zawieszania i wznawiania, oprogramowanie układowe zawiesza sesję Wi-Fi Aware, gdy aplikacja z uprawnieniami zawiesza sesję wykrywania. Gdy sesja wykrywania jest zawieszona, urządzenie nie przesyła ani nie odbiera żadnych ramek dla tej sesji, w tym żadnych aktywnych NDP w tej sesji. Jeśli wszystkie sesje wykrywania są zawieszone, urządzenie nie przesyła ani nie odbiera żadnych ramek Wi-Fi Aware.

Gdy aplikacja z uprawnieniami wznawia zawieszoną sesję wykrywania, platforma przywraca sesję do poprzedniego stanu, w tym wszystkie powiązane sesje NDP. Wznawianie zawieszonej sesji wykrywania jest szybsze niż włączanie Wi-Fi Aware i tworzenie nowej sesji wykrywania.

Aby obsługiwać funkcję zawieszania i wznawiania sesji wykrywania, producenci urządzeń muszą zapewnić obsługę HAL i oprogramowania układowego. Więcej informacji znajdziesz w pliku IWifiNanIface.java.

Producenci urządzeń mogą używać komunikacji poza pasmem (np. BLE) do synchronizowania zawieszania i wznawiania na wielu urządzeniach.

Weryfikacja

Android udostępnia zestaw testów jednostkowych, testów Compatibility Test Suite (CTS) i testów CTS Verifier, które służą do weryfikowania funkcji Wi-Fi Aware. Wi-Fi Aware można też testować za pomocą Vendor Test Suite (VTS).

Testy jednostkowe

Testy pakietu Wi-Fi Aware są wykonywane za pomocą tych narzędzi:

Testy usługi:

atest com.android.server.wifi.aware

Testy menedżera:

atest android.net.wifi.aware

Testy Compatibility Test Suite (CTS)

Do weryfikowania funkcji Wi-Fi Aware używaj testów CTS. CTS wykrywa, kiedy funkcja jest włączona, i automatycznie uwzględnia powiązane testy.

Testy CTS można uruchamiać za pomocą tych narzędzi:

atest SingleDeviceTest

Testy CTS Verifier

Testy CTS Verifier weryfikują działanie Wi-Fi Aware na 2 urządzeniach: urządzeniu testowym i sprawdzonym urządzeniu. Aby uruchomić testy, otwórz CTS Verifier i przejdź do sekcji Wi-Fi Aware Tests (Testy Wi-Fi Aware).