기존 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.hal
에서 생성된 모든 유형에 하나의 헤더 파일(types.h
)을 생성합니다. AIDL은 유형마다 하나의 헤더 파일을 생성합니다. 예를 들어VehiclePropValue.aidl
의VehiclePropValue.h
입니다.따라서 필요한 유형에 관한 모든 헤더 파일을 포함해야 합니다.
VehicleHalUtils
라이브러리의 도우미 파일VehicleHalTypes.h
에는 일반 유형이 대부분 포함되어 있습니다. types.hal
에 정의된 모든 유형은 다음을 제외하고 AIDL과 동일합니다.SubscribeFlags
가 삭제됩니다.onPropertySet
이 삭제되어 사용되지 않기 때문입니다.UserFlags
가 이제UserInfo.aidl
에 정의되며 enum이 아닌 플래그로 정의되어야 합니다. 사용자 플래그 필드는 여러UserInfo.USER_FLAG_XXX
비트를 함께 포함하는 정수입니다.VehiclePropValue
의RawValue
가RawPropValue
로 이름이 변경되었습니다.RawValue
의bytes
가byteValues
로 이름이 변경되었습니다.
대신 | 사용 |
---|---|
hidl_vec |
std::vector |
hidl_string |
std::string |
android::sp |
std::shared_ptr |
android::wp |
std::weak_ptr |