CAN Transport Layer (CanTp)
Provides segmentation and reassembly of CAN messages up to 4095 bytes (ISO 15765-2).
Funktionen — Übersicht
void CanTp_Init (const CanTp_ConfigType* CfgPtr);This function initializes the Can Tp module.void CanTp_GetVersionInfo (Std_VersionInfoType* versioninfo);This function returns the version information of the Can Tp module.void CanTp_Shutdown (void);This function is called to shutdown the Can Tp module.Std_ReturnType CanTp_Transmit (PduIdType TxPduId, const PduInfoType* PduInfoPtr);Requests transmission of a PDU.Std_ReturnType CanTp_CancelTransmit (PduIdType TxPduId);Requests cancellation of an ongoing transmission of a PDU in a lower layer communication module.Std_ReturnType CanTp_CancelReceive (PduIdType RxPduId);Requests cancellation of an ongoing reception of a PDU in a lower layer transport protocol module.Std_ReturnType CanTp_ChangeParameter (PduIdType id, TPParameterType parameter, uint16 value);Request to change a specific transport protocol parameter (e.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.void CanTp_MainFunction (void);The main function for scheduling the CAN TP.void CanTp_RxIndication (PduIdType RxPduId, const PduInfoType* PduInfoPtr);Indication of a received PDU from a lower layer communication interface module.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.
Typen — Übersicht
struct CanTp_ConfigTypeData structure type for the post - build configuration parameters.
Funktionen & Typen — Detailansicht
функция CanTp_Init [SWS_CanTp_00208] 📄 PDF
void CanTp_Init (const CanTp_ConfigType* CfgPtr);
This function initializes the Can Tp module.
Синхронная и нереентерабельная функция 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_GetVersionInfo [SWS_CanTp_00210] 📄 PDF
void CanTp_GetVersionInfo (Std_VersionInfoType* versioninfo);
This function returns the version information of the Can Tp module.
функция CanTp_Shutdown [SWS_CanTp_00211] 📄 PDF
void CanTp_Shutdown (void);
This function is called to shutdown the Can Tp module.
Использование и контекст вызова
Функция 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.
Использование
Функция 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.
Синхронная функция 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.
Функция 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).
Синхронная функция 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.
Использование
Синхронная функция 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.
Функция 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.
Использование и семантика
Синхронная функция [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.
Модуль 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)
тип CanTp_ConfigType [SWS_CanTp_00340] 📄 PDF
Data structure type for the post - build configuration parameters.
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
gemini-3.8-flash-low· 2026-10-13 · Немецкий оригинал