HIDL VHAL 遷移指南

如要將現有的 HIDL VHAL 實作項目遷移至 AIDL VHAL,請使用 AIDL 參考實作項目結構,實作 IVehicleHardware 介面。

如果現有的 HIDL 實作項目也遵循 HIDL 參考實作項目,則供應商已實作 VehicleHal 類別。IVehicleHardware 與 VehicleHal 非常相似。

HIDL VHAL AIDL VHAL
getAllPropertyConfigs() 與「VehicleHal.listProperties()」的房價相同
getValues(callback, requests) 可針對每項要求呼叫 VehicleHal.get(),並呼叫回呼。
dump() 與「VehicleHal.dump()」的房價相同
checkHealth() 可退回 VehicleHal.get()
registerPropertyChangeCallback() 與設定「VehicleHal.mOnHalEvent」類似

AIDL 的型別差異

從 HIDL VHAL 遷移至 AIDL VHAL 時,請注意下列差異。

  1. HIDL 會為從 types.hal 產生的所有型別,產生一個標頭檔案 (types.h)。AIDL 會為每個型別產生一個標頭檔案。例如,從 VehiclePropValue.aidl 提供時為 VehiclePropValue.h。

    因此,您必須加入所需型別的所有標頭檔案。輔助檔案 (VehicleHalUtils 程式庫中的 VehicleHalTypes.h) 包含大多數常見型別。

  2. 請改用 ... 使用
    hidl_vec std::vector
    hidl_string std::string
    android::sp std::shared_ptr
    android::wp std::weak_ptr
  3. AIDL 中定義的所有型別都與 types.hal 中的型別相同,但以下型別除外:
    • SubscribeFlags 已移除,因為 onPropertySet 已移除,因此不會使用 SubscribeFlags
    • UserFlags 現在定義於 UserInfo.aidl 中,應定義為旗標,而非列舉。使用者旗標欄位是整數,其中包含多個 UserInfo.USER_FLAG_XXX 位元或一起。
    • VehiclePropValue 中的 RawValue 已重新命名為 RawPropValue
    • RawValue 中的 bytes 已重新命名為 byteValues