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

لنقل عملية تنفيذ حالية 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، يجب مراعاة هذه الاختلافات.

  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 عمليات bit-or معًا.
    • تمت إعادة تسمية RawValue في VehiclePropValue إلى RawPropValue
    • تمت إعادة تسمية bytes في RawValue إلى byteValues