Consciente de Wi-Fi

La función Wi-Fi Aware agregada en Android 8.0 permite que los dispositivos compatibles se descubran, conecten y alcancen (agregado en Android 9) entre sí directamente utilizando el protocolo Wi-Fi Aware sin acceso a Internet o a la red celular. Esta característica, basada en la especificación Wi-Fi Aware de Wi-Fi Alliance (WFA) (versiones 2.0, 3.0, 3.1 y 4.0), permite compartir fácilmente datos de alto rendimiento entre dispositivos y aplicaciones confiables que de otro modo estarían fuera de la red.

Ejemplos y fuente

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

Siga la interfaz de Wi-Fi para emplear la función Wi-Fi Aware. Dependiendo de qué interfaz se implemente, esta es:

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

Puede consultar el Wi-Fi HAL heredado para ver cómo se correlaciona con las interfaces AIDL y HIDL: hardware/libhardware_legacy/+/main/include/hardware_legacy/wifi_nan.h .

Implementación

Los fabricantes de dispositivos deben proporcionar soporte tanto de marco como de HAL/firmware:

  • Estructura:
    • código AOSP
    • Habilitar consciente: requiere un indicador de función y un indicador de compilación
  • Compatibilidad con Wi-Fi Aware (NAN) HAL (lo que implica compatibilidad con firmware)

Para implementar esta función, los fabricantes de dispositivos implementan la interfaz Wi-Fi y habilitan dos indicadores de funciones:

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

    WIFI_HIDL_FEATURE_AWARE := true
    
  • En device.mk ubicado en device/<oem>/<device> , modifique la variable de entorno PRODUCT_COPY_FILES para incluir compatibilidad con la función 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 incluye alcance a dispositivos pares que utilizan el protocolo IEEE 802.11mc, también conocido como tiempo de ida y vuelta (RTT). Esta subcaracterística de Wi-Fi Aware está condicionada a que el dispositivo admita la función Wi-Fi RTT, es decir, requiere que el dispositivo admita Wi-Fi Aware y Wi-Fi RTT. Para obtener más detalles, consulte Wi-Fi RTT .

De lo contrario, todo lo necesario para esta función está incluido en AOSP.

El indicador WIFI_HIDL_FEATURE_AWARE se ignora si se especifica el indicador WIFI_HAL_INTERFACE_COMBINATIONS . Para obtener más información, consulte Simultaneidad de múltiples interfaces Wi-Fi .

Aleatorización de MAC

Android requiere que la dirección MAC de Wi-Fi Aware Discovery (NMI) y las interfaces de datos (NDP) sean aleatorias y no sean idénticas a la verdadera dirección MAC del dispositivo. Las direcciones MAC deben ser:

  • Aleatorizado cada vez que se habilita o se vuelve a habilitar Wi-Fi Aware.
  • Cuando Wi-Fi Aware está habilitado, la dirección MAC debe ser aleatoria en un intervalo regular configurado por el parámetro NanConfigRequest.macAddressRandomizationIntervalSec . El marco lo configura de forma predeterminada en 30 minutos.

Suspender y reanudar

En Android 14 y versiones posteriores, Wi-Fi Aware admite la capacidad de que las aplicaciones privilegiadas suspendan y reanuden sesiones de descubrimiento activas (incluidas todas las rutas de datos asociadas con esas sesiones). La compatibilidad con esta capacidad permite que los dispositivos reanuden las sesiones de descubrimiento más rápido y utilicen menos energía porque las sesiones de descubrimiento se pueden suspender.

Si un dispositivo admite esta capacidad de suspensión y reanudación, el firmware suspende la sesión Wi-Fi Aware cuando una aplicación privilegiada suspende la sesión de descubrimiento. Cuando una sesión de descubrimiento está en estado suspendido, el dispositivo no transmite ni recibe ninguna trama 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 recibe ninguna trama Wi-Fi Aware.

Cuando una aplicación privilegiada reanuda una sesión de descubrimiento suspendida, el marco devuelve la sesión a su estado anterior, incluidas todas las sesiones NDP asociadas. Reanudar una sesión de descubrimiento suspendida es más rápido que abrir Wi-Fi Aware y crear una nueva sesión de descubrimiento.

Para admitir la capacidad de suspender y reanudar sesiones de descubrimiento, los fabricantes de dispositivos deben proporcionar soporte de firmware y HAL. Para obtener más información, consulte IWifiNanIface.java .

Los fabricantes de dispositivos pueden utilizar comunicaciones fuera de banda (por ejemplo, BLE) para sincronizar la suspensión y reanudación en varios dispositivos.

Validación

Android proporciona un conjunto de pruebas unitarias, pruebas de integración (ACTS), pruebas de conjunto de pruebas de compatibilidad (CTS) y pruebas de verificación CTS para validar la función Wi-Fi Aware. Wi-Fi Aware también se puede probar utilizando Vendor Test Suite (VTS) .

Pruebas unitarias

Las pruebas del paquete Wi-Fi Aware se ejecutan usando:

Pruebas de servicio:

atest com.android.server.wifi.aware

Pruebas de gerente:

atest android.net.wifi.aware

Pruebas de integración (ACTS)

El conjunto de pruebas acts/sl4a , descrito en tools/test/connectivity/acts_tests/tests/google/wifi/aware/README.md , proporciona pruebas funcionales, de rendimiento y de estrés.

Pruebas del conjunto de pruebas de compatibilidad (CTS)

Utilice pruebas CTS para validar la función Wi-Fi Aware. CTS detecta cuando la función está habilitada e incluye automáticamente las pruebas asociadas.

Las pruebas CTS se pueden activar usando:

atest SingleDeviceTest

Pruebas del verificador CTS

Las pruebas de CTS Verifier validan el comportamiento de Wi-Fi Aware utilizando dos dispositivos: un dispositivo de prueba y un dispositivo en buen estado . Para ejecutar las pruebas, abra CTS Verifier y navegue hasta la sección titulada Pruebas de reconocimiento de Wi-Fi.