دليل نقل بيانات HIDL

لنقل عملية تنفيذ VHAL الحالية باستخدام HIDL إلى عملية تنفيذ VHAL باستخدام AIDL، استخدِم بنية التنفيذ المرجعي لواجهة 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، ضع في اعتبارك هذه الاختلافات.

  1. تُنشئ HIDL ملفًا واحدًا للرأس (types.h) لجميع الأنواع التي تم إنشاؤها من types.hal. تُنشئ AIDL ملف عنوان واحدًا لكل نوع. على سبيل المثال، VehiclePropValue.h من VehiclePropValue.aidl.

    نتيجةً لذلك، عليك تضمين جميع ملفات الرأس للأنواع التي تحتاج إليها. ملف مساعد، VehicleHalTypes.h في مكتبة VehicleHalUtils يحتوي على معظم الأنواع الشائعة.

  2. بدلاً من ... استخدام
    hidl_vec std::vector
    hidl_string std::string
    android::sp std::shared_ptr
    android::wp std::weak_ptr
  3. جميع الأنواع المحدّدة في types.hal هي نفسها في AIDL باستثناء:
    • تمت إزالة SubscribeFlags لأنّه لم يتم استخدامه بسبب إزالة onPropertySet
    • تمّ الآن تعريف UserFlags في UserInfo.aidl ويجب تعريفه كعلامة بدلاً من عنصر مصنّف. حقل إبلاغ المستخدم هو عدد صحيح يحتوي على عدة رموز بت UserInfo.USER_FLAG_XXX أو بعضها معًا.
    • تمت إعادة تسمية RawValue في VehiclePropValue ليصبح RawPropValue.
    • تمت إعادة تسمية bytes في RawValue ليصبح byteValues.