DEENESPTFRRUARHIKOZHNL

LIN State Manager (LinSM)

ModulLinSM (LIN State Manager)
BSW-Modul-ID141
Standard-Header#include "LinSM.h"
SWS-SpezifikationAUTOSAR_SWS_LINStateManager.pdf
ClusterLIN

Guía del móduloGENERADO POR IA

Controla el modo de comunicación, el despertar, el paso a reposo y el cambio de tablas de schedule para cada red LIN.
GENERADO POR IA no revisado Modelo: claude-opus-5-5 · Esfuerzo: high · Temperatura: no controlable · Prompt: 4c8293bd0eb8 Procedencia Preguntas abiertas (2)
Ancla causal: R20-11 Válido desde R20-11 Sintetizado para esta versión de especificación.
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

Controla el modo de comunicación, el despertar, el paso a reposo y el cambio de tablas de schedule para cada red LIN.

El LIN State Manager traduce las peticiones de comunicación de ComM para cada red LIN en llamadas a LIN Interface. Notifica los estados resultantes LINSM_FULL_COM y LINSM_NO_COM a ComM y BswM [SWS_LinSM_00126]. Inicia directamente el despertar, el paso a reposo y, únicamente en el master, el cambio de la tabla de schedule, y supervisa las confirmaciones con temporizadores en LinSM_MainFunction. En el slave, el master determina el paso a reposo: solo LinSM_GotoSleepIndication desencadena LinIf_GotoSleep [SWS_LinSM_00231]. Si una transición falla, LinSM vuelve a notificar el estado anterior para que las capas superiores mantengan la consistencia.

El LIN State Manager es el bus state manager para LIN. A través de él, ComM solicita la capacidad de comunicación de una red (SWS ComM p. 19). Acepta las peticiones de modo mediante LinSM_RequestComMode [SWS_LinSM_00126]. Controla LinIf y notifica los estados a ComM y BswM [SWS_LinSM_00229]. Qué controlador LIN atiende a una red permanece oculto tras LinIf (SWS LinSM p. 28).

kontext ComM ComM LinSM LinSM ComM->LinSM LinSM_RequestComMode LinSM_GetCurrentComMode BswM BswM BswM->LinSM LinSM_Init (Beispielregel) LinSM_ScheduleRequest SchM BSW-Scheduler (SchM) SchM->LinSM LinSM_MainFunction (periodisch) LinSM->ComM ComM_BusSM_ModeIndication ComM_BusSM_BusSleepMode LinSM->BswM BswM_LinSM_CurrentState BswM_LinSM_CurrentSchedule LinIf LinIf LinSM->LinIf LinIf_Wakeup / LinIf_GotoSleep LinIf_ScheduleRequest / LinIf_SetTrcvMode Det Det LinSM->Det Fehlermeldungen LinIf->LinSM LinSM_WakeupConfirmation LinSM_GotoSleepConfirmation LinSM_GotoSleepIndication LinSM_ScheduleRequestConfirmation Lin controlador LIN (uno o varios) LinIf->Lin Zuordnung Netzwerk zu Treiber

Diagrama de contexto: ComM y BswM controlan LinSM, LinSM controla LinIf, y LinIf responde mediante callbacks. Fuentes: [SWS_LinSM_00229], [SWS_LinSM_00138], SWS LinSM p. 28

Tras LinSM_Init, cada red se encuentra en LINSM_NO_COM [SWS_LinSM_00155]. En este proceso no se notifica a ComM ni a BswM (SWS LinSM p. 23). Solo se permite la comunicación en LINSM_FULL_COM. Al entrar en él, ComM y BswM reciben una notificación y se entra en el subestado LINSM_RUN_COMMUNICATION [SWS_LinSM_00301]. Para BswM solo son visibles LINSM_FULL_COM y LINSM_NO_COM [SWS_LinSM_00220].

zustaende cluster_init LINSM_INIT (je LIN-Netzwerk) cluster_full LINSM_FULL_COM Start Systemstart UNINIT LINSM_UNINIT Start->UNINIT NO_COM LINSM_NO_COM (Bus still) UNINIT->NO_COM LinSM_Init (sin notificación a ComM/BswM) RUN LINSM_RUN_COMMUNICATION NO_COM->RUN LinSM_WakeupConfirmation(TRUE) notificación FULL_COM a ComM y BswM GOTO LINSM_GOTO_SLEEP RUN->GOTO LinIf_GotoSleep devuelve E_OK Master: ComM solicita NO_COM Slave: LinSM_GotoSleepIndication GOTO->NO_COM LinSM_GotoSleepConfirmation (independientemente de success) notificación NO_COM a ComM y BswM

Diagrama de estados: para cada red, LinSM conmuta entre LINSM_NO_COM y LINSM_FULL_COM mediante la confirmación de despertar y de paso a reposo. Fuentes: [SWS_LinSM_00155], [SWS_LinSM_00301], SWS LinSM p. 20

LinSM inicia el despertar y el paso a reposo directamente en la llamada. Supervisa las confirmaciones de LinIf con temporizadores en LinSM_MainFunction [SWS_LinSM_00156] (SWS LinSM p. 28). En el master, una solicitud de COMM_NO_COMMUNICATION conduce de inmediato a LinIf_GotoSleep [SWS_LinSM_00036]. En el slave solo se almacena [SWS_LinSM_00230]; únicamente LinSM_GotoSleepIndication activa el paso a reposo [SWS_LinSM_00231]. Un temporizador silence-after-wakeup retrasa nuevos intentos de despertar [SWS_LinSM_00237].

Los cambios de schedule solo existen en el master [SWS_LinSM_00241]. LinSM reenvía LinSM_ScheduleRequest directamente a LinIf y notifica el resultado mediante BswM_LinSM_CurrentSchedule (SWS LinSM p. 26). Para los errores se aplica lo siguiente:

  • LinSM notifica los errores de desarrollo al DET, con los códigos de [SWS_LinSM_00053].
  • La ausencia de un callback de LinIf se considera LINSM_E_CONFIRMATION_TIMEOUT [SWS_LinSM_00224].
  • Tras una transición fallida, LinSM vuelve a fijar el estado anterior para que ComM y BswM estén informados de manera consistente [SWS_LinSM_00177].

Rol entre ComM, BswM y LIN Interface

El LIN State Manager (LinSM) es el bus state manager para LIN. Al igual que ocurre con los demás administradores de estado de bus, ComM solicita a través de él la capacidad de comunicación de una red (SWS ComM p. 19). La interfaz central de entrada para ello es LinSM_RequestComMode [SWS_LinSM_00126]. El modo actual lo proporciona LinSM_GetCurrentComMode [SWS_LinSM_00122]. LinSM opera exclusivamente a nivel de redes. Qué controlador LIN atiende a una red queda oculto por LinIf. Por lo tanto, las centralitas con múltiples controladores LIN distintos no afectan a LinSM (SWS LinSM p. 28).

Entre las interfaces obligatorias se encuentran LinIf_GotoSleep y LinIf_ScheduleRequest hacia abajo, así como las notificaciones ComM_BusSM_ModeIndication, ComM_BusSM_BusSleepMode, BswM_LinSM_CurrentState y BswM_LinSM_CurrentSchedule hacia arriba [SWS_LinSM_00229] (SWS LinSM p. 41). LinSM llama a LinIf_Wakeup en la secuencia de despertar (SWS LinSM p. 27). Opcionalmente utiliza Det_ReportError y LinIf_SetTrcvMode [SWS_LinSM_00138]. LinIf responde mediante los siguientes callbacks:

[SWS_LinSM_00219] define los tipos importados tales como ComM_ModeType, NetworkHandleType y LinIf_SchHandleType.

kontext ComM ComM LinSM LinSM ComM->LinSM LinSM_RequestComMode LinSM_GetCurrentComMode BswM BswM BswM->LinSM LinSM_Init (Beispielregel) LinSM_ScheduleRequest SchM BSW-Scheduler (SchM) SchM->LinSM LinSM_MainFunction (periodisch) LinSM->ComM ComM_BusSM_ModeIndication ComM_BusSM_BusSleepMode LinSM->BswM BswM_LinSM_CurrentState BswM_LinSM_CurrentSchedule LinIf LinIf LinSM->LinIf LinIf_Wakeup / LinIf_GotoSleep LinIf_ScheduleRequest / LinIf_SetTrcvMode Det Det LinSM->Det Fehlermeldungen LinIf->LinSM LinSM_WakeupConfirmation LinSM_GotoSleepConfirmation LinSM_GotoSleepIndication LinSM_ScheduleRequestConfirmation Lin controlador LIN (uno o varios) LinIf->Lin Zuordnung Netzwerk zu Treiber

Diagrama de contexto: LinSM actúa de intermediario entre ComM y BswM arriba y LinIf abajo; los controladores LIN permanecen ocultos tras LinIf. Fuentes: [SWS_LinSM_00126], [SWS_LinSM_00229], [SWS_LinSM_00138], [SWS_LinSM_00156], SWS LinSM p. 28, Mode-Management-Guide p. 54

Modelo de estados por red LIN, inicialización y parte cíclica

Durante el arranque, antes de cada llamada a la API, el estado de todo el módulo LINSM_UNINIT está activo (SWS LinSM p. 22). LinSM_Init es síncrona y no reentrante [SWS_LinSM_00155]. La función recibe un puntero a la configuración post-build del tipo específico de la implementación LinSM_ConfigType [SWS_LinSM_00221]. Después, cada red se encuentra en el subestado LINSM_NO_COM del superestado LINSM_INIT. LinSM_Init no notifica esta primera transición ni a ComM ni a BswM, ya que ComM aún no tiene por qué estar inicializado en ese momento (SWS LinSM p. 23). En el ejemplo de la guía de Mode Management, una regla de BswM llama a LinSM_Init(null) tras Lin_Init y LinIf_Init (Mode-Management-Guide p. 54).

En LINSM_NO_COM el bus permanece en silencio (SWS LinSM p. 23). Solo en LINSM_FULL_COM se permite comunicar en el bus, y cada red alcanza este estado de forma independiente de las demás. Al entrar se produce lo siguiente (SWS LinSM p. 23):

  • ComM recibe un mensaje con COMM_FULL_COMMUNICATION, BswM un mensaje con LINSM_FULL_COM.
  • Si LinSMTransceiverPassiveMode está configurado, LinSM activa el transceptor mediante LinIf_SetTrcvMode.
  • Se accede al subestado LINSM_RUN_COMMUNICATION [SWS_LinSM_00301].

El subestado transitorio LINSM_GOTO_SLEEP cubre la espera de la confirmación de paso a reposo (SWS LinSM p. 20, SWS LinSM p. 21). Para BswM solo son visibles dos valores de LinSM_ModeType: LINSM_FULL_COM (0x01) y LINSM_NO_COM (0x02) [SWS_LinSM_00220].

La supervisión temporal se ejecuta en LinSM_MainFunction. Esta función periódica gestiona los temporizadores de los tiempos de espera de solicitud [SWS_LinSM_00156]. En ella también se ejecutan los temporizadores de confirmación de despertar, con un temporizador propio para cada red (SWS LinSM p. 28). En cambio, LinSM inicia las acciones de bus propiamente dichas directamente en la llamada y no espera al siguiente ciclo de la función principal [SWS_LinSM_00036] [SWS_LinSM_00231].

zustaende cluster_init LINSM_INIT (je LIN-Netzwerk) cluster_full LINSM_FULL_COM Start Systemstart UNINIT LINSM_UNINIT Start->UNINIT NO_COM LINSM_NO_COM (Bus still) UNINIT->NO_COM LinSM_Init (sin notificación a ComM/BswM) RUN LINSM_RUN_COMMUNICATION NO_COM->RUN LinSM_WakeupConfirmation(TRUE) notificación FULL_COM a ComM y BswM GOTO LINSM_GOTO_SLEEP RUN->GOTO LinIf_GotoSleep devuelve E_OK Master: ComM solicita NO_COM Slave: LinSM_GotoSleepIndication GOTO->NO_COM LinSM_GotoSleepConfirmation (independientemente de success) notificación NO_COM a ComM y BswM

Diagrama de estados: para cada red, LinSM conmuta entre LINSM_NO_COM y LINSM_FULL_COM mediante la confirmación de despertar y de paso a reposo; LINSM_GOTO_SLEEP es solo un estado de espera. Fuentes: [SWS_LinSM_00155], [SWS_LinSM_00301], SWS LinSM p. 20, SWS LinSM p. 21, SWS LinSM p. 24

Despertar: de LINSM_NO_COM a LINSM_FULL_COM

Una red LIN se despierta cuando ComM solicita comunicación completa mediante LinSM_RequestComMode. Si otro nodo despierta el bus, no lo gestiona LinSM, sino EcuM; este caso también conduce a una solicitud por parte de ComM (SWS LinSM p. 27). LinSM llama entonces directamente a LinIf_Wakeup y restablece el contador para el número máximo de reintentos. Si LinIf ya está despierto, ignora la llamada. Antes de la llamada, LinSM inicia el temporizador de confirmación de despertar para el canal con LinSMConfirmationTimeout. Este valor debe ser 0 o un múltiplo entero del periodo de la función principal (SWS LinSM p. 28).

Si LinSM_WakeupConfirmation notifica success = TRUE, la red pasa a LINSM_FULL_COM [SWS_LinSM_00132]. En todos los demás casos, LinSM vuelve a fijar el estado anterior a la solicitud para que ComM y BswM reciban igualmente una indicación de modo (SWS LinSM p. 27). En el slave, LinIf solo confirma cuando recibe el primer encabezado LIN del master. Si el master no inicia la planificación (scheduling), la confirmación no se produce y actúa el timeout de LinSM (SWS LinIf p. 52).

despertar de una red LIN (wakeup interno)ComMLinSMLinIfBswMLinSM_RequestComMode(network,COMM_FULL_COMMUNICATION)iniciar temporizador de confirmación de wakeup(LinSMConfirmationTimeout)LinIf_Wakeup(Channel)directamente, no en LinSM_MainFunctionE_OKE_OKMaster: confirmación tras enviar la señal de wakeupSlave: confirmación con la primera cabecera LIN recibidaaltsuccess = TRUELinSM_WakeupConfirmation(network, TRUE)Timer stoppenLINSM_FULL_COM / LINSM_RUN_COMMUNICATIONComM_BusSM_ModeIndication(network,COMM_FULL_COMMUNICATION)BswM_LinSM_CurrentState(network, LINSM_FULL_COM)success = FALSELinSM_WakeupConfirmation(network, FALSE)volver a establecer el estado previo a la solicitudComM_BusSM_ModeIndication(network, bisheriger Modus)BswM_LinSM_CurrentState(network, bisheriger Zustand)sin confirmaciónLinSM_MainFunction: Timer abgelaufenLINSM_E_CONFIRMATION_TIMEOUT

Diagrama de secuencia: LinSM despierta la red inmediatamente en la llamada, pero el cambio de estado solo sigue con la confirmación asíncrona de LinIf. Fuentes: [SWS_LinSM_00126], [SWS_LinSM_00132], [SWS_LinSM_00224], SWS LinSM p. 42, SWS LinSM p. 27

Un segundo límite temporal es el temporizador silence-after-wakeup con LinSMSilenceAfterWakeupTimeout [SWS_LinSM_00235]. Mientras esté en marcha, LinSM retrasa una nueva llamada de LinIf_Wakeup, incluso si ComM solicita comunicación completa [SWS_LinSM_00237]. Tras su expiración, LinSM reinicia el proceso de despertar siempre que ComM continúe solicitando COMM_FULL_COMMUNICATION [SWS_LinSM_00236]. La condición que inicia el temporizador figura en un requisito que no está disponible aquí. Por tanto, no se describe.

wakeup_entscheidung A ComM: LinSM_RequestComMode (COMM_FULL_COMMUNICATION) B ¿está en ejecución el temporizador Silence-after-Wakeup? A->B C retrasar LinIf_Wakeup hasta la expiración del temporizador B->C Sí D restablecer contador de reintentos iniciar temporizador de confirmación de wakeup B->D No C->D Timer abgelaufen E LinIf_Wakeup(Channel) direkt aufrufen D->E F ¿respuesta de LinIf? E->F G LINSM_FULL_COM notificación a ComM y BswM F->G WakeupConfirmation TRUE H volver a establecer y notificar el estado previo a la solicitud F->H WakeupConfirmation FALSE I LinSM_MainFunction: Timer abgelaufen LINSM_E_CONFIRMATION_TIMEOUT F->I sin confirmación J timeout de Silence-after-Wakeup y COMM_FULL_COMMUNICATION sigue solicitado J->D reiniciar proceso de wakeup

Diagrama de actividades: una solicitud de comunicación completa finaliza, según el estado de los temporizadores y la retroalimentación, en LINSM_FULL_COM, en el estado anterior o en un timeout de confirmación. Fuentes: [SWS_LinSM_00237], [SWS_LinSM_00236], [SWS_LinSM_00224], SWS LinSM p. 27, SWS LinSM p. 28

Paso a reposo: el master solicita, el slave sigue al bus

La secuencia goto-sleep difiere entre master y slave. En ambos casos, LinSM notifica la entrada en el modo de no comunicación a BswM y ComM, incluso si se produjo un problema (SWS LinSM p. 24).

En el master se aplica lo siguiente:

  • Si ComM solicita COMM_NO_COMMUNICATION en LINSM_FULL_COM, LinSM llama a LinIf_GotoSleep, que envía el comando goto-sleep [SWS_LinSM_10208].
  • La llamada se realiza directamente [SWS_LinSM_00036]. En todos los demás casos se omite [SWS_LinSM_10209].
  • La llamada solo está permitida en el subestado LINSM_RUN_COMMUNICATION (SWS LinSM p. 24).
  • Si LinIf_GotoSleep devuelve E_NOT_OK, LinSM_RequestComMode también devuelve E_NOT_OK. Se vuelve a establecer el estado anterior para que ComM y BswM reciban una indicación [SWS_LinSM_00177].

A continuación, LinIf llama a LinSM_GotoSleepConfirmation [SWS_LinSM_00135]. Si LinSM se encuentra entonces en LINSM_FULL_COM/LINSM_GOTO_SLEEP, cambia a LINSM_NO_COM, independientemente del parámetro success. En cualquier otro estado ignora la confirmación (SWS LinSM p. 24). El esquema de la especificación inicia un temporizador antes de LinIf_GotoSleep y lo detiene tras la confirmación (SWS LinSM p. 47).

paso a reposo de una red LIN (maestro)ComMLinSMLinIfBswMLinSM_RequestComMode(network,COMM_NO_COMMUNICATION)solo en LINSM_FULL_COM / LINSM_RUN_COMMUNICATIONllamada directa, no en LinSM_MainFunctionstart_timer()LinIf_GotoSleep(Channel)altLinIf_GotoSleep = E_OKE_OKUnterzustand LINSM_GOTO_SLEEPE_OKLinSM_GotoSleepConfirmation(network, success)stop_timer()LINSM_NO_COM (independientemente de success)ComM_BusSM_ModeIndication(network,COMM_NO_COMMUNICATION)BswM_LinSM_CurrentState(network, LINSM_NO_COM)LinIf_GotoSleep = E_NOT_OKE_NOT_OKbisherigen Zustand erneut setzenE_NOT_OKComM_BusSM_ModeIndication(network,COMM_FULL_COMMUNICATION)BswM_LinSM_CurrentState(network, LINSM_FULL_COM)

Diagrama de secuencias: En el master, ComM desencadena la transición a suspensión; LINSM_NO_COM solo se alcanza con la confirmación de suspensión, un E_NOT_OK de LinIf_GotoSleep da lugar a una nueva notificación del estado anterior. Fuentes: [SWS_LinSM_00036], [SWS_LinSM_00177], [SWS_LinSM_00135], SWS LinSM p. 47, SWS LinSM p. 24

En el slave, el master decide sobre la transición a suspensión. Si ComM solicita COMM_NO_COMMUNICATION en LINSM_FULL_COM, LinSM solo guarda la petición y devuelve E_OK [SWS_LinSM_00230]. LinIf notifica LinSM_GotoSleepIndication cuando se ha recibido un comando Goto-Sleep o se ha producido un timeout de bus inactivo [SWS_LinSM_91000]. Solo entonces LinSM llama directamente a LinIf_GotoSleep [SWS_LinSM_00231]. La forma de proceder depende de la petición guardada:

  • Si se solicita COMM_NO_COMMUNICATION y LinIf_GotoSleep devuelve E_OK, ComM recibe el evento Bus-Sleep a través de ComM_BusSM_BusSleepMode [SWS_LinSM_00233].
  • Si se solicita comunicación completa, LinSM reinicia el proceso de wakeup tras la confirmación de suspensión [SWS_LinSM_00234].

En LinIf, la secuencia del slave pone el controlador y, si es compatible, el transceptor en modo de suspensión (SWS LinIf p. 137).

paso a reposo de una red LIN (slave)ComMLinSMLinIfBswMUse Case: solicitud de reposo de ComMLinSM_RequestComMode(network,COMM_NO_COMMUNICATION)angeforderten Modus speichern,ninguna otra acciónE_OKUse Case: BusereignisLinSM_GotoSleepIndication(Channel)Goto-Sleep-Kommando empfangeno timeout de bus inactivostart_timer()LinIf_GotoSleep(Channel)directamente, no en LinSM_MainFunctionE_OKaltangefordert: COMM_NO_COMMUNICATIONComM_BusSM_BusSleepMode(Channel)LinSM_GotoSleepConfirmation(network, success)stop_timer()LINSM_NO_COMComM_BusSM_ModeIndication(network,COMM_NO_COMMUNICATION)BswM_LinSM_CurrentState(network, LINSM_NO_COM)angefordert: COMM_FULL_COMMUNICATIONLinSM_GotoSleepConfirmation(network, success)LINSM_NO_COM, notificación a ComM y BswMkein Bus-Sleep-Ereignis an ComMreiniciar proceso de wakeup (LinIf_Wakeup)

Diagrama de secuencias: En el slave, la petición de suspensión de ComM solo se guarda; la transición a suspensión se desencadena mediante la indicación de LinIf. Fuentes: [SWS_LinSM_00230], [SWS_LinSM_00231], [SWS_LinSM_00233], [SWS_LinSM_00234], SWS LinSM p. 48, SWS LinSM p. 24

Cambiar tablas de schedule (solo master)

LinSM_ScheduleRequest [SWS_LinSM_00113] solo existe si al menos un canal está configurado como master [SWS_LinSM_00241]. Lo mismo se aplica a la callback LinSM_ScheduleRequestConfirmation [SWS_LinSM_00242]. La función asíncrona reenvía la solicitud directamente a LinIf_ScheduleRequest, sin pasar por la Main Function. Devuelve su valor de retorno a quien realiza la llamada (SWS LinSM p. 26). Quien realiza la llamada es BswM. Utiliza LinSMScheduleIndex como referencia simbólica, cuyo valor debe corresponder al valor en LinIf (SWS LinSM p. 52). Los cambios de schedule de diagnóstico del protocolo de transporte LIN también se gestionan a través de BswM y LinSM_ScheduleRequest (SWS LinIf p. 142).

LinSM notifica el resultado a través de BswM_LinSM_CurrentSchedule (SWS BswM p. 80). Qué schedule se notifica depende de la evolución (SWS LinSM p. 26):

  • Si LinSM_ScheduleRequestConfirmation confirma [SWS_LinSM_00129] antes de que expire el temporizador, LinSM notifica el nuevo schedule.
  • Si el temporizador ha expirado, notifica el schedule sin cambios.
  • Si LinIf_ScheduleRequest devuelve E_NOT_OK, notifica el schedule anterior en la siguiente llamada a la Main Function.
  • También notifica un cambio sin solicitud previa, como el cambio al schedule NULL que LinIf realiza durante la transición a suspensión.
cambio de la tabla de schedule (solo maestro)BswMLinSMLinIfLinSM_ScheduleRequest(network, schedule)start_timer()LinIf_ScheduleRequest(Channel, schedule)directamente, no en LinSM_MainFunctionaltE_OK, confirmación antes de la expiración del temporizadorE_OKE_OK (weitergereicht)LinSM_ScheduleRequestConfirmation(network, schedule)stop_timer()BswM_LinSM_CurrentSchedule(network, neuer Schedule)E_OK, Timer abgelaufenE_OKE_OK (weitergereicht)LinSM_MainFunction: Timer abgelaufenBswM_LinSM_CurrentSchedule(network, schedule sin cambios)LinIf_ScheduleRequest = E_NOT_OKE_NOT_OKE_NOT_OK (weitergereicht)siguiente llamada de LinSM_MainFunctionBswM_LinSM_CurrentSchedule(network, alter Schedule)

Diagrama de secuencias: El cambio de schedule se reenvía directamente y se supervisa temporalmente; BswM obtiene en cada caso el schedule realmente válido. Fuentes: [SWS_LinSM_00113], [SWS_LinSM_00129], [SWS_LinSM_00156], SWS LinSM p. 26, SWS LinSM p. 48

Tipo de nodo, configuración y diferencias con releases posteriores

El parámetro LinSMNodeType determina si se aplica el comportamiento de master o slave para un canal. De ello depende si LinSM_ScheduleRequest, LinSM_ScheduleRequestConfirmation y LinSM_GotoSleepIndication están disponibles [SWS_LinSM_00241] [SWS_LinSM_00242] [SWS_LinSM_00243]. Los parámetros de temporización más importantes son LinSMConfirmationTimeout (SWS LinSM p. 28) y LinSMSilenceAfterWakeupTimeout [SWS_LinSM_00235]. Los contenedores LinSMSchedule hacen referencia a schedules de la configuración de LinIf (SWS LinSM p. 52). Las comprobaciones de DET dependen de LinSMDevErrorDetect [SWS_LinSM_00239].

Muchos pasajes del documento proceden de releases posteriores. Para R20-11, los requirements son determinantes y discrepan en algunos puntos:

Comportamiento en caso de error

[SWS_LinSM_00053] define los errores de desarrollo:

  • LINSM_E_UNINIT (0x00)
  • LINSM_E_NONEXISTENT_NETWORK (0x20)
  • LINSM_E_PARAMETER (0x30)
  • LINSM_E_PARAM_POINTER (0x40)
  • LINSM_E_INIT_FAILED (0x50)

Con LinSMDevErrorDetect activo, las callbacks comprueban la red y la inicialización, como por ejemplo LinSM_GotoSleepIndication [SWS_LinSM_00239] [SWS_LinSM_00240]. Las callbacks no tienen valor de retorno, por lo que allí solo se emite la notificación DET (SWS LinSM p. 40, SWS LinSM p. 39). Las API con Std_ReturnType devuelven adicionalmente E_NOT_OK, por ejemplo en caso de red, modo o schedule no válidos o en el estado LINSM_UNINIT (SWS LinSM p. 36, SWS LinSM p. 34). Interpretación: Estas comprobaciones proceden de versiones a partir de R24-11 y es de suponer que se apliquen con el mismo contenido a R20-11. Llama la atención que la versión posterior también exija E_NOT_OK ante un puntero NULL para la API void LinSM_GetVersionInfo [SWS_LinSM_00117] (SWS LinSM p. 34). Pregunta Q-6b2d75dd286bdcb4 (abierta)

Como error de tiempo de ejecución se prevé LINSM_E_CONFIRMATION_TIMEOUT (0x00) para callbacks ausentes de LinIf [SWS_LinSM_00224]. Presumiblemente se notifica a través de Det_ReportRuntimeError, que las versiones posteriores listan como interfaz obligatoria (SWS LinSM p. 41). Pregunta Q-06b13a07d0d60152 (abierta) Funcionalmente, LinSM garantiza que ComM y BswM vean siempre un estado coherente:

  • Tras un wakeup fallido, vuelve a establecer y notificar el estado anterior (SWS LinSM p. 27).
  • En caso de E_NOT_OK de LinIf_GotoSleep, se aplica lo mismo [SWS_LinSM_00177].
  • Una confirmación de suspensión conduce a LINSM_NO_COM incluso con success = FALSE (SWS LinSM p. 24).
  • En caso de un cambio de schedule fallido, BswM recibe el schedule anterior o el que no ha sufrido modificaciones (SWS LinSM p. 26).

Más evidencia detallada

Guía de módulo generada por IA sobre la base de los requirements normativos para R20-11 y los pasajes de documentos e ilustraciones asociados, que proceden en parte de otros releases. Las afirmaciones identificadas como interpretación no cuentan con respaldo normativo. Solo la especificación AUTOSAR es vinculante.

LIN State Manager (LinSM)

Manages state transitions of LIN networks.

Funktionen — Übersicht

Typen — Übersicht

Funktionen & Typen — Detailansicht

función LinSM_Init [SWS_LinSM_00155] 📄 PDF

void LinSM_Init (const LinSM_ConfigType* ConfigPtr);

This function initializes the Lin SM.

GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 18f94187e199 Procedencia
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

La función LinSM_Init sirve para inicializar el módulo de software LIN State Manager (LinSM) en la plataforma AUTOSAR Classic [SWS_LinSM_00155].

Uso y parámetros de la interfaz:

  • Sincronización de llamadas: la ejecución de la función de inicialización está especificada como síncrona (Synchronous) [SWS_LinSM_00155].
  • Parámetros de entrada: como único parámetro se pasa ConfigPtr de tipo const LinSM_ConfigType* [SWS_LinSM_00155]. Este actúa como puntero a los datos de configuración post-build del LinSM [SWS_LinSM_00155].
  • Otros parámetros y valor de retorno: la interfaz no devuelve ningún valor de retorno (void) [SWS_LinSM_00155]. No existen parámetros adicionales de entrada/salida ni parámetros exclusivos de salida [SWS_LinSM_00155].
  • Archivo de encabezado e identificador de servicio: la declaración se proporciona a través del archivo de encabezado LinSM.h y lleva el Service ID 0x01 [SWS_LinSM_00155].

Concurrencia y restricciones:

Para la ejecución de LinSM_Init se establece que la función no es reentrante (Non reentrant) [SWS_LinSM_00155]. Por consiguiente, la llamada no se debe realizar ni en paralelo a través de múltiples hilos ni de forma interruptiva por contextos de mayor prioridad [SWS_LinSM_00155].

Esta nota de uso ha sido generada de forma automatizada sobre la base de la especificación AUTOSAR CP R20-11.

Guía del implementador pendiente (complejidad I2)

función LinSM_ScheduleRequest [SWS_LinSM_00113] 📄 PDF

Std_ReturnType LinSM_ScheduleRequest (NetworkHandleType network, LinIf_SchHandleType schedule);

The upper layer requests a schedule table to be changed on one LIN network.

GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: f2deb9e24090 Procedencia Preguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

usar

La capa superior llama a la función LinSM_ScheduleRequest para solicitar el cambio de una tabla de schedule en un canal LIN especificado [SWS_LinSM_00113]. La interfaz está definida en el archivo de encabezado LinSM.h, posee el Service ID 0x10 y opera de forma asíncrona y reentrante [SWS_LinSM_00113]. En la llamada se transfieren el canal afectado mediante el parámetro network (NetworkHandleType) y la nueva tabla deseada mediante schedule (LinIf_SchHandleType) [SWS_LinSM_00113].

Tratamiento de errores y valores de retorno

Si el módulo ha aceptado la solicitud de conmutación de tabla, la función devuelve E_OK [SWS_LinSM_00113]. En cambio, si la llamada no puede ejecutarse —por ejemplo, porque el módulo aún no está inicializado—, la función devuelve el valor de retorno E_NOT_OK [SWS_LinSM_00113]. No se indican códigos de error específicos para DET o DEM en este servicio.

Condiciones de contorno e interacción

La puesta a disposición de la función depende de forma determinante del parámetro de configuración LinSMNodeType: LinSM_ScheduleRequest solo está disponible si el módulo está configurado en al menos un canal como nodo LIN master, y se omite en configuraciones puras de LIN slave [SWS_LinSM_00241]. De idéntica manera, la correspondiente función de confirmación LinSM_ScheduleRequestConfirmation también requiere una configuración de nodo maestro [SWS_LinSM_00242]. Es de suponer que la confirmación a la capa superior sobre el cambio asíncrono de tabla completado con éxito se realiza a través de esta función de confirmación. Pregunta Q-34c3ec02381c72ca (abierta)

Este texto ha sido generado por una IA; el texto vinculante es la especificación AUTOSAR.

Guía del implementador pendiente (complejidad I1)

función LinSM_GetCurrentComMode [SWS_LinSM_00122] 📄 PDF

Std_ReturnType LinSM_GetCurrentComMode (NetworkHandleType network, ComM_ModeType* mode);

Function to query the current communication mode.

función LinSM_RequestComMode [SWS_LinSM_00126] 📄 PDF

Std_ReturnType LinSM_RequestComMode (NetworkHandleType network, ComM_ModeType mode);

Requesting of a communication mode. The mode switch will not be made instant. The Lin SM will notify the caller when mode transition is made.

GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 64785219821f Procedencia Preguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

Uso y contexto de llamada

La función LinSM_RequestComMode declarada en el archivo de cabecera LinSM.h (Service-ID 0x12) sirve para solicitar de forma asíncrona un modo de comunicación para una red LIN pasada [SWS_LinSM_00126]. Mediante el parámetro network de tipo NetworkHandleType se identifica el canal LIN correspondiente, mientras que mode de tipo ComM_ModeType especifica el modo de comunicación deseado [SWS_LinSM_00126]. El cambio de modo propiamente dicho no se produce de forma instantánea; el LinSM notifica a quien llama solo cuando la transición de modo ha concluido con éxito [SWS_LinSM_00126]. Interpretación: es probable que el ComM actúe como llamador principal, ya que el cambio de modo se solicita y se confirma a nivel de canal. Pregunta Q-0fcce16df8a29149 (abierta)

Valores de retorno y concurrencia

La interfaz está especificada como reentrante y devuelve un valor de estado de tipo Std_ReturnType [SWS_LinSM_00126]:

  • E_OK: la solicitud ha sido aceptada con éxito por el LinSM [SWS_LinSM_00126].
  • E_NOT_OK: la ejecución de la solicitud no es posible, por ejemplo, si el módulo LinSM aún no está inicializado [SWS_LinSM_00126].

Tratamiento de errores e interacción

En el marco del tratamiento de errores se define una interacción con la interfaz LIN: si la llamada subyacente de LinIf_GotoSleep devuelve el valor de retorno E_NOT_OK, LinSM_RequestComMode debe devolver obligatoriamente también E_NOT_OK [SWS_LinSM_00177]. Cuando la función retorna con E_NOT_OK, en el LinSM debe permanecer o establecerse el mismo estado, de modo que se produzcan las correspondientes confirmaciones a ComM_BusSM_ModeIndication y BswM_LinSM_CurrentState [SWS_LinSM_00177].

Este texto ha sido generado automáticamente. Todas las afirmaciones técnicas se basan exclusivamente en los datos de especificación de AUTOSAR R20-11.

Guía del implementador pendiente (complejidad I2)

función LinSM_MainFunction [SWS_LinSM_00156] 📄 PDF

void LinSM_MainFunction (void);

Periodic function that runs the timers of different request timeouts

GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: ca2058e9ab04 Procedencia Preguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

usar

La función LinSM_MainFunction actúa como función principal periódica central del módulo LIN State Manager (LinSM) dentro de la arquitectura AUTOSAR Classic [SWS_LinSM_00156]. Según la especificación, posee la sintaxis void LinSM_MainFunction (void) y el Service ID hexadecimal 0x30 [SWS_LinSM_00156]. Dado que no recibe parámetros ni devuelve un valor de retorno, opera puramente basada en estados dentro del módulo [SWS_LinSM_00156]. Su cometido funcional primario es la ejecución continua y la actualización de los temporizadores internos encargados de supervisar diversos timeouts de solicitud (request timeouts) [SWS_LinSM_00156].

Contexto de invocación y planificación

La declaración de la interfaz se realiza a través del archivo de encabezado SchM_LinSm.h [SWS_LinSM_00156]. Interpretación: debido a esta integración en el Schedule Manager, es probable que la función sea llamada cíclicamente por el BSW Scheduler en el contexto de una tarea del sistema operativo. Pregunta Q-d83f7b3f0b251f4f (abierta) Este ciclo periódico es esencial para poder detectar y procesar de forma determinista las condiciones de timeout pendientes en solicitudes de estado y de canal LIN. En el alcance de la especificación disponible no se especifican tratamientos de error particulares, tales como códigos de error DET o eventos DEM, ni criterios formales de reentrancia para este servicio, por lo que se omiten.

Esta nota de uso se ha generado automáticamente a partir de la especificación de AUTOSAR R20-11.

Guía del implementador pendiente (complejidad I1)

función LinSM_ScheduleRequestConfirmation [SWS_LinSM_00129] 📄 PDF

void LinSM_ScheduleRequestConfirmation (NetworkHandleType network, LinIf_SchHandleType schedule);

The Lin If module will call this callback when the new requested schedule table is active.

GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 966015905644 Procedencia Preguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

usar

La función LinSM_ScheduleRequestConfirmation actúa como interfaz de callback del módulo LinSM y posee el Service ID 0x20 [SWS_LinSM_00129]. Está disponible a través del archivo de encabezado LinSM.h y la LIN Interface (LinIf) la invoca en cuanto una nueva tabla de schedule solicitada previamente pasa a estar activa en el bus LIN [SWS_LinSM_00129].

La interfaz no tiene valor de retorno (void) y transfiere dos parámetros de entrada al LinSM [SWS_LinSM_00129]:

  • network (NetworkHandleType): sirve para la identificación unívoca del canal de comunicación LIN afectado [SWS_LinSM_00129].
  • schedule (LinIf_SchHandleType): transfiere el identificador o puntero a la tabla de schedule recién activada [SWS_LinSM_00129].

Concurrencia e interacción

La ejecución de LinSM_ScheduleRequestConfirmation está especificada como síncrona y reentrante [SWS_LinSM_00129]. No existen parámetros de entrada y salida (inout o out) [SWS_LinSM_00129]. La interacción tiene lugar estrechamente vinculada con el módulo LinIf, el cual llama a esta función de callback para confirmar el cambio de estado de la tabla de schedule al LinSM [SWS_LinSM_00129]. Interpretación: dado que LinIf actúa como llamador, es de suponer que el contexto de invocación esté vinculado al procesamiento de ejecución del controlador o la interfaz LinIf. Pregunta Q-500d6a653bfbaac0 (abierta)

Esta nota de uso se ha elaborado automáticamente a partir de la especificación AUTOSAR.

Guía del implementador pendiente (complejidad I1)

función LinSM_GotoSleepIndication [SWS_LinSM_91000] 📄 PDF

void LinSM_GotoSleepIndication (NetworkHandleType Channel);

The Lin If will call this callback when the go to sleep command is received on the network or a bus idle timeout occurs. Only applicable for LIN slave nodes.

GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: f0a8b1578ff8 Procedencia
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

La función de callback LinSM_GotoSleepIndication ([SWS_LinSM_91000]) sirve para notificar al LIN State Manager sobre el paso de un canal al estado de reposo. La llamada la realiza la LIN Interface (LinIf) tan pronto como se recibe un comando de go-to-sleep en la red o se produce un timeout de bus idle.

Uso y contexto de llamada

La función se ejecuta sincrónicamente y no tiene valor de retorno ([SWS_LinSM_91000]). Se proporciona a través de la cabecera LinSM.h y tiene el Service-ID 0x03. Su único parámetro sirve para la identificación del canal:

  • Channel (In): identifica el canal LIN afectado mediante el tipo NetworkHandleType ([SWS_LinSM_91000]).

No se especifican parámetros de entrada/salida (inout) ni parámetros de salida (out) ([SWS_LinSM_91000]).

Concurrencia y restricciones

En cuanto a la concurrencia, la interfaz está definida como reentrante ([SWS_LinSM_91000]). Una restricción funcional determinante concierne a la propiedad del nodo: el callback está previsto y es aplicable exclusivamente para nodos LIN slave ([SWS_LinSM_91000]).

Esta nota de uso se basa exclusivamente en los datos de especificación de AUTOSAR Release R20-11.

Guía del implementador pendiente (complejidad I1)

función LinSM_GotoSleepConfirmation [SWS_LinSM_00135] 📄 PDF

void LinSM_GotoSleepConfirmation (NetworkHandleType network, boolean success);

The Lin If will call this callback when the go to sleep command is sent successfully or not sent successfully on the network.

GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: cf9e1845fe84 Procedencia Preguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

La función de callback LinSM_GotoSleepConfirmation es llamada conforme a [SWS_LinSM_00135] por la LIN Interface (LinIf) en cuanto se ha transmitido un comando go-to-sleep en la red LIN o cuando la transmisión ha fallado.

Uso y parámetros

El callback posee el Service ID 0x22, se declara a través del encabezado LinSM.h y no tiene valor de retorno [SWS_LinSM_00135]. Para la identificación y la transmisión de estado se utilizan dos parámetros de transferencia:

  • network: identifica el canal LIN afectado mediante el tipo NetworkHandleType [SWS_LinSM_00135].
  • success: indica como valor booleano si el comando go-to-sleep se ha podido enviar correctamente por el bus (true) o no (false) [SWS_LinSM_00135].

Contexto de ejecución y concurrencia

La especificación define la llamada como síncrona y reentrante [SWS_LinSM_00135]. Interpretación: es de prever que el módulo LinSM actualice su estado interno para la red respectiva a partir del parámetro success y determine si se ha confirmado en el bus la transición al estado de reposo. Pregunta Q-b5dfd51188b9ff0b (abierta) En el payload no se especifican tratamientos de error, valores de retorno ni mensajes específicos de DET o DEM para esta interfaz [SWS_LinSM_00135].

Este texto ha sido generado por una IA; únicamente es vinculante la especificación de AUTOSAR.

Guía del implementador pendiente (complejidad I1)

función LinSM_WakeupConfirmation [SWS_LinSM_00132] 📄 PDF

void LinSM_WakeupConfirmation (NetworkHandleType network, boolean success);

The Lin If will call this callback when the wake up signal command is sent not successfully/ successfully on the network.

GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 3915bb7b7db1 Procedencia
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

La función de callback LinSM_WakeupConfirmation sirve en el LIN State Manager para confirmar el envío de una señal de wake-up en una red LIN [SWS_LinSM_00132]. Es llamada por la interfaz LIN (LinIf) en cuanto el comando para enviar la señal de wake-up se ha transmitido en la red con o sin éxito [SWS_LinSM_00132].

Para el contexto de llamada, la concurrencia y el paso de parámetros se aplican las siguientes características de especificación [SWS_LinSM_00132]:

  • Comportamiento de sincronización y reentrancia: la ejecución de la función es síncrona (Synchronous) y está clasificada como reentrante (Reentrant) [SWS_LinSM_00132].
  • Identificación del canal (network): el parámetro de entrada pasado de tipo NetworkHandleType designa el respectivo canal LIN en el que tuvo lugar el proceso de transmisión [SWS_LinSM_00132].
  • Estado de éxito (success): el parámetro booleano indica si la señal de wake-up se pudo enviar con éxito (true) o si la transmisión falló (false) [SWS_LinSM_00132].
  • Valor de retorno y parámetros de entrada/salida: la función no tiene valor de retorno (void) y no define parámetros de salida ni de entrada/salida [SWS_LinSM_00132].

La interfaz tiene el Service-ID 0x21 y se proporciona a través del archivo de cabecera LinSM.h [SWS_LinSM_00132]. En el elemento de especificación no se prescriben códigos de error específicos ni requisitos para el tratamiento de errores a través del módulo Default Error Tracer (DET) o Diagnostic Event Manager (DEM) [SWS_LinSM_00132].

Esta nota de uso se basa en la especificación AUTOSAR Classic Release R20-11.

tipo LinSM_ModeType [SWS_LinSM_00220] 📄 PDF

Type used to report the current mode to the Bsw M

GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 939c0e58134f Procedencia Preguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

El tipo de datos LinSM_ModeType es un tipo estándar del LIN State Manager que se basa en el tipo básico uint8 y se proporciona a través del encabezado LinSM.h [SWS_LinSM_00220]. El cometido principal de este tipo consiste en notificar el modo de comunicación actual de una red LIN al BSW Mode Management (BswM) [SWS_LinSM_00220].

Para LinSM_ModeType se especifican dos estados dentro del rango de valores [SWS_LinSM_00220]:

  • LINSM_FULL_COM (valor numérico 0x01): señala el estado de comunicación completa sin restricciones (Full communication) [SWS_LinSM_00220].
  • LINSM_NO_COM (valor numérico 0x02): identifica el estado sin comunicación en curso (No communication) [SWS_LinSM_00220].

En cuanto al tratamiento de errores y la concurrencia, la definición de tipo no contiene códigos de error propios, mensajes DET ni eventos DEM, ya que se trata de una declaración elemental de tipos [SWS_LinSM_00220]. Interpretación: es de suponer que la transferencia de valores de este tipo al BswM se lleve a cabo en el marco de cambios de estado de nivel superior del LinSM, debiendo los llamadores asegurarse de que no se transmitan valores inadmisibles fuera de los estados definidos. Pregunta Q-fe193732b8be2388 (abierta)

Esta nota de uso ha sido generada por una IA.

Guía del implementador pendiente (complejidad I1)

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

Record
AUTOSAR/AP/record/CP_MOD_LinSM
Status
unspecified
Version
AUTOSAR/AP/record/CP_MOD_LinSM@rel:R20-11#21c5f82b
Content hash
21c5f82b
Source
https://www.autosar.org/fileadmin/standards/R20-11/CP/AUTOSAR_SWS_LINStateManager.pdf#nameddest=SWS_LinSM_00155

Inicialización y estado

-

void LinSM_GetVersionInfo (Std_VersionInfoType* versioninfo);
LinSM_Init función

This function initializes the Lin SM.

void LinSM_Init (const LinSM_ConfigType* ConfigPtr);

Servicios

Function to query the current communication mode.

Std_ReturnType LinSM_GetCurrentComMode (NetworkHandleType network, ComM_ModeType* mode);

The Lin If will call this callback when the go to sleep command is sent successfully or not sent successfully on the network.

void LinSM_GotoSleepConfirmation (NetworkHandleType network, boolean success);

The Lin If will call this callback when the go to sleep command is received on the network or a bus idle timeout occurs. Only applicable for LIN slave nodes.

void LinSM_GotoSleepIndication (NetworkHandleType Channel);

Requesting of a communication mode. The mode switch will not be made instant. The Lin SM will notify the caller when mode transition is made.

Std_ReturnType LinSM_RequestComMode (NetworkHandleType network, ComM_ModeType mode);

The upper layer requests a schedule table to be changed on one LIN network.

Std_ReturnType LinSM_ScheduleRequest (NetworkHandleType network, LinIf_SchHandleType schedule);

The Lin If module will call this callback when the new requested schedule table is active.

void LinSM_ScheduleRequestConfirmation (NetworkHandleType network, LinIf_SchHandleType schedule);

The Lin If will call this callback when the wake up signal command is sent not successfully/ successfully on the network.

void LinSM_WakeupConfirmation (NetworkHandleType network, boolean success);

Cíclico

Periodic function that runs the timers of different request timeouts

void LinSM_MainFunction (void);

Tipos

Data structure type for the post - build configuration parameters.

Type used to report the current mode to the Bsw M