برای انتقال یک پیاده سازی 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 |