Ermöglicht Anwendungen die aktive Bereitstellung von Datei- und Verzeichnisinhalten bei UDS-Leseanfragen.
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 1ed24b3e3197HerkunftOffene Fragen (1)
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Ermöglicht Anwendungen die aktive Bereitstellung von Datei- und Verzeichnisinhalten bei UDS-Leseanfragen.
Die Klasse ara::diag::DataTransferReadByPushHandler dient als Basisschnittstelle für UDS-Leseübertragungen, bei denen die Anwendung Dateiinhalte aktiv paketiert und bereitstellt [SWS_DM_01515]. Datenblöcke werden sequenziell über Read() übergeben und die Übertragungssitzung wird anschließend über ExitRead() geordnet abgeschlossen [SWS_DM_01523]. Jeder Handler ist strikt an genau eine Transfersitzung gebunden, weshalb Kopieroperationen unterbunden sind. Als wesentliche Lebenszyklusbedingung darf die Instanz keinesfalls vor dem Aufruf von ExitRead() zerstört werden [SWS_DM_01519].
Kontext
Die Klasse ara::diag::DataTransferReadByPushHandler fungiert als Basis- und Schnittstellenklasse für Diagnose-Datentransfers, die durch Anfragen wie RequestReadFile oder RequestReadDirectory initiiert werden [SWS_DM_01515]. Das zugrundeliegende Übertragungsmuster basiert auf dem Push-Prinzip: Die Datei- oder Verzeichnisdaten werden von der spezifischen Anwendungsimplementierung aktiv paketiert und an die Diagnoseverwaltung (Diagnostic Management, DM) übergeben AUTOSAR_AP_SWS_Diagnostics §8.10.3 „Class: DataTransferReadByPushHandler“. Das Zusammenspiel erfolgt zwischen dem externen UDS-Client, der Plattformkomponente ara::diag und der konkreten Handler-Implementierung der Anwendung.
Da DataTransferReadByPushHandler als abstrakte Basisklasse ausgelegt ist, steht der parameterlose Konstruktor unter geschützter Sichtbarkeit (protected) [SWS_DM_01516]. Die Instanziierung erfolgt im Kontext einer abgeleiteten Klasse innerhalb der Anwendung. Instanzen sind strikt an genau eine Dateiübertragungssitzung gebunden („one way usage“); infolgedessen sind der Kopierkonstruktor [SWS_DM_01518] sowie der Kopierzuweisungsoperator [SWS_DM_01521] explizit gelöscht (=delete). Ein Transfer von Besitzverhältnissen ist über Move-Operationen möglich, da Move-Konstruktor [SWS_DM_01517] und Move-Zuweisung [SWS_DM_01520] als Standardimplementierungen vorliegen und als ausnahmesicher (noexcept) deklariert sind.
Für die Zerstörung des Handlers definiert die Spezifikation eine strikte Vorbedingung: Eine Instanz darf keinesfalls zerstört werden, bevor die Sitzung über den Aufruf von ExitRead() abgeschlossen wurde [SWS_DM_01519], AUTOSAR_AP_SWS_Diagnostics §8.10.3.1.1.2 „Destructor“. Bezüglich der Nebenläufigkeit sind die virtuellen Methoden der Klasse nicht threadsicher („not thread-safe“) spezifiziert [SWS_DM_01522], [SWS_DM_01523], weshalb gleichzeitige Zugriffe durch die Plattform synchronisiert oder sequenziell ausgeführt werden müssen.
Nutzungspfad
Der operative Ablauf gliedert sich in die repetitive Bereitstellung von Datenfragmenten und den geordneten Sitzungsabschluss. Nach Initiierung des Lesevorgangs ruft ara::diag wiederholt die Methode Read() auf [SWS_DM_01522], AUTOSAR_AP_SWS_Diagnostics §8.10.3.1.3.2 „Read“. Dabei übergibt das Framework eine Richtgröße für die empfohlene Rückgabegröße in Bytes (recommended_number_bytes_to_return) zur Erzielung eines optimalen Durchsatzes sowie den Anforderungskontext (MetaInfo) und einen CancellationHandler. Die Anwendung erzeugt das Datenpaket und übergibt dessen Eigentum über ein ara::core::Future<ara::core::Vector<ara::core::Byte>> an das Diagnose-Management, welches die Nutzdaten hinter dem Block-Sequenzzähler in die UDS-Antwortnachricht einfügt [SWS_DM_01522].
Sobald alle Datenblöcke übertragen wurden oder die Sitzung beendet werden soll, ruft ara::diag die Methode ExitRead() auf [SWS_DM_01523], AUTOSAR_AP_SWS_Diagnostics §8.10.3.1.3.1 „ExitRead“. Neben dem Beendigungsgrund (DataTransferExitType exit_type) werden herstellerspezifische Anforderungsparameter über transfer_request_parameter_record übergeben. Die Lebensdauer dieses Parameter-Spans ist bindend daran gekoppelt, bis das zugehörige Promise erfüllt oder die Bearbeitung abgebrochen wird [SWS_DM_01523]. Nach Rückgabe des finalen Antwortparametersatzes über die Future gilt die Übertragung als beendet, womit die Bedingung für die gefahrlose Zerstörung des Handler-Objekts erfüllt ist [SWS_DM_01519].
Sequenzdiagramm: Typische Interaktionsabfolge zwischen Diagnose-Management und Handler bei Leseübertragung und Transferabschluss. Quellen: [SWS_DM_01522], [SWS_DM_01523], [SWS_DM_01519]
Fehlerszenarien
Tritt während der Zusammenstellung von Datenblöcken oder beim Sitzungsabschluss ein Fehler auf, wird dieser asynchron über das jeweilige ara::core::Future gemeldet. Anstelle einer positiven Antwortstruktur wird das Future mit einem Fehlercode (ara::core::ErrorCode) aus dem Bereich DiagUdsNrcErrc bereitgestellt, der einer passenden negativen Rückmeldekennung (Negative Response Code, NRC) gemäß ISO 14229-1 entspricht [SWS_DM_01522], [SWS_DM_01523].
Bricht der Diagnosedialog ab oder sendet der Client eine Abbruchanforderung, kommt der übergebene CancellationHandler zum Tragen. Die Implementierung kann den aktuellen Abbruchstatus über cancellation_handler.IsCanceled() abfragen oder über cancellation_handler.SetNotifier() eine Rückruffunktion registrieren, die beim Abbruch der Konversation ausgelöst wird [SWS_DM_01522], [SWS_DM_01523]. Die Erfüllung oder der Abbruch des Promises markiert zugleich das Ende der Gültigkeit des Parametersatzes in ExitRead()[SWS_DM_01523].
Dieser Leitfaden basiert auf der Spezifikation AUTOSAR Adaptive Platform Release R25-11.
Reads data chunk from the application. The first or subsequent file/directory info content chunk to be sent back to the UDS client will be composed by the application and its ownership is passed as a result to ara::diag.
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: eefe02828ffeHerkunft
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Die virtuelle Methode ExitRead beendet eine laufende Datenübertragungssitzung im Kontext des Diagnose-Handlers [SWS_DM_01523]. Die Funktion arbeitet asynchron und liefert ein ara::core::Future mit den Antwortdaten als Byte-Vektor zurück SWS Diagnostics §8.10.3.1.3.1 „ExitRead“.
Parameter und Aufrufkontext
exit_type (DataTransferExitType): Spezifiziert den Grund für das Beenden der Übertragung [SWS_DM_01523].
transfer_request_parameter_record (ara::core::Span<const ara::core::Byte>): Enthält herstellerspezifische Parameter zur Unterstützung des Datentransfers. Die zugrunde liegenden Daten müssen gültig bleiben, bis das zugehörige Promise erfüllt oder die Verarbeitung abgebrochen wird [SWS_DM_01523].
meta_info (MetaInfo const &): Übergibt Metainformationen der Diagnoseanfrage [SWS_DM_01523].
cancellation_handler (CancellationHandler): Dient zur Überprüfung des Abbruchstatus mittels IsCanceled() oder zur Registrierung einer Callback-Funktion via SetNotifier() im Falle eines Sitzungsabbruchs [SWS_DM_01523].
Fehlerbehandlung und Rückgabewerte
Im Erfolgsfall stellt das Future die Ausgabedaten bereit, die in der positiven UDS-Antwort nach der SID als transferResponseParameterRecord platziert werden [SWS_DM_01523]. Bei einem Fehlschlag wird das Future mit einem passenden Negative Response Code (NRC) aus DiagUdsNrcErrc gemäß ISO 14229-1 vervollständigt [SWS_DM_01523].
Nebenläufigkeit und Lebenszyklus
Die Methode ist ausnahmesicher (exception safe), aber explizit nicht threadsicher (not thread-safe) spezifiziert [SWS_DM_01523]. Hinsichtlich des Objektlebenszyklus besteht eine bindende Reihenfolgebedingung: Eine Instanz von DataTransferReadByPushHandler darf keinesfalls vor dem Aufruf von ExitRead() zerstört werden [SWS_DM_01519]. Analoge Vorgaben gelten für verwandte Handler-Klassen im Datentransfer [SWS_DM_01510][SWS_DM_01499].
Dieser Text wurde von einer KI auf Basis der Spezifikation AUTOSAR Adaptive R25-11 generiert.
This parameter record contains parameter(s), which are required
parameter_record
by the server to support the transfer of data. Format and length of this parameter(s) are vehicle manufacturer specific. Lifetime: Valid until Promise is fulfilled or the processing is cancelled by the cancellationHandler.
meta_info
MetaInfo of the request.
cancellation_handler
This parameter is used to • Query the current cancellation status by calling cancellation_ handler.IsCanceled(). Returns true in case, the current conversation has been cancelled and false otherwise. • Register a notifier function by calling cancellation_handler.Set Notifier(). The registered notifier is called if the current conversation is cancelled.
A Future, which either gets readied to OperationOutput (transfer ResponseParameterRecord for a positive response message) or readied with ErrorCode from DiagUdsNrcErrc (for an negative response message). Data in OperationOutput.response_data will be placed after SID as transferResponseParameterRecord in the positive response.
Fehler
Fehlercode
Beschreibung
Please use an applicable NRC, as defined in ISO 14229-1, using DiagUdsNrcErrc.
Request a governed re-review of this record. The record is not changed immediately.
Reads data chunk from the application. The first or subsequent file/directory info content chunk to be sent back to the UDS client will be composed by the application and its ownership is passed as a result to ara::diag.
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: fcd7efa833dfHerkunftOffene Fragen (1)
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Die rein virtuelle Methode Read der Klasse ara::diag::DataTransferReadByPushHandler dient dem asynchronen Auslesen von Datenblöcken für Datei- oder Verzeichnisinformationen aus der Anwendung [SWS_DM_01522]. Die Anwendung stellt den jeweiligen Daten-Chunk zusammen und übergibt dessen Eigentum als ara::core::Vector<ara::core::Byte> an das Diagnosemodul.
Verwendung und Aufrufkontext
Der Aufruf erfolgt durch den Diagnostic Server zur Bereitstellung von Antwortdaten für UDS-Clients über die Header-Datei ara/diag/data_transfer.h[SWS_DM_01522]. Die Methode erwartet drei Parameter:
recommended_number_bytes_to_return: Die empfohlene Anzahl an Bytes für optimalen Durchsatz. Dieser Wert dürfte sich vermutlich an der internen Puffer- oder PDU-Größe des Diagnostic Management orientieren. Frage Q-1a8c1270b192b96f (offen)
meta_info: Zusätzliche Meta-Informationen der eingehenden Diagnoseanfrage (MetaInfo).
cancellation_handler: Ermöglicht das Abfragen des Abbruchstatus via cancellation_handler.IsCanceled() oder das Registrieren einer Benachrichtigung mittels cancellation_handler.SetNotifier() bei Verbindungsabbrüchen.
Als Rückgabewert dient ein ara::core::Future<ara::core::Vector<ara::core::Byte>>. Bei erfolgreicher Verarbeitung werden die Daten als transferResponseParameterRecord hinter dem Sequenzzähler in die positive Antwortnachricht eingebettet [SWS_DM_01522].
Fehlerbehandlung und Nebenläufigkeit
Schlägt die Verarbeitung fehl, wird das Future mit einem Fehlercode aus DiagUdsNrcErrc erfüllt, der eine passende NRC gemäß ISO 14229-1 abbildet [SWS_DM_01522]. Wird die Schnittstelle vom Dienst noch nicht oder nicht mehr mittels offer() angeboten, beantwortet der Diagnostic Manager den Request mit NRC 0x94 (ResourceTemporarilyNotAvailable) [SWS_DM_01257]. Die Methode ist als ausnahmesicher (exception safe), jedoch als nicht threadsicher (not thread-safe) spezifiziert [SWS_DM_01522], weshalb gleichzeitige Aufrufe anwendungsseitig zu synchronisieren sind.
Zusammenspiel
Das Push-Prinzip dieser Schnittstelle ergänzt alternative Lesemechanismen des Diagnosemoduls: das Pull-Verfahren über ara::diag::DataTransferReadByPullHandler::Read[SWS_DM_01513] mit vordefiniertem Speicherbereich sowie die Bereitstellung eines geteilten Speicherbereichs mittels ReleaseHandler[SWS_DM_01504].
The recommended number of bytes to send back to DM in order to
bytes_to_return
get optimum data throughput.
meta_info
MetaInfo of the request.
cancellation_handler
This parameter is used to • Query the current cancellation status by calling cancellation_ handler.IsCanceled(). Returns true in case, the current conversation has been cancelled and false otherwise. • Register a notifier function by calling cancellation_handler.Set Notifier(). The registered notifier is called if the current conversation is cancelled.
A Future, which either gets readied to ReadPushOutput (transfer ResponseParameterRecord for a positive response message) or readied with ErrorCode from DiagUdsNrcErrc (for a negative response message). Data in ReadPushOutput.responseData will be placed after block SequenceCounter as transferResponseParameterRecord in the positive response.
Fehler
Fehlercode
Beschreibung
Please use an applicable NRC, as defined in ISO 14229-1, using DiagUdsNrcErrc.
Request a governed re-review of this record. The record is not changed immediately.
gemini-3.8-flash-medium· 2026-10-13