Dient der anwendungsseitigen Bereitstellung erweiterter Diagnosedaten für das adaptive Diagnostic Management.
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 0446a63ad449HerkunftOffene Fragen (2)
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Dient der anwendungsseitigen Bereitstellung erweiterter Diagnosedaten für das adaptive Diagnostic Management.
Die Klasse <ExtendedDataRecordElementInterface> dient adaptiven Anwendungen als Schnittstelle zur Bereitstellung erweiterter Diagnosedaten an das Diagnostic Management ([SWS_DM_02152]). Nach der Instanziierung und der Aktivierung über Offer() implementiert der Handler die asynchrone Bereitstellung der Daten über die rein virtuelle Methode Read() ([SWS_DM_02156]). Da der Diagnostic Manager die Datensätze dauerhaft im nicht-flüchtigen Speicher sichert, müssen nicht verfügbare Werte zwingend mit einem Füllmuster aufgefüllt werden. Die Schnittstelle ist weder kopier- noch verschiebbar und ihr Destruktor ist nicht threadsicher.
Kontext
Die Schnittstelle <ExtendedDataRecordElementInterface> dient im Diagnose-Subsystem der AUTOSAR Adaptive Platform zur Bereitstellung anwendungsspezifischer erweiterter Diagnosedaten (Extended Data Records) für das Diagnostic Management (DM) (AUTOSAR AP SWS Diagnostics §7.2 „DiagnosticExtendedDataRecordInterface“). Ein Extended Data Record enthält diagnosebezogene Zusatzdaten wie Zählerstände oder Umgebungsinformationen, die einem Fehlerereignis zugeordnet sind. Die Klasse fungiert als abstrakte Basisschnittstelle für anwendungsseitige Handler-Komponenten. Zu den Interaktionspartnern gehören der Diagnostic Manager (DM), der Leseoperationen anfordert und koordiniert, die konkrete Handler-Implementierung innerhalb der Applikation sowie der nicht-flüchtige Speicher (Non-Volatile Memory, NVM), in dem der DM die abgerufenen Daten dauerhaft ablegt ([SWS_DM_02156]). Interpretation: Der Aufruf von Read() wird vermutlich durch eine interne Diagnoseverarbeitung im DM veranlasst, beispielsweise beim Eintreten eines Fehlerereignisses oder bei Statusänderungen eines Diagnose-Trouble-Codes. Frage Q-f80be8c2bd5697fc (offen)
Die Erzeugung erfolgt über den parametrisierten Konstruktor unter Angabe eines ara::core::InstanceSpecifier sowie des Nebenläufigkeitsmodus ara::diag::ConcurrencyType ([SWS_DM_02158], AUTOSAR AP SWS Diagnostics §7.2 „DiagnosticExtendedDataRecordInterface“). Die Konstruktion ist threadsicher und ausnahmesicher (exception safe). Über den Parameter concurrencyType wird festgelegt, ob Aufrufe der Schnittstelle nebenläufig (kConcurrent) oder sequenziell (kNotConcurrent) verarbeitet werden dürfen ([SWS_DM_02158]). Kopier- und Verschiebeoperationen sind vollständig unterbunden: Kopierkonstruktor ([SWS_DM_02147]), Kopierzuweisung ([SWS_DM_02148]), Verschiebekonstruktor ([SWS_DM_02149]) und Verschiebezuweisung ([SWS_DM_02150]) sind gelöscht (=delete). Eine Instanz besitzt damit eine feste Identität und kann weder dupliziert noch transferiert werden.
Nach der Instanziierung befindet sich das Objekt zunächst im inaktiven Zustand. Erst durch den Aufruf von Offer() ([SWS_DM_02152]) wird der Dienst aktiv geschaltet und der DM leitet Anfragen an den Handler weiter. Mittels StopOffer() ([SWS_DM_02153]) kann diese Weiterleitung jederzeit gestoppt werden. Die Zerstörung erfolgt über den virtuellen Destruktor ~<ExtendedDataRecordElementInterface>() ([SWS_DM_02151]). Dieser ist zwar ausnahmesicher, aber explizit nicht threadsicher (not thread-safe) ([SWS_DM_02151]). Interpretation: StopOffer() dürfte vor dem Zerstören des Handler-Objekts aufgerufen werden müssen, um sicherzustellen, dass keine weiteren Anfragen eingehen, während das Objekt freigegeben wird. Frage Q-c77dda63f0e8798a (offen)
Nutzungspfad
Der reguläre Ablauf umfasst die Bereitstellung, die asynchrone Beantwortung von Leseanfragen und die Deaktivierung des Dienstes:
Initialisierung: Die Anwendung instanziiert die abgeleitete Klasse mit dem passenden Port-Bezeichner und der Nebenläufigkeitskonfiguration ([SWS_DM_02158]).
Dienstangebot: Durch Aufruf von Offer() wird die Weiterleitung von Anfragen im DM freigeschaltet ([SWS_DM_02152]). Die Methode gibt ein ara::core::Result<void> zurück.
Datenabruf: Trifft eine Leseanforderung ein, ruft der DM die rein virtuelle Methode Read() auf ([SWS_DM_02156]). Dabei werden die Anfrage-Metadaten (metaInfo) und ein cancellationHandler übergeben.
Abbruchbehandlung und Rückgabe: Der Handler kann über cancellationHandler.IsCanceled() prüfen, ob die Konversation abgebrochen wurde, oder per cancellationHandler.SetNotifier() eine Benachrichtigung registrieren ([SWS_DM_02156]). Das Ergebnis wird asynchron über ein ara::core::Future mit einem ReadOutput-Objekt geliefert ([SWS_DM_02156], [SWS_DM_02154]).
Persistierung: Der DM übernimmt die abgerufenen Daten und speichert sie dauerhaft im nicht-flüchtigen Speicher ([SWS_DM_02156]).
Dienstabmeldung: Vor dem Herunterfahren ruft die Anwendung StopOffer() auf ([SWS_DM_02153]), um die Weiterleitung durch den DM zu beenden, bevor die Instanz zerstört wird ([SWS_DM_02151]).
Bei der Nutzung der Schnittstelle sind mehrere Fehlerbedingungen und Vorbedingungen zu beachten:
Konstruktionsfehler und Modellverletzungen: Beim Aufruf des Konstruktors können Modellierungsfehler auftreten ([SWS_DM_02158]). Dazu zählen InstanceSpecifierMappingIntegrityViolation (der Bezeichner lässt sich nicht auflösen oder referenziert kein PortPrototype), PortInterfaceMappingViolation (fehlende Referenzierung durch ein DiagnosticDataPortMapping), ProcessMappingViolation (kein passender Prozess im Modell gefunden) sowie InstanceSpecifierAlreadyInUseViolation (der Bezeichner wird im Prozess bereits verwendet) ([SWS_DM_02158]).
Mehrfaches Anbieten: Wird Offer() aufgerufen, wenn der Dienst bereits aktiv angeboten wird, schlägt der Aufruf fehl und liefert den Fehlercode DiagOfferErrc::kAlreadyOffered zurück ([SWS_DM_02152]).
Nicht verfügbare Daten bei Leseanfragen: Da der DM die Daten im nicht-flüchtigen Speicher ablegt, muss bei einem Aufruf von Read() zwingend ein Wert zurückgeliefert werden ([SWS_DM_02156]). Sind Daten zum Abfragezeitpunkt nicht verfügbar, muss die Handler-Implementierung diese mit einem definierten Füllmuster wie 0xFF auffüllen ([SWS_DM_02156]).
Anwendungs- und Diagnosefehler: Scheitert die Datenbereitstellung gänzlich, kann das zurückgegebene ara::core::Future einen entsprechenden Diagnose-NRC-Fehlercode (DiagUdsNrcErrc) oder einen anwendungsspezifischen Fehler (ApApplicationError) enthalten ([SWS_DM_02156]).
Gefahr bei Destruktion: Da der Destruktor nicht threadsicher ist ([SWS_DM_02151]), führt eine Zerstörung des Objekts während parallel laufender Aufrufe oder ohne vorheriges StopOffer() ([SWS_DM_02153]) zu undefiniertem Verhalten.
Dieser Leitfaden wurde durch eine KI auf Basis der Spezifikation AUTOSAR R25-11 generiert.
Provision of a Read ExtendedDataRecordElement. The data fetched by this method is stored in non-volatile memory by the DM and therefore always a value needs to be returned. Not available data at the time of the method call shall be filled with a filling pattern, e.g 0xFF by the implementation of this method (DiagnosticExtendedDataRecordInterface in the role provide).
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 5f6f8ec51798HerkunftOffene Fragen (1)
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Verwendung und Aufrufkontext
Die Funktion <ExtendedDataRecordElementInterface> dient als Konstruktor zur Erzeugung eines DataElement für eine Erweiterungsdatensatz-Schnittstelle anhand eines ara::core::InstanceSpecifier[SWS_DM_02158]. Die Deklaration ist im Gültigkeitsbereich <ExtendedDataRecord-Namespace>::<ExtendedDataRecordElementInterface> verortet und erfordert das Einbinden der Header-Datei #include "<ExtendedDataRecordElementShortname>.h"AUTOSAR_AP_SWS_Diagnostics §8.49.2.2.1.6.
Der synchrone Aufruf erfordert zwei Eingabeparameter [SWS_DM_02158]:
instanceSpec (ara::core::InstanceSpecifier): Bezeichner der konkreten Serviceinstanz im AUTOSAR-Modell.
concurrencyType (ara::diag::ConcurrencyType): Bestimmt, ob die Schnittstelle threadsicher (kConcurrent) oder nicht-threadsicher (kNotConcurrent) instanziiert wird.
Nebenläufigkeit und Fehlersicherheit
Die Konstruktorfunktion selbst ist als noexcept deklariert und als thread-safe sowie exception safe spezifiziert [SWS_DM_02158]. Interpretation: Da die Funktion als noexcept definiert ist, dürften Modellierungs- und Initialisierungsfehler nicht über C++-Exceptions, sondern über die im Adaptive-Framework definierten Violations signalisiert werden [SWS_DM_02158]. Frage Q-9ce91764c3e8364e (offen)
Fehlerbehandlung und Modellverletzungen
Bei fehlerhafter Modellkonfiguration oder ungültigen Bezeichnern treten spezifische Violations auf [SWS_DM_02158]:
InstanceSpecifierMappingIntegrityViolation: Der Bezeichner kann im Kontext des Prozesses nicht aufgelöst werden oder verweist nicht auf einen PortPrototype.
PortInterfaceMappingViolation: Ein durch DiagnosticExtendedDataRecordInterface typisierter PortPrototype wird nicht durch ein DiagnosticDataPortMapping referenziert.
ProcessMappingViolation: Eine passende InstanceRef existiert, aber es wurde kein passender modellierter Prozess für den Laufzeitprozess gefunden.
InstanceSpecifierAlreadyInUseViolation: Der Konstruktor wurde mit einem InstanceSpecifier aufgerufen, der im Prozess bereits in Verwendung ist.
Dieser Nutzungshinweis wurde automatisiert auf Basis der Spezifikation von AUTOSAR Adaptive R25-11 generiert.
Implementer's Guide folgt (Komplexität I1)
Header-Datei
#include "<ExtendedDataRecordElementShortname>.h"
Scope
class <ExtendedDataRecord-Namespace>::<ExtendedDataRecordElementInterface>
Exception-Sicherheit
exception safe
Thread-Sicherheit
thread-safe
Verletzungen (Violations)
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 DiagnosticExtendedDataRecordInterface 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
instanceSpec
The specifier of a specific instance of a service.
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: e44e4ef775f3HerkunftOffene Fragen (1)
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Die Funktion Offer aktiviert die Weiterleitung von Diagnoseanforderungen durch den Diagnostic Management Daemon (DM) an die entsprechende Instanz des Handlers [SWS_DM_02152]. Sie wird parameterlos aufgerufen und liefert synchron ein ara::core::Result<void> zurück, deklariert als noexcept und spezifiziert als exception-safe [SWS_DM_02152].
Für die ordnungsgemäße Verwendung und Fehlerbehandlung gelten folgende Vorgaben:
Rückgabewert und Fehler: Im Erfolgsfall enthält das Ergebnis einen leeren Wert. Wurde der Dienst für diese Handler-Instanz bereits zuvor registriert, schlägt der Aufruf fehl und liefert den Fehlercode DiagOfferErrc::kAlreadyOffered mit Rollback-Semantik [SWS_DM_02152]. Verwandte Fehlerdomänen definieren für diesen Zustand ebenfalls den Fehlercode kAlreadyOffered[SWS_DM_00514][SWS_DM_00560].
Nebenläufigkeit: Im Gegensatz zu anderen Diagnose-Handlern, die häufig als nicht threadsicher ausgewiesen sind (wie etwa in [SWS_DM_00557]), ist diese Methode explizit als thread-safe definiert [SWS_DM_02152].
Zusammenspiel im System: Solange ein Interface von der Applikation noch nicht mittels Offer bereitgestellt wurde, reagiert der DM je nach Kontext mit definierten Standard- bzw. Ersatzwerten, wie beispielsweise mit dem Status „Not ready“ bei DoIP-PowerMode-Abfragen [SWS_DM_01525] oder Ersatzwerten für Gruppenkennungen [SWS_DM_01527]. Zudem betont die Spezifikation, dass Diagnose-Offer-Funktionen spezifisch für ara::diag sind und nicht mit ara::com::Offer verwechselt werden dürfen AUTOSAR_AP_SWS_Diagnostics §7.3.4.1.2 „Monitors“.
Interpretation: Das synchrone Rückmeldeverhalten von Offer dürfte sicherstellen, dass die Handler-Registrierung vor dem Empfang nachfolgender UDS-Anforderungen vollständig abgeschlossen ist. Frage Q-e6b2916cf4887164 (offen)
Dieser Text wurde von einer KI auf Basis der AUTOSAR-Spezifikation R25-11 generiert.
Implementer's Guide folgt (Komplexität I2)
Header-Datei
#include "<ExtendedDataRecordElementShortname>.h"
Scope
class <ExtendedDataRecord-Namespace>::<ExtendedDataRecordElementInterface>
• If successful: an ara::core::Result containing a ara:: core::Result::value_type • If unsuccessful: an ara::core::Result containing an ara:: core::Result::error_type i.e. a corresponding ara:: diag::DiagOfferErrc
Fehler
Fehlercode
Beschreibung
DiagOfferErrc::kAlreadyOffered
rollback_semantics The service is already offered.
Request a governed re-review of this record. The record is not changed immediately.
Provision of a Read ExtendedDataRecordElement. The data fetched by this method is stored in non-volatile memory by the DM and therefore always a value needs to be returned. Not available data at the time of the method call shall be filled with a filling pattern, e.g 0xFF by the implementation of this method (DiagnosticExtendedDataRecordInterface in the role provide).
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: fe834745387eHerkunft
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Verwendung und Semantik
Die rein virtuelle Methode Read wird vom Diagnostic Management (DM) aufgerufen, um die Daten eines ExtendedDataRecordElement aus der Applikation abzurufen ([SWS_DM_02156]). Da der DM die abgerufenen Daten dauerhaft im nichtflüchtigen Speicher sichert, muss die Methode stets einen Wert liefern. Stehen Daten zum Aufrufzeitpunkt nicht zur Verfügung, müssen diese durch die Implementierung mit einem Füllmuster wie 0xFF aufgefüllt werden ([SWS_DM_02156]).
Die Ausführung erfolgt asynchron und gibt ein ara::core::Future zurück, das im Erfolgsfall die Struktur ReadOutput kapselt ([SWS_DM_02154]). Der Aufruf übergibt folgende Parameter ([SWS_DM_02156]):
metaInfo: Übermittelt Meta-Informationen der zugrundeliegenden Diagnoseanforderung.
cancellationHandler: Ermöglicht die Abfrage eines Abbruchs mittels cancellationHandler.IsCanceled() sowie die Registrierung einer Benachrichtigungsfunktion über cancellationHandler.SetNotifier().
Fehlerbehandlung
Im Fehlerfall stellt das Future einen negativen UDS-Antwortcode (DiagUdsNrcErrc) oder einen anwendungsspezifischen Fehler (ApApplicationError) bereit ([SWS_DM_02156], AUTOSAR_AP_SWS_Diagnostics §7.3.2.6.1 „NRCs created by application“). Falls die benötigte Serviceschnittstelle noch nicht oder nicht mehr per offer() bereitgestellt wird, antwortet der DM mit NRC 0x94 (ResourceTemporarilyNotAvailable) ([SWS_DM_01257]). Zudem meldet DiagOfferErrc::kAlreadyOffered, wenn der Dienst bereits angeboten wird ([SWS_DM_02156]).
Nebenläufigkeit und Zusammenspiel
Die Methode ist als ausnahmesicher (exception safe) spezifiziert ([SWS_DM_02156]). Die Thread-Sicherheit ist bedingt und implementationsdefiniert (implementation defined) ([SWS_DM_02156]). Dies unterscheidet Read für Extended-Data-Records von Leseoperationen an regulären Daten-Elementen ([SWS_DM_00596]) oder Datenbezeichnern ([SWS_DM_00640]), welche ausdrücklich nicht threadsicher sind.
Dieser Text wurde durch ein KI-System auf Basis der Spezifikationen des Releases R25-11 generiert.
Implementer's Guide folgt (Komplexität I1)
Header-Datei
#include "<ExtendedDataRecordElementShortname>.h"
Scope
class <ExtendedDataRecord-Namespace>::<ExtendedDataRecordElementInterface>
Exception-Sicherheit
exception safe
Thread-Sicherheit
conditional Thread safety is implementation defined
Parameter (in)
Parameter
Beschreibung
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.
• If successful: an ara::core::Future containing an ReadOutput object as per [SWS_DM_02154] • If unsuccessful: an ara::core::Future containing a corresponding DiagUdsNrcErrc or ApApplicationError.
Fehler
Fehlercode
Beschreibung
DiagOfferErrc::kAlreadyOffered
rollback_semantics The service is already offered.
Request a governed re-review of this record. The record is not changed immediately.
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: 7a0fc3b7b561HerkunftOffene Fragen (1)
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Verwendung und Aufrufkontext
Die Funktion StopOffer wird auf einer Instanz des Extended-Data-Record-Interfaces (<ExtendedDataRecord-Namespace>::<ExtendedDataRecordElementInterface>) aufgerufen, welches über den Header #include "<ExtendedDataRecordElementShortname>.h" eingebunden wird [SWS_DM_02153]. Der Aufruf erfolgt synchron, nimmt keine Parameter entgegen und besitzt keinen Rückgabewert (void).
Zweck der Methode ist es, die Weiterleitung eingehender Anfrage-Nachrichten aus dem Diagnostic Management (DM) an das jeweilige Extended-Data-Record-Element zu deaktivieren [SWS_DM_02153]. Nach der Ausführung leitet der DM keine neuen Diagnoseanfragen mehr an den zugehörigen Handler weiter.
Fehlerbehandlung und Nebenläufigkeit
Die Funktion ist mit dem Bezeichner noexcept deklariert und als ausnahmesicher (exception safe) spezifiziert [SWS_DM_02153]. Spezifische Fehlercodes, Rückgabewerte oder Benachrichtigungen an Fehlerüberwachungen sind im Payload nicht definiert; im Fehlerfall werden keine Exceptions geworfen.
Hinsichtlich der Nebenläufigkeit ist die Methode ausdrücklich als threadsicher (thread-safe) eingestuft [SWS_DM_02153]. Dies stellt eine Besonderheit dar, da verwandte StopOffer-Schnittstellen in ara::diag – wie beispielsweise für Routinen [SWS_DM_00558], Datenelemente [SWS_DM_00617] oder Monitore [SWS_DM_01089] – als nicht threadsicher spezifiziert sind. Bereits in Verarbeitung befindliche Anfragen dürften vermutlich vor dem endgültigen Stopp noch abgeschlossen oder verworfen werden. Frage Q-82e9d44f8ac1969d (offen)
Zusammenspiel im Diagnostic Management
Die Benennung folgt dem einheitlichen Dienstmuster in AUTOSAR Adaptive, bei dem Funktionseinheiten ihre Verfügbarkeit über Offer und StopOffer steuern AUTOSAR_AP_SWS_Diagnostics §7.3.4.1.2 „Monitors“. Das Element reiht sich damit in vergleichbare Schnittstellen des DM ein, wie etwa für generische UDS-Dienste [SWS_DM_00620], Datenbezeichner [SWS_DM_00600], Sicherheitszugriffe [SWS_DM_00767] oder ECU-Reset-Anforderungen [SWS_DM_01017].
Dieser Nutzungshinweis wurde von einer KI auf Basis der Spezifikation AUTOSAR Adaptive R25-11 generiert.
Implementer's Guide folgt (Komplexität I2)
Header-Datei
#include "<ExtendedDataRecordElementShortname>.h"
Scope
class <ExtendedDataRecord-Namespace>::<ExtendedDataRecordElementInterface>
Exception-Sicherheit
exception safe
Thread-Sicherheit
thread-safe
Rückgabewert
Typ
Beschreibung
None
Request a governed re-review of this record. The record is not changed immediately.
gemini-3.8-flash-medium· 2026-10-13