Wi-Fi Aware

La fonctionnalité Wi-Fi Aware ajoutée dans Android 8.0 permet aux appareils compatibles de se détecter, de se connecter et de se connecter les uns aux autres (ajoutés à Android 9) directement à l'aide du protocole Wi-Fi Aware, sans accès à Internet ni à un réseau mobile. Cette fonctionnalité, basée sur la spécification Wi-Fi Aware (versions 2.0, 3.0, 3.1 et 4.0) de la Wi-Fi Alliance (WFA), permet de partager facilement des données à haut débit entre les appareils et les applications approuvés qui ne sont pas connectés au réseau.

Exemples et source

Pour utiliser cette fonctionnalité, les fabricants d'appareils doivent implémenter le HAL du fournisseur Wi-Fi. Sous Android 14 et versions ultérieures, l'interface HAL du fournisseur est définie à l'aide d'AIDL. Pour Android 13 et versions antérieures, l'interface HAL du fournisseur est définie à l'aide de HIDL.

Suivez les instructions de l'interface Wi-Fi pour utiliser la fonctionnalité Wi-Fi Aware. En fonction de l'interface implémentée, plusieurs options s'offrent à vous:

  • AIDL: hardware/interfaces/wifi/aidl
  • HIDL: hardware/interfaces/wifi/1.2 ou version ultérieure

Vous pouvez vous reporter à l'ancien HAL Wi-Fi pour voir comment il se rapporte aux interfaces AIDL et HIDL : hardware/libhardware_legacy/+/main/include/hardware_legacy/wifi_nan.h.

Implémentation

Les fabricants d'appareils doivent fournir une compatibilité avec le framework et le HAL/micrologiciel:

  • Framework :
    • Code AOSP
    • Activer Aware: nécessite à la fois un flag de fonctionnalité et un indicateur de compilation
  • Compatibilité avec le HAL Wi-Fi Aware (NAN) (ce qui implique la compatibilité avec le micrologiciel)

Pour implémenter cette fonctionnalité, les fabricants d'appareils implémentent l'interface Wi-Fi et activent deux indicateurs de fonctionnalité:

  • Dans BoardConfig.mk ou BoardConfig-common.mk situé dans device/<oem>/<device>, ajoutez l'indicateur suivant:

    WIFI_HIDL_FEATURE_AWARE := true
    
  • Dans device.mk situé dans device/<oem>/<device>, modifiez la variable d'environnement PRODUCT_COPY_FILES pour inclure la prise en charge de la fonctionnalité 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 inclut la mesure de la distance entre les appareils pairs à l'aide du protocole IEEE 802.11mc, également appelé temps de trajet aller-retour (RTT). Cette sous-fonctionnalité de Wi-Fi Aware est conditionnée à la compatibilité de l'appareil avec la fonctionnalité Wi-Fi RTT. Autrement dit, l'appareil doit être compatible à la fois avec Wi-Fi Aware et Wi-Fi RTT. Pour en savoir plus, consultez la section RTT Wi-Fi.

Sinon, tout ce qui est requis pour cette fonctionnalité est inclus dans AOSP.

L'option WIFI_HIDL_FEATURE_AWARE est ignorée si WIFI_HAL_INTERFACE_COMBINATIONS est spécifié. Pour en savoir plus, consultez la section Simultanéité multi-interface Wi-Fi.

Sélection aléatoire de l'adresse MAC

Android exige que l'adresse MAC de la découverte Wi-Fi Aware (NMI) et des interfaces de données (NDP) soit aléatoire et ne soit pas identique à l'adresse MAC réelle de l'appareil. Les adresses MAC doivent être:

  • Il est généré de manière aléatoire chaque fois que Wi-Fi Aware est activé ou réactivé.
  • Lorsque Wi-Fi Aware est activé, l'adresse MAC doit être générée de manière aléatoire à intervalles réguliers configurés par le paramètre NanConfigRequest.macAddressRandomizationIntervalSec. Par défaut, le framework le configure sur 30 minutes.

Suspendre et reprendre

Dans Android 14 et les versions ultérieures, Wi-Fi Aware permet aux applications privilégiées de suspendre et de reprendre les sessions de découverte actives (y compris tous les chemins de données associés à ces sessions). La prise en charge de cette fonctionnalité permet aux appareils de reprendre les sessions de découverte plus rapidement et de consommer moins d'énergie, car les sessions de découverte peuvent être suspendues.

Si un appareil prend en charge cette fonctionnalité de suspension et de reprise, le micrologiciel suspend la session Wi-Fi Aware lorsqu'une application privilégiée suspend la session de découverte. Lorsqu'une session de découverte est suspendue, l'appareil ne transmet ni ne reçoit de trames pour cette session, y compris les NDP actifs de cette session. Si toutes les sessions de découverte sont suspendues, l'appareil ne transmet ni ne reçoit aucun frame Wi-Fi Aware.

Lorsqu'une application privilégiée reprend une session de découverte suspendue, le framework rétablit la session dans son état précédent, y compris toutes les sessions NDP associées. Il est plus rapide de reprendre une session de découverte suspendue que d'activer Wi-Fi Aware et de créer une session de découverte.

Pour permettre la suspension et la reprise des sessions de découverte, les fabricants d'appareils doivent fournir une prise en charge du HAL et du micrologiciel. Pour plus d'informations, consultez IWifiNanIface.java.

Les fabricants d'appareils peuvent utiliser des communications hors bande (par exemple, BLE) pour synchroniser la suspension et la reprise sur plusieurs appareils.

Validation

Android fournit un ensemble de tests unitaires, de tests Compatibility Test Suite (CTS) et de tests CTS Verifier pour valider la fonctionnalité Wi-Fi Aware. Wi-Fi Aware peut également être testé à l'aide de la suite de test de fournisseur (VTS).

Tests unitaires

Les tests du package Wi-Fi Aware sont exécutés à l'aide des éléments suivants:

Tests de service:

atest com.android.server.wifi.aware

Tests du responsable:

atest android.net.wifi.aware

Tests de la suite de tests de compatibilité (CTS)

Utilisez des tests CTS pour valider la fonctionnalité Wi-Fi Aware. CTS détecte quand la fonctionnalité est activée et inclut automatiquement les tests associés.

Les tests CTS peuvent être déclenchés à l'aide des éléments suivants:

atest SingleDeviceTest

Tests du vérificateur CTS

Les tests du vérificateur CTS valident le comportement de la fonctionnalité Wi-Fi Aware à l'aide de deux appareils: un appareil de test et un appareil connu comme correct. Pour exécuter les tests, ouvrez l'outil de vérification CTS et accédez à la section intitulée Tests de reconnaissance du Wi-Fi.