如要將現有的 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.h
(來自VehiclePropValue.aidl
)。因此,您必須納入所需型別的所有標頭檔案。輔助檔案 (
VehicleHalUtils
程式庫中的VehicleHalTypes.h
) 包含大多數常見型別。 - AIDL 中定義的所有型別都與
types.hal
中的型別相同,但以下型別除外:SubscribeFlags
已移除,因為onPropertySet
已移除,因此未使用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 |