如要將現有的 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 時,請考量這些差異。
- HIDL 會為從
types.hal
產生的所有類型產生一個標頭檔案 (types.h
)。AIDL 會為每個類型產生一個標頭檔案。例如:來自VehiclePropValue.aidl
的VehiclePropValue.h
。因此,您必須根據需要的類型,納入所有標頭檔案。
VehicleHalUtils
程式庫中的VehicleHalTypes.h
輔助檔案包含大多數常見的類型。 types.hal
中定義的所有類型在 AIDL 中皆相同,但以下例外:SubscribeFlags
已遭移除,因為onPropertySet
已遭移除,因此SubscribeFlags
無法使用UserFlags
現在已在UserInfo.aidl
中定義,且應定義為旗標,而非枚舉。使用者標記欄位是包含多個或一起UserInfo.USER_FLAG_XXX
位元的整數。VehiclePropValue
中的RawValue
已重新命名為RawPropValue
RawValue
中的bytes
已重新命名為byteValues
而不是 ... | 使用 |
---|---|
hidl_vec |
std::vector |
hidl_string |
std::string |
android::sp |
std::shared_ptr |
android::wp |
std::weak_ptr |