Для поддержки API уровня абстракции оборудования USB (HAL) производители устройств должны реализовать соответствующую версию USB HAL. Для использования USB HAL API требуется приложение с привилегиями системы.
USB HAL поддерживает API сброса порта USB, для которого требуется USB HAL v2.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
Для работы с USB HAL API реализуйте:
Правильная версия USB HAL. Реализация системного пользовательского интерфейса не требуется.
USB AIDL HAL для API сброса порта USB путем сброса USB-соединения между целевым устройством и хостом.
Понимание архитектуры USB HAL API
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 v1.2 — это тестовый пример на стороне хоста, который можно использовать для выполнения этих действий.
Чтобы вызвать API сброса USB-порта, используйте команду
adb shell
(#svc usb resetUsbPort
).Убедитесь, что тестируемое устройство (DUT) может отключиться и снова подключиться.