DEENESPTFRRUARHIKOZHNL
CLASSIC Modul: std Rolle: constitutive Konfidenz: 95%

SNIP_CLASSIC_STD_SECTION_9_10_Start_CAN_network

Quelle: SWS_CANInterface.pdf (Seite 156) • Ziel-Anforderung: SWS_Std_00005

Wortlaut

9.10 Start CAN network CanIf User «module» CanIf «module» Can «Peripheral» CanController alt CAN Controller Mode [STOPPED] [STOPPED with direct indication] [STARTED] [SLEEP] CAN controller mode changes to START                                                                                                               !!       "                   loop Requesting CAN controller mode consecutively. If mode changed -> CanIf_ControllerModeIndication()   "   #      #   $      "                   CanIf_ControllerModeIndication(Controller, ControllerMode) <User_ControllerModeIndication>(uint8, Can_ControllerStateType) CanIf_ControllerModeIndication(uint8, Can_ControllerStateType) Can_SetControllerMode returns with E_OK() <User_ControllerModeIndication>(uint8, Can_ControllerStateType) Disable Wakeup interrupt, if supported() request CAN controller mode transition to START() Can_MainFunction_Mode() CanIf_SetControllerMode(Std_ReturnType, uint8, Can_ControllerStateType) Can_SetControllerMode(Std_ReturnType, uint8, Can_ControllerStateType) Can_SetControllerMode returns with E_NOT_OK() Can_SetControllerMode returns with E_OK() CanIf_SetControllerMode returns with E_OK() CanIf_SetControllerMode returns with E_NOT_OK() CanIf_ControllerModeIndication() <User_ControllerModeIndication>(uint8, Can_ControllerStateType) CanIf_ControllerModeIndication(uint8, Can_ControllerStateType) CanIf_ControllerMode returns with E_OK() <User_ControllerModeIndication>() CanIf_ControllerModeIndication() <User_ControllerModeIndication>() <User_ControllerModeIndication>() CanIf_ControllerModeIndication() CanIf_SetControllerMode returns with E_OK() Can_SetControllerMode returns with E_OK() Figure 9.10: Start CAN network This sequence diagram resembles "Stop CAN network" or "Sleep CAN network". Activity Description Loop requesting CAN controller mode consecutively. The Can_MainFunction_Mode() is triggered consecutively. It checks the HW if a controller mode has changed. If so, it is notified via a function call of CanIf_ControllerModeIndication (Controller, ControllerMode). The upper layer requests " STARTED" mode of the desired CAN controller The upper layer calls CanIf_SetControllerMode (ControllerId, CAN_CS_STARTED) to request STARTED mode for the requested CAN controller. CanDrv disables wake up interrupts, if supported This is only done in case of requesting "STARTED" mode. If " SLEEP" mode of CAN controller is requested, here the wake up interrupts are enabled. In case of "STOPPED", nothing happens. CanDrv requests the CAN controller to transition into the requested mode (CAN_ CS_STARTED). During function call Can_SetControllerMode(Controller, Can_ControllerStateType), the CanDrv enters the request into the hardware of the CAN controller. This may mean that the controller mode transitions directly, but it could mean that it takes a few milliseconds until the controller changes its state. It depends on the controllers. The following reaction depends on the controller and its current operation mode CAN controller was in STOPPED mode The former request Can_SetControllerMode() returns and informs CanIf about a successful request which in turn returns the upper layer request CanIf_SetControllerMode(). The Can_ MainFunction_Mode() detects the successful mode transition of the CAN controller and inform the CanIf asynchronously via CanIf_ControllerModeIndication(Controller, CAN_ CS_STARTED). CAN controller was in STOPPED mode and the CAN controller transitions very fast so that mode indication is called during transition request During the former request Can_SetControllerMode() the function CanIf_ControllerModeIndication(Controller, CAN_CS_STARTED) is called to inform the CanIf directly about the successful mode transition. When CanIf_ ControllerModeIndication(Controller, CAN_CS_ STARTED) returned, the request Can_SetControllerMode() returns and informs CanIf about a successful request which in turn returns the upper layer request CanIf_SetControllerMode(). CAN controller was in STARTED mode During the former request Can_SetControllerMode() the function CanIf_ControllerModeIndication(Controller, CAN_CS_STARTED) is called to inform the CanIf directly about the successful mode transition (because the mode was already started). When CanIf_ControllerModeIndication (Controller, CAN_CS_STARTED) returned, the request Can_ SetControllerMode() returns and informs CanIf about a successful request which in turn returns the upper layer request CanIf_SetControllerMode(). CAN controller was in SLEEP mode This transition is not allowed -> E_NOT_OK.

Versionen & Provenienz · Zugeordnete Anforderungen

Diese Angaben zeigt der Versions-Explorer.

Begründung & Zuweisungs-Evidenz

Cited verbatim in the snippet (deterministic citation).

Dokumenten-Herkunft & Rückverfolgbarkeit

Spezifikations-Dokument SWS_CANInterface.pdf
Dokumentseite Seite 156
Ziel-Modul std (classic)
Ziel-Anforderung SWS_Std_00005
Semantische Rolle constitutive
Automatisierungs-Konfidenz 0.95