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 menetapkan VehicleHal.mOnHalEvent |
Perbedaan jenis di AIDL
Saat bermigrasi dari HIDL VHAL ke AIDL VHAL, pertimbangkan perbedaan ini.
- HIDL menghasilkan satu file header (
types.h
) untuk semua jenis yang dihasilkan daritypes.hal
. AIDL menghasilkan satu file header untuk setiap jenis. Misalnya,VehiclePropValue.h
dariVehiclePropValue.aidl
.Oleh karena itu, Anda harus menyertakan semua file header untuk jenis yang diperlukan. File helper,
VehicleHalTypes.h
di libraryVehicleHalUtils
berisi sebagian besar jenis umum. - Semua jenis yang ditetapkan di
types.hal
sama di AIDL kecuali untuk:SubscribeFlags
dihapus karena tidak digunakan karenaonPropertySet
dihapusUserFlags
sekarang ditentukan diUserInfo.aidl
dan harus ditentukan sebagai tanda, bukan enum. Kolom flag pengguna adalah bilangan bulat yang memiliki beberapaUserInfo.USER_FLAG_XXX
bit-or bersama.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 |