יישום התייחסות

אנו מספקים יישום ייחוס עבור AIDL VHAL. שרשור השירות הראשי מיושם ב- VehicleService.cpp . יישום ממשק VHAL נמצא בכתובת DefaultVehicleHal.cpp .

יישום ההתייחסות מבוסס על ארכיטקטורה דו-שכבתית. בשכבה העליונה, DefaultVehicleHal , מיישמת ממשק VHAL AIDL ומספקת לוגיקה גנרית של VHAL לכל התקני החומרה. בשכבה התחתונה, FakeVehicleHardware , מיישמת את ממשק IVehicleHardware . מחלקה זו מדמה את היגיון ה-VHAL של אינטראקציה עם חומרה או אוטובוס של כלי רכב, והיא ספציפית למכשיר. באופן אופציונלי, ספקים יכולים להתאים את אותה ארכיטקטורה, לעשות שימוש חוזר באותה מחלקה DefaultVehicleHal (להרחיב אותה כדי להחליף שיטה), ולספק יישום IVehicleHardware משלהם.

יישום התייחסות VHAL
איור 1. יישום התייחסות VHAL

DefaultVehicleHal מכיל את ההיגיון הבא, הנחשב לגנרי ויכול לחול על כל מימוש VHAL.

  • מיישם את ממשק IVehicle .
  • מבצע בדיקות קלט בסיסיות, כולל בדיקת זיהויים כפולים.
  • מקצה אובייקטי לקוח (לדוגמה, GetValuesClient ) עבור כל פעולה עבור כל לקוח מקשר, ומוסיף כל אחד מהם למאגר גלובלי.
  • מנהלת לוגיקה של שיחות חוזרות אסינכרוניות, כגון הוספת בקשה ממתינה למאגר בקשות ממתינות. פותר בקשות ממתינות כאשר אנו מקבלים את התוצאות או מחזיר שגיאה כאשר אחת מהבקשות הממתינות פסק זמן.
  • מסדרת ומבטלת סדרה LargeParcelable (ראה ParcelableUtils.h ).
  • מנהל מנוי (ראה SubscriptionManager.h ).
  • בודק הרשאות. (ראה את הפונקציות checkReadPermission ו- checkWritePermission ).
  • קורא מעת לעת IVehicleHardware.checkHealth ושולח אותות פעימות לב (ראה את הפונקציה checkHealth ).

IVehicleHardware הוא ממשק גנרי המשמש לייצוג יישום ספציפי לחומרה של VHAL. הטמעת הייחוס עבור IVehicleHardware היא FakeVehicleHardware , המשתמשת במפה בזיכרון כדי לאחסן את ערך הנכס ואינה מתקשרת עם אוטובוס רכב בפועל. זה נועד לפעול על אמולטור ואין לו תלות ספציפית לחומרה. מימושים של ספקים אינם רשאים להשתמש בו כפי שהם וחייבים להוסיף לוגיקה ספציפית לאוטובוסים לרכב.

באנדרואיד 14, FakeVehicleHardware קורא את תצורת המאפיינים הנתמכים בזמן ריצה במהלך האתחול מהתיקייה /vendor/etc/automotive/vhalconfig/ של המכשיר, המכילה קובץ תצורה בסגנון JSON. עיין בקובץ העזר VHAL README עבור פורמט קובץ התצורה ותוכן קובץ התצורה.

FakeVehicleHardware תומכת גם בעקיפה של קבצי תצורה לבדיקה. אם מאפיין המערכת persist.vendor.vhal_init_value_override מוגדר, הוא משתמש בקובץ התצורה מהתיקייה /vendor/etc/automotive/vhaloverride/ במכשיר כדי לעקוף את התצורה הקיימת. מימוש ספק יכול להשתמש בגישה דומה כך שתצורת המאפיינים הנתמכים ב-VHAL אינה מקודדת וניתן להחליט באופן דינמי בזמן ההתחלה. תצורת מאפיין הרכב חייבת להיות סטטית לאחר הפעלת המכשיר.