Panduan migrasi HIDL VHAL

Untuk memigrasi implementasi HIDL VHAL yang ada ke AIDL VHAL, gunakan struktur implementasi referensi AIDL untuk mengimplementasikan antarmuka IVehicleHardware .

Jika implementasi HIDL yang ada juga mengikuti Implementasi referensi HIDL , vendor telah mengimplementasikan kelas 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 mengembalikan VehicleHal.get()
registerPropertyChangeCallback() Mirip dengan pengaturan VehicleHal.mOnHalEvent

Perbedaan tipe di AIDL

Saat bermigrasi dari HIDL VHAL ke AIDL VHAL, pertimbangkan perbedaan ini.

  1. HIDL menghasilkan satu file header ( types.h ) untuk semua tipe yang dihasilkan types.hal . AIDL menghasilkan satu file header untuk setiap jenis. Misalnya, VehiclePropValue.h dari VehiclePropValue.aidl .

    Akibatnya, Anda harus menyertakan semua file header untuk tipe yang Anda perlukan. File pembantu, VehicleHalTypes.h di perpustakaan VehicleHalUtils berisi sebagian besar tipe umum.

  2. Alih-alih ... Menggunakan
    hidl_vec std::vector
    hidl_string std::string
    android::sp std::shared_ptr
    android::wp std::weak_ptr
  3. Semua tipe yang didefinisikan di types.hal sama di AIDL kecuali untuk:
    • SubscribeFlags dihapus karena tidak digunakan karena onPropertySet dihapus
    • UserFlags sekarang didefinisikan di UserInfo.aidl dan harus didefinisikan sebagai sebuah flag, bukan enum. Bidang tanda pengguna adalah bilangan bulat yang memiliki beberapa bit UserInfo.USER_FLAG_XXX -atau bersamaan.
    • RawValue di VehiclePropValue diganti namanya menjadi RawPropValue
    • bytes di RawValue diganti namanya menjadi byteValues