------------------------SDT2 *CallSegment--------------------------------------------------------------------------------------------------------------------------------------------------------ObjectName----------------------------------------ObjectType----------------------------------------!%&()LinkEndpoints--------------------------------!%()HeaderText----------------------------------- CallSegmentewciation----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 15-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------!)[8(!K Controlling leg joined. Passive leg P1 pending (associated with a T-BCSM))]]]]]]]]]]]]]]]]}RBCSMEArg))][1{J(!"!")[7xJ(! 6r!}()[8(!O Virtual Process Type <> CallSegment)]}nectionView)]}---------------------------------------------------------------------------------------------------------------------------------------------e()[(! l! 22!(`)[(! 6^! l)[(! 6w)[(! 6w,! )]][ (! 6)][Ag(!2!)[!%()PageOrdert-----------------------------------16PageOrder-------------------------------------10-----------------------------------------------11----------------------------------------------- s!%()HeadingText-----------------------------------12-----------------------------------------------2-----------------------------------------------7----------------------------------------------- N(! 6d! CSA)][`(! )][.h(! )[8(! 62! (CS_Out))]][(! 62!)][.i(! )[8(! 6! (CS_In))]][(! 6 !Z)]][A(!^!)[(! 6! SSF)][`(! )][.(! )[8(! 6! (CS1_SSF_In))]][(! 6!)][. (! )[8(! 6dF! (CS1_SSF_Out))]][(! 6^!)]][Aj(!4!)[(! 6qf! O)][`(! )][.k(! )[8(!  6! (O_BCSM_In))]][(! 6!Z)][.l(! )[8(! 6M! (O_BCSM_Out))]][(! 64!)]][Am(!4!)[(!  6Ff! T)][`(! )][.n(! )[8(! 6! (T_BCSM_In))]][(! 6!Z)][.o(! )[8(! 6M! (T_BCSM_Out))]][(! 6 4!)]][9B(! 6! )[8(!# /**** DATA TYPE DEFINITIONS ****/)]][9(! 6&! )[8(! /* A Call Segment (CS) consists of a Connection Point (CP). To the CP is connected one controlling leg and zero or more passive legs. Note: LegInfo is defined in the SSF_CCF block type. */ NEWTYPE ConnectionPointType LITERALS PointToPoint, MultiPointToMultiPoint; ENDNEWTYPE; NEWTYPE ConnectionPoint STRUCT cpType ConnectionPo!)[3_(! 6! d)[8(! -)]]]]]]][5`(!L~!"~L)[8(! 6! receiverRef)][6_(! 6~~b SSF)]]][4I(!"@YYr!"r@)[(! 6Y!)][)&H()]]]]]][1I(!"!")[H!"&&&X&)[ (! 6!)[8(! From SCF.)]]][R(!X!"X)[6R(! 6! d)[8(!( cp!con()[(! l! 22!(\)[ (! l)[ (! 6)[ (! 6d! )]][ (! 6)][9B(! 6! )[8(!# /**** VARIABLE DECLARATIONS ****/)]][9(! 62^! )[8(! DCL /* The connection point of this call segment. */ CP ConnectionPoint, /* Pointer to the SSF_FSM associated with this segment. */ SSF PId, /* The association of local and remote leg ids. */ LegAssoc LegAssociationTable, /* Pointer to the CSA in which this call segment belongs. */ CSA PId, /* Dialogue status. */ DialogueActive Boolean := false,  /* Other variables */ csaID CSAID, invokeID InvokeID, termination Boolean, obcsmPars OBCSMPars, bcsmStopped Boolean := false, legId LegType, newLegID LegType, pic PICArg, dp DPArg, callFlag CallFlag, eventTable EventTableType, Ep_ Conf(SCRArg))][1`(!^!"^)[7_`(! 6!! )[8(! to call GetLegPtr (legID))]]][`(!!"leg joined. Passive leg P1 joined.)]]][,(!&X!"X&)[,(! 6dX! d!)[8(! virtual BCSMStop (legID))][ ,(!,^!"()[(! l! 22!(d)[M (! l)[P (! 6)[S (! 6d! )]][ V (! 6 )][9B(! 6X,! )[8(!' /**** DECLARATION OF OPERATIONS ****/)]][9z (! 6! )[8(! /* Operations on legs */)]][$h (! 6! d)[(! 6! AddLeg)][ (!^!"^)[k (! 6!)[8(!2 Adds a leg to a call segment (connection point).)]]]][$,(! 6! d)[(! 63! Remove_ Leg)][ ,(!!")[ ,(! 6!)[8(! Removes a leg.)]]]][$} (! 6R! d)[(! 6k! SetLeg_ Status)][ (!^!"^)[ (! 6R!)[8(! Sets the status of a leg.)]]]][$,(! 6R! d)[(! 63k! Release_ AllLegs)][ ,(!!")[,(! 6R!)[8(!0 Removes all legs associated with this segment.)]]]][$<(! 6! d)[(! 6! GetLeg_ Status)][ <(!^!"^)[<(! 6!)[8(! Returns the status of a leg.)]]]][$<(! 6! d)[(! 63! SetLeg_ Assoc)][ <(!!")[<(! 6!)[8(!1 Associates a remote leg id with a local leg id.)]]]][$ (! 6~! d)[(! 6! SetLeg_ P tr)][ (!^!"^)[ (! 6~!)[8(!& Connects the leg to a BCSM instance.)]]]][$<(! 6~! )[(! 63~! G23(! l! 22!(24)[6G(! l)[9G(! 625)[ O_BCSM (obcsmPars))][ S(! F !"F  )[g4(! 6F!)[8(!U Create an instance of an O-BCSM, which starts off from the Null state with LegId 2.)]]][V?(!R!"R)[%p4(! 6L! d)[8(!) SetLegPtr (leg2,Offspring, Originating))][ 4(!F!"F)[s4(!(C(!X!"X)[C(! 6X!)[8(! Terminating setup.)]]][C(!&X!"X&)[C(! 6,X!Brg))][](!!")[\(! 6F! d!)[8(! InitialDP (,idpArg) to CSA)][](!"Rkk!" d!)[8(!# SetupReqInd (sirArg, csaID,legID))][ @C(!X!"X)[C(! 6XX!)[8(! From remote O-BCSM.)]]][CC(!C!")[6OR(! 6,! d)[8(!) CP!Controlling_ Leg!BCSM := Terminating)][ UR(! X !"X  )[`P(! 6XD!)[8(!3 Set the controlling leg to be an originating leg.)]]][RR(!R!"R)[6Z(! 6,! d)[8(! CP!SigConId:=sirArg! callRef)][]r Boolean;)]][9B(! 6! )[8(! DCL /* IN CS-1 operation arguments. */ acArg ApplyChargingArg, acrArg ApplyChargingReportArg, ariArg AssistRequestInstructionsArg, aiArg AnalyseInformationArg, cirArg Ca)ignal is a BCSM or not.)]]]][$<(! 6! d)[(! 63! Get_ Passive_ LegId)][ d=(!!")[a=(! 6!)[8(!<cl!"l:)[)`()]]]]]][Oa(!"~!"~)[a(! 6L! d!)[8(! virtual DPDisconnect (dp))][HRa(!!")[ a(! 6L! d!)[8(! DPDisconnect (dp) to SSF)][Ua(!":SSl!"l_L)[]V(! 6&! d!)[8(! virtual BCSMStop (legID))][fV(!rr!"rr)[%Y(! 6! d)[8(! RemoveLJeg (legID))][Y(!r rR!"rRr )[6cV(! 6R! d)[8(! bcsmStopped := true)][lV(!rr!"rr)[(!' EventNotification_ Charging (,encArg))][](!!")[\(! 6R! d!)[8(!. EventNotification_ Charging (,encArg) to CSA)][](!"(R )[Q(! 6R! d!)[8(! SSFStop to SSF)][ Q(!^!"^)[Q(! 6R!)[8(! !)[8(! to call GetLegPtr (newlegID))]]][ Y(!@r!"r@)[(! 6r!Z)][3X(! 6r! d)[8(! -)]]]]]]][20OF SIGNALS TO/FROM SIGCON (VIA THE CSA/IH). */ 21[3zH(! 6d! d)[822(! *)][ H(!,^3^,)[}H 9v)[(! 6! MapConnect_ ToBCSM)]][$V(! 6X! ,)[(! 6! MapSI_ ToBCSM)]]]]}V(! 6! ,)[(! 6&! MapSI_ ToBCSM)]]]]}!~)[6Y(! 6 ! ,)[8(!b obcsmPars!startState:=analyseInformation, obcsmPars!legID := coArg! legToBeCreated!sendingSideID)][Y(!Fx!"x(! 6 ! d)[8(! SetLegStatus (legID, joined))][ G?(!RR!"RR)[,?(! 6 !)[8(!1 Set the status of the passive leg P1 to aNDLING OF CALL SETUP. ****/)]][3.4(! 6^X! d)[8(! Null)][ C(!&!"&)[C(! 6X!)[8(! Originating setup.)]]][#~!"~^~)[7~_(! 6L!! )[8(! to CSA)]]][_(!!")[3_(! 6! d)[8GmR(!!")[% (! 6~! ,)[8(!J SetLegPtr (icaArg!legToBeCreated! sendingSideID, offspring, originating))][ (!"  U!" )[ (! 6!)[8(!* Connect the passive leg 1 to the O-BCSM.)]]][1 (!X!"X)[% (! 6~! ,V)[8(!? SetLegStatus (ICAArg! legToBeCreated! sendingSideID, pending))][ 4 (!"!")[ (! 6!)[8(!7 Set the status of Wthe created passive leg to pending.)]]][L (! R!"R )[7 (! 6R! d!)[8(!* InitiateCall_ Attempt (invokeID,,icaArg))][1C (!xX!"x)[7: (! 6R!)[8(!W to SSF /* Send InitiateCall- Attempt to the SSF-FSM associated with this segment. */)]]][F (!!"Y)[6AZ(! 6! d)[8(! dialogueActive := true)][DZ(!L~!"~L)[(! 6~!Z)][3= (! 6~! dZ)[8(! Originating_ _1_Party_ _Setup)][ -(!x!"x)[-(! 6~!)[8(!P Controlling leg surrogate. Passive leg P1 pending (associated with an O[-BCSM).)]]]]]]]]]]]]]][32 (! 6^! d)[8(! Null)][ C(!X!"X)[C(! 6^!)[8(!@ SCF initiated call setup. Process\ing of InitiateCall- Attempt.)]]][; (!!")[ (! 6! d!)[8(!* InitiateCall_ Attempt (invokeID,,icaArg))][ (!X&& Z(!X!"X)[Z(! 6X!)[8(!/ Store the SigConID of the calling user agent.)]]][Z(!!")e_ Active)][R(!!")[8(! 6! true)][(! 6!Z)][38Q(! 6d! d)[8(! WaitFor_ SSF)]]][R((! 6! d)[(! 6! IsBCSM)][ (!^!"^)[(! 6!)[8(!F Predicate determining whether a sender of a sF)[8(!% Is the signal incoming or outgoing?)]]][?(!^~~L!"~L^)[8(! 6! No /* Incoming */)][ b?(! 6L! d)[8(! Ujoined.)]]][J?(!RR!"RR)[/?(! 6! d!)[8(!$ SetupReq_ Ind (sirArg,csaID,legID))][1'D(!!"f! d)[8(! newlegID := legID)][8`(!"x!"x)[)_()]]]]]][;`(!L  x!"xL )[8 Returns the id of the passive leg in the connection point.)]]]][9V(! 6&! )[8(![ /* Procedures for building the information to be passed to an O-BCSM at creation time. */)]][$V(! 6! ,O(!:!":)[\(! 62:! d!)[8(!. SendCharging_ Information (invokeID,,sciArg))][\(!!"%R)[7`(! 6!! )[8(! to CSA)]]][`(!"4!"4)[)`()]]]]]]]]]]]}d!)[8(!. Assist)[7$D(! 6!)[8(!. to CSA /* To remote BCSM via the CSA/IH. */)]]][P?(!RRL!"RLR)[(! 6RL!Z)][35?(! 6gL! d)[8(! Stable_1_ _Party)][ S?(!~~!"~~)[8?(! 6L!)[8(!O Controlling leg surrogate. Passive leg P1 joined (associated withh an O-BCSM).)]]]]]]]]]]]]]]}with an O-BCSM).)]]]]]]]]]]]]]]}6L!)[8(!. to CSA /* To remote BCSM via the CSA/IH. */)]]][P?(!RR!"RR)[(! 6R!6^! )[8(! /* Note: Events occuring when the passive leg is pending (in the case of originating setup), or when the controlling leg is pending (in case of terminating setup) should be reported for the controlling leg.)]])[8(! to SSF)]]][G(!"l!"l)[(! 6!)][)G()]]]]]]]]]}!"^,)[HD(! 6^f)][3E(! 6^4! d)[8(! -)]]]]]["F(!&!"&)[8(! 6! receiverRef /* From T-BCSM */)][E(! 6c!l d!)[8(! Release_ Ind (rArg))][1F(! R!"R )[7F(! 6R!)[8(! to call GetLegPtr(leg1))]]][%F(!" FXF)[R(! 6!)[8(!4 Indicate to the CSA that this segment is released.)]]][R(!x!"x)[4R(! 6! 4f!"f4)[3_](! 6df! d)[8(! -)]]]]][](!,ll!",l)[8(! 6! False)][b](! 6!Z)][3JE(! 6d! d)[8(! Transfer)][ E(!,^!"^,)[ME(! 6^!)[8(!J Controlling leg surropgate. Passive leg P1 joined. Passive leg P2 joined.)]]]]]]]]]]]][3@F(! 6&! d)[8(! Forward)][ sF(!XX!"XX)[pF(! 6&!)[8egID))][ [F(!!"~)[FF(! 6!)[8(!E From BCSM Virtual because this transition is redefined in IN CS-2.)]]][^F(!L L!"rLL )[ IF(! 6! d)[8(! call GetLegStatus (legID))][ yF(!"!")[vF(! 6R!)[8!")[~D(! 6! d!)[8(!$ SetupReq_ Ind (sirArg,csaID,legID))][1D(!XFF!"FXF)[7D(! 6! d)[8(! Transfer)][F(!,X,!",,X)[E(! 6! d!)[8(! Call_ Progress_ Req(cpArg))][ BP(!)[ T(! 6~F! d)[8(!& redirectionInformationPresent(CoArg))][U(!!")[8(! 6! true)][6T(! 6~! {!"x)[J(! 62! ,!)[8(!: Request_ Notification_ ChargingEvent (invokeID,,RNCEArg))][9J(!@r!"r@)[J&)[^(! 6dX! d!)[8(!& virtual Service_ FeatureInd (SFtArg))][^(!!")[6^(! 6d! d)[8(2)[8(! 6!! False)][](! 6@! d!)[8(!! Errror (invokeID,,ieArg) to ssf)][](!"4!"4)[)}] Offspring, Originating))][ E(!"LYY@@!"@LY)[D(! 6!)[8(!, Associate the passive leg with the O-BCSM.)]]][E(!(!P Controlling leg surrogate. Passive leg P1 pending (associated with an O-BCSM).)]]][>?(!RXR!"RRX)[#?(! 6! d!)[8(!$ SetupReq_ In'd)[8(!A obcsmPars!redirectingInformation:= CoArg!redirectionInformation)][U(!@!"@)[(! 6!Z)][T(! 6~! d)[8)[8(! 6! false)][(! 6!)][) ()]]]]]]]]]][-(!^kk!"^k)[8(! 6! Failed)][()[(! l! 22!(d)[_(! l)[_(! 6)[_(! 6d! )]][ _(! 6)][9_(! 6! )[8(!. /**** RO&??X!"X&)[[(! 6,X! d!)[8(!0 Call_ Information_ Request (invokeID,,cirqArg))][0\(!!"! d)[8(! dp!bcsmEvent)][:a(!,xx!",x)[8(! 6X! origAttempt, origAttemptAuthorized, collectedInfo, analysedInformation, tBusy, tNoAnsweolling leg.)]]][IC(!!")[8(! 6! Successful)][% C(! 6,! d)[8(!, SetLeg_ Status (controllingLegID, pending))][ OC(!&[ C(! 6! ,)[8(! call AddLeg (controllingLegID))][ FC(!"&e?e?LXL!"XL&e)[ C(! 6X!)[8(! Add the contr! d)[(! 6-! GetLeg_ Ptr)][ (!^FF!"F^F)[ (! 6!)[8(!) Returns the pointer to a BCSM instance.)]]]][$7_`(!"^rr!"^r)[t`(! 6!! )[8(!% Is the signal incoming or outgoing?)]]][`(!!"6x! d!)[8(!9 RequestReport_ BCSMEvent (invokeID,, rrbcsmeArg) to SSF)][\(!"~~!"~)[)[()]]]]]][\(!",)[B(! 6^!)[8(! Instruct the SSF to terminate.)]]][;Q(!!")[ R(! 62! ,)[8(! Dialogu^X!"X&)[[(! 6 X! d!)[8(!( Collect_ Information (invokeID,,ciArg))][B\(!!")[[(! x^R!)[8(!) Set the status of leg LegId to pending.)]]][E(!!")[DE(! 6d! d!)[8(! SetupReq_ Ind (SIRArg,,le~6x! d!)[8(!& ReleaseCall (invokeID,,rcArg) to SSF)][\(!"xx!"x)[)[()]]]]]][\(!"rregId (legID))][ ?D(!!")[ Stable 1 Party */)]]F)[%SZ(! 6! d)[8(! RemoveLeg (legID))][bZ(!4f!"f4)[(! 6f!Z)][3VZ(! 6f! d)[8! False)][M](! 6! d!)[8(!' Application_ End(termination,) to ssf)][](!"Lee~!"~L)[)8]()]]]]]]]]]]][3P]!)[8(! Add a passive leg.)]]][" (!^--!"^-)[8(! 6F! Failed)][(! 6-!)][+(! 62! l!"l)[8(! 6!! Originating)][qZ(! 6xl! d!)[8(! Subsequent_ AddressInd (saArg))][1Z(!@r!"r)[8(! 6! Successful)][ C(! 6,! d)[8(! T_BCSM (nullstate,leg1))][ ^C(!@X@!"X@@)[C(! 6X(! BCSM_CONNECT_CREATION)]]]]][U(!*~xx!"~x)[8(! 6! false)][(! 6!)][)T()]]]]]][ U(!*)()[(! l! 22!(L)[B(! l)[B(! 6)[B(! 6d! )]][ B(! 6)][3C(! 6,! d)[8(! Null)][ @(!!")[8(! 6! Successful)][6V(! 6R! d)[8(!, obcsmPars := call MapConnectToBCSM (coArg))][V(!~!"P)[7^(! 6!! )[8(! to CSA)]]][H_(!"R4RMMf!"fR4)[)^()]]]]]][K_(!*qqM(! 69! Yes /* Outgoing */)][_(! 6xx! d!)[8(!. Release_ ReqInd (rArg,csaID,legID, callFlag))][1>`(!@r!"r@)[7`(! "!)[8(! CACGResp (,,r) to ssf)][a(!"''@!"@)[)a()]]]]]][a(!"!")[)[3b`(! 6! d)[8(! -)]]]]][`(!!")[8(! 6! Yes /* Outgoing */)][e`(! 6! (! 6 3! false)][(! 6!Z)][3QS(! 6! d)[8(! WaitFor_ BCSM)]]]]]]]]]]]][3WS(! 6! d)[8(! WaitFor_ SSF)][ZS(!~)[8(! 63! true)][6T(! 6~~! d)[8(!8 obcsmPars!redirectingNumber:= CoArg!redirectingPartyID)][ U(!F!"Fuhis segment is released)]]][rS(!LL!"L@LL)[4oS(! 6! d)[8(! )]]]]]]]]]]]]][`V(!"LL r r&!"r&I(! 62! shared, surrogate)][)^()]]]]]]][3^(! 6x! d)[8(! * (Transfer))][ 6_(!"!")[)^()]][xx!"x)[ \(! 6! d!)[8(!! Release_ Call (invokeID,,rcArg))][\(!xFxx!"xxxF)[\(! ()[(! l! 22!(m)[hQ(! l)[kQ(! 6)[nQ(! 6d! )]][ qQ(! 6)][3tQ(! 6! d)[8(! *)][Qf!"fF)[8(! 6! shared, surrogate)][)^()]]]]]]]]]} -)]]]]]]]]][H(!"&? ? X!" X&)[H(! 6X|nd (RArg))][_(!!")[6^(! 6x! d)[8(! legID:=call GetPassive_ LegId)][_(!R!"R)[(! to SSF)]]][oJ(!:!":)[(! 6:!Z)][3lJ(! 6d:! d)[8(! -)]]]]]]][J(!"xRR!"~)[\(! 6! d!)[8(!2 RequestReport_ BCSMEvent (invokeID,, rrbcsmeArg))][\(!~F~x!"~x~F)[ \(! (! Which leg released?)]]][aF(!RR!"R)[8(! 6k!' joined /* The joined leg released. */)][%LF(! 6! d)[8(! RemoveLeg (legID))][dF(!R~R!"RR~)[(! 6R!Z)][3OF(! 6! d)[8(! Originating_ _1_Party__ Setup)]]]]][gF(!F! MSFCReq)][a(! !" )[a(! 6, ! d!)[8(!! MSFCReq (,callSegmentID) to CSA)][a(!"!"R)[%.C(! 6~! d)[8(! SetLegAssoc (legID, leg1))][ pC(!F!"F)[1C(! 6!)[8(!4=(! to call GetLegPtr (newlegID))]]][`(!4!"4)[3`(! 64! d)[8(! -)]]]]]]][`(!^rr!"to SSF)]]][7I(!"@YYr!"r@)[(! 6RY!)][)&H()]]]]]]]]]}r@)[7I(! 6r!)[8(! Z(! 6~! d)[8(! -)]]]]][Z(!:!":)[8(! 63:! Terminating)][(! 6!Z)][)wZ()]]]]]]]]]}8(!% CallInformation_ Report (,cirArg,r))][\(!!")[\(! 6X! d!)[8(!+ CallInformation_ Report(,cirArg,r) to CSA)][\(! 6k! No /* Incoming */)][ _(! 6! d)[8(! callFlag)][)`(!~!"~)[8(! 6! senderRef)][6_(! 6 )[)ya()]]]]]][a(!"Xqq!"X)[a(! 6&! d!)[8(! CACGReq)][a(! 5 )[)(^()]]]]]]]]]]]} Ind(FArg))][1[=(!!")[7R=(! 6!)[8(! to call GetLegPtr (legID))]]][@=(!"RR))][)&H()]]]]]][1I(!"RR!"R)[H(! 6F! ,!)[8(! Continue (invokeID,))][PH(!!"E!")[W(! 62! d!)[8(!5 SendCharging_ Information (invokeID,,sciArg) to SSF)][W(!4f!"f4)(!K Controlling leg surrogate. Passive leg P1 joined. Passive leg P2 pending.)]]][XF(!LL!"LL)[CF(! 6! d!)[8(! virtual BCSMStop (lq)[8(! From CSA due to a ReleaseCall)]]][Q(!!")[%Q(! 6! d)[8(! Release_ AllLegs)][Q(! R!"L(! Signals from SigCon to O-BCSM)]]][:^(!&X!"X&)[](! 6dX! d!)[8(!! Subsequent_ Address_ Ind(saArg))][=^(!!")[6](! 6d! d)[8(! legID :=call GetPassive_ LegId)][@^(!R!"R)[^(! 6d! d!R)[)\()]]]]]]]]]}8(! 6! No /* Incoming */)][6Z(! 6! d)[8(!4 newlegID := call GetLegIdFrom_ RemoteLegId (legID))][Z(!l!"'()[(! l! 22!(d)[](! l)[](! 6)[ ](! 6d! )]][ #](! 6)][9&](! 6 ! )[8(!7 /**** ROY(!R!"R)[8(! 63! receiverRef)][6X(! 6! d)[8(! newlegID := legID)][Y(!"F__)! d)[8(! dialogueActive := false)][`S(!L LR!"LRL )[]S(! 6R! d!)[8(!& ApplicationEnd (termination,) to csa)][ )[ 2](! 6dR! d)[8(! sender = ssf)][](!!")[8(! 6! true)][5](! 6d! d!)[8JRR)[6^(! 6! d)[8(! legID:=call GetPassive_ LegId)][_(!RRR!"RRR)[^(! 6! d!(!&!"&)[}Q(! 6&! d!)[8(! CSStop)][ Q(!^XX!"X,X^X)[Q(! 6&!)[8(! Failure_ Ind(FArg))][1 _(!!")[7^(! 6!! )[8(! to call GetLegPtr (legID))]]][ _(!"RR (rArg,csaID,legID, callFlag))][1/`(!L~!"~L)[7_(! 6~x!! )[8(! to call GetLegPtr (newlegID))]]][2`(!!"~)[ (! 6^! ,)[8(!4 call AddLeg (icaArg!legToBeCreated! sendingSideID))][  (!"--!"-)[ (! 6(!8 FurnishCharging_ Information (invokeID,,fciArg) to SSF)][{\(!"!")[)[()]]]]]][~\(!"!"!"R)[)^()]]]]]]]][_(!"&??X!"X&)[^(! 6xX! d!)[8(! virtual ReleaseI!"R)[6*(! 6! d)[8(! SSF := Offspring)][ B(!R!"R)[B(! 6!)[8(!H>dicators:= CoArg!forwardCallIndicators)][U(!R!"R)[ T(! 6~! d)[8(!" redirectingPartyIDPresent(CoArg))][U(!~!"13G OF IN CS-1 OPERATIONS TO/FROM THE SSF-FSM ***14][9G(! 6,! )[815(!3 /* IN CS-1 operations from the SCF 16he SSF. */)]][3G(! 62! k,)[8(! 6! false)][;](! 6^! d!)[8(! Application_ Begin to ssf)][](!"Lee~!"~L)[)8]()+F)[ D(! 6Rx! d)[8(! O_BCSM (obcsmPars))][ E(!!")[D(! 6x!)[8(!_ Create an instance of an  SSFStateType, /* Start state of the SSF-FSM. */ SCFInitiated Boolean; /* Is the call initiated by the SCF or not? */)]} 6X! d)[8(! LegId := call GetLegId(Sender))][!(!~~!" !"  R)[^(! 6! d!)[8(! AddressEnd_ Ind(aeArg))][1R^(!!")[7^(! 6!F! d)[8(! )]]]]]]]]]]]]]]]]}(! 6@F!)[8(!3 Indicate to the CSA that this segment is released)]]][V(!!")[4V(! 6>R )[ X(! 6R! d)[8(! call IsBCSM (Sender))][ X(!"R  !" R)[X(! 6!)[8(!%(!+ Disconnect_ ForwardConnection (invokeID,))][f\(!Fx!"xF)[[(! 62x! d!)[8(!2 Disconnect_ ForwardConnection (invokeID,) to SSF)][i\&X!"X&)[[(! 62X! d!)[8(!! ApplyCharging (invokeID,,acArg))]['\(!!")[[(! 62 15OF SIGNALS TO/FROM SIGCON (VIA THE CSA/IH). */ 25[3zH(! 6d! d)[87(! *)][ H(!,^7"^,)[}H D8)[^(! 6F! d!)[8(!! Subsequent_ Address_ Req(SAArg))][Q_(!r!"r)[ ^(! 6F! d4(!"Lee~!"~L)[(! 6e!)][3F(! 6~~! d)[8(! -)]]]]][F(!~!"~!")[8(! 6! else)][)`()]]]]]][Fa(!"~!"~)[a(! 6R! d!)[8][.I(!!")[H(! 6X! d!)[8(!( ConnectTo_ Resource (invokeID,,CTRArg))][MH(!x!"^(! 6x! d!)[8(! Release_ Ind(RArg))][1_(!@r!"r@)[7^(! 6r!! )[8(! to call GetLegPtr} scrArg!callRef := CP!SigConId)][B_(!RR!"RR)[^(! 6! d!)[8(! SetupResp (SCRArg))][1E_(!!"(! 6! d)[8(! legID :=call GetPassive_ LegId)][p^(! r !"  r)[1^(! 6! d!)[8(! Call_ Progress_ Ind(cpArg))][1s^(!!")[74^(! 6!! )[8(! to call GetLegPtr (legID))]]][v^(!"  !!:!":L!"L)[8(! 6e! senderRef)][6X(! 6! d)[8(!4 newlegID := call GetLegIdFrom_ RemoteLegId (legID))][Y(!F!"[(! 6f!Z)][3W(! 62f! d)[8(! -)]]]]]]]]]]}]]]]]]]]}(! )]]]]]]})]][  (! 6)][ (! 6 ! d)[8(! Failed)]s7](!"4MMf!"f4)[)_]()]]]][](! !" )[8(! 6! False)][n](! 6R! d!)[8(! Application_ Continue to ssf)][](!"4MMf!"f4)[)_]()]]]]]]]]][3q](! 6F! d)[8(! *)][](!@!"@)[t](! 6F@! d!)[8(!" virtual Errror (invokeID,,ieArg))][](!!")[Instruct the SSF to terminate.)]]][?S(!!")[ KS(! 6! d)[8(! dialogueActive)][NS(!L!"lS(!LL~!"L~L)[ uV(! 6~! d)[8(! bcsmStopped)][~V(!rr!"r)[8(! 6. /* Incoming */)][_(! 6d! d!)[8(! CallProgress_ ReqInd (CPArg))][1`(!,L^L!"^L,L)[7_(! 6^!! )[8 )[8(! 6L! Originating)][(! 6~!Z)][)F()]]]]]]][3F(! 6^x! d)[8(! Forward, Transfer)][F(!!"yE(! 6x! d!)[8(! SetupConf (scrArg))][1F(!@r!"r@)[7F(! 6r!)[8(! to call GetLegPtr(leg1))]]][F! ,!)[8(!7 RequestFirst_ StatusMatch_ Report(invokeID,,RFSMRArg))][1cJ(!"@9Y9Y r !"r @9)[7`J(! 6r!)[8(! to SS(!"&??X!"X&)[[(! 6&X! d!)[8(! Cancel (invokeID,,cArg))][9\(!!"!)[8(!. Create an instance of a T-BCSM with LegId 1.)]]][FR(!r!"r)[(! 6!Z)][CR(! 6,! d)[8(g()[(! l! 22!(K)[C(! l)[(! 6)[P(! 6d! )]][ (! 6 )][9D(! 6X^! )[8(! /**** TR?r, tAnswer, tReAnswer, facilitySelectedAndAvailable, callAccepted)][6`(! 6^! d)[8(! dp!legID := controllingLegID)][=a(!"r!"r)[`()[(! l! 22!(d)[[(! l)[[(! 6)[[(! 6d! )]][ [(! 6)][9[(! 6! )[8(!? /**** RO (legID))]]][xP(!  !"  )[(! 6 !Z)][3uP(! 6! d)[8(! Terminating_ _Setup)]]]]]]][?(!~~!")[%D(! 6 ! ,)[8(!= SetLegStatus (CoArg!legToBeCreated! sendingSideID, pending))][ E(!"L!!!"L!)[3T(! 6! d)[8(!" redirectingNumberPresent(SIRArg))][VT(!@@!"@@)[8(! 6Y! true)][6/T(! 6! d)[8!rd -> Transfer */)]][9mF(! 6^! )[8(!I /* Forward -> Originating 1 Party Setup Forward -> Stable 1 Party */)]][32E(! 6d&! d)[8(! Forward)][ zE(!,X^6)[8(! PICs)]]][a(!&!"&)[`(! 6d&! d!)[8(! virtual PIC (PIC))][a(!!"-1 operations from the SSF to the SCF. */)]][3\(! 6d! d)[8(! *)][\(!&X!"X&)[\(! 6dX! d!)[8(!# (!"Rkk!"R)[)\()]]]]]][\(!"&??X!"X&)[\(! 6RX! d!)[8KP!SigConId)][W_(!!")[^(! 6F! d!)[8(!! Subsequent_ Address_ Req(SAArg))][1Z_(!r!"r)[7^(! 6r!! )[8(! to CSA)]]][]_(!"4MMf!"f4)[)^()]]]]]][`_(!*FMM(! to call GetLegPtr (legID))]]][`(!~!"~)[3_(! 6d! d)[8(! -)]]]]][`(!,  !", )[_(! 6!! )[8(!% Is the signal incoming or outgoing?)]]][`(!R!"R)[8(! 6k! No(! 6dx! d!)[8(! SetupConf (scrArg))][^^(!!")[6^(! 6d! d)[8(! legID :=call GetPassive_ LegId)][-L!"RL)[8(! 6e! false)][6Y(! 6! d)[8(! dialogueActive := true)][Y(!"--F!"F4!"4)[(! 64!Z)][)E()]]]]]]]]][3eZ(! 6~x! d)[8(! Forward, Transfer)][zZ(!!"/()[(! l! 22!(d)[ (! l)[ (! 6)[ (! 6d! )]][  (! 6)][ (! 6 ! d)[8(! Failed)]6^!! )[8(! to call GetLegPtr (legID))]]][g^(!:!":)[3(^(! 6d:! d)[8(! -)]]]]]]]]][j^(!"F_ _ x!" xF)[+^(! 6x! d!)[8(! Call_ Progress_ Ind(cpArg))][m^(!  !"  )[6.^! d!)[8(!/ SubsequentAddress_ ReqInd (SAArg,csaID,legID))][`(!@!"@)[ q`(! 6@! d)[8(! call IsBCSM (Sender))][ (! 6d! d!)[8(! DP (dp) to SSF)][@a(!:l!"l:)[3`(! 6dl! d)[8(! -)]]]]]]][Ca(!d!)[8(! Address_ EndInd (aeArg))][L^(!  !"  )[6 ^(! 6! d)[8(! legID := call GetPassiveLegId)][O^(! RMf!"f)[8(! 6! shared, surrogate)][)^()]]]]]]][3^(! 6Fx! d)[8(! * (Transfer, Forward))][N_(!!"6! d)[8(!$ callingPartyNumberPresent (icaArg))][Y(!:!":)[8(! 6 !! true)][6Y(! 6:! d)[8(!.()[(! l! 22!()[(! l)[(! 6)[P(! 6d! )]][ (! 6)][97F(! 62^! )[8(! /* Forwa8(! RemoveLeg (legID))][,(!R!"R)[B(! 6d! d!)[8(! SSFStop to SSF)][ B(!,^!"^)[\(! 6 ! d!)[8(!: Request_ Notification_ ChargingEvent (invokeID,,rnceArg))][\(!Fx!"xF)[\(! 6 x! d%fer))][_(!X!"X)[r_(! 6! d!)[8(! Call_ Progress_ Req(CPArg))][_(! !" x)[ H(! 6X! d!)[8(!( ConnectTo_ Resource (invokeID,,CTRArg))][1%I(! R!"R )[7I(! 6R!)[8(! to!"^)[8(! 6! senderRef /* From O-BCSM */)][E(! 6=! d!)[8(! Release_ Ind (rArg))][1F(!,!",)[7F(! 6,!)[8(!& to call GetLegPtr (MkString(I2O(3))))]]][F(!"4!"4)[(! 6!k9_(!RR!"RR)[^(! 6! d!)[8(! SetupResp (SCRArg))][<_(!RrR!"RRr)[ ^(!  )[a(! 6F! d!)[8(! DPMidCall (dp) to SSF)][^a(!":SSl!"l:)[)`()]]]]]]][9a(! i)[8(! sender = ssf)][](!!")[8(! 6!! True)][k](! 6X! d!)[8(! Application_ Continue to csa)][ 6R ! d)[8(!& call GetLegStatus (controllingLegID))][_(!L!"L)[8(! 6! else)][_(! 6RL! d!)intType; controllingLeg LegInfo; /* Always leg ID 1 or 2. */ passiveLegs LegArray; sigConId CallRef; /* SigCon ID connected to the controlling leg. */ ENDNEWTYPE; /* Definition of leg association table, used to as"sociate a 'remote' leg id with a 'local' leg id. This information is needed to correctly address signals to/from routed to/from the BCMs. */ NEWTYPE LegAssociationTable ARRAY(LegType,LegType) ENDNEWTYPE; /* Definition of return results of procedure ca#lls. */ NEWTYPE ResultType LITERALS Successful, Failed; ENDNEWTYPE; NEWTYPE AnswerType LITERALS Yes, No; ENDNEWTYPE AnswerType;)]]]]}werType;)]]]]}]]]}]]})[8(! DPOAbandon (LegId))][1f (!!"entReportBCSMArg, fciArg FurnishChargingInformationArg, idpArg InitialDPArg, icaArg InitiateCallAttemptArg, rcArg ReleaseCallArg, rnceARg RequestNotificationChargingEventArg, rrBCSMEArg RequestReportBCSMEventArg, rtARg ResetTimerArg, sciArg% SendChargingInformationArg, sfArg SelectFacilityArg, srArg SelectRouteArg, ieArg ErrorArg;)]][9B(! 62! )[8(! DCL /* Signalling control primitive parameters. */ AEArg AddressEndType, CPArg CallProgres&sType, FArg FailureType, RArg ReleaseType, SFtArg ServiceFeatureType, SIRArg SetupIRType, SCRArg SetupCRType, SAArg SubsequentAddressType;)]]]]}]]]}tAddressType;)]]]]}pe, SAArg SubsequentAddressType;)]]]]}ressType;)]]]]}ressType;)]]]]}ubsequentAddreme)][1+a(!!")[7`(! 6!! )[8(! to call GetLegPtr (legId))]]][.a(!"   99R!"R 6F!)[8(!. Associate the passive leg 1 with the O-BCSM.)]]][4(!!")[%4(! 6L! d)[8(! SetLeg_ Status (leg2,pendi<~--F!"F~)[8(! 6! false)][(! 6-!)][)T()]]]]]][U(!*~!"#e_2_Party))][X(!!")[X(! 6! d!)[8(!. Release_ ReqInd (rArg,csaID,legID, callFlag))][X(! R!"]]]]]]]]]]][3>](! 6! d)[8(! * (WaitFor_ SSF))][](!&!"&)[A](! 6&! d!)[8(! Application_ End(ssType;)]]]]}ers. */ AEArg AddressEndType, CPArg CallProgressType, FArg FailureType, RArg ReleaseType, SFtArg ServiceFeatureType, SIRArg SetupIRType, SCRArg SetupCRType, SAArg SubsequentAddressType;)]]]]}uentAddressType;)]]]]}entAddressType;)]]]]}r mating_ _Setup)][ 5(!F!"F)[4(! 6Fx!)[8(!L Controlling leg joined. Passive leg P1 pending (associated with an O-BCSM))]]]]]]]]]]]]]]]]}!!")[)b`()]]]]]]]]][3k`(! 6! d)[8(! *)][`(!x!"x)[n`(! 6)[hZ(! 6s! d!)[8(! Subsequent_ AddressReq (saArg))][ }Z(!F@x@!"x@ @F@)[kZ(! 6x!)[8(!'~rR)[)[()]]]]]]][3[(! 62L! d)[8(! *)][c\(!!")[[(! 62! d!)[8 Setup -> Stable 2 Party */)]][3ZD(! 6! d)[8(! Originating_ _Setup)][ D(!X  !" X )[]D(! 6!)[8(!L Controllin+! legID:=call GetPassive_ LegId)][^(!R!"R)[^(! 6d! d!)[8(! ServiceFeature_ Ind(SFtArg))][1^(!,^!"W(!X!"&X)[iD(! 6!)[8(! From O_BCSM)]]][D(!L!"L)[%rD(! 6L! )[8(!& call GetLegStatus (controllingLegID))][T_(!:!":)[8(! 6!! else)][6^(! 6F:! d)[8(! saArg!callRef := C!" )[a(! 6& ! d!)[8(!! CACGReq (,callSegmentID) to CSA)][a(!"!")[)ya()]]]pX!"^X,X)[5E(! 6^&!)[8(!K Controlling leg surrogate. Passive leg P1 joined. Passive leg P2 pending.)]]][}E(!!")()[(! l! 22!(H)[6(! l)[6(! 6)[6(! 6d! )]][ 6(! 6)]]]}X(! 6&! d)[8(! * (Stabl*28!"RR!"22R)[(! 64!)][3I((! 6! 7 d)[8(! -)]]]]]]][O( ,N!R()[(! l! 22!(d)[](! l)[](! 6)[](! 6d! )]][ ](! 6)][9](! 6X! )[8(!= /* ROUTI! 6!)][)S()]]]]]][S(!*,22!",)[8(! 62! false)][(! 6!)][)S()]]]]]][S6r! ,!)[8(!1 RequestReport_ BCSMEvent (invokeID,,RRBCSMEArg))][1{J(!"!")[7xJ(! 6r!)[8(! (ng))][ 4(!LFL!"FLL)[4(! 6F!)[8(!1 Set the status of the passive leg 1 to pending.)]]][5(!~!" Associate the remote LegId with the passive leg 1.)]]][sC(!!")[4C(! 6~! d!)[8(!# SetupReqInd (sirArg,csaID, legID))][1vC(!C Store the address/pointer to the SSF-FSM associated with this segment.)]]][5(!!")[ Y(! 6! d)[8(! ssfState = idle)][Y(!RL ANSITIONS BETWEEN THE CONNECTION VIEW STATES OF THE CALL SEGMENT. ****/ /* Note: The states of the call segment are defined in Q.1224. */)]][9)E(! 6 &! )[8(!R /* Originating Setup -> Stable 2 Party Terminating1F)]]][SH(!@r!"r@)[(! 6r!Z)][3&H(! 6dr! d)[8(! -)]]]]]]]][3+I(! 6X~! d)[8(! *)le 2 Party -> Originating Setup Notes: - ReleaseReqInd (from remote party) in stable 2 party on an O/T-BCSM results in that the CS goes 'back' to originating/terminating setup state. - The transition from Stable 2-S()[(! l! 22!(d)[D`(! l)[G`(! 6)[J`(! 6d! )]][ M`(! 6)][3P`(! 6^! d)[8(! * (TermiFLL!"LFL)[77C(! 6!)[8(!a TO call GetLegPtr(leg1) /* Pass SetupReqInd on to the T-BCSM associated with passive leg 1. */)]]][yC(!~!"()[(! l! 22!(d)[`(! l)[`(! 6)[`(! 6d! )]][ `(! 6)][9`(! 6! )[8(!G /**** ROa)[#H(! 6x! d!)[8(! Continue (invokeID,))][1"I(!@r!"r@)[7I(! 6r!)[8(! [3JZ(! 6! d)[8(! Transfer)][YZ(!:!":)[MZ(! 6:! d!)[8(! virtual BCSMStop (legID))][ \Z(! -)]]]]]]][_(!*R2R2!"R)[8(! 6Kk! shared, surrogate)][)_()]]]]]]][3_(! 6R! d)[8(! *)ck!"R)[)\()]]]]]][](!"&??X!"X&)[\(! 6FX! d!)[8(! InitialDP (,idpAA! d)[8(! *)][W(!:!":)[W(! 62:! d!)[8(!. SendCharging_ Information (invokeID,,sciArg))][W(!(! Application_ Begin to csa)][](!L~!"~L)[38](! 6d~! d)[8(! -)]]]]][](!,!"G_CONT_SETUPIND)][>T(!@&@X!"@X@&)[ T(! 6X! d)[8(!& forwardCallIndicatorsPresent(SIRArg))][AT(!@@!"@(! SRI)][LR(!&X!"X&)[%C(! 6~X! d)[8(!) SetLegPtr (leg1,Offspring, Terminating))][ dC(!F!"j)[3ya(! 62! d)[8(! -)]]]]]]][a(!"Xqq!"X)[|a(! 6,! d!)[8(MMf!"f,l)[8(! 6K! false)][(! 6M!)][)T()]]]]]][T(!*,@2@2!!:!":,@)[8(!' AssistRequest_ Instructions (,ariArg))][\(!!")[\(! 6^! d!)[8(!. AssistRequest_ Instructions (,ariArg) to CSA)])[^(! 6d! d!)[8(! ReleaseReq (RArg))][1-_(!,^!"^,)[7^(! 6^!! )[8(! tx@x!"@xx)[V(! 6@F!)[8(!3 Indicate to the CSA that this segment is released)]]][V(!!")[4V(! 65 /Z(! 6 ! d)[86(!& call GetLegStatus (controllingLegID))][2Z(!!")[8(! 6! se)][6SV! 6 dParty to Originating or Terminating Setup on Release is not defined in the Q.1224 recommendation (IN CS-2). */)]][3V?(! 6dX! d)[8(! Stable_2_ _Party)][ -D(!,!"Progress_ ReqInd (CPArg,csaID, legID))][`(!!")[ _(! 6d! d)[8(! call IsBCSM (Sender))][ `(!",  !" callFlag)][?(!~ ~ !" ~)[8(! 69! senderRef /* To T-BCSM */)][6e?(! 6! d)[8(!1 legID := call GetLegIdFrom_ RemoteL()[(! l! 22!(K)[/(! l)[/(! 6)[/(! 6d! )]][ /(! 6 )][9C(! 6 ,! )[8(!% /**** HAR^,)[7^(! 6^!! )[8(! to call GetLegPtr (legID))]]][^(!!")[3^(! 6d! d)[8)[8(! Add the controlling leg.)]]][-(!!")[8(! 6 ! Successful)][%-(! 6! d)[8(!, SetLegStatus (contrYollingLegID, surrogate))][ -(!XLL!"LXL)[-(! 6!)[8(!5 Set the status of the controlling leg to surrogate.)]]][-(!~!"e 1 Party -> Forward */)]][3D(! 6R! d)[8(! Stable_1_ _Party)][ D(!&&!"&&)[D(! 6!)[8(!O Controlling leg s!")[(! 6!Z)][3x>(! 6F! d)[8(! Originating_ _Setup)]]]]]]]]][?(!Lx!"x\L)[8(! 6e! Yes /* Outgoing */)][w?(! 6dx! d!)[8(!, ReleaseReqInd (rArg,csaID,legID, callFlag))][1?(!,^!"^,])[7z?(! 6^x!)[8(!* to CSA /* To remote BCSM via CSA/IH. */)]]][?(!!")[(! 6!Z)][3q?(! 6d! ^d)[8(! -)][ KD(!,@^@!"^@,@)[HD(! 6^!)[8(! Remain in Stable-2-Party.)]]]]]]]]]]]]]]}]]]]]}]} d)[8(! -)][ KD:)[)`()]]]]]][Xa(!"~!"~)[ a(! 6F! d!)[8(! virtual DPMidCall (dp))][[a(!!" d!)[8(!% ResetTimer (invokeID,,rtArg) to SSF)][W(!"rr!"r)[(! 6x!)][)AW()]]]]]]][3W(! 62IUTING OF PICs AND DPs BETWEEN THE BCSMs AND THE SSF-FSM ****/)]][3`(! 6d! d)[8(! *)][ a(!,^!"^,)[`(! 6^!! 4)[(! 6!)][)L()]]]]]]]]]}@)[7KM(! 6@l!)[8(! to CSA)]]][TM(!"4!"^][_(!X!"X)[_(! 6R! d!)[8(! SetupReq (SIRArg))][_(! !" )[ _(! Application_ Begin)][](!!")[6/](! 6d! d)[8(! dialogueActive := true)][](! R!"R!"@YYr!"r@)[(! 6Y!)][)X()]]]]]]]]]]]}!")[gI(! 6! ,!(! 6&! d!)[8(!1 FurnishCharging_ Information (invokeID,,fciArg))][x\(!Fx!"xF)[[(! 6&x! d!)[8! SRI)]]]]]]]]][LC(!ee!"e)[8(! 6~! Failed)][(! 6!Z)][)%C()]]]]]]]]]]][IR(! 6~! d)[8L[4a(!~!"~)[`(! 6d! d!)[8(! DP(dp))][7a(!F!"F)[ `(! 6dF" )[ -(! 6^ ! ,)[8(! call AddLeg (controllingLegID))][ -(!"kkRR!"Rk)[-(! 6 !XF)["C(! 6X!)[8(!. Associate the passive leg 1 with the T-BCSM.)]]][gC(!!")[%(C(! 6~! d)[8(!()[(! l! 22!()[E(! l)[E(! 6)[E(! 6d! )]][ E(! 6)][9F(! 6&! )[8(! /* In th d)[8(! -)]]]]]]]][3[(! 6! d)[8(! *)][Q\(!x&xX!"xXx&)[[(! 6X! d!)[8(!( )[M(! 6F! d!)[8(! Status_ Report (,SRpArg))][M(!rl!"lr)[ M(! 6Fl! d!n)[8(! Status_ Report (,SRpArg))][1NM(!@!"@)[7KM(! 6@l!)[8(! to CSA)]]][TM(!"4!"bL(! 6dl! ,!)[8(!( Service_ Filtering_ Response (,SFRArg))][1L(!"!")[7L(! 6l!)[8(!]]][a(!"Xqq!"X)[a(! 6 ! d!)[8(! CFReq)][a(! !" )[a(!@@F!"@F@)[8(! 6Y-! true)][65T(! 6F! d)[8(!B obcsmPars!redirectingInformation:= SIRArg!redirectingInformation)][\T(!@(! -)]]]]]]]]]]}(! 6X! d!)[8(! DPDisconnect (DP) to SSF)][=(!"!!:!":)[(! 6!!)][)!(!4a!5!7)[!(! 1!!3)[!(! 2!!3)[!(! 3!!3)[!(! 4!!3)[!(! 5!!3)[!t(! 6!!3)[!(! 7!!3)[!(! 8!!3)[! (! 9!!3)[! (! 10!!3)[! (! 11!!3)[!u (! 12!!3)[! (! 13!!3)[!(! 14!!3)[!(! 15!!3)[!(! 16!!3)[!(! 17!!3()[(! l! 22!(d)[y^(! l)[|^(! 6)[^(! 6d! )]][ ^(! 6)][3^(! 6d! d)[8(! *)][ ^&!")[a(! 6&! d!)[8(! CACGResp (,,r))][a(!x!"x)[a(! 6&! d6 ! d!)[8(!/ Collect_ Information (invokeID,,ciArg) to SSF)][E\(!"Rkk!"R)[)[()]]]]]]][3[(! 6! d)[E(! 6S! d!)[8(! Release_ Req (rArg,callFlag))][ Q(!&@X@!"X@@&@)[Q(! 6X!)[8(!U ~)[)_()]]]]]]]]][3_(! 6! d)[8(! * (Stable_2_Party))][`(!&X!"X&)[_(! 6X! d!)k@k@!"@)[8(! 6! false)][(! 6@k!)][))T()]]]]]]]}][S(!*,22!"j(!% Is the signal incoming or outgoing?)]]][`(! !" )[8(! 69! No /* Incoming */)][\`(! 6! d!)[8(! SetupRes (legID))]]][_(!"!")[)^()]]]]]]]]][3^(! 6dx! d)[8(! * (Transfer, Forward))][ _(!",$gID))][1=F(!,L^L!"^L,L)[7:F(! 6^!)[8(! to CSA /* To remote BCSM */)]]][E(!~!"~)[ol_ Progress_ Ind(cpArg))][1F(!XX!"XX)[7F(! 6X!)[8(! to call GetLegPtr(leg1))]]][1F(!"Le,e,~!",~L)[(! 6,e!)][3F(! 6~! d)[8(! -)]]]]][4F(!,,~!",~,)[8(! 6}! Originating)][(! 6,~!Z)][)F()]]]]]]][3E(! 6~! d)[8(! Transfer)][F(!X!"X)[E(! 6s! d!)[8(! SetupResp (scrArg))][ HP(!F!" F)[EP(! 6!)[8(!( From O-BCSM in the backward direction.)]]][ F(! !" )[ E(! 6L ! B)[8(! CP! PassiveLegs(leg1)! BCSM)][ F(!kk!"k)[8(! 6! Terminating)][llSegmentID) to CSA)][Q(!!"4)[4Q(! 6! d)[8(! )]]]]]]]]]]})[Q(! 6l! d!)[8(! CSStop (ca)[ (! 6! d)[8(! O_BCSM (obcsmPars))][ ( (!"X!"X)[(! 6l!)][) ()]][gR(!)[8(! 6! No /* Incoming */)][6w`(! 6! d)[8(!4 newlegID := call GetLegIdFrom_ RemoteLegId (legID))][`(!l!"l'!"R)[ \?(! 62! ,)[8(! call IsBCSM(Sender))][ *D(!"^!"^)[_?(! 6!` Application_ End(termination,) to csa)][](!"Lee~!"~L)[)8]()]]]][](!R!"R)[8(! 6! d!)[8(!3 EstablishTemporary_ Connection (invokeID,,etcArg))][o\(!Fx!"xF)[[(! 6,x! d!)[8(!: Establish~)[(! 6!Z)][3:C(! 6~! d)[8(! Terminating_ _Setup)][ |C(!F!"F)[=C(! 6ConnectTo_ Resource (invokeID,,ctrArg))][T\(!xx!"xx)[[(! 6! d!)[8(!/ ConnectTo_ Resource (invokeID,,ctrArg) to SSF)][W\(!"x)[8(! Subsequent_ AddressInd (saArg))][1C^(!,^!"^,)[7^(! 6^!! )[8(! to call GetLegPtr (legID))]]][F^(!(!*,&2&299R!"R,&)[8(! 6K?! false)][(! 69!)][)S()]]]]][T(! 6! d)[8(! MAPPINK(! 6!Z)][)+()]]]]]]]]]]]}okeID,,FCIArg))][1I(!"@YY r !"r @)[7I(! 6r!)[8(! to SSF)]]][I(!"R7@)[7tZ(! 6rl!)[8(!& to call GetLegPtr (MkString(I2O(3))))]]][Z(!"!")[(! 6!)][3w(! uSIInformationPresent(SIRArg))][wT(!@l@!"@@l)[8(! 6Y! true)][6nT(! 6! d)[8(!2 obcsmPars!uSIInformation:= SIRArg!uSIInformation)][}T(!@@4!"@4@)[(! 6@4!Z)][tT(! 64! d)[8(! BCSM_CREATION)]]]]][zT(!*::@](! 6R! d)[8(! sender = ssf)][](!!")[8(! 6! True)][J](! 6! d!)[8(!')[!(! 18!!3)[!(! 19!!3)[!(! 20!!3)[!(! 21!!3)[!(! 22!!3)[!(! 23!!3)[!(! 24!!3)[!(! 25!!3)[!(! 26!!3)]]]]]]]]]]]]]]]]]]]]]]]]]]}~!)][)AW()]]]]]][W(!"r&)[I(! 6&! ,!)[8(!8 RequestFirst_ StatusMatch_ Report (invokeID,,RFSMRArg))][6J(!!")[J(! 6!"~)[8(! 6! receiverRef /* To O-BCSM. */)][%?(! 6F! d)[8(! SetLeg_ Status (legID,pending))][ ?(!@!"@)[?(! 6@!)[8(!/ Set the status of the passive leg to pending.)]]][?(!Fx!"xF)[k?(! 6Fx! d!)t (invokeID,,CoArg))][1 E(!!")[7D(! 6!)[8(!D TO SSF /* Send Connect to the SSF associated with this segment. */)]]][#E(!4)[8(! * (Stable_1_ _Party))][H\(!~&~X!"~X~&)[[(! 6X! d!)[8(!$ virtual Connnect (invokeID,,coArg))][K\(!~~[8(!, ReleaseReqInd (rArg,csaID,legID, callFlag))][1?(!@!"@)[7n?(! 6@x!)[8(!- to call GetLegPtr (legID) /* To O-BCSM. */)]]][?(![,)[>(! 6X!)[8(!0 Controlling leg joined. Passive leg P1 joined.)]]][}?(!!")[Y?(! 6d!  Is the signal incoming or outgoing?)]]][Y(!!")[8(! 6! No /* Incoming */)][ X(! 6! d)[8(! callFlag)][Y(!UTING OF DIALOUGE AND ERROR PRIMITIVES. ****/)]][3)](! 6d! d)[8(! *)][](!&!"&)[,](! 6d&! d!)[8(!d!"~~)[[(! 6! d!)[8(!# Connnect (invokeID,,coArg) to SSF)][N\(!~R~!"~~R)[3[(! 6!l~!"~L)[ Q(! 6F~! d)[8(! Dialogue_ Active)][Q(!FF!"FF)[8(! 6! True)][6Vd!)[8(!, ReleaseReqInd (rArg,csaID,legID, callFlag))][ 3D(!,  !"  , )[0D(! 6!)[8(! From BCSM.)]]][?(!Ro CSA)]]][0_(!4f!"f4)[3^(! 6df! d)[8(! -)]]]]]]][3_(!*dMMf!"fd)[8ApplyCharging_ Report (,acrArg,r))][\(!!")[\(! 6d! d!)[8(!) ApplyCharging_ Report(,acrArg,r) to CSA)][\(!R ()[(! l! 22!(`)[ (! l)[ (! 6)[ (! 6d! )]][ (! 6)][jR(! 6,! d)[8(! ICA)][T^r)[8(! 6! Yes /* Outgoing */)][`(! 6! d!)[8(!/ SubsequentAddress_ ReqInd (SAArg,csaID,legID))][1`(!R!"e(! ArmTDPsReq)][a(! !" )[va(! 62 ! d!)[8(!$ ArmTDPsReq (,callSegmentID) to CSA)][a(!!"M(! *)][a(!!")[a(! 62! d!)[8(! ArmTDPsResp (,,eventTable))][a(!x!"x)[a(! 62! d!)[8(!# ArmTDPsResp (,,eventTable) to ssf)][a(!@!"@)[3a(! 62@! d)[8(! -)]]]]]]][a(!"!")[a(! 6,! d!)[8(! MSFCResp (,,r))][a(!x!"x)[a(! 6,! d!)[8(! MSFCResp (,,r) to ssf)][a(!"''@!"@)[)a()]]]]]][a(!"wnating_ _Setup))][`(!!")[S`(! 6! d!)[8(!! virtual SetupResp_ Conf(SCRArg))][`(!X!"()]]]]]]]]]]]}l! 22!(d)[ /(! l)[ /(! 6)[/(! 6d! )]][ /(! 6)][3/B(! 6! d)[8(! * (Trans w](! 6F! d)[8(! sender = ssf)][](!:!":)[8(! 6S! True)][z](! 6F! d!)[8(!! Errror (invokeID,,ieArg) to csa)][](!4!"4)[3}](! 6F4! d)[8(! -)]]]]][](!!"x!")[3^(! 6d! d)[8(! -)]]]]]]]]][I^(!"&? ? X!" X&)[ ^(! 6X! ()[w(!GSDL)]}(! PICSendCall (LegId))][:%(!^^!"^^)[ $(! 6! d)[8(! LegId)][@%(!r!"~)[4(! 6L! d!)[8(! SetupInd (sirArg))][1 5(!F!"F)[74(! 6F!)[8(!^ TO call GetLegPtr(leg2) /* Pass SetupInd on to the O-BCSM associated with passive leg 1. */)]]][5(!x!"x)[(! 6x!Z)][34(! 6Lx! d)[8(! Origin-!")[e](! 6X! d!)[8(! Application_ Continue)][](!r!"r)[ h](! 6X! d d!)[8(! SSFStop to SSF)][ 3G(!@!"@)[0G(! 6@!)[8(! Instruct the SSF to terminate.)]]][5Q(!L[\(!"Rkk!"R)[)\()]]]]]][\(!"&??X!"X&)[\(! 6XX! d!)[ d)[8(! Failed)]]][% (!x!"x)[8(! 6 ! Successful)][6R(! 6,! )[8(! obcsmPars!startState := waitOrigAttemptAuthorized, obcsmPars!legID := icaArg! legToBeCreated!sendingSideID, obcsmPars!routingInfo!routingAddress :=icaArg!destinationRoutingAddress)][ R(!"!")[ (! (! 6,x! d)[8(! call AddLeg(leg1))][ UC(!X!"X)[C(! 6Xx!)[8(! Add a passive leg 1.)]]][[C(!,(! 6dx! d)[8(! *)][](!!")[S](! 6d! d!)[8(! Application_ Abort)][](!r)[(! 6-!)][3((! 6F! d)[8(! Null)]]]]][Y(!~F!"F~)[8(! 6! true)][ termination,))][](!!")[6D](! 6! d)[8(! dialogueActive := false)][](! R!"R )[ G)[8(! 6KY! false)][(! 6!!)][)S()]]]]]][S(!*,22!",)[8(! 6K! false)][(:_MAPPING_BCSM)][S(!!")[ S(! 6,! d)[8(!& callingPartysCategoryPresent(SIRArg))][S(!X!"X)[8(! 6q! true)][6S(! 6,! d)[8(!@ obcsmPars!callingPartysCategory:= SIRArg!callingPartysCategory)][S(! R!"R )[ S(! 6,R! d)[8(! locationNumberPresent(SIRArg))][S(!!")[8(! 6! true)][6S(! 6,! d)[8(!2 obcsmPars!locationNumber:= SIRArg!locationNumber)][S(!L!"L)[ S(! 6,! d)[8(!% originalCalledNumberPresent(SIRArg))][S(!F!"F)[8(! 6-! true)][6S(! 6,F! d)[8(!> obcsmPars!originalCalledNumber:= SIRArg!originalCalledNumber)][S(!!")[ S(! 6,! d)[8(!+ userTeleserviceInformationPresent(SIRArg))][T(!r!"r)[8(! 6! true)][6S(! 6,! d)[8(!J obcsmPars!userTeleserviceInformation:= SIRArg!userTeleserviceInformation)][T(!:!":)[ S(! 6,:! d)[8(! genericNumberPresent(SIRArg))][T(!!")[8(! 6! true)][6S(! 6,! d)[8(!0 obcsmPars!genericNumber:= SIRArg!genericNumber)][T(!4f!"f4)[(! 6f!Z)][T(! 6,f! d)[8(! MAPPING_CONT_SETUPIND)]]]]][T(!*,l2l2N6!)[8(!w Create an instance of an O-BCSM which starts off from the origAttemptAuthorized DP with LegId as assigned by the SCF.)]]][R(!r!"r)[ Y(! !)[8(!I Controlling leg surrogate. Passive leg P1 joined Passive leg P2 pending)]]]]]]]]]]]]]]]]][E(! k&k&!"& k)[8(! 6?! Failed)][(! 6&!Z)][D(! 6! d)[8(! Failed)]]]]]]]]]]}R)[D(! 6f!)[8(!I Controlling leg surrogate. Passive leg P1 joined Passive legmNG OF SIGNALS BETWEEN THE SSF-FSM AND THE SSME-FSM */)]][3pa(! 62! d)[8(! *)][a(!X!"X)[sa(! 62! d!)[8,,!",r)[(! 6,!)][)S()]]]]]]]]]]]}xF')[7S(! 6x!)[8(! to CSA)]]][6S(!"r! d!)[8(! Release_ Req(RArg))][$_(!r!"r)[ ^(! 6d! d)[8(!& call GetLegStatus (controllingLegID))]['_ SetLeg_ Status (leg1,joined))][ jC(!F  !" F )[+C(! 6!)[8(!0 Set the status of the passive leg 1 to joined.)]]][mC(!R!")[8(! CP! PassiveLegs(leg1)! BCSM)][.F(!kk!"k)[8(! 6 ! Terminating)][E(! 6! d!)[8(! Cal@)[8(! 6Y! true)][6 T(! 6! d)[8(!@ obcsmPars!forwardCallIndicators:= SIRArg!forwardCallIndicators)][U(!@R@!"@@R)[ )r!"r)[W(! 6! d!)[8(! Reset_ Timer (invokeID,,rtArg))][W(!rFrx!"rxrF)[W(! 6x!`  )[)`()]]]]]]][3`(! 6d! d)[8(! *)][ 1a(!,L^L!"^L,L)[`(! 6^!! )[8(! DPs)]]]h!"Rx)[J(! 6! ,!)[8(!1 RequestReport_ BCSMEvent (invokeID,,RRBCSMEArg))][ Stable 1 Party */)]][3?(! 6! d)[8(! Originating_ _1_Party_ _Setup)][ ;?(!&&!"&&)[ ?(! 6!)[8z!",)[8(! 6! Failed)][(! 6!)][%C(! 62! d)[8(! Failed)]]][XC(!!"! )[8(! to call GetLegPtr (legID))]]][U^(!"  !" )[)^()]]]]]]]]][3^(! 6d! d)[8(! *)][ X^()[(! l! 22!(x)[(! l)[(! 6)[(! 6d! )]][ (! 6 )][9,E(! 6X^! )[8(!3 /* OrigiE(! R!"R )[%>E(! 6dR! d)[8(! SetLegStatus (legID, joined))][ E(!,^!"^,)[AE(! 6^,)[,(! 6^X!)[8(!. From BCSM indicating that it has terminated.)]]][?(!!")[%,(! 6d! d)[ EventReport_ BCSM (,erbcsmArg))][ ](!!")[\(! 6L! d!)[8(!' EventReport_ BCSM (,erbcsmArg) to CSA)][](!"RkHX)[ V`(! 6d! ,)[8(! call IsBCSM(Sender))][ `(!"XX!"X)[Y`(! 6&!! )[8|e Transfer state, all backward and forward signalling messages to/from the BCSMs must be relayed since the controlling leg is surrogate. In the Forward state, only ReleaseReq and Subsequent- AddressReq needs to be relayed. */)]][3F(! 6t obcsmPars!cgPN := icaArg! callingPartyNumber)][ Y(!"Xll!"Xl)[(! 6!)][) ()]][Y(!!"(!!")[L(! 6d! ,!)[8(!% ServiceFiltering_ Response(,SFRArg))][L(!l!"l)[od!)[8(!& SetupResp_ Conf(SCRArg, csaID,legID))][1`(!R!"R)[7h`(! 6!! )[8(! to CSA)]]][`(!".)[`(! 6d! d!)[8(! PIC (PIC))][1a(!,^!"^,)[7`(! 6^!! )[8(! to call GetLegPtr (legId))]]]["a(! R!"R )[3`(! 6dR! d)[8(! -)]]]]]]][%a(!"    &!" &)[`(! 6&! d!)[8(! virtual PICResume (legID))][(a(!  !"  )[`(! 6! d!)[8(! PICResu'NDLING OF CALL RELEASE ****/)]][3,(! 6d! d)[8(! Stable_2_ _Party)][ >-(!,^!"^,)[;-(! 6^!)[8(!0 Controlling x)[H(! 6d! d!)[8(! Connnect (invokeID,,CoArg))][1(I(!,^!"^,)[7I(! 6^!)[8(! to SS@!"S)[?P(! 6!)[8(!( From O-BCSM in the backward direction.)]]][+F(!,, !", ,)[ E(! 6 ! ,[8(! SetupReq (SIRArg))][1_(!~L~!"L~~)[7_(! 6LL!! )[8(! to CSA)]]][_(!"!"*(! 6F!Z)][)(()]]]]]]]]]]]]]}()]]]]]]]]]]]]]},,r)[(! 6,!Z)][3K(! 6! d)[8(! -)]]]]]]]]]]}!":~! d)[8(!4 newlegID := call GetLegIdFrom_ RemoteLegId (legID))][,`(!x!"x)[_(! 6x! d!)[8(!. Release_ ReqIndd!)[8(!% ResetTimer (invokeID,,rtArg) to SSF)][\(!"rr!"r)[)[()]]]]]]][3\(! 62! d)[8(! *)][\d! d!)[8(!( ApplyCharging (invokeID,,acArg) to SSF)][*\(!R!"R)[3[(! 62! d)[8(! -)]]]]]]][-\(!"~6! d)[8(!& call GetLegStatus (controllingLegID))][?_(!RR:!"R:R)[8(! 6k!! else)][6^(! 6:! d)[8(! to CSA)]]][L(!4!"4)[(! 64!Z)][3L(! 64! d)[8(! -)]]]]]]]]]]}M(!"!",d)[8(! SetLegStatus (legID, joined))][ D(!X~~!"~X~)[uD(! 6L!)[8(!. Set the status of the passive leg to joined.)]]][D(!s]]}ation (invokeID,,ciArg))][V(!!")[V(! 6 ! d!)[8(!/ Collect_ Information (invokeID,,ciArg) to SSF)][V(!"Rk()[(! l! 22!(d)[aa(! l)[da(! 6)[ga(! 6d! )]][ ja(! 6)][9ma(! 6,! )[8(!? /* ROUTI26~&)[W(! 6X! 3 d!)[8(!$ virtual Connnect (invokeID,,coArg))][&W(!~~!"~~ (! ! 4)[8(!# Connnect (invokeID,,coArg) to7SF)][/W(!~R~!"~~R)[(! 6~!Z)][3W(! 6! )[8, -)RW(4f!"f4)[(! 6f!Z)][dR(! 6f! d)[8(! ICA)]]]]]]][Y(!*!"|@4!"@4:)[8(! 6S! false)][(! 6@!)][)tT()]]]]]][T(!*@@!"@)[8()[(! l! 22!(K)[(! l)[(! 6)[6P(! 6d! )]][ (! 6)][9/E(! 6 ,! )[8(!! /* StablZ(! 6^! d!)[8(! Application_ Abort to ssf)][](!"4MMf!"f4)[)_]()]]]]]]]]]][](!")[[(! 6&! d!)[8(! Cancel (invokeID,,cArg) to SSF)][<\(!"Rkk!"R)[)[()]]]]]][?\(!"&??UTING OF IN CS-1 OPERATIONS TO/FROM THE SSF-FSM ****/)]][9[(! 6,! )[8(!3 /* IN CS-1 operations from the SCF to the SSF. */)]][3[(! 62! d)[8(! *)][$\(![" (!&X!"X&)[4 (! 6 X! d)[8(! )]]]]]]})]][  (! 6)][ (! 6 ! d)[8(! Failed)]!"4)[(! 64!Z)][3D(! 6R4! d)[8(! Forward)][ &E(!ff!"ff)[D(! 64Create an instance of the SSF_FSM associated with this segment, parameterised with: - the start state of the SSF-FSM (assigned by the CSA). - information on SCF initiated call setup or not (assigned by the CSA).)]]][*(!R(!!")[3[(! 62! d)[8(! -)]]]]]]][l\(!"!")[[(! 6,(! -)]]]]]]]]][_(!"&?R?RX!"RX&)[^(! 6X! d!)[8(! virtual FailureInd (FArg))][_(!RR!"163)[!(! 24!!17)[!(! 25!!3)18(! 26!!3)]]]]]]]19]]]]]]]]]]]]]]]]}!3)]]]]]]]]]]]]]] !"R)[3\(! 6d! d)[8(! -)]]]]]]][\(!"&??X!"X&)[\(! 6^X! d!O(!8 obcsmPars!redirectingNumber:= SIRArg!redirectingNumber)][ST(!@~@!"@@~)[ 2T(! 6! d)[8(!' redirectingInformationPresent(SIRArg))][_Tq6rx!! )[8(! to CSA)]]][A`(!"!")[)_()]]]]]]]]]]]} False)][N(! 6^! d!)[84(!!")[14(! 6^! d!)[8(! SetupInd (sirArg))][ 4(!&  !"  & )[44(! (! 6x! d!)[8(!, ReleaseReqInd (rArg,csaID,legID, callFlag))][1B(!!")[7B(! 6x!)[8(! to call GetLegPtr)[\(! 62! d!)[8(!5 SendCharging_ Information (invokeID,,sciArg) to SSF)][\(!4f!"f4)[3!\(! 62f! d)[8r(!,^!"^,)[^(! 6^!! )[8(!3 Signals from SigCon to BCSM (either O or T).)]]][^(!&X!"Xwd (sirArg,csaID,legID))][ A?(!!")[&?(! 6!)[8(! From O-BCSM)]]][D?(!RR !"R R)[%)?Qto SSF)]]][J(!"RR!!:!":R)[(! 6!!)][)lJ()]]]]]]]]]}r@)[7I(! 6r!)[8(! !"F)[(! 6_!)][)X()]]]]]][Y(!R!"R)[8(! 6! Yes /* Outgoing */)][X(! 6ntinue (invokeID,))][]\(!rr!"rr)[[(! 6! d!)[8(! Continue (invokeID,) to SSF)][`\(!"rRrk~k~!"0