מדריך להעברת נתונים (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