Figure 17: Go-to-sleep command process
d9b52040f3c6df7e33d5c05da9bc28f9bf50c71832bad00e729bfced128211dc
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 einem generischen LinIf-Nutzer (LinIf User), 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» LinIf User: Generischer oberer Nutzer des LIN Interface (z. B. LinSM).
- «module» LinIf: LIN Interface (Schnittstellenmodul).
- «module» Lin: LIN Driver (MCAL), markiert mit Mehrfachinstanz-Symbol.
- «module» LinTrcv: LIN Transceiver Driver (MCAL).
Schnittstellen und Nachrichten:
- LinIf_GotoSleep(Channel) : Std_ReturnType
- LinIf_MainFunction()
- Lin_GoToSleep(Channel)
- Lin_GoToSleepInternal(Channel)
- Lin_GetStatus(Channel, Lin_SduPtr) : Lin_StatusType
- Returnwert Lin_GetStatus(): LIN_CH_SLEEP
- Lokale Operation: SetMode()
- <User>_GotoSleepConfirmation(channel, TRUE)
- LinIf_SetTrcvMode(Channel, LINTRCV_TRCV_MODE_SLEEP)
- LinTrcv_SetOpMode(LinNetwork, LINTRCV_TRCV_MODE_SLEEP)
3. Dynamisches Verhalten & Sequenzablauf
- Einleitung des Schlafmodus: Der
LinIf Userruft synchronLinIf_GotoSleep(Channel)am LinIf auf, welches mitStd_ReturnTypeantwortet. - 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-TreiberLin_GoToSleep(Channel)auf. - Zweig
[channel is in sleep mode]: DieLinIf_MainFunction()ruft am Lin-TreiberLin_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 meldet den Erfolg über<User>_GotoSleepConfirmation(channel, TRUE)an denLinIf User. - Transceiver-Abschaltung: Innerhalb des bedingten Abschnitts
opt Transceiver Driver is supportedruft derLinIf UserdaraufhinLinIf_SetTrcvMode(Channel, LINTRCV_TRCV_MODE_SLEEP)auf. LinIf delegiert den Aufruf synchron viaLinTrcv_SetOpMode(LinNetwork, LINTRCV_TRCV_MODE_SLEEP)an den Treiber LinTrcv.
4. Normative Relevanz & Entwickler-Hinweise
Die Sequenz entkoppelt die obere Softwareschicht abstrakt als LinIf User von spezifischen Zustandsmanagern. Die Transceiver-Ansteuerung ist optional ausgeführt (opt Transceiver Driver is supported), sodass Systeme ohne separaten Transceiver-Treiber konform bleiben. Der Aufruf von LinIf_SetTrcvMode erfolgt erst nach erfolgreichem Bestätigungs-Callback <User>_GotoSleepConfirmation.
Zugeordnete Anforderungen
Diese Angaben zeigt der Versions-Explorer.