Traite et enregistre les blocs de données entrants lors des transferts de fichiers en écriture dans l'application.
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : eacdeba00b95ProvenanceQuestions ouvertes (2)
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
Traite et enregistre les blocs de données entrants lors des transferts de fichiers en écriture dans l'application.
La classe ara::diag::DataTransferWriteHandler sert, dans AUTOSAR Adaptive, au traitement côté application des transferts de fichiers en écriture initiés par RequestWriteFile dans les modes AddFile, ResumeFile ou ReplaceFile[SWS_DM_01539]. Les paquets de données entrants sont écrits de manière asynchrone en mémoire via Write(), puis la session est clôturée au moyen de ExitWrite(). Une instance est strictement liée à une seule session de transfert et ne doit en aucun cas être détruite avant l'appel de ExitWrite()[SWS_DM_01541].
Contexte
Dans l'AUTOSAR Adaptive Platform, la classe de base abstraite ara::diag::DataTransferWriteHandler définit l'interface pour les transferts de fichiers en écriture [SWS_DM_01539] (AUTOSAR_AP_SWS_Diagnostics §8.10.6 « Class: DataTransferWriteHandler »). Elle sert au traitement côté application des transferts de données initiés dans le cadre de RequestWriteFile via les modes de fonctionnement AddFile, ResumeFile ou ReplaceFile.
Au sein de l'architecture de diagnostic, le gestionnaire interagit avec le client UDS externe, le middleware de diagnostic et l'application. Le client transmet des blocs de données segmentés, qui sont réceptionnés par une implémentation dérivée du gestionnaire et stockés dans la mémoire de l'application [SWS_DM_01546]. Vraisemblablement, la gestion du diagnostic de la plateforme prend en charge la coordination du protocole UDS et transmet les données utiles à l'application cible via l'interface du gestionnaire. Question Q-484dc9dd80e56af4 (ouverte)
Cycle de vie
L'instanciation de ara::diag::DataTransferWriteHandler s'effectue exclusivement par des sous-classes spécialisées de l'application : le constructeur sans paramètre est défini avec protected et noexcept=default[SWS_DM_01540], ce qui empêche une instanciation directe de la classe de base. Une instance de gestionnaire est strictement liée à une seule session de transfert de fichier (« one way usage i.e. per single file transfer session »). C'est pourquoi le constructeur de copie [SWS_DM_01544] (AUTOSAR_AP_SWS_Diagnostics §8.10.6.1.2.1 « DataTransferWriteHandler ») et l'opérateur d'assignation par copie [SWS_DM_01545] sont supprimés (=delete).
Une précondition contraignante s'applique à la destruction de l'instance : une instance de cette classe ne doit en aucun cas être détruite avant que la méthode ExitWrite() n'ait été appelée [SWS_DM_01541] (AUTOSAR_AP_SWS_Diagnostics §8.10.6.1.1.2 « Destructor »). Le destructeur virtuel ~DataTransferWriteHandler() ne doit être appelé qu'après l'exécution complète de ExitWrite(). Les fonctions membres et le destructeur sont spécifiés comme non thread-safe (not thread-safe) [SWS_DM_01541], [SWS_DM_01546], [SWS_DM_01547].
Diagramme d'états : cycle de vie et séquence d'appels d'une instance de DataTransferWriteHandler. Sources : [SWS_DM_01541], [SWS_DM_01544].
Parcours d'utilisation
Le déroulement normal d'un transfert en écriture comprend la réception progressive de blocs de données et la clôture consécutive de la session :
Pour chaque segment de données entrant, le système de diagnostic appelle la méthode virtuelle pure Write()[SWS_DM_01546] (AUTOSAR_AP_SWS_Diagnostics §8.10.6.1.3.2 « Write »). Les données sont transmises sous forme de ara::core::Span<ara::core::Byte>. La validité de cette zone mémoire subsiste jusqu'à ce que le Promise associé soit satisfait ou que l'opération soit interrompue. L'application ajoute les données au tampon interne et renvoie un ara::core::Future<void>.
Une fois tous les segments transférés, la plateforme appelle la méthode virtuelle pure ExitWrite()[SWS_DM_01547] (AUTOSAR_AP_SWS_Diagnostics §8.10.6.1.3.1 « ExitWrite »). Le motif de terminaison (DataTransferExitType), des paramètres spécifiques au constructeur du véhicule (transferRequestParameterRecord), metaInfo ainsi qu'un CancellationHandler sont transmis.
La méthode ExitWrite() renvoie un ara::core::Future<ara::core::Vector<ara::core::Byte>>. En cas d'achèvement réussi, les données qu'il contient sont insérées en tant que transferResponseParameterRecord après l'ID de service dans le message de réponse UDS positive [SWS_DM_01547].
Diagramme de séquence : séquence d'appels des opérations Write et ExitWrite pendant une session de transfert. Sources : [SWS_DM_01546], [SWS_DM_01547].
Scénarios d'erreur
Les erreurs survenant pendant le traitement des données et le transfert sont gérées via des valeurs de retour et des mécanismes d'interruption standardisés :
Si l'écriture d'un bloc de données ou la clôture du transfert échoue, le Future respectif est mis à disposition avec un ara::core::ErrorCode issu de DiagUdsNrcErrc[SWS_DM_01546], [SWS_DM_01547]. Cela entraîne la génération d'une réponse UDS négative correspondante (NRC selon l'ISO 14229-1) à destination du client.
Les deux méthodes mettent à disposition un CancellationHandler. L'application peut vérifier via cancellationHandler.IsCanceled() si la conversation a été interrompue, ou enregistrer au moyen de cancellationHandler.SetNotifier() une fonction de notification exécutée en cas d'interruption de la conversation [SWS_DM_01546], [SWS_DM_01547].
Si l'instance est détruite avant l'appel de ExitWrite(), il s'agit d'une violation de la règle de cycle de vie spécifiée [SWS_DM_01541], ce qui entraîne vraisemblablement un état système indéfini et des fichiers incomplets. Question Q-cc032c11ac89a5b1 (ouverte) De plus, un accès concurrent non protégé entraîne des incohérences de données, car l'interface est explicitement non thread-safe.
Ce guide a été élaboré par un assistant de curation IA sur la base d'AUTOSAR R25-11.
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : 459b3563e8d0Provenance
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
Utilisation
La fonction membre virtuelle ara::diag::DataTransferWriteHandler::ExitWrite met fin à une session de transfert de données en cours pour les accès en écriture [SWS_DM_01547] (AUTOSAR_AP_SWS_Diagnostics §8.10.6.1.3.1 « ExitWrite », en-tête #include "ara/diag/data_transfer.h"). Les paramètres d’appel comprennent :
exitType : détermine le motif de fin de la session [SWS_DM_01547].
transferRequestParameterRecord : paramètres spécifiques au constructeur automobile pour assister le transfert de données ; la validité du span doit persister jusqu’à ce que la promesse associée soit tenue ou que l’opération soit annulée [SWS_DM_01547].
metaInfo : métadonnées de la requête de diagnostic [SWS_DM_01547].
cancellationHandler : permet d’interroger le statut d’annulation via cancellationHandler.IsCanceled() ainsi que d’enregistrer un notificateur via cancellationHandler.SetNotifier()[SWS_DM_01547].
La fonction fonctionne de manière asynchrone et renvoie un ara::core::Future<ara::core::Vector<ara::core::Byte>> dont les données de résultat sont insérées en cas de succès sous forme de transferResponseParameterRecord après le SID dans le message de réponse positive [SWS_DM_01547].
Gestion des erreurs
Si l’arrêt échoue, le future doit être mis à disposition avec un Negative Response Code (NRC) approprié selon l’ISO 14229-1 via DiagUdsNrcErrc[SWS_DM_01547]. La fonction est spécifiée comme noexcept et sûre vis-à-vis des exceptions (exception safe) [SWS_DM_01547].
Concurrence et interaction
L’implémentation n’est pas sécurisée pour les threads (not thread-safe) [SWS_DM_01547]. Concernant le cycle de vie de l’objet, il existe une contrainte d’ordonnancement stricte : une instance de la classe handler ne doit être détruite qu’après l’appel de ExitWrite()[SWS_DM_01541].
Cette note d'utilisation a été générée automatiquement sur la base des spécifications AUTOSAR pour la version R25-11.
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.
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : a81be0f54500ProvenanceQuestions ouvertes (1)
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
La méthode Write de l’interface ara::diag::DataTransferWriteHandler sert à ajouter les blocs de données reçus à la zone mémoire de l’application lors d’un transfert de fichiers UDS [SWS_DM_01546]. L’appel est effectué par l’instance du serveur de diagnostic lorsqu’une requête UDS TransferData (0x36) est reçue dans le cadre d’une opération initiée par RequestFileTransfer (0x38) [SWS_DM_01317].
Paramètres et sémantique
Les contenus de fichiers à écrire sont transmis via requestData sous forme de ara::core::Span<ara::core::Byte> ; le tampon référencé reste valide jusqu’à ce que la promesse associée soit tenue ou que le traitement soit interrompu [SWS_DM_01546]. Le paramètre metaInfo fournit les métadonnées de la requête de diagnostic. Via cancellationHandler, l’état d’interruption actuel peut être vérifié au moyen de IsCanceled ou un callback de notification peut être enregistré via SetNotifier[SWS_DM_01546].
Gestion des erreurs et concurrence
Le résultat est renvoyé de manière asynchrone sous forme de ara::core::Future<void>. En cas de succès, le future est complété à vide ; en cas d’erreurs, il doit être complété avec un Negative Response Code (NRC) approprié issu de DiagUdsNrcErrc conformément à l’ISO 14229-1 [SWS_DM_01546]. La fonction est spécifiée comme exception safe, mais expressément comme not thread-safe[SWS_DM_01546] ; le serveur de diagnostic devrait donc garantir des appels séquentiels pour une même session. Question Q-e60d55fe09b9a2c5 (ouverte)
Interaction et déroulement
Le handler d’écriture est enregistré via des constructeurs de modèles au sein de DataTransferWriteSession[SWS_DM_01317]. Dès que le transfert est achevé avec RequestTransferExit (0x37), le serveur appelle la méthode Exit du même handler [SWS_DM_01318]. Cet élément se distingue des méthodes d’écriture liées aux DID, telles qu’elles sont définies dans [SWS_DM_00598] ou [SWS_DM_00637].
Ce texte a été généré automatiquement. Les affirmations techniques sont étayées par des références aux spécifications.
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-low· 2026-10-13 · Original allemand