لنقل عملية تنفيذ حالية 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، يجب مراعاة هذه الاختلافات.
- ينشئ HIDL ملف رأس واحدًا (
types.h
) لجميع الأنواع التي تم إنشاؤها منtypes.hal
. تنشئ لغة AIDL ملف عنوان واحدًا لكل نوع. على سبيل المثال،VehiclePropValue.h
منVehiclePropValue.aidl
.نتيجةً لذلك، يجب تضمين جميع ملفات العناوين للأنواع التي تحتاج إليها. يحتوي ملف مساعد
VehicleHalTypes.h
في مكتبةVehicleHalUtils
على معظم الأنواع الشائعة. - جميع الأنواع المحدّدة في
types.hal
هي نفسها في AIDL باستثناء ما يلي:- تمت إزالة
SubscribeFlags
لأنّه لم يتم استخدامه بسبب إزالةonPropertySet
- تم الآن تحديد
UserFlags
فيUserInfo.aidl
ويجب تحديده كعلامة بدلاً من تعداد. حقل علامة المستخدم هو عدد صحيح يتضمّن عدةUserInfo.USER_FLAG_XXX
عمليات bit-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 |