برای انتقال یک پیاده سازی 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، این تفاوت ها را در نظر بگیرید.
- HIDL یک فایل هدر (
types.h
) برای همه انواع تولید شده ازtypes.hal
تولید می کند. AIDL برای هر نوع یک فایل هدر تولید می کند. به عنوان مثال،VehiclePropValue.h
ازVehiclePropValue.aidl
.در نتیجه، شما باید تمام فایل های هدر را برای انواع مورد نیاز خود قرار دهید. یک فایل کمکی
VehicleHalTypes.h
در کتابخانهVehicleHalUtils
حاوی اکثر انواع رایج است. - تمام انواع تعریف شده در
types.hal
در AIDL یکسان هستند به جز موارد:-
SubscribeFlags
حذف می شود زیرا از آن استفاده نمی شود زیراonPropertySet
حذف شده است -
UserFlags
اکنون درUserInfo.aidl
تعریف شده است و باید به جای enum به عنوان یک پرچم تعریف شود. یک فیلد پرچم کاربر یک عدد صحیح است که دارای چند بیتUserInfo.USER_FLAG_XXX
با هم است. -
RawValue
درVehiclePropValue
بهRawPropValue
تغییر نام داد -
bytes
درRawValue
بهbyteValues
تغییر نام داده می شوند
-
به جای ... | استفاده کنید |
---|---|
hidl_vec | std::vector |
hidl_string | std::string |
android::sp | std::shared_ptr |
android::wp | std::weak_ptr |