Ermöglicht adaptiven Anwendungen die Abfrage und ereignisgesteuerte Überwachung von Fahrzeug-Diagnose-Indikatoren.
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 7d81598b6e77HerkunftOffene Fragen (2)
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Ermöglicht adaptiven Anwendungen die Abfrage und ereignisgesteuerte Überwachung von Fahrzeug-Diagnose-Indikatoren.
Die Schnittstelle dient der strukturierten Abfrage und Überwachung von Fahrzeug-Diagnose-Indikatoren innerhalb der AUTOSAR Adaptive Platform. Anwendungen instanziieren das Objekt über einen modellierten Bezeichner und können den aktuellen Status über eine asynchrone Abfragemethode abrufen [SWS_DM_00744]. Zudem lässt sich eine benutzerdefinierte Callback-Funktion registrieren, welche Statusaktualisierungen direkt bei Änderungen empfängt [SWS_DM_00745]. Als wesentliche Randbedingung ist die Instanz strikt an einen Port gebunden, weder kopierbar noch verschiebbar und erfordert bei Registrierung sowie Zerstörung eine Synchronisation gegen nebenläufige Aufrufe.
Kontext
Die Klasse ara::diag::Indicator fungiert im Adaptive-Platform-Modul diag als zentrale Repräsentation des DiagnosticIndicatorInterface[SWS_DM_00742]. Ihre Kernaufgabe besteht darin, Anwendungen den Zugriff auf Diagnose-Indikatoren wie Warnleuchten oder Funktionsanzeigen (beispielsweise eine Malfunction Indicator Light, MIL) zu ermöglichen.
An der Interaktion sind im Wesentlichen drei Komponenten beteiligt: Eine nutzende adaptive Anwendung (wie etwa ein Kombiinstrument oder ein HMI-Dienst), die Instanz von ara::diag::Indicator als lokaler Schnittstellenendpunkt sowie der Diagnostic Management Daemon (DM). Letzterer verarbeitet die fahrzeugweiten Diagnoseereignisse und UDS-DTC-Zustände und stellt die zugrunde liegende Diagnosefunktionalität bereit [SWS_DM_00744].
Kontextdiagramm: Interaktionspartner der Schnittstelle ara::diag::Indicator zwischen Anwendungslogik und Diagnostic Management Daemon. Quellen: [SWS_DM_00742], [SWS_DM_00744].
Lebenszyklus
Die Erzeugung eines ara::diag::Indicator-Objekts erfolgt explizit durch Übergabe eines ara::core::InstanceSpecifier an den Konstruktor [SWS_DM_00742]. Dieser Bezeichner bindet das Objekt an einen im Entwurfsmodell definierten PortPrototype, welcher zwingend als DiagnosticIndicatorInterface typisiert sein muss [SWS_DM_00742].
Hinsichtlich der Besitzverhältnisse und Objektsemantik ist ara::diag::Indicator als strikte Einzelinstanz konzipiert: Weder Kopieren noch Verschieben ist gestattet. Dementsprechend sind der Copy-Konstruktor [SWS_DM_01629], der Move-Konstruktor [SWS_DM_01630], der Copy-Zuweisungsoperator [SWS_DM_01627] sowie der Move-Zuweisungsoperator [SWS_DM_01628] als gelöscht (=delete) deklariert.
Der Lebenszyklus endet mit dem Aufruf des Destruktors ~Indicator()[SWS_DM_00743]. Während Konstruktor und Statusabfrage als threadsicher spezifiziert sind [SWS_DM_00742], [SWS_DM_00744], ist der Destruktor nicht threadsicher [SWS_DM_00743]. Die aufrufende Anwendung muss daher sicherstellen, dass während der Zerstörung keine nebenläufigen Methodenaufrufe oder Notifier-Ausführungen mehr stattfinden.
Nutzungspfad
Nach der erfolgreichen Initialisierung unterstützt die Klasse zwei komplementäre Nutzungsmodelle zur Bestimmung des Indikatorzustands:
Ereignisgesteuerte Benachrichtigung: Über SetNotifier() kann eine Callback-Funktion vom Typ IndicatorStatusTypeNotifier registriert werden [SWS_DM_00745], [SWS_DM_02129]. Sobald sich der Status des Indikators ändert, ruft die Laufzeitumgebung diesen Notifier auf. Ein aufeinanderfolgender Aufruf von SetNotifier() überschreibt den zuvor registrierten Handler [SWS_DM_00745]. Da SetNotifier() nicht threadsicher ist, muss die Registrierung extern synchronisiert werden [SWS_DM_00745]. Vermutlich wird der Notifier im Kontext eines Hintergrundthreads des Diagnostic Managements ausgeführt, weshalb darin keine zeitintensiven Blockaden erfolgen sollten. Frage Q-c27898ecefb8006f (offen)
Gezielte Abfrage: Über GetIndicatorState() kann der aktuelle Zustand zu jedem beliebigen Zeitpunkt aktiv abgefragt werden [SWS_DM_00744]. Die Methode ist threadsicher und liefert ein ara::core::Future<IndicatorStatusType> zurück [SWS_DM_00744]. Interpretation: Die asynchrone Bereitstellung über ein Future deutet darauf hin, dass die Abfrage intern über Interprozesskommunikation (IPC) an den zentralen Diagnostic Management Daemon delegiert wird. Frage Q-61a650bd8ab7fc04 (offen)
Fehlerbedingungen können sowohl in der Initialisierungsphase als auch zur Laufzeit auftreten:
Konfigurationsverletzungen bei der Konstruktion: Der Konstruktor meldet Modellierungsinkonsistenzen in Form definierter Violations [SWS_DM_00742]. Hierzu zählen InstanceSpecifierMappingIntegrityViolation (der Bezeichner lässt sich nicht auflösen oder verweist nicht auf einen Port), PortInterfaceMappingViolation (der referenzierte Port ist nicht durch ein DiagnosticIndicatorInterface typisiert), ProcessMappingViolation (kein passender modellierter Prozess zur Laufzeitinstanz vorhanden) sowie InstanceSpecifierAlreadyInUseViolation (der Bezeichner wird im Prozess bereits von einer anderen Instanz genutzt) [SWS_DM_00742].
Ausfall von Diagnosefunktionen: Schlägt die Ausführung von GetIndicatorState() fehl, wird über das zurückgegebene Future der Fehlercode DiagErrc::kServiceNotAvailable transportiert [SWS_DM_00744]. Dies tritt ein, wenn essentielle Funktionen des Diagnostic Managements zur Aufrufzeit nicht zur Verfügung stehen [SWS_DM_00744].
Konkurrierende Zugriffe: Da SetNotifier()[SWS_DM_00745] und der Destruktor [SWS_DM_00743] nicht threadsicher sind, führt ein ungeschützter nebenläufiger Zugriff zu undefiniertem Laufzeitverhalten.
Dieser Leitfaden basiert auf der Spezifikation AUTOSAR Adaptive Platform R25-11 und wurde durch einen KI-Kurations-Assistenten erstellt.
Register a notifier function which is called if the indicator is updated. 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 DiagnosticIndicatorPortMapping needs to be typed by a DiagnosticIndicatorInterface. 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 DiagnosticIndicatorInterface.
Request a governed re-review of this record. The record is not changed immediately.
Register a notifier function which is called if the indicator is updated. 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: f2935619a27aHerkunftOffene Fragen (1)
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Die Funktion SetNotifier der Klasse ara::diag::Indicator ([SWS_DM_00745], deklariert im Header ara/diag/indicator.h) registriert eine anwendungsspezifische Benachrichtigungsfunktion vom Typ IndicatorStatusTypeNotifier. Diese Callback-Funktion wird durch das Diagnostic Management aufgerufen, sobald eine Statusaktualisierung des Diagnose-Warnindikators vorliegt ([SWS_DM_00745]).
Verhalten bei Mehrfachaufruf
Ein wiederholter Aufruf von SetNotifier auf derselben Instanz überschreibt den zuvor registrierten Notifier vollständig ([SWS_DM_00745], [SWS_DM_01359]). Dieses Überschreibverhalten entspricht dem generellen Muster im Diagnostic Management, wie es gleichermaßen für ara::diag::OperationCycle::SetNotifier ([SWS_DM_00755]) und ara::diag::CancellationHandler::SetNotifier ([SWS_DM_00615]) festgelegt ist.
Fehlerbehandlung und Nebenläufigkeit
Fehlerbehandlung: Die Methode ist als noexcept und ausnahmesicher (exception safe) spezifiziert ([SWS_DM_00745]). Da keine standardisierten Fehler definiert sind, dürfte das zurückgegebene ara::core::Result<void> als Interpretation stets einen erfolgreichen Aufruf kapseln. Frage Q-dcde3dd383fbfb4a (offen)
Nebenläufigkeit: Die Schnittstelle ist ausdrücklich als nicht threadsicher (not thread-safe) deklariert ([SWS_DM_00745]). Gleichzeitige Aufrufe an derselben Instanz müssen durch die Applikation synchronisiert werden.
Diagnostischer Kontext
Statusaktualisierungen des Indikators stehen in Verbindung mit dem DTC-Statusbit 7 (WarningIndicatorRequested) ([SWS_DM_00224], AUTOSAR_AP_SWS_Diagnostics S. 260). Das Bit wird bei Bestätigung eines Fehlers aktiviert ([SWS_DM_01266]) und bei Erreichen der Entprell- bzw. Heilungsschwellen am Ende eines Betriebszyklus zurückgesetzt ([SWS_DM_00224], [SWS_DM_01582]).
Dieser Nutzungshinweis wurde automatisiert auf Basis der Spezifikation AUTOSAR Adaptive R25-11 generiert.
gemini-3.8-flash-medium· 2026-10-13