Permite a las aplicaciones el procesamiento genérico de solicitudes de lectura y escritura UDS para identificadores de diagnóstico.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 02c252ff66d0ProcedenciaPreguntas abiertas (1)
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 solicitudes de lectura y escritura UDS para identificadores de diagnóstico.
La clase ara::diag::GenericDataIdentifier sirve como interfaz genérica para el procesamiento asíncrono de solicitudes de lectura y escritura UDS para identificadores de diagnóstico en AUTOSAR Adaptive [SWS_DM_00636]. Tras la vinculación a un puerto y la habilitación mediante Offer(), el Diagnostic Management reenvía las solicitudes a los métodos implementados [SWS_DM_00638]. Como instancia singular, el objeto no se puede copiar ni mover, mientras que la seguridad para subprocesos del procesamiento de solicitudes se controla mediante la configuración de concurrencia seleccionada en el constructor.
Contexto
La clase ara::diag::GenericDataIdentifier representa una interfaz de servicio genérica dentro del clúster funcional Diagnostic Management (DM) de AUTOSAR Adaptive Platform SWS Diagnostics §8.2 «GenericDataIdentifier». Mientras que las interfaces específicas de tipo están vinculadas a tipos de datos rígidamente modelados, GenericDataIdentifier sirve para el procesamiento flexible de identificadores de diagnóstico (Data Identifiers, DIDs), en los que el identificador de 16 bits se transfiere dinámicamente como parámetro.
En el procesamiento de diagnóstico intervienen principalmente tres roles:
El tester de diagnóstico externo, que dirige servicios UDS estandarizados como ReadDataByIdentifier (0x22) o WriteDataByIdentifier (0x2E) al vehículo.
El Diagnostic Management (DM), que recibe solicitudes de diagnóstico, las valida y las reenvía a través de interfaces de puerto definidas a la correspondiente instancia de aplicación, siempre que esta haya sido activada previamente mediante Offer[SWS_DM_00638].
La implementación específica de la aplicación de GenericDataIdentifier, que encapsula la lógica de procesamiento real al proporcionar los métodos Read[SWS_DM_00636] y Write[SWS_DM_00637] y devolver los datos de forma asíncrona.
Ciclo de vida
Una instancia de ara::diag::GenericDataIdentifier se instancia explícitamente a través de su constructor [SWS_DM_00634]. Al hacerlo, el llamador vincula el objeto a un ara::core::InstanceSpecifier que hace referencia a un PortPrototype de un DiagnosticDataIdentifierGenericInterface modelado. Mediante el argumento concurrencyType (de tipo DataIdentifierConcurrencyType) se define si las solicitudes se transfieren al manejador de forma concurrente (kConcurrent) o secuencial (kNotConcurrent) [SWS_DM_00634].
En cuanto a propiedad y ciclo de vida, GenericDataIdentifier está modelado como una instancia singular, no copiable y no desplazable:
Asimismo, el constructor de movimiento [SWS_DM_01654] y el operador de asignación por movimiento [SWS_DM_01652] están eliminados.
Tras la instanciación, el objeto se encuentra en estado inactivo; el Diagnostic Management aún no reenvía solicitudes. El reenvío se activa únicamente mediante la llamada a Offer()[SWS_DM_00638]. Para volver a desactivar el reenvío de solicitudes de diagnóstico, la aplicación llama a StopOffer()[SWS_DM_00639]. La destrucción del objeto se lleva a cabo mediante el destructor virtual [SWS_DM_00635].
Con respecto a la concurrencia, el constructor es seguro para subprocesos (thread-safe) [SWS_DM_00634]. Por el contrario, los métodos administrativos Offer()[SWS_DM_00638] y StopOffer()[SWS_DM_00639], así como el destructor [SWS_DM_00635], están especificados como no seguros para subprocesos. La seguridad para subprocesos de los métodos Read y Write depende condicionalmente del concurrencyType seleccionado [SWS_DM_00636], [SWS_DM_00637].
Un flujo vertical típico para el tratamiento de solicitudes de diagnóstico se divide en los siguientes pasos:
Inicialización: la aplicación instancia su clase manejadora derivada indicando el InstanceSpecifier así como la configuración de concurrencia [SWS_DM_00634]. Interpretación: en la práctica, es de suponer que esto se realice típicamente durante la fase de inicialización del proceso de la aplicación. Pregunta Q-32596fba68253958 (abierta)
Puesta a disposición del servicio: la aplicación llama a Offer()[SWS_DM_00638]. El Diagnostic Management activa el reenvío de las solicitudes DID entrantes.
Procesamiento de solicitudes:
Si entra una orden de lectura, el DM llama al método Read(dataIdentifier, metaInfo, cancellationHandler)[SWS_DM_00636]. La aplicación comprueba el identificador de 16 bits transferido y devuelve un ara::core::Future<OperationOutput> de forma asíncrona.
Si llega una orden de escritura, el DM llama a Write(dataIdentifier, requestData, metaInfo, cancellationHandler)[SWS_DM_00637]. Los datos de usuario en requestData permanecen válidos hasta que se satisfaga la promesa asociada o se cancele el procesamiento.
Comprobación de cancelación: durante operaciones prolongadas, el manejador puede comprobar mediante cancellationHandler.IsCanceled() si se ha cancelado la conversación, o registrar una función de notificación a través de cancellationHandler.SetNotifier[SWS_DM_00636], [SWS_DM_00637].
Baja del servicio: antes de finalizar el manejador, la aplicación llama a StopOffer()[SWS_DM_00639], con lo cual el DM interrumpe el reenvío.
Diagrama de secuencia: interacción entre el tester externo, Diagnostic Management y GenericDataIdentifier durante una solicitud de lectura UDS. Fuentes: [SWS_DM_00638], [SWS_DM_00636]
Escenarios de error
Los errores pueden producirse en diferentes fases de la interacción:
Infracciones de configuración y mapeo: si el InstanceSpecifier no se puede resolver en el modelo o no hace referencia a un PortPrototype, se produce un InstanceSpecifierMappingIntegrityViolation[SWS_DM_00634]. Si falta la asignación a un DiagnosticDataPortMapping, ocurre un PortInterfaceMappingViolation[SWS_DM_00634]. La falta de mapeo de proceso genera un ProcessMappingViolation, y un InstanceSpecifier ya utilizado provoca un InstanceSpecifierAlreadyInUseViolation[SWS_DM_00634].
Ofrecimiento reiterado: si se llama a Offer() a pesar de que el servicio ya se ofrece activamente, el método devuelve un ara::core::Result con el código de error DiagOfferErrc::kAlreadyOffered[SWS_DM_00638].
Errores funcionales de diagnóstico: si una solicitud de lectura o escritura no se puede atender funcionalmente, la aplicación no devuelve un estado de éxito en el Future, sino un UDS-NRC (Negative Response Code) estandarizado a través de DiagUdsNrcErrc conforme a ISO 14229-1 [SWS_DM_00636], [SWS_DM_00637].
Esta guía se basa en la especificación AUTOSAR 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 DiagnosticDataIdentifierGenericInterface needs to be referenced by a DiagnosticDataPortMapping. 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 DiagnosticDataIdentifierGenericInterface.
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: 860e6bd15d7fProcedenciaPreguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
Uso: El método síncrono Offer de la clase ara::diag::GenericDataIdentifier ([SWS_DM_00638]) sirve para registrar un handler de identificador de datos genérico en el Diagnostic Management (DM). Mediante esta llamada, el DM queda autorizado a reenviar las solicitudes de diagnóstico entrantes (mensajes de solicitud) para el identificador de datos en cuestión a dicho handler ([SWS_DM_00638]). La función no recibe parámetros de entrada y devuelve de forma síncrona un ara::core::Result<void> ([SWS_DM_00638]), que informa del éxito o del error.
Tratamiento de errores: El método está declarado con noexcept y garantiza una seguridad total frente a excepciones (exception safe) ([SWS_DM_00638]). Los posibles errores se notifican mediante el ara::core::Result. Si el handler ya se había ofrecido con anterioridad, la función devuelve el código de error DiagOfferErrc::kAlreadyOffered con semántica de reversión ([SWS_DM_00638]). Este corresponde a la enumeración general de errores DiagErrc::kAlreadyOffered ([SWS_DM_00514]).
Concurrencia y restricciones: La función está especificada como no segura para subprocesos (not thread-safe) ([SWS_DM_00638]). Por consiguiente, las llamadas sobre la misma instancia deben protegerse frente al acceso simultáneo. Dado que para GenericDataIdentifier no se especifica ningún método de baja de registro independiente, es de suponer que el ofrecimiento del servicio está vinculado a la vida útil de la instancia del handler (interpretación). Pregunta Q-7c64a5bd308464a8 (abierta)
Interacción: El procedimiento sigue el patrón homogéneo de puesta a disposición del Diagnostic Management. Existen interfaces análogas para identificadores de datos específicos de tipo ([SWS_DM_00599]), rutinas genéricas ([SWS_DM_00557]) y servicios UDS genéricos ([SWS_DM_00619]).
Esta nota de uso ha sido generada por un sistema de IA.
Called for ReadDataByIdentifier request for this DiagnosticDataIdentifier.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 7772a86b7791Procedencia
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
usar
El método Read de la clase ara::diag::GenericDataIdentifier se llama en cuanto se recibe una solicitud de diagnóstico para ReadDataByIdentifier (UDS 0x22) para el identificador de datos correspondiente [SWS_DM_00636]. Como parámetros, la función toma el identificador numérico dataIdentifier, el contexto metaInfo, así como un cancellationHandler. A través del cancellationHandler, la aplicación puede consultar el estado de cancelación mediante IsCanceled o registrar una función de notificación para conversaciones canceladas a través de SetNotifier[SWS_DM_00636]. El resultado se proporciona de forma asíncrona a través de un ara::core::Future<OperationOutput>, que en caso de éxito devuelve los datos útiles (OperationOutput) [SWS_DM_00636].
Manejo de errores
En caso de error, el Future devuelve un valor de retorno UDS negativo (NRC) según ISO 14229-1 a través de DiagUdsNrcErrc[SWS_DM_00636]. Si la interfaz todavía no se ofrece o ya no se ofrece a través de offer(), el Diagnostic Management (DM) responde de forma autónoma con el NRC 0x94 (ResourceTemporarilyNotAvailable) [SWS_DM_01257]. Si se alcanza el límite configurado de mensajes Response Pending, el servidor interrumpe el procesamiento y responde con NRC 0x10 (generalReject) [SWS_DM_00369].
Concurrencia e interacción
El método está declarado como noexcept y es seguro frente a excepciones [SWS_DM_00636]. Su seguridad para subprocesos es condicional: si la implementación debe ser segura para subprocesos se controla a través del ConcurrencyType transferido en el constructor [SWS_DM_00636]. Si readWrite está establecido en kConcurrent, el DM puede iniciar accesos de lectura y escritura de forma concurrente; de lo contrario (kNotConcurrent), la llamada se realiza secuencialmente [SWS_DM_00939]. A diferencia de interfaces específicas como [SWS_DM_00640], GenericDataIdentifier cubre rangos de DID genéricos de manera flexible a través del ID transferido [SWS_DM_00636].
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
dataIdentifier
the corresponding DataIdentifier
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 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: bd73a88bfde2ProcedenciaPreguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
Uso y contexto de llamada
La función miembro StopOffer de la clase ara::diag::GenericDataIdentifier sirve para desactivar el reenvío de mensajes de solicitud entrantes procedentes de Diagnostic Management (DM) a la instancia correspondiente [SWS_DM_00639]. La llamada se efectúa de forma síncrona a través de la interfaz del archivo de encabezado #include "ara/diag/generic_data_identifier.h"[SWS_DM_00639]. La función tiene la firma void StopOffer() noexcept;, no acepta parámetros de entrada y no devuelve ningún valor devuelto [SWS_DM_00639].
Tratamiento de errores y concurrencia
La especificación define StopOffer como segura frente a excepciones (exception safe) y garantiza mediante el identificador noexcept la ausencia de excepciones [SWS_DM_00639]. Para esta operación no están previstos códigos de error específicos, reacciones a fallos ni avisos a DET o DEM. En lo relativo a la concurrencia, el método está clasificado como no seguro frente a hilos (not thread-safe) [SWS_DM_00639]. Por lo tanto, el llamador debe sincronizar las llamadas paralelas en la misma instancia. Interpretación: previsiblemente, las solicitudes ya iniciadas en Diagnostic Management todavía se procesarán con normalidad antes de la detención definitiva del reenvío. Pregunta Q-94a464dc832c055c (abierta)
Interacción en el módulo de diagnóstico
El patrón para revocar la provisión del servicio se emplea de forma estandarizada y coherente en el módulo de diagnóstico. Existen métodos StopOffer análogos, entre otros, para:
identificadores de datos específicos de tipo a través de DataIdentifierInterface::StopOffer[SWS_DM_00600], así como elementos de datos [SWS_DM_00617],
rutinas genéricas a través de GenericRoutine::StopOffer[SWS_DM_00558] e interfaces de rutina específicas de tipo [SWS_DM_00595],
Called for WriteDataByIdentifier request for this DiagnosticDataIdentifier.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 7b195835c98cProcedencia
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
El método Write de la clase ara::diag::GenericDataIdentifier es llamado por el Diagnostic Management en cuanto se recibe una solicitud UDS del servicio WriteDataByIdentifier (0x2E) [SWS_DM_00637]. El requisito para la llamada es que el identificador de datos solicitado sea compatible y que la respectiva sesión de diagnóstico, así como el nivel de seguridad, permitan la ejecución [SWS_DM_00186], [SWS_DM_00415], [SWS_DM_00416].
La llamada se realiza con los siguientes parámetros [SWS_DM_00637]:
dataIdentifier: El identificador de 16 bits del identificador de datos que se va a escribir.
requestData: Un ara::core::Span con los datos brutos de la solicitud sin prefijo DID. El búfer permanece válido hasta que se cumpla la promise correspondiente o se cancele el procesamiento.
metaInfo: Metadatos adicionales relativos a la solicitud de diagnóstico.
cancellationHandler: Sirve para supervisar una cancelación prematura de la conversación mediante IsCanceled, así como para registrar una notificación de cancelación a través de SetNotifier.
La ejecución se realiza de forma asíncrona y devuelve un ara::core::Future<void>[SWS_DM_00637]. En caso de procesamiento correcto, la promise se cumple con void para un mensaje de respuesta positiva. Si se produce un error, el future debe completarse con un valor de retorno negativo de UDS (NRC) adecuado según la norma ISO 14229-1 a través de DiagUdsNrcErrc[SWS_DM_00637]. El método está declarado como noexcept y debe implementarse con seguridad frente a excepciones [SWS_DM_00637].
En cuanto a la concurrencia, la seguridad frente a subprocesos es condicional: que Write deba implementarse de forma segura frente a subprocesos depende del ConcurrencyType que se haya pasado en el constructor durante la instanciación [SWS_DM_00637]. La ejecución en paralelo de los accesos de lectura y escritura se controla mediante el flag readWrite[SWS_DM_00939].
Este texto ha sido generado por una IA. Todos los datos se basan exclusivamente en las especificaciones del release 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
dataIdentifier
the corresponding DataIdentifier
requestData
Content of request message (without DataIdentifier). 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