Ermöglicht das Abfragen und Überwachen mehrerer Diagnoseereignisse über Ereignis-Handles und Callback-Benachrichtigungen.
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 4cd8b0cbe34dHerkunftOffene Fragen (1)
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Ermöglicht das Abfragen und Überwachen mehrerer Diagnoseereignisse über Ereignis-Handles und Callback-Benachrichtigungen.
Die Klasse ermöglicht Anwendungen die zustandsbezogene Abfrage und Überwachung mehrerer Diagnoseereignisse über eine gemeinsame Schnittstelle anhand von Event-Handles [SWS_DM_01705]. Neben der Registrierung von Benachrichtigungs-Callbacks stehen asynchrone Methoden zur Ermittlung von Event-Status, Entprellung, Fehlerzähler und DTC-Nummer bereit [SWS_DM_01707], [SWS_DM_01709]. Instanzen sind weder kopier- noch verschiebbar und erfordern wegen des nicht threadsicheren Destruktors eine geordnete Beendigung aktiver Operationen vor der Freigabe [SWS_DM_01706], [SWS_DM_02067].
Kontext
Die Klasse ara::diag::MultipleEvent stellt der Anwendung Schnittstellen bereit, um Diagnoseereignisse über Schnittstellen für Mehrfachereignisse abzufragen und zu überwachen [SWS_DM_01705]. Im Unterschied zu Einzel-Event-Klassen adressieren Operationen auf Instanzen von MultipleEvent konkrete Ereignisse über einen Bezeichner vom Typ EventHandleType[SWS_DM_01707], [SWS_DM_01708]. Die Klasse fungiert als Schnittstelle zwischen der anwendenden Softwarekomponente und dem Diagnose-Management (DM) von Adaptive AUTOSAR AUTOSAR AP SWS Diagnostics, S. 69. Über den Port-Prototyp eines DiagnosticMultipleEventInterface wird das Objekt an die konfigurierte Diagnose-Infrastruktur gebunden [SWS_DM_01705].
Lebenszyklus
Eine Instanz von MultipleEvent wird über einen expliziten Konstruktor unter Angabe eines ara::core::InstanceSpecifier erzeugt [SWS_DM_01705]. Der Konstruktor ist threadsicher und verifiziert die modellierte Bindung an einen Port-Prototyp vom Schnittstellentyp DiagnosticMultipleEventInterface[SWS_DM_01705]. Schlägt das Mapping fehl oder wird dieselbe Instanzkennung innerhalb des Prozesses wiederverwendet, meldet die Plattform entsprechende Verletzungen wie InstanceSpecifierAlreadyInUseViolation oder PortInterfaceMappingViolation[SWS_DM_01705].
Kopier- und Verschiebeoperationen sind für MultipleEvent vollständig unterbunden: Sowohl der Copy- und Move-Konstruktor als auch die entsprechenden Zuweisungsoperatoren sind als gelöscht deklariert [SWS_DM_02067], [SWS_DM_02068], [SWS_DM_02069], [SWS_DM_02070]. Das Objekt besitzt somit strikte Identität und verbleibt an seinem Erzeugungsort. Der Destruktor ~MultipleEvent() ist nicht threadsicher spezifiziert [SWS_DM_01706]. Aufrufende Komponenten müssen daher vor der Zerstörung sicherstellen, dass keine asynchronen Abfragen oder Benachrichtigungen mehr über die Instanz laufen AUTOSAR AP SWS Diagnostics, S. 78.
Nutzungspfad
Nach der Instanziierung registriert die Anwendung typischerweise eine Callback-Funktion mittels SetEventStatusChangedNotifier, um über Statusänderungen eines bestimmten Ereignisses (identifiziert via EventHandleType) informiert zu werden [SWS_DM_01708]. Ein erneuter Aufruf dieser Methode für dasselbe Event überschreibt den zuvor gesetzten Notifier [SWS_DM_01708]. Diese Registrierungsfunktion ist nicht threadsicher [SWS_DM_01708].
Im laufenden Betrieb können aktuelle Diagnoseinformationen gezielt pro Event-Handle abgefragt werden. Alle zustandsbezogenen Leseoperationen liefern ihre Daten asynchron in einem ara::core::Future zurück:
GetEventStatus liefert das aktuelle Statusbyte des Ereignisses als EventStatusByte[SWS_DM_01707].
GetDebouncingStatus gibt den Entprellzustand (DebouncingState) des Ereignisses zurück [SWS_DM_01710].
GetFaultDetectionCounter liefert den aktuellen Fehlererkennungszähler (FaultDetectionCounter) als vorzeichenbehafteten 8-Bit-Ganzzahlwert [SWS_DM_01711].
GetDTCNumber fragt die zugeordnete DTC-Nummer im angeforderten DTCFormatType ab [SWS_DM_01709].
Sequenzdiagramm: Typischer Nutzungspfad zur Beobachtung und Abfrage von Diagnoseereignissen über MultipleEvent. Quellen: [SWS_DM_01705], [SWS_DM_01707], [SWS_DM_01708], [SWS_DM_01709], [SWS_DM_01710], [SWS_DM_01711]
Fehlerszenarien
Methoden von MultipleEvent signalisieren Fehlerzustände über den Typ DiagErrc, der entweder in einem ara::core::Result oder im zurückgegebenen ara::core::Future gekapselt transportiert wird [SWS_DM_01707], [SWS_DM_01708], [SWS_DM_01709]. Folgende Fehlerfälle sind spezifiziert:
DiagErrc::kNoSuchDTC: Wird von GetDTCNumber gemeldet, wenn für das angefragte Diagnoseereignis kein korrespondierender DTC konfiguriert oder zugeordnet ist [SWS_DM_01709].
DiagErrc::kServiceNotAvailable: Tritt bei Leseoperationen auf, wenn essentielle Basisfunktionalitäten des Diagnose-Managements zur Ausführungszeit nicht verfügbar sind [SWS_DM_01707], [SWS_DM_01709], [SWS_DM_01710], [SWS_DM_01711].
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 DiagnosticMultipleEventPortMapping needs to be typed by a DiagnosticMultipleEventInterface. 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 DiagnosticMultipleEventInterface.
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: bd91ad4f4cb5HerkunftOffene Fragen (1)
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Verwendung
Die Methode ara::diag::MultipleEvent::SetEventStatusChangedNotifier[SWS_DM_01708] registriert eine Callback-Funktion vom Typ EventStatusByteNotifier, die aufgerufen wird, wenn sich der Zustand eines Diagnose-Events ändert. Über den Parameter eventHandle wird das gewünschte Event innerhalb der Instanz identifiziert. Die Methode ist als noexcept spezifiziert und gibt ein ara::core::Result<void> zurück. Ein erneuter Aufruf überschreibt den zuvor registrierten Notifier [SWS_DM_01708].
Fehlerbehandlung
Tritt bei der Registrierung ein Fehler auf, liefert das ara::core::Result einen entsprechenden Fehlercode zurück. Spezifiziert ist der Fehler DiagErrc::kInvalidArgument, beispielsweise im Kontext interner Entprellung wie kPreFailed[SWS_DM_01708].
Nebenläufigkeit und Einschränkungen
Die Operation ist als exception safe deklariert, jedoch ausdrücklich als not thread-safe eingestuft [SWS_DM_01708]. Zeitgleiche Aufrufe auf derselben Instanz müssen daher extern synchronisiert werden.
gemini-3.8-flash-medium· 2026-10-13