------------------------SDT2 GInterfaceHandler--------------------------------------------------------------------------------------------------------------------------------------------------------ObjectName----------------------------------------ObjectType----------------------------------------!%&()LinkEndpoints--------------------------------!%()HeadingText----------------------------------- cInterfaceHandler-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------15-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------(! Cancel (invokeID,,cArg) to csa)][G(!!")[(! 6!Z)][3G(! 6d! d)[8(! -)]]]]]]]]][G(!"H()[8(!U Virtual Process Type <> InterfaceHandler)]}ndler)]}---------------------------------------------------------------------------------------------------------------------------------------------k()[(! l! 22!(t)[ (! l)[ (! 6)[(! 6d! )]][ (! 6)][9%(! 6^! )[8(!8 /* DECLA!%()PageOrdert-----------------------------------12PageOrder-------------------------------------%8-----------------------------------------------%9----------------------------------------------- _m!%()HeadingText-----------------------------------10-----------------------------------------------4-----------------------------------------------7----------------------------------------------- CmRATION OF OPERATIONS ON THE ROUTING TABLES */ )]][$(! 6&&! d)[(! 6??! Allocate_ CSAId)][ =7(!X X!" XX)[#(! 6 &! )[8(! Allocate a new CSA id)]]]][$(! 6&! d)[(! 6?! Add_ CSAId)][ #(! !" )[#(! 6 !)[8 (! Add a CSA id)]]]][$(! 6&R! d)[(! 6?R! GetCSA_ Idfrom_ CSA)][ #(! !" )[#(! 6 R!)[8(!) Retrieve the CSA id from a CSA pointer.)]]]][$(! 6&! d)[(! 6?! GetCSA_ fromCSA_ Id)][ #(! !" )[#(! 6 ! )[8(!: Retrieve the pointer to the CSA instance from an CSA id.)]]]][$(! 6&~! d)[(! 6?~! GetCSA_ fromSig_ ConId)][ $(! !"  )[$(! 6 ~!)[8(!: Retrieve the pointer to the CSA instance from a CallRef.)]]]][$5(! 6&! d)[(! 6?-! SetSig_ ConAssoc)][ 5(!F F!" FF)[5(! 6 !)[8(!5 Associates a CallRef with a pointer (PId) to a CSA.)]]]][$5(! 6&! d)[(! 6?! SetRemote_ Assoc)][ 5(! !" )[5(! 6 !)[8(!e Associate a remote party (identified by the remote CSA PId and the remote leg id) with a local CSA.)]]]][$5(! 6&@!  d)[(! 6?@! GetCSA_ from_ RemoteId)][ 5(!r r!" rr)[5(! 6 @!)[8(! Retrieves the CSA pointer (PId) from a remote party (identified by the remote CSA PId and the remote leg id) with a local CSA.)]]]][$Y$(! 6&! d)[(! 6X!! IsCSA)][ _$(!: :!" ::)[\$(! 6 !)[8(!7 Determines if a pointer is a pointer to a CSA or not.)]]]]]]}or not.)]]]]]]}th a local CSA.)]]]][$5(! 6&@! d)[(! 6?@! GetCSA_ from_ RemoteId)][ 5(!f d)[8(! CSA)][ +(!,!",)[+(! 6,!)[8(! Create a CSA.)]]][+(! !" ing of the opening and closing of dialouges with the TCAP. */)]][3(! 6d,! d)[8(! Idle)][(!!")[(! 6d! d! )[A0(! 6! d!)[8(!' ApplyCharging (invokeID,csaID, acArg))][z0(! & X!" X &)[6w0(! 6X! )]]]]]]]]][?(!"  !" )[,(! 6! d!)[8(! Release_ Ind (rArg))][>(! & X!" XN(sender))][F(!!")[F(! 6 ! d!)[8(! CFReq (csaID,csID) via SSME)][IF(!"33L!";]}]]]]})[7?(! 6R!)[8(!* via IBI /* Route signal to remote IH.*/)]]][A?(!"xx!"x)[(! 6!)][))[E(! 6 ! d!)[8(! CFReq (,csID))][=F(! !" )[6F(! 6  ! d)[8(!( csaID := call GetCSAIdfromCSA ^ww!"^)[3(! 6L! d!)[8(! EventReport_ BCSM (,erbcsmArg))][4(!&!"&)[6-(! 6dR! d!)[8(!! Subsequent_ Address_ Req(SAArg))][1<(!,^!"^,)[7<(! 6^R!)[8(!D via SigCon /* Pass6)[8(! Application_ Begin (csaID))][G(!&X!"X&)[ P<(! 6dX! d)[8(! call IsCSA(sender))][V<(!,&&!"&,)[8(! 6?! Yes /* From CSA */)][6D<(! 6! d)[8(!) csaID := call GetCSAIdfrom_ CSA(sender))][ J<(!  !"  )[G<(! 6!)[8(! Retrieve the CSA ID.)]]][M<(!&R&!"&&R)[(! 6! d!)[8(! Application_ Begin (csaID))][1j7(!!")[7g7(! 6!)[8(! via SCF /* To SCF. */)]]][Y<(!"&&!"& )[(! 6!)][3(! 6d! d)[8(! -)]]]]]]][S<(!!")[8(! 6! No /* From SCF */)][!(! 6!Z)][)()]]]]]]][37(! 6d! d)[8(! Idle)][7(!x!"x)[}(! 6d! d!)[8"(!% Application_ End(termination,csaID))][(!@!"@)[ \<(! 6d@! d)[8(! call IsCSA(sender))][_<(!!"#)[8(! 6! No /* From SCF */)][6(! 6d! d)[8(!& csa := call GetCSAfrom_ CSAId(csaID))][ 7(!,:^:!"^:,:)[$7(! 6^!)[8(! Retrieve the CSA ID.)]]][(!l!"l)[(! 6d! d!)[8(! Application_ End(termination,)%)][17(!,^!"^,)[77(! 6^!)[8(! to csa /* Pass on to CSA. */)]]][7(!4!"4)[(!& 64!Z)][37(! 6d4! d)[8(! -)]]]]]]][b<(!,rr!",r)[8(! 6! Yes /* From CSA */)][6(! 6'! d)[8(!) csaID := call GetCSAIdfrom_ CSA(sender))][ 7(!R::!":R:)[7(! 6!)[8(! Retrieve the CSA ID.)]]][(!~(! )[8(! 6_! (SSME_Out))]][(! 6Ff!)]][9"7(! 6^! )[8(!# /**** DATA TYPE DEFINITIONS ****/)]][9'(! 6&! )[8w~)[8(! 6! (false))][6C(! 62! d)[8(! icaArg! newCallSegment := 1)][C(!"--F!"F)[(! 61n6(!!")[%6(! 62! d)[8(! AddCSAId (newcsaID, offspring))][ ;9(!,!",)[89(!(!& csa := call GetCSAfrom_ CSAId(csaID))][ 8(!, ^ !"^ , )[8(! 6^!)[8(! Retrieve the CSA ID.)]]][7(!R!")[1(! 6@! d!)[8(!. RequestEvery_ StatusChange_ Report(RESCRArg))][!2(!Fx!"xF)[62(! 6@x )[8(! 6! true)][)A()]]]]]][1(!"xx,!"x,)[1(! 6,! d!)[8(!% Rel^AId (csaID))][G(!:l!"l:)[G(! 6Rl! d!)[8(!" Continue (invokeID,csaID) to csa)][G(!"!"O\E(! 6! d!)[8(!4 CallInformation_ Request (invokeID,csaID, cirqArg))][E(!@&@X!"@X@&)[ kE(! 6X! d)[8(!0 legIDPresent (cirqArg))][wE(!FF!"F)[8(! 6_! (false))][6nE(! 6! d)[8(!. cirqArg!legID! sendingSideID := hexstr('012'))][}E(!"F F9@9@R!"@RF )[(! 6@9!)][6_E(! 6R! d)[8(!& csa := call GetCSAfrom_ CSAId(csaID))][eE(!@!")[D(! 6! d!)[8(!# Connnect (invokeID,,coArg) to csa)][D(!"x!"x)[ DisconnectForward_ Connection (invokeID,csaID) to csa)][D(!x!"x)[(! 6!Z)][3D(! 6d! d)[8(! -)]]]]]]]]][DCr)["F(! 6 ! d!)[8(!3 CFResp (,csID,r) to call GetCSAfrom_ CSAId(csaID))][mF(!"!!:!":)[(![9(! 6RR! d!)[8(! Subsequent_ AddressInd (SAArg))][1l;(!L!"L)[7i;(! 6LR!)[8(!T to call GetCSA_ frR0(!" R kk~!"~ R)[(! 6k!)][)0()]]]]]]]][VE(!"LL!"L)[ME(! 76! d!)[8(! CallGap (invokeID, cgArg))][SE(!L&L!"LL&)[PE(! 6! d!)[8(!# CallGap (invokeID,cgArg()[(! l! 22!(t)[%7(! l)[(7(! 6)[+7(! 6d! )]][ .7(! 6)][917(! 6 ! )[8(!# /**** VA)[8(!% SetupRespConf (scrArg,csaID, legID))][1G(!!")[7oG(! 6!)[8(!* via IBI /* Route signal to remote IH.*/)]]][G(!z)[,(! 62! d!)[8(! FailureInd (fArg))][1;(! , !",  )[7;(! 6,!)[8(!HL)[(! 63!)][)F()]]]]]]]]][3 F(! 62x! d)[8(! *)][LF(!!")[ F(! 62! !)[8(! to csa /* Pass on to CSA. */)]]][(C(!!")[(! 6!Z)][3B(! 6d! d)[8(! -)]]]]]]][ C=(!,@@!",@)[8(! 6Y! Yes /* From CSA */)][6B(! 6X! d)[8(!) csaID := call GetCSAIdfrom_ CSA(sender))][ C(!  /* Pass on to CSA. */)]]][7(!!")[(! 6!Z)][37(! 6d! d)[8(! -)]]]]]]][k<(!,XX!r)[7>(! 6@!)[8(!J (SIRArg!callRef,csaID) /* Associate the sigcon CallRef with the CSA. */)]]][>(!RR!"RR)[-(! 6! da IBI)][ 0(!"xxr!"rx)[(! 6r!Z)][)/()]]]]]]]]]]]]]}6! d!)[8(! SetupReqInd (SArg) via IBI)][ 0)[E(! 62! d!)[8(!" ArmTDPsReq (csaID,csID) via SSME)][@F(!L!"L)[(! 6L!Z)][3F16(! l! 22!(19)[6(! l)[6(! 6)[6(! 6d! )]][ 6(! 6)][36(! 6 ! \)[8^Idle)][^11(!^!"12^)[2(! 6! 2 d!)[8(!7 Request3port_ BCSMEvent (invokeID,csaID, rrbcsmeArg))][ Wn8)]]]]]]]]]]]]]} :)[(! 6 !)][):()]]]]]]]]]]]]]}(! 6! d!)[8(! ReleaseInd (RArg))][1;(!L~!"~Type, /* Other variables */ csa PId, csaID,newCSAID CSAID, invokeID InvokeID, i Integer, termination Boolean, csID CallSegmentID, legID LegType, halfCallSide IHRoleType, dialogID DialogIDtype, callFlag CallFlag, eventTable EventTabg()]]]]]]]]]]][9G?(! 6,! )[8(!@ /* ReleaseReqInd is a symmetrical signal between the BCSMs. */)]][3WG(! 6d! d)[8(! Idle)][uG(!@!"K)[!(! 18!!3)[!(! 19!!3)[!(! 20!!3)]]]]]]]]]]]]]]]]]]]]}!!3)]]]]]]]]]]]]]]]]]]]]]}!3)]]]]]]]]]]]]]]]]]]]]]]}+''@!"@)[G(! 6^@! d!)[8(!. Collect_ Information (invokeID,csaID, ciArg))][G(!!")[(! 6!)][)3()]]]]]]]]]]][3E(! 6d! d)[8(! Idle)][E(!x!"x)[E(! 6d! d!)[8(!- Mgt_SetTrigger_ Table (mgt_STTArg) via SSME)][D(!"Rk^k^!"^R)[(! 6^k!)][)C()]]]]]]]]]}}@ /* ReleaseRZ@)[]G(! 6d@! d!)[8(!% SetupRespConf (scrArg,csaID, legID))][xG(!!")[ `G(! 6d! dB)[7?(! 6R!)[8(!* via IBI /* Route signal to remote IH.*/)]]][A?(!"FF!"F)[(! 6!)][)?F)][30G(! 6df! d)[8(! -)]]]]]]][?G(!!")[8(! 6! No /* Incoming */)][$G(! 6d! d!S &)[6,(! 6X! d)[8(! csaID := call)][1-(!!")[7,(! 6X!)[8(!Y GetCSAfromSigConId (rArg!callReS)[(! 6!)][)G()]]]]]]]]]]]})[<(! 6 ! d!)[8(!" Continue (invokeID,csaID) to CSA)][<(!"_x@x)[F(! 6@! d!)[8(! SetupResp (scrArg))][1G(!rr!"rr)[7F(! 6@!)[8(!6 Qvia SigCon /* Pass Setup_ Resp on to the SigCon. */)]]][G(!"xx!"x)[(! 6 !)][)F()]]]]]]]]]})[(! 6@!)]KomCSAId(csaID) /* Pass Subsequent_ AddressInd on to the CSA. */)]]][u;(!"^^!"^)[(! 6^!)][)o;()]]]]]]]]][38(! 6! f) /* Retrieve which CSA should receive the message. */)]]][ -(!  !"  )[,(! 6! d!)[8(! ReleaseInd (rArg))][1;(! T !"  )[7;(! 6!)[8(!H to call GetCSA_ fromCSAId(csaID) /* Pass ReleaseInd on to the CSA. */)]]][?(!" R !"U R)[(! 6!)][)-()]]]]]]]][?(!"xx!"x)[?(! 6! d!)[8(! Service_ FeatureInVd (sftArg))][?(!x&xX!"xXx&)[6?(! 6X! d)[8(! csaID := call)][1?(!!")[7?(! ()[(! l! 22!()[f2(! l)[i2(! 6)[l2(! 6d! )]][ o2(! 6)][3u2(! 6! d)[8(! Idle)][istRequest_ Instructions (,ariArg))][q3(!&!"&)[6n3(! 6^&! d)[8(!) csaID := call GetCSAIdfrom_ CSA(Sender))][3(!!"6&! d)[8(! csaID := call)][1;(!XX!"XX)[7;(! 6&!)[8(!6 GetCSAIdfromCSA (Sender) /* Retrieve the CSA ID. */)]]][6Z(!RR!"RR)[%>(! 6! d)[8(! SetSigCon_ Assoc)][1>(!!")[7>(! 6![)[8(!J (SIRArg!callRef,csaID) /* Associate the sigcon CallRef with the CSA. */)]]][>(!R RR!"RRR )[-(! 6R! d!)[8(! SetupRe%()[(! l! 22!()[C(! l)[C(! 6)[C(! 6d! )]][ C(! 6)][3C(! 6,! d)[8(! Idle)][*R)[(! 6!)][)-()]]]]]]]]]]][9QG(! 6! )[8(!) /* ROUTING OF SIGNALS BETWEEN BCSMS. */)]][3G(! 6d! d)[8(easeCall (invokeID,csaID, rcArg))][2(!xx!"xx)[62(! 6! d)[8(!% csa := call GetCSAfromCSAId (csaID))][<2(!xXx!"V(! 6!Z)][3?(! 6d! d)[8(! -)]]]]]]][,?(! !" )[8(! 69!/ receiverRef /* Direction T-BCSM -> O-BCSM-(!^!"^)[-(! 6d! d!)[8(!! Subsequent_ Address_ Req(SAArg))][.(!R!"R)[!")[(! 6!)][)0D()]]]]]][ZD(!R!"R)[8(! 6 k! true)][)0D()]]]]]]]][K>((! 6!)][ 0D(! 6^! ,)[8(!% i = Length (RRBCSMEArg! bcsmEvents))][KD(!^YY!"^Y)[8(! 6r! faL()[w(!GSDL)]}()]]]]]]]]]]]}! 6X!! IsCSA)][ _$(!: :!" ::)[\$(! 6 !)[8(!7 Determines if a pointer is a pointer to a CSA or NEWTYPE SigConTableType ARRAY(CallRef,CSAID) ENDNEWTYPE; /* The IH maintains a mapping between the CSAID of an CSA managed by this IH and the CSAID of an CSA managed by 'the other' IH (remote half call CSA). This information is needed to correctly addr^r^!"^^r)[8(! 6! d!)[8(! CallProgress_ Ind(cpArg))][18(!!")[78(! 66&f!)]][A+C(!FfF!)[(! 6! SSME)][`(! )][.,C(! )[8(! 6_! (SSME_In))]][(! 6F!Z)][.-C( /* Retrieve the CSA ID. */)]]][6(!RR@!"R@R)[%>(! 6@! d)[8(! SetSigCon_ Assoc)][1>(!rr!"r?!"~~)[3(! 6! d!)[8(!+ SendCharging_ Information (SCIArg) to CSA)][)3(!"~r~  !" ~r)[j(!R,R^!"R^R,)[(! 6R^!Z)][3#(! 6^! d)[8(! Idle)][ C7(!!")[@N(! 6 !)][) 3()]]]]]]]]]]]}pe, RArg ReleaseType, SFtArg ServiceFeatureType, SArg SetupType, SAArg SubsequentAddressType;)]]]]}ApplyChargingReportType, ARIArg AssistRequestInstructionsType, CGArg CallGapType, CIRAr<q20tion mechanisms with the TCAP adaptor. */)]][33(! 6! d)[8(3 *)][%@(!,,&!",&,)["@(! +(!)[ F(! 6,&! d)[8(! CSA)][ F(!X&X!"&XX)[F(! 6&&!)[8(! Create an CSA.)]]][F(!)8[(! l! 22!(9)[{D(! l)[~D(! 6)[D(! 6d! )]][ D(! 6)][3D(! 6 ! {)[8Idle)][()[(! l! 22!(d)[@(! l)[@(! 6)[@(! 6d! )]][ @(! 6)][9@(! 6! )[8(!6 /* Coord(! 6X! d)[8(! legToBeCreated_ Present(coArg))][;E(!  !" )[8(! 69! (false))][6,E(! 6! d)[8p(!8 coArg!legToBe_ Created!sendingSide_ ID := hexstr('02'))][AE(!"   99!"  )[(! 69!)][ /E(! 6! d)[8FLFLx!"LxLF)[62(! 6x! d)[8(!, CSA := call GetCSAfrom_ CSAId(RCArg!CSAId))][<2(!LL!"LL)[92(! 6r! d!)[8(! ReleaseCall (RCArg) to CSA)][]2(!"LrL!"Lr)[(! 6!Z)][)Q2()]]]]]]]][1(!"sxx!"x)[1(! 6! d!)[8(!( RequestCurrent_ StatusReport (RCSRArg))][2(!xFxx!"xxxFt)[62(! 6x! d)[8(!. CSA := call GetCSAfrom_ CSAId(RCSRArg!CSAId))][B2(!xx!"xx)[?2(! 6! d!)[8(!/Q ActivateService_ Filtering (invokeID,asfArg))][V0(!&!"&)[Y0(! 6d! d!)[8(!7 Activate_ ServiceFiltering (invokeID,asfArg) via SSME)][&)[6D(! 6d! d)[8(!% csa := call GetCSAfromCSAId (csaID))][D(! !" )[D(! 6d! d!)[8(!73(! /* The IH maintains a mapping between a CSAID and the pointer/address (PId) of the corresponding CSA process. This information is needed to pass the IN operations from the SCF to the correct CSA. */ NEWTYPE CSATableRecord STRUCT Used Booleaxn; CSAPtr PId; ENDNEWTYPE; NEWTYPE CSATableType ARRAY(CSAID,CSATableRecord) ENDNEWTYPE; /* The IH maintains a mapping between a CSAID and the corresponding SigConID. This information is needed to correctly address signalling control primitives. */ dM -> O-BCSM. */)]]]]}6R! d!)[8(!% SetupRespConf (scrArg,csaID, legID))][18<(!!")[75<(! 6R!)[8(!* via IBI "LL4!"4L)[(! 6!)][)rG()]]]]]]]]][9ZG(! 6! )[8(!G /* SetupRespConf is always send in the direction T-BCSy()[(! l! 22!()[{D(! l)[~D(! 6)[D(! 6d! )]][ D(! 6)][3D(! 6d,! d)[8(! Idle)][EstablishTemporary_ Connection(invokeID, ,etcArg) to csa)][B(!"@YYr!"r@)[(! 6Y!)][)Q2()]]]]]]]][C(! !"-(! 6!!3)[!(! 7!!3)[!(! 8!!3)[! (! 9!!3)[! (! 10!!3)[! (! 11!!3)[!Yl!"l)[(! 6! d!)[8(!% Application_ End(termination,csaID))][17(!R!"R)[77(!R)[7(! 6d! d!)[8(! Application_ Abort)][1 8(!,^!"^,)[7 8(! 6^!)[8(! to csa >(!& ActivityTest (invokeID,dID) via SSME)][0(!"Rkk~!"~R)[(! 6k!)][)0()]]]]]][D0(!"  !")[50(! 6^! d!)[8(! ActivityTest (invokeID,dID))][b0(!&!"&)[e0(! 6^! d!)[8)[7-G(! 6!)[8(!* via IBI /* Route signal to remote IH.*/)]]][NG(!"~~MMf!"f~)[(! 6M!M&!"&)[ C(! 6R&! d)[8(!! partyToConnect_ Present(etcArg))][C(!XX!"X)[8(! 6q!M)[(! 63!)][)z?()]]]]]]]]]]][9?(! 6^! )[8(!Q /* SubsequentAddressReqInd is always send in the direction O-BCSM -> T-BCSM. */)]]]]}ction O-BCSM -> T-BCSM. */)]]]d)[8(! Idle)][ 8(!!")[8(! 6!)[8(! Signals from SigCon to T-BCSM.)]]][8(!^F^x!"^x^F)[8(! 6x! d!)[8(! Call_ Progress_ Ind(cpArg))][8(!^^!"^^)[6>(! 6! d)[8(! csaID := call)][1>(!@@!"@@)[7>(! 6!)[8(!Z GetCSAfromSigConId (cpArg!callRef) /* Retrieve which CSA should receive the message. */)]]][>(!ex)[-(! 6d! d!)[8(!! Subsequent_ Address_ Req(SAArg))][1<(!,^!"^,)[7<(! 6^!)[8(!D via SigCon /* Pass Subsequent_ AddressAckReq on to the SigCon. */)]]][.(!:l!"l:)[(! 6l!Z)][3-(! 6dl! d)[8(! -)]]]]]]][-(!"RR!"R)[-(! 6! d!)[8(! SetupReq (SIRArg))][%.(!RxR!"RRx)[66(! 6! d)[8(! csaID := call)][1;(!!")[7;(! 6!)[8(!6 GetCSAIdfromCSA (Sender)gRkk!"R)[(! 6k!)][)<()]]]]]]]]]]]}6!Z)][3"=(! 6d! d)[8(! -)]]]]]]]]]]]]}!)[83~~!"~)[:(! 6! d!)[8(!# SetupReqInd (sirArg,csaID, legID))][ :(!&F&!"F&&&)[:(x!Z)][33(! 6d! d)[8(! -)]]]]]]]]][M3(!"^ww!"^)[J3(! 6^! d!)[8(!' AssXrg) via SCF)][5(!"~~^^!"^~)[(! 6!)][)5()]]]]]]]]]]]}()]]]]]]]]]]]}x!)][)Q2()]]]]]]]]]]]}mPass SetupInd on to the CSA.)]]][*;(!!")[(! 6!Z)][3:(! 62! d)[8(! -)]]]]]]]]]]]]]]][-;(!")[6k6(! 62 ! d)[8(! newcsaID:=call Allocate_ CSAId)][ 59(!R,R!",RR)[29(! 6, !)[8(! Allocate a CSAID.)]]][*(! 6&&! d!)[8(! CSaIDReq (dialogID))][O@(!!")[6R@(! 6&! d)[8(! csaID := call AllocateCSAID)][ ^@()[(! l! 22!()[t-(! l)[w-(! 6)[z-(! 6d! )]][ }-(! 6)][3-(! 6d! d)[8(! Idle)][`2(!^!"^)[2(! 6! d!)[8(!7 RequestReport_ BCSMEvent (invokeID,csaID, rrbcsmeArg))][B(!&!"&)[6$D(! 6&! d)[8(! i := 1)][?D(!!")[ 'D(! 6^! ,)[8(!* legIDPresent (rrbcsmeArg! bcsmEvents(i)))][BD(!R!"R)[8(! 6 ! false)][ *D(! 6RR! ,)[8(!* rrbcsmeArg! bcsmEvents(i)! eventTypeBCSM)][ED(!Rx!"xR)[8(! 6! origAttemptAuthorized, collectedInfo, analysedInformation, routeSelectFailure, oCalledPartyBusy, oAnswer, oNoAnswer, oMidCall, oDisconnect, oAbandon, oTermSeized, oSuspended, origAttempt, oReAnswer)][6-D(! 6Xx! d)[8(!7 RRBCSMEArg! bcsmEvents(i)! legID!sendingSideID:= leg2)][HD(!"!")[b ApplyCharging_ Report (,acrArg,r))][k3(!&!"&)[6h3(! 6d&! d)[8(!) csaID := call GetCSAIdfrom_ CSA(Sender))][3(!!"(! !" )[6vF(! 6, ! d)[8(!( csaID := call GetCSAIdfromCSA (sender))][yF(!!")[E11(!^^!"^12^)[C(! 6! 2 d!)[8(!3 SendCha3ing_ Information (invokeID,csaID,SCIArg))][ D Z8dFromCSA (sender))][BG(!~l~!"~~l)[*G(! 6! d!)[8(!* CallProgressReq_ Ind(cpArg,csaID, legID))][1HG(!!"!",, )[(! 6,!Z)][3.@(! 6! d)[8(! -)]]]]]]][7@(!",,  &!"&,)[4@(!5 SendCharging_ Information (invokeID,,sciArg) to csa)][D(!^R^!"^^R)[(! 6^!Z)][3C(! 6! d)[8(! -)]]]]]]]]][ D d)[8(!% csa := call GetCSAfromCSAId (csaID))][G(!:l!"l:)[G(! 6Xl! d!)[8(!/ ConnectTo_ Resource (invokeID,,ctrArg) t?))][ /9(!&,&!",&&&)[,9(! 6,!)[8(! From SigCon.)]]][+(!X!"X)[ +(! 62! )[8(!8 FurnishCharging_ Information (invokeID,,fciArg) to csa)][D(!"x!"x)[(! 6!)][)D()]]]]]]]][D(!"NG OF INAP OPERATIONS FROM SCF TO SSF. */)]][3)0(! 6d,! d)[8(! Idle)][20(!!")[/0(! 6d! d!)[8(!.uRIABLE DECLARATIONS ****/)]][947(! 6d! )[8(! DCL /* Routing tables. */ csaTable CSATableType, sigConTable SigConTableType, csaLegAssoc CSALegAssociationTable, /* CSA info. */ existingCSA ExistingCSAE@!"@@)[bE(! 6! d!)[8(!5 CallInformation_ Request (invokeID,,cirqArg) to csa)][E(!"@L@ee~!"~) via SSME)][YE(!"LRLkk~!"~LR)[(! 6 k!)][)0()]]]]]][E(!"@@!"@)[/()[(! l! 22!(d)[#(! l)[#(! 6)[#(! 6d! )]][ #(! 6)][2#(! 6! d)[8(! )][#i. */)][) ?()]]]][&?(!,XFXF!"F,X)[8(! 6_q! yes /* Outgoing */)][6?(! 6! d)[8(!( csaID := call GetCSAIdFromCSA (sen@()[(! l! 22!(9)[)*(! l)[,*(! 6)[/*(! 6d! )]][ 2*(! 6 )][9*(! 6! )[8(! /* HANDL lect_ Information (invokeID,,ciArg) to csa)][G(!"!")[(! 6!)][)G()]]]]]]]][G(!"''@!"!!")[8(! 6 ! true)][62(! 6! d)[8(!% csa := call GetCSAfromCSAId (csaID))][2(!l!"d)[8(!& csa := call GetCSAfrom_ CSAId(csaID))][F(!  !"  )[}0(! 6! d!)[8(!( ApplyCharging (invokeID,,acArg) to csa)][6d!)[8(!# ActivityTestResult (invokeID,dID))][E(!@!"@)[E(! 6d@! d!)[8(!+ ActivityTestResult (invokeID,dID) vi to call GetCSA_ fromCSAId(csaID) /* Pass FailureInd on to the CSA. */)]]][-(!R!"R)[(! 6!Z)][3-(! 62! d)[8(! -(!F!"F)[8(! 6! (true))][)2()]]]]]][C(!L!"L)[8(! 6! (true))][)C()]!ess the remote half call view when passing primitives between an O-BCSM and a T-BCSM. */ NEWTYPE LegAssociationTable ARRAY(LegType,CSAID) ENDNEWTYPE; NEWTYPE CSALegAssociationTable ARRAY(CallRef,LegAssociationTable) ENDNEWTYPE; /* Array containing (!,!",)[7,(! 6,X!)[8(!Y GetCSAfromSigConId (fArg!callRef) /* Retrieve which CSA should receive the message. */)]]][,(!!":(! !" )[[@(! 6 !)[8(! Assign the CSA ID.)]]][U@(! R!"R )[a@(! 6&R! NG OF INAP OPERATIONS FROM SSF TO SCF. */)]][3;3(! 6d! d)[8(! Idle)][G3(!^!"^)[D3(! 6d! d!)[8(!#)[ `D(! 6xX! d)[8(! callSegmentID_ Present(rtArg))][lD(!@ !" @)[8(! 6! (false))][6cD(! 6@ d!)[8(! Call_ Progress_ Req(cpArg))][F(!@!"@)[F(! 62@! d!)[8(! Call_ Progress_ Req(cpArg))][1F(!(! ArmTDPsReq (,csID))][4F(! !" )[6pF(! 62 ! d)[8(!( csaID := call GetCSAIdfromCSA (sender))][sF(!!"A0(!R~!"~R)[(! 6~!Z)][30(! 6d~! d)[8(! -)]]]]]]][80(!"!",~!",~~)[7+(! 6,L!)[8(![ (sirArg!callRef,newcsaID) /* Associate the sigcon CallRef with the newly created CSA. */)]]][+(!F!"F)[+(! 62F! d!)[8(! SetupInd (sirArg) to offspring)][ +(!x,x!",xx)[+(! 6,F!)[8(! (!"^^!"^)[D(! 6X! d!)[8(!$ Mgt_SetTrigger_ Table (mgt_STTArg))][ uD(! R!"Rfrom SigCon to O-BCSM.)]]][c;(!^^!"^^)[8(! 6! d!)[8(! AddressEnd_ Ind(aeArg))][9(!^X^!"^^X)[68(! 6! d)[8(! csaID := call)][19(!!")[78(! 6!)[8(!Z GetCSAfromSigConId (aeArg!callRef) /* Retrieve which CSA should receive the message. */)]]][9(!^^R!"^R^)[8(! 6R! d!)[8(! AddressEnd_ Ind(aeArg))][1`;(!!")[7];(! 6R!)[8(!K to call GetCSA_ fromCSAId(csaID) /* Pass AddressEndInd on to the CSA. */)]]][r;(!^^!"^^X)][)%F()]]]]]][UF(!"!")[F(! 6 ! d!)[8(! CFResp (csaID,csID,r))][aF(!r!"4R!"R )[B(! 6R!)[8(! Retrieve the CSA ID.)]]][C(!:l!"l:)[B(! 6Xl! d!!)[8(!L to call GetCSAfromCSAId (csaID) /* Pass CallProgressInd on to the CSA. */)]]][8(!^:^!"^^:)[(! 6^!Z)][38(! 6)[3(! 6^! d!)[8(!4 AssistRequest_ Instructions (csaID,ariArg) via SCF)][3(!"!")[.()[(! l! 22!()[0(! l)[ 0(! 6)[#0(! 6d! )]][ &0(! 6)][9,0(! 6! )[8(!3 /* ROUTI(!4G!5!7)[!(! 1!!3)[!(! 2!!3)[!(! 3!!3)[!(! 4!!3)[!(! 5!!3)[!} 6,!)[8(! Update the routing table.)]]][6(!L!"L)[%+(! 62L! d)[8(! SetSigCon_ Assoc)][1+(!~F(! 6X! )[8(!H /* Note: For reasons of simplicity, the CS-2 DPs are included here. */)]]]]}) to csa)][E(!"YYr!"r)[(! 6! d)[8(! rtArg! callSegmentID := 1)][rD(!"!")[(! 6!)][63>(! 6x! d)[8(!%  )[C(! 6R!)[8(!K Note: Informative information. Routing of management related operations.)]]][D(!&!"&)[D(! 6X! Jr)[7F(! 6@!)[8(!5 via SigCon /* Pass ReleaseReq on to the SigCon. */)]]][G(!"  !" )[(! 6!5!":)[8(! 6S! no /* Incoming */)][fG(! 6d! d!)[8(! SetupRespConf (scrArg,,legID))][1G(!,^!"!")[F(! 6,! d!)[8(! MSFCResp (csaID,csID,r))][[F(!r!"r)[F(! 6,G!")[D(! 6! d!)[8(!" Connnect (invokeID,csaID, coArg))][D(!&X!"X&)[ )Eo()[(! l! 22!(H)[,(! l)[,(! 6)[,(! 6d! )]][ ,(! 6)][3,(! 62,! d)[8(! Idle)][ 8)[3(! 6d! d!)[8(!0 ApplyCharging_ Report (csaID,acrArg,r) via SCF)][3(!!")[(! 6()[(! l! 22!(5)[41(! l)[71(! 6)[:1(! 6d! )]][ =1(! 6)][31(! 6,! d)[8(! Idle)][L!"L)[(! 63!)][ C(! 6,L! d)[8(!! newCallSegment_ Present(icaArg))][C(!,~~!",)coming or outgoing?)]]][#?(!!")[8(! 6! no /* Incoming */)][ >(! 6d! d)[8(! callFlag)][)?(!, `1(!,!",)[1(! 6,! ,!)[8(!7 virtual InitiateCall_ Attempt (invokeID,csaID,icaArg))][F(!&!"&l()[(! l! 22!({)[98(! l)[<8(! 6)[?8(! 6d! )]][ B8(! 6)][9T;(! 6! )[8(!6 /* ROUTI"!",)[8(! 6! (false))][6C(! 62! d)[8(!7 icaArg!legToBe_ Created!sendingSideID := hexstr('02'))][C(!"33 RegisterSSFreq (halfCallSide))][+@(!,,!",,)[(@(! 6! d!)[8(!* RegisterSSFresp (halfCallSide) to sender)][1@(!, , 6!)[8(! via SCF /* To SCF. */)]]][7(!"4!"4)[(! 6!)][)7()]]]]]]]]]]]]]}ation_ End(termination,csaIF,F!",FF)[F(! 6,!)[8(! Signals from BCSMs to SigCon)]]][F(!x!"x)[F(! 62! JE(!" L ee~!"~ L)[(! 6e!)][6D(! 6~! d)[8(!% csa := call GetCSAfromCSAId (csaID))][D(!2)[8(! Subsequent_ AddressInd (saArg))][9(!X!"X)[69(! 6R! d)[8(! CSAId := call)][1 9(!L!"4!"4)[(! 6!)][)2()]]]]]]]][oD(!!")[8(! 6! true)][)3>()]]]]]]][9! d)[8(! -)]]]]]]]]][8(!"^F^__x!"x^F)[8(! 6 x! d!)[8(! SetupConf (scrArg))][8(!)[8(! 6:! (IBI))]][(! 6:!)][.7(! )[8(! 6! (IBI))]][(! 6!)]][A7(!&f&!)[d))][1?(!F!"F)[7w?(! 6F!)[8(!* via IBI /* Route signal to remote IH.*/)]]][?(!"33L!"L@)[ G(! 62@! ,)[8(! call IsCSA(Sender))][ 9G(!"^ww@@!"@^)[G(! 6!)[8(!% Is ! d)[8(!/ CSA := call GetCSAfrom_ CSAId(RESCRArg!CSAId))][H2(!!")[E2(! 6@! d!)[8(!6 RequestEvery_ StatusChangO@)[G(! 6X@! d!)[8(!. ConnectTo_ Resource (invokeID,csaID, ctrArg))][G(!!")[6G(! 6X!  d)[8(! Idle)][-(!!")[-(! 6d! d!)[8(!! Subsequent_ Address_ Req(SAArg))][.(!x!")][6A(! 6R ! d)[8(!% csa := call GetCSAfromCSAId (csaID))][ A(!!")[A(! 6R! d!)[8(!: |Z)][3rG(! 6d4! d)[8(! -)]]]]][G(!,LL!"L,)[8(! 6e!! yes /* Outgoing */)][lG(! 6! d!9()[(! l! 22!(;)[h(! l)[k(! 6)[n(! 6d! )]][ q(! 6)][9F7(! 6! )[8(!G /* Handlr,r!",rr)[7F(! 6,@!)[8(!7 via SigCon /* Pass CallProgress on to the SigCon. */)]]][F(!!")[\)[8(! 63! (true))][)/E()]]]]]]]]]}~!"~)[8(! 6! (true))][)D()]]]]]][>E(!!"Gination mechanisms with the TCAP adaptor. */)]][3@(! 6! d)[8(! *)][%@(!,,&!",&,)["@(! 6&! d!)[8(!)[8(! Application_ Continue(csaID))][1C(! R!"R )[7B(! 6Rl!)[8(! via SCF /* To SCF. */)]]][C(!"!")[(! 6!)][)B()]]]]]]]]]]]]]})[(! 64!Z)][)B()]]]]]]]]]]]]]} ,!)[8(! TNoAnswer (TNAAwD(!!")[D(! 6d! d!)[8(!0 DisconnectForward_ Connection (invokeID,csaID))][D(!&!"v)][)=()]]]]]]]]]]]})[8(!J TAAArg!created_ CallSegment_ Association:=call GetCSAIdfrom_ CSA(Sender))][>(!^ ^R!"^R^ )[>(! 6R! ,!"A!)[8(! SetupReq (SIRArg))][1#<(!!")[7<(! 6!)[8(!3 via SigCon /* Pass SetupReq on to the SigCon. */)]]][.(!"=",X)[8(! 6q! Yes /* From CSA */)][67(! 6! d)[8(!) csaID := call GetCSAIdfrom_ CSA(sender))][ 8(!R  !" fsconnect, tAbandon, tSuspended, termAttempt, tReAnswer, facilitySelectedAndAvailable, callAccepted)][69D(! 6x! d)[8(!7 RRBCSMEArg! bcsmEvents(i)! legID!sendingSideID:= leg1)][WD(!"a^,)[7iG(! 6^!)[8(!= to call GetCSA_ fromCSAId(csaID) /* Route signal to CSA.*/)]]][G(!4!"4)[(! 64!rg))][E(!!")[6E(! 6@! d)[8(!% csa := call GetCSAfromCSAId (csaID))][E(!X!"X)[; 6!!)][)%F()]]]]]]]]]}! d!)[8(!( Service_ Filtering_ Response (,SFRArg))][E(!@!"@)[E(! 6^@! d2B! Idle)][3G(!Fx!"xF)[G(! 6dx! d!)[8(!* CallProgressReq_ Ind(cpArg, csaID,legID))][6G(!@!"information if a CSAID is in use or not. */ NEWTYPE ExistingCSAType ARRAY(PId,Boolean) ENDNEWTYPE; /* Return result from procedure calls. */ NEWTYPE AnswerType LITERALS Yes,No; ENDNEWTYPE;)]]]]}&@!"&@&)[65a SCF)][E(!!")[(! 6!Z)][3E(! 6d! d)[8(! -)]]]]]]][E(!"x!"'()[(! l! 22!()[>(! l)[>(! 6)[>(! 6d! )]][ >(! 6)][3>(! 6d! d)[8(! Idle)][[)][)Q2()]]]]]]]]]]]}!)[8(!? RequestNotification_ ChargingEvent (invokeID,,rnceArg) to csa)][E(!" YYr!"r )[(! 6xY!"l)[2(! 6! d!)[8(!8 RequestReportBCSM_ Event(invokeID,, rrbcsmeArg) to csa)][2(!4!"4)[(! 64!(! 6!)][)D()]]]]]]]][GE(!~!"~)[8(! 63! (true))][)D()]]]]]][>E(!!")[6G(! 6^! d)[8(!% csa := call GetCSAfromCSAId (csaID))][G(!:l!"l:)[G(! 6^l! d!)[8(!/ Col(! 6d&! d)[8(! call IsCSA(sender))][h<(!!")[8(! 6! No /* From SCF */)][67(! 6d! d)[8+ d!)[8(!& CSaIDresp (dialogID,csaID) to sender)][d@(!",,!",)[(! 6,!)][).@()]]]]]]]]]]]}^@! d()[(! l! 22!()[,3(! l)[/3(! 6)[23(! 6d! )]][ 53(! 6)][9><(! 6&d! )[8(!3 /* ROUTI(! 62L! d)[8(! -)]]]]]]]]][+F(!"Xqq!"X)[E(! 6,! d!)[8(! MSFCReq (,csID))][7F5A(!@@,!"@6,@)[ A(! 6,7 d)[8(! legToBeCreatedPr8ent(CIArg))][A(!^L^L ]csa := call GetCSAfromCSAId (csaID))][E>(!r!"r)[9>(! 6x! d!)[8(!% ResetTimer (invokeID,,rtArg) to CSA)][Q>(!"equest(invokeID,,CIRqArg) to CSA)][(=(!"!")[(! 6!)][)"=()]]]]]]]]]})[6f>(! 62@! ,)[8(!1 SFRl)[ B(! 6d! d)[8(! call IsCSA(sender))][C(!r!"r)[8(! 6! No /* From SCF */)][6B(! 6d! d)[8(!& csa := call GetCSAfrom_ CSAId(csaID))][ C(!,^!"^,)[B(! 6^!)[8(! Retrieve the CSA ID.)]]]["C(!vNG OF SIGNALS BETWEEN THE SSF-FSM AND THE SSME-FSM */)]][3E(! 62! d)[8(! *)][(F(!X!"X)[E(! 62! d!)[8][>(!xx!"xx)[6 >(! 6! ,)[8(!' CSA := call GetCSAfrom_ CSAId (csaID))][>(!xx!"xx)[>(! 6! ,!)[8(!A Request_ Notification_ ChargingEvent (invokeID,,RNCEArg) to CSA)]['>(!"xlx!"xl)[(! 6!Z)][32(! 64! d)[8(! -)]]]]]]]]]]][TD(!x!"x)[8(! 6! termAttemptAuthorized, tBusy, tNoAnswer, tAnswer, tMidCall, tDi(! 6,! d!)[8(! MSFCReq (csaID,csID) via SSME)][CF(!"33L!"L)[(! 63!)][)F()]]]]]]]][.F(!"Xqq!"X)[E(! 6&! d!)[8(! CACGReq (,csID))][:F(! !" )[6|F(! 6& ! d)[8(!( csaID := call GetCSAIdfromCSA (sender))][F(!!")[F(! 6&! d!)[8(! CACGReq (csaID,cs ID) via SSME)][FF(!"33L!"L)[(! 63!)][)F()]]]]]]]][1F(!"Xqq!"X()]]]]]]]][E(!"^ww!"^)[3(! 6R! d!)[8(!) Event_ Notification_ Charging (,encArg))][3(!&! "&)[63(! 6R&! d)[8(!) csaID := call GetCSAIdfrom_ CSA(Sender))][3(!!")[3(! 6R! d(!"  !" )[(! 6!)][ ?(! 6d! d!)[8(!, ReleaseReqInd (rArg,csaID,legID, callFlag))][18?(!<)[64=(! 6d! d)[8(!% csa := call GetCSAfromCSAId (csaID))][F=(!:l!"l:)[:=(! 6dl! d!)[88(! Idle)][G(!@!"@)[.=(! 6d@! d!)[8(! Cancel (invokeID, csaID,cArg))][@=(!!" @L)[(! 6e!)][)0()]]]]]]]][zE(!@@R!"@R@)[8(! 6Y! true)][)_E()]]]]]]][3G(! 6d! d)[the signal incoming or outgoing?)]]][(! 6x! d)[8(!) csaID := call GetCSAIdfrom_ CSA(Sender))][>(!R!"R)[(4(! 6x! d!)[8(!" InitialDP (csaID,idpArg) via SCF)][E(!"!"I d!)[8(!& ArmTDPsResp (csaID,csID, eventTable))][XF(!r!"r)[F(! 62! d!)[8(!A ArmTDPsResp (,csID,eventTable^&)[6C(! 6X! d)[8(!% csa := call GetCSAfromCSAId (csaID))][D(!^^!"^^)[C(! 6! d!)[8!)[8(!4 EventNotification_ Charging (csaID,encArg) via SCF)][E(!"!")[(! 6!)][)3()]]]]]]]][E(!") to call GetCSAfrom_ CSAId(csaID))][dF(!:!":)[(! 6:!Z)][3%F(! 62:! d)[8(! -)]]]]]]][OF(!"callRef,legID))][@(!!")[n?(! 6! d!)[8(!0 Subsequent_ AddressReqInd (saArg,csaID, legID))][1?(!^!"^)[7q?(! 6!)[8(!; to call GetCSAfromCSAId (csaID) /* Route signal to CSA.*/)]]][?(!L!"L)[(! 6L!&)[ _?(! 6dX! ,)[8(! call IsCSA(sender))][ ?(!"&&!"&)[b?(! 6!)[8(!% Is the signa}?(!!")[\?(! 6! d!)[8(!0 Subsequent_ AddressReqInd (saArg,csaID, legID))][?(!&X!"XING OF CALL SETUP. */)]][3+(! 62^! d)[8(! Idle)][,(!!")[+(! 62! d!)[8(! SetupInd (sirArg]]]]]]]]][A(!",!",)[A(! 6 ,! ,!)[8(!: Establish_ Temporary_ Connection (invokeID,csaID,etcArg))][A(!NG OF SIGNALS TO/FROM SIGNALLING CONTROL. */)]][3W;(! 6^! d)[8(! Idle)][ Z;(!!")[)9(! 6^!)[8(! Signals !)[8(!. ServiceFiltering_ Response (,sfrArg) via SCF)][E(!"!")[(! 6!)][)E()]]]]]]]]]}]}^@! d\^wRwR!"R^)[-(! 6! d!)[8(! SetupReq (SIRArg))][%.(!RR&!"R&R)[66(! Yq (SIRArg))][1#<(!!")[7<(! 6R!)[8(!3 via SigCon /* Pass SetupReq on to the SigCon. */)]]][.(!"RR!"])[F(! 6&! d!)[8(!5 CACGResp (,csID,r) to call GetCSAfrom_ CSAId(csaID))][jF(!"!!:!":)[(! 6!!x)[E(! 6^! d!)[8(!( Service_ Filtering_ Response (,sfrArg))][E(!@!"@)[E(! 6^@! d#(!"^ww!"^)[->(! 6x! d!)[8(!$ ResetTimer (invokeID,csaID, rtArg))]['A(!X!"X!")[%F(! 6,! d)[8(! AddCSAId (csaID, Offspring))][ F(!&!"&)[F(! 6&!RxD(!^^!"^^)[C(! 6! d!)[8(!4 SendCharging_ Information (invokeID,csaID, sciArg))][ D(!^&^X!"^X()[(! l! 22!()[E(! l)[E(! 6)[E(! 6d! )]][ E(! 6)][9E(! 6X! )[8(!? /* ROUTI(!"!")[F(! 6&! d!)[8(! CACGResp (csaID,csID,r))][^F(!r!"r&CSA := call GetCSAfrom_ CSAId(RTArg!CSAId))][3(!  !"  )[3(! 6! d!)[8(! ResetTimer (RTArg) to CSA)][#3(! r !"w(! 6!)][)3()]]]]]]]][S3(!"^ww!"^)[P3(! 6X! d!)[8(!% CallInformation_ Report (,cirArg,r))][/w3(!&!"&)[6t3(! 6X&! d)[8(!) csaID := call GetCSAIdfrom_ CSA(Sender))][3(!!")[03(! 6X! d!)[8(!2 CallInformation_ Report(csaID,cirArg, r) via SCF)][3(!"!")[(! 6!)][)3 -!)][62(! 6,F! d)[8(!% csa := call GetCSAfromCSAId (csaID))][*2(!!")['2(! 6,! d!)[82(!1 InitiateCall_ Attempt(invokeID,, icaArg) to csa)][Z2(!@r!"r@)[(! 6r!Z)][3Q2(! 6,r! d)[8(! -)]]]]]]]]][C /* Route signal to remote IH.*/)]]][6(!"~~!"~)[(! 6!)][)6()]]]]]]]]][9J?(! 6! )[8(!G /* Se4tupRespConf is always send in the direction T-BCSM -> O-BCSM. */)]]]]} direction T-BCSM -> O-BCSM. */)]]]]}!"~)[(! 6!)][)6()]]]]]]]]][9J?(! 6&! F)][)F()]]]]]][ G(!"xxx!"xx)[F(! 6! d!)[8(! SetupResp (scrArg))][ G(!xx@!"P Subsequent_ AddressAckReq on to the SigCon. */)]]][.(!!")[(! 6!Z)][3-(! 6d! d)[8(! -)]]]]]]][-(!"$eatureType, SArg SetupType, SAArg SubsequentAddressType;)]]]]}e, CArg CancelType, CSRRArg CancelStatusReportRequestType, CIArg CollectInformationType, CdIArg CollectedInformationType, CoArg ConnnectType, CTRArg ConnectToResourceType, CtArg @-,(!^,^!",^^)[,(! 6,,!)[8(!1 Signals from SigCon to either O-BCSM or T-BCSM.)]]][,(!!"9)[,(! 62! d!)[8(! Failure_ Ind (fArg))][>(!&X!"X&)[6,(! 62X! d)[8(! csaID := call)][1, 6 @! ,)[8(!' CSA := call GetCSAfrom_ CSAId (csaID))][=(!!")[ =(! 6 ! ,!)[8(!6 Call_ Information_ RE(! 6! ,!)[8(!? RequestNotification_ ChargingEvent (invokeID,,rnceArg) to csa)][E(!" YYr!"r )[(! 6xY!,L^L!"^L,L)[7?(! 6^!)[8(!; to call GetCSAfromCSAId (CSAId) /* Route signal to CSA.*/)]]][>?(!~!"~)[_R:RSSl!"lR:)[(! 6S!)][)-()]]]]]]]]]]]]]}]}(! 6!)[8(!3 via SigCon /* Pass SetupReq on to the SigCon. */)]]][. -> O-BCSM. */)]]]]}(!L /* CallProgressReqInd is always send in the direction T-BCSM -> O-BCSM. */)]]]]}he direction T-BCSM -> O-BCSM. */)]]]]} to the CSA. */)]]][#-(!4f!"f4)[(! o csa)][G(!"!")[(! 6!)][)G()]]]]]]]][G(!"''@!"@)[GPder))][?(!F FR!"FRF )[?(! 6R! d!)[8(!, ReleaseReqInd (rArg,csaID,legID, callFlag))][1;?(!!"Lr)[(! 6!)][)"=()]]]]]]]]][@(! 6R! d)[8(! CIRQ_CONT)][@(!@!"@)[6=(!:)[8(! call IsCSA(Sender))][ {G(!",rr!"r,)[cG(! 6@!)[8(!% Is the signal incoming or outgoing?)]]][~G(!:(!"!")[D(! 6! d!)[8(!7 FurnishCharging_ Information (invokeID,csaID, fciArg))][D(!&!"D&)[6D(! 6! d)[8(!% csa := call GetCSAfromCSAId (csaID))][D(! !" )[D(! 6! d![8(! Idle)][C(!Fx!"xF)[B(! 6dx! d!)[8(! Application_ Continue(csaID))][ C(!!"(! callSegmentID_ Present(coArg))][DE(!  !" )[8(! 69! (false))][62E(! 6! d)[8(! coArg! callSegmentID := 1)][! d!)[8(!5 MSFCResp (,csID,r) to call GetCSAfrom_ CSAId(csaID))][gF(!"!!:!":)[(! 6!!)][)%F()]]]]]][RF,!"&xx)[/(! 6&F!)[8(! Pass SetupInd on to the CSA.)]]][/(!"r!"r)[(! 6!I)][3/(! 6 r! d)[8(! -)]]]]]]]]]]]]][0(!"xx!"x)[8(! 6! Yes /* Outgoing */)][67(! 6J! d)[8(!4 SArg!BCSMId!CSAId := call GetCSAIdfromCSA (Sender))][7(!xxF!"xFx)[0(! 6F! d!)[8(! SetupReqInd (SArg) vi@9 from SigCon */)]][3,(! 6! 9d)[8(! Idle)][ ,(!L~!"~L)[,(! 6~!)[8 (!% to eith T-BCSM.lse)][63D(! 6d! d)[8(! i := i + 1)][ND(!2!2!2!")[(! 6!)][)'D()]]]][QD( false)][6C(! 6L! d)[8(!< ETCArg!partyTo_ Connect!legID!sendingSideID :=hexstr('02'))][C(!" !" )[(! 6!7(! 6^!)[8(!" The IH starts in the Idle state.)]]]]]]]]}e, ENCArg EventNotificationChargingType, ERBCSMArg EventReportBCSMType, FCIArg FurnishChargingInformationType, HCINArg HoldCallInNetworkType, IDPArg I`e_ Report(RESCRArg) to CSA)][c2(!"r!"r)[(! 6x!)][)Q2()]]]]]]]]]]]}! d!)[8(!6 RequestEvery_ StatusChangH(! 6R@! d!)[8(! Continue (invokeID, csaID))][G(!!")[6G(! 6R! d)[8(!% csa := call GetCSAfromCS. RequestCurrent_ StatusReport (RCSRArg) to CSA)][`2(!"xrx!"xr)[(! 6L!)][)Q2()]]]]]]]][1(!"!",)[8(! Update the routing table.)]]][F(! R!"R )[ |C(! 6,R! d)[8(!! legToBeCreated_ Present(icaArg))][C(!,)[8(!% CallProgress_ ReqInd (cpArg,,legID))][1EG(!,^!"^,)[7'G(! 6^!)[8(!< to call GetCSAfromCSAId (csaID) /* Route signal to CSA.*/)]]][TKG(!f!"f)[(! 6f!Z)][)0G()]]]]]]]]][9TG(! 6x! )[8(!L /* CallProgressReqInd is always send in the direction T-BCSM>)[ >(! 6d&! d)[8(! call IsCSA(Sender))][ ?(!",XwXw!",X)[>(! 6!)[8(!% Is the signal inxxX)[92(! 6! d!)[8(!& ReleaseCall (invokeID,,rcArg) to csa)][]2(!"x@xYYr!"rx@)[(! 6YW!)][)Q2()]]]]]]]][E(!",!",)[E(! 6,! ,!)[8(!? Request_ Notification_ ChargingEvent (invokeID,csaID,rnceA)[(! 6^!Z)][3o;(! 6! d)[8(! -)]]]]]]]]][f;(!"^^!"^)[9(! 6R! d! (! 12!!3)]]]]]]]]]]]]} 13!!3)[!(! 14!!3)[!(! 15!!3)[!(! 16!!3)[!(! 17!!37()[(! l! 22!()[M?(! l)[P?(! 6)[S?(! 6d! )]][ V?(! 6)][3Y?(! 6,! d)[8(! Idle)][?(!^!"^)[>(! 6d! d!)[8(!, ReleaseReqInd (rArg,csaID, legID,callFlag))][?(!&!"&U(! 6!Z)][3F(! 62! d)[8(! -)]]]]]]][F(!"x  !" x)[F(! 6! d!)[8q()[(! l! 22!(?)[m7(! l)[p7(! 6)[s7(! 6d! )]][ v7(! 6)][3y7(! 6d! d)[8(! Idle)][e4^&)[6C(! 6X! 4d)[8(!' CSA := call GetCSAfrom_ 4AId (csaID))][D(!^^!7^^)[C( k()[(! l! 22!(1)['(! 6! )[ '(! 6)['(! 6,! )]][ '(! 6E)][A 7(!2!)[a R!" R,)[8(! 69!- senderRef /* Direction O-BCSM -> T-BCSM. */)][6?(! 6R! ,)[8(!7 csaID := call GetCSAFromRemoteId (RArg!callRef,legID))][2? (! 69}! SCF)][`(! )][. 7(! )[8(! 62! (CS1_INAP_To_SCF))]][(! 62!)][. 7(! )[8(! 6! (CS1_INAP_From_SCF))b]][(! 6!Z)]][A 7(!d!)[(! 6e! SigCon)][`(! )][.7(! )[8(! 6! (SigCon_Out))]][(! 6dc!)][.7(! )[8(! 6d! (SigCon_In))]][(! 6!)]][A7(!:!)[(! 6e! IBI)][`(! )][.7(! (! 6! CSA)][`(! )][.7(! )[8(! 6?! (CSA_In))]][(! 6&!Z)][.7(! )[8(! 6?! (CSA_Out))]][(! f7(!^!"^)[|7(! 6d! d!)[8(! Application_ Abort (csaID))][7(!&!"&)[ e<R )[8(! 6!)[8(! Retrieve the CSA ID.)]]][7(!R!"R)[7(! 6! d!)[8(! ApplicationoleType, r Boolean, dID DialogIDtype;)]][977(! 6! )[8(!M DCL /* IN CS-1 operation arguments. */ asfArg ActivateServiceFilteringArg, acArg ApplyChargingArg, acrArg ApplyChargingReportArg, ariArg AssihstRequestInstructionsArg, cgArg CallGapArg, cirArg CallInformationReportArg, cirqArg CallInformationRequestArg, cArg CancelArg, ciArg CollectInformationArg, coArg ConnectArg, ctrArg ConnectToResourceArg, etcArg EstablishTemporaryConnectionAirg, encArg EventNotificationChargingArg, erBCSMArg EventReportBCSMArg, fciArg FurnishChargingInformationArg, idpArg InitialDPArg, icaArg InitiateCallAttemptArg, rcArg ReleaseCallArg, rnceARg RequestNotificationChargingEventArg, rrBCSMEArg RjequestReportBCSMEventArg, rtARg ResetTimerArg, sciArg SendChargingInformationArg, sfrArg ServiceFilteringResponseArg, ieArg ErrorArg, mgt_STTArg MGT_SetTriggerTableArg;)]][9:7(! 6dF! )[8(! DCL /* Sikgnalling control primitive parameters. */ aeArg AddressEndType, cpArg CallProgressType, fArg FailureType, rArg ReleaseType, sftArg ServiceFeatureType, sirArg SetupIRType, scrArg SetupCRType, saArg SubsequentAddressType;)]]]]}quentAddressType;)]]]]}/ AEArg AddressEndType, CPArg CallProgressType, FArg FailureType, RArg ReleaseType, SFtArg ServiceFeatureType, SIRArg SetupIRType, SCRArg SetupCRType, SAArg SubsequentAddressType;)]]]]} SArg SetupType, SAArg SubsequentAddressType;)]]]]}mationArg, SFRArg ServiceFilteringResponseArg, SRRArg SpecializedResourceReportArg, SRpArg StatusReportArg, TAArg TAnswerArg, TBArg TBusyArg, TDArg TDisconnectArg, TAAArg TermAttemptAuthorisedArg, TMCArg TMidCallArg, TNAArg TNoAnswerArg, IEArg ErnrorArg;)]][9:7(! 6d! )[8(! DCL /* Signalling control primitive parameters. */ AEArg AddressEndType, CPArg CallProgressType, FArg FailureType, RArg ReleaseType, ReArg ReconnectRequestType, SFtArg ServiceF7_ Abort (csaID))][1$8(!R!"R)[7!8(! 6!)[8(! via SCF /* To SCF. */)]]][7(!"!"p)[(! 6!)][)7()]]]]]]]]]][7(!"^ww!"^)[7(! 6~! d!)[8(! Errror (invokeID,,r(! ReleaseReq (rArg))][G(!  @!" @ )[F(! 6@! d!)[8(! ReleaseReq (rArg))][1G(!rr!"r ieArg))][ *8(!F!"F)['8(! 6!)[8(! From CSA)]]][7(!&!"&)[67(! 6~&s! d)[8(!) csaID := call GetCSAIdfrom_ CSA(sender))][ 08(!FXX!"XFX)[-8(! 6&!)[8(! Retrieve the CSA ID.)]]][7(!t!")[7(! 6~! d!)[8(! Errror (invokeID,csaID, ieArg))][168(!Fx!"xF)[738(! 6xu!)[8(! via SCF /* To SCF. */)]]][7(!"!")[(! 6!)][)7()]]]]]]]]][3B(! 6d! d)E:l!"l:)[C(! 6dl! d!)[8(! Application_ Continue(csaID))][1%C(!,^!"^,)[7C(! 6^l<  r)[(! 6 !Z)][) 3()]]]]]]]][2(!"  ~~!"~ )[2(! 6! d!)[8(! 6F!)[8(! From O-BCSM.)]]][;(!~X~!"~~X)[ :(! 6! d)[8(! call IsCSA(sender))][ 0;(!F!"yF)[:(! 6F!)[8(!% Is the signal incoming or outgoing?)]]][;(!"~~  !" ~)[8(! 69 !z No /* Incoming */)][ :(! 6! d)[8(! CSA)][ ;(!!")[:(! 6!)[8(! Create an instance of the CSA.)]]{][ ;(!  L!" L )[6:(! 6L! d)[8(! newcsaID:=call Allocate_ CSAId)][ 6;(!~~!"~~)[3;|(! 6L!)[8(! Allocate a CSAID.)]]][;(!  !"  )[%:(! 6! d)[8(! AddCSAId (newcsaID, offspring))][ <;(!}!")[9;(! 6!)[8(! Update the routing table.)]]][;(! F x!" x F)[%:(! 6x! ~d)[8(!1 SetRemoteAssoc (sirArg!callRef, legID,newcsaID))][ ;(!!")[:(! 6x!)[8(!8 Associate the remote party with the newly created CSA.)]]][;(!  !"  )[:(! 6! d!)[8(!/ SetupReqInd (sirArg,csaID,legID) to offspring)][ ;(!@@!"@@)[:(! 6!)[8(!! Pass SetupReqInd on to the CSA.)]]][;(!" r !" r)[(! 6!)][):()]]]]]]]]]]]][!;(!"~~x!"x~)[8(! 6 ! Yes /* Outgoing */)][6?(! 6xx! d)[8(!( csaID := call GetCSAIdFromCSA (sender))][?(!!")[:(! 6x! d!)[8(!, SetupReq_ Ind(sirArg,csaID, legID) via IBI)][ N;(!@@r@!"r@@@)[K;(! 6r!)[8(!$ Send SetupReqInd to the remote IH.)]]][';(!"r!"r)[(! 6 !)][):(D^!"^:)[(! 6^!)][)8()]]]]]]]]]]]}(! 6R!Z)][)8()]]]]]]]]]]]}RR!"R)[q!")[6>(! 6 ! d)[8(! csaID := call)][1>(!@@!"@@)[7>(! 6!)[8(![!$ SendCharging_ Information (SCIArg))][ 3(!~F~x!"~x~F)[63(! 6x! d)[8(!- CSA := call GetCSAfrom_ CSAId(SCIArg!CSAId))][3(!~~h6X!)[8(![ GetCSAfromSigConId (sftArg!callRef) /* Retrieve which CSA should receive the message. */)]]][?(!xx!"xx)[?(! 6! d!)[8(! Service_ FeatureInd (sftArg))][1?(!  !"  )[7?(! 6!)[8(!Q to call GetCSA_ fromCSAId(csaID) /* Pass Service_ FeatureInd on to the CSA. */)]]][?(!"xRx!"xR)[(! 6 !)][)-()]]]]]]]]][3F(! 62! d)[8(! Idle)][ F(!!3)]]]]]]]]]]]]]]]]]]]]]]]}][)A()]]]]]]]}e (mgt_STTArg) via SSME)][D(!"XRXk^k^!"^XR)[(! 6^k!)][)C()]]]]]]]]]}!Z)][3&Z)][3z?(! 6L! d)[8(! -)]]]]]]][?(! !" )[8(! 6! yes /* Outgoing */)][6?(! 6L ! d)[8(!( csaID := call GetCSAIdFromCSA (sender))][?(!!")[t?(! 6L! d!)[8(!0 Subsequent_ AddressReqInd (saArg,csaID, legIDl incoming or outgoing?)]]][?(! !" )[8(! 6! no /* Incoming */)][6?(! 6 ! d)[8(!7 csaID := call GetCSAFromRemoteId (rArg! GetCSAfromSigConId (scrArg!callRef) /* Retrieve which CSA should receive the message. */)]]][>(!r!"r)[8(! 6 ! d!)[8(! SetupConf (scrArg))][18(!!")[78(! 6!)[8(!F to call GetCSAfromCSAId (csaID) /* Pass SetupConf on to the CSA. */)]]][8(!":^