הטמעת USB HAL

המהלכים לשחרור 8.0 אנדרואיד הטיפול של USB פקודה מתוך init סקריפטים לתוך daemon USB מובנית בתצורה טובה ואמינות קוד. עבור תצורת פונקציה גאדג'ט, init סקריפטים (טריגרים רכוש) משמשים לביצוע פעולות גאדג'ט ספציפי להתקן.

במהדורות קודמות, תצורות מכשיר ספציפי אלה הושגו באמצעות מכשיר ספציפי init סקריפטים (באמצעות טריגרים רכוש). מעבר לתכנון שכבת הפשטה של ​​חומרה (HAL) מביא ליישום נקי בהרבה הפותר את הבעיות הבאות:

  1. פעולות כגון כתיבה לצמתי sysfs של הליבה עלולות להיכשל אך לא להיות מופצות בחזרה לקוד ה-frameswork שקובע את טריגר המאפיין. כתוצאה מכך, מסגרות מניחות בטעות שהמבצעים הצליחו למרות שנכשלו בשקט.
  2. init יש תסריטים למספר מצומצם של פעולות שיכולים להיות מוצא להורג.

מהדורת אנדרואיד 12 מוסיפה תמיכה ב-USB Gadget HAL עבור דגמי בקרת רשת (NCM) וקריאות API המחזירות גם את מספר גרסת HAL וגם את מהירות ה-USB. לקבלת מידע נוסף על ה- API שיחות זמין דרך HAL USB, לראות android.hardware.usb סיכום החבילה .

HAL וטרבל

The-ספציפי למכשיר init scripts שמש חילוף עבור שכבות HAL לבצע פעולות USB למכשיר ספציפי. USB (דרך ADB) הוא ממשק ראשי לאיתור בעיות במערכת. קיום דמון מקורי לביצוע תצורת USB מבטל את התלות בקוד המסגרת כך שגם אם המסגרת קורסת USB אמור לפעול.

תחת טרבל המודל גם בגרסת Android 8.0, כל שכבות HAL מבודדים משירותי מערכת נדרשים לרוץ דמונים האם שלהם. זה מבטל את הדרישה להחזיק דמון USB בלעדי שכן שכבת HAL משמשת יפה כמו דמון USB.

יישום ברירת המחדל של HAL מטפל בכל מכשירי טרום אנדרואיד 8.0. לכן, לא תהיה עבודה ספציפית למכשיר עבור מכשירי טרום אנדרואיד 8.0. אנדרואיד 8.0 משתמשת בממשק HAL כדי לשאול את המצב של יציאות USB ולבצע החלפת תפקידי נתונים וכוח.

יישום

יש להטמיע ממשק USB HAL חדש בכל מכשיר המופעל ב-Android 8.0. יישום ברירת המחדל צריך לטפל במכשירים טרום אנדרואיד 8.0. יישום ברירת המחדל הוא מספק אם ההתקן ישתמש dual_role_usb בכיתת מעמד יציאה מסוג C דו"ח. ייתכן שיידרשו שינויים טריוויאליים בסקריפטים של USB ספציפיים למכשיר כדי להעביר את הבעלות על צמתי ה-typc-c למערכת.