Для миграции существующей реализации 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.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 - В
RawValuebytesпереименовывается вbyteValues
-
| Вместо ... | Использовать |
|---|---|
hidl_vec | std::vector |
hidl_string | std::string |
android::sp | std::shared_ptr |
android::wp | std::weak_ptr |