Для поддержки API аппаратного уровня абстракции USB (HAL) производители устройств должны реализовать соответствующую версию USB HAL. Для использования API USB HAL требуется приложение с системными привилегиями.
USB HAL поддерживает API сброса USB-порта, для работы которого требуется USB HAL версии 2.0, и который доступен для устройств под управлением Android 13 и выше. Используйте этот API для сброса USB-соединения с подключенным хостом.
Найдите USB HAL и его API.
Производители устройств должны внедрить USB HAL для поддержки API.
Чтобы найти реализацию USB HAL по умолчанию, используйте следующие пути:
Версия AIDL (последняя):
<aosp>/hardware/interfaces/usb/gadget/1.2/default/Чтобы найти заголовочный файл аппаратного интерфейса, используйте следующий путь:
Версия AIDL (последняя):
<aosp>/hardware/interfaces/usb/gadget/1.2/IUsbGadget.halЧтобы найти API, используйте следующий путь для поиска API в заголовочном файле AIDL. Этот путь также является точкой входа в Android Framework для этих API:
android.hardware.usb:<aosp>/core/java/android/hardware/usb
Реализуйте USB HAL.
Для работы с API USB HAL необходимо реализовать следующее:
Правильная версия USB HAL. Реализация пользовательского интерфейса системы не требуется.
USB AIDL HAL для API сброса USB-порта, осуществляемый путем сброса USB-соединения между целевым устройством и хостом.
Разберитесь в архитектуре API USB HAL.
API USB HAL встроен в пакет android.hardware.usb и использует USB HAL для взаимодействия с устройством. Подробности об архитектуре API приведены на рисунке ниже.
API сброса USB-порта
На следующем рисунке показана последовательность выполнения кода API сброса USB-порта в рамках фреймворка, включая реализацию USB HAL.

Рисунок 1.1. Пример последовательности выполнения кода API для повторной установки USB-порта.
Проверьте правильность вашей реализации.
Каждая версия USB HAL и соответствующий ей API связаны с тестовым примером в наборе тестов поставщика (VTS).
API сброса USB-порта
Чтобы найти тестовый пример VTS для API сброса USB-порта, перейдите по ссылке:
<aosp>/test/vts-testcase/hal/usb/gadget/V1_2/
Тестовый пример VTS для USB HAL версии 1.2 — это тестовый пример на стороне хоста, который можно использовать для выполнения этих действий.
Для вызова API сброса USB-порта используйте команду
adb shell(#svc usb resetUsbPort).Убедитесь, что тестируемое устройство (DUT) может отключаться и подключаться повторно.