如要將現有的 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 |