Proporciona a las aplicaciones metadatos relativos al transporte y al protocolo sobre una solicitud de diagnóstico en curso.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 4cec228b1decProcedenciaPreguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
Proporciona a las aplicaciones metadatos relativos al transporte y al protocolo sobre una solicitud de diagnóstico en curso.
La clase ara::diag::MetaInfo proporciona a las Adaptive Applications metainformación relevante, como la dirección de origen, la dirección de destino y el contexto de protocolo de una solicitud de diagnóstico en curso (AUTOSAR_AP_SWS_Diagnostics §7.3.1.1 «MetaInfo class»). Las aplicaciones consultan estos valores de forma síncrona a través de métodos de inspección durante una llamada de callback iniciada por Diagnostic Management. La vida útil garantizada del objeto está estrictamente limitada al tiempo de ejecución de la función de callback activa, por lo que su almacenamiento más allá de esta llamada conduce a un comportamiento indefinido ([SWS_DM_01345]).
Contexto
La clase ara::diag::MetaInfo proporciona un mecanismo estandarizado para transmitir metainformación específica del transporte y del protocolo desde Diagnostic Management (DM) a las Adaptive Applications interesadas (AUTOSAR_AP_SWS_Diagnostics §7.3.1.1 «MetaInfo class»). En la arquitectura de diagnóstico de AUTOSAR Adaptive, el DM actúa como intermediario entre los clientes de diagnóstico externos y los clusters funcionales o aplicaciones internas. Si llega una solicitud de diagnóstico a través de un protocolo de transporte UDS o SOVD, el DM extrae los datos de protocolo relevantes y los transmite a las interfaces de la aplicación en las llamadas a métodos ([SWS_DM_02094]).
Entre las tareas centrales de ara::diag::MetaInfo se encuentra proporcionar el contexto de llamada así como pares clave-valor específicos. A través de la interfaz, los servicios de la aplicación obtienen información sobre la dirección de origen (SA) del cliente de diagnóstico mediante la clave kSA ([SWS_DM_02094]), la dirección de destino (TA) del servidor de diagnóstico a través de kTA ([SWS_DM_02095]), así como el tipo de direccionamiento UDS (físico o funcional) a través de la clave kTAType ([SWS_DM_02096]). El contexto de llamada se tipifica mediante el tipo ara::diag::MetaInfo::Context ([SWS_DM_00977]). Los posibles contextos son la comunicación de diagnóstico regular kDiagnosticCommunication ([SWS_DM_01342]), el acceso a la memoria de fallos kFaultMemory ([SWS_DM_01343]), consultas iniciales de DoIP como la lectura del número de chasis kDoIP ([SWS_DM_01344]), así como solicitudes de servicio en el contexto de SOVD kSovd ([SWS_DM_01818]).
La creación y gestión de instancias de ara::diag::MetaInfo corresponde por completo a Diagnostic Management. El constructor predeterminado sin parámetros está explícitamente eliminado ([SWS_DM_00972]). Por consiguiente, una aplicación no puede instanciar instancias propias directamente ni duplicarlas mediante operaciones de copia, ya que tanto el constructor de copia ([SWS_DM_00973]) como el operador de asignación por copia ([SWS_DM_00975]) están eliminados. Presumiblemente, la instanciación se lleva a cabo internamente por el DM antes de llamar a los callbacks de la aplicación. Pregunta Q-f695f92296527ce8 (abierta)ara::diag::MetaInfo admite semántica de movimiento: el constructor de movimiento ([SWS_DM_00974]) y el operador de asignación por movimiento ([SWS_DM_00976]) están disponibles. La destrucción se realiza a través del destructor predeterminado ([SWS_DM_00980]).
En cuanto a las relaciones de propiedad y el periodo de validez, rige una estricta vinculación a la llamada al método activa: para cada método dirigido por el DM a la aplicación con un objeto MetaInfo como parámetro, la vida útil garantizada está estrictamente limitada a la duración de dicha llamada al método ([SWS_DM_01345], AUTOSAR_AP_SWS_Diagnostics §7.3.1.1.2 «Lifetime of MetaInfo»). Tras el retorno de la función, la reutilización o almacenamiento del objeto no es admisible.
En relación con la concurrencia, los métodos de inspección de lectura GetContext() ([SWS_DM_00979]) y GetValue() ([SWS_DM_00978]) están especificados como seguros para subprocesos y seguros contra excepciones. Por el contrario, el operador de asignación por movimiento ([SWS_DM_00976]) y el destructor ([SWS_DM_00980]) no son seguros para subprocesos. Si según la configuración un callback puede llamarse de forma concurrente (AUTOSAR_AP_SWS_Diagnostics §7.3.1.2 «Concurrency of ara::diag interfaces»), el DM proporciona en cada llamada un objeto independiente, válido durante la duración de la llamada.
Ruta de uso
La ruta de uso típica abarca desde la recepción de una llamada de diagnóstico hasta la evaluación de los metadatos transferidos:
Llamada por parte del DM: Diagnostic Management llama a un método de callback de la aplicación y transfiere una referencia a ara::diag::MetaInfo ([SWS_DM_01345]).
Determinar contexto: la aplicación llama a GetContext() ([SWS_DM_00979]) para determinar si la llamada se realiza, por ejemplo, en el marco de una comunicación de diagnóstico regular (kDiagnosticCommunication, [SWS_DM_01342]) o de un acceso a la memoria de fallos (kFaultMemory, [SWS_DM_01343]).
Consultar valores de clave: mediante GetValue() ([SWS_DM_00978]), la aplicación consulta de forma orientada los atributos requeridos, como por ejemplo la dirección del remitente con kSA ([SWS_DM_02094]), la dirección de destino con kTA ([SWS_DM_02095]) o el modo de direccionamiento con kTAType ([SWS_DM_02096]).
Procesar resultado:GetValue() devuelve un ara::core::Optional<ara::core::StringView> ([SWS_DM_00978]). Si el valor está presente, la aplicación evalúa la cadena de caracteres de forma síncrona para llevar a cabo comprobaciones de acceso o lógica de direccionamiento.
Finalización de la llamada: la aplicación concluye el procesamiento y retorna del método de callback, con lo que finaliza la vida útil de los metadatos transferidos ([SWS_DM_01345]).
Al utilizar ara::diag::MetaInfo, los desarrolladores deben tener en cuenta precondiciones y poscondiciones específicas:
Almacenamiento más allá de la duración del callback: si una aplicación almacena el objeto MetaInfo o un ara::core::StringView devuelto por GetValue() más allá del tiempo de ejecución de la función de callback, esto conduce a un comportamiento indefinido ([SWS_DM_01345], AUTOSAR_AP_SWS_Diagnostics §7.3.1.1.2 «Lifetime of MetaInfo»). Los valores que se necesiten de forma asíncrona o permanente deben persistirse como copias de cadenas propias.
Consulta de claves no existentes: si se pasa una clave que no se proporciona en el contexto actual, GetValue() no lanza ninguna excepción, sino que devuelve un ara::core::Optional vacío ([SWS_DM_00978]). Ambos métodos de acceso están declarados con noexcept y son seguros contra excepciones ([SWS_DM_00978], [SWS_DM_00979]).
Validez específica del contexto: en el contexto kDoIP ([SWS_DM_01344]), según la especificación ninguna de las claves estándar es aplicable (AUTOSAR_AP_SWS_Diagnostics §7.3.1.1.1 «Provision of MetaInfo»). La llamada a GetValue() con claves UDS como kSA o kTA no devuelve ningún resultado en este contexto.
Esta guía ha sido creada de forma automatizada por una IA sobre la base de la especificación AUTOSAR R25-11.
gemini-3.8-flash-low· 2026-10-13 · Original en alemán