Rust-Telemetrie-Clientbibliothek

Ein Telemetrieclient ist eine App, die mit dem Telemetriedienst interagiert, um die Datenerhebung zu konfigurieren, Messwertkonfigurationen zu verwalten und Telemetrieberichte zu empfangen. Clients verwenden die Rust-Bibliothek libsdv_telemetry_rust_wrapper, um mit dem Dienst zu interagieren.

Übersicht über die API-Oberfläche

Die API-Dokumentation finden Sie in der API-Referenz der Rust-Telemetrie-Clientbibliothek.

Die Bibliothek bietet eine Rust-Schnittstelle für die Interaktion mit dem zugrunde liegenden Telemetriedienst. Die Bibliothek ist für die folgenden Bereiche zuständig:

  • Lebenszyklusverwaltung des Dienstes:Verwaltet die Verbindung zum Telemetriedienst.

    • Initialisierung:Stellt mit einem blockierenden Aufruf eine Verbindung zum Dienst her. Nach der Verbindung können Sie Callbacks registrieren, um asynchrone Benachrichtigungen zum Systemstatus und zur Verfügbarkeit neuer Berichte zu erhalten.
    • Herunterfahren:Bietet eine Möglichkeit, die Verbindung zum Dienst ordnungsgemäß zu trennen und alle zugehörigen Ressourcen zu bereinigen.
  • Lebenszyklusverwaltung der Messwertkonfiguration: Bietet Kontrolle über den Lebenszyklus von Messwertkonfigurationen.

    • Verwaltung:Clients können Messwertkonfigurationen hinzufügen, entfernen, aktivieren und deaktivieren.
    • Prüfung:Sie können die Liste der aktiven und inaktiven Konfigurationen abfragen.
  • Berichtsverarbeitung und ‑abruf:Erleichtert den Zugriff auf die vom Telemetriedienst erhobenen Daten.

    • Benachrichtigungen:Benachrichtigt Clients asynchron über einen Callback, wenn ein neuer Messwertbericht zum Abruf bereit ist.
    • Datenzugriff:Bietet Methoden zum Abrufen bestimmter Berichte anhand ihrer UUID und zum Abrufen einer Liste aller verfügbaren Berichte.
  • Status- und Fehlerberichte:Bietet Einblicke in den Zustand und Status des Telemetriedienstes.

    • Asynchrone Statusaktualisierungen:Clients erhalten über einen speziellen Callback Statusaktualisierungen in Echtzeit, einschließlich Fehlern und Warnungen. So können Sie eine robuste Fehlerbehandlung implementieren und den Status des Dienstes überwachen.

Nutzungsbeispiel

Eine vollständige, kompilierbare App, die den gesamten Lebenszyklus veranschaulicht, finden Sie in der Beispielclientimplementierung: samples/telemetry/client/rust/telemetry_client/telemetry_rust_c_client.rs.

Der Beispielclient ist ein Befehlszeilenprogramm, das mit der vollständigen Bibliotheks-API interagiert. Das Beispiel zeigt, wie die Callback-basierte Schnittstelle der Bibliothek mithilfe von Channels mit einer asynchronen Rust-Laufzeit (Tokio) verbunden wird.

Der Client führt die folgende Abfolge von Vorgängen aus:

  1. Stellt eine Verbindung zum Telemetriedienst her und registriert Callbacks für Statusaktualisierungen und Benachrichtigungen zu Messwertberichten.
  2. Liest Messwertkonfigurationsdateien, die als Befehlszeilenargumente bereitgestellt werden, und fügt die Konfigurationen dann im Dienst hinzu und aktiviert sie.
  3. Verwendet eine Hintergrundaufgabe, um asynchrone Statusmeldungen (Fehler oder Warnungen) zu protokollieren, die vom Dienst empfangen werden.
  4. Verwaltet die Datenabrufschleife, indem die folgenden Aktionen ausgeführt werden:
    • Wartet auf eine Benachrichtigung, dass ein Messwertbericht bereit ist.
    • Ruft die vollständigen Daten des Messwertberichts ab.
    • Optional wird der Bericht als binäre Protocol Buffer-Datei auf die Festplatte geschrieben.
  5. Entfernt die Messwertkonfiguration aus dem Dienst, sobald der erste Messwertbericht erstellt wurde. Dies ist eine Demoimplementierung. Ihre eigenen Clients können beliebig viele Berichte empfangen.
  6. Schließt die Verbindung zum Dienst ordnungsgemäß.