Чтобы перенести существующую реализацию HIDL VHAL в AIDL VHAL, используйте эталонную структуру реализации AIDL для реализации интерфейса IVehicleHardware
.
Если существующая реализация HIDL также следует Эталонная реализация HIDL , поставщик реализовал класс VehicleHal
. IVehicleHardware
очень похож на VehicleHal
.
ХИДЛ ВХАЛ | АИДЛ ВХАЛ |
---|---|
getAllPropertyConfigs() | То же, что и VehicleHal.listProperties() |
getValues(callback, requests) | Может вызывать VehicleHal.get() для каждого запроса и вызывать обратные вызовы. |
dump() | То же, что и VehicleHal.dump() |
checkHealth() | Может возвращать VehicleHal.get() |
registerPropertyChangeCallback() | Аналогично настройке VehicleHal.mOnHalEvent |
Различия типов в AIDL
При переходе с HIDL VHAL на AIDL VHAL учитывайте эти различия.
- HIDL генерирует один файл заголовка (
types.h
) для всех типов, сгенерированных изtypes.hal
. AIDL генерирует один файл заголовка для каждого типа. Например,VehiclePropValue.h
изVehiclePropValue.aidl
.В результате вы должны включить все файлы заголовков нужных вам типов. Вспомогательный файл
VehicleHalTypes.h
в библиотекеVehicleHalUtils
содержит большинство распространенных типов. - Все типы, определенные в
types.hal
одинаковы в AIDL, за исключением :-
SubscribeFlags
удален, поскольку он не используется, поскольку удаленonPropertySet
-
UserFlags
теперь определен вUserInfo.aidl
и должен определяться как флаг, а не как перечисление. Поле пользовательского флага представляет собой целое число, содержащее несколько битовUserInfo.USER_FLAG_XXX
или вместе. -
RawValue
вVehiclePropValue
переименован вRawPropValue
-
bytes
вRawValue
переименованы вbyteValues
-
Вместо ... | Использовать |
---|---|
hidl_vec | std::vector |
hidl_string | std::string |
android::sp | std::shared_ptr |
android::wp | std::weak_ptr |