Чтобы перенести существующую реализацию 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 |