如要將現有的 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已重新命名為RawPropValueRawValue中的bytes已重新命名為byteValues
| 請勿使用 ... | 使用 |
|---|---|
hidl_vec |
std::vector |
hidl_string |
std::string |
android::sp |
std::shared_ptr |
android::wp |
std::weak_ptr |