Permite a las aplicaciones el procesamiento genérico de servicios RoutineControl de UDS con transferencia asíncrona de datos.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: ed3ab770d945ProcedenciaPreguntas abiertas (2)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
Permite a las aplicaciones el procesamiento genérico de servicios RoutineControl de UDS con transferencia asíncrona de datos.
La clase proporciona un manejador genérico para servicios RoutineControl de UDS y reenvía solicitudes para distintos identificadores de rutina a aplicaciones adaptativas [SWS_DM_00552]. Los desarrolladores implementan las acciones de rutina requeridas mediante métodos asíncronos como Start y activan el reenvío de mensajes mediante Offer[SWS_DM_00557]. Dado que las instancias no son copiables ni trasladables, el ciclo de vida y la concurrencia deben controlarse con precisión mediante el constructor y la configuración de la interfaz. Las operaciones en curso admiten cancelaciones cooperativas así como códigos de error estandarizados de UDS.
Contexto
La clase ara::diag::GenericRoutine proporciona la interfaz genérica para el procesamiento de rutinas de diagnóstico conforme a ISO 14229-1 (UDS RoutineControl, servicio 0x31) en la AUTOSAR Adaptive Platform. Actúa como enlace entre el Diagnostic Management (DM) central y la aplicación adaptativa. Una instancia de esta clase se vincula a un prototipo de puerto modelado del tipo DiagnosticRoutineGenericInterface, el cual debe estar referenciado en el modelo a través de un DiagnosticServiceGenericMapping[SWS_DM_00552]. A diferencia de las interfaces de rutinas específicas por tipo, GenericRoutine transfiere los datos brutos de la solicitud de diagnóstico como ara::core::Span<const std::uint8_t> junto con el identificador de rutina concreto (routineId) a la aplicación [SWS_DM_00554], [SWS_DM_00555], [SWS_DM_00556]. De este modo, un único manejador puede atender múltiples rutinas de manera flexible.
Ciclo de vida
Las instancias de GenericRoutine están vinculadas a su puerto específico y no deben copiarse ni trasladarse; el constructor de copia y de movimiento, así como los operadores de asignación, están explícitamente eliminados [SWS_DM_01637], [SWS_DM_01638], [SWS_DM_01635], [SWS_DM_01636]. La inicialización se realiza a través del constructor indicando el ara::core::InstanceSpecifier así como el comportamiento de concurrencia (ConcurrencyType: kConcurrent o kNotConcurrent) [SWS_DM_00552]. Este parámetro determina si los métodos virtuales de ejecución deben implementarse de forma segura para subprocesos (thread-safe).
Tras la creación, el DM no reenvía inicialmente ningún mensaje al manejador. El reenvío se activa únicamente mediante la llamada a Offer()[SWS_DM_00557]. A través de StopOffer() se puede desactivar de nuevo el reenvío [SWS_DM_00558] antes de que la instancia sea liberada por el destructor virtual ~GenericRoutine()[SWS_DM_00553]. Mientras que el constructor es seguro para subprocesos, Offer(), StopOffer() y el destructor no son seguros para subprocesos y requieren sincronización externa [SWS_DM_00552], [SWS_DM_00557], [SWS_DM_00558], [SWS_DM_00553].
Para proporcionar una rutina genérica, una aplicación deriva de GenericRoutine y sobrescribe los métodos virtuales requeridos. El método Start (subfunción UDS 0x01) es puramente virtual (pure virtual) y debe implementarse obligatoriamente [SWS_DM_00554]. Los métodos Stop (subfunción 0x02) [SWS_DM_00555] y RequestResults (subfunción 0x03) [SWS_DM_00556] son métodos virtuales; interpretación: dado que no son puramente virtuales, presumiblemente solo será necesario sobrescribirlos si la rutina correspondiente admite funcionalmente la detención o la consulta separada de resultados. Pregunta (abierta)
El flujo regular comprende las siguientes fases:
Instanciación: creación del manejador derivado con referencia de puerto y modo de concurrencia [SWS_DM_00552].
Activación: llamada a Offer() para la habilitación de cara al DM [SWS_DM_00557].
Ejecución: ante solicitudes UDS entrantes, el DM invoca Start, Stop o RequestResults. La aplicación recibe routineId, requestData, metaInfo así como un CancellationHandler y devuelve un ara::core::Future<OperationOutput>[SWS_DM_00554], [SWS_DM_00555], [SWS_DM_00556]. La validez de requestData está garantizada hasta que se cumpla la promise asociada o se cancele la operación [SWS_DM_00554].
Tratamiento de la cancelación: la aplicación puede comprobar el estado de cancelación mediante cancellationHandler.IsCanceled() o registrar una callback a través de cancellationHandler.SetNotifier()[SWS_DM_00554]. Interpretación: en caso de cancelación, la aplicación presumiblemente debería finalizar de forma anticipada las actividades en segundo plano en curso y resolver la promise a la mayor brevedad. Pregunta (abierta)
Desactivación: finalización del reenvío mediante StopOffer()[SWS_DM_00558] antes de la destrucción del objeto.
Pueden producirse errores tanto en la configuración como durante el tiempo de ejecución y la ejecución:
Infracciones de modelo y asignación: si falla la resolución del InstanceSpecifier en el modelo, no se identifica como PortPrototype o no existe un DiagnosticServiceGenericMapping coincidente, el framework notifica infracciones (violations) como InstanceSpecifierMappingIntegrityViolation, PortInterfaceMappingViolation, ProcessMappingViolation o InstanceSpecifierAlreadyInUseViolation[SWS_DM_00552].
Error de puesta a disposición: si se invoca Offer() cuando el servicio ya está ofrecido, la llamada falla y devuelve el código de error DiagOfferErrc::kAlreadyOffered[SWS_DM_00557].
Códigos de error de diagnóstico (NRC): si una operación de rutina no puede completarse con éxito o la solicitud contiene parámetros no válidos, la aplicación no completa el future devuelto con OperationOutput, sino con un Negative Response Code (NRC) de UDS adecuado de DiagUdsNrcErrc conforme a ISO 14229-1 [SWS_DM_00554], [SWS_DM_00555], [SWS_DM_00556].
Esta guía de clases se basa en la especificación AUTOSAR Adaptive Platform R25-11 y se ha generado de forma automatizada.
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 DiagnosticRoutineGenericInterface 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 DiagnosticRoutineGenericInterface.
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.
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: 36b2772d0811ProcedenciaPreguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
usar
La función Offer de la clase ara::diag::GenericRoutine capacita a Diagnostic Management (DM) para reenviar los mensajes de solicitud de diagnóstico entrantes para una rutina al manejador registrado [SWS_DM_00557]. La llamada se realiza de forma síncrona, no recibe parámetros y devuelve un ara::core::Result<void>[SWS_DM_00557]. Dado que el método está declarado con la especificación noexcept, se considera seguro frente a excepciones (exception safe) [SWS_DM_00557].
Manejo de errores
Si el ofrecimiento falla, el método devuelve un resultado negativo. Si la rutina ya se había ofrecido previamente para la instancia en cuestión, el método devuelve el código de error específico DiagOfferErrc::kAlreadyOffered[SWS_DM_00557]. Para este caso de error se define una semántica de reversión (rollback), de modo que el estado permanece sin cambios [SWS_DM_00557]. El identificador de error kAlreadyOffered está anclado, además, en los dominios de error internos para llamadas de diagnóstico [SWS_DM_00514].
Concurrencia y restricciones
La interfaz está especificada expresamente como no segura para hilos (not thread-safe) [SWS_DM_00557]. Si varios hilos de una aplicación acceden al mismo manejador, la llamada debe sincronizarse. Interpretación: es de prever que la llamada se realice típicamente durante la inicialización, ya que antes de la ejecución de Offer no se pueden recibir solicitudes. Pregunta Q-0c42f415bcb0de20 (abierta)
Interacción
El ofrecimiento de funcionalidades mediante Offer es un patrón central en el clúster de diagnóstico de AUTOSAR Adaptive; se utiliza de forma análoga también para interfaces de rutina específicas de tipo [SWS_DM_00594], servicios UDS genéricos [SWS_DM_00619] e identificadores de datos [SWS_DM_00638]. A pesar de la coincidencia de nombre con ara::com, esto representa una implementación específica de Diagnostic Management SWS Diagnostics §7.3.4.1.2 «Monitors».
Esta nota de uso fue elaborada por una IA y se basa exclusivamente en la especificación AUTOSAR R25-11.
Called for RoutineControl with SubFunction RequestResults (0x03) request for this Diagnostic RoutineIdentifier.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: f4080ca4c8cdProcedenciaPreguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
La instancia del servidor de diagnóstico llama al método RequestResults de la clase ara::diag::GenericRoutine para procesar de forma genérica solicitudes UDS RoutineControl del servicio 0x31 con la subfunción requestRoutineResults (0x03) para el identificador de rutina de diagnóstico parametrizado ([SWS_DM_00575], [SWS_DM_00556]).
Durante la llamada se pasan el identificador de rutina routineId, los metadatos específicos de la solicitud metaInfo y los datos de entrada requestData ([SWS_DM_00556]). La validez del span requestData está estrictamente limitada hasta que se cumpla el Promise correspondiente o se cancele la ejecución ([SWS_DM_00556]). Un cancellationHandler suministrado permite consultar el estado de cancelación a través de IsCanceled, así como registrar una función de notificación a través de SetNotifier ([SWS_DM_00556]).
El resultado se devuelve de forma asíncrona como ara::core::Future<OperationOutput> ([SWS_DM_00556]). Interpretación: La provisión de los datos de salida suele realizarse de forma asíncrona a través de un ara::core::Promise en el lado de la aplicación. Pregunta Q-f50c8509d7515e3f (abierta) En caso de éxito, el future proporciona un OperationOutput, mientras que en caso de error se transmite un NRC de UDS adecuado según ISO 14229-1 a través de DiagUdsNrcErrc ([SWS_DM_00556]). La función está declarada como noexcept y se considera segura frente a excepciones ([SWS_DM_00556]).
En lo que respecta a la concurrencia, la seguridad para subprocesos es condicional (conditional): que el método deba implementarse de forma segura para subprocesos se controla de manera vinculante mediante el ConcurrencyType pasado al constructor ([SWS_DM_00556]).
Esta nota de uso se ha generado automáticamente a partir de la especificación de AUTOSAR.
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
routineId
the corresponding RoutineIdentifier
requestData
Content of request message (without RoutineIdentifier), 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.
Called for RoutineControl with SubFunction Start (0x01) request for this DiagnosticRoutine Identifier.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 9e819a027940Procedencia
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
El método Start de la clase ara::diag::GenericRoutine se invoca en cuanto se recibe una solicitud de diagnóstico para RoutineControl con la subfunción Start (0x01) para el routineId especificado [SWS_DM_00554]. A diferencia de la interfaz de rutina tipificada según [SWS_DM_00591], esta interfaz genérica acepta los datos sin procesar del mensaje de solicitud como intervalo de bytes (byte span).
Para la implementación se aplican los siguientes requisitos y propiedades de la interfaz:
Contexto de llamada y parámetros: Además de routineId y los metadatos (metaInfo), se transmite el parámetro requestData. La vida útil de los datos de solicitud sigue siendo válida hasta que se cumpla la promesa o el cancellationHandler cancele el procesamiento [SWS_DM_00554].
Tratamiento de cancelación: La rutina puede consultar el estado de cancelación actual mediante cancellationHandler.IsCanceled() o registrar a través de cancellationHandler.SetNotifier() una función notificadora que se llamará si se cancela la conversación [SWS_DM_00554].
Semántica asíncrona: El procesamiento se realiza de forma no bloqueante a través de ara::core::Future<OperationOutput>. En caso de ejecución exitosa, OperationOutput proporciona los datos útiles para la respuesta positiva [SWS_DM_00554].
Tratamiento de errores: Si la ejecución falla, el future debe completarse con un Negative Response Code (NRC) adecuado según ISO 14229-1 utilizando DiagUdsNrcErrc[SWS_DM_00554].
Concurrencia: La función está declarada como segura contra excepciones (noexcept). El ConcurrencyType transmitido al constructor decide si la provisión debe realizarse de forma segura para subprocesos [SWS_DM_00554].
Esta nota de uso se ha generado automáticamente a partir de la especificación de AUTOSAR.
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
routineId
the corresponding RoutineIdentifier
requestData
Content of request message (without RoutineIdentifier). 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.
Called for RoutineControl with SubFunction Stop (0x02) request for this DiagnosticRoutine Identifier.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: d8c6cb55284bProcedencia
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
El método Stop se invoca en una solicitud RoutineControl de UDS con la subfunción Stop (0x02) para la rutina de diagnóstico genérica respectiva [SWS_DM_00555]. En comparación con las interfaces de rutinas tipificadas [SWS_DM_00592], recibe el identificador de rutina routineId, así como los datos de la solicitud como un span de datos sin procesar requestData[SWS_DM_00555].
Durante su uso deben observarse las siguientes reglas de parámetros y de flujo [SWS_DM_00555]:
Tiempo de vida del span de datos de entrada: el área de memoria de requestData permanece válida hasta que se cumpla el Promise correspondiente o se cancele la ejecución a través de cancellationHandler[SWS_DM_00555].
Tratamiento de la cancelación: la aplicación puede verificar mediante cancellationHandler.IsCanceled() si la conversación de diagnóstico actual se ha cancelado, o registrar a través de cancellationHandler.SetNotifier una función de notificación que se active en caso de cancelación [SWS_DM_00555].
Asincronía y retorno: la función opera de forma asíncrona y devuelve un ara::core::Future<OperationOutput> que, en caso de éxito, contiene los datos de salida para la respuesta UDS positiva [SWS_DM_00555].
El tratamiento de errores se realiza mediante valores de retorno de diagnóstico negativos: si la detención de la rutina falla, el future debe completarse con un código de error UDS-NRC adecuado según la norma ISO 14229-1 mediante DiagUdsNrcErrc[SWS_DM_00555].
En cuanto a la concurrencia, el método está especificado como noexcept y seguro frente a excepciones. El hecho de que la implementación concreta deba estar diseñada para ser segura para subprocesos depende de ConcurrencyType, que se pasó en el constructor durante la instanciación [SWS_DM_00555].
Esta nota de uso se basa exclusivamente en las especificaciones del release R25-11 de Adaptive AUTOSAR.
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
routineId
the corresponding RoutineIdentifier
requestData
Content of request message (without RoutineIdentifier). Lifetime: Valid until Promise is fulfilled or the processing is cancelled by the cancellationHandler.
metaInfo
MetaData 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 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: 73588f5f0b57ProcedenciaPreguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
usar
El método ara::diag::GenericRoutine::StopOffer desactiva el reenvío de solicitudes de diagnóstico entrantes de Diagnostic Management (DM) a la instancia de rutina correspondiente [SWS_DM_00558]. La función posee la firma void StopOffer() noexcept;, no recibe parámetros y no proporciona ningún valor de retorno [SWS_DM_00558]. La llamada se procesa de forma síncrona y señala a DM que, a partir de ese momento, la rutina ya no aceptará más solicitudes.
Manejo de errores
La operación está especificada como exception safe y declarada con noexcept[SWS_DM_00558]. Durante la ejecución no se producen códigos de error ni excepciones de C++. Para esta interfaz en el módulo de diagnóstico no se prevén notificaciones específicas a instancias de registro de errores o de desarrollo (DET/DEM).
Concurrencia y restricciones
En lo referente al comportamiento de hilos, el método está designado como not thread-safe[SWS_DM_00558]. Por tanto, las llamadas concurrentes sobre la misma instancia de ara::diag::GenericRoutine deben sincronizarse del lado de la aplicación. Interpretación: es probable que la llamada tenga lugar sobre todo cuando una rutina se desactiva temporalmente o cuando la aplicación finaliza de forma controlada tras haber realizado previamente una llamada de ofrecimiento. Pregunta Q-e110ce01110699e3 (abierta)
Interacción
Conceptualmente, la nomenclatura sigue el ofrecimiento de servicios de ara::com, pero constituye una implementación independiente dentro de ara::diag y no debe confundirse con ofertas de comunicación (AUTOSAR_AP_SWS_Diagnostics §7.3.4.1.2 «Monitors»). El mismo patrón de puesta a disposición para desactivar el reenvío de solicitudes lo emplean a nivel de módulo otras clases de diagnóstico como ara::diag::GenericUDSService[SWS_DM_00620], ara::diag::GenericDataIdentifier[SWS_DM_00639], interfaces de rutina [SWS_DM_00595] y ara::diag::Monitor[SWS_DM_01089].
Este texto fue generado por una IA y se basa exclusivamente en los documentos de especificación de AUTOSAR R25-11.
gemini-3.8-flash-low· 2026-10-13 · Original en alemán