Aby obsługiwać interfejs API HAL (Hardware Abstraction Layer), producenci urządzeń muszą zaimplementować odpowiednią wersję interfejsu HAL USB. Do korzystania 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 połączonym hostem.
Znajdowanie interfejsu HAL USB i jego interfejsów API
Producenci urządzeń muszą zaimplementować interfejs HAL USB, aby obsługiwać interfejsy API.
Aby znaleźć domyślną implementację interfejsu USB HAL, skorzystaj z tych ścieżek:
Wersja AIDL (najnowsza):
<aosp>/hardware/interfaces/usb/gadget/1.2/default/
Aby znaleźć plik nagłówka 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 do ich znalezienia w pliku nagłówka AIDL. Ta ścieżka jest też punktem wejścia interfejsu API do Android Framework:
android.hardware.usb
:<aosp>/core/java/android/hardware/usb
Zaimplementuj interfejs HAL USB
Aby korzystać z interfejsu USB HAL API, zaimplementuj:
Prawidłowa wersja interfejsu USB HAL. Nie wymaga implementacji interfejsu systemu.
interfejs HAL USB AIDL dla interfejsu API resetowania portu USB, który resetuje połączenie USB między urządzeniem docelowym a hostem;
Architektura interfejsu USB HAL API
Interfejs API HAL USB jest wbudowany w pakiet android.hardware.usb
i korzysta z interfejsu HAL USB do interakcji z urządzeniem. Szczegóły architektury interfejsu API znajdziesz na rysunku poniżej.
Interfejs API resetowania portu USB
Na ilustracji poniżej przedstawiono przepływ kodu interfejsu USB Port Reset API w ramach platformy, w tym implementację interfejsu USB HAL.
Rysunek 1.1. Przykładowy przepływ kodu interfejsu API do ponownego zamocowania portu USB.
Sprawdzanie poprawności implementacji
Każda wersja interfejsu HAL USB i odpowiadający jej interfejs API są powiązane z przypadkiem testowym w pakiecie testów dostawcy (VTS).
Interfejs API resetowania portu USB
Aby znaleźć przypadek testowy VTS dla interfejsu USB Port Reset API, wykonaj te czynności:
<aosp>/test/vts-testcase/hal/usb/gadget/V1_2/
Przypadek testowy VTS dla interfejsu USB HAL w wersji 1.2 to przypadek testowy po stronie hosta, którego możesz użyć do wykonywania tych czynności.
Aby wywołać interfejs API Reset USB Port, użyj polecenia
adb shell
(#svc usb resetUsbPort
).Sprawdź, czy urządzenie testowane (DUT) może się odłączyć i ponownie połączyć.