 instances of DLC. 7 In a real situation, it should be safer to check that Offspring does not contain Null after the create request, meaning that the creation of the process instance failed. The V.76 Protocol Case Study 33 (dlc2su) (su2dlc) block type V76_DLC SIGNAL dlcSU (dlc2su) L_Datalnd, DLCstopped(DLCident); (su2dlc) L_EstabConf Initially 0 instances, dispatch(1, 1) maximum maxDLC+1 DLC(0, maxDLC + 1) instances in parallel, DLCstopped L DataReq, created by dispatch L_ReleaseReq, dlcDL V76frame V76frame dlcDL2 /* The route dlcDL has been splitted in two because of a V76frame restriction in Tau SDL Suite */ V76frame V76frame V76frame Figure 3.12 The block type V76_DLC process dispatch(1, 1) ready This is a priority input L _DataReq L_ReleaseReq L EstabReg (DLCnum, uData) (DLCnum) (DLCnum) (DLCnum) (DLCnum) (DLCnum) ( NULL) DLCnum not DLCnum not setup */ setup */ DLCnumnot used, we create __DataReq L_ReleaseReq (DLCnum, True) an instance of L Releaselnd (DLCnum, uData) (DLCnum) TO process DLC (DLCnum) TO DLCs(DLCnum) DLCs(DLCnum) We store into the DLCs(DLCnum) table the PID of We pass the frame :=OFFSPRING the new instance to the corresponding instance of process DLC waitUA V76frame (V76para) ready V76para ! present DLCstopped L_SetparmRec (DLCnum) L_Releaselnd(DLCnum) V76frame (XIDcmd : 0) V76frame(V76para) VIA dlcDL TO DLCs(V76para) DLCs(DLCnum):= I NULL ! UA ! DLCi) ready Figure 3.13 The process dispatch part 2 34 Validation of Communications Systems with SDL process dispatch(1, 1) /* Temporary variables: */ NEWTYPE DLCsArray ARRAY(DLCident, PÍD) DLCnum, DLCpeer DLCident, ENDNEWTYPE ready uData Integer, V76para V76paramTyp; /* to store the PIDs of the instances V76frame (V76para) of process DLC, necessary in outputs to route signals */ V76para ! present DLCs DLCsArray; ( SABME ) ( UA ) ( DM ) ( XIDcmd) DLCpeer:= V76frame(V76para) V76frame(V76para) L_Setparmind V76para ! SABME DL TO DLCs(V76para) TO DLCs(V76para)! UA ! DLCi) DM ! DLCi) DLCs(DLCpeer) waitParmResp L_SetparmResp L Releaselno V76frame ( NULL) (DL