mitives L-ESTABLISH etc.*/ CHOICE{ ENDSYNTYPE ; L_EstabReg(DLCident), I Iframe, L_Establnd(DLCident), SABME SABMEframe, NEWTYPE Iframe L_EstabResp, DM DMframe, STRUCT L_EstabConf(DLCident), DISC DISCframe, DLCi DLCident; L_SetparmReq, UA UAframe, data Integer; L_SetparmInd, XIDcmd XIDframe, CRC Integer; L_SetparmResp, XIDresp XIDframe } OPERATORS L_SetparmConf, ENDNEWTYPE ; fill_lframe: DLCident, Integer, Integer L_ReleaseReq(DLCident), -> Iframe; L_Releaselnd(DLCident), SYNONYMmaxDLC Integer = 1; OPERATOR fill_lframe; L_DataReg(DLCident, Integer), FPAR dlc DLCident, D Integer, L_Datalnd(DLCident, Integer); /* DLC Identifier: */ Crc Integer; SYNTYPE DLCident = RETURNS res Iframe; SIGNAL Integer CONSTANTS 0 : maxDLC START ; /* V.76 commands and responses. */ ENDSYNTYPE; TASK res := (. dlc, D, Crc.); V76frame(V76paramTyp); RETURN res; NEWTYPE SABMEframe ENDOPERATOR ; /* Service User to DLC: */ STRUCT ENDNEWTYPE ; SIGNALLIST su2dlc= DLCi DLCident; L_EstabReq, ENDNEWTYPE: L_EstabResp, L_SetparmReq, NEWTYPE DMframe L_SetparmResp, STRUCT L_ReleaseReq, A block DLCi DLCident; V76_DLC L_DataReq; ENDNEWTYPE ; /* DLC to Service User: */ NEWTYPE DISCframe SIGNALLIST dlc2su= STRUCT L_Establnd, DLCi DLCident; L_EstabConf, ENDNEWTYPE ; L_SetparmInd, L_SetparmConf, NEWTYPE UAframe CRCok This procedure L_Releaselnd, checks the CRC STRUCT L_Datalnd; DLCi DLCident; ENDNEWTYPE Figure 3.10 The package V76 32 Validation of Communications Systems with SDL As we will see later, we create one instance of process DLC on each side of the connection to handle each DLC; then, when a DLC is released, we stop the two corresponding process instances. For example, if three DLCs are created, we will have three instances of process DLC on each side of the connection; then three independent data transfers (through I frames) may occur several times before releasing one or more DLCs. To simplify, we have not modeled the allocation of DLC numbers: we suppose that the user provides the DLC number as a parameter of the L_EstabReq signal when he wants to