Figure 17: Go-to-sleep command process
51b4cb14f4361f7b0c9fe8c0b20dd5f175afc21afc3dc8b347d5c4e2bbf52d3a
1. Diagrammtyp & Architektur-Kontext
UML-Sequenzdiagramm zur Spezifikation des Go-To-Sleep-Ablaufs (Übergang in den Schlafmodus) im Kommunikations-Stack der AUTOSAR Classic Platform. Das Diagramm zeigt die Interaktion zwischen dem Communication Manager (ComM), dem LIN State Manager (LinSM), der LIN-Schnittstelle (LinIf), dem LIN-Treiber (Lin) und dem LIN-Transceiver-Treiber (LinTrcv), gesteuert durch periodische Aufrufe einer Basessoftware-Task (BSW Task).
2. Komponenten, Entitäten & Schnittstellen
Beteiligte Entitäten und Lebenslinien:
- BSW Task (OS task or cyclic call): Zyklischer Task-Kontext zur periodischen Ausführung der Hauptfunktionen.
- «module» ComM: Kommunikationsmanager, fordert Kommunikationsmodi an.
- «module» LinSM: LIN State Manager, koordiniert LIN-Zustände.
- «module» LinIf: LIN Interface (Schnittstellenmodul).
- «module» Lin: LIN Driver (MCAL), markiert mit Dekonstruktions-/Mehrfachinstanz-Symbol.
- «module» LinTrcv: LIN Transceiver Driver (MCAL).
Schnittstellen und Nachrichten:
- LinSM_RequestComMode(channel, COMM_NO_COMMUNICATION) : Std_ReturnType
- LinIf_GotoSleep(Channel) : Std_ReturnType
- LinIf_MainFunction()
- Lin_GoToSleep(Channel) : Std_ReturnType
- Lin_GoToSleepInternal(Channel) : Std_ReturnType
- Lin_GetStatus(Channel, Lin_SduPtr) : Lin_StatusType
- Returnwert Lin_GetStatus(): LIN_CH_SLEEP
- Lokale Operation: SetMode()
- LinSM_GotoSleepConfirmation(network, TRUE)
- LinIf_SetTrcvMode(Channel, LINTRCV_TRCV_MODE_SLEEP)
- LinTrcv_SetOpMode(LinNetwork, LINTRCV_TRCV_MODE_SLEEP) : Std_ReturnType
3. Dynamisches Verhalten & Sequenzablauf
- Einleitung des Schlafmodus: ComM ruft synchron
LinSM_RequestComMode(channel, COMM_NO_COMMUNICATION)am LinSM auf. Dieser delegiert die Anforderung synchron mittelsLinIf_GotoSleep(Channel)an das LinIf, welches den Aufruf mitStd_ReturnTypebestätigt. - Zyklische Abarbeitung über BSW Task: Die BSW-Task ruft zyklisch
LinIf_MainFunction()auf. - Fallunterscheidung über
alt Channel state:- Zweig
[channel is not in sleep mode]: DieLinIf_MainFunction()ruft am Lin-Treiber synchronLin_GoToSleep(Channel)auf. - Zweig
[channel is in sleep mode]: DieLinIf_MainFunction()ruft am Lin-Treiber synchronLin_GoToSleepInternal(Channel)auf.
- Zweig
- Statusüberprüfung und Quittierung: Bei einem weiteren Aufruf von
LinIf_MainFunction()fragt LinIf mittelsLin_GetStatus(Channel, Lin_SduPtr)den Treiberstatus ab. Nach Erhalt des StatusLIN_CH_SLEEPführt LinIf internSetMode()aus und sendet die asynchrone BestätigungLinSM_GotoSleepConfirmation(network, TRUE)an den LinSM. - Transceiver-Abschaltung: LinSM stößt die Umschaltung des Transceivers über
LinIf_SetTrcvMode(Channel, LINTRCV_TRCV_MODE_SLEEP)an. LinIf leitet dies synchron alsLinTrcv_SetOpMode(LinNetwork, LINTRCV_TRCV_MODE_SLEEP)an das Modul LinTrcv weiter.
4. Normative Relevanz & Entwickler-Hinweise
Die Sequenz definiert das standardisierte synchrone und asynchrone Zusammenspiel zwischen LinSM, LinIf, Lin und LinTrcv beim Herunterfahren eines LIN-Kanals. Die eigentliche Zustandsüberprüfung im Treiber und die Kanalstilllegung erfolgen entkoppelt über die zyklische LinIf_MainFunction(). Transceiver-Zustandswechsel erfolgen erst nach Bestätigung des Schlafzustands durch das Lin-Treibermodul. Der Rückgabewert LIN_CH_SLEEP signalisiert den erfolgreichen Abschluss des Schlafzustandsübergangs auf Busebene.
Zugeordnete Anforderungen
Diese Angaben zeigt der Versions-Explorer.