Permite a la aplicación proporcionar datos de la unidad de control para cargas UDS a Diagnostic Management.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: e2e1ae703412ProcedenciaPreguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
Permite a la aplicación proporcionar datos de la unidad de control para cargas UDS a Diagnostic Management.
La clase ara::diag::UploadService sirve como interfaz de servicio del lado de la aplicación para proporcionar datos de la unidad de control para cargas de diagnóstico externas según UDS [SWS_DM_00797]. Tras una activación exitosa mediante Offer(), el manejador procesa de forma asíncrona las solicitudes sucesivas de inicio de carga, transferencia de bloques de datos y finalización de la transferencia [SWS_DM_00802]. La instancia de servicio no copiable admite tanto entregas de datos por bloques como la cancelación anticipada mediante un manejador de cancelación. El manejador responde a las solicitudes erróneas mediante códigos de retorno UDS negativos dentro de los futuros de respuesta asíncronos.
Contexto
La clase ara::diag::UploadService define la interfaz de servicio central para operaciones de carga de diagnóstico dentro de la AUTOSAR Adaptive Platform [SWS_DM_00797]. Actúa como manejador del lado de la aplicación para la lectura y provisión de datos internos del vehículo a equipos de prueba externos según el estándar de diagnóstico UDS (ISO 14229-1) [SWS_DM_00799].
En la arquitectura del sistema, ara::diag::UploadService interactúa fundamentalmente con dos partes: el cliente de diagnóstico externo (comprobador) y el demonio de diagnóstico de la plataforma Diagnostic Management (DM) [SWS_DM_00799], [SWS_DM_00802]. El DM recibe a nivel de protocolo las solicitudes de servicio UDS entrantes, tales como RequestUpload, TransferData y RequestTransferExit, las valida y reenvía las consultas funcionales al manejador registrado de la aplicación [SWS_DM_00799], [SWS_DM_00800], [SWS_DM_00801]. La instancia de la aplicación implementa los métodos virtuales de la interfaz para leer los bloques de datos propiamente dichos de la memoria y devolverlos [SWS_DM_00800].
Diagrama de contexto: integración del servicio de carga entre el cliente de diagnóstico, Diagnostic Management y el manejador de la aplicación. Fuentes: [SWS_DM_00797], [SWS_DM_00799], [SWS_DM_00802].
Ciclo de vida
Una instancia de ara::diag::UploadService se construye especificando un ara::core::InstanceSpecifier así como el comportamiento de concurrencia concurrencyType[SWS_DM_00797]. El especificador vincula la instancia con un prototipo de puerto modelado del tipo DiagnosticUploadInterface[SWS_DM_00797]. El constructor está especificado como seguro ante excepciones y seguro para hilos [SWS_DM_00797]. Para garantizar una asignación unívoca de la instancia de servicio, los constructores de copia y de movimiento, así como los operadores de asignación, están explícitamente eliminados [SWS_DM_01671], [SWS_DM_01672], [SWS_DM_01673], [SWS_DM_01674].
Tras la instanciación, el servicio se encuentra inicialmente en estado inactivo; el DM aún no reenvía ninguna solicitud. El reenvío se activa únicamente mediante la llamada explícita a Offer()[SWS_DM_00802]. A través de StopOffer() se puede volver a suspender el reenvío de solicitudes en cualquier momento [SWS_DM_00803]. Tanto Offer() como StopOffer() están definidos como no seguros para hilos y requieren sincronización externa en caso de llamadas desde múltiples hilos [SWS_DM_00802], [SWS_DM_00803].
La destrucción se realiza a través del destructor virtual ~UploadService(), el cual tampoco es seguro para hilos [SWS_DM_00798]. Por lo tanto, antes de liberar el objeto, el servicio debe desregistrarse debidamente mediante StopOffer()[SWS_DM_00803]. El ConcurrencyType configurado durante la construcción (kConcurrent o kNotConcurrent) determina si los métodos virtuales de procesamiento deben ejecutarse internamente de forma segura para hilos [SWS_DM_00797], [SWS_DM_00799].
Ruta de uso
El flujo regular de una sesión de carga se desarrolla en varios pasos sucesivos:
Puesta a disposición del servicio: la aplicación inicializa el manejador y llama a Offer() para aceptar solicitudes de diagnóstico entrantes del DM [SWS_DM_00802].
Solicitar carga (RequestUpload): si llega una solicitud UDS para iniciar la carga, el DM llama al método RequestUpload()[SWS_DM_00799]. El manejador comprueba el formato de datos, el formato de direccionamiento, así como la dirección y longitud de memoria (memoryAddressAndSize). El área de memoria transferida permanece válida hasta que se cumpla el ara::core::Future<void> devuelto o se cancele el proceso [SWS_DM_00799].
Transferir bloques de datos (UploadData): tras una inicialización correcta, el comprobador envía solicitudes UDS TransferData. A continuación, el DM llama repetidamente a UploadData()[SWS_DM_00800]. La aplicación lee el bloque de datos solicitado y lo devuelve a través de un ara::core::Future<OperationOutput>; los bytes en OperationOutput.responseData se sitúan en la respuesta positiva detrás del contador de bloques [SWS_DM_00800]. Interpretación: es de suponer que el límite de búfer numBytesToReturn actúe aquí como tamaño máximo de chunk para el almacenamiento en búfer interno del DM, de modo que las áreas de memoria más extensas se segmenten secuencialmente a través de llamadas sucesivas. Pregunta Q-6ede2e3041d99294 (abierta)
Finalizar transferencia (RequestUploadExit): para concluir, el DM llama a RequestUploadExit() y transfiere los parámetros de transferencia específicos del fabricante en transferRequestParameterRecord[SWS_DM_00801]. El manejador valida la finalización y devuelve parámetros de retorno opcionales en OperationOutput[SWS_DM_00801].
Desactivar servicio: tras completarse todas las transacciones de carga o durante el apagado, la aplicación finaliza el reenvío con StopOffer()[SWS_DM_00803].
Durante toda la transferencia de datos, el manejador recibe un objeto CancellationHandler. A través de este se puede consultar activamente el estado de cancelación mediante IsCanceled() o registrar una retrollamada mediante SetNotifier() en caso de que el comprobador cancele prematuramente el diálogo [SWS_DM_00799], [SWS_DM_00800], [SWS_DM_00801].
Pueden producirse estados de error durante la construcción, durante la activación, así como durante el procesamiento real de los datos:
Infracciones de modelo y configuración: si la configuración no coincide con el modelo ARXML, se producen infracciones durante la llamada al constructor [SWS_DM_00797]. Entre estas se incluyen InstanceSpecifierMappingIntegrityViolation (el especificador no hace referencia a un PortPrototype), PortInterfaceMappingViolation (falta de vinculación a través de DiagnosticServiceGenericMapping), ProcessMappingViolation (sin coincidencia con el proceso modelado), así como InstanceSpecifierAlreadyInUseViolation (uso múltiple del mismo especificador dentro de un proceso) [SWS_DM_00797].
Activación múltiple del servicio: si se llama a Offer() mientras el servicio ya se está ofreciendo, la llamada falla y devuelve el código de error DiagOfferErrc::kAlreadyOffered en ara::core::Result<void>[SWS_DM_00802].
Respuestas de error UDS (Negative Response): si el manejador no puede atender técnicamente una solicitud en RequestUpload(), UploadData() o RequestUploadExit() (p. ej., direcciones de memoria no permitidas, errores de formato o contadores de secuencia no válidos), lo señaliza proporcionando un código de error de DiagUdsNrcErrc en el Future devuelto [SWS_DM_00799], [SWS_DM_00800], [SWS_DM_00801]. A continuación, el DM genera una respuesta negativa UDS (NRC) conforme al estándar hacia el equipo de prueba externo [SWS_DM_00799].
Esta guía se basa exclusivamente en la especificación AUTOSAR Adaptive Platform Release R25-11.
This Offer will enable the DM to forward request messages to this handler.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: dce89cbe34efProcedenciaPreguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
Uso y semántica
La función miembro síncrona Offer de la clase ara::diag::UploadService ([SWS_DM_00802]) activa el reenvío de solicitudes de diagnóstico por parte del Diagnostic Management (DM) al handler registrado. La llamada no recibe parámetros y declara la seguridad frente a excepciones noexcept ([SWS_DM_00802]). Como tipo de retorno actúa ara::core::Result<void>, a través del cual se refleja la correcta puesta a disposición o un error producido ([SWS_DM_00802]).
Tratamiento de errores y concurrencia
Códigos de error: En caso de que el servicio ya se hubiera ofrecido con anterioridad, la ejecución falla con el código de error DiagOfferErrc::kAlreadyOffered ([SWS_DM_00802]); en este caso se aplica la semántica de reversión.
Seguridad frente a subprocesos: La función está especificada explícitamente como not thread-safe ([SWS_DM_00802]). Las llamadas concurrentes sobre la misma instancia del servicio deben sincronizarse en la aplicación.
Interacción en el subsistema de diagnóstico
La operación se integra en el patrón homogéneo de puesta a disposición de los handlers de diagnóstico adaptativos, tal como se utiliza, entre otros, en DownloadService ([SWS_DM_00792]) o GenericUDSService ([SWS_DM_00619]). Mientras no se haya producido la puesta a disposición, el DM no reenvía ningún mensaje de diagnóstico entrante al handler (cf. comportamientos análogos en [SWS_DM_01525]). Interpretación: La llamada a Offer suele producirse habitualmente durante la fase de inicialización de la aplicación, antes de que se acepte tráfico de diagnóstico. Pregunta Q-aba091d233b5e45b (abierta)
Esta nota de uso ha sido generada de forma automatizada a partir de la especificación R25-11 de AUTOSAR.
dataFormatIdentifier y addressAndLengthFormatIdentifier: Identificadores de formato UDS para datos, dirección de memoria y especificaciones de longitud.
memoryAddressAndSize: Un ara::core::Span con dirección y tamaño de memoria cuya validez está garantizada hasta el cumplimiento de la promise o la cancelación del procesamiento.
metaInfo: Metainformación sobre la petición de diagnóstico.
cancellationHandler: Sirve para consultar el estado de cancelación a través de cancellationHandler.IsCanceled y para registrar funciones de notificación mediante cancellationHandler.SetNotifier.
El procesamiento se realiza de forma asíncrona con el tipo de retorno ara::core::Future<void>[SWS_DM_00799].
Manejo de errores
En caso de error, el ara::core::Future proporciona un código de error NRC de UDS adecuado según ISO 14229-1 a través de DiagUdsNrcErrc, tras lo cual se produce una respuesta negativa [SWS_DM_00799]. En caso de respuesta positiva, el Diagnostic Manager notifica el evento de seguridad SEV_UDS_REQUEST_UP_DOWNLOAD_SUCCESSFUL al IdsM [SWS_DM_02031]; en caso de respuesta negativa, el evento SEV_UDS_REQUEST_UP_DOWNLOAD_FAILED[SWS_DM_02033].
Concurrencia e interacción
La función está declarada como noexcept y es segura frente a excepciones. El hecho de si el método debe implementarse de forma segura para hilos es condicional y se determina a través del ConcurrencyType pasado en el constructor [SWS_DM_00799].
Tras la confirmación exitosa de RequestUpload, la transferencia de datos de subida propiamente dicha se continúa en solicitudes posteriores del servicio UDS 0x36 (TransferData) a través de UploadData[SWS_DM_00800][SWS_DM_01096].
Esta nota de uso ha sido generada por una inteligencia artificial sobre la base de la especificación AUTOSAR Adaptive R25-11.
conditional whether the function has to be implemented thread safe or non-thread safe is determined by the ConcurrencyType given in the constructor
Parameter (in)
Parameter
Beschreibung
dataFormatIdentifier
UDS dataFormat Identifier
addressAndLengthFormatIdentifier
UDS addressAndLengthFormatIdentifier
memoryAddressAndSize
memoryAddress and memorySize part of the request. 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.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: c83d03772031ProcedenciaPreguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
Uso y contexto de llamada
El método RequestUploadExit de la clase ara::diag::UploadService (SWS Diagnostics §8.27.1.1.3.3 «RequestUploadExit») es llamado por la instancia del servidor de diagnóstico cuando debe procesarse la finalización de una transferencia de datos a través del servicio UDS RequestTransferExit (0x37) [SWS_DM_00141], [SWS_DM_00801].
La interfaz acepta los siguientes parámetros [SWS_DM_00801]:
transferRequestParameterRecord: Contiene parámetros específicos del fabricante para dar soporte a la transferencia en formato ara::core::Span<const std::uint8_t>. Los datos permanecen válidos hasta que se cumpla la promise asociada o se cancele el procesamiento. Interpretación: Es probable que la evaluación de estos parámetros sirva primordialmente para validaciones específicas del fabricante al finalizar la subida. Pregunta Q-d3989837f58761d7 (abierta)
metaInfo: Pasa metainformación de la petición de diagnóstico actual.
cancellationHandler: Permite consultar el estado de cancelación a través de cancellationHandler.IsCanceled() o registrar una retrollamada de notificación mediante cancellationHandler.SetNotifier().
Valores de retorno y tratamiento de errores
La ejecución se realiza de forma asíncrona y devuelve un ara::core::Future<OperationOutput>[SWS_DM_00801]. En caso de éxito, el future se cumple con una instancia de OperationOutput. Los datos pasados en él procedentes de responseData se insertan como transferResponseParameterRecord en la respuesta de diagnóstico positiva tras el ID de servicio [SWS_DM_00796], [SWS_DM_00801]. En caso de error, el future debe completarse con un código de error adecuado de DiagUdsNrcErrc según ISO 14229-1 [SWS_DM_00801].
Concurrencia y restricciones
El método está especificado como noexcept[SWS_DM_00801]. El requisito relativo a la seguridad de hilos es condicional: si la función debe ejecutarse de forma segura para hilos se determina a través del ConcurrencyType pasado en el constructor de UploadService[SWS_DM_00801].
Esta nota de uso se basa en las especificaciones de AUTOSAR AP SWS Diagnostics R25-11.
conditional whether the function has to be implemented thread safe or non-thread safe is determined by the ConcurrencyType given in the constructor
Parameter (in)
Parameter
Beschreibung
transferRequestParameterRecord
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.
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.responseData 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.
This StopOffer will disable the forwarding of request messages from DM.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: e7cdc33ba5c7ProcedenciaPreguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
usar
El método StopOffer() de la clase ara::diag::UploadService ([SWS_DM_00803], declarado en #include "ara/diag/upload.h") desactiva el reenvío de peticiones de diagnóstico entrantes desde Diagnostic Management (DM) al servicio de subida. La función posee la firma void StopOffer() noexcept;, no acepta parámetros y no proporciona ningún valor de retorno. La llamada se realiza de forma síncrona y finaliza de inmediato el reenvío de peticiones.
Manejo de errores
La operación está especificada como segura frente a excepciones (exception safe) y declarada con el identificador noexcept[SWS_DM_00803]. Por consiguiente, no se lanzan excepciones de C++. Para esta llamada no están previstos códigos de error ni mensajes de fallo específicos.
Concurrencia y restricciones
Según la especificación, StopOffer() no es seguro para subprocesos (not thread-safe) [SWS_DM_00803]. Por lo tanto, la Adaptive Application invocadora debe asegurarse por sí misma de que las llamadas en la misma instancia no se realicen de forma concurrente desde varios subprocesos sin sincronización externa. En cuanto al orden, el método debería llamarse típicamente solo tras un ofrecimiento previo del servicio, a fin de cancelar su registro de forma controlada. Pregunta Q-90ce659f307f54ca (abierta)
Interacción
La interfaz se alinea con el patrón de provisión uniforme del diagnóstico de AUTOSAR Adaptive, que prevé métodos independientes para la activación y desactivación de instancias de servicio AUTOSAR_AP_SWS_Diagnostics §7.3.4.1.2 «Monitors». El método constituye la contrapartida funcional de ara::diag::DownloadService::StopOffer ([SWS_DM_00793]), el cual está sujeto a los mismos requisitos aguas arriba. Además, existen funciones de desactivación análogas para otros componentes de diagnóstico, como rutinas genéricas ([SWS_DM_00558]), servicios UDS ([SWS_DM_00620]) e interfaces de autenticación ([SWS_DM_01131]).
Esta nota de uso se ha generado automáticamente a partir de la especificación AUTOSAR Adaptive R25-11.
numBytesToReturn: Especifica la cantidad de bytes que el Diagnostic Manager (DM) puede admitir como máximo para este bloque de datos debido al tamaño de su búfer interno ([SWS_DM_00800]). Interpretación: Es de esperar que la aplicación restrinja estrictamente el tamaño de bloque a este valor límite. Pregunta Q-89de95e70e1e6223 (abierta)
metaInfo: Proporciona metainformación sobre la petición de diagnóstico entrante ([SWS_DM_00800]).
cancellationHandler: Sirve para supervisar conversaciones en curso vía cancellationHandler.IsCanceled(), así como para registrar notificaciones a través de cancellationHandler.SetNotifier() en caso de cancelación ([SWS_DM_00800]).
El retorno se realiza de forma asíncrona a través de ara::core::Future<OperationOutput> ([SWS_DM_00800]). En caso de éxito, los datos útiles proporcionados en OperationOutput.responseData ([SWS_DM_00796]) se ubican en la respuesta positiva directamente detrás del contador blockSequenceCounter como transferResponseParameterRecord ([SWS_DM_00800]).
Tratamiento de errores y validación
En caso de error, el future se resuelve con un código de error (NRC) adecuado según ISO 14229-1 procedente de DiagUdsNrcErrc ([SWS_DM_00800]). Aparte de las comprobaciones básicas de NRC según [SWS_DM_00101] y [SWS_DM_00103], el Diagnostic Manager no realiza ninguna otra validación del servicio; todas las demás comprobaciones de NRC requeridas deben ser implementadas por la propia aplicación llamada ([SWS_DM_01096]).
Concurrencia y seguridad de ejecución
La operación es segura ante excepciones (exception safe) ([SWS_DM_00800], AUTOSAR_AP_SWS_Diagnostics §8.27.1.1.3.5 «UploadData»). La seguridad frente a hilos es condicional: Si UploadData debe implementarse de forma segura frente a hilos se determina a través del ConcurrencyType pasado en el constructor de UploadService ([SWS_DM_00800]).
Esta nota de uso se creó de forma automatizada a partir de la especificación AUTOSAR R25-11.
conditional whether the function has to be implemented thread safe or non-thread safe is determined by the ConcurrencyType given in the constructor
Parameter (in)
Parameter
Beschreibung
numBytesToReturn
number of bytes DM accepts (due to its internal buffer) for this chunk.
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.
A Future, which either gets readied to OperationOutput (transfer ResponseParameterRecord for a positive response message) or readied with ErrorCode from DiagUdsNrcErrc (for a negative response message). Data in OperationOutput.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.
InstanceSpeci- InstanceSpecifier either cannot be resolved in the model in the fierMappingIn- context of your executable, or it refers to a model element other tegrityViolation than a PortPrototype. PortInterfaceMap- A PortPrototype that is typed by a pingViolation DiagnosticUploadInterface needs to be referenced by a DiagnosticServiceGenericMapping. ProcessMappingVio- Matching InstanceRef exists, but no matching (modelled) Process lation found that matches the (runtime) process. InstanceSpecifier- Violation message that is sent in case a constructor in the ara AlreadyInUseViola- framework was called with an InstanceSpecifier already in use in tion this process.
Parameter (in)
Parameter
Beschreibung
specifier
InstanceSpecifier to a PortPrototype of a DiagnosticUploadInterface.
concurrencyType
Specifies if the interface is implemented as thread safe ( kConcurrent) or non-thread safe (kNotConcurrent).
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