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.
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/
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
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:
Versão correta do USB HAL. Nenhuma implementação de interface do usuário do sistema é necessária.
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.
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.