Để hỗ trợ API Lớp trừu tượng phần cứng (HAL) USB, nhà sản xuất thiết bị phải triển khai phiên bản HAL USB tương ứng. Để sử dụng USB HAL API, bạn cần có một ứng dụng đặc quyền của hệ thống.
USB HAL hỗ trợ API đặt lại cổng USB, yêu cầu USB HAL v2.0 và có sẵn cho các thiết bị chạy Android 13 trở lên. Sử dụng API này để đặt lại kết nối USB với máy chủ đã kết nối.
Tìm HAL USB và các API của nó
Nhà sản xuất thiết bị phải triển khai USB HAL để hỗ trợ các API.
Để tìm cách triển khai mặc định của USB HAL, hãy sử dụng các đường dẫn sau:
Phiên bản AIDL (mới nhất):
<aosp>/hardware/interfaces/usb/gadget/1.2/default/
Để tìm tệp tiêu đề giao diện phần cứng, hãy sử dụng đường dẫn sau:
Phiên bản AIDL (mới nhất):
<aosp>/hardware/interfaces/usb/gadget/1.2/IUsbGadget.hal
Để tìm các API, hãy sử dụng đường dẫn sau để định vị các API trong tệp tiêu đề AIDL. Đường dẫn này cũng là điểm truy cập Khung Android cho API:
android.hardware.usb
:<aosp>/core/java/android/hardware/usb
Triển khai USB HAL
Để làm việc với API HAL USB, hãy triển khai:
Phiên bản HAL USB chính xác. Không cần triển khai giao diện người dùng hệ thống.
USB AIDL HAL cho API Đặt lại cổng USB bằng cách đặt lại kết nối USB giữa thiết bị đích và máy chủ.
Tìm hiểu về cấu trúc USB HAL API
USB HAL API được tích hợp vào gói android.hardware.usb
và tận dụng USB HAL để tương tác với thiết bị. Thông tin chi tiết về cấu trúc của API được cung cấp trong hình dưới đây.
API đặt lại cổng USB
Hình sau đây minh hoạ quy trình mã của API Đặt lại cổng USB trong một khung, bao gồm cả việc triển khai HAL USB.
Hình 1.1 Quy trình mã API mẫu về việc cắm lại cổng USB.
Xác thực cách triển khai
Mỗi phiên bản HAL USB và API tương ứng đều được liên kết với một trường hợp kiểm thử trong Bộ kiểm thử nhà cung cấp (VTS).
API đặt lại cổng USB
Để tìm trường hợp kiểm thử VTS cho API Đặt lại cổng USB, hãy truy cập vào:
<aosp>/test/vts-testcase/hal/usb/gadget/V1_2/
Trường hợp kiểm thử VTS cho USB HAL v1.2 là một trường hợp kiểm thử phía máy chủ mà bạn có thể sử dụng để thực hiện các thao tác này.
Để gọi API đặt lại cổng USB, hãy sử dụng lệnh
adb shell
(#svc usb resetUsbPort
).Kiểm tra để đảm bảo thiết bị đang được kiểm tra (DUT) có thể ngắt kết nối rồi kết nối lại.