⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 accesscontrol.c

📁 此文档主要描述了话音呼叫控制中对各状态的控制
💻 C
📖 第 1 页 / 共 5 页
字号:
#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 + -