DEENESPTFRRUARHIKOZHNL
AUTOSAR_SWS_CANTransportLayer FIG-f04ead862103c711 954 × 795 px 1 Release(s)

Figure 7: Example of receiving process 1: The CanIf notifies a new reception with CanTp_RxIndication().The CanTp forwards this notification to the PduR; 2: The PduR returns an available buffer size of 25 bytes, CanTp sends a FlowControl CTS to the originator; 3: The CanTp provides the data of each received frame to the PduR and monitors the remaining buffer size. After the second consecutive frame, the remaining buffer size is not enough for the next block (two Consecutive Frames); 4: The CanTp asks the PduR for the remaining buffer size by calling PduR_CanTpCopyRxData() with 0 as data length and NULL_PTR as data, and

SHA-256 Inhalts-Fingerabdruck: f04ead862103c711f5fe9307bd472bc17b438c5fd3e97b599b82dbe97fbfa07e
✦ 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

Informelles Interaktions- und Sequenzdiagramm mit begleitender Statustabelle aus der AUTOSAR Classic Platform (SWS CAN Transport Layer). Es visualisiert das Protokollverhalten des Empfangspfads (CanTp) in Interaktion mit dem unterlagerten CAN Interface (CanIf) und dem überlagerten PDU Router (PduR) bei segmentiertem Empfang mit Zwischenpufferüberwachung und Flow-Control-Aushandlung.

2. Komponenten, Entitäten & Schnittstellen

Beteiligte Komponenten:

  • CanIf (CAN Interface): Übergibt empfangene N-PDUs via CanTp_RxIndication(id, *(data, length)) an die Transportschicht.
  • CanTp (CAN Transport Layer): Führt N-PDU-Reassemblierung, Flow Control (CTS, Wait) und Pufferabfragen durch.
  • PduR (PDU Router): Empfängt Rezeptionsmeldungen, allokiert Puffer und meldet verfügbaren Speicherplatz zurück.

Verwendete Schnittstellen/Funktionen:

  • CanTp_RxIndication(id, *(data, length)) (CanIf -> CanTp)
  • PduR_CanTpStartOfReception(id, length=49, *RemainingRxBuff) (CanTp -> PduR)
  • PduR_CanTpCopyRxData(id, *(*data, length), *RemainingRxBuff) (CanTp -> PduR)
  • PduR_CanTpRxIndication(id, OK) (CanTp -> PduR)

3. Dynamisches Verhalten & Sequenzablauf

Der Ablauf zeigt den Empfang einer 49-Byte-SDU in 8 chronologischen Schritten:

  1. CanIf signalisiert den Empfang eines First Frame (FF) per CanTp_RxIndication. CanTp initiiert die Übertragung per PduR_CanTpStartOfReception(id, length=49, *RemainingRxBuff).
  2. PduR meldet 25 Byte verfügbaren Puffer zurück. CanTp sendet ein FlowControl CTS mit Block Size BS=2 an den Sender.
  3. Der FF (6 Datenbytes) wird mit PduR_CanTpCopyRxData(id, *(*data, 7), *RemainingRxBuff) übergeben (verbleibende SDU-Länge: 43 Byte, Puffer: 19 Byte). Es folgen zwei Consecutive Frames (CF mit je 7 Byte), wodurch der Puffer auf 5 Byte sinkt (SDU-Rest: 29 Byte). Für den nächsten Block (2 CFs à 7 Byte = 14 Byte) reicht der Puffer nicht aus.
  4. CanTp fragt den Pufferstatus mittels Null-Pointer-Aufruf PduR_CanTpCopyRxData(id, *(NULL_PTR, 0), *RemainingRxBuff) ab.
  5. Da kein ausreichender Puffer verfügbar ist (No buffer), sendet CanTp FlowControl WAIT an den Sender und verharrt im Wartezustand (No receiving, waiting for available buffer).
  6. Nach Bereitstellung neuen Puffers durch den PduR (erneute Abfrage mit NULL_PTR, 0 liefert 18 Byte) sendet CanTp erneut FlowControl CTS mit BS=2. Zwei weitere CFs (je 7 Byte) werden kopiert (SDU-Rest: 15 Byte, Puffer: 11 Byte). Erneut tritt Puffermangel für den Folgeblock auf, gefolgt von einer weiteren WAIT-Phase.
  7. Nach erneuter Pufferfreigabe werden die verbleibenden CFs (7 Byte, 7 Byte und das abschließende CF mit 1 Byte Nutzdaten) an den PduR übertragen. Die verbleibende SDU-Länge erreicht 0 Byte.
  8. Nach vollständiger Datenübernahme schließt CanTp die Transaktion per PduR_CanTpRxIndication(id, OK) erfolgreich ab.

4. Normative Relevanz & Entwickler-Hinweise

Das Diagramm verdeutlicht normativ das Flusssteuerungs- und Puffermanagement-Design nach ISO 15765-2 innerhalb der AUTOSAR-Architektur:

  • Abfrage des Pufferspeichers ohne Datenübertrag: Zulässiger Mechanismus über PduR_CanTpCopyRxData mit Datenlänge 0 und Zeiger NULL_PTR.
  • Flow-Control-Trigger: CanTp darf ein FlowControl CTS mit BS=x nur dann aussenden, wenn der vom oberen Layer zugesicherte Pufferspeicher mindestens den vollen nächsten Block aufnehmen kann; andernfalls ist FlowControl WAIT zu senden.
  • Rezeptionsterminierung: Bei fehlerfreier Übernahme aller Segmente muss der Abschluss mit PduR_CanTpRxIndication(id, E_OK) quittiert werden.

Versionsvergleich KI-generiert · gemini-3.8-flash (via agy)

R4.1.3 → R4.2.2 keine inhaltliche Änderung Nachfolger: FIG-df60a7d339eaf3d0

Keine inhaltlichen Änderungen erkennbar.

Zugeordnete Anforderungen

Diese Angaben zeigt der Versions-Explorer.

Aus dem Dokument extrahierter Text & Kontext

Beschriftungen im Schaubild:

PduR_CanTpStartOfReception (id, length=49, *RemainingRxBuff) | No receiving, waiting for available buffer. | 10 0 CF / 1 byte | 11 1 CF / 7 bytes | 18 | 15 CF / 7 bytes | 18 22 CF / 7 bytes | 5 29 CF / 7 bytes | 12 36 CF / 7 bytes | 19 43 FF / 6 bytes | in the provided | buffer in the SDU | Remaining bytes received frame and | length | 10 0 CF / 1 byte | 1 CF / 7 bytes | 11 CF / 7 bytes | CF / 7 bytes | 5 29 CF / 7 bytes | 12 36 CF / 7 bytes | 19 FF / 6 bytes | in the available | buffer in the SDU | Remaining bytes received frame and | length | 32 | 2 | x FlowControl, CTS with BS=x | FlowControl, Wait | No buffer | PduR_CanTpRxIndication (id, OK) | CanTp_RxIndication (id, *(data, length)) CanIf CanTp PduR | 1 | 2 | 4 | 5 | 7 | 3 | PduR_CanTpCopyRxData (id, *(*data, 7), *RemainingRxBuff) | PduR_CanTpCopyRxData (id, *(NULL_PTR, 0), *RemainingRxBuff) | PduR_CanTpCopyRxData (id, *(*data, 7), *RemainingRxBuff) | 6 | PduR_CanTpCopyRxData (id, *(*data, 7), *RemainingRxBuff) | 2 CF / 7 bytes CF / 7 bytes 8 | No receiving, waiting for available buffer. | 2 | No buffer | PduR_CanTpCopyRxData (id, *(NULL_PTR, 0), *RemainingRxBuff) | 8

Vorkommen in AUTOSAR-Releases (1)

Release Dokument Seite Nr. Bildunterschrift im Dokument
R4.1.3 AUTOSAR_SWS_CANTransportLayer S. 41 7 Figure 7: Example of receiving process 1: The CanIf notifies a new reception with CanTp_RxIndication().The CanTp forwards this notification to the PduR; 2: The PduR returns an available buffer size of 25 bytes, CanTp sends a FlowControl CTS to the originator; 3: The CanTp provides the data of each received frame to the PduR and monitors the remaining buffer size. After the second consecutive frame, the remaining buffer size is not enough for the next block (two Consecutive Frames); 4: The CanTp asks the PduR for the remaining buffer size by calling PduR_CanTpCopyRxData() with 0 as data length and NULL_PTR as data, and