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
oBoardConfig-common.mk
situato indevice/<oem>/<device>
, aggiungi il seguente flag:WIFI_HIDL_FEATURE_AWARE := true
In
device.mk
situato indevice/<oem>/<device>
, modificare la variabile di ambientePRODUCT_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.