Reconocimiento de Wi-Fi

El Reconocimiento de Wi-Fi que se agregó a Android 8.0 permite que los dispositivos compatibles descubran, se conecten, y rango (agregados en Android 9) entre sí directamente mediante el protocolo de reconocimiento de Wi-Fi sin acceso a Internet o a la red móvil. Esta basada en la Wi-Fi Alliance (WFA) Especificación de reconocimiento de Wi-Fi (versiones 2.0, 3.0, 3.1 y 4.0) permite compartir datos de alta capacidad de procesamiento con facilidad entre dispositivos y apps de confianza que están fuera de la red.

Ejemplos y fuente

Para usar esta función, los fabricantes de dispositivos deben implementar la HAL del proveedor de Wi-Fi. En Android 14 y versiones posteriores, la interfaz de la HAL del proveedor se define con el AIDL. En el caso de Android 13 y versiones anteriores, la interfaz de la HAL del proveedor se define con el HIDL.

Sigue la interfaz de Wi-Fi para emplear la función de reconocimiento de Wi-Fi. Según la interfaz que esté implementada, esto puede ocurrir de las siguientes maneras:

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

Puedes consultar la HAL de Wi-Fi heredada para ver cómo se correlaciona con la Interfaces de AIDL y HIDL: hardware/libhardware_legacy/+/main/include/hardware_legacy/wifi_nan.h

Implementación

Los fabricantes de dispositivos deben proporcionar compatibilidad con el framework y con HAL/firmware:

  • Marco de trabajo:
    • Código del AOSP
    • Habilita el reconocimiento: Requiere una marca de función y una marca de compilación.
  • Compatibilidad con HAL de Wi-Fi Aware (NAN) (lo que implica compatibilidad con firmware)

Para implementar esta función, los fabricantes de dispositivos implementan la interfaz Wi-Fi. y habilita dos marcas de función:

  • En BoardConfig.mk o BoardConfig-common.mk, ubicado en device/<oem>/<device>, agrega la siguiente marca:

    WIFI_HIDL_FEATURE_AWARE := true
    
  • En device.mk, ubicado en device/<oem>/<device>, modifica el Variable de entorno PRODUCT_COPY_FILES para incluir compatibilidad con Wi-Fi Función de reconocimiento:

    PRODUCT_COPY_FILES +=
    frameworks/native/data/etc/android.hardware.wifi.aware.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.aware.xml
    

El reconocimiento de Wi-Fi incluye el rango a dispositivos de intercambio de tráfico mediante el protocolo IEEE 802.11mc, también conocido como tiempo de ida y vuelta (RTT). Esta subfunción de Reconocimiento de Wi-Fi se condicional en el dispositivo que admita la función Wi-Fi RTT, es decir, requiere el dispositivo para admitir Wi-Fi Aware y Wi-Fi RTT. Para obtener más detalles, consulta Wi-Fi RTT

De lo contrario, todo lo necesario para esta función se incluye en el AOSP.

La marca WIFI_HIDL_FEATURE_AWARE se ignora si el WIFI_HAL_INTERFACE_COMBINATIONS la marca de verificación. Para obtener más información, consulta Simultaneidad de varias interfaces de Wi-Fi.

Aleatorización de MAC

Android requiere la dirección MAC del reconocimiento de Wi-Fi (NMI) y los datos. de red (NDP) se aleatorizan y no sean idénticas a la dirección MAC verdadera. del dispositivo. Las direcciones MAC deben ser las siguientes:

  • Se aleatoriza cada vez que se habilita o se vuelve a habilitar Wi-Fi Aware.
  • Cuando se habilita el reconocimiento de Wi-Fi, la dirección MAC debe aleatorizarse de manera regular de red configurado por el Parámetro NanConfigRequest.macAddressRandomizationIntervalSec. Esta que el framework configura de forma predeterminada para que sea de 30 minutos.

Suspender y reanudar

En Android 14 y versiones posteriores, Wi-Fi Aware admite lo siguiente: capacidad para apps con privilegios para suspender y reanudar las sesiones de descubrimiento activas (incluidas todas las rutas de datos asociadas con esas sesiones). Apoyamos esto permite que los dispositivos reanuden las sesiones de descubrimiento más rápido y usen menos energía las sesiones de descubrimiento se pueden suspender.

Si un dispositivo admite esta capacidad de suspensión y reanudación, se suspende el firmware. la sesión de reconocimiento de Wi-Fi cuando una aplicación con privilegios suspende la sesión de detección. Cuando una sesión de descubrimiento se encuentra en estado suspendido, el dispositivo no transmite. ni recibir tramas para esa sesión, incluidos los NDP activos en esa sesión. Si se suspenden todas las sesiones de descubrimiento, el dispositivo no transmite. ni recibir tramas de reconocimiento de Wi-Fi.

Cuando una aplicación con privilegios reanuda una sesión de descubrimiento suspendida, el framework devuelve la sesión a su estado anterior, incluidos todos los NDP sesiones. Reanudar una sesión de descubrimiento suspendida es más rápido que iniciar Reconocimiento de Wi-Fi y creación de una nueva sesión de descubrimiento.

Para admitir la capacidad de suspender y reanudar las sesiones de descubrimiento, el dispositivo Los fabricantes deben brindar compatibilidad con HAL y firmware. Para obtener más información, consulta IWifiNanIface.java.

Los fabricantes de dispositivos pueden usar comunicaciones fuera de banda (por ejemplo, BLE) para lo siguiente: Sincronizar, suspender y reanudar en varios dispositivos.

Validación

Android proporciona un conjunto de pruebas de unidades, Pruebas del Conjunto de pruebas de compatibilidad (CTS) Pruebas del verificador de CTS para validar la conexión Wi-Fi Función de reconocimiento. También puedes probar el reconocimiento de Wi-Fi con el Conjunto de pruebas de proveedores (VTS).

Pruebas de unidades

Las pruebas del paquete de reconocimiento de Wi-Fi se ejecutan de la siguiente manera:

Pruebas de servicio:

atest com.android.server.wifi.aware

Pruebas del administrador:

atest android.net.wifi.aware

Pruebas del Conjunto de pruebas de compatibilidad (CTS)

Usa pruebas de CTS para validar la función de reconocimiento de Wi-Fi. El CTS detecta cuándo la función esté habilitada y que incluya automáticamente las pruebas asociadas.

Las pruebas del CTS se pueden activar usando lo siguiente:

atest SingleDeviceTest

Pruebas del verificador del CTS

Las pruebas del verificador del CTS validan el comportamiento de reconocimiento de Wi-Fi mediante dos dispositivos: una prueba y un dispositivo conocido y bueno. Para ejecutar las pruebas, abre el verificador del CTS y ve a la sección titulada Pruebas de reconocimiento de Wi-Fi.