DEENESPTFRRUARHIKOZHNL

PDU Router (PduR)

ModulPduR (PDU Router)
BSW-Modul-ID51
Standard-Header#include "PduR.h"
SWS-SpezifikationAUTOSAR_SWS_PDURouter.pdf
ClusterCommunication Services

ModulegidsAI-GEGENEREERD

Bemiddelt I-PDU's via een statische routingtabel ongewijzigd tussen bovenliggende en onderliggende communicatiemodules.
DOOR AI GEGENEREERD ongecontroleerd Model: claude-opus-5-5 · Inspanning: high · Temperatuur: niet regelbaar · Prompt: 3a20c4ee9a26 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

Bemiddelt I-PDU's via een statische routingtabel ongewijzigd tussen bovenliggende en onderliggende communicatiemodules.

De PDU Router bemiddelt I-PDU's tussen bovenliggende modules zoals Com en DCM, Communication Interfaces en transportprotocollen. Hij zet daarbij alleen de I-PDU-ID's om langs geconfigureerde routingpaden en wijzigt de inhoud niet [SWS_PduR_00160]. Tot zijn taken behoren verzenden, ontvangst, TriggerTransmit, gesegmenteerde TP-overdrachten en gateways met optionele FIFO-buffer. Er wordt uitsluitend gerouteerd in de toestand PDUR_ONLINE na succesvolle PduR_Init [SWS_PduR_00328]. Tijdens runtime kunnen routingpadgroepen worden geschakeld via PduR_EnableRouting en PduR_DisableRouting.

De PDU Router bemiddelt I-PDU's tussen bovenliggende modules zoals Com en DCM, Communication Interfaces zoals CanIf, FrIf en LinIf alsmede transportprotocollen. Daarbij wijzigt hij de I-PDU's niet [SWS_PduR_00160] en routeert hij alleen langs geconfigureerde routingpaden [SWS_PduR_00162]. Zijn kernprestatie is de omzetting van de I-PDU-ID's op het verzendpad evenals op het bevestigings- en indicatiepad [SWS_PduR_00766]. De interfaces zijn generiek; de plaatshouders <Up>, <Lo> en <LoTp> vloeien voort uit de configuratie PduRBswModules [SWS_PduR_00504].

kontext cluster_oben Obere Module (<Up>) cluster_if Communication Interfaces (<Lo>) cluster_tp Transportprotokolle (<LoTp>) Com Com PduR PduR Routing-Tabellen, I-PDU-ID-Umsetzung, Gateway-Puffer Com->PduR PduR_ComTransmit Dcm Dcm Dcm->PduR PduR_<User:Up>Transmit BswM BswM BswM->PduR PduR_EnableRouting, PduR_DisableRouting PduR->Com Com_RxIndication, Com_TxConfirmation, Com_TriggerTransmit PduR->Dcm Dcm_StartOfReception, Dcm_CopyRxData, Dcm_CopyTxData, Dcm_TpRxIndication, Dcm_TpTxConfirmation Det Det PduR->Det Ontwikkelings- en runtimefouten CanIf CanIf PduR->CanIf <Lo>_Transmit FrIf FrIf PduR->FrIf LinIf LinIf PduR->LinIf CanTp CanTp PduR->CanTp <LoTp>_Transmit FrTp FrTp PduR->FrTp LinTp LinTp (in LinIf) PduR->LinTp CanIf->PduR PduR_<User:Lo>RxIndication, TxConfirmation, TriggerTransmit CanTp->PduR PduR_<User:LoTp>StartOfReception, CopyRxData, CopyTxData, RxIndication, TxConfirmation

Contextdiagram: De PduR bevindt zich tussen bovenliggende modules en IF- respectievelijk TP-modules; BswM schakelt padgroepen, fouten gaan naar de DET. Bronnen: [SWS_PduR_00504], SWS PDU Router p. 16

De PduR kent alleen de toestanden PDUR_UNINIT en PDUR_ONLINE [SWS_PduR_00324]. Er wordt uitsluitend gerouteerd in PDUR_ONLINE [SWS_PduR_00328]. Daar komt hij door PduR_Init(ConfigPtr) [SWS_PduR_00334]. Voordien melden alle functies behalve PduR_Init en PduR_GetVersionInfo de fout PDUR_E_UNINIT, voor zover de foutdetectie actief is [SWS_PduR_00119].

zustaende Powerup Powerup UNINIT PDUR_UNINIT geen routing; API's behalve PduR_Init en PduR_GetVersionInfo melden PDUR_E_UNINIT (bij PduRDevErrorDetect) Powerup->UNINIT immediate ONLINE PDUR_ONLINE routing conform routingtabellen UNINIT->ONLINE PduR_Init(ConfigPtr) zonder fouten: buffers vrijgeven, defaultwaarden instellen, routingpadgroepen volgens configuratie activeren ONLINE->ONLINE erneuter PduR_Init: PDUR_E_UNINIT an DET

Toestandsdiagram: Power-up leidt naar PDUR_UNINIT; alleen een foutloze PduR_Init leidt naar PDUR_ONLINE. Bronnen: [SWS_PduR_00325], [SWS_PduR_00326], SWS PDU Router Afb. 7.2 p. 53

Tijdens bedrijf verzorgt de PduR de volgende processen:

Tijdens runtime schakelen PduR_EnableRouting en PduR_DisableRouting gehele routingpadgroepen [SWS_PduR_00615] [SWS_PduR_00617], typisch aangestuurd door de BswM. Aanroepen op een gedeactiveerd pad eindigen met E_NOT_OK [SWS_PduR_00717]. Ontwikkelfouten zoals PDUR_E_PDU_ID_INVALID meldt de PduR aan de DET [SWS_PduR_00100]. FIFO-verliezen meldt hij als PDUR_E_PDU_INSTANCES_LOST [SWS_PduR_00670]. Een eigen foutafhandeling op interface-paden is er niet; retourwaarden gaan naar de bron SWS PDU Router p. 46.

Rol en systeemgrens: I-PDU-bemiddeling tussen bovenliggende modules, interfaces en transportprotocollen

De PDU Router (PduR) is de centrale bemiddelingsinstantie van de klassieke communicatiestack. Hij neemt I-PDU's van een bronmodule in ontvangst en draagt deze ongewijzigd en consistent over aan een of meer doelmodules [SWS_PduR_00160]. Er wordt uitsluitend gerouteerd langs de geconfigureerde routingpaden [SWS_PduR_00162]. Een pad is eenduidig bepaald door twee gegevens: de bron-I-PDU-ID uit de PduR-configuratie en de doel-I-PDU-ID's uit de configuraties van de aangeroepen doelmodules [SWS_PduR_00161]. De kernprestatie van de PduR is daarom de omzetting van I-PDU-ID's. Deze geldt voor het verzendpad evenals voor het bevestigings- en indicatiepad [SWS_PduR_00766]. Elke module kiest zijn handle-ID's zelf; de configuratie koppelt ze via de 'globale' Pdu ECU Configuration Afb. 3.13 p. 192.

Boven de PduR liggen modules zoals Com en DCM. Daaronder liggen Communication Interfaces zoals CanIf, FrIf en LinIf alsmede transportprotocollen zoals CanTp, FrTp en LinTp SWS PDU Router p. 24. De interfaces zijn generiek gedefinieerd. De plaatshouders <Up>, <Lo> en <LoTp> worden vervangen via de in PduRBswModules gerefereerde moduleconfiguratie, bij CDD's via hun apiServicePrefix [SWS_PduR_00504] SWS PDU Router Afb. 10.2 p. 95. Ondersteunt een onderliggende module zowel TP als IF, dan komen de tussenvoegsels Tp en If erbij [SWS_PduR_00800].

kontext cluster_oben Obere Module (<Up>) cluster_if Communication Interfaces (<Lo>) cluster_tp Transportprotokolle (<LoTp>) Com Com PduR PduR Routing-Tabellen, I-PDU-ID-Umsetzung, Gateway-Puffer Com->PduR PduR_ComTransmit Dcm Dcm Dcm->PduR PduR_<User:Up>Transmit BswM BswM BswM->PduR PduR_EnableRouting, PduR_DisableRouting PduR->Com Com_RxIndication, Com_TxConfirmation, Com_TriggerTransmit PduR->Dcm Dcm_StartOfReception, Dcm_CopyRxData, Dcm_CopyTxData, Dcm_TpRxIndication, Dcm_TpTxConfirmation Det Det PduR->Det Ontwikkelings- en runtimefouten CanIf CanIf PduR->CanIf <Lo>_Transmit FrIf FrIf PduR->FrIf LinIf LinIf PduR->LinIf CanTp CanTp PduR->CanTp <LoTp>_Transmit FrTp FrTp PduR->FrTp LinTp LinTp (in LinIf) PduR->LinTp CanIf->PduR PduR_<User:Lo>RxIndication, TxConfirmation, TriggerTransmit CanTp->PduR PduR_<User:LoTp>StartOfReception, CopyRxData, CopyTxData, RxIndication, TxConfirmation

Contextdiagram: De PduR ligt tussen bovenliggende modules en onderliggende IF- respectievelijk TP-modules; BswM schakelt routingpadgroepen, fouten gaan naar de DET. Bronnen: [SWS_PduR_00504], [SWS_PduR_00615], [SWS_PduR_00119], SWS PDU Router p. 16

Als PduRZeroCostOperation is ingesteld en alle routingpaden pre-compile zijn, mogen de naburige modules elkaar direct aanroepen [SWS_PduR_00287]. Als minstens één pad niet pre-compile is, moet de generator een fout melden [SWS_PduR_00619] SWS PDU Router p. 56. Ongebruikte kenmerken moet de generator wegoptimaliseren, dus TP, IF, gateway en FIFO [SWS_PduR_00764].

Levenscyclus: van PDUR_UNINIT via PduR_Init naar PDUR_ONLINE

De PduR bezit precies één toestandsmachine [SWS_PduR_00644]. Deze heeft de toestanden PDUR_UNINIT en PDUR_ONLINE uit PduR_StateType [SWS_PduR_00324] [SWS_PduR_00742]. Na het inschakelen bevindt de module zich in PDUR_UNINIT [SWS_PduR_00325]. Na succesvolle PduR_Init wisselt deze naar PDUR_ONLINE [SWS_PduR_00326]. Routing vindt alleen plaats in PDUR_ONLINE [SWS_PduR_00328]; in PDUR_UNINIT wordt niets gerouteerd [SWS_PduR_00330] SWS PDU Router Afb. 7.2 p. 53. Een ouder diagram toont aanvullend een toestand PDUR_REDUCED na foutieve initialisatie SWS PDU Router (alt) p. 30. Voor R20-11 geldt deze toestand niet, want hier zijn er slechts twee toestanden.

zustaende Powerup Powerup UNINIT PDUR_UNINIT geen routing; API's behalve PduR_Init en PduR_GetVersionInfo melden PDUR_E_UNINIT (bij PduRDevErrorDetect) Powerup->UNINIT immediate ONLINE PDUR_ONLINE routing conform routingtabellen UNINIT->ONLINE PduR_Init(ConfigPtr) zonder fouten: buffers vrijgeven, defaultwaarden instellen, routingpadgroepen volgens configuratie activeren ONLINE->ONLINE erneuter PduR_Init: PDUR_E_UNINIT an DET

Toestandsdiagram: Na power-up bevindt de PduR zich in PDUR_UNINIT en routeert niet; pas na een foutloze PduR_Init routeert hij in PDUR_ONLINE. Bronnen: [SWS_PduR_00325], [SWS_PduR_00326], [SWS_PduR_00119], [SWS_PduR_00100], SWS PDU Router Afb. 7.2 p. 53

PduR_Init(ConfigPtr) is synchroon en niet-re-entrant [SWS_PduR_00334]. De functie handelt drie zaken af:

Vóór de initialisatie melden alle functies behalve PduR_Init en PduR_GetVersionInfo de fout PDUR_E_UNINIT, voor zover PduRDevErrorDetect actief is [SWS_PduR_00119]. PduR_GetVersionInfo [SWS_PduR_00338] wordt via PduRVersionInfoApi vrijgeschakeld System Template p. 656.

De post-build-gegevens bevinden zich in PduR_PBConfigType en zijn geïmplementeerd in PduR_PBcfg.c [SWS_PduR_00241] [SWS_PduR_00743]. Zij zijn via PduRConfigurationId eenduidig geïdentificeerd [SWS_PduR_00281]. Deze identificatie levert PduR_GetConfigurationId [SWS_PduR_00341] [SWS_PduR_00280] als op uint16 gebaseerde PduR_PBConfigIdType; een regeleenheid kan meerdere selecteerbare configuraties bevatten [SWS_PduR_00771]. Routingtabellen kunnen tijdens post-build-tijd worden geactualiseerd [SWS_PduR_00295], echter alleen in ongeïnitialiseerde toestand [SWS_PduR_00296]. De geheugenbehoefte kan met een nieuwe configuratie toenemen en moet daarom tijdens designtijd worden ingepland SWS PDU Router p. 160.

Communication-interface-paden: Transmit, TriggerTransmit en bevestigingen

Roept een bovenliggende module PduR_<User:Up>Transmit aan [SWS_PduR_00406], dan roept de PduR <Lo>_Transmit aan voor elk doel [SWS_PduR_00625]. Daarbij buffert hij niet [SWS_PduR_00629]. Voor de retourwaarde geldt:

De doelen van een multicast zijn ofwel alle interfaces ofwel alle transportprotocollen, nooit gemengd [SWS_PduR_00633].

CanIf kopieert de gegevens direct bij de Transmit SWS PDU Router Afb. 9.5 p. 100. FrIf en LinIf halen ze daarentegen later op via PduR_<User:Lo>TriggerTransmit [SWS_PduR_00369]. De PduR leidt deze aanroep door naar <Up>_TriggerTransmit [SWS_PduR_00430] en geeft de retourwaarde daarvan terug [SWS_PduR_00661] SWS PDU Router Afb. 9.6 p. 101. PduR_<User:Lo>TxConfirmation [SWS_PduR_00365] wordt inclusief resultaat doorgegeven aan <Up>_TxConfirmation [SWS_PduR_00627]. Bij multicast gebeurt dat pas na de laatste bevestiging [SWS_PduR_00589].

Verzenden van een I-PDU via Communication InterfacesComPduRCanIfFrIfPduR_ComTransmit(TxPduId, PduInfoPtr)Quell-I-PDU-ID in Ziel-I-PDU-ID umsetzenaltBestemming met directe gegevenslevering (CanIf)CanIf_Transmit(PduId, PduInfoPtr)copy data()Std_ReturnTypeBestemming met TriggerTransmit (FrIf, LinIf)FrIf_Transmit(PduId, PduInfoPtr)set flag()Std_ReturnTypeRetourwaarde (singlecast ongewijzigd)Use Case: Later: verzendtijdstip in FlexRay-cyclusPduR_<User:Lo>TriggerTransmit(TxPduId, PduInfoPtr)Com_TriggerTransmit(TxPduId, PduInfoPtr)copy buffer()E_OK, SduLengthRetourwaarde ongewijzigdUse Case: Na de overdrachtPduR_<User:Lo>TxConfirmation(TxPduId, result)Com_TxConfirmation(TxPduId, result)Bevestiging via CanIf verloopt identiek;bij multicast pas na de laatste bevestiging

Sequentiediagram: Verzenden vanuit Com met directe gegevensbeschikbaarstelling (CanIf) of met vertraagde gegevensopvraag via TriggerTransmit (FrIf), telkens met aansluitende bevestiging. Bronnen: [SWS_PduR_00625], [SWS_PduR_00430], [SWS_PduR_00627], SWS PDU Router Afb. 9.5 p. 100, SWS PDU Router Afb. 9.6 p. 101

Bij ontvangst leidt PduR_<User:Lo>RxIndication [SWS_PduR_00362] tot een aanroep van <Up>_RxIndication voor elk bovenliggend doel [SWS_PduR_00621]; 1:n wordt ondersteund [SWS_PduR_00164] SWS PDU Router Afb. 9.1 p. 97. De lengte controleert de PduR noch bij lokale ontvangst [SWS_PduR_00744] noch bij lokaal verzenden [SWS_PduR_00745].

Transportprotocol-paden: gesegmenteerde I-PDU's tussen DCM en TP-modules

Bij TP-verzenden roept de PduR <LoTp>_Transmit aan voor elk doel [SWS_PduR_00634]. De gegevens haalt de TP-module paagsgewijs op via PduR_<User:LoTp>CopyTxData [SWS_PduR_00518]. De PduR leidt elke aanvraag door naar <Up>_CopyTxData [SWS_PduR_00299] en geeft het resultaat door [SWS_PduR_00676] SWS PDU Router Afb. 9.9 p. 104.

Bij multicast moet de bovenliggende laag dezelfde gegevens meermalen leveren. De aanvraag van het eerste doel gaat met TP_CONFPENDING naar de bovenliggende laag [SWS_PduR_00631], alle verdere met TP_DATARETRY [SWS_PduR_00632]. De bovenliggende laag ontvangt na de laatste bevestiging één enkele <Up>_TpTxConfirmation. Deze meldt E_OK als minstens één doel E_OK heeft gemeld [SWS_PduR_00765] SWS PDU Router Afb. 9.10 p. 83.

TP-multicastverzending vanuit de DcmDcmPduRCanTpFrTpPduR_<User:Up>Transmit(TxPduId, PduInfoPtr)CanTp_Transmit(PduId, PduInfoPtr)Std_ReturnTypeFrTp_Transmit(PduId, PduInfoPtr)Std_ReturnTypeStd_ReturnTypeloopvoor elke positie van de overdrachtPduR_<User:LoTp>CopyTxData(id, info, retry, availableDataPtr)Dcm_CopyTxData(…)TpDataState = TP_CONFPENDINGBufReq_ReturnTypeBufReq_ReturnTypePduR_<User:LoTp>CopyTxData(id, info, retry, availableDataPtr)Dcm_CopyTxData(…)TpDataState = TP_DATARETRYBufReq_ReturnTypeBufReq_ReturnTypePduR_<User:LoTp>TxConfirmation(id, result)PduR_<User:LoTp>TxConfirmation(id, result)na de laatste bevestiging:E_OK, als minimaal één bestemming E_OK melddeDcm_TpTxConfirmation(id, result)

Sequentiediagram: Bij TP-multicast vanuit het DCM vraagt de PduR dezelfde gegevens per doel op met TP_CONFPENDING respectievelijk TP_DATARETRY en vat hij de bevestigingen samen. Bronnen: [SWS_PduR_00634], [SWS_PduR_00631], [SWS_PduR_00632], [SWS_PduR_00765], SWS PDU Router Afb. 9.10 p. 83

De TP-ontvangst begint met PduR_<User:LoTp>StartOfReception [SWS_PduR_00507]. De PduR leidt deze door naar <Up>_StartOfReception [SWS_PduR_00549] en geeft de retourwaarde daarvan ongewijzigd terug [SWS_PduR_00623]. Daarna volgen twee doorzendingen:

Een aanroep met SduLength 0 vraagt de beschikbare buffer respectievelijk de beschikbare gegevens op [SWS_PduR_00740] SWS PDU Router Afb. 9.4 p. 99. Afbrekingen geeft de PduR door aan elk doel. PduR_<User:Up>CancelTransmit leidt tot <Lo>_CancelTransmit respectievelijk <LoTp>_CancelTransmit [SWS_PduR_00769] [SWS_PduR_00723] [SWS_PduR_00724]. PduR_<User:Up>CancelReceive leidt tot <LoTp>_CancelReceive [SWS_PduR_00727].

TP-Empfang von CanTp an DcmCanTpPduRDcmPduR_<User:LoTp>StartOfReception(id, info, TpSduLength, bufferSizePtr)Dcm_StartOfReception(…)BUFREQ_OK, bufferSizePtrRetourwaarde ongewijzigdloopvoor elk volgend segmentPduR_<User:LoTp>CopyRxData(id, info, bufferSizePtr)Dcm_CopyRxData(…)copy data()BufReq_ReturnTypeBufReq_ReturnTypePduR_<User:LoTp>RxIndication(id, result)Dcm_TpRxIndication(id, result)

Sequentiediagram: Bij TP-ontvangst van CanTp naar DCM geeft de PduR StartOfReception, de CopyRxData-lus en RxIndication 1:1 door. Bronnen: [SWS_PduR_00549], [SWS_PduR_00428], [SWS_PduR_00429], SWS PDU Router Afb. 9.4 p. 99

Gateway-bedrijf: onmiddellijke doorzending, FIFO-buffer en on-the-fly-TP

Tussen Communication Interfaces routeert de PduR 1:n [SWS_PduR_00436] en met onmiddellijke doorzending, dus zonder eigen snelheidsaanpassing [SWS_PduR_00437]. Er wordt alleen IF↔IF of TP↔TP gegatewayed [SWS_PduR_00638]. Voor de doorgegeven lengte geldt:

  • Zonderactieve buffering geeft de PduR het minimum van de ontvangen lengte en de geconfigureerde doellengte door [SWS_PduR_00783].
  • Met buffering kopieert hij maximaal PduRPduMaxLength en verwerpt de rest [SWS_PduR_00746].

Een I-PDU kan tegelijkertijd lokaal naar Com gaan en worden doorgestuurd naar een tweede CAN SWS PDU Router Afb. 9.14 p. 114.

Hoe het doel aan de gegevens komt, legt PduRDestPduDataProvision vast:

Per doel-I-PDU kan een FIFO worden geconfigureerd [SWS_PduR_00307]. FIFO-gedrag geldt vanaf PduRQueueDepth groter dan 1 [SWS_PduR_00785]. Het activiteitendiagram vat de invoer- en uitvoerregels samen [SWS_PduR_00665] [SWS_PduR_00666].

gateway_fifo rx PduR_<SrcLo>RxIndication op gebufferd gateway-pad prov PduRDestPduDataProvision? rx->prov dleer FIFO leeg en geen TxConfirmation openstaand? prov->dleer PDUR_DIRECT tleer FIFO leer? prov->tleer PDUR_TRIGGERTRANSMIT ddirekt <DstLo>_Transmit direkt aufrufen; FIFO bleibt leer dleer->ddirekt ja voll FIFO voll? dleer->voll nein tkopie I-PDU in FIFO kopieren, <DstLo>_Transmit aufrufen tleer->tkopie ja tleer->voll nein flush FIFO legen, PDUR_E_PDU_INSTANCES_LOST aan DET; nieuwe I-PDU behandelen zoals bij lege FIFO voll->flush ja einreihen I-PDU als meest recente item in de wachtrij plaatsen voll->einreihen nein tt PduR_<DstLo>TriggerTransmit ttleer FIFO leer? tt->ttleer ttnok E_NOT_OK retourneren ttleer->ttnok ja ttok oudste item kopiëren en verwijderen; FIFO niet leeg: <DstLo>_Transmit met oudste I-PDU ttleer->ttok nein conf PduR_<DstLo>TxConfirmation (direkte Datenbereitstellung) confnext FIFO niet leeg: <DstLo>_Transmit met oudste I-PDU, daarna verwijderen conf->confnext

Activiteitendiagram: Afhankelijk van de gegevensbeschikbaarstelling en het FIFO-vulniveau wordt een gegatewayde I-PDU direct verzonden, in de wachtrij geplaatst of na een overloop opnieuw gestart; TriggerTransmit en TxConfirmation maken de FIFO leeg. Bronnen: [SWS_PduR_00665], [SWS_PduR_00793], [SWS_PduR_00786], [SWS_PduR_00787], [SWS_PduR_00255], [SWS_PduR_00669], [SWS_PduR_00666], [SWS_PduR_00667], [SWS_PduR_00662]

Voor TP-gateways zijn er twee methoden. Bij direct gatewaying start <DstLoTp>_Transmit in de RxIndication met E_OK [SWS_PduR_00551]. Bij on-the-fly gatewaying start het doorsturen al zodra PduRTpThreshold is bereikt [SWS_PduR_00317]. Dan is slechts één bestemming toegestaan [SWS_PduR_00708], en reeds verzonden gegevens worden niet herhaald [SWS_PduR_00707] SWS PDU Router p. 58. De buffer selecteert de PduR op basis van grootte:

  • Past het bericht in PduRPduMaxLength, dan gebruikt hij de dedicated buffer [SWS_PduR_00797].
  • Anders haalt hij dynamisch een buffer uit PduRTxBuffer [SWS_PduR_00798].

Met de TxConfirmation geeft hij de buffer vrij [SWS_PduR_00637]. Moet de I-PDU bovendien lokaal worden ontvangen, dan roept de PduR <UpTp>_StartOfReception, <UpTp>_CopyRxData en <UpTp>_RxIndication in deze volgorde aan [SWS_PduR_00789]. Hiervoor moet hij bufferen, omdat de DCM niets van de gateway weet SWS PDU Router p. 112.

On-the-fly gateway van een TP-I-PDU van CAN1 naar CAN2CanTp (CAN1, Quelle)PduRCanTp (CAN2, Ziel)PduR_<User:LoTp>StartOfReception(id, info, TpSduLength, bufferSizePtr)Buffer selecteren: specifiek bij TpSduLength ≤ PduRPduMaxLength,anders dynamisch uit PduRTxBufferBUFREQ_OK (zonder buffer: BUFREQ_E_OVFL)loopbis PduRTpThreshold erreichtPduR_<User:LoTp>CopyRxData(id, info, bufferSizePtr)copy data()BUFREQ_OKCanTp_Transmit(PduId, PduInfoPtr)Std_ReturnTypeloopresterende segmenten, verwevenPduR_<User:LoTp>CopyRxData(…)BUFREQ_OKPduR_<User:LoTp>CopyTxData(id, info, retry, availableDataPtr)BUFREQ_OKPduR_<User:LoTp>RxIndication(id, result)PduR_<User:LoTp>TxConfirmation(id, result)Buffer voor deze bestemming vrijgevenSlechts één bestemmings-TP-module toegestaan;geen heroverdracht van reeds verzonden gegevens

Sequentiediagram: Bij de on-the-fly gateway tussen twee CAN-netwerken begint het doorsturen al bij het bereiken van de drempelwaarde; ontvangst en verzending lopen verstrengeld. Bronnen: [SWS_PduR_00317], [SWS_PduR_00708], [SWS_PduR_00797], [SWS_PduR_00799], [SWS_PduR_00637], SWS PDU Router Afb. 9.15 p. 110

Routing-padgroepen: Routing tijdens runtime schakelen

Routing-padgroepen bundelen paden per netwerk of PDU-type. Ze worden typisch geschakeld door de BswM SWS PDU Router p. 69. Daartoe dienen PduR_EnableRouting(id) [SWS_PduR_00615] en PduR_DisableRouting(id, initialize) [SWS_PduR_00617]; de identifier is van het type uint16 [SWS_PduR_00654]. De activering treedt direct in werking [SWS_PduR_00715]. Bij het deactiveren gelden de volgende regels:

Latere versies sommen de getroffen functies expliciet op SWS PDU Router p. 69.

routinggruppen aufruf PduR_EnableRouting(id) resp. PduR_DisableRouting(id, initialize) exist Routing-Pfadgruppe id existiert? aufruf->exist det PduRDevErrorDetect aktiv? exist->det nein art Aufruf? exist->art ja meld PDUR_E_ROUTING_PATH_GROUP_ID_INVALID melden det->meld ja keine Terugkeer zonder actie det->keine nein meld->keine ein Groep direct activeren: opvolgende Transmit wordt direct afgehandeld art->ein EnableRouting aus Gruppe deaktivieren art->aus DisableRouting fifo Paden met FIFO (PduRQueueDepth > 1): FIFO legen, PDUR_E_PDU_INSTANCES_LOST aus->fifo init initialize = TRUE: afzonderlijke buffer op defaultwaarde initialize = FALSE: actuele waarde behouden fifo->init gesperrt API's met I-PDU-ID van een gedeactiveerd pad: E_NOT_OK zonder verdere actie init->gesperrt

Activiteitendiagram: Bij een onbekend groeps-ID keert de aanroep zonder actie terug (eventueel met DET-melding); anders wordt de groep direct geactiveerd resp. gedeactiveerd, met FIFO-lediging en bufferbehandeling. Bronnen: [SWS_PduR_00647], [SWS_PduR_00648], [SWS_PduR_00716], [SWS_PduR_00649], [SWS_PduR_00715], [SWS_PduR_00663], [SWS_PduR_00717]

De Mode Management Guide beveelt de padgroepen aan voor I-PDU's zonder Com-I-PDU-groep, zoals voor LdCom. Schakelen gebeurt via BswM-regels, bijvoorbeeld afhankelijk van de partial-network-toestand Mode Management Guide p. 50. De BswM-actie BswMPduRouterControl roept daartoe PduR_EnableRouting resp. PduR_DisableRouting aan SWS BSW Mode Manager p. 145. Bij n:1-routing naar een lokaal moduul mag tijdens runtime maximaal één pad actief zijn System Template p. 736 [SWS_PduR_00615].

Gedrag in het foutgeval

De ontwikkelingsfouten definieert [SWS_PduR_00100]. Ze worden alleen gemeld wanneer PduRDevErrorDetect actief is [SWS_PduR_00119] [SWS_PduR_00221]. Productiefouten meldt de PduR niet SWS PDU Router p. 60.

FoutcodeWaardeTrigger
PDUR_E_INIT_FAILED0x00ongeldige configuratiepointer
PDUR_E_UNINIT0x01API vóór de initialisatie of PduR_Init buiten PDUR_UNINIT
PDUR_E_PDU_ID_INVALID0x02ongeldige PDU-identifier
PDUR_E_ROUTING_PATH_GROUP_ID_INVALID0x08onbekende groep bij Enable/Disable [SWS_PduR_00648] [SWS_PduR_00649]
PDUR_E_PARAM_POINTER0x09nullpointer als argument

De runtimefout PDUR_E_PDU_INSTANCES_LOST treedt in drie gevallen op:

Als verplichte interface hiervoor gebruikt de PduR Det_ReportRuntimeError [SWS_PduR_91001].

Op IF-paden behandelt de PduR fouten niet zelf. Hij geeft returnwaarden door aan de bron [SWS_PduR_00626] SWS PDU Router p. 46 en herhaalt geen overdracht [SWS_PduR_00256]. Ook op TP-paden gaan fouten via een returnwaarde naar de hogere laag [SWS_PduR_00700] SWS PDU Router p. 49. Bij meerdere bestemmingen geldt E_OK alleen wanneer alle bestemmingen E_OK leveren [SWS_PduR_00701]. Deze regel heeft vermoedelijk betrekking op TP-multicast, terwijl voor IF-multicast [SWS_PduR_00218] geldt. Vraag Q-4bd42fd8dc77ccf2 (open) Foutieve TP-RxIndications stuurt de PduR enkel door [SWS_PduR_00207].

Bij TP-gateways gelden eigen regels:

Verdere gedetailleerde bewijzen

De volgende passages onderbouwen de stellingen in deze leidraad. De sequenties in hoofdstuk 9 van de specificatie illustreren deze, zoals SWS PDU Router Afb. 9.5 p. 100.

AI-gegenereerde leidraad op basis van de requirements van de SWS PDU Router (R20-11) en bijbehorende documentpassages; uitsluitend de gelinkte requirements zijn normatief. Gelieve als interpretatie gemarkeerde uitspraken te controleren aan de hand van de specificatie.

PDU Router (PduR)

The PDU Router routes I-PDUs between communication interfaces, transport protocols, and upper layers without payload inspection.

Funktionen — Übersicht

Typen — Übersicht

Funktionen & Typen — Detailansicht

functie PduR_Init [SWS_PduR_00334] 📄 PDF

void PduR_Init (const PduR_PBConfigType* ConfigPtr);

Initializes the PDU Router

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

Gebruik

De synchrone en niet-re-entrante functie PduR_Init initialiseert de PDU-router [SWS_PduR_00334]. Als parameter accepteert deze met ConfigPtr een pointer naar de post-build-configuratie van de module (PduR_PBConfigType) en levert geen retourwaarde op [SWS_PduR_00334]. In het kader van de initialisatie initialiseert PduR_Init alle PDU-zendbuffers vooraf met de geconfigureerde standaardwaarden [SWS_PduR_00308].

Samenspel en volgordevoorwaarden

Na het inschakelen bevindt de module zich eerst in de toestand PDUR_UNINIT [SWS_PduR_00325]. PduR_Init moet vóór alle andere functies van de module worden aangeroepen, aangezien andere interfaces – met uitzondering van PduR_GetVersionInfo – in ongeïnitialiseerde toestand de fout PDUR_E_UNINIT via de DET melden, mits PduRDevErrorDetect is geactiveerd [SWS_PduR_00119].

Foutafhandeling en gelijktijdigheid

Als PduR_Init in een andere toestand dan PDUR_UNINIT wordt aangeroepen, wordt dit beschouwd als PDUR_E_UNINIT [SWS_PduR_00100]. Bij een ongeldige configuratiepointer of de overdracht van een null-pointer zijn de foutcodes PDUR_E_INIT_FAILED respectievelijk PDUR_E_PARAM_POINTER van toepassing [SWS_PduR_00100]. Vanwege het ontbreken van re-entrantie mag er geen parallelle aanroep van de initialisatieroutine plaatsvinden [SWS_PduR_00334].

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

Implementer's Guide volgt (complexiteit I1)

functie PduR_EnableRouting [SWS_PduR_00615] 📄 PDF

void PduR_EnableRouting (PduR_RoutingPathGroupIdType id);

Enables a routing path group.

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

De synchrone functie PduR_EnableRouting (service-ID 0xf3) dient voor de gerichte activering van een gedefinieerde routingpadgroep in de PDU-router ([SWS_PduR_00615]). Als enige parameter accepteert deze de groepscode id van het type PduR_RoutingPathGroupIdType, die de bijbehorende routingpadgroep in de configuratie van de PDU-router adresseert ([SWS_PduR_00615]). De aanroep heeft geen retourwaarde en is beschikbaar via het headerbestand PduR.h ([SWS_PduR_00615]).

Voor een foutloos gebruik zijn de systeemtoestanden en parametergrenzen bepalend: Vóór de aanroep moet de module PduR volledig geïnitialiseerd zijn, aangezien uitvoering in niet-geïnitialiseerde toestand de fout PDUR_E_UNINIT veroorzaakt ([SWS_PduR_00100]). Indien aan de functie PduR_EnableRouting een ongeldige routingtabel- resp. padgroepidentificator wordt doorgegeven, leidt dit tot fout PDUR_E_ROUTING_PATH_GROUP_ID_INVALID met de foutwaarde 0x08 ([SWS_PduR_00100]).

Met betrekking tot concurrency is de interface gedeclareerd als re-entrant ([SWS_PduR_00615]), zodat parallelle aanroepen voor de besturing van padgroepen in beginsel zijn toegestaan. In het totale systeem dient de functie voor de dynamische vrijgave van communicatierelaties; vermoedelijk wordt de service typisch geactiveerd door overkoepelende instanties zoals de modusmanager om routingpaden afhankelijk van systeem- of netwerktoestanden tijdens runtime te activeren. Vraag Q-365f4b81f59f3511 (open)

Automatisch gegenereerde gebruiksinstructie op basis van de AUTOSAR Classic-specificatie (release R20-11).

functie PduR_DisableRouting [SWS_PduR_00617] 📄 PDF

void PduR_DisableRouting (PduR_RoutingPathGroupIdType id, boolean initialize);

Disables a routing path group.

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

De synchrone functie PduR_DisableRouting dient voor het deactiveren van een geconfigureerde routingpadgroep ([SWS_PduR_00617]). Deze is re-entrant ontworpen en heeft geen retourwaarde ([SWS_PduR_00617]).

Parameters en gedrag

  • id (PduR_RoutingPathGroupIdType): Identificatie van de te deactiveren routingpadgroep zoals gedefinieerd in de configuratie van de PDU-router ([SWS_PduR_00617]).
  • initialize (boolean): Stuurt het buffergedrag aan bij het deactiveren. Bij overdracht van true worden single-buffers geïnitialiseerd op hun standaardwaarde; bij false behouden single-buffers hun huidige waarde ([SWS_PduR_00617]).

Foutafhandeling en randvoorwaarden

In het geval van een fout zijn volgens de fouttabel specifieke foutcodes gedefinieerd ([SWS_PduR_00100]):

  • Als de functie wordt aangeroepen zonder dat de module is geïnitialiseerd, is de foutcode PDUR_E_UNINIT (0x01) voorzien ([SWS_PduR_00100]).
  • Als aan PduR_DisableRouting een ongeldige routingtabel- resp. groeps-ID wordt doorgegeven, is de fout PDUR_E_ROUTING_PATH_GROUP_ID_INVALID (0x08) gespecificeerd ([SWS_PduR_00100]).

De functie is beschikbaar via de header PduR.h ([SWS_PduR_00617]).

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

type PduR_PBConfigType [SWS_PduR_00743] 📄 PDF

Data structure containing post-build-time configuration data of the PDU Router.

type PduR_PBConfigIdType [SWS_PduR_00771] 📄 PDF

Identification of the post-build configuration currently used for routing I-PDUs. An ECU may contain several configurations (post-build selectable), each have unique Id.

type PduR_StateType [SWS_PduR_00742] 📄 PDF

States of the PDU Router

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

Het enumeratietype PduR_StateType specificeert conform [SWS_PduR_00742] de toestanden van de PDU-router. Het datatype wordt via het headerbestand PduR.h beschikbaar gesteld en dient in de PDU-router als formele getypeerde basis voor de representatie van de respectieve initialisatietoestand binnen de module alsook voor aanroepende componenten.

Conform de eis [SWS_PduR_00324] bestaat de PDU-routermodule uit precies twee bedrijfstoestanden, die door de enumeratiewaarden van PduR_StateType worden vastgelegd. Het volgens [SWS_PduR_00742] gedefinieerde waardebereik omvat de volgende waarden:

  • PDUR_UNINIT: Markeert de toestand waarin de PDU-router niet is geïnitialiseerd ([SWS_PduR_00742]).
  • PDUR_ONLINE: Signaleert dat de PDU-router succesvol is geïnitialiseerd en gereed voor gebruik is ([SWS_PduR_00742]).

In het kader van de wisselwerking tussen de specificatie-eisen fungeert PduR_StateType als bindende vastlegging voor het interne en externe toestandsmodel van de PDU-router ([SWS_PduR_00324]). Aangezien het waardebereik volgens [SWS_PduR_00742] uitsluitend beperkt is tot PDUR_UNINIT en PDUR_ONLINE, maakt de specificatie hier een strikt onderscheid tussen de niet-geïnitialiseerde begintoestand en de toestand na succesvolle initialisatie. Aanvullende tussenfasen, gedeeltelijke bedrijfsmodi of specifieke fouttoestanden zijn in het waardebereik van PduR_StateType niet voorzien.

Automatisch gegenereerde gebruiksinstructie op basis van de AUTOSAR-specificatie.

Implementer's Guide volgt (complexiteit I1)

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

Record
AUTOSAR/AP/record/CP_MOD_PduR
Status
unspecified
Version
AUTOSAR/AP/record/CP_MOD_PduR@rel:R20-11#8dafa4f2
Content hash
8dafa4f2
Source
https://www.autosar.org/fileadmin/standards/R20-11/CP/AUTOSAR_SWS_PDURouter.pdf#nameddest=SWS_PduR_00334

Initialisatie en status

Returns the version information of this module.

void PduR_GetVersionInfo (Std_VersionInfoType* versionInfo);
PduR_Init functie

Initializes the PDU Router

void PduR_Init (const PduR_PBConfigType* ConfigPtr);

Diensten

Disables a routing path group.

void PduR_DisableRouting (PduR_RoutingPathGroupIdType id, boolean initialize);

Enables a routing path group.

void PduR_EnableRouting (PduR_RoutingPathGroupIdType id);

Returns the unique identifier of the post-build time configuration of the PDU Router

PduR_PBConfigIdType PduR_GetConfigurationId (void);

Typen

Identification of the post-build configuration currently used for routing I-PDUs. An ECU may contain several configurations (post-build selectable), each have unique Id.

Data structure containing post-build-time configuration data of the PDU Router.

Identification of a Routing Table

States of the PDU Router