DEENESPTFRRUARHIKOZHNL

CAN Transport Layer (CanTp)

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

Guia do móduloGERADO POR IA

Divide mensagens longas em frames CAN e remonta segmentos recebidos com controle de fluxo.
GERADO POR IA não revisado Modelo: claude-opus-5-5 · Esforço: high · Temperatura: não controlável · Prompt: 69cea53d1819 Procedência Perguntas em aberto (1)
Âncora causal: R20-11 Válido a partir de R20-11 Sintetizado para esta versão de especificação.
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

Divide mensagens longas em frames CAN e remonta segmentos recebidos com controle de fluxo.

A CAN Transport Layer divide mensagens que não cabem em um frame CAN, controla o fluxo de dados via Flow Control e remonta segmentos recebidos de acordo com a ISO 15765-2 [SWS_CanTp_00033]. Ela está situada entre o PduR e o CanIf, não possui buffer próprio de dados úteis e copia dados de transmissão e recepção por segmentos por meio dos serviços de cópia da camada superior [SWS_CanTp_00298]. Ela finaliza cada transmissão aceita com uma notificação à camada superior: com sucesso via E_OK; em caso de timeout ou cancelamento, via E_NOT_OK. Tudo isso pressupõe CanTp_Init; a MainFunction cíclica monitora os timeouts.

O CanTp é a CAN Transport Layer. Ele divide mensagens longas em frames CAN, controla o fluxo de dados e remonta segmentos recebidos; para isso, segue a ISO 15765-2, desde que a especificação não determine o contrário [SWS_CanTp_00033]. O módulo está situado entre o PduR e o CanIf e não possui buffer de dados úteis próprio. Ele copia os dados por segmentos por meio dos serviços de cópia da camada 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: as interfaces do CanTp para PduR, CanIf, gerenciamento de modo, escalonador e DET. Fontes: [SWS_CanTp_00216], SWS CanTp p. 17

Após a inicialização, o CanTp está em CANTP_OFF [SWS_CanTp_00168]. CanTp_Init com CanTp_ConfigType [SWS_CanTp_00208] coloca todas as conexões no estado de repouso [SWS_CanTp_00030]; depois disso, aplica-se CANTP_ON [SWS_CanTp_00170]. CanTp_Shutdown fecha todas as conexões sem notificar ninguém [SWS_CanTp_00202] [SWS_CanTp_00200]. Os canais de conexão operam de forma independente entre si com temporizadores próprios [SWS_CanTp_00122]. Se um canal de transmissão estiver ocupado, o CanTp rejeita novas solicitações com E_NOT_OK [SWS_CanTp_00123].

Na transmissão, CanTp_Transmit avalia apenas o comprimento (e, se aplicável, MetaData) [SWS_CanTp_00225]. Conforme o comprimento, segue um SF ou uma sessão segmentada [SWS_CanTp_00232]. Para cada segmento, o CanTp obtém os dados com PduR_CanTpCopyTxData [SWS_CanTp_00086] e aguarda por Flow Control após o FF e após cada bloco sob N_Bs [SWS_CanTp_00315]. Interpretação: a chamada apenas sinaliza a aceitação; o término da transferência ocorre de forma assíncrona via PduR_CanTpTxConfirmation [SWS_CanTp_00176] [SWS_CanTp_00204]. Pergunta (aberta)

Na recepção, o CanTp solicita primeiramente um buffer com PduR_CanTpStartOfReception [SWS_CanTp_00079]. Depois, copia cada CF com PduR_CanTpCopyRxData [SWS_CanTp_00269]. Se o buffer for escasso, o CanTp o consulta novamente em cada MainFunction e envia no máximo WFTmax FC(WAIT) [SWS_CanTp_00222] [SWS_CanTp_00223]. Ao final, ocorre PduR_CanTpRxIndication [SWS_CanTp_00084]. A CanTp_MainFunction cíclica monitora os timeouts [SWS_CanTp_00164].

Recepção segmentada de uma N-SDUCanIfCanTpPduRUse Case: First FrameCanTp_RxIndication(FF)N_Br gestartetPduR_CanTpStartOfReception(TpSduLength)BUFREQ_OK, tamanho de buffer disponívelPduR_CanTpCopyRxData(FF-Daten)CanIf_Transmit(FC: CTS, BS, STmin)looppor CF de um blocoCanTp_RxIndication(CF)PduR_CanTpCopyRxData(6/7 Byte)BUFREQ_OK, Restpufferaltbuffer restante não é suficiente para o próximo blocoN_Br em execuçãoCanTp_MainFunctionPduR_CanTpCopyRxData(comprimento 0, NULL_PTR)BUFREQ_OK, RestpufferCanIf_Transmit(FC: WAIT)no máximo WFTmax vezesPuffer ausreichendCanIf_Transmit(FC: CTS)Use Case: Letzter Consecutive FrameCanTp_RxIndication(letzter CF)PduR_CanTpCopyRxData()PduR_CanTpRxIndication(E_OK)

Diagrama de sequência: recepção segmentada com negociação de buffer e Flow Control CTS/WAIT. Fontes: [SWS_CanTp_00269], [SWS_CanTp_00222], SWS CanTp p. 38

O CanTp trata erros de três maneiras. Ele reporta erros de desenvolvimento ao DET e retorna E_NOT_OK [SWS_CanTp_00294]. Erros de protocolo, como timeouts, abortam a sessão e vão para o PduR com E_NOT_OK [SWS_CanTp_00205] [SWS_CanTp_00311]. O mesmo se aplica a cancelamentos sob solicitação por meio dos serviços Cancel [SWS_CanTp_00255] [SWS_CanTp_00263]. Para IDs inválidos nos serviços Cancel, a R20-11 exige CANTP_E_PARAM_ID [SWS_CanTp_00254], enquanto releases mais recentes especificam outros códigos.

Papel na pilha CAN: protocolo de transporte entre PduR e CanIf

O CanTp é a CAN Transport Layer. Ele divide mensagens que não cabem em um único frame CAN em segmentos, controla o fluxo de dados e remonta segmentos recebidos (SWS CanTp p. 24, SWS CanTp p. 17). A base é a ISO 15765-2: qualquer recomendação dessa norma se aplica, a menos que a especificação a exclua expressamente [SWS_CanTp_00033]. O CanTp executa segmentação e remontagem apenas no estado CANTP_ON [SWS_CanTp_00238].

Para cima, o CanTp disponibiliza os seguintes serviços ao PduR: CanTp_Transmit [SWS_CanTp_00212], CanTp_CancelTransmit [SWS_CanTp_00246] e CanTp_CancelReceive [SWS_CanTp_00257]. Ele próprio chama para cima PduR_CanTpStartOfReception, PduR_CanTpCopyRxData, PduR_CanTpCopyTxData, PduR_CanTpRxIndication e PduR_CanTpTxConfirmation, e para baixo CanIf_Transmit [SWS_CanTp_00216]. A camada inferior reporta frames recebidos via CanTp_RxIndication [SWS_CanTp_00078] e confirmações de transmissão via CanTp_TxConfirmation [SWS_CanTp_00076]. Ambas as funções devem poder ser chamadas em contexto de interrupção [SWS_CanTp_00235] [SWS_CanTp_00236]. Trechos de documentos mais recentes indicam como chamador o roteador de L-SDU (LSduR) (SWS CanTp p. 27). Já os requisitos da R20-11 referem-se à CAN Interface, como [SWS_CanTp_00031] e [SWS_CanTp_00335].

O CanTp não possui buffer próprio de dados úteis. Ele obtém os dados de transmissão diretamente na camada superior [SWS_CanTp_00298] e copia os dados recebidos imediatamente para a memória desta (SWS CanTp p. 35). Disso resultam períodos de bloqueio para a camada superior (SWS CanTp p. 35):

  • Ela mantém o buffer de transmissão bloqueado assim que CanTp_Transmit retorna com E_OK, até que PduR_CanTpTxConfirmation chegue.
  • Ela mantém o buffer de recepção bloqueado assim que fornecer BUFREQ_OK para PduR_CanTpStartOfReception, até que PduR_CanTpRxIndication chegue.
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: o CanTp fica entre o PduR e o CanIf. Ele é inicializado pelo gerenciamento de modo, acionado ciclicamente pelo escalonador e reporta erros ao DET. Fontes: [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 e canais de conexão independentes

O CanTp possui os estados CANTP_OFF e CANTP_ON [SWS_CanTp_00027]. Após a energização, o módulo está em CANTP_OFF [SWS_CanTp_00168]; somente nele a configuração post-build pode ser atualizada [SWS_CanTp_00169].

CanTp_Init recebe um ponteiro para CanTp_ConfigType [SWS_CanTp_00208] [SWS_CanTp_00340]. A função inicializa todas as variáveis globais e coloca cada conexão no estado de repouso CANTP_RX_WAIT ou CANTP_TX_WAIT [SWS_CanTp_00030]; depois disso, aplica-se CANTP_ON [SWS_CanTp_00170]. O ambiente deve chamar CanTp_Init antes de qualquer outra utilização [SWS_CanTp_00199]. No guia de gerenciamento de modo, uma regra do BswM assume essa chamada após NvM_ReadAll (Mode Management Guide p. 54). Uma nova chamada em CANTP_ON descarta todas as conexões em andamento e retorna ao estado de repouso [SWS_CanTp_00273] [SWS_CanTp_00111].

CanTp_Shutdown fecha todas as conexões abertas, libera os recursos e define CANTP_OFF [SWS_CanTp_00202]. Nesse processo, o CanTp não notifica ninguém sobre transmissões abortadas [SWS_CanTp_00200] (SWS CanTp p. 58).

Em CANTP_ON, várias conexões são executadas simultaneamente [SWS_CanTp_00096]:

  • Cada N-SDU é associada estaticamente a um canal de conexão. Cada canal possui temporizadores, buffers e uma máquina de estados próprios [SWS_CanTp_00121] [SWS_CanTp_00122].
  • Os canais são visíveis apenas internamente [SWS_CanTp_00285]. A ferramenta de configuração determina a quantidade deles [SWS_CanTp_00289].
  • Se um canal de transmissão estiver em CANTP_TX_PROCESSING, o CanTp rejeita novas solicitações via CanTp_Transmit com E_NOT_OK [SWS_CanTp_00123]. O mesmo se aplica a uma N-SDU que já esteja em uma sessão em andamento [SWS_CanTp_00206].
  • Se várias N-SDUs compartilharem um canal e não houver canal livre disponível, o CanTp rejeita a transmissão ou aborta a recepção [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 (configuração de post-build modificável) 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 nenhuma N-PDU adicional esperada ou cancelamento TXP CANTP_TX_PROCESSING TXW->TXP CanTp_Transmit = E_OK TXP->OFF CanTp_Shutdown (sem notificação) TXP->TXW Transmissão concluída ou cancelamento

Diagrama de estados: após CanTp_Init, os canais de recepção e de transmissão alternam independentemente entre WAIT e PROCESSING; CanTp_Shutdown conduz de volta para CANTP_OFF. Fontes: [SWS_CanTp_00027], [SWS_CanTp_00030], [SWS_CanTp_00170], [SWS_CanTp_00202], SWS CanTp p. 27

Transmissão: do CanTp_Transmit até a confirmação

CanTp_Transmit recebe TxPduId e PduInfoPtr [SWS_CanTp_00212]. Sem MetaData, o CanTp avalia apenas o comprimento total SduLength e não acessa o buffer de dados [SWS_CanTp_00225] [SWS_CanTp_00299]. Com MetaData, ele armazena adicionalmente a informação de endereçamento para todos os SF, FF e CF [SWS_CanTp_00334]. Se os dados couberem em uma N-PDU, o CanTp envia um SF; caso contrário, abre uma sessão de múltiplos frames [SWS_CanTp_00232] (SWS CanTp p. 60). O comprimento máximo de transmissão (TX_DL) decorre de PduLength no EcuC [SWS_CanTp_00354]. Interpretação: a chamada reporta de forma síncrona apenas se a solicitação foi aceita; a transferência propriamente dita ocorre de forma assíncrona [SWS_CanTp_00176]. Pergunta Q-b6d13590324e2906 (aberta) Após a aceitação, o CanTp reporta o término em qualquer caso via PduR_CanTpTxConfirmation [SWS_CanTp_00177] [SWS_CanTp_00204].

Para cada segmento (SF, FF, CF), o CanTp chama PduR_CanTpCopyTxData [SWS_CanTp_00086]; até a primeira chamada, o temporizador N_Cs fica em execução [SWS_CanTp_00167]. Se a camada superior retornar BUFREQ_E_BUSY, o CanTp tenta novamente mais tarde [SWS_CanTp_00184]. O CanTp sempre define o parâmetro de repetição como NULL, porque a ISO 15765-2 não prevê repetição [SWS_CanTp_00272].

Após o FF e após o último CF de cada bloco, o CanTp aguarda sob N_Bs por um frame de Flow Control [SWS_CanTp_00315]. Com ele, o receptor libera CFs adicionais ou os atrasa [SWS_CanTp_00282]. Se a sessão for concluída com sucesso, segue-se PduR_CanTpTxConfirmation com E_OK [SWS_CanTp_00090]. O mesmo fluxo pull é demonstrado pelo exemplo de 50 bytes (SWS CanTp p. 37) e pelo caminho de DCM para CanTp (SWS PduR p. 104).

Envio segmentado de uma N-SDUPduRCanTpCanIfUse Case: disparoCanTp_Transmit(TxPduId, PduInfoPtr)apenas SduLength (+ MetaData)E_OKN_Cs em execuçãoUse Case: First FramePduR_CanTpCopyTxData()BUFREQ_OKCanIf_Transmit(FF)CanTp_TxConfirmation(E_OK)N_Bs em execução: aguardando FCCanTp_RxIndication(FC: CTS, BS, STmin)looppor CF de um bloco (BS frames, intervalo STmin)PduR_CanTpCopyTxData()BUFREQ_OKCanIf_Transmit(CF)CanTp_TxConfirmation(E_OK)após cada bloco aguardar novamente FC (N_Bs)Use Case: AbschlussPduR_CanTpTxConfirmation(E_OK)

Diagrama de sequência: o CanTp solicita os dados por segmentos ao PduR, aguarda por Flow Control após o FF e após cada bloco e confirma ao final com E_OK. Fontes: [SWS_CanTp_00212], [SWS_CanTp_00086], [SWS_CanTp_00315], [SWS_CanTp_00090], SWS CanTp p. 73

Recepção: negociação de buffer, Flow Control e remontagem

A cada SF ou FF recebido, o CanTp reporta o início da recepção com PduR_CanTpStartOfReception [SWS_CanTp_00079]. O tamanho do buffer disponível retorna por meio de um parâmetro de saída e pode ser menor que a N-SDU [SWS_CanTp_00080]. Em caso de FF, o CanTp inicia previamente o temporizador N_Br [SWS_CanTp_00166]. Ele envia o Flow Control apenas quando o resultado estiver disponível; o conteúdo deste depende desse resultado [SWS_CanTp_00064] [SWS_CanTp_00277]. Todos os FCs de uma sessão de recepção contêm os mesmos valores para BS e STmin [SWS_CanTp_00067]. Um FC segue sempre após BS Consecutive Frames [SWS_CanTp_00278].

Após cada CF, o CanTp entrega os dados úteis com PduR_CanTpCopyRxData e obtém o buffer restante [SWS_CanTp_00269]. No CAN 2.0, são seis ou sete bytes por CF. Se o buffer restante após o último CF de um bloco não for suficiente para o próximo bloco, o CanTp inicia o temporizador N_Br [SWS_CanTp_00325] [SWS_CanTp_00082]. Enquanto esse temporizador estiver em execução:

Quando a sessão termina, seja com sucesso ou não, o CanTp chama PduR_CanTpRxIndication [SWS_CanTp_00084]. Com e sem padding, o CanTp repassa para cima apenas os bytes de dados efetivamente utilizados [SWS_CanTp_00116].

Recepção segmentada de uma N-SDUCanIfCanTpPduRUse Case: First FrameCanTp_RxIndication(FF)N_Br gestartetPduR_CanTpStartOfReception(TpSduLength)BUFREQ_OK, tamanho de buffer disponívelPduR_CanTpCopyRxData(FF-Daten)CanIf_Transmit(FC: CTS, BS, STmin)looppor CF de um blocoCanTp_RxIndication(CF)PduR_CanTpCopyRxData(6/7 Byte)BUFREQ_OK, Restpufferaltbuffer restante não é suficiente para o próximo blocoN_Br em execuçãoCanTp_MainFunctionPduR_CanTpCopyRxData(comprimento 0, NULL_PTR)BUFREQ_OK, RestpufferCanIf_Transmit(FC: WAIT)no máximo WFTmax vezesPuffer ausreichendCanIf_Transmit(FC: CTS)Use Case: Letzter Consecutive FrameCanTp_RxIndication(letzter CF)PduR_CanTpCopyRxData()PduR_CanTpRxIndication(E_OK)

Diagrama de sequência: recepção segmentada com negociação de buffer, Flow Control em blocos e fase de espera com buffer escasso. Fontes: [SWS_CanTp_00079], [SWS_CanTp_00269], [SWS_CanTp_00222], [SWS_CanTp_00084], SWS CanTp p. 76

rxstart Ein CanTp_RxIndication: SF ou FF recebido Kanal Kanal in CANTP_RX_PROCESSING? Ein->Kanal Art com MetaData ou outro N_AI? Kanal->Art sim Sor PduR_CanTpStartOfReception() Kanal->Sor não Ign Frame ignorieren Art->Ign sim 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 recepção: sem FC, sem 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 suficiente para o próximo bloco? Typ->Puf FF Cts FC(CTS) senden Puf->Cts sim Br N_Br starten, Puffer in MainFunction abfragen Puf->Br não

Diagrama de atividades: assim o CanTp decide para um SF ou FF recebido com base no estado do canal e no resultado de PduR_CanTpStartOfReception. Fontes: [SWS_CanTp_00124], [SWS_CanTp_00337], [SWS_CanTp_00081], [SWS_CanTp_00318], [SWS_CanTp_00353], SWS CanTp p. 67

Endereçamento, MetaData e padding

O endereçamento funcional (1:n) é permitido apenas para SF [SWS_CanTp_00092]. O CanTp rejeita uma sessão segmentada por meio de um identificador funcional e reporta CANTP_E_INVALID_TATYPE [SWS_CanTp_00093] (SWS CanTp p. 39). No Extended Addressing ou Mixed Addressing, o CanTp determina a N-SDU a partir de N_TA ou N_AE no primeiro byte de dados [SWS_CanTp_00095] [SWS_CanTp_00284] [SWS_CanTp_00283]. Para a atribuição dos identificadores, aplica-se (SWS CanTp p. 44):

  • Cada NSduId é associado a exatamente um LSduId [SWS_CanTp_00035].
  • O LSduId de um FC identifica exatamente um NSduId juntamente com N_TA ou N_AE [SWS_CanTp_00094].
  • Múltiplas N-SDUs só podem referenciar a mesma N-PDU no Extended/Mixed Addressing ou com MetaData [SWS_CanTp_00328].

Conexões genéricas operam com MetaData. O CanTp armazena a informação de endereçamento de SF ou FF [SWS_CanTp_00330], repassa-a para PduR_CanTpStartOfReception [SWS_CanTp_00331] e verifica os CFs subsequentes contra ela [SWS_CanTp_00333]. Se o canal já estiver em recepção, o CanTp ignora um SF ou FF adicional com MetaData [SWS_CanTp_00337].

O padding é ativado por N-SDU (SWS CanTp p. 43). O valor de preenchimento é CANTP_PADDING_BYTE [SWS_CanTp_00059]. Para frames com no máximo 8 bytes de carga útil, aplica-se:

Se um comprimento de transmissão não corresponder a nenhum DLC válido, o CanTp preenche até o próximo valor válido mais alto [SWS_CanTp_00351]. O CanTp deriva o comprimento de recepção RX_DL a partir do primeiro CAN_DL recebido [SWS_CanTp_00350].

Monitoramento de tempo, parâmetros de tempo de execução e cancelamento sob solicitação

CanTp_MainFunction [SWS_CanTp_00213] é chamado ciclicamente. Ele monitora N_As, N_Bs, N_Cs, N_Ar, N_Br, N_Cr bem como STmin [SWS_CanTp_00164] (SWS CanTp p. 63). Seu ciclo baseia-se em CanTpMainFunctionPeriod [SWS_CanTp_00300]. Esse valor deve corresponder ao tempo de ciclo da task chamadora (SWS CanTp p. 77). Como exemplo, a análise de temporização cita uma task de 5 ms (TR Timing Analysis p. 117).

Dois serviços acessam em tempo de execução os parâmetros de recepção BS e STmin de uma N-SDU: CanTp_ChangeParameter os modifica [SWS_CanTp_00302], CanTp_ReadParameter os lê [SWS_CanTp_00323]. Ambos existem apenas se CanTpChangeParameterApi = TRUE (SWS CanTp p. 61). BS é apenas um valor máximo que o CanTp pode ficar abaixo por razões de buffer [SWS_CanTp_00091]. Entre o FF e o último CF de uma sessão de recepção em andamento, o CanTp rejeita qualquer alteração com E_NOT_OK [SWS_CanTp_00303] [SWS_CanTp_00304]. Em conexões genéricas, uma alteração se aplica a todas [SWS_CanTp_00338].

Transmissões em andamento podem ser canceladas mediante solicitação:

Comportamento em caso de erro

Erros de desenvolvimento. Se a detecção estiver ativa, o CanTp relata o erro ao DET e retorna E_NOT_OK [SWS_CanTp_00294] [SWS_CanTp_00217] (SWS CanTp p. 49). Os códigos são definidos por [SWS_CanTp_00293]. Casos típicos:

Divergência entre os releases: para um PduId inválido nos serviços de cancelamento, o R20-11 exige CANTP_E_PARAM_ID [SWS_CanTp_00254] [SWS_CanTp_00260]. Trechos de documentos mais recentes citam, em vez disso, CANTP_E_INVALID_TX_ID ou CANTP_E_INVALID_RX_ID (SWS CanTp p. 59). Para o R20-11, aplica-se o requisito.

Erros de tempo de execução. Eles são enviados ao Default Error Tracer [SWS_CanTp_00352]:

Erros de protocolo. Eles encerram a sessão com E_NOT_OK para a camada superior [SWS_CanTp_00205]:

O PduR encaminha a confirmação negativa para o usuário, por exemplo, para o DCM, que então cuida da recuperação (Error Description p. 29, Error Description p. 28). Erros de produção são tratados pelo DEM via 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 com OVFLW ou FS inválido t5->TA t6 FC menor que 8 bytes com 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 curto demais com 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 atividades: todas as causas de cancelamento resultam, para cada direção, em uma notificação negativa ao PduR. Fontes: [SWS_CanTp_00205], [SWS_CanTp_00343], [SWS_CanTp_00355], [SWS_CanTp_00342], [SWS_CanTp_00223], [SWS_CanTp_00084], Error Description p. 28

Evidências mais detalhadas

Guia gerado por IA com base em extratos da especificação do CanTp (R20-11). Apenas os requisitos com link são vinculativos; trechos de documentos de outros releases servem apenas para esclarecimento.

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

função CanTp_Init [SWS_CanTp_00208] 📄 PDF

void CanTp_Init (const CanTp_ConfigType* CfgPtr);

This function initializes the Can Tp module.

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 62b706f68200 Procedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

A função síncrona e não reentrante CanTp_Init inicializa o módulo CanTp [SWS_CanTp_00208]. Ela recebe, por meio do parâmetro CfgPtr, um ponteiro para os dados de configuração post-build (CanTp_ConfigType) e não possui valor de retorno [SWS_CanTp_00208]. O ambiente do módulo deve obrigatoriamente chamar CanTp_Init antes que o módulo possa ser utilizado para outros processamentos [SWS_CanTp_00199].

Durante a inicialização, todas as variáveis globais do módulo são inicializadas e todas as conexões do protocolo de transporte são colocadas em um subestado de CANTP_ON, no qual nenhuma transmissão segmentada nem recepção segmentada está ativa [SWS_CanTp_00030]. Os caminhos de recepção encontram-se no estado CANTP_RX_WAIT e os caminhos de transmissão no estado CANTP_TX_WAIT [SWS_CanTp_00030]. Após a execução bem-sucedida, o módulo muda para o estado interno CANTP_ON [SWS_CanTp_00170].

Se CanTp_Init for chamada quando o módulo já estiver no estado global CANTP_ON, a função reinicia o módulo para o estado Idle, de modo que nenhuma operação de transmissão ou recepção esteja em andamento [SWS_CanTp_00111].

Se a detecção de erros de desenvolvimento (Development Error Detection) estiver ativada, o módulo CanTp reporta o erro CANTP_E_UNINIT caso o PDU Router ou a CAN Interface tente executar funções do módulo (com exceção de CanTp_GetVersionInfo) antes da chamada de CanTp_Init [SWS_CanTp_00031].

Este texto foi gerado por uma IA com base na especificação.

Guia do implementador em breve (complexidade I2)

função CanTp_Shutdown [SWS_CanTp_00211] 📄 PDF

void CanTp_Shutdown (void);

This function is called to shutdown the Can Tp module.

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: e5430e2cac5b Procedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

Utilização e contexto de chamada

A função CanTp_Shutdown serve para desativar de forma ordenada todo o módulo CanTp ([SWS_CanTp_00211]). A interface é disponibilizada através do arquivo de cabeçalho CanTp.h e possui o Service ID 0x02 ([SWS_CanTp_00211]). A chamada é processada de forma síncrona, não recebe parâmetros de entrada e não fornece nenhum valor de retorno ([SWS_CanTp_00211]).

Transição de estado e limpeza

Durante a execução, CanTp_Shutdown fecha todas as conexões de protocolo de transporte ainda pendentes, libera todos os recursos alocados e transita o módulo CanTp para o estado CANTP_OFF ([SWS_CanTp_00202]). Um aspecto essencial do comportamento de cancelamento é que nenhuma notificação expressa pode ser disparada para camadas superiores para transmissões de quadros ou procedimentos de recepção de quadros ainda pendentes ([SWS_CanTp_00200]).

Simultaneidade e condições marginais

A função é especificada como não reentrante (Non Reentrant) ([SWS_CanTp_00211]). Por conseguinte, não deve ser chamada simultaneamente a partir de diferentes contextos de execução ou rotinas de interrupção. Códigos de erro específicos ou notificações para a gestão de erros não estão previstos no âmbito funcional da interface.

Esta nota de uso foi criada de forma automatizada com base na especificação AUTOSAR Classic Release R20-11.

Guia do implementador em breve (complexidade I1)

função CanTp_Transmit [SWS_CanTp_00212] 📄 PDF

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

Requests transmission of a PDU.

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 7a5280a26edd Procedência Perguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

usar

A função CanTp_Transmit destina-se à solicitação de transmissão de uma N-SDU através da camada de transporte CAN [SWS_CanTp_00212]. Como parâmetros, são passados o identificador da PDU a ser transmitida (TxPduId), bem como um ponteiro para dados, comprimento e metadados (PduInfoPtr) [SWS_CanTp_00212]. A chamada reporta com E_OK a aceitação bem-sucedida ou com E_NOT_OK a rejeição da solicitação [SWS_CanTp_00212]. Enquanto a chamada é confirmada de forma síncrona, o processamento da transmissão é assíncrono [SWS_CanTp_00176] (Interpretação: a indicação "Synchronous" na tabela de especificação deve referir-se à recepção da solicitação). Pergunta Q-df438ddaa4963aba (aberta)

Interação e processamento de PDUs

Para N-SDUs com metadados, o módulo armazena as informações de endereçamento (dependendo do formato de endereçamento, como Normal, Extended, Mixed 11 bit, Normal fixed ou Mixed 29 bit) a fim de utilizá-las para N-PDUs SF, FF e CF, bem como para a identificação de N-PDUs FC [SWS_CanTp_00334]. Se nenhum metadado for utilizado, CanTp_Transmit acessa apenas a indicação de comprimento SduLength para a preparação do PCI de SF ou FF e não utiliza o buffer de dados da N-SDU [SWS_CanTp_00225].

Tratamento de erros e simultaneidade

  • Verificação de erros: se o DET estiver ativado e PduInfoPtr for um ponteiro NULL, a função reporta o erro CANTP_E_PARAM_POINTER e retorna sem nenhuma ação adicional [SWS_CanTp_00321].
  • Ocupação do canal: se o canal atribuído estiver no estado CANTP_TX_PROCESSING ou se uma sessão para o identificador da N-SDU já estiver em andamento, a solicitação de transmissão é rejeitada e E_NOT_OK é retornado [SWS_CanTp_00123], [SWS_CanTp_00206].
  • Reentrância: o serviço é reentrante para IDs de PDU diferentes, mas não é reentrante para o mesmo ID de PDU [SWS_CanTp_00212].

Este texto foi gerado por uma IA com base na especificação AUTOSAR Classic R20-11.

Guia do implementador em breve (complexidade I2)

função 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.

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: f7624766b8a1 Procedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

A função síncrona CanTp_CancelTransmit solicita o cancelamento de uma transmissão de PDU em andamento em um módulo de comunicação subordinado [SWS_CanTp_00246] e inicia, assim, o cancelamento do processo de envio [SWS_CanTp_00274]. O identificador da PDU afetada (TxPduId) é passado como parâmetro [SWS_CanTp_00246]. Como valor de retorno, E_OK sinaliza a realização bem-sucedida do cancelamento pelo módulo de destino, enquanto E_NOT_OK indica uma rejeição [SWS_CanTp_00246].

Após a chamada da função, a transmissão na conexão afetada é cancelada [SWS_CanTp_00243]. Se o cancelamento tiver sido executado com sucesso, o módulo CanTp chama obrigatoriamente a confirmação PduR_CanTpTxConfirmation com o resultado negativo E_NOT_OK para informar as camadas superiores sobre o cancelamento [SWS_CanTp_00255].

Com a detecção de erros de desenvolvimento (Development Error Detection) ativada, CanTp_CancelTransmit verifica a validade de TxPduId: no caso de um parâmetro inválido, o erro de desenvolvimento CANTP_E_PARAM_ID é gerado e E_NOT_OK é retornado [SWS_CanTp_00254]. Caso o cancelamento seja solicitado para uma N-SDU que não esteja atualmente em processo de transmissão, o módulo reporta o erro de tempo de execução CANTP_E_OPER_NOT_SUPPORTED ao Default Error Tracer (DET) e retorna igualmente E_NOT_OK [SWS_CanTp_00254].

Em relação à simultaneidade, a função é reentrante para diferentes IDs de PDU, mas não pode ser chamada concorrentemente para a mesma TxPduId [SWS_CanTp_00246].

Esta nota de uso foi criada automaticamente com base na especificação AUTOSAR.

Guia do implementador em breve (complexidade I2)

função 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.

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: ccccdf72ba41 Procedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

A função CanTp_CancelReceive cancela de forma síncrona a recepção em andamento de uma PDU em um módulo subordinado de protocolo de transporte [SWS_CanTp_00257]. Ela está disponível por meio do arquivo de cabeçalho CanTp.h e possui o Service-ID 0x4c [SWS_CanTp_00257].

Uso e condições de chamada

Por meio do parâmetro de entrada RxPduId é passado o identificador da PDU a ser cancelada [SWS_CanTp_00257]. A chamada é processada de forma síncrona e está especificada como não reentrante (Non Reentrant) [SWS_CanTp_00257]. Como valor de retorno, a interface do tipo Std_ReturnType fornece:

  • E_OK: o cancelamento foi executado com sucesso pelo módulo de destino [SWS_CanTp_00257].
  • E_NOT_OK: o cancelamento foi rejeitado pelo módulo de destino [SWS_CanTp_00257].

Tratamento de erros

Com a detecção de erros de desenvolvimento (Development Error Detection) ativada, a função valida o parâmetro RxPduId [SWS_CanTp_00260]:

  • Se o valor de RxPduId for inválido, CanTp_CancelReceive reporta o erro de desenvolvimento CANTP_E_PARAM_ID e retorna E_NOT_OK [SWS_CanTp_00260].
  • Se for solicitado um cancelamento para uma N-SDU que não se encontre atualmente em processo de recepção em andamento, o módulo reporta o erro de tempo de execução CANTP_E_OPER_NOT_SUPPORTED ao Default Error Tracer e retorna E_NOT_OK [SWS_CanTp_00260].

Interação com módulos vizinhos

Se o cancelamento da recepção tiver sido executado com sucesso, o CanTp chama a função de callback PduR_CanTpRxIndication com o resultado da notificação E_NOT_OK para informar a camada superior sobre o cancelamento [SWS_CanTp_00263].

Esta nota de uso baseia-se na especificação AUTOSAR Classic R20-11 e foi gerada automaticamente.

Guia do implementador em breve (complexidade I1)

função 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).

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 2d391dbc31e8 Procedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

A função síncrona CanTp_ChangeParameter destina-se à alteração em tempo de execução de um parâmetro específico do protocolo de transporte, como, por exemplo, o tamanho do bloco ([SWS_CanTp_00302]). Disponibilizado por meio do arquivo de cabeçalho CanTp.h, o serviço aceita o identificador da PDU (id), o identificador do parâmetro (parameter), bem como o novo valor a ser definido (value) ([SWS_CanTp_00302]). Em caso de execução bem-sucedida, a função retorna E_OK; se a alteração falhar ou for rejeitada, ela retorna E_NOT_OK ([SWS_CanTp_00302]).

Em relação à simultaneidade e às condições de chamada, aplicam-se as seguintes diretrizes:

  • A interface é implementada como não reentrante (Non Reentrant) ([SWS_CanTp_00302]).
  • Se a N-SDU afetada já se encontrar em um processo de recepção em andamento no momento da chamada, CanTp_ChangeParameter é interrompida imediatamente, retorna E_NOT_OK e não altera o valor do parâmetro ([SWS_CanTp_00304]).

Existe uma interação especial no caso de conexões genéricas: se a função for chamada para uma N-SDU com MetaData, a alteração do parâmetro será aplicada a todas as conexões genéricas e assumida para todos os processos de recepção subsequentes ([SWS_CanTp_00338]).

Esta nota de uso foi gerada automaticamente com base nos requisitos da especificação.

Guia do implementador em breve (complexidade I1)

função 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.

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 949f6cb3df18 Procedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

usar

A função síncrona CanTp_ReadParameter destina-se à leitura do valor atual dos parâmetros de recepção BS (Block Size) ou STmin (Separation Time minimum) para uma N-SDU de recepção especificada [SWS_CanTp_00323]. A declaração está disponível por meio do arquivo de cabeçalho CanTp.h [SWS_CanTp_00323].

A interface possui os seguintes parâmetros:

  • id (in): identificador da N-SDU recebida (tipo PduIdType), para a qual o parâmetro de recepção é lido [SWS_CanTp_00323].
  • parameter (in): determina o parâmetro a ser lido (BS ou STmin do tipo TPParameterType) [SWS_CanTp_00323].
  • value (out): ponteiro para uint16, através do qual o valor do parâmetro lido é disponibilizado [SWS_CanTp_00323].

Como valor de retorno, a função retorna Std_ReturnType; neste caso, E_OK sinaliza a aceitação da solicitação e E_NOT_OK a rejeição [SWS_CanTp_00323].

Tratamento de erros

Caso a detecção de erros de desenvolvimento (Development Error Detection) esteja ativada, CanTp_ReadParameter verifica a validade dos parâmetros id e parameter [SWS_CanTp_00324]. Se um desses parâmetros for inválido, a função reporta o erro de desenvolvimento CANTP_E_PARAM_ID e retorna E_NOT_OK [SWS_CanTp_00324].

Simultaneidade e restrições

A função está especificada como não reentrante (Non Reentrant) [SWS_CanTp_00323]. Os chamadores devem evitar acessos paralelos à mesma interface.

Este texto foi gerado por uma IA com base nos documentos de especificação do AUTOSAR R20-11.

Guia do implementador em breve (complexidade I1)

função CanTp_MainFunction [SWS_CanTp_00213] 📄 PDF

void CanTp_MainFunction (void);

The main function for scheduling the CAN TP.

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 64a7b42182e1 Procedência Perguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

A função CanTp_MainFunction serve como ponto de entrada central para o escalonamento periódico do protocolo de transporte CAN (CAN TP) [SWS_CanTp_00213], [SWS_CanTp_00164]. Ela possui o ID de serviço 0x06, tem a assinatura void CanTp_MainFunction(void) e está disponível através do cabeçalho SchM_CanTp.h [SWS_CanTp_00213]. Ela não recebe parâmetros e não retorna nenhum valor [SWS_CanTp_00213].

Contexto de chamada e temporização

A chamada é iniciada de acordo com o período necessário pelo Schedule Manager ou pelo módulo Free Running Timer [SWS_CanTp_00164]. Dentro do módulo, CanTp_MainFunction assume o monitoramento temporal e o controle das execuções do protocolo [SWS_CanTp_00164]. Especificamente, a função participa do processamento dos seguintes temporizadores e condições de tempo:

  • Os timeouts de protocolo da transmissão e confirmação: N_As, N_Bs, N_Cs bem como N_Ar, N_Br e N_Cr [SWS_CanTp_00164].
  • O cumprimento do tempo mínimo de separação de frames STMmin [SWS_CanTp_00164].

Tratamento de erros e simultaneidade

Códigos de erro específicos para DET ou DEM não estão definidos no payload para esta função. Interpretação: como função de escalonamento chamada ciclicamente, CanTp_MainFunction não deve ser reentrante e deve exigir uma taxa de chamada consistente para assegurar a decrementação correta dos temporizadores internos. Pergunta Q-2fe22e31085abf49 (aberta)

Este texto foi gerado por uma IA com base na especificação AUTOSAR R20-11.

Guia do implementador em breve (complexidade I1)

função 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.

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 38e732456055 Procedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

Utilização e semântica

A função síncrona [SWS_CanTp_00214] notifica o módulo de transporte CAN sobre a receção de uma N-PDU por parte de um módulo de interface de comunicação subjacente. A chamada transmite a identificação da PDU recebida (RxPduId), bem como o comprimento (SduLength), os dados úteis (SduDataPtr) e os metadados associados através do ponteiro PduInfoPtr. A função não possui valor de retorno.

Simultaneidade e contexto de chamada

A função é reentrante para IDs de PDU diferentes, mas não é reentrante para o mesmo ID de PDU [SWS_CanTp_00214]. CanTp_RxIndication pode ser chamada no contexto de interrupção, por exemplo diretamente a partir da interrupção de receção CAN [SWS_CanTp_00235].

Interação em ligações genéricas

Em caso de chamada para Single Frames (SF) ou First Frames (FF) com metadados, o CanTp armazena as informações de endereço contidas (tais como N_SA e N_TA no endereçamento Normal fixed ou Mixed de 29 bits). Estas informações servem para o estabelecimento da ligação com a camada superior, o envio de Flow Control Frames (FC) e a deteção de Consecutive Frames (CF) [SWS_CanTp_00330]. Em frames CF subsequentes e frames FC recebidos, o CanTp valida os dados de endereço dos metadados contra os valores armazenados [SWS_CanTp_00333], [SWS_CanTp_00336].

Tratamento de erros e padding

Se o DET estiver ativado e PduInfoPtr for um ponteiro NULL, a função reporta o erro CANTP_E_PARAM_POINTER e retorna sem efetuar qualquer ação [SWS_CanTp_00322]. Se a verificação de padding estiver ativada para frames com uma carga útil de até 8 bytes (CanTpRxPaddingActivation ou CanTpTxPaddingActivation igual a CANTP_ON), o erro de tempo de execução CANTP_E_PADDING é reportado ao DET em caso de erros de comprimento:

  • Um SF com SduLength < 8 é rejeitado [SWS_CanTp_00345].
  • Um último CF com SduLength != 8 cancela a receção em curso via PduR_CanTpRxIndication() com E_NOT_OK [SWS_CanTp_00346].
  • Um FC recebido com SduLength < 8 cancela a transmissão em curso via PduR_CanTpTxConfirmation() com E_NOT_OK [SWS_CanTp_00349].

Este texto foi gerado por uma IA e serve como orientação. A especificação AUTOSAR é determinante.

Guia do implementador em breve (complexidade I2)

função 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.

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 2541d17fed91 Procedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

O módulo CanTp disponibiliza a função de callback síncrona CanTp_TxConfirmation (Service-ID 0x40) através do ficheiro de cabeçalho CanTp.h para receber chamadas de confirmação de PDUs enviadas [SWS_CanTp_00076] [SWS_CanTp_00215]. Através desta interface, o módulo de interface de comunicação subjacente reporta o envio bem-sucedido ou a falha de uma transmissão de PDU [SWS_CanTp_00215].

Parâmetros e valores de retorno

A função não retorna nenhum valor (void) e aguarda dois parâmetros de entrada [SWS_CanTp_00215]:

  • TxPduId: ID da PDU transmitida [SWS_CanTp_00215].
  • result: Estado da transmissão. O valor E_OK confirma a transmissão bem-sucedida, enquanto E_NOT_OK sinaliza a falha da transmissão da PDU [SWS_CanTp_00215].

Tratamento de erros

Se CanTp_TxConfirmation for chamada com o valor de resultado E_NOT_OK, o módulo CanTp cancela a sessão de transmissão correspondente [SWS_CanTp_00355].

Concorrência e contexto de execução

No que diz respeito à concorrência, a função é reentrante para IDs de PDU diferentes, mas não é reentrante para o mesmo ID de PDU [SWS_CanTp_00215]. Tem de poder ser chamada no contexto de interrupção e pode ser chamada, por exemplo, diretamente a partir da interrupção de envio CAN [SWS_CanTp_00236].

Esta nota de uso foi gerada automaticamente com base na especificação do AUTOSAR Classic Release R20-11.

Guia do implementador em breve (complexidade 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#564cbb43
Content hash
564cbb43
Source
https://www.autosar.org/fileadmin/standards/R20-11/CP/AUTOSAR_SWS_CANTransportLayer.pdf#nameddest=SWS_CanTp_00208

Inicialização e estado

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

void CanTp_GetVersionInfo (Std_VersionInfoType* versioninfo);
CanTp_Init função

This function initializes the Can Tp module.

void CanTp_Init (const CanTp_ConfigType* CfgPtr);

Serviços

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.