API de redefinição de porta USB

Para oferecer suporte à API USB Hardware Abstraction Layer (HAL), os fabricantes de dispositivos devem implementar a versão USB HAL correspondente. Para usar a API USB HAL, é necessário um aplicativo com privilégios de sistema.

O USB HAL oferece suporte à API USB Port Reset, que requer USB HAL v2.0 e está disponível para dispositivos com Android 13 e superior. Use esta API para redefinir a conexão USB com o host conectado.

Encontre o USB HAL e suas APIs

Os fabricantes de dispositivos devem implementar o USB HAL para oferecer suporte às APIs.

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

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

  2. Para localizar 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 localizar as APIs, use o caminho a seguir para localizar as APIs no arquivo de cabeçalho AIDL. Este caminho também é o ponto de entrada do Android Framework para a API:

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

Implementar o HAL USB

Para trabalhar com a API USB HAL, implemente:

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

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

Entenda a arquitetura da API USB HAL

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

API de redefinição de porta USB

A figura a seguir ilustra o fluxo de código da API de redefinição de porta USB em uma estrutura, incluindo a implementação do USB HAL.

Exemplo de fluxo de código da API de reposicionamento de porta USB

Figura 1.1 Exemplo de fluxo de código da API de reposicionamento de porta USB.

Valide sua implementação

Cada versão USB HAL e sua API correspondente estão associadas a um caso de teste no Vendor Test Suite (VTS).

API de redefinição de porta USB

Para encontrar o caso de teste VTS para a API de redefinição de porta USB, 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 lado do host que você pode usar para executar essas ações.

  • Para invocar a API de redefinição de porta USB, use o comando adb shell ( #svc usb resetUsbPort ).

  • Confirme se o dispositivo em teste (DUT) pode ser desconectado e reconectado.