DEENESPTFRRUARHIKOZHNL

struct ara::diag::TimeBased

[SWS_DM_00539] Upstream: RS_Diag_04225

struct TimeBased {...};

Represents the parameters for time-based debouncing.

Header-Datei#include "ara/diag/monitor_types.h"
Forwarding-Header#include "ara/diag/diag_fwd.h"
Scopenamespace ara::diag

User GuideKI-GENERIERT

Definiert die Zeitgrenzen für die zeitbasierte Entprellung von Diagnoseereignissen bei der Monitor-Initialisierung.
KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: beb974918ec8 Herkunft Offene Fragen (2)
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Definiert die Zeitgrenzen für die zeitbasierte Entprellung von Diagnoseereignissen bei der Monitor-Initialisierung.

Die Datenstruktur ara::diag::TimeBased dient der Konfiguration der zeitbasierten Entprellung für Diagnoseereignisse [SWS_DM_00539]. Sie übergibt dem Konstruktor von ara::diag::Monitor die Schwellwerte in Millisekunden, nach deren Ablauf ein Ereignis als geheilt oder fehlerhaft eingestuft wird. Das Diagnostic Management startet und steuert den internen Entprell-Timer anhand dieser Schwellen bei eingehenden Statusmeldungen. Eine persistente Speicherung des internen Zählerwerts über Neustarts hinweg wird für zeitbasierte Entprellverfahren nicht unterstützt AUTOSAR_AP_SWS_Diagnostics §7.3.4.1.5.2 „Time-based debouncing“.

Kontext

Die C++-Struktur ara::diag::TimeBased definiert die Konfigurationsparameter für die zeitbasierte Entprellung (time-based debouncing) von Diagnoseereignissen im Diagnostic Management der AUTOSAR Adaptive Platform [SWS_DM_00539]. Sie kapselt die beiden Zeitdauern in Millisekunden, die für die Statusübergänge eines Diagnoseereignisses maßgeblich sind: failedMs als Fehlerschwelle [SWS_DM_00629] und passedMs als Heilungsschwelle [SWS_DM_00630].

Im Gesamtsystem verbindet die Struktur drei wesentliche Komponenten: die diagnostizierende Anwendungsfunktion, die Klasse ara::diag::Monitor sowie das Diagnostic Management (DM) [SWS_DM_00550]. Die Anwendung instanziiert die Struktur zur Festlegung ereignisspezifischer Entprellzeiten und übergibt sie an den Konstruktor des Diagnosemonitors [SWS_DM_00550]. Das DM aktiviert daraufhin den zeitbasierten Entprellalgorithmus für dieses Ereignis [SWS_DM_00015] und berechnet auf Basis des internen Timers und der konfigurierten Schwellwerte das Ereignisstatusbit kTestFailed AUTOSAR_AP_SWS_Diagnostics §7.3.4.1.5.2 „Time-based debouncing“.

TimeBasedContext Anwendung Anwendung TimeBased TimeBased Anwendung->TimeBased erzeugt Monitor Monitor Anwendung->Monitor instanziiert TimeBased->Monitor konfiguriert DM DM Monitor->DM meldet Aktionen

Kontextdiagramm: Zusammenspiel von Anwendung, ara::diag::TimeBased, ara::diag::Monitor und dem Diagnostic Management. Quellen: [SWS_DM_00539], [SWS_DM_00550], [SWS_DM_00015]

Lebenszyklus

Als einfacher Datenbehälter ohne dynamische Ressourcen besitzt ara::diag::TimeBased einen unkomplizierten Lebenszyklus [SWS_DM_00539]. Die Struktur wird üblicherweise lokal auf dem Stack oder im statischen Speicherbereich durch die Anwendung erzeugt, mit den Zielzeiten initialisiert und als Wert an den Konstruktor von ara::diag::Monitor übergeben [SWS_DM_00550] (AUTOSAR_AP_SWS_Diagnostics §8.40.1.1.2.3 „Monitor“).

Interpretation: Durch die Übergabe per Wert werden die Parameter bei der Monitorerzeugung kopiert, sodass das ursprüngliche TimeBased-Objekt nach Abschluss des Konstruktoraufrufs sicher verworfen werden kann. Frage (offen) Das DM verwaltet den dynamischen Zustand des Entprell-Timers ab diesem Zeitpunkt eigenständig und setzt dessen Wert beim Systemstart initial auf 0 [SWS_DM_00085]. Da TimeBased keine internen Synchronisationsmechanismen aufweist, sind nebenläufige Schreibzugriffe auf eine gemeinsame Instanz anwendungsseitig auszuschließen.

Nutzungspfad

Die typische Nutzung gliedert sich in folgende Schritte:

  1. Parametrierung und Initialisierung: Die Anwendung instanziiert ara::diag::TimeBased, setzt failedMs [SWS_DM_00629] sowie passedMs [SWS_DM_00630] und übergibt die Struktur dem Konstruktor von ara::diag::Monitor [SWS_DM_00550].
  2. Timer-Initialisierung: Das DM startet den Entprellungsdienst und initialisiert den ereignisinternen Timer mit dem Wert null [SWS_DM_00085].
  3. Meldung von Vorprüfergebnissen: Erkennt der Monitor eine fehlerfreie Bedingung, ruft er ReportMonitorAction mit kPrepassed auf. Das DM startet den Timer in Richtung des Heilungszustands [SWS_DM_00878] und aktualisiert fortlaufend den Fehlertoleranzzähler (Fault Detection Counter, FDC) [SWS_DM_00030].
  4. Qualifizierung: Erreicht der Timer die Schwelle passedMs, qualifiziert das DM das Ereignis als kFinallyHealed [SWS_DM_00878]. Meldet der Monitor stattdessen kFailed, wird der Timer direkt auf failedMs gesetzt und das Ereignis als kFinallyDefective verarbeitet [SWS_DM_00033].
  5. Einfrieren und Fortsetzen: Über ReportMonitorAction(kFreezeDebouncing) kann die Entprellung bei Bedarf angehalten [SWS_DM_00880] und bei neuen Aktionen (kPrepassed oder kPrefailed) ab dem gefrorenen Zählerstand fortgesetzt werden [SWS_DM_00038].
Ablauf der zeitbasierten EntprellungAnwendungMonitorDMMonitor(specifier, notifier, timeBased)Aktivierung Entprellung & Timer-Init (0)ReportMonitorAction(kPrepassed)Start Timer Richtung kFinallyHealedTimer erreicht passedMsEvent als kFinallyHealed qualifiziertoptDebounce einfrierenReportMonitorAction(kFreezeDebouncing)Timer einfrierenReportMonitorAction(kPrepassed)Timer mit gefrorenem Stand fortsetzenoptDirekter FehlerReportMonitorAction(kFailed)Timer auf failedMs setzen & kFinallyDefective

Sequenzdiagramm: Zusammenspiel von Anwendung, Monitor und DM während der zeitbasierten Entprellung. Quellen: [SWS_DM_00550], [SWS_DM_00085], [SWS_DM_00878], [SWS_DM_00033], [SWS_DM_00880], [SWS_DM_00038]

Fehlerszenarien

Bei der Verwendung zeitbasierter Entprellung gelten funktionale Vor- und Nachbedingungen:

  • Bedingter Timer-Start: Bei Meldung von kPrepassed startet das DM den Timer nur dann in Richtung kFinallyHealed, wenn er nicht bereits in diese Richtung läuft und das Ereignis nicht bereits als geheilt gilt [SWS_DM_00878].
  • Verkürzte Fehlerqualifizierung: Wird direkt kFailed oder kPassed gemeldet, setzt das DM den Entprell-Timer unverzüglich auf den jeweiligen Schwellwert und schließt die Einstufung ohne Wartezeit ab [SWS_DM_00033], [SWS_DM_00036].
  • Exklusivität des Einfrierens: Die Aktion kFreezeDebouncing wird vom DM ausschließlich für Ereignisse mit zeitbasierter Entprellung unterstützt [SWS_DM_00880].
  • Keine Persistierung des Zählers: Eine Speicherung des Entprell-Zählerstands über Reset- und Start-up-Zyklen hinweg (debounceCounterStorage) ist für zeitbasierte Entprellungen nicht vorgesehen AUTOSAR_AP_SWS_Diagnostics §7.3.4.1.5.2 „Time-based debouncing“; der Timer wird bei jedem Start-up auf null gesetzt [SWS_DM_00085].

Dieser Leitfaden basiert auf der Spezifikation AUTOSAR Adaptive Platform R25-11 und fasst die Anforderungen an die Struktur ara::diag::TimeBased zusammen.

UML-Klassendiagramm

Hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); Klicken öffnet die jeweilige Klassenseite.

G nara__diag__TimeBased382 «struct» TimeBased + failedMs + passedMs

Konstanten

failedMs variable

time until failed in (ms)

std::uint32_t failedMs;
passedMs variable

time until passed in (ms)

std::uint32_t passedMs;

Dokumentation der Konstanten / Variablen

variable failedMs [SWS_DM_00629] Upstream: RS_Diag_04225

std::uint32_t failedMs;

time until failed in (ms)

Header-Datei#include "ara/diag/monitor_types.h"
Scopestruct ara::diag::TimeBased
SymbolfailedMs
Typstd::uint32_t

Request a governed re-review of this record. The record is not changed immediately.

Record
AUTOSAR/AP/record/SWS_DM_00629
Status
valid/unmigrated
Version
AUTOSAR/AP/record/SWS_DM_00629@rel:R25-11#8525d65b
Content hash
8525d65b
Source
https://www.autosar.org/fileadmin/standards/R25-11/AP/AUTOSAR_AP_SWS_Diagnostics.pdf#nameddest=SWS_DM_00629
Status: valid/unmigrated Version: rel:R25-11#b234c6d7 Versionshistorie & Revisions (1 transition, 7 revision)
Current State
valid/unmigrated
Reason
mechanically backfilled by migriere_status_backfill.py -- no per-field curation history exists yet for this record
Campaign
2026-08-13-status-backfill
Active Version
AUTOSAR/AP/record/SWS_DM_00629@rel:R25-11#b234c6d7
Point-in-Time History:
Recorded Revisions (7):
  • R25-11rel:R25-11#8525d65b2026-09-30
  • R20-11rel:R20-11#447b3a6c2026-10-14
  • R21-11rel:R21-11#deb8168b2026-10-14
  • R22-11rel:R22-11#c639f78a2026-10-14
  • R23-11rel:R23-11#bbcf28342026-10-14
  • R24-11rel:R24-11#b234c6d72026-10-14
  • R25-11rel:R25-11#b234c6d72026-10-14 active
DateActorTransitionReason / RationaleCampaign
2026-08-13toolnone → valid/unmigratedmechanically backfilled by migriere_status_backfill.py -- no per-field curation history exists yet for this record2026-08-13-status-backfill

variable passedMs [SWS_DM_00630] Upstream: RS_Diag_04225

std::uint32_t passedMs;

time until passed in (ms)

Header-Datei#include "ara/diag/monitor_types.h"
Scopestruct ara::diag::TimeBased
SymbolpassedMs
Typstd::uint32_t

Request a governed re-review of this record. The record is not changed immediately.

Record
AUTOSAR/AP/record/SWS_DM_00630
Status
valid/unmigrated
Version
AUTOSAR/AP/record/SWS_DM_00630@rel:R25-11#7291fe1e
Content hash
7291fe1e
Source
https://www.autosar.org/fileadmin/standards/R25-11/AP/AUTOSAR_AP_SWS_Diagnostics.pdf#nameddest=SWS_DM_00630
Status: valid/unmigrated Version: rel:R25-11#6fd0c00c Versionshistorie & Revisions (1 transition, 7 revision)
Current State
valid/unmigrated
Reason
mechanically backfilled by migriere_status_backfill.py -- no per-field curation history exists yet for this record
Campaign
2026-08-13-status-backfill
Active Version
AUTOSAR/AP/record/SWS_DM_00630@rel:R25-11#6fd0c00c
Point-in-Time History:
Recorded Revisions (7):
  • R25-11rel:R25-11#7291fe1e2026-09-30
  • R20-11rel:R20-11#3097b5012026-10-14
  • R21-11rel:R21-11#5ff8b1572026-10-14
  • R22-11rel:R22-11#5132f5a52026-10-14
  • R23-11rel:R23-11#6fd0c00c2026-10-14
  • R24-11rel:R24-11#6fd0c00c2026-10-14
  • R25-11rel:R25-11#6fd0c00c2026-10-14 active
DateActorTransitionReason / RationaleCampaign
2026-08-13toolnone → valid/unmigratedmechanically backfilled by migriere_status_backfill.py -- no per-field curation history exists yet for this record2026-08-13-status-backfill