Reporta estados de liberação relacionados ao veículo e ao sistema para avaliação de condições de diagnóstico ao Diagnostic Management.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 40db6d76454cProcedênciaPerguntas em aberto (2)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
Reporta estados de liberação relacionados ao veículo e ao sistema para avaliação de condições de diagnóstico ao Diagnostic Management.
A classe ara::diag::Condition disponibiliza a interface DiagnosticConditionInterface, com a qual aplicações adaptativas reportam condições ambientais e de liberação ao Diagnostic Management ([SWS_DM_00712]). O Diagnostic Server avalia esses estados para controlar de forma direcionada a execução de funções normatizadas de diagnóstico ou operações de exclusão no veículo (AUTOSAR_AP_SWS_Diagnostics §7.3.2.5.5 «Condition checks»). As instâncias são estritamente vinculadas a um protótipo de porta e não podem ser copiadas nem movidas. Em caso de uso concorrente, as operações de consulta e definição exigem sincronização externa, pois não são thread-safe.
Contexto
A classe ara::diag::Condition representa a interface de programação para condições de diagnóstico (DiagnosticConditionInterface) na AUTOSAR Adaptive Platform ([SWS_DM_00712]). Em sistemas de diagnóstico veicular, determinadas funções de diagnóstico ou serviços UDS só podem ser executados se o veículo estiver em um estado ambiental definido – como, por exemplo, com o veículo parado com velocidade zero (AUTOSAR_AP_SWS_Diagnostics §7.3.2.5.5 «Condition checks»). De acordo com [SWS_DM_00111], o Diagnostic Server realiza as verificações ambientais correspondentes quando a ISO 14229-1 prescreve verificações de condições específicas do serviço e, em caso de não cumprimento, responde com um Negative Response Code (NRC) configurado.
Dentro da arquitetura da aplicação, ara::diag::Condition atua como elo de ligação entre a aplicação adaptativa e o Diagnostic Management (DM). Uma aplicação instancia o objeto de condição por meio de uma porta, vinculada no modelo via DiagnosticEnableConditionPortMapping ou DiagnosticClearConditionPortMapping ([SWS_DM_00712]). Interpretação: Essa atribuição de porta define se o estado reportado serve como condição de liberação para fluxos de diagnóstico regulares ou como critério para exclusão de dados de diagnóstico. Pergunta (aberta) O objeto encapsula, assim, a transmissão de estado para o Diagnostic Server, que avalia as condições para requisições de diagnóstico recebidas ([SWS_DM_00111]).
A criação de um objeto ara::diag::Condition ocorre explicitamente pela passagem de um ara::core::InstanceSpecifier para o construtor ([SWS_DM_00712]). Esse identificador referencia o protótipo de porta modelado da aplicação. O construtor é declarado como noexcept e garante segurança contra exceções bem como thread-safety ([SWS_DM_00712]).
Quanto às relações de posse, a classe é concebida como instância única estrita: tanto o construtor de cópia ([SWS_DM_01625]) quanto o operador de atribuição por cópia ([SWS_DM_01623]) estão excluídos (=delete). Da mesma forma, o construtor de movimentação ([SWS_DM_01626]) e o operador de atribuição por movimentação ([SWS_DM_01624]) estão excluídos. Um objeto de condição não pode ser copiado nem movido, o que assegura uma associação 1:1 fixa à respectiva porta.
Durante a operação, os métodos SetCondition ([SWS_DM_00715]) e GetCondition ([SWS_DM_00714]) são especificados como não thread-safe. Em acessos paralelos a partir de múltiplas threads, a aplicação chamadora deve assegurar sincronização externa. O ciclo de vida se encerra com o destrutor ~Condition() ([SWS_DM_00713]), que é noexcept e seguro contra exceções, mas igualmente não thread-safe.
Caminho de utilização
O caminho de utilização típico compreende a inicialização, a atualização recorrente do estado, bem como a consulta da condição:
Inicialização: A aplicação instancia ara::diag::Condition informando o ara::core::InstanceSpecifier adequado ([SWS_DM_00712]) para a vinculação à configuração do modelo.
Definir estado: Se o estado determinante do veículo ou do sistema se alterar, a aplicação atualiza a condição via SetCondition(condition) ([SWS_DM_00715]). A chamada confirma a adoção com um ara::core::Result<void>.
Consultar estado: Para verificar o estado atual, a aplicação chama GetCondition() ([SWS_DM_00714]). O resultado é disponibilizado de forma assíncrona por meio de um ara::core::Future<ConditionType>.
Processamento do servidor: Interpretação: O Diagnostic Server acessa internamente o estado armazenado para verificar requisições de diagnóstico pendentes ([SWS_DM_00111]). Pergunta Q-bbf48f735ef80e33 (aberta)
Encerramento: Na finalização do componente, o objeto é liberado por meio do destrutor ([SWS_DM_00713]).
Estados de erro podem ocorrer na instanciação do objeto, bem como durante o tempo de execução:
Violações de construtor: Durante a criação ([SWS_DM_00712]), o framework valida a configuração contra o modelo de software. Violações possíveis incluem:
InstanceSpecifierMappingIntegrityViolation: O identificador não pode ser resolvido no modelo ou não referencia um PortPrototype ([SWS_DM_00712]).
PortInterfaceMappingViolation: O PortPrototype é tipificado por DiagnosticConditionInterface, mas não é referenciado nem por um DiagnosticEnableConditionPortMapping nem por um DiagnosticClearConditionPortMapping ([SWS_DM_00712]).
ProcessMappingViolation: Não existe um processo modelado compatível em tempo de execução para a referência de instância ([SWS_DM_00712]).
InstanceSpecifierAlreadyInUseViolation: O identificador já está sendo utilizado por outra instância no mesmo processo ([SWS_DM_00712]).
Falha de serviços básicos de diagnóstico:GetCondition() ([SWS_DM_00714]) pode falhar através do ara::core::Future retornado com o erro DiagErrc::kServiceNotAvailable, se funcionalidades básicas do Diagnostic Management estiverem temporariamente inacessíveis.
Armazenamento de estado livre de erros: Para SetCondition() ([SWS_DM_00715]), não estão definidos códigos de erro padronizados; a função reporta sucesso diretamente por meio de um ara::core::Result<void> vazio.
Este texto foi criado por uma IA. Todas as afirmações técnicas baseiam-se exclusivamente nas especificações AUTOSAR R25-11.
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 DiagnosticConditionInterface needs either to be referenced by a DiagnosticEnableConditionPortMapping or a DiagnosticClearConditionPortMapping. 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 DiagnosticConditionInterface.
Request a governed re-review of this record. The record is not changed immediately.
gemini-3.8-flash-low· 2026-10-13 · Original em alemão