API zum Zurücksetzen des USB-Ports

Zur Unterstützung der HAL-API (USB Hardware Extraction Layer) müssen Gerätehersteller die entsprechende USB-HAL-Version implementieren. Für die Verwendung der USB HAL API ist eine App mit Systemberechtigungen erforderlich.

Die USB HAL unterstützt die USB Port Reset API, für die USB HAL v2.0 erforderlich ist. Sie ist auf Geräten mit Android 13 und höher verfügbar. Setzen Sie mit dieser API die USB-Verbindung mit dem verbundenen Host zurück.

USB HAL und zugehörige APIs finden

Gerätehersteller müssen die USB HAL implementieren, um die APIs zu unterstützen.

  1. Die Standardimplementierung des USB HAL finden Sie unter den folgenden Pfaden:

    Versions-AIDL (aktuell): <aosp>/hardware/interfaces/usb/gadget/1.2/default/

  2. Die Headerdatei der Hardwareschnittstelle finden Sie unter folgendem Pfad:

    Version AIDL (aktuell): <aosp>/hardware/interfaces/usb/gadget/1.2/IUsbGadget.hal

  3. Sie finden die APIs unter dem folgenden Pfad in der AIDL-Headerdatei. Dieser Pfad ist auch der Einstiegspunkt des Android-Frameworks für die API:

    android.hardware.usb: <aosp>/core/java/android/hardware/usb

USB HAL implementieren

Implementieren Sie Folgendes, um mit der USB HAL API zu arbeiten:

  1. Korrekte USB HAL-Version. Eine System-UI-Implementierung ist nicht erforderlich.

  2. USB AIDL HAL für die USB Port Reset API, um die USB-Verbindung zwischen dem Zielgerät und dem Host zurückzusetzen.

USB HAL API-Architektur

Die USB HAL API ist in das android.hardware.usb-Paket eingebunden und nutzt den USB HAL, um mit dem Gerät zu interagieren. Details zur Architektur der API finden Sie in der Abbildung unten.

USB Port Reset API

Die folgende Abbildung veranschaulicht den Codefluss der USB Port Reset API in einem Framework, einschließlich der Implementierung der USB HAL.

Beispiel für Codefluss der USB Port Reseat API

Abbildung 1.1: Beispiel für den API-Codefluss zum Neusetzen des USB-Anschlusses

Implementierung validieren

Jede USB-HAL-Version und die entsprechende API ist einem Testlauf in der Vendor Test Suite (VTS) zugeordnet.

USB Port Reset API

Den VTS-Testfall für die USB Port Reset API finden Sie hier:

<aosp>/test/vts-testcase/hal/usb/gadget/V1_2/

Der VTS-Testfall für USB HAL v1.2 ist ein hostseitiger Testfall, mit dem Sie diese Aktionen ausführen können.

  • Verwenden Sie den Befehl adb shell (#svc usb resetUsbPort), um die USB Port Reset API aufzurufen.

  • Prüfen Sie, ob die Verbindung zum Testgerät getrennt und wiederhergestellt werden kann.