Disponibiliza às aplicações metadados relativos ao transporte e ao protocolo sobre um pedido de diagnóstico em curso.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 4cec228b1decProcedênciaPerguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
Disponibiliza às aplicações metadados relativos ao transporte e ao protocolo sobre um pedido de diagnóstico em curso.
A classe ara::diag::MetaInfo disponibiliza a Adaptive Applications metainformações relevantes, tais como endereço de origem, endereço de destino e contexto de protocolo de um pedido de diagnóstico em curso (AUTOSAR_AP_SWS_Diagnostics §7.3.1.1 «MetaInfo class»). As aplicações consultam estes valores de forma síncrona através de métodos de inspeção durante uma chamada de callback iniciada pelo Diagnostic Management. O tempo de vida garantido do objeto está estritamente limitado ao tempo de execução da função de callback ativa, pelo que o armazenamento para além desta chamada conduz a comportamento indefinido ([SWS_DM_01345]).
Contexto
A classe ara::diag::MetaInfo disponibiliza um mecanismo padronizado para transmitir metainformações específicas de transporte e de protocolo do Diagnostic Management (DM) para Adaptive Applications interessadas (AUTOSAR_AP_SWS_Diagnostics §7.3.1.1 «MetaInfo class»). Na arquitetura de diagnóstico AUTOSAR Adaptive, o DM atua como intermediário entre clientes de diagnóstico externos e os clusters funcionais ou aplicações internos. Ao chegar um pedido de diagnóstico através de um protocolo de transporte UDS ou SOVD, o DM extrai dados de protocolo relevantes e encaminha-os para as interfaces da aplicação em chamadas de métodos ([SWS_DM_02094]).
Entre as tarefas essenciais de ara::diag::MetaInfo conta-se a disponibilização do contexto de chamada, bem como de pares chave-valor específicos. Através da interface, os serviços da aplicação obtêm informações sobre o endereço de origem (SA) do cliente de diagnóstico por meio da chave kSA ([SWS_DM_02094]), o endereço de destino (TA) do servidor de diagnóstico através de kTA ([SWS_DM_02095]), bem como o tipo de endereçamento UDS (físico ou funcional) através da chave kTAType ([SWS_DM_02096]). O contexto de chamada é tipificado através do tipo ara::diag::MetaInfo::Context ([SWS_DM_00977]). Possíveis contextos são a comunicação de diagnóstico regular kDiagnosticCommunication ([SWS_DM_01342]), o acesso à memória de falhas kFaultMemory ([SWS_DM_01343]), consultas iniciais DoIP como a leitura do número de identificação do veículo kDoIP ([SWS_DM_01344]), bem como pedidos de serviço no contexto SOVD kSovd ([SWS_DM_01818]).
A criação e gestão de instâncias de ara::diag::MetaInfo compete inteiramente ao Diagnostic Management. O construtor padrão sem parâmetros está explicitamente eliminado ([SWS_DM_00972]). Consequentemente, uma aplicação não pode instanciar as suas próprias instâncias diretamente nem duplicá-las através de operações de cópia, visto que tanto o construtor de cópia ([SWS_DM_00973]) como o operador de atribuição de cópia ([SWS_DM_00975]) estão eliminados. Presume-se que a instanciação ocorra internamente pelo DM antes da chamada dos callbacks da aplicação. ara::diag::MetaInfo suporta semântica de movimento: o construtor de movimento ([SWS_DM_00974]) e o operador de atribuição de movimento ([SWS_DM_00976]) estão disponíveis. A destruição ocorre através do destrutor padrão ([SWS_DM_00980]). Pergunta Q-f695f92296527ce8 (aberta)
No que diz respeito à posse e ao período de validade, aplica-se uma vinculação estrita à chamada de método ativa: para cada método direcionado à aplicação pelo DM com um objeto MetaInfo como parâmetro, o tempo de vida garantido está estritamente limitado à duração dessa chamada de método ([SWS_DM_01345], AUTOSAR_AP_SWS_Diagnostics §7.3.1.1.2 «Lifetime of MetaInfo»). Após o retorno da função, a reutilização ou o armazenamento do objeto não é permitida.
Relativamente à concorrência, os métodos de inspeção de leitura GetContext() ([SWS_DM_00979]) e GetValue() ([SWS_DM_00978]) estão especificados como seguros para threads e seguros contra exceções. Por outro lado, o operador de atribuição de movimento ([SWS_DM_00976]) e o destrutor ([SWS_DM_00980]) não são seguros para threads. Se um callback puder ser chamado concorrentemente de acordo com a configuração (AUTOSAR_AP_SWS_Diagnostics §7.3.1.2 «Concurrency of ara::diag interfaces»), o DM disponibiliza em cada chamada um objeto separado, válido para a duração da chamada.
Caminho de utilização
O percurso de utilização típico estende-se desde a receção de uma chamada de diagnóstico até à avaliação dos metadados transmitidos:
Chamada pelo DM: O Diagnostic Management chama um método de callback da aplicação, passando uma referência a ara::diag::MetaInfo ([SWS_DM_01345]).
Determinar contexto: A aplicação chama GetContext() ([SWS_DM_00979]) para verificar se a chamada ocorre, por exemplo, no âmbito de uma comunicação de diagnóstico regular (kDiagnosticCommunication, [SWS_DM_01342]) ou de um acesso à memória de falhas (kFaultMemory, [SWS_DM_01343]).
Consultar valores das chaves: Por meio de GetValue() ([SWS_DM_00978]), a aplicação consulta especificamente os atributos necessários, como o endereço do remetente com kSA ([SWS_DM_02094]), o endereço de destino com kTA ([SWS_DM_02095]) ou o modo de endereçamento com kTAType ([SWS_DM_02096]).
Processar resultado:GetValue() devolve um ara::core::Optional<ara::core::StringView> ([SWS_DM_00978]). Se o valor estiver presente, a aplicação avalia a cadeia de carateres de forma síncrona para realizar verificações de acesso ou lógica de endereçamento.
Conclusão da chamada: a aplicação conclui o processamento e retorna do método de callback, encerrando assim o tempo de vida dos metadados transmitidos ([SWS_DM_01345]).
Ao utilizar ara::diag::MetaInfo, os desenvolvedores devem observar pré- e pós-condições específicas:
Armazenamento além da duração do callback: se uma aplicação armazenar o objeto MetaInfo ou um ara::core::StringView retornado por GetValue() além do tempo de execução da função de callback, isso levará a um comportamento indefinido ([SWS_DM_01345], AUTOSAR_AP_SWS_Diagnostics §7.3.1.1.2 «Lifetime of MetaInfo»). Valores necessários de forma assíncrona ou permanente devem ser persistidos como cópias de string próprias.
Consulta de chaves não existentes: se for passada uma chave que não é disponibilizada no contexto atual, o GetValue() não lança nenhuma exceção, mas retorna um ara::core::Optional vazio ([SWS_DM_00978]). Ambos os métodos de acesso são declarados com noexcept e são seguros contra exceções ([SWS_DM_00978], [SWS_DM_00979]).
gemini-3.8-flash-low· 2026-10-13 · Original em alemão