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