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

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

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

HIDL VHAL AIDL VHAL
getAllPropertyConfigs() בדיוק כמו במלון VehicleHal.listProperties()
getValues(callback, requests) יכול להתקשר אל VehicleHal.get() לכל בקשה ויכול להתקשר אל פונקציות callback.
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 ביטים שחוברו באמצעות פעולת OR.
    • השם של RawValue ב-VehiclePropValue השתנה ל-RawPropValue
    • השם של bytes ב-RawValue השתנה ל-byteValues