Ermöglicht Anwendungen die statusbezogene Überwachung, Entprellung und DTC-Abfrage von Diagnose-Ereignissen.
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 2f3253efefb6HerkunftOffene Fragen (2)
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Ermöglicht Anwendungen die statusbezogene Überwachung, Entprellung und DTC-Abfrage von Diagnose-Ereignissen.
Die Klasse ara::diag::Event stellt in AUTOSAR Adaptive Operationen zur Überwachung diagnostischer Ereignisse und deren Entprellungs- sowie Fehlerstatus bereit. Anwendungen instanziieren das Objekt über einen InstanceSpecifier, registrieren optionale Änderungsbenachrichtigungen und rufen Diagnose- und DTC-Informationen asynchron ab [SWS_DM_00647]. Als zentrale Randbedingung ist die Instanz weder kopierbar noch verschiebbar, und die meisten Abfragemethoden erfordern mangels Thread-Sicherheit eine anwendungsseitige Synchronisation bei nebenläufigem Zugriff [SWS_DM_00649].
Kontext
Die Klasse ara::diag::Event dient in der AUTOSAR Adaptive Platform als primäre Schnittstelle zur Interaktion mit Diagnose-Ereignissen. Sie fungiert als Bindeglied zwischen der anwendungsspezifischen Software und der zentralen Diagnoseverwaltung. Über diese Schnittstelle überwachen Applikationen den aktuellen Diagnose- und Entprellungsstatus eines Ereignisses oder lassen sich über Statusänderungen informieren.
An der Interaktion sind im Systemkontext im Wesentlichen drei Parteien beteiligt:
Anwendungssoftware: Instanziiert die Klasse, initiiert Statusabfragen und empfängt asynchrone Statusaktualisierungen.
ara::diag::Event: Kapselt den typisierten Diagnose-Port (PortPrototype eines DiagnosticEventInterface) und stellt thread- bzw. prozessübergreifende Abfragemethoden bereit.
Diagnostic Management (DM): Führt serverseitig die Fehlererkennung, DTC-Zuordnungen und das Entprellverhalten (Debouncing) aus.
Kontextdiagramm: Einordnung der Event-Klasse zwischen Anwendungssoftware und Diagnostic Management. Quellen: [SWS_DM_00647], [SWS_DM_00653]
Lebenszyklus
Die Instanziierung erfolgt explizit über die Übergabe eines ara::core::InstanceSpecifier[SWS_DM_00647]. Der Bezeichner muss auf ein PortPrototype verweisen, das über ein DiagnosticEventInterface typisiert ist. Der Konstruktor ist exception-safe und thread-safe [SWS_DM_00647].
Hinsichtlich der Besitzverhältnisse ist ara::diag::Event als nicht kopierbare und nicht verschiebbare Einzelinstanz definiert: Sowohl der Kopierkonstruktor [SWS_DM_01681] als auch der Verschiebekonstruktor [SWS_DM_01682] sowie die zugehörigen Zuweisungsoperatoren ([SWS_DM_01679], [SWS_DM_01680]) sind explizit gelöscht (=delete). Ein InstanceSpecifier darf pro Prozess nicht mehrfach instanziiert werden [SWS_DM_00647].
Die Zerstörung erfolgt über den Destruktor ~Event()[SWS_DM_00648]. Im Unterschied zum Konstruktor ist der Destruktor nicht thread-safe. Auch die übrigen Memberfunktionen (mit Ausnahme von GetDTCNumber) sind als nicht thread-safe spezifiziert, weshalb parallele Aufrufe auf derselben Instanz anwendungsseitig synchronisiert werden müssen. In Release R25-11 wurde die diesbezügliche Begrifflichkeit von Reentrancy auf Concurrency harmonisiert AUTOSAR_AP_SWS_Diagnostics §1 „Change History“.
Nutzungspfad
Ein typischer Anwendungsfall gliedert sich in folgende Aufrufe:
Initialisierung: Die Anwendung erzeugt die Instanz über ihren InstanceSpecifier[SWS_DM_00647]. Die Bindung dürfte zur Initialisierungszeit die Verbindung zum Diagnose-Dämon herstellen. Frage Q-78e4462a0d147cfb (offen)
Notifier registrieren: Zur Überwachung wird optional über SetEventStatusChangedNotifier ein Callback registriert [SWS_DM_00650]. Ein nachfolgender Aufruf überschreibt den zuvor gesetzten Notifier.
Zustandsabfragen: Während des Betriebs fragt die Anwendung Diagnosedaten asynchron über ara::core::Future ab:
GetEventStatus() ermittelt das aktuelle Statusbyte [SWS_DM_00649].
GetDebouncingStatus() gibt den aktuellen Entprellzustand zurück [SWS_DM_00654].
GetFaultDetectionCounter() ruft den Fehlererkennungszähler (FDC) ab [SWS_DM_00656].
GetTestComplete() prüft, ob der Test abgeschlossen wurde (FDC erreicht -128 oder 127) [SWS_DM_00655].
GetDTCNumber(dtcFormat) liefert die zugehörige DTC-Nummer im gewählten Format und ist thread-safe ausgeführt [SWS_DM_00653].
Register a notifier function which is called if a diagnostic event is changed. A consecutive call of this method will overwrite the previous registered notifier.
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 referenced by a pingViolation DiagnosticEventPortMapping needs to be typed by a DiagnosticEventInterface. 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 DiagnosticEventInterface.
Request a governed re-review of this record. The record is not changed immediately.
Register a notifier function which is called if a diagnostic event is changed. A consecutive call of this method will overwrite the previous registered notifier.
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 07bc53ae711cHerkunftOffene Fragen (1)
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Über die Methode [SWS_DM_00650] der Klasse ara::diag::Event (Header-Datei ara/diag/event.h) registriert eine Adaptive Application eine Callback-Funktion vom Typ EventStatusByteNotifier. Nach erfolgreicher Registrierung ruft der Diagnostic Management (DM) diesen Notifier bei jeder Statusänderung des zugehörigen Diagnose-Events auf [SWS_DM_01029]. Ein aufeinanderfolgender Aufruf der Methode überschreibt den zuvor registrierten Notifier [SWS_DM_00650]. Die Funktion besitzt die Signatur ara::core::Result<void> SetEventStatusChangedNotifier(EventStatusByteNotifier notifier) noexcept und gibt im Erfolgsfall ein leeres Resultat zurück [SWS_DM_00650].
Tritt bei der Verarbeitung ein Fehler auf, liefert die Methode den Fehlercode DiagErrc::kInvalidArgument zurück [SWS_DM_00650]. Die Schnittstelle ist zwar als ausnahmesicher (exception safe) deklariert, gilt jedoch explizit als nicht threadsicher (not thread-safe) [SWS_DM_00650]. Interpretation: Konkurrierende Zugriffe auf dieselbe Instanz müssen anwendungsseitig synchronisiert werden; vermutlich sollte die Registrierung daher bevorzugt während der Initialisierungsphase der Anwendung vorgenommen werden. Frage Q-d8ed099eaed6b197 (offen)
gemini-3.8-flash-medium· 2026-10-13