دليل الهجرة HIDL VHAL

لترحيل تطبيق HIDL VHAL موجود إلى AIDL VHAL، استخدم بنية تطبيق مرجع AIDL لتطبيق واجهة IVehicleHardware .

إذا كان تطبيق HIDL الحالي يتبع أيضًا تطبيق مرجع HIDL ، قام البائع بتطبيق فئة VehicleHal . IVehicleHardware يشبه إلى حد كبير VehicleHal .

هيدل فال ايدل فال
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