DEENESPTFRRUARHIKOZHNL

CAN Transport Layer (CanTp)

ModulCanTp (CAN Transport Layer)
BSW-Modul-ID35
Standard-Header#include "CanTp.h"
SWS-SpezifikationAUTOSAR_SWS_CANTransportLayer.pdf
ClusterCAN

ModulegidsAI-GEGENEREERD

Deelt lange berichten op in CAN-frames en voegt ontvangen segmenten met flow control weer samen.
DOOR AI GEGENEREERD ongecontroleerd Model: claude-opus-5-5 · Inspanning: high · Temperatuur: niet regelbaar · Prompt: 69cea53d1819 Herkomst Open vragen (1)
Causaal anker: R20-11 Geldig vanaf R20-11 Nieuw gesynthetiseerd voor deze specificatiestand.
vertaald uit de Duitse handleidinggemini-3.8-flash-low · 2026-10-13 · Duits origineel

Deelt lange berichten op in CAN-frames en voegt ontvangen segmenten met flow control weer samen.

De CAN Transport Layer deelt berichten die niet in één CAN-frame passen op, bestuurt de datastroom via Flow Control en voegt ontvangen segmenten volgens ISO 15765-2 weer samen [SWS_CanTp_00033]. Deze bevindt zich tussen PduR en CanIf, heeft geen eigen payloadbuffer en kopieert zend- en ontvangstdata segmentsgewijs via de copy-services van de hogere laag [SWS_CanTp_00298]. Elke geaccepteerde overdracht sluit hij af met een melding aan de hogere laag: succesvol met E_OK, bij time-out of afbreken met E_NOT_OK. Dit alles vereist CanTp_Init; de time-outs worden bewaakt door de cyclische MainFunction.

CanTp is de CAN Transport Layer. Deze deelt lange berichten op in CAN-frames, bestuurt de datastroom en voegt ontvangen segmenten weer samen; daarbij volgt hij ISO 15765-2, voor zover de specificatie niet anders bepaalt [SWS_CanTp_00033]. De module bevindt zich tussen PduR en CanIf en heeft geen eigen payloadbuffer. De data kopieert hij segmentsgewijs via de copy-services van de hogere laag [SWS_CanTp_00298] [SWS_CanTp_00216].

kontext Nutzer DCM / Com (TP-Nutzer) PduR PduR Nutzer->PduR TP-Dienste CanTp CanTp PduR->CanTp CanTp_Transmit CanTp_CancelTransmit / CanTp_CancelReceive CanTp_ChangeParameter / CanTp_ReadParameter CanTp->PduR PduR_CanTpStartOfReception PduR_CanTpCopyRxData / PduR_CanTpCopyTxData PduR_CanTpRxIndication / PduR_CanTpTxConfirmation CanIf CanIf CanTp->CanIf CanIf_Transmit (SF, FF, CF, FC) Det DET CanTp->Det Det_ReportError Det_ReportRuntimeError CanIf->CanTp CanTp_RxIndication CanTp_TxConfirmation BswM BswM (Modusmanagement) BswM->CanTp CanTp_Init / CanTp_Shutdown Sched Schedule Manager (zyklischer Task) Sched->CanTp CanTp_MainFunction

Contextdiagram: De interfaces van CanTp naar PduR, CanIf, modusmanagement, scheduler en DET. Bronnen: [SWS_CanTp_00216], SWS CanTp p. 17

Na het inschakelen bevindt CanTp zich in CANTP_OFF [SWS_CanTp_00168]. CanTp_Init met CanTp_ConfigType [SWS_CanTp_00208] zet alle verbindingen in de rusttoestand [SWS_CanTp_00030]; daarna geldt CANTP_ON [SWS_CanTp_00170]. CanTp_Shutdown sluit alle verbindingen zonder iemand op de hoogte te stellen [SWS_CanTp_00202] [SWS_CanTp_00200]. De verbindingskanalen werken onafhankelijk van elkaar met eigen timers [SWS_CanTp_00122]. Als een zendkanaal bezet is, wijst CanTp nieuwe opdrachten af met E_NOT_OK [SWS_CanTp_00123].

Bij het verzenden evalueert CanTp_Transmit alleen de lengte (en eventueel MetaData) [SWS_CanTp_00225]. Afhankelijk van de lengte volgt een SF of een gesegmenteerde sessie [SWS_CanTp_00232]. Voor elk segment haalt CanTp de data op met PduR_CanTpCopyTxData [SWS_CanTp_00086] en wacht na FF en elk blok onder N_Bs op Flow Control [SWS_CanTp_00315]. Interpretatie: De aanroep meldt alleen de acceptatie; het einde van de overdracht komt asynchroon via PduR_CanTpTxConfirmation [SWS_CanTp_00176] [SWS_CanTp_00204]. Vraag (open)

Bij ontvangst vraagt CanTp eerst met PduR_CanTpStartOfReception een buffer aan [SWS_CanTp_00079]. Daarna kopieert het elk CF met PduR_CanTpCopyRxData [SWS_CanTp_00269]. Is er buffertekort, dan pollt CanTp deze in elke MainFunction opnieuw en verzendt maximaal WFTmax FC(WAIT) [SWS_CanTp_00222] [SWS_CanTp_00223]. Aan het einde staat PduR_CanTpRxIndication [SWS_CanTp_00084]. De time-outs worden bewaakt door de cyclische CanTp_MainFunction [SWS_CanTp_00164].

Gesegmenteerde ontvangst van een N-SDUCanIfCanTpPduRUse Case: First FrameCanTp_RxIndication(FF)N_Br gestartetPduR_CanTpStartOfReception(TpSduLength)BUFREQ_OK, beschikbare buffergroottePduR_CanTpCopyRxData(FF-Daten)CanIf_Transmit(FC: CTS, BS, STmin)loopper CF van een blokCanTp_RxIndication(CF)PduR_CanTpCopyRxData(6/7 Byte)BUFREQ_OK, RestpufferaltResterende buffer niet toereikend voor volgend blokN_Br looptCanTp_MainFunctionPduR_CanTpCopyRxData(lengte 0, NULL_PTR)BUFREQ_OK, RestpufferCanIf_Transmit(FC: WAIT)maximaal WFTmax-maalPuffer ausreichendCanIf_Transmit(FC: CTS)Use Case: Letzter Consecutive FrameCanTp_RxIndication(letzter CF)PduR_CanTpCopyRxData()PduR_CanTpRxIndication(E_OK)

Sequentiediagram: Gesegmenteerde ontvangst met bufferonderhandeling en Flow Control CTS/WAIT. Bronnen: [SWS_CanTp_00269], [SWS_CanTp_00222], SWS CanTp p. 38

Fouten behandelt CanTp op drie manieren. Ontwikkelingsfouten meldt het aan DET en levert E_NOT_OK [SWS_CanTp_00294] op. Protocolfouten zoals time-outs breken de sessie af en gaan met E_NOT_OK naar PduR [SWS_CanTp_00205] [SWS_CanTp_00311]. Ditzelfde geldt voor annuleringen op verzoek via de cancel-services [SWS_CanTp_00255] [SWS_CanTp_00263]. Voor ongeldige ID's bij de cancel-services vereist R20-11 CANTP_E_PARAM_ID [SWS_CanTp_00254], terwijl nieuwere releases andere codes noemen.

Rol in de CAN-stack: transportprotocol tussen PduR en CanIf

CanTp is de CAN Transport Layer. Deze deelt berichten die niet in één afzonderlijk CAN-frame passen op in segmenten, bestuurt de datastroom en voegt ontvangen segmenten weer samen (SWS CanTp p. 24, SWS CanTp p. 17). De basis is ISO 15765-2: elke aanbeveling van deze norm geldt, voor zover de specificatie deze niet uitdrukkelijk uitsluit [SWS_CanTp_00033]. Segmentatie en reassemblage voert CanTp alleen uit in de toestand CANTP_ON [SWS_CanTp_00238].

Naar boven stelt CanTp de volgende services ter beschikking aan PduR: CanTp_Transmit [SWS_CanTp_00212], CanTp_CancelTransmit [SWS_CanTp_00246] en CanTp_CancelReceive [SWS_CanTp_00257]. Zelf roept CanTp naar boven PduR_CanTpStartOfReception, PduR_CanTpCopyRxData, PduR_CanTpCopyTxData, PduR_CanTpRxIndication en PduR_CanTpTxConfirmation aan, naar beneden CanIf_Transmit [SWS_CanTp_00216]. De onderste laag meldt ontvangen frames via CanTp_RxIndication [SWS_CanTp_00078] en zendbevestigingen via CanTp_TxConfirmation [SWS_CanTp_00076]. Beide functies moeten in interrupt-context aanroepbaar zijn [SWS_CanTp_00235] [SWS_CanTp_00236]. Nieuwere passages in documenten noemen als aanroeper de L-SDU Router (LSduR) (SWS CanTp p. 27). De requirements van R20-11 spreken daarentegen over de CAN Interface, zoals [SWS_CanTp_00031] en [SWS_CanTp_00335].

CanTp heeft geen eigen payloadbuffer. Zenddata haalt het direct op bij de hogere laag [SWS_CanTp_00298], ontvangen data kopieert het onmiddellijk naar het geheugen daarvan (SWS CanTp p. 35). Hieruit volgen blokkeerperiodes voor de hogere laag (SWS CanTp p. 35):

  • De zendbuffer houdt deze geblokkeerd zodra CanTp_Transmit met E_OK terugkeert, totdat PduR_CanTpTxConfirmation arriveert.
  • De ontvangstbuffer houdt deze geblokkeerd zodra deze BUFREQ_OK op PduR_CanTpStartOfReception heeft geleverd, totdat PduR_CanTpRxIndication arriveert.
kontext Nutzer DCM / Com (TP-Nutzer) PduR PduR Nutzer->PduR TP-Dienste CanTp CanTp PduR->CanTp CanTp_Transmit CanTp_CancelTransmit / CanTp_CancelReceive CanTp_ChangeParameter / CanTp_ReadParameter CanTp->PduR PduR_CanTpStartOfReception PduR_CanTpCopyRxData / PduR_CanTpCopyTxData PduR_CanTpRxIndication / PduR_CanTpTxConfirmation CanIf CanIf CanTp->CanIf CanIf_Transmit (SF, FF, CF, FC) Det DET CanTp->Det Det_ReportError Det_ReportRuntimeError CanIf->CanTp CanTp_RxIndication CanTp_TxConfirmation BswM BswM (Modusmanagement) BswM->CanTp CanTp_Init / CanTp_Shutdown Sched Schedule Manager (zyklischer Task) Sched->CanTp CanTp_MainFunction

Contextdiagram: CanTp bevindt zich tussen PduR en CanIf. Het wordt geïnitialiseerd door het modusmanagement, cyclisch getriggerd door de scheduler en meldt fouten aan DET. Bronnen: [SWS_CanTp_00216], [SWS_CanTp_00217], [SWS_CanTp_00164], SWS CanTp p. 17, Mode Management Guide p. 54

Levenscyclus: CANTP_OFF, CanTp_Init en onafhankelijke verbindingskanalen

CanTp kent de toestanden CANTP_OFF en CANTP_ON [SWS_CanTp_00027]. Na het inschakelen bevindt de module zich in CANTP_OFF [SWS_CanTp_00168]; alleen daarin mag de post-build-configuratie worden bijgewerkt [SWS_CanTp_00169].

CanTp_Init ontvangt een pointer naar CanTp_ConfigType [SWS_CanTp_00208] [SWS_CanTp_00340]. De functie initialiseert alle globale variabelen en zet elke verbinding in de rusttoestand CANTP_RX_WAIT resp. CANTP_TX_WAIT [SWS_CanTp_00030]; daarna geldt CANTP_ON [SWS_CanTp_00170]. De omgeving moet CanTp_Init vóór elk verder gebruik aanroepen [SWS_CanTp_00199]. In de handleiding voor het modusmanagement neemt een BswM-regel dit over na NvM_ReadAll (Mode Management Guide p. 54). Een hernieuwde aanroep in CANTP_ON verwerpt alle lopende verbindingen en brengt terug naar de rusttoestand [SWS_CanTp_00273] [SWS_CanTp_00111].

CanTp_Shutdown sluit alle openstaande verbindingen, geeft de resources vrij en zet CANTP_OFF [SWS_CanTp_00202]. Daarbij stelt CanTp niemand op de hoogte van afgebroken overdrachten [SWS_CanTp_00200] (SWS CanTp p. 58).

In CANTP_ON lopen meerdere verbindingen gelijktijdig [SWS_CanTp_00096]:

  • Elke N-SDU is statisch toegewezen aan een verbindingskanaal. Elk kanaal heeft eigen timers, buffers en een eigen toestandsmachine [SWS_CanTp_00121] [SWS_CanTp_00122].
  • Kanalen zijn alleen intern zichtbaar [SWS_CanTp_00285]. Het aantal ervan wordt bepaald door de configuratietool [SWS_CanTp_00289].
  • Als een zendkanaal zich in CANTP_TX_PROCESSING bevindt, wijst CanTp nieuwe opdrachten via CanTp_Transmit af met E_NOT_OK [SWS_CanTp_00123]. Ditzelfde geldt voor een N-SDU die al in een lopende sessie zit [SWS_CanTp_00206].
  • Als meerdere N-SDU's een kanaal delen en er geen vrij kanaal beschikbaar is, weigert CanTp het verzenden resp. breekt het de ontvangst af [SWS_CanTp_00288] (SWS CanTp p. 42).
lebenszyklus cluster_on CANTP_ON cluster_rx Rx-Verbindungskanal cluster_tx Tx-Verbindungskanal PowerUp Einschalten OFF CANTP_OFF (post-build-configuratie wijzigbaar) PowerUp->OFF RXW CANTP_RX_WAIT OFF->RXW CanTp_Init (erfolgreich) TXW CANTP_TX_WAIT OFF->TXW CanTp_Init (erfolgreich) RXP CANTP_RX_PROCESSING RXW->RXP SF/FF empfangen RXP->RXW geen verdere N-PDU verwacht of afbreken TXP CANTP_TX_PROCESSING TXW->TXP CanTp_Transmit = E_OK TXP->OFF CanTp_Shutdown (zonder notificatie) TXP->TXW Overdracht beëindigd of afbreken

Toestandsdiagram: Na CanTp_Init wisselen ontvangst- en zendkanalen onafhankelijk van elkaar tussen WAIT en PROCESSING; CanTp_Shutdown leidt terug naar CANTP_OFF. Bronnen: [SWS_CanTp_00027], [SWS_CanTp_00030], [SWS_CanTp_00170], [SWS_CanTp_00202], SWS CanTp p. 27

Verzenden: van CanTp_Transmit tot de bevestiging

CanTp_Transmit ontvangt TxPduId en PduInfoPtr [SWS_CanTp_00212]. Zonder MetaData evalueert CanTp alleen de totale lengte SduLength en benadert de databuffer niet [SWS_CanTp_00225] [SWS_CanTp_00299]. Met MetaData slaat het bovendien de adresinformatie op voor alle SF, FF en CF [SWS_CanTp_00334]. Passen de data in een N-PDU, dan verzendt CanTp een SF, anders start het een meervoudige-framesessie [SWS_CanTp_00232] (SWS CanTp p. 60). De maximale zendlengte (TX_DL) volgt uit PduLength in EcuC [SWS_CanTp_00354]. Interpretatie: De aanroep meldt synchroon alleen of de opdracht is geaccepteerd; de eigenlijke overdracht verloopt asynchroon [SWS_CanTp_00176]. Vraag Q-b6d13590324e2906 (open) Na acceptatie meldt CanTp het einde in elk geval via PduR_CanTpTxConfirmation [SWS_CanTp_00177] [SWS_CanTp_00204].

Voor elk segment (SF, FF, CF) roept CanTp PduR_CanTpCopyTxData aan [SWS_CanTp_00086]; tot aan de eerste aanroep loopt de timer N_Cs [SWS_CanTp_00167]. Levert de hogere laag BUFREQ_E_BUSY, dan probeert CanTp het later opnieuw [SWS_CanTp_00184]. De retry-parameter zet CanTp altijd op NULL, omdat ISO 15765-2 geen herhaling kent [SWS_CanTp_00272].

Na de FF en na het laatste CF van elk blok wacht CanTp onder N_Bs op een Flow Control Frame [SWS_CanTp_00315]. Daarmee geeft de ontvanger verdere CF's vrij of vertraagt deze [SWS_CanTp_00282]. Is de sessie succesvol afgesloten, dan volgt PduR_CanTpTxConfirmation met E_OK [SWS_CanTp_00090]. Ditzelfde pull-verloop tonen het 50-byte-voorbeeld (SWS CanTp p. 37) en het pad van DCM naar CanTp (SWS PduR p. 104).

Gesegmenteerd verzenden van een N-SDUPduRCanTpCanIfUse Case: TriggeringCanTp_Transmit(TxPduId, PduInfoPtr)alleen SduLength (+ MetaData)E_OKN_Cs looptUse Case: First FramePduR_CanTpCopyTxData()BUFREQ_OKCanIf_Transmit(FF)CanTp_TxConfirmation(E_OK)N_Bs loopt: wachten op FCCanTp_RxIndication(FC: CTS, BS, STmin)loopper CF van een blok (BS-frames, interval STmin)PduR_CanTpCopyTxData()BUFREQ_OKCanIf_Transmit(CF)CanTp_TxConfirmation(E_OK)na elk blok opnieuw FC afwachten (N_Bs)Use Case: AbschlussPduR_CanTpTxConfirmation(E_OK)

Sequentiediagram: CanTp vraagt de data segmentsgewijs op bij PduR, wacht na FF en elk blok op Flow Control en bevestigt tot slot met E_OK. Bronnen: [SWS_CanTp_00212], [SWS_CanTp_00086], [SWS_CanTp_00315], [SWS_CanTp_00090], SWS CanTp p. 73

Ontvangen: bufferonderhandeling, Flow Control en reassemblage

Bij elk binnenkomend SF of FF meldt CanTp het begin van de ontvangst met PduR_CanTpStartOfReception [SWS_CanTp_00079]. De beschikbare buffergrootte wordt geretourneerd via een uitvoerparameter en mag kleiner zijn dan de N-SDU [SWS_CanTp_00080]. Bij een FF start CanTp vooraf de timer N_Br [SWS_CanTp_00166]. Het verzendt de Flow Control pas wanneer het resultaat beschikbaar is; de inhoud daarvan hangt af van dit resultaat [SWS_CanTp_00064] [SWS_CanTp_00277]. Alle FC's van een ontvangstsessie bevatten dezelfde waarden voor BS en STmin [SWS_CanTp_00067]. Een FC volgt telkens na BS Consecutive Frames [SWS_CanTp_00278].

Na elk CF draagt CanTp de payload over met PduR_CanTpCopyRxData en verneemt daarbij de resterende bufferruimte [SWS_CanTp_00269]. Bij CAN 2.0 zijn dat zes of zeven bytes per CF. Is de resterende buffer na het laatste CF van een blok niet toereikend voor het volgende blok, dan start CanTp de timer N_Br [SWS_CanTp_00325] [SWS_CanTp_00082]. Zolang deze timer loopt:

Eindigt de sessie, succesvol of niet, dan roept CanTp PduR_CanTpRxIndication aan [SWS_CanTp_00084]. Met en zonder padding geeft CanTp alleen de daadwerkelijk gebruikte databytes door naar boven [SWS_CanTp_00116].

Gesegmenteerde ontvangst van een N-SDUCanIfCanTpPduRUse Case: First FrameCanTp_RxIndication(FF)N_Br gestartetPduR_CanTpStartOfReception(TpSduLength)BUFREQ_OK, beschikbare buffergroottePduR_CanTpCopyRxData(FF-Daten)CanIf_Transmit(FC: CTS, BS, STmin)loopper CF van een blokCanTp_RxIndication(CF)PduR_CanTpCopyRxData(6/7 Byte)BUFREQ_OK, RestpufferaltResterende buffer niet toereikend voor volgend blokN_Br looptCanTp_MainFunctionPduR_CanTpCopyRxData(lengte 0, NULL_PTR)BUFREQ_OK, RestpufferCanIf_Transmit(FC: WAIT)maximaal WFTmax-maalPuffer ausreichendCanIf_Transmit(FC: CTS)Use Case: Letzter Consecutive FrameCanTp_RxIndication(letzter CF)PduR_CanTpCopyRxData()PduR_CanTpRxIndication(E_OK)

Sequentiediagram: Gesegmenteerde ontvangst met bufferonderhandeling, bloksgewijze Flow Control en wachtfase bij buffertekort. Bronnen: [SWS_CanTp_00079], [SWS_CanTp_00269], [SWS_CanTp_00222], [SWS_CanTp_00084], SWS CanTp p. 76

rxstart Ein CanTp_RxIndication: SF of FF ontvangen Kanal Kanal in CANTP_RX_PROCESSING? Ein->Kanal Art met MetaData of andere N_AI? Kanal->Art ja Sor PduR_CanTpStartOfReception() Kanal->Sor nein Ign Frame ignorieren Art->Ign ja Neu laufenden Empfang abbrechen, Frame als neuen Empfang behandeln Art->Neu nein (gleiche N_AI) Neu->Sor Erg Retourwaarde? Sor->Erg NotOk Ontvangst afbreken: geen FC, geen PduR_CanTpRxIndication Erg->NotOk BUFREQ_E_NOT_OK Ovfl FF: FC(OVFLW) senden, abbrechen SF: abbrechen Erg->Ovfl BUFREQ_E_OVFL Typ Frame-Typ? Erg->Typ BUFREQ_OK Sf SF: Daten kopieren, PduR_CanTpRxIndication Typ->Sf SF Puf FF: buffer toereikend voor volgend blok? Typ->Puf FF Cts FC(CTS) senden Puf->Cts ja Br N_Br starten, Puffer in MainFunction abfragen Puf->Br nein

Activiteitendiagram: Zo beslist CanTp bij een binnenkomend SF of FF op basis van de kanaaltoestand en het resultaat van PduR_CanTpStartOfReception. Bronnen: [SWS_CanTp_00124], [SWS_CanTp_00337], [SWS_CanTp_00081], [SWS_CanTp_00318], [SWS_CanTp_00353], SWS CanTp p. 67

Adressering, MetaData en padding

Functionele adressering (1:n) is alleen toegestaan voor SF [SWS_CanTp_00092]. Een gesegmenteerde sessie via een functionele handle wijst CanTp af en meldt CANTP_E_INVALID_TATYPE [SWS_CanTp_00093] (SWS CanTp p. 39). Bij Extended resp. Mixed Addressing bepaalt CanTp de N-SDU uit N_TA resp. N_AE in de eerste databyte [SWS_CanTp_00095] [SWS_CanTp_00284] [SWS_CanTp_00283]. Voor de toewijzing van identifiers geldt (SWS CanTp p. 44):

  • Elke NSduId is aan precies één LSduId toegewezen [SWS_CanTp_00035].
  • De LSduId van een FC identificeert samen met N_TA of N_AE precies één NSduId [SWS_CanTp_00094].
  • Meerdere N-SDU's mogen alleen bij Extended/Mixed Addressing of bij MetaData naar dezelfde N-PDU refereren [SWS_CanTp_00328].

Generieke verbindingen werken met MetaData. CanTp slaat de adresinformatie uit SF resp. FF op [SWS_CanTp_00330], geeft deze door aan PduR_CanTpStartOfReception [SWS_CanTp_00331] en toetst daaropvolgende CF's daaraan af [SWS_CanTp_00333]. Als het kanaal al ontvangt, negeert CanTp een volgend SF of FF met MetaData [SWS_CanTp_00337].

Padding wordt per N-SDU geactiveerd (SWS CanTp p. 43). De opvulwaarde is CANTP_PADDING_BYTE [SWS_CanTp_00059]. Bij frames met maximaal 8 bytes payload geldt:

Past een zendlengte bij geen enkele geldige DLC, dan vult CanTp op tot de eerstvolgende hogere geldige waarde [SWS_CanTp_00351]. De ontvangstlengte RX_DL leidt CanTp af uit de als eerste ontvangen CAN_DL [SWS_CanTp_00350].

Tijdbewaking, runtimeparameters en annulering op verzoek

CanTp_MainFunction [SWS_CanTp_00213] wordt cyclisch aangeroepen. Deze bewaakt N_As, N_Bs, N_Cs, N_Ar, N_Br, N_Cr en STmin [SWS_CanTp_00164] (SWS CanTp p. 63). Het tempo daarvan richt zich naar CanTpMainFunctionPeriod [SWS_CanTp_00300]. Deze waarde moet overeenkomen met de cyclustijd van de aanroepende taak (SWS CanTp p. 77). Als voorbeeld noemt de timinganalyse een 5ms-taak (TR Timing Analysis p. 117).

Twee services benaderen tijdens runtime de ontvangstparameters BS en STmin van een N-SDU: CanTp_ChangeParameter wijzigt deze [SWS_CanTp_00302], CanTp_ReadParameter leest deze [SWS_CanTp_00323]. Beide bestaan alleen als CanTpChangeParameterApi = TRUE is (SWS CanTp p. 61). BS is slechts een maximumwaarde, waarvan CanTp om bufferredenen naar beneden mag afwijken [SWS_CanTp_00091]. Tussen FF en het laatste CF van een lopende ontvangstsessie wijst CanTp elke wijziging af met E_NOT_OK [SWS_CanTp_00303] [SWS_CanTp_00304]. Bij generieke verbindingen geldt een wijziging voor alle [SWS_CanTp_00338].

Lopende overdrachten kunnen op verzoek worden geannuleerd:

Gedrag in het foutgeval

Ontwikkelingsfouten. Als de detectie actief is, meldt CanTp de fout aan DET en levert E_NOT_OK [SWS_CanTp_00294] [SWS_CanTp_00217] op (SWS CanTp p. 49). De codes worden gedefinieerd door [SWS_CanTp_00293]. Typische gevallen:

Afwijking tussen de releases: Voor een ongeldige PduId bij de cancel-services vereist R20-11 CANTP_E_PARAM_ID [SWS_CanTp_00254] [SWS_CanTp_00260]. Nieuwere passages in documenten noemen in plaats daarvan CANTP_E_INVALID_TX_ID resp. CANTP_E_INVALID_RX_ID (SWS CanTp p. 59). Voor R20-11 geldt het requirement.

Runtimefouten. Deze gaan naar de Default Error Tracer [SWS_CanTp_00352]:

Protocolfouten. Deze beëindigen de sessie met E_NOT_OK naar de hogere laag [SWS_CanTp_00205]:

De PduR geeft de negatieve bevestiging door aan de gebruiker, bijv. aan de DCM, die vervolgens zorgt voor het herstel (Error Description p. 29, Error Description p. 28). Productiefouten behandelt de DEM via de FiM [SWS_CanTp_00291].

abbruch cluster_tx Sendeseite cluster_rx Empfangsseite t1 PduR_CanTpCopyTxData = BUFREQ_E_NOT_OK TA Sendesitzung abbrechen t1->TA t2 N_Cs abgelaufen t2->TA t3 N_As abgelaufen t3->TA t4 N_Bs abgelaufen t4->TA t5 FC met OVFLW of ongeldige FS t5->TA t6 FC korter dan 8 bytes bij Tx-padding t6->TA t7 CanIf_Transmit(SF/FF/CF) = E_NOT_OK t7->TA t8 CanTp_TxConfirmation(E_NOT_OK) t8->TA t9 CanTp_CancelTransmit = E_OK t9->TA r1 N_Ar abgelaufen RA Empfangssitzung abbrechen r1->RA r2 N_Cr abgelaufen r2->RA r3 PduR_CanTpCopyRxData = BUFREQ_E_NOT_OK r3->RA r4 WFTmax FC(WAIT) erreicht r4->RA r5 laatste CF te kort bij Rx-padding r5->RA r6 CanIf_Transmit(FC) = E_NOT_OK r6->RA r7 CanTp_CancelReceive = E_OK r7->RA TC PduR_CanTpTxConfirmation(E_NOT_OK) TA->TC RC PduR_CanTpRxIndication(E_NOT_OK) RA->RC

Activiteitendiagram: Alle afbreekredenen monden per richting uit in een negatieve melding aan PduR. Bronnen: [SWS_CanTp_00205], [SWS_CanTp_00343], [SWS_CanTp_00355], [SWS_CanTp_00342], [SWS_CanTp_00223], [SWS_CanTp_00084], Error Description p. 28

Verdere gedetailleerde bewijzen

AI-gegenereerde handleiding op basis van de specificatiefragmenten over CanTp (R20-11). Uitsluitend de gekoppelde requirements zijn bindend; documentpassages uit andere releases dienen slechts ter toelichting.

CAN Transport Layer (CanTp)

Provides segmentation and reassembly of CAN messages up to 4095 bytes (ISO 15765-2).

Funktionen — Übersicht

Typen — Übersicht

Funktionen & Typen — Detailansicht

functie CanTp_Init [SWS_CanTp_00208] 📄 PDF

void CanTp_Init (const CanTp_ConfigType* CfgPtr);

This function initializes the Can Tp module.

DOOR AI GEGENEREERD ongecontroleerd Model: gemini-3.8-flash-medium · Inspanning: medium · Temperatuur: niet regelbaar · Prompt: 62b706f68200 Herkomst
vertaald uit de Duitse handleidinggemini-3.8-flash-low · 2026-10-13 · Duits origineel

De synchrone en niet-reentrante functie CanTp_Init initialiseert de CanTp-module [SWS_CanTp_00208]. Deze neemt via parameter CfgPtr een pointer naar de post-build configuratiegegevens (CanTp_ConfigType) over en heeft geen retourwaarde [SWS_CanTp_00208]. De moduleomgeving moet CanTp_Init dwingend aanroepen voordat de module voor verdere verwerkingen kan worden gebruikt [SWS_CanTp_00199].

Tijdens de initialisatie worden alle globale variabelen van de module geïnitialiseerd en worden alle transportprotocolverbindingen in een subtoestand van CANTP_ON gebracht, waarin noch een gesegmenteerde transmissie noch een gesegmenteerde ontvangst actief is [SWS_CanTp_00030]. De ontvangstpaden bevinden zich daarbij in de toestand CANTP_RX_WAIT en de zendpaden in de toestand CANTP_TX_WAIT [SWS_CanTp_00030]. Na succesvolle uitvoering gaat de module over naar de interne toestand CANTP_ON [SWS_CanTp_00170].

Als CanTp_Init wordt aangeroepen wanneer de module zich al in de globale toestand CANTP_ON bevindt, zet de functie de module terug in de toestand Idle, zodat er noch zend- noch ontvangstprocessen lopen [SWS_CanTp_00111].

Als ontwikkelingsfoutdetectie (Development Error Detection) is ingeschakeld, meldt de CanTp-module de fout CANTP_E_UNINIT wanneer de PDU Router of het CAN Interface probeert functies van de module (met uitzondering van CanTp_GetVersionInfo) uit te voeren vóór de aanroep van CanTp_Init [SWS_CanTp_00031].

Deze tekst is gegenereerd door een AI op basis van de specificatie.

Implementer's Guide volgt (complexiteit I2)

functie CanTp_Shutdown [SWS_CanTp_00211] 📄 PDF

void CanTp_Shutdown (void);

This function is called to shutdown the Can Tp module.

DOOR AI GEGENEREERD ongecontroleerd Model: gemini-3.8-flash-medium · Inspanning: medium · Temperatuur: niet regelbaar · Prompt: e5430e2cac5b Herkomst
vertaald uit de Duitse handleidinggemini-3.8-flash-low · 2026-10-13 · Duits origineel

Gebruik en aanroepcontext

De functie CanTp_Shutdown dient ertoe de gehele CanTp-module ordelijk af te sluiten ([SWS_CanTp_00211]). De interface wordt beschikbaar gesteld via het headerbestand CanTp.h en heeft de service-ID 0x02 ([SWS_CanTp_00211]). De aanroep wordt synchroon verwerkt, accepteert geen overdrachtsparameters en levert geen retourwaarde op ([SWS_CanTp_00211]).

Toestandsovergang en opschoning

Bij uitvoering sluit CanTp_Shutdown alle nog openstaande transportprotocolverbindingen, geeft alle gealloceerde resources vrij en brengt de CanTp-module over naar de toestand CANTP_OFF ([SWS_CanTp_00202]). Een wezenlijk aspect van het afbreekgedrag is dat voor nog uitstaande frame-verzendingen of frame-ontvangstprocessen uitdrukkelijk geen enkele notificatie naar bovenliggende lagen mag worden getriggerd ([SWS_CanTp_00200]).

Gelijktijdigheid en randvoorwaarden

De functie is gespecificeerd als niet-re-entrant (Non Reentrant) ([SWS_CanTp_00211]). Deze mag bijgevolg niet gelijktijdig vanuit verschillende uitvoeringscontexten of interruptroutines worden aangeroepen. Specifieke foutcodes of notificaties aan het foutbeheer zijn niet opgenomen in de functionaliteit van de interface.

Deze gebruiksinstructie is automatisch opgesteld op basis van de specificatie AUTOSAR Classic Release R20-11.

Implementer's Guide volgt (complexiteit I1)

functie CanTp_Transmit [SWS_CanTp_00212] 📄 PDF

Std_ReturnType CanTp_Transmit (PduIdType TxPduId, const PduInfoType* PduInfoPtr);

Requests transmission of a PDU.

DOOR AI GEGENEREERD ongecontroleerd Model: gemini-3.8-flash-medium · Inspanning: medium · Temperatuur: niet regelbaar · Prompt: 7a5280a26edd Herkomst Open vragen (1)
vertaald uit de Duitse handleidinggemini-3.8-flash-low · 2026-10-13 · Duits origineel

Gebruik

De functie CanTp_Transmit dient voor het aanvragen van de overdracht van een N-SDU via de CAN-transportlaag [SWS_CanTp_00212]. Als parameters worden de identifier van de over te dragen PDU (TxPduId) en een pointer naar data, lengte en metadata (PduInfoPtr) meegegeven [SWS_CanTp_00212]. De aanroep meldt met E_OK de succesvolle acceptatie of met E_NOT_OK de afwijzing van het verzoek terug [SWS_CanTp_00212]. Terwijl de aanroep synchroon wordt bevestigd, is de afhandeling van de overdracht asynchroon [SWS_CanTp_00176] (Interpretatie: De vermelding “Synchronous” in de specificatietabel heeft vermoedelijk betrekking op het in ontvangst nemen van de aanvraag). Vraag Q-df438ddaa4963aba (open)

Wisselwerking en PDU-verwerking

Bij N-SDU's met metadata slaat de module de adresinformatie op (afhankelijk van het adresseringsformaat zoals Normal, Extended, Mixed 11 bit, Normal fixed of Mixed 29 bit) om deze te gebruiken voor SF-, FF- en CF-N-PDU's en voor de identificatie van FC-N-PDU's [SWS_CanTp_00334]. Worden er geen metadata gebruikt, dan raadpleegt CanTp_Transmit voor de voorbereiding van de SF- of FF-PCI uitsluitend de lengteopgave SduLength en maakt geen gebruik van de N-SDU-databuffer [SWS_CanTp_00225].

Foutafhandeling en gelijktijdigheid

  • Foutcontrole: Als DET geactiveerd is en PduInfoPtr een NULL-pointer is, meldt de functie de fout CANTP_E_PARAM_POINTER en keert zonder verdere actie terug [SWS_CanTp_00321].
  • Kanaalbezetting: Bevindt het toegewezen kanaal zich in de toestand CANTP_TX_PROCESSING of loopt er al een sessie voor de N-SDU-identificatie, dan wordt het transmissieverzoek afgewezen en E_NOT_OK geretourneerd [SWS_CanTp_00123], [SWS_CanTp_00206].
  • Re-entrantie: De service is re-entrant voor verschillende PDU-ID's, maar niet re-entrant voor dezelfde PDU-ID [SWS_CanTp_00212].

Deze tekst is gegenereerd door een AI op basis van de specificatie AUTOSAR Classic R20-11.

Implementer's Guide volgt (complexiteit I2)

functie CanTp_CancelTransmit [SWS_CanTp_00246] 📄 PDF

Std_ReturnType CanTp_CancelTransmit (PduIdType TxPduId);

Requests cancellation of an ongoing transmission of a PDU in a lower layer communication module.

DOOR AI GEGENEREERD ongecontroleerd Model: gemini-3.8-flash-medium · Inspanning: medium · Temperatuur: niet regelbaar · Prompt: f7624766b8a1 Herkomst
vertaald uit de Duitse handleidinggemini-3.8-flash-low · 2026-10-13 · Duits origineel

De synchrone functie CanTp_CancelTransmit verzoekt om het afbreken van een lopende PDU-transmissie in een onderliggende communicatiemodule [SWS_CanTp_00246] en zet daarmee de annulering van het zendproces in gang [SWS_CanTp_00274]. Als parameter wordt de identificatie van de betreffende PDU (TxPduId) meegegeven [SWS_CanTp_00246]. Als retourwaarde signaleert E_OK de succesvolle uitvoering van het afbreken door de doelmodule, terwijl E_NOT_OK een afwijzing aangeeft [SWS_CanTp_00246].

Na de functieaanroep wordt de transmissie op de betreffende verbinding afgebroken [SWS_CanTp_00243]. Is het afbreken succesvol uitgevoerd, dan roept de module CanTp verplicht de bevestiging PduR_CanTpTxConfirmation met het negatieve resultaat E_NOT_OK aan om de hogere lagen over het afbreken te informeren [SWS_CanTp_00255].

Bij ingeschakelde ontwikkelingsfoutdetectie (Development Error Detection) controleert CanTp_CancelTransmit de geldigheid van TxPduId: bij een ongeldige parameter wordt de ontwikkelingsfout CANTP_E_PARAM_ID gegenereerd en wordt E_NOT_OK geretourneerd [SWS_CanTp_00254]. Indien het afbreken wordt aangevraagd voor een N-SDU die zich momenteel niet in het transmissieproces bevindt, meldt de module de runtimefout CANTP_E_OPER_NOT_SUPPORTED aan de Default Error Tracer (DET) en levert eveneens E_NOT_OK op [SWS_CanTp_00254].

Wat betreft concurrency is de functie reentrant voor verschillende PDU-ID's, maar mag deze voor dezelfde TxPduId niet gelijktijdig worden aangeroepen [SWS_CanTp_00246].

Deze gebruiksinstructie is automatisch opgesteld op basis van de AUTOSAR-specificatie.

Implementer's Guide volgt (complexiteit I2)

functie CanTp_CancelReceive [SWS_CanTp_00257] 📄 PDF

Std_ReturnType CanTp_CancelReceive (PduIdType RxPduId);

Requests cancellation of an ongoing reception of a PDU in a lower layer transport protocol module.

DOOR AI GEGENEREERD ongecontroleerd Model: gemini-3.8-flash-medium · Inspanning: medium · Temperatuur: niet regelbaar · Prompt: ccccdf72ba41 Herkomst
vertaald uit de Duitse handleidinggemini-3.8-flash-low · 2026-10-13 · Duits origineel

De functie CanTp_CancelReceive breekt de lopende ontvangst van een PDU in een onderliggende transportprotocolmodule synchroon af [SWS_CanTp_00257]. Deze is beschikbaar via het headerbestand CanTp.h en heeft service-ID 0x4c [SWS_CanTp_00257].

Gebruik en aanroepvoorwaarden

Via de ingangsparameter RxPduId wordt de identificatie van de af te breken PDU meegegeven [SWS_CanTp_00257]. De aanroep wordt synchroon verwerkt en is gespecificeerd als niet-reentrant (Non Reentrant) [SWS_CanTp_00257]. Als retourwaarde levert de interface van het type Std_ReturnType:

Foutafhandeling

Bij ingeschakelde ontwikkelingsfoutdetectie (Development Error Detection) valideert de functie de parameter RxPduId [SWS_CanTp_00260]:

  • Is de waarde van RxPduId ongeldig, dan meldt CanTp_CancelReceive de ontwikkelingsfout CANTP_E_PARAM_ID en geeft E_NOT_OK terug [SWS_CanTp_00260].
  • Wordt een afbreking aangevraagd voor een N-SDU die zich momenteel niet in het lopende ontvangstproces bevindt, dan meldt de module de runtimefout CANTP_E_OPER_NOT_SUPPORTED aan de Default Error Tracer en levert E_NOT_OK terug [SWS_CanTp_00260].

Samenspel met naburige modules

Als het afbreken van de ontvangst succesvol is uitgevoerd, roept CanTp de callback-functie PduR_CanTpRxIndication aan met het notificatieresultaat E_NOT_OK om de bovenliggende laag over het afbreken te informeren [SWS_CanTp_00263].

Deze gebruiksinstructie is gebaseerd op de specificatie AUTOSAR Classic R20-11 en is automatisch gegenereerd.

Implementer's Guide volgt (complexiteit I1)

functie CanTp_ChangeParameter [SWS_CanTp_00302] 📄 PDF

Std_ReturnType CanTp_ChangeParameter (PduIdType id, TPParameterType parameter, uint16 value);

Request to change a specific transport protocol parameter (e.g. block size).

DOOR AI GEGENEREERD ongecontroleerd Model: gemini-3.8-flash-medium · Inspanning: medium · Temperatuur: niet regelbaar · Prompt: 2d391dbc31e8 Herkomst
vertaald uit de Duitse handleidinggemini-3.8-flash-low · 2026-10-13 · Duits origineel

De synchrone functie CanTp_ChangeParameter dient voor de runtimewijziging van een specifieke transportprotocolparameter zoals bijvoorbeeld de blokgrootte ([SWS_CanTp_00302]). De service, die beschikbaar wordt gesteld via het headerbestand CanTp.h, neemt de PDU-identificatie (id), de identificatie van de parameter (parameter) en de nieuw in te stellen waarde (value) aan ([SWS_CanTp_00302]). Bij succesvolle uitvoering retourneert de functie E_OK; als de wijziging mislukt of wordt afgewezen, levert deze E_NOT_OK op ([SWS_CanTp_00302]).

Met betrekking tot concurrency en aanroepvoorwaarden gelden de volgende specificaties:

  • De interface is niet-re-entrant (Non Reentrant) uitgevoerd ([SWS_CanTp_00302]).
  • Als de betreffende N-SDU zich op het moment van de aanroep al in een lopend ontvangstproces bevindt, breekt CanTp_ChangeParameter onmiddellijk af, retourneert E_NOT_OK en wijzigt de parameterwaarde niet ([SWS_CanTp_00304]).

Er bestaat een bijzondere wisselwerking bij generieke verbindingen: als de functie wordt aangeroepen voor een N-SDU met MetaData, dan wordt de parameterwijziging toegepast op alle generieke verbindingen en overgenomen voor alle daaropvolgende ontvangstprocessen ([SWS_CanTp_00338]).

Deze gebruiksinstructie is geautomatiseerd gegenereerd op basis van de specificatie-eisen.

Implementer's Guide volgt (complexiteit I1)

functie CanTp_ReadParameter [SWS_CanTp_00323] 📄 PDF

Std_ReturnType CanTp_ReadParameter (PduIdType id, TPParameterType parameter, uint16* value);

This service is used to read the current value of reception parameters BS and STmin for a specified N - SDU.

DOOR AI GEGENEREERD ongecontroleerd Model: gemini-3.8-flash-medium · Inspanning: medium · Temperatuur: niet regelbaar · Prompt: 949f6cb3df18 Herkomst
vertaald uit de Duitse handleidinggemini-3.8-flash-low · 2026-10-13 · Duits origineel

Gebruik

De synchrone functie CanTp_ReadParameter dient voor het uitlezen van de actuele waarde van de ontvangstparameters BS (Block Size) of STmin (Separation Time minimum) voor een gespecificeerde ontvangst-N-SDU [SWS_CanTp_00323]. De declaratie is beschikbaar via het headerbestand CanTp.h [SWS_CanTp_00323].

De interface heeft de volgende parameters:

  • id (in): Identificator van de ontvangen N-SDU (type PduIdType), waarvoor de ontvangstparameter wordt gelezen [SWS_CanTp_00323].
  • parameter (in): Bepaalt de uit te lezen parameter (BS of STmin van het type TPParameterType) [SWS_CanTp_00323].
  • value (out): Pointer naar uint16, waarmee de uitgelezen parameterwaarde beschikbaar wordt gesteld [SWS_CanTp_00323].

Als retourwaarde levert de functie Std_ReturnType op; hierbij signaleert E_OK de acceptatie van het verzoek en E_NOT_OK de afwijzing [SWS_CanTp_00323].

Foutafhandeling

Voor zover de ontwikkelingsfoutdetectie (Development Error Detection) is geactiveerd, controleert CanTp_ReadParameter de geldigheid van de parameters id en parameter [SWS_CanTp_00324]. Als een van deze parameters ongeldig is, meldt de functie de ontwikkelingsfout CANTP_E_PARAM_ID en retourneert E_NOT_OK [SWS_CanTp_00324].

Gelijktijdigheid en beperkingen

De functie is gespecificeerd als niet-re-entrant (Non Reentrant) [SWS_CanTp_00323]. Aanroepers moeten gelijktijdige toegang tot dezelfde interface vermijden.

Deze tekst is gegenereerd door een AI op basis van de specificatiedocumenten van AUTOSAR R20-11.

Implementer's Guide volgt (complexiteit I1)

functie CanTp_MainFunction [SWS_CanTp_00213] 📄 PDF

void CanTp_MainFunction (void);

The main function for scheduling the CAN TP.

DOOR AI GEGENEREERD ongecontroleerd Model: gemini-3.8-flash-medium · Inspanning: medium · Temperatuur: niet regelbaar · Prompt: 64a7b42182e1 Herkomst Open vragen (1)
vertaald uit de Duitse handleidinggemini-3.8-flash-low · 2026-10-13 · Duits origineel

De functie CanTp_MainFunction dient als centraal instappunt voor de periodieke scheduling van het CAN-transportprotocol (CAN TP) [SWS_CanTp_00213], [SWS_CanTp_00164]. Deze heeft het service-ID 0x06, heeft de signatuur void CanTp_MainFunction(void) en is beschikbaar via de header SchM_CanTp.h [SWS_CanTp_00213]. De functie accepteert geen parameters en levert geen retourwaarde [SWS_CanTp_00213].

Aanroepcontext en tijdsbesturing

De aanroep wordt conform de benodigde periodeduur geïnitieerd door de Schedule Manager of door de module Free Running Timer [SWS_CanTp_00164]. Binnen de module neemt CanTp_MainFunction de tijdsbewaking en besturing van de protocolafloop voor zijn rekening [SWS_CanTp_00164]. Concreet is de functie betrokken bij de afhandeling van de volgende timers en tijdcondities:

  • De protocoltimeouts van de transmissie en bevestiging: N_As, N_Bs, N_Cs evenals N_Ar, N_Br en N_Cr [SWS_CanTp_00164].
  • De naleving van de minimale frameseparationtijd STMmin [SWS_CanTp_00164].

Foutafhandeling en gelijktijdigheid

Specifieke foutcodes voor DET of DEM zijn in de payload niet gedefinieerd voor deze functie. Interpretatie: Als cyclisch aangeroepen schedulingfunctie is CanTp_MainFunction vermoedelijk niet-re-entrant en vereist deze een consistente aanroepsnelheid om een correcte decrementatie van de interne timers te waarborgen. Vraag Q-2fe22e31085abf49 (open)

Deze tekst is door een AI gegenereerd op basis van de AUTOSAR-specificatie R20-11.

Implementer's Guide volgt (complexiteit I1)

functie CanTp_RxIndication [SWS_CanTp_00214] 📄 PDF

void CanTp_RxIndication (PduIdType RxPduId, const PduInfoType* PduInfoPtr);

Indication of a received PDU from a lower layer communication interface module.

DOOR AI GEGENEREERD ongecontroleerd Model: gemini-3.8-flash-medium · Inspanning: medium · Temperatuur: niet regelbaar · Prompt: 38e732456055 Herkomst
vertaald uit de Duitse handleidinggemini-3.8-flash-low · 2026-10-13 · Duits origineel

Gebruik en semantiek

De synchrone functie [SWS_CanTp_00214] meldt aan de CAN-transportmodule de ontvangst van een N-PDU door een onderliggende communicatie-interfacemodule. De aanroep geeft de identificatie van de ontvangen PDU door (RxPduId) alsook via de pointer PduInfoPtr de lengte (SduLength), payload (SduDataPtr) en bijbehorende metadata. De functie heeft geen retourwaarde.

Gelijktijdigheid en aanroepcontext

De functie is re-entrant voor verschillende PDU-ID's, maar niet re-entrant voor dezelfde PDU-ID [SWS_CanTp_00214]. CanTp_RxIndication mag in interruptcontext worden aangeroepen, bijvoorbeeld direct vanuit de CAN-ontvangstinterrupt [SWS_CanTp_00235].

Samenspel bij generieke verbindingen

Bij aanroep voor Single Frames (SF) of First Frames (FF) met metadata slaat CanTp de aanwezige adresinformatie op (zoals N_SA en N_TA bij Normal-fixed- of Mixed-29-bit-adressering). Deze informatie dient voor de opbouw van de verbinding naar de bovenliggende laag, het verzenden van Flow Control-frames (FC) en de herkenning van Consecutive Frames (CF) [SWS_CanTp_00330]. Bij opeenvolgende CF- en ontvangen FC-frames controleert CanTp de adresgegevens van de metadata tegen de opgeslagen waarden [SWS_CanTp_00333], [SWS_CanTp_00336].

Foutafhandeling en padding

Indien DET is geactiveerd en PduInfoPtr een NULL-pointer is, meldt de functie de fout CANTP_E_PARAM_POINTER en keert zonder actie terug [SWS_CanTp_00322]. Als de paddingcontrole voor frames met een payload tot 8 bytes is geactiveerd (CanTpRxPaddingActivation resp. CanTpTxPaddingActivation gelijk aan CANTP_ON), wordt bij lengtefouten de runtimefout CANTP_E_PADDING aan de DET gemeld:

  • Een SF met SduLength < 8 wordt afgewezen [SWS_CanTp_00345].
  • Een laatste CF met SduLength != 8 breekt de lopende ontvangst af via PduR_CanTpRxIndication() met E_NOT_OK [SWS_CanTp_00346].
  • Een ontvangen FC met SduLength < 8 breekt de lopende verzending af via PduR_CanTpTxConfirmation() met E_NOT_OK [SWS_CanTp_00349].

Deze tekst is gegenereerd door een AI en dient als oriëntatiehulp. Doorslaggevend is de AUTOSAR-specificatie.

Implementer's Guide volgt (complexiteit I2)

functie CanTp_TxConfirmation [SWS_CanTp_00215] 📄 PDF

void CanTp_TxConfirmation (PduIdType TxPduId, Std_ReturnType result);

The lower layer communication interface module confirms the transmission of a PDU, or the failure to transmit a PDU.

DOOR AI GEGENEREERD ongecontroleerd Model: gemini-3.8-flash-medium · Inspanning: medium · Temperatuur: niet regelbaar · Prompt: 2541d17fed91 Herkomst
vertaald uit de Duitse handleidinggemini-3.8-flash-low · 2026-10-13 · Duits origineel

De CanTp-module stelt de synchrone callbackfunctie CanTp_TxConfirmation (service-ID 0x40) beschikbaar via de header CanTp.h om bevestigingsaanroepen voor verzonden PDU's in ontvangst te nemen [SWS_CanTp_00076] [SWS_CanTp_00215]. Via deze interface meldt de onderliggende communicatie-interfacemodule de succesvolle verzending of het mislukken van een PDU-overdracht [SWS_CanTp_00215].

Parameters en retourwaarden

De functie levert geen retourwaarde op (void) en verwacht twee ingangsparameters [SWS_CanTp_00215]:

  • TxPduId: ID van de overgedragen PDU [SWS_CanTp_00215].
  • result: Overdrachtsstatus. De waarde E_OK bevestigt de succesvolle overdracht, terwijl E_NOT_OK het mislukken van de PDU-overdracht signaleert [SWS_CanTp_00215].

Foutafhandeling

Wordt CanTp_TxConfirmation aangeroepen met de resultaatwaarde E_NOT_OK, dan breekt de CanTp-module de bijbehorende transmissiesessie af [SWS_CanTp_00355].

Gelijktijdigheid en uitvoeringscontext

Wat betreft gelijktijdigheid is de functie re-entrant voor verschillende PDU-ID's, maar niet re-entrant voor dezelfde PDU-ID [SWS_CanTp_00215]. Deze moet aanroepbaar zijn in interruptcontext en mag bijvoorbeeld direct vanuit de CAN-zend-interrupt worden aangeroepen [SWS_CanTp_00236].

Deze gebruiksinstructie is geautomatiseerd gegenereerd op basis van de specificatie van AUTOSAR Classic Release R20-11.

Implementer's Guide volgt (complexiteit I2)

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

Record
AUTOSAR/AP/record/CP_MOD_CanTp
Status
unspecified
Version
AUTOSAR/AP/record/CP_MOD_CanTp@rel:R20-11#6285c794
Content hash
6285c794
Source
https://www.autosar.org/fileadmin/standards/R20-11/CP/AUTOSAR_SWS_CANTransportLayer.pdf#nameddest=SWS_CanTp_00208

Initialisatie en status

This function returns the version information of the Can Tp module.

void CanTp_GetVersionInfo (Std_VersionInfoType* versioninfo);
CanTp_Init functie

This function initializes the Can Tp module.

void CanTp_Init (const CanTp_ConfigType* CfgPtr);

Diensten

Requests cancellation of an ongoing reception of a PDU in a lower layer transport protocol module.

Std_ReturnType CanTp_CancelReceive (PduIdType RxPduId);

Requests cancellation of an ongoing transmission of a PDU in a lower layer communication module.

Std_ReturnType CanTp_CancelTransmit (PduIdType TxPduId);

Request to change a specific transport protocol parameter (e.g. block size).

Std_ReturnType CanTp_ChangeParameter (PduIdType id, TPParameterType parameter, uint16 value);

This service is used to read the current value of reception parameters BS and STmin for a specified N - SDU.

Std_ReturnType CanTp_ReadParameter (PduIdType id, TPParameterType parameter, uint16* value);

This function is called to shutdown the Can Tp module.

void CanTp_Shutdown (void);

Requests transmission of a PDU.

Std_ReturnType CanTp_Transmit (PduIdType TxPduId, const PduInfoType* PduInfoPtr);

Callbacks

Indication of a received PDU from a lower layer communication interface module.

void CanTp_RxIndication (PduIdType RxPduId, const PduInfoType* PduInfoPtr);

The lower layer communication interface module confirms the transmission of a PDU, or the failure to transmit a PDU.

void CanTp_TxConfirmation (PduIdType TxPduId, Std_ReturnType result);

Cyclisch

The main function for scheduling the CAN TP.

void CanTp_MainFunction (void);

Typen

Data structure type for the post - build configuration parameters.