כדי להעביר הטמעה קיימת של 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, חשוב לשים לב להבדלים הבאים.
- 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ביטים שחוברו באמצעות פעולת OR. - השם של
RawValueב-VehiclePropValueהשתנה ל-RawPropValue - השם של
bytesב-RawValueהשתנה ל-byteValues
-
| במקום ... | שימוש |
|---|---|
hidl_vec |
std::vector |
hidl_string |
std::string |
android::sp |
std::shared_ptr |
android::wp |
std::weak_ptr |