Stellt Anwendungen transport- und protokollbezogene Metadaten zu einer laufenden Diagnoseanforderung bereit.
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 4cec228b1decHerkunftOffene Fragen (1)
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Stellt Anwendungen transport- und protokollbezogene Metadaten zu einer laufenden Diagnoseanforderung bereit.
Die Klasse ara::diag::MetaInfo stellt Adaptive Applications relevante Metainformationen wie Quelladresse, Zieladresse und Protokollkontext einer laufenden Diagnoseanforderung bereit (AUTOSAR_AP_SWS_Diagnostics §7.3.1.1 „MetaInfo class“). Anwendungen fragen diese Werte während eines vom Diagnostic Management initiierten Callback-Aufrufs synchron über Inspektionsmethoden ab. Die garantierte Lebensdauer des Objekts ist dabei strikt auf die Ausführungszeit der aktiven Callback-Funktion beschränkt, weshalb ein Speichern über diesen Aufruf hinaus zu undefiniertem Verhalten führt ([SWS_DM_01345]).
Kontext
Die Klasse ara::diag::MetaInfo stellt einen standardisierten Mechanismus bereit, um transport- und protokollspezifische Metainformationen aus dem Diagnostic Management (DM) an interessierte Adaptive Applications zu übermitteln (AUTOSAR_AP_SWS_Diagnostics §7.3.1.1 „MetaInfo class“). In der AUTOSAR-Adaptive-Diagnosearchitektur agiert das DM als Vermittler zwischen externen Diagnose-Clients und den internen Funktionsclustern bzw. Applikationen. Trifft eine Diagnoseanforderung über ein UDS-Transportprotokoll oder SOVD ein, extrahiert das DM relevante Protokolldaten und reicht diese bei Methodenaufrufen an die Schnittstellen der Applikation weiter ([SWS_DM_02094]).
Zu den Kernaufgaben von ara::diag::MetaInfo gehört das Bereitstellen des Aufrufkontexts sowie spezifischer Schlüssel-Wert-Paare. Über die Schnittstelle erhalten Anwendungsdienste Auskunft über die Quelladresse (SA) des Diagnose-Clients mittels des Schlüssels kSA ([SWS_DM_02094]), die Zieladresse (TA) des Diagnoseservers über kTA ([SWS_DM_02095]) sowie die UDS-Adressierungsart (physikalisch oder funktional) über den Schlüssel kTAType ([SWS_DM_02096]). Der Aufrufkontext wird über den Typ ara::diag::MetaInfo::Context typisiert ([SWS_DM_00977]). Mögliche Kontexte sind die reguläre Diagnosekommunikation kDiagnosticCommunication ([SWS_DM_01342]), der Fehlerspeicherzugriff kFaultMemory ([SWS_DM_01343]), DoIP-Initialabfragen wie das Auslesen der Fahrgestellnummer kDoIP ([SWS_DM_01344]) sowie Serviceanforderungen im SOVD-Kontext kSovd ([SWS_DM_01818]).
Die Erzeugung und Verwaltung von ara::diag::MetaInfo-Instanzen obliegt vollständig dem Diagnostic Management. Der parameterlose Standardkonstruktor ist explizit gelöscht ([SWS_DM_00972]). Folglich kann eine Anwendung eigene Instanzen weder direkt instanziieren noch über Kopieroperationen duplizieren, da sowohl der Kopierkonstruktor ([SWS_DM_00973]) als auch der Kopierzuweisungsoperator ([SWS_DM_00975]) gelöscht sind. Eine Instanziierung erfolgt vermutlich intern durch das DM vor dem Aufruf der Anwendungs-Callbacks. Frage Q-f695f92296527ce8 (offen)ara::diag::MetaInfo unterstützt Move-Semantik: Der Move-Konstruktor ([SWS_DM_00974]) und der Move-Zuweisungsoperator ([SWS_DM_00976]) stehen zur Verfügung. Die Zerstörung erfolgt über den Standard-Destruktor ([SWS_DM_00980]).
Hinsichtlich der Besitzverhältnisse und Gültigkeitsdauer gilt eine strenge Bindung an den aktiven Methodenaufruf: Für jede vom DM an die Applikation gerichtete Methode mit einem MetaInfo-Objekt als Parameter ist die garantierte Lebensdauer strikt auf die Dauer dieses Methodenaufrufs beschränkt ([SWS_DM_01345], AUTOSAR_AP_SWS_Diagnostics §7.3.1.1.2 „Lifetime of MetaInfo“). Nach Rückkehr der Funktion ist das Weiterverwenden oder Speichern des Objekts unzulässig.
Bezüglich der Nebenläufigkeit sind die lesenden Inspektionsmethoden GetContext() ([SWS_DM_00979]) und GetValue() ([SWS_DM_00978]) als threadsicher und ausnahmesicher spezifiziert. Der Move-Zuweisungsoperator ([SWS_DM_00976]) und der Destruktor ([SWS_DM_00980]) sind hingegen nicht threadsicher. Kann ein Callback laut Konfiguration nebenläufig aufgerufen werden (AUTOSAR_AP_SWS_Diagnostics §7.3.1.2 „Concurrency of ara::diag interfaces“), stellt das DM bei jedem Aufruf ein separates, für die Aufrufdauer gültiges Objekt bereit.
Nutzungspfad
Der typische Nutzungspfad erstreckt sich über den Empfang eines Diagnoseaufrufs bis hin zur Auswertung der übergebenen Metadaten:
Aufruf durch das DM: Das Diagnostic Management ruft eine Callback-Methode der Applikation auf und übergibt dabei eine Referenz auf ara::diag::MetaInfo ([SWS_DM_01345]).
Kontext ermitteln: Die Anwendung ruft GetContext() auf ([SWS_DM_00979]), um festzustellen, ob der Aufruf beispielsweise im Rahmen einer regulären Diagnosekommunikation (kDiagnosticCommunication, [SWS_DM_01342]) oder eines Fehlerspeicherzugriffs (kFaultMemory, [SWS_DM_01343]) erfolgt.
Schlüsselwerte abfragen: Mittels GetValue() ([SWS_DM_00978]) fragt die Anwendung gezielt benötigte Attribute ab, wie etwa die Absenderadresse mit kSA ([SWS_DM_02094]), die Zieladresse mit kTA ([SWS_DM_02095]) oder den Adressierungsmodus mit kTAType ([SWS_DM_02096]).
Ergebnis verarbeiten:GetValue() liefert ein ara::core::Optional<ara::core::StringView> zurück ([SWS_DM_00978]). Ist der Wert vorhanden, wertet die Anwendung die Zeichenkette synchron aus, um Zugriffsprüfungen oder Adressierungslogik durchzuführen.
Abschluss des Aufrufs: Die Anwendung schließt die Bearbeitung ab und kehrt aus der Callback-Methode zurück, womit die Lebensdauer der übergebenen Metadaten endet ([SWS_DM_01345]).
Bei der Verwendung von ara::diag::MetaInfo müssen Entwickler spezifische Vor- und Nachbedingungen beachten:
Speicherung über die Callback-Dauer hinaus: Speichert eine Anwendung das MetaInfo-Objekt oder einen durch GetValue() zurückgegebenen ara::core::StringView über die Ausführungszeit der Callback-Funktion hinaus, führt dies zu undefiniertem Verhalten ([SWS_DM_01345], AUTOSAR_AP_SWS_Diagnostics §7.3.1.1.2 „Lifetime of MetaInfo“). Werte, die asynchron oder dauerhaft benötigt werden, müssen als eigene String-Kopien persistiert werden.
Abfrage nicht vorhandener Schlüssel: Wird ein Schlüssel übergeben, der im aktuellen Kontext nicht bereitgestellt wird, wirft GetValue() keine Ausnahme, sondern liefert ein leeres ara::core::Optional zurück ([SWS_DM_00978]). Beide Zugriffsmethoden sind mit noexcept deklariert und ausnahmesicher ([SWS_DM_00978], [SWS_DM_00979]).
gemini-3.8-flash-medium· 2026-10-13