מדריך הגירה של 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() עבור כל בקשה ויכול להתקשר להתקשרות חוזרת.
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