Ermöglicht das Setzen und Abfragen mehrerer Diagnosebedingungen über eine gemeinsame Schnittstelle anhand von Handles.
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 2f3f3f7d9426HerkunftOffene Fragen (1)
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Ermöglicht das Setzen und Abfragen mehrerer Diagnosebedingungen über eine gemeinsame Schnittstelle anhand von Handles.
Die Klasse ara::diag::MultipleCondition dient der gebündelten Abfrage und Aktualisierung mehrerer Diagnosebedingungen über eine gemeinsame Port-Schnittstelle anhand numerischer Handles ([SWS_DM_01730]). Anwendungen instanziieren das Objekt über einen InstanceSpecifier und steuern Bedingungen gezielt mittels SetCondition und GetCondition ([SWS_DM_01729]). Als wesentliche Randbedingung ist die Klasse weder kopier- noch verschiebbar, und ihr Destruktor ist nicht threadsicher. Zudem müssen alle adressierten Bedingungen im Modell über Port-Mappings konsistent konfiguriert sein, um Initialisierungs- und Laufzeitfehler zu vermeiden.
Kontext
Die Klasse ara::diag::MultipleCondition ermöglicht einer adaptiven Anwendung die gebündelte Verwaltung und Modifikation mehrerer Diagnosebedingungen über eine gemeinsame Schnittstelle ([SWS_DM_01730]). Funktionell und semantisch bietet sie dieselben Fähigkeiten wie Einzelbedingungen, erweitert die Operationen jedoch um die gezielte Adressierung über ein Identifikations-Handle (AUTOSAR_AP_SWS_Diagnostics S. 237). Jede verwaltete Diagnosebedingung (DiagnosticCondition) erfordert im Modell eine Verknüpfung über ein DiagnosticMultipleConditionPortMapping mit einem passend typisierten Port ([SWS_DM_01727], AUTOSAR_AP_SWS_Diagnostics S. 237). Die Adressierung erfolgt über den Typ ConditionHandleType; liegt kein expliziter overrideId-Wert vor, vergibt das Diagnostic Management (DM) aufsteigende numerische Werte ab 0x010000 in alphabetischer Reihenfolge der Kurznamen ([SWS_DM_01735]).
Eine Instanz wird über den Konstruktor MultipleCondition unter Übergabe eines ara::core::InstanceSpecifier erzeugt ([SWS_DM_01727]). Die Erzeugung ist threadsicher und als noexcept deklariert ([SWS_DM_01727]). Das Objekt besitzt eine strikte Bindung an seinen lokalen Gültigkeitsbereich: Sowohl Kopier- als auch Move-Operationen sind gelöscht; Copy-Konstruktor ([SWS_DM_02072]), Move-Konstruktor ([SWS_DM_02071]), Copy-Zuweisungsoperator ([SWS_DM_02073]) und Move-Zuweisungsoperator ([SWS_DM_02074]) stehen nicht zur Verfügung (=delete).
Der Destruktor ~MultipleCondition() ist explizit als nicht threadsicher spezifiziert ([SWS_DM_01737]). Die Anwendung muss daher sicherstellen, dass vor der Zerstörung alle nebenläufigen Zugriffe auf das Objekt abgeschlossen sind. Für reguläre Methodenaufrufe gilt bedingte Thread-Sicherheit ([SWS_DM_01728], [SWS_DM_01729]). Interpretation: Da die Konstruktorsignatur gemäß [SWS_DM_01727] keinen expliziten Nebenläufigkeitsparameter akzeptiert, dürfte der geforderte ConcurrencyType vermutlich über das zugrundeliegende Port-Modell im Manifest bestimmt werden. Frage Q-f29def512a68aae9 (offen)
Nutzungspfad
Der typische Ablauf bei der Interaktion mit Diagnosebedingungen umfasst folgende Schritte:
Initialisierung: Die Anwendung instanziiert die Klasse unter Angabe des Ziel-Ports ([SWS_DM_01727]).
Zustand setzen: Mit SetCondition(conditionHandle, condition) übermittelt die Anwendung eine Zustandsänderung für die spezifizierte Bedingung und prüft das resultierende ara::core::Result<void> ([SWS_DM_01729]).
Zustand abfragen: Über GetCondition(conditionHandle) wird der aktuelle Zustand der adressierten Bedingung asynchron als ara::core::Future<ConditionType> angefordert ([SWS_DM_01728]).
Ressourcenfreigabe: Beim Verlassen des Gültigkeitsbereichs baut der Destruktor die Schnittstelle geordnet ab ([SWS_DM_01737]).
Bei der Verwendung sind modellierungsbedingte Konstruktionsfehler und funktionale Laufzeitfehler zu unterscheiden:
Konstruktionsverletzungen ([SWS_DM_01727]):
Schlägt das Auflösen des InstanceSpecifier fehl oder verweist dieser nicht auf einen PortPrototype, wird eine InstanceSpecifierMappingIntegrityViolation gemeldet. Eine PortInterfaceMappingViolation tritt auf, wenn der Port nicht auf ein DiagnosticMultipleConditionInterface typisiert ist. Fehlt dem Prozess das modellierte Gegenstück, entsteht eine ProcessMappingViolation. Wird derselbe InstanceSpecifier mehrfach im Prozess instantiiert, resultiert dies in einer InstanceSpecifierAlreadyInUseViolation.
Laufzeitfehler bei Methodenaufrufen:
Wird an SetCondition ([SWS_DM_01729]) oder GetCondition ([SWS_DM_01728]) ein unzulässiger Parameter oder ein ungültiges Handle übergeben, liefern die Methoden den Fehler DiagErrc::kInvalidArgument. Ist die Basisfunktionalität des Diagnostic Managements temporär nicht ansprechbar, quittiert GetCondition den Aufruf mit DiagErrc::kServiceNotAvailable ([SWS_DM_01728]).
Dieser Leitfaden basiert ausschließlich auf den Spezifikationen der AUTOSAR Adaptive Platform R25-11.
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 DiagnosticMultipleConditionPortMapping needs to be typed by a DiagnosticMultipleConditionInterface. 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 DiagnosticMultipleConditionInterface
Request a governed re-review of this record. The record is not changed immediately.
gemini-3.8-flash-medium· 2026-10-13