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