Ermöglicht Anwendungen die generische Bearbeitung von UDS-RoutineControl-Diensten mit asynchroner Datenübergabe.
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: ed3ab770d945HerkunftOffene Fragen (2)
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Ermöglicht Anwendungen die generische Bearbeitung von UDS-RoutineControl-Diensten mit asynchroner Datenübergabe.
Die Klasse stellt einen generischen Handler für UDS-RoutineControl-Dienste bereit und leitet Anfragen für unterschiedliche Routine-Kennungen an adaptive Anwendungen weiter [SWS_DM_00552]. Entwickler implementieren die geforderten Routine-Aktionen über asynchrone Methoden wie Start und aktivieren die Nachrichtenweiterleitung durch Offer[SWS_DM_00557]. Da Instanzen weder kopierbar noch verschiebbar sind, müssen Lebenszyklus und Nebenläufigkeit exakt über den Konstruktor und die Schnittstellen-Konfiguration gesteuert werden. Laufende Operationen unterstützen kooperative Abbrüche sowie standardisierte UDS-Fehlercodes.
Kontext
Die Klasse ara::diag::GenericRoutine stellt die generische Schnittstelle für die Verarbeitung von Diagnose-Routinen gemäß ISO 14229-1 (UDS RoutineControl, Service 0x31) in der AUTOSAR Adaptive Platform bereit. Sie fungiert als Bindeglied zwischen dem zentralen Diagnostic Management (DM) und der adaptiven Anwendung. Eine Instanz dieser Klasse wird an einen modellierten Port-Prototyp des Typs DiagnosticRoutineGenericInterface gebunden, welcher über ein DiagnosticServiceGenericMapping im Modell referenziert sein muss [SWS_DM_00552]. Im Unterschied zu typspezifischen Routinen-Schnittstellen übergibt GenericRoutine die Rohdaten der Diagnoseanfrage als ara::core::Span<const std::uint8_t> zusammen mit der konkreten Routinen-Kennung (routineId) an die Anwendung [SWS_DM_00554], [SWS_DM_00555], [SWS_DM_00556]. Dadurch kann ein einziger Handler mehrere Routinen flexibel bedienen.
Lebenszyklus
Instanzen von GenericRoutine sind an ihren spezifischen Port gebunden und dürfen weder kopiert noch verschoben werden; Kopier- und Verschiebekonstruktor sowie Zuweisungsoperatoren sind explizit gelöscht [SWS_DM_01637], [SWS_DM_01638], [SWS_DM_01635], [SWS_DM_01636]. Die Initialisierung erfolgt über den Konstruktor unter Angabe des ara::core::InstanceSpecifier sowie des Nebenläufigkeitsverhaltens (ConcurrencyType: kConcurrent oder kNotConcurrent) [SWS_DM_00552]. Dieser Parameter legt fest, ob die virtuellen Ausführungsmethoden thread-sicher implementiert sein müssen.
Nach der Erzeugung leitet das DM zunächst keine Nachrichten an den Handler weiter. Erst durch den Aufruf von Offer() wird die Weiterleitung aktiviert [SWS_DM_00557]. Über StopOffer() kann die Weiterleitung wieder deaktiviert werden [SWS_DM_00558], bevor die Instanz durch den virtuellen Destruktor ~GenericRoutine() freigegeben wird [SWS_DM_00553]. Während der Konstruktor threadsicher ist, sind Offer(), StopOffer() und der Destruktor nicht threadsicher und erfordern externe Synchronisation [SWS_DM_00552], [SWS_DM_00557], [SWS_DM_00558], [SWS_DM_00553].
Zur Bereitstellung einer generischen Routine leitet eine Anwendung von GenericRoutine ab und überschreibt die benötigten virtuellen Methoden. Die Methode Start (UDS-Subfunktion 0x01) ist rein virtuell (pure virtual) und muss zwingend implementiert werden [SWS_DM_00554]. Die Methoden Stop (Subfunktion 0x02) [SWS_DM_00555] und RequestResults (Subfunktion 0x03) [SWS_DM_00556] sind virtuelle Methoden; Interpretation: Da sie nicht rein virtuell sind, dürften sie nur dann überschrieben werden müssen, wenn die jeweilige Routine das Stoppen oder die separate Ergebnisabfrage fachlich unterstützt. Frage (offen)
Der reguläre Ablauf umfasst folgende Phasen:
Instanziierung: Erzeugen des abgeleiteten Handlers mit Port-Referenz und Nebenläufigkeitsmodus [SWS_DM_00552].
Aktivierung: Aufruf von Offer() zur Freigabe für das DM [SWS_DM_00557].
Ausführung: Bei eingehenden UDS-Anfragen ruft das DM Start, Stop oder RequestResults auf. Die Anwendung erhält routineId, requestData, metaInfo sowie einen CancellationHandler und liefert ein ara::core::Future<OperationOutput> zurück [SWS_DM_00554], [SWS_DM_00555], [SWS_DM_00556]. Die Gültigkeit von requestData ist garantiert, bis das zugehörige Promise erfüllt oder die Operation abgebrochen wird [SWS_DM_00554].
Abbruchbehandlung: Die Anwendung kann über cancellationHandler.IsCanceled() den Abbruchstatus prüfen oder via cancellationHandler.SetNotifier() einen Callback registrieren [SWS_DM_00554]. Interpretation: Im Falle eines Abbruchs dürfte die Anwendung laufende Hintergrundaktivitäten vorzeitig beenden und das Promise zeitnah auflösen. Frage (offen)
Deaktivierung: Beenden der Weiterleitung via StopOffer()[SWS_DM_00558] vor der Zerstörung des Objekts.
Fehler können sowohl bei der Konfiguration als auch während der Laufzeit und Ausführung auftreten:
Modell- und Zuordnungsverletzungen: Schlägt die Auflösung des InstanceSpecifier im Modell fehl, wird er nicht als PortPrototype identifiziert oder existiert kein passendes DiagnosticServiceGenericMapping, meldet das Framework Violations wie InstanceSpecifierMappingIntegrityViolation, PortInterfaceMappingViolation, ProcessMappingViolation oder InstanceSpecifierAlreadyInUseViolation[SWS_DM_00552].
Bereitstellungsfehler: Wird Offer() aufgerufen, obwohl der Dienst bereits angeboten wird, schlägt der Aufruf fehl und liefert den Fehlercode DiagOfferErrc::kAlreadyOffered zurück [SWS_DM_00557].
Diagnostische Fehlercodes (NRC): Kann eine Routine-Operation nicht erfolgreich abgeschlossen werden oder enthält die Anfrage ungültige Parameter, erfüllt die Anwendung das zurückgegebene Future nicht mit OperationOutput, sondern mit einem passenden UDS Negative Response Code (NRC) aus DiagUdsNrcErrc gemäß ISO 14229-1 [SWS_DM_00554], [SWS_DM_00555], [SWS_DM_00556].
Dieser Klassen-Leitfaden basiert auf der Spezifikation AUTOSAR Adaptive Platform R25-11 und wurde automatisiert erstellt.
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 DiagnosticRoutineGenericInterface 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 DiagnosticRoutineGenericInterface.
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.
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: 36b2772d0811HerkunftOffene Fragen (1)
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Verwendung
Die Funktion Offer der Klasse ara::diag::GenericRoutine versetzt das Diagnostic Management (DM) in die Lage, eingehende Diagnose-Anforderungsnachrichten für eine Routine an den registrierten Handler weiterzuleiten [SWS_DM_00557]. Der Aufruf erfolgt synchron, nimmt keine Parameter entgegen und liefert ein ara::core::Result<void> zurück [SWS_DM_00557]. Da die Methode mit der Spezifikation noexcept deklariert ist, gilt sie als ausnahmesicher (exception safe) [SWS_DM_00557].
Fehlerbehandlung
Schlägt die Bereitstellung fehl, liefert die Methode ein negatives Resultat. Wurde die Routine für die betreffende Instanz bereits zuvor angeboten, gibt die Methode den spezifischen Fehlercode DiagOfferErrc::kAlreadyOffered zurück [SWS_DM_00557]. Für diesen Fehlerfall ist eine Rollback-Semantik definiert, sodass der Zustand unverändert bleibt [SWS_DM_00557]. Der Fehlerbezeichner kAlreadyOffered ist zudem in den internen Fehlerdomänen für Diagnose-Aufrufe verankert [SWS_DM_00514].
Nebenläufigkeit und Einschränkungen
Die Schnittstelle ist ausdrücklich als nicht threadsicher (not thread-safe) spezifiziert [SWS_DM_00557]. Greifen mehrere Threads einer Anwendung auf denselben Handler zu, muss der Aufruf synchronisiert werden. Interpretation: Der Aufruf dürfte typischerweise während der Initialisierung erfolgen, da vor der Ausführung von Offer keine Anfragen empfangen werden können. Frage Q-0c42f415bcb0de20 (offen)
Zusammenspiel
Das Anbieten von Funktionalitäten über Offer ist ein zentrales Muster im AUTOSAR-Adaptive-Diagnosecluster; es wird analog auch für typspezifische Routine-Schnittstellen [SWS_DM_00594], generische UDS-Dienste [SWS_DM_00619] sowie Data Identifier [SWS_DM_00638] verwendet. Trotz Namensgleichheit mit ara::com stellt dies eine spezifische Implementierung des Diagnostic Management dar SWS Diagnostics §7.3.4.1.2 „Monitors“.
Dieser Nutzungshinweis wurde von einer KI kuratiert und stützt sich ausschließlich auf die AUTOSAR-Spezifikation R25-11.
Called for RoutineControl with SubFunction RequestResults (0x03) request for this Diagnostic RoutineIdentifier.
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: f4080ca4c8cdHerkunftOffene Fragen (1)
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Die Methode RequestResults der Klasse ara::diag::GenericRoutine wird von der Diagnostic-Server-Instanz aufgerufen, um UDS-RoutineControl-Anfragen des Dienstes 0x31 mit der Subfunktion requestRoutineResults (0x03) für den parametrierten Diagnose-Routine-Identifikator generisch zu verarbeiten ([SWS_DM_00575], [SWS_DM_00556]).
Beim Aufruf werden der Routine-Identifikator routineId, die anfragespezifischen Metadaten metaInfo sowie die Eingangsdaten requestData übergeben ([SWS_DM_00556]). Die Gültigkeit des Spans requestData ist strikt darauf beschränkt, bis das korrespondierende Promise erfüllt oder die Ausführung abgebrochen wird ([SWS_DM_00556]). Ein übergebener cancellationHandler erlaubt das Abfragen des Abbruchstatus via IsCanceled sowie die Registrierung einer Benachrichtigungsfunktion via SetNotifier ([SWS_DM_00556]).
Das Ergebnis wird asynchron als ara::core::Future<OperationOutput> zurückgegeben ([SWS_DM_00556]). Interpretation: Die Bereitstellung der Ausgabedaten dürfte typischerweise asynchron über ein applikationsseitiges ara::core::Promise erfolgen. Frage Q-f50c8509d7515e3f (offen) Im Erfolgsfall stellt das Future ein OperationOutput bereit, während im Fehlerfall ein passender UDS-NRC gemäß ISO 14229-1 über DiagUdsNrcErrc übermittelt wird ([SWS_DM_00556]). Die Funktion ist als noexcept deklariert und gilt als ausnahmesicher ([SWS_DM_00556]).
Bezüglich der Nebenläufigkeit ist die Thread-Sicherheit bedingt (conditional): Ob die Methode threadsicher implementiert werden muss, wird verbindlich über den dem Konstruktor übergebenen ConcurrencyType gesteuert ([SWS_DM_00556]).
Dieser Nutzungshinweis wurde automatisiert auf Basis der AUTOSAR-Spezifikation 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
routineId
the corresponding RoutineIdentifier
requestData
Content of request message (without RoutineIdentifier), 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.
Called for RoutineControl with SubFunction Start (0x01) request for this DiagnosticRoutine Identifier.
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 9e819a027940Herkunft
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Die Methode Start der Klasse ara::diag::GenericRoutine wird aufgerufen, sobald eine Diagnoseanforderung für RoutineControl mit der Sub-Funktion Start (0x01) für die spezifizierte routineId eingeht [SWS_DM_00554]. Im Gegensatz zur typisierten Routine-Schnittstelle gemäß [SWS_DM_00591] nimmt diese generische Schnittstelle die Rohdaten der Anfragenachricht als Byte-Spanne entgegen.
Für die Implementierung gelten folgende Anforderungen und Schnittstelleneigenschaften:
Aufrufkontext und Parameter: Neben der routineId und den Metadaten (metaInfo) wird der Parameter requestData übergeben. Die Lebensdauer der Anfragedaten bleibt gültig, bis das Promise erfüllt oder die Bearbeitung durch den cancellationHandler abgebrochen wird [SWS_DM_00554].
Abbruchbehandlung: Die Routine kann mittels cancellationHandler.IsCanceled() den aktuellen Abbruchstatus abfragen oder über cancellationHandler.SetNotifier() eine Notifier-Funktion registrieren, die beim Abbruch der Konversation aufgerufen wird [SWS_DM_00554].
Asynchrone Semantik: Die Verarbeitung erfolgt nicht-blockierend über ara::core::Future<OperationOutput>. Bei erfolgreicher Durchführung stellt OperationOutput die Nutzdaten für die positive Antwort bereit [SWS_DM_00554].
Fehlerbehandlung: Schlägt die Ausführung fehl, ist das Future mit einem passenden Negative Response Code (NRC) nach ISO 14229-1 unter Verwendung von DiagUdsNrcErrc abzuschließen [SWS_DM_00554].
Nebenläufigkeit: Die Funktion ist ausnahmesicher deklariert (noexcept). Ob die Bereitstellung threadsicher erfolgen muss, entscheidet der dem Konstruktor übergebene ConcurrencyType[SWS_DM_00554].
Dieser Nutzungshinweis wurde automatisiert auf Basis der AUTOSAR-Spezifikation 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
routineId
the corresponding RoutineIdentifier
requestData
Content of request message (without RoutineIdentifier). 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.
Called for RoutineControl with SubFunction Stop (0x02) request for this DiagnosticRoutine Identifier.
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: d8c6cb55284bHerkunft
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Die Methode Stop wird bei einer UDS-RoutineControl-Anfrage mit der Subfunktion Stop (0x02) für die jeweilige generische Diagnoseroutine aufgerufen [SWS_DM_00555]. Gegenüber typisierten Routine-Schnittstellen [SWS_DM_00592] nimmt sie den Routine-Bezeichner routineId sowie die Anfragedaten als Rohdaten-Span requestData entgegen [SWS_DM_00555].
Bei der Verwendung sind folgende Parameter- und Ablaufregeln zu beachten [SWS_DM_00555]:
Lebensdauer des Eingangsdaten-Spans: Der Speicherbereich von requestData bleibt gültig, bis das zugehörige Promise erfüllt oder die Ausführung über den cancellationHandler abgebrochen wurde [SWS_DM_00555].
Abbruchbehandlung: Die Anwendung kann über cancellationHandler.IsCanceled() prüfen, ob die aktuelle Diagnosekonversation abgebrochen wurde, oder über cancellationHandler.SetNotifier eine Benachrichtigungsfunktion registrieren, die beim Abbruch ausgelöst wird [SWS_DM_00555].
Asynchronität und Rückgabe: Die Funktion arbeitet asynchron und liefert ein ara::core::Future<OperationOutput> zurück, das im Erfolgsfall die Ausgabedaten für die positive UDS-Antwort enthält [SWS_DM_00555].
Die Fehlerbehandlung erfolgt über negative Diagnose-Rückgabewerte: Schlägt das Anhalten der Routine fehl, ist das Future mit einem passenden UDS-NRC-Fehlercode gemäß ISO 14229-1 über DiagUdsNrcErrc abzuschließen [SWS_DM_00555].
Hinsichtlich Nebenläufigkeit ist die Methode als noexcept und ausnahmesicher spezifiziert. Ob die konkrete Implementierung threadsicher ausgelegt sein muss, hängt vom ConcurrencyType ab, der bei der Instanziierung im Konstruktor übergeben wurde [SWS_DM_00555].
Dieser Nutzungshinweis basiert ausschließlich auf den Spezifikationen des Adaptive-AUTOSAR-Releases R25-11.
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
routineId
the corresponding RoutineIdentifier
requestData
Content of request message (without RoutineIdentifier). Lifetime: Valid until Promise is fulfilled or the processing is cancelled by the cancellationHandler.
metaInfo
MetaData 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 StopOffer will disable the forwarding of request messages from DM.
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 73588f5f0b57HerkunftOffene Fragen (1)
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Verwendung
Die Methode ara::diag::GenericRoutine::StopOffer deaktiviert die Weiterleitung von eingehenden Diagnoseanforderungen des Diagnostic Management (DM) an die entsprechende Routine-Instanz [SWS_DM_00558]. Die Funktion besitzt die Signatur void StopOffer() noexcept;, nimmt keine Parameter entgegen und liefert keinen Rückgabewert [SWS_DM_00558]. Der Aufruf wird synchron verarbeitet und signalisiert dem DM, dass die Routine ab diesem Zeitpunkt keine Anforderungen mehr entgegennimmt.
Fehlerbehandlung
Die Operation ist als exception safe spezifiziert und mit noexcept deklariert [SWS_DM_00558]. Fehlercodes oder C++-Exceptions treten bei der Ausführung nicht auf. Spezifische Meldungen an Entwicklungs- oder Fehlerspeicherinstanzen (DET/DEM) sind für diese Schnittstelle im Diagnosemodul nicht vorgesehen.
Nebenläufigkeit und Einschränkungen
Hinsichtlich des Threading-Verhaltens ist die Methode als not thread-safe ausgewiesen [SWS_DM_00558]. Nebenläufige Aufrufe auf derselben Instanz von ara::diag::GenericRoutine müssen daher anwendungsseitig synchronisiert werden. Interpretation: Ein Aufruf dürfte vor allem dann stattfinden, wenn eine Routine temporär inaktiviert oder die Anwendung kontrolliert beendet wird, nachdem zuvor ein Bereitstellungsaufruf erfolgt ist. Frage Q-e110ce01110699e3 (offen)
Zusammenspiel
Die Namensgebung folgt konzeptionell dem Service-Offering von ara::com, stellt jedoch eine eigenständige Implementierung innerhalb von ara::diag dar und darf nicht mit Kommunikationsangeboten vermischt werden (AUTOSAR_AP_SWS_Diagnostics §7.3.4.1.2 „Monitors“). Das gleiche Bereitstellungsmuster zur Deaktivierung der Anforderungsweiterleitung nutzen modulweit auch weitere Diagnose-Klassen wie ara::diag::GenericUDSService[SWS_DM_00620], ara::diag::GenericDataIdentifier[SWS_DM_00639], Routine-Interfaces [SWS_DM_00595] sowie ara::diag::Monitor[SWS_DM_01089].
Dieser Text wurde von einer KI erstellt und basiert ausschließlich auf den Spezifikationsunterlagen von AUTOSAR R25-11.
gemini-3.8-flash-medium· 2026-10-13