Ermöglicht das Überwachen von Diagnose-Betriebszyklen sowie das Auslösen eines Zyklusneustarts über modellierte Ports.
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 3e8e62c1c567HerkunftOffene Fragen (2)
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Ermöglicht das Überwachen von Diagnose-Betriebszyklen sowie das Auslösen eines Zyklusneustarts über modellierte Ports.
Die Klasse ara::diag::OperationCycle stellt der Anwendung Funktionen zur Steuerung und Überwachung von Diagnose-Betriebszyklen bereit [SWS_DM_00752]. Instanzen werden über einen ara::core::InstanceSpecifier an einen modellierten Port gebunden, sind weder kopier- noch verschiebbar und dürfen pro Bezeichner nur einfach im Prozess existieren. Über SetNotifier kann eine Benachrichtigung für Zyklusänderungen hinterlegt und mittels RestartOperationCycle ein Neustart des Betriebszyklus ausgelöst werden [SWS_DM_01102]. Mit Ausnahme des threadsicheren Konstruktors sind alle Methoden sowie der Destruktor nicht threadsicher und erfordern bei parallelem Zugriff anwendungsseitige Synchronisation.
Kontext
Die Klasse ara::diag::OperationCycle realisiert das DiagnosticOperationCycleInterface innerhalb der AUTOSAR-Adaptive-Diagnose und stellt Funktionen zur Handhabung und Steuerung von Betriebszyklen bereit. Sie dient als Schnittstelle zwischen der adaptiven Anwendung und dem Diagnose-Management, um Zustände von Betriebszyklen zu überwachen oder gezielt zurückzusetzen.
Die Anbindung an das Gesamtsystem erfolgt über einen ara::core::InstanceSpecifier, welcher beim Konstruktoraufruf übergeben wird [SWS_DM_00752]. Dieser Bezeichner referenziert einen im Modell definierten PortPrototype. Das Modell schreibt hierbei eine eindeutige Zuordnung vor: Ein durch ein DiagnosticOperationCyclePortMapping referenzierter PortPrototype muss durch das DiagnosticOperationCycleInterface typisiert sein [SWS_DM_00752]. Neben der Steuerung interagiert die Klasse über eine Callback-Schnittstelle vom Typ ara::diag::OperationCycle::OperationCycleSetNotifier (definiert als std::function<void(void)>), über die Benachrichtigungen bei einer Änderung des Betriebszyklus an die Anwendung übermittelt werden [SWS_DM_02078], [SWS_DM_00755].
Lebenszyklus
Die Erzeugung von ara::diag::OperationCycle erfolgt explizit durch Angabe der Port-Instanzspezifikation über den Konstruktor OperationCycle(const ara::core::InstanceSpecifier &specifier)[SWS_DM_00752]. Der Konstruktor ist als ausnahmesicher (exception safe) und threadsicher (thread-safe) spezifiziert [SWS_DM_00752].
Hinsichtlich der Besitz- und Kopiersemantik ist die Klasse als striktes Einzelobjekt modelliert, das eine feste 1:1-Bindung an den modellierten Port darstellt. Kopieren und Verschieben sind vollständig unterbunden:
Der Kopierkonstruktor ist gelöscht (delete), um Vervielfältigungen auszuschließen [SWS_DM_01598].
Der Move-Konstruktor ist gelöscht (delete) [SWS_DM_01599].
Der Kopierzuweisungsoperator ist gelöscht (delete) [SWS_DM_01596].
Der Move-Zuweisungsoperator ist gelöscht (delete) [SWS_DM_01597].
Zusätzlich untersagt das Framework die Mehrfachbelegung: Ein InstanceSpecifier darf innerhalb desselben Prozesses nicht wiederholt für eine Instanziierung verwendet werden [SWS_DM_00752]. Die Freigabe erfolgt im Destruktor ~OperationCycle()[SWS_DM_00753]. Im Unterschied zum Konstruktor ist der Destruktor nicht threadsicher (not thread-safe), wenngleich er als ausnahmesicher deklariert ist [SWS_DM_00753]. Auch die weiteren Methoden der Klasse sowie der Callback-Typ sind nicht threadsicher [SWS_DM_00755], [SWS_DM_01102], [SWS_DM_02078], sodass parallele Zugriffe auf dieselbe Instanz anwendungsseitig synchronisiert werden müssen.
Nutzungspfad
Ein typischer Nutzungspfad umfasst die Instanziierung, die optionale Registrierung eines Handlers für Zyklusänderungen, das wiederholte Triggern des Zyklusneustarts sowie die Freigabe:
Instanziierung: Die Anwendung erzeugt das Objekt OperationCycle unter Übergabe des entsprechenden InstanceSpecifier[SWS_DM_00752].
Notifier registrieren: Über die Methode SetNotifier hinterlegt die Anwendung eine Callback-Funktion vom Typ OperationCycleSetNotifier[SWS_DM_00755], [SWS_DM_02078]. Diese Funktion wird aufgerufen, wenn sich der Betriebszyklus ändert. Ein aufeinanderfolgender Aufruf von SetNotifier überschreibt den zuvor registrierten Notifier vollständig [SWS_DM_00755].
Betriebszyklus neustarten: Mittels RestartOperationCycle() löst die Anwendung den Neustart des Betriebszyklus aus [SWS_DM_01102]. Das Diagnose-Management aktualisiert den Zyklus und benachrichtigt bei Statuswechseln den hinterlegten Callback [SWS_DM_00755]. Die Benachrichtigung dürfte hierbei asynchron im Kontext des Diagnose-Managements erfolgen. Frage Q-7cd22debf6fa91d7 (offen)
Zerstörung: Beim Herunterfahren der Softwarekomponente wird das Objekt über den Destruktor zerstört [SWS_DM_00753].
Fehler bei der Initialisierung werden durch das Framework als Verletzungen (Violations) signalisiert, da der Konstruktor als noexcept deklariert ist [SWS_DM_00752]:
InstanceSpecifierMappingIntegrityViolation: Der InstanceSpecifier lässt sich im Kontext des Executables nicht auflösen oder verweist auf ein Element, das kein PortPrototype ist [SWS_DM_00752].
PortInterfaceMappingViolation: Der durch DiagnosticOperationCyclePortMapping referenzierte PortPrototype ist nicht durch ein DiagnosticOperationCycleInterface typisiert [SWS_DM_00752].
ProcessMappingViolation: Eine passende Instanzreferenz existiert zwar, es wurde jedoch kein passender modellierter Prozess für den Laufzeitprozess gefunden [SWS_DM_00752].
InstanceSpecifierAlreadyInUseViolation: Der Konstruktor wurde mit einem InstanceSpecifier aufgerufen, der innerhalb des aktuellen Prozesses bereits verwendet wird [SWS_DM_00752].
Im regulären Betrieb geben die Methoden SetNotifier und RestartOperationCycle ein ara::core::Result<void> zurück [SWS_DM_00755], [SWS_DM_01102]. Für beide Funktionen sind im Standard keine spezifischen Fehlercodes definiert („This function does not specify any standardized errors.“) [SWS_DM_00755], [SWS_DM_01102]. Die Verwendung des Result-Typs dürfte primär der einheitlichen Schnittstellengestaltung dienen und Raum für implementierungsspezifische Fehlerzustände bieten. Frage Q-2c59a287c0d5783a (offen)
Dieser Leitfaden wurde durch ein KI-System auf Basis der Spezifikation AUTOSAR Adaptive R25-11 generiert.
Registering a notifier function which is called if the operation cycle 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 DiagnosticOperationCyclePortMapping needs to be typed by a DiagnosticOperationCycleInterface. 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 DiagnosticOperationCycleInterface.
Request a governed re-review of this record. The record is not changed immediately.
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 3cc8bab8ea58HerkunftOffene Fragen (1)
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Die Elementfunktion RestartOperationCycle der Klasse ara::diag::OperationCycle (bereitgestellt über #include "ara/diag/operation_cycle.h") dient dazu, dem Diagnostic Management (DM) den Neustart eines Betriebszyklus mitzuteilen [SWS_DM_01102]. Betriebszyklen wie Zündungszyklen („Ignition on/off“), Spannungszyklen („Power up/power down“) oder akkumulierte Betriebszeiten werden von der adaptiven Applikation verwaltet und besitzen direkten Einfluss auf das UDS-DTC-Statusbyte sowie das Verhalten des Ereignisspeichers gemäß ISO 14229-1 SWS Diagnostics §7.3.4.3 „Operation Cycles Management“.
Aufruf und Semantik
Die Funktion wird parameterlos aufgerufen und liefert ein ara::core::Result<void> zurück [SWS_DM_01102]. Sollte der DM zum Aufrufzeitpunkt noch nicht bereit sein, die Meldung über den Neustart zu verarbeiten, geht diese Information nicht verloren: Der DM puffert das Ereignis temporär (Caching) und wertet den Zyklusneustart aus, sobald die Verbindung wiederhergestellt ist [SWS_DM_01103].
Fehlerbehandlung und Nebenläufigkeit
Für RestartOperationCycle sind keine standardisierten Fehlercodes vorgegeben [SWS_DM_01102]. Die Funktion ist als ausnahmesicher (exception safe) spezifiziert und wirft keine C++-Ausnahmen (noexcept) [SWS_DM_01102]. Da die Schnittstelle jedoch explizit als nicht threadsicher (not thread-safe) ausgewiesen ist [SWS_DM_01102], dürften gleichzeitige Zugriffe auf dieselbe Instanz durch die aufrufende Applikation synchronisiert werden müssen. Frage Q-b3b258a20fd9db22 (offen)
Dieser Nutzungshinweis wurde automatisiert auf Basis der AUTOSAR-Spezifikation R25-11 generiert.
Registering a notifier function which is called if the operation cycle 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: 4ba4d539945dHerkunftOffene Fragen (1)
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Die Methode ara::diag::OperationCycle::SetNotifier ([SWS_DM_00755]) dient der Registrierung einer anwendungsseitigen Callback-Funktion vom Typ OperationCycleSetNotifier. Diese Notifier-Funktion wird vom Diagnostic Management (DM) aufgerufen, sobald sich der Zustand des überwachten Betriebszyklus ändert ([SWS_DM_00755]). Zur Verwendung der Methode muss die Header-Datei ara/diag/operation_cycle.h eingebunden werden ([SWS_DM_00755]).
Die Operation ist als noexcept deklariert und bietet Exception-Sicherheit (exception safe) ([SWS_DM_00755]). Als synchroner Rückgabewert wird ara::core::Result<void> geliefert; spezifische standardisierte Fehlercodes sind jedoch nicht definiert ([SWS_DM_00755]). Etwaige Fehlerzustände im Result-Objekt dürften daher hersteller- oder plattformspezifisch sein. Frage Q-6799492164efd793 (offen) In Bezug auf Nebenläufigkeit ist die Methode als nicht threadsicher (not thread-safe) spezifiziert ([SWS_DM_00755]), sodass parallele Aufrufe auf derselben Objektinstanz zwingend durch die Anwendung synchronisiert werden müssen.
Dieser Nutzungshinweis wurde automatisiert erstellt und basiert auf der Spezifikation AUTOSAR Adaptive R25-11.
gemini-3.8-flash-medium· 2026-10-13