راهنمای مهاجرت HIDL VHAL

برای مهاجرت یک پیاده‌سازی HIDL VHAL موجود به یک AIDL VHAL، از ساختار پیاده‌سازی مرجع AIDL برای پیاده‌سازی رابط IVehicleHardware استفاده کنید.

اگر پیاده‌سازی HIDL موجود نیز از پیاده‌سازی مرجع HIDL پیروی کند، فروشنده کلاس VehicleHal را پیاده‌سازی کرده است. IVehicleHardware بسیار شبیه VehicleHal است.

هیدل وهال آیدل وهال
getAllPropertyConfigs() همانند VehicleHal.listProperties()
getValues(callback, requests) می‌تواند برای هر درخواست VehicleHal.get() ‎ را فراخوانی کند و می‌تواند callbackها را فراخوانی کند.
dump() همانند VehicleHal.dump()
checkHealth() می‌تواند VehicleHal.get() را برگرداند
registerPropertyChangeCallback() مشابه تنظیم VehicleHal.mOnHalEvent

تفاوت‌های نوع در AIDL

هنگام مهاجرت از HIDL VHAL به AIDL VHAL، این تفاوت‌ها را در نظر بگیرید.

  1. HIDL برای همه انواع تولید شده از types.hal یک فایل هدر ( types.h ) ایجاد می‌کند. 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 تعریف شده است و باید به جای یک enum به عنوان یک flag تعریف شود. فیلد پرچم کاربر یک عدد صحیح است که چندین UserInfo.USER_FLAG_XXX bit-or را با هم دارد.
    • RawValue در VehiclePropValue به RawPropValue تغییر نام داده است.
    • bytes موجود در RawValue به byteValues ​​تغییر نام می‌دهند.