כדי להעביר הטמעה קיימת של 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 |