HIDL VHAL 遷移指南

若要將現有HIDL VHAL 實作移轉到AIDL VHAL,請使用AIDL 參考實作結構來實作IVehicleHardware介面。

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

希爾德瓦哈爾輔助病毒哈爾
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. types.hal中定義的所有類型在 AIDL 中都相同,除了
    • SubscribeFlags被刪除,因為它沒有被使用,因為onPropertySet被刪除
    • UserFlags現在在UserInfo.aidl中定義,並且應該定義為標誌而不是枚舉。使用者標誌欄位是由多個UserInfo.USER_FLAG_XXX位元或組合在一起的整數。
    • VehiclePropValue中的RawValue重新命名為RawPropValue
    • RawValue中的bytes被重新命名為byteValues