DEENESPTFRRUARHIKOZHNL
AUTOSAR_SWS_Diagnostics FIG-552618e746e1de10 924 × 1260 px 1 Release(s)

Figure 8.2: UDS Transport Request Processing 130 of 312 — AUTOSAR CONFIDENTIAL —

SHA-256 Inhalts-Fingerabdruck: 552618e746e1de1039df4b75db4287b3bc098574208b8d688d375c380321585b
✦ KI-generierte Bildanalyse & technische Beschreibung Modell: gemini-3.8-flash (via agy) · Rezept figure-series@1 · erstellt am 2026-10-08

1. Diagrammtyp & Architektur-Kontext

UML-Sequenzdiagramm zur Interaktion im AUTOSAR Adaptive Platform Diagnostic Management (DM). Das Diagramm stellt den Nachrichten- und Kontrollfluss bei der Verarbeitung einer eingehenden UDS-Transportanfrage dar, die von einem externen Diagnose-Client/Tester empfangen und über den UdsTransportProtocolHandler an die generische Instanz des Diagnostic Management (DM_Generic) weitergeleitet und verarbeitet wird.

2. Komponenten, Entitäten & Schnittstellen

Beteiligte Lebenslinien und Entitäten:

  • Diagnostic Client/Tester: Externer Akteur (Tester/Client), der UDS-Anfragen sendet und Fehlermeldungen empfängt.
  • Instance1: UdsTransportProtocolHandlerImpl: Implementierung des UDS-Transportprotokoll-Handlers im Diagnostic Stack.
  • DM Instance: DM_Generic: Generische Instanz des Diagnostic Managers; implementiert das Interface/die Rolle UdsTransportProtocolMgr (dokumentiert via Notiz „Implements UdsTransportProtocolMgr“).
  • Request: UdsMessage: Dynamisch erzeugte Entität zur Repräsentation der UDS-Nachricht im Speicher.

Schnittstellen und Operationen:

  • UDS Request(): Eingehende Diagnoseanfrage vom Tester an den Handler.
  • IndicateMessage(UdsMessage::Address, UdsMessage::Address, UdsMessage::TargetAddressType, GlobalChannelIdentifier, std::size_t, std::shared_ptr<const UdsMessage::MetaInfoMap>): std::pair<IndicationResultType, UdsMessagePtr>: Aufruf vom Handler an DM_Generic zur Ankündigung der Nachricht inklusive Adressierungsdaten, Kanalidentifikation, Längenangabe und Metainformationen.
  • GetPayload(): udstransport::ByteVector&: Abfrage des Payload-Puffers auf der erzeugten Request: UdsMessage.
  • NotifyMessageFailure(UdsMessageConstPtr): Benachrichtigung des DM bei fehlgeschlagener Nachrichtenverarbeitung.
  • AddMetaInfo(std::shared_ptr<const MetaInfoMap>): Zuweisung von Meta-Informationen an die Nachrichteninstanz.
  • HandleMessage(UdsMessagePtr): Übergabe der vollständig assemblierten UDS-Nachricht an DM_Generic zur diagnostischen Abarbeitung.
  • Uds Transport Protocol specific Error(): Protokollspezifische Fehlerrückmeldung an den Tester.

3. Dynamisches Verhalten & Sequenzablauf

Der Ablauf gliedert sich in folgende Phasen:

  1. Nachrichtenempfang und Indikation:
    • Der Tester sendet UDS Request() an Instance1: UdsTransportProtocolHandlerImpl.
    • Der Handler ruft synchron IndicateMessage(...) an DM Instance: DM_Generic auf.
  2. Alternative: Verwerfen vs. Akzeptieren (alt):
    • Zweig [UDS Request NOT Accepted by DM]: DM_Generic antwortet mit std::pair(kIndicationOccupied, UdsMessagePtr(nullptr)) oder std::pair(kIndicationOverflow, UdsMessagePtr(nullptr)). Optional (opt) sendet der Handler Uds Transport Protocol specific Error() an den Client.
    • Zweig [UDS Request Accepted by DM]: DM_Generic instanziiert die Lebenslinie Request: UdsMessage via Konstruktoraufruf UdsMessage() und liefert std::pair(kIndicationOK, UdsMessagePtr) zurück. Der Handler fordert via GetPayload(): udstransport::ByteVector& den Nutzdatenvektor an.
  3. Alternative: Verarbeitungsstatus (alt):
    • Zweig [Processing UDS Request NOT OK]: Der Handler meldet das Scheitern an den DM mittels NotifyMessageFailure(UdsMessageConstPtr) und sendet Uds Transport Protocol specific Error() an den Tester.
    • Zweig [Processing UDS Request OK]: Der Handler führt interne Operationen durch: Fill Payload From received UDS Request(), Discard Bytes from UDS Request, which do not fit into provided message(), Prepare/Create MetaInfo(). Anschließend ruft er AddMetaInfo(std::shared_ptr<const MetaInfoMap>) auf Request: UdsMessage auf und übergibt die Nachricht mit HandleMessage(UdsMessagePtr) an DM_Generic. Die Lebenslinie Request: UdsMessage endet/wird freigegeben.
  4. Folgeinteraktion (ref):
    • Verweis auf den nachgelagerten Ablauf UDS Pos/Neg Response Transmission.

4. Normative Relevanz & Entwickler-Hinweise

  • Der UDS-Transportprotokoll-Handler alloziiert den Nachrichtenpuffer nicht autonom, sondern delegiert die Pufferbereitstellung über IndicateMessage zwingend an den UdsTransportProtocolMgr (DM_Generic).
  • Pufferüberlauf (kIndicationOverflow) und Ressourcenbelegung (kIndicationOccupied) führen zu einem Nullpointer (UdsMessagePtr(nullptr)) und bedingen eine protokollspezifische Fehlerbehandlung (z. B. DoIP-/ISO-TP-Fehlerframes).
  • Bei kIndicationOK muss der Handler den Payload-Vektor über GetPayload() abrufen und befüllen; überzählige Bytes, die die Puffergröße übersteigen, müssen abgeschnitten/verworfen werden (Discard Bytes...).
  • Scheitert der Empfang oder die Formatierung im Transport-Handler vor Abschluss, ist zwingend NotifyMessageFailure(UdsMessageConstPtr) an DM_Generic abzusetzen, um bereitgestellte Ressourcen freizugeben.
  • Nach erfolgreichem Zusammenbau und Anfügen von Metadaten (AddMetaInfo) schließt HandleMessage(UdsMessagePtr) den Transport-Empfangspfad ab und initiiert die Diagnoseverarbeitung sowie die nachfolgende Antwortübertragung (UDS Pos/Neg Response Transmission).

Zugeordnete Anforderungen

Diese Angaben zeigt der Versions-Explorer.

Aus dem Dokument extrahierter Text & Kontext

Beschriftungen im Schaubild:

Instance1: UdsTransportProtocolHandlerImpl | Diagnostic Client/Tester | Request: UdsMessage | DM Instance: | DM_Generic | alt | [UDS Request NOT Accepted by DM] | [UDS Request Accepted by DM] | alt | [Processing UDS Request NOT OK] | [Processing UDS Request OK] | ref | UDS Pos/Neg Response Transmission | Implements UdsTransportProtocolMgr | opt | HandleMessage(UdsMessagePtr) | AddMetaInfo(std::shared_ptr<const MetaInfoMap>) | Discard Bytes from UDS Request, which do not fit into provided message() | IndicateMessage(UdsMessage::Address, UdsMessage::Address, UdsMessage:: TargetAddressType, GlobalChannelIdentifier, std::size_t, std::shared_ptr<const UdsMessage:: MetaInfoMap>): std::pair<IndicationResultType, UdsMessagePtr> | Uds Transport Protocol specific Error() | NotifyMessageFailure(UdsMessageConstPtr) | Uds Transport Protocol specific Error() | :std::pair(kIndicationOccupied,UdsMessagePtr(nullptr)) || std::pair | (kIndicationOverflow,UdsMessagePtr(nullptr)) | GetPayload(): udstransport::ByteVector& | UDS Request() | Prepare/Create MetaInfo() | :std::pair(kIndicationOK, UdsMessagePtr) | Fill Payload From received UDS Request() | UdsMessage()

Vorkommen in AUTOSAR-Releases (2)

Release Dokument Seite Nr. Bildunterschrift im Dokument
R19-11 AUTOSAR_SWS_Diagnostics S. 130 8.2 Figure 8.2: UDS Transport Request Processing 130 of 312 — AUTOSAR CONFIDENTIAL —
R19-11 AUTOSAR_SWS_Diagnostics S. 130 8.2 Figure 8.2: UDS Transport Request Processing 130 of 312 — AUTOSAR CONFIDENTIAL —