SDV Telemetry obsługuje wiele typów źródeł danych. Na tej stronie znajdziesz omówienie tych typów oraz informacje o funkcjach, które Telemetry obsługuje w przypadku poszczególnych typów źródeł danych.
Przykładowy kod implementacji źródeł danych jest dostępny w katalogu system/software_defined_vehicle/samples/telemetry.
Definicja źródła danych w konfiguracjach danych
Konfiguracje danych określają co najmniej 1 źródło danych, z którego mają być zbierane dane. Każde źródło danych jest identyfikowane przez swój source_identifier. Format source_identifier zależy od źródła danych:
| Źródło danych | Format | Opis | Przykłady |
|---|---|---|---|
| Usługa SDV | Nazwa wiadomości Protobuf | Pełna nazwa komunikatu protobuf. Jeśli usługa ma wiele instancji, dołącz nazwę jednostki usługi oddzieloną kreską pionową (|). |
"com.sdv.google.example.TellTale|com-sdv-google-example-tell-tale-status-hibeam"
|
| Pełna i jednoznaczna nazwa instancji (FQIN) z nazwą jednostki usługi |
FQIN i nazwa jednostki usługi oddzielone znakiem kreski pionowej (|).
|
"vm-cdc:com.google.android.sdv.pubsub.SomeService/instance1|tire-pressure"
|
|
| Wydawca oparty na rejestrze wydawców z możliwością konfiguracji | Nazwa wydawcy | Dokładny serviceName użyty do zarejestrowania wydawcy w konfigurowanym rejestrze wydawców. |
Prawidłowy jest dowolny ciąg znaków. |
W przypadku każdego źródła danych możesz użyć tych opcji, aby sparametryzować pobieranie wiadomości. W tej samej konfiguracji wskaźników możesz zdefiniować to samo źródło danych kilka razy z różnymi opcjami. Możesz na przykład ustawić, aby część przetwarzania na urządzeniu brzegowym korzystała z innego interwału próbkowania niż pozostałe części.
| Opcja | Typ | Opis |
|---|---|---|
connection_type |
SUBSCRIPTION lub ON_DEMAND |
Jeśli ta opcja ma wartość SUBSCRIPTION, usługa telemetrii subskrybuje źródło danych. Jeśli ma wartość ON_DEMAND, usługa telemetrii pobiera wiadomości ze źródła danych tylko na żądanie. |
configuration |
google.protobuf.Any |
Jeśli ta opcja jest ustawiona, usługa telemetrii przekazuje obiekt konfiguracji do źródła danych podczas komunikacji z nim. |
sub_sampling_interval |
google.protobuf.Duration |
Jeśli ta opcja jest ustawiona, wiadomości są próbkowane, dzięki czemu usługa telemetrii przetwarza wiadomość co najwyżej co sub_sampling_interval. |
fetch_last_message |
bool |
Jeśli ta opcja jest ustawiona, usługa telemetrii pobiera ostatnią opublikowaną wiadomość podczas subskrybowania źródła danych, nawet jeśli została ona opublikowana w przeszłości. |
W zależności od typu źródła danych (patrz kolejne sekcje) usługa telemetrii obsługuje tylko podzbiór parametrów. Poniższa tabela zawiera przegląd.
| Opcja | Usługa RPC SDV | Usługa SDV typu publikowanie-subskrypcja (pub/sub) | Wydawcy korzystający z konfigurowanego rejestru wydawców |
|---|---|---|---|
connection_type: SUBSCRIPTION |
Obsługiwane 1 | Obsługiwane | Obsługiwane |
connection_type: ON_DEMAND |
Obsługiwane 2 | Obsługiwane | Obsługiwane 3 |
configuration |
Obsługiwane | Nie dotyczy | Obsługiwane |
sub_sampling_interval |
Nieobsługiwane | Obsługiwane4 | Nieobsługiwane |
fetch_last_message |
Nieobsługiwane | Obsługiwane5 | Nieobsługiwane |
CreateSubscription.GetLatestMessage.PublisherInfo.supportsGet ma wartość true.connection_type: SUBSCRIPTION, nie dotyczy connection_type: ON_DEMAND.connection_type: SUBSCRIPTION, nie dotyczy connection_type: ON_DEMAND.Usługi SDV (za pomocą stosu komunikacyjnego SDV)
Usługa telemetrii może zbierać dane z innych usług SDV. Obsługiwane są zarówno usługi SDV RPC, jak i pub/sub. Usługa Telemetry nie zna listy usług, do których będzie subskrybować w czasie kompilacji, dlatego do dekodowania wiadomości otrzymywanych z usług SDV używa odbicia Protobuf.
Usługi SDV domyślnie nie udostępniają metadanych odbicia. Aby usługa SDV mogła być używana jako źródło danych telemetrycznych, musisz włączyć generowanie konfiguracji środowiska wykonawczego katalogu VSIDL usługi. Więcej informacji znajdziesz w przewodniku po VSIDL dla deweloperów pakietów usług.
Na potrzeby testowania i oceny możesz zamiast tego ustawić opcję register_reflection_metadata na true w definicji pakietu usług. Więcej informacji znajdziesz w sekcji Pakiet usług.
Usługi RPC SDV
Telemetria ma ograniczoną obsługę usług RPC SDV. Więcej informacji znajdziesz w artykule Definiowanie usług RPC. Aby zbierać dane z usługi SDV RPC, usługa musi udostępniać co najmniej jedną z tych metod RPC:
CreateSubscriptionzwraca strumień odpowiedzi zdefiniowanych przez użytkownika:rpc CreateSubscription(<configuration>) returns (stream <response>)GetLatestMessagezwraca odpowiedź zdefiniowaną przez użytkownika:rpc GetLatestMessage(<configuration>) returns (<response>)
Argumentu konfiguracyjnego możesz użyć do sparametryzowania działania źródła danych, np. aby poprosić o inną częstotliwość publikowania lub wybrać podmiot, do którego chcesz się subskrybować (np. z której opony odczytywać ciśnienie).
Podczas definiowania usługi RPC SDV jako źródła danych w konfiguracji wskaźników możesz określić configurationwartość w definicji źródła danych, która jest używana jako argument tego wywołania RPC. Usługa Telemetry obsługuje obiekt konfiguracji w sposób przejrzysty i przekazuje wszystko, co zdefiniujesz.
Typ argumentu konfiguracji w przypadku obu metod może być typem google.protobuf.Any lub typem zdefiniowanym przez użytkownika. Jeśli podasz obie metody, typy argumentów muszą być identyczne. Jeśli nie potrzebujesz argumentu konfiguracji dla tych metod RPC, użyj google.protobuf.Empty.
W zależności od connection_type określonego w definicji źródła danych konfiguracji wskaźników usługa Telemetry wywołuje CreateSubscription (w przypadku connection_type: SUBSCRIPTION) lub GetLatestMessage (w przypadku connection_type: ON_DEMAND).
Usługi SDV Pub/Sub
Telemetria w pełni obsługuje monitorowanie kanałów publikowania/subskrypcji zdefiniowanych w VSIDL udostępnianych przez usługi SDV bez konieczności dodatkowej konfiguracji. Więcej informacji znajdziesz w artykule Dodawanie wydawcy do pakietu usług.
Oprócz subskrybowania kanałów pub/sub usługa Telemetry obsługuje też pobieranie na żądanie najnowszej wiadomości opublikowanej na kanale.
Rejestr wydawców z możliwością konfiguracji
Oprócz zbierania danych z usług SDV za pomocą stosu komunikacyjnego SDV telemetria obsługuje zbieranie danych z aplikacji i usług, które rejestrują wydawców w rejestrze wydawców konfigurowanym przez usługę telemetrii. Ta funkcja jest najbardziej przydatna w przypadku IVI, gdzie stos komunikacyjny SDV jest niedostępny.
Konfigurowany rejestr wydawców może być też przydatny do debugowania i tworzenia prototypów bez konieczności pisania pakietów usług SDV. Więcej informacji znajdziesz w artykule Konfigurowalny rejestr wydawców.