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