Serve para a execução de monitoramentos de diagnóstico e a notificação de status para o Diagnostic Management.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 49f63d89472dProcedênciaPerguntas em aberto (2)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
Serve para a execução de monitoramentos de diagnóstico e a notificação de status para o Diagnostic Management.
A classe ara::diag::Monitor disponibiliza a interface funcional para a implementação de funções de monitoramento de diagnóstico e sua vinculação ao Diagnostic Management [SWS_DM_00548]. Após a vinculação a um protótipo de porta, a aplicação sinaliza sua prontidão para recepção por meio de Offer() e transmite resultados de teste continuamente via ReportMonitorAction()[SWS_DM_01088], [SWS_DM_00543]. As instâncias de monitor não podem ser copiadas nem movidas e todas as operações são especificadas como não sendo thread-safe [SWS_DM_01685].
Contexto
A classe ara::diag::Monitor representa a interface C++ padronizada para a realização de funções de monitoramento de diagnóstico (monitores) dentro da Adaptive Platform [SWS_DM_00548]. Um monitor é responsável pela detecção e notificação de sintomas de falha em componentes de software funcionais e transmite seus estados para o módulo Diagnostic Management (DM).
A vinculação ao modelo de sistema AUTOSAR ocorre por meio de um ara::core::InstanceSpecifier, o qual deve obrigatoriamente apontar para um PortPrototype tipificado por um DiagnosticMonitorInterface[SWS_DM_00548]. Três componentes participam essencialmente do processamento global: o monitoramento de função específico da aplicação (Application), a instância de interface local de ara::diag::Monitor bem como o módulo de plataforma Diagnostic Management (DM), que recebe eventos e solicita reinicializações.
A instanciação de um monitor orienta-se pelo mecanismo de debouncing definido no modelo. Para isso, a Adaptive Platform disponibiliza quatro variantes de construtor:
Debouncing interno ao monitor com registro de um callback de InitMonitorNotifier e um ponteiro de função para consulta do Fault Detection Counter (std::function<std::int8_t()> getFaultDetectionCounter) [SWS_DM_00548].
Debouncing baseado em contador com a passagem de parâmetros do tipo CounterBased[SWS_DM_00549].
Debouncing baseado em tempo com a passagem de parâmetros do tipo TimeBased[SWS_DM_00550].
Monitoramento direto sem algoritmo de debouncing [SWS_DM_01972].
As instâncias de ara::diag::Monitor são fixadas ao seu local de memória original: o construtor de cópia [SWS_DM_01685] e o operador de atribuição por cópia [SWS_DM_01683] estão excluídos (delete). Da mesma forma, o construtor de movimento [SWS_DM_01686] e a atribuição por movimento [SWS_DM_01684] estão explicitamente excluídos.
Após a criação, a instância encontra-se no estado Não oferecido (Unoffered). Somente através da chamada explícita de Offer() a aplicação declara sua prontidão para receber e processar callouts de diagnóstico como initMonitor[SWS_DM_01088]. Com StopOffer(), o encaminhamento de solicitações de diagnóstico a partir do DM é desativado novamente [SWS_DM_01089]. Após a chamada de StopOffer(), presume-se que uma retomada posterior da operação seja possível por meio de uma nova chamada de Offer(). Pergunta Q-136565db34b28ae6 (aberta) Antes da destruição final do objeto monitor, presume-se que a aplicação deva executar StopOffer() para impedir de forma segura notificações pendentes.
Diagrama de estados: estados do ciclo de vida e transições na disponibilização de serviços de ara::diag::Monitor. Fontes: [SWS_DM_01088], [SWS_DM_01089]
Caminho de utilização
O fluxo regular para o monitoramento de um caminho de falha compreende os seguintes passos:
Instanciação: a aplicação cria a instância de Monitor indicando InstanceSpecifier, o callback initMonitor bem como parâmetros de debouncing eventualmente necessários ou o callback de FDC [SWS_DM_00548], [SWS_DM_00549].
Oferta de serviço: por meio de Offer(), o monitor registra-se junto ao DM como pronto para recepção [SWS_DM_01088].
Inicialização: o Diagnostic Management informa a aplicação sobre eventos de inicialização pendentes por meio do callback InitMonitorNotifier registrado [SWS_DM_01088].
Notificação cíclica/baseada em eventos: durante a operação funcional, a aplicação reporta continuamente o status do caminho de monitoramento via ReportMonitorAction(action)[SWS_DM_00543]. A ação passada contém resultados de teste (qualificados/não qualificados) ou comandos para controle de debouncing ou pré-armazenamento (prestorage). Caso tenha sido configurado debouncing interno ao monitor, o DM consulta o valor de contenção de falhas via callback registrado quando necessário [SWS_DM_00548].
Encerramento do serviço: antes do desligamento ou na desativação da função de diagnóstico, a aplicação chama StopOffer() para impedir mensagens recebidas do DM [SWS_DM_01089].
Situações de erro manifestam-se em ara::diag::Monitor em dois níveis distintos: como código de erro via ara::core::Result ou como violações em tempo de execução (violations) do framework.
O método Offer() retorna um ara::core::Result<void>. Se o monitor já estiver no estado oferecido, a chamada falha e retorna o código de erro DiagOfferErrc::kAlreadyOffered[SWS_DM_01088].
Erros graves de configuração ou de chamada acionam notificações de violação definidas:
InstanceSpecifierMappingIntegrityViolation: o InstanceSpecifier não pode ser resolvido no contexto de modelo do processo ou não aponta para um PortPrototype[SWS_DM_00548].
PortInterfaceMappingViolation: A porta referenciada não é tipificada por um DiagnosticMonitorInterface[SWS_DM_00548].
ProcessMappingViolation: não existe um processo modelado adequado para a instância de tempo de execução [SWS_DM_00548].
InstanceSpecifierAlreadyInUseViolation: o InstanceSpecifier já está sendo utilizado por outro monitor dentro do processo atual [SWS_DM_00548].
InvalidDebouncingAlgorithmViolation: o mecanismo de debouncing selecionado no construtor difere do método de debouncing modelado nas descrições de diagnóstico DEXT [SWS_DM_00548], [SWS_DM_00549], [SWS_DM_00550].
UnexpectedMonitorActionHandlingViolation: é passado ao método ReportMonitorAction() um valor de ação que não é suportado para o algoritmo de debouncing configurado [SWS_DM_00543].
Este guia baseia-se na especificação AUTOSAR Adaptive Platform Release 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 DiagnosticMonitorPortMapping needs to be typed by a DiagnosticMonitorInterface. 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.
InvalidDebouncin- Mismatching Debounce Algorithm in DEXT i.e gAlgorithmViola- DiagnosticEventToDebounceAlgorithmMapping shall be tion mapped to DiagnosticEventToDebounceAlgorithmMapping. DiagnosticDebounceAlgorithmProps which aggregates DiagEventDebounceMonitorInternal or DiagnosticEventToDebounceAlgorithmMapping shall not exist.
Parameter (in)
Parameter
Beschreibung
specifier
InstanceSpecifier to a PortPrototype of a DiagnosticMonitorInterface.
initMonitor
Possibility to register an InitMonitor callback
getFaultDetectionCounter
Possibility to register a function to get the current FDC for this event.
Request a governed re-review of this record. The record is not changed immediately.
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 DiagnosticMonitorPortMapping needs to be typed by a DiagnosticMonitorInterface. 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. InvalidDebouncin- Mismatching Debounce Algorithm in DEXT i.e gAlgorithmViola- DiagnosticEventToDebounceAlgorithmMapping shall be tion mapped to DiagnosticEventToDebounceAlgorithmMapping. DiagnosticDebounceAlgorithmProps which aggregates DiagEventDebounceCounterBased.
Parameter (in)
Parameter
Beschreibung
specifier
InstanceSpecifier to a PortPrototype of a DiagnosticMonitorInterface.
initMonitor
Possibility to register an InitMonitor callback
defaultValues
Default values for CounterBased debouncing
Request a governed re-review of this record. The record is not changed immediately.
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 DiagnosticMonitorPortMapping needs to be typed by a DiagnosticMonitorInterface. 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. InvalidDebouncin- Mismatching Debounce Algorithm in DEXT i.e gAlgorithmViola- DiagnosticEventToDebounceAlgorithmMapping shall be tion mapped to DiagnosticEventToDebounceAlgorithmMapping. DiagnosticDebounceAlgorithmProps which aggregates DiagEventDebounceTimeBased.
Parameter (in)
Parameter
Beschreibung
specifier
InstanceSpecifier to a PortPrototype of a DiagnosticMonitorInterface.
initMonitor
Possibility to register an InitMonitor callback
defaultValues
Default values for TimeBased debouncing
Request a governed re-review of this record. The record is not changed immediately.
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 DiagnosticMonitorPortMapping needs to be typed by a DiagnosticMonitorInterface. 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. InvalidDebouncin- Mismatching Debounce Algorithm in DEXT i.e gAlgorithmViola- DiagnosticEventToDebounceAlgorithmMapping shall be tion mapped to DiagnosticEventToDebounceAlgorithmMapping. DiagnosticDebounceAlgorithmProps which aggregates DiagEventDebounceMonitorInternal or DiagnosticEventToDebounceAlgorithmMapping shall not exist.
Parameter (in)
Parameter
Beschreibung
specifier
InstanceSpecifier to a PortPrototype of a DiagnosticMonitorInterface.
initMonitor
Possibility to register an InitMonitor callback
Request a governed re-review of this record. The record is not changed immediately.
With the Offer the application states that it is ready to receive and process initMonitor callouts.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 2e8d03769af8Procedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
Com a chamada do método Offer, uma Adaptive Application sinaliza ao Diagnostic Management (DM) que está pronta para a receção e o processamento de callouts initMonitor[SWS_DM_01088]. O método da classe ara::diag::Monitor não possui parâmetros e devolve ara::core::Result<void>[SWS_DM_01088]. Embora o nome tenha sido escolhido com base em ara::com, trata-se de uma implementação específica do componente de diagnóstico e não deve ser confundido com serviços de comunicação AUTOSAR_AP_SWS_Diagnostics §7.3.4.1.2 «Monitors».
Em caso de erro, o método devolve o código de erro DiagOfferErrc::kAlreadyOffered se o serviço já tiver sido oferecido anteriormente [SWS_DM_01088]. Isto corresponde ao enumerador para sinalização de ofertas já ativas dentro dos domínios de erro de diagnóstico [SWS_DM_00514]. Em caso de chamada bem-sucedida, o objeto de retorno não contém qualquer erro.
No que diz respeito à concorrência, o método está especificado como not thread-safe, pelo que chamadas paralelas na mesma instância têm de ser sincronizadas pelo lado da aplicação [SWS_DM_01088]. Além disso, a função é segura contra exceções (exception safe) e está declarada com noexcept[SWS_DM_01088].
Function to report the status information being relevant for error monitoring paths.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 8334da733b55Procedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
O método síncrono ReportMonitorAction da classe ara::diag::Monitor reporta informações de status e de monitoramento de uma verificação de diagnóstico ao monitoramento de erros do daemon do Diagnostic Management [SWS_DM_00543]. Através do parâmetro action do tipo MonitorAction, a aplicação passa um resultado de teste qualificado ou não qualificado, ou comandos de controle para controlar o debouncing bem como para disparar um pré-armazenamento (prestorage) [SWS_DM_00543]. A função não fornece valor de retorno (void) e é declarada como noexcept bem como segura contra exceções [SWS_DM_00543].
Se ReportMonitorAction for chamado com um valor para action que não seja suportado pelo método de debouncing configurado do evento de diagnóstico, o Diagnostic Manager dispara uma violação de processo [SWS_DM_01988]. Além disso, o sistema define códigos de erro internos no tipo DiagErrc, por exemplo kReportIgnored para situações em que as condições de habilitação não são atendidas [SWS_DM_00514].
Para a integração e a concorrência, aplicam-se as seguintes condições de contorno:
Segurança de threads: A função não é segura para threads (not thread-safe) [SWS_DM_00543]. Chamadas paralelas na mesma instância de monitor devem ser sincronizadas pelo chamador (ao contrário de MultipleMonitor, onde a segurança de threads é configurável através do construtor [SWS_DM_01698]).
Condições de habilitação: Se uma Enable Condition associada ao evento de diagnóstico não for atendida, a chamada de ReportMonitorAction é ignorada SWS Diagnostics §7.3.4.1.4 «EnableConditions».
Debouncing: Ações reportadas como kPrefailed alteram o contador interno de debouncing de acordo com a largura de passo configurada [SWS_DM_00875], até que, ao atingir o valor limite, o erro seja classificado como kFinallyDefective[SWS_DM_00024].
Esta nota de uso foi gerada automaticamente com base na especificação AUTOSAR AP R25-11.
UnexpectedMoni- ara::diag::Monitor::ReportMonitorAction is called with torActionHan- a parameter action value that is not supported by the used dlingViolation debouncing method.
Parameter (in)
Parameter
Beschreibung
action
Contains either the last (un-)qualified test result of the diagnostic monitor or commands to control the debouncing or to force a prestorage.
Rückgabewert
Typ
Beschreibung
None
Request a governed re-review of this record. The record is not changed immediately.
This StopOffer will disable the forwarding of request messages from DM.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: e17ef3becf1dProcedênciaPerguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
O método ara::diag::Monitor::StopOffer desativa o encaminhamento de requisições e mensagens do Diagnostic Management (DM) para a respectiva instância de monitor ([SWS_DM_01089]). A chamada é executada de forma síncrona, não requer parâmetros e não possui valor de retorno ([SWS_DM_01089]). A operação serve como contrapartida a Offer e permite que uma Adaptive Application suspenda o monitoramento ativo, caso a parte do sistema correspondente temporariamente não precise ser monitorada (AUTOSAR_AP_SWS_Diagnostics §7.3.4.1.2 «Monitors»). Embora o identificador seja baseado nas interfaces de ara::com, a especificação enfatiza expressamente que se trata de uma implementação independente de ara::diag::Monitor (AUTOSAR_AP_SWS_Diagnostics §7.3.4.1.2 «Monitors»).
No que diz respeito ao tratamento de erros, a função é declarada como noexcept e considerada segura contra exceções (exception safe); não existem códigos de erro específicos ou mensagens de erro ([SWS_DM_01089]). Como restrição essencial, StopOffer é classificado como não seguro para threads (not thread-safe) ([SWS_DM_01089]). Interpretação: em caso de acessos concorrentes ao mesmo objeto monitor, o próprio chamador provavelmente é responsável por uma sincronização adequada. Pergunta Q-3ead3049b4378083 (aberta)
No sistema como um todo, StopOffer se enquadra em um padrão uniforme do módulo de diagnóstico: interfaces análogas para desativar o encaminhamento de mensagens de DM são encontradas, entre outros, em GenericRoutine ([SWS_DM_00558]), CommunicationControl ([SWS_DM_00810]), EcuResetRequest ([SWS_DM_01017]) bem como Authentication ([SWS_DM_01131]).
Esta nota de uso foi gerada de forma automatizada e baseia-se nas especificações do AUTOSAR Adaptive R25-11.
gemini-3.8-flash-low· 2026-10-13 · Original em alemão