📄 accesscontrol.c
字号:
#endif
/*****
* BLOCK LocalStation
* <<SYSTEM AccessControl>>
* #SDTREF(SDL,D:\TelelogicTau36\examples\courseenv\simccode\ACCESS\LocalStation.sbk,4,1)
******/
XCONST struct xBlockIdStruct yBloR_z0_LocalStation = {xBlockEC
xSymbTLink((xIdNode)0, (xIdNode)0), (xIdNode)&ySysR_z_AccessControl
xIdNames("LocalStation") XCOMMON_EXTRAS, (xBlockIdNode)0, (xIdNode *)0,
(xPrdIdNode *)0, (xViewListRec *)0, 1 xTrace(-1) xGRTrace(-1) xMSCETrace(-1)
xMSCETrace(0) XBLO_EXTRAS};
#ifndef XOPTCHAN
XCONST xIdNode yChaOR_z2_LtotE[] = {(xIdNode)&yChaRR_z003_DtoE,
(xIdNode)&yChaRR_z007_PtotE, (xIdNode)0};
XCONST xIdNode yChaOR_z3_LtotCU[] = {(xIdNode)&yChaRR_z005_CtotCU, (xIdNode)0};
#endif
/*****
* SUBSTRUCTURE LocalStation
* <<SYSTEM AccessControl/BLOCK LocalStation>>
* #SDTREF(SDL,D:\TelelogicTau36\examples\courseenv\simccode\ACCESS\LocalStation.sbk,4,1)
******/
XCONST struct xBlockSubstIdStruct yBSuR_z00_LocalStation = {xBlocksubstEC
xSymbTLink((xIdNode)0, (xIdNode)0), (xIdNode)&yBloR_z0_LocalStation
xIdNames("LocalStation") XCOMMON_EXTRAS XBLS_EXTRAS};
/*****
* BLOCK DoorControl
* <<SYSTEM AccessControl/BLOCK LocalStation/SUBSTRUCTURE LocalStation>>
* #SDTREF(SDL,D:\TelelogicTau36\examples\courseenv\simccode\ACCESS\DoorControl.sbk,4,1)
******/
XCONST struct xBlockIdStruct yBloR_z000_DoorControl = {xBlockEC
xSymbTLink((xIdNode)0, (xIdNode)0), (xIdNode)&yBSuR_z00_LocalStation
xIdNames("DoorControl") XCOMMON_EXTRAS, (xBlockIdNode)0, (xIdNode *)0,
(xPrdIdNode *)0, (xViewListRec *)0, 1 xTrace(-1) xGRTrace(-1) xMSCETrace(-1)
xMSCETrace(0) XBLO_EXTRAS};
#ifndef XOPTCHAN
XCONST xIdNode yChaOR_z003_DtoE[] = {(xIdNode)&yChaRR_z0004_DCtoE, (xIdNode)0};
XCONST xIdNode yChaO_z004_DtotC[] = {(xIdNode)&yChaRR_z0005_DCtotC,
(xIdNode)&yChaRR_z0006_DMtotC, (xIdNode)0};
#endif
/*****
* PROCESS DoorController
* <<SYSTEM AccessControl/BLOCK LocalStation/SUBSTRUCTURE LocalStation
* /BLOCK DoorControl>>
* #SDTREF(SDL,D:\TelelogicTau36\examples\courseenv\simccode\ACCESS\DoorController.spr,1,1)
******/
#ifdef XCOVERAGE
long int yPrsC_z0002_DoorController[ySym_z0002_DoorController+1];
#endif
XCONST XSIGTYPE yPrsS_z0002_DoorController[] = {SIGNAL_NAME(OpenDoor,
&ySigR_z00A_OpenDoor), SIGNAL_NAME(DoorTimer, &ySigR_z00023_DoorTimer),
(XSIGTYPE)0};
XCONST xStateIdNode yPrsT_z0002_DoorController[] = {&xStartStateIdRec,
&yStaR_z00021_WaitOpenDoor, &yStaR_z00022_Wait};
static XPRSNODE yPrsA_z0002_DoorController = (XPRSNODE)0;
static XPRSNODE yPrsB_z0002_DoorController = (XPRSNODE)0;
XCONST struct xPrsIdStruct yPrsR_z0002_DoorController = {xProcessEC
xSymbTLink((xIdNode)0, (xIdNode)0), (xIdNode)&yBloR_z000_DoorControl
xIdNames("DoorController") XCOMMON_EXTRAS, yPrsT_z0002_DoorController,
yPrsS_z0002_DoorController xService(0) xOptChan(yPrsO_z0002_DoorController),
SDL_INTEGER_LIT(4) xNrInst(1) xNrInst(SDL_INTEGER_LIT(0)),
&yPrsB_z0002_DoorController, (xptrint)sizeof(yVDef_z0002_DoorController)
xPrsPrioPar(xDefaultPrioProcess), &yPrsA_z0002_DoorController xTrace(-1)
xGRTrace(-1) xBreakB(yRef_z0002_DoorController)
xBreakB(ySym_z0002_DoorController) xBreakB(2) xMSCETrace(-1)
xCoverage(yPrsC_z0002_DoorController) xCoverage(0) xCoverage(0),
yPAD_z0002_DoorController, yFree_z0002_DoorController, (xPrsIdNode)0,
(xPrdIdNode *)0, (xBlockIdNode)0
xBreakB("#SDTREF(SDL,D:\\TelelogicTau36\\examples\\courseenv\\simccode\\ACCESS\\DoorController.spr,1,1)")
XPRS_EXTRAS(z0002_DoorController)};
#ifndef XNOSTARTUPIDNODE
static xSignalNode ySigA_z0002_DoorController = (xSignalNode)0;
XCONST struct xSignalIdStruct ySigR_z0002_DoorController = {xStartUpSignalEC
xSymbTLink((xIdNode)0, (xIdNode)0), (xIdNode)&yBloR_z000_DoorControl
xIdNames("-") XCOMMON_EXTRAS, (xptrint)sizeof(yPDef_z0002_DoorController),
&ySigA_z0002_DoorController, 0 xFreS(0) SIGCODE(STARTUPSIGNAL)
xBreakB("#SDTREF(SDL,D:\\TelelogicTau36\\examples\\courseenv\\simccode\\ACCESS\\DoorController.spr,1,1)")
xSigPrioPar(xDefaultPrioSignal) XSIG_EXTRAS};
#endif
XPROCESSDEF_C(DoorController,"DoorController",z0002_DoorController,
yPAD_z0002_DoorController,yVDef_z0002_DoorController)
#ifndef XOPTCHAN
XCONST xIdNode yPrsO_z0002_DoorController[] = {(xIdNode)&yChaR_z0004_DCtoE,
(xIdNode)&yChaR_z0005_DCtotC, (xIdNode)0};
#endif
#ifndef XNOPROTO
void yFree_z0002_DoorController(void *yVarP)
#else
void yFree_z0002_DoorController(yVarP)
void *yVarP;
#endif
{
}
/*+++++
* GR ref function for process DoorController
* #SDTREF(SDL,D:\TelelogicTau36\examples\courseenv\simccode\ACCESS\DoorController.spr,1,1)
++++++*/
#ifdef XBREAKBEFORE
#ifndef XNOPROTO
extern char * yRef_z0002_DoorController (int SymbolNo, xSymbolType *SymbolType)
#else
extern char * yRef_z0002_DoorController (SymbolNo, SymbolType)
int SymbolNo;
xSymbolType *SymbolType;
#endif
{
switch (SymbolNo) {
case 0: *SymbolType = xsStart;
return "#SDTREF(SDL,D:\\TelelogicTau36\\examples\\courseenv\\simccode\\ACCESS\\DoorController.spr(1),119(20,35),1)";
case 1: *SymbolType = xsInput;
return "#SDTREF(SDL,D:\\TelelogicTau36\\examples\\courseenv\\simccode\\ACCESS\\DoorController.spr(1),134(55,50),1)";
case 2: *SymbolType = xsInput;
return "#SDTREF(SDL,D:\\TelelogicTau36\\examples\\courseenv\\simccode\\ACCESS\\DoorController.spr(1),185(95,50),1)";
case 3: *SymbolType = xsNextstate;
return "#SDTREF(SDL,D:\\TelelogicTau36\\examples\\courseenv\\simccode\\ACCESS\\DoorController.spr(1),125(20,50),1)";
case 4: *SymbolType = xsOutput;
return "#SDTREF(SDL,D:\\TelelogicTau36\\examples\\courseenv\\simccode\\ACCESS\\DoorController.spr(1),140(55,65),1,1)";
case 5: *SymbolType = xsOutput;
return "#SDTREF(SDL,D:\\TelelogicTau36\\examples\\courseenv\\simccode\\ACCESS\\DoorController.spr(1),146(55,80),1,1)";
case 6: *SymbolType = xsSet;
return "#SDTREF(SDL,D:\\TelelogicTau36\\examples\\courseenv\\simccode\\ACCESS\\DoorController.spr(1),209(55,95),1,1)";
case 7: *SymbolType = xsNextstate;
return "#SDTREF(SDL,D:\\TelelogicTau36\\examples\\courseenv\\simccode\\ACCESS\\DoorController.spr(1),203(55,110),1)";
case 8: *SymbolType = xsOutput;
return "#SDTREF(SDL,D:\\TelelogicTau36\\examples\\courseenv\\simccode\\ACCESS\\DoorController.spr(1),182(95,65),1,1)";
case 9: *SymbolType = xsNextstate;
return "#SDTREF(SDL,D:\\TelelogicTau36\\examples\\courseenv\\simccode\\ACCESS\\DoorController.spr(1),191(95,80),1)";
default : *SymbolType = xsNoSuchSymbolType; return "";
}
}
#endif
/*+++++
* Function for process DoorController
* #SDTREF(SDL,D:\TelelogicTau36\examples\courseenv\simccode\ACCESS\DoorController.spr,1,1)
++++++*/
YPAD_FUNCTION(yPAD_z0002_DoorController)
{
YPAD_YSVARP
YPAD_YVARP(yVDef_z0002_DoorController)
YPAD_TEMP_VARS
YPRSNAME_VAR("DoorController")
BEGIN_PAD(yVDef_z0002_DoorController)
LOOP_LABEL
switch (yVarP->RestartAddress) {
/*-----
* START
* #SDTREF(SDL,D:\TelelogicTau36\examples\courseenv\simccode\ACCESS\DoorController.spr(1),119(20,35),1)
------*/
case 0:
BEGIN_START_TRANSITION(yPDef_z0002_DoorController)
yAssF_z_AccessLibrary_H_DoorNoType(yVarP->z00020_DoorNo,
yTstA_z_AccessLibrary_H_DoorNoType(((yPDef_z0002_DoorController *)ySVarP)->Param1),
XASS_AR_ASS_NF);
XAT_FIRST_SYMBOL(0)
INIT_TIMER_VAR(yTim_DoorTimer)
XBETWEEN_SYMBOLS(3, 1517)
/*-----
* NEXTSTATE WaitOpenDoor
* #SDTREF(SDL,D:\TelelogicTau36\examples\courseenv\simccode\ACCESS\DoorController.spr(1),125(20,50),1)
------*/
#ifdef XCASELABELS
case 3:
#endif
XAT_LAST_SYMBOL
SDL_NEXTSTATE(WaitOpenDoor, z00021_WaitOpenDoor, "WaitOpenDoor")
/*-----
* INPUT OpenDoor
* #SDTREF(SDL,D:\TelelogicTau36\examples\courseenv\simccode\ACCESS\DoorController.spr(1),134(55,50),1)
------*/
case 1:
XDEBUG_LABEL(WaitOpenDoor_OpenDoor)
XAT_FIRST_SYMBOL(1)
XOS_TRACE_INPUT("OpenDoor")
XBETWEEN_SYMBOLS(4, 1537)
/*-----
* OUTPUT Open
* #SDTREF(SDL,D:\TelelogicTau36\examples\courseenv\simccode\ACCESS\DoorController.spr(1),140(55,65),1,1)
------*/
#ifdef XCASELABELS
case 4:
#endif
ALLOC_SIGNAL_PAR(Open, ySigN_z4_Open, TO_PROCESS(Env, &yEnvR_env),
yPDef_z4_Open)
SIGNAL_ALLOC_ERROR
yAssF_SDL_Integer(((yPDef_z4_Open *)OUTSIGNAL_DATA_PTR)->Param1, yVarP->
z00020_DoorNo, XASS_MR_ASS_NF);
SDL_2OUTPUT_COMPUTED_TO(xDefaultPrioSignal, (xIdNode *)0, Open,
ySigN_z4_Open, TO_PROCESS(Env, &yEnvR_env), sizeof(yPDef_z4_Open), "Open")
SIGNAL_ALLOC_ERROR_END
XBETWEEN_SYMBOLS(5, 1554)
/*-----
* OUTPUT DoorOpened
* #SDTREF(SDL,D:\TelelogicTau36\examples\courseenv\simccode\ACCESS\DoorController.spr(1),146(55,80),1,1)
------*/
#ifdef XCASELABELS
case 5:
#endif
ALLOC_SIGNAL(DoorOpened, ySigN_z00B_DoorOpened, TO_PROCESS(Controller,
yPrsN_z0013_Controller), XSIGNALHEADERTYPE)
SIGNAL_ALLOC_ERROR
SDL_2OUTPUT_COMPUTED_TO(xDefaultPrioSignal, (xIdNode *)0, DoorOpened,
ySigN_z00B_DoorOpened, TO_PROCESS(Controller, yPrsN_z0013_Controller), 0,
"DoorOpened")
SIGNAL_ALLOC_ERROR_END
XBETWEEN_SYMBOLS(6, 1570)
/*-----
* SET DoorTimer
* #SDTREF(SDL,D:\TelelogicTau36\examples\courseenv\simccode\ACCESS\DoorController.spr(1),209(55,95),1,1)
------*/
#ifdef XCASELABELS
case 6:
#endif
SDL_SET_DUR(xPlus_SDL_Time(SDL_NOW, zF_DOORTIMEOUT), zF_DOORTIMEOUT,
DoorTimer, ySigN_z00023_DoorTimer, yTim_DoorTimer, "DoorTimer")
XBETWEEN_SYMBOLS(7, 1581)
/*-----
* NEXTSTATE Wait
* #SDTREF(SDL,D:\TelelogicTau36\examples\courseenv\simccode\ACCESS\DoorController.spr(1),203(55,110),1)
------*/
#ifdef XCASELABELS
case 7:
#endif
XAT_LAST_SYMBOL
SDL_NEXTSTATE(Wait, z00022_Wait, "Wait")
/*-----
* INPUT DoorTimer
* #SDTREF(SDL,D:\TelelogicTau36\examples\courseenv\simccode\ACCESS\DoorController.spr(1),185(95,50),1)
------*/
case 2:
XDEBUG_LABEL(Wait_DoorTimer)
XAT_FIRST_SYMBOL(2)
XOS_TRACE_INPUT("DoorTimer")
INPUT_TIMER_VAR(yTim_DoorTimer)
XBETWEEN_SYMBOLS(8, 1602)
/*-----
* OUTPUT Close
* #SDTREF(SDL,D:\TelelogicTau36\examples\courseenv\simccode\ACCESS\DoorController.spr(1),182(95,65),1,1)
------*/
#ifdef XCASELABELS
case 8:
#endif
ALLOC_SIGNAL_PAR(Close, ySigN_z5_Close, TO_PROCESS(Env, &yEnvR_env),
yPDef_z5_Close)
SIGNAL_ALLOC_ERROR
yAssF_SDL_Integer(((yPDef_z5_Close *)OUTSIGNAL_DATA_PTR)->Param1, yVarP->
z00020_DoorNo, XASS_MR_ASS_NF);
SDL_2OUTPUT_COMPUTED_TO(xDefaultPrioSignal, (xIdNode *)0, Close,
ySigN_z5_Close, TO_PROCESS(Env, &yEnvR_env), sizeof(yPDef_z5_Close),
"Close")
SIGNAL_ALLOC_ERROR_END
XBETWEEN_SYMBOLS(9, 1620)
/*-----
* NEXTSTATE WaitOpenDoor
* #SDTREF(SDL,D:\TelelogicTau36\examples\courseenv\simccode\ACCESS\DoorController.spr(1),191(95,80),1)
------*/
#ifdef XCASELABELS
case 9:
#endif
XAT_LAST_SYMBOL
SDL_NEXTSTATE(WaitOpenDoor, z00021_WaitOpenDoor, "WaitOpenDoor")
}
}
/*****
* STATE WaitOpenDoor
* <<SYSTEM AccessControl/BLOCK LocalStation/SUBSTRUCTURE LocalStation
* /BLOCK DoorControl/PROCESS DoorController>>
* #SDTREF(SDL,D:\TelelogicTau36\examples\courseenv\simccode\ACCESS\DoorController.spr(1),128(55,35),1,1)
******/
static XCONST xInputAction yStaH_z00021_WaitOpenDoor[] = {xInput, xDiscard,
xDiscard};
static XCONST XINPUTREFTYPE yStaI_z00021_WaitOpenDoor[] = {1, 0, 0};
#ifdef XCOVERAGE
static long int yStaC_z00021_WaitOpenDoor[2+1];
#endif
XCONST struct xStateIdStruct yStaR_z00021_WaitOpenDoor = {xStateEC
xSymbTLink((xIdNode)0, (xIdNode)0), (xIdNode)&yPrsR_z0002_DoorController
xIdNames("WaitOpenDoor") XCOMMON_EXTRAS, z00021_WaitOpenDoor,
yStaH_z00021_WaitOpenDoor, yStaI_z00021_WaitOpenDoor, 0, 0, 0
xCoverage(yStaC_z00021_WaitOpenDoor), (xStateIdNode)0
xBreakB("#SDTREF(SDL,D:\\TelelogicTau36\\examples\\courseenv\\simccode\\ACCESS\\DoorController.spr(1),128(55,35),1,1)")
XSTA_EXTRAS};
/*****
* STATE Wait
* <<SYSTEM AccessControl/BLOCK LocalStation/SUBSTRUCTURE LocalStation
* /BLOCK DoorControl/PROCESS DoorController>>
* #SDTREF(SDL,D:\TelelogicTau36\examples\courseenv\simccode\ACCESS\DoorController.spr(1),188(95,35),1,1)
******/
static XCONST xInputAction yStaH_z00022_Wait[] = {xDiscard, xInput, xDiscard};
static XCONST XINPUTREFTYPE yStaI_z00022_Wait[] = {0, 2, 0};
#ifdef XCOVERAGE
static long int yStaC_z00022_Wait[2+1];
#endif
XCONST struct xStateIdStruct yStaR_z00022_Wait = {xStateEC
xSymbTLink((xIdNode)0, (xIdNode)0), (xIdNode)&yPrsR_z0002_DoorController
xIdNames("Wait") XCOMMON_EXTRAS, z00022_Wait, yStaH_z00022_Wait,
yStaI_z00022_Wait, 0, 0, 0 xCoverage(yStaC_z00022_Wait), (xStateIdNode)0
xBreakB("#SDTREF(SDL,D:\\TelelogicTau36\\examples\\courseenv\\simccode\\ACCESS\\DoorController.spr(1),188(95,35),1,1)")
XSTA_EXTRAS};
/*****
* FPAR DoorNo
* <<SYSTEM AccessControl/BLOCK LocalStation/SUBSTRUCTURE LocalStation
* /BLOCK DoorControl/PROCESS DoorController>>
* #SDTREF(SDL,D:\TelelogicTau36\examples\courseenv\simccode\ACCESS\DoorController.spr,1,2,3)
******/
#ifndef XOPTFPAR
XCONST struct xVarIdStruct yVarR_z00020_DoorNo = {xFormalParEC
xSymbTLink((xIdNode)0, (xIdNode)0), (xIdNode)&yPrsR_z0002_DoorController
xIdNames("DoorNo") XCOMMON_EXTRAS, &ySrtR_z_AccessLibrary_H_DoorNoType,
xOffsetOf(yVDef_z0002_DoorController, z00020_DoorNo),
xOffsetOf(yPDef_z0002_DoorController, Param1), 0 XVAR_EXTRAS};
#endif
/*****
* TIMER DoorTimer
* <<SYSTEM AccessControl/BLOCK LocalStation/SUBSTRUCTURE LocalStation
* /BLOCK DoorControl/PROC
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -