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 menerapkan 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() |
Serupa dengan setelan 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 membuat satu file header untuk setiap jenis. Misalnya,VehiclePropValue.h
dariVehiclePropValue.aidl
.Oleh karena itu, Anda harus menyertakan semua file header untuk jenis yang Anda butuhkan. File helper,
VehicleHalTypes.h
di libraryVehicleHalUtils
berisi sebagian besar jenis umum. - Semua jenis yang ditentukan dalam
types.hal
sama di AIDL kecuali untuk:SubscribeFlags
dihapus karena tidak digunakan karenaonPropertySet
dihapusUserFlags
kini ditentukan dalamUserInfo.aidl
dan harus ditentukan sebagai tanda, bukan enum. Kolom tanda pengguna adalah bilangan bulat yang memiliki beberapaUserInfo.USER_FLAG_XXX
bit-or bersama-sama.RawValue
diVehiclePropValue
diganti namanya menjadiRawPropValue
bytes
diRawValue
diganti namanya menjadibyteValues
Daripada ... | Gunakan |
---|---|
hidl_vec |
std::vector |
hidl_string |
std::string |
android::sp |
std::shared_ptr |
android::wp |
std::weak_ptr |