Verarbeitet und speichert eingehende Datenblöcke bei schreibenden Dateitransfers in der Anwendung.
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: eacdeba00b95HerkunftOffene Fragen (2)
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Verarbeitet und speichert eingehende Datenblöcke bei schreibenden Dateitransfers in der Anwendung.
Die Klasse ara::diag::DataTransferWriteHandler dient in AUTOSAR Adaptive der anwendungsseitigen Verarbeitung von schreibenden Dateitransfers, die durch RequestWriteFile in den Modi AddFile, ResumeFile oder ReplaceFile angestoßen wurden [SWS_DM_01539]. Eingehende Datenpakete werden asynchron über Write() in den Speicher geschrieben und die Sitzung anschließend mittels ExitWrite() abgeschlossen. Eine Instanz ist strikt an eine einzelne Übertragungssitzung gebunden und darf keinesfalls vor dem Aufruf von ExitWrite() zerstört werden [SWS_DM_01541].
Kontext
Die abstrakte Basisklasse ara::diag::DataTransferWriteHandler definiert in der AUTOSAR Adaptive Platform die Schnittstelle für schreibende Dateitransfers [SWS_DM_01539] (AUTOSAR_AP_SWS_Diagnostics §8.10.6 „Class: DataTransferWriteHandler“). Sie dient der anwendungsseitigen Verarbeitung von Datenübertragungen, die im Rahmen von RequestWriteFile über die Betriebsmodi AddFile, ResumeFile oder ReplaceFile angestoßen wurden.
Innerhalb der Diagnosearchitektur interagiert der Handler mit dem externen UDS-Client, der Diagnose-Middleware und der Anwendung. Der Client übermittelt segmentierte Datenblöcke, die von einer abgeleiteten Implementierung des Handlers entgegengenommen und im Anwendungsspeicher abgelegt werden [SWS_DM_01546]. Vermutlich übernimmt das Diagnose-Management der Plattform dabei die UDS-Protokollkoordination und reicht die Nutzdaten über die Handler-Schnittstelle an die Zielanwendung weiter. Frage Q-484dc9dd80e56af4 (offen)
Lebenszyklus
Die Instanziierung von ara::diag::DataTransferWriteHandler erfolgt ausschließlich durch spezialisierte Unterklassen der Anwendung: Der parameterlose Konstruktor ist mit protected und noexcept=default definiert [SWS_DM_01540], was eine direkte Instanziierung der Basisklasse verhindert. Eine Handler-Instanz ist strikt an eine einzelne Dateiübertragungssitzung gebunden („one way usage i.e. per single file transfer session“). Aus diesem Grund sind der Kopierkonstruktor [SWS_DM_01544] (AUTOSAR_AP_SWS_Diagnostics §8.10.6.1.2.1 „DataTransferWriteHandler“) und der Kopierzuweisungsoperator [SWS_DM_01545] gelöscht (=delete).
Für den Abbau der Instanz gilt eine bindende Vorbedingung: Eine Instanz dieser Klasse darf keinesfalls zerstört werden, bevor die Methode ExitWrite() aufgerufen wurde [SWS_DM_01541] (AUTOSAR_AP_SWS_Diagnostics §8.10.6.1.1.2 „Destructor“). Erst nach vollständiger Durchführung von ExitWrite() darf der virtuelle Destruktor ~DataTransferWriteHandler() aufgerufen werden. Die Elementfunktionen und der Destruktor sind als nicht threadsicher (not thread-safe) spezifiziert [SWS_DM_01541], [SWS_DM_01546], [SWS_DM_01547].
Zustandsdiagramm: Lebenszyklus und Aufrufabfolge einer DataTransferWriteHandler-Instanz. Quellen: [SWS_DM_01541], [SWS_DM_01544].
Nutzungspfad
Der reguläre Ablauf eines schreibenden Transfers umfasst das schrittweise Empfangen von Datenblöcken und den anschließenden Abschluss der Sitzung:
Für jedes eintreffende Datensegment ruft das Diagnosesystem die rein virtuelle Methode Write() auf [SWS_DM_01546] (AUTOSAR_AP_SWS_Diagnostics §8.10.6.1.3.2 „Write“). Die Daten werden als ara::core::Span<ara::core::Byte> übergeben. Die Gültigkeit dieses Speicherbereichs bleibt bestehen, bis das zugehörige Promise erfüllt oder die Operation abgebrochen wird. Die Anwendung hängt die Daten an den internen Puffer an und liefert ein ara::core::Future<void> zurück.
Nachdem alle Segmente übertragen wurden, ruft die Plattform die rein virtuelle Methode ExitWrite() auf [SWS_DM_01547] (AUTOSAR_AP_SWS_Diagnostics §8.10.6.1.3.1 „ExitWrite“). Übergeben werden der Beendigungsgrund (DataTransferExitType), fahrzeugherstellerspezifische Parameter (transferRequestParameterRecord), metaInfo sowie ein CancellationHandler.
Die Methode ExitWrite() gibt ein ara::core::Future<ara::core::Vector<ara::core::Byte>> zurück. Bei erfolgreichem Abschluss werden die darin enthaltenen Daten als transferResponseParameterRecord hinter der Service-ID in die positive UDS-Antwortnachricht eingefügt [SWS_DM_01547].
Sequenzdiagramm: Aufrufsequenz von Write- und ExitWrite-Operationen während einer Transfersitzung. Quellen: [SWS_DM_01546], [SWS_DM_01547].
Fehlerszenarien
Fehler während der Datenverarbeitung und des Transfers werden über standardisierte Rückgabewerte und Abbruchmechanismen verwaltet:
Schlägt das Schreiben eines Datenblocks oder das Beenden des Transfers fehl, wird das jeweilige Future mit einem ara::core::ErrorCode aus DiagUdsNrcErrc bereitgestellt [SWS_DM_01546], [SWS_DM_01547]. Dies führt zur Generierung einer entsprechenden negativen UDS-Antwort (NRC gemäß ISO 14229-1) an den Client.
Beide Methoden stellen einen CancellationHandler bereit. Die Anwendung kann über cancellationHandler.IsCanceled() prüfen, ob die Konversation abgebrochen wurde, oder mittels cancellationHandler.SetNotifier() eine Benachrichtigungsfunktion registrieren, die bei Abbruch der Konversation ausgeführt wird [SWS_DM_01546], [SWS_DM_01547].
Wird die Instanz vor dem Aufruf von ExitWrite() zerstört, liegt ein Verstoß gegen die spezifizierte Lebenszyklusregel vor [SWS_DM_01541], was vermutlich zu undefiniertem Systemzustand und unvollständigen Dateien führt. Frage Q-cc032c11ac89a5b1 (offen) Zudem führt ein ungeschützter nebenläufiger Zugriff zu Dateninkonsistenzen, da die Schnittstelle explizit nicht threadsicher ist.
Dieser Leitfaden wurde durch einen KI-Kurations-Assistenten auf Basis von AUTOSAR R25-11 erstellt.
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 459b3563e8d0Herkunft
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Verwendung
Die virtuelle Memberfunktion ara::diag::DataTransferWriteHandler::ExitWrite beendet eine laufende Datenübertragungssitzung für Schreibzugriffe [SWS_DM_01547] (AUTOSAR_AP_SWS_Diagnostics §8.10.6.1.3.1 „ExitWrite“, Header #include "ara/diag/data_transfer.h"). Die Aufrufparameter umfassen:
exitType: Bestimmt den Grund für das Beenden der Sitzung [SWS_DM_01547].
transferRequestParameterRecord: Fahrzeugherstellerspezifische Parameter zur Unterstützung des Datentransfers; die Gültigkeit des Spans muss bestehen bleiben, bis das zugehörige Promise erfüllt oder die Operation abgebrochen wird [SWS_DM_01547].
metaInfo: Metainformationen der Diagnoseanforderung [SWS_DM_01547].
cancellationHandler: Ermöglicht die Abfrage des Abbruchstatus via cancellationHandler.IsCanceled() sowie die Registrierung eines Notifiers via cancellationHandler.SetNotifier()[SWS_DM_01547].
Die Funktion arbeitet asynchron und liefert ein ara::core::Future<ara::core::Vector<ara::core::Byte>> zurück, dessen Ergebnisdaten im Erfolgsfall als transferResponseParameterRecord hinter der SID in die positive Antwortnachricht eingefügt werden [SWS_DM_01547].
Fehlerbehandlung
Schlägt die Beendigung fehl, ist das Future mit einem passenden Negative Response Code (NRC) gemäß ISO 14229-1 über DiagUdsNrcErrc bereitzustellen [SWS_DM_01547]. Die Funktion ist als noexcept sowie ausnahmesicher (exception safe) spezifiziert [SWS_DM_01547].
Nebenläufigkeit und Zusammenspiel
Die Implementierung ist nicht threadsicher (not thread-safe) [SWS_DM_01547]. Hinsichtlich des Objektlebenszyklus besteht eine strikte Reihenfolgebedingung: Eine Instanz der Handler-Klasse darf erst zerstört werden, nachdem ExitWrite() aufgerufen wurde [SWS_DM_01541].
Dieser Nutzungshinweis wurde automatisiert auf Basis der AUTOSAR-Spezifikationen für Release R25-11 erstellt.
This parameter record contains parameter(s), which are required 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.
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.
Returns a Future, which either gets readied to OperationOutput (transferResponseParameterRecord 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.
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: a81be0f54500HerkunftOffene Fragen (1)
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Die Methode Write der Schnittstelle ara::diag::DataTransferWriteHandler dient dem Anhängen empfangener Datenblöcke an den Speicherbereich der Anwendung bei einem UDS-Dateitransfer [SWS_DM_01546]. Der Aufruf erfolgt durch die Diagnostic-Server-Instanz, wenn im Rahmen eines durch RequestFileTransfer (0x38) eingeleiteten Vorgangs eine UDS-Anfrage TransferData (0x36) empfangen wird [SWS_DM_01317].
Parameter und Semantik
Die zu schreibenden Dateiinhalte werden über requestData als ara::core::Span<ara::core::Byte> übergeben; der referenzierte Puffer bleibt gültig, bis das zugehörige Promise erfüllt oder die Bearbeitung abgebrochen wird [SWS_DM_01546]. Der Parameter metaInfo stellt Metainformationen der Diagnoseanfrage bereit. Über cancellationHandler kann der aktuelle Abbruchstatus mittels IsCanceled geprüft oder ein Benachrichtigungs-Callback über SetNotifier registriert werden [SWS_DM_01546].
Fehlerbehandlung und Nebenläufigkeit
Das Ergebnis wird asynchron als ara::core::Future<void> zurückgegeben. Im Erfolgsfall wird das Future leer abgeschlossen; bei Fehlern ist es mit einem passenden Negative Response Code (NRC) aus DiagUdsNrcErrc gemäß ISO 14229-1 zu komplettieren [SWS_DM_01546]. Die Funktion ist als exception safe, jedoch ausdrücklich als not thread-safe spezifiziert [SWS_DM_01546]; der Diagnostic Server dürfte daher sequentielle Aufrufe für dieselbe Sitzung garantieren. Frage Q-e60d55fe09b9a2c5 (offen)
Zusammenspiel und Ablauf
Der Schreib-Handler wird über Template-Konstruktoren innerhalb der DataTransferWriteSession registriert [SWS_DM_01317]. Sobald die Übertragung mit RequestTransferExit (0x37) abgeschlossen wird, ruft der Server die Exit-Methode desselben Handlers auf [SWS_DM_01318]. Das Element grenzt sich von DID-bezogenen Schreibmethoden ab, wie sie in [SWS_DM_00598] oder [SWS_DM_00637] definiert sind.
Dieser Text wurde automatisch erstellt. Fachliche Aussagen sind durch Spezifikationsverweise belegt.
The first or subsequent file content chunk received from the UDS client to be written into the file. 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.
gemini-3.8-flash-medium· 2026-10-13