מדריך להעברה של 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