Biblioteka konfigurowalnego rejestru wydawców

Biblioteka Configurable Publisher Registry umożliwia tworzenie niestandardowych wydawców telemetrii i rejestrowanie ich w usłudze telemetrii za pomocą Configurable Publisher Registry. Biblioteka abstrahuje od interfejsu Binder i serializacji oraz deserializacji danych.

Omówienie interfejsu API

Biblioteka udostępnia interfejsy specyficzne dla języka w językach Java i Rust do interakcji z bazowym rejestrem wydawców konfigurowalnych. Biblioteka odpowiada za te obszary:

  • Definicja wydawcy: udostępnia klasy bazowe w języku Java lub cechy w języku Rust, które określają zachowanie wydawcy.
    • Definicja metadanych: opisuje wydawcę, w tym jego nazwę i plik FileDescriptorSet protobuf, który definiuje opublikowane wiadomości. Więcej informacji znajdziesz w artykule Wiadomości samopisujące. Jeśli używasz języka Java, narzędzie do generowania deskryptorów protobuf w języku Java może pomóc Ci w wygenerowaniu metadanych deskryptora protobuf.
    • Produkcja danych: obsługuje logikę produkcji danych na podstawie subskrypcji lub na żądanie.
    • Obsługa konfiguracji: przetwarza opcjonalne argumenty konfiguracyjne skonfigurowane przez kampanię dotyczącą pomiarów podczas generowania danych.
  • Kodowanie i dekodowanie danych: oferuje mechanizmy konwertowania wiadomości i konfiguracji do formatu przewodowego i z niego.
    • Kodeki: obejmuje wbudowane i niestandardowe kodeki do serializacji i deserializacji danych.
  • Rejestracja i cykl życia wydawcy: zarządza połączeniem między wydawcą a usługą telemetrii.

Szczegółowe przykłady i kompletne, kompilowalne aplikacje, które pokazują pełny cykl życia, znajdziesz w odpowiednich plikach README.md w drzewie źródłowym:

  • Biblioteka Java: system/software_defined_vehicle/telemetry/sdk/java/configurable_publisher_registry/README.md

  • Przykład w języku Java: samples/telemetry/publishers/java/sample_ivi_sdk_publisher/README.md

  • Biblioteka Rust: system/software_defined_vehicle/telemetry/sdk/rust/configurable_publisher_registry/README.md

  • Przykład w języku Rust: samples/telemetry/publishers/rust/sample_getter_publisher/README.md