Sirve para la provisión de datos de diagnóstico extendidos por parte de la aplicación para el Diagnostic Management adaptativo.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 0446a63ad449ProcedenciaPreguntas abiertas (2)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
Sirve para la provisión de datos de diagnóstico extendidos por parte de la aplicación para el Diagnostic Management adaptativo.
La clase <ExtendedDataRecordElementInterface> sirve a las aplicaciones adaptativas como interfaz para proporcionar datos de diagnóstico extendidos al Diagnostic Management ([SWS_DM_02152]). Tras la instanciación y la activación a través de Offer(), el manejador implementa la provisión asíncrona de los datos mediante el método virtual puro Read() ([SWS_DM_02156]). Dado que el Diagnostic Manager almacena de forma permanente los registros de datos en la memoria no volátil, los valores no disponibles deben completarse obligatoriamente con un patrón de relleno. La interfaz no se puede copiar ni mover y su destructor no es seguro para subprocesos.
Contexto
La interfaz <ExtendedDataRecordElementInterface> sirve en el subsistema de diagnóstico de la AUTOSAR Adaptive Platform para suministrar datos de diagnóstico extendidos específicos de la aplicación (Extended Data Records) al Diagnostic Management (DM) (AUTOSAR AP SWS Diagnostics §7.2 «DiagnosticExtendedDataRecordInterface»). Un Extended Data Record contiene datos adicionales relacionados con el diagnóstico, como valores de contadores o información del entorno asociados a un evento de error. La clase actúa como interfaz base abstracta para componentes manejadores del lado de la aplicación. Entre las partes interactuantes se incluyen el Diagnostic Manager (DM), que solicita y coordina las operaciones de lectura, la implementación concreta del manejador dentro de la aplicación, así como la memoria no volátil (Non-Volatile Memory, NVM), en la que el DM almacena permanentemente los datos recuperados ([SWS_DM_02156]). Interpretación: Se presume que la llamada a Read() es provocada por un procesamiento de diagnóstico interno en el DM, por ejemplo, ante la ocurrencia de un evento de error o ante cambios de estado de un código de diagnóstico de fallas (Trouble Code). Pregunta Q-f80be8c2bd5697fc (abierta)
La creación se lleva a cabo mediante el constructor parametrizado especificando un ara::core::InstanceSpecifier y el modo de concurrencia ara::diag::ConcurrencyType ([SWS_DM_02158], AUTOSAR AP SWS Diagnostics §7.2 «DiagnosticExtendedDataRecordInterface»). La construcción es segura para subprocesos y segura frente a excepciones (exception safe). A través del parámetro concurrencyType se establece si las llamadas a la interfaz pueden procesarse de forma concurrente (kConcurrent) o secuencial (kNotConcurrent) ([SWS_DM_02158]). Las operaciones de copia y movimiento están completamente suprimidas: el constructor de copia ([SWS_DM_02147]), la asignación por copia ([SWS_DM_02148]), el constructor de movimiento ([SWS_DM_02149]) y la asignación por movimiento ([SWS_DM_02150]) están eliminados (=delete). Una instancia posee, por tanto, una identidad fija y no se puede duplicar ni transferir.
Tras la instanciación, el objeto se encuentra inicialmente en estado inactivo. Solo mediante la llamada a Offer() ([SWS_DM_02152]) se activa el servicio y el DM reenvía las solicitudes al manejador. Mediante StopOffer() ([SWS_DM_02153]) se puede detener este reenvío en cualquier momento. La destrucción se efectúa mediante el destructor virtual ~<ExtendedDataRecordElementInterface>() ([SWS_DM_02151]). Aunque este es seguro frente a excepciones, de manera explícita no es seguro para subprocesos (not thread-safe) ([SWS_DM_02151]). Interpretación: Es probable que StopOffer() deba invocarse antes de destruir el objeto manejador para garantizar que no se reciban más solicitudes mientras se libera el objeto. Pregunta Q-c77dda63f0e8798a (abierta)
Ruta de uso
El flujo habitual comprende la puesta a disposición, la respuesta asíncrona a solicitudes de lectura y la desactivación del servicio:
Inicialización: La aplicación instancia la clase derivada con el identificador de puerto adecuado y la configuración de concurrencia ([SWS_DM_02158]).
Oferta de servicio: Mediante la llamada a Offer() se habilita el reenvío de solicitudes en el DM ([SWS_DM_02152]). El método devuelve un ara::core::Result<void>.
Recuperación de datos: Si llega una solicitud de lectura, el DM invoca el método virtual puro Read() ([SWS_DM_02156]). Al hacerlo, se transfieren los metadatos de la solicitud (metaInfo) y un cancellationHandler.
Tratamiento de cancelación y retorno: El manejador puede comprobar mediante cancellationHandler.IsCanceled() si la conversación ha sido cancelada o registrar una notificación a través de cancellationHandler.SetNotifier() ([SWS_DM_02156]). El resultado se entrega de forma asíncrona mediante un ara::core::Future con un objeto ReadOutput ([SWS_DM_02156], [SWS_DM_02154]).
Persistencia: El DM toma los datos recuperados y los guarda de forma permanente en la memoria no volátil ([SWS_DM_02156]).
Baja del servicio: Antes del apagado, la aplicación invoca StopOffer() ([SWS_DM_02153]) para finalizar el reenvío a través del DM antes de que la instancia sea destruida ([SWS_DM_02151]).
Al utilizar la interfaz deben tenerse en cuenta diversas condiciones de error y precondiciones:
Errores de construcción y violaciones del modelo: Al invocar el constructor pueden producirse errores de modelado ([SWS_DM_02158]). Entre ellos se incluyen InstanceSpecifierMappingIntegrityViolation (el identificador no puede resolverse o no hace referencia a un PortPrototype), PortInterfaceMappingViolation (falta de referenciación por parte de un DiagnosticDataPortMapping), ProcessMappingViolation (no se encontró ningún proceso coincidente en el modelo), así como InstanceSpecifierAlreadyInUseViolation (el identificador ya está en uso en el proceso) ([SWS_DM_02158]).
Oferta múltiple: Si se invoca Offer() cuando el servicio ya se está ofreciendo de forma activa, la llamada falla y devuelve el código de error DiagOfferErrc::kAlreadyOffered ([SWS_DM_02152]).
Datos no disponibles en solicitudes de lectura: Dado que el DM almacena los datos en la memoria no volátil, ante una llamada a Read() debe devolverse obligatoriamente un valor ([SWS_DM_02156]). Si los datos no están disponibles en el momento de la consulta, la implementación del manejador debe completarlos con un patrón de relleno definido, como 0xFF ([SWS_DM_02156]).
Errores de aplicación y de diagnóstico: Si la provisión de datos fracasa por completo, el ara::core::Future devuelto puede contener el código de error NRC de diagnóstico correspondiente (DiagUdsNrcErrc) o un error específico de la aplicación (ApApplicationError) ([SWS_DM_02156]).
Peligro durante la destrucción: Puesto que el destructor no es seguro para subprocesos ([SWS_DM_02151]), la destrucción del objeto durante llamadas en ejecución concurrente o sin un StopOffer() previo ([SWS_DM_02153]) conduce a un comportamiento indefinido.
Esta guía ha sido generada por una IA sobre la base de la especificación AUTOSAR R25-11.
Provision of a Read ExtendedDataRecordElement. The data fetched by this method is stored in non-volatile memory by the DM and therefore always a value needs to be returned. Not available data at the time of the method call shall be filled with a filling pattern, e.g 0xFF by the implementation of this method (DiagnosticExtendedDataRecordInterface in the role provide).
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 5f6f8ec51798ProcedenciaPreguntas 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 <ExtendedDataRecordElementInterface> sirve como constructor para la creación de un DataElement para una interfaz de registro de datos ampliados a partir de un ara::core::InstanceSpecifier[SWS_DM_02158]. La declaración está ubicada en el ámbito <ExtendedDataRecord-Namespace>::<ExtendedDataRecordElementInterface> y requiere la inclusión del archivo de cabecera #include "<ExtendedDataRecordElementShortname>.h"AUTOSAR_AP_SWS_Diagnostics §8.49.2.2.1.6.
La llamada síncrona requiere dos parámetros de entrada [SWS_DM_02158]:
instanceSpec (ara::core::InstanceSpecifier): identificador de la instancia de servicio concreta en el modelo AUTOSAR.
concurrencyType (ara::diag::ConcurrencyType): determina si la interfaz se instancia de forma segura para subprocesos (kConcurrent) o no segura para subprocesos (kNotConcurrent).
Concurrencia y seguridad frente a errores
La propia función constructora está declarada como noexcept y especificada como thread-safe, así como exception safe[SWS_DM_02158]. Interpretación: dado que la función está definida como noexcept, los errores de modelado e inicialización no deberían señalizarse mediante excepciones de C++, sino a través de las violaciones definidas en el framework Adaptive [SWS_DM_02158]. Pregunta Q-9ce91764c3e8364e (abierta)
Tratamiento de errores y violaciones del modelo
En caso de configuración errónea del modelo o de identificadores no válidos, se producen violaciones específicas [SWS_DM_02158]:
InstanceSpecifierMappingIntegrityViolation: el identificador no se puede resolver en el contexto del proceso o no hace referencia a un PortPrototype.
PortInterfaceMappingViolation: un DiagnosticExtendedDataRecordInterface tipificado mediante PortPrototype no es referenciado por un DiagnosticDataPortMapping.
ProcessMappingViolation: existe un InstanceRef adecuado, pero no se ha encontrado ningún proceso modelado coincidente para el proceso en tiempo de ejecución.
InstanceSpecifierAlreadyInUseViolation: el constructor fue invocado con un InstanceSpecifier que ya está en uso en el proceso.
Esta nota de uso ha sido generada de forma automatizada sobre la base de la especificación de AUTOSAR Adaptive R25-11.
Guía del implementador pendiente (complejidad I1)
Header-Datei
#include "<ExtendedDataRecordElementShortname>.h"
Scope
class <ExtendedDataRecord-Namespace>::<ExtendedDataRecordElementInterface>
Exception-Sicherheit
exception safe
Thread-Sicherheit
thread-safe
Verletzungen (Violations)
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 DiagnosticExtendedDataRecordInterface 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
instanceSpec
The specifier of a specific instance of a service.
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: e44e4ef775f3ProcedenciaPreguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
La función Offer activa el reenvío de solicitudes de diagnóstico por parte del demonio del Diagnostic Management (DM) a la correspondiente instancia del manejador [SWS_DM_02152]. Se llama sin parámetros y devuelve de forma síncrona un ara::core::Result<void>, declarado como noexcept y especificado como exception-safe [SWS_DM_02152].
Para el uso adecuado y el tratamiento de errores rigen las siguientes prescripciones:
Valor de retorno y errores: en caso de éxito, el resultado contiene un valor vacío. Si el servicio ya se había registrado previamente para esta instancia del manejador, la llamada falla y devuelve el código de error DiagOfferErrc::kAlreadyOffered con semántica de reversión [SWS_DM_02152]. Los dominios de error relacionados definen asimismo para este estado el código de error kAlreadyOffered[SWS_DM_00514][SWS_DM_00560].
Concurrencia: a diferencia de otros manejadores de diagnóstico, que a menudo se identifican como no seguros para subprocesos (como por ejemplo en [SWS_DM_00557]), este método está definido explícitamente como thread-safe [SWS_DM_02152].
Interacción en el sistema: mientras una interfaz aún no haya sido provista por la aplicación mediante Offer, el DM reacciona, según el contexto, con valores predeterminados o sustitutivos definidos, como por ejemplo con el estado «Not ready» en consultas DoIP-PowerMode [SWS_DM_01525] o valores sustitutivos para identificadores de grupo [SWS_DM_01527]. Además, la especificación recalca que las funciones de ofrecimiento de diagnóstico son específicas de ara::diag y no deben confundirse con ara::com::OfferAUTOSAR_AP_SWS_Diagnostics §7.3.4.1.2 «Monitors».
Interpretación: el comportamiento de respuesta síncrono de Offer debería garantizar que el registro del manejador esté completamente finalizado antes de la recepción de solicitudes UDS subsiguientes. Pregunta Q-e6b2916cf4887164 (abierta)
Este texto ha sido generado por una IA a partir de la especificación AUTOSAR R25-11.
Guía del implementador pendiente (complejidad I2)
Header-Datei
#include "<ExtendedDataRecordElementShortname>.h"
Scope
class <ExtendedDataRecord-Namespace>::<ExtendedDataRecordElementInterface>
• If successful: an ara::core::Result containing a ara:: core::Result::value_type • If unsuccessful: an ara::core::Result containing an ara:: core::Result::error_type i.e. a corresponding ara:: diag::DiagOfferErrc
Fehler
Fehlercode
Beschreibung
DiagOfferErrc::kAlreadyOffered
rollback_semantics The service is already offered.
Request a governed re-review of this record. The record is not changed immediately.
Provision of a Read ExtendedDataRecordElement. The data fetched by this method is stored in non-volatile memory by the DM and therefore always a value needs to be returned. Not available data at the time of the method call shall be filled with a filling pattern, e.g 0xFF by the implementation of this method (DiagnosticExtendedDataRecordInterface in the role provide).
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: fe834745387eProcedencia
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
Uso y semántica
El método virtual puro Read es invocado por el Diagnostic Management (DM) para recuperar los datos de un ExtendedDataRecordElement desde la aplicación ([SWS_DM_02156]). Dado que el DM guarda permanentemente los datos recuperados en la memoria no volátil, el método siempre debe proporcionar un valor. Si los datos no están disponibles en el momento de la llamada, la implementación debe rellenarlos con un patrón de relleno como 0xFF ([SWS_DM_02156]).
La ejecución se realiza de forma asíncrona y devuelve un ara::core::Future que, en caso de éxito, encapsula la estructura ReadOutput ([SWS_DM_02154]). La llamada transfiere los siguientes parámetros ([SWS_DM_02156]):
metaInfo: transmite metainformación de la solicitud de diagnóstico subyacente.
cancellationHandler: permite consultar una cancelación mediante cancellationHandler.IsCanceled(), así como registrar una función de notificación a través de cancellationHandler.SetNotifier().
Manejo de errores
En caso de error, el Future proporciona un código de respuesta negativo UDS (DiagUdsNrcErrc) o un error específico de la aplicación (ApApplicationError) ([SWS_DM_02156], AUTOSAR_AP_SWS_Diagnostics §7.3.2.6.1 «NRCs created by application»). En caso de que la interfaz de servicio requerida aún no se proporcione o ya no se proporcione mediante offer(), el DM responde con NRC 0x94 (ResourceTemporarilyNotAvailable) ([SWS_DM_01257]). Además, DiagOfferErrc::kAlreadyOffered notifica si el servicio ya se está ofreciendo ([SWS_DM_02156]).
Concurrencia e interacción
El método está especificado como seguro frente a excepciones (exception safe) ([SWS_DM_02156]). La seguridad para subprocesos es condicional y definida por la implementación (implementation defined) ([SWS_DM_02156]). Esto diferencia a Read para Extended-Data-Records de las operaciones de lectura en elementos de datos regulares ([SWS_DM_00596]) o identificadores de datos ([SWS_DM_00640]), los cuales explícitamente no son seguros para subprocesos.
Este texto fue generado por un sistema de IA sobre la base de las especificaciones del release R25-11.
Guía del implementador pendiente (complejidad I1)
Header-Datei
#include "<ExtendedDataRecordElementShortname>.h"
Scope
class <ExtendedDataRecord-Namespace>::<ExtendedDataRecordElementInterface>
Exception-Sicherheit
exception safe
Thread-Sicherheit
conditional Thread safety is implementation defined
Parameter (in)
Parameter
Beschreibung
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.
• If successful: an ara::core::Future containing an ReadOutput object as per [SWS_DM_02154] • If unsuccessful: an ara::core::Future containing a corresponding DiagUdsNrcErrc or ApApplicationError.
Fehler
Fehlercode
Beschreibung
DiagOfferErrc::kAlreadyOffered
rollback_semantics The service is already offered.
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: 7a0fc3b7b561ProcedenciaPreguntas 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 StopOffer se llama sobre una instancia de la interfaz Extended-Data-Record (<ExtendedDataRecord-Namespace>::<ExtendedDataRecordElementInterface>), la cual se incluye a través de la cabecera #include "<ExtendedDataRecordElementShortname>.h"[SWS_DM_02153]. La llamada se realiza de forma síncrona, no recibe parámetros y carece de valor de retorno (void).
El propósito del método es desactivar el reenvío de mensajes de solicitud entrantes desde el Diagnostic Management (DM) al elemento Extended-Data-Record correspondiente [SWS_DM_02153]. Tras la ejecución, el DM ya no reenvía nuevas solicitudes de diagnóstico al manejador asociado.
Tratamiento de errores y concurrencia
La función está declarada con el identificador noexcept y especificada como segura frente a excepciones (exception safe) [SWS_DM_02153]. En la carga útil (payload) no se definen códigos de error específicos, valores de retorno ni notificaciones a sistemas de monitorización de errores; en caso de error no se lanzan excepciones.
En cuanto a la concurrencia, el método está clasificado expresamente como seguro para subprocesos (thread-safe) [SWS_DM_02153]. Esto representa una particularidad, ya que interfaces de StopOffer afines en ara::diag —como por ejemplo para rutinas [SWS_DM_00558], elementos de datos [SWS_DM_00617] o monitores [SWS_DM_01089]— están especificadas como no seguras para subprocesos. Se asume que las solicitudes que ya se encuentren en procesamiento probablemente se concluyan o se descarten antes de la detención definitiva. Pregunta Q-82e9d44f8ac1969d (abierta)
Interacción en Diagnostic Management
La nomenclatura sigue el patrón de servicio uniforme en AUTOSAR Adaptive, en el cual las unidades funcionales controlan su disponibilidad a través de Offer y StopOfferAUTOSAR_AP_SWS_Diagnostics §7.3.4.1.2 «Monitors». El elemento se alinea así con interfaces comparables del DM, como por ejemplo para servicios UDS genéricos [SWS_DM_00620], identificadores de datos [SWS_DM_00600], accesos de seguridad [SWS_DM_00767] o solicitudes de reinicio de la ECU [SWS_DM_01017].
Esta nota de uso fue generada por una IA sobre la base de la especificación AUTOSAR Adaptive R25-11.
Guía del implementador pendiente (complejidad I2)
Header-Datei
#include "<ExtendedDataRecordElementShortname>.h"
Scope
class <ExtendedDataRecord-Namespace>::<ExtendedDataRecordElementInterface>
Exception-Sicherheit
exception safe
Thread-Sicherheit
thread-safe
Rückgabewert
Typ
Beschreibung
None
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