DEENESPTFRRUARHIKOZHNL

FlexRay Transport Layer (FrTp)

ModulFrTp (FlexRay Transport Layer)
BSW-Modul-ID36
Standard-Header#include "FrTp.h"
SWS-SpezifikationAUTOSAR_SWS_FlexRayISOTransportLayer.pdf
ClusterFlexRay

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

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

Сегментирует и собирает большие сообщения согласно ISO 10681-2 между PDU Router и FlexRay Interface.

FrTp передает большие сообщения между PduR и FrIf согласно ISO 10681-2 ([SWS_FrTp_01005]). Он сегментирует и собирает их, управляет потоком и распределяет пропускную способность через разделяемые пулы Tx-PDU. FrTp_Transmit только принимает запрос на передачу; основную работу выполняет циклическая FrTp_MainFunction, которая должна выполняться не реже одного раза за цикл FlexRay ([SWS_FrTp_01152]). Поддерживаются передачи с подтверждением и без подтверждения, а также сообщения неизвестной длины. При протокольных ошибках или недопустимой сегментации FrTp прерывает операцию и сообщает E_NOT_OK в PduR.

FrTp представляет собой транспортный уровень для FlexRay согласно ISO 10681-2. В тех случаях, когда спецификация не определяет собственных правил, модуль следует этому стандарту ([SWS_FrTp_01005]). Он разделяет большие N-SDU от PduR на N-PDU, передает их в FrIf с помощью FrIf_Transmit и заново собирает принятые кадры ([SWS_FrTp_01050], FrTp SWS с. 19). Обработка происходит только в состоянии FRTP_ON, то есть между FrTp_Init и FrTp_Shutdown ([SWS_FrTp_01032], [SWS_FrTp_01036]). FrTp_MainFunction должна выполняться не реже одного раза за цикл FlexRay ([SWS_FrTp_01152]).

kontext EcuM EcuM FrTp FrTp EcuM->FrTp FrTp_Init / FrTp_Shutdown SchM BSW-Scheduler SchM->FrTp FrTp_MainFunction PduR PduR PduR->FrTp FrTp_Transmit, FrTp_CancelTransmit, FrTp_CancelReceive, FrTp_ChangeParameter FrTp->PduR PduR_FrTpStartOfReception, PduR_FrTpCopyRxData, PduR_FrTpRxIndication, PduR_FrTpCopyTxData, PduR_FrTpTxConfirmation FrIf FrIf FrTp->FrIf FrIf_Transmit Det DET FrTp->Det Det_ReportRuntimeError FrIf->FrTp FrTp_RxIndication, FrTp_TxConfirmation, FrTp_TriggerTransmit

Контекстная диаграмма: FrTp между PduR и FrIf, управляемый EcuM и диспетчером BSW. Источники: [SWS_FrTp_00577], FrTp SWS с. 21

Отправка всегда начинается с FrTp_Transmit. Вызов лишь занимает канал и устанавливает TX_SDU_AVAILABLE ([SWS_FrTp_00136], [SWS_FrTp_01039]). Функция MainFunction выполняет остальное: забирает данные через PduR_FrTpCopyTxData, занимает первый свободный PDU из пула и принимает решение о сегментации ([SWS_FrTp_01045], [SWS_FrTp_01048]). В режиме «Decoupled Buffer Access» FrIf забирает данные позже с помощью FrTp_TriggerTransmit ([SWS_FrTp_01060]). PduR_FrTpTxConfirmation следует после каждого принятого запроса ([SWS_FrTp_01058]).

Передача N-SDU (Immediate / Decoupled Buffer Access)PduRFrTpFrIfFrTp_Transmit(TxPduId, PduInfoPtr)Проверить TxPduId, занять свободный каналTX_SDU_AVAILABLE setzenAuftrag angenommenUse Case: FrTp_MainFunctionPduR_FrTpCopyTxData(доступная длина)ersten freien FrTpTxPdu belegenSegmentierung entscheidenloopдо тех пор, пока не будут переданы все данные N-SDUPduR_FrTpCopyTxData(длина FrTpTxPdu)Подготовить Address Information и PCIFrIf_Transmit(TxPduId)optDecoupled Buffer AccessFrTp_TriggerTransmit(TxPduId, PduInfoPtr)AI, PCI и данные скопированыFrTp_TxConfirmation(TxPduId, E_OK)Перевести FrTpTxPdu в idleoptFlowControl erwartetwarten, bis FlowControl per FrTp_RxIndication eintrifftKanal freigebenСбросить TX_SDU_AVAILABLEPduR_FrTpTxConfirmation(E_OK)

Диаграмма последовательности: прием запроса, обработка в MainFunction, подтверждение для каждого N-PDU и в конце — для PduR. Источники: FrTp SWS с. 44, [SWS_FrTp_01042]

При приеме FrTp проверяет RxPduId и адреса на соответствие конфигурации соединения ([SWS_FrTp_01069], [SWS_FrTp_01071]). При новом соединении он вызывает PduR_FrTpStartOfReception, копирует фрагменты на верхний уровень и при необходимости отправляет FlowControl ([SWS_FrTp_01078], [SWS_FrTp_01080]). Поддерживаются шесть вариантов: несегментированный или сегментированный, с подтверждением или без него, с известной или неизвестной длиной ([SWS_FrTp_01007]–[SWS_FrTp_01012]). Несколько соединений разделяют пулы Tx-PDU и обслуживаются поочередно ([SWS_FrTp_01020], [SWS_FrTp_01096]).

В случае ошибки FrTp прерывает операцию в трех ситуациях и сообщает E_NOT_OK в PduR: при недопустимом или прерывающем Flow Status и при необходимости сегментации в соединениях 1:n ([SWS_FrTp_01198], [SWS_FrTp_01208]). Ошибками времени выполнения являются FRTP_E_SEG_ERROR и FRTP_E_NO_CHANNEL. Таймеры и счетчики, такие как предел FC.WAIT, ограничивают время ожидания ([SWS_FrTp_01100], [SWS_FrTp_01114]). Текущие передачи можно отменить с помощью FrTp_CancelTransmit и FrTp_CancelReceive ([SWS_FrTp_01116], [SWS_FrTp_01181]).

Роль в стеке FlexRay и состояние модуля

FrTp — это транспортный уровень FlexRay согласно ISO 10681-2. В тех случаях, когда спецификация не определяет собственных правил, модуль следует этому стандарту и поддерживает его форматы N-PDU ([SWS_FrTp_01005], [SWS_FrTp_01006]). Вверх по стеку FrTp обслуживает PduR. PduR запускает передачи с помощью FrTp_Transmit, отменяет их или изменяет параметры. FrTp возвращает данные и результаты через PduR_FrTpStartOfReception, PduR_FrTpCopyRxData, PduR_FrTpCopyTxData, PduR_FrTpRxIndication и PduR_FrTpTxConfirmation (FrTp SWS с. 19). Вниз по стеку FrTp передает N-PDU с помощью FrIf_Transmit ([SWS_FrTp_01050]). FrIf возвращает отклик через FrTp_RxIndication, FrTp_TxConfirmation и FrTp_TriggerTransmit (FrTp SWS с. 21). EcuM вызывает FrTp_Init и FrTp_Shutdown (FrTp SWS с. 19). Диспетчер BSW вызывает FrTp_MainFunction ([SWS_FrTp_00162], FrTp SWS с. 81).

Различие между релизами: более поздние редакции включают маршрутизатор L-SDU (LSduR) между FrTp и FrIf (FrTp SWS с. 19). Для R20-11 действует прямой интерфейс к FrIf, как определено в [SWS_FrTp_00577] и [SWS_FrTp_01050].

kontext EcuM EcuM FrTp FrTp EcuM->FrTp FrTp_Init / FrTp_Shutdown SchM BSW-Scheduler SchM->FrTp FrTp_MainFunction PduR PduR PduR->FrTp FrTp_Transmit, FrTp_CancelTransmit, FrTp_CancelReceive, FrTp_ChangeParameter FrTp->PduR PduR_FrTpStartOfReception, PduR_FrTpCopyRxData, PduR_FrTpRxIndication, PduR_FrTpCopyTxData, PduR_FrTpTxConfirmation FrIf FrIf FrTp->FrIf FrIf_Transmit Det DET FrTp->Det Det_ReportRuntimeError FrIf->FrTp FrTp_RxIndication, FrTp_TxConfirmation, FrTp_TriggerTransmit

Контекстная диаграмма: FrTp располагается между PduR и FrIf и управляется EcuM и диспетчером BSW. Источники: FrTp SWS с. 19, FrTp SWS с. 21, [SWS_FrTp_00577]

Модуль имеет два состояния: FRTP_OFF и FRTP_ON ([SWS_FrTp_01028]). Какое из них действует, фиксирует статусная переменная FrTpState ([SWS_FrTp_01029], [SWS_FrTp_01106]). После включения FrTp находится в состоянии FRTP_OFF ([SWS_FrTp_01030]). Только успешный вызов FrTp_Init с указателем на FrTp_ConfigType переключает его в FRTP_ON ([SWS_FrTp_01032], [SWS_FrTp_00147], [SWS_FrTp_01194]). Сегментация и сборка выполняются только в состоянии FRTP_ON ([SWS_FrTp_01033]). FrTp_Shutdown завершает все открытые соединения, просто останавливая работу. Функция освобождает ресурсы и возвращает модуль в состояние FRTP_OFF ([SWS_FrTp_00148], [SWS_FrTp_01036]).

lebenszyklus start OFF FRTP_OFF (нет обработки) start->OFF Einschalten ON FRTP_ON (Segmentierung, Reassemblierung, Verbindungsverarbeitung) OFF->ON FrTp_Init(configPtr) erfolgreich ON->OFF FrTp_Shutdown() все соединения завершены, ресурсы освобождены

Диаграмма состояний: FrTp обрабатывает данные только между FrTp_Init и FrTp_Shutdown. Источники: [SWS_FrTp_01030], [SWS_FrTp_01032], [SWS_FrTp_01036], FrTp SWS с. 38

FrTp_MainFunction планирует работу модуля и является точкой входа для всех задач обработки ([SWS_FrTp_00203], [SWS_FrTp_00580]). Она должна выполняться не реже одного раза за цикл FlexRay ([SWS_FrTp_01152]). Колбэки, напротив, по существу лишь устанавливают флаги: TX_SDU_AVAILABLE существует для каждого канала ([SWS_FrTp_00415], [SWS_FrTp_00416]). RX_PDU_AVAILABLE существует для каждого принимаемого N-PDU и сбрасывается после обработки ([SWS_FrTp_00418], [SWS_FrTp_00421]).

Варианты передачи согласно ISO 10681-2

FrTp поддерживает шесть последовательностей кадров. Они различаются по трем признакам: сегментируется ли сообщение, подтверждает ли получатель прием и известна ли длина в начале передачи (FrTp SWS с. 27, FrTp SWS с. 31):

ВариантХарактерные кадрыОбоснование
несегментированная, без подтверждения, длина известнаSTFU[SWS_FrTp_01007]
несегментированная, с подтверждением, длина известнаSTFA → FC.ACK[SWS_FrTp_01008]
сегментированная, без подтверждения, длина известнаSTFU, FC.CTS, CF, CFEOB, LF[SWS_FrTp_01009]
сегментированная, с подтверждением, длина известнаSTFA, FC.CTS, CF, CFEOB, LF, FC.ACK[SWS_FrTp_01010]
сегментированная, без подтверждения, длина неизвестнакак выше, общая длина только в LF[SWS_FrTp_01011], [SWS_FrTp_01067]
сегментированная, с подтверждением, длина неизвестнакак выше, дополнительно FC.ACK[SWS_FrTp_01012]

В сегментированных вариантах с подтверждением FC.ACK, по-видимому, следует за LastFrame и завершает передачу. Вопрос Q-f3c70b1506e2cde4 (открытый) Это интерпретация подписей к рисункам, порядок которых неоднозначен (FrTp SWS с. 29). Следующая диаграмма показывает базовый сегментированный случай без подтверждения.

Сегментированная передача без квитирования, длина известнаFrTp SenderПриемник FrTpStartFrame (STFU)FlowControl_CTS (FC.CTS)Use Case: Block 1ConsecutiveFrame (CF)ConsecutiveFrame (CF)ConsecutiveFrame_EOB (CFEOB)Blockende: neue Flusssteuerung erforderlichFlowControl_CTS (FC.CTS)Use Case: Block 2ConsecutiveFrame (CF)LastFrame (LF)

Диаграмма последовательности: получатель разрешает каждый блок через FC.CTS, а CFEOB завершает блок. Источники: [SWS_FrTp_01009], FrTp SWS с. 28

Передача с неизвестной длиной:

  • активируется переключателем компилятора ([SWS_FrTp_01062]);
  • запускается с помощью FrTp_Transmit и длины 0 ([SWS_FrTp_01064], [SWS_FrTp_01043]);
  • завершается, когда переданный параметр длины равен 0 ([SWS_FrTp_01066]);
  • состояние отслеживается флагом TX_SDU_UNKNOWN_MSG_LENGTH для каждого канала ([SWS_FrTp_01101], [SWS_FrTp_01102]);
  • получатель вызывает PduR_FrTpStartOfReception с ожидаемой длиной 0 ([SWS_FrTp_01184]);
  • в соединении 1:n FrTp_Transmit отклоняет такие запросы с возвратом E_NOT_OK и сообщает FRTP_E_SEG_ERROR ([SWS_FrTp_01187], FrTp SWS с. 47).

Соединения, каналы и пулы PDU

Каждое коммуникационное отношение представляет собой отдельное FrTpConnection. Их количество конфигурируется на этапе post-build ([SWS_FrTp_01014], [SWS_FrTp_01015]). Каждое соединение имеет уникальную в пределах модуля пару адресов и уникальный FRTP_SDUID ([SWS_FrTp_01017], [SWS_FrTp_01018]). Несколько соединений могут совместно использовать FrTpConnectionControl и FrTpTxPduPool ([SWS_FrTp_01022], [SWS_FrTp_01020]). Во время выполнения параллельно работают несколько FrTpChannel; их число определяет FrTpChanNum ([SWS_FrTp_00088], [SWS_FrTp_00228]). Для передачи и приема каналы переключаются между состояниями «idle» и «busy» ([SWS_FrTp_01117], [SWS_FrTp_01025]).

konfiguration Kanal FrTpChannel (Anzahl: FrTpChanNum) TxCon FrTpConnection (Tx) FrTpLa/FrTpRa, FRTP_SDUID Kanal->TxCon FrTpTxConRef RxCon FrTpConnection (Rx) FrTpLa/FrTpRa, FRTP_SDUID Kanal->RxCon FrTpRxConRef Ctrl FrTpConnectionControl (mehrfach referenzierbar) TxCon->Ctrl Referenz Pool FrTpTxPduPool (mehrfach referenzierbar) TxCon->Pool Referenz RxCon->Ctrl Referenz RxCon->Pool Ссылка (для FlowControl) NPdu Tx N-PDU (по возрастанию, индивидуальная длина) Pool->NPdu содержит FrIf FrIf NPdu->FrIf SF, CF, LF / FC

Контекстная диаграмма: полудуплексный канал ссылается на Tx- и Rx-соединение. Оба ссылаются на управляющие параметры и пул Tx-PDU. Источники: FrTp SWS с. 39, [SWS_FrTp_01020], [SWS_FrTp_01088]

Адреса:

  • При отправке FrTp берет адреса из метаданных SOURCE_ADDRESS_16 и TARGET_ADDRESS_16. Сконфигурированные FrTpLa/FrTpRa имеют при этом приоритет ([SWS_FrTp_01204], [SWS_FrTp_01205]).
  • При приеме FrTp передает адреса наверх в виде метаданных. Те же адреса он использует для FlowControl ([SWS_FrTp_01206]).

FrTp распределяет пропускную способность через пулы:

  • Tx-N-PDU пула расположены в возрастающем порядке сетевого расписания и могут иметь разную длину ([SWS_FrTp_01088], [SWS_FrTp_01089]).
  • TxPduPendingCounter канала подсчитывает неподтвержденные N-PDU ([SWS_FrTp_01091], [SWS_FrTp_01092]). Соединение обрабатывается только тогда, когда он равен 0 ([SWS_FrTp_01094]). Благодаря этому Consecutive Frames не могут обогнать друг друга (FrTp SWS с. 61).
  • Активные соединения обслуживаются поочередно ([SWS_FrTp_01096]).
  • При ограничении пропускной способности действуют три правила: StartFrame и FlowControl передаются в первом PDU пула ([SWS_FrTp_01174], [SWS_FrTp_01177]). Отправитель использует только BC.MPPC PDU ([SWS_FrTp_01175]). Пулы могут перекрываться ([SWS_FrTp_01176]).
  • FrIf должен планировать PDU соединения в возрастающем порядке в пределах одного задания (FrTp SWS с. 122).

Тракт отправки: от FrTp_Transmit до PduR_FrTpTxConfirmation

Каждая отправка начинается с FrTp_Transmit ([SWS_FrTp_00136], [SWS_FrTp_00149]). Вызов устанавливает TX_SDU_AVAILABLE только в том случае, если TxPduId действителен и канал свободен ([SWS_FrTp_01039]). В противном случае он завершается с E_NOT_OK. То же самое справедливо, если для того же адреса уже выполняется передача ([SWS_FrTp_01041], [SWS_FrTp_01200]).

Основную работу выполняет FrTp_MainFunction:

  1. запрашивает доступную длину через PduR_FrTpCopyTxData ([SWS_FrTp_01042]);
  2. занимает первый свободный FrTpTxPdu ([SWS_FrTp_01045]);
  3. принимает решение о сегментации ([SWS_FrTp_01048]);
  4. копирует данные в объеме длины PDU ([SWS_FrTp_01123]);
  5. передает N-PDU с точной длиной в FrIf_Transmit ([SWS_FrTp_01051]).

Последовательность действий показана на FrTp SWS с. 44.

segmentierung start laenge TX_SDU_AVAILABLE установлен: PduR_FrTpCopyTxData возвращает доступную длину start->laenge frei свободный FrTpTxPdu в пуле? laenge->frei warten Отложить соединение до следующего FrTp_MainFunction frei->warten нет groesse FrTpTxSdu.Length > FrTpTxPdu.Length - AI.Length - PCI.Length? frei->groesse да unseg unsegmentiert (einzelner StartFrame) groesse->unseg нет multi 1:n-Verbindung? groesse->multi да senden Подготовить AI и PCI, PduR_FrTpCopyTxData (длина FrTpTxPdu), FrIf_Transmit unseg->senden fehler Сообщить о FRTP_E_SEG_ERROR, прервать передачу, PduR_FrTpTxConfirmation(E_NOT_OK) multi->fehler да seg segmentiert (StartFrame, CF ..., LastFrame) multi->seg нет seg->senden

Диаграмма деятельности: выбор между несегментированной и сегментированной передачей, включая прерывание для соединений 1:n. Источники: [SWS_FrTp_01047], [SWS_FrTp_01048], [SWS_FrTp_01208], FrTp SWS с. 51

Важно для пропускной способности: если нет свободного PDU, FrTp откладывает соединение до следующего вызова MainFunction ([SWS_FrTp_01047]).

После каждого N-PDU FrIf вызывает FrTp_TxConfirmation. Это переводит FrTpTxPdu в состояние «idle» ([SWS_FrTp_01052], [SWS_FrTp_01054]). Канал и флаг освобождаются, как только выполняются три условия: все данные отправлены, подтверждены положительно и, если это сконфигурировано, получена квитанция ([SWS_FrTp_01056], [SWS_FrTp_01057]). PduR_FrTpTxConfirmation поступает после каждого принятого запроса, а с E_OK — только в случае успеха ([SWS_FrTp_01058]). Для отправки предусмотрено два типа доступа к буферу: «Immediate» и «Decoupled Buffer Access» ([SWS_FrTp_01084]). При «Decoupled» FrIf забирает данные позже через FrTp_TriggerTransmit. Этот вызов копирует Address Information, PCI и полезные данные в предоставленный буфер ([SWS_FrTp_01060], [SWS_FrTp_01061], FrTp SWS с. 50).

Передача N-SDU (Immediate / Decoupled Buffer Access)PduRFrTpFrIfFrTp_Transmit(TxPduId, PduInfoPtr)Проверить TxPduId, занять свободный каналTX_SDU_AVAILABLE setzenAuftrag angenommenUse Case: FrTp_MainFunctionPduR_FrTpCopyTxData(доступная длина)ersten freien FrTpTxPdu belegenSegmentierung entscheidenloopдо тех пор, пока не будут переданы все данные N-SDUPduR_FrTpCopyTxData(длина FrTpTxPdu)Подготовить Address Information и PCIFrIf_Transmit(TxPduId)optDecoupled Buffer AccessFrTp_TriggerTransmit(TxPduId, PduInfoPtr)AI, PCI и данные скопированыFrTp_TxConfirmation(TxPduId, E_OK)Перевести FrTpTxPdu в idleoptFlowControl erwartetwarten, bis FlowControl per FrTp_RxIndication eintrifftKanal freigebenСбросить TX_SDU_AVAILABLEPduR_FrTpTxConfirmation(E_OK)

Диаграмма последовательности: запрос поступает синхронно и обрабатывается асинхронно в MainFunction; опционально следует TriggerTransmit (Decoupled). Источники: FrTp SWS с. 44, FrTp SWS с. 50, [SWS_FrTp_01058]

Тракт приема и сборка

Прием начинается с FrTp_RxIndication ([SWS_FrTp_00137]). FrTp обрабатывает N-PDU только при выполнении двух условий ([SWS_FrTp_01069], [SWS_FrTp_01071]):

  • RxPduId действителен.
  • адрес назначения соответствует FrTpLa, а адрес источника — FrTpRa.

В противном случае N-PDU игнорируется ([SWS_FrTp_01072]). Если нет свободного Rx-канала, обработка завершается, и FrTp сообщает FRTP_E_NO_CHANNEL ([SWS_FrTp_01076], [SWS_FrTp_01186]). StartFrame модуль FrTp сохраняет в локальном буфере. Благодаря этому шлюз может корректно обработать его даже при кратковременной нехватке ресурсов (FrTp SWS с. 56).

При новом соединении FrTp вызывает PduR_FrTpStartOfReception. Передаются ожидаемая длина, а также содержимое и размер StartFrame ([SWS_FrTp_01078], [SWS_FrTp_01193]). Место выполнения этого вызова на схемах R20-11 представлено в двух вариантах: в FrTp_RxIndication (FrTp SWS с. 55) и в FrTp_MainFunction (FrTp SWS с. 86). R23-11 явно допускает оба варианта (FrTp SWS с. 54).

Затем FrTp копирует фрагменты через PduR_FrTpCopyRxData и отправляет FlowControl там, где этого требует протокол ([SWS_FrTp_01138], [SWS_FrTp_01080]). Канал освобождается, когда все данные приняты и все кадры FlowControl подтверждены ([SWS_FrTp_01081]). PduR_FrTpRxIndication следует всегда, когда PduR_FrTpStartOfReception завершился успешно ([SWS_FrTp_01083]).

Прием и реассемблированиеFrIfFrTpPduRFrTp_RxIndication(RxPduId, PduInfoPtr)Проверка RxPduIdПроверка назначения/источника относительно FrTpLa/FrTpRaaltStartFrame empfangenfreien Rx-Kanal belegenStartFrame in lokalen Puffer kopierenFolgerahmen (CF, LF)Поиск соответствующего каналаRX_PDU_AVAILABLE setzenUse Case: FrTp_MainFunction (StartOfReception alternativ schon in FrTp_RxIndication)optneue VerbindungPduR_FrTpStartOfReception(RxSduId, данные и размер StartFrame, длина)Puffer bereitgestelltPduR_FrTpCopyRxData (N-SDU-Fragment)optFlowControl erforderlichFrIf_Transmit(FC N-PDU)FrTp_TxConfirmation(E_OK)Сброс RX_PDU_AVAILABLEoptN-SDU полностью принятаRx-Kanal freigebenPduR_FrTpRxIndication(RxSduId, E_OK)

Диаграмма последовательности: колбэк выполняет проверку и буферизацию, MainFunction собирает данные и отправляет FlowControl. Источники: FrTp SWS с. 55, [SWS_FrTp_01074], [SWS_FrTp_01083]

Отмена и параметры времени выполнения

Доступность отмены отправки статически определяется параметром FrTpTransmitCancellation; инициируется она с помощью FrTp_CancelTransmit ([SWS_FrTp_01097], [SWS_FrTp_00384]). Действие зависит от хода выполнения:

  • Если запрос принят, но еще не запущен, соединение освобождается немедленно. Получатель ничего не замечает ([SWS_FrTp_00385], FrTp SWS с. 63).
  • Если передача уже идет, FrTp останавливает ее с помощью E_OK ([SWS_FrTp_01116]).
  • E_NOT_OK возвращается, если соединение не активно или последний N-PDU передачи без подтверждения уже передан в FrIf ([SWS_FrTp_01116]).

В сегментированном случае у получателя истекает таймаут, завершающий прием (FrTp SWS с. 59).

Прерывание передачи при сегментированной передачеPduR (Sender)FrTp SenderПриемник FrTpPduR (приемник)FrTp_TransmitUse Case: FrTp_MainFunctionStartFramePduR_FrTpStartOfReceptionFlowControlFrTp_CancelTransmit(TxPduId)E_OKПередача остановлена, больше нет CFТаймаут (CF не поступили)PduR_FrTpRxIndication(Empfang abgebrochen)

Диаграмма последовательности: если отправитель отменяет текущую сегментированную передачу, получатель завершает прием по таймауту. Источники: [SWS_FrTp_01116], FrTp SWS с. 69

FrTp_CancelReceive отменяет текущий прием, если RxPduId действителен, и возвращает в этом случае E_OK ([SWS_FrTp_01181], [SWS_FrTp_01183]). При несегментированном приеме или в процессе передачи LastFrame функция отвечает отказом ([SWS_FrTp_01182]). FrTp_ChangeParameter изменяет во время выполнения значения BandwidthControl FrTpSCexp и FrTpMaxNbrOfNPduPerCycle ([SWS_FrTp_00242]). Битовая структура соответствует формату кадра FC(CTS) ([SWS_FrTp_01195]). Идентификатором параметра для этого является TP_BC (ComStack Types с. 18). Во время текущего приема изменение отклоняется ([SWS_FrTp_01115]). После успешного изменения соединение использует новые значения ([SWS_FrTp_01156]).

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

Ошибки разработки определены в [SWS_FrTp_01201]:

  • FRTP_E_UNINIT: вызов без инициализации; исключение составляют FrTp_Init и FrTp_GetVersionInfo.
  • FRTP_E_PARAM_POINTER: указатель NULL.
  • FRTP_E_INVALID_PDU_SDU_ID: недопустимый SDU- или PDU-ID.
  • FRTP_E_INVALID_PARAMETER: недопустимый параметр.
  • FRTP_E_UMSG_LENGTH_ERROR: неизвестная длина без соответствующей конфигурации ([SWS_FrTp_01134]).
  • код ошибки для неудавшейся инициализации.

API проверяют идентификаторы и указатели и при ошибках возвращают E_NOT_OK, если у них есть возвращаемое значение ([SWS_FrTp_01139], [SWS_FrTp_01145], [SWS_FrTp_01147]). Ошибками времени выполнения являются FRTP_E_SEG_ERROR (0x05) и FRTP_E_NO_CHANNEL (0x07). Они передаются через Det_ReportRuntimeError ([SWS_FrTp_01208], [SWS_FrTp_00577]).

В трех случаях отправитель прерывает передачу и сообщает PduR_FrTpTxConfirmation с E_NOT_OK:

  • FlowControl имеет недопустимый Flow Status или OVFLW/ABT ([SWS_FrTp_01198]);
  • ACK_RET указывает на позицию вне буфера ([SWS_FrTp_01199]);
  • соединение 1:n потребовало бы сегментации (FrTp SWS с. 51).

FrTp_TxConfirmation с E_NOT_OK освобождает канал на обеих сторонах ([SWS_FrTp_01056], [SWS_FrTp_01081]). Флаг RX_ERROR сохраняет ошибку приёма до тех пор, пока не будет разрешена отправка FlowControl. После реакции (Retry, отрицательное подтверждение или отмена) он сбрасывается ([SWS_FrTp_00429], [SWS_FrTp_00430]). В соединениях 1:n нет ни подтверждения, ни Retry ([SWS_FrTp_00598]).

Таймеры и таймауты следуют таблицам спецификации ([SWS_FrTp_01099], [SWS_FrTp_01100], FrTp SWS с. 67). Конфигурация должна удовлетворять следующим условиям:

Если PduR при отправке возвращает BUFREQ_E_BUSY, FrTp повторяет попытку до FrTpTimeCs раз ([SWS_FrTp_01196]). Счётчики ограничены ([SWS_FrTp_01105], [SWS_FrTp_01114]). Действия при достижении предела определяет [SWS_FrTp_01113]; соответствующая таблица здесь не приведена. Если у приёмника отсутствует буфер, он отправляет FC.WAIT. Число таких кадров ограничивает FrTpMaxFCWait (FrTp SWS с. 69).

Нехватка буфера у приемника: FC.WAIT и предел счетчикаFrTp SenderПриемник FrTpPduR (приемник)StartFrameПередатчик контролирует Timeout_BSPduR_FrTpStartOfReceptionkein Pufferloopkein Puffer; COUNTER_FCWT begrenzt durch FrTpMaxFCWaitFlowControl (WAIT)Pufferanforderung wiederholenkein PufferPufferanforderungБуфер доступенPduR_FrTpCopyRxDataFlowControl (CTS)ConsecutiveFrameПриемник контролирует Timeout_CR

Диаграмма последовательности: если буфер отсутствует, приёмник отправляет FC.WAIT до срабатывания лимита счётчика; после этого FC.CTS возобновляет передачу. Источники: [SWS_FrTp_01105], [SWS_FrTp_01114], FrTp SWS с. 70

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

Сгенерированное ИИ руководство на основе фрагментов спецификации в полезной нагрузке. Нормативными для R20-11 являются приведённые по ссылкам требования; разделы документов других релизов служат только для пояснения.

FlexRay Transport Layer (FrTp)

Provides segmented data transmission over FlexRay (ISO 10681-2).

Funktionen — Übersicht

Typen — Übersicht

Funktionen & Typen — Detailansicht

функция FrTp_Init [SWS_FrTp_00147] 📄 PDF

void FrTp_Init (const FrTp_ConfigType* configPtr);

This service initializes all global variables of a Flex Ray Transport Layer instance and set it in the idle state. It has no return value because software errors in initialisation data shall be detected during configuration time (e.g. by configuration tool ).

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

Синхронная функция FrTp_Init инициализирует все глобальные переменные экземпляра транспортного уровня FlexRay и переводит его в состояние покоя [SWS_FrTp_00147]. В качестве входного параметра через configPtr передается указатель на конфигурацию транспортного протокола FlexRay (const FrTp_ConfigType*) [SWS_FrTp_00147]. Интерфейс объявляется через заголовочный файл FrTp.h с идентификатором сервиса 0x00 [SWS_FrTp_00147].

В отношении внутреннего поведения и обработки ошибок действуют следующие положения:

  • После того как транспортный уровень был успешно инициализирован вызовом FrTp_Init, модуль FrTp переходит во внутреннее состояние FRTP_ON [SWS_FrTp_01032].
  • Функция не имеет возвращаемого значения (void), так как программные ошибки в данных инициализации должны выявляться еще на этапе конфигурации, например с помощью инструмента конфигурирования [SWS_FrTp_00147].

Относительно параллелизма сервис специфицирован как нереентерабельный (Non Reentrant) [SWS_FrTp_00147]. Параллельный или многократный некоординированный вызов поэтому недопустим. Интерпретация: вызов, вероятно, должен выполняться централизованно в рамках запуска ЭБУ до использования регулярных транспортных сервисов. Вопрос Q-9b7cf7fc6dac510e (открытый)

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

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

функция FrTp_Shutdown [SWS_FrTp_00148] 📄 PDF

void FrTp_Shutdown (void);

This service closes all pending transport pro tocol connections by simply stopping operation, frees all resources and stops the Fr Tp Module

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

Синхронная функция FrTp_Shutdown завершает работу модуля транспортного протокола FlexRay (FrTp) [SWS_FrTp_00148]. При вызове сервис немедленно закрывает все еще активные соединения транспортного протокола путем прекращения работы, освобождает все занятые ресурсы и полностью останавливает модуль FrTp [SWS_FrTp_00148].

В отношении спецификации интерфейса и поведения действуют следующие свойства:

  • Сигнатура и заголовочный файл: функция доступна через заголовочный файл FrTp.h, имеет Service-ID 0x01, не ожидает параметров и не возвращает значения (void) [SWS_FrTp_00148].
  • Параллелизм: FrTp_Shutdown специфицирована как нереентерабельная (Non Reentrant) и должна выполняться синхронно [SWS_FrTp_00148]. Поэтому конкурентный или многократный параллельный вызов недопустим.
  • Переход состояния: в результате успешного выполнения сервисного примитива FrTp_Shutdown() модуль FrTp переходит во внутреннее состояние FRTP_OFF [SWS_FrTp_01036].

Поскольку сервис закрывает ожидающие соединения путем простого прекращения работы, текущие передачи, вероятно, прерываются немедленно и без отдельного сообщения о завершении. Вопрос Q-35555515f521d0c3 (открытый)

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

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

функция FrTp_Transmit [SWS_FrTp_00149] 📄 PDF

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

Requests transmission of a PDU.

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

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

Синхронная функция FrTp_Transmit запрашивает передачу PDU через модуль транспортного уровня FlexRay [SWS_FrTp_00149]. Через параметр TxPduId передается идентификатор передаваемого PDU, тогда как PduInfoPtr указывает на полезные данные, метаданные, а также длину [SWS_FrTp_00149]. Если требуется инициировать передачу с длиной сообщения, еще неизвестной верхнему уровню, следует вызвать FrTp_Transmit со значением параметра PduLength = 0 [SWS_FrTp_01064]. Принятие запроса на передачу подтверждается синхронно с помощью E_OK; если запрос не может быть принят, функция возвращает E_NOT_OK [SWS_FrTp_00149].

Параллелизм и доступность каналов

Функция реентерабельна для вызовов с различными ID PDU, однако нереентерабельна для одного и того же идентификатора TxPduId [SWS_FrTp_00149]. Кроме того, для выполнения требуется свободный канал передачи: если ни один канал недоступен, поскольку состояние не является состоянием ожидания (FrTpTxChannelState ≠ Idle), функция прерывает работу и возвращает E_NOT_OK [SWS_FrTp_01041].

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

Если интерфейс разработки для обнаружения ошибок активен, FrTp_Transmit проверяет переданные параметры:

  • Если передается неподдерживаемый или недействительный TxPduId, сервис прерывает работу с E_NOT_OK и сообщает об ошибке разработки FRTP_E_INVALID_PDU_SDU_ID [SWS_FrTp_01040], [SWS_FrTp_01139].
  • Если указатель PduInfoPtr недействителен, выдается сообщение об ошибке FRTP_E_PARAM_POINTER, и выполнение также прерывается с E_NOT_OK [SWS_FrTp_01140].

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

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

функция FrTp_CancelTransmit [SWS_FrTp_00150] 📄 PDF

Std_ReturnType FrTp_CancelTransmit (PduIdType TxPduId);

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

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

Синхронная сервисная функция FrTp_CancelTransmit запрашивает прерывание текущей передачи PDU в нижележащем коммуникационном модуле [SWS_FrTp_00150]. Прерываемая передача адресуется через входной параметр TxPduId [SWS_FrTp_00150].

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

Поведение при прерывании зависит от текущего состояния соединения:

  • Если запрос на передачу ожидает обработки, но сама передача еще не запущена, FrTp_CancelTransmit немедленно освобождает соединение [SWS_FrTp_00385].
  • Если передача уже выполняется, функция останавливает процесс отправки и подтверждает успешное прерывание возвращаемым значением E_OK [SWS_FrTp_01116].
  • Если соединение не активно или последний N-PDU неподтвержденной передачи уже был передан в FrIf, прерывание завершается неудачно, и функция возвращает E_NOT_OK [SWS_FrTp_01116].

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

Если обнаружение ошибок разработки (Development Error Detection) для FrTp_CancelTransmit активировано, функция проверяет параметр TxPduId на валидность. Если эта проверка не проходит, сообщается об ошибке разработки FRTP_E_INVALID_PDU_SDU_ID и возвращается E_NOT_OK [SWS_FrTp_01141].

Функция реентерабельна для вызовов с различными ID PDU, однако не должна выполняться параллельно для одного и того же TxPduId [SWS_FrTp_00150].

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

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

функция FrTp_ChangeParameter [SWS_FrTp_00151] 📄 PDF

Std_ReturnType FrTp_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 · Температура: не регулируется · Промпт: a8ec21fec13d Происхождение Открытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал

Синхронная функция FrTp_ChangeParameter служит согласно [SWS_FrTp_00151] для запроса изменения специфических параметров транспортного протокола во время выполнения. Через параметр id передается ссылка на соответствующую PDU, тогда как parameter передает идентификатор параметра, а value — новое значение. При успешной корректировке функция возвращает E_OK, в противном случае запрос на изменение отклоняется с возвратом E_NOT_OK [SWS_FrTp_00151].

В частности, эта служба используется для модификации параметров FlowControl-PDU для управления полосой пропускания (BandwidthControl, BC) по стандарту ISO 10681-2 во время выполнения [SWS_FrTp_00242]. Это касается:

На стороне отправителя инициированная этим дополнительная FlowControl-PDU принимается как неожиданная N-PDU и игнорируется [SWS_FrTp_00242].

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

Если для функции включено обнаружение ошибок разработки (Development Error Detection), выполняются формальные проверки параметров:

  • Проверка идентификатора PDU id: если значение недействительно, функция сообщает об ошибке разработки FRTP_E_INVALID_PDU_SDU_ID и возвращает E_NOT_OK [SWS_FrTp_01143].
  • Проверка параметра parameter: если идентификатор недействителен, функция сообщает FRTP_E_INVALID_PARAMETER и возвращает E_NOT_OK [SWS_FrTp_01144].

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

Функция специфицирована как нереентерабельная (Non Reentrant) [SWS_FrTp_00151]. Поэтому вызывающие стороны должны гарантировать последовательное выполнение вызовов; вероятно, при обращении из разных задач требуется внешняя синхронизация. Вопрос Q-fe82be70448a3e0b (открытый)

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

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

функция FrTp_CancelReceive [SWS_FrTp_01172] 📄 PDF

Std_ReturnType FrTp_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 · Температура: не регулируется · Промпт: 0a137ff0f510 Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал

Синхронная функция FrTp_CancelReceive запрашивает прерывание текущего приема PDU на транспортном уровне FlexRay [SWS_FrTp_01172]. Она доступна через заголовочный файл FrTp.h и позволяет целенаправленно остановить активную операцию приема.

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

В качестве входного параметра передается RxPduId типа PduIdType, что однозначно идентифицирует прерываемую PDU [SWS_FrTp_01172]. Дополнительные входные или выходные параметры отсутствуют. Функция возвращает значение состояния типа Std_ReturnType:

  • E_OK: прерывание приема PDU успешно выполнено целевым модулем [SWS_FrTp_01172], [SWS_FrTp_01183].
  • E_NOT_OK: целевой модуль отклонил запрос на прерывание [SWS_FrTp_01172].

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

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

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

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

функция FrTp_TriggerTransmit [SWS_FrTp_00154] 📄 PDF

Std_ReturnType FrTp_TriggerTransmit (PduIdType TxPduId, PduInfoType* PduInfoPtr);

Within this API , the upper layer module (called module) shall check whether the available data fits into the buffer size reported by Pdu Info Ptr - >Sdu Length. If it fits, it shall copy its data into the buffer provided by Pdu Info Ptr - >Sdu Data Ptr and update the length of the actual copied data in Pdu Info Ptr - >Sdu Length. If not, it returns E_ NOT_ OK without changing Pdu Info Ptr.

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

Синхронная функция [SWS_FrTp_00154] служит для предоставления данных SDU для передачи. Через параметр TxPduId идентифицируется передаваемая SDU, тогда как PduInfoPtr указывает на структуру с целевым буфером (SduDataPtr) и доступным размером буфера (SduLength) [SWS_FrTp_00154].

Внутри функции проверяется, помещаются ли предоставленные данные в целевой буфер, сообщенный через PduInfoPtr->SduLength [SWS_FrTp_00154]:

  • Успешное копирование: если емкости буфера достаточно, функция копирует адресную информацию, PCI и данные N-SDU в буфер PduInfoPtr->SduDataPtr [SWS_FrTp_01060]. Длина данных в PduInfoPtr->SduLength устанавливается на точную длину скопированных данных, и функция возвращает E_OK [SWS_FrTp_00154], [SWS_FrTp_01061].
  • Недостаточный размер буфера: если данные не помещаются в буфер, функция прерывает работу и возвращает E_NOT_OK без изменения PduInfoPtr [SWS_FrTp_00154]. В случае ошибки PduInfoPtr не должен использоваться вызывающей стороной, так как он может содержать недействительные данные или нулевой указатель [SWS_FrTp_00154].

При активированном обнаружении ошибок разработки (DET) функция выполняет предварительные проверки переданных параметров:

  • Если TxPduId недействителен, функция сообщает об ошибке FRTP_E_INVALID_PDU_SDU_ID в DET и возвращает E_NOT_OK [SWS_FrTp_01145].
  • Если PduInfoPtr недействителен, она сообщает об ошибке FRTP_E_PARAM_POINTER в DET и также возвращает E_NOT_OK [SWS_FrTp_01146].

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

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

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

функция FrTp_RxIndication [SWS_FrTp_00152] 📄 PDF

void FrTp_RxIndication (PduIdType RxPduId, const PduInfoType* PduInfoPtr);

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

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

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

Синхронная функция обратного вызова FrTp_RxIndication служит для индикации принятого PDU от нижележащего модуля коммуникационного интерфейса в модуль транспортного уровня ISO FlexRay и запускает весь процесс приема [SWS_FrTp_00152], [SWS_FrTp_00137]. Она доступна через заголовочный файл FrTp.h и имеет идентификатор сервиса 0x42 без возвращаемого значения [SWS_FrTp_00152]. В качестве параметров она ожидает идентификатор принятого PDU (RxPduId), а также указатель на структуру типа PduInfoType (PduInfoPtr) [SWS_FrTp_00152]. Этот указатель предоставляет длину принятого PDU (SduLength), указатель буфера на полезные данные (SduDataPtr), а также соответствующие метаданные [SWS_FrTp_00152].

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

Что касается обработки ошибок, при активном обнаружении ошибок разработки (DET) функция проверяет оба входных параметра: если RxPduId недействителен, она сообщает об ошибке разработки FRTP_E_INVALID_PDU_SDU_ID [SWS_FrTp_01147]. Если PduInfoPtr недействителен, сообщается об ошибке FRTP_E_PARAM_POINTER [SWS_FrTp_01148]. При передаче неподдерживаемого RxPduId выполнение завершается без дальнейших действий [SWS_FrTp_01075]. Если на момент вызова нет свободного канала приема, поскольку состояние канала не равно Idle (FrTpRxChannelState ≠ Idle), функция также прерывает работу без дальнейшей обработки [SWS_FrTp_01076], и модуль генерирует ошибку времени выполнения FRTP_E_NO_CHANNEL [SWS_FrTp_01186].

Параллелизм и взаимодействие

Относительно параллелизма FrTp_RxIndication реентерабельна для различных ID PDU, но не реентерабельна для идентичных ID PDU [SWS_FrTp_00152]. Вызов должен выполняться синхронно нижележащим интерфейсом для надлежащего запуска приема в модуле FrTp [SWS_FrTp_00152], [SWS_FrTp_00137].

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

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

функция FrTp_TxConfirmation [SWS_FrTp_00153] 📄 PDF

void FrTp_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 · Температура: не регулируется · Промпт: 9cfd8edaa6b0 Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал

Синхронная функция [SWS_FrTp_00153] служит нижележащему коммуникационному уровню для уведомления модуля FrTp об успешной передаче или сбое PDU. При вызове нижележащий уровень передает сконфигурированный идентификатор FrTpTxConfirmationPduId в параметре TxPduId, а также результат отправки result ([SWS_FrTp_01053]). Допустимыми значениями для result являются E_OK при успешной передаче и E_NOT_OK при неудавшейся передаче ([SWS_FrTp_00153]).

Если обнаружение ошибок разработки (DET) активировано, функция выполняет проверку параметров: недопустимый идентификатор TxPduId вызывает ошибку разработки FRTP_E_INVALID_PDU_SDU_ID ([SWS_FrTp_01149]), тогда как недопустимое значение для result приводит к ошибке FRTP_E_INVALID_PARAMETER ([SWS_FrTp_01203]).

Что касается параллелизма, функция является реентерабельной для различных PDU-ID, однако для одной и той же TxPduId параллельный вызов запрещен ([SWS_FrTp_00153]). При каждом вызове с соответствующим FrTpTxConfirmationPduId модуль декрементирует счетчик TxPduPendingCounter ([SWS_FrTp_01092]).

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

  • На стороне отправителя занятый канал переводится в состояние Idle (FrTpTxChannelState = Idle), а флаги TX_SDU_AVAILABLE и TX_SDU_UNKNOWN_MSG_LENGTH сбрасываются, как только все данные N-SDU будут отправлены, result примет значение E_OK и поступит квитанция (если она сконфигурирована), либо сразу же, если result равно E_NOT_OK ([SWS_FrTp_01056], [SWS_FrTp_01057], [SWS_FrTp_01124]).
  • На стороне получателя занятый канал приема (FrTpRxChannelState = Idle) освобождается, когда все данные получены и все требуемые Flow Control PDU подтверждены с E_OK или когда подтверждение происходит с E_NOT_OK ([SWS_FrTp_01081]).

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

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

функция FrTp_MainFunction [SWS_FrTp_00162] 📄 PDF

void FrTp_MainFunction (void);

Schedules the Flex Ray TP. (Entry point for scheduling)

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

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

Функция FrTp_MainFunction имеет сигнатуру void FrTp_MainFunction (void); и специфицирована с Service-ID 0x10 [SWS_FrTp_00162]. Она не принимает входных параметров и не возвращает значения вызывающей стороне [SWS_FrTp_00162]. Объявление доступно через заголовочный файл SchM_FrTp.h [SWS_FrTp_00162]. В качестве интерпретации: функция, таким образом, вероятно, обычно вызывается циклически диспетчером BSW (Schedule Manager). Вопрос Q-aaa6251bd84aef94 (открытый)

Взаимодействие и задачи

Основная задача функции заключается в планировании работы модуля транспортного протокола FlexRay [SWS_FrTp_00162], [SWS_FrTp_00203]. Согласно [SWS_FrTp_00580], FrTp_MainFunction представляет собой обязательную точку входа для предстоящих задач обработки (processing tasks) модуля FrTp, благодаря чему циклически отрабатываются и управляются внутренние протокольные процессы.

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

Для временной интеграции в общую систему спецификация определяет фиксированную минимальную частоту вызовов для планирования:

  • FrTp_MainFunction должна вызываться как минимум один раз за цикл FlexRay [SWS_FrTp_01152].

Специфическая обработка ошибок, сообщения DET или DEM, а также явные предписания по реентерабельности или параллелизму в настоящем объеме спецификации не описаны.

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

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

тип FrTp_ConfigType [SWS_FrTp_01194] 📄 PDF

This is the base type for the configuration of the Flex Ray Transport Protocol A pointer to an instance of this structure will be used in the initialization of the Flex Ray Transport Protocol. The outline of the structure is defined in chapter 10 Configura tion Specification

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

Record
AUTOSAR/AP/record/CP_MOD_FrTp
Status
unspecified
Version
AUTOSAR/AP/record/CP_MOD_FrTp@rel:R20-11#25a09b84
Content hash
25a09b84
Source
https://www.autosar.org/fileadmin/standards/R20-11/CP/AUTOSAR_SWS_FlexRayISOTransportLayer.pdf#nameddest=SWS_FrTp_00215

Карта тем

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

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

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

FrTp_GetVersionInfo функция

Returns the version information.

void FrTp_GetVersionInfo (Std_VersionInfoType* versioninfo);
FrTp_Init функция

This service initializes all global variables of a Flex Ray Transport Layer instance and set it in the idle state. It has no return value because software errors in initialisation data shall be detected during configuration time (e.g. by configuration tool ).

void FrTp_Init (const FrTp_ConfigType* configPtr);

Сервисы

FrTp_CancelReceive функция

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

Std_ReturnType FrTp_CancelReceive (PduIdType RxPduId);
FrTp_CancelTransmit функция

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

Std_ReturnType FrTp_CancelTransmit (PduIdType TxPduId);
FrTp_ChangeParameter функция

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

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

This service closes all pending transport pro tocol connections by simply stopping operation, frees all resources and stops the Fr Tp Module

void FrTp_Shutdown (void);
FrTp_Transmit функция

Requests transmission of a PDU.

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

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

FrTp_RxIndication функция

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

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

Within this API , the upper layer module (called module) shall check whether the available data fits into the buffer size reported by Pdu Info Ptr - >Sdu Length. If it fits, it shall copy its data into the buffer provided by Pdu Info Ptr - >Sdu Data Ptr and update the length of the actual copied data in Pdu Info Ptr - >Sdu Length. If not, it returns E_ NOT_ OK without changing Pdu Info Ptr.

Std_ReturnType FrTp_TriggerTransmit (PduIdType TxPduId, PduInfoType* PduInfoPtr);
FrTp_TxConfirmation функция

The lower layer communication interface module confirms the transmission of a PDU, or the failure to transmit a PDU.

void FrTp_TxConfirmation (PduIdType TxPduId, Std_ReturnType result);

Циклические

FrTp_MainFunction функция

Schedules the Flex Ray TP. (Entry point for scheduling)

void FrTp_MainFunction (void);

Типы

This is the base type for the configuration of the Flex Ray Transport Protocol A pointer to an instance of this structure will be used in the initialization of the Flex Ray Transport Protocol. The outline of the structure is defined in chapter 10 Configura tion Specification