Источники данных

SDV Telemetry поддерживает несколько типов источников данных. На этой странице представлен обзор этих типов и функций, которые поддерживает Telemetry для каждого типа источника данных.

Примеры кода для реализации источников данных доступны в каталоге system/software_defined_vehicle/samples/telemetry .

Определение источника данных в конфигурациях метрик

В настройках метрик определяется один или несколько источников данных для сбора метрик. Каждый источник данных идентифицируется своим source_identifier . Формат source_identifier зависит от источника данных:

Источник данных Формат Описание Примеры
Сервис SDV Название сообщения Protobuf Полное имя сообщения protobuf. Если у службы несколько экземпляров, добавьте имя блока службы, разделённое символом вертикальной черты ( | ). "com.sdv.google.example.TellTale|com-sdv-google-example-tell-tale-status-hibeam"
Полное имя экземпляра ( FQIN ) с именем сервисного подразделения FQIN и название сервисного блока, разделённые вертикальной чертой ( | ). "vm-cdc:com.google.android.sdv.pubsub.SomeService/instance1|tire-pressure"
Настраиваемый издатель на основе реестра издателей Название издателя Точное serviceName , использованное для регистрации издателя в настраиваемом реестре издателей. Допустима любая строка.

Для каждого источника данных можно использовать следующие параметры для настройки извлечения сообщений. Вы можете определить один и тот же источник данных несколько раз с разными параметрами в одной и той же конфигурации метрик. Например, вы можете настроить обработку данных на границе сети с использованием другого интервала субдискретизации, чем другие части обработки данных на границе сети.

Вариант Тип Описание
connection_type SUBSCRIPTION или ON_DEMAND Если установлено значение SUBSCRIPTION , служба телеметрии подписывается на источник данных. Если установлено значение ON_DEMAND , служба телеметрии получает сообщения из источника данных только по запросу.
configuration google.protobuf.Any Если эта опция включена, служба телеметрии передает объект конфигурации источнику данных при взаимодействии с ним.
sub_sampling_interval google.protobuf.Duration Если этот параметр задан, сообщения обрабатываются с использованием субдискретизации, так что служба телеметрии обрабатывает сообщение не чаще, чем через интервал sub_sampling_interval .
fetch_last_message bool Если эта опция включена, служба телеметрии получает последнее опубликованное сообщение при подписке на источник данных, даже если это сообщение было опубликовано ранее.

В зависимости от типа источника данных (см. следующие разделы) служба телеметрии поддерживает лишь часть параметров. В следующей таблице представлен общий обзор.

Вариант Сервис RPC SDV Сервис публикации-подписки (pub/sub) SDV Настраиваемые издатели на основе реестра издателей
connection_type: SUBSCRIPTION Поддерживается 1 Поддерживается Поддерживается
connection_type: ON_DEMAND Поддерживается 2 Поддерживается Поддерживается 3
configuration Поддерживается Непригодный Поддерживается
sub_sampling_interval Не поддерживается Поддерживается 4 Не поддерживается
fetch_last_message Не поддерживается Поддерживается 5 Не поддерживается
1. Поддерживается, если вы реализуете метод CreateSubscription .
2. Поддерживается, если вы реализуете метод GetLatestMessage .
3. Поддерживается, если PublisherInfo.supportsGet имеет true .
4. Поддерживается для connection_type: SUBSCRIPTION , не применимо для connection_type: ON_DEMAND .
5. Поддерживается для connection_type: SUBSCRIPTION , не применимо для connection_type: ON_DEMAND .

Сервисы SDV (через коммуникационный стек SDV)

Служба телеметрии может собирать данные от других служб SDV. Поддерживаются как RPC, так и службы SDV с моделью публикации/подписки. Поскольку служба телеметрии не знает список служб, на которые она будет подписываться во время сборки, она использует рефлексию Protobuf для декодирования сообщений, полученных от служб SDV.

Сервисы SDV по умолчанию не предоставляют метаданные отражения. Чтобы сделать сервис SDV пригодным для использования в качестве источника телеметрических данных, необходимо включить генерацию конфигурации во время выполнения для каталога VSIDL сервиса. Дополнительную информацию см. в Руководстве по поставщикам VSIDL для разработчиков пакетов сервисов .

Вместо этого, исключительно в целях тестирования и оценки, вы можете установить параметр register_reflection_metadata в true в определении пакета служб. Для получения дополнительной информации см. раздел «Пакет служб» .

RPC SDV сервисы

Функция телеметрии имеет ограниченную поддержку служб RPC SDV. Для получения дополнительной информации см. раздел «Определение служб RPC» . Для сбора данных из службы RPC SDV служба должна предоставлять один или оба из следующих методов RPC:

  • CreateSubscription возвращает поток заданных пользователем ответов:

    rpc CreateSubscription(<configuration>) returns (stream <response>)
    
  • GetLatestMessage возвращает заданный пользователем ответ:

    rpc GetLatestMessage(<configuration>) returns (<response>)
    

С помощью аргумента конфигурации можно параметризовать поведение источника данных, например, запросить другую частоту публикации или выбрать объект, на который вы хотите подписаться (например, с какой шины считывать показания давления).

При определении службы RPC SDV в качестве источника данных в конфигурации метрик можно указать значение configuration в определении источника данных, которое используется в качестве аргумента для этого RPC. Служба телеметрии обрабатывает объект конфигурации прозрачно и передает все, что вы определили.

Тип аргумента конфигурации для обоих методов может быть либо google.protobuf.Any , либо определяемым пользователем типом. Если вы предоставляете оба метода, типы аргументов должны быть идентичными. Если для этих методов RPC не требуется аргумент конфигурации, используйте google.protobuf.Empty .

В зависимости от параметра connection_type указанного в определении источника данных конфигурации метрик, служба телеметрии вызывает либо CreateSubscription (для connection_type: SUBSCRIPTION ), либо GetLatestMessage (для connection_type: ON_DEMAND ).

Услуги Pub/sub SDV

Телеметрия полностью поддерживает мониторинг каналов публикации/подписки, определенных в VSIDL и предоставляемых службами SDV, без необходимости дополнительной настройки. Для получения дополнительной информации см. раздел «Добавление издателя в пакет служб» .

Помимо подписки на каналы публикации/подписки, Telemetry также поддерживает получение по запросу последнего сообщения, опубликованного в канале.

Настраиваемый реестр издателей

Помимо сбора данных от служб SDV с использованием стека связи SDV, Telemetry поддерживает сбор данных от приложений и служб, которые регистрируют издателей в настраиваемом реестре издателей службы Telemetry. Эта возможность наиболее полезна на IVI, где стек связи SDV недоступен.

Настраиваемый реестр издателей также может быть полезен для отладки и прототипирования без необходимости написания пакетов служб SDV. Для получения дополнительной информации см. раздел «Настраиваемый реестр издателей» .