DEENESPTFRRUARHIKOZHNL

CAN Transport Layer (CanTp)

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

Guía del móduloGENERADO POR IA

Divide mensajes largos en tramas CAN y vuelve a ensamblar los segmentos recibidos con control de flujo.
GENERADO POR IA no revisado Modelo: claude-opus-5-5 · Esfuerzo: high · Temperatura: no controlable · Prompt: 69cea53d1819 Procedencia Preguntas abiertas (1)
Ancla causal: R20-11 Válido desde R20-11 Sintetizado para esta versión de especificación.
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

Divide mensajes largos en tramas CAN y vuelve a ensamblar los segmentos recibidos con control de flujo.

La CAN Transport Layer divide los mensajes que no caben en una trama CAN, gestiona el flujo de datos mediante Flow Control y vuelve a ensamblar los segmentos recibidos según ISO 15765-2 [SWS_CanTp_00033]. Se sitúa entre PduR y CanIf, no dispone de búfer de datos útiles propio y copia los datos de transmisión y recepción por segmentos mediante los servicios de copia de la capa superior [SWS_CanTp_00298]. Concluye cada transferencia aceptada con una notificación a la capa superior: de forma exitosa con E_OK; en caso de tiempo de espera o cancelación, con E_NOT_OK. Todo esto presupone CanTp_Init; la MainFunction periódica supervisa los tiempos de espera.

CanTp es la CAN Transport Layer. Divide mensajes largos en tramas CAN, gestiona el flujo de datos y vuelve a ensamblar los segmentos recibidos; al hacerlo, sigue la norma ISO 15765-2 en la medida en que la especificación no disponga lo contrario [SWS_CanTp_00033]. El módulo se ubica entre PduR y CanIf y no dispone de un búfer de datos útiles propio. Copia los datos por segmentos a través de los servicios de copia de la capa superior [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

Diagrama de contexto: las interfaces de CanTp con PduR, CanIf, la gestión de modos, el planificador y DET. Fuentes: [SWS_CanTp_00216], SWS CanTp p. 17

Tras el encendido, CanTp se encuentra en CANTP_OFF [SWS_CanTp_00168]. CanTp_Init con CanTp_ConfigType [SWS_CanTp_00208] pone todas las conexiones en estado de reposo [SWS_CanTp_00030]; a partir de entonces rige CANTP_ON [SWS_CanTp_00170]. CanTp_Shutdown cierra todas las conexiones sin notificar a nadie [SWS_CanTp_00202] [SWS_CanTp_00200]. Los canales de conexión operan de forma independiente entre sí con temporizadores propios [SWS_CanTp_00122]. Si un canal de transmisión está ocupado, CanTp rechaza nuevas órdenes con E_NOT_OK [SWS_CanTp_00123].

Al transmitir, CanTp_Transmit evalúa únicamente la longitud (y, en su caso, MetaData) [SWS_CanTp_00225]. Según la longitud, sigue un SF o una sesión segmentada [SWS_CanTp_00232]. Para cada segmento, CanTp obtiene los datos con PduR_CanTpCopyTxData [SWS_CanTp_00086] y, tras el FF y cada bloque bajo N_Bs, espera el Flow Control [SWS_CanTp_00315]. Interpretación: la llamada solo notifica la aceptación; el fin de la transferencia llega de forma asíncrona mediante PduR_CanTpTxConfirmation [SWS_CanTp_00176] [SWS_CanTp_00204]. Pregunta (abierta)

Al recibir, CanTp solicita primero un búfer con PduR_CanTpStartOfReception [SWS_CanTp_00079]. A continuación, copia cada CF con PduR_CanTpCopyRxData [SWS_CanTp_00269]. Si el búfer es escaso, CanTp vuelve a consultarlo en cada MainFunction y envía como máximo WFTmax FC(WAIT) [SWS_CanTp_00222] [SWS_CanTp_00223]. Al final se produce PduR_CanTpRxIndication [SWS_CanTp_00084]. La CanTp_MainFunction periódica supervisa los tiempos de espera [SWS_CanTp_00164].

Recepción segmentada de una N-SDUCanIfCanTpPduRUse Case: First FrameCanTp_RxIndication(FF)N_Br gestartetPduR_CanTpStartOfReception(TpSduLength)BUFREQ_OK, tamaño de búfer disponiblePduR_CanTpCopyRxData(FF-Daten)CanIf_Transmit(FC: CTS, BS, STmin)loopPor cada CF de un bloqueCanTp_RxIndication(CF)PduR_CanTpCopyRxData(6/7 Byte)BUFREQ_OK, RestpufferaltEl búfer restante no es suficiente para el siguiente bloqueN_Br en cursoCanTp_MainFunctionPduR_CanTpCopyRxData(longitud 0, NULL_PTR)BUFREQ_OK, RestpufferCanIf_Transmit(FC: WAIT)Como máximo WFTmax vecesPuffer ausreichendCanIf_Transmit(FC: CTS)Use Case: Letzter Consecutive FrameCanTp_RxIndication(letzter CF)PduR_CanTpCopyRxData()PduR_CanTpRxIndication(E_OK)

Diagrama de secuencias: recepción segmentada con negociación de búfer y Flow Control CTS/WAIT. Fuentes: [SWS_CanTp_00269], [SWS_CanTp_00222], SWS CanTp p. 38

CanTp gestiona los errores de tres formas. Notifica los errores de desarrollo a DET y devuelve E_NOT_OK [SWS_CanTp_00294]. Los errores de protocolo, como los tiempos de espera, cancelan la sesión y se comunican con E_NOT_OK a PduR [SWS_CanTp_00205] [SWS_CanTp_00311]. Lo mismo aplica para cancelaciones a petición mediante los servicios Cancel [SWS_CanTp_00255] [SWS_CanTp_00263]. Para IDs no válidos en los servicios Cancel, R20-11 exige CANTP_E_PARAM_ID [SWS_CanTp_00254], mientras que versiones más recientes indican otros códigos.

Rol en la pila CAN: protocolo de transporte entre PduR y CanIf

CanTp es la CAN Transport Layer. Divide los mensajes que no caben en una única trama CAN en segmentos, controla el flujo de datos y vuelve a ensamblar los segmentos recibidos (SWS CanTp p. 24, SWS CanTp p. 17). La base es ISO 15765-2: se aplica cualquier recomendación de dicha norma, salvo que la especificación la excluya expresamente [SWS_CanTp_00033]. CanTp solo realiza la segmentación y el reensamblaje en el estado CANTP_ON [SWS_CanTp_00238].

Hacia arriba, CanTp proporciona a PduR los siguientes servicios: CanTp_Transmit [SWS_CanTp_00212], CanTp_CancelTransmit [SWS_CanTp_00246] y CanTp_CancelReceive [SWS_CanTp_00257]. Por sí mismo, CanTp llama hacia arriba a PduR_CanTpStartOfReception, PduR_CanTpCopyRxData, PduR_CanTpCopyTxData, PduR_CanTpRxIndication y PduR_CanTpTxConfirmation, y hacia abajo a CanIf_Transmit [SWS_CanTp_00216]. La capa inferior notifica las tramas recibidas mediante CanTp_RxIndication [SWS_CanTp_00078] y las confirmaciones de transmisión mediante CanTp_TxConfirmation [SWS_CanTp_00076]. Ambas funciones deben poder ser llamadas en contexto de interrupción [SWS_CanTp_00235] [SWS_CanTp_00236]. Pasajes más recientes del documento nombran como invocador al L-SDU Router (LSduR) (SWS CanTp p. 27). En cambio, los requirements de R20-11 hacen referencia a CAN Interface, por ejemplo [SWS_CanTp_00031] y [SWS_CanTp_00335].

CanTp no dispone de un búfer de datos útiles propio. Obtiene los datos de transmisión directamente de la capa superior [SWS_CanTp_00298] y copia los datos recibidos de manera inmediata en la memoria de esta (SWS CanTp p. 35). De esto se derivan periodos de bloqueo para la capa superior (SWS CanTp p. 35):

  • Mantiene bloqueado el búfer de transmisión tan pronto como CanTp_Transmit retorna con E_OK, hasta que llega PduR_CanTpTxConfirmation.
  • Mantiene bloqueado el búfer de recepción tan pronto como ha entregado BUFREQ_OK en PduR_CanTpStartOfReception, hasta que llega PduR_CanTpRxIndication.
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

Diagrama de contexto: CanTp se sitúa entre PduR y CanIf. Es inicializado por la gestión de modos, activado cíclicamente por el scheduler y notifica errores a DET. Fuentes: [SWS_CanTp_00216], [SWS_CanTp_00217], [SWS_CanTp_00164], SWS CanTp p. 17, Mode Management Guide p. 54

Ciclo de vida: CANTP_OFF, CanTp_Init y canales de conexión independientes

CanTp reconoce los estados CANTP_OFF y CANTP_ON [SWS_CanTp_00027]. Tras el encendido, el módulo se encuentra en CANTP_OFF [SWS_CanTp_00168]; únicamente allí se permite actualizar la configuración post-build [SWS_CanTp_00169].

CanTp_Init recibe un puntero a CanTp_ConfigType [SWS_CanTp_00208] [SWS_CanTp_00340]. La función inicializa todas las variables globales y sitúa cada conexión en el estado de reposo CANTP_RX_WAIT o CANTP_TX_WAIT [SWS_CanTp_00030]; a partir de entonces rige CANTP_ON [SWS_CanTp_00170]. El entorno debe llamar a CanTp_Init antes de cualquier uso posterior [SWS_CanTp_00199]. En la guía de gestión de modos, esto lo asume una regla de BswM tras NvM_ReadAll (Mode Management Guide p. 54). Una nueva llamada en CANTP_ON descarta todas las conexiones en curso y devuelve al estado de reposo [SWS_CanTp_00273] [SWS_CanTp_00111].

CanTp_Shutdown cierra todas las conexiones abiertas, libera los recursos y establece CANTP_OFF [SWS_CanTp_00202]. Al hacerlo, CanTp no notifica a nadie sobre las transmisiones canceladas [SWS_CanTp_00200] (SWS CanTp p. 58).

En CANTP_ON se ejecutan varias conexiones simultáneamente [SWS_CanTp_00096]:

  • Cada N-SDU está asignada estáticamente a un canal de conexión. Cada canal cuenta con temporizadores propios, búferes y una máquina de estados propia [SWS_CanTp_00121] [SWS_CanTp_00122].
  • Los canales solo son visibles internamente [SWS_CanTp_00285]. Su número lo determina la herramienta de configuración [SWS_CanTp_00289].
  • Si un canal de transmisión está en CANTP_TX_PROCESSING, CanTp rechaza nuevas solicitudes a través de CanTp_Transmit con E_NOT_OK [SWS_CanTp_00123]. Lo mismo rige para una N-SDU que ya se encuentre en una sesión en curso [SWS_CanTp_00206].
  • Si varias N-SDU comparten un canal y no hay ningún canal libre disponible, CanTp rechaza la transmisión o interrumpe la recepción [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 (configuración post-build modificable) 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 No se espera ninguna otra N-PDU o cancelación TXP CANTP_TX_PROCESSING TXW->TXP CanTp_Transmit = E_OK TXP->OFF CanTp_Shutdown (sin notificación) TXP->TXW Transmisión finalizada o cancelación

Diagrama de estados: tras CanTp_Init, los canales de recepción y transmisión alternan de forma independiente entre WAIT y PROCESSING; CanTp_Shutdown devuelve a CANTP_OFF. Fuentes: [SWS_CanTp_00027], [SWS_CanTp_00030], [SWS_CanTp_00170], [SWS_CanTp_00202], SWS CanTp p. 27

Transmisión: desde CanTp_Transmit hasta la confirmación

CanTp_Transmit recibe TxPduId y PduInfoPtr [SWS_CanTp_00212]. Sin MetaData, CanTp solo evalúa la longitud total SduLength y no accede al búfer de datos [SWS_CanTp_00225] [SWS_CanTp_00299]. Con MetaData, almacena adicionalmente la información de direccionamiento para todos los SF, FF y CF [SWS_CanTp_00334]. Si los datos caben en una N-PDU, CanTp envía un SF; de lo contrario, abre una sesión de múltiples tramas [SWS_CanTp_00232] (SWS CanTp p. 60). La longitud máxima de transmisión (TX_DL) se deriva de PduLength en EcuC [SWS_CanTp_00354]. Interpretación: la llamada notifica de forma síncrona únicamente si la solicitud ha sido aceptada; la transferencia propiamente dicha se ejecuta de forma asíncrona [SWS_CanTp_00176]. Pregunta Q-b6d13590324e2906 (abierta) Tras la aceptación, CanTp notifica el final en cualquier caso mediante PduR_CanTpTxConfirmation [SWS_CanTp_00177] [SWS_CanTp_00204].

Para cada segmento (SF, FF, CF), CanTp llama a PduR_CanTpCopyTxData [SWS_CanTp_00086]; hasta la primera llamada, se ejecuta el temporizador N_Cs [SWS_CanTp_00167]. Si la capa superior devuelve BUFREQ_E_BUSY, CanTp lo intenta de nuevo más tarde [SWS_CanTp_00184]. CanTp establece el parámetro retry siempre a NULL, debido a que ISO 15765-2 no contempla la repetición [SWS_CanTp_00272].

Tras el FF y tras el último CF de cada bloque, CanTp espera bajo N_Bs una trama Flow Control [SWS_CanTp_00315]. Con ella, el receptor habilita más CF o los retrasa [SWS_CanTp_00282]. Si la sesión concluye con éxito, sigue PduR_CanTpTxConfirmation con E_OK [SWS_CanTp_00090]. El mismo flujo pull lo muestran el ejemplo de 50 bytes (SWS CanTp p. 37) y la ruta de DCM a CanTp (SWS PduR p. 104).

Transmisión segmentada de una N-SDUPduRCanTpCanIfUse Case: DisparoCanTp_Transmit(TxPduId, PduInfoPtr)Solo SduLength (+ MetaData)E_OKN_Cs en cursoUse Case: First FramePduR_CanTpCopyTxData()BUFREQ_OKCanIf_Transmit(FF)CanTp_TxConfirmation(E_OK)N_Bs en curso: esperando FCCanTp_RxIndication(FC: CTS, BS, STmin)loopPor cada CF de un bloque (BS tramas, intervalo STmin)PduR_CanTpCopyTxData()BUFREQ_OKCanIf_Transmit(CF)CanTp_TxConfirmation(E_OK)Esperar de nuevo el FC tras cada bloque (N_Bs)Use Case: AbschlussPduR_CanTpTxConfirmation(E_OK)

Diagrama de secuencias: CanTp solicita los datos por segmentos a PduR, espera tras el FF y tras cada bloque a Flow Control y confirma al final con E_OK. Fuentes: [SWS_CanTp_00212], [SWS_CanTp_00086], [SWS_CanTp_00315], [SWS_CanTp_00090], SWS CanTp p. 73

Recepción: negociación de búfer, Flow Control y reensamblado

Con cada SF o FF entrante, CanTp notifica el inicio de la recepción con PduR_CanTpStartOfReception [SWS_CanTp_00079]. El tamaño de búfer disponible se devuelve a través de un parámetro de salida y puede ser menor que la N-SDU [SWS_CanTp_00080]. En caso de un FF, CanTp inicia previamente el temporizador N_Br [SWS_CanTp_00166]. Envía el Flow Control solo cuando el resultado está disponible; su contenido depende de dicho resultado [SWS_CanTp_00064] [SWS_CanTp_00277]. Todos los FC de una sesión de recepción llevan los mismos valores para BS y STmin [SWS_CanTp_00067]. Un FC sigue respectivamente tras BS Consecutive Frames [SWS_CanTp_00278].

Tras cada CF, CanTp entrega los datos útiles con PduR_CanTpCopyRxData y obtiene con ello el búfer restante [SWS_CanTp_00269]. En CAN 2.0, esto son seis o siete bytes por CF. Si tras el último CF de un bloque el búfer restante no basta para el siguiente bloque, CanTp inicia el temporizador N_Br [SWS_CanTp_00325] [SWS_CanTp_00082]. Mientras este temporizador esté en marcha:

Si la sesión finaliza, sea con éxito o no, CanTp llama a PduR_CanTpRxIndication [SWS_CanTp_00084]. Con y sin padding, CanTp solo pasa hacia arriba los bytes de datos efectivamente utilizados [SWS_CanTp_00116].

Recepción segmentada de una N-SDUCanIfCanTpPduRUse Case: First FrameCanTp_RxIndication(FF)N_Br gestartetPduR_CanTpStartOfReception(TpSduLength)BUFREQ_OK, tamaño de búfer disponiblePduR_CanTpCopyRxData(FF-Daten)CanIf_Transmit(FC: CTS, BS, STmin)loopPor cada CF de un bloqueCanTp_RxIndication(CF)PduR_CanTpCopyRxData(6/7 Byte)BUFREQ_OK, RestpufferaltEl búfer restante no es suficiente para el siguiente bloqueN_Br en cursoCanTp_MainFunctionPduR_CanTpCopyRxData(longitud 0, NULL_PTR)BUFREQ_OK, RestpufferCanIf_Transmit(FC: WAIT)Como máximo WFTmax vecesPuffer ausreichendCanIf_Transmit(FC: CTS)Use Case: Letzter Consecutive FrameCanTp_RxIndication(letzter CF)PduR_CanTpCopyRxData()PduR_CanTpRxIndication(E_OK)

Diagrama de secuencias: recepción segmentada con negociación de búfer, Flow Control por bloques y fase de espera en caso de búfer escaso. Fuentes: [SWS_CanTp_00079], [SWS_CanTp_00269], [SWS_CanTp_00222], [SWS_CanTp_00084], SWS CanTp p. 76

rxstart Ein CanTp_RxIndication: SF o FF recibido Kanal Kanal in CANTP_RX_PROCESSING? Ein->Kanal Art ¿Con MetaData o otra N_AI? Kanal->Art Sí Sor PduR_CanTpStartOfReception() Kanal->Sor No Ign Frame ignorieren Art->Ign Sí Neu laufenden Empfang abbrechen, Frame als neuen Empfang behandeln Art->Neu nein (gleiche N_AI) Neu->Sor Erg ¿Valor de retorno? Sor->Erg NotOk Cancelar recepción: sin FC, sin 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: ¿el búfer es suficiente para el siguiente bloque? Typ->Puf FF Cts FC(CTS) senden Puf->Cts Sí Br N_Br starten, Puffer in MainFunction abfragen Puf->Br No

Diagrama de actividades: así decide CanTp ante un SF o FF entrante en función del estado del canal y del resultado de PduR_CanTpStartOfReception. Fuentes: [SWS_CanTp_00124], [SWS_CanTp_00337], [SWS_CanTp_00081], [SWS_CanTp_00318], [SWS_CanTp_00353], SWS CanTp p. 67

Direccionamiento, MetaData y padding

El direccionamiento funcional (1:n) solo está permitido para SF [SWS_CanTp_00092]. CanTp rechaza una sesión segmentada a través de un handle funcional y notifica CANTP_E_INVALID_TATYPE [SWS_CanTp_00093] (SWS CanTp p. 39). En caso de Extended o Mixed Addressing, CanTp determina la N-SDU a partir de N_TA o N_AE en el primer byte de datos [SWS_CanTp_00095] [SWS_CanTp_00284] [SWS_CanTp_00283]. Para la asignación de los identificadores rige (SWS CanTp p. 44):

  • Cada NSduId está asignada exactamente a una LSduId [SWS_CanTp_00035].
  • La LSduId de un FC identifica, junto con N_TA o N_AE, exactamente una NSduId [SWS_CanTp_00094].
  • Múltiples N-SDU solo pueden hacer referencia a la misma N-PDU en caso de Extended/Mixed Addressing o con MetaData [SWS_CanTp_00328].

Las conexiones genéricas operan con MetaData. CanTp guarda la información de direccionamiento de SF o FF [SWS_CanTp_00330], la reenvía a PduR_CanTpStartOfReception [SWS_CanTp_00331] y valida los CF siguientes frente a ella [SWS_CanTp_00333]. Si el canal ya está recibiendo, CanTp ignora un SF o FF adicional con MetaData [SWS_CanTp_00337].

El padding se activa por cada N-SDU (SWS CanTp p. 43). El valor de relleno es CANTP_PADDING_BYTE [SWS_CanTp_00059]. Para tramas con una carga útil máxima de 8 bytes rige:

Si una longitud de transmisión no encaja con ningún DLC válido, CanTp rellena hasta el siguiente valor válido superior [SWS_CanTp_00351]. CanTp deriva la longitud de recepción RX_DL a partir del primer CAN_DL recibido [SWS_CanTp_00350].

Supervisión temporal, parámetros en tiempo de ejecución y cancelación bajo petición

CanTp_MainFunction [SWS_CanTp_00213] se llama cíclicamente. Supervisa N_As, N_Bs, N_Cs, N_Ar, N_Br, N_Cr así como STmin [SWS_CanTp_00164] (SWS CanTp p. 63). Su cadencia se rige por CanTpMainFunctionPeriod [SWS_CanTp_00300]. Este valor debe corresponder al tiempo de ciclo de la tarea invocadora (SWS CanTp p. 77). Como ejemplo, el análisis de temporización menciona una tarea de 5 ms (TR Timing Analysis p. 117).

Dos servicios acceden en tiempo de ejecución a los parámetros de recepción BS y STmin de una N-SDU: CanTp_ChangeParameter los modifica [SWS_CanTp_00302], CanTp_ReadParameter los lee [SWS_CanTp_00323]. Ambos existen solo si CanTpChangeParameterApi = TRUE (SWS CanTp p. 61). BS es únicamente un valor máximo, que CanTp puede reducir por razones de búfer [SWS_CanTp_00091]. Entre FF y el último CF de una sesión de recepción en curso, CanTp rechaza cualquier modificación con E_NOT_OK [SWS_CanTp_00303] [SWS_CanTp_00304]. En conexiones genéricas, una modificación es válida para todas [SWS_CanTp_00338].

Las transmisiones en curso pueden cancelarse bajo petición:

Comportamiento en caso de error

Errores de desarrollo. Si la detección está activa, CanTp notifica el error a DET y devuelve E_NOT_OK [SWS_CanTp_00294] [SWS_CanTp_00217] (SWS CanTp p. 49). Los códigos los define [SWS_CanTp_00293]. Casos típicos:

Discrepancia entre las versiones: para un PduId no válido en los servicios de cancelación, R20-11 exige CANTP_E_PARAM_ID [SWS_CanTp_00254] [SWS_CanTp_00260]. Pasajes más recientes del documento nombran en su lugar CANTP_E_INVALID_TX_ID o CANTP_E_INVALID_RX_ID (SWS CanTp p. 59). Para R20-11 se aplica el requirement.

Errores en tiempo de ejecución. Se envían al Default Error Tracer [SWS_CanTp_00352]:

Errores de protocolo. Finalizan la sesión con E_NOT_OK hacia la capa superior [SWS_CanTp_00205]:

PduR reenvía la confirmación negativa al usuario, por ejemplo a DCM, que luego se encarga de la recuperación (Error Description p. 29, Error Description p. 28). Dem gestiona los errores de producción a través 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 con OVFLW o FS no válido t5->TA t6 FC inferior a 8 bytes con padding de Tx 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 Último CF demasiado corto con padding de Rx 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

Diagrama de actividades: todas las causas de cancelación desembocan por cada dirección en una notificación negativa a PduR. Fuentes: [SWS_CanTp_00205], [SWS_CanTp_00343], [SWS_CanTp_00355], [SWS_CanTp_00342], [SWS_CanTp_00223], [SWS_CanTp_00084], Error Description p. 28

Más evidencia detallada

Guía generada por IA sobre la base de los extractos de especificación de CanTp (R20-11). Son vinculantes exclusivamente los requirements enlazados; los pasajes de documentos de otras versiones solo sirven a título explicativo.

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

función CanTp_Init [SWS_CanTp_00208] 📄 PDF

void CanTp_Init (const CanTp_ConfigType* CfgPtr);

This function initializes the Can Tp module.

GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 62b706f68200 Procedencia
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

La función síncrona y no reentrante CanTp_Init inicializa el módulo CanTp [SWS_CanTp_00208]. Acepta mediante el parámetro CfgPtr un puntero a los datos de configuración post-build (CanTp_ConfigType) y no posee valor de retorno [SWS_CanTp_00208]. El entorno del módulo debe llamar obligatoriamente a CanTp_Init antes de que el módulo pueda utilizarse para otros procesamientos [SWS_CanTp_00199].

Durante la inicialización, se inicializan todas las variables globales del módulo y todas las conexiones de protocolo de transporte se sitúan en un subestado de CANTP_ON, en el cual no está activa una transmisión segmentada ni una recepción segmentada [SWS_CanTp_00030]. Las rutas de recepción se encuentran en el estado CANTP_RX_WAIT y las rutas de transmisión en el estado CANTP_TX_WAIT [SWS_CanTp_00030]. Tras una ejecución correcta, el módulo pasa al estado interno CANTP_ON [SWS_CanTp_00170].

Si se llama a CanTp_Init cuando el módulo ya se encuentra en el estado global CANTP_ON, la función restablece el módulo al estado Idle, de modo que no haya procesos de transmisión ni de recepción en curso [SWS_CanTp_00111].

Si la detección de errores de desarrollo (Development Error Detection) está activada, el módulo CanTp notifica el error CANTP_E_UNINIT si el PDU Router o la CAN Interface intentan ejecutar funciones del módulo (a excepción de CanTp_GetVersionInfo) antes de la llamada a CanTp_Init [SWS_CanTp_00031].

Este texto ha sido generado por una IA a partir de la especificación.

Guía del implementador pendiente (complejidad I2)

función CanTp_Shutdown [SWS_CanTp_00211] 📄 PDF

void CanTp_Shutdown (void);

This function is called to shutdown the Can Tp module.

GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: e5430e2cac5b Procedencia
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

Uso y contexto de llamada

La función CanTp_Shutdown sirve para apagar de forma ordenada todo el módulo CanTp ([SWS_CanTp_00211]). La interfaz se proporciona a través del archivo de cabecera CanTp.h y posee el ID de servicio 0x02 ([SWS_CanTp_00211]). La llamada se procesa de forma síncrona, no recibe parámetros de entrada y no devuelve ningún valor ([SWS_CanTp_00211]).

Transición de estado y limpieza

Durante su ejecución, CanTp_Shutdown cierra todas las conexiones de protocolo de transporte aún pendientes, libera todos los recursos asignados y transfiere el módulo CanTp al estado CANTP_OFF ([SWS_CanTp_00202]). Un aspecto esencial del comportamiento de cancelación es que, para las transmisiones o recepciones de tramas aún pendientes, no debe activarse expresamente ninguna notificación a las capas superiores ([SWS_CanTp_00200]).

Concurrencia y condiciones de contorno

La función está especificada como no reentrante (Non Reentrant) ([SWS_CanTp_00211]). Por lo tanto, no debe llamarse simultáneamente desde diferentes contextos de ejecución o rutinas de interrupción. En el alcance funcional de la interfaz no se identifican códigos de error específicos ni notificaciones a la gestión de errores.

Esta nota de uso se ha creado automáticamente a partir de la especificación AUTOSAR Classic Release R20-11.

Guía del implementador pendiente (complejidad I1)

función CanTp_Transmit [SWS_CanTp_00212] 📄 PDF

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

Requests transmission of a PDU.

GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 7a5280a26edd Procedencia Preguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

usar

La función CanTp_Transmit sirve para solicitar la transmisión de una N-SDU a través de la capa de transporte de CAN [SWS_CanTp_00212]. Como parámetros se transfieren el identificador de la PDU que se va a transmitir (TxPduId), así como un puntero a los datos, la longitud y los metadatos (PduInfoPtr) [SWS_CanTp_00212]. La llamada responde con E_OK indicando la aceptación correcta o con E_NOT_OK el rechazo de la solicitud [SWS_CanTp_00212]. Mientras que la llamada se confirma de forma síncrona, la tramitación de la transmisión es asíncrona [SWS_CanTp_00176] (interpretación: la indicación «Synchronous» en la tabla de la especificación probablemente se refiera a la recepción de la solicitud). Pregunta Q-df438ddaa4963aba (abierta)

Interacción y procesamiento de PDU

En el caso de N-SDU con metadatos, el módulo almacena la información de direccionamiento (en función del formato de direccionamiento como Normal, Extended, Mixed 11 bit, Normal fixed o Mixed 29 bit) para utilizarla en SF-, FF- y CF-N-PDU, así como para la identificación de FC-N-PDU [SWS_CanTp_00334]. Si no se utilizan metadatos, CanTp_Transmit solo accede a la especificación de longitud SduLength para preparar el PCI de SF o FF, y no utiliza el búfer de datos de la N-SDU [SWS_CanTp_00225].

Tratamiento de errores y concurrencia

  • Comprobación de errores: si DET está activado y PduInfoPtr es un puntero NULL, la función notifica el error CANTP_E_PARAM_POINTER y regresa sin realizar ninguna otra acción [SWS_CanTp_00321].
  • Ocupación del canal: si el canal asignado se encuentra en el estado CANTP_TX_PROCESSING o si ya se está ejecutando una sesión para el identificador de N-SDU, la solicitud de transmisión se rechaza y se devuelve E_NOT_OK [SWS_CanTp_00123], [SWS_CanTp_00206].
  • Reentrancia: el servicio es reentrante para diferentes ID de PDU, pero no es reentrante para el mismo ID de PDU [SWS_CanTp_00212].

Este texto ha sido generado por una IA sobre la base de la especificación AUTOSAR Classic R20-11.

Guía del implementador pendiente (complejidad I2)

función 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.

GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: f7624766b8a1 Procedencia
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

La función síncrona CanTp_CancelTransmit solicita la cancelación de una transmisión de PDU en curso en un módulo de comunicación subyacente [SWS_CanTp_00246], iniciando con ello la anulación del proceso de envío [SWS_CanTp_00274]. Como parámetro se transfiere el identificador de la PDU afectada (TxPduId) [SWS_CanTp_00246]. Como valor de retorno, E_OK señaliza la ejecución correcta de la cancelación por parte del módulo de destino, mientras que E_NOT_OK indica un rechazo [SWS_CanTp_00246].

Tras la llamada a la función, la transmisión en la conexión afectada se cancela [SWS_CanTp_00243]. Si la cancelación se ha ejecutado con éxito, el módulo CanTp llama obligatoriamente a la confirmación PduR_CanTpTxConfirmation con el resultado negativo E_NOT_OK para informar a las capas superiores sobre la cancelación [SWS_CanTp_00255].

Con la detección de errores de desarrollo (Development Error Detection) activada, CanTp_CancelTransmit comprueba la validez de TxPduId: en caso de parámetro no válido, se genera el error de desarrollo CANTP_E_PARAM_ID y se devuelve E_NOT_OK [SWS_CanTp_00254]. Si la cancelación se solicita para una N-SDU que actualmente no se encuentra en proceso de transmisión, el módulo notifica el error de tiempo de ejecución CANTP_E_OPER_NOT_SUPPORTED al Default Error Tracer (DET) y entrega asimismo E_NOT_OK [SWS_CanTp_00254].

En cuanto a la concurrencia, la función es reentrante para diferentes PDU-IDs, pero no debe llamarse de forma concurrente para la misma TxPduId [SWS_CanTp_00246].

Esta nota de uso se ha elaborado automáticamente a partir de la especificación AUTOSAR.

Guía del implementador pendiente (complejidad I2)

función 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.

GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: ccccdf72ba41 Procedencia
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

La función CanTp_CancelReceive cancela de forma síncrona la recepción en curso de una PDU en un módulo de protocolo de transporte subyacente [SWS_CanTp_00257]. Está disponible a través del archivo de cabecera CanTp.h y posee el Service-ID 0x4c [SWS_CanTp_00257].

Uso y condiciones de llamada

A través del parámetro de entrada RxPduId se transfiere el identificador de la PDU que se va a cancelar [SWS_CanTp_00257]. La llamada se procesa de forma síncrona y está especificada como no reentrante (Non Reentrant) [SWS_CanTp_00257]. Como valor de retorno, la interfaz devuelve el tipo Std_ReturnType:

  • E_OK: la cancelación ha sido ejecutada con éxito por el módulo de destino [SWS_CanTp_00257].
  • E_NOT_OK: la cancelación ha sido rechazada por el módulo de destino [SWS_CanTp_00257].

Manejo de errores

Con la detección de errores de desarrollo (Development Error Detection) activada, la función valida el parámetro RxPduId [SWS_CanTp_00260]:

  • Si el valor de RxPduId no es válido, CanTp_CancelReceive notifica el error de desarrollo CANTP_E_PARAM_ID y devuelve E_NOT_OK [SWS_CanTp_00260].
  • Si se solicita una cancelación para una N-SDU que actualmente no se encuentra en un proceso de recepción en curso, el módulo notifica el error de tiempo de ejecución CANTP_E_OPER_NOT_SUPPORTED al Default Error Tracer y devuelve E_NOT_OK [SWS_CanTp_00260].

Interacción con módulos adyacentes

Si la cancelación de la recepción se ha ejecutado con éxito, CanTp llama a la función de callback PduR_CanTpRxIndication con el resultado de notificación E_NOT_OK para informar a la capa superior sobre la cancelación [SWS_CanTp_00263].

Esta nota de uso se basa en la especificación AUTOSAR Classic R20-11 y ha sido generada automáticamente.

Guía del implementador pendiente (complejidad I1)

función 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).

GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 2d391dbc31e8 Procedencia
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

La función síncrona CanTp_ChangeParameter sirve para la modificación en tiempo de ejecución de un parámetro específico del protocolo de transporte como, por ejemplo, el tamaño de bloque ([SWS_CanTp_00302]). Proporcionado a través del archivo de cabecera CanTp.h, el servicio acepta el identificador de la PDU (id), el identificador del parámetro (parameter) así como el nuevo valor a establecer (value) ([SWS_CanTp_00302]). En caso de ejecución correcta, la función devuelve E_OK; si la modificación falla o es rechazada, entrega E_NOT_OK ([SWS_CanTp_00302]).

Con respecto a la concurrencia y a las condiciones de llamada se aplican los siguientes requisitos:

  • La interfaz está implementada como no reentrante (Non Reentrant) ([SWS_CanTp_00302]).
  • Si la N-SDU afectada ya se encuentra en un proceso de recepción en curso en el momento de la llamada, CanTp_ChangeParameter se cancela inmediatamente, devuelve E_NOT_OK y no modifica el valor del parámetro ([SWS_CanTp_00304]).

Existe una interacción especial en el caso de conexiones genéricas: si la función se llama para una N-SDU con MetaData, la modificación del parámetro se aplica a todas las conexiones genéricas y se adopta para todos los procesos de recepción posteriores ([SWS_CanTp_00338]).

Esta nota de uso ha sido generada automáticamente sobre la base de los requisitos de la especificación.

Guía del implementador pendiente (complejidad I1)

función 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.

GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 949f6cb3df18 Procedencia
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

usar

La función síncrona CanTp_ReadParameter sirve para leer el valor actual de los parámetros de recepción BS (Block Size) o STmin (Separation Time minimum) para una N-SDU de recepción especificada [SWS_CanTp_00323]. La declaración está disponible a través del archivo de cabecera CanTp.h [SWS_CanTp_00323].

La interfaz dispone de los siguientes parámetros:

  • id (in): identificador de la N-SDU recibida (tipo PduIdType) para la que se lee el parámetro de recepción [SWS_CanTp_00323].
  • parameter (in): determina el parámetro a leer (BS o STmin de tipo TPParameterType) [SWS_CanTp_00323].
  • value (out): puntero a uint16 mediante el cual se proporciona el valor de parámetro leído [SWS_CanTp_00323].

Como valor de retorno, la función devuelve Std_ReturnType; en este caso, E_OK señaliza la aceptación de la solicitud y E_NOT_OK el rechazo [SWS_CanTp_00323].

Manejo de errores

Siempre que la detección de errores de desarrollo (Development Error Detection) esté activada, CanTp_ReadParameter comprueba la validez de los parámetros id y parameter [SWS_CanTp_00324]. Si uno de estos parámetros no es válido, la función notifica el error de desarrollo CANTP_E_PARAM_ID y devuelve E_NOT_OK [SWS_CanTp_00324].

Concurrencia y restricciones

La función está especificada como no reentrante (Non Reentrant) [SWS_CanTp_00323]. Los llamadores deben evitar accesos paralelos a la misma interfaz.

Este texto ha sido generado por una IA a partir de los documentos de especificación de AUTOSAR R20-11.

Guía del implementador pendiente (complejidad I1)

función CanTp_MainFunction [SWS_CanTp_00213] 📄 PDF

void CanTp_MainFunction (void);

The main function for scheduling the CAN TP.

GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 64a7b42182e1 Procedencia Preguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

La función CanTp_MainFunction sirve como punto de entrada central para la planificación periódica del protocolo de transporte CAN (CAN TP) [SWS_CanTp_00213], [SWS_CanTp_00164]. Posee el ID de servicio 0x06, tiene la signatura void CanTp_MainFunction(void) y está disponible a través de la cabecera SchM_CanTp.h [SWS_CanTp_00213]. No recibe parámetros y no devuelve ningún valor de retorno [SWS_CanTp_00213].

Contexto de llamada y control temporal

La llamada se inicia conforme al periodo necesario, bien a través del Schedule Manager o bien mediante el módulo Free Running Timer [SWS_CanTp_00164]. Dentro del módulo, CanTp_MainFunction asume la supervisión temporal y el control de los flujos del protocolo [SWS_CanTp_00164]. En concreto, la función participa en la gestión de los siguientes temporizadores y condiciones temporales:

  • Los tiempos de espera (timeouts) del protocolo para la transmisión y la confirmación: N_As, N_Bs, N_Cs, así como N_Ar, N_Br y N_Cr [SWS_CanTp_00164].
  • El cumplimiento del tiempo mínimo de separación entre tramas STMmin [SWS_CanTp_00164].

Tratamiento de errores y concurrencia

En la carga útil no se definen códigos de error específicos para DET o DEM para esta función. Interpretación: al ser una función de planificación invocada cíclicamente, es probable que CanTp_MainFunction no sea reentrante y requiera una tasa de llamada constante para garantizar una decrementación correcta de los temporizadores internos. Pregunta Q-2fe22e31085abf49 (abierta)

Este texto fue generado por una IA a partir de la especificación AUTOSAR R20-11.

Guía del implementador pendiente (complejidad I1)

función 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.

GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 38e732456055 Procedencia
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

Uso y semántica

La función síncrona [SWS_CanTp_00214] notifica al módulo de transporte CAN la recepción de una N-PDU por parte de un módulo de interfaz de comunicación subyacente. La llamada transfiere la identificación de la PDU recibida (RxPduId) así como, a través del puntero PduInfoPtr, la longitud (SduLength), los datos útiles (SduDataPtr) y los metadatos asociados. La función no tiene valor de retorno.

Concurrencia y contexto de llamada

La función es reentrante para diferentes ID de PDU, pero no es reentrante para el mismo ID de PDU [SWS_CanTp_00214]. CanTp_RxIndication puede llamarse en contexto de interrupción, por ejemplo, directamente desde la interrupción de recepción CAN [SWS_CanTp_00235].

Interacción en conexiones genéricas

Al llamarse para Single Frames (SF) o First Frames (FF) con metadatos, CanTp almacena la información de direccionamiento contenida (como N_SA y N_TA en direccionamiento Normal-fixed o Mixed-29-Bit). Esta información sirve para establecer la conexión con la capa superior, enviar tramas de control de flujo (Flow Control, FC) y reconocer tramas consecutivas (Consecutive Frames, CF) [SWS_CanTp_00330]. En las tramas CF posteriores y tramas FC recibidas, CanTp comprueba los datos de dirección de los metadatos con respecto a los valores almacenados [SWS_CanTp_00333], [SWS_CanTp_00336].

Tratamiento de errores y relleno

Si DET está habilitado y PduInfoPtr es un puntero NULL, la función notifica el error CANTP_E_PARAM_POINTER y regresa sin realizar ninguna acción [SWS_CanTp_00322]. Si la comprobación de relleno (padding) está habilitada para tramas con una carga útil de hasta 8 bytes (CanTpRxPaddingActivation o CanTpTxPaddingActivation igual a CANTP_ON), en caso de errores de longitud se notifica el error en tiempo de ejecución CANTP_E_PADDING al DET:

  • Un SF con SduLength < 8 se descarta [SWS_CanTp_00345].
  • Un último CF con SduLength != 8 cancela la recepción en curso mediante PduR_CanTpRxIndication() con E_NOT_OK [SWS_CanTp_00346].
  • Un FC recibido con SduLength < 8 cancela la transmisión en curso mediante PduR_CanTpTxConfirmation() con E_NOT_OK [SWS_CanTp_00349].

Este texto fue generado por una IA y sirve como guía orientativa. El texto vinculante es la especificación AUTOSAR.

Guía del implementador pendiente (complejidad I2)

función 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.

GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 2541d17fed91 Procedencia
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

El módulo CanTp proporciona la función de callback síncrona CanTp_TxConfirmation (ID de servicio 0x40) a través de la cabecera CanTp.h para recibir llamadas de confirmación para PDU transmitidas [SWS_CanTp_00076] [SWS_CanTp_00215]. A través de esta interfaz, el módulo de interfaz de comunicación subyacente notifica el envío correcto o el fallo en la transmisión de una PDU [SWS_CanTp_00215].

Parámetros y valores de retorno

La función no devuelve ningún valor (void) y espera dos parámetros de entrada [SWS_CanTp_00215]:

  • TxPduId: ID de la PDU transmitida [SWS_CanTp_00215].
  • result: Estado de transmisión. El valor E_OK confirma la transmisión correcta, mientras que E_NOT_OK señala el fallo en la transmisión de la PDU [SWS_CanTp_00215].

Manejo de errores

Si se llama a CanTp_TxConfirmation con el valor de resultado E_NOT_OK, el módulo CanTp cancela la sesión de transmisión asociada [SWS_CanTp_00355].

Concurrencia y contexto de ejecución

En cuanto a la concurrencia, la función es reentrante para diferentes ID de PDU, pero no es reentrante para el mismo ID de PDU [SWS_CanTp_00215]. Debe poder invocarse en contexto de interrupción y puede llamarse, por ejemplo, directamente desde la interrupción de transmisión CAN [SWS_CanTp_00236].

Esta nota de uso ha sido generada de forma automatizada sobre la base de la especificación de AUTOSAR Classic Release R20-11.

Guía del implementador pendiente (complejidad 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#4a420b51
Content hash
4a420b51
Source
https://www.autosar.org/fileadmin/standards/R20-11/CP/AUTOSAR_SWS_CANTransportLayer.pdf#nameddest=SWS_CanTp_00208

Inicialización y estado

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

void CanTp_GetVersionInfo (Std_VersionInfoType* versioninfo);
CanTp_Init función

This function initializes the Can Tp module.

void CanTp_Init (const CanTp_ConfigType* CfgPtr);

Servicios

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);

Cíclico

The main function for scheduling the CAN TP.

void CanTp_MainFunction (void);

Tipos

Data structure type for the post - build configuration parameters.