יישום HAL USB

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

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

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

HAL וטרבל

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

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

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

יישום

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