AUTOSAR_AP_EXP_SWArchitecture
FIG-c69726a1fa043ef7
480 × 457 px
1 Release(s)
Figure 9.104: Common interfaces of Diagnostic Management (1 of 3)
SHA-256 Inhalts-Fingerabdruck:
c69726a1fa043ef750df3df2cd0183e211fcea626e0ff1a5f391baa9410625e1
✦
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
- Diagrammtyp: UML-Klassendiagramm / Komponenten-Schnittstellendiagramm (AUTOSAR Adaptive Platform Architecture Model).
- Architektur-Kontext:
- Funktionale Einordnung: Dargestellt ist die Client-Server-Interaktion zwischen einer
Adaptive Application(Client) und dem Functional ClusterDiagnostic Management(DM, Server / Bereitsteller) innerhalb der AUTOSAR Adaptive Platform (AP). - Technischer Zweck: Spezifikation der allgemeinen standardisierten Diagnoseschnittstellen (Common Interfaces) für Session-/Security-Kontextverwaltung (
Conversation) sowie Fehlerspeicher- und DTC-Statusabfragen/-steuerung (DTCInformation). Die Architektur zeigt die Trennung zwischen rein nativen C++-APIs («aapNativeInterface») und modellierten port-basierten Schnittstellen («aapPortInterface»).
- Funktionale Einordnung: Dargestellt ist die Client-Server-Interaktion zwischen einer
2. Komponenten, Entitäten & Schnittstellen
Entitäten & Komponenten
Adaptive Application(UML-Komponente): Konsumierender Prozess im POSIX-Anwenderraum, der Diagnoseinformationen abfragt oder steuert.Diagnostic Management(Stereotyp:«aapFunctionalCluster», Annotation:daemon-based): Plattform-Dienst/Daemon, der Diagnoseprotokoll-Stacks (DoIP, UDS via ISO 14229) und den Fehlerspeicher verwaltet.
Schnittstellen & Methoden
Conversation(Stereotyp:«aapNativeInterface,aapAPI»):- Natur: Direkte native C++-Laufzeit-API (ohne Notwendigkeit eines modellierten Software-Ports im ARXML-Manifest).
- Statische Factory-/Lookup-Methoden (unterstrichen):
GetAllConversations()GetConversation(): ConversationGetCurrentActiveConversations()
- Instanz-Methoden (Status & Kontext):
GetActivityStatus()GetConversationIdentifier()GetDiagnosticSecurityLevel()/GetDiagnosticSecurityLevelShortName()GetDiagnosticSession()/GetDiagnosticSessionShortName()ResetToDefaultSession()
- Instanz-Methoden (Asynchrone Notifier / Observer):
SetActivityNotifier()SetDiagnosticSessionNotifier()SetSecurityLevelNotifier()
DTCInformation(Stereotyp:«aapAPI,aapPortInterface»):- Natur: Formale Port-Schnittstelle. Wird im Software-Design als R-Port der Applikation und P-Port des DM-Clusters instanziiert.
- Methoden (Steuerung & Abfrage):
Clear(): Löschen von DTCs / Fehlerspeicherbereichen.EnableControlDtc()/GetControlDTCStatus(): UDS Service 0x85 (ControlDTCSetting) Handhabung.GetCurrentStatus(): Abfrage des UDS-DTC-Statusbytes.GetEventMemoryOverflow(): Prüfung auf Pufferüberlauf im Event-Memory.GetNumberOfStoredEntries(): Anzahl persistierter Einträge.
- Methoden (Asynchrone Notifier / Callbacks):
SetControlDtcStatusNotifier()SetDTCStatusChangedNotifier()SetEventMemoryOverflowNotifier()SetNumberOfStoredEntriesNotifier()SetSnapshotRecordUpdatedNotifier()
Beziehungen & Abhängigkeiten
Adaptive Application$\xrightarrow{\text{«use»}}$Conversation: Direkte Abhängigkeit auf die native C++-Header-/Bibliotheksschnittstelle (ara::diag).Adaptive Application$\xrightarrow{\text{«use» «aapRequiredPort»}}$DTCInformation: Port-basierte Dienstbindung (ara::com- bzw. IPC-vermittelte Bindung via Required Port).Diagnostic Management$\xhookrightarrow{\quad}$Conversation&DTCInformation: Interface Realization; der Daemon implementiert beide Abstraktionen und stellt sie prozessübergreifend bereit.
3. Dynamisches Verhalten & Sequenzablauf
- Konversations-Initialisierung & Sitzungsüberwachung (
Conversation):- Die Applikation bindet sich über statische Methoden (
GetConversation()) an eine aktive Diagnoseverbindung (Tester-Session). - Registrierung von Observer-Callbacks (
SetDiagnosticSessionNotifier,SetSecurityLevelNotifier,SetActivityNotifier). - Bei UDS-Zustandsänderungen durch externe Diagnose-Tester (z. B. 0x10 DiagnosticSessionControl oder 0x27 SecurityAccess) feuert der Daemon asynchron die registrierten Callbacks der Applikation, um interne Sicherheitsfunktionen oder Betriebszustände freizuschalten.
ResetToDefaultSession()erlaubt es der Applikation, aktiv das Zurücksetzen in die Standarddiagnosesitzung anzufordern (z. B. bei Timeout oder sicherheitskritischem Systemzustand).
- Die Applikation bindet sich über statische Methoden (
- Fehlerspeicher-Abfrage und -Manipulation (
DTCInformation):- Synchroner oder Future-basierter Aufruf von
GetCurrentStatus()/GetNumberOfStoredEntries()zur zyklischen oder ereignisorientierten Fehlerprüfung. - Asynchrone Benachrichtigung bei Statuswechseln via
SetDTCStatusChangedNotifieroder bei Pufferüberlauf viaSetEventMemoryOverflowNotifier. - Nach Aufruf von
Clear()stößt der DM-Daemon das Zurücksetzen der DTC-Statusmasken und das Löschen der Snapshot- bzw. Extended-Data-Records im Event-Memory an.
- Synchroner oder Future-basierter Aufruf von
4. Normative Relevanz & Entwickler-Hinweise
- Schnittstellen-Paradigma (
«aapNativeInterface»vs.«aapPortInterface»):Conversationist API-zentriert: Im Manifest (ARXML) wird kein Port modelliert. Entwickler binden die Klassen direkt aus dem Namespaceara::diag::Conversationein.DTCInformationist modelliert: Erfordert die Definition einesRPortPrototypemit passendemPortInterfaceim Application Manifest und Bindung an den DM-Dienst via Service Instance Manifest.
- Threading- und Reentrancy-Modell:
- Die Notifier-Registrierungen (
Set...Notifier()) registrierenstd::function-Callables. Diese werden typischerweise im Thread-Kontext der zugrundeliegenden Middleware (ara::com/ Daemon-Dispatcher-Worker-Thread) ausgeführt. Handler müssen thread-sicher, reentrant und nicht-blockierend ausgelegt sein.
- Die Notifier-Registrierungen (
- Return-Types & Fehlerbehandlung (
ara::core::Result/ara::core::Future):- Methoden mit Latenz (z. B.
Clear(), IPC-Abfragen zum Daemon) sind standardmäßig asynchron (ara::core::Future) oder liefernara::core::Result<T>mit spezifischenDiagErrc-Fehlercodes (z. B. Busy, NotAllowedInCurrentSession/SecurityLevel).
- Methoden mit Latenz (z. B.
- Daemon-Abhängigkeit:
- Da
Diagnostic Managementalsdaemon-basedannotiert ist, schlagen IPC-Aufrufe während des Bootvorgangs oder bei Daemon-Neustarts mit IPC-Verbindungsfehlern fehl. Ein robuster Startup-Handshake (Warten auf Cluster-Verfügbarkeit via Execution Management / Health Monitoring) ist zwingend erforderlich.
- Da
Zugeordnete Anforderungen
Diese Angaben zeigt der Versions-Explorer.