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

لنقل عملية تنفيذ 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 عمليات OR بين وحدات البت معًا.
    • تمت إعادة تسمية RawValue في VehiclePropValue ليصبح RawPropValue.
    • تمت إعادة تسمية bytes في RawValue ليصبح byteValues.