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 | Не поддерживается |
CreateSubscription .GetLatestMessage .PublisherInfo.supportsGet имеет true .connection_type: SUBSCRIPTION , не применимо для connection_type: ON_DEMAND .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. Для получения дополнительной информации см. раздел «Настраиваемый реестр издателей» .