既存の 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
)を 1 つ生成します。AIDL は、型ごとに 1 つのヘッダー ファイルを生成します。たとえば、VehiclePropValue.aidl
のVehiclePropValue.h
です。そのため、必要な型のヘッダー ファイルをすべて含める必要があります。
VehicleHalUtils
ライブラリのヘルパー ファイルVehicleHalTypes.h
には一般的な型のほとんどが含まれています。 types.hal
で定義されるすべての型は、AIDL では以下を除いてすべて同じです。onPropertySet
が削除されたため、使用されないSubscribeFlags
は削除されます。UserInfo.aidl
で定義されるようになったため、UserFlags
は、列挙型の代わりにフラグとして定義される必要があります。ユーザーフラグ フィールドは、複数の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 |