מדריך להעברה של HIDL VHAL

כדי להעביר הטמעה קיימת של VHAL ב-HIDL ל-VHAL ב-AIDL, משתמשים במבנה של הטמעת העזר של AIDL כדי להטמיע את הממשק IVehicleHardware.

אם ההטמעה הקיימת של HIDL תואמת גם להטמעת העזר של HIDL, הספק הטמיע את הכיתה VehicleHal. IVehicleHardware דומה מאוד ל-VehicleHal.

HIDL VHAL AIDL VHAL
getAllPropertyConfigs() בדיוק כמו במלון VehicleHal.listProperties()
getValues(callback, requests) יכולים לקרוא ל-VehicleHal.get() לכל בקשה ולקרוא לשיחות חוזרות.
dump() בדיוק כמו במלון VehicleHal.dump()
checkHealth() יכול להחזיר את הערך VehicleHal.get()
registerPropertyChangeCallback() דומה להגדרה VehicleHal.mOnHalEvent

הבדלים בין סוגי הטיפוסים ב-AIDL

כשעוברים מ-HIDL VHAL ל-AIDL VHAL, חשוב לשים לב להבדלים הבאים.

  1. ‏HIDL יוצר קובץ כותרת אחד (types.h) לכל הסוגים שנוצרים מ-types.hal. המערכת של AIDL יוצרת קובץ כותרת אחד לכל סוג. לדוגמה, VehiclePropValue.h מ-VehiclePropValue.aidl.

    לכן, צריך לכלול את כל קובצי הכותרות של הסוגים הנדרשים. קובץ עזר, VehicleHalTypes.h בספרייה VehicleHalUtils, מכיל את רוב הסוגים הנפוצים.

  2. במקום ... שימוש
    hidl_vec std::vector
    hidl_string std::string
    android::sp std::shared_ptr
    android::wp std::weak_ptr
  3. כל הסוגים שמוגדרים ב-types.hal זהים ב-AIDL למעט:
    • SubscribeFlags הוסר כי לא נעשה בו שימוש כי onPropertySet הוסר
    • הערך UserFlags מוגדר עכשיו ב-UserInfo.aidl וצריך להגדיר אותו בתור דגל במקום בתור enum. שדה של דגל משתמש הוא מספר שלם שמכיל כמה ערכים של UserInfo.USER_FLAG_XXX ביחד.
    • השם של RawValue ב-VehiclePropValue השתנה ל-RawPropValue
    • השם של bytes ב-RawValue השתנה ל-byteValues