Define os limites de tempo para o debouncing baseado em tempo de eventos de diagnóstico durante a inicialização do monitor.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: beb974918ec8ProcedênciaPerguntas em aberto (2)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
Define os limites de tempo para o debouncing baseado em tempo de eventos de diagnóstico durante a inicialização do monitor.
A estrutura de dados ara::diag::TimeBased destina-se à configuração do debouncing baseado em tempo para eventos de diagnóstico [SWS_DM_00539]. Ela transmite ao construtor de ara::diag::Monitor os valores de limiar em milissegundos após cujo decurso um evento é classificado como recuperado ou com falha. O Diagnostic Management inicia e controla o temporizador de debouncing interno com base nesses limiares mediante a receção de mensagens de estado. O armazenamento persistente do valor do contador interno ao longo de reinicializações não é suportado para métodos de debouncing baseados em tempo AUTOSAR_AP_SWS_Diagnostics §7.3.4.1.5.2 «Time-based debouncing».
Contexto
A estrutura C++ ara::diag::TimeBased define os parâmetros de configuração para o debouncing baseado em tempo (time-based debouncing) de eventos de diagnóstico no Diagnostic Management da AUTOSAR Adaptive Platform [SWS_DM_00539]. Ela encapsula as duas durações em milissegundos que são determinantes para as transições de estado de um evento de diagnóstico: failedMs como limiar de falha [SWS_DM_00629] e passedMs como limiar de recuperação [SWS_DM_00630].
No sistema global, a estrutura interliga três componentes essenciais: a função de aplicação de diagnóstico, a classe ara::diag::Monitor e o Diagnostic Management (DM) [SWS_DM_00550]. A aplicação instancia a estrutura para a definição de tempos de debouncing específicos do evento e passa-a ao construtor do monitor de diagnóstico [SWS_DM_00550]. O DM ativa, em seguida, o algoritmo de debouncing baseado em tempo para este evento [SWS_DM_00015] e calcula o bit de estado do evento kTestFailedAUTOSAR_AP_SWS_Diagnostics §7.3.4.1.5.2 «Time-based debouncing» com base no temporizador interno e nos valores de limiar configurados.
Diagrama de contexto: interação entre a aplicação, ara::diag::TimeBased, ara::diag::Monitor e o Diagnostic Management. Fontes: [SWS_DM_00539], [SWS_DM_00550], [SWS_DM_00015]
Ciclo de vida
Como um contentor de dados simples sem recursos dinâmicos, o ara::diag::TimeBased possui um ciclo de vida descomplicado [SWS_DM_00539]. A estrutura é normalmente criada localmente na pilha ou na área de memória estática pela aplicação, inicializada com os tempos-alvo e passada por valor ao construtor de ara::diag::Monitor[SWS_DM_00550] (AUTOSAR_AP_SWS_Diagnostics §8.40.1.1.2.3 «Monitor»).
Interpretação: através da passagem por valor, os parâmetros são copiados aquando da criação do monitor, permitindo que o objeto TimeBased original seja descartado em segurança após a conclusão da chamada do construtor. Pergunta (aberta) A partir desse momento, o DM gere autonomamente o estado dinâmico do temporizador de debouncing e define inicialmente o seu valor para 0 no arranque do sistema [SWS_DM_00085]. Como o TimeBased não apresenta mecanismos de sincronização internos, acessos de escrita concorrentes a uma instância partilhada devem ser excluídos pelo lado da aplicação.
Caminho de utilização
A utilização típica divide-se nos seguintes passos:
Parametrização e inicialização: a aplicação instancia ara::diag::TimeBased, define failedMs[SWS_DM_00629] bem como passedMs[SWS_DM_00630] e passa a estrutura ao construtor de ara::diag::Monitor[SWS_DM_00550].
Inicialização do temporizador: o DM inicia o serviço de debouncing e inicializa o temporizador interno do evento com o valor zero [SWS_DM_00085].
Notificação de resultados de pré-verificação: se o monitor detetar uma condição sem falhas, chama ReportMonitorAction com kPrepassed. O DM inicia o temporizador na direção do estado de recuperação [SWS_DM_00878] e atualiza continuamente o contador de deteção de falhas (Fault Detection Counter, FDC) [SWS_DM_00030].
Qualificação: assim que o temporizador atinge o limiar passedMs, o DM qualifica o evento como kFinallyHealed[SWS_DM_00878]. Se o monitor reportar kFailed em vez disso, o temporizador é diretamente definido para failedMs e o evento é processado como kFinallyDefective[SWS_DM_00033].
Congelamento e retoma: através de ReportMonitorAction(kFreezeDebouncing), o debouncing pode ser pausado se necessário [SWS_DM_00880] e retomado a partir do valor de contagem congelado mediante novas ações (kPrepassed ou kPrefailed) [SWS_DM_00038].
Aplicam-se pré e pós-condições funcionais ao utilizar o debouncing baseado em tempo:
Início condicional do temporizador: na notificação de kPrepassed, o DM só inicia o temporizador na direção kFinallyHealed se este ainda não estiver a decorrer nessa direção e o evento ainda não for considerado recuperado [SWS_DM_00878].
Qualificação abreviada de falha: se for reportado diretamente kFailed ou kPassed, o DM define imediatamente o temporizador de debouncing para o respetivo valor de limiar e conclui a classificação sem tempo de espera [SWS_DM_00033], [SWS_DM_00036].
Exclusividade do congelamento: a ação kFreezeDebouncing é suportada pelo DM exclusivamente para eventos com debouncing baseado em tempo [SWS_DM_00880].
Sem persistência do contador: o armazenamento do valor do contador de debouncing ao longo de ciclos de reset e de arranque (debounceCounterStorage) não está previsto para debouncings baseados em tempo AUTOSAR_AP_SWS_Diagnostics §7.3.4.1.5.2 «Time-based debouncing»; o temporizador é reposto a zero a cada arranque [SWS_DM_00085].
Este guia baseia-se na especificação AUTOSAR Adaptive Platform R25-11 e resume os requisitos da estrutura ara::diag::TimeBased.
Diagrama de classes UML
Hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); Klicken öffnet die jeweilige Klassenseite.
gemini-3.8-flash-low· 2026-10-13 · Original em alemão