Руководство по миграции HIDL VHAL

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

  1. HIDL генерирует один заголовочный файл ( types.h ) для всех типов, сгенерированных из types.hal . AIDL генерирует один заголовочный файл для каждого типа. Например, VehiclePropValue.h из VehiclePropValue.aidl .

    В результате вы должны включить все файлы заголовков для нужных вам типов. Вспомогательный файл VehicleHalTypes.h в библиотеке VehicleHalUtils содержит большинство распространенных типов.

  2. Вместо ... Использовать
    hidl_vec std::vector
    hidl_string std::string
    android::sp std::shared_ptr
    android::wp std::weak_ptr
  3. Все типы, определенные в types.hal , идентичны в AIDL, за исключением :
    • SubscribeFlags удален, так как он не используется, так как onPropertySet удален
    • UserFlags теперь определен в UserInfo.aidl и должен быть определен как флаг вместо перечисления. Поле флага пользователя — это целое число, которое имеет несколько битов UserInfo.USER_FLAG_XXX вместе.
    • RawValue в VehiclePropValue переименован в RawPropValue
    • bytes в RawValue переименованы в byteValues
,

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

  1. HIDL генерирует один заголовочный файл ( types.h ) для всех типов, сгенерированных из types.hal . AIDL генерирует один заголовочный файл для каждого типа. Например, VehiclePropValue.h из VehiclePropValue.aidl .

    В результате вы должны включить все файлы заголовков для нужных вам типов. Вспомогательный файл VehicleHalTypes.h в библиотеке VehicleHalUtils содержит большинство распространенных типов.

  2. Вместо ... Использовать
    hidl_vec std::vector
    hidl_string std::string
    android::sp std::shared_ptr
    android::wp std::weak_ptr
  3. Все типы, определенные в types.hal , идентичны в AIDL, за исключением :
    • SubscribeFlags удален, так как он не используется, так как onPropertySet удален
    • UserFlags теперь определен в UserInfo.aidl и должен быть определен как флаг вместо перечисления. Поле флага пользователя — это целое число, которое имеет несколько битов UserInfo.USER_FLAG_XXX вместе.
    • RawValue в VehiclePropValue переименован в RawPropValue
    • bytes в RawValue переименованы в byteValues