Базовая трансляция SOME/IP была разработана для обеспечения обновляемого решения для интеграции с сервисами AUTOSAR. Основная задача брокера заключалась в трансляции сообщений и вызовов RPC, которые не были известны на этапе компиляции. Для решения этой проблемы обновления во время выполнения предполагают динамическое добавление или обновление сервисов SDV, аналогично тому, как вводятся новые типы единиц.
Решение для этого динамического преобразования основано на информации о типах данных во время выполнения (RTTI). Брокер получает конфигурацию из всех установленных пакетов служб и выполняет преобразование на основе отражения, используя схемы данных из этой конфигурации.
Хотя трансляция на основе RTTI обеспечивает гибкость, она по своей природе медленнее, чем предварительно скомпилированные методы. Для оптимизации путей передачи данных с высокой нагрузкой используйте метод, который обходит трансляцию.
Для поддержки обработки больших и часто передаваемых сообщений SDV позволяет обходить трансляцию и пересылать байты в формате SOME/IP в пакеты услуг потребителей.
Пакет сервисов обрабатывает полезную нагрузку в формате SOME/IP, которая может либо потреблять эту полезную нагрузку, либо преобразовывать её в формат protobuf.
Укажите message_translation_mode: INTERPRET_AS_BYTES для события в файле сопоставления SOME/IP, чтобы обойти трансляцию. Пример см. в samples/some_ip/catalog/integration_test/byte_forward_someip.vsidl .
компромиссы между методами перевода
При выборе метода перевода следует учитывать следующие компромиссы:
Взаимодействие с системой: Другие службы SDV не могут интерпретировать байты, передаваемые в формате SOME/IP, без знания деталей исходного формата. Например, телеметрия SDV не может обрабатывать отдельные поля таких сообщений.
Дополнительные усилия: Преобразование исходных данных в формат SOME/IP требует дополнительных усилий от разработчика пакета услуг.
генератор библиотек
SDV предоставляет автоматический генератор для преобразования формата SOME/IP. Этот генератор создает библиотеки на основе доступных определений сообщений и сопоставлений для прямого преобразования без использования рефлексии. Пакеты служб, обрабатывающие пересылаемые байты SOME/IP, могут использовать сгенерированные библиотеки.
Рекомендация: Используйте генератор только в том случае, если ваш OEM-производитель определил критически важные для производительности события, которые не могут быть преобразованы в соответствии с требованиями к производительности вашего проекта. В таких случаях у вашего OEM-производителя уже должны быть как определение protobuf, так и сопоставление SOME/IP, используемые для преобразования на основе RTTI. Эта же конфигурация может служить входными данными для генератора. Для получения более подробной информации см. файл README.md в каталоге core_services/tools/someip_translation_generator/ .