Świadomość Wi-Fi

Funkcja Wi-Fi Aware dodana w systemie Android 8.0 umożliwia obsługującym urządzeniom wykrywanie, łączenie się i zasięg (dodany w systemie Android 9) bezpośrednio między sobą przy użyciu protokołu Wi-Fi Aware bez dostępu do Internetu lub sieci komórkowej. Ta funkcja, oparta na specyfikacji Wi-Fi Alliance (WFA) Wi-Fi Aware (wersje 2.0, 3.0, 3.1 i 4.0), umożliwia łatwe udostępnianie danych o dużej przepustowości pomiędzy zaufanymi urządzeniami i aplikacjami, które w przeciwnym razie byłyby poza siecią.

Przykłady i źródło

Aby móc korzystać z tej funkcji, producenci urządzeń powinni wdrożyć warstwę HAL dostawcy Wi-Fi. W Androidzie 14 i nowszych interfejs HAL dostawcy jest definiowany przy użyciu AIDL. W przypadku Androida 13 i starszych interfejs HAL dostawcy jest definiowany przy użyciu języka HIDL.

Postępuj zgodnie z interfejsem Wi-Fi, aby skorzystać z funkcji Wi-Fi Aware. W zależności od tego, który interfejs jest zaimplementowany, jest to:

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

Możesz zapoznać się ze starszą wersją HAL Wi-Fi, aby zobaczyć, jak koreluje ona z interfejsami AIDL i HIDL: hardware/libhardware_legacy/+/main/include/hardware_legacy/wifi_nan.h .

Realizacja

Producenci urządzeń muszą zapewnić obsługę zarówno frameworka, jak i HAL/oprogramowania sprzętowego:

  • Struktura:
    • Kod AOSP
    • Włącz Aware: wymaga zarówno flagi funkcji, jak i flagi kompilacji
  • Obsługa Wi-Fi Aware (NAN) HAL (co oznacza obsługę oprogramowania sprzętowego)

Aby zaimplementować tę funkcję, producenci urządzeń wdrażają interfejs Wi-Fi i włączają dwie flagi funkcji:

  • W BoardConfig.mk lub BoardConfig-common.mk znajdującym się w device/<oem>/<device> dodaj następującą 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 urządzenia równorzędne korzystające z protokołu IEEE 802.11mc, znanego również jako czas podróży w obie strony (RTT). Ta podfunkcja Wi-Fi Aware jest uzależniona od tego, czy urządzenie obsługuje funkcję Wi-Fi RTT, co oznacza, że ​​urządzenie musi obsługiwać zarówno Wi-Fi Aware, jak i Wi-Fi RTT. Aby uzyskać więcej informacji, zobacz Wi-Fi RTT .

W przeciwnym razie wszystko, co jest wymagane dla tej funkcji, jest zawarte w AOSP.

Flaga WIFI_HIDL_FEATURE_AWARE jest ignorowana, jeśli określono flagę WIFI_HAL_INTERFACE_COMBINATIONS . Aby uzyskać więcej informacji, zobacz temat Współbieżność wielu interfejsów Wi-Fi .

Randomizacja MAC

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

  • Losowo przy każdym włączeniu lub ponownym włączeniu funkcji Wi-Fi Aware.
  • Gdy włączona jest funkcja Wi-Fi Aware, adres MAC musi być losowy w regularnych odstępach czasu skonfigurowanych za pomocą parametru NanConfigRequest.macAddressRandomizationIntervalSec . Jest to domyślnie skonfigurowane przez platformę na 30 minut.

Zawieś i wznów

W systemie Android 14 i nowszych wersjach funkcja Wi-Fi Aware obsługuje zawieszanie i wznawianie aktywnych sesji wykrywania przez aplikacje uprzywilejowane (w tym wszystkie ścieżki danych powiązane z tymi sesjami). Obsługa tej funkcji pozwala urządzeniom szybciej wznawiać sesje wykrywania i zużywać mniej energii, ponieważ sesje wykrywania można zawiesić.

Jeśli urządzenie obsługuje tę funkcję wstrzymywania i wznawiania, oprogramowanie sprzętowe zawiesza sesję Wi-Fi Aware, gdy uprzywilejowana aplikacja zawiesza sesję wykrywania. Gdy sesja wykrywania jest w stanie zawieszenia, 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 zostaną zawieszone, urządzenie nie będzie przesyłać ani odbierać żadnych ramek Wi-Fi Aware.

Gdy uprzywilejowana aplikacja wznawia zawieszoną sesję odnajdywania, platforma przywraca sesję do poprzedniego stanu, łącznie ze wszystkimi skojarzonymi sesjami NDP. Wznowienie zawieszonej sesji wykrywania jest szybsze niż wywołanie funkcji Wi-Fi Aware i utworzenie nowej sesji wykrywania.

Aby zapewnić możliwość zawieszania i wznawiania sesji wykrywania, producenci urządzeń muszą zapewnić obsługę technologii HAL i oprogramowania sprzętowego. Aby uzyskać szczegółowe informacje, zobacz IWifiNanIface.java .

Producenci urządzeń mogą korzystać z komunikacji pozapasmowej (na przykład BLE) w celu synchronizacji zawieszania i wznawiania na wielu urządzeniach.

Walidacja

Android udostępnia zestaw testów jednostkowych, testów integracyjnych (ACTS), testów zestawu testów zgodności (CTS) i testów CTS Verifier w celu sprawdzenia poprawności funkcji Wi-Fi Aware. Wi-Fi Aware można także przetestować za pomocą pakietu Vendor Test Suite (VTS) .

Testy jednostkowe

Testy pakietu Wi-Fi Aware są wykonywane przy użyciu:

Testy serwisowe:

atest com.android.server.wifi.aware

Testy menedżerskie:

atest android.net.wifi.aware

Testy integracyjne (ACTS)

Zestaw testów acts/sl4a , opisany w tools/test/connectivity/acts_tests/tests/google/wifi/aware/README.md , zapewnia testy funkcjonalne, wydajnościowe i obciążeniowe.

Testy zestawu testów zgodności (CTS).

Użyj testów CTS, aby sprawdzić działanie funkcji Wi-Fi Aware. CTS wykrywa, kiedy funkcja jest włączona i automatycznie uwzględnia powiązane testy.

Testy CTS można wywołać za pomocą:

atest SingleDeviceTest

Testy weryfikatora CTS

Testy CTS Verifier sprawdzają zachowanie Wi-Fi Aware przy użyciu dwóch urządzeń: urządzenia testowego i znanego dobrego urządzenia. Aby uruchomić testy, otwórz CTS Verifier i przejdź do sekcji zatytułowanej Testy Wi-Fi Aware.