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)を 1 つ生成します。AIDL は、型ごとに 1 つのヘッダー ファイルを生成します。たとえば、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 では以下を除いてすべて同じです。
    • onPropertySet が削除されたため、使用されない SubscribeFlags は削除されます。
    • UserInfo.aidl で定義されるようになったため、UserFlags は、列挙型の代わりにフラグとして定義される必要があります。ユーザーフラグ フィールドは、複数の UserInfo.USER_FLAG_XXX のビット論理和を組み合わせた整数です。
    • VehiclePropValueRawValue の名前は RawPropValue に変更されます。
    • RawValuebytes の名前は byteValues に変更されます。