כדי לתמוך ב-USB Hardware Abstraction Layer (HAL) API, יצרני המכשירים צריכים להטמיע את גרסת ה-USB HAL המתאימה. כדי להשתמש ב-USB HAL API, נדרשת אפליקציה עם הרשאות מערכת.
ה-HAL של USB תומך ב-API של איפוס יציאת USB, שנדרש ל-USB HAL v2.0 וזמין למכשירים עם Android 13 ומעלה. אפשר להשתמש ב-API הזה כדי לאפס את חיבור ה-USB עם המארח המחובר.
איתור ה-HAL של ה-USB וממשקי ה-API שלו
יצרני מכשירים חייבים להטמיע את USB HAL כדי לתמוך בממשקי ה-API.
כדי למצוא את הטמעת ברירת המחדל של USB HAL, משתמשים בנתיבים הבאים:
Version AIDL (הגרסה האחרונה):
<aosp>/hardware/interfaces/usb/gadget/1.2/default/
כדי למצוא את קובץ הכותרת של ממשק החומרה, משתמשים בנתיב הבא:
Version 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, צריך להטמיע את:
תיקון גרסת ה-HAL של ה-USB. אין צורך בהטמעה של ממשק המשתמש של המערכת.
USB AIDL HAL עבור ה-API לאיפוס יציאת ה-USB על ידי איפוס חיבור ה-USB בין מכשיר היעד לבין המארח.
הסבר על ארכיטקטורת ה-API של USB HAL
ממשק ה-API של USB HAL מוטמע בחבילה android.hardware.usb
ומשתמש ב-USB HAL כדי ליצור אינטראקציה עם המכשיר. פרטים על הארכיטקטורה של ה-API מופיעים באיור שלמטה.
USB Port Reset API
באיור הבא מוצג תהליך הקוד של USB Port Reset API במסגרת, כולל ההטמעה של USB HAL.
איור 1.1 דוגמה לזרימת קוד של API להוצאה והכנסה מחדש של יציאת USB.
אימות ההטמעה
כל גרסה של USB HAL וה-API התואם שלה משויכים לתרחיש בדיקה ב-Vendor Test Suite (VTS).
USB Port Reset API
כדי למצוא את תרחיש הבדיקה של 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) יכול להתנתק ולהתחבר מחדש.