Integre o middleware escalonável orientado a serviços por IP (SOME/IP) com veículo definido por software (SDV) implantando e configurando vários componentes. Cada instância de broker requer uma implementação de pilha local correspondente. Neste documento, explicamos como:
- Configurar uma implantação de agente único
- Implante o broker SOME/IP como uma única ou várias instâncias.
- Implante o agente da linguagem de dados interativos de serviços veiculares (VSIDL, na sigla em inglês)
- Usar o Soong com
vsidl_rc_generator
Exemplo de configuração
Os exemplos de SDV, como os de dispositivos Android virtuais Cuttlefish
sdv_core_cf e hardware sdv_core_arm64, demonstram um esquema de implantação
flexível. O broker e a pilha são iniciados com base em uma propriedade do sistema de tempo de inicialização, ro.boot.sdv.someip.enable.
É possível alcançar um único esquema de implantação de broker definindo
androidboot.sdv.someip.enable=true em apenas uma das instâncias do SDV em execução no
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
Outro exemplo:
#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
Implantação do agente
É possível implantar o broker SOME/IP como uma única ou várias instâncias no SDV. É possível dividir domínios (ou sub-redes) SOME/IP em diferentes instâncias independentes. Isso pode ser feito para equilibrar a carga ou melhorar o isolamento por motivos de segurança.
Cada instância precisa processar um conjunto desconexo de endpoints SOME/IP e SDV. Não é possível usar roteamento especial ou sincronização entre agentes. Uma configuração inadequada pode levar a publicações duplicadas ou resultados inconsistentes de descoberta de serviços.
Provedor de linguagem de dados interativos de serviços de veículos
O SOME/IP recebe do agente VSIDL os metadados necessários para traduções. É necessário implantar o agente VSIDL na mesma VM que o broker SOME/IP.
Quando usado com a opção de variante runtime-config-prebuilts, o agente VSIDL
pode gerar um arquivo Android.bp. Esse arquivo contém regras pré-criadas que criam
e implantam a configuração de tempo de execução relevante.
Soong
Para executar o vsidl_rc_generator fornecido pela SDV:
vsidl_rc_generator [OPTIONS] --catalog-path <CATALOG_PATH> --output-path <OUTPUT_PATH>
Você precisa fornecer estes argumentos:
--vsidl-path <VSIDL_PATH>--catalog-path <CATALOG_PATH>--output-path <OUTPUT_PATH>
Também é possível fornecer estes argumentos opcionais:
Opcional:
--dependency-catalog-path <DEPENDENCY_CATALOG_PATH>...Especifica os diretórios dos protos dependentes fora do
catalog_path. Para gerar a API Rust para os protos dependentes, cada diretório precisa conter um arquivoAndroid.bp. Esse arquivo precisa incluir uma meta de buildrust_protobuf.Opcional:
--variant <VARIANT>O padrão é
RuntimeConfige especifica o modo em que o gerador de configuração de tempo de execução precisa ser executado. ORuntimeConfiggera arquivos de configuração de tempo de execução para SOME/IP e diagnósticos.O
RuntimeConfigPrebuiltsgera arquivos de build. Esses arquivos contêm módulos pré-criados. É possível usar esses módulos para incluir arquivos gerados pela varianteRuntimeConfigem outros módulos ou na imagem da VM.Opcional:
--service-bundle-name <SERVICE_BUNDLE_NAME>Argumento para especificar o pacote de serviços em que o gerador de configuração de tempo de execução será aplicado.
Opcional:
--package-name <PACKAGE_NAME>Além do argumento de nome do pacote de serviços, use este argumento para especificar o nome do pacote de serviços em que o gerador de configuração de tempo de execução será aplicado.
Opcional:
--filegroup <FILEGROUP>Precisa ser definido ao usar o modo
RuntimeConfigPrebuilts.