Google は、黒人コミュニティに対する人種平等の促進に取り組んでいます。取り組みを見る

車両の特性

車両のハードウェアアブストラクションレイヤ(VHAL)インターフェースは、OEMが実装可能なプロパティを定義し、(プロパティがintであり、その変更モードが許可されるかどうか、など)プロパティメタデータを含んでいます。 VHALインターフェースは、特定の機能の抽象化であるプロパティへのアクセス(読み取り、書き込み、サブスクライブ)に基づいています。

HALインターフェース

VHALは、次のインターフェイスを使用します。

  • getAllPropConfigs()を生成(vec<VehiclePropConfig>propConfigs)
    VHALでサポートされているすべてのプロパティの構成を一覧表示します。 CarServiceは、サポートされているプロパティのみを使用します。
  • getPropConfigs(vec<int32_t> props)を生成(StatusCode status,vec<VehiclePropConfig> propConfigs);
    選択したプロパティの構成を返します。
  • set(VehiclePropValue propValue)生成する(StatusCodestatus);
    プロパティに値を書き込みます。書き込みの結果は、プロパティごとに定義されます。
  • subscribe(IVehicleCallback callback, vec<SubscribeOptions> options)を生成(StatusCode status);
    プロパティ値の変更の監視を開始します。ゾーン型性のため、 unsubscribe(IVehicleCallback callback, int32_t propId)を生成(StatusCode status);

VHALは、次のコールバックインターフェイスを使用します。

  • oneway onPropertyEvent(vec<VehiclePropValue>propValues);
    車両プロパティの値の変更を通知します。サブスクライブされたプロパティに対してのみ実行する必要があります。
  • oneway onPropertySetError(StatusCode errorCode,int32_t propId,int32_tareaId);
    グローバルVHALレベルエラーまたはプロパティごとのエラーを返します。グローバルエラーによりHALが再起動し、他のコンポーネント(アプリケーションを含む)が再起動する可能性があります。

車両の特性

プロパティは、読み取り専用、書き込み専用(VHALレベルに情報を渡すために使用)、または読み取りと書き込み(ほとんどのプロパティのサポートはオプション)にすることができます。各プロパティは、一意INT32キーによって識別され、事前に定義されたタイプ(有するvalue_type ):

  • BYTES
  • BOOLEAN
  • FLOAT
  • FLOAT[]
  • INT32
  • INT32[]
  • INT64
  • INT64[]
  • STRING
  • MIXED

ゾーン化されたプロパティは、プロパティでサポートされているゾーンの数に基づいて、複数の値を持つ場合があります。

エリアタイプ

VHALは、複数のエリアタイプを定義します。

エリアタイプ説明
GLOBALこのプロパティはシングルトンであり、複数の領域はありません。
WINDOW窓、用途に基づいてエリアVehicleAreaWindow列挙。
MIRRORミラー、用途に基づいてエリアVehicleAreaMirror列挙。
SEAT席に基づくエリアは、使用していますVehicleAreaSeat列挙型を。
DOORドア、用途に基づいてエリアVehicleAreaDoor列挙。
WHEELホイールに基づくエリアは、使用していますVehicleAreaWheel列挙型を。

各ゾーンプロパティは、事前定義されたエリアタイプを使用する必要があります。各エリアタイプには、エリアタイプの列挙型で定義されたビットフラグのセットがあります。例えば、 SEATエリアが定義VehicleAreaSeat列挙ました:

  • ROW_1_LEFT = 0x0001
  • ROW_1_CENTER = 0x0002
  • ROW_1_RIGHT = 0x0004
  • ROW_2_LEFT = 0x0010
  • ROW_2_CENTER = 0x0020
  • ROW_2_RIGHT = 0x0040
  • ROW_3_LEFT = 0x0100
  • ..。

エリアID

ゾーン化されたプロパティは、エリアIDを介してアドレス指定されます。各ゾーンプロパティは、1つ以上のエリアIDをサポートする場合があります。エリアIDは、それぞれの列挙型からの1つ以上のフラグで構成されます。例えば、使用してプロパティVehicleAreaSeat 、次のエリアのIDを使用する場合があります。

アイテム説明
ROW_1_LEFT | ROW_1_RIGHTエリアIDは両方のフロントシートに適用されます。
ROW_2_LEFT左後部座席にのみ適用されます。
ROW_2_RIGHT右後部座席にのみ適用されます。

プロパティのステータス

すべてのプロパティの値が付属していますVehiclePropertyStatus値。これは、プロパティの現在のステータスを示します。

アイテム説明
AVAILABLEプロパティが使用可能であり、値が有効です。
UNAVAILABLEプロパティ値は現在利用できません。サポートされているプロパティの一時的に無効になっている機能に使用されます。
ERRORこのプロパティに問題があります。

プロパティの構成

使用VehiclePropConfig各プロパティの設定情報を提供します。情報が含まれます:

変数説明
access rwrw
changeMode変更時と継続時のプロパティの監視方法を表します。
areaConfigs areaIdmin 、およびmax値。
configArray追加の構成パラメーター。
configString文字列として渡される追加情報。
minSampleRate maxSampleRate
propプロパティID、int

ゾーンプロパティの処理

ゾーンプロパティは、指定されたエリアID値を使用して各サブプロパティにアクセスできる複数のプロパティのコレクションに相当します。

  • getゾーン型プロパティの呼び出しは常に要求にエリアIDを含んでいます。したがって、要求されたエリアIDの現在の値のみが返されます。プロパティがグローバルの場合、エリアIDは0です。
  • setゾーニングプロパティの呼び出しは常に要求にエリアIDを含んでいます。したがって、要求されたエリアIDのみが変更されます。
  • subscribe呼び出しがプロパティのすべてのエリアIDのイベントを生成します。

電話を受ける

初期化中、一致する車両ネットワークメッセージがまだ受信されていないため、プロパティの値がまだ使用できない場合があります。このような場合には、 get呼び出しが返す必要があります-EAGAIN 。一部のプロパティ(HVACなど)には、個別のオン/オフ電源プロパティがあります。呼び出しget (電源オフ)など、Aプロパティのは返す必要がありますUNAVAILABLEエラーを返すのではなく、状況を。たとえば、HVAC温度を取得します

VHALはHVACの例を取得します

図1。 HVAC温度を取得します(CS = CarService、VHAL = Vehicle HAL)

通話を設定する

set呼び出しが要求された変更が行われた後、イベント通知を伴う非同期操作です。典型的な動作では、 set車両ネットワーク経由で変更要求を行うのコールリード。いくつかのsetのコールの準備ができたが、初期化時に、そのようなデータはまだ利用できない場合があることを最初のデータが必要な場合があります。このような場合には、 set呼び出しが返す必要があります-EAGAIN 。オン/オフの別々のパワーを持つ一部のプロパティは、返す必要があります-ESHUTDOWNプロパティの電源がオフになっていると、設定が完了することができないとき。まではset有効とされ、 get必ずしも設定されているものと同じ値を返しません。例えば、 set HVAC Temperature

VHALセットHVACの例

図2。 HVAC温度を設定します(CS = CarService、VHAL = Vehicle HAL)

カスタムプロパティの処理

パートナー固有のニーズをサポートするために、VHALではシステムアプリに制限されたカスタムプロパティを使用できます。カスタムプロパティを操作するときは、次のガイドラインを使用してください。

  • プロパティIDは、次のフィールドを使用して生成する必要があります。
    • VehiclePropertyGroup:VENDOR
      VENDORグループは、カスタムプロパティのためにのみ使用されます。
    • VehicleArea
      適切なエリアタイプを選択します。
    • VehiclePropertyType
      適切なデータ型を選択します。 BYTESタイプは、ほとんどの場合、十分な生データの受け渡しが可能になります。カスタムプロパティを介してビッグデータを頻繁に送信すると、車両ネットワークアクセス全体の速度が低下する可能性があります。大きなペイロードを追加する場合は注意が必要です。
    • Property ID
      カスタムプロパティには4つのニブルIDを選択します。
  • 生態系の断片化を防ぐために、カスタムプロパティは、すでに(に存在する複製車両プロパティに使用することはできませんVehiclePropertyIds SDK)。
  • 記入VehiclePropConfig.configStringカスタムプロパティの短い説明を。これにより、健全性チェックツールは、既存の車両プロパティの偶発的な複製にフラグを立てることができます。たとえば、「ハザードライト状態」。
  • 経由のアクセスCarPropertyManager (Javaコンポーネントの場合)または車両ネットワークサービスのAPIを介して(ネイティブのため)。他の車のAPIを変更しないでください。変更すると、将来の互換性の問題が発生する可能性があります。
  • ベンダーのプロパティを実装した後にのみ許可リストを選択VehicleVendorPermissionベンダーのプロパティの列挙。ベンダーの権限をシステムプロパティにマッピングすると、CTSとVTSが破損します。

HVACプロパティの処理

VHALを使用して、HVAC関連のプロパティを設定することでHVACを制御できます。ほとんどのHVACプロパティはゾーン化されたプロパティですが、いくつかはゾーン化されていない(グローバル)プロパティです。定義されたプロパティのサンプルは次のとおりです。

財産目的
VEHICLE_PROPERTY_HVAC_TEMPERATURE_SETゾーンごとに温度を設定します。
VEHICLE_PROPERTY_HVAC_RECIRC_ONゾーンごとの再循環を制御します。

HVACプロパティの完全なリストを表示するには、を検索VEHICLE_PROPERTY_HVAC_*types.hal 。 HVACプロパティが使用している場合VehicleAreaSeat 、エリアIDにゾーニングHVACプロパティをマッピングするための追加の規則が適用されます。車内の利用可能な各座席は、エリアID配列のエリアIDの一部である必要があります。

例1。車は2つのフロント席(持ってROW_1_LEFT, ROW_1_RIGHT )と3つの後部座席( ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT )。車には、運転席側と助手席側の2つの温度制御ユニットがあります。

  • 以下のためのエリアIDの有効なマッピングセットHVAC_TEMPERATURE SET次のとおりです。
    • ROW_1_LEFT | ROW_2_LEFT
    • ROW_1_RIGHT | ROW_2_CENTER | ROW_2_RIGHT
  • 同じハードウェア構成の代替マッピングは次のとおりです。
    • ROW_1_LEFT | ROW_2_LEFT | ROW_2_CENTER
    • ROW_1_RIGHT | ROW_2_RIGHT

例2。車は、前列に2つの座席(シートで三行有しROW_1_LEFT, ROW_1_RIGHT )、第二(三の座ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT )、および第三行三( ROW_3_LEFT, ROW_3_CENTER, ROW_3_RIGHT )。車には、運転席側、助手席側、後部の3つの温度制御ユニットがあります。マップする合理的な方法HVAC_TEMPERATURE_SETエリアIDには、3つの要素の配列のようになります。

  • ROW_1_LEFT
  • ROW_1_RIGHT
  • ROW_2_LEFT | ROW_2_CENTER | ROW_2_RIGHT | ROW_3_LEFT | ROW_3_CENTER | ROW_3_RIGHT

センサープロパティの処理

VHALセンサーのプロパティは、実際のセンサーデータまたは運転状況などのポリシー情報を表します。安全な車両アプリケーションを構築するにはデータが必須であるため、一部のセンサー情報(運転状況やデイナイトモードなど)には、どのアプリからでも制限なくアクセスできます。その他のセンサー情報(車速など)はより機密性が高く、ユーザーが管理できる特定の権限が必要です。

(でサポートされているセンサーのプロパティを参照してくださいtypes.hal )。

車両マップサービス

車両マップサービス(VMS)のような一般的な車両機能、サポートするために、パブ/サブ・インターフェースを介してクライアントとの間の交換マップデータに機構を提供する高度運転支援システム(ADAS)を。クライアントは、VHALまたは特権AndroidアプリケーションのVMSプロパティを介してインターフェースする車両システムを含めることができます。 VMSで共有されるデータは、車両システムおよびサポートアプリで使用するためのマップデータに限定されることを目的としています。

VMSは、AndroidAutomotiveの実装でのみ使用することを目的としています。 AOSPには、VMSを公開またはサブスクライブするデフォルトのクライアントは含まれていません。 VHALでVMS性のため、メッセージタイプとデータ構造がでVHAL 2.0に記載されているVmsMessageTypeサポートVMSメッセージの種類を示し列挙、。この列挙型は、車両プロパティ整数配列の最初の整数として使用され、メッセージの残りの部分がどのようにデコードされるかを決定します。