Aby obsługiwać interfejs USB Hardware Abstraction Layer (HAL) API, producenci urządzeń muszą wdrożyć odpowiednią wersję USB HAL. Aby korzystać z interfejsu USB HAL API, wymagana jest aplikacja z uprawnieniami systemowymi.
Interfejs HAL USB obsługuje interfejs API resetowania portu USB, który wymaga interfejsu HAL USB w wersji 2.0 i jest dostępny na urządzeniach z Androidem 13 lub nowszym. Użyj tego interfejsu API, aby zresetować połączenie USB z podłączonym hostem.
Znajdowanie HAL USB i jego interfejsów API
Aby obsługiwać interfejsy API, producenci urządzeń muszą wdrożyć warstwę HAL USB.
Aby znaleźć domyślną implementację USB HAL, użyj tych ścieżek:
Wersja AIDL (najnowsza):
<aosp>/hardware/interfaces/usb/gadget/1.2/default/
Aby znaleźć plik nagłówkowy interfejsu sprzętowego, użyj tej ścieżki:
Wersja AIDL (najnowsza):
<aosp>/hardware/interfaces/usb/gadget/1.2/IUsbGadget.hal
Aby znaleźć interfejsy API, użyj tej ścieżki, aby zlokalizować je w pliku nagłówkowym AIDL. Ta ścieżka jest też punktem wejściowym interfejsu API w Android Framework:
android.hardware.usb
:<aosp>/core/java/android/hardware/usb
Implementacja interfejsu HAL USB
Aby korzystać z interfejsu USB HAL API, zaimplementuj:
Prawidłowa wersja USB HAL. Nie musisz implementować interfejsu systemu.
USB AIDL HAL dla interfejsu USB Port Reset API przez zresetowanie połączenia USB między urządzeniem docelowym a hostem.
Architektura interfejsu USB HAL API
Interfejs USB HAL API jest wbudowany w pakiet android.hardware.usb
i wykorzystuje USB HAL do interakcji z urządzeniem. Szczegóły architektury interfejsu API znajdziesz na ilustracji poniżej.
USB Port Reset API
Na poniższym rysunku przedstawiono przepływ kodu interfejsu USB Port Reset API w ramach platformy, w tym implementację USB HAL.
Rysunek 1.1. Przykładowy przepływ kodu interfejsu API ponownego podłączenia portu USB.
Sprawdzanie poprawności implementacji
Każda wersja USB HAL i odpowiadający jej interfejs API są powiązane z przypadkiem testowym w zestawie testów dostawcy (VTS).
USB Port Reset API
Aby znaleźć przypadek testowy VTS dla interfejsu USB Port Reset API, otwórz:
<aosp>/test/vts-testcase/hal/usb/gadget/V1_2/
Przypadek testowy VTS dla USB HAL w wersji 1.2 to przypadek testowy po stronie hosta, którego możesz użyć do wykonania tych działań.
Aby wywołać interfejs USB Port Reset API, użyj polecenia
adb shell
(#svc usb resetUsbPort
).Sprawdź, czy testowane urządzenie może odłączyć się i połączyć ponownie.