API USB Port Reset

Para oferecer suporte à API HAL (camada de abstração de hardware USB), os fabricantes de dispositivos precisam implementar a versão correspondente da HAL USB. Para usar a API USB HAL, é necessário um app com privilégios de sistema.

O HAL do USB oferece suporte à API USB Port Reset, que exige o HAL do USB v2.0 e está disponível para dispositivos com o Android 13 e versões mais recentes. Use essa API para redefinir a conexão USB com o host conectado.

Encontrar o HAL USB e as APIs dele

Os fabricantes de dispositivos precisam implementar a HAL USB para oferecer suporte às APIs.

  1. Para encontrar a implementação padrão do HAL USB, use os seguintes caminhos:

    Versão AIDL (mais recente): <aosp>/hardware/interfaces/usb/gadget/1.2/default/

  2. Para encontrar o arquivo de cabeçalho da interface de hardware, use o seguinte caminho:

    Versão AIDL (mais recente): <aosp>/hardware/interfaces/usb/gadget/1.2/IUsbGadget.hal

  3. Para encontrar as APIs, use o seguinte caminho para localizá-las no arquivo de cabeçalho AIDL. Esse caminho também é o ponto de entrada do framework do Android para a API:

    android.hardware.usb: <aosp>/core/java/android/hardware/usb

Implementar o HAL de USB

Para trabalhar com a API USB HAL, implemente:

  1. Versão correta da HAL do USB. Nenhuma implementação da interface do sistema é necessária.

  2. HAL de USB AIDL para a API USB PortReset redefinindo a conexão USB entre o dispositivo de destino e o host.

Entender a arquitetura da API HAL do USB

A API USB HAL está integrada ao pacote android.hardware.usb e usa a HAL USB para interagir com o dispositivo. Detalhes sobre a arquitetura da API são fornecidos na figura abaixo.

API USB Port Reset

A figura a seguir ilustra o fluxo de código da API USB Port Reset em um framework, incluindo a implementação do HAL USB.

Exemplo de fluxo de código da API USB Port Reseat

Figura 1.1 Exemplo de fluxo de código da API USB Port Reseat.

Validar sua implementação

Cada versão da HAL USB e a API correspondente são associadas a um caso de teste no Conjunto de teste de fornecedor (VTS).

API USB Port Reset

Para encontrar o caso de teste do VTS para a API USB Port Reset, acesse:

<aosp>/test/vts-testcase/hal/usb/gadget/V1_2/

O caso de teste VTS para USB HAL v1.2 é um caso de teste do host que pode ser usado para realizar essas ações.

  • Para invocar a API USB Port Reset, use o comando adb shell (#svc usb resetUsbPort).

  • Confirme se o dispositivo em teste (DUT, na sigla em inglês) pode se desconectar e se reconectar.