Permite que aplicações adaptativas consultem e monitorem, orientadas a eventos, indicadores de diagnóstico veiculares.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 7d81598b6e77ProcedênciaPerguntas em aberto (2)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
Permite que aplicações adaptativas consultem e monitorem, orientadas a eventos, indicadores de diagnóstico veiculares.
A interface serve para a consulta estruturada e o monitoramento de indicadores de diagnóstico veiculares dentro da AUTOSAR Adaptive Platform. As aplicações instanciam o objeto por meio de um identificador modelado e podem consultar o status atual por meio de um método de consulta assíncrono [SWS_DM_00744]. Além disso, é possível registrar uma função de callback definida pelo usuário, que recebe atualizações de status diretamente quando ocorrem alterações [SWS_DM_00745]. Como restrição essencial, a instância está estritamente vinculada a uma porta, não é copiável nem movível e exige sincronização contra chamadas concorrentes durante o registro e a destruição.
Contexto
A classe ara::diag::Indicator atua no módulo da Adaptive Platform diag como representação central do DiagnosticIndicatorInterface[SWS_DM_00742]. Sua função principal consiste em permitir que as aplicações acessem indicadores de diagnóstico, como luzes de advertência ou indicadores funcionais (por exemplo, uma Malfunction Indicator Light, MIL).
Três componentes estão essencialmente envolvidos na interação: uma aplicação adaptativa utilizadora (como um painel de instrumentos ou um serviço HMI), a instância de ara::diag::Indicator como endpoint de interface local e o Diagnostic Management Daemon (DM). Este último processa os eventos de diagnóstico de todo o veículo e os estados de DTC UDS, disponibilizando a funcionalidade de diagnóstico subjacente [SWS_DM_00744].
Diagrama de contexto: Parceiros de interação da interface ara::diag::Indicator entre a lógica da aplicação e o Diagnostic Management Daemon. Fontes: [SWS_DM_00742], [SWS_DM_00744].
Ciclo de vida
A criação de um objeto ara::diag::Indicator ocorre explicitamente através da passagem de um ara::core::InstanceSpecifier para o construtor [SWS_DM_00742]. Esse identificador vincula o objeto a um PortPrototype definido no modelo de design, o qual deve ser obrigatoriamente tipado como DiagnosticIndicatorInterface[SWS_DM_00742].
No que diz respeito à posse e à semântica de objetos, ara::diag::Indicator foi concebido como uma instância única estrita: não é permitido copiar nem mover. Em conformidade, o construtor de cópia [SWS_DM_01629], o construtor de movimentação [SWS_DM_01630], o operador de atribuição por cópia [SWS_DM_01627] e o operador de atribuição por movimentação [SWS_DM_01628] estão declarados como eliminados (=delete).
O ciclo de vida termina com a chamada do destrutor ~Indicator()[SWS_DM_00743]. Embora o construtor e a consulta de estado estejam especificados como thread-safe [SWS_DM_00742], [SWS_DM_00744], o destrutor não é thread-safe [SWS_DM_00743]. A aplicação chamadora deve, portanto, garantir que nenhuma chamada de método ou execução de notificador ocorra de forma concorrente durante a destruição.
Caminho de utilização
Após a inicialização bem-sucedida, a classe suporta dois modelos complementares de utilização para determinar o estado do indicador:
Notificação orientada a eventos: Através de SetNotifier(), pode ser registada uma função de callback do tipo IndicatorStatusTypeNotifier[SWS_DM_00745], [SWS_DM_02129]. Assim que o estado do indicador se altera, o ambiente de execução chama este notificador. Uma chamada subsequente de SetNotifier() sobrescreve o manipulador registado anteriormente [SWS_DM_00745]. Como SetNotifier() não é thread-safe, o registo tem de ser sincronizado externamente [SWS_DM_00745]. Presumivelmente, o notificador é executado no contexto de uma thread de segundo plano do Diagnostic Management, razão pela qual não devem ocorrer bloqueios prolongados no seu interior. Pergunta Q-c27898ecefb8006f (aberta)
Consulta pontual: Através de GetIndicatorState(), o estado atual pode ser consultado ativamente a qualquer momento [SWS_DM_00744]. O método é thread-safe e retorna um ara::core::Future<IndicatorStatusType>[SWS_DM_00744]. Interpretação: A disponibilização assíncrona através de um Future indica que a consulta é delegada internamente por meio de comunicação entre processos (IPC) ao Diagnostic Management Daemon central. Pergunta Q-61a650bd8ab7fc04 (aberta)
Podem ocorrer condições de erro tanto na fase de inicialização quanto em tempo de execução:
Violações de configuração durante a construção: O construtor reporta inconsistências de modelação sob a forma de violações definidas [SWS_DM_00742]. Entre estas incluem-se InstanceSpecifierMappingIntegrityViolation (o identificador não pode ser resolvido ou não remete para uma porta), PortInterfaceMappingViolation (a porta referenciada não é tipada por um DiagnosticIndicatorInterface), ProcessMappingViolation (não existe nenhum processo modelado correspondente à instância em tempo de execução), bem como InstanceSpecifierAlreadyInUseViolation (o identificador já está a ser utilizado no processo por outra instância) [SWS_DM_00742].
Falha de funções de diagnóstico: Se a execução de GetIndicatorState() falhar, o código de erro DiagErrc::kServiceNotAvailable é transportado através do Future retornado [SWS_DM_00744]. Isto ocorre se funções essenciais do Diagnostic Management não estiverem disponíveis no momento da chamada [SWS_DM_00744].
Acessos concorrentes: Dado que SetNotifier()[SWS_DM_00745] e o destrutor [SWS_DM_00743] não são thread-safe, um acesso concorrente desprotegido resulta num comportamento indefinido em tempo de execução.
Este guia baseia-se na especificação AUTOSAR Adaptive Platform R25-11 e foi elaborado por um assistente de curadoria por IA.
Register a notifier function which is called if the indicator is updated. 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 DiagnosticIndicatorPortMapping needs to be typed by a DiagnosticIndicatorInterface. 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 DiagnosticIndicatorInterface.
Request a governed re-review of this record. The record is not changed immediately.
Register a notifier function which is called if the indicator is updated. 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: f2935619a27aProcedênciaPerguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
A função SetNotifier da classe ara::diag::Indicator ([SWS_DM_00745], declarada no cabeçalho ara/diag/indicator.h) registra uma função de notificação específica da aplicação do tipo IndicatorStatusTypeNotifier. Essa função de callback é chamada pelo Diagnostic Management assim que houver uma atualização de status do indicador de aviso de diagnóstico ([SWS_DM_00745]).
Comportamento em caso de chamadas múltiplas
Uma chamada repetida de SetNotifier na mesma instância sobrescreve completamente o notificador registrado anteriormente ([SWS_DM_00745], [SWS_DM_01359]). Esse comportamento de sobrescrita corresponde ao padrão geral no Diagnostic Management, conforme estabelecido igualmente para ara::diag::OperationCycle::SetNotifier ([SWS_DM_00755]) e ara::diag::CancellationHandler::SetNotifier ([SWS_DM_00615]).
Tratamento de erros e simultaneidade
Tratamento de erros: O método é especificado como noexcept e seguro quanto a exceções (exception safe) ([SWS_DM_00745]). Como nenhum erro padronizado está definido, como interpretação, o ara::core::Result<void> retornado provavelmente sempre encapsula uma chamada bem-sucedida. Pergunta Q-dcde3dd383fbfb4a (aberta)
Simultaneidade: A interface é expressamente declarada como não thread-safe (not thread-safe) ([SWS_DM_00745]). Chamadas simultâneas na mesma instância devem ser sincronizadas pela aplicação.
Contexto de diagnóstico
As atualizações de status do indicador estão associadas ao bit 7 de status do DTC (WarningIndicatorRequested) ([SWS_DM_00224], AUTOSAR_AP_SWS_Diagnostics p. 260). O bit é ativado na confirmação de uma falha ([SWS_DM_01266]) e redefinido quando os limiares de debouncing ou cura forem atingidos ao final de um ciclo de operação ([SWS_DM_00224], [SWS_DM_01582]).
Esta nota de utilização foi gerada de forma automatizada com base na especificação AUTOSAR Adaptive R25-11.
gemini-3.8-flash-low· 2026-10-13 · Original em alemão