Reconhecimento de Wi-Fi

O recurso Wi-Fi Aware adicionado no Android 8.0 permite que dispositivos compatíveis descubram, se conectem e se alcancem (adicionado no Android 9) entre si diretamente usando o protocolo Wi-Fi Aware sem acesso à Internet ou à rede celular. Esse recurso, desenvolvido com base na especificação Wi-Fi Aware da Wi-Fi Alliance (WFA) (versões 2.0, 3.0, 3.1 e 4.0), permite o compartilhamento fácil de dados de alto rendimento entre dispositivos e aplicativos confiáveis ​​que, de outra forma, estariam fora da rede.

Exemplos e fonte

Para usar esse recurso, os fabricantes de dispositivos devem implementar o HAL do fornecedor de Wi-Fi. No Android 14 e versões posteriores, a interface HAL do fornecedor é definida usando AIDL. Para Android 13 e versões anteriores, a interface HAL do fornecedor é definida usando HIDL.

Siga a interface Wi-Fi para utilizar o recurso Wi-Fi Aware. Dependendo de qual interface é implementada, isso é:

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

Você pode consultar o HAL Wi-Fi herdado para ver como ele se correlaciona com as interfaces AIDL e HIDL: hardware/libhardware_legacy/+/main/include/hardware_legacy/wifi_nan.h .

Implementação

Os fabricantes de dispositivos precisam fornecer suporte de estrutura e HAL/firmware:

  • Estrutura:
    • Código AOSP
    • Enable Aware: requer um sinalizador de recurso e um sinalizador de construção
  • Suporte HAL Wi-Fi Aware (NAN) (o que implica suporte de firmware)

Para implementar esse recurso, os fabricantes de dispositivos implementam a interface Wi-Fi e habilitam dois sinalizadores de recurso:

  • Em BoardConfig.mk ou BoardConfig-common.mk localizado em device/<oem>/<device> , adicione o seguinte sinalizador:

    WIFI_HIDL_FEATURE_AWARE := true
    
  • Em device.mk localizado em device/<oem>/<device> , modifique a variável de ambiente PRODUCT_COPY_FILES para incluir suporte para o recurso 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
    

O Wi-Fi Aware inclui dispositivos peer-to-peer usando o protocolo IEEE 802.11mc, também conhecido como Round Trip Time (RTT). Este sub-recurso do Wi-Fi Aware está condicionado ao dispositivo que suporta o recurso Wi-Fi RTT, ou seja, requer que o dispositivo suporte tanto o Wi-Fi Aware quanto o Wi-Fi RTT. Para obter mais detalhes, consulte Wi-Fi RTT .

Caso contrário, tudo o que é necessário para este recurso está incluído no AOSP.

O sinalizador WIFI_HIDL_FEATURE_AWARE será ignorado se o sinalizador WIFI_HAL_INTERFACE_COMBINATIONS for especificado. Para obter mais informações, consulte Simultaneidade de múltiplas interfaces Wi-Fi .

Randomização MAC

O Android exige que o endereço MAC da descoberta Wi-Fi Aware (NMI) e das interfaces de dados (NDPs) sejam randomizados e não sejam idênticos ao verdadeiro endereço MAC do dispositivo. Os endereços MAC devem ser:

  • Randomizado sempre que o Wi-Fi Aware é ativado ou reativado.
  • Quando o Wi-Fi Aware está ativado, o endereço MAC deve ser randomizado em um intervalo regular configurado pelo parâmetro NanConfigRequest.macAddressRandomizationIntervalSec . Isso é configurado pela estrutura por padrão para 30 minutos.

Suspender e retomar

No Android 14 e superior, o Wi-Fi Aware oferece suporte à capacidade de aplicativos privilegiados suspenderem e retomarem sessões de descoberta ativas (incluindo todos os caminhos de dados associados a essas sessões). O suporte a essa capacidade permite que os dispositivos retomem as sessões de descoberta mais rapidamente e usem menos energia porque as sessões de descoberta podem ser suspensas.

Se um dispositivo suportar essa capacidade de suspensão e retomada, o firmware suspenderá a sessão Wi-Fi Aware quando um aplicativo privilegiado suspender a sessão de descoberta. Quando uma sessão de descoberta está em estado suspenso, o dispositivo não transmite nem recebe nenhum quadro dessa sessão, incluindo nenhum NDP ativo nessa sessão. Se todas as sessões de descoberta forem suspensas, o dispositivo não transmite nem recebe nenhum quadro Wi-Fi Aware.

Quando um aplicativo privilegiado retoma uma sessão de descoberta suspensa, a estrutura retorna a sessão ao seu estado anterior, incluindo todas as sessões NDP associadas. Retomar uma sessão de descoberta suspensa é mais rápido do que ativar o Wi-Fi Aware e criar uma nova sessão de descoberta.

Para oferecer suporte à capacidade de suspender e retomar sessões de descoberta, os fabricantes de dispositivos devem fornecer suporte a HAL e firmware. Para obter detalhes, consulte IWifiNanIface.java .

Os fabricantes de dispositivos podem usar comunicações fora de banda (por exemplo, BLE) para sincronizar a suspensão e a retomada em vários dispositivos.

Validação

O Android fornece um conjunto de testes de unidade, testes de integração (ACTS), testes de conjunto de testes de compatibilidade (CTS) e testes de verificação CTS para validar o recurso Wi-Fi Aware. O Wi-Fi Aware também pode ser testado usando o Vendor Test Suite (VTS) .

Testes unitários

Os testes do pacote Wi-Fi Aware são executados usando:

Testes de serviço:

atest com.android.server.wifi.aware

Testes de gerente:

atest android.net.wifi.aware

Testes de integração (ACTS)

O conjunto de testes acts/sl4a , descrito em tools/test/connectivity/acts_tests/tests/google/wifi/aware/README.md , fornece testes funcionais, de desempenho e de estresse.

Testes do conjunto de testes de compatibilidade (CTS)

Use testes CTS para validar o recurso Wi-Fi Aware. O CTS detecta quando o recurso está habilitado e inclui automaticamente os testes associados.

Os testes CTS podem ser acionados usando:

atest SingleDeviceTest

Testes de verificação CTS

Os testes do CTS Verifier validam o comportamento do Wi-Fi Aware usando dois dispositivos: um dispositivo de teste e um dispositivo em bom estado . Para executar os testes, abra o CTS Verifier e navegue até a seção intitulada Testes de reconhecimento de Wi-Fi.