Sirve como interfaz UDS genérica para el procesamiento asíncrono de solicitudes de diagnóstico entrantes en el gestor de diagnóstico.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: d0d38c589b70Procedencia
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
Sirve como interfaz UDS genérica para el procesamiento asíncrono de solicitudes de diagnóstico entrantes en el gestor de diagnóstico.
La clase ara::diag::GenericUDSService, como manejador de servicio UDS genérico, permite la recepción y el procesamiento de cualquier solicitud de diagnóstico UDS a través del gestor de diagnóstico de AUTOSAR [SWS_DM_00616]. Tras vincularse a un prototipo de puerto, el servicio se activa mediante Offer(), procesa solicitudes de forma asíncrona en el método HandleMessage() y se desregistra de nuevo con StopOffer()[SWS_DM_00618], [SWS_DM_00619], [SWS_DM_00620]. La instancia no se puede copiar ni mover y señala errores mediante NRC de DiagUdsNrcErrc[SWS_DM_01657], [SWS_DM_00618].
Contexto
La clase ara::diag::GenericUDSService proporciona una interfaz de servicio genérica para la comunicación de diagnóstico según UDS (Unified Diagnostic Services). Sirve como clase base para aplicaciones que desean implementar y procesar servicios UDS definidos por el usuario o no cubiertos por interfaces dedicadas. La interacción tiene lugar esencialmente entre el componente de aplicación de diagnóstico, el gestor de diagnóstico de AUTOSAR (DM) y el contexto de modelado subyacente. La conexión con el gestor de diagnóstico y el modelo de plataforma se realiza en el momento de la instanciación a través de un ara::core::InstanceSpecifier que hace referencia a un prototipo de puerto correspondiente de un DiagnosticGenericUdsInterface[SWS_DM_00616]. Tan pronto como se activa el registro a través de la interfaz, el gestor de diagnóstico reenvía las solicitudes UDS entrantes a la instancia implementada [SWS_DM_00619].
Diagrama de contexto: contexto de componentes e interacción de ara::diag::GenericUDSService con DM y la aplicación. Fuentes: [SWS_DM_00616], [SWS_DM_00618], [SWS_DM_00619]
Ciclo de vida
Una instancia de ara::diag::GenericUDSService está vinculada a un prototipo de puerto fijo y diseñada como una instancia única: el constructor de copia [SWS_DM_01657], el constructor de movimiento [SWS_DM_01658], así como los operadores de asignación [SWS_DM_01655], [SWS_DM_01656] están eliminados (delete). La creación se realiza explícitamente a través del constructor especificando un InstanceSpecifier y la configuración de concurrencia ConcurrencyType (kConcurrent o kNotConcurrent) [SWS_DM_00616]. El ciclo de vida de la disponibilidad del servicio se divide en dos fases principales:
No ofrecido (Stopped / Initial): tras la construcción o tras la llamada a StopOffer(), DM no reenvía ninguna solicitud a la instancia [SWS_DM_00620].
Ofrecido (Offered): tras una llamada exitosa a Offer(), el manejador está activo y procesa los mensajes de diagnóstico entrantes [SWS_DM_00619].
La destrucción se lleva a cabo a través del destructor virtual ~GenericUDSService()[SWS_DM_00584]. En cuanto a la seguridad para subprocesos, el constructor está especificado como seguro para subprocesos, mientras que Offer(), StopOffer() y el destructor no son seguros para subprocesos y requieren sincronización externa [SWS_DM_00616], [SWS_DM_00619], [SWS_DM_00620], [SWS_DM_00584].
El flujo habitual incluye la instanciación de la clase de servicio derivada, la habilitación del manejador, el procesamiento asíncrono de tareas y la posterior desactivación:
Instanciación: la aplicación instancia la clase de servicio especializada con el ara::core::InstanceSpecifier adecuado y el ConcurrencyType deseado [SWS_DM_00616].
Ofrecer servicio: la llamada a Offer() señala al gestor de diagnóstico la disposición para la recepción de mensajes [SWS_DM_00619].
Procesamiento de mensajes: las solicitudes UDS entrantes provocan que DM llame al método virtual puro HandleMessage(). Se transfieren el identificador de servicio (sid), los datos útiles (requestData), los metadatos (metaInfo) y un cancellationHandler[SWS_DM_00618]. El método devuelve un ara::core::Future<OperationOutput> a través del cual se proporciona el resultado o un error de forma asíncrona [SWS_DM_00618]. El manejador puede comprobar a través de cancellationHandler.IsCanceled() si la operación se ha cancelado o registrar una notificación a través de cancellationHandler.SetNotifier()[SWS_DM_00618].
Finalizar servicio: mediante StopOffer() se detiene el reenvío de solicitudes antes de que se destruya la instancia [SWS_DM_00620], [SWS_DM_00584].
Las situaciones de error pueden surgir en diferentes fases y requieren un tratamiento diferenciado:
Infracciones de instanciación: si falla la asignación de InstanceSpecifier en el modelo, el framework notifica violaciones definidas: InstanceSpecifierMappingIntegrityViolation (el especificador no se puede resolver en el modelo o no hace referencia a un PortPrototype), PortInterfaceMappingViolation (el puerto no está referenciado mediante un DiagnosticServiceGenericMapping), ProcessMappingViolation (no hay ningún proceso coincidente modelado) o InstanceSpecifierAlreadyInUseViolation (el especificador ya se utiliza en el proceso) [SWS_DM_00616].
Llamada duplicada de oferta: si se llama a Offer() a pesar de que el servicio ya se ofrece activamente, la llamada falla y devuelve el código de error DiagOfferErrc::kAlreadyOffered (semántica de rollback) [SWS_DM_00619].
Errores de ejecución relacionados con el diagnóstico: si un mensaje UDS en HandleMessage() no se puede responder positivamente desde el punto de vista funcional, el resultado en Future debe asignarse con un Negative Response Code (NRC) adecuado según ISO 14229-1 a través de DiagUdsNrcErrc[SWS_DM_00618]. Además, la implementación debe responder a señales de cancelación de cancellationHandler en caso de que la conversación de diagnóstico subyacente haya finalizado prematuramente [SWS_DM_00618].
Esta guía de clase se generó automáticamente a partir del estándar AUTOSAR.
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 DiagnosticGenericUdsInterface 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 DiagnosticGenericUdsInterface.
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.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 38c6453769b1Procedencia
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
El método HandleMessage de ara::diag::GenericUDSService sirve para el procesamiento específico de la aplicación de solicitudes de diagnóstico UDS entrantes [SWS_DM_00618].
usar
El Diagnostic Management (DM) llama al método para cada mensaje de solicitud de diagnóstico recibido [SWS_DM_00618]. En función de los parámetros, se transfieren el Service Identifier (sid), los datos útiles (requestData como ara::core::Span<const std::uint8_t>), información de conexión (metaInfo), así como un cancellationHandler. El procesamiento se realiza de forma asíncrona mediante el retorno de un ara::core::Future<OperationOutput>[SWS_DM_00618]. Los datos útiles en requestData permanecen válidos hasta que se cumpla la Promise correspondiente o se cancele la operación. A través de cancellationHandler.IsCanceled(), la aplicación puede comprobar el estado de cancelación o registrar una notificación para interrupciones de sesión mediante cancellationHandler.SetNotifier()[SWS_DM_00618].
Manejo de errores
Si una solicitud no puede procesarse con éxito, la aplicación señala el error a través del Future devuelto mediante un código de respuesta negativa adecuado (NRC según ISO 14229-1) a través de DiagUdsNrcErrc[SWS_DM_00618].
Concurrencia y condiciones de contorno
Tiempo de vida de metaInfo: la validez del objeto metaInfo está estrictamente limitada a la duración de ejecución activa de la llamada al método [SWS_DM_01345]. Almacenarlo o utilizarlo tras el retorno de HandleMessage da lugar a un comportamiento indefinido.
Reentrancia y concurrencia: si las llamadas deben realizarse de forma segura para subprocesos lo determina el ara::diag::ConcurrencyType establecido en el constructor SWS Diagnostics §7.3.1.2 «Concurrency of ara::diag interfaces». Con kConcurrent, el DM puede llamar a solicitudes posteriores en paralelo; con kNotConcurrent, el DM espera hasta que se haya proporcionado el resultado de la solicitud en curso.
Esta nota de uso se ha generado de forma automatizada 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
sid
Diagnostic Request Service Identifier.
requestData
Diagnostic request data (starting after SID). 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.
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: 19027d24302fProcedenciaPreguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
usar
El método Offer de la clase ara::diag::GenericUDSService habilita el reenvío de solicitudes de diagnóstico: permite al Diagnostic Manager (DM) reenviar mensajes de solicitud UDS entrantes a este manejador [SWS_DM_00619]. La llamada síncrona no posee parámetros, no bloquea y devuelve como valor de retorno un ara::core::Result<void>[SWS_DM_00619]. La ejecución suele tener lugar típicamente (interpretación:) durante la fase de inicialización y arranque de la Adaptive Application, antes de que deban procesarse mensajes de diagnóstico a través de la red. Pregunta Q-c1e385a434fe1e4e (abierta)
Tratamiento de errores y concurrencia
La función está declarada con noexcept y garantiza seguridad frente a excepciones [SWS_DM_00619]. Si el servicio ya se había ofrecido con anterioridad, el registro falla y devuelve el código de error DiagOfferErrc::kAlreadyOffered con semántica de reversión (rollback) [SWS_DM_00619]. Respecto a la seguridad en hilos, la interfaz está especificada como not thread-safe[SWS_DM_00619]; las llamadas simultáneas sobre la misma instancia deben ser sincronizadas por la aplicación llamadora.
Interacción
El ofrecimiento a través de Offer corresponde al patrón de registro estandarizado en el subsistema de diagnóstico de AUTOSAR Adaptive, tal como se especifica de forma comparable para rutinas ([SWS_DM_00557]) o identificadores de datos ([SWS_DM_00638]). Aunque la nomenclatura se basa en ara::com, se trata de un método específico de diagnóstico del Diagnostic Manager AUTOSAR_AP_SWS_Diagnostics §7.3.4.1.2 «Monitors».
Esta nota de uso fue generada por una IA sobre la base de la especificación AUTOSAR R25-11.
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: 5dba8a8b4077ProcedenciaPreguntas 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::GenericUDSService desactiva el reenvío de peticiones de diagnóstico entrantes desde el Diagnostic Management (DM) a la instancia de servicio [SWS_DM_00620]. La función se proporciona mediante la cabecera ara/diag/generic_uds_service.h, no espera parámetros y tiene el tipo de retorno void[SWS_DM_00620].
Manejo de errores
El método está especificado con noexcept y como seguro frente a excepciones (exception safe) [SWS_DM_00620]. No lanza excepciones ni devuelve códigos de error; la detención del reenvío se produce de forma determinista.
Concurrencia y restricciones
Según la especificación, StopOffer está clasificado como no seguro para subprocesos (not thread-safe) [SWS_DM_00620]. Las llamadas concurrentes para la misma instancia deben protegerse del lado de la aplicación. Interpretación: la llamada a StopOffer debería producirse típicamente antes de la destrucción del objeto de instancia o en caso de no disponibilidad temporal, para evitar reenvíos pendientes. Pregunta Q-408323dd00c313c0 (abierta)
Interacción
El concepto de StopOffer sigue un patrón arquitectónico coherente dentro de ara::diag, tal como se encuentra también en rutinas genéricas [SWS_DM_00558], identificadores de datos genéricos [SWS_DM_00639], Security Access [SWS_DM_00767] y monitores [SWS_DM_01089]. Aunque las denominaciones se basan en ara::com, se trata de una implementación independiente del Diagnostic Management AUTOSAR_AP_SWS_Diagnostics §7.3.4.1.2 «Monitors».
Esta nota de uso ha sido generada por una IA y se basa exclusivamente en las especificaciones de la versión R25-11 de AUTOSAR.
gemini-3.8-flash-low· 2026-10-13 · Original en alemán