La función Tiempo de ida y vuelta (RTT) de Wi-Fi en Android 9 permite que los dispositivos compatibles midan la distancia a otros dispositivos compatibles, ya sean puntos de acceso (PA) o pares de reconocimiento de Wi-Fi (si el dispositivo admite Wi-Fi Aware). Esta función, compilada con el protocolo IEEE 802.11mc, permite que las apps usen el reconocimiento y la precisión de la ubicación mejoradas.
Ejemplos y fuente
Para usar esta función, implementa la interfaz de la HAL del proveedor. En Android 14 y versiones posteriores, la interfaz de la HAL del proveedor se define con el AIDL. En Android 13 y versiones anteriores, la interfaz de la HAL del proveedor se define con HIDL. En Android 8.0, el HIDL reemplazó la estructura anterior de la capa de abstracción de hardware (HAL) utilizada para optimizar las implementaciones especificando tipos y llamadas de método recopilados en interfaces y paquetes.
Sigue la interfaz Wi-Fi para emplear la función Wi-Fi RTT. Según la interfaz que se implemente, sucederá lo siguiente:
- AIDL:
hardware/interfaces/wifi/aidl
- HIDL:
hardware/interfaces/wifi/1.0
o posterior.
Puedes consultar la HAL de Wi-Fi heredada para ver cómo se correlaciona con las interfaces AIDL y HIDL: hardware/libhardware_legacy/+/main/include/hardware_legacy/rtt.h.
Implementación
Para implementar Wi-Fi RTT, debes proporcionar compatibilidad con el framework y con HAL/firmware:
Marco de trabajo:
- Código del AOSP
- Habilitar Wi-Fi RTT: Requiere una marca de función.
Compatibilidad con HAL de Wi-Fi RTT (IEEE 802.11mc), lo que implica compatibilidad con firmware
Para implementar esta función, implementa la interfaz de AIDL o HIDL de Wi-Fi y habilita la marca de función:
En
device.mk
, ubicado endevice/<oem>/<device>
, modifica la variable de entornoPRODUCT_COPY_FILES
para incluir compatibilidad con la función 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
De lo contrario, todo lo necesario para esta función se incluye en el AOSP.
Aleatorización de MAC
Para mejorar la privacidad, la dirección MAC que se usa durante las transacciones de Wi-Fi RTT debe ser aleatoria, es decir, no debe coincidir con la dirección MAC nativa de la interfaz Wi-Fi. Sin embargo, como excepción, cuando un dispositivo está asociado a un PA, puede usar la dirección MAC con la que está asociado para cualquier transacción de RTT con ese PA o con otros PA.
Validación
Existen pruebas del Conjunto de pruebas de compatibilidad (CTS) de Android para esta función. El CTS detecta cuándo la función está habilitada y, luego, incluye automáticamente las pruebas asociadas. Esta función también se puede probar con el Conjunto de pruebas de proveedores (VTS).
Pruebas de unidades
Las pruebas del paquete Wi-Fi RTT se ejecutan con lo siguiente:
Pruebas de servicio:
atest com.android.server.wifi.rtt
Pruebas del administrador:
atest android.net.wifi.rtt
CTS
Existen pruebas del Conjunto de pruebas de compatibilidad (CTS) de Android para esta función. El CTS detecta cuándo la función está habilitada y, luego, incluye automáticamente las pruebas asociadas. Un punto de acceso compatible con Wi-Fi RTT (IEEE 802.11mc) debe estar dentro del alcance del dispositivo que está a prueba.
Las pruebas del CTS se pueden activar usando lo siguiente:
atest WifiRttTest
Calibración
Para que Wi-Fi RTT tenga un buen rendimiento, lo ideal es que los rangos que se muestran en el protocolo 802.11mc sean precisos dentro del indicador clave de rendimiento (KPI). Para el error de CDF del 90%, en los anchos de banda enumerados, se espera que el KPI recomendado para una estimación de rango tenga las siguientes tolerancias:
- 80 MHz: 2 metros
- 40 MHz: 4 metros
- 20 MHz: 8 metros
Para garantizar que la implementación de la función funcione correctamente, se necesitan pruebas de calibración.
Esto se puede lograr comparando un rango de verdad fundamental con el rango estimado de RTT a distancias crecientes. Para un cumplimiento básico, debes validar tu solución en relación con un dispositivo que se sepa que se calibró con RTT. La calibración de rango se debe probar en las siguientes condiciones:
- Un laboratorio abierto grande o un pasillo sin muchos objetos metálicos que puede provocar casos inusualmente altos de rutas múltiples.
- Al menos una ruta de línea de visión (LOS) o una ruta de 25 m de extensión.
- Marcadores con incrementos de 0,5 metros de un extremo al otro de la pista.
Un lugar para asegurar un punto de acceso compatible con RTT en un extremo de la vía, montado a 20 cm por encima del suelo, y un soporte móvil para un teléfono Android (o cualquier otro dispositivo móvil Android bajo prueba) que se puede mover por la pista y alineado con los marcadores de 0.5 m, también a 20 cm por encima del piso.
Se deben registrar 50 resultados de rango en cada marcador, junto con la distancia desde el punto de acceso. Las estadísticas, como la media y la varianza del rango, deben calcularse para cada posición del marcador.
A partir de los resultados del paso 5, se puede dibujar un gráfico de la verdad fundamental (eje x) según el rango estimado (eje y) y la línea de regresión de mejor ajuste estimada. La calibración ideal del dispositivo dará como resultado una línea de gradiente de 1.0, con un desplazamiento de 0.0 m en el eje Y. Las desviaciones de estos valores son aceptables si se encuentran dentro del KPI para el ancho de banda correspondiente. Si los resultados están fuera del KPI, se debe volver a calibrar la característica del dispositivo para que los resultados estén dentro de la especificación del KPI.