DEENESPTFRRUARHIKOZHNL

CAN Transport Layer (CanTp)

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

Руководство по модулюСОЗДАНО ИИ

Разбивает длинные сообщения на CAN-кадры и собирает принятые сегменты с управлением потоком данных.
СОЗДАНО ИИ не проверено Модель: claude-opus-5-5 · Усилие: high · Температура: не регулируется · Промпт: 69cea53d1819 Происхождение Открытые вопросы (1)
Причинный якорь: R20-11 Действует с R20-11 Заново синтезировано для этой версии спецификации.
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал

Разбивает длинные сообщения на CAN-кадры и собирает принятые сегменты с управлением потоком данных.

CAN Transport Layer разбивает сообщения, не помещающиеся в один CAN-кадр, управляет потоком данных с помощью Flow Control и собирает принятые сегменты согласно ISO 15765-2 [SWS_CanTp_00033]. Он располагается между PduR и CanIf, не имеет собственного буфера полезных данных и по сегментам копирует данные отправки и приема через сервисы копирования верхнего уровня [SWS_CanTp_00298]. Каждую принятую передачу он завершает сообщением верхнему уровню: успешно с E_OK, при таймауте или прерывании — с E_NOT_OK. Все это требует CanTp_Init; таймауты контролирует циклическая MainFunction.

CanTp представляет собой CAN Transport Layer. Он разбивает длинные сообщения на CAN-кадры, управляет потоком данных и вновь собирает принятые сегменты; при этом он следует ISO 15765-2, если спецификация не регламентирует иное [SWS_CanTp_00033]. Модуль располагается между PduR и CanIf и не имеет собственного буфера полезных данных. Данные он копирует посегментно через сервисы копирования верхнего уровня [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

Контекстная диаграмма: интерфейсы CanTp к PduR, CanIf, управлению режимами, планировщику (Scheduler) и DET. Источники: [SWS_CanTp_00216], SWS CanTp с. 17.

После включения CanTp находится в CANTP_OFF [SWS_CanTp_00168]. CanTp_Init с CanTp_ConfigType [SWS_CanTp_00208] переводит все соединения в состояние покоя [SWS_CanTp_00030]; после этого действует CANTP_ON [SWS_CanTp_00170]. CanTp_Shutdown закрывает все соединения без чьего-либо уведомления [SWS_CanTp_00202] [SWS_CanTp_00200]. Каналы соединений работают независимо друг от друга с собственными таймерами [SWS_CanTp_00122]. Если канал отправки занят, CanTp отклоняет новые запросы с E_NOT_OK [SWS_CanTp_00123].

При отправке CanTp_Transmit анализирует только длину (и при необходимости MetaData) [SWS_CanTp_00225]. В зависимости от длины следует SF или сегментированная сессия [SWS_CanTp_00232]. Для каждого сегмента CanTp забирает данные с помощью PduR_CanTpCopyTxData [SWS_CanTp_00086] и ожидает Flow Control после FF и каждого блока под контролем N_Bs [SWS_CanTp_00315]. Интерпретация: вызов сообщает лишь о принятии; окончание передачи происходит асинхронно через PduR_CanTpTxConfirmation [SWS_CanTp_00176] [SWS_CanTp_00204]. Вопрос (открытый)

При приеме CanTp сначала запрашивает буфер с помощью PduR_CanTpStartOfReception [SWS_CanTp_00079]. Затем он копирует каждый CF с помощью PduR_CanTpCopyRxData [SWS_CanTp_00269]. Если буфера недостаточно, CanTp повторно опрашивает его в каждой MainFunction и отправляет не более WFTmax FC(WAIT) [SWS_CanTp_00222] [SWS_CanTp_00223]. В завершение выполняется PduR_CanTpRxIndication [SWS_CanTp_00084]. Таймауты контролирует циклическая CanTp_MainFunction [SWS_CanTp_00164].

Сегментированный прием N-SDUCanIfCanTpPduRUse Case: First FrameCanTp_RxIndication(FF)N_Br gestartetPduR_CanTpStartOfReception(TpSduLength)BUFREQ_OK, доступный размер буфераPduR_CanTpCopyRxData(FF-Daten)CanIf_Transmit(FC: CTS, BS, STmin)loopДля каждого CF блокаCanTp_RxIndication(CF)PduR_CanTpCopyRxData(6/7 Byte)BUFREQ_OK, RestpufferaltОстатка буфера недостаточно для следующего блокаN_Br запущенCanTp_MainFunctionPduR_CanTpCopyRxData(длина 0, NULL_PTR)BUFREQ_OK, RestpufferCanIf_Transmit(FC: WAIT)Не более WFTmax разPuffer ausreichendCanIf_Transmit(FC: CTS)Use Case: Letzter Consecutive FrameCanTp_RxIndication(letzter CF)PduR_CanTpCopyRxData()PduR_CanTpRxIndication(E_OK)

Диаграмма последовательности: сегментированный прием с согласованием буфера и Flow Control CTS/WAIT. Источники: [SWS_CanTp_00269], [SWS_CanTp_00222], SWS CanTp с. 38.

Ошибки обрабатываются CanTp тремя способами. Об ошибках разработки он сообщает в DET и возвращает E_NOT_OK [SWS_CanTp_00294]. Ошибки протокола, такие как таймауты, прерывают сессию и направляются с E_NOT_OK в PduR [SWS_CanTp_00205] [SWS_CanTp_00311]. То же относится и к прерываниям по запросу через сервисы Cancel [SWS_CanTp_00255] [SWS_CanTp_00263]. Для недействительных ID в сервисах Cancel спецификация R20-11 требует CANTP_E_PARAM_ID [SWS_CanTp_00254], в то время как более новые релизы указывают другие коды.

Роль в стеке CAN: транспортный протокол между PduR и CanIf

CanTp представляет собой CAN Transport Layer. Он разбивает сообщения, не помещающиеся в отдельный CAN-кадр, на сегменты, управляет потоком данных и вновь собирает принятые сегменты (SWS CanTp с. 24, SWS CanTp с. 17). Основой является ISO 15765-2: действует каждая рекомендация этого стандарта, если спецификация прямо не исключает ее [SWS_CanTp_00033]. Сегментацию и сборку CanTp выполняет только в состоянии CANTP_ON [SWS_CanTp_00238].

Вверх CanTp предоставляет модулю PduR следующие сервисы: CanTp_Transmit [SWS_CanTp_00212], CanTp_CancelTransmit [SWS_CanTp_00246] и CanTp_CancelReceive [SWS_CanTp_00257]. Сам CanTp вызывает вверх PduR_CanTpStartOfReception, PduR_CanTpCopyRxData, PduR_CanTpCopyTxData, PduR_CanTpRxIndication и PduR_CanTpTxConfirmation, вниз — CanIf_Transmit [SWS_CanTp_00216]. Нижний уровень сообщает о принятых кадрах через CanTp_RxIndication [SWS_CanTp_00078] и о подтверждениях отправки через CanTp_TxConfirmation [SWS_CanTp_00076]. Обе функции должны допускать вызов в контексте прерывания [SWS_CanTp_00235] [SWS_CanTp_00236]. В более новых местах документа в качестве вызывающей стороны назван L-SDU Router (LSduR) (SWS CanTp с. 27). Требования R20-11, напротив, говорят о CAN Interface, например [SWS_CanTp_00031] и [SWS_CanTp_00335].

CanTp не имеет собственного буфера полезных данных. Данные для отправки он забирает непосредственно у верхнего уровня [SWS_CanTp_00298], принятые данные копирует напрямую в его память (SWS CanTp с. 35). Из этого вытекают периоды блокировки для верхнего уровня (SWS CanTp с. 35):

  • Буфер отправки он удерживает заблокированным, как только CanTp_Transmit возвращает E_OK, до поступления PduR_CanTpTxConfirmation.
  • Буфер приема он удерживает заблокированным, как только предоставил BUFREQ_OK в ответ на PduR_CanTpStartOfReception, до поступления 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

Контекстная диаграмма: CanTp располагается между PduR и CanIf. Он инициализируется модулем управления режимами, циклически запускается планировщиком (Scheduler) и сообщает об ошибках в DET. Источники: [SWS_CanTp_00216], [SWS_CanTp_00217], [SWS_CanTp_00164], SWS CanTp с. 17, Mode Management Guide с. 54

Жизненный цикл: CANTP_OFF, CanTp_Init и независимые каналы соединений

CanTp различает состояния CANTP_OFF и CANTP_ON [SWS_CanTp_00027]. После включения модуль находится в CANTP_OFF [SWS_CanTp_00168]; только там разрешено обновлять post-build конфигурацию [SWS_CanTp_00169].

CanTp_Init получает указатель на CanTp_ConfigType [SWS_CanTp_00208] [SWS_CanTp_00340]. Функция инициализирует все глобальные переменные и переводит каждое соединение в состояние покоя CANTP_RX_WAIT или CANTP_TX_WAIT [SWS_CanTp_00030]; после этого действует CANTP_ON [SWS_CanTp_00170]. Окружение должно вызывать CanTp_Init перед любым дальнейшим использованием [SWS_CanTp_00199]. В руководстве по управлению режимами эту задачу берет на себя правило BswM согласно NvM_ReadAll (Mode Management Guide с. 54). Повторный вызов в CANTP_ON сбрасывает все текущие соединения и возвращает в состояние покоя [SWS_CanTp_00273] [SWS_CanTp_00111].

CanTp_Shutdown закрывает все открытые соединения, освобождает ресурсы и устанавливает CANTP_OFF [SWS_CanTp_00202]. При этом CanTp никого не уведомляет о прерванных передачах [SWS_CanTp_00200] (SWS CanTp с. 58).

В CANTP_ON одновременно выполняется несколько соединений [SWS_CanTp_00096]:

  • Каждый N-SDU статически назначен каналу соединения. Каждый канал имеет собственные таймеры, буферы и собственный автомат состояний [SWS_CanTp_00121] [SWS_CanTp_00122].
  • Каналы видны только внутри модуля [SWS_CanTp_00285]. Их количество определяет инструмент конфигурирования [SWS_CanTp_00289].
  • Если канал отправки находится в CANTP_TX_PROCESSING, CanTp отклоняет новые запросы через CanTp_Transmit с E_NOT_OK [SWS_CanTp_00123]. То же относится к N-SDU, который уже участвует в текущей сессии [SWS_CanTp_00206].
  • Если несколько N-SDU разделяют один канал и нет свободного канала, CanTp отклоняет отправку или прерывает прием [SWS_CanTp_00288] (SWS CanTp с. 42).
lebenszyklus cluster_on CANTP_ON cluster_rx Rx-Verbindungskanal cluster_tx Tx-Verbindungskanal PowerUp Einschalten OFF CANTP_OFF (конфигурация Post-Build изменяема) 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 Дальнейшие N-PDU не ожидаются или отмена TXP CANTP_TX_PROCESSING TXW->TXP CanTp_Transmit = E_OK TXP->OFF CanTp_Shutdown (без уведомления) TXP->TXW Передача завершена или отмена

Диаграмма состояний: после CanTp_Init каналы приема и отправки независимо друг от друга переходят между WAIT и PROCESSING; CanTp_Shutdown возвращает в CANTP_OFF. Источники: [SWS_CanTp_00027], [SWS_CanTp_00030], [SWS_CanTp_00170], [SWS_CanTp_00202], SWS CanTp с. 27

Отправка: от CanTp_Transmit до подтверждения

CanTp_Transmit получает TxPduId и PduInfoPtr [SWS_CanTp_00212]. Без MetaData модуль CanTp оценивает только общую длину SduLength и не обращается к буферу данных [SWS_CanTp_00225] [SWS_CanTp_00299]. При наличии MetaData он дополнительно сохраняет адресную информацию для всех SF, FF и CF [SWS_CanTp_00334]. Если данные помещаются в один N-PDU, CanTp отправляет SF, иначе он открывает сессию с несколькими кадрами [SWS_CanTp_00232] (SWS CanTp с. 60). Максимальная длина отправки (TX_DL) следует из PduLength в EcuC [SWS_CanTp_00354]. Интерпретация: вызов синхронно сообщает лишь о том, принят ли запрос; сама передача выполняется асинхронно [SWS_CanTp_00176]. Вопрос Q-b6d13590324e2906 (открытый) После принятия CanTp в любом случае сообщает о завершении через PduR_CanTpTxConfirmation [SWS_CanTp_00177] [SWS_CanTp_00204].

Для каждого сегмента (SF, FF, CF) CanTp вызывает PduR_CanTpCopyTxData [SWS_CanTp_00086]; до первого вызова работает таймер N_Cs [SWS_CanTp_00167]. Если верхний уровень возвращает BUFREQ_E_BUSY, CanTp предпринимает повторную попытку позже [SWS_CanTp_00184]. Параметр повтора (Retry) CanTp всегда устанавливает в NULL, поскольку в ISO 15765-2 повтор не предусмотрен [SWS_CanTp_00272].

После FF и после последнего CF каждого блока CanTp ожидает в течение N_Bs кадр Flow Control [SWS_CanTp_00315]. С его помощью получатель разрешает дальнейшие CF или задерживает их [SWS_CanTp_00282]. Если сессия успешно завершена, следует PduR_CanTpTxConfirmation с E_OK [SWS_CanTp_00090]. Тот же pull-процесс демонстрируют пример с 50 байтами (SWS CanTp с. 37) и путь от DCM к CanTp (SWS PduR с. 104).

Сегментированная передача N-SDUPduRCanTpCanIfUse Case: ЗапускCanTp_Transmit(TxPduId, PduInfoPtr)Только SduLength (+ MetaData)E_OKN_Cs запущенUse Case: First FramePduR_CanTpCopyTxData()BUFREQ_OKCanIf_Transmit(FF)CanTp_TxConfirmation(E_OK)N_Bs запущен: ожидание FCCanTp_RxIndication(FC: CTS, BS, STmin)loopДля каждого CF блока (BS кадров, интервал STmin)PduR_CanTpCopyTxData()BUFREQ_OKCanIf_Transmit(CF)CanTp_TxConfirmation(E_OK)После каждого блока снова ожидать FC (N_Bs)Use Case: AbschlussPduR_CanTpTxConfirmation(E_OK)

Диаграмма последовательности: CanTp запрашивает данные у PduR посегментно, ожидает Flow Control после FF и каждого блока и в завершение подтверждает с E_OK. Источники: [SWS_CanTp_00212], [SWS_CanTp_00086], [SWS_CanTp_00315], [SWS_CanTp_00090], SWS CanTp с. 73

Прием: согласование буфера, Flow Control и повторная сборка

При каждом входящем SF или FF модуль CanTp сообщает о начале приема с помощью PduR_CanTpStartOfReception [SWS_CanTp_00079]. Доступный размер буфера возвращается через выходной параметр и может быть меньше, чем N-SDU [SWS_CanTp_00080]. В случае FF модуль CanTp предварительно запускает таймер N_Br [SWS_CanTp_00166]. Кадр Flow Control отправляется только тогда, когда результат готов; его содержимое зависит от этого результата [SWS_CanTp_00064] [SWS_CanTp_00277]. Все FC одной сессии приема содержат одинаковые значения для BS и STmin [SWS_CanTp_00067]. Кадр FC следует каждый раз после BS Consecutive Frames [SWS_CanTp_00278].

После каждого CF модуль CanTp передает полезные данные с помощью PduR_CanTpCopyRxData и узнает при этом оставшийся размер буфера [SWS_CanTp_00269]. В CAN 2.0 это шесть или семь байт на каждый CF. Если после последнего CF блока оставшегося буфера недостаточно для следующего блока, CanTp запускает таймер N_Br [SWS_CanTp_00325] [SWS_CanTp_00082]. Пока этот таймер работает:

  • CanTp опрашивает буфер при каждом вызове MainFunction, причем с длиной 0 и NULL_PTR [SWS_CanTp_00222];
  • CanTp отправляет не более WFTmax последовательных FC(WAIT) [SWS_CanTp_00223] (SWS CanTp с. 38).

Если сессия завершается, успешно или нет, CanTp вызывает PduR_CanTpRxIndication [SWS_CanTp_00084]. Как с заполнением (padding), так и без него CanTp передает наверх только фактически используемые байты данных [SWS_CanTp_00116].

Сегментированный прием N-SDUCanIfCanTpPduRUse Case: First FrameCanTp_RxIndication(FF)N_Br gestartetPduR_CanTpStartOfReception(TpSduLength)BUFREQ_OK, доступный размер буфераPduR_CanTpCopyRxData(FF-Daten)CanIf_Transmit(FC: CTS, BS, STmin)loopДля каждого CF блокаCanTp_RxIndication(CF)PduR_CanTpCopyRxData(6/7 Byte)BUFREQ_OK, RestpufferaltОстатка буфера недостаточно для следующего блокаN_Br запущенCanTp_MainFunctionPduR_CanTpCopyRxData(длина 0, NULL_PTR)BUFREQ_OK, RestpufferCanIf_Transmit(FC: WAIT)Не более WFTmax разPuffer ausreichendCanIf_Transmit(FC: CTS)Use Case: Letzter Consecutive FrameCanTp_RxIndication(letzter CF)PduR_CanTpCopyRxData()PduR_CanTpRxIndication(E_OK)

Диаграмма последовательности: сегментированный прием с согласованием буфера, блочным Flow Control и фазой ожидания при нехватке буфера. Источники: [SWS_CanTp_00079], [SWS_CanTp_00269], [SWS_CanTp_00222], [SWS_CanTp_00084], SWS CanTp с. 76

rxstart Ein CanTp_RxIndication: принят SF или FF Kanal Kanal in CANTP_RX_PROCESSING? Ein->Kanal Art С MetaData или другой N_AI? Kanal->Art да Sor PduR_CanTpStartOfReception() Kanal->Sor нет Ign Frame ignorieren Art->Ign да Neu laufenden Empfang abbrechen, Frame als neuen Empfang behandeln Art->Neu nein (gleiche N_AI) Neu->Sor Erg Возвращаемое значение? Sor->Erg NotOk Прервать прием: нет FC, нет 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: буфера достаточно для следующего блока? Typ->Puf FF Cts FC(CTS) senden Puf->Cts да Br N_Br starten, Puffer in MainFunction abfragen Puf->Br нет

Диаграмма деятельности: так CanTp принимает решение при входящем SF или FF на основе состояния канала и результата PduR_CanTpStartOfReception. Источники: [SWS_CanTp_00124], [SWS_CanTp_00337], [SWS_CanTp_00081], [SWS_CanTp_00318], [SWS_CanTp_00353], SWS CanTp с. 67

Адресация, MetaData и заполнение (padding)

Функциональная адресация (1:n) разрешена только для SF [SWS_CanTp_00092]. Сегментированную сессию через функциональный дескриптор CanTp отклоняет и сообщает CANTP_E_INVALID_TATYPE [SWS_CanTp_00093] (SWS CanTp с. 39). При Extended или Mixed Addressing модуль CanTp определяет N-SDU из N_TA или N_AE в первом байте данных [SWS_CanTp_00095] [SWS_CanTp_00284] [SWS_CanTp_00283]. Для сопоставления идентификаторов действует следующее (SWS CanTp с. 44):

  • Каждый NSduId сопоставлен ровно одному LSduId [SWS_CanTp_00035].
  • LSduId кадра FC вместе с N_TA или N_AE идентифицирует ровно один NSduId [SWS_CanTp_00094].
  • Несколько N-SDU могут ссылаться на один и тот же N-PDU только при Extended/Mixed Addressing или при MetaData [SWS_CanTp_00328].

Универсальные соединения работают с MetaData. CanTp сохраняет адресную информацию из SF или FF [SWS_CanTp_00330], передает ее в PduR_CanTpStartOfReception [SWS_CanTp_00331] и проверяет последующие CF на соответствие ей [SWS_CanTp_00333]. Если канал уже ведет прием, CanTp игнорирует еще один SF или FF с MetaData [SWS_CanTp_00337].

Заполнение (padding) активируется для каждой N-SDU (SWS CanTp с. 43). Значением заполнителя является CANTP_PADDING_BYTE [SWS_CanTp_00059]. Для кадров с полезной нагрузкой не более 8 байт действует следующее:

  • При Rx-Padding модуль CanTp принимает SF и последний CF только размером 8 байт [SWS_CanTp_00344] и отправляет FC размером 8 байт [SWS_CanTp_00347].
  • При Tx-Padding модуль CanTp дополняет SF и последний CF до 8 байт [SWS_CanTp_00348].

Если длина передачи не соответствует ни одному допустимому значению DLC, CanTp дополняет ее до ближайшего большего допустимого значения [SWS_CanTp_00351]. Длину приема RX_DL модуль CanTp выводит из первого принятого CAN_DL [SWS_CanTp_00350].

Контроль времени, параметры времени выполнения и прерывание по запросу

CanTp_MainFunction [SWS_CanTp_00213] вызывается циклически. Она контролирует N_As, N_Bs, N_Cs, N_Ar, N_Br, N_Cr, а также STmin [SWS_CanTp_00164] (SWS CanTp с. 63). Ее такт определяется параметром CanTpMainFunctionPeriod [SWS_CanTp_00300]. Это значение должно соответствовать периоду цикла вызывающей задачи (SWS CanTp с. 77). В качестве примера анализ временных характеристик приводит задачу с периодом 5 мс (TR Timing Analysis с. 117).

Две службы обращаются во время выполнения к параметрам приема BS и STmin некоторой N-SDU: CanTp_ChangeParameter изменяет их [SWS_CanTp_00302], CanTp_ReadParameter считывает их [SWS_CanTp_00323]. Обе доступны только тогда, когда CanTpChangeParameterApi = TRUE (SWS CanTp с. 61). BS является лишь максимальным значением, которое CanTp может уменьшать по соображениям емкости буфера [SWS_CanTp_00091]. Между FF и последним CF текущей сессии приема CanTp отклоняет любое изменение с E_NOT_OK [SWS_CanTp_00303] [SWS_CanTp_00304]. В случае универсальных соединений изменение действует для всех [SWS_CanTp_00338].

Текущие передачи можно прервать по запросу:

  • Передача: функция активируется статически через CanTpTc [SWS_CanTp_00242] и запускается с помощью CanTp_CancelTransmit [SWS_CanTp_00274]. При E_OK модуль CanTp прерывает передачу [SWS_CanTp_00243] [SWS_CanTp_00256] и сообщает PduR_CanTpTxConfirmation с E_NOT_OK [SWS_CanTp_00255]. На противоположной стороне это приводит к таймауту (SWS CanTp с. 26).
  • Прием: CanTp_CancelReceive завершает прием, начатый с FF [SWS_CanTp_00261], и сообщает PduR_CanTpRxIndication с E_NOT_OK [SWS_CanTp_00263]. В случае SF или если остался только последний CF, CanTp отклоняет прерывание [SWS_CanTp_00262] (SWS CanTp с. 60).

Поведение при ошибке

Ошибки разработки. Если обнаружение активно, CanTp сообщает об ошибке в DET и возвращает E_NOT_OK [SWS_CanTp_00294] [SWS_CanTp_00217] (SWS CanTp с. 49). Коды определяет [SWS_CanTp_00293]. Типичные случаи:

Расхождение между релизами: для недействительного PduId в службах отмены R20-11 требует CANTP_E_PARAM_ID [SWS_CanTp_00254] [SWS_CanTp_00260]. Более новые разделы документов указывают вместо этого CANTP_E_INVALID_TX_ID или CANTP_E_INVALID_RX_ID (SWS CanTp с. 59). Для R20-11 действует требование стандарта.

Ошибки времени выполнения. Они передаются в Default Error Tracer [SWS_CanTp_00352]:

  • CANTP_E_PADDING: кадр слишком короткий, несмотря на заполнение [SWS_CanTp_00345] [SWS_CanTp_00346] [SWS_CanTp_00349].
  • CANTP_E_OPER_NOT_SUPPORTED: отмена относится к N-SDU без текущей передачи [SWS_CanTp_00254].
  • Для ошибок протокола раздел документа дополнительно называет CANTP_E_COM, CANTP_E_RX_COM и CANTP_E_TX_COM (SWS CanTp с. 52).

Ошибки протокола. Они завершают сессию передачей E_NOT_OK верхнему уровню [SWS_CanTp_00205]:

  • Сторона передачи (сообщение через PduR_CanTpTxConfirmation): нехватка данных при копировании [SWS_CanTp_00087], истечение N_Cs [SWS_CanTp_00280], N_As [SWS_CanTp_00310] или N_Bs [SWS_CanTp_00316], FC с OVFLW или недопустимым FS [SWS_CanTp_00309] [SWS_CanTp_00317]. После N_As кадр N-PDU остается заблокированным до тех пор, пока не поступит TxConfirmation [SWS_CanTp_00075].
  • Сторона приема (сообщение через PduR_CanTpRxIndication): истечение N_Ar [SWS_CanTp_00311] или N_Cr [SWS_CanTp_00313], отклоненное копирование [SWS_CanTp_00271].
  • Прерывание без сообщения: если PduR_CanTpStartOfReception возвращает BUFREQ_E_NOT_OK, CanTp прерывает операцию; за этим не следует ни FC, ни индикация [SWS_CanTp_00081].
  • Неожиданные N-PDU обрабатываются модулем CanTp в соответствии с таблицей [SWS_CanTp_00057] (SWS CanTp с. 45).

Модуль PduR пересылает отрицательное подтверждение пользователю, например в DCM, который затем обеспечивает восстановление (Error Description с. 29, Error Description с. 28). Производственные ошибки обрабатываются модулем DEM через 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 с OVFLW или недопустимым FS t5->TA t6 FC короче 8 байт при 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 Последний CF слишком короткий при 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

Диаграмма деятельности: все причины прерывания для каждого направления приводят к отрицательному сообщению в PduR. Источники: [SWS_CanTp_00205], [SWS_CanTp_00343], [SWS_CanTp_00355], [SWS_CanTp_00342], [SWS_CanTp_00223], [SWS_CanTp_00084], Error Description с. 28

Дальнейшие подробные доказательства

Руководство, сгенерированное ИИ на основе выдержек из спецификации CanTp (R20-11). Обязательными являются исключительно связанные требования; разделы документов из других релизов служат только для пояснения.

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

функция CanTp_Init [SWS_CanTp_00208] 📄 PDF

void CanTp_Init (const CanTp_ConfigType* CfgPtr);

This function initializes the Can Tp module.

СОЗДАНО ИИ не проверено Модель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 62b706f68200 Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал

Синхронная и нереентерабельная функция CanTp_Init инициализирует модуль CanTp [SWS_CanTp_00208]. Через параметр CfgPtr она принимает указатель на данные конфигурации Post-Build (CanTp_ConfigType) и не имеет возвращаемого значения [SWS_CanTp_00208]. Окружение модуля обязательно должно вызвать CanTp_Init до того, как модуль сможет использоваться для дальнейшей обработки [SWS_CanTp_00199].

Во время инициализации все глобальные переменные модуля инициализируются, и все соединения транспортного протокола переводятся в подсостояние CANTP_ON, в котором не активны ни сегментированная передача, ни сегментированный приём [SWS_CanTp_00030]. При этом пути приёма находятся в состоянии CANTP_RX_WAIT, а пути передачи — в состоянии CANTP_TX_WAIT [SWS_CanTp_00030]. После успешного выполнения модуль переходит во внутреннее состояние CANTP_ON [SWS_CanTp_00170].

Если CanTp_Init вызывается, когда модуль уже находится в глобальном состоянии CANTP_ON, функция сбрасывает модуль в состояние Idle, так что не выполняются ни операции передачи, ни операции приёма [SWS_CanTp_00111].

Если обнаружение ошибок разработки (Development Error Detection) активировано, модуль CanTp сообщает об ошибке CANTP_E_UNINIT, если PDU Router или CAN Interface пытается выполнить функции модуля (за исключением CanTp_GetVersionInfo) до вызова CanTp_Init [SWS_CanTp_00031].

Этот текст был создан ИИ на основе спецификации.

Руководство разработчика реализации в подготовке (сложность I2)

функция CanTp_Shutdown [SWS_CanTp_00211] 📄 PDF

void CanTp_Shutdown (void);

This function is called to shutdown the Can Tp module.

СОЗДАНО ИИ не проверено Модель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: e5430e2cac5b Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал

Использование и контекст вызова

Функция CanTp_Shutdown служит для упорядоченного завершения работы всего модуля CanTp ([SWS_CanTp_00211]). Интерфейс предоставляется через заголовочный файл CanTp.h и имеет идентификатор службы (Service ID) 0x02 ([SWS_CanTp_00211]). Вызов обрабатывается синхронно, не принимает входных параметров и не возвращает значения ([SWS_CanTp_00211]).

Переход состояния и очистка

При выполнении CanTp_Shutdown закрывает все незавершенные соединения транспортного протокола, освобождает все выделенные ресурсы и переводит модуль CanTp в состояние CANTP_OFF ([SWS_CanTp_00202]). Существенным аспектом поведения при прерывании является то, что для незавершенных процессов передачи или приема кадров явным образом запрещено отправлять какие-либо уведомления вышележащим уровням ([SWS_CanTp_00200]).

Параллелизм и граничные условия

Функция специфицирована как нереентерабельная (Non Reentrant) ([SWS_CanTp_00211]). Следовательно, ее нельзя вызывать одновременно из различных контекстов выполнения или подпрограмм обработки прерываний. Специфические коды ошибок или уведомления для управления ошибками в объеме функций интерфейса не предусмотрены.

Это указание по использованию было создано автоматически на основе спецификации AUTOSAR Classic релиза R20-11.

Руководство разработчика реализации в подготовке (сложность I1)

функция CanTp_Transmit [SWS_CanTp_00212] 📄 PDF

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

Requests transmission of a PDU.

СОЗДАНО ИИ не проверено Модель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 7a5280a26edd Происхождение Открытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал

Использование

Функция CanTp_Transmit служит для запроса на передачу N-SDU через транспортный уровень CAN [SWS_CanTp_00212]. В качестве параметров передаются идентификатор передаваемой PDU (TxPduId), а также указатель на данные, длину и метаданные (PduInfoPtr) [SWS_CanTp_00212]. Вызов сообщает об успешном принятии запроса с помощью E_OK или об отклонении запроса с помощью E_NOT_OK [SWS_CanTp_00212]. В то время как подтверждение вызова происходит синхронно, выполнение передачи является асинхронным [SWS_CanTp_00176] (интерпретация: указание «Synchronous» в таблице спецификации, по-видимому, относится к приему запроса). Вопрос Q-df438ddaa4963aba (открытый)

Взаимодействие и обработка PDU

Для N-SDU с метаданными модуль сохраняет адресную информацию (в зависимости от формата адресации, такого как Normal, Extended, Mixed 11 bit, Normal fixed или Mixed 29 bit), чтобы использовать ее для SF-, FF- и CF-N-PDU, а также для идентификации FC-N-PDU [SWS_CanTp_00334]. Если метаданные не используются, CanTp_Transmit для подготовки SF- или FF-PCI обращается только к указанию длины SduLength и не использует буфер данных N-SDU [SWS_CanTp_00225].

Обработка ошибок и параллелизм

  • Проверка ошибок: если DET включен и PduInfoPtr является указателем NULL, функция сообщает об ошибке CANTP_E_PARAM_POINTER и возвращает управление без дальнейших действий [SWS_CanTp_00321].
  • Занятость канала: если назначенный канал находится в состоянии CANTP_TX_PROCESSING или для идентификатора N-SDU уже выполняется сессия, запрос на передачу отклоняется и возвращается E_NOT_OK [SWS_CanTp_00123], [SWS_CanTp_00206].
  • Реентерабельность: служба является реентерабельной для различных PDU-ID, однако нереентерабельна для одного и того же PDU-ID [SWS_CanTp_00212].

Этот текст был сгенерирован ИИ на основе спецификации AUTOSAR Classic R20-11.

Руководство разработчика реализации в подготовке (сложность I2)

функция 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.

СОЗДАНО ИИ не проверено Модель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: f7624766b8a1 Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал

Синхронная функция CanTp_CancelTransmit запрашивает прерывание текущей передачи PDU в нижележащем коммуникационном модуле [SWS_CanTp_00246] и тем самым инициирует отмену процесса отправки [SWS_CanTp_00274]. В качестве параметра передаётся идентификатор соответствующего PDU (TxPduId) [SWS_CanTp_00246]. В качестве возвращаемого значения E_OK сигнализирует об успешном выполнении прерывания целевым модулем, тогда как E_NOT_OK указывает на отклонение [SWS_CanTp_00246].

После вызова функции передача по соответствующему соединению прерывается [SWS_CanTp_00243]. Если прерывание было успешно выполнено, модуль CanTp в обязательном порядке вызывает подтверждение PduR_CanTpTxConfirmation с отрицательным результатом E_NOT_OK, чтобы проинформировать верхние уровни о прерывании [SWS_CanTp_00255].

При активированном обнаружении ошибок разработки (Development Error Detection) CanTp_CancelTransmit проверяет валидность TxPduId: при недействительном параметре генерируется ошибка разработки CANTP_E_PARAM_ID и возвращается E_NOT_OK [SWS_CanTp_00254]. Если прерывание запрашивается для N-SDU, которая в данный момент не находится в процессе передачи, модуль сообщает об ошибке времени выполнения CANTP_E_OPER_NOT_SUPPORTED в Default Error Tracer (DET) и также возвращает E_NOT_OK [SWS_CanTp_00254].

Что касается параллелизма, функция является реентерабельной для различных PDU-ID, но не должна вызываться параллельно для одного и того же TxPduId [SWS_CanTp_00246].

Данное указание по использованию было создано автоматически на основе спецификации AUTOSAR.

Руководство разработчика реализации в подготовке (сложность I2)

функция 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.

СОЗДАНО ИИ не проверено Модель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: ccccdf72ba41 Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал

Функция CanTp_CancelReceive синхронно прерывает текущий приём PDU в нижележащем модуле транспортного протокола [SWS_CanTp_00257]. Она доступна через заголовочный файл CanTp.h и имеет Service-ID 0x4c [SWS_CanTp_00257].

Использование и условия вызова

Через входной параметр RxPduId передаётся идентификатор прерываемого PDU [SWS_CanTp_00257]. Вызов обрабатывается синхронно и специфицирован как нереентерабельный (Non Reentrant) [SWS_CanTp_00257]. В качестве возвращаемого значения интерфейс типа Std_ReturnType возвращает:

  • E_OK: прерывание было успешно выполнено целевым модулем [SWS_CanTp_00257].
  • E_NOT_OK: прерывание было отклонено целевым модулем [SWS_CanTp_00257].

Обработка ошибок

При активированном обнаружении ошибок разработки (Development Error Detection) функция валидирует параметр RxPduId [SWS_CanTp_00260]:

  • Если значение RxPduId недействительно, CanTp_CancelReceive сообщает об ошибке разработки CANTP_E_PARAM_ID и возвращает E_NOT_OK [SWS_CanTp_00260].
  • Если прерывание запрашивается для N-SDU, которая в текущий момент не находится в процессе приёма, модуль сообщает об ошибке времени выполнения CANTP_E_OPER_NOT_SUPPORTED в Default Error Tracer и возвращает E_NOT_OK [SWS_CanTp_00260].

Взаимодействие со смежными модулями

Если прерывание приёма было успешно выполнено, CanTp вызывает функцию обратного вызова PduR_CanTpRxIndication с результатом уведомления E_NOT_OK, чтобы проинформировать вышележащий уровень о прерывании [SWS_CanTp_00263].

Данное указание по использованию основано на спецификации AUTOSAR Classic R20-11 и было сгенерировано автоматически.

Руководство разработчика реализации в подготовке (сложность I1)

функция 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).

СОЗДАНО ИИ не проверено Модель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 2d391dbc31e8 Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал

Синхронная функция CanTp_ChangeParameter служит для изменения во время выполнения специфического параметра транспортного протокола, такого как, например, размер блока ([SWS_CanTp_00302]). Предоставляемый через заголовочный файл CanTp.h, сервис принимает идентификатор PDU (id), идентификатор параметра (parameter), а также новое устанавливаемое значение (value) ([SWS_CanTp_00302]). При успешном выполнении функция возвращает E_OK; если изменение завершилось неудачей или отклонено, она возвращает E_NOT_OK ([SWS_CanTp_00302]).

В отношении параллелизма и условий вызова действуют следующие требования:

  • Интерфейс реализован как нереентерабельный (Non Reentrant) ([SWS_CanTp_00302]).
  • Если соответствующая N-SDU в момент вызова уже находится в процессе текущего приёма, CanTp_ChangeParameter немедленно прерывает выполнение, возвращает E_NOT_OK и не изменяет значение параметра ([SWS_CanTp_00304]).

Особое взаимодействие существует при универсальных соединениях: если функция вызывается для N-SDU с MetaData, изменение параметра применяется ко всем универсальным соединениям и перенимается для всех последующих операций приёма ([SWS_CanTp_00338]).

Это указание по использованию было сгенерировано автоматически на основе требований спецификации.

Руководство разработчика реализации в подготовке (сложность I1)

функция 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.

СОЗДАНО ИИ не проверено Модель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 949f6cb3df18 Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал

Использование

Синхронная функция CanTp_ReadParameter служит для считывания текущего значения параметров приёма BS (Block Size) или STmin (Separation Time minimum) для указанной N-SDU приёма [SWS_CanTp_00323]. Декларация доступна через заголовочный файл CanTp.h [SWS_CanTp_00323].

Интерфейс имеет следующие параметры:

  • id (in): идентификатор принимаемой N-SDU (тип PduIdType), для которой считывается параметр приёма [SWS_CanTp_00323].
  • parameter (in): определяет считываемый параметр (BS или STmin типа TPParameterType) [SWS_CanTp_00323].
  • value (out): указатель на uint16, через который предоставляется считанное значение параметра [SWS_CanTp_00323].

В качестве возвращаемого значения функция возвращает Std_ReturnType; при этом E_OK сигнализирует о принятии запроса, а E_NOT_OK — об отклонении [SWS_CanTp_00323].

Обработка ошибок

Если обнаружение ошибок разработки (Development Error Detection) активировано, CanTp_ReadParameter проверяет валидность параметров id и parameter [SWS_CanTp_00324]. Если один из этих параметров недействителен, функция сообщает об ошибке разработки CANTP_E_PARAM_ID и возвращает E_NOT_OK [SWS_CanTp_00324].

Параллелизм и ограничения

Функция специфицирована как нереентерабельная (Non Reentrant) [SWS_CanTp_00323]. Вызывающие стороны должны избегать параллельных обращений к одному и тому же интерфейсу.

Этот текст был сгенерирован ИИ на основе документов спецификации AUTOSAR R20-11.

Руководство разработчика реализации в подготовке (сложность I1)

функция CanTp_MainFunction [SWS_CanTp_00213] 📄 PDF

void CanTp_MainFunction (void);

The main function for scheduling the CAN TP.

СОЗДАНО ИИ не проверено Модель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 64a7b42182e1 Происхождение Открытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал

Функция CanTp_MainFunction служит центральной точкой входа для периодического планирования протокола CAN TP [SWS_CanTp_00213], [SWS_CanTp_00164]. Она имеет Service ID 0x06, сигнатуру void CanTp_MainFunction(void) и доступна через заголовочный файл SchM_CanTp.h [SWS_CanTp_00213]. Она не принимает параметров и не возвращает значения [SWS_CanTp_00213].

Контекст вызова и управление временем

Вызов инициируется в соответствии с требуемой длительностью периода либо диспетчером расписания (Schedule Manager), либо модулем Free Running Timer [SWS_CanTp_00164]. Внутри модуля CanTp_MainFunction берет на себя мониторинг времени и управление процессами протокола [SWS_CanTp_00164]. В частности, функция участвует в обработке следующих таймеров и временных условий:

  • Таймауты протокола при передаче и подтверждении: N_As, N_Bs, N_Cs, а также N_Ar, N_Br и N_Cr [SWS_CanTp_00164].
  • Соблюдение минимального времени разделения кадров STMmin [SWS_CanTp_00164].

Обработка ошибок и параллелизм

Специфические коды ошибок для DET или DEM для этой функции в payload не определены. Интерпретация: как циклически вызываемая функция планирования, CanTp_MainFunction, вероятно, является нереентерабельной и требует постоянной частоты вызова для обеспечения корректного декрементирования внутренних таймеров. Вопрос Q-2fe22e31085abf49 (открытый)

Этот текст был сгенерирован ИИ на основе спецификации AUTOSAR R20-11.

Руководство разработчика реализации в подготовке (сложность I1)

функция 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.

СОЗДАНО ИИ не проверено Модель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 38e732456055 Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал

Использование и семантика

Синхронная функция [SWS_CanTp_00214] сообщает модулю CAN-транспорта о приеме N-PDU нижележащим модулем коммуникационного интерфейса. Вызов передает идентификатор принятого PDU (RxPduId), а также через указатель PduInfoPtr — длину (SduLength), полезные данные (SduDataPtr) и соответствующие метаданные. Функция не имеет возвращаемого значения.

Параллелизм и контекст вызова

Функция является реентерабельной для различных ID PDU, но нереентерабельной для одного и того же ID PDU [SWS_CanTp_00214]. CanTp_RxIndication может вызываться в контексте прерывания, например непосредственно из прерывания приема CAN [SWS_CanTp_00235].

Взаимодействие при обобщенных соединениях

При вызове для Single Frame (SF) или First Frame (FF) с метаданными CanTp сохраняет содержащуюся адресную информацию (такую как N_SA и N_TA при Normal fixed или Mixed 29-битной адресации). Эта информация служит для установления соединения с верхним уровнем, отправки кадров Flow Control (FC) и распознавания Consecutive Frame (CF) [SWS_CanTp_00330]. При последующих CF- и принятых FC-кадрах CanTp сверяет адресные данные метаданных с сохраненными значениями [SWS_CanTp_00333], [SWS_CanTp_00336].

Обработка ошибок и паддинг

Если DET активирован и PduInfoPtr является указателем NULL, функция сообщает об ошибке CANTP_E_PARAM_POINTER и возвращает управление без выполнения действий [SWS_CanTp_00322]. Если проверка заполнения (padding) для кадров с полезной нагрузкой до 8 байт активирована (CanTpRxPaddingActivation или CanTpTxPaddingActivation равно CANTP_ON), при ошибках длины в DET отправляется сообщение об ошибке времени выполнения CANTP_E_PADDING:

  • SF с SduLength < 8 отклоняется [SWS_CanTp_00345].
  • Последний CF с SduLength != 8 прерывает текущий прием через PduR_CanTpRxIndication() со значением E_NOT_OK [SWS_CanTp_00346].
  • Принятый FC с SduLength < 8 прерывает текущую передачу через PduR_CanTpTxConfirmation() со значением E_NOT_OK [SWS_CanTp_00349].

Этот текст был сгенерирован ИИ и служит в качестве справочного руководства. Определяющей является спецификация AUTOSAR.

Руководство разработчика реализации в подготовке (сложность I2)

функция 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.

СОЗДАНО ИИ не проверено Модель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 2541d17fed91 Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал

Модуль CanTp предоставляет синхронную функцию обратного вызова CanTp_TxConfirmation (Service-ID 0x40) через заголовочный файл CanTp.h для приема вызовов подтверждения для переданных PDU [SWS_CanTp_00076] [SWS_CanTp_00215]. Через этот интерфейс нижележащий модуль коммуникационного интерфейса сообщает об успешной отправке или о сбое передачи PDU [SWS_CanTp_00215].

Параметры и возвращаемые значения

Функция не возвращает значения (void) и ожидает два входных параметра [SWS_CanTp_00215]:

  • TxPduId: ID переданного PDU [SWS_CanTp_00215].
  • result: статус передачи. Значение E_OK подтверждает успешную передачу, тогда как E_NOT_OK сигнализирует о сбое передачи PDU [SWS_CanTp_00215].

Обработка ошибок

Если CanTp_TxConfirmation вызывается со значением результата E_NOT_OK, модуль CanTp прерывает соответствующий сеанс передачи [SWS_CanTp_00355].

Параллелизм и контекст выполнения

С точки зрения параллелизма функция реентерабельна для различных ID PDU, но нереентерабельна для одного и того же ID PDU [SWS_CanTp_00215]. Она должна допускать вызов в контексте прерывания и может, например, вызываться непосредственно из прерывания передачи CAN [SWS_CanTp_00236].

Это указание по использованию было сгенерировано автоматически на основе спецификации AUTOSAR Classic Release R20-11.

Руководство разработчика реализации в подготовке (сложность 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#f13543f0
Content hash
f13543f0
Source
https://www.autosar.org/fileadmin/standards/R20-11/CP/AUTOSAR_SWS_CANTransportLayer.pdf#nameddest=SWS_CanTp_00208

Карта тем

Подробный вид

Выберите элемент в оглавлении.

Инициализация и состояние

CanTp_GetVersionInfo функция

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

void CanTp_GetVersionInfo (Std_VersionInfoType* versioninfo);
CanTp_Init функция

This function initializes the Can Tp module.

void CanTp_Init (const CanTp_ConfigType* CfgPtr);

Сервисы

CanTp_CancelReceive функция

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

Std_ReturnType CanTp_CancelReceive (PduIdType RxPduId);
CanTp_CancelTransmit функция

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

Std_ReturnType CanTp_CancelTransmit (PduIdType TxPduId);
CanTp_ChangeParameter функция

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

Std_ReturnType CanTp_ChangeParameter (PduIdType id, TPParameterType parameter, uint16 value);
CanTp_ReadParameter функция

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);
CanTp_Shutdown функция

This function is called to shutdown the Can Tp module.

void CanTp_Shutdown (void);
CanTp_Transmit функция

Requests transmission of a PDU.

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

Обратные вызовы

CanTp_RxIndication функция

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

void CanTp_RxIndication (PduIdType RxPduId, const PduInfoType* PduInfoPtr);
CanTp_TxConfirmation функция

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

Циклические

CanTp_MainFunction функция

The main function for scheduling the CAN TP.

void CanTp_MainFunction (void);

Типы

Data structure type for the post - build configuration parameters.