La funzione Wi-Fi Round Trip Time (RTT) in Android 9 consente ai dispositivi di supporto di misurare la distanza da altri dispositivi di supporto: siano essi punti di accesso (AP) o peer Wi-Fi Aware (se Wi-Fi Aware è supportato sul dispositivo). Questa funzionalità, basata sul protocollo IEEE 802.11mc, consente alle app di utilizzare una maggiore precisione e consapevolezza della posizione.
Esempi e fonte
Per utilizzare questa funzionalità, implementare l'interfaccia HAL del fornitore. In Android 14 e versioni successive, l'interfaccia HAL del fornitore viene definita utilizzando AIDL. In Android 13 e versioni precedenti, l'interfaccia HAL del fornitore viene definita utilizzando HIDL. In Android 8.0, HIDL ha sostituito la precedente struttura HAL (Hardware Abstraction Layer) utilizzata per semplificare le implementazioni specificando tipi e chiamate di metodo raccolte in interfacce e pacchetti.
Seguire l'interfaccia Wi-Fi per utilizzare la funzione Wi-Fi RTT. A seconda dell'interfaccia implementata, questo è:
- AIDL:
hardware/interfaces/wifi/aidl
- HIDL:
hardware/interfaces/wifi/1.0
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/rtt.h .
Implementazione
Per implementare Wi-Fi RTT, è necessario fornire sia il framework che il supporto HAL/firmware:
Struttura:
- Codice AOSP
- Abilita Wi-Fi RTT: richiede un flag di funzionalità
Supporto HAL Wi-Fi RTT (IEEE 802.11mc) (che implica il supporto del firmware)
Per implementare questa funzionalità, implementare l'interfaccia Wi-Fi AIDL o HIDL e abilitare il flag della funzionalità:
In
device.mk
situato indevice/<oem>/<device>
, modifica la variabile di ambientePRODUCT_COPY_FILES
per includere il supporto per la funzione Wi-Fi RTT:PRODUCT_COPY_FILES += frameworks/native/data/etc/android.hardware.wifi.rtt.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.rtt.xml
Altrimenti, tutto ciò che è necessario per questa funzionalità è incluso in AOSP.
Randomizzazione MAC
Per migliorare la privacy, l'indirizzo MAC utilizzato durante le transazioni Wi-Fi RTT deve essere casuale, ovvero non deve corrispondere all'indirizzo MAC nativo dell'interfaccia Wi-Fi. Tuttavia, in via eccezionale, quando un dispositivo è associato a un AP, può utilizzare l'indirizzo MAC a cui è associato per qualsiasi transazione RTT con quell'AP o con altri AP.
Validazione
Per questa funzionalità esistono test Android Compatibility Test Suite (CTS). CTS rileva quando la funzionalità è abilitata e include automaticamente i test associati. Questa funzionalità può anche essere testata utilizzando Vendor Test Suite (VTS) e act/sl4a , una suite di test che conduce test di integrazione approfonditi.
Test unitari
I test del pacchetto Wi-Fi RTT vengono eseguiti utilizzando:
Test di servizio:
atest com.android.server.wifi.rtt
Prove dirigenziali:
atest android.net.wifi.rtt
Test di integrazione (ACTS).
La suite di test act/sl4a, descritta in /tools/test/connectivity/acts_tests/tests/google/wifi/rtt/README.md
, fornisce test funzionali, prestazionali e di stress.
CTS
Per questa funzionalità esistono test Android Compatibility Test Suite (CTS). CTS rileva quando la funzionalità è abilitata e include automaticamente i test associati. Un punto di accesso che supporti Wi-Fi RTT (IEEE 802.11mc) deve trovarsi nel raggio di portata del dispositivo sottoposto a test.
I test CTS possono essere attivati utilizzando:
atest WifiRttTest
Calibrazione
Affinché Wi-Fi RTT funzioni bene, gli intervalli restituiti nel protocollo 802.11mc sono idealmente accurati all'interno del Key Performance Indicator (KPI). Per l'errore CDF del 90%, alle larghezze di banda elencate, si prevede che il KPI consigliato per una stima dell'intervallo abbia le seguenti tolleranze:
- 80 MHz: 2 metri
- 40 MHz: 4 metri
- 20 MHz: 8 metri
Per garantire che l'implementazione della funzionalità funzioni correttamente, è necessario eseguire test di calibrazione.
Ciò può essere ottenuto confrontando la portata reale con la portata stimata RTT a distanze crescenti. Per la conformità di base, dovresti convalidare la tua soluzione rispetto a un dispositivo noto per essere calibrato RTT. La calibrazione della gamma deve essere testata nelle seguenti condizioni:
- Un grande laboratorio aperto o un corridoio in cui non sono presenti molti oggetti metallici che potrebbero causare un numero insolitamente elevato di percorsi multipli.
- Almeno una traccia/percorso Line-Of-Sight (LOS) che si estende per 25 m.
- Segnali con incrementi di 0,5 metri da un'estremità all'altra del binario.
- Un punto per fissare un punto di accesso compatibile con RTT a un'estremità del binario montato a 20 cm dal pavimento e un supporto mobile per un telefono Android (o altro dispositivo mobile Android in prova) che può essere spostato lungo il binario e allineato con il Segnalini da 0,5 m, anche a 20 cm dal pavimento. Nota: questo compito ripetitivo può essere eseguito da un piccolo robot, ma va bene anche un operatore umano.
- Dovrebbero essere registrati 50 risultati di distanza su ciascun marcatore, insieme alla distanza dal punto di accesso. Le statistiche, come la media e la varianza dell'intervallo, dovrebbero essere calcolate per ciascuna posizione del marcatore.
Dai risultati del passaggio 5, è possibile tracciare un grafico per la verità di base (asse x) rispetto all'intervallo stimato (asse y) e una linea di regressione più adatta stimata. La calibrazione ideale del dispositivo risulterà in una linea con gradiente 1,0, con offset 0,0 m sull'asse y. Deviazioni da questi valori sono accettabili se rientrano nel KPI per la larghezza di banda corrispondente. Se i risultati non rientrano nel KPI, la funzionalità del dispositivo deve essere ricalibrata per riportare i risultati entro la specifica KPI.