Каталоги автомобильных сигнальных устройств

Генератор конфигурации метрик (MCG) проверяет конфигурации метрик, сверяя имена сигналов, выполняя проверку типов выражений и определяя типы выходных данных. Для выполнения этих задач MCG необходим доступ к определениям сообщений протокола Protocol Buffer (protobuf) для сигналов транспортных средств.

В системе SDV сигналы и сервисы транспортного средства определяются с помощью языка определения интерфейса сервисов транспортного средства ( VSIDL ). VSIDL использует файлы protobuf для описания сообщений, и эти файлы protobuf составляют основу каталога сигналов.

Чтобы сделать определения сигналов доступными для MCG, необходимо упаковать эти файлы protobuf VSIDL в набор файлов protobuf FileDescriptorSet и загрузить его в сервис MCG. MCG использует термин «Каталог сигналов транспортных средств» для этих загруженных и версионированных наборов определений (по сути, каталог сигналов транспортных средств представляет собой скомпилированную и загруженную форму определений протоколов сообщений из вашего каталога VSIDL).

Что такое каталог автомобильных сигналов?

Каталог сигналов транспортных средств предоставляет MCG определения сигналов для проверки, упакованные в виде FileDescriptorSet в формате protobuf.

В MCG каталоги идентифицируются строкой версии, которую вы назначаете во время загрузки, что позволяет управлять несколькими различными наборами определений сигналов. Например, вы можете поддерживать разные версии каталога для выпусков программного обеспечения ( v1.0 , v1.1 , v2.0 ) или для разных моделей автомобилей или конфигураций оборудования ( suv-my2025 , sedan-my2025 ). Каждая конфигурация метрик использует поле vs_version для ссылки на конкретный каталог, который определяет сигналы, доступные в качестве источников данных, и предоставляет определения сигналов для определения типов и проверки.

Создайте экземпляр FileDescriptorSet.

Как описано в разделе «Определение сообщений и служб RPC» , сигналы транспортных средств определяются как сообщения protobuf в файлах protobuf. Если вы являетесь участником проекта SDV, используйте файлы protobuf из каталога VSIDL вашего проекта для создания экземпляра FileDescriptorSet .

Для создания каталога для MCG объедините ваши файлы protobuf в бинарный файл FileDescriptorSet с помощью protoc . Если все ваши файлы protobuf находятся в одной папке, выполните следующую команду для генерации файла vehicle_signals.pb :

protoc --include_imports --descriptor_set_out=vehicle_signals.pb <var label="path to folder with .proto files">path/to/your/protos</var>/*.proto

Загрузка и управление каталогами

Загрузка набора определений сигналов в виде каталога позволяет ссылаться на него по имени версии в запросах на настройку метрик.

Добавить или обновить версию каталога

После создания файла каталога vehicle_signals.pb вы можете загрузить его и управлять им, используя конечные точки API MCG по адресу /api/v1/vs/ . Конечная точка для добавления или обновления каталога, POST /api/v1/vs/, требует передачи FileDescriptorSet в виде строки, закодированной в base64, в полезной нагрузке JSON.

Для кодирования vehicle_signals.pb для использования в API используйте команду base64 . Флаг -w 0 отключает перенос строк, так что закодированная строка отображается на одной строке:

VEHICLE_SIGNALS_BASE64=$(base64 -w 0 vehicle_signals.pb)

Чтобы загрузить vehicle_signals.pb как новую версию (например, v1.0 ) или обновить существующую версию, отправьте POST запрос с содержимым, закодированным в base64, на конечную точку /api/v1/vs/ с уникальным именем версии.

Тело запроса должно представлять собой JSON-объект, содержащий строку version и строку vehicle_signals закодированную в base64:

{
  "version": "v1.0",
  "vehicle_signals": "Q2lSb1pYB3jCRkRt..."
}

В следующем примере показано, как загрузить vehicle_signals.pb как версию v1.0 с помощью curl . В примере используется printf для формирования полезной нагрузки JSON и передачи её в curl через конвейер, что позволяет избежать необходимости создания JSON-файла, содержащего очень длинную однострочную строку base64:

# 1. Encode the FileDescriptorSet to a Base64 string
VEHICLE_SIGNALS_BASE64=$(base64 -w 0 vehicle_signals.pb)

# 2. Define catalog version and build JSON payload
VERSION="<var label="catalog version">v1.0</var>"
JSON_PAYLOAD=$(jq -n --arg v "$VERSION" --arg d "$VEHICLE_SIGNALS_BASE64" \
  '{version: $v, vehicle_signals: $d}')

# 3. POST the data to the API endpoint
echo "$JSON_PAYLOAD" | curl -H "Content-Type: application/json" --data-binary @- "$SERVICE_URL/api/v1/vs/"

Список и удаление версий

Вы можете просмотреть все доступные версии каталога или удалить определенную версию:

  • Список версий: Чтобы просмотреть список идентификаторов всех загруженных версий каталога, отправьте GET запрос по адресу /api/v1/vs/ . См. GET /api/v1/vs/.

  • Удаление версии: Чтобы удалить каталог, отправьте запрос DELETE по адресу /api/v1/vs/{version} , где {version} — это идентификатор, предоставленный при загрузке каталога (например, v1.0 ). См. DELETE /api/v1/vs/{version}.

Подробную информацию обо всех конечных точках см. в справочнике API.

Используйте каталог в конфигурациях метрик.

При загрузке укажите версию каталога в настройках метрик, используя поле vs_version :

{ "vs_version": "v1.0", ... }

Когда этот JSON-объект отправляется на конечные точки /api/v1/generate_metrics_config или /api/v1/validate_metrics_config , MCG использует определения сигналов из каталога v1.0 для выполнения проверки и определения типов.