Procesa y almacena en la aplicación bloques de datos entrantes en transferencias de archivos de escritura.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: eacdeba00b95ProcedenciaPreguntas abiertas (2)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
Procesa y almacena en la aplicación bloques de datos entrantes en transferencias de archivos de escritura.
La clase ara::diag::DataTransferWriteHandler sirve en AUTOSAR Adaptive para el procesamiento, por parte de la aplicación, de transferencias de archivos de escritura iniciadas por RequestWriteFile en los modos AddFile, ResumeFile o ReplaceFile[SWS_DM_01539]. Los paquetes de datos entrantes se escriben asíncronamente en la memoria mediante Write() y la sesión se finaliza a continuación mediante ExitWrite(). Una instancia está estrictamente vinculada a una única sesión de transferencia y bajo ninguna circunstancia debe destruirse antes de la invocación de ExitWrite()[SWS_DM_01541].
Contexto
La clase base abstracta ara::diag::DataTransferWriteHandler define en AUTOSAR Adaptive Platform la interfaz para transferencias de archivos de escritura [SWS_DM_01539] (AUTOSAR_AP_SWS_Diagnostics §8.10.6 «Class: DataTransferWriteHandler»). Sirve para el procesamiento del lado de la aplicación de transferencias de datos iniciadas en el marco de RequestWriteFile mediante los modos de funcionamiento AddFile, ResumeFile o ReplaceFile.
Dentro de la arquitectura de diagnóstico, el manejador interactúa con el cliente UDS externo, el middleware de diagnóstico y la aplicación. El cliente transmite bloques de datos segmentados que son recibidos por una implementación derivada del manejador y almacenados en la memoria de la aplicación [SWS_DM_01546]. Presumiblemente, Diagnostic Management de la plataforma asume en este proceso la coordinación del protocolo UDS y reenvía los datos útiles a la aplicación de destino a través de la interfaz del manejador. Pregunta Q-484dc9dd80e56af4 (abierta)
Ciclo de vida
La instanciación de ara::diag::DataTransferWriteHandler se realiza exclusivamente mediante subclases especializadas de la aplicación: el constructor sin parámetros está definido con protected y noexcept=default[SWS_DM_01540], lo que impide la instanciación directa de la clase base. Una instancia del manejador está vinculada estrictamente a una única sesión de transferencia de archivos («one way usage i.e. per single file transfer session»). Por este motivo, el constructor de copia [SWS_DM_01544] (AUTOSAR_AP_SWS_Diagnostics §8.10.6.1.2.1 «DataTransferWriteHandler») y el operador de asignación por copia [SWS_DM_01545] están eliminados (=delete).
Para la destrucción de la instancia rige una precondición vinculante: bajo ninguna circunstancia debe destruirse una instancia de esta clase antes de haber invocado el método ExitWrite()[SWS_DM_01541] (AUTOSAR_AP_SWS_Diagnostics §8.10.6.1.1.2 «Destructor»). El destructor virtual ~DataTransferWriteHandler() solo debe invocarse tras la ejecución completa de ExitWrite(). Las funciones miembro y el destructor están especificados como no seguros para subprocesos (not thread-safe) [SWS_DM_01541], [SWS_DM_01546], [SWS_DM_01547].
Diagrama de estados: ciclo de vida y secuencia de llamadas de una instancia de DataTransferWriteHandler. Fuentes: [SWS_DM_01541], [SWS_DM_01544].
Ruta de uso
El flujo regular de una transferencia de escritura comprende la recepción paso a paso de bloques de datos y la posterior finalización de la sesión:
Para cada segmento de datos entrante, el sistema de diagnóstico invoca el método virtual puro Write()[SWS_DM_01546] (AUTOSAR_AP_SWS_Diagnostics §8.10.6.1.3.2 «Write»). Los datos se transfieren como ara::core::Span<ara::core::Byte>. La validez de esta área de memoria se mantiene hasta que se cumpla el Promise asociado o se cancele la operación. La aplicación añade los datos al búfer interno y devuelve un ara::core::Future<void>.
Una vez transferidos todos los segmentos, la plataforma invoca el método virtual puro ExitWrite()[SWS_DM_01547] (AUTOSAR_AP_SWS_Diagnostics §8.10.6.1.3.1 «ExitWrite»). Se transfieren el motivo de finalización (DataTransferExitType), parámetros específicos del fabricante del vehículo (transferRequestParameterRecord), metaInfo, así como un CancellationHandler.
El método ExitWrite() devuelve un ara::core::Future<ara::core::Vector<ara::core::Byte>>. En caso de finalización correcta, los datos contenidos en él se insertan como transferResponseParameterRecord detrás del identificador de servicio en el mensaje de respuesta positiva de UDS [SWS_DM_01547].
Diagrama de secuencia: secuencia de llamadas de operaciones Write y ExitWrite durante una sesión de transferencia. Fuentes: [SWS_DM_01546], [SWS_DM_01547].
Escenarios de error
Los errores durante el procesamiento de datos y la transferencia se gestionan mediante valores de retorno y mecanismos de cancelación estandarizados:
Si falla la escritura de un bloque de datos o la finalización de la transferencia, se proporciona el Future respectivo con un ara::core::ErrorCode de DiagUdsNrcErrc[SWS_DM_01546], [SWS_DM_01547]. Esto da lugar a la generación de una respuesta negativa de UDS correspondiente (NRC conforme a ISO 14229-1) hacia el cliente.
Ambos métodos proporcionan un CancellationHandler. La aplicación puede verificar a través de cancellationHandler.IsCanceled() si la conversación se ha cancelado, o registrar mediante cancellationHandler.SetNotifier() una función de notificación que se ejecutará en caso de cancelación de la conversación [SWS_DM_01546], [SWS_DM_01547].
Si la instancia se destruye antes de invocar ExitWrite(), se produce una infracción de la regla especificada para el ciclo de vida [SWS_DM_01541], lo que presumiblemente conduce a un estado indefinido del sistema y a archivos incompletos. Pregunta Q-cc032c11ac89a5b1 (abierta) Además, un acceso concurrente no protegido provoca inconsistencias de datos, ya que la interfaz explícitamente no es segura para subprocesos.
Esta guía ha sido elaborada por un asistente de curación por IA sobre la base de AUTOSAR R25-11.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 459b3563e8d0Procedencia
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
usar
La función miembro virtual ara::diag::DataTransferWriteHandler::ExitWrite finaliza una sesión de transferencia de datos en curso para accesos de escritura [SWS_DM_01547] (AUTOSAR_AP_SWS_Diagnostics §8.10.6.1.3.1 «ExitWrite», encabezado #include "ara/diag/data_transfer.h"). Los parámetros de la llamada incluyen:
exitType: determina el motivo de finalización de la sesión [SWS_DM_01547].
transferRequestParameterRecord: parámetros específicos del fabricante del vehículo para apoyar la transferencia de datos; la validez del span debe mantenerse hasta que se cumpla la promise asociada o se cancele la operación [SWS_DM_01547].
metaInfo: metainformación de la solicitud de diagnóstico [SWS_DM_01547].
cancellationHandler: permite consultar el estado de cancelación mediante cancellationHandler.IsCanceled(), así como registrar un notificador mediante cancellationHandler.SetNotifier()[SWS_DM_01547].
La función opera de forma asíncrona y devuelve un ara::core::Future<ara::core::Vector<ara::core::Byte>>, cuyos datos de resultado, en caso de éxito, se insertan como transferResponseParameterRecord tras el SID en el mensaje de respuesta positiva [SWS_DM_01547].
Manejo de errores
Si la finalización falla, el Future debe proporcionarse con un Negative Response Code (NRC) adecuado conforme a ISO 14229-1 mediante DiagUdsNrcErrc[SWS_DM_01547]. La función está especificada como noexcept, así como segura frente a excepciones (exception safe) [SWS_DM_01547].
Concurrencia e interacción
La implementación no es segura para subprocesos (not thread-safe) [SWS_DM_01547]. En cuanto al ciclo de vida del objeto, existe una condición estricta de orden: una instancia de la clase de controlador solo debe destruirse después de haber llamado a ExitWrite()[SWS_DM_01541].
Esta nota de uso se generó de forma automatizada sobre la base de las especificaciones de AUTOSAR para el release 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.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: a81be0f54500ProcedenciaPreguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
El método Write de la interfaz ara::diag::DataTransferWriteHandler sirve para anexar bloques de datos recibidos al área de memoria de la aplicación durante una transferencia de archivos UDS [SWS_DM_01546]. La llamada la realiza la instancia del Diagnostic Server cuando se recibe una solicitud UDS TransferData (0x36) en el marco de una operación iniciada mediante RequestFileTransfer (0x38) [SWS_DM_01317].
Parámetros y semántica
Los contenidos del archivo que se van a escribir se pasan mediante requestData como ara::core::Span<ara::core::Byte>; el búfer referenciado permanece válido hasta que se cumple la promise asociada o se cancela el procesamiento [SWS_DM_01546]. El parámetro metaInfo proporciona metainformación de la solicitud de diagnóstico. A través de cancellationHandler se puede comprobar el estado de cancelación actual mediante IsCanceled o registrar un callback de notificación mediante SetNotifier[SWS_DM_01546].
Tratamiento de errores y concurrencia
El resultado se devuelve de forma asíncrona como ara::core::Future<void>. En caso de éxito, el future se completa vacío; en caso de errores, debe completarse con un Negative Response Code (NRC) adecuado de DiagUdsNrcErrc conforme a ISO 14229-1 [SWS_DM_01546]. La función está especificada como exception safe, pero expresamente como not thread-safe[SWS_DM_01546]; por lo tanto, es probable que el Diagnostic Server garantice llamadas secuenciales para la misma sesión. Pregunta Q-e60d55fe09b9a2c5 (abierta)
Interacción y secuencia
El gestor de escritura se registra mediante constructores de plantilla dentro de DataTransferWriteSession[SWS_DM_01317]. Tan pronto como la transferencia concluye con RequestTransferExit (0x37), el servidor llama al método Exit del mismo gestor [SWS_DM_01318]. El elemento se diferencia de los métodos de escritura relacionados con DID, tal como están definidos en [SWS_DM_00598] o [SWS_DM_00637].
Este texto se generó automáticamente. Las afirmaciones técnicas están respaldadas por referencias a la especificación.
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 en alemán