Der Generator für die Messwertkonfiguration (Metrics Configuration Generator, MCG) validiert Messwertkonfigurationen, indem er Signalnamen prüft, Typüberprüfungen für Ausdrücke durchführt und Ausgabetypen ableitet. MCG benötigt Zugriff auf Protokollpuffer-Nachrichtendefinitionen (protobuf) für Fahrzeugsignale, um diese Aufgaben auszuführen.
In SDV werden Fahrzeugsignale und ‑dienste mit der Vehicle Service Interface Definition Language (VSIDL) definiert. VSIDL verwendet Protobuf-Dateien, um Nachrichten anzugeben. Diese Protobuf-Dateien bilden die Grundlage eines Signalkatalogs.
Damit Signaldefinitionen für MCG verfügbar sind, müssen Sie diese VSIDL-Protobuf-Dateien in ein Protobuf-FileDescriptorSet packen und in den MCG-Dienst hochladen. MCG verwendet den Begriff Vehicle Signal Catalog für diese hochgeladenen und versionierten Definitionssätze. Ein Vehicle Signal Catalog ist also die kompilierte, hochgeladene Form der Proto-Nachrichtendefinitionen in Ihrem VSIDL-Katalog.
Was ist ein Fahrzeugsignal-Katalog?
Ein Vehicle Signal Catalog (Fahrzeugsignal-Katalog) enthält Signaldefinitionen für die Validierung durch MCG, die als Protobuf FileDescriptorSet verpackt sind.
Im MCG werden Kataloge durch einen Versionsstring identifiziert, den Sie beim Hochladen zuweisen. So können Sie mehrere unterschiedliche Signaldefinitionssätze verwalten. Sie können beispielsweise verschiedene Katalogversionen für Software-Releases (v1.0, v1.1, v2.0) oder für verschiedene Fahrzeugmodelle oder Hardwarekonfigurationen (suv-my2025, sedan-my2025) verwalten. In jeder Messwertkonfiguration wird mit dem Feld vs_version auf einen bestimmten Katalog verwiesen, in dem die als Datenquellen verfügbaren Signale definiert sind. Außerdem enthält er Signaldefinitionen für die Typinferenz und ‑validierung.
Instanz von FileDescriptorSet erstellen
Wie unter Nachrichten und RPC-Dienste definieren beschrieben, werden Fahrzeugsignale als Protobuf-Nachrichten in Protobuf-Dateien definiert. Wenn Sie Teil eines SDV-Projekts sind, verwenden Sie die Protobuf-Dateien aus dem VSIDL-Katalog Ihres Projekts, um eine Instanz von FileDescriptorSet zu erstellen.
Wenn Sie einen Katalog für MCG erstellen möchten, bündeln Sie Ihre Protobuf-Dateien mit protoc in einer FileDescriptorSet Binärdatei. Wenn sich alle Ihre Protobuf-Dateien in einem Ordner befinden, führen Sie den folgenden Befehl aus, um vehicle_signals.pb zu generieren:
protoc --include_imports --descriptor_set_out=vehicle_signals.pb <var label="path to folder with .proto files">path/to/your/protos</var>/*.proto
Kataloge hochladen und verwalten
Wenn Sie Ihre Signaldefinitionsgruppe als Katalog hochladen, können Sie in Anfragen zur Messwertkonfiguration anhand des Versionsnamens darauf verweisen.
Katalogversion hinzufügen oder aktualisieren
Nachdem Sie die Katalogdatei vehicle_signals.pb generiert haben, können Sie sie über die MCG API-Endpunkte unter /api/v1/vs/ hochladen und verwalten. Für den Endpunkt zum Hinzufügen oder Aktualisieren eines Katalogs, POST /api/v1/vs/, muss der FileDescriptorSet als Base64-codierter String in der JSON-Nutzlast übergeben werden.
Verwenden Sie den Befehl base64, um vehicle_signals.pb für die API-Nutzung zu codieren. Das Flag -w 0 deaktiviert den Zeilenumbruch, sodass der codierte String in einer einzelnen Zeile angezeigt wird:
VEHICLE_SIGNALS_BASE64=$(base64 -w 0 vehicle_signals.pb)
Wenn Sie vehicle_signals.pb als neue Version (z. B. v1.0) hochladen oder eine vorhandene Version aktualisieren möchten, senden Sie eine POST-Anfrage mit dem base64-codierten Inhalt an den /api/v1/vs/-Endpunkt mit einem eindeutigen Versionsnamen.
Der Anfragetext muss ein JSON-Objekt sein, das den String version und den base64-codierten String vehicle_signals enthält:
{
"version": "v1.0",
"vehicle_signals": "Q2lSb1pYB3jCRkRt..."
}
Das folgende Beispiel zeigt, wie vehicle_signals.pb als Version v1.0 mit curl hochgeladen wird. Im Beispiel wird printf verwendet, um die JSON-Nutzlast zu erstellen, und sie wird an curl weitergeleitet. So muss keine JSON-Datei mit einem sehr langen einzeiligen Base64-String erstellt werden:
# 1. Encode the FileDescriptorSet to a Base64 string
VEHICLE_SIGNALS_BASE64=$(base64 -w 0 vehicle_signals.pb)
# 2. Define catalog version and build JSON payload
VERSION="<var label="catalog version">v1.0</var>"
JSON_PAYLOAD=$(jq -n --arg v "$VERSION" --arg d "$VEHICLE_SIGNALS_BASE64" \
'{version: $v, vehicle_signals: $d}')
# 3. POST the data to the API endpoint
echo "$JSON_PAYLOAD" | curl -H "Content-Type: application/json" --data-binary @- "$SERVICE_URL/api/v1/vs/"
Versionen auflisten und löschen
Sie können alle verfügbaren Katalogversionen auflisten oder eine bestimmte Version löschen:
Versionen auflisten: Wenn Sie eine Liste der IDs für alle hochgeladenen Katalogversionen aufrufen möchten, senden Sie eine
GET-Anfrage an/api/v1/vs/. Siehe GET /api/v1/vs/.Version löschen: Wenn Sie einen Katalog entfernen möchten, senden Sie eine
DELETE-Anfrage an/api/v1/vs/{version}. Dabei ist{version}die Kennung, die beim Hochladen des Katalogs angegeben wurde (z. B.v1.0). Weitere Informationen finden Sie unter DELETE /api/v1/vs/{version}.
Ausführliche Informationen zu allen Endpunkten finden Sie in der API-Referenz.
Katalog in Messwertkonfigurationen verwenden
Wenn Sie eine Katalogversion hochgeladen haben, verweisen Sie in Messwertkonfigurationen mit dem Feld vs_version darauf:
{ "vs_version": "v1.0", ... }
Wenn dieses JSON-Objekt an die Endpunkte /api/v1/generate_metrics_config oder /api/v1/validate_metrics_config gesendet wird, verwendet MCG die Signaldaten aus dem v1.0-Katalog, um die Validierung und Typinferenz durchzuführen.