Чтобы перенести существующую реализацию HIDL VHAL в AIDL VHAL, используйте структуру эталонной реализации AIDL для реализации интерфейса IVehicleHardware
.
Если существующая реализация HIDL также следует эталонной реализации HIDL , поставщик реализовал класс VehicleHal
. IVehicleHardware
очень похож на VehicleHal
.
ХИДЛ ВХАЛ | 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.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 |
Чтобы перенести существующую реализацию HIDL VHAL в AIDL VHAL, используйте структуру эталонной реализации AIDL для реализации интерфейса IVehicleHardware
.
Если существующая реализация HIDL также следует эталонной реализации HIDL , поставщик реализовал класс VehicleHal
. IVehicleHardware
очень похож на VehicleHal
.
ХИДЛ ВХАЛ | 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.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 |