כדי להעביר הטמעה קיימת של 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, כדאי להביא בחשבון את ההבדלים האלה.
- HIDL יוצר קובץ כותרת אחד (
types.h
) לכל הסוגים שנוצרים מ-types.hal
. המערכת של AIDL יוצרת קובץ כותרת אחד לכל סוג. לדוגמה,VehiclePropValue.h
מ-VehiclePropValue.aidl
.לכן, צריך לכלול את כל קובצי הכותרות של הסוגים הנדרשים. קובץ עזר,
VehicleHalTypes.h
בספרייהVehicleHalUtils
, מכיל את רוב הסוגים הנפוצים. - כל הסוגים שמוגדרים ב-
types.hal
זהים ב-AIDL מלבד:SubscribeFlags
הוסר כי לא נעשה בו שימוש כיonPropertySet
הוסר- הערך
UserFlags
מוגדר עכשיו ב-UserInfo.aidl
וצריך להגדיר אותו בתור דגל במקום בתור enum. שדה של דגל משתמש הוא מספר שלם שמכיל כמה ערכים שלUserInfo.USER_FLAG_XXX
ביחד. - השם של
RawValue
ב-VehiclePropValue
השתנה ל-RawPropValue
- השם של
bytes
ב-RawValue
השתנה ל-byteValues
במקום ... | שימוש |
---|---|
hidl_vec |
std::vector |
hidl_string |
std::string |
android::sp |
std::shared_ptr |
android::wp |
std::weak_ptr |