Consapevole del Wi-Fi

La funzionalità Wi-Fi Aware aggiunta in Android 8.0 consente ai dispositivi di supporto di rilevare, connettersi e range (aggiunto in Android 9) tra loro direttamente utilizzando il protocollo Wi-Fi Aware senza accesso a Internet o alla rete cellulare. Questa funzionalità, basata sulla specifica Wi-Fi Aware della Wi-Fi Alliance (WFA) (versioni 2.0, 3.0, 3.1 e 4.0), consente una facile condivisione di dati ad alto rendimento tra dispositivi e app affidabili che altrimenti sarebbero fuori rete.

Esempi e fonte

Per utilizzare questa funzionalità, i produttori di dispositivi dovrebbero implementare l'HAL del fornitore Wi-Fi. In Android 14 e versioni successive, l'interfaccia HAL del fornitore viene definita utilizzando AIDL. Per Android 13 e versioni precedenti, l'interfaccia HAL del fornitore viene definita utilizzando HIDL.

Seguire l'interfaccia Wi-Fi per utilizzare la funzione Wi-Fi Aware. A seconda dell'interfaccia implementata, questo è:

  • AIDL: hardware/interfaces/wifi/aidl
  • HIDL: hardware/interfaces/wifi/1.2 o successivo

È possibile fare riferimento all'HAL Wi-Fi legacy per vedere come è correlato alle interfacce AIDL e HIDL: hardware/libhardware_legacy/+/main/include/hardware_legacy/wifi_nan.h .

Implementazione

I produttori di dispositivi devono fornire sia il supporto framework che HAL/firmware:

  • Struttura:
    • Codice AOSP
    • Enable Aware: richiede sia un flag di funzionalità che un flag di build
  • Supporto HAL Wi-Fi Aware (NAN) (che implica il supporto del firmware)

Per implementare questa funzionalità, i produttori di dispositivi implementano l'interfaccia Wi-Fi e abilitano due flag di funzionalità:

  • In BoardConfig.mk o BoardConfig-common.mk situato in device/<oem>/<device> , aggiungi il seguente flag:

    WIFI_HIDL_FEATURE_AWARE := true
    
  • In device.mk situato in device/<oem>/<device> , modificare la variabile di ambiente PRODUCT_COPY_FILES per includere il supporto per la funzione 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 include la connessione ai dispositivi peer che utilizzano il protocollo IEEE 802.11mc, noto anche come Round Trip Time (RTT). Questa funzionalità secondaria di Wi-Fi Aware è condizionata al supporto della funzionalità Wi-Fi RTT da parte del dispositivo, ovvero richiede che il dispositivo supporti sia Wi-Fi Aware che Wi-Fi RTT. Per ulteriori dettagli, vedere Wi-Fi RTT .

Altrimenti, tutto ciò che è necessario per questa funzionalità è incluso in AOSP.

Il flag WIFI_HIDL_FEATURE_AWARE viene ignorato se viene specificato il flag WIFI_HAL_INTERFACE_COMBINATIONS . Per ulteriori informazioni, consulta Concorrenza multi-interfaccia Wi-Fi .

Randomizzazione MAC

Android richiede che l'indirizzo MAC del rilevamento Wi-Fi Aware (NMI) e delle interfacce dati (NDP) sia casuale e non identico al vero indirizzo MAC del dispositivo. Gli indirizzi MAC devono essere:

  • Randomizzato ogni volta che Wi-Fi Aware viene abilitato o riabilitato.
  • Quando Wi-Fi Aware è abilitato, l'indirizzo MAC deve essere randomizzato a un intervallo regolare configurato dal parametro NanConfigRequest.macAddressRandomizationIntervalSec . Questo è configurato dal framework per impostazione predefinita su 30 minuti.

Sospendere e riprendere

In Android 14 e versioni successive, Wi-Fi Aware supporta la possibilità per le app privilegiate di sospendere e riprendere le sessioni di rilevamento attive (inclusi tutti i percorsi dati associati a tali sessioni). Il supporto di questa funzionalità consente ai dispositivi di riprendere le sessioni di rilevamento più rapidamente e di utilizzare meno energia perché le sessioni di rilevamento possono essere sospese.

Se un dispositivo supporta questa capacità di sospensione e ripresa, il firmware sospende la sessione Wi-Fi Aware quando un'app privilegiata sospende la sessione di rilevamento. Quando una sessione di rilevamento è in uno stato sospeso, il dispositivo non trasmette né riceve alcun frame per quella sessione, inclusi eventuali NDP attivi in ​​quella sessione. Se tutte le sessioni di rilevamento vengono sospese, il dispositivo non trasmette né riceve alcun frame Wi-Fi Aware.

Quando un'app privilegiata riprende una sessione di rilevamento sospesa, il framework riporta la sessione allo stato precedente, incluse tutte le sessioni NDP associate. Riprendere una sessione di rilevamento sospesa è più veloce che avviare Wi-Fi Aware e creare una nuova sessione di rilevamento.

Per supportare la possibilità di sospendere e riprendere le sessioni di rilevamento, i produttori di dispositivi devono fornire supporto HAL e firmware. Per i dettagli, vedere IWifiNanIface.java .

I produttori di dispositivi possono utilizzare le comunicazioni fuori banda (ad esempio BLE) per sincronizzare la sospensione e la ripresa su più dispositivi.

Validazione

Android fornisce una serie di test unitari, test di integrazione (ACTS), test Compatibility Test Suite (CTS) e test CTS Verifier per convalidare la funzionalità Wi-Fi Aware. Wi-Fi Aware può anche essere testato utilizzando Vendor Test Suite (VTS) .

Test unitari

I test del pacchetto Wi-Fi Aware vengono eseguiti utilizzando:

Test di servizio:

atest com.android.server.wifi.aware

Prove dirigenziali:

atest android.net.wifi.aware

Test di integrazione (ACTS)

La suite di test acts/sl4a , descritta in tools/test/connectivity/acts_tests/tests/google/wifi/aware/README.md , fornisce test funzionali, prestazionali e di stress.

Test della Compatibility Test Suite (CTS).

Utilizza i test CTS per convalidare la funzionalità Wi-Fi Aware. CTS rileva quando la funzionalità è abilitata e include automaticamente i test associati.

I test CTS possono essere attivati ​​utilizzando:

atest SingleDeviceTest

Test di verifica CTS

I test CTS Verifier convalidano il comportamento Wi-Fi Aware utilizzando due dispositivi: un dispositivo di test e un dispositivo sicuramente funzionante . Per eseguire i test, apri CTS Verifier e vai alla sezione intitolata Test Wi-Fi Aware.