SOME/IP スタックを実装する

SOME/IP スタックは、Android インターフェース定義言語(AIDL)インターフェースを介して低レベルの SOME/IP 転送ロジックを管理します。このスタックは、SOME/IP イベントとリモート プロシージャ コール(RPC)を送受信します。このドキュメントでは、次のコンセプトについて説明します。

  • リファレンス実装: SDV は、SOME/IP スタックの非本番環境リファレンス サンプル実装を提供します。

  • Binder API: ISomeIpStack インターフェースは、SOME/IP スタック インスタンスとやり取りするためのメソッドを定義します。

  • SELinux: リファレンス スタックの SELinux 構成例では、バインダ通信と粒度の細かいファイル システム アクセスが有効になっています。

このスタックは SOME/IP ワイヤー形式を読み取りますが、ペイロードは不透明なバイナリ BLOB として残し、SOME/IP ブローカーに転送します。

SOME/IP 標準では、スタックまたはスタック API レイヤの定義は提供されていません。SDV は、標準の使い慣れた定義内で動作する AIDL API を提供し、既存のスタックを適応させるために必要なコードの量を最小限に抑えます。

この API を使用すると、スタックのさまざまな実装を選択でき、スタックとシステム内の他のコンポーネントとの統合が簡素化されます。

リファレンス実装

SDV は、SOME/IP スタックの非本番環境のリファレンス サンプル実装を提供します。これは、オープンソースの COVESA vsomeip ライブラリの上に構築されたシン ラッパーで構成されています。システムは、参照スタックを sdv_core_cf ターゲットと sdv_core_arm64 ターゲットにのみデプロイし、init.rcCID=3 を使用して VM で起動します。

on property:dev.bootcomplete=1 && property:ro.sdv.vsock_local_cid=3
    start sdv_someip_stack_agent

OEM 定義スタックのプロダクション デプロイ構成を定義します。詳しくは、SOME/IP を SDV と統合するをご覧ください。

構成

リファレンス スタックは、vSomeIP ライブラリの構成を宣言します。構成構造の説明については、構成ファイルの構造をご覧ください。構成の一部として、マルチキャスト アドレスやスタックで使用されるポートなどの SOME/IP SD パラメータを指定します。

Binder API

ISomeIpStack インターフェースは core_services/some_ip/aidl/google/sdv/someip で宣言されています。ISomeIpStack インターフェースは、SOME/IP スタック インスタンスとやり取りするためのメソッドを定義し、これらのアイテムの重要な品質を提供します。

サービスの可用性

  • register_availability_callback サービスの可用性の変更に対するコールバックを登録します。

  • monitor_service スタックに特定のサービスの可用性をモニタリングするよう指示します。

  • unregister_availability_callback: 可用性コールバックの登録を解除します。

  • on_sdv_service_availability SDV サービスの可用性の変更を示します。

リモート プロシージャ コール(RPC)

RPC リクエストは次の方法で送信できます。

  • rpc_transact 応答を待つ
  • rpc_oneway: レスポンスを待たない

RPC リクエスト処理の場合:

  • register_rpc_request_callback 着信 RPC リクエストのコールバックを登録します。

  • unregister_rpc_request_callback RPC リクエスト コールバックの登録を解除します。

イベント通知

  • register_event_notification_callback は、登録されたイベント通知のコールバックを登録します。

  • unregister_event_notification_callback アクティビティ通知コールバックの登録を解除します。

  • on_sdv_topic_availability SDV トピックの可用性の変化を示します。

  • subscribe イベント グループから特定のイベントに登録します。

  • unsubscribe 特定のイベントの登録を解除します。

  • publish 指定されたペイロードでイベントを公開します。

SELinux

device/google/sdv/sdv_core_base/sepolicy/samples/vendor/ フォルダには、リファレンス スタックの SELinux 構成のサンプルが含まれています。

  • sdv_someip_stack_default.tesdv_someip_stack_default 型を定義し、属性とコンテキストにマッピングします。

  • file_contexts は、バイナリ フォルダとデータ フォルダを適切なコンテキストにマッピングします。

この構成により、スタックとブローカー間のバインダ通信が可能になり、ネットワーク品質へのアクセスとデバイスのファイル システムへのきめ細かいアクセスが可能になります。