HIDL VHAL 遷移指南

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

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

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.h (來自 VehiclePropValue.aidl)。

    因此,您必須納入所需型別的所有標頭檔案。輔助檔案 (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 已移除,因此未使用
    • UserFlags 現在定義於 UserInfo.aidl 中,應定義為旗標,而非列舉。使用者旗標欄位是整數,其中包含多個 UserInfo.USER_FLAG_XXX 位元或。
    • VehiclePropValue 中的 RawValue 已重新命名為 RawPropValue
    • RawValue 中的 bytes 已重新命名為 byteValues