Panduan migrasi VHAL HIDL

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.

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

    Oleh karena itu, Anda harus menyertakan semua file header untuk jenis yang diperlukan. File helper, VehicleHalTypes.h di library VehicleHalUtils berisi sebagian besar jenis umum.

  2. Daripada ... Gunakan
    hidl_vec std::vector
    hidl_string std::string
    android::sp std::shared_ptr
    android::wp std::weak_ptr
  3. Semua jenis yang ditetapkan di types.hal sama di AIDL kecuali untuk:
    • SubscribeFlags dihapus karena tidak digunakan karena onPropertySet dihapus
    • UserFlags sekarang ditentukan di UserInfo.aidl dan harus ditentukan sebagai tanda, bukan enum. Kolom flag pengguna adalah bilangan bulat yang memiliki beberapa UserInfo.USER_FLAG_XXX bit-or bersama.
    • RawValue di VehiclePropValue diganti namanya menjadi RawPropValue
    • bytes di RawValue diganti namanya menjadi byteValues