Интеграция масштабируемого сервисно-ориентированного промежуточного программного обеспечения по IP ( SOME/IP ) с программно-определяемым транспортным средством (SDV) осуществляется путем развертывания и настройки нескольких компонентов. Для каждого экземпляра брокера требуется соответствующая локальная реализация стека. В этом документе описывается, как:
- Настройте развертывание с использованием одного брокера.
- Разверните брокер SOME/IP как в виде одного, так и в виде нескольких экземпляров.
- Разверните агент интерактивного языка данных для служб транспортных средств (VSIDL).
- Используйте Soong с
vsidl_rc_generator
Пример конфигурации
Примеры SDV, такие как примеры для виртуальных устройств Android Cuttlefish sdv_core_cf и аппаратного обеспечения sdv_core_arm64 , демонстрируют гибкую схему развертывания. Брокер и стек запускаются на основе системного свойства, определяемого при загрузке, ro.boot.sdv.someip.enable .
Для реализации схемы развертывания с одним брокером необходимо установить параметр androidboot.sdv.someip.enable=true только для одного из экземпляров SDV, работающих в системе.
# 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
Ещё один пример:
#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
Развертывание брокера
В SDV брокер SOME/IP можно развернуть как в виде одного, так и нескольких экземпляров. Домен (или подсети) SOME/IP можно разделить на разные независимые экземпляры. Это можно сделать для балансировки нагрузки или для повышения уровня изоляции в целях безопасности.
Каждый экземпляр должен обрабатывать разрозненный набор конечных точек SOME/IP и SDV. Использование специальной маршрутизации или межагентной синхронизации запрещено. Неправильная конфигурация может привести к дублированию публикаций или несогласованным результатам обнаружения служб.
Поставщик интерактивных данных для транспортных услуг
SOME/IP получает метаданные, необходимые для трансляции, от агента VSIDL. Агент VSIDL необходимо развернуть на той же виртуальной машине, что и брокер SOME/IP.
При использовании с опцией runtime-config-prebuilts агент VSIDL может сгенерировать файл Android.bp . Этот файл содержит предварительно созданные правила, которые собирают и развертывают соответствующую конфигурацию среды выполнения.
Сунг
Для запуска vsidl_rc_generator , предоставляемого SDV:
vsidl_rc_generator [OPTIONS] --catalog-path <CATALOG_PATH> --output-path <OUTPUT_PATH>
Вы должны предоставить следующие аргументы:
-
--vsidl-path <VSIDL_PATH> -
--catalog-path <CATALOG_PATH> -
--output-path <OUTPUT_PATH>
Вы также можете указать следующие необязательные аргументы:
Необязательно:
--dependency-catalog-path <DEPENDENCY_CATALOG_PATH>...Указывает каталоги зависимых протоколов вне
catalog_path. Для генерации Rust API для зависимых протоколов каждый каталог должен содержать файлAndroid.bp. Этот файл должен включать цель сборкиrust_protobuf.Необязательно:
--variant <VARIANT>По умолчанию используется параметр
RuntimeConfig, определяющий режим работы генератора конфигурации среды выполнения.RuntimeConfigгенерирует файлы конфигурации среды выполнения для SOME/IP и диагностики.RuntimeConfigPrebuiltsгенерирует файлы сборки. Эти файлы содержат предварительно собранные модули. Вы можете использовать эти модули для включения файлов, сгенерированных вариантомRuntimeConfig, в другие модули или в образ виртуальной машины.Необязательно:
--service-bundle-name <SERVICE_BUNDLE_NAME>Аргумент для указания пакета служб, к которому следует применить генератор конфигурации среды выполнения.
Необязательно:
--package-name <PACKAGE_NAME>В дополнение к аргументу имени пакета служб, используйте этот аргумент для указания имени пакета служб, к которому следует применить генератор конфигурации среды выполнения.
Необязательно:
--filegroup <FILEGROUP>Этот параметр необходимо задать при использовании режима
RuntimeConfigPrebuilts.