Permite a las aplicaciones proporcionar activamente contenidos de archivos y directorios ante solicitudes de lectura UDS.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 1ed24b3e3197ProcedenciaPreguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
Permite a las aplicaciones proporcionar activamente contenidos de archivos y directorios ante solicitudes de lectura UDS.
La clase ara::diag::DataTransferReadByPushHandler sirve como interfaz base para transferencias de lectura UDS en las que la aplicación empaqueta y proporciona activamente el contenido de archivos [SWS_DM_01515]. Los bloques de datos se transfieren secuencialmente mediante Read() y, a continuación, la sesión de transferencia se concluye de forma ordenada mediante ExitRead()[SWS_DM_01523]. Cada manejador está estrictamente vinculado a exactamente una sesión de transferencia, razón por la cual se impiden las operaciones de copia. Como condición fundamental del ciclo de vida, la instancia no debe destruirse bajo ningún concepto antes de la invocación de ExitRead()[SWS_DM_01519].
Contexto
La clase ara::diag::DataTransferReadByPushHandler actúa como clase base y de interfaz para transferencias de datos de diagnóstico iniciadas por solicitudes como RequestReadFile o RequestReadDirectory[SWS_DM_01515]. El patrón de transmisión subyacente se basa en el principio push: los datos de archivos o directorios son empaquetados activamente por la implementación específica de la aplicación y transferidos a la gestión de diagnóstico (Diagnostic Management, DM) AUTOSAR_AP_SWS_Diagnostics §8.10.3 «Class: DataTransferReadByPushHandler». La interacción tiene lugar entre el cliente UDS externo, el componente de plataforma ara::diag y la implementación concreta del manejador en la aplicación.
Dado que DataTransferReadByPushHandler está diseñada como una clase base abstracta, el constructor sin parámetros tiene visibilidad protegida (protected) [SWS_DM_01516]. La instanciación se produce en el contexto de una clase derivada dentro de la aplicación. Las instancias están estrictamente vinculadas a exactamente una sesión de transferencia de archivos («one way usage»); en consecuencia, el constructor de copia [SWS_DM_01518] y el operador de asignación por copia [SWS_DM_01521] están explícitamente eliminados (=delete). La transferencia de propiedad es posible mediante operaciones de movimiento, ya que el constructor de movimiento [SWS_DM_01517] y la asignación por movimiento [SWS_DM_01520] existen como implementaciones estándar y están declarados como seguros ante excepciones (noexcept).
Para la destrucción del manejador, la especificación define una condición previa estricta: una instancia no debe destruirse en ningún caso antes de que la sesión se haya completado mediante la invocación de ExitRead()[SWS_DM_01519], AUTOSAR_AP_SWS_Diagnostics §8.10.3.1.1.2 «Destructor». En lo relativo a la concurrencia, los métodos virtuales de la clase están especificados como no seguros para hilos («not thread-safe») [SWS_DM_01522], [SWS_DM_01523], por lo que los accesos simultáneos por parte de la plataforma deben sincronizarse o ejecutarse de forma secuencial.
Ruta de uso
El flujo operativo se divide en el suministro repetitivo de fragmentos de datos y la conclusión ordenada de la sesión. Tras iniciarse el proceso de lectura, ara::diag invoca repetidamente el método Read()[SWS_DM_01522], AUTOSAR_AP_SWS_Diagnostics §8.10.3.1.3.2 «Read». Al hacerlo, el entorno de desarrollo transfiere un tamaño orientativo para el tamaño de retorno recomendado en bytes (recommended_number_bytes_to_return) a fin de lograr un rendimiento óptimo, así como el contexto de la solicitud (MetaInfo) y un CancellationHandler. La aplicación genera el paquete de datos y transfiere su propiedad mediante un ara::core::Future<ara::core::Vector<ara::core::Byte>> a Diagnostic Management, el cual inserta los datos útiles tras el contador de secuencia de bloque en el mensaje de respuesta UDS [SWS_DM_01522].
Tan pronto como se hayan transmitido todos los bloques de datos o deba finalizarse la sesión, ara::diag invoca el método ExitRead()[SWS_DM_01523], AUTOSAR_AP_SWS_Diagnostics §8.10.3.1.3.1 «ExitRead». Además del motivo de finalización (DataTransferExitType exit_type), se transfieren parámetros de solicitud específicos del fabricante mediante transfer_request_parameter_record. La vida útil de este span de parámetros está vinculada de forma vinculante hasta que se cumpla el promise correspondiente o se cancele el procesamiento [SWS_DM_01523]. Tras devolver el conjunto de parámetros de respuesta final a través del Future, la transmisión se considera finalizada, con lo que se cumple la condición para la destrucción segura del objeto manejador [SWS_DM_01519].
Diagrama de secuencias: secuencia típica de interacción entre Diagnostic Management y el manejador durante la transferencia de lectura y la conclusión de la transferencia. Fuentes: [SWS_DM_01522], [SWS_DM_01523], [SWS_DM_01519]
Escenarios de error
Si se produce un error durante la composición de bloques de datos o al finalizar la sesión, este se notifica de forma asíncrona a través del ara::core::Future correspondiente. En lugar de una estructura de respuesta positiva, el future se proporciona con un código de error (ara::core::ErrorCode) perteneciente al ámbito DiagUdsNrcErrc, que se corresponde con un código de respuesta negativa adecuado (Negative Response Code, NRC) según ISO 14229-1 [SWS_DM_01522], [SWS_DM_01523].
Si se interrumpe el diálogo de diagnóstico o el cliente envía una solicitud de cancelación, entra en juego el CancellationHandler transferido. La implementación puede consultar el estado de cancelación actual mediante cancellation_handler.IsCanceled() o registrar a través de cancellation_handler.SetNotifier() una función de devolución de llamada que se active al cancelarse la conversación [SWS_DM_01522], [SWS_DM_01523]. El cumplimiento o la cancelación del promise marca al mismo tiempo el final de la validez del conjunto de parámetros en ExitRead()[SWS_DM_01523].
Esta guía se basa en la especificación 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.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: eefe02828ffeProcedencia
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
El método virtual ExitRead finaliza una sesión de transferencia de datos en curso en el contexto del manejador de diagnóstico [SWS_DM_01523]. La función opera de forma asíncrona y devuelve un ara::core::Future con los datos de respuesta como un vector de bytes SWS Diagnostics §8.10.3.1.3.1 «ExitRead».
Parámetros y contexto de llamada
exit_type (DataTransferExitType): Especifica el motivo de la finalización de la transferencia [SWS_DM_01523].
transfer_request_parameter_record (ara::core::Span<const ara::core::Byte>): Contiene parámetros específicos del fabricante para admitir la transferencia de datos. Los datos subyacentes deben permanecer válidos hasta que se cumpla la promise asociada o se cancele el procesamiento [SWS_DM_01523].
meta_info (MetaInfo const &): Transfiere metainformación de la solicitud de diagnóstico [SWS_DM_01523].
cancellation_handler (CancellationHandler): Sirve para verificar el estado de cancelación mediante IsCanceled() o para registrar una función de callback a través de SetNotifier() en caso de que se cancele la sesión [SWS_DM_01523].
Tratamiento de errores y valores de retorno
En caso de éxito, el Future proporciona los datos de salida, los cuales se colocan en la respuesta UDS positiva después del SID como transferResponseParameterRecord[SWS_DM_01523]. En caso de fallo, el Future se completa con un Negative Response Code (NRC) adecuado de DiagUdsNrcErrc conforme a ISO 14229-1 [SWS_DM_01523].
Concurrencia y ciclo de vida
El método está especificado como seguro frente a excepciones (exception safe), pero explícitamente no seguro para hilos (not thread-safe) [SWS_DM_01523]. En cuanto al ciclo de vida del objeto, existe un requisito de orden vinculante: bajo ninguna circunstancia se debe destruir una instancia de DataTransferReadByPushHandler antes de la llamada a ExitRead()[SWS_DM_01519]. Se aplican requisitos análogos para clases de manejadores afines en la transferencia de datos [SWS_DM_01510][SWS_DM_01499].
Este texto ha sido generado por una IA a partir de la especificación AUTOSAR Adaptive R25-11.
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.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: fcd7efa833dfProcedenciaPreguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
El método puramente virtual Read de la clase ara::diag::DataTransferReadByPushHandler sirve para la lectura asíncrona de bloques de datos para información de archivos o directorios desde la aplicación [SWS_DM_01522]. La aplicación ensambla el fragmento de datos correspondiente y transfiere su propiedad como ara::core::Vector<ara::core::Byte> al módulo de diagnóstico.
Uso y contexto de llamada
La llamada es realizada por el Diagnostic Server para proporcionar datos de respuesta a clientes UDS a través del archivo de cabecera ara/diag/data_transfer.h[SWS_DM_01522]. El método espera tres parámetros:
recommended_number_bytes_to_return: La cantidad recomendada de bytes para un rendimiento óptimo. Es de suponer que este valor se orienta probablemente al tamaño del búfer interno o de la PDU de Diagnostic Management. Pregunta Q-1a8c1270b192b96f (abierta)
meta_info: Metainformación adicional de la solicitud de diagnóstico entrante (MetaInfo).
cancellation_handler: Permite consultar el estado de cancelación a través de cancellation_handler.IsCanceled() o registrar una notificación mediante cancellation_handler.SetNotifier() en caso de interrupciones de la conexión.
Como valor de retorno sirve un ara::core::Future<ara::core::Vector<ara::core::Byte>>. Si el procesamiento se realiza correctamente, los datos se incrustan como transferResponseParameterRecord detrás del contador de secuencia en el mensaje de respuesta positiva [SWS_DM_01522].
Tratamiento de errores y concurrencia
Si el procesamiento falla, el future se cumple con un código de error de DiagUdsNrcErrc que representa un NRC adecuado conforme a ISO 14229-1 [SWS_DM_01522]. Si el servicio aún no ofrece la interfaz o ya no la ofrece mediante offer(), el Diagnostic Manager responde a la solicitud con NRC 0x94 (ResourceTemporarilyNotAvailable) [SWS_DM_01257]. El método está especificado como seguro frente a excepciones (exception safe), pero no seguro para hilos (not thread-safe) [SWS_DM_01522], por lo que las llamadas simultáneas deben sincronizarse en la aplicación.
Interacción
El principio push de esta interfaz complementa los mecanismos de lectura alternativos del módulo de diagnóstico: el método pull mediante ara::diag::DataTransferReadByPullHandler::Read[SWS_DM_01513] con un área de memoria predefinida, así como la provisión de un área de memoria compartida mediante 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-low· 2026-10-13 · Original en alemán