Representa o byte de estado codificado em bits de um evento de diagnóstico e oferece métodos de verificação com segurança de tipos para bits de estado.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: c0a8a1df20deProcedênciaPerguntas em aberto (2)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
Representa o byte de estado codificado em bits de um evento de diagnóstico e oferece métodos de verificação com segurança de tipos para bits de estado.
A estrutura ara::diag::EventStatusByte encapsula o byte de estado codificado em bits de um evento de diagnóstico individual dentro da Adaptive Platform [SWS_DM_00644]. Disponibiliza métodos para a consulta com segurança de tipos de bits de estado definidos ou não definidos, bem como estados de verificação compostos [SWS_DM_01755]. Uma vez que o cálculo reflete sempre o evento específico, este não é afetado por combinações de eventos DTC de nível superior. Sendo um objeto de valor leve, todos os acessos de leitura são seguros contra exceções e legíveis concorrentemente, enquanto as atribuições modificadoras têm de ser sincronizadas externamente.
Contexto
A estrutura ara::diag::EventStatusByte encapsula o byte de estado codificado em bits de um evento de diagnóstico na memória de erros da gestão de diagnóstico da AUTOSAR Adaptive [SWS_DM_00644]. De acordo com a especificação, o EventStatusByte representa sempre de forma precisa o estado do evento individual atribuído e não é influenciado por uma eventual combinação de eventos (Event Combination) no cálculo (AUTOSAR_AP_SWS_Diagnostics p. 234). Entre os intervenientes na interação encontra-se primariamente o Diagnostic Management Core (DM), que determina o estado UDS DTC em atualizações de estado de eventos [SWS_DM_01109] e informa através de callbacks configurados [SWS_DM_01110]. Interpretação: Através do alias de tipo ara::diag::EventStatusByteNotifier[SWS_DM_02118], esta mudança de estado deverá ser comunicada a funções de aplicação registadas, para que estas possam reagir a alterações de estado. Pergunta Q-8fd114acd74569ee (aberta)
Ciclo de vida
Instâncias de ara::diag::EventStatusByte são objetos de valor leves, que estão definidos no cabeçalho ara/diag/event_types.h[SWS_DM_01753]. A criação efetua-se por cópia, movimento ou através de um construtor de template variádico, que aceita um conjunto arbitrário de EventStatusBits a definir [SWS_DM_01753]. Dado que os construtores e operadores de atribuição estão declarados como constexpr e noexcept, os objetos já podem ser construídos em tempo de compilação (AUTOSAR_AP_SWS_Diagnostics §8.47.2.1.1 «Special Member Functions»).
Relativamente à posse e ao tempo de vida, o objeto é tipicamente transmitido por valor (by-value) ou referência constante a notificadores. O construtor de movimento [SWS_DM_01751] e o construtor de cópia [SWS_DM_01752] garantem segurança contra exceções e de threads. Em contrapartida, o operador de atribuição por cópia [SWS_DM_01750] e o operador de atribuição por movimento [SWS_DM_01749] estão explicitamente classificados na especificação como não seguros para threads (not thread-safe). Múltiplos acessos de leitura concorrentes a um byte de estado existente são possíveis de forma segura para threads, contudo, atribuições modificadoras a uma instância partilhada exigem sincronização externa.
Caminho de utilização
Um caso de utilização típico consiste em verificar um byte de estado transmitido pelo Diagnostic Management quanto a determinados critérios de diagnóstico. A classe disponibiliza para o efeito métodos de avaliação especializados:
Verificação quanto a teste com falha: Com IsFailedAndTested() pode-se verificar diretamente se tanto o bit kTestFailed como kTestFailedThisOperationCycle estão definidos [SWS_DM_01757]. Interpretação: Isto sinaliza à aplicação que o evento já foi testado no ciclo de operação atual e avaliado como defeituoso. Pergunta (aberta)
Verificação quanto a teste sem falhas: O método IsPassedAndTested() devolve true desde que nem kTestFailed nem kTestNotCompletedThisOperationCycle estejam definidos [SWS_DM_01756].
Verificações genéricas de bits: por meio do template IsSet(bits...), é possível verificar se todos os bits de status transmitidos estão definidos [SWS_DM_01755]. De forma complementar, IsNotSet(bits...) verifica se nenhum dos bits transmitidos está ativo [SWS_DM_01754].
Ao redefinir erros por meio de uma operação clearDTC, o Diagnostic Management limpa todos os eventos relacionados, independentemente de combinações de eventos estarem configuradas [SWS_DM_01108]. O diagrama de sequência a seguir ilustra a interação durante uma atualização de status e a subsequente avaliação na aplicação.
Como ara::diag::EventStatusByte é um contêiner de dados elementar, todas as funções-membro são especificadas como noexcept e totalmente seguras quanto a exceções ([SWS_DM_01749] a [SWS_DM_01757]). Não são lançadas exceções C++ nem são retornados códigos de erro sob a forma de ara::core::Result.
Situações de erro na aplicação não decorrem, portanto, de códigos de erro de API, mas sim de interpretações semânticas errôneas ou falhas de sincronização. Riscos típicos incluem acessos de escrita concorrentes por meio de operadores de atribuição sem proteção por mutex ([SWS_DM_01749], [SWS_DM_01750]) ou uma suposição incorreta de que o EventStatusByte seja modificado por DTCs combinados, embora, de acordo com a especificação, ele permaneça estritamente vinculado ao evento individual (AUTOSAR_AP_SWS_Diagnostics p. 234).
Este guia baseia-se na especificação AUTOSAR Adaptive R25-11 e resume as propriedades da classe de acordo com o documento AUTOSAR_AP_SWS_Diagnostics.
gemini-3.8-flash-low· 2026-10-13 · Original em alemão