DEENESPTFRRUARHIKOZHNL

LIN Interface (LinIf)

ModulLinIf (LIN Interface)
BSW-Modul-ID62
Standard-Header#include "LinIf.h"
SWS-SpezifikationAUTOSAR_SWS_LINInterface.pdf
ClusterLIN

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

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

Обеспечивает передачу LIN-фреймов между верхними слоями и LIN-драйвером, а также управляет расписаниями (Schedules), переходом в режим сна, пробуждением и LIN-TP.

LIN Interface соединяет верхние коммуникационные модули с LIN-драйвером и трансивером, а также включает в себя транспортный протокол LIN. В роли Master канал обрабатывает таблицы расписания, выбираемые через LinIf_ScheduleRequest [SWS_LinIf_00202]. В роли Slave он, напротив, реагирует только на сообщения заголовков (Header) от драйвера [SWS_LinIf_91004]. Кроме того, он управляет переводом в сон и пробуждением по каждому каналу, передачей диагностических данных, а в режиме Slave — Node Configuration. Доступность служб зависит от сконфигурированного типа узла каналов.

LIN Interface (LinIf) выступает посредником между вышележащими коммуникационными модулями и LIN-драйвером и одновременно содержит транспортный протокол LIN [SWS_LinIf_00351]. В направлении вверх в R20-11 он вызывает конфигурируемые callout-функции <User_TriggerTransmit>, <User_TxConfirmation> и <User_RxIndication> [SWS_LinIf_00528] [SWS_LinIf_00529] [SWS_LinIf_00530]; пользователем является PduR или CDD. Об изменениях режима он сообщает обратно в LinSM через callout-функции <User>_…Confirmation [SWS_LinIf_00521]. В направлении вниз он использует Lin и опционально LinTrcv [SWS_LinIf_00359].

kontext Nutzer PduR / CDD (<User_…>-Callouts) LinIf LinIf (inkl. LinTp) Nutzer->LinIf LinIf_Transmit, LinTp_Transmit LinSM LinSM (<User>-Callouts) LinSM->LinIf LinIf_ScheduleRequest, LinIf_GotoSleep, LinIf_Wakeup BswM BswM Com Com EcuM EcuM EcuM->LinIf LinIf_CheckWakeup Mirror Mirror (Bus Mirroring) Det Det LinIf->Nutzer <User_TriggerTransmit>, <User_TxConfirmation>, <User_RxIndication> LinIf->LinSM <User>_ScheduleRequestConfirmation, <User>_GotoSleepConfirmation, <User>_WakeupConfirmation LinIf->BswM BswM_LinTp_RequestMode (LinTp_Mode) LinIf->Com Com_SendSignal (response_error) LinIf->Mirror Mirror_ReportLinFrame LinIf->Det Det_ReportError, Det_ReportRuntimeError Lin Lin (LIN-Treiber) LinIf->Lin Lin_SendFrame, Lin_GetStatus, Lin_GoToSleepInternal, Lin_Wakeup LinTrcv LinTrcv (optional) LinIf->LinTrcv Сервисы режимов и пробуждения (LinTrcv_SetOpMode и др.) Lin->LinIf LinIf_HeaderIndication, LinIf_RxIndication, LinIf_TxConfirmation, LinIf_LinErrorIndication, LinIf_WakeupConfirmation

Контекстная диаграмма: LinIf между пользователями, LinSM, BswM, EcuM, Mirror, а также Lin и LinTrcv. Источники: [SWS_LinIf_00360] [SWS_LinIf_00469]

Согласно LinIf_Init [SWS_LinIf_00198] каждый канал находится в LINIF_CHANNEL_SLEEP. Фреймы LinIf обрабатывает только в LINIF_CHANNEL_OPERATIONAL SWS LinIf с. 45. Работу выполняет собственная MainFunction для каждого канала [SWS_LinIf_00384].

linif_zustand cluster_init LINIF_INIT (подсостояния для каждого канала) Reset Reset UNINIT LINIF_UNINIT Reset->UNINIT SLEEP LINIF_CHANNEL_SLEEP UNINIT->SLEEP LinIf_Init (без команды перехода в режим сна) OP LINIF_CHANNEL_OPERATIONAL SLEEP->OP LinIf_Wakeup OP->SLEEP LinIf_GotoSleep (Slave: после команды перехода в режим сна или таймаута бездействия шины)

Диаграмма состояний: инициализация приводит в состояние сна; LinIf_Wakeup и LinIf_GotoSleep переключают между состояниями канала. Источники: SWS LinIf с. 45

Master и Slave работают принципиально по-разному. Master-канал отрабатывает таблицы расписания (schedule tables), выбираемые через LinIf_ScheduleRequest с индексом 1..255; 0 обозначает NULL_SCHEDULE [SWS_LinIf_00197] [SWS_LinIf_00202]. При этом LinIf_Transmit лишь помечает спорадические фреймы (Sporadic Frames); данные LinIf забирает только при наступлении соответствующего слота [SWS_LinIf_00706]. Slave, напротив, реагирует только на LinIf_HeaderIndication. На основе PID он принимает решение о передаче, приёме или игнорировании [SWS_LinIf_00738] [SWS_LinIf_00733] [SWS_LinIf_00748] и самостоятельно управляет сигналом response_error [SWS_LinIf_00763].

Slave переходит в спящий режим после команды Go-to-sleep или по таймауту Bus Idle [SWS_LinIf_00750] [SWS_LinIf_00755]. Пробуждение он подтверждает только с первым принятым заголовком [SWS_LinIf_00761]. Для диагностики LinTp в Master переключает расписания через BswM_LinTp_RequestMode [SWS_LinIf_00629]. В Slave LinIf обслуживает Node Configuration согласно ISO 17987-3 [SWS_LinIf_00771]. Об ошибках LinIf сообщает в DET, например LINIF_E_RESPONSE [SWS_LinIf_00729]. При таймаутах он прерывает TP-передачи с помощью E_NOT_OK [SWS_LinIf_00801] [SWS_LinIf_00806].

Роль LIN Interface между пользователями, драйвером и трансивером

LIN Interface (LinIf) выступает посредником между вышележащими коммуникационными модулями и LIN-драйвером. Он также содержит транспортный протокол LIN: его сервисы, такие как LinTp_Init и LinTp_Transmit, также доступны через LinIf.h [SWS_LinIf_00350] [SWS_LinIf_00351]. В направлении вниз LinIf использует сервисы драйвера, такие как Lin_GoToSleepInternal, Lin_Wakeup и Lin_WakeupInternal [SWS_LinIf_00359]. Опционально добавляется LIN Transceiver Driver, чьи сервисы управления режимом и пробуждения LinIf отображает в единый интерфейс для всех трансиверов SWS LinIf с. 24. Для этого LinIf_SetTrcvMode, LinIf_GetTrcvMode, LinIf_GetTrcvWakeupReason и LinIf_SetTrcvWakeupMode передают вызовы дальше драйверу трансивера [SWS_LinIf_00544] [SWS_LinIf_00545] [SWS_LinIf_00547] [SWS_LinIf_00550].

В направлении вверх LinIf вызывает своих пользователей через конфигурируемые callout-функции: <User_TriggerTransmit>, <User_TxConfirmation> и <User_RxIndication> [SWS_LinIf_00528] [SWS_LinIf_00529] [SWS_LinIf_00530]. Пользователем является либо PduR (в этом случае необходимо указать PduR_LinIfTriggerTransmit [SWS_LinIf_00722]), либо CDD, заголовочный файл callback-функций которого подключает LinIf [SWS_LinIf_00669]. Об изменениях режима LinIf сообщает обратно через <User>_ScheduleRequestConfirmation, <User>_GotoSleepConfirmation и <User>_WakeupConfirmation [SWS_LinIf_00520] [SWS_LinIf_00521] [SWS_LinIf_00522]. Получателем этих сообщений является LinSM SWS LinSM с. 24. Кроме того, LinIf требуются сервисы BswM_LinTp_RequestMode, Com_SendSignal и Det_ReportError [SWS_LinIf_00360]. Начиная с R24-11 LSduR заменяет PduR или CDD в качестве вышележащего пользователя SWS LinIf с. 1. Для R20-11 действуют callout-функции <User_…>.

Каждый канал является либо Master, либо Slave. Сервисы Slave, такие как LinIf_HeaderIndication или LinIf_GetConfiguredNAD, существуют только в том случае, если сконфигурирован хотя бы один Slave-канал [SWS_LinIf_00863] [SWS_LinIf_00861]. LinIf_ScheduleRequest существует только при наличии хотя бы одного Master-канала [SWS_LinIf_00858]. Циклическая обработка выполняется в LinIf_MainFunction_<LinIfChannel.ShortName> [SWS_LinIf_00384]. Эта функция существует в одном экземпляре на каждый канал SWS LinIf с. 119 и вызывается с периодом LinIfMainFunctionPeriod. В Master она опрашивает Schedule Table Manager, в Slave отслеживает временные условия SWS LinIf с. 45. Bus Mirroring активируется для каждого канала с помощью LinIf_EnableBusMirroring; после этого LinIf сообщает о принятых и отправленных фреймах модулю Mirror [SWS_LinIf_00876] [SWS_LinIf_00838] [SWS_LinIf_00873].

kontext Nutzer PduR / CDD (<User_…>-Callouts) LinIf LinIf (inkl. LinTp) Nutzer->LinIf LinIf_Transmit, LinTp_Transmit LinSM LinSM (<User>-Callouts) LinSM->LinIf LinIf_ScheduleRequest, LinIf_GotoSleep, LinIf_Wakeup BswM BswM Com Com EcuM EcuM EcuM->LinIf LinIf_CheckWakeup Mirror Mirror (Bus Mirroring) Det Det LinIf->Nutzer <User_TriggerTransmit>, <User_TxConfirmation>, <User_RxIndication> LinIf->LinSM <User>_ScheduleRequestConfirmation, <User>_GotoSleepConfirmation, <User>_WakeupConfirmation LinIf->BswM BswM_LinTp_RequestMode (LinTp_Mode) LinIf->Com Com_SendSignal (response_error) LinIf->Mirror Mirror_ReportLinFrame LinIf->Det Det_ReportError, Det_ReportRuntimeError Lin Lin (LIN-Treiber) LinIf->Lin Lin_SendFrame, Lin_GetStatus, Lin_GoToSleepInternal, Lin_Wakeup LinTrcv LinTrcv (optional) LinIf->LinTrcv Сервисы режимов и пробуждения (LinTrcv_SetOpMode и др.) Lin->LinIf LinIf_HeaderIndication, LinIf_RxIndication, LinIf_TxConfirmation, LinIf_LinErrorIndication, LinIf_WakeupConfirmation

Контекстная диаграмма: LinIf (с LinTp) расположен между пользователями, управлением режимами и сервисами диагностики/Mirror вверху, а также Lin и LinTrcv внизу. Источники: [SWS_LinIf_00359] [SWS_LinIf_00360] [SWS_LinIf_00469] [SWS_LinIf_00872] SWS LinIf (Abb.) с. 17

Инициализация и конечные автоматы канала и LinTp

LinIf_Init получает указатель на LinIf_ConfigType [SWS_LinIf_00198] [SWS_LinIf_00668] и переводит модуль из LINIF_UNINIT в LINIF_INIT SWS LinIf с. 47. У каждого канала есть собственный подуровневый конечный автомат. После инициализации он находится в LINIF_CHANNEL_SLEEP без отправки команды Go-to-sleep. Заголовки и ответы LinIf обрабатывает только в LINIF_CHANNEL_OPERATIONAL SWS LinIf с. 45. Master-каналы запускаются с NULL_SCHEDULE SWS LinIf с. 90. Slave-каналы перенимают начальный и сконфигурированный NAD, а также PID из конфигурации [SWS_LinIf_00767] [SWS_LinIf_00768] и предоставляют LIN Product Identification [SWS_LinIf_00769].

linif_zustand cluster_init LINIF_INIT (подсостояния для каждого канала) Reset Reset UNINIT LINIF_UNINIT Reset->UNINIT SLEEP LINIF_CHANNEL_SLEEP UNINIT->SLEEP LinIf_Init (без команды перехода в режим сна) OP LINIF_CHANNEL_OPERATIONAL SLEEP->OP LinIf_Wakeup OP->SLEEP LinIf_GotoSleep (Slave: после команды перехода в режим сна или таймаута бездействия шины)

Диаграмма состояний: жизненный цикл LinIf и подсостояния канала; инициализация приводит в состояние сна, пробуждение и переход в сон переключают между состояниями канала. Источники: SWS LinIf с. 45 [SWS_LinIf_00204] [SWS_LinIf_00205] [SWS_LinIf_00755]

Транспортный протокол имеет собственный конечный автомат для каждого канала. LinTp_Init [SWS_LinIf_00350] устанавливает LINTP_INIT с подсостоянием LINTP_CHANNEL_IDLE [SWS_LinIf_00710] SWS LinIf с. 99. В LINTP_CHANNEL_BUSY канал переходит, как только FF или SF распознаётся как TP-сообщение [SWS_LinIf_00322] [SWS_LinIf_00323] или вызывается LinTp_Transmit SWS LinIf с. 108. LinTp_Shutdown [SWS_LinIf_00355] закрывает все открытые соединения и переводит все каналы в LINTP_UNINIT SWS LinIf с. 102. Включён ли LinTp вообще, определяется параметром LinIfTpSupported во время компиляции SWS LinIf с. 61.

lintp_zustand cluster_init LINTP_INIT (je Kanal) Reset Reset UNINIT LINTP_UNINIT Reset->UNINIT IDLE LINTP_CHANNEL_IDLE UNINIT->IDLE LinTp_Init IDLE->UNINIT LinTp_Shutdown BUSY LINTP_CHANNEL_BUSY IDLE->BUSY Сообщение TP начинается (обнаружен LinTp_Transmit или FF/SF) BUSY->UNINIT LinTp_Shutdown (закрыть соединения) BUSY->IDLE TP-Nachricht beendet

Диаграмма состояний: LinTp-канал между IDLE и BUSY внутри LINTP_INIT. Источники: SWS LinIf (Abb.) с. 43 [SWS_LinIf_00322] [SWS_LinIf_00710] [SWS_LinIf_00355]

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

В Master таблица расписания формирует основу всей коммуникации. Каждый канал имеет пустой NULL_SCHEDULE, а интервалы между фреймами кратны LinIfMainFunctionPeriod SWS LinIf с. 44. LinIf_SchHandleType кодирует NULL_SCHEDULE как 0x00, а остальные таблицы — как индекс 1..255. Индекс уникален для каждого канала, но не для каждого блока управления [SWS_LinIf_00197]. LinIf_ScheduleRequest работает асинхронно [SWS_LinIf_00202]; о завершённом переключении сообщает <User>_ScheduleRequestConfirmation [SWS_LinIf_00520]. В конфигурации каждой таблице присваивается LinIfRunMode, а именно RUN_CONTINUOUS или RUN_ONCE ECUC-Parameter с. 265. Параметр Schedule был переименован только в R22-11 SWS LinIf с. 1.

LinIf_Transmit [SWS_LinIf_00201] не инициирует немедленную отправку. Он лишь помечает спорадические фреймы (Master) или событийно-управляемые фреймы (Slave) как ожидающие отправки SWS LinIf с. 79. Для других фреймов он тем не менее возвращает E_OK [SWS_LinIf_00700], тогда как во время NULL_SCHEDULE — E_NOT_OK [SWS_LinIf_00719]. Когда наступает слот отправки, LinIf забирает данные через <User_TriggerTransmit> и передаёт их драйверу с помощью Lin_SendFrame SWS LinIf с. 37. Если пользователь возвращает E_NOT_OK, фрейм опускается [SWS_LinIf_00706]. Результат LinIf проверяет с помощью Lin_GetStatus, не ранее чем через максимальную длину фрейма и не позднее следующей записи таблицы SWS LinIf с. 35. LIN_TX_ERROR и LIN_TX_BUSY приводят к <User_TxConfirmation> с E_NOT_OK [SWS_LinIf_00728], а LIN_TX_OK приводит к E_OK SWS LinIf с. 40.

Передача фрейма в Master-каналеNutzer (PduR/CDD)LinIfLinBSW-TaskUse Case: Регистрация (только спорадический фрейм)LinIf_Transmit(TxPduId, PduInfoPtr)CheckId()SetFlag()E_OK (E_NOT_OK при NULL_SCHEDULE)Use Case: Слот передачи наступилLinIf_MainFunction_<LinIfChannel.ShortName>()<User_TriggerTransmit>(TxPduId, PduInfoPtr)E_OK / E_NOT_OKaltE_OKLin_SendFrame(...)E_NOT_OKФрейм не передаетсяUse Case: Проверка статуса по истечении максимальной длины фреймаLinIf_MainFunction_<LinIfChannel.ShortName>()Lin_GetStatus(...)LIN_TX_OK / LIN_TX_BUSY / LIN_TX_ERROR<User_TxConfirmation>(TxPduId, result)E_OK при LIN_TX_OK, иначе E_NOT_OK

Диаграмма последовательности: регистрация, управляемый слотами забор данных и анализ статуса при передаче Master. Источники: [SWS_LinIf_00201] [SWS_LinIf_00706] [SWS_LinIf_00728] SWS LinIf с. 125 SWS PduR с. 107

Slave-канал: реакция на заголовки Master

Slave не использует расписание. Он реагирует исключительно на LinIf_HeaderIndication [SWS_LinIf_91004] SWS LinIf с. 39. Сначала LinIf анализирует PID:

  • Фрейм передачи: <User_TriggerTransmit> выполняет запись напрямую в буфер драйвера [SWS_LinIf_00738]. После этого LinIf устанавливает Cs и Dl и сообщает LIN_FRAMERESPONSE_TX [SWS_LinIf_00739]. Если пользователь возвращает E_NOT_OK, LinIf сообщает LIN_FRAMERESPONSE_IGNORE [SWS_LinIf_00740].
  • Фрейм приёма: LinIf сообщает LIN_FRAMERESPONSE_RX [SWS_LinIf_00733].
  • Нерелевантный фрейм: LinIf сообщает LIN_FRAMERESPONSE_IGNORE [SWS_LinIf_00748].

После успешного приёма драйвер вызывает LinIf_RxIndication, и LinIf передаёт данные дальше в <User_RxIndication> [SWS_LinIf_91005] [SWS_LinIf_00734]. После успешной передачи драйвер вызывает LinIf_TxConfirmation, и LinIf подтверждает это с помощью E_OK [SWS_LinIf_91006] [SWS_LinIf_00741]. В случае Event-triggered Frames PID соответствующего Unconditional Frame содержится в первом байте данных [SWS_LinIf_00731]. Флаг ожидания (pending flag) сбрасывается после успешной передачи [SWS_LinIf_00732].

Сигналом response_error LinIf управляет самостоятельно для каждого Slave-канала [SWS_LinIf_00763] и обновляет его через Com_SendSignal [SWS_LinIf_00764]. После успешной передачи он сбрасывается [SWS_LinIf_00747]. О каждом изменении опционально может сообщаться через <User_ResponseErrorSignalChanged> [SWS_LinIf_00765] [SWS_LinIf_00766]. NAD и список PID можно считывать и записывать во время выполнения [SWS_LinIf_00829] [SWS_LinIf_00833] [SWS_LinIf_91002] [SWS_LinIf_91003]. Исключением остаются PID для MRF и SRF [SWS_LinIf_00809] [SWS_LinIf_00824]. Типичным источником этих значений является энергонезависимая память SWS LinIf с. 57.

Управляемая заголовками обработка фреймов в Slave-каналеLinController/UARTLinLinIfNutzer (PduR/CDD)Interrupt (Header empfangen)LinIf_HeaderIndication(Channel, PduPtr)EvaluatePID()altSende-Frame<User_TriggerTransmit>(TxPduId, PduInfoPtr)SduDataPtr = PduPtr->SduPtrE_OKCs, Dl setzenDrc = LIN_FRAMERESPONSE_TXEmpfangs-FrameCs, Dl setzenDrc = LIN_FRAMERESPONSE_RXне имеет значения или TriggerTransmit = E_NOT_OKDrc = LIN_FRAMERESPONSE_IGNOREE_OKInterrupt (Response abgeschlossen)altResponse gesendetLinIf_TxConfirmation(Channel)<User_TxConfirmation>(TxPduId, E_OK)Response empfangenLinIf_RxIndication(Channel, Lin_SduPtr)<User_RxIndication>(RxPduId, PduInfoPtr)Fehler erkanntLinIf_LinErrorIndication(Channel, ErrorStatus)

Диаграмма последовательности: анализ заголовка в Slave с ветвлением по направлению фрейма, а также последующим подтверждением, уведомлением о приёме или сообщением об ошибке. Источники: [SWS_LinIf_91004] [SWS_LinIf_00738] [SWS_LinIf_00733] [SWS_LinIf_00748] SWS LinIf с. 121 SWS LinIf (Abb.) с. 133

Переход в спящий режим и пробуждение LIN-канала

Master отправляет команду Go-to-sleep по запросу. Slave засыпает при приёме этой команды или при неактивности шины SWS LinIf с. 48. В качестве команды Go-to-sleep в Slave рассматривается MRF с NAD 0 [SWS_LinIf_00750]. Контроль Bus Idle выполняется в состоянии LINIF_CHANNEL_OPERATIONAL [SWS_LinIf_00751] [SWS_LinIf_00752] [SWS_LinIf_00753]. Каждый callback драйвера перезапускает таймер [SWS_LinIf_00754]. В обоих случаях LinIf вызывает <User>_GotoSleepIndication [SWS_LinIf_00756]. Если пользователь затем вызывает LinIf_GotoSleep [SWS_LinIf_00204], сразу же следует Lin_GoToSleepInternal [SWS_LinIf_00757]. После этого LinIf сбрасывает флаг пробуждения [SWS_LinIf_00758] и подтверждает с помощью TRUE [SWS_LinIf_00759]. В Master функция MainFunction согласно схеме отправляет команду через Lin_GoToSleep и подтверждает после проверки статуса SWS LinIf (Abb.) с. 93 [SWS_LinIf_00521].

Переход в состояние сна (Slave-канал)LinLinIfLinTrcvLinIf User (LinSM)altGo-to-sleep-Kommando empfangenLinIf_RxIndication(Channel, Lin_SduPtr)MRF с NAD = 0Bus-Idle-TimeoutBus-Idle-Timer abgelaufen<User>_GotoSleepIndication()LinIf_GotoSleep(Channel)Lin_GoToSleepInternal(Channel)немедленно, не дожидаясь MainFunctionСбросить флаг пробуждения канала<User>_GotoSleepConfirmation(channel, TRUE)E_OKoptДрайвер трансивера поддерживаетLinIf_SetTrcvMode(LINTRCV_TRCV_MODE_SLEEP)LinTrcv_SetOpMode(LINTRCV_TRCV_MODE_SLEEP)

Диаграмма последовательности: переход Slave-канала в спящий режим после команды Go-to-sleep или по таймауту Bus Idle. Источники: [SWS_LinIf_00750] [SWS_LinIf_00755] [SWS_LinIf_00756] [SWS_LinIf_00757] [SWS_LinIf_00759] SWS LinIf с. 137

Пробуждение инициируется либо пользователем через LinIf_Wakeup, либо при обнаружении пробуждения на шине. Пробуждение на шине LinIf проверяет через LinIf_CheckWakeup SWS LinIf с. 51. Для этого LinIf_CheckWakeup [SWS_LinIf_00378] вызывает Lin_CheckWakeup или LinTrcv_CheckWakeup SWS LinIf с. 112. Драйверы сообщают об обнаруженном пробуждении через LinIf_WakeupConfirmation [SWS_LinIf_00715], после чего LinIf устанавливает флаг пробуждения канала SWS LinIf с. 98. Поведение LinIf_Wakeup [SWS_LinIf_00205] различается в зависимости от состояния. На бодрствующем канале он имитирует успех. На спящем канале без флага пробуждения он вызывает Lin_Wakeup SWS LinIf с. 89. Если флаг пробуждения установлен, Lin_WakeupInternal, предположительно, активирует канал без импульса пробуждения [SWS_LinIf_00359]. Вопрос Q-2efc22e03c8e284e (открытый)

Подтверждение в Master поступает из MainFunction SWS LinIf (Abb.) с. 87. В Slave оно поступает с первым принятым заголовком [SWS_LinIf_00761]. Перед возвратом E_NOT_OK LinIf сообщает FALSE [SWS_LinIf_00762]. Если Master не отправляет заголовки, подтверждение отсутствует, и LinSM завершается по таймауту SWS LinIf с. 52. Если во время засыпания поступает запрос на пробуждение, Master остаётся в рабочем состоянии SWS LinIf с. 56. Slave в этом случае перезапускает пробуждение SWS LinIf с. 53.

Проверка пробуждения и запрос на пробуждениеEcuMLinIf User (LinSM)LinIfLin / LinTrcvBSW-TaskUse Case: Bus-Wakeup (falls aufgetreten)LinIf_CheckWakeup(WakeupSource)Lin_CheckWakeup / LinTrcv_CheckWakeupLinIf_WakeupConfirmation(WakeupSource)Установить флаг пробуждения каналаUse Case: WeckanforderungLinIf_Wakeup(Channel)altКанал спит, флаг пробуждения не установленLin_Wakeup(Channel)Канал спит, флаг пробуждения установлен (предположение)Lin_WakeupInternal(Channel)Канал бодрствуетkein Treiberaufruf, Erfolg simulierenE_OKVor E_NOT_OK ruft LinIf<User>_WakeupConfirmation(channel, FALSE)altMasterLinIf_MainFunction_<LinIfChannel.ShortName>()<User>_WakeupConfirmation(channel, TRUE)SlaveLinIf_HeaderIndication(Channel, PduPtr)первый заголовок после LinIf_Wakeup<User>_WakeupConfirmation(channel, TRUE)

Диаграмма последовательности: проверка пробуждения через EcuM, запрос пробуждения пользователем и зависимое от узла подтверждение. Источники: [SWS_LinIf_00378] [SWS_LinIf_00715] [SWS_LinIf_00205] [SWS_LinIf_00761] [SWS_LinIf_00762] SWS EcuM с. 182

Диагностика: LIN TP и Node Configuration

В Master LinTp управляет таблицами расписания через BswM_LinTp_RequestMode с LinTp_Mode [SWS_LinIf_00629], если LinTpScheduleChangeDiag активно. При LinTp_Transmit [SWS_LinIf_00351] LinTp запрашивает расписание диагностического запроса. За физическим запросом следует расписание диагностического ответа, а за ответом — прикладное расписание SWS LinIf с. 62. После функционального запроса канал возвращается к предыдущему расписанию [SWS_LinIf_00707]. PduR_LinTpTxConfirmation следует только после завершения смены расписания [SWS_LinIf_00702]. Новый физический запрос прерывает текущую обработку TP [SWS_LinIf_00708]. LinTp_ChangeParameter [SWS_LinIf_00501] является лишь плейсхолдером и отклоняет любое изменение SWS LinIf с. 103.

Передача LIN-TP в Master с переключением расписанияPduRLinIf (LinTp)BswMLinSMBSW-TaskLinTp_Transmit(TxPduId, PduInfoPtr)optLinTpScheduleChangeDiag = TRUEBswM_LinTp_RequestMode(Network, LINTP_DIAG_REQUEST)LinSM_ScheduleRequest(...)LinIf_ScheduleRequest(Channel, Schedule)E_OK (E_NOT_OK, если смена расписания была отклонена)loopje MRF (SF, FF, CF)LinIf_MainFunction_<LinIfChannel.ShortName>()PduR_LinTpCopyTxData(...)Отправить MRF (как обычную передачу фрейма)optphysischer Request, Schedule-Wechsel aktiviertBswM_LinTp_RequestMode(Network, LINTP_DIAG_RESPONSE)PduR_LinTpTxConfirmation(id, result)после завершения смены расписания

Диаграмма последовательности: передача TP в Master с переключением расписания через BswM и LinSM. Источники: [SWS_LinIf_00351] [SWS_LinIf_00702] [SWS_LinIf_00878] SWS LinIf (Abb.) с. 90 SWS LinIf с. 139

Для приёма LinIf должен быть готов в любой момент времени. FF или SF запускает приём через PduR_LinTpStartOfReception. При этом LinIf сопоставляет NAD с N-SDU-Id и копирует каждый фрейм с помощью PduR_LinTpCopyRxData SWS LinIf с. 67. В Slave транспортный уровень и Node Configuration делят между собой фреймы MRF и SRF SWS LinIf с. 54. Поэтому LinIf анализирует NAD, PCI и SID каждого MRF [SWS_LinIf_00771] и распределяет его соответствующим образом [SWS_LinIf_00772] [SWS_LinIf_00773] [SWS_LinIf_00774]. Заголовок SRF обрабатывается обработчиком Node Configuration, если ожидается ответ; в противном случае он направляется на транспортный уровень [SWS_LinIf_00775] [SWS_LinIf_00776]. Поддерживаются следующие сервисы:

Положительные ответы отправляются при следующем заголовке SRF [SWS_LinIf_00780].

nodecfg mrf MRF empfangen (LinIf_RxIndication) eval Оценить NAD, PCI и SID mrf->eval pci PCI действителен? eval->pci ign1 Frame ignorieren pci->ign1 нет func Функциональный NAD 0x7E с запросом Node Configuration? pci->func да ign2 Anfrage ignorieren func->ign2 да own адресован собственному узлу? func->own нет fremd Проинформировать обработчик Node Configuration и транспортный уровень; отменить ожидающий ответ own->fremd нет nc Действительный запрос Node Configuration? own->nc да srf Следующий заголовок SRF: ожидается ответ? fremd->srf acc Anfrage annehmen, N_As-Timer starten, Transportschicht informieren nc->acc да tp MRF an Transportschicht weiterleiten nc->tp нет acc->srf tp->srf resp Antwort durch Node-Configuration-Handler senden srf->resp да tpsrf SRF-Header an Transportschicht srf->tpsrf нет

Диаграмма деятельности: распределение принятых MRF и заголовков SRF в Slave между обработчиком Node Configuration и транспортным уровнем. Интерпретация: порядок проверок выбран для наглядности представления. Источники: [SWS_LinIf_00771] [SWS_LinIf_00772] [SWS_LinIf_00774] [SWS_LinIf_00788] [SWS_LinIf_00790] [SWS_LinIf_00776] SWS LinIf с. 59

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

Об ошибках разработки LinIf сообщает в DET, в том числе с помощью LINIF_E_UNINIT, LINIF_E_NONEXISTENT_CHANNEL, LINIF_E_PARAMETER, LINIF_E_PARAM_POINTER и LINIF_E_SCHEDULE_REQUEST_ERROR [SWS_LinIf_00376]. Callback-функции проверяют канал и указатели [SWS_LinIf_00843] [SWS_LinIf_00844]. Неожиданные вызовы LinIf_RxIndication или LinIf_TxConfirmation без предварительного заголовка LinIf игнорирует [SWS_LinIf_00848] [SWS_LinIf_00852].

В качестве ошибок времени выполнения LinIf определяет LINIF_E_RESPONSE и LINIF_E_NC_NO_RESPONSE [SWS_LinIf_00729]. Если драйвер в Slave вызывает LinIf_LinErrorIndication, фрейм считается потерянным. LinIf затем сообщает LINIF_E_RESPONSE, за исключением случаев LIN_ERR_HEADER [SWS_LinIf_00735] [SWS_LinIf_00743]. Дополнительно он подтверждает попытку отправки с помощью E_NOT_OK [SWS_LinIf_00742] и устанавливает сигнал response_error при ошибках ответа [SWS_LinIf_00736] [SWS_LinIf_00744]. Новый заголовок в момент, когда всё ещё ожидается ответ, делает старый фрейм недействительным [SWS_LinIf_00846]. При активном Mirroring LinIf сообщает о таких ошибках с преобразованным кодом статуса [SWS_LinIf_00869] [SWS_LinIf_00870].

LinTp отслеживает три временных предела и при их превышении прерывает операцию с E_NOT_OK в адрес PduR:

При проблемах с буфером LinTp также прерывает операцию [SWS_LinIf_00676] [SWS_LinIf_00677]. В Master это происходит только после возврата к прикладному расписанию [SWS_LinIf_00792] [SWS_LinIf_00879]. Если буфера лишь незначительно не хватает, Master задерживает заголовки SRF [SWS_LinIf_00679] SWS LinIf с. 65. В качестве альтернативы LinIf повторяет попытку копирования с длиной 0 до тех пор, пока не освободится место или не поступит следующий CF [SWS_LinIf_00793] [SWS_LinIf_00795]. Прерывание с E_NOT_OK выполняется также при неверном NAD [SWS_LinIf_00655], неверном номере последовательности [SWS_LinIf_00081], при приёме FF или SF после CF [SWS_LinIf_00653] и при ошибке в ответе SRF [SWS_LinIf_00796]. При таймауте P2 LinIf запрашивает прикладное расписание [SWS_LinIf_00877]. Если LinIf_ScheduleRequest отклоняет переключение, LinTp_Transmit возвращает E_NOT_OK [SWS_LinIf_00878].

В Node Configuration LinIf отменяет ожидающий ответ, если истекает N_As [SWS_LinIf_00785] [SWS_LinIf_00786], если поступает неизвестный NAD [SWS_LinIf_00787] или если приходит новый валидный запрос [SWS_LinIf_00789]. Нарушенный MRF, напротив, оставляет ожидающий ответ в силе [SWS_LinIf_00791]. Расширенные производственные ошибки (Extended Production Errors) для таймаутов LinTp и отклонённых переключений расписания появились только в R23-11; для R20-11 они не применяются SWS LinIf с. 1 SWS LinIf с. 74.

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

Сформированное ИИ руководство на основе содержащихся в полезной нагрузке выдержек из спецификаций для R20-11. Обязательную силу имеют связанные требования. Фрагменты документов из более поздних релизов привлечены лишь в качестве дополнения, а расхождения указаны явно.

LIN Interface (LinIf)

Abstracts LIN hardware and manages schedule tables and frame transmission.

Funktionen — Übersicht

Typen — Übersicht

Funktionen & Typen — Detailansicht

функция LinIf_Init [SWS_LinIf_00198] 📄 PDF

void LinIf_Init (const LinIf_ConfigType* ConfigPtr);

Initializes the LIN Interface.

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

Синхронная функция LinIf_Init служит для инициализации интерфейса LIN согласно [SWS_LinIf_00198]. Интерфейс имеет Service-ID 0x01, доступен через заголовочный файл LinIf.h и выполняется синхронно.

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

В качестве единственного параметра функция ожидает ConfigPtr (const LinIf_ConfigType*), который служит указателем на конфигурацию интерфейса LIN [SWS_LinIf_00198]. Она не имеет возвращаемого значения и не содержит входных/выходных или исключительно выходных параметров.

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

В рамках инициализации интерфейс LIN выполняет специфические настройки для ведомых узлов:

  • Согласно [SWS_LinIf_00767] модуль в LinIf_Init инициализирует начальный адрес узла (initial NAD) и сконфигурированный адрес узла (configured NAD) ведомого узла на основе параметров конфигурации LinIfInitialNAD и LinIfConfiguredNAD.
  • Согласно [SWS_LinIf_00768] модуль в LinIf_Init инициализирует сконфигурированные PID ведомого узла из данных конфигурации с помощью параметров конфигурации LinIfFrameId.

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

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

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

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

функция LinIf_Transmit [SWS_LinIf_00201] 📄 PDF

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

Re quests transmission of a PDU.

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

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

Объявленная в LinIf.h функция LinIf_Transmit (Service-ID 0x49) служит для синхронного запроса на передачу PDU [SWS_LinIf_00201]. В качестве входных параметров она ожидает TxPduId для однозначной идентификации отправляемой PDU, а также указатель PduInfoPtr на структуру PduInfoType, которая, помимо длины данных и фактических полезных данных, может также ссылаться на метаданные [SWS_LinIf_00201]. Дополнительные входные/выходные или выходные параметры отсутствуют [SWS_LinIf_00201].

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

В качестве возвращаемого значения служба передает статус Std_ReturnType [SWS_LinIf_00201]:

  • E_OK: запрос на передачу был успешно принят LIN-интерфейсом [SWS_LinIf_00201].
  • E_NOT_OK: запрос на передачу не удалось принять [SWS_LinIf_00201].

Взаимодействие с типами фреймов уточняется в [SWS_LinIf_00700]: при инициализированном LIN-интерфейсе LinIf_Transmit возвращает E_OK даже в том случае, если PDU относится к неспорадическому фрейму на узле LIN Master или к неуправляемому событиями фрейму на узле LIN Slave.

Параллелизм

В отношении среды выполнения LinIf_Transmit является реентерабельной для различных PDU-ID, однако не должна вызываться одновременно или параллельно для одного и того же TxPduId [SWS_LinIf_00201].

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

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

функция LinIf_ScheduleRequest [SWS_LinIf_00202] 📄 PDF

Std_ReturnType LinIf_ScheduleRequest (NetworkHandleType Channel, LinIf_SchHandleType Schedule);

Requests a schedule table to be executed. Only used for LIN master nodes.

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

Функция LinIf_ScheduleRequest служит исключительно на ведущих узлах LIN для запроса выполнения заданной таблицы расписания [SWS_LinIf_00202]. Вызов обрабатывается асинхронно и спроектирован как рентабельный (reentrant) [SWS_LinIf_00202].

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

Через параметр Channel передается индекс соответствующего канала LIN, тогда как Schedule определяет идентификатор вновь выполняемой таблицы расписания [SWS_LinIf_00202]. Функция возвращает статус в виде Std_ReturnType:

  • E_OK: запрос на смену таблицы расписания успешно принят [SWS_LinIf_00202].
  • E_NOT_OK: переключение отклонено [SWS_LinIf_00202].

Условия ошибок и ограничения

Возвращаемое значение E_NOT_OK возникает согласно спецификации в следующих случаях ошибок [SWS_LinIf_00202]:

  • Интерфейс LIN еще не инициализирован.
  • Указанный канал не существует или переданный индекс находится вне диапазона значений.
  • Указанная таблица расписания не существует или ее идентификатор недействителен.
  • Текущее состояние — Sleep.

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

Неудача запроса расписания влияет на вышестоящие процессы транспортировки: если в рамках вызова LinTp_Transmit через BswM_LinTp_RequestMode инициируется смена расписания через LinIf_ScheduleRequest, то LinTp_Transmit обязательно должен возвращать E_NOT_OK, если LinIf_ScheduleRequest отвечает E_NOT_OK [SWS_LinIf_00878].

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

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

функция LinIf_GotoSleep [SWS_LinIf_00204] 📄 PDF

Std_ReturnType LinIf_GotoSleep (NetworkHandleType Channel);

Initiates a transition into the Sleep Mode on the selected channel.

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

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

Функция LinIf_GotoSleep (Service-ID 0x06, объявленная в LinIf.h) инициирует переход в режим Sleep на указанном LIN-канале [SWS_LinIf_00204]. Вызов выполняется асинхронно и принимает в качестве входного параметра Channel типа NetworkHandleType идентификатор соответствующего канала [SWS_LinIf_00204].

Возвращаемые значения и обработка ошибок

В качестве возвращаемого значения служба возвращает тип Std_ReturnType со следующими значениями [SWS_LinIf_00204]:

  • E_OK: запрос на переход в режим Sleep успешно принят, переход состояния в режим Sleep уже выполняется или контроллер уже находится в состоянии Sleep [SWS_LinIf_00204].
  • E_NOT_OK: запрос не был принят. Возможными причинами этого являются еще не инициализированный LIN-интерфейс либо несуществующий или выходящий за пределы допустимого диапазона значений идентификатор канала [SWS_LinIf_00204].

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

Интерфейс определен как нереентерабельный (Non Reentrant) [SWS_LinIf_00204]. При вызове LinIf_GotoSleep LIN-интерфейс должен немедленно вызвать функцию Lin_GotoSleepInternal и не имеет права ждать до следующего цикла главной функции [SWS_LinIf_00757].

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

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

функция LinIf_Wakeup [SWS_LinIf_00205] 📄 PDF

Std_ReturnType LinIf_Wakeup (NetworkHandleType Channel);

Initiates the wake up process.

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

Реентерабельная функция LinIf_Wakeup инициирует асинхронный процесс пробуждения для LIN-канала, идентифицированного параметром Channel [SWS_LinIf_00205]. Она доступна через заголовочный файл LinIf.h [SWS_LinIf_00205].

Возвращаемое значение Std_ReturnType дает информацию о принятии запроса [SWS_LinIf_00205]:

  • E_OK сигнализирует о том, что запрос на пробуждение был принят или контроллер уже больше не находится в состоянии сна [SWS_LinIf_00205].
  • E_NOT_OK возвращается, если интерфейс LIN не инициализирован, переданный ID канала находится вне допустимого диапазона или вызовы нижележащего драйвера Lin_Wakeup либо Lin_WakeupInternal завершаются неудачно с E_NOT_OK [SWS_LinIf_00205].

Взаимодействие с пользователем происходит через функцию обратного вызова <User>_WakeupConfirmation:

  • В случае ошибки интерфейс LIN перед возвратом E_NOT_OK обязательно вызывает <User>_WakeupConfirmation(FALSE) [SWS_LinIf_00762].
  • При успешном приеме (E_OK) интерфейс LIN подтверждает пробуждение асинхронно: только тогда, когда впоследствии впервые вызывается функция LinIf_HeaderIndication, модуль отправляет вызов <User>_WakeupConfirmation(TRUE) [SWS_LinIf_00761].

Этот текст был сгенерирован автоматически. Он основан на требованиях спецификации AUTOSAR.

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

функция LinIf_SetTrcvMode [SWS_LinIf_00544] 📄 PDF

Std_ReturnType LinIf_SetTrcvMode (NetworkHandleType Channel, LinTrcv_TrcvModeType TransceiverMode);

Set the given LIN transceiver to the given mode.

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

Синхронная и реентерабельная функция LinIf_SetTrcvMode (Service-ID 0x08) служит для переключения указанного LIN-трансивера в запрошенный рабочий режим [SWS_LinIf_00544]. Интерфейс доступен через заголовочный файл LinIf.h [SWS_LinIf_00544].

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

Для вызова требуются два входных параметра [SWS_LinIf_00544]:

  • Channel (NetworkHandleType): идентифицирует управляемый LIN-канал [SWS_LinIf_00544].
  • TransceiverMode (LinTrcv_TrcvModeType): определяет запрашиваемый переход состояния трансивера [SWS_LinIf_00544].

Возвращаемое значение типа Std_ReturnType сигнализирует о результате операции переключения [SWS_LinIf_00544]:

  • E_OK: возвращается, если состояние трансивера было успешно переключено в запрошенный режим [SWS_LinIf_00544].
  • E_NOT_OK: сигнализирует о том, что изменение состояния завершилось сбоем или по меньшей мере один параметр находится вне допустимого диапазона. Предыдущее состояние трансивера остается неизменным [SWS_LinIf_00544].

Выполнение и обработка ошибок

Функция выполняется синхронно и специфицирована как реентерабельная [SWS_LinIf_00544]. Специфические сообщения об ошибках DET или DEM в элементе спецификации отдельно не приведены; сбой изменения режима или недопустимые значения параметров непосредственно приводят к возвращаемому значению E_NOT_OK [SWS_LinIf_00544].

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

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

функция LinIf_GetTrcvMode [SWS_LinIf_00545] 📄 PDF

Std_ReturnType LinIf_GetTrcvMode (NetworkHandleType Channel, LinTrcv_TrcvModeType* TransceiverModePtr);

Returns the actual sta te of a LIN Transceiver Driver.

функция LinIf_GetTrcvWakeupReason [SWS_LinIf_00547] 📄 PDF

Std_ReturnType LinIf_GetTrcvWakeupReason (NetworkHandleType Channel, LinTrcv_TrcvWakeupReasonType* TrcvWuReasonPtr);

Returns the reason for the wake up that has been detected by the LIN Transceiver Driver.

функция LinIf_SetTrcvWakeupMode [SWS_LinIf_00550] 📄 PDF

Std_ReturnType LinIf_SetTrcvWakeupMode (NetworkHandleType Channel, LinTrcv_TrcvWakeupModeType LinTrcvWakeupMode);

This API enables, disables and cl ears the notification for wakeup events on the addressed network

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

Синхронная и ревентрантная функция LinIf_SetTrcvWakeupMode служит для активации, деактивации или сброса уведомлений о событиях пробуждения на указанном канале LIN [SWS_LinIf_00550]. Объявление предоставляется через заголовочный файл LinIf.h и имеет идентификатор сервиса 0x0b [SWS_LinIf_00550].

Интерфейс ожидает два входных параметра [SWS_LinIf_00550]:

  • Channel: уникальный идентификатор адресуемой сети или канала LIN типа NetworkHandleType [SWS_LinIf_00550].
  • LinTrcvWakeupMode: запрошенный режим пробуждения приемопередатчика типа LinTrcv_TrcvWakeupModeType [SWS_LinIf_00550].

В качестве возвращаемого значения функция возвращает статус Std_ReturnType [SWS_LinIf_00550]:

  • E_OK: вызов API-сервиса драйвера приемопередатчика LIN прошел успешно и возвратил E_OK [SWS_LinIf_00550].
  • E_NOT_OK: API-сервис драйвера приемопередатчика LIN завершился ошибкой (возврат E_NOT_OK) или по меньшей мере один из переданных параметров для канала или режима недействителен [SWS_LinIf_00550].

С точки зрения взаимодействия функция делегирует запрос драйверу приемопередатчика LIN; предположительно, LinIf в данном случае выступает промежуточным интерфейсом между верхними уровнями и аппаратным обеспечением приемопередатчика [SWS_LinIf_00550]. Вопрос Q-07b525a14a2c5fcd (открытый) Поскольку сервис специфицирован как ревентрантный, он может выполняться параллельно для разных или одного и того же канала [SWS_LinIf_00550].

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

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

функция LinIf_GetPIDTable [SWS_LinIf_91002] 📄 PDF

Std_ReturnType LinIf_GetPIDTable (NetworkHandleType Channel, Lin_FramePidType* PidBuffer, uint8* PidBufferLength);

Retrieves all assigned PID values. The order is congruent to the LIN frame index. Only applicable for LIN slave nodes.

функция LinIf_SetPIDTable [SWS_LinIf_91003] 📄 PDF

Std_ReturnType LinIf_SetPIDTable (NetworkHandleType Channel, Lin_FramePidType* PidBuffer, uint8 PidBufferLength);

Sets all assigned PID values. The order is congruent to the LIN frame index. Only applicable for LIN slave nodes.

функция LinTp_Init [SWS_LinIf_00350] 📄 PDF

void LinTp_Init (const LinTp_ConfigType* ConfigPtr);

Initializes the LIN Transport Layer.

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

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

Функция LinTp_Init служит для инициализации транспортного уровня протокола LIN ([SWS_LinIf_00350]). Согласно спецификации [SWS_LinIf_00350] вызов функции работает синхронно.

Сигнатура функции: void LinTp_Init (const LinTp_ConfigType* ConfigPtr). Конфигурация передается через входной параметр:

  • ConfigPtr (in): указатель на конфигурационные данные транспортного уровня LIN типа LinTp_ConfigType ([SWS_LinIf_00350]).

Функция не возвращает значения (void) и не определяет ни выходных, ни входных/выходных параметров ([SWS_LinIf_00350]). Она имеет шестнадцатеричный Service-ID 0x40 и предоставляется через заголовочный файл LinIf.h ([SWS_LinIf_00350]).

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

Требование [SWS_LinIf_00350] не определяет для этой функции конкретных кодов ошибок, сообщений DET или событий DEM. Возврат статуса ошибки вызывающей стороне не осуществляется ([SWS_LinIf_00350]).

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

Функция LinTp_Init явно классифицирована как нерентабельная (Non Reentrant) ([SWS_LinIf_00350]). Следовательно, ее нельзя вызывать параллельно из нескольких потоков, задач или подпрограмм обработки прерываний. Интерпретация: вызов, вероятно, обычно выполняется централизованно в рамках последовательности инициализации базового программного обеспечения (BSW), прежде чем смогут обрабатываться последующие коммуникационные запросы. Вопрос Q-6e391bdf8abb1a09 (открытый)

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

Для LinTp_Init в данном фрагменте не приведено прямых связей с другими требованиями спецификации или соседними функциями ([SWS_LinIf_00350]). Модуль LinIf предоставляет объявление ([SWS_LinIf_00350]).

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

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

функция LinTp_Transmit [SWS_LinIf_00351] 📄 PDF

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

Requests transmission of a PDU.

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

Синхронная функция LinTp_Transmit служит для запроса передачи PDU через транспортный протокол LIN ([SWS_LinIf_00351]). В качестве входных параметров она ожидает идентификатор PDU TxPduId, а также указатель PduInfoPtr, предоставляющий длину данных и указатели на данные и метаданные PDU ([SWS_LinIf_00351]). Возвращаемое значение — E_OK при успешном принятии запроса на передачу и E_NOT_OK в случае отклонения ([SWS_LinIf_00351]).

Поведение во время выполнения и взаимодействие с LIN Interface подчиняются следующим требованиям:

  • Запрос расписания: если переключение расписания в LinIf_ScheduleRequest, инициированное в рамках вызова через BswM_LinTp_RequestMode, завершается сбоем и возвращает E_NOT_OK, функция LinTp_Transmit также должна напрямую вернуть E_NOT_OK ([SWS_LinIf_00878]).
  • Подтверждение: только если вызов LinTp_Transmit был успешным (возвращаемое значение E_OK), LIN Interface после успешного или неудавшегося переключения таблицы расписания вызывает функцию PduR_LinTpTxConfirmation с положительным или отрицательным результатом ([SWS_LinIf_00702]). В случае отклонения запроса на передачу этот вызов полностью опускается ([SWS_LinIf_00702]).
  • Прерывание текущих процессов: если во время ожидания физического ответа или во время приема ответа через LinTp_Transmit инициируется новый физический запрос, LIN Interface прерывает текущую TP-обработку вместе с приемом, а также мониторинг тайм-аутов N_Cr и P2, и принимает новый запрос ([SWS_LinIf_00708]).

Что касается параллелизма, функция LinTp_Transmit реверсивна (reentrant) для различных TxPduId, однако не должна выполняться параллельно для одной и той же TxPduId ([SWS_LinIf_00351]).

Данное указание по использованию основано на спецификации AUTOSAR Classic R20-11.

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

функция LinTp_Shutdown [SWS_LinIf_00355] 📄 PDF

void LinTp_Shutdown (void);

Shutdowns the LIN TP.

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

Функция LinTp_Shutdown служит для контролируемого завершения работы транспортного протокола LIN ([SWS_LinIf_00355]). Посредством ее вызова работа компонента LIN-TP прекращается ([SWS_LinIf_00355]). Объявление функции доступно через заголовочный файл LinIf.h ([SWS_LinIf_00355]).

Для использования и выполнения действуют следующие характеристики спецификации ([SWS_LinIf_00355]):

  • Параметры и возвращаемое значение: функция не имеет входных, входных/выходных или выходных параметров (void) и не возвращает значения (void) ([SWS_LinIf_00355]).
  • Идентификация сервиса: сервис определен под Service-ID 0x43 ([SWS_LinIf_00355]).
  • Синхронность: вызов обрабатывается синхронно ([SWS_LinIf_00355]).
  • Рентабельность: функция является нерентабельной (Non Reentrant) ([SWS_LinIf_00355]). Параллельные или вложенные вызовы из различных контекстов недопустимы.

Специфические коды ошибок, обратная связь в Development Error Tracer (DET) или специальная обработка при ошибках в источниках для этой функции не описаны ([SWS_LinIf_00355]). Также отсутствуют данные о связанных требованиях или точном вызывающем объекте; предположительно вызов осуществляется в рамках последовательной деинициализации стека связи вышестоящим менеджером состояний BSW. Вопрос Q-e25a3c9531527c4f (открытый)

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

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

функция LinTp_ChangeParameter [SWS_LinIf_00501] 📄 PDF

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

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

Синхронная функция LinTp_ChangeParameter служит для того, чтобы настраивать специфический параметр транспортного протокола для определенного PDU во время выполнения [SWS_LinIf_00501]. В качестве параметров передаются идентификатор PDU (id), обозначение изменяемого параметра транспортного протокола (parameter, например размер блока), а также новое целевое значение (value) [SWS_LinIf_00501]. Объявление предоставляется через заголовочный файл LinIf.h [SWS_LinIf_00501].

Возвращаемые значения и поведение при ошибке

Функция сигнализирует о результате запроса непосредственно через свое возвращаемое значение типа Std_ReturnType [SWS_LinIf_00501]:

  • E_OK: запрошенный параметр успешно переключен на новое значение [SWS_LinIf_00501].
  • E_NOT_OK: изменение отклонено транспортным протоколом LIN [SWS_LinIf_00501]. Обычно это происходит в том случае, если параметр недействителен или текущая передача препятствует модификации. Вопрос Q-84aaf28c12dee2e9 (открытый)

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

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

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

функция LinIf_CheckWakeup [SWS_LinIf_00378] 📄 PDF

Std_ReturnType LinIf_CheckWakeup (EcuM_WakeupSourceType WakeupSource);

Will be called when the Ecu M has been notified about a wakeup on a specific LIN channel.

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

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

Синхронная функция LinIf_CheckWakeup вызывается, как только модуль EcuM уведомляется о событии пробуждения на определенном канале LIN [SWS_LinIf_00378]. Вызов выполняется с входным параметром WakeupSource типа EcuM_WakeupSourceType [SWS_LinIf_00378]. Этот параметр указывает исходное устройство, инициировавшее событие пробуждения, при этом речь может идти о LIN-контроллере или LIN-трансивере [SWS_LinIf_00378].

Обработка ошибок и возвращаемые значения

В качестве возвращаемого значения функция возвращает статус типа Std_ReturnType [SWS_LinIf_00378]:

  • E_OK: во время выполнения интерфейса ошибки не возникло [SWS_LinIf_00378].
  • E_NOT_OK: при выполнении интерфейса произошла ошибка или для WakeupSource было передано недопустимое значение [SWS_LinIf_00378].

Параллелизм и интеграция

Интерфейс специфицирован как рентабельный (reentrant), имеет Service-ID 0x60 и предоставляется через заголовочный файл LinIf.h [SWS_LinIf_00378]. Он напрямую связывает обработку пробуждения EcuM с каналами интерфейса LIN [SWS_LinIf_00378].

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

функция LinIf_EnableBusMirroring [SWS_LinIf_00876] 📄 PDF

Std_ReturnType LinIf_EnableBusMirroring (NetworkHandleType Channel, boolean MirroringActive);

Enables or disables mirroring for a LIN channel.

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

Синхронная и ревентрантная функция LinIf_EnableBusMirroring активирует или деактивирует зеркалирование шины (Bus Mirroring) для отдельного LIN-канала [SWS_LinIf_00876]. Она доступна через заголовочный файл LinIf.h и может быть опущена, если зеркалирование шины не активировано через конфигурационный параметр LinIfBusMirroringSupport [SWS_LinIf_00875]. В качестве вызывающей стороны обычно выступает модуль Mirror. Вопрос Q-1703af5207cb7ade (открытый)

Через параметр Channel передается соответствующий канал LIN, тогда как MirroringActive управляет режимом [SWS_LinIf_00876]: при передаче TRUE зеркалирование активируется, при FALSE — деактивируется [SWS_LinIf_00876]. В качестве возвращаемого значения функция выдает E_OK, если режим зеркалирования был успешно изменен, или E_NOT_OK, если указан недействительный канал либо зеркалирование глобально деактивировано [SWS_LinIf_00876]. Специфические сообщения об ошибках DET или DEM в определении функции не указаны [SWS_LinIf_00876].

Если зеркалирование шины активировано глобально через LinIfBusMirroringSupported, а также для соответствующего канала, интерфейс LIN пересылает релевантные события в Mirror_ReportLinFrame:

  • Принятые фреймы при LinIf_RxIndication со статусом LIN_RX_OK и указателем на полезные данные [SWS_LinIf_00838], а также при считывании статуса LIN-драйвера для Rx-слотов [SWS_LinIf_00873].
  • Отправленные фреймы при LinIf_TxConfirmation со статусом LIN_TX_OK и указателем на переданные данные [SWS_LinIf_00839], а также при считывании статуса LIN-драйвера для Tx-слотов [SWS_LinIf_00874].
  • Уведомления об ошибках при LinIf_LinErrorIndication для всех кодов ошибок, кроме LIN_ERR_HEADER, со статусом ошибки и NULL-указателем в качестве данных [SWS_LinIf_00869].

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

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

функция LinIf_WakeupConfirmation [SWS_LinIf_00715] 📄 PDF

void LinIf_WakeupConfirmation (EcuM_WakeupSourceType WakeupSource);

The LIN Driver or LIN Transceiver Driver will call this function to report the wake up source after the successful wakeup detection during Check Wakeup or after power on by bus.

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

Функция LinIf_WakeupConfirmation служит для сообщения об успешном обнаружении события пробуждения интерфейсу LIN [SWS_LinIf_00715].

Вызов и параметры

Вызов выполняется драйвером LIN (LIN Driver) или драйвером приемопередатчика LIN (LIN Transceiver Driver) после успешного обнаружения пробуждения во время Check Wakeup или после включения через шину (power on by bus) [SWS_LinIf_00715]. В качестве передаваемого параметра передается WakeupSource типа EcuM_WakeupSourceType, который указывает устройство-источник, инициировавшее событие пробуждения (LIN-контроллер или LIN-приемопередатчик) [SWS_LinIf_00715].

Характеристики выполнения и интерфейс

  • Семантика: вызов обрабатывается синхронно [SWS_LinIf_00715].
  • Ревентрантность: функция специфицирована как ревентрантная [SWS_LinIf_00715].
  • Возвращаемое значение: возвращаемое значение отсутствует (void) [SWS_LinIf_00715].
  • Заголовочный файл: объявление предоставляется через LinIf.h (идентификатор сервиса: 0x61) [SWS_LinIf_00715].

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

функция LinIf_HeaderIndication [SWS_LinIf_91004] 📄 PDF

Std_ReturnType LinIf_HeaderIndication (NetworkHandleType Channel, Lin_PduType* PduPtr);

The LIN Driver will call this function to report a received LIN header. This function is only applicable for LIN slave nodes (available only if the ECU has any LIN slave channel).

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

Функция обратного вызова LinIf_HeaderIndication синхронно вызывается драйвером LIN для уведомления о приеме LIN-заголовка на slave-канале [SWS_LinIf_91004]. Она доступна исключительно в том случае, если электронный блок управления имеет как минимум один сконфигурированный LIN-slave-канал [SWS_LinIf_91004]. Функция является реентерабельной для различных каналов, однако не должна вызываться параллельно для одного и того же канала [SWS_LinIf_91004].

Через входной/выходной параметр PduPtr драйвер передает принятый идентификатор (PID), а также указатель на буфер данных SDU [SWS_LinIf_91004]. LinIf анализирует PID и управляет реакцией slave-узла:

  • Фрейм приема: если PID относится к сконфигурированному фрейму приема, LinIf перед возвратом задает тип контрольной суммы PduPtr->Cs, длину данных PduPtr->Dl и присваивает параметру PduPtr->Drc значение LIN_FRAMERESPONSE_RX [SWS_LinIf_00733].
  • Фрейм передачи: если это фрейм передачи, LinIf запрашивает полезные данные через <User_TriggerTransmit> [SWS_LinIf_00738]. При успешном предоставлении (возвращаемое значение E_OK или данные SRF от Node Configuration Handler / транспортного протокола) конфигурируются контрольная сумма и длина, а PduPtr->Drc устанавливается в LIN_FRAMERESPONSE_TX [SWS_LinIf_00739]. Если опрос завершается неудачно с E_NOT_OK, параметр PduPtr->Drc устанавливается в LIN_FRAMERESPONSE_IGNORE [SWS_LinIf_00740].
  • Нерелевантные фреймы: если фрейм не релевантен для slave-узла, LinIf также устанавливает PduPtr->Drc в LIN_FRAMERESPONSE_IGNORE [SWS_LinIf_00748].

Кроме того, каждый вызов перезагружает текущий таймер Bus-Idle [SWS_LinIf_00754]. Если вызов происходит впервые после успешного LinIf_Wakeup, инициируется <User>_WakeupConfirmation(TRUE) [SWS_LinIf_00761]. При приеме заголовка SRF LinIf дополнительно запускает таймер N_As для Consecutive Frames (CF) [SWS_LinIf_00800]. В качестве возвращаемого значения E_OK сигнализирует о принятии запроса, тогда как E_NOT_OK указывает на ошибку разработки или производства [SWS_LinIf_91004].

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

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

функция LinIf_RxIndication [SWS_LinIf_91005] 📄 PDF

void LinIf_RxIndication (NetworkHandleType Channel, uint8* Lin_SduPtr);

The LIN Driver will call this function to report a successfully received response and provides the reception data to the LIN Interface. This function is only applicable for LIN slave nodes (available only if the ECU has any LIN slave channel).

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

Функция обратного вызова LinIf_RxIndication синхронно вызывается драйвером LIN, чтобы уведомить LIN-интерфейс об успешном приеме ответа (Response), включая принятые данные [SWS_LinIf_91005]. Функция доступна исключительно на блоках управления, имеющих как минимум один сконфигурированный канал LIN-slave [SWS_LinIf_91005].

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

  • Параметры: передаются идентификатор канала Channel, а также указатель Lin_SduPtr на теневой буфер (Shadow Buffer) или отображаемый в память буфер приема аппаратного обеспечения LIN [SWS_LinIf_91005]. Этот указатель действителен только при фактически принятом ответе [SWS_LinIf_91005].
  • Возвращаемое значение: функция не имеет возвращаемого значения (void) [SWS_LinIf_91005].
  • Реентерабельность: интерфейс является реентерабельным для различных каналов LIN, однако нереентерабелен для одного и того же канала [SWS_LinIf_91005].

При взаимодействии с поведением модуля данный вызов инициирует несколько координирующих действий:

  • Передача принятых полезных данных и длины полезных данных вышестоящему уровню через <User_RxIndication> [SWS_LinIf_00734].
  • Проверка команд перехода в спящий режим: если это фрейм Master Request Frame (MRF) с NAD 0, LIN-интерфейс распознает команду Go-to-Sleep и инициирует переход в спящий режим [SWS_LinIf_00750].
  • Управление таймерами: при каждом вызове перезагружается таймер Bus-Idle [SWS_LinIf_00754]. Кроме того, при вызове для фреймов MRF (FF, CF) осуществляется управление таймером N_Cr (запуск/перезапуск при FF и CF перед последним фреймом, остановка при последнем CF) [SWS_LinIf_00805].
  • Зеркалирование шины (Bus Mirroring): если зеркалирование активировано глобально и для данного канала, LIN-интерфейс передает фрейм дальше со статусом LIN_RX_OK через Mirror_ReportLinFrame() [SWS_LinIf_00838].

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

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

функция LinIf_TxConfirmation [SWS_LinIf_91006] 📄 PDF

void LinIf_TxConfirmation (NetworkHandleType Channel);

The LIN Driver will call this function to report a successfully transmitted response. This function is only applicable for LIN slave nodes (available only if the ECU has any LIN slave channel).

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

Синхронная функция обратного вызова LinIf_TxConfirmation (Service-ID 0x7a, объявленная в LinIf.h) вызывается драйвером LIN для подтверждения успешной передачи ответа (Response) на указанном канале [SWS_LinIf_91006]. Функция не имеет возвращаемого значения и предназначена исключительно для блоков управления, имеющих как минимум один сконфигурированный канал LIN-slave [SWS_LinIf_91006].

При поступлении подтверждения LIN-интерфейс выполняет ряд последующих действий по обработке:

  • Уведомление верхнего уровня: модуль передает событие отправки вышестоящему уровню через функцию обратного вызова <User_TxConfirmation> с возвращаемым значением E_OK [SWS_LinIf_00741].
  • Статус ошибки: если успешно отправленный фрейм содержит сигнал ошибки response_error, LIN-интерфейс сбрасывает этот сигнал [SWS_LinIf_00747].
  • Мониторинг состояния покоя шины: каждый вызов LinIf_TxConfirmation перезагружает текущий таймер Bus-Idle канала [SWS_LinIf_00754].
  • Транспортный протокол (LinTp): если драйвер подтверждает ответ на заголовок SRF (Slave Response Frame), интерфейс останавливает таймер мониторинга N_As [SWS_LinIf_00800].
  • Зеркалирование шины: если зеркалирование сконфигурировано глобально через LinIfBusMirroringSupported и активировано через LinIf_EnableBusMirroring(), интерфейс сообщает о фрейме со статусом LIN_TX_OK и указателем на отправленные данные модулю Mirror_ReportLinFrame() [SWS_LinIf_00839].

Что касается параллелизма, LinIf_TxConfirmation спроектирована как реентерабельная для различных каналов LIN, однако не должна вызываться реентерабельно для одного и того же канала [SWS_LinIf_91006].

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

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

функция LinIf_LinErrorIndication [SWS_LinIf_91007] 📄 PDF

void LinIf_LinErrorIndication (NetworkHandleType Channel, Lin_SlaveErrorType ErrorStatus);

The LIN Driver will call this function to report a detected error event during header or response processing. This function is only applicable for LIN slave nodes (available only if the ECU has any LIN slave channel).

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

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

Синхронная функция LinIf_LinErrorIndication вызывается драйвером LIN для сообщения об ошибках, возникших при обработке заголовка или ответа [SWS_LinIf_91007]. Она предназначена исключительно для slave-узлов LIN и предполагает наличие в блоке управления как минимум одного сконфигурированного slave-канала LIN [SWS_LinIf_91007]. В качестве параметров передаются идентификатор канала Channel, а также возникший статус ошибки ErrorStatus типа Lin_SlaveErrorType [SWS_LinIf_91007].

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

Функция является реентерабельной для различных каналов, однако не должна вызываться параллельно для одного и того же канала [SWS_LinIf_91007]. При вызове LIN-интерфейс считает ответ или переданный фрейм потерянным и сообщает об ошибке времени выполнения LINIF_E_RESPONSE в Default Error Tracer (DET), за исключением случаев, когда переданный статус ошибки имеет значение LIN_ERR_HEADER [SWS_LinIf_00735], [SWS_LinIf_00743].

Взаимодействие и мониторинг шины

Независимо от переданного кода ошибки, LIN-интерфейс при каждом вызове LinIf_LinErrorIndication перезагружает текущий таймер Bus-Idle [SWS_LinIf_00754]. Если ошибка возникает при SRF-ответе после приема SRF-заголовка, LIN-интерфейс прерывает передачу и сообщает об этом верхнему уровню через PduR_LinTpTxConfirmation с результатом E_NOT_OK [SWS_LinIf_00796].

Если зеркалирование шины активно глобально через LinIfBusMirroringSupported и включено для данного канала, LIN-интерфейс пересылает ошибки, отличные от LIN_ERR_HEADER, через Mirror_ReportLinFrame() с указателем NULL для содержимого данных [SWS_LinIf_00869]. При этом коды ошибок драйвера предварительно транслируются в соответствующие значения состояния типа Lin_StatusType [SWS_LinIf_00870].

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

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

функция <User_TriggerTransmit> [SWS_LinIf_00528] 📄 PDF

Std_ReturnType <User_TriggerTransmit> (PduIdType TxPduId, PduInfoType* PduInfoPtr);

Within this API, the upper layer module (called module) shall check whether the available data fits into the b uffer 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 ch anging Pdu Info Ptr.

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

Конфигурируемый интерфейс <User_TriggerTransmit> служит для синхронного запроса данных SDU из вышележащего модуля для предстоящей передачи [SWS_LinIf_00528].

Через параметр TxPduId идентифицируется запрошенный SDU, тогда как PduInfoPtr передается как указатель на структуру с целевым буфером (SduDataPtr) и доступным размером буфера (SduLength) [SWS_LinIf_00528]. Вызываемый вышележащий модуль проверяет внутри данного API, помещаются ли подготовленные данные в заявленный размер буфера [SWS_LinIf_00528]. Если места достаточно, модуль копирует свои данные в SduDataPtr, обновляет SduLength количеством фактически скопированных байтов и сигнализирует об успехе возвращаемым значением E_OK [SWS_LinIf_00528].

Если же размера буфера недостаточно, данные SDU не копируются, и модуль возвращает E_NOT_OK без изменения PduInfoPtr [SWS_LinIf_00528]. При возвращаемом значении E_NOT_OK вызывающая сторона ни в коем случае не должна использовать PduInfoPtr, так как он может указывать на недействительные данные или являться нулевым указателем (NULL) [SWS_LinIf_00528].

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

Это указание по использованию основано на спецификации AUTOSAR SWS_LinIf_00528.

функция <User_TxConfirmation> [SWS_LinIf_00529] 📄 PDF

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

Конфигурируемая функция обратного вызова <User_TxConfirmation> вызывается нижележащим модулем коммуникационного интерфейса, чтобы подтвердить верхнему уровню передачу PDU или сбой передачи [SWS_LinIf_00529]. Вызов выполняется синхронно и не возвращает значения [SWS_LinIf_00529].

Параметры и семантика

  • TxPduId (In): обозначает идентификатор переданного PDU типа PduIdType [SWS_LinIf_00529].
  • result (In): сообщает статус успешности передачи в виде Std_ReturnType со значениями E_OK при успешной передаче PDU или E_NOT_OK при неудавшейся передаче [SWS_LinIf_00529].

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

Что касается рентабельности, функция спроектирована как рентабельная для различных PDU-ID, однако не должна вызываться рентабельно для одного и того же PDU-ID [SWS_LinIf_00529]. Модуль не специфицирует для этого интерфейса отдельных кодов ошибок или сообщений DET либо DEM; факт сбоя передачи вместо этого индицируется через значение параметра E_NOT_OK [SWS_LinIf_00529]. Фактический идентификатор функции, вероятно, определяется специфично для интеграции в зависимости от сконфигурированного пользовательского уровня, так как сервис обозначен как конфигурируемый [SWS_LinIf_00529]. Вопрос Q-35de931161f26cb8 (открытый)

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

функция <User_RxIndication> [SWS_LinIf_00530] 📄 PDF

void <User_RxIndication> (PduIdType RxPduId, const PduInfoType* PduInfoPtr);

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

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

Функция обратного вызова <User_RxIndication> служит для сигнализации о принятом PDU от нижележащего модуля коммуникационного интерфейса вышестоящему уровню [SWS_LinIf_00530]. Вызов выполняется с синхронной семантикой и не имеет возвращаемого значения [SWS_LinIf_00530].

Параметры и спецификация интерфейса

Функция передает два входных параметра верхнему уровню [SWS_LinIf_00530]:

  • RxPduId: идентификатор принятого PDU типа PduIdType [SWS_LinIf_00530].
  • PduInfoPtr: указатель на структуру типа PduInfoType, которая предоставляет длину полезных данных (SduLength), указатель на буфер с полезными данными (SduDataPtr), а также соответствующие метаданные для PDU [SWS_LinIf_00530].

Для этого интерфейса не предусмотрены ни входные/выходные параметры, ни чисто выходные параметры [SWS_LinIf_00530].

Параллелизм и конфигурация

Относительно рентабельности функция спроектирована как рентабельная для различных PDU-ID, но явно специфицирована как нерентабельная для одинаковых PDU-ID [SWS_LinIf_00530]. Поэтому вызывающие стороны должны гарантировать отсутствие перекрывающихся вызовов для одного и того же RxPduId. Функция объявлена как конфигурируемый интерфейс [SWS_LinIf_00530]; таким образом, конкретное имя функции верхнего уровня, вероятно, определяется через конфигурацию модуля. Вопрос Q-94175e8cd86775b6 (открытый)

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

функция <User_ResponseErrorSignalChanged> [SWS_LinIf_00856] 📄 PDF

void <User_ResponseErrorSignalChanged> (NetworkHandleType Channel, boolean RespErrSigValue);

Notifies the change of the response error signal with the new value. Only applicable for LIN slave nodes. AUTOSAR CP R20 - of Document ID : AUTOSAR_ SWS_ LINInterface

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

Интерфейс <User_ResponseErrorSignalChanged> служит в модуле LinIf функцией уведомления, предназначенной для сообщения об изменении значения сигнала Response-Error вместе с новым значением сигнала [SWS_LinIf_00856]. Вызов выполняется синхронно и имеет service ID 0x74 [SWS_LinIf_00856]. Входные/выходные параметры, а также возвращаемое значение не предусмотрены; сигнатура определена с типом возвращаемого значения void [SWS_LinIf_00856].

В качестве передаваемых параметров функция ожидает два чисто входных значения [SWS_LinIf_00856]:

  • Channel (тип NetworkHandleType): однозначная идентификация соответствующего LIN-канала [SWS_LinIf_00856].
  • RespErrSigValue (тип boolean): текущее значение сигнала Response-Error. Параметр равен true, если сигнал установлен в 1, и false в противном случае [SWS_LinIf_00856].

В отношении параллелизма и контекста вызова определено, что функция является реентерабельной для различных каналов, однако не должна вызываться реентерабельно для одного и того же канала [SWS_LinIf_00856]. Функциональное граничное условие заключается в том, что данный сервис уведомления применим исключительно для slave-узлов LIN [SWS_LinIf_00856]. Объявление предоставляется через заголовочный файл LinIf_Externals.h [SWS_LinIf_00856].

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

функция <User_SaveConfigurationRequest> [SWS_LinIf_00857] 📄 PDF

boolean <User_SaveConfigurationRequest> (NetworkHandleType Channel);

Notifies the reception of a Save Configuration request. Only applicable for LIN slave nodes.

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

Callback-функция <User_SaveConfigurationRequest> (идентификатор сервиса 0x75) уведомляет вышележащий уровень о приеме запроса «Save Configuration» и объявлена в LinIf_Externals.h [SWS_LinIf_00857]. Этот интерфейс применим исключительно для слейв-узлов LIN [SWS_LinIf_00857].

Вызов осуществляется синхронно и специфицирован как ревентрантный [SWS_LinIf_00857]:

  • Параметры: через входной параметр Channel типа NetworkHandleType передается соответствующий канал LIN [SWS_LinIf_00857]. Дополнительные входные или выходные параметры отсутствуют [SWS_LinIf_00857].
  • Возвращаемое значение: функция возвращает значение типа boolean [SWS_LinIf_00857]. Возвращаемое значение TRUE сигнализирует о том, что в шину LIN должен быть отправлен положительный ответ, тогда как FALSE предотвращает передачу какого-либо ответа [SWS_LinIf_00857].

Что касается обработки ошибок, спецификация не определяет ни конкретных кодов ошибок, ни сообщений DET или DEM [SWS_LinIf_00857]. Поведение в случае ошибки или отклонения управляется напрямую через логическое возвращаемое значение: передача ответа предотвращается с помощью FALSE [SWS_LinIf_00857]. Поскольку вызов классифицирован как ревентрантный, функция, вероятно, рассчитана на параллельный вызов на разных каналах [SWS_LinIf_00857]. Вопрос Q-84432030c1aff644 (открытый)

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

тип LinIf_SchHandleType [SWS_LinIf_00197] 📄 PDF

Index of the schedule table that is selectable and followed by LIN Interface. Value is unique per LIN c hannel/ controller, but not per ECU. The number of schedule tables is limited to 255

тип LinIf_ConfigType [SWS_LinIf_00668] 📄 PDF

A pointer to an instance of this structure will be used in the initialization of the LIN Interface. The outline of the structure is defined in chapter 10 Configuration Specification.

тип LinTp_ConfigType [SWS_LinIf_00426] 📄 PDF

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

тип LinTp_Mode [SWS_LinIf_00629] 📄 PDF

This type denotes which Schedule table can be requested by LIN TP during diagnostic session

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

Перечислимый тип LinTp_Mode определен в заголовочном файле LinIf.h и задает, какой режим таблицы расписания может быть запрошен транспортным протоколом LIN (LIN TP) во время диагностического сеанса [SWS_LinIf_00629].

Диапазон значений включает три литерала перечисления для управления сменой расписания на шине LIN [SWS_LinIf_00629]:

  • LINTP_APPLICATIVE_SCHEDULE: выбирает прикладную таблицу расписания для регулярного обмена сообщениями [SWS_LinIf_00629].
  • LINTP_DIAG_REQUEST: выбирает таблицу расписания Master-Request для передачи диагностических запросов [SWS_LinIf_00629].
  • LINTP_DIAG_RESPONSE: выбирает таблицу расписания Slave-Response для приема диагностических ответов [SWS_LinIf_00629].

С точки зрения взаимодействия этот тип служит для переключения между диагностическими передачами и регулярной коммуникацией приложений внутри LIN-интерфейса [SWS_LinIf_00629]. Специфические контексты вызова, свойства реентерабельности или обработка ошибок (такие как сообщения DET или DEM) для этого чистого типа данных в источниках не указаны; предположительно тип передается в качестве параметра функции при управляющих вызовах от транспортного протокола LIN в LIN-интерфейс. Вопрос Q-1bf7553401882471 (открытый)

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

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

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

Record
AUTOSAR/AP/record/CP_MOD_LinIf
Status
unspecified
Version
AUTOSAR/AP/record/CP_MOD_LinIf@rel:R20-11#e074907f
Content hash
e074907f
Source
https://www.autosar.org/fileadmin/standards/R20-11/CP/AUTOSAR_SWS_LINInterface.pdf#nameddest=SWS_LinIf_00198

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

LinIf_GetVersionInfo функция

Returns the version information of this module.

void LinIf_GetVersionInfo (Std_VersionInfoType* versioninfo);
LinIf_Init функция

Initializes the LIN Interface.

void LinIf_Init (const LinIf_ConfigType* ConfigPtr);
LinTp_GetVersionInfo функция

Returns the version information of this module.

void LinTp_GetVersionInfo (Std_VersionInfoType* versioninfo);
LinTp_Init функция

Initializes the LIN Transport Layer.

void LinTp_Init (const LinTp_ConfigType* ConfigPtr);

Сервисы · Get…

LinIf_GetConfiguredNAD функция

Reports the current configured NAD. Only applicable for LIN slave nodes.

Std_ReturnType LinIf_GetConfiguredNAD (NetworkHandleType Channel, uint8* Nad);
LinIf_GetPIDTable функция

Retrieves all assigned PID values. The order is congruent to the LIN frame index. Only applicable for LIN slave nodes.

Std_ReturnType LinIf_GetPIDTable (NetworkHandleType Channel, Lin_FramePidType* PidBuffer, uint8* PidBufferLength);
LinIf_GetTrcvMode функция

Returns the actual sta te of a LIN Transceiver Driver.

Std_ReturnType LinIf_GetTrcvMode (NetworkHandleType Channel, LinTrcv_TrcvModeType* TransceiverModePtr);

Returns the reason for the wake up that has been detected by the LIN Transceiver Driver.

Std_ReturnType LinIf_GetTrcvWakeupReason (NetworkHandleType Channel, LinTrcv_TrcvWakeupReasonType* TrcvWuReasonPtr);

Сервисы · Set…

LinIf_SetConfiguredNAD функция

Sets the current configured NAD. Only applicable for LIN slave nodes.

Std_ReturnType LinIf_SetConfiguredNAD (NetworkHandleType Channel, uint8 Nad);
LinIf_SetPIDTable функция

Sets all assigned PID values. The order is congruent to the LIN frame index. Only applicable for LIN slave nodes.

Std_ReturnType LinIf_SetPIDTable (NetworkHandleType Channel, Lin_FramePidType* PidBuffer, uint8 PidBufferLength);
LinIf_SetTrcvMode функция

Set the given LIN transceiver to the given mode.

Std_ReturnType LinIf_SetTrcvMode (NetworkHandleType Channel, LinTrcv_TrcvModeType TransceiverMode);

This API enables, disables and cl ears the notification for wakeup events on the addressed network

Std_ReturnType LinIf_SetTrcvWakeupMode (NetworkHandleType Channel, LinTrcv_TrcvWakeupModeType LinTrcvWakeupMode);

Сервисы · Прочее

LinIf_CheckWakeup функция

Will be called when the Ecu M has been notified about a wakeup on a specific LIN channel.

Std_ReturnType LinIf_CheckWakeup (EcuM_WakeupSourceType WakeupSource);

Enables or disables mirroring for a LIN channel.

Std_ReturnType LinIf_EnableBusMirroring (NetworkHandleType Channel, boolean MirroringActive);
LinIf_GotoSleep функция

Initiates a transition into the Sleep Mode on the selected channel.

Std_ReturnType LinIf_GotoSleep (NetworkHandleType Channel);
LinIf_HeaderIndication функция

The LIN Driver will call this function to report a received LIN header. This function is only applicable for LIN slave nodes (available only if the ECU has any LIN slave channel).

Std_ReturnType LinIf_HeaderIndication (NetworkHandleType Channel, Lin_PduType* PduPtr);

The LIN Driver will call this function to report a detected error event during header or response processing. This function is only applicable for LIN slave nodes (available only if the ECU has any LIN slave channel).

void LinIf_LinErrorIndication (NetworkHandleType Channel, Lin_SlaveErrorType ErrorStatus);
LinIf_ScheduleRequest функция

Requests a schedule table to be executed. Only used for LIN master nodes.

Std_ReturnType LinIf_ScheduleRequest (NetworkHandleType Channel, LinIf_SchHandleType Schedule);
LinIf_Transmit функция

Re quests transmission of a PDU.

Std_ReturnType LinIf_Transmit (PduIdType TxPduId, const PduInfoType* PduInfoPtr);
LinIf_Wakeup функция

Initiates the wake up process.

Std_ReturnType LinIf_Wakeup (NetworkHandleType Channel);

The LIN Driver or LIN Transceiver Driver will call this function to report the wake up source after the successful wakeup detection during Check Wakeup or after power on by bus.

void LinIf_WakeupConfirmation (EcuM_WakeupSourceType WakeupSource);
LinTp_ChangeParameter функция

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

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

Shutdowns the LIN TP.

void LinTp_Shutdown (void);
LinTp_Transmit функция

Requests transmission of a PDU.

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

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

LinIf_RxIndication функция

The LIN Driver will call this function to report a successfully received response and provides the reception data to the LIN Interface. This function is only applicable for LIN slave nodes (available only if the ECU has any LIN slave channel).

void LinIf_RxIndication (NetworkHandleType Channel, uint8* Lin_SduPtr);
LinIf_TxConfirmation функция

The LIN Driver will call this function to report a successfully transmitted response. This function is only applicable for LIN slave nodes (available only if the ECU has any LIN slave channel).

void LinIf_TxConfirmation (NetworkHandleType Channel);

Callout-функции и ожидаемые интерфейсы

Notifies the change of the response error signal with the new value. Only applicable for LIN slave nodes. AUTOSAR CP R20 - of Document ID : AUTOSAR_ SWS_ LINInterface

void <User_ResponseErrorSignalChanged> (NetworkHandleType Channel, boolean RespErrSigValue);
<User_RxIndication> функция

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

void <User_RxIndication> (PduIdType RxPduId, const PduInfoType* PduInfoPtr);

Notifies the reception of a Save Configuration request. Only applicable for LIN slave nodes.

boolean <User_SaveConfigurationRequest> (NetworkHandleType Channel);
<User_TriggerTransmit> функция

Within this API, the upper layer module (called module) shall check whether the available data fits into the b uffer 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 ch anging Pdu Info Ptr.

Std_ReturnType <User_TriggerTransmit> (PduIdType TxPduId, PduInfoType* PduInfoPtr);
<User_TxConfirmation> функция

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

void <User_TxConfirmation> (PduIdType TxPduId, Std_ReturnType result);

Типы

A pointer to an instance of this structure will be used in the initialization of the LIN Interface. The outline of the structure is defined in chapter 10 Configuration Specification.

Index of the schedule table that is selectable and followed by LIN Interface. Value is unique per LIN c hannel/ controller, but not per ECU. The number of schedule tables is limited to 255

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

LinTp_Mode тип

This type denotes which Schedule table can be requested by LIN TP during diagnostic session