لنقل عملية تنفيذ حالية لواجهة VHAL المستندة إلى HIDL إلى واجهة VHAL المستندة إلى AIDL، استخدِم بنية التنفيذ المرجعي لواجهة AIDL لتنفيذ واجهة IVehicleHardware.
إذا كانت عملية التنفيذ الحالية لواجهة HIDL تتّبع أيضًا
التنفيذ المرجعي لواجهة HIDL،
يكون المورّد قد نفّذ فئة VehicleHal. IVehicleHardware تشبه إلى حد كبير VehicleHal.
| واجهة VHAL المستندة إلى HIDL | واجهة VHAL المستندة إلى AIDL |
|---|---|
getAllPropertyConfigs() |
مطابقة لـ VehicleHal.listProperties() |
getValues(callback, requests) |
يمكن استدعاء VehicleHal.get() لكل طلب واستدعاء عمليات معاودة الاتصال.
|
dump() |
مطابقة لـ VehicleHal.dump() |
checkHealth() |
يمكن عرض VehicleHal.get() |
registerPropertyChangeCallback() |
مشابهة لضبط VehicleHal.mOnHalEvent |
الاختلافات في أنواع AIDL
عند نقل البيانات من واجهة VHAL المستندة إلى HIDL إلى واجهة VHAL المستندة إلى AIDL، ضَع في اعتبارك هذه الاختلافات.
- تنشئ 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 |