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