Permite que aplicações realizem monitoramento relacionado a status, debouncing e consulta de DTC de eventos de diagnóstico.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 2f3253efefb6ProcedênciaPerguntas em aberto (2)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
Permite que aplicações realizem monitoramento relacionado a status, debouncing e consulta de DTC de eventos de diagnóstico.
A classe ara::diag::Event fornece, no AUTOSAR Adaptive, operações para monitorar eventos de diagnóstico e seus status de debouncing e de erro. As aplicações instanciam o objeto por meio de um InstanceSpecifier, registram notificações opcionais de alteração e consultam informações de diagnóstico e de DTC de forma assíncrona [SWS_DM_00647]. Como restrição central, a instância não pode ser copiada nem movida, e a maioria dos métodos de consulta exige sincronização por parte da aplicação em caso de acesso concorrente, devido à falta de thread safety [SWS_DM_00649].
Contexto
A classe ara::diag::Event serve, na AUTOSAR Adaptive Platform, como a interface primária para interação com eventos de diagnóstico. Ela atua como elo de ligação entre o software específico da aplicação e o gerenciamento central de diagnóstico. Por meio dessa interface, as aplicações monitoram o status atual de diagnóstico e de debouncing de um evento ou são informadas sobre alterações de status.
No contexto do sistema, três partes estão essencialmente envolvidas na interação:
Software aplicativo: instancia a classe, inicia consultas de status e recebe atualizações assíncronas de status.
ara::diag::Event: encapsula a porta de diagnóstico tipificada (PortPrototype de um DiagnosticEventInterface) e disponibiliza métodos de consulta entre threads e entre processos.
Diagnostic Management (DM): executa no lado do servidor a detecção de erros, mapeamentos de DTC e o comportamento de debouncing.
Diagrama de contexto: enquadramento da classe Event entre o software aplicativo e o Diagnostic Management. Fontes: [SWS_DM_00647], [SWS_DM_00653]
Ciclo de vida
A instanciação ocorre explicitamente por meio da passagem de um ara::core::InstanceSpecifier[SWS_DM_00647]. O identificador deve fazer referência a um PortPrototype tipificado por meio de um DiagnosticEventInterface. O construtor é exception-safe e thread-safe [SWS_DM_00647].
Em relação às relações de posse, ara::diag::Event é definida como uma instância única não copiável e não movível: tanto o construtor de cópia [SWS_DM_01681] quanto o construtor de movimento [SWS_DM_01682], bem como os operadores de atribuição associados ([SWS_DM_01679], [SWS_DM_01680]), foram explicitamente excluídos (=delete). Um InstanceSpecifier não pode ser instanciado mais de uma vez por processo [SWS_DM_00647].
A destruição ocorre por meio do destrutor ~Event()[SWS_DM_00648]. Diferentemente do construtor, o destrutor não é thread-safe. As demais funções-membro (com exceção de GetDTCNumber) também são especificadas como não thread-safe, razão pela qual chamadas paralelas na mesma instância devem ser sincronizadas pela aplicação. No release R25-11, a terminologia relacionada foi harmonizada de reentrancy para concurrency AUTOSAR_AP_SWS_Diagnostics §1 «Change History».
Caminho de utilização
Um caso de utilização típico divide-se nas seguintes chamadas:
Inicialização: a aplicação cria a instância por meio de seu InstanceSpecifier[SWS_DM_00647]. A vinculação deve estabelecer a conexão com o daemon de diagnóstico no momento da inicialização. Pergunta Q-78e4462a0d147cfb (aberta)
Registrar notificador: para monitoramento, registra-se opcionalmente um callback por meio de SetEventStatusChangedNotifier[SWS_DM_00650]. Uma chamada subsequente sobrescreve o notificador definido anteriormente.
Consultas de estado: durante a operação, a aplicação consulta dados de diagnóstico de forma assíncrona por meio de ara::core::Future:
GetEventStatus() determina o byte de status atual [SWS_DM_00649].
GetDebouncingStatus() retorna o estado atual de debouncing [SWS_DM_00654].
GetFaultDetectionCounter() consulta o contador de detecção de falhas (FDC) [SWS_DM_00656].
GetTestComplete() verifica se o teste foi concluído (o FDC atinge -128 ou 127) [SWS_DM_00655].
GetDTCNumber(dtcFormat) fornece o número de DTC correspondente no formato selecionado e é implementado de forma thread-safe [SWS_DM_00653].
Register a notifier function which is called if a diagnostic event is changed. A consecutive call of this method will overwrite the previous registered notifier.
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 DiagnosticEventPortMapping needs to be typed by a DiagnosticEventInterface. 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 DiagnosticEventInterface.
Request a governed re-review of this record. The record is not changed immediately.
Register a notifier function which is called if a diagnostic event is changed. A consecutive call of this method will overwrite the previous registered notifier.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 07bc53ae711cProcedênciaPerguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
Por meio do método [SWS_DM_00650] da classe ara::diag::Event (arquivo de cabeçalho ara/diag/event.h), uma Adaptive Application registra uma função de callback do tipo EventStatusByteNotifier. Após o registro bem-sucedido, o Diagnostic Management (DM) chama este notificador a cada alteração de status do respectivo evento de diagnóstico [SWS_DM_01029]. Uma chamada consecutiva do método sobrescreve o notificador registrado anteriormente [SWS_DM_00650]. A função possui a assinatura ara::core::Result<void> SetEventStatusChangedNotifier(EventStatusByteNotifier notifier) noexcept e retorna um resultado vazio em caso de sucesso [SWS_DM_00650].
Se ocorrer um erro durante o processamento, o método retorna o código de erro DiagErrc::kInvalidArgument[SWS_DM_00650]. Embora a interface seja declarada como segura quanto a exceções (exception safe), ela é explicitamente considerada não thread-safe (not thread-safe) [SWS_DM_00650]. Interpretação: Acessos concorrentes à mesma instância devem ser sincronizados no lado da aplicação; presumivelmente, o registro deve ser realizado de preferência durante a fase de inicialização da aplicação. Pergunta Q-d8ed099eaed6b197 (aberta)
gemini-3.8-flash-low· 2026-10-13 · Original em alemão