Dient als generische UDS-Schnittstelle zur asynchronen Bearbeitung eingehender Diagnoseanfragen im Diagnose-Manager.
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: d0d38c589b70Herkunft
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Dient als generische UDS-Schnittstelle zur asynchronen Bearbeitung eingehender Diagnoseanfragen im Diagnose-Manager.
Die Klasse ara::diag::GenericUDSService ermöglicht als generischer UDS-Service-Handler die Entgegennahme und Verarbeitung beliebiger UDS-Diagnoseanfragen über den AUTOSAR-Diagnose-Manager [SWS_DM_00616]. Nach der Bindung an einen Port-Prototypen wird der Dienst über Offer() aktiviert, verarbeitet Anfragen asynchron in der Methode HandleMessage() und wird mit StopOffer() wieder deregistriert [SWS_DM_00618], [SWS_DM_00619], [SWS_DM_00620]. Die Instanz ist weder kopier- noch verschiebbar und signalisiert Fehler über NRCs aus DiagUdsNrcErrc[SWS_DM_01657], [SWS_DM_00618].
Kontext
Die Klasse ara::diag::GenericUDSService stellt eine generische Serviceschnittstelle für die Diagnosekommunikation nach UDS (Unified Diagnostic Services) bereit. Sie dient als Basisklasse für Anwendungen, die benutzerdefinierte oder nicht durch dedizierte Schnittstellen abgedeckte UDS-Dienste implementieren und verarbeiten möchten. Die Interaktion erfolgt im Wesentlichen zwischen der diagnostizierenden Applikationskomponente, dem AUTOSAR-Diagnose-Manager (DM) sowie dem zugrunde liegenden Modellierungskontext. Die Anbindung an den Diagnose-Manager und das Plattformmodell erfolgt bei der Instanziierung über einen ara::core::InstanceSpecifier, der auf einen entsprechenden Port-Prototypen eines DiagnosticGenericUdsInterface verweist [SWS_DM_00616]. Sobald die Registrierung über die Schnittstelle aktiviert wird, leitet der Diagnose-Manager eingehende UDS-Anfragen an die implementierte Instanz weiter [SWS_DM_00619].
Eine Instanz von ara::diag::GenericUDSService ist an einen festen Port-Prototypen gebunden und als Einzelexemplar konzipiert: Kopierkonstruktor [SWS_DM_01657], Verschiebekonstruktor [SWS_DM_01658] sowie die Zuweisungsoperatoren [SWS_DM_01655], [SWS_DM_01656] sind gelöscht (delete). Die Erzeugung erfolgt explizit über den Konstruktor unter Angabe eines InstanceSpecifier und der Nebenläufigkeitskonfiguration ConcurrencyType (kConcurrent oder kNotConcurrent) [SWS_DM_00616]. Der Lebenszyklus der Servicebereitschaft gliedert sich in zwei wesentliche Phasen:
Nicht angeboten (Stopped / Initial): Nach der Konstruktion oder nach dem Aufruf von StopOffer() leitet der DM keine Anfragen an die Instanz weiter [SWS_DM_00620].
Angeboten (Offered): Nach erfolgreichem Aufruf von Offer() ist der Handler aktiv und verarbeitet eingehende Diagnosemeldungen [SWS_DM_00619].
Die Zerstörung erfolgt über den virtuellen Destruktor ~GenericUDSService()[SWS_DM_00584]. Hinsichtlich der Thread-Sicherheit ist der Konstruktor als threadsicher spezifiziert, während Offer(), StopOffer() und der Destruktor nicht threadsicher sind und eine externe Synchronisation erfordern [SWS_DM_00616], [SWS_DM_00619], [SWS_DM_00620], [SWS_DM_00584].
Der reguläre Ablauf umfasst die Instanziierung der abgeleiteten Serviceklasse, die Freischaltung des Handlers, die asynchrone Auftragsabarbeitung und die spätere Deaktivierung:
Instanziierung: Die Applikation instanziiert die spezialisierte Service-Klasse mit dem passenden ara::core::InstanceSpecifier sowie dem gewünschten ConcurrencyType[SWS_DM_00616].
Dienst anbieten: Der Aufruf von Offer() signalisiert dem Diagnose-Manager die Bereitschaft zur Nachrichtenannahme [SWS_DM_00619].
Nachrichtenverarbeitung: Eingehende UDS-Anfragen führen zum Aufruf der rein virtuellen Methode HandleMessage() durch den DM. Übergeben werden Service-Identifier (sid), Nutzdaten (requestData), Metadaten (metaInfo) und ein cancellationHandler[SWS_DM_00618]. Die Methode liefert ein ara::core::Future<OperationOutput> zurück, über das das Ergebnis oder ein Fehler asynchron bereitgestellt wird [SWS_DM_00618]. Der Handler kann über cancellationHandler.IsCanceled() prüfen, ob der Vorgang abgebrochen wurde, oder über cancellationHandler.SetNotifier() eine Benachrichtigung registrieren [SWS_DM_00618].
Dienst beenden: Mittels StopOffer() wird die Weiterleitung von Anfragen beendet, bevor die Instanz zerstört wird [SWS_DM_00620], [SWS_DM_00584].
Fehlersituationen können in verschiedenen Phasen auftreten und erfordern eine differenzierte Behandlung:
Instanziierungsverletzungen: Schlägt die Zuordnung des InstanceSpecifier im Modell fehl, meldet das Framework definierte Violations: InstanceSpecifierMappingIntegrityViolation (Specifier lässt sich im Modell nicht auflösen oder verweist nicht auf einen PortPrototype), PortInterfaceMappingViolation (Port ist nicht über ein DiagnosticServiceGenericMapping referenziert), ProcessMappingViolation (kein passender Prozess modelliert) oder InstanceSpecifierAlreadyInUseViolation (Specifier wird im Prozess bereits verwendet) [SWS_DM_00616].
Doppelter Angebotsaufruf: Wird Offer() aufgerufen, obwohl der Dienst bereits aktiv angeboten wird, schlägt der Aufruf fehl und liefert den Fehlercode DiagOfferErrc::kAlreadyOffered zurück (Rollback-Semantik) [SWS_DM_00619].
Diagnosebezogene Ausführungsfehler: Kann eine UDS-Nachricht in HandleMessage() fachlich nicht positiv beantwortet werden, ist das Ergebnis im Future mit einem passenden Negative Response Code (NRC) nach ISO 14229-1 via DiagUdsNrcErrc zu belegen [SWS_DM_00618]. Zudem muss die Implementierung auf Abbruchsignale des cancellationHandler reagieren, falls die zugrunde liegende Diagnosekonversation vorzeitig beendet wurde [SWS_DM_00618].
Dieser Klassen-Leitfaden wurde automatisiert auf Basis des AUTOSAR-Standards generiert.
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 typed by a pingViolation DiagnosticGenericUdsInterface needs to be referenced by a DiagnosticServiceGenericMapping. 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 DiagnosticGenericUdsInterface.
concurrencyType
Specifies if the interface is implemented as thread safe ( kConcurrent) or non-thread safe (kNotConcurrent).
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: 38c6453769b1Herkunft
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Die Methode HandleMessage aus ara::diag::GenericUDSService dient der anwendungsspezifischen Verarbeitung eingehender UDS-Diagnoseanfragen [SWS_DM_00618].
Verwendung
Der Diagnostic Management (DM) ruft die Methode für jede empfangene Diagnose-Request-Nachricht auf [SWS_DM_00618]. Anhand der Parameter werden der Service Identifier (sid), die Nutzdaten (requestData als ara::core::Span<const std::uint8_t>), Verbindungsinformationen (metaInfo) sowie ein cancellationHandler übergeben. Die Verarbeitung erfolgt asynchron über die Rückgabe eines ara::core::Future<OperationOutput>[SWS_DM_00618]. Die Nutzdaten in requestData bleiben gültig, bis das zugehörige Promise erfüllt oder die Operation abgebrochen wird. Über cancellationHandler.IsCanceled() kann die Anwendung den Abbruchstatus prüfen oder mittels cancellationHandler.SetNotifier() eine Benachrichtigung für Sitzungsabbrüche registrieren [SWS_DM_00618].
Fehlerbehandlung
Kann eine Anforderung nicht erfolgreich verarbeitet werden, signalisiert die Anwendung den Fehler über das zurückgegebene Future mittels eines passenden negativen Antwortcodes (NRC nach ISO 14229-1) über DiagUdsNrcErrc[SWS_DM_00618].
Nebenläufigkeit und Randbedingungen
Lebensdauer von metaInfo: Die Gültigkeit des metaInfo-Objekts ist strikt auf die aktive Ausführungsdauer des Methodenaufrufs beschränkt [SWS_DM_01345]. Ein Speichern oder Verwenden nach Rückkehr von HandleMessage führt zu undefiniertem Verhalten.
Reentranz und Nebenläufigkeit: Ob Aufrufe threadsicher erfolgen müssen, bestimmt der im Konstruktor festgelegte ara::diag::ConcurrencyTypeSWS Diagnostics §7.3.1.2 „Concurrency of ara::diag interfaces“. Bei kConcurrent darf der DM nachfolgende Anfragen parallel aufrufen; bei kNotConcurrent wartet der DM, bis das Resultat der laufenden Anfrage bereitgestellt wurde.
Dieser Nutzungshinweis wurde automatisiert auf Basis der Spezifikation AUTOSAR Adaptive R25-11 generiert.
conditional whether the function has to be implemented thread safe or non-thread safe is determined by the ConcurrencyType given in the constructor
Parameter (in)
Parameter
Beschreibung
sid
Diagnostic Request Service Identifier.
requestData
Diagnostic request data (starting after SID). Lifetime: Valid until Promise is fulfilled or the processing is cancelled by the cancellationHandler.
metaInfo
MetaInfo of the request.
cancellationHandler
This parameter is used to • Query the current cancellation status by calling cancellationHandler.IsCanceled. Returns TRUE in case, the current conversation has been cancelled and FALSE otherwise. • Register a notifier function by calling cancellationHandler.SetNotifier. The registered notifier is called if the current conversation is cancelled.
This Offer will enable the DM to forward request messages to this handler.
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 19027d24302fHerkunftOffene Fragen (1)
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Verwendung
Die Methode Offer der Klasse ara::diag::GenericUDSService schaltet die Weiterleitung von Diagnoseanfragen frei: Sie ermöglicht dem Diagnostic Manager (DM), eingehende UDS-Anforderungsnachrichten an diesen Handler weiterzuleiten [SWS_DM_00619]. Der synchrone Aufruf besitzt keine Parameter, blockiert nicht und liefert als Rückgabewert ein ara::core::Result<void>[SWS_DM_00619]. Die Ausführung dürfte typischerweise (Interpretation:) während der Initialisierungs- und Startphase der Adaptive Application erfolgen, bevor Diagnosebotschaften über das Netzwerk verarbeitet werden müssen. Frage Q-c1e385a434fe1e4e (offen)
Fehlerbehandlung und Nebenläufigkeit
Die Funktion ist mit noexcept deklariert und garantiert Exception-Sicherheit [SWS_DM_00619]. Wurde der Dienst bereits zuvor angeboten, schlägt die Registrierung fehl und liefert den Fehlercode DiagOfferErrc::kAlreadyOffered mit Rollback-Semantik zurück [SWS_DM_00619]. Bezüglich der Thread-Sicherheit ist die Schnittstelle als not thread-safe spezifiziert [SWS_DM_00619]; gleichzeitige Aufrufe auf derselben Instanz müssen durch die aufrufende Anwendung synchronisiert werden.
Zusammenspiel
Das Anbieten über Offer entspricht dem standardisierten Registrierungsmuster im AUTOSAR-Adaptive-Diagnose-Subsystem, wie es vergleichbar für Routinen ([SWS_DM_00557]) oder Datenbezeichner ([SWS_DM_00638]) spezifiziert ist. Obwohl die Nomenklatur an ara::com angelehnt ist, handelt es sich um eine diagnostikspezifische Methode des Diagnostic Managers AUTOSAR_AP_SWS_Diagnostics §7.3.4.1.2 „Monitors“.
Dieser Nutzungshinweis wurde von einer KI auf Basis der AUTOSAR-Spezifikation R25-11 generiert.
This StopOffer will disable the forwarding of request messages from DM.
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 5dba8a8b4077HerkunftOffene Fragen (1)
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Verwendung
Die Methode StopOffer der Klasse ara::diag::GenericUDSService deaktiviert die Weiterleitung eingehender Diagnoseanfragen vom Diagnostic Management (DM) an die Service-Instanz [SWS_DM_00620]. Die Funktion wird über den Header ara/diag/generic_uds_service.h bereitgestellt, erwartet keine Parameter und besitzt den Rückgabetyp void[SWS_DM_00620].
Fehlerbehandlung
Die Methode ist mit noexcept und als ausnahmesicher (exception safe) spezifiziert [SWS_DM_00620]. Sie wirft keine Ausnahmen und gibt keine Fehlercodes zurück; das Stoppen der Weiterleitung erfolgt deterministisch.
Nebenläufigkeit und Einschränkungen
Laut Spezifikation ist StopOffer als nicht threadsicher (not thread-safe) klassifiziert [SWS_DM_00620]. Parallele Aufrufe für dieselbe Instanz müssen anwendungsseitig abgesichert werden. Interpretation: Der Aufruf von StopOffer dürfte typischerweise vor der Zerstörung des Instanzobjekts oder bei vorübergehender Nichtverfügbarkeit erfolgen, um ausstehende Weiterleitungen zu verhindern. Frage Q-408323dd00c313c0 (offen)
Zusammenspiel
Das Konzept von StopOffer folgt einem konsistenten Architekturmuster innerhalb von ara::diag, wie es sich auch bei generischen Routinen [SWS_DM_00558], generischen Data Identifiern [SWS_DM_00639], Security Access [SWS_DM_00767] sowie Monitoren [SWS_DM_01089] findet. Obwohl die Bezeichnungen an ara::com angelehnt sind, handelt es sich um eine eigenständige Implementierung des Diagnostic Management AUTOSAR_AP_SWS_Diagnostics §7.3.4.1.2 „Monitors“.
Dieser Nutzungshinweis wurde von einer KI generiert und basiert ausschließlich auf den Spezifikationen des AUTOSAR-Releases R25-11.
gemini-3.8-flash-medium· 2026-10-13