Permite consultar e monitorar múltiplos eventos de diagnóstico por meio de handles de eventos e notificações de callback.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 4cd8b0cbe34dProcedênciaPerguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
Permite consultar e monitorar múltiplos eventos de diagnóstico por meio de handles de eventos e notificações de callback.
A classe permite que aplicações realizem a consulta baseada em estado e o monitoramento de múltiplos eventos de diagnóstico por meio de uma interface comum com base em handles de eventos [SWS_DM_01705]. Além do registro de callbacks de notificação, estão disponíveis métodos assíncronos para determinação de status de eventos, debouncing, contador de falhas e número de DTC [SWS_DM_01707], [SWS_DM_01709]. As instâncias não podem ser copiadas nem movidas e requerem, devido ao destrutor não thread-safe, um encerramento ordenado das operações ativas antes da liberação [SWS_DM_01706], [SWS_DM_02067].
Contexto
A classe ara::diag::MultipleEvent disponibiliza à aplicação interfaces para consultar e monitorar eventos de diagnóstico por meio de interfaces para múltiplos eventos [SWS_DM_01705]. Diferentemente de classes para eventos individuais, operações em instâncias de MultipleEvent endereçam eventos concretos por meio de um identificador do tipo EventHandleType[SWS_DM_01707], [SWS_DM_01708]. A classe atua como interface entre o componente de software aplicativo e o gerenciamento de diagnóstico (DM) do Adaptive AUTOSAR AUTOSAR AP SWS Diagnostics, p. 69. Por meio do protótipo de porta de um DiagnosticMultipleEventInterface, o objeto é vinculado à infraestrutura de diagnóstico configurada [SWS_DM_01705].
Ciclo de vida
Uma instância de MultipleEvent é criada por meio de um construtor explícito, especificando um ara::core::InstanceSpecifier[SWS_DM_01705]. O construtor é thread-safe e verifica a vinculação modelada a um protótipo de porta do tipo de interface DiagnosticMultipleEventInterface[SWS_DM_01705]. Se o mapeamento falhar ou se o mesmo identificador de instância for reutilizado dentro do processo, a plataforma relata as violações correspondentes, como InstanceSpecifierAlreadyInUseViolation ou PortInterfaceMappingViolation[SWS_DM_01705].
As operações de cópia e movimentação são totalmente impedidas para MultipleEvent: tanto o construtor de cópia e de movimentação quanto os respectivos operadores de atribuição são declarados como excluídos [SWS_DM_02067], [SWS_DM_02068], [SWS_DM_02069], [SWS_DM_02070]. O objeto possui, assim, identidade estrita e permanece no seu local de criação. O destrutor ~MultipleEvent() não está especificado como thread-safe [SWS_DM_01706]. Portanto, os componentes chamadores devem garantir, antes da destruição, que nenhuma consulta assíncrona ou notificação continue em execução por meio da instância AUTOSAR AP SWS Diagnostics, p. 78.
Caminho de utilização
Após a instanciação, a aplicação tipicamente registra uma função de callback por meio de SetEventStatusChangedNotifier para ser informada sobre alterações de estado de um evento específico (identificado via EventHandleType) [SWS_DM_01708]. Uma nova chamada desse método para o mesmo evento sobrescreve o notificador definido anteriormente [SWS_DM_01708]. Essa função de registro não é thread-safe [SWS_DM_01708].
Durante a operação contínua, informações de diagnóstico atuais podem ser consultadas de forma direcionada por handle de evento. Todas as operações de leitura relacionadas ao estado retornam seus dados de forma assíncrona em um ara::core::Future:
GetEventStatus fornece o byte de estado atual do evento como EventStatusByte[SWS_DM_01707].
GetDebouncingStatus retorna o estado de debounce (DebouncingState) do evento [SWS_DM_01710].
GetFaultDetectionCounter fornece o contador de detecção de falhas atual (FaultDetectionCounter) como um valor inteiro de 8 bits com sinal [SWS_DM_01711].
GetDTCNumber consulta o número de DTC atribuído no DTCFormatType solicitado [SWS_DM_01709].
Diagrama de sequência: Caminho de uso típico para monitoramento e consulta de eventos de diagnóstico por meio de MultipleEvent. Fontes: [SWS_DM_01705], [SWS_DM_01707], [SWS_DM_01708], [SWS_DM_01709], [SWS_DM_01710], [SWS_DM_01711]
Cenários de erro
Métodos de MultipleEvent sinalizam estados de erro por meio do tipo DiagErrc, que é transportado encapsulado em um ara::core::Result ou no ara::core::Future retornado [SWS_DM_01707], [SWS_DM_01708], [SWS_DM_01709]. Os seguintes casos de erro estão especificados:
DiagErrc::kNoSuchDTC: É relatado por GetDTCNumber se nenhum DTC correspondente estiver configurado ou atribuído para o evento de diagnóstico solicitado [SWS_DM_01709].
DiagErrc::kServiceNotAvailable: Ocorre em operações de leitura se funcionalidades básicas essenciais do Diagnostic Management não estiverem disponíveis em tempo de execução [SWS_DM_01707], [SWS_DM_01709], [SWS_DM_01710], [SWS_DM_01711].
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 DiagnosticMultipleEventPortMapping needs to be typed by a DiagnosticMultipleEventInterface. 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 DiagnosticMultipleEventInterface.
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: bd91ad4f4cb5ProcedênciaPerguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
usar
O método ara::diag::MultipleEvent::SetEventStatusChangedNotifier[SWS_DM_01708] registra uma função de callback do tipo EventStatusByteNotifier que é chamada quando o estado de um evento de diagnóstico é alterado. Por meio do parâmetro eventHandle, o evento desejado dentro da instância é identificado. O método está especificado como noexcept e retorna um ara::core::Result<void>. Uma nova chamada sobrescreve o notificador registrado anteriormente [SWS_DM_01708].
Tratamento de erros
Se ocorrer um erro durante o registro, o ara::core::Result retorna um código de erro correspondente. Está especificado o erro DiagErrc::kInvalidArgument, por exemplo no contexto de debouncing interno como kPreFailed[SWS_DM_01708].
Simultaneidade e restrições
A operação está declarada como exception safe, porém expressamente classificada como not thread-safe[SWS_DM_01708]. Chamadas simultâneas na mesma instância devem, portanto, ser sincronizadas externamente.
gemini-3.8-flash-low· 2026-10-13 · Original em alemão