Permite a definição e a consulta de múltiplas condições de diagnóstico através de uma interface compartilhada com base em handles.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 2f3f3f7d9426ProcedênciaPerguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
Permite a definição e a consulta de múltiplas condições de diagnóstico através de uma interface compartilhada com base em handles.
A classe ara::diag::MultipleCondition destina-se à consulta e atualização agrupadas de múltiplas condições de diagnóstico através de uma interface de porta compartilhada com base em handles numéricos ([SWS_DM_01730]). As aplicações instanciam o objeto através de um InstanceSpecifier e controlam condições de maneira direcionada mediante SetCondition e GetCondition ([SWS_DM_01729]). Como restrição essencial, a classe não pode ser copiada nem movida, e seu destrutor não é thread-safe. Além disso, todas as condições endereçadas devem estar configuradas de maneira consistente no modelo através de mapeamentos de porta, a fim de evitar erros de inicialização e de tempo de execução.
Contexto
A classe ara::diag::MultipleCondition permite que uma aplicação adaptativa faça o gerenciamento e a modificação agrupados de múltiplas condições de diagnóstico através de uma interface compartilhada ([SWS_DM_01730]). Funcional e semanticamente, ela oferece as mesmas capacidades que as condições individuais, mas expande as operações para incluir o endereçamento direcionado através de um handle de identificação (AUTOSAR_AP_SWS_Diagnostics p. 237). Cada condição de diagnóstico gerenciada (DiagnosticCondition) requer, no modelo, uma vinculação através de um DiagnosticMultipleConditionPortMapping com uma porta tipada de maneira adequada ([SWS_DM_01727], AUTOSAR_AP_SWS_Diagnostics p. 237). O endereçamento ocorre através do tipo ConditionHandleType; se não houver um valor explícito de overrideId, o Diagnostic Management (DM) atribui valores numéricos crescentes a partir de 0x010000 na ordem alfabética dos nomes curtos ([SWS_DM_01735]).
Uma instância é criada por meio do construtor MultipleCondition mediante a passagem de um ara::core::InstanceSpecifier ([SWS_DM_01727]). A criação é thread-safe e declarada como noexcept ([SWS_DM_01727]). O objeto possui uma vinculação estrita ao seu escopo local: tanto as operações de cópia quanto as de movimentação foram excluídas; o construtor de cópia ([SWS_DM_02072]), o construtor de movimentação ([SWS_DM_02071]), o operador de atribuição por cópia ([SWS_DM_02073]) e o operador de atribuição por movimentação ([SWS_DM_02074]) não estão disponíveis (=delete).
O destrutor ~MultipleCondition() é especificado explicitamente como não sendo thread-safe ([SWS_DM_01737]). A aplicação deve, portanto, assegurar que todos os acessos concorrentes ao objeto estejam concluídos antes da destruição. Para chamadas regulares de métodos, aplica-se a segurança de thread condicional ([SWS_DM_01728], [SWS_DM_01729]). Interpretação: como a assinatura do construtor segundo [SWS_DM_01727] não aceita nenhum parâmetro explícito de concorrência, o ConcurrencyType exigido provavelmente deve ser determinado por meio do modelo de porta subjacente no manifesto. Pergunta Q-f29def512a68aae9 (aberta)
Caminho de utilização
O fluxo típico na interação com condições de diagnóstico compreende as seguintes etapas:
Inicialização: a aplicação instancia a classe indicando a porta de destino ([SWS_DM_01727]).
Definir estado: com SetCondition(conditionHandle, condition), a aplicação transmite uma alteração de estado para a condição especificada e verifica o ara::core::Result<void> resultante ([SWS_DM_01729]).
Consultar estado: por meio de GetCondition(conditionHandle), o estado atual da condição endereçada é solicitado assincronamente como ara::core::Future<ConditionType> ([SWS_DM_01728]).
Liberação de recursos: ao sair do escopo, o destrutor desmantela a interface de forma ordenada ([SWS_DM_01737]).
Na utilização, deve-se distinguir entre erros de construção decorrentes da modelagem e erros funcionais em tempo de execução:
Violações de construção ([SWS_DM_01727]):
Se a resolução do InstanceSpecifier falhar ou se ele não apontar para um PortPrototype, uma InstanceSpecifierMappingIntegrityViolation será reportada. Uma PortInterfaceMappingViolation ocorre quando a porta não está tipificada para um DiagnosticMultipleConditionInterface. Se faltar ao processo a contraparte modelada, surge uma ProcessMappingViolation. Se o mesmo InstanceSpecifier for instanciado múltiplas vezes no processo, isso resulta em uma InstanceSpecifierAlreadyInUseViolation.
Erros em tempo de execução nas chamadas de método:
Se um parâmetro inadmissível ou um handle inválido for passado para SetCondition ([SWS_DM_01729]) ou GetCondition ([SWS_DM_01728]), os métodos retornam o erro DiagErrc::kInvalidArgument. Se a funcionalidade básica do Diagnostic Management estiver temporariamente inacessível, GetCondition responde à chamada com DiagErrc::kServiceNotAvailable ([SWS_DM_01728]).
Este guia baseia-se exclusivamente nas especificações da AUTOSAR Adaptive Platform 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 referenced by a pingViolation DiagnosticMultipleConditionPortMapping needs to be typed by a DiagnosticMultipleConditionInterface. 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 DiagnosticMultipleConditionInterface
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