Ermöglicht Anwendungen die generische Bearbeitung von UDS-Lese- und Schreibanfragen für Diagnose-Identifier.
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 02c252ff66d0HerkunftOffene Fragen (1)
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Ermöglicht Anwendungen die generische Bearbeitung von UDS-Lese- und Schreibanfragen für Diagnose-Identifier.
Die Klasse ara::diag::GenericDataIdentifier dient als generische Schnittstelle zur asynchronen Bearbeitung von UDS-Lese- und Schreibanforderungen für Diagnose-Identifier in AUTOSAR Adaptive [SWS_DM_00636]. Nach der Bindung an einen Port und der Freigabe über Offer() leitet das Diagnostic Management Anfragen an die implementierten Methoden weiter [SWS_DM_00638]. Als singuläre Instanz kann das Objekt weder kopiert noch verschoben werden, während die Thread-Sicherheit der Anfragenbearbeitung über die beim Konstruktor gewählte Nebenläufigkeitskonfiguration gesteuert wird.
Kontext
Die Klasse ara::diag::GenericDataIdentifier stellt eine generische Serviceschnittstelle innerhalb des Funktionsclusters Diagnostic Management (DM) der AUTOSAR Adaptive Platform dar SWS Diagnostics §8.2 „GenericDataIdentifier“. Während typspezifische Schnittstellen an fest modellierte Datentypen gebunden sind, dient GenericDataIdentifier der flexiblen Verarbeitung von Diagnose-Identifiern (Data Identifiers, DIDs), bei denen der 16-Bit-Identifier dynamisch als Parameter übergeben wird.
An der Diagnoseverarbeitung sind primär drei Rollen beteiligt:
Der externe Diagnosetester, welcher standardisierte UDS-Dienste wie ReadDataByIdentifier (0x22) oder WriteDataByIdentifier (0x2E) an das Fahrzeug richtet.
Das Diagnostic Management (DM), das Diagnoseanfragen entgegennimmt, validiert und über definierte Port-Schnittstellen an die entsprechende Anwendungsinstanz weiterleitet, sofern diese zuvor über Offer aktiviert wurde [SWS_DM_00638].
Die anwendungsspezifische Implementierung von GenericDataIdentifier, welche die eigentliche Verarbeitungslogik kapselt, indem sie die Methoden Read[SWS_DM_00636] und Write[SWS_DM_00637] bereitstellt und die Daten asynchron zurückliefert.
Lebenszyklus
Eine Instanz von ara::diag::GenericDataIdentifier wird explizit über ihren Konstruktor instanziiert [SWS_DM_00634]. Dabei bindet der Aufrufer das Objekt an einen ara::core::InstanceSpecifier, der auf einen PortPrototype eines modellierten DiagnosticDataIdentifierGenericInterface verweist. Über das Argument concurrencyType (vom Typ DataIdentifierConcurrencyType) wird festgelegt, ob Anfragen nebenläufig (kConcurrent) oder sequenziell (kNotConcurrent) an den Handler übergeben werden [SWS_DM_00634].
Hinsichtlich Besitz und Lebensdauer ist GenericDataIdentifier als singuläre, nicht-kopierbare und nicht-verschiebbare Instanz modelliert:
Nach der Instanziierung befindet sich das Objekt im inaktiven Zustand; das Diagnostic Management leitet noch keine Anfragen weiter. Erst durch den Aufruf von Offer()[SWS_DM_00638] wird die Weiterleitung aktiviert. Um die Weiterleitung von Diagnoseanforderungen wieder zu deaktivieren, ruft die Anwendung StopOffer()[SWS_DM_00639] auf. Die Zerstörung des Objekts erfolgt über den virtuellen Destruktor [SWS_DM_00635].
In Bezug auf Nebenläufigkeit ist der Konstruktor threadsicher (thread-safe) [SWS_DM_00634]. Dagegen sind die administrativen Methoden Offer()[SWS_DM_00638] und StopOffer()[SWS_DM_00639] sowie der Destruktor [SWS_DM_00635] als nicht threadsicher spezifiziert. Die Thread-Sicherheit der Methoden Read und Write hängt bedingt vom gewählten concurrencyType ab [SWS_DM_00636], [SWS_DM_00637].
Ein typischer Durchstich zur Behandlung von Diagnoseanfragen gliedert sich in folgende Schritte:
Initialisierung: Die Anwendung instanziiert ihre abgeleitete Handler-Klasse unter Angabe des InstanceSpecifier sowie der Nebenläufigkeitskonfiguration [SWS_DM_00634]. Interpretation: Dies dürfte in der Praxis typischerweise während der Initialisierungsphase des Anwendungsprozesses erfolgen. Frage Q-32596fba68253958 (offen)
Dienstbereitstellung: Die Anwendung ruft Offer() auf [SWS_DM_00638]. Das Diagnostic Management aktiviert die Weiterleitung eingehender DID-Anfragen.
Anfrageverarbeitung:
Geht ein Leseauftrag ein, ruft das DM die Methode Read(dataIdentifier, metaInfo, cancellationHandler) auf [SWS_DM_00636]. Die Anwendung prüft den übergebenen 16-Bit-Identifier und liefert asynchron ein ara::core::Future<OperationOutput> zurück.
Trifft ein Schreibauftrag ein, ruft das DM Write(dataIdentifier, requestData, metaInfo, cancellationHandler) auf [SWS_DM_00637]. Die Nutzdaten in requestData bleiben gültig, bis das zugehörige Promise erfüllt wird oder die Verarbeitung abgebrochen wird.
Abbruchprüfung: Während langwieriger Operationen kann der Handler über cancellationHandler.IsCanceled() prüfen, ob die Konversation abgebrochen wurde, oder via cancellationHandler.SetNotifier eine Benachrichtigungsfunktion registrieren [SWS_DM_00636], [SWS_DM_00637].
Dienstabmeldung: Vor dem Beenden des Handlers ruft die Anwendung StopOffer() auf [SWS_DM_00639], wodurch das DM die Weiterleitung einstellt.
Sequenzdiagramm: Zusammenspiel zwischen externem Tester, Diagnostic Management und GenericDataIdentifier bei einer UDS-Leseanforderung. Quellen: [SWS_DM_00638], [SWS_DM_00636]
Fehlerszenarien
Fehler können in unterschiedlichen Phasen der Interaktion auftreten:
Konfigurations- und Mapping-Verletzungen: Kann der InstanceSpecifier im Modell nicht aufgelöst werden oder verweist er nicht auf einen PortPrototype, liegt eine InstanceSpecifierMappingIntegrityViolation vor [SWS_DM_00634]. Fehlt die Zuordnung zu einem DiagnosticDataPortMapping, tritt eine PortInterfaceMappingViolation auf [SWS_DM_00634]. Ein fehlendes Prozess-Mapping erzeugt eine ProcessMappingViolation, und ein bereits verwendeter InstanceSpecifier führt zu einer InstanceSpecifierAlreadyInUseViolation[SWS_DM_00634].
Mehrfaches Anbieten: Wird Offer() aufgerufen, obwohl der Dienst bereits aktiv angeboten wird, gibt die Methode ein ara::core::Result mit dem Fehlercode DiagOfferErrc::kAlreadyOffered zurück [SWS_DM_00638].
Fachliche Diagnosefehler: Kann eine Lese- oder Schreibanforderung fachlich nicht bedient werden, liefert die Anwendung im Future keinen Erfolgsstatus, sondern einen standardisierten UDS-NRC (Negative Response Code) über DiagUdsNrcErrc gemäß ISO 14229-1 zurück [SWS_DM_00636], [SWS_DM_00637].
Dieser Leitfaden basiert auf der AUTOSAR-Spezifikation R25-11 und wurde automatisiert erstellt.
InstanceSpeci- InstanceSpecifier either cannot be resolved in the model in the fierMappingIn- context of your executable, or it refers to a model element other tegrityViolation than a PortPrototype. PortInterfaceMap- A PortPrototype that is typed by a pingViolation DiagnosticDataIdentifierGenericInterface needs to be referenced by a DiagnosticDataPortMapping. ProcessMappingVio- Matching InstanceRef exists, but no matching (modelled) Process lation found that matches the (runtime) process. InstanceSpecifier- Violation message that is sent in case a constructor in the ara AlreadyInUseViola- framework was called with an InstanceSpecifier already in use in tion this process.
Parameter (in)
Parameter
Beschreibung
specifier
InstanceSpecifier to a PortPrototype of a DiagnosticDataIdentifierGenericInterface.
concurrencyType
Specifies if the interface is implemented as thread safe ( kConcurrent) or non-thread safe (kNotConcurrent)
Request a governed re-review of this record. The record is not changed immediately.
This Offer will enable the DM to forward request messages to this handler.
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 860e6bd15d7fHerkunftOffene Fragen (1)
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Verwendung: Die synchrone Methode Offer der Klasse ara::diag::GenericDataIdentifier ([SWS_DM_00638]) dient der Registrierung eines generischen Datenbezeichner-Handlers beim Diagnostic Management (DM). Durch diesen Aufruf wird der DM autorisiert, eingehende Diagnoseanfragen (Request Messages) für den betreffenden Datenbezeichner an diesen Handler weiterzuleiten ([SWS_DM_00638]). Die Funktion nimmt keine Übergabeparameter entgegen und liefert synchron ein ara::core::Result<void> zurück ([SWS_DM_00638]), das über Erfolg oder Fehler Auskunft gibt.
Fehlerbehandlung: Die Methode ist mit noexcept deklariert und garantiert vollständige Ausnahmesicherheit (exception safe) ([SWS_DM_00638]). Mögliche Fehler werden über das ara::core::Result gemeldet. Wurde der Handler bereits zuvor bereitgestellt, gibt die Funktion den Fehlercode DiagOfferErrc::kAlreadyOffered mit Rollback-Semantik zurück ([SWS_DM_00638]). Dieser entspricht der allgemeinen Fehlerenumeration DiagErrc::kAlreadyOffered ([SWS_DM_00514]).
Nebenläufigkeit und Einschränkungen: Die Funktion ist als nicht threadsicher (not thread-safe) spezifiziert ([SWS_DM_00638]). Folglich müssen Aufrufe auf derselben Instanz vor dem Zugriff geschützt werden. Da für GenericDataIdentifier keine separate Deregistrierungsmethode spezifiziert ist, dürfte das Dienstangebot vermutlich an die Lebensdauer der Handler-Instanz gekoppelt sein (Interpretation). Frage Q-7c64a5bd308464a8 (offen)
Zusammenspiel: Das Verfahren folgt dem durchgängigen Bereitstellungsmuster des Diagnostic Managements. Analoge Schnittstellen finden sich für typspezifische Datenbezeichner ([SWS_DM_00599]), generische Routinen ([SWS_DM_00557]) sowie generische UDS-Dienste ([SWS_DM_00619]).
Dieser Nutzungshinweis wurde durch ein KI-System generiert.
Called for ReadDataByIdentifier request for this DiagnosticDataIdentifier.
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 7772a86b7791Herkunft
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Verwendung
Die Methode Read der Klasse ara::diag::GenericDataIdentifier wird aufgerufen, sobald eine Diagnoseanforderung für ReadDataByIdentifier (UDS 0x22) für den betreffenden Datenbezeichner eingeht [SWS_DM_00636]. Als Parameter übernimmt die Funktion die numerische Kennung dataIdentifier, den Kontext metaInfo sowie einen cancellationHandler. Über den cancellationHandler kann die Anwendung mittels IsCanceled den Abbruchstatus abfragen oder via SetNotifier eine Benachrichtigungsfunktion für abgebrochene Konversationen registrieren [SWS_DM_00636]. Das Ergebnis wird asynchron über ein ara::core::Future<OperationOutput> bereitgestellt, welches im Erfolgsfall die Nutzdaten (OperationOutput) zurückliefert [SWS_DM_00636].
Fehlerbehandlung
Im Fehlerfall liefert das Future einen negativen UDS-Rückgabewert (NRC) gemäß ISO 14229-1 über DiagUdsNrcErrc[SWS_DM_00636]. Falls die Schnittstelle noch nicht oder nicht mehr über offer() angeboten wird, antwortet der Diagnostic Management (DM) eigenständig mit dem NRC 0x94 (ResourceTemporarilyNotAvailable) [SWS_DM_01257]. Wird das konfigurierte Limit an Response Pending-Nachrichten erreicht, bricht der Server die Verarbeitung ab und antwortet mit NRC 0x10 (generalReject) [SWS_DM_00369].
Nebenläufigkeit und Zusammenspiel
Die Methode ist als noexcept deklariert und ausnahmesicher [SWS_DM_00636]. Ihre Thread-Sicherheit ist bedingt: Ob die Implementierung threadsicher sein muss, wird über den im Konstruktor übergebenen ConcurrencyType gesteuert [SWS_DM_00636]. Steht readWrite auf kConcurrent, darf der DM Lese- und Schreibzugriffe nebenläufig anstoßen, andernfalls (kNotConcurrent) erfolgt der Aufruf sequenziell [SWS_DM_00939]. Im Unterschied zu spezifischen Schnittstellen wie [SWS_DM_00640] deckt GenericDataIdentifier generische DID-Bereiche flexibel über die übergebene ID ab [SWS_DM_00636].
Dieser Nutzungshinweis wurde automatisiert auf Basis der AUTOSAR-Spezifikation generiert.
conditional whether the function has to be implemented thread safe or non-thread safe is determined by the ConcurrencyType given in the constructor
Parameter (in)
Parameter
Beschreibung
dataIdentifier
the corresponding DataIdentifier
metaInfo
MetaInfo of the request.
cancellationHandler
This parameter is used to • Query the current cancellation status by calling cancellationHandler.IsCanceled. Returns TRUE in case, the current conversation has been cancelled and FALSE otherwise. • Register a notifier function by calling cancellationHandler.SetNotifier. The registered notifier is called if the current conversation is cancelled.
This StopOffer will disable the forwarding of request messages from DM.
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: bd73a88bfde2HerkunftOffene Fragen (1)
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Verwendung und Aufrufkontext
Die Elementfunktion StopOffer der Klasse ara::diag::GenericDataIdentifier dient dazu, die Weiterleitung eingehender Anfrage-Nachrichten aus dem Diagnostic Management (DM) an die jeweilige Instanz zu deaktivieren [SWS_DM_00639]. Der Aufruf erfolgt synchron über die Schnittstelle aus der Header-Datei #include "ara/diag/generic_data_identifier.h"[SWS_DM_00639]. Die Funktion besitzt die Signatur void StopOffer() noexcept;, nimmt keine Übergabeparameter entgegen und liefert keinen Rückgabewert zurück [SWS_DM_00639].
Fehlerbehandlung und Nebenläufigkeit
Die Spezifikation definiert StopOffer als ausnahmesicher (exception safe) und garantiert über den Bezeichner noexcept das Ausbleiben von Exceptions [SWS_DM_00639]. Spezifische Fehlercodes, Fehlerreaktionen oder Meldungen an DET bzw. DEM sind für diese Operation nicht vorgesehen. In Bezug auf die Nebenläufigkeit ist die Methode als nicht threadsicher (not thread-safe) klassifiziert [SWS_DM_00639]. Parallele Aufrufe auf derselben Instanz müssen daher durch den Aufrufer synchronisiert werden. Interpretation: Bereits begonnene Anfragen im Diagnostic Management dürften vor dem endgültigen Stopp der Weiterleitung noch regulär verarbeitet werden. Frage Q-94a464dc832c055c (offen)
Zusammenspiel im Diagnosemodul
Das Muster zur Rücknahme der Dienstebereitstellung wird im Diagnosemodul standardisiert und konsistent eingesetzt. Analoge StopOffer-Methoden existieren unter anderem für:
typspezifische Datenbezeichner über DataIdentifierInterface::StopOffer[SWS_DM_00600] sowie Datenelemente [SWS_DM_00617],
generische Routinen über GenericRoutine::StopOffer[SWS_DM_00558] und typspezifische Routine-Schnittstellen [SWS_DM_00595],
Called for WriteDataByIdentifier request for this DiagnosticDataIdentifier.
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 7b195835c98cHerkunft
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Die Methode Write der Klasse ara::diag::GenericDataIdentifier wird vom Diagnostic Management aufgerufen, sobald eine UDS-Anfrage des Dienstes WriteDataByIdentifier (0x2E) empfangen wird [SWS_DM_00637]. Voraussetzung für den Aufruf ist, dass der angeforderte Datenbezeichner unterstützt wird und die jeweilige Diagnose-Session sowie Sicherheitsstufe die Ausführung gestatten [SWS_DM_00186], [SWS_DM_00415], [SWS_DM_00416].
Der Aufruf erfolgt mit folgenden Parametern [SWS_DM_00637]:
dataIdentifier: Die 16-Bit-Kennung des zu schreibenden Datenbezeichners.
requestData: Ein ara::core::Span mit den Rohdaten der Anfrage ohne DID-Präfix. Der Puffer bleibt gültig, bis das zugehörige Promise erfüllt oder die Bearbeitung abgebrochen wird.
metaInfo: Zusätzliche Metadaten zur Diagnoseanforderung.
cancellationHandler: Dient der Überwachung eines vorzeitigen Abbruchs der Konversation per IsCanceled sowie der Registrierung einer Abbruchbenachrichtigung über SetNotifier.
Die Ausführung erfolgt asynchron und gibt ein ara::core::Future<void> zurück [SWS_DM_00637]. Bei erfolgreicher Verarbeitung wird das Promise mit void für eine positive Antwortnachricht erfüllt. Tritt ein Fehler auf, ist das Future mit einem passenden negativen UDS-Rückgabewert (NRC) gemäß ISO 14229-1 über DiagUdsNrcErrc abzuschließen [SWS_DM_00637]. Die Methode ist als noexcept deklariert und muss ausnahmesicher implementiert werden [SWS_DM_00637].
Hinsichtlich der Nebenläufigkeit ist die Thread-Sicherheit bedingt: Ob Write threadsicher implementiert werden muss, hängt vom ConcurrencyType ab, der bei der Instanziierung im Konstruktor übergeben wurde [SWS_DM_00637]. Eine parallele Ausführung von Lese- und Schreibzugriffen wird über das Flag readWrite gesteuert [SWS_DM_00939].
Dieser Text wurde von einer KI erstellt. Alle Angaben basieren ausschließlich auf den Spezifikationen des Release R25-11.
conditional whether the function has to be implemented thread safe or non-thread safe is determined by the ConcurrencyType given in the constructor
Parameter (in)
Parameter
Beschreibung
dataIdentifier
the corresponding DataIdentifier
requestData
Content of request message (without DataIdentifier). Lifetime: Valid until Promise is fulfilled or the processing is cancelled by the cancellationHandler.
metaInfo
MetaInfo of the request.
cancellationHandler
This parameter is used to • Query the current cancellation status by calling cancellationHandler.IsCanceled. Returns TRUE in case, the current conversation has been cancelled and FALSE otherwise. • Register a notifier function by calling cancellationHandler.SetNotifier. The registered notifier is called if the current conversation is cancelled.
gemini-3.8-flash-medium· 2026-10-13