------------------------SDT2 $CallSegmentAssociation--------------------------------------------------------------------------------------------------------------------------------------------------------ObjectName----------------------------------------ObjectType----------------------------------------!%&()LinkEndpoints--------------------------------1------------------------------------------------- CallSegmentAssociation-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------15-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------()[8(!Z Virtual Process Type <> CallSegmentAssociation)]}------------------------------------------------------------------------------------------------------------------------------------------------p6&! )[8(!B /* In all states except Null, SetupReqInd is always outgoing. */)]]]]}4!"4)[39)(! 64! d)[8(! -)]]]]]]]][9<)(! sResp_ Conf(CPArg))][p(!&X!"X&)[ L(! 6X! d)[8(! call IsCS(Sender))][ s(!L!"L)[Oq(! 62! IH)][`(! )][.u(! )[8(! 6! (CSA_Out))]][(! 6!)][.v(! )[8(! 6d! (CSA_In))]][(! 6!Z)]][Aw(!4!)[(! 6f! CS)][`(! )][.x(! )[8(! 6! (CS_In))]][(! 6!Z)][.y(!  (!4*!5!7)[!(! 1!!3)[!(! 2!!3)[!(! 3!!3)[!(! 4!!3)[!(! 5!!3)[!9!%()PageOrder-------------------------------------11-----------------------------------------------10-----------------------------------------------10----------------------------------------------- 6!%()HeadingText-----------------------------------11-----------------------------------------------%17-----------------------------------------------5----------------------------------------------- u  )[8(! 6M! (CS_Out))]][(! 64!)]][2z(! 6 ! d)[8(! )][(!&!"&)[(! 6 &!Z)][3(! 6 &! d)[8(! Null)][ (!XX!"XX)[(! 6&!)[8(!\ The CSA starts from the Null stat e. Null indicates that no call segments has been created.)]]]]]]]]}XX&X)[(! 6X&!)[8(! From SigCon.)]]][(!!")[ (! C()[(! l! 22!(H)[r(! l)[u(! 6)[x(! 6d! )]][ {(! 6)][9(! 6! )[8(!% /**** HAOCESSING OF INAP OPERATIONS THAT CHANGES THE CHANGES THE CALL SEGMENT ASSOCIATION. ****/)]][3(! 6! d)[8(! Null)][ (!!")[(! 6D)[8(!! to call GetCSPtr (RCSRArg!CSId))]]][(!l!"l)[(! 6!Z)][3(! 6d! d)[8(! -)]]]]]]][(!"xNDLING OF CALL SETUP. ****/)]][3Z(! 6^! d)[8(! Null)][ (!!")[(! 6^!)[8(! Call initiated from SigCon.)]]][(!  !"  )[](! 6! d!)[8(! SetupInd (sirArg))][ (!&&!"&R&&)[`(! 6!)[8(! From SigCon.)]]][(! X !"  X)[6p(! 6! d)[8(! controllingLegID := leg1)][ v(!!")[L(! 6!)[8(! The controlling leg has id 1.)]]][s(!   !"   )[6y(! 6 ! d)[8(! initialCall_ SegmentID := 1)][ (!RR!"RR)[(! 6 !)[8(!7 The first created call segment (initial CS) has ID=1.)]]][|(!  !"  )[ i(! 6! ,)[8(!A call AddCS (initialCallSegmentID, controllingLegID, Idle,False))][ (!"!")[l(! 6!)[8(! Add a call segment with: - the ID set to initialCallSegmentID - the ID of the controlling leg set to controllingLegID - the SSF-FSM in state Idle - the call is not SCF initiated (False parameter).)]]][(! L !"  L)[8(! 69e! Successful)][%(! 6! ,)[8(!; SetLeg_ Location (controllingLegID, initialCallSegmentID))][ (!"--!"-)[(! 6!)[8(!4 The controlling leg is residing in the initial CS.)]]][(! x !"  x)[%(! 6! ,)[8(!0 SetLeg_ Location (leg2,initial_ CallSegmentID))][ (!"!")[(! 6!)[8(!2 The passive leg 2 is residing in the initial CS.)]]][(! @ r!" r @)[(! 6r! d!)[8(! SetupIn7()[(! l! 22!(H)[ (! l)[#(! 6)[&(! 6d! )]][ )(! 6)][3(! 6,! d)[8(! Null)][ #mentID CallSegmentID, /* The association of local and remote leg ids. */ LegAssoc LegAssociationTable, /* The ID of the controlling Leg (1 or 2) */ controllingLegID LegType, numOfAppls Integer, /* Variable that holds the current numbe()[(! l! 22!(P)[7(! l)[:(! 6)[=(! 6d! )]][ @(! 6)][9C(! 6L2! )[8(!& /* Routissful)][%(! 6! ,)[8(!= SetLeg_ Location (controllingLegID, icaArg! newCallSegment))][ j(!"!")[g(! 6! )[8(!< The controlling leg is residing in segment newCallSegment.)]]][@(! F x!" x F)[%=(! 6x! ,)[8(!Q SetLegLocation (ICAArg!legToBe_ Cre NG OF SIGNALS BETWEEN THE SSF-FSM AND THE SSME-FSM */)]][3x)(! 62! d)[8(! *)][)(!X!"X)[{)(! 62! d!)[8p~)[D(! 6LL!)[8(!4 The controlling leg is residing in the initial CS.)]]][t(!RR!"RR)[%G(! 6! d)[8(!0Zr)[7I(! 6@!)[8(!j to call GetCSPtr(icaArg!newCallSegment) /* Pass InitiateCallAttempt on to the newly created segment. */)]]][R(!  !"  )[6h!")[!(! 6! d!)[8(!( Collect_ Information (invokeID,,ciArg))][1(!R::!":R:)[7(!  (!:l!"l:)[3)(! 6dl! ,!)[8(!" SetupReqInd (SIRArg,csaID,legID))][1c)(!"!"U! d)[8(! -)]]]]][l&(!!")[8(! 6! No)][&(! 6,! d!)[8(! Application_ AbortN()[(! l! 22!(d)[)(! l)[)(! 6)[*(! 6d! )]][ *(! 6)][3k*(! 6! d)[8(! * (Null)n()[(! l! 22!(d)[i)(! l)[l)(! 6)[o)(! 6d! )]][ r)(! 6)][9u)(! 6! )[8(!? /* ROUTI! @)[v((! 6dr! ,!)[8(!, ReleaseReqInd (rArg,csaID,legID, callFlag))][1((!"!")[7y((! 6r!L)[)%()]]]][W&(!F  !"F )[8(! 69! No)][%(! 6x! d!)[8(! Application_ Co(! 6! d)[8(! * (Null))][])(!r!"r)[0)(! 6d! ,!)[8(!" SetupReqInd (SIRArg,csaID,legID))][`)%]]][$(!!")[3w$(! 6d! d)[8(! -)]]]]]]][$(!"!")[z$(!  o which call segment a given LegId is belonging.)]]]][$H(! 6d! )[(! 69! GetCSPtr)][ T(!"^9w9w  !" ^9)[Q(! 6.!)[8(!5 Returns the pointer (PId) to a given CallSegmentID.)]]]][$E(! 6! )[(! 6! GetLeg_ Location)][ l(!"99  !" /9)[i(! 6!)[8(!j Returns the location of a leg, i.e. the CallSegmentID of the call segment to which the leg is belonging.)]]]][$K(! 6d! )[(! 60! ExistCS)][ Z(!"^ww!"^)[W(! 6!)[8(!S Predicate used to determine if a given call segment (CallSegmentID) exist of not.)]]]][$1(! 6! )[(! 6! SetLeg_ Assoc)][ (!"!")[(! 6!)[8(!1 Associates a remote 2leg id with a local leg id.)]]]][$(! 6d~! )[(! 6! IsCS)][ (!"^ww!"^)[(! 6~!)[83(!D Predicate determining whether a sender of a signal is a CS or not.)]]]][$(! 6~! )[(! 6! GetLegId_ fromRemote_ LegId)][ (!"!"4)[(! 6~!)[8(!8 Retrieves the local leg id from a given remote leg id.)]]]][$F(! 6F! )[(! 6x! ExistLeg)][ L(!"E !"  )[(! 6 !Z)][3(! 6! d)[8(! One_ Segment)][ (!::!"::)[(! ()[(! l! 22!(P)[u(! l)[x(! 6)[{(! 6d! )]][ ~(! 6 )][9T(! 6! )[8(!# /**** DA7TA TYPE DEFINITIONS ****/)]][9(! 6d^! )[8(!C /* The Call Segment Association (CSA) maintains information about the Call Segments (CS) of the CSA. */ NEWTYPE CS STRUCT Used Boolean; /* Flag indicating whether 8the segment exists or not. */ CSPtr PId; /* Pointer/Address of the instance of the CS process associated with the segment. */ ENDNEWTYPE; NEWTYPE CSAType /* The call segment association. */ ARRAY(CallSegmentID,CS) ENDNEWTYPE; />(! 6!!3)[!(! 7!!3)[!(! 8!!3)[! (! 9!!3)[! (! 10!!3)[! (! 11!!3)[!l()[(! l! 22!(P)[h(! 62! )[k(! 6K)[n(! 6K! )]][ q(! 6)][At(!!)[ 6L! Failed)][(! 6!Z)][(! 6,! d)[8(! Failed)]]][ (! ~ !"  ~)[8(! 69~! SuccesCSPtr (initialCallSegmentID) /* Instruct the initial call segment to release. */)]]][C(!L!"L)[(! 6L!Z)][3@(! 6L! d)[8(!@%(!!")[%(! 6L! d!)[8(! Reset_ Timer (invokeID,,rtArg))][1C%(!F!"F)[7 * The CSA maintains a mapping from LegID to CallSegmentID. This information is needed to route primitives to the correct call segment. */ NEWTYPE LegLocationTable ARRAY(LegType,CallSegmentID) ENDNEWTYPE; /* The CSA maintains a leg association table, w8d)[8(!/ initialCallSegmentID :=ICAArg! newCallSegment)][ (!!")[(! 6!)[8(!T The first created call segment (initial CS) hasSallSegmentID - the ID of the controlling leg set to controllingLegID - the SSF-FSM in state Idle - the call is SCF initiated (True parameter).)]]][(!33!"3)[8(!;! d!)[8(! Subsequent_ AddressInd (saArg))][1&(!,^!"^,)[7&(! 6^R!! )[8(! to call GetCSPtr (csID))]]][B'(!!")[3&(! 6d! d)[8(! -)]]]]]]]]]['(!"  &!"&)[&(! 6C&! d!)[8(! AddressEnd_ Ind (aeArg))]['(!!")[6&(! 6! d)[8(!0 csID := call GetLegLocation (controllingDLegID))][ '(! R!"R )[&(! 6R! d!)[8(! AddressEnd_ Ind(aeArg))][1'(!R!"R)[E7&(! 6R!! )[8(! to call GetCSPtr (csID))]]]['(!"!")[)&()]]]]]]]]['(!"  F&!"&)[&(! 6&! d!)[8(! SetupConf (scrArg))]['(!!")[6&(! 6! dG)[8(!0 csID := call GetLegLocation (controllingLegID))]['(! R!"R )[&(! 6R! d!)[8(! SetupConf (scrArg))][1'(!x)[6&(! 6d! d)[8(!0 csID := call GetLegLocation (controllingLegID))][,'(!:!":)[&(! 6d:! d!)[8(!I CallProgress_ Ind (cpArg))][1/'(!,l^l!"^l,l)[7&(! 6^:!! )[8(! to call GetCSPtr (csID))]]][2'(!!"R)[8(! call IsCS (Sender))][<&(!R!"R)[8(! 6 k! Yes)][%(! 6! d!)[8(!' Application_ End(termination(! EventReport_ BCSM (,erbcsmArg))][%(!!")[%(! 6L! d!)[8(!' EventReport_ BCSM (,erbcsmArg) via IH)][%(!"&)[(! 6X! d!)[8(! CSStop (csID))][ (!!")[(! 6X!)[8(!Q Indication from the CS thatd)[8(! -)]]]]][3&(!*  33L!"L )[8(! 6,3! No)][)%()]]]]]][6&(!"&??X!"ZUTING OF DIALOUGE AND ERROR PRIMITIVES. ****/)]][3%(! 62! d)[8(! *)]['&(!&X!"X&)[%(! 62X! d!)[8(!V! )[8(! to call GetCSPtr (csID))]]][A'(!"!")[)&()]]]]]]]][D'(!"!"')[7$&(! 6!! )[8(!) to call GetCSPtr (initialCallSegmentID))]]][&(!"~~4!"4~)[)&()]]]]]]]]]]]}gLocation (controllinlegID))][1((!"--~F~!"F~)[7((! 6FL!! )[8(! via IH)]]][((!"~~!")[3&(! 6d! d)[8(! -)]]]]]]]]][5'(!"!")[&(! 6! d!)[8(!!Z)][)()]]]]]]]]]]]}]})[8(!+ CheckTerminatingLineState (BCSMId) via IH)][<(!RRR!"RRR)[(! 6R!Z)][39(! 6.20NG OF DIALOUGE AND ERROR PRIMITIVES. ****/)]][321(! 62! d)[83 *)]['&(!&X!"4X&)[%(! (L:R)[8(! 6k! Yes)][%(! 62! d!)[8(! Application_ Begin via IH)][0&(!L!"L)[3%(! 62L! M virtual Application_ Begin)][*&(!!")[ %(! 62! d)[8(! call IsCS (Sender))][-&(!R!"UR!"R)[8(! 6k! Yes)][%(! 6~! d!)[8(! Application_ Continue via IH)][T&(!"33L!"*()[(! l! 22!(d)[n(! l)[q(! 6)[t(! 6d! )]][ w(! 6)][3(! 6d! d)[8(! * (Null)[$(! 6X! d!)[8(!9 virtual RequestReport_ BCSMEvent (invokeID,, rrbcsmArg))][ 1%(! R!"R )[$(! 6R!! X&)[%(! 6X! d!)[8(!( virtual Application_ End(termination,))][9&(!!")[ %(! 6! dJ!"~)[(! 6~f!)[8(!( The CSA now contains one call segment.)]]]]]]]]]]]]]]]]]]]]]]]]]]]]}(!  &!" h+ype, SAArg SubsequentAddressType;)]]]]}(!!")[(! 6! ,!)[8(!( FurnishCharging_ Information (,FCIArg))][1k(!"@!Y()[n$(! 6d! d!)[8(!+ DisconnectForward_ Connection (invokeID,))][$(!x@!"@x)[q$(! 6d@! d!H EstablishTemporaryConnectionArg, encArg EventNotificationChargingArg, erbcsmArg EventReportBCSMArg, fciArg FurnishChargingInformationArg, idpArg InitialDPArg, icaArg InitiateCallAttemptArg, rcArg ReleaseCallArg, rnceARg RequestNotificationChad)[8(! * (Null))][I%(!~!"~)[%(! 6d! d!)[8(!. SendCharging_ Information (invokeID,,sciArg))][L%(!R!"R)[3p%(! 6d! d)[8(! -)]]]]]]][%(!"&??X!"X&)[s%(! 6^X! dargingEventArg, rrbcsmArg RequestReportBCSMEventArg, rtARg ResetTimerArg, sciArg SendChargingInformationArg, srArg SelectRouteArg, ieArg ErrorArg;)]][9l(! 62! )[8(! DCL /* Signalling control primitiallInformationReportArg, cirqArg CallInformationRequestArg, cArg CancelArg, ciArg CollectInformationArg, coArg ConnectArg, ctrArg ConnectToResourceArg, ctArg ContinueWithArgumentArg, dfcArg DisconnectForwardConnectionWithArgumentArg, etcArg^(!# ApplyCharging_ Report (,acrArg,r))][%(!!")[m%(! 6d! d!)[8(!* ApplyCharging_ Report(,acrArg, r) via IH)][%(!`tCSPtr (csID))]]][+%(! R!"R )[3$(! 6dR! d)[8(! -)]]]]]]]]][.%(!"^ww!"^)YD,,etcArg))][1$(! rRr!"Rr r)[7$(! 6R@!! )[8(! to call GetCSPtr (csID))]]][$(!"!"f)[)w$()]]]]]]]][$(!"!")[$(! 6L! d!)[8(!3 Furnish_ Charging_ Information (invokeID,,fciArg)(! Signals from SigCon to BCSM.)]]][&(!&!"&)[&(! 6d&! d!)[8(! Subsequent_ AddressInd (saArg))][&(!j"(! 6! d)[8(! numOfAppls := 1)][ "(!!")["(! 6!)[8(!! Number of active dialogues = 1.)]]]["x)[d(! 6&! d!)[8(! TDisconnect (TDArg))][1(!XX!"XX)[7(! 6&!)[8(! via IH)]]F!")[6&(! 6d! d)[8(!0 csID := call GetLegLocation (controllingLegID))][&(! R!"R )[&(! 6dRA8(!) Event_ Notification_ Charging (,encArg))][%(!!")[%(! 6R! d!)[8(!. EventNotification_ Charging (,encArg) via IH)][l%(!"Rkk!"R)[)p%()]]]]]][%(!"&??X!"X&)[%(! 6LX! d!)[8K()]]]]]]]]]]]}(! ReconnectReq (ReArg) via IH)][0(!"!!:!":)[(! 6!!)][)t ()]]]]]]]]]}['(! 6x! d)[[(! 6! d!)[8(! CallProgressResp_ Conf(CPArg))][1(!^FF!"F^F)[7^(! 6!)[8(!6  !" )[8(! 6R3!, senderRef /* Direction O-BCSM -> T-BCSM */)][6p((! 6! ,)[8(!2 newlegID:=call GetLeg_ IdFromremoteLegId (legID) by a T-BCSM to an O-BCSM.)]]][(!!")[6 (! 6! d)[8(!% CSId := call GetLegLocation (LegId))][ (!!"n(! 6X!)[8(!% Is the signal incoming or outgoing?)]]][ (!" !" )[8(! 6! No /* Incoming */)][6d(! 6rrbcsmArg))][17%(! R!"R )[7%(! 6R!! )[8(!) to call GetCSPtr (initialCallSegmentID))]]][:%(!" 99R!"ng of inter-BCSM signals. */)]]]]}F(! 6,! d)[8(! *)][m(!!")[I(! 6! d!)[8(! CallProgress"Snitial_ CallSegmentID))]]][H&(!"33L!"L)[)%()]]]]]]]][K&(!"&??X!"X&)[%(! 6~X<()[(! l! 22!(d)[((! l)[ ((! 6)[ ((! 6d! )]][ ((! 6)][9((! 6X! )[8(!. /**** RO)[7n'(! 6,!! )[8(! to call GetCSPtr (csID))]]]['(! R!"R )[3q'(! 62R! d)[8(! -)]]]]]})]]]]]]]]]]]]}]}! ,!)[8(!, ReleaseReqInd (rArg,csaID,legID, callFlag))][1(!"''@!"@)[7(! 6@r!)[8(! v)[8(! 6! Yes)][ &(! 62! d!)[8(! Application_ Abort via IH)][i&(!4!"4)[3&(! 624&!"~)[8(! 6! No)][!&(! 6! d!)[8(! Errror (invokeID,,ieArg))][1&(!!"PL)[)%()]]]]]]]]][3&(! 62F! d)[8(! *)][`&(!!")[&(! 62! d!)[8][R((!"~,,!",~)[)+(()]]]]]]]]][94((! 6&! )[8(!L /* CallProgressReqInd is always send in the direction T-BCSM -> O-BCSM. */)]]]]})][?)(!^!"^)[)(! 6d! ,!)[8(!0 SubsequentAddress_ ReqInd (SAArg,csaID, legID))][B)(!&X!"X':@:!"@:S)[7(! 6@!)[8(! to call GetCSPtr (CSId))]]][(!"xx!"x)[(! 6jall Get_ LegLocation(etcArg! partyToConnect!legId! sendingSideID))][$(!@!"@)[$(! 6X@! d!)[8(!5 Establish_ Temporary_ Connection (invokeIeR )[)$()]]]]]][=%(!"^ww!"^)[%(! 6L! d!)[8(! Reset_ Timer (invokeID,,rtArg))][=UTING OF INAP OPERATIONS TO THE SCF. ****/)]][3g%(! 6d! d)[8(! * (Null))][%(!&X!"X&)[j%(! 6dX! d!)[8c)['(! 6F! d!)[8(! SetupResp (scrArg))][1'(!xxx!"xxx)[7'(! 6F!! )[8(! via!"~L)[g(! 62~! ,!)[8(!" TermAttempt_ Authorised (TAAArg))][(!F!"F)[j(! 62F! [%(!"Rkk!"R)[)p%()]]]]]][%(!"&??X!"X&)[%(! 6RX! d!)[k Is the signal incoming or outgoing?)]]][((!!")[8(! 6! No /* Incoming */)][ m((! 6d! ,)[8(! callFlag)][((!o ! d)[8(! LegId := CPArg!BCSMId!LegId)][ ! (!^RR!"R^R)[ (! 6 !)[8(!Q Always TO address, since this signal can only be sentp&)[ )(! 6dX! ,)[8(! call IsCS(Sender))][ E)(!"!")[)(! 6X!! )[8(!d!)[8(!( Collect_ Information (invokeID,,ciArg))][5$(!!")[#(! 6! d!)[8(!( Collect_ Information (invokeI via IH)]]][ (!R!"R)[(! 6!Z)][3 (! 6^! d)[8(! -)]]]]]]]][9- (! 6^! )[8(!)[ (! 6,! ,!)[8(!" SetupReqInd (SIRArg,csaID,legID))][1 (!"Xqq!"X)[7 (! 6!)[8(!&!"&)[\$(! 6X&! d!)[8(!( ConnectTo_ Resource (invokeID,,ctrArg))][1$(! XRX!"RX X)[7_$(!hgLocation (controllingLegID))][J'(!:!":)[&(! 6:! d!)[8(! FailureInd (fArg))][1M'(!xll!"l\ntinue)][1Z&(!@r!"r@)[7&(! 6r!! )[8(!) to call GetCSPtr (initialCallSegmentID))]]][]&(!"33L!"z()[(! l! 22!(d)[)(! l)[)(! 6)[)(! 6d! )]][ )(! 6)][3 )(! 6! d)[8(! * (Null)|xx!"x)[8(! 6! Yes /* Outgoing */)][g(! 6! d!)[8(! CallProgressResp_ Conf(CPArg))][1(!Ftr (RTArg!CSId))]]][(!"l!"l)[(! 6R!)][)()]]]]]]]]]}6)]]]}(! 6Ld! )[8(!. /* Routi()[(! l! 22!(d)[&(! l)[&(! 6)[&(! 6d! )]][ &(! 6)][9&(! 6X! )[8(!9 /* ROUTImentID))]]][$(!"!")[)V$()]]]]]]][3k$(! 6d~! d)[8(! * (Null))][$(!!"]6! d!)[8(! TBusy (TBArg))][|(!  &!" & )[[(! 6&! d!)[8(! TBusy (TBArg))][1(!UTING OF SIGNALS BETWEEN BCSMs ****/)]][3((! 6^! d)[8(! * (Null))][7((!,,!",,)[((! 6! d!)[8(!%,! d!)[8(!E SendCharging_ Information (invokeID,,sciArg) to call GetCSPtr(csID))][U%(!@r!"r@)[3%(! 6dr! d)[8(! -wR)[)p%()]]]]]]]]]}!")[%(! 6F! d!)[8(! InitialDP (,idpArg) via IH)][%(!"Rkk!"3(! *)][)(!F!"F)[)(! 62F! d!)[8(! ArmTDPsResp (,csID,eventTable))][)(!!")[)(! 62! d!)[8(!4 ArmTDPsResp (,,eventTable) to call GetCSPtr (csID))][)(!@r!"r@)[3)(! 62r! d)[F!"F)[6%(! 6dF! d)[8(!C csID := call GetLegLocation (sciArg!partyToCharge! sendingSideID))][ O%(!,x^x!"^x,x)[NG OF SIGNALS TO/FROM SIGCON (VIA THE IH). */ )]][3&(! 6d! d)[8(! * (Null))][ &(!,^!"^,)[&(! 6^!! )[8g)][ '(!,,,!",,,)[b'(! 6,!! )[8(! Signals from SigCon to BCSM.)]]]['(!^!"^22of signals to/from SigCon. */ )]][9& (! 236,! )[8(!1 /* 24nals from BCSM (O or T) to SigCon. */)]][3)3(! 6R! d)[8( L)[(! 6q! AddCS)][ ?(!"^qwqwXX!"X^q)[<(! 6&!)[8(!! Adds a call segment to the CSA.)]]]][$B(! 6K%(! 6^F!! )[8(!S Retrieve the CallSegmentID of the segment where the leg to be charged is located.)]]][R%(!!")[%(! 6d_x!"xF)[(! 6Fx! d!)[8(! Reset_ Timer (invokeID,,RTArg))][(!!")[(! 6F! d!)[8(! Reset_ Timer (invokeID,,RTArg))][1(!:@:!"@::)[7(! 6@!)[8(!( to call GetCSPtr (RTArg!callSegmentID))]]][(!"l!"l)[(! 6!)][3(! 6d! d)[8(! -)]]]]]]]]]]}l)[(! 6!((!"4MMf!"f4)[)'()]]]]]]]]]} R!"R )[7'(! 6R!! )[8(! via IH)]]][p)[(! 6F! d!)[8(! Reset_ Timer (RTArg))][1(!:@:!"@::)[7(! 6@!)[8(! to call GetCSP]]]]]]]]]]]]]]]]]]]]})[8(! to call GetCSPtr (InitialCSId))]]][(!"4!"4)[(! 6!)][)()]]]]]]]]]]]}nect_ Forward_ Connect12okeID,, rrbcsmeArg))][1(! 13!"R )[714(! 6R!)[8(!)16to call GetCSPtr (initialCallSegmentID))]]][ ')][(!Fx!"xF)[(! 62x! ,!)[8(!2 RequestCurrent_ StatusReport (invokeID,,RCSRArg))][(!!")[(! 62! ,!)[8(!4 Request_ Current_ Statusreport (invokeID,,RCSRArg))][1(!"^!w!w!"^!)[7(! 6!)[8(!) to call GetCSPtr (initialcallSegmentID))]]][(!l!"l)[(! 6!Z)][3(! 6d! d)[8(! -)]]]]]]][(!"F__x!"xF)[ (! 6Rx! ,!)[8(!9 RequestEvery_ StatusChange_ Report (invokeID,,RESCRArg))][(!!")[ (! 6R! ,!)[8(!9 RequestEvery_ StatusChange_ Report (invokeID,,RESCRArg))][1(!"~!!!"~!)[7(! 6!)[8(!) to call GetCSPtr (initialcallSegmentID))]]]["(!"l!"l)[(! 6!)][)!)][)()]]]]]]]][(!"^ww!"^)[(! 6~! ,!)[8(!0 PromptAnd_ CollectUser_ Information (PACUIArg))][(!&X!"X&)[6(! 6~X! ,)[8(!. CSId := call GetLegLocation (PACUIArg!legId))]["(! !" )[(! 6~ ! ,!)[8(!0 PromptAnd_ CollectUser_ Information (PACUIArg))][1(!"kkRR!"Rk)[7(! 6 !)[8(! to call GetCSPtr (CSId))]]][(!"!")[(! 6!)][)()]]]]]]]]][3(! 6d! d)[8(! * (Null))][(!Fx!"xF)[(! 62x! ,!)[8(!( RequestCurrent_ StatusReport (RCSRArg))][(!!")[(! 62! ,!)[8(!* Request_ Current_ Statusreport (RCSRArg))][1(!"^!w!w!"^!)[7(! 6!)[8(!) to call GetCSPtr (initialCallSegmentID))]]][*(!^^!"^^)[(! 6^!Z)][3z*(! 6! d)[8(! -)]]]]]]][*(!"^^,!",^)[*(! 6R,! d!)[8(!' virtual SelectRoute (invokeID,,srArg))][*(!X!"XvxxF)[ (! 6x! ,!)[8(!0 virtual Collect_ Information (invokeID,,CIArg))][H(!xx!"xx)[!(! 6! ,!)[8(!( Collect_ Information (invokeID,,CIArg))][1(!"S'S':@:!"@:S)[7(! 6@!)[8(!+ to call GetCSPtr)][ (!!")[ (! 6,! ,!)[8(!" SetupReqInd (SIRArg,csaID,legID))][Q(!!"!)[8(!' AssistRequest_ Instructions (,ariArg))][%(!!")[v%(! 6^! d!)[8(!. AssistRequest_ Instructions (,ariArg)! )[8(! to call GetCSPtr (csID))]]][((!:!":)[3|((! 6:! d)[8(! -)]]]]]]]]][((!!"F!"FF)[7j(! 6!)[8(! via IH)]]][(!"xxx!"xx)[(! 6!Z)][)am ServiceFeature_ Ind (sftArg))][8'(!r!"r)[6&(! 6! d)[8(!0 csID := call GetLegLocation (controllingLegID))][;'(!:&! d!)[8(! Continue (invokeID,))][1$(!FXxX!"xXFX)[7h$(! 6x&!! )[8(!+ to call GetCSPtr (initial_ callSeg!"x)[7&(! 6R!! )[8(! to call GetCSPtr (csID))]]][ '(!"!")[)&%()[(! l! 22!(d)[>$(! l)[A$(! 6)[D$(! 6d! )]][ G$(! 6)][3J$(! 6d! d)[8(! * (Null)][4(! 6! d!)[8(!& CSStop(,rcArg! initialCall_ Segment))][1=(!^!"^)[7:(! 6!)[8(!^ to call Get'(!Rll!"lRl)[7&(! 6:!O!)[8(!( The CSA now contains one call segment.)]]]]]]]]]]]]]]]]]]]]]]]]} 6~f!)[8(!( The CSA now contains one call segment.)]]]]]]]]]]]]]]]]]]]]]]]]}]]]]]]]]]]]]} to call GetCSPtr(1) /* Pass Setc)][((!^!"^)[((! 6d! ,!)[8(!% SetupRespConf (SCRArg,csaID, legID))][((!&X!"X&)[ ((! 6dX! ,)[8(! call IsCS(Sender))][ ((!"!")[((! 6X!! )[8(!% Is the signal incoming or outgoing?)]]][((!!")[8(! 69! No /* Incoming */)][6((! 6d! ,)[8(!% csID := call GetLegLocation (legId))][((!L!"L)[((! 6dL! ,!)[8(! SetupRespConf (SCRArg,,legID))][1((!"~~!"~(! virtual Application_ Abort)][c&(!@r!"r@)[ &(! 62r! d)[8(! call IsCS (Sender))][f&(!!"x()[(! l! 22!(d)[$(! l)[$(! 6)[$(! 6d! )]][ $(! 6)][3$(! 6d! d)[8(! * (Null))[8(! 63!. receiverRef /* Direction T-BCSM -> O-BCSM */)][6((! 6d! ,)[8(!% csID := call GetLegLocation (legId))][((!@r!"R)[ (! 6! ,!)[8(!/ RequestEvery_ StatusChange_ Report (RESCRArg))][1(!"!!!"!)[7(! 6!)[8(!" to call GetCSPtr (RESCRArg!CSId))]]]["(!"RlR!"Rl)[(! 6!)][)()]]]]]]]]]}xF)[ O6!)[8(!( The CSA now contains one call segment.)]]]]]]]]]]][(!^^!"^)[8(! 6w! Failed)][(! 6^!Z) ,!)[8(!" TermAttempt_ Authorised (TAAArg))][1(!"^wwxx!"x^)[7(! 6F!)[8(! via IH)]]][(!()[(! l! 22!(d)[((! l)[((! 6)[((! 6d! )]][ ((! 6)][3((! 6! d)[8(! * (Null)!")[3'(! 62! d)[8(! -)]]]]]]]['(!"~!"~)['(! 6X! +)][((! x !"  x)[6s((! 6! ,)[8(!( csID := call GetLegLocation (newlegId))][((!" @ YYr!"r)!")[(! 6!Z)][3^(! 6d! d)[8(! -)]]]]]]][(!"Le e ~!" ~L)[m(! 6~! d!)[8(! TMidCall (TMCArg))][(!  F!" F )[p(! 6F! d!)[8(! TMidCall (TMCArg))][1(!xx!"xx)[7(! 6F!)[8(! via IH)]]][(!"  !" )[(! 6!)][)^()]]]]]][(!"Lexex~!"x~L)[s(! 6~! d!)[8(! TNoAnswer (TNAArg))][(!xxF!"xFx)[v(! 6F! d!)[8(! TNoAnswer (TNAArg))][1(!xx!"xx)[7(! 6F!)[8d&)[ #(! 6&! d)[8(! legIDPresent (cirqArg))][$(!!")[8(! 6! true)][6#(! 6NDLING OF CALL RELEASE ****/)]][3+(! 6! d)[8(! OneSegment)][1(!&X!"X&)[.(! 6X! d!)[8(!' vir)][%(!^!"^)[$(! 6d! d!)[8(!8 RequestNotification_ ChargingEvent (invokeID,,rnceArg))]["%(!&!" -)]]]]][(!^    !" ^ )[8(! 699! false)][6(! 6! d)[8(! 'Error situation')][(!"  3(]]['(!"!!:!":)['(! 6X:! d!)[8(! SetupReq (sirArg))]['(!!"`()[(! l! 22!(d)[%(! l)[%(! 6)[%(! 6d! )]][ %(! 6)][9%(! 6! )[8(!7 /**** RON2()]]]]]][ (!"&?5?X!"X5)[x (! 6X! d!)[8(!( virtual Application_ End ,))];!GT!15)[ { (! 6! d)[8(! call IsCS (Sender))][ (!R!"R)[8 ! 6 k Yes)][ (! 6()[(! l! 22!(d)[X%(! l)[[%(! 6)[^%(! 6d! )]][ a%(! 6)][9d%(! 6! )[8(!4 /**** RO)[e'(! 62! d!)[8(! Release_ Ind (rArg))]['(!&!"&)[6h'(! 62&! d)[8(!0 csID := call GetLegLocat"l)[)#()]]]]]]]]]})["(! 6 ! d!)[8(!% CFResp(,,r) to call GetCSPtr (csID))]["(!"@YYr!">D,,ciArg))][18$(!R::!":R:)[7#(! 6!! )[8(!+ to call GetCSPtr (initialCall_ SegmentID))]]][;$(!"l!!0 SubsequentAddress_ ReqInd (SAArg,csaID, legID))][13 (!"--~F~!"F~)[7 (! 6FL!)[8(! via IH)]]][9 (!"~~(! : l!" l :)[(! 6 l!Z)][3O(! 6l! d)[8(! One_ Segment)][ (!!")[ ~)[)(()]]]]]]]]][9((! 6&! )[8(!G /* SetupRespConf is always send in the direction T-BCSM -> O-BCSM. */)]]]]}onse (,SFRArg))][(!!"fication_ Charging (ENCArg))][(!@r!"r@)[T(! 6r! ,!)[8(!( Event_ Notification_ Charging (ENCArg))][1(!"@YYr!"r@)[7(! 6rr!)[8(! via IH)]]][(!"!!:!":)[(! 6 !!)][)()]]]]]]]]]})[(! 6!)][)4()]]]]]][(!"r!"r)[=(! 6X! d!)[8(! RouteSelect_y)][$(!^!"^)[M$(! 6d! d!)[8(!$ virtual Connnect (invokeID,,coArg))][ $(!,^!"^, via IH)][%(!"Rkk!"R)[)p%()]]]]]][%(!"&??X!"X&)[y%(! 6XX! d!)[8(! 6! true)][6#(! 6d! d)[8(!@ csID:=call GetLegLocation (acArg!partyToCharge! sendingSideID))][#(! R!"R )[#(! 6dR! d!)[8(!# Apply_ Charging (invokeID,,acArg))][1$(!,^!"^,)[7#(! 6^R!! )[8(! to call GetCS_ Ptr(csID))]]][$(!!")[3#(! 6d! d)[8(! -)]]]]]]][$(!,X&X&!"&,X)[8(! 6?q! false)][6#(! 6! d)[8(! csID := initial_ CallSegmentID)][ $(!"& &99R!"R& )[)#()]]]]]]]][$(!"^ww!"^)[#(! 6! d!)[8(!. CallInformation_ Request (invokeID,,cirqArg))][$(!&!"ion (controllingLegID))]['(!!")[k'(! 62! d!)[8(! Release_ Ind (rArg))][1'(!,!",vf /* In the state One-Segment, SetupReqInd is always outgoing, i.e. from an O-BCSM in this segment. */)]]]]}!Z)][3 (! 6^! d)[8(! -)]]]]]]]][9- (! 6^! )[8(!p)][$(!x@!"@x)[$(! 6L@! d!)[8(!1 FurnishCharging_ Information (invokeID,,fciArg))][1$(!rFr!"Fr IH)]]]['(!"!")[)'()]]]]]]][3'(! 62! d)[8(! * (Null))][ '(!,!",5~!"~~:)[8(! 6S! Yes)][(! 6! d!)[8(!! Errror (invokeID,,IEArg) via IH)][(!"~~^^4!"=r of open applications/dialogues. */ /* Other variables. */ csaID CSAID, csID CallSegmentID, invokeID InvokeID, termination Boolean, legID, newLegID LegType, callFlag CallFlag, eventTable EventTableType, r@)[)v(()]]]]]][((!"xxr!"xr)[8(! 6 ! Yes /* Outgoing */)][((! 6r! ,!)[8 )[P$(! 6^!! )[8(!e The semantics of the Connect operation is changed in IN CS-2. This transition is therefore virtual.)]]][$(!&!"&)@-F!"F)[)(! 6 F! d!)[8(! CFResp (,csID,r))][)(!!")[)(! 6 ! k% Is the signal incoming or outgoing?)]]][H)(!!")[8(! 6 ! No /* Incoming */)][6)(! 6d! ,)[8(!2 newLegID:=call GetLegT)[(! 6!Z)][3(! 6d! d)[8(! -)]]]]]]][(!"^w w !" ^)[X(! 6(! ^ !" 7 ^)[(! 6! 8d!)[8(! virtual CS9p (CSId))][(!  &!" *)[8(! -)]]]]]]][$(!"^ww!"^)[Y$(! 6X! d!)[8(!( ConnectTo_ Resource (invokeID,,ctrArg))][$(!][u(! 6! d)[8(! Failed)]]]]]]]]]]]]]]}]]]}}R4)[(! 6Rf!Z)][3Y(! 6f! d)[8(! One_ Segment)][ (!~Ung, i.e. from an O-BCSM in this segment. */)]]]]}(! 6R! d)[8(! *)][z(!"Le,e,~!",~L)[S(! 6~! d!)[81! d)[8(!: csID:=call GetLegLocation (cirqArg!legID! sendingSideID))][$(! R!"R )[#(! 6R! d!)[8(!. CallInformation_ Request (invokeID,,cirqArg))][1$(!L~!"~L)[7#(! 6~R!! )[8(! to call GetCSPtr (csID))]]][$(!"!")[)#()]]]]]][ $(!LXX!"LX)[8(! 6q! false)][6#(! 6~! d)[8(! csI (initialCall_ SegmentID))]]][(!"xx!"x)[(! 6 !)][)()]]]]]]]]]}!"x)[(! 6 x!!:!":x)[)|(()]]]]]]]]][9((! 6! )[8(!@ /* ReleaseReqInd is a symmetrical signal between the BCSMs. */)]]]]} )[%(! 6RX!)[8(! The controlling leg has id 2.)]]][(!RR!"RR)[6(! 6! d)[8(! initialCall_ SegmentID := 1)][ (!b()[(! l! 22!(d)[#(! l)[#(! 6)[#(! 6d! )]][ #(! 6)][9#(! 6X! )[8(!3 /**** RO))[8(! Cancel (invokeID,,cArg))][1,$(!,:^:!"^:,:)[7#(! 6^!! )[8(!+ to call GetCSPtr (initial_ CallSegmentID))]]][/$(!ICSM.)]]][&'(!!")[&(! 6d! d!)[8(! CallProgress_ Ind (cpArg))][)'(!r!"rH'(! xRx!"Rx x)[7'(! 6RF!! )[8(! via IH)]]]['(!"!")[)'YArg, TBArg TBusyArg, TDArg TDisconnectArg, TAAArg TermAttemptAuthorisedArg, TMCArg TMidCallArg, TNAArg TNoAnswerArg, IEArg ErrorArg;)]][9l(! 62! )[8(! DCL /* Signalling control primitive parameters. */ AEArg AddressEndType, CPArg CallProgressType, FArg FailureType, RArg ReleaseType, ReArg ReconnectRequestType, SFtArg ServiceFeatureType, SArg SetupType, SAArg SubsequentAddressType;)]]]]}(! CPArg!BCSMId! AddressType)][ (![)[8(!4 Associate the remote LegId with the passive leg 1.)]]][(!RR!"RR)[S(! 6! d!)[8(!# SetupReqInd (sirArg,csaID, legID))][1(!@L@!"L@@)[7(! 6L!)[8(!V to call GetCSPtr(initialCallSegmentID) /* Pass SetupReqInd on to the created CS. */)]]][(!RrR&ated!sendingSideID, ICAArg!new_ CallSegment))][ p(!"!")[m(! 6x!)[8(!> The passive leg LegId is residing in segment newCallSegment.) ]]][F(!  @!" @ )[C(! 6@! d!)[8(!+ InitiateCall_ Attempt (invokeID,, icaArg))][1L(!rr!"r#6!)[8(!+ to call GetCSPtr (initialCall_ SegmentID))]]][(!"l!"l)[(! 6!)][)()]]]]]]]]]}}(! 6l!)[8(!( The CSA now contains one call segment.)]]]]]]]]]]]]]]]]]]]]]]]]}!")[R(! 6F! d!)[8(! CallGap (invokeIDy6X! d!)[8(!5 Establish_ Temporary_ Connection (invokeID,,etcArg))][$(!x!"x)[6}$(! 6X! d)[8(!L csID := c~)[7(! 6@!)[8(!, to call Get_ CSPtr(initial_ CallSegmentID))]]][y(!" kk!" )[(! 6k!)][)^()]]]]ve parameters. */ AEArg AddressEndType, CPArg CallProgressType, FArg FailureType, RArg ReleaseType, SFtArg ServiceFeatureType, SIRArg SetupIRType, SCRArg SetupCRType, SAArg SubsequentAddressType;)]]]]}tureType, SIRArg SetupIRType, SCRArg SetupCRT)(!"--F!"F)[)(! 6&F! d!)[8(! CACGResp (,csID,r))][)(!!")[RialDP (,idpArg))][%(!!")[%(! 6F! d!)[8(! InitialDP (,idpArg) via IH)][%(!"Rkk!"8(! -)]]]]]]][)(!"--F!"F)[)(! 6,F! d!)[8(! MSFCResp (,csID,r))][)(!!"()[(! l! 22!(P)[(! l)[(! 6)[(! 6d! )]][ (! 6)]]]}xx <}+Yes)][&(! 6 ! d!)[8(!! Errror (invokeID,,ieArg) via IH)][~&(!"4!"4)[)&()]]]][&(!~~y r Boolean;)]][9i(! 6,! )[8(!R DCL /* IN CS-1 operation arguments. */ acArg ApplyChargingArg, acrArg ApplyChargingReportArg, ariArg AssistRequestInstructionsArg, aiArg AnalyseInformationArg, cirArg Cb)[)(! 6,! d!)[8(!' MSFCResp(,,r) to call GetCSPtr (csID))][)(!"@YYr!"r@)[))()]]]]]][)[8(!/ The processing of RRBE is changed in IN CS-2.)]]][4%(!!")[$(! 6X! d!)[8(!1 RequestReport_ BCSMEvent (invokeID,, r)[8(!& Call_ Information_ Report(,cirArg,r))][%(!!")[|%(! 6X! d!)[8(!+ CallInformation_ Report(,cirArg,r) via IH)]D := initial_ CallSegmentID)][#$(!" 99R!"R )[)#()]]]]]]]]][3#(! 6d! d)[8(! * (Null))][&$(!@r!"%(! 6F!! )[8(!( to call GetCSPtr (rtArg!callSegmentID))]]][F%(!" 99R!"R )[)$()]]]]]]][3 %(! 6d! _()[(! l! 22!(H)[(! l)[(! 6)[(! 6d! )]][ (! 6)][9(! 6,! )[8(!b /**** PRXX!"XX)[7(! 6&!)[8(! via IH)]]][(!"  !" )[(! 6!)][),)[7'(! 6,!! )[8(! via IH)]]]['(!4f!"f4)[3'(! 62f! d)[8(! -)]]]]]ײ()]]]]]][(!"^wxwx!"x^)[a(! 6! d!)[8(! TDisconnect (TDArg))][(!xx&!"x&i(!@r!"r@)[ &(! 6 r! d)[8(! call IsCS (Sender))][{&(!!")[8(! 6! (!, ReleaseReqInd (rArg,csaID,legID, callFlag))][1((!"''@!"@)[7((! 6@r!! )[8(! via IH)]]][((!"x]]][Z)(!"~~!"~)[)!)()]]]]]]]]][9*)(! 6&! )[8(!G /* SetupRespConf is always send in the direction O-BCSM -> T-BCSM. */)]][3-)+RFRx!"RxRF)[%M(! 6x! d)[8(! SetLegAssoc (legID,leg1))][ }(!L!"L)[P(! 6Lx!(!^L^!"L^^)[(! 6L,!)[8(!$ Call initiated from remote O-BCSM.)]]][(!RR!"RR)[,($! 6! d!)[8(!# SetupReqInd (sirArg,csaID, legID))][ \(!L!"L)[/(! 6L!)[8(! From remote O-BCSM.)]]][_:()]]]]]]]]][3&(! 6dx! d)[8(! * (Null))][ #'(!,^!"^,)[&(! 6^x!! )[8(! Signals from SigCon to B!"RRr)[(! 6R!Z)][3Y(! 6! d)[8(! One_ Segment)][ (!L!"L)[(! 6L)[&(! 6! d!)[8(! FailureInd (fArg))][G'(!r!"r)[6&(! 6! d)[8(!0 csID := call GetLe3L!"L )[(! 63!)][)@()]]]]]]]]][3(! 6! d)[8(! OneSegment)][(!x&xX!"xXxLUTING OF INAP OPERATIONS FROM THE SCF. */)]][3#(! 6d! d)[8(! * (Null))][#(!^!"^)[#(! 6d! d!)[8i()[(! l! 22!()[(! l)[(! 6)[(! 6d! )]][ (! 6)][9(! 6X! )[8(!& /**** HAd!)[8(!! Subsequent_ Address_ Req(saArg))]['(!F!"F)['(! 6XF! d!)[8(!! Subsequent_ Address_ Req(saArg))][1 CallProgressReq_ Ind (cpArg,,legID))][:((!,X,!",,X)[ ((! 6! ,)[8(! call IsCS(Sender))][ =((!"  &!"-&)[((! 6&X!! )[8(!% Is the signal incoming or outgoing?)]]][@((!, ,!",, )[8(! 6E9! No /.* Incoming */)][6"((! 6! d)[8(!% csID := call GetLegLocation (legId))][C((!,,!",,)[%((! 6! d!)[8(!/% CallProgressReq_ Ind (cpArg,,legID))][1F((!LL!"LL)[7(((! 6!! )[8(! to call GetCSPtr (csID))]]][I((!,~,!"0,,~)[3+((! 6! d)[8(! -)]]]]]]][L((!!")[8(! 63 ! Yes /* Outgoing */)][.(1(! 6! d!)[8(!% CallProgressReq_ Ind (cpArg,,legID))][1O((!~LL!"L~L)[71((! 6!! )[8(! via IH)]]{()[(! l! 22!(d)[U((! l)[X((! 6)[[((! 6d! )]][ ^((! 6)][3a((! 6! d)[8(! * (Null)3)][((!^!"^)[d((! 6! d!)[8(!, ReleaseReqInd (rArg,csaID, legID,callFlag))][((!X!"X4)[ g((! 6dX! ,)[8(! call IsCS(Sender))][ ((!"!")[j((! 6X!! )[8(!%)['(! 6,!! )[8(! Signals from BCSM to SigCon.)]]]['(!:!":)['(! 62:! d!)[8(!a to call GetCSPtr (CSId))]]][(!"x!"x)[(! 6!)][3a(! 6! d)[8(! -)]]]]]]]]][(!"d (sirArg))][1(!!")[7(! 6r!)[8(!S to call GetCSPtr(initialCallSegmentID) /* Pass SetupInd on to the initial CS. */)]]][(! 5hich associates a 'remote' LegID with a 'local' leg id. This information is needed to correctly address the BCSM when passing primitives between an O-BCSM and a T-BCSM. */ NEWTYPE LegAssociationTable ARRAY(LegType,LegType) ENDNEWTYPE; /* Definition of9 return results from procedure calls. */ NEWTYPE AnswerType LITERALS Yes, No; ENDNEWTYPE; NEWTYPE ResultType LITERALS Successful, Failed; ENDNEWTYPE;)]]]]}6^! )[8(! /* Declaration of variables. */ DCL CSA CSAType(!R&RX!"RXR&)[6(! 6X! d)[8(! controllingLegID := leg2)][ (!L!"L)[(! 6L()[(! l! 22!(h)[W(! l)[Z(! 6)[](! 6d! )]][ `(! 6)][9c(! 6d! )[8(!# /**** VA[! d!)[8(! virtual Application_ Continue)][N&(!!")[ %(! 6~! d)[8(! call IsCS (Sender))][Q&(!W^4~)[(! 6&!)][)()]]]][(!xx!"x)[8(! 6! No)][(! 6! d!>)[8(! Errror (invokeID,,IEArg))][1(!!")[7(! 6!)[8(!) to call GetCSPtr (initialCallSegmentID))]]][(!"xx?^^4!"^4x)[(! 6~!)][)()]]]]]]]]]]]}][(! 6x! d!)[8(! Errror (IEArg))][1(!@r!"[S$(! 6d&! d!)[8(!E Connnect (invokeID,,coArg) to call GetCSPtr(initial_ CallSegmentID))][$(!!")[3V$(! 6d! d)][)()]]]]]]]]]]]}rror (IEArg))][1(!@r!"r@)[7(! 6r!)[8(! to call GetCSPtr (InitialCSId))]]][(!"M)[3!)(! 6! d)[8(! -)]]]]]]][T)(!"~~L!"~L)[8(! 6 ! Yes /* Outgoing */)][$)(! 6L! ,XRLR)[8(! 6k3! Successful)][%A(! 6L! d)[8(!; SetLeg_ Location (controllingLegID, initialCallSegmentID))][ q(!~L~!"L~"!)[8(! Call initiated from the SCF.)]]][(!  &!" & )[(! 6&! d!)[8(!* Initiate_ CallAttempt (invokeID,,icaArg)cxx!"x)[I(! 6F!)[8(!B Predicate used to determine if a given leg (LegId) exist of not.)]]]]]]}!"rF)[8(! 6][(!"xx!"x)[(! 6 !)][)()]]]]]]][3U(! 6d! d)[8(! * (Null))][(!L~16NG OF SIGNALS BETWEEN BCSMs ****/)]][3((176^! d)[8(! *18ull))][7((!,,!"19,,)[((! 6 u2)[8(!- Disconnect_ ForwardConnection (invokeID,) )][1$(!,r^r!"^r,r)[7t$(! 6^@!! )[8(!+ to call GetCSPtr (initial_ callSegmentID)),l!"l)[3#(! 6d! d)[8(! -)]]]]]]][2$(!"@YYr!"r@)[#(! 6r! !")[ (! 6! d)[8(!$ initialCallSegment_ Present(rcArg))][(!R!"R)[8(! 6k! true)&! )[(! 6L! SetLeg_ Location)][ f(!"qqXX!"Xq)[c(! 6&!)[8(!T Sets the location of a leg, i.e. t-()[(! l! 22!(d)[-(! l)[0(! 6)[3(! 6d! )]][ 6(! 6 )][9o(! 6X! )[8(!' /**** DEQ2ING OF DIALOUGE AND ERROR PRIMITIVES. ****/)]][320(! 6^,! d)[821 *)][(!!"22)[(! ;H)][1o&(!&!"&)[7&(! 6&!! )[8(!) to call GetCSPtr (initialCallSegmentID))]]][r&(!"4!"gF)[ (! 6x! ,!)[8(!& virtual Collect_ Information (CIArg))][H(!xx@!"x@x)[6(! 6@! ,)[8(!+P CSId := call GetLegLocation (CIArg!LegId))][N(!xx!"xx)[!(! 6! ,!)[8(! Collect_ Information (CIArg))][1(!"S'S}CLARATION OF OPERATIONS ****/)]][9o(! 6d^! )[8(!$ /* Operations on call segments. */)]][9r(! 6^! )[8(! /* Operations on legs. */)]][$9(! 6d&! )(! 6&! d!)[8(!' CACGResp(,,r) to call GetCSPtr (csID))][)(!"@YYr!"r@)[))()]]]]]][)(!"- ID = the newCallSegment in ICAArg.)]]][(!   R!" R  )[6(! 6R! d)[8(! controllingLegID := leg1)][ (!!"^_ IdFromremoteLegId (legID))][K)(!L!"L)[)(! 6dL! ,!)[8(!0 SubsequentAddress_ ReqInd (SAArg,csaID, legID))][1N)(!"e)[76)(! 6l!! )[8(! via IH)]]][f)(!4!"4)[39)(! 64! d)[8(! -)]]]]]]]][9<)(! (! Add a call segment with: - the ID set to InitialCallSegmentID - the ID of the controlling leg set to ControllingLegID - the SSF-FSM in state Idle - the call is not SCF initiated (False parameter).)]]][e(!WL!"L)[8(! 6 ! Failed)][(! 6L!Z)][8(! 6L! d)[8(! Failed)]]][h(!RRL!"C!)[8(!0 SubsequentAddress_ ReqInd (SAArg,csaID, legID))][1W)(!"--~F~!"F~)[7')(! 6FL!! )[8(! via IH)!()]]]]]]['(!"~!"~)['(! 6! d!)[8(! SetupResp (scrArg))]['(!F!"F SetLeg_ Location (leg1,initial_ CallSegmentID))][ w(!L!"L)[J(! 6L!)[8(!2 The passive leg 1 is residing in the initial CS.)]]][z(!"RIABLE DECLARATIONS ****/)]][9f(! 62,! )[8(! DCL /* The CSA */ CSA CSAType, /* The leg location table. */ LL LegLocationTable, /* ID of the initial (first created) call segment. */ initialCallSegxl)[7&(! 6:!! )[8(! to call GetCSPtr (csID))]]][P'(!"!")[)&()]]]]]]]]]]]}ddCS (initialCallSegmentID, controllingLegID, Idle,True))][ (!"33!"3)[(! 6!)[8(! Add call segment with: - the ID set to initialC@)[j(! 6R!)[8(! The controlling leg has id 1.)]]][(!  !"  )[ (! 6! ,)[8(!@ call A])(! 6  ! d!)[8(! CFReq (,csID) via IH)][)(!"!")[))()]]]]]]][3)(! 62! d)[8)['(! 6X! d!)[8(! SetupReq (sirArg))][1((! R!"R )[7'(! 6R!! )[8(! via IH)]]][ Call_ Progress_ Req(cpArg))]['(!!")['(! 62! d!)[8(! Call_ Progress_ Req(cpArg))][1'(!,!" L !"L  )[(! 6L!)[8(!7 The first created call segment (initial CS) has ID=1.)]]][(!RRR!"RRR)[ 2f)][ X(!XX!"XRXX)[U(! 6&!)[8(! From SCF.)]]][(!  !"  )[6(! 6! ?(! via IH)]]][(!"xx!"x)[(! 6 !)][)^()]]]]]]]]]}(! -)]]]]][(!*FF''@!"~~!"~)[7)(! 6L!! )[8(!2 to call GetCSPtr (call GetLegLocation(newLegID)))]]][Q)(!!"B(! 6! ,)[8(!A call AddCS (initialCallSegmentID, controllingLegID, Idle,False))][ (!"33L!"L)[(! 6L!)[8V4)[)&()]]]]]]]][u&(!"!")[&(! 6 ! d!)[8(!" virtual Errror (invokeID,,IEArg))][x& 6R&!! )[8(!: to call GetCSPtr (ctrArg!resourceAddress! callSegmentID))]]][$(!"!")[)V$()]]]]]][$(!"^(!# Apply_ Charging (invokeID,,acArg))][#(!&!"&)[ #(! 6d&! d)[8(! partyToChargePresent (acArg))][#(!!"!)][)()]]]]]]]]]]]}!(P)[(! l)[(! 6)[(! 6d! )]][ (! 6)][9(! 6L2! )[8(!. /* Routi+Ad!)[8(!% CFResp(,,r) to call GetCSPtr (csID))][)(!"@YYr!"r@)[))()]]]]]]]]]}"(!!" (! 12!!3)[! (! 13!!3)[!(! 14!!3)[!(! 15!!3)[!(! 16!!3)[!(! 17!!3m)[!(! 18!!3)[!(! 19!!3)[!(! 20!!3)[!(! 21!!3)]]]]]]]]]]]]]]]]]]]]]}!)[8(! to call GetCSPtr (cs)][}*(!^^,!"^,^)[n*(! 6,! d!)[8(!0 virtual Analyse_ Information (invokeID,,aiArg))][*(!^^X!"^Xo^)[w*(! 6X! d!)[8(!( Analyse_ Information (invokeID,,aiArg))][1*(!!")[7*(! 6X!! (! ArmTDPsReq (,csID))][)(! !" )[~)(! 62 ! d!)[8(! ArmTDPsReq (,csID) via IH)][)(!!"q)[3)(! 62! d)[8(! -)]]]]]]][)(!"Xqq!"X)[)(! 6,! d!)[8(!r MSFCReq (,csID))][)(! !" )[)(! 6, ! d!)[8(! MSFCReq (,csID) via IH)][)(!"!"s)[))()]]]]]][)(!"Xqq!"X)[)(! 6&! d!)[8(! CACGReq (,csID))][)(!t !" )[)(! 6& ! d!)[8(! CACGReq (,csID) via IH)][)(!"!")[))()]]]]]]u[)(!"Xqq!"X)[)(! 6 ! d!)[8(! CFReq (,csID))][)(! !" )[_)[*(! 6RX! d!)[8(! SelectRoute (invokeID,,srArg))][1*(!L!"L)[7*(! 6LX!! )[8w(!) to call GetCSPtr (initialCallSegmentID))]]][*(!"^^!"^)[(! 6^!)][)z*()]]]]]]]]]}tion (invokeID,,ciArg))][H(!F_R_Rx!"RxF)[ (! 6x! ,!)[8(!/ RequestEvery_ StatusChange_ Report (RESCRArg))][(!RR!"RF)[(! 6x! ,!)[8(! virtual Select_ Route (SRArg))][(!RR@!"R@R)[6(! 6@! ,)[8(!+ CSIzd := call GetLegLocation (SRArg!LegId))][(!RR!"RR)[(! 6! d!)[8(! SelectRoute (SRArg))][1(!::!"{::)[7(! 6!)[8(! to call GetCSPtr (CSId))]]][(!"RlR!"Rl)[(! 6!)][)(|)]]]]]]]][(!"F__x!"xF)[(! 6Fx! d!)[8(! Reset_ Timer (RTArg))][(!!"]]]]][3t'(! 62! d)[8(! * (Null))][ '(!L,L!",LL)[w'(! 6,!! )[8(! Signals from BCSM to SigCon.)]]~]['(!~!"~)[z'(! 62! d!)[8(! Release_ Req (rArg))]['(!F!"F)[}'(! 62F! d!)[8(! Release_ Req (rArg))][1'(!x,x!",xx)[7'(! 6,F!! )[8(! via IH)]]]['(!r)[7$(! 6F@!! )[8(!+ to call GetCSPtr (initial_ callSegmentID))]]][$(!"!")[)w$()]]]]]]]]]}cted_ Information (CdIArg))][1(!"!")[7(! 6r!)[8(! via IH)]]][(!"  !!:!": )[(! 6!!)][)()]]]]]][(!"x!"x)[Q(! 6! ,!)[8(!( Event_ Noti]]]]]}r!"r@!)[7h(! 6r!)[8(!+ to call GetCSPtr (initial_ callSegmentID))]]][(!"l!"l)[()]]]]]]]]]}6R!)][)()]]]]]]]]]})[8(! OCalled_ Party_ Busy (OCPBArg))][1P(!"^'w'w!"^')[7M(! 6!)[8\r@)[#(! 6dr! d!)[8(! Cancel (invokeID,,cArg))][)$(!!")[#(! 6d! d!!")[(! 6F! d!)[8(! Status_ Report (,SRpArg))][(!x!"x)[(! 6F! d!)[8(! Status_ Report (,SRpArg))][1(!@!"@)[7(! 6@!)[8(! via IH)]]][((!"@!"@)[(! 6 !)][)()]]]]]]]]]}@)[7(! 6@!)[8(! via IH)]]][((!"@j6! d!)[8(! Application_ End(termination,))][1E&(!R!"R)[7%(! 6!! )[8(!+ to call GetCSPtr (it-)]]]]]]][((!"~~L!"~L)[8(! 6 ! Yes /* Outgoing */)][((! 6L! ,!)[8(!% SetupRespConf (SCRArg,csaID, Q the segment is released (and the call is released).)]]][(!xx!"x xx)[4(! 6! d)[8(! )]]]]]][(! 6! d)[8(! Failed)][(!@!"@)[(! 6@! d!)[8(! Errror (,ieArg) via IH)][(!!")[4(! 6! d)[8(! )]]]]]]]]}]]]})[8(! )]]]]]]]]}8(! )]]]]]]]]}rt (SRpArg))][(!x!"x)[(! 6FM!"~)[) ()]]]]]]]]][9Q (! 6&! )[8(!G /* SetupRespConf is always send in the direction O-BCSM -> T-BCSM. */)]]]]}IH)]]][((!"@X&)[6$(! 6d&! d)[8(!? csID := call GetLegLocation (rnceArg(1)!legId! sendingSideID))][%%(!!")[$(! 6d! ()[w(!GSDL)]})[(! 6!)][)()]]]]]]]]]]]} d!)[8(! Error (IEArg))][1(!@r!"r@)[7(! ()[(! l! 22!(d)[I(! l)[L(! 6)[O(! 6d! )]][ R(! 6)][3(! 6d! d)[8(! * (Null))][(!^!"^)[(! 6d! d!)[8(! TAnswer (TAArg))][(!&!"&)[(! 6d&! d!)[8(! TAnswer (TAArg))][1(!,X^X!"^X,X)[7(! 6^&!)[8(! via IH)]]][(!!"tual ReleaseCall (invokeID,,rcArg))][ (!^!",^)[(! 6X!)[8(!6 The behaviour of ReleaeCall is redefined in IN CS-2.)]]][7(!J,) via IH)][?&(!"33L!"L)[)%()]]]][B&(!X  !"X )[8(! 69! No)][%(! )[7((! 6L!! )[8(! to call GetCSPtr (csID))]]][((!!")[3((! 6! d)[8(! Rkk!"R)[)p%()]]]]]][%(!"&??X!"X&)[%(! 6FX! d!)[8(! Init d!)[8(!8 RequestNotification_ ChargingEvent (invokeID,,rnceArg))][1(%(!,^!"^,)[7$(! 6^!! )[8(! to call Ged()[(! l! 22!(d)[S'(! l)[V'(! 6)[Y'(! 6d! )]][ \'(! 6)][3_'(! 62! d)[8(! * (Null)ww!"^)[b$(! 6~! d!)[8(! Continue (invokeID,))][$(!&!"&)[e$(! 6~