Interfejs API resetowania portu USB

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.

  1. Aby znaleźć domyślną implementację interfejsu USB HAL, skorzystaj z tych ścieżek:

    Wersja AIDL (najnowsza): <aosp>/hardware/interfaces/usb/gadget/1.2/default/

  2. 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

  3. 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:

  1. Prawidłowa wersja interfejsu USB HAL. Nie wymaga implementacji interfejsu systemu.

  2. 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.

Przykładowy kod interfejsu API do ponownego podłączenia portu USB

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ć.