Aby obsługiwać interfejs API HAL (Hardware Abstraction Layer), producenci urządzeń muszą zaimplementować odpowiednią wersję interfejsu HAL USB. Aby korzystać z interfejsu USB HAL API, wymagana jest aplikacja z przywilejami 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 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, użyj 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 HAL USB. Nie musisz wdrażać interfejsu użytkownika systemu.
USB AIDL HAL dla interfejsu USB Port Reset API, 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 dotyczące architektury interfejsu API znajdziesz na rysunku poniżej.
Port USB Reset API
Rysunek poniżej przedstawia przepływ kodu interfejsu API resetowania portu USB w ramach frameworku, w tym implementację interfejsu HAL USB.
Rysunek 1.1. Przykładowy przepływ kodu interfejsu API do ponownego zamykania 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).
Port USB Reset API
Aby znaleźć przypadek testowy VTS 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 USB Port Reset API, użyj polecenia
adb shell
(#svc usb resetUsbPort
).Sprawdź, czy urządzenie testowane (DUT) może się odłączyć i połączyć ponownie.