HIDL VHAL 이전 가이드

기존 HIDL VHAL 구현을 AIDL VHAL로 이전하려면 AIDL 참조 구현 구조를 사용하여 IVehicleHardware 인터페이스를 구현하세요.

기존 HIDL 구현도 HIDL 참조 구현을 따르는 경우 공급업체가 VehicleHal 클래스를 구현한 것입니다. IVehicleHardwareVehicleHal과 매우 유사합니다.

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로 이전할 때 다음 차이점을 고려하세요.

  1. HIDL은 types.hal에서 생성된 모든 유형에 하나의 헤더 파일(types.h)을 생성합니다. AIDL은 유형마다 하나의 헤더 파일을 생성합니다. 예를 들어 VehiclePropValue.aidlVehiclePropValue.h입니다.

    따라서 필요한 유형에 관한 모든 헤더 파일을 포함해야 합니다. VehicleHalUtils 라이브러리의 도우미 파일 VehicleHalTypes.h에는 일반 유형이 대부분 포함되어 있습니다.

  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에 정의되며 enum이 아닌 플래그로 정의되어야 합니다. 사용자 플래그 필드는 여러 UserInfo.USER_FLAG_XXX 비트를 함께 포함하는 정수입니다.
    • VehiclePropValueRawValueRawPropValue로 이름이 변경되었습니다.
    • RawValuebytesbyteValues로 이름이 변경되었습니다.