Mengintegrasikan SOME/IP dengan SDV

Mengintegrasikan middleware berorientasi layanan yang skalabel melalui IP (SOME/IP) dengan kendaraan yang ditentukan software (SDV) dengan men-deploy dan mengonfigurasi beberapa komponen. Setiap instance broker memerlukan penerapan stack lokal yang sesuai. Dokumen ini menjelaskan cara:

  • Mengonfigurasi deployment broker tunggal
  • Men-deploy broker SOME/IP sebagai satu atau beberapa instance
  • Men-deploy agen bahasa data interaktif layanan kendaraan (VSIDL)
  • Menggunakan Soong dengan vsidl_rc_generator

Contoh konfigurasi

Contoh SDV, seperti untuk perangkat Android virtual Cuttlefish sdv_core_cf dan hardware sdv_core_arm64, menunjukkan skema deployment yang fleksibel. Broker dan stack masing-masing dimulai berdasarkan properti sistem waktu booting, ro.boot.sdv.someip.enable.

Anda dapat mencapai skema deployment broker tunggal dengan menyetel androidboot.sdv.someip.enable=true hanya pada salah satu instance SDV yang berjalan di sistem.

# device/google/sdv/sdv_core_base/sdv.agents.rc
# Declare and start the SDV SOME/IP broker agent.
service sdv_someip_broker_agent /system_ext/bin/sdv_someip_broker_agent_comms
    class core
    disabled
    user system_ext_sdv_someip
    group system
on property:ro.sdv.orchestrator.state.ready=true && property:ro.boot.sdv.someip.enable=true
    start sdv_someip_broker_agent

Contoh lain:

#device/google/sdv/sdv_core_cf/init.sdv_core_cf.rc
# Declare and start the sample SDV SOME/IP stack agent.
service sdv_someip_stack_agent /vendor/bin/sdv_someip_stack_agent
    class core
    disabled
    user system
    group system
    setenv VSOMEIP_CONFIGURATION /vendor/etc/someip/vsomeip_config.json
    setenv VSOMEIP_BASE_PATH /data/vendor/vsomeip/
on property:dev.bootcomplete=1 && property:ro.boot.sdv.someip.enable=true
    start sdv_someip_stack_agent

Deployment broker

Anda dapat men-deploy broker SOME/IP sebagai satu atau beberapa instance di SDV. Anda dapat membagi domain (atau subnet) SOME/IP menjadi beberapa instance independen yang berbeda. Anda dapat melakukannya untuk menyeimbangkan beban atau meningkatkan isolasi untuk tujuan keamanan.

Setiap instance harus memproses serangkaian endpoint SOME/IP dan SDV yang tidak terkait. Anda tidak dapat menggunakan pemilihan rute khusus atau sinkronisasi lintas agen. Konfigurasi yang tidak tepat dapat menyebabkan publikasi duplikat atau hasil penemuan layanan yang tidak konsisten.

Penyedia bahasa data interaktif layanan kendaraan

SOME/IP mendapatkan metadata yang diperlukan untuk terjemahan dari agen VSIDL. Anda harus men-deploy agen VSIDL ke VM yang sama dengan broker SOME/IP.

Jika digunakan dengan opsi varian runtime-config-prebuilts, agen VSIDL dapat menghasilkan file Android.bp. File ini berisi aturan bawaan yang membangun dan men-deploy konfigurasi runtime yang relevan.

Soong

Untuk menjalankan vsidl_rc_generator yang disediakan oleh SDV:

vsidl_rc_generator [OPTIONS] --catalog-path <CATALOG_PATH> --output-path <OUTPUT_PATH>

Anda harus memberikan argumen berikut:

  • --vsidl-path <VSIDL_PATH>
  • --catalog-path <CATALOG_PATH>
  • --output-path <OUTPUT_PATH>

Anda juga dapat memberikan argumen opsional berikut:

  • Opsional: --dependency-catalog-path <DEPENDENCY_CATALOG_PATH>...

    Menentukan direktori proto dependen di luar catalog_path. Untuk membuat Rust API untuk proto dependen, setiap direktori harus berisi file Android.bp. File ini harus menyertakan target build rust_protobuf.

  • Opsional: --variant <VARIANT>

    Nilai defaultnya adalah RuntimeConfig dan menentukan mode yang harus digunakan oleh generator konfigurasi runtime. RuntimeConfig membuat file konfigurasi runtime untuk SOME/IP dan diagnostik.

    RuntimeConfigPrebuilts membuat file build. File ini berisi modul yang telah dibuat sebelumnya. Anda dapat menggunakan modul ini untuk menyertakan file yang dihasilkan oleh varian RuntimeConfig di modul lain atau di image VM.

  • Opsional: --service-bundle-name <SERVICE_BUNDLE_NAME>

    Argumen untuk menentukan paket layanan yang akan diterapkan oleh generator konfigurasi runtime.

  • Opsional: --package-name <PACKAGE_NAME>

    Selain argumen nama paket layanan, gunakan argumen ini untuk menentukan nama paket paket layanan yang akan diterapkan oleh generator konfigurasi runtime.

  • Opsional: --filegroup <FILEGROUP>

    Harus ditentukan saat menggunakan mode RuntimeConfigPrebuilts.