راهنمای مهاجرت 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() فراخوانی کند و می تواند callbacks را فراخوانی کند.
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 تعریف شده است و باید به جای enum به عنوان یک پرچم تعریف شود. یک فیلد پرچم کاربر یک عدد صحیح است که دارای چند بیت UserInfo.USER_FLAG_XXX با هم است.
    • RawValue در VehiclePropValue به RawPropValue تغییر نام داد
    • bytes در RawValue به byteValues ​​تغییر نام داده می شوند