API USB Port Reset

Para oferecer suporte à API da camada de abstração de hardware (HAL) 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.

A HAL USB é compatível com a API de redefinição da porta USB, que exige a HAL 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 a HAL USB e as APIs dela

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

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

    AIDL de versão (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:

    AIDL de versão (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 a HAL de USB

Para trabalhar com a API HAL USB, implemente:

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

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

Entender a arquitetura da API HAL USB

A API USB HAL é integrada ao pacote android.hardware.usb e usa a HAL USB para interagir com o dispositivo. Confira detalhes sobre a arquitetura da API 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 da 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 estão associadas a um caso de teste no Vendor Test Suite (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 do VTS para USB HAL v1.2 é um caso de teste do lado 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) pode ser desconectado e reconectado.