Untuk memigrasikan implementasi VHAL HIDL yang ada ke VHAL AIDL, gunakan struktur implementasi referensi AIDL untuk mengimplementasikan antarmuka IVehicleHardware.
Jika implementasi HIDL yang ada juga mengikuti
implementasi referensi HIDL,
vendor telah mengimplementasikan class VehicleHal. IVehicleHardware sangat mirip dengan VehicleHal.
| HIDL VHAL | AIDL VHAL |
|---|---|
getAllPropertyConfigs() |
Sama seperti VehicleHal.listProperties() |
getValues(callback, requests) |
Dapat memanggil VehicleHal.get() untuk setiap permintaan dan dapat memanggil callback.
|
dump() |
Sama seperti VehicleHal.dump() |
checkHealth() |
Dapat menampilkan VehicleHal.get() |
registerPropertyChangeCallback() |
Mirip dengan menetapkan VehicleHal.mOnHalEvent |
Perbedaan jenis di AIDL
Saat bermigrasi dari HIDL VHAL ke AIDL VHAL, pertimbangkan perbedaan berikut.
- HIDL menghasilkan satu file header (
types.h) untuk semua jenis yang dihasilkan daritypes.hal. AIDL menghasilkan satu file header untuk setiap jenis. Misalnya,VehiclePropValue.hdariVehiclePropValue.aidl.Oleh karena itu, Anda harus menyertakan semua file header untuk jenis yang Anda butuhkan. File helper,
VehicleHalTypes.hdi libraryVehicleHalUtilsberisi sebagian besar jenis umum. - Semua jenis yang ditentukan dalam
types.halsama di AIDL kecuali untuk:SubscribeFlagsdihapus karena tidak digunakan karenaonPropertySetdihapusUserFlagskini ditentukan dalamUserInfo.aidldan harus ditentukan sebagai flag, bukan enum. Kolom flag pengguna adalah bilangan bulat yang memiliki beberapaUserInfo.USER_FLAG_XXXbit-or bersama-sama.RawValuediVehiclePropValuediganti namanya menjadiRawPropValuebytesdiRawValuediganti namanya menjadibyteValues
| Jangan gunakan ... | Gunakan |
|---|---|
hidl_vec |
std::vector |
hidl_string |
std::string |
android::sp |
std::shared_ptr |
android::wp |
std::weak_ptr |