Fontes de dados

A telemetria do SDV oferece suporte a vários tipos de fontes de dados. Esta página oferece uma visão geral desses tipos e dos recursos que a telemetria oferece suporte por tipo de fonte de dados.

Exemplos de código para implementações de fontes de dados estão disponíveis no diretório system/software_defined_vehicle/samples/telemetry.

Definição da fonte de dados nas configurações de métricas

As configurações de métricas definem uma ou mais fontes de dados para coletar métricas Cada fonte de dados é identificada pelo source_identifier. O formato source_identifier depende da fonte de dados:

Fonte de dados Formato Descrição Exemplos
Serviço SDV Nome da mensagem do Protobuf O nome totalmente qualificado da mensagem do Protobuf. Se o serviço tiver várias instâncias, anexe o nome da unidade de serviço separado por uma barra vertical (|). "com.sdv.google.example.TellTale|com-sdv-google-example-tell-tale-status-hibeam"
Nome totalmente qualificado da instância (FQIN, na sigla em inglês) com o nome da unidade de serviço O FQIN e o nome da unidade de serviço separados por uma barra vertical (|). "vm-cdc:com.google.android.sdv.pubsub.SomeService/instance1|tire-pressure"
Publisher baseado no registro de publisher configurável Nome do publisher O serviceName exato usado para registrar o publisher no registro de publisher configurável. Qualquer string é válida.

Para cada fonte de dados, é possível usar as opções a seguir para parametrizar a recuperação de mensagens. É possível definir a mesma fonte de dados várias vezes com opções diferentes na mesma configuração de métricas. Por exemplo, você pode ter uma parte do processamento de borda usando um intervalo de subamostragem diferente de outras partes do processamento de borda.

Opção Tipo Descrição
connection_type SUBSCRIPTION ou ON_DEMAND Se definido como SUBSCRIPTION, o serviço de telemetria se inscreve na fonte de dados. Se definido como ON_DEMAND, o serviço de telemetria busca mensagens da fonte de dados somente sob demanda.
configuration google.protobuf.Any Se definido, o serviço de telemetria transmite o objeto de configuração para a fonte de dados ao se comunicar com ela.
sub_sampling_interval google.protobuf.Duration Se definido, as mensagens são subamostradas para que o serviço de telemetria processe uma mensagem no máximo a cada duração sub_sampling_interval.
fetch_last_message bool Se definido, o serviço de telemetria recupera a última mensagem publicada ao se inscrever na fonte de dados, mesmo que essa mensagem tenha sido publicada no passado.

Dependendo do tipo de fonte de dados (consulte as seções a seguir), apenas um subconjunto de parâmetros é compatível com o serviço de telemetria. A tabela a seguir oferece uma visão geral.

Opção Serviço SDV de RPC Serviço SDV de publicação/assinatura (pub/sub) Publishers baseados no registro de publisher configurável
connection_type: SUBSCRIPTION Compatível 1 Compatível Compatível
connection_type: ON_DEMAND Compatível 2 Compatível Compatível 3
configuration Compatível Não relevante Compatível
sub_sampling_interval Indisponível Compatível 4 Indisponível
fetch_last_message Indisponível Compatível 5 Indisponível
1 Compatível se você implementar o método CreateSubscription.
2 Compatível se você implementar o método GetLatestMessage.
3 Compatível se PublisherInfo.supportsGet for true.
4 Compatível com connection_type: SUBSCRIPTION, não relevante para connection_type: ON_DEMAND.
5 Compatível com connection_type: SUBSCRIPTION, não relevante para connection_type: ON_DEMAND.

Serviços SDV (pela pilha de comunicação do SDV)

O serviço de telemetria pode coletar dados de outros serviços SDV. Os serviços SDV de RPC e pub/sub são compatíveis. Como o serviço de telemetria não sabe a lista de serviços a que ele vai se inscrever no tempo de build, ele depende da reflexão do Protobuf para decodificar as mensagens recebidas dos serviços SDV.

Os serviços SDV não fornecem metadados de reflexão por padrão. Para tornar um serviço SDV utilizável como uma fonte de dados de telemetria, é necessário ativar a geração de configuração de tempo de execução do catálogo VSIDL do serviço. Para mais informações, consulte o Guia do provedor de VSIDL para desenvolvedores de pacotes de serviços.

Para fins de teste e avaliação, defina a opção register_reflection_metadata como true na definição do pacote de serviços. Para mais informações, consulte Pacote de serviços.

Serviços SDV de RPC

A telemetria tem suporte limitado para serviços SDV de RPC. Para mais informações, consulte Definir serviços de RPC. Para coletar dados de um serviço SDV de RPC, o serviço precisa expor um ou ambos os métodos de RPC a seguir:

  • CreateSubscription retorna um fluxo de respostas definidas pelo usuário:

    rpc CreateSubscription(<configuration>) returns (stream <response>)
    
  • GetLatestMessage retorna uma resposta definida pelo usuário:

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

É possível usar o argumento de configuração para parametrizar o comportamento da fonte de dados, por exemplo, para solicitar uma frequência de publicação diferente ou para selecionar a entidade a que você quer se inscrever (por exemplo, qual pneu ler a pressão).

Ao definir um serviço SDV de RPC como uma fonte de dados em uma configuração de métricas, é possível especificar um valor configuration na definição da fonte de dados, que é usado como argumento para esse RPC. O serviço de telemetria processa o objeto de configuração de maneira transparente e transmite o que você define.

O tipo do argumento de configuração para ambos os métodos pode ser google.protobuf.Any ou um tipo definido pelo usuário. Se você fornecer os dois métodos, os tipos de argumento precisarão ser idênticos. Se você não precisar de um argumento de configuração para esses métodos de RPC, use google.protobuf.Empty.

Dependendo do connection_type especificado na definição da fonte de dados da configuração de métricas, o serviço de telemetria chama CreateSubscription (para connection_type: SUBSCRIPTION) ou GetLatestMessage (para connection_type: ON_DEMAND).

Serviços SDV de pub/sub

A telemetria oferece suporte total para monitorar canais de pub/sub definidos no VSIDL exposto por serviços SDV sem necessidade de configuração adicional. Para mais informações, consulte Adicionar um publisher a um pacote de serviços.

Além de se inscrever em canais de pub/sub, a telemetria também oferece suporte à recuperação sob demanda da última mensagem publicada em um canal.

Registro de publisher configurável

Além de coletar dados de serviços SDV usando a pilha de comunicação do SDV, a telemetria oferece suporte à coleta de dados de aplicativos e serviços que registram publishers no registro de publisher configurável do serviço de telemetria. Esse recurso é mais útil no IVI, em que a pilha de comunicação do SDV não está disponível.

O registro de publisher configurável também pode ser útil para depuração e prototipagem sem precisar gravar pacotes de serviços SDV. Para mais informações, consulte Registro de publisher configurável.