AUTOSAR_EXP_SWArchitecture
FIG-71471ed337f1ce35
480 × 457 px
1 Release(s)
Figure 9.85: Common interfaces of Diagnostic Management (1 of 2)
SHA-256 Inhalts-Fingerabdruck:
71471ed337f1ce3598a354bb5a9ebed25d60c37d52aa57022c2e84bdf3c62fa1
✦
KI-generierte Bildanalyse & technische Beschreibung
Modell: gemini-3.8-flash (via agy) · Rezept figure-description@2 · erstellt am 2026-10-07
1. Diagrammtyp & Architektur-Kontext
- Klassifikation: UML-Schnittstellen-/Komponentendiagramm (AUTOSAR Adaptive Platform Metamodell-Sicht).
- Architektonische Einordnung: AUTOSAR Adaptive Platform (Release R22-11), Functional Cluster Diagnostic Management (
ara::diag). - Technischer Zweck: Spezifikation der Interaktionsmuster zwischen einer
Adaptive Application(AA) und dem diagnostischen Subsystem (Diagnostic Management, daemon-basiertes Deployment). Es unterscheidet explizit zwischen nativen C++-Laufzeitschnittstellen (Conversation) und modellierten, service-/portbasierten Kommunikationsschnittstellen (DTCInformation).
2. Komponenten, Entitäten & Schnittstellen
Entitäten & Stereotypen
Adaptive Application(UML-Komponente):- Konsument der Diagnosedienste im User-Space.
Diagnostic Management(UML-Komponente):- Stereotyp:
«aapFunctionalCluster». - Deployment-Attribut:
daemon-based(Ausführung als separater OS-Prozess / Daemon, der UDS/DoIP-Verbindungen und Event-Memory managt und per IPC angebunden ist).
- Stereotyp:
Schnittstellen & Realisierungen
Conversation:- Stereotypen:
«aapNativeInterface, aapAPI»(direkte C++-Sprachbindung/Klassen-API unterara::diag::Conversation). - Bindung zur AA:
«use»(direkte Instanziierung/Nutzung über C++-Header und Client-Bibliothek). - Realisierung: Realisiert durch
Diagnostic Management(Dashed Line mit geschlossenem Pfeilkopf). - Operationen:
- Statische Factory-/Lookup-Methoden (unterstrichen):
GetAllConversations(),GetConversation(): Conversation,GetCurrentActiveConversations(). - Zustandsabfragen & Aktionen:
GetActivityStatus(),GetConversationIdentifier(),GetDiagnosticSecurityLevel(),GetDiagnosticSecurityLevelShortName(),GetDiagnosticSession(),GetDiagnosticSessionShortName(),ResetToDefaultSession(). - Callback-/Notifier-Registrierungen:
SetActivityNotifier(),SetDiagnosticSessionNotifier(),SetSecurityLevelNotifier().
- Statische Factory-/Lookup-Methoden (unterstrichen):
- Stereotypen:
DTCInformation:- Stereotypen:
«aapAPI, aapPortInterface»(als Port-Interface im Manifest modellierte Dienstschnittstelle). - Bindung zur AA:
«use»über«aapRequiredPort»(RPort der AA konsumiert den PPort des Diagnostic Daemon via ARA::COM / IPC). - Realisierung: Realisiert durch
Diagnostic Management. - Operationen:
- Steuer-/Löschmethoden:
Clear(),EnableControlDtc(). - Status-/Speicherabfragen:
GetControlDTCStatus(),GetCurrentStatus(),GetEventMemoryOverflow(),GetNumberOfStoredEntries(). - Asynchrone Notifier:
SetControlDtcStatusNotifier(),SetDTCStatusChangedNotifier(),SetEventMemoryOverflowNotifier(),SetNumberOfStoredEntriesNotifier(),SetSnapshotRecordUpdatedNotifier().
- Steuer-/Löschmethoden:
- Stereotypen:
3. Dynamisches Verhalten & Sequenzablauf
- Verbindungs- und Sitzungsverfolgung (
Conversation):- Die AA ruft die statische Methode
GetConversation()auf, um das spezifische Kontext-Handle für eine Diagnosesitzung (z. B. Tester-Verbindung via DoIP) zu erhalten. - Über
SetDiagnosticSessionNotifier()undSetSecurityLevelNotifier()hinterlegt die AA Callbacks. - Trigger: Schaltet der externe Diagnosetester eine Session (UDS
$10) oder schlägt die Security-Access-Routine (UDS$27) fehl bzw. gelingt, benachrichtigt der Daemon die AA asynchron über die Notifier. - Fallback: Über
ResetToDefaultSession()kann die AA aktiv das Zurücksetzen auf Session0x01auslösen (z. B. bei sicherheitskritischen Fehlern im System).
- Die AA ruft die statische Methode
- DTC- und Fehlerspeicher-Interaktion (
DTCInformation):- Polling vs. Event-driven: Neben synchronen bzw. blockierenden Get-Aufrufen (
GetCurrentStatus(),GetNumberOfStoredEntries()) registriert die AA Notifier für Zustandswechsel. - Status-Änderungen: Tritt ein Fehlerspeicherüberlauf auf oder aktualisieren sich Snapshots/Freeze-Frames (UDS
$19 04), triggert der Daemon via IPC den entsprechenden Handler (SetEventMemoryOverflowNotifier,SetSnapshotRecordUpdatedNotifier). - Löschzyklus:
Clear()stößt das Löschen der Diagnosedaten an (UDS$14); die Rückmeldung erfolgt gemäß ARA-Fehlerbehandlungsmodell asynchron viaara::core::Future/Result.
- Polling vs. Event-driven: Neben synchronen bzw. blockierenden Get-Aufrufen (
4. Normative Relevanz & Entwickler-Hinweise
- Dualität des Interfacedesigns:
Conversationist als native C++-API realisiert: Zugriff erfordert keine ARXML-Port-Modellierung, sondern das direkte Linken derara::diag-Bibliothek und Inkludieren des entsprechenden C++-Headers.DTCInformationist ein Port-Interface: Erfordert zwingend die Modellierung im Software-Component-Description-Manifest (ARXML) mit definiertemRPortPrototypean der AA sowie entsprechendem Service-Mapping zur Instanz desDiagnostic Management.
- Daemon-basiertes IPC-Overhead:
- Da
Diagnostic Managementdaemon-basiert agiert, sind Aufrufe anDTCInformationInter-Process-Calls (IPC). Zeitkritische Threads dürfen diese Methoden nicht blockierend aufrufen; Notifier laufen im Kontext der internen Dispatcher-Threads vonara::diag.
- Da
- Thread-Sicherheit & Callback-Semantik:
- Registrierte Notifier (
Set*Notifier) müssen wiedereintrittsfähig und thread-sicher ausgelegt sein. Callbacks dürfen keine langlaufenden Operationen ausführen, um den Empfangs- und Dispatch-Thread des Diagnosestacks nicht zu blockieren.
- Registrierte Notifier (
- Security & Session Management:
- Applikationen, die zugriffsgeschützte Aktionen ausführen (z. B. Aktorkontrolle, Routine Control
$31), müssen vor Ausführung überGetDiagnosticSecurityLevel()den aktuellen Sicherheitsstatus validieren oder den Status aktiv überSetSecurityLevelNotifier()nachführen.
- Applikationen, die zugriffsgeschützte Aktionen ausführen (z. B. Aktorkontrolle, Routine Control
Zugeordnete Anforderungen
Diese Angaben zeigt der Versions-Explorer.