Integrare SOME/IP con SDV

Integra il middleware scalabile orientato ai servizi su IP (SOME/IP) con il veicolo definito dal software (SDV) eseguendo il deployment e la configurazione di diversi componenti. Ogni istanza del broker richiede un'implementazione dello stack locale corrispondente. Questo documento descrive come:

  • Configura un deployment di un singolo broker
  • Esegui il deployment del broker SOME/IP come singola istanza o come più istanze
  • Esegui il deployment dell'agente VSIDL (Vehicle Services Interactive Data Language)
  • Utilizzare Soong con vsidl_rc_generator

Configurazione di esempio

Gli esempi di SDV, come quelli per i dispositivi Android virtuali Cuttlefish sdv_core_cf e l'hardware sdv_core_arm64, mostrano uno schema di deployment flessibile. Il broker e lo stack vengono avviati in base a una proprietà di sistema del tempo di avvio, ro.boot.sdv.someip.enable.

Puoi ottenere uno schema di deployment di un singolo broker impostando androidboot.sdv.someip.enable=true su una sola delle istanze SDV in esecuzione sul sistema.

# 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

Un altro esempio:

#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 del broker

Puoi eseguire il deployment del broker SOME/IP come una o più istanze in SDV. Puoi dividere i domini (o le subnet) SOME/IP in diverse istanze indipendenti. Puoi farlo per bilanciare il carico o per migliorare l'isolamento per motivi di sicurezza.

Ogni istanza deve elaborare un insieme disgiunto di endpoint SOME/IP e SDV. Non puoi utilizzare il routing speciale o la sincronizzazione cross-agent. Una configurazione errata può comportare la duplicazione delle pubblicazioni o risultati di rilevamento dei servizi incoerenti.

Fornitore di linguaggio interattivo dei dati dei servizi per i veicoli

SOME/IP riceve i metadati necessari per le traduzioni dall'agente VSIDL. Devi deploy l'agente VSIDL sulla stessa VM del broker SOME/IP.

Se utilizzato con l'opzione della variante runtime-config-prebuilts, l'agente VSIDL può generare un file Android.bp. Questo file contiene regole predefinite che creano e implementano la configurazione di runtime pertinente.

Soong

Per eseguire vsidl_rc_generator fornito da SDV:

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

Devi fornire questi argomenti:

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

Puoi anche fornire questi argomenti facoltativi:

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

    Specifica le directory dei proto dipendenti al di fuori di catalog_path. Per generare l'API Rust per i proto dipendenti, ogni directory deve contenere un file Android.bp. Questo file deve includere una destinazione di build rust_protobuf.

  • Facoltativo: --variant <VARIANT>

    Il valore predefinito è RuntimeConfig e specifica la modalità di esecuzione del generatore di configurazione di runtime. RuntimeConfig genera file di configurazione di runtime per SOME/IP e la diagnostica.

    RuntimeConfigPrebuilts genera i file di build. Questi file contengono moduli predefiniti. Puoi utilizzare questi moduli per includere i file generati dalla variante RuntimeConfig in altri moduli o nell'immagine VM.

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

    Argomento per specificare il service bundle a cui applicare il generatore di configurazione di runtime.

  • Facoltativo: --package-name <PACKAGE_NAME>

    Oltre all'argomento del nome del pacchetto di servizi, utilizza questo argomento per specificare il nome del pacchetto di servizi a cui applicare il generatore di configurazione di runtime.

  • Facoltativo: --filegroup <FILEGROUP>

    Deve essere definito quando si utilizza la modalità RuntimeConfigPrebuilts.