Ermöglicht das Auslesen kompletter Dateien oder Verzeichnisse über geteilte Speicherbereiche bei Diagnoseanfragen.
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 4c654c39d186HerkunftOffene Fragen (1)
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Ermöglicht das Auslesen kompletter Dateien oder Verzeichnisse über geteilte Speicherbereiche bei Diagnoseanfragen.
Die Klasse ara::diag::DataTransferReadSharedDataHandler dient der Abwicklung lesender Diagnose-Datentransfers für Datei- und Verzeichnisinhalte über geteilten Speicher ([SWS_DM_01497]). Nach dem Start der Sitzung stellt die Anwendungs-Implementierung die gesamten Daten als Shared Data View per Read() bereit und hält den alloziierten Puffer bis zur Freigabemeldung durch den ReleaseHandler vor ([SWS_DM_01504]). Vor der Zerstörung des handlerspezifischen Objekts muss die Übertragungssitzung zwingend über ExitRead() abgeschlossen werden. Das Objekt ist ausschließlich für eine einzelne Übertragungssitzung bestimmt und darf daher verschoben, aber nicht kopiert werden.
Kontext
Die Klasse ara::diag::DataTransferReadSharedDataHandler gehört zum Diagnose-Bereich der AUTOSAR Adaptive Platform im Modul diag (AUTOSAR_AP_SWS_Diagnostics §8.10.5 „Class: DataTransferReadSharedDataHandler“). Ihre Kernaufgabe besteht in der Abwicklung von Datentransfers für Datei- und Verzeichnisinhalte, die durch UDS-Anfragen wie RequestReadFile oder RequestReadDirectory angestoßen werden ([SWS_DM_01497]). Statt einzelner Kopierschritte für jeden Übertragungsblock ermöglicht dieser Handler der anwendungsspezifischen Implementierung, die gesamten Daten als zusammenhängenden, geteilten Speicherbereich bereitzustellen.
Im Systemgesamtablauf kooperieren drei Hauptakteure: Der externe UDS-Client sendet die Leseanfrage an das Steuergerät. Die Diagnose-Laufzeitumgebung AraDiag nimmt die Anfrage entgegen und leitet die Ausführung an die konkrete Implementierung von DataTransferReadSharedDataHandler weiter ([SWS_DM_01497], [SWS_DM_01504]). Ein dritter Partner, der ReleaseHandler, signalisiert der Anwendung, sobald die geteilten Speicherressourcen von der Plattform nicht mehr benötigt werden und freigegeben werden dürfen ([SWS_DM_01504]).
Kontextdiagramm: Zusammenspiel zwischen UDS-Client, AraDiag-Laufzeitumgebung und der anwendungsseitigen Handler-Implementierung. Quellen: [SWS_DM_01497], [SWS_DM_01504], [SWS_DM_01505]
Für die Zerstörung des Objekts besteht eine strikte Vorbedingung: Eine Instanz dieser Klasse darf keinesfalls zerstört werden, bevor die Transfersitzung durch den Aufruf von ExitRead() formal beendet wurde ([SWS_DM_01499], AUTOSAR_AP_SWS_Diagnostics §8.10.5.1.1.3 „Destructor“). Erst nach Vollzug dieser Abschlussbehandlung darf der virtuelle Destruktor ablaufen ([SWS_DM_01499]).
Bezüglich der Nebenläufigkeit sind die zentralen Methoden Read() und ExitRead() als nicht threadsicher (not thread-safe) ausgewiesen, während sämtliche Funktionen der Schnittstelle Ausnahmesicherheit (exception safe) garantieren ([SWS_DM_01498], [SWS_DM_01504], [SWS_DM_01505]).
Nutzungspfad
Die typische Aufrufabfolge eines Datentransfers mit geteilten Speicherbereichen umfasst mehrere Schritte:
Bereitstellung der Shared Data:AraDiag ruft die rein virtuelle Methode Read() auf und übergibt einen ReleaseHandler, MetaInfo sowie einen CancellationHandler ([SWS_DM_01504]). Die Anwendung alloziert den gesamten Datei- bzw. Verzeichnisinhalt und übergibt die geteilte Sicht darauf als ara::core::Span<ara::core::Byte> über ein ara::core::Future an AraDiag zurück ([SWS_DM_01504]).
Speichervorhaltung und Freigabe: Die Anwendung muss den alloziierten Speicher zwingend so lange intakt halten, bis der ReleaseHandler signalisiert, dass der Speicherbereich sicher freigegeben werden kann ([SWS_DM_01504]). Die Anwendung kann hierfür eine Notifier-Funktion am ReleaseHandler registrieren oder dessen Status aktiv abfragen ([SWS_DM_01504]). Interpretation: Die Signalisierung über den ReleaseHandler erfolgt vermutlich asynchron durch AraDiag, sobald die Datenblöcke erfolgreich an den UDS-Client übermittelt wurden. Frage Q-0fbc1c5e667c9a68 (offen)
Sitzungsabschluss: Zum Beenden der Übertragung ruft AraDiag die Methode ExitRead() auf ([SWS_DM_01505], AUTOSAR_AP_SWS_Diagnostics §8.10.5.1.3.1 „ExitRead“). Neben dem Beendigungsgrund (DataTransferExitType) werden fahrzeugherstellerspezifische Anforderungsparameter übergeben, deren Lebensdauer bis zur Erfüllung des Ergebnis-Promises garantiert ist ([SWS_DM_01505]). Die Anwendung liefert die Antwortdaten über ein ara::core::Future<ara::core::Vector<ara::core::Byte>> zurück ([SWS_DM_01505]).
Objektzerstörung: Nach erfolgreichem Aufruf von ExitRead() darf die Handler-Instanz freigegeben und zerstört werden ([SWS_DM_01499]).
Sequenzdiagramm: Schrittfolge von der Datenbereitstellung per Read() über die Speicherfreigabe bis zum Abschluss per ExitRead(). Quellen: [SWS_DM_01499], [SWS_DM_01504], [SWS_DM_01505]
Fehlerszenarien
Treten bei der Bereitstellung der Daten oder beim Beenden der Übertragung Fehler auf, werden diese über das jeweilige ara::core::Future mit einem ara::core::ErrorCode aus der Domäne DiagUdsNrcErrc gemäß ISO 14229-1 gemeldet ([SWS_DM_01504], [SWS_DM_01505]).
Ein weiteres Szenario stellt der Abbruch einer laufenden Diagnosekonversation dar. Beide Methoden erhalten einen CancellationHandler ([SWS_DM_01504], [SWS_DM_01505]). Die Anwendung kann über cancellation_handler.IsCanceled() den Abbruchstatus synchron prüfen oder über cancellation_handler.SetNotifier() eine Benachrichtigungsfunktion hinterlegen, um bei vorzeitigem Abbruch unverzüglich zu reagieren ([SWS_DM_01504], [SWS_DM_01505]).
Eine Verletzung der Vorbedingung bezüglich des Destruktors – wenn das Objekt zerstört wird, bevor ExitRead() aufgerufen wurde – widerspricht der Vorgabe [SWS_DM_01499] und führt zu fehlerhaften Programmzuständen.
Dieser Klassen-Leitfaden basiert auf der Spezifikation AUTOSAR Adaptive Platform Release R25-11.
Provides the whole data to be read out from the application in form of a shared data view. The whole file/directory info content to be sent back to the UDS client will be allocated by the application and its shared ownership (view over the memory location) is passed as a result to AraDiag. The allocated memory must be kept until the ReleaseHandler’s notifier is invoked or the status polled, signalling that the memory, addressed by the Span now can safely be released.
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 8bcba929adb6Herkunft
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Die Schnittstelle ExitRead der Klasse ara::diag::DataTransferReadSharedDataHandler ([SWS_DM_01505]; Header ara/diag/data_transfer.h) beendet eine laufende Datenübertragungssitzung.
exit_type (DataTransferExitType): Spezifiziert den Grund für das Beenden der Sitzung.
transfer_request_parameter_record (ara::core::Span<const ara::core::Byte>): Enthält herstellerspezifische Parameter zur Unterstützung des Transfers. Die Daten bleiben gültig, bis das zugehörige Promise erfüllt oder die Verarbeitung abgebrochen wird.
meta_info (MetaInfo const&): Beinhaltet zusätzliche Metainformationen der Diagnoseanfrage.
cancellation_handler (CancellationHandler): Erlaubt die Prüfung des Abbruchstatus mittels cancellation_handler.IsCanceled() sowie die Registrierung einer Benachrichtigungsfunktion über cancellation_handler.SetNotifier(), welche bei Abbruch der Konversation aufgerufen wird.
Fehlerbehandlung und Rückgabewerte
Bei erfolgreichem Abschluss stellt das Future die Ausgabedaten (transferResponseParameterRecord) bereit, welche in der positiven Antwort hinter der SID platziert werden [SWS_DM_01505]. Im Fehlerfall wird das Future mit einem Fehlercode aus DiagUdsNrcErrc (zutreffender NRC gemäß ISO 14229-1) erfüllt [SWS_DM_01505].
Nebenläufigkeit und Lebenszyklus
Die Methode ist als noexcept deklariert (exception safe), jedoch explizit als not thread-safe spezifiziert [SWS_DM_01505]. Bezüglich des Objektlebenszyklus gilt die Vorgabe, dass eine Instanz von DataTransferReadSharedDataHandler keinesfalls zerstört werden darf, bevor ExitRead() aufgerufen wurde ([SWS_DM_01499]). Analoge Beendigungsfunktionen und Destruktoranforderungen existieren für die verwandten Klassen DataTransferReadByPullHandler ([SWS_DM_01514]) und DataTransferReadByPushHandler ([SWS_DM_01523]).
Dieser Nutzungshinweis wurde von einer KI erstellt und basiert auf den Spezifikationen der AUTOSAR Adaptive Platform.
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
contains additional meta information 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.
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.
Provides the whole data to be read out from the application in form of a shared data view. The whole file/directory info content to be sent back to the UDS client will be allocated by the application and its shared ownership (view over the memory location) is passed as a result to AraDiag. The allocated memory must be kept until the ReleaseHandler’s notifier is invoked or the status polled, signalling that the memory, addressed by the Span now can safely be released.
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: cba844c9db1eHerkunft
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Die Methode Read der Schnittstelle ara::diag::DataTransferReadSharedDataHandler stellt auszulesende Datei- oder Verzeichnisdaten für den UDS-Client über eine geteilte Speicheransicht ([SWS_DM_01504]) bereit. Der Aufruf erfolgt asynchron und liefert ein ara::core::Future mit einem ara::core::Span<ara::core::Byte> zurück ([SWS_DM_01504]).
Verwendung und Lebenszyklus
Die implementierende Anwendung allokiert den gesamten Inhalt selbst und übergibt die Sicht an AraDiag. Der zugrunde liegende Speicherbereich muss zwingend so lange unverändert vorgehalten werden, bis die Freigabe über den übergebenen ReleaseHandler durch dessen Notifier signalisiert oder per Statusprüfung abgefragt wurde ([SWS_DM_01504]). Der ReleaseHandler ist für denselben UDS-Client anhand der MetaInfo zu speichern ([SWS_DM_01504]). Über den CancellationHandler kann ein laufender Transfer via IsCanceled() überwacht oder ein Abbruch-Notifier per SetNotifier() registriert werden ([SWS_DM_01504]).
Fehlerbehandlung und Nebenläufigkeit
Im Erfolgsfall werden die Daten als transferResponseParameterRecord nach dem blockSequenceCounter gesendet ([SWS_DM_01504]). Schlägt das Auslesen fehl, ist das Future mit einem passenden Fehlercode aus DiagUdsNrcErrc gemäß ISO 14229-1 zu komplettieren ([SWS_DM_01504]). Wurde die Schnittstelle der Anwendung noch nicht oder nicht mehr per offer() bereitgestellt, meldet der Server NRC 0x94 (ResourceTemporarilyNotAvailable) ([SWS_DM_01257]). Die Funktion ist als noexcept und ausnahmesicher spezifiziert, gilt jedoch als nicht threadsicher (not thread-safe) ([SWS_DM_01504]).
Abgrenzung
Im Gegensatz zu DataTransferReadByPullHandler::Read, bei dem Datenblöcke in einen vorgegebenen Puffer kopiert werden ([SWS_DM_01513]), oder DataTransferReadByPushHandler::Read, das Vektoren per Eigentumsübergabe liefert ([SWS_DM_01522]), überträgt dieser Handler den Gesamtinhalt ohne Pufferkopie über geteilten Speicher ([SWS_DM_01504]).
Dieser Nutzungshinweis wurde automatisiert auf Basis des AUTOSAR-Standards generiert.
The release shared resource handler to be stored and used by the application until a new one is passed for the same meta_info (UDS client).
meta_info
Contains additional meta information.
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.
Returns a Future, which either gets readied to ReadSharedOutput (transferResponseParameterRecord for a positive response message) or readied with ErrorCode from DiagUdsNrcErrc (for an negative response message). Data in ReleaseSharedHandler.responseData will be placed after the blockSequenceCounter 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