Sources de données

La télémétrie SDV est compatible avec plusieurs types de sources de données. Cette page présente ces types et les fonctionnalités compatibles avec la télémétrie pour chaque type de source de données.

Des exemples de code pour les implémentations de sources de données sont disponibles dans le répertoire system/software_defined_vehicle/samples/telemetry.

Définition de la source de données dans les configurations de métriques

Les configurations de métriques définissent une ou plusieurs sources de données à partir desquelles collecter des métriques. Chaque source de données est identifiée par son source_identifier. Le format source_identifier dépend de la source de données :

Source de données Format Description Exemples
Service SDV Nom du message Protobuf Nom complet du message protobuf. Si le service comporte plusieurs instances, ajoutez le nom de l'unité de service en le séparant par une barre verticale (|). "com.sdv.google.example.TellTale|com-sdv-google-example-tell-tale-status-hibeam"
Nom complet de l'instance (FQIN) avec le nom de l'unité de service Le FQIN et le nom de l'unité de service sont séparés par une barre verticale (|). "vm-cdc:com.google.android.sdv.pubsub.SomeService/instance1|tire-pressure"
Éditeur basé sur le Registre des éditeurs configurables Nom de l'éditeur Le serviceName exact utilisé pour enregistrer l'éditeur dans le registre des éditeurs configurables. Toute chaîne est valide.

Pour chaque source de données, vous pouvez utiliser les options suivantes pour paramétrer la récupération des messages. Vous pouvez définir la même source de données plusieurs fois avec différentes options dans la même configuration de métriques. Par exemple, vous pouvez faire en sorte qu'une partie de votre traitement Edge utilise un intervalle de sous-échantillonnage différent de celui des autres parties de votre traitement Edge.

Option Type Description
connection_type SUBSCRIPTION ou ON_DEMAND Si la valeur est définie sur SUBSCRIPTION, le service de télémétrie s'abonne à la source de données. Si la valeur est définie sur ON_DEMAND, le service de télémétrie récupère les messages de la source de données uniquement à la demande.
configuration google.protobuf.Any Si cette option est définie, le service de télémétrie transmet l'objet de configuration à la source de données lors de la communication avec celle-ci.
sub_sampling_interval google.protobuf.Duration Si cette option est définie, les messages sont sous-échantillonnés de sorte que le service de télémétrie traite un message au maximum toutes les sub_sampling_interval secondes.
fetch_last_message bool Si cette option est définie, le service de télémétrie récupère le dernier message publié lors de l'abonnement à la source de données, même si ce message a été publié dans le passé.

Selon le type de source de données (voir les sections suivantes), seul un sous-ensemble de paramètres est compatible avec le service de télémétrie. Le tableau suivant fournit une vue d'ensemble.

Option Service RPC SDV Service SDV de publication/abonnement (pub/sub) Éditeurs basés sur le registre d'éditeurs configurables
connection_type: SUBSCRIPTION Compatible1 Compatible Compatible
connection_type: ON_DEMAND Compatible2 Compatible Disponible 3
configuration Compatible Non applicable Compatible
sub_sampling_interval Non compatible Compatible 4 Non compatible
fetch_last_message Non compatible Compatible5 Non compatible
1 Compatible si vous implémentez la méthode CreateSubscription.
2 Compatible si vous implémentez la méthode GetLatestMessage.
3 Compatible si PublisherInfo.supportsGet est true.
4 Compatible avec connection_type: SUBSCRIPTION, non applicable à connection_type: ON_DEMAND.
5 Compatible avec connection_type: SUBSCRIPTION, non applicable à connection_type: ON_DEMAND.

Services SDV (via la pile de communication SDV)

Le service de télémétrie peut collecter des données à partir d'autres services SDV. Les services SDV RPC et pub/sub sont acceptés. Étant donné que le service de télémétrie ne connaît pas la liste des services auxquels il s'abonnera au moment de la compilation, il s'appuie sur la réflexion Protobuf pour décoder les messages reçus des services SDV.

Les services SDV ne fournissent pas de métadonnées de réflexion par défaut. Pour qu'un service SDV puisse être utilisé comme source de données de télémétrie, vous devez activer la génération de configuration d'exécution du catalogue VSIDL du service. Pour en savoir plus, consultez le guide du fournisseur VSIDL destiné aux développeurs de packs de services.

À des fins de test et d'évaluation uniquement, vous pouvez définir l'option register_reflection_metadata sur true dans la définition du bundle de services. Pour en savoir plus, consultez Bundle de services.

Services SDV RPC

La télémétrie est limitée pour les services SDV RPC. Pour en savoir plus, consultez Définir des services RPC. Pour collecter des données à partir d'un service SDV RPC, le service doit exposer l'une ou les deux méthodes RPC suivantes :

  • CreateSubscription renvoie un flux de réponses définies par l'utilisateur :

    rpc CreateSubscription(<configuration>) returns (stream <response>)
    
  • GetLatestMessage renvoie une réponse définie par l'utilisateur :

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

Vous pouvez utiliser l'argument de configuration pour paramétrer le comportement de votre source de données, par exemple pour demander une fréquence de publication différente ou pour sélectionner l'entité à laquelle vous souhaitez vous abonner (par exemple, le pneu dont vous souhaitez lire la pression).

Lorsque vous définissez un service RPC SDV comme source de données dans une configuration de métriques, vous pouvez spécifier une valeur configuration dans la définition de la source de données, qui est utilisée comme argument pour ce RPC. Le service de télémétrie gère l'objet de configuration de manière transparente et transmet tout ce que vous définissez.

Le type de l'argument de configuration pour les deux méthodes peut être google.protobuf.Any ou un type défini par l'utilisateur. Si vous fournissez les deux méthodes, les types d'arguments doivent être identiques. Si vous n'avez pas besoin d'argument de configuration pour ces méthodes RPC, utilisez google.protobuf.Empty.

En fonction de la connection_type spécifiée dans la définition de la source de données de la configuration des métriques, le service de télémétrie appelle CreateSubscription (pour connection_type: SUBSCRIPTION) ou GetLatestMessage (pour connection_type: ON_DEMAND).

Services SDV Pub/Sub

La télémétrie est entièrement compatible avec la surveillance des canaux Pub/Sub définis dans VSIDL et exposés par les services SDV, sans aucune configuration supplémentaire requise. Pour en savoir plus, consultez Ajouter un éditeur à un bouquet de services.

En plus de l'abonnement aux canaux Pub/Sub, la télémétrie permet également de récupérer à la demande le dernier message publié sur un canal.

Registre d'éditeurs configurable

En plus de collecter des données à partir des services SDV à l'aide de la pile de communication SDV, la télémétrie permet de collecter des données à partir d'applications et de services qui enregistrent des éditeurs dans le registre d'éditeurs configurables du service de télémétrie. Cette fonctionnalité est particulièrement utile sur IVI, où la pile de communication SDV n'est pas disponible.

Le registre des éditeurs configurables peut également être utile pour le débogage et le prototypage sans avoir à écrire de bundles de services SDV. Pour en savoir plus, consultez Registre des éditeurs configurable.