------------------------SDT2 SSF_FSM--------------------------------------------------------------------------------------------------------------------------------------------------------ObjectName----------------------------------------ObjectType----------------------------------------!%&()LinkEndpoints--------------------------------!%()PageOrdert----------------------------------- 6fSSF_FSM--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------15-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------!%()HeadingText ; SIGNALSET TDP_R, EDP_R_Not_!%()PageOrderst, EDP_N_Not_Last, EDP_N_Last, Aband11Disconnect;)]}ast, Abandon, Disconnect;)]}nnect10----------------------------------------------- fb ()[8(!R Virtual Process Type <> SSF_FSM)]} SSF_FSM)]}SF_FSM)]}-----------------------------------------------------------------------------------------------------------------------------------h6R! ,)[(! 6R!+ Process_ Establish_ Temporary_ Connection)]][$,(! 6R! ,)[(! 6Lk! Process_ Event_ ReportBCSM)]][$hE(! 6R! ,)U()[8(!: ;FPAR StartState SSFStateType, SCFInitiated Boolean;)]}N_Last, EDP_R_Not_last, EDP_R_Last, Abandon, Disconnect, SpecializedResourceReport, PromptAndCollectUserInformationResult;)]} fP!%()HeaderText------------------------------------11)PageOrder------------------------------------11toring61-------------------------------------11toring7Instruction2--------------------------  & )[6.(! 6&! d)[8(! CS := Parent)][.(!  !"  )[%J(! 6! d)[8(! Initialise_ DPTabl8rgingEvent is an internal event that indicates th9 charging information is to be sent to the SCF. *9]][3.(! 6! d)[8(! *)][ .(!,^, 6X&! d!)[8(! DPMidCall (DP))][6(!!")[66(! 6X! d)[8(! LegIdTable (DP!LegId) := True)][6(!"b(!H ProcessEvent_ ReportBCSM (DP!LegId,DP!bcsmEvent, ServiceKey,ERBCSMArg))][?D(!!")[C(! 6R! d!)[8(!& EventReport_ BCSM (,EReleaseCallArg, rnceARg RequestNotificationChargingEventArg, rrBCSMEArg RequestReportBCSMEventArg, rtARg ResetTimerArg, sciArg SendChargingInformationArg, sfArg SelectFacilityArg, srArg SelectRouteArg, ieArg ErrorArg;)]][9,0(! 6L)[(! 6e!)][)y7()]]]]]]]][=(!"  &!"&)[F=(! 6&&! d!)[8(! Cancel (invokeID!)[8(! ResetTimer (RTArg))][?(!X!"X)[ a4(! 6! )[8(! TemporaryConnection_ Active)][d4(!R!"G )[8(! 69! FALSE)][6t?(! 6! d)[8(! Initial_ TssfReset := TRUE)][?(! ~ !"  ~)[6w?(! 6!W&X!"X&)[@(! 6X!)[8(! This page.)]]]]]]]]]]]]]]]]]]]]][6(!"  &!"&)[6(!  notifyAndContinue))][!D(! XX!"X )[8(! 6q! true)][%C(! 6! d)[8(!H ProcessEvent_ ReportBCSM (DP!LegId,DP!bcsmEvent, S(!Xee!"Xe)[8(! 6~! false)][ &(! 6 ! ,)[8(!3 call DPArmed (DP!LegId,DP!bcsmEvent, interrupted))][((!L:erviceKey,ERBCSMArg))]['D(!X~X!"XX~)[C(! 6! d!)[8(!& Event_ ReportBCSM (,ERBCSMArg) to CS)][0D(!XXF!"XFX)[%C(! 6F! d)[8(!' CallInformation_ ReportPending (true))][9D(!XX!"XX)[%C(! 6! d)[8(!' ApplyCharging_ Report_ Pending (true))][BD(!X@Xr!"XrX@)[C(! 6r! d!)[8(! PICResume (DP!LegId) to CS)][KD(!XX!"XX)[6D(! 6! d)[8(! termination :=false)][TD(!XlX!"XXl)[ D(! 6! d!)[8(!& Application_ End(termination,) to CS)][WD(!XX4!"X4X)[(! 6X4!Z)][3D(! 64! d)[8(! Idle)]]]]]]]]]]]]]]]]][7 ProcessRequest_ Notification_ ChargingEvent (RNCEArg))][E(!^^L!"^L^)[6*(! 6L! ,)[8(!0 Event_ Notification_ Charging_ Pending := TRUE)][NX! d)[8(!! Process_ SelectFacility (sfArg))][eE(!"RRR!"RR)[(! 6~!)][)D()]]]]]][nE(!"RR(! 6!Z)][37(! 62! d)[8(! Waiting_for_ _Instruction)]]]]]]]]]]]]][8(!"  &!"&)[8(! 6,&! kg))][u(!LL!"LL)[ s4(! 6! )[8(! TemporaryConnection_ Active)][v4(!LL!"LL)[%`6fyAndContinue))][C(!!")[8(! 6! true)][%7C(! 6! ,)[8(!H ProcessEvent_ ReportBCSM (dp!legID,dp!bcsmEvent, servicF(! call AnyDPArmed)][ B(!RR!"RR)[B(! 6 !)[8(!c Assumes that the RequestReportBCSMEvent could be requesting that all outstanding DPs be disarmed.@!")[6/6(! 6! d)[8(! termination:= true)][J6(!L!"L)[56(! 6L! d!!")[%iA(! 6X! d)[8(! Process_ Cancel)][A(!R!"R)[ lA(! 6X! d)[8"(! 6~! d)[8(!$ ProcessSend_ Charging_ Information)][A(!!")[(! 6!Z)][3A(! 6~! d)[8f,,CArg))][d=(!R!"R)[%I=(! 6&R! d)[8(! Process_ Cancel)][g=(!!")[ L=(! 6*)][(!!")[(! 6X! d!)[8(! Application_ Abort)][(!R!"R)[6r5ROCESSING OF APPLICATION PRIMITIVES *****/)]][9#(! 6F! )[8(!V /* Note that only the relevant application primitives are defined in the SSF FSM. */)]][3(! 6XX! d)[8(! ":!)[8(! prearranged end.)]]][@(!!")[(! 6!Z)][@(! 6^! d)[8(! TDPN)][ @(!!"R)[YE(! 6F! d!)[8(!" SelectFacility (invokeID,,sfArg))][_E(!&X!"X&)[%\E(! 6For_ Instruction)][>E(!RR!"RR)[E(! 6! d!)[8(!& AnalyseInformation (invokeID,,aiArg))][AE(!R&RX!"RZture Provisioning) are not armed for SCF initiated calls. */)]]]]}} calls. */)]]]]} 6! )[8(!a /* The static DPs (SMF Service Feature Provisioning) are not armed for SCF initiated calls. */)]]]]}(! 6! B(!"!")[:(! 6r! d!)[8(!3 Furnish_ Charging_ Information (invokeID,,FCIArg))][:(!X!"()[(! l! 22!(u)[(! l)[(! 6)[(! 6d! )]][ (! 6)][9?/(! 6^! )[8(! /* The TL?)[8(! 6X! true)][ 2(! 6F! d)[8(! call CallFiltered)][2(!F !" F)[8(! 6! false)][6\d)[8(! Monitoring)]]]]]]]]][A(!"&??X!"X&)[fA(! 6XX! d!)[8(! Cancel (invokeID,,CArg))][~A(! call AnyDPArmed)][E(!RR!"RR)[8(! 6k! false)][ D(! 6! )[8(!< CallInformationReportPending OR ApplyChargingReportPending)For_ _Instruction, Monitoring)][D(!,!",)[C(! 6R,! d!)[8(! virtual DPDisconnect (DP))][D(!!"< !" )[ ?(! 6 ! )[8(!9 call DPArmed (DP!LegId,DP!bcsmEvent, notifyAndContinue))][@(!L!"L)[8(! P3)[8(! 6w! true)][%*32(! 6R! )[8(!F4 ProcessEventReportBCSM (DP!LegId,DP!bcsmEvent,7erviceKey,ERBCSMArg))][+(!^ > (!xx:!"x:x)[(! 6x:!Z)][3U@(! 6:! d)[8(! Idle)]]]]]]][@(!FFr!"rd)[8(! Idle)][3(!X!"X)[3(! 6! d!)[8(! SSFStop)][ 3(!x!"FxC(! 6! d)[8(! termination :=false)][ED(!@r!"r@)[C(! 6r! d!)[8(!& Application_ End(terminations)][6D(!F!"F)[C(! 6F! d!)[8(! PICResume (DP!LegId) to CS)][(! 6L! )[8(!< CallInformationReportPending OR ApplyChargingReportPending)][?>(!F!"F)[%IC(! 6,F! d)[8(!' CallInformation_ ReportPending (true))][C(!!")[%RC(! 6,! d)[8(!%j()[(! l! 22!(u)[ (! l)[(! 6)[!(! 6d! )]][ (! 6)][9@(! 6! )[8(! /***** DI(! 6! d)[8(! EDPN)]]]]]]]]][(!RR~!"~R)[8(! 6'k! false)][(! 6~!Z)][*(! 6)]]][B(!&&!"&&)[8(! 6?! false)][ B(! 6^! )[8(!< CallInformationReportPending OR ApplyChargingReportPending)][B(!A&~&!"&&~)[8(! 6?! FALSE)][6B(! 6! d)[8(! termination :=true)][B(!&&F!"&F&B)[B(! 6F! d!)[8(!& Application_ End(termination,) to CS)][B(!&&!"&&)[(! 6&!Z)][3B(! 6C! d)[8(! Idle)]]]]]]][B(!^,,!",^)[8(! 6E3! TRUE)][(! 6,!)][3B(! 6! d)[8E!"&)[A(! 6~! d!)[8(!0 Send_ Charging_ Information (invokeID,,SCIArg))][A(!X!"X)[%A (! Monitoring)]]]]][B(!R,R,!",R)[8(! 6Ek! true)][(! 6,!Z)][)B()]]]]]]]][C(!"&&DeKey,erBCSMArg))][C(!~!"~)[@C(! 6,! d!)[8(!& EventReport_ BCSM (,ERBCSMArg) to CS)][C(!F!"=R)[%$(! 6! ,)[8(! ProcessReset_ Timer)][H(!"^^!"^)[(! 6^!)][)-R)[(! 6!)][)()]]]]]},(!^~^!"^^~)[6*(! 6! d)[8(!# SET (NOW + Tssf_ _Duration, T[)[4(! 6^! d!)[8(!& Application_ End(termination,) to CS)][4(!@r!"r@)[43(! 6^r! d)[8IDPArg))][3(!@!"@)[2(! 6R@! d!)[8(! InitialDP (,IDPArg) to CS)][5(!!"!& Process_ Send_ Charging_ Information)]][$VE(! 6! ,)[(! 6! Process_ SelectRoute)]][$I.(! 6R! ,)[(! 6! Process_ Cancel)]][$O.(! ;-(!R!"R)[8(! 6! true)][%8-(! 6R! ,)[8(!" Call_ Information_ ReportPending)][>-(!!"(! 6^! d!)[8(! SSFStop)][ 3(!&X!"X&)[3(! 6X!)[8(!8 From the CS due to a call release (incl. ReleaseCa7)[8(! 6! false)][43(! 6,! d)[8(! )]]]]]]]]]]})][3M(! 6^! d)[8(! Idle)]]]]]]]]]]}]]]]]]]]]]]]}! d!)[8|S(!!")[ =4(! 6R! )[8(! UserInteraction_ Active)][@4(!!")[%p(! 66! true)][%?(! 6&L! ,)[8(!F ProcessEventReportBCSM (DP!LegId,DP!bcsmEvent, ServiceKey,ERBCSMArg))][ @(!!")[?(! 6X()[(! l! 22!(P)[(! l)[(! 6)[="(! 6d! )]][ (! 6)][3T(! 6^! ,)[8(! Waiting_)[6?(! 6~! d)[8(!# SET (NOW + Tssf_ _Duration, Tssf))][?(!L~!"~L)[(! 6~!Z)][3?(! 6~~FR)[(! 6F!Z)][3@(! 6~F! d)[8(! Monitoring)]]]]]]][A(!"&??X!"X&)[_  )[8(! 69! false)][%:C(! 6! d)[8(!( CallInformation_ ReportPending (false))][C(! ~ !"  ~)[6CC[(! 6x! Process_ SelectFacility)]][$U.(! 6! ,)[(! 63! Process_ Collect_ Information)]][$:.(! 6! ,)[(! 6!) Process_ F_ _Instruction)]]]]]]][?(!*- - F!" F)[8(! 6k! TRUE)][(! 6 -!)][)z?()]]]][?(!*XX d)[8(!" SET(NOW + Tssf_ _Duration, Tssf))][?(!  F!" F )[(! 6 F!Z)][3z?(! 6F! d)[8(! Waiting_forVto the Idle state from the WaitingForInstruction or Monitoring state it is implying that the SSF terminates. However, because the model has a static configuration the SSF is not terminated. The SSF contains explicit application begin, abort, and end prim()[(! l! 22!(d)[C(! l)[C(! 6)[C(! 6d! )]][ C(! 6)][3C(! 6R! d)[8(!' Waiting_-XR&)[% E(! 6X! d)[8(!% Process_ AnalyseInformation (aiArg))][5E(!RRR!"RRR)[ D(! 6R! d)[8(!,RRBCSMEArg))][>(!" !" )[(! 6!)][)x>()]]]]]][?(!"    &!" &)[ of the TDPs from SSME.)]]][6(! ~ !"  ~)[(! 6 !Z)][3_(! 6! d)[8(! Idle )]]]]][6(!*  ][{#(!&~&!"&&~)[6s(! 6! ,)[8(!& ApplyCharging_ ReportPending := TRUE)][(!&F&x!"&x&F)[6vi[8(!& Application_ End(termination,) to CS)][:(!l!"l)[(! 6!Z)][39(! 6r! d)[8(! Idle)]]]]]]][ :(! 6xX! d!)[8(!: Request_ Notification_ ChargingEvent (invokeID,,RNCEArg))][(!!")[%(! 6x! d)[8(!7(! 6x! d)[8(! Idle)]]]]]]]]]]]]]]]]]]]]}]]]]]}:! d!)[8(! Application_ End to CS)][C+(!xx!"xx)[(! SXessSend_ Charging_ Information)][>(! R!"R )[6?(! 6~R! d)[8(! InitialTssf_ Active := FALSE)][?(!!"R 99!" )[(! 69!)][)()]]]]]][*/(!"  &!"&)['/(! 6&! 6! Process_ Connect_ ToResource)]][$7.(! 6! ,)[(! 6!/ Process_ Request_ Notification_ ChargingEvent)]][$D(! 6! ,!)[(! 6Wng)][ @(! ^R^!"R^ ^)[@(! 6R,!)[8(! EDP processing.)]]][?(!!")[?(! 6X!Z)][)A6()]]]]]][D6(!*X-X-!"X)[8(! 6! else)][(! 6!)][)A6()]]]]][3D(! 6R.(! Monitoring)]]]]]]]]]]}F)[(! 6F!Z)][3(! 6xF! d)[8(! Monitoring)]]]]]]]]]]]]})[6%.(! 6 ! d)[8(!1 ~)[(! 6!Z)][3(! 6F! d)[8(! -)]]]]]]]]]]]]})[.(! 6 L! d!)[8(!/ Event_ Notification_ Charging (,ENCArg) to CS)][5}(!"  &!"&)[+(! 6&! ,!)[8(! ResetTimer (RTArg))][O(!!")[(! 6x! ,)[8(!# SET (NOW + Tssf_ _Duration, Tssf))][(!&&@!"&@&)[(! 6&@!Z)][3y(! 6@! ,)[8 ApplyCharging_ ReportPending (true))][C(!@r!"r@)[[C(! 6,r! d!)[8(! PICResume (DP!LegId) to CS)][C(!!"; d!)[8(!. CallInformation_ Request (invokeID,,CIRqArg))][8(!R!"R)[%8(! 6,R! d)[8(!! ProcessCall_ InformationReques(! 6~! d)[8(! EDPR)][ @(!!")[@(! 6~!)[8(! Next page)]]]]]]]]]]][@(!"ng)][C(!&&!"&&)[B(! 6! d!)[8(!1 RequestReport_ BCSMEvent (invokeID,,RRBCSMEArg))][B(!&X&!"&FxxX)[ g4(! 6! )[8(! TemporaryConnection_ Active)][j4(!xRx!"xxR)[%'(! 6! ,)[8!")[8(! 6! false)][ 9(! 6F! d)[8(! Application_ Active)][ :(!r!"r for_ _Instruction)][=(!!")[i;(! 62! d!)[8(!( ConnectTo_ Resource (invokeID,,CTRArg))][;(!X!"@! d)[8(! WaitingFor_ Instruction)]]]]]]]]]]}) Process_ Furnish_ Charging_ Information)][(!!")[(! 6!Z)][3(! N)[3 D(! 6R:! d)[8(! Waiting_for_ _Instruction)]]]]]]]]]]]]]]][D(!L!"L)[8(! 6-! false)][%C(! ,) to CS)][ND(!!")[3D(! 6! d)[8(! Idle)]]]]]]]]]]]]]]]]]]]][9C(! 6F! )[8(! /* Note: The Q1218 re(! 6x! d)[8(! Idle)]]]]]]]]]]]]]]]]]]]]}e)]]]]]]]]]]]]}! d)[8(! Monitoring)]]]]][.(!!")[8(! SQR )[8(! 69! true)][%9(! 6FR! d)[8(! Process_ Connect (CoArg))][9(!L!"L)[)9()]]]][9 )[6f(! 6x! ,)[8(!# SET (NOW + Tssf_ _Duration, Tssf))][(!XX@!"X@X)[(! 6X@!Z)][3i(! 6@! ,),S-1 Operation processing procedures */)]][$=.(! 6! ,)[(! 6! Process_ Apply_ Charging)]][$X.(! 6! ,)[(! 6! Process_ Continue)]][$ ,(! x6! ,)[(! 6~!% Process_ Request_ Report_ BCSMEvent)]][$DE(! 6! ,)[(! 6! Process_ Analyse_ Information)]][$C.(! 6! ,)[~!"~R)[GE(! 6! d!)[8(! SelectRoute (invokeID,,srArg))][ME(!~&~X!"~X~&)[%JE(! 6:!":)['(! 6^:! d!)[8(!& Application_ End(termination,) to CS)][ 5(!&lXl!"Xl&l)[5(! 6X$esetTimer operation specifies a timer value - not yet defined. */)]][3%(! 6^! ,)[8(! Waiting_for_ _Instruction)][C(!&!"&)[((! 6&&)[ 74(! 6^! )[8(! UserInteraction_ Active)][:4(!&&!"&&)[%m(! 6! ,)[8(! ProcessApply_ Charging)]Z)][3D(! 6! d)[8(! Monitoring)]]]]]]][E(!RR!"RR)[8(! 6k! false)][ D(! 6! d)[8tive)][86(!RXX !" RX)[8(! 6 ! Begin)][&6(! 6 ! d!)[8(! Errror (invokeID,,IEArg) to CS)][G6(!for_ _Instruction)][|(!&&&!"&&&)[g(! 6&! ,!)[8(! ApplyCharging (ACArg))][(!&&!"&|!"~F~)[8(! 6! true)][)9()]]]]]]]][R:(!"  &!"&)[9(! 6F&! d!)[8urnish_ Charging_ Information)]][$v.(! 6! ,)[(! 6~3!( Process_ Forward_ Connection_ Released)]][$R.(! 6! ,)[(! 6! Process_ Connect)]][$..][)*()]]]]]]]]]]]})][3*(! 6! d)[8(! Idle)]]]]]]][.+(!  !"  )[8(! 69! true)][(! 6 !Z)tthe abandon DP is armed as a EDP-N or a EDP-R will be determined from the trigger table (dp processing) */)]]]]}]}P is armed as a EDP-N or a EDP-R will be determined from the trigger table (dp processing) */)]]]]}()]]]]]]]]]]]}Z)][)()]q]} 6l! d)[8(! Idle)]]]]]]][1(!X!"X)[8(! 6! TRUE)][(! 6!)][3(! 6! )[5(! 6! d!)[8(! Application_ Continue)][5(!R!"R)[65(! 6! d)[8(! lastPrimitive:()[(! l! 22!(P)[y(! l)[(! 6)[."(! 6d! )]][ (! 6)][3d(! 6^! ,)[8(! Waiting_^!Z)][30(! 6! ,)[8(! Waiting_for_ _Instruction)]]]]]]]]]]]]][6(!"^^!"^)[(! 6! ,!~!"~)[rA(! 6! d!)[8(!& Application_ End(termination,) to CS)][A(!F!"F)[^(!^^!"^^)[6-(! 6! ,)[8(!# SET (NOW + Tssf_ _Duration, Tssf))][Q(!^^!"^^)[(! 6(! 6!)[8(!( From the CS due to a e.g. ReleaseCall.)]]][k(!&X!"X&)[ J(! 6X! ,)[8(! Application_ Active)][L! d!)[8(! DP (DP))][@(!&X!"X&)[6?(! 6XX! d)[8(! LegIdTable (DP!LegId) := True)][@(!.(!xx!"xx)[%7(! 6! ,)[8(!' ProcessFurnish_ Charging_ Information)][[(!"x~x__x!"xxF!"F)[(! 6F!Z)][3(! 6xF! d)[8(! Monitoring)]]]]]]]]]]]]}(!, EventNotification_ ChargingPending := true)][(!~!"~)[(! 6!Z)][3(! 6X! d)[8(! Idle)]]]]]]]]][5(!"!"()[(! l! 22!(P)[4(! l)[(! 6)[+"(! 6d! )]][ (! 6)][9u#(! 6! )[8(!K /* The R{ ProcessRequest_ Notification_ ChargingEvent (RNCEArg))][(!R!"R)[6(! 6x! d)[8(!, EventNotification_ ChargingPending := true)][(!for_ _Instruction)][l(!XX&!"X&X)[W(! 6&! ,!)[8(! Apply_ Charging (ACArg))][r(!XX!"X )[6(C(! 6! d)[8(!! LegIdTable (DP!LegId) := False)][sC(! & X!" X &)[ +C(! 6X! ,)[8(!( ca23(! l! 22!(3)[6(! l)[6(! 6)[6(! 6d! )]][ 6(! 6)][9`D(! 6 ! p)[8/***** S~)[6:(! 6! ,)[8(!, EventNotification_ ChargingPending := TRUE)][^(!Fx!"xF)[6=(! 6x! ,)[8(!# CArg))][(!X!"X)[%(! 6X! d)[8(! Process_ Apply_ Charging)][#(! !" )[6#!")[?(! 6! d!)[8(! DPMidCall (DP))][@(!"&??X!"X&)[(! 6?)[(! 6!Z)][32(! 6R! d)[8(! Waiting_for_ _Instruction)]]]]]]][D(!FF!"F)[8(! 6_! 'nX! d)[8(! Process_ SelectRoute (srArg))][SE(!"~~RRR!"RR~)[(! 6R!)][)D()]]]]]][bE(!"RR%!"  r)[^C(! 6! d!)[8(! Application_ Continue to CS)][C(!  :!" : )[3dC(! 6:! , )]]]]]]]]}F!"F)[(! 6F!Z)][3(! 6xF! d)[8(! Monitoring)]]]]]]]]]]]]}&!" ()[(! l! 22!(P)[(! l)[(! 6)[(! 6d! )]][ (! 6 )][9G0(! 6! )[8(!' /**** DEP()[(! l! 22!(H)[s(! l)[(! 6)[-&(! 6d! )]][ (! 6)][9@(! 6! )[8(!. /***** W(! Connnect (invokeID,,CoArg))][9(!!")[ 9(! 6F! d)[8(! call Connnect_ Analysis)][9(! R!"uitives which are used to determine if the SSF application is active. The SSF application can receive or send the primitives as appropriate. */)]][3(! 6! d)[8(! Idle)][(!XXX!")[8(!& Application_ End(termination,) to CS)][P6(!"!")[(! 6!)][3A6(! 6R! d)[8(!][3E(! 6! d)[8(! Idle)]]]]]]][,E(!&&!"&)[8(! 6?! true)][)D()]]]]]]]][PE(!"RR~y()]]]]]]]][9(!"^^xx!"x^)[(! 6! ,!)[8(!) Furnish_ Charging_ Information (FCIArg))][B(!xXx!"n! true)][(! 6r!Z)][)X@()]]]]]]]]]]]}!")[6U4(! 6! ,)[8(!( Temporary_ Connection_ Active := false)][X4(!lWication_ End(termination,) to CS)][T>(!!")[(! 6!Z)][36>(! 6 ! d)[8(! Idle)]]]]]]][H>(!D,dp!bcsmEvent, serviceKey,erBCSMArg))][C(!  !"  )[UC(! 6! d!)[8(!$ EventReportBCSM (,erBCSMArg) to CS)][C(! r @)[3XC(! 6~@! d)[8(! Idle)]]]]]]]]]]]]]]]]]]]][9C(! 6~! )[8(! /* Note: The Q1218 recommendations state that the SSF will notify the 9arging (invokeID,,ACArg))][@(!!")[%@(! 6^! d)[8(! Process_ Apply_ Charging)][@(!R!"LF)[8(! 6_! true)][(! 6F!)][3X@(! 6r! d)[8(! Monitoring)]]]]][@(!r!"r)[8(! 6e)][6(!   R!" R  )[ 6(! 6R! d)[8(! scfInitiated)][6(!  !"  )[8(! 69!)][)?()]]]]][?(! 6! d)[8(! EDPN)][@(!"~~ !" ~)[(! 6!)][)?()]]]]]}^! )[8(!{ /* Whether the disconnect DP is armed as a EDP-N or a EDP-R will be determined from the trigger table (dp processing) */)]]]]}trigger table (dp processing) */)]]]]}(!x /* Whether the abandon DP is armed asage To SRF')][p=(!F!"F)[6U=(! 6RF! d)[8(!# SET (NOW + Tssf_ _Duration, Tssf))][v=(!"!!:!"SET (NOW + Tssf_ _Duration, Tssf))][a(!@!"@)[(! 6@!Z)][3@(! 6@! ,)[8(! Waiting_for_ _Instruction)]]]]]]]]]]]]][Fh>(! 6,! d)[8(! InitialTssf_ Active := FALSE)][Q>(!r!"r)[(! 6!Z)][30>(! 6,! d)[8(! 6!# ProcessCall_ Information_ Request)]][$s.(! 6! ,)[(! 6!* Process_ Disconnect_ Forward_ Connection)]][$F.(! 6! ,)[(! 6~K! ,!)[8(!0 Request_ Notification_ ChargingEvent (RNCEArg))][L(!!")[ %4(! 6! )[8(! UserInteraction_ Active)][(4(!!")[%1(! 6! ,)[8(!7 ProcessRequest_ Notification_ ChargingEvent (RNCEArg))][U(!~!"ll IsDPArmed (DP!LegId,DP!bcsmEvent))][vC(!  R!" R )[8(! 69! true)][ .C(! 6R! ,)[8(!9 call DPArmed (DP!LegId,DP!bcsmEvent, noti~)[(! 6_!)][)=()]]]]]]]]]]]} l)[(! 6)[("(! 6d! )]][ (! 6)][3(! 6^! ,)[8(!) Waiting_G(! Application_ Active)][ E(!~~x!"~x)[8(! 6-! TRUE)][6D(! 6x! d)[8(! termination :=true)][#E(!! d)[8(! Waiting_for_ _Instruction)]]]]]]]]]]][?(!"  &!"&)[?(! 6x&! d!)[8(! Tssf)][ ?((! 6! d)[8(!# SET (NOW + Tssf_ _Duration, Tssf))][C(!  F!" F )[%LC(! 6F! ,)[8(!H ProcessEvent_ ReportBCSM (dp!legI d!)[8(! DPTDisconnect (LegId))][$(!l!"l)[6$(! 62! d)[8(! EventTypeBCSM := tDisconnect)][$(!()[(! l! 22!(7)[D(! l)[D(! 6)[D(! 6d! )]][ D(! 6)][3;E(! 6,! d)[8(! WaitingF&F)[8(! 6-! false)][ !>(! 6&F! d)[8(! Application_ Active)][E>(!xx!"x)[8(! 6[@(!&&!"&&)[ .@(! 6^! )[8(!3 call DPArmed (DP!LegId,DP!bcsmEvent, interrupted))][^@(!&&!"&&()[(! l! 22!(M)[(! l)[(! 6)[+(! 6d! )]][ (! 6 )][5'(! 6R^! d)[8(! SFand_ A24_ _End_of_ _Temporary_ _Connection)][3(25^^!"26^)[(! 627! ,!)[8(!0 R W6Q6^! d)[8(! Monitoring)]]]]]]][(!"!")[(! 6X! d!)[8(!# Apply_ Charging (invokeID,,Afor_ _Instruction)][h(!!")[D(! 6 ! d!)[8(! SSFStop)][ 3(!!")[3(! 6X! d)[8(! lastPrimitive:=Abort)][u5(!!")[6(! 6X! d)[8(! ApplicationActive := false)][(!)[%-(! 6! ,)[8(! ApplyCharging_ ReportPending)][-(!!")[b(! 6 ! d!)[8)[(! 6!Z)][J3(! 6,! d)[8(! TDPR)][ @(!@&@!"&@@@)[@(! 6&!)[8 DPTBusy (LegId) )]["(!rr!"rr)[6"(! 6! d)[8(! EventTypeBCSM := tBusy)][#(!"rFr__x!"qcommendations state that the SSF will notify the CCF to release the call on receipt of a disconnect. The CCF should not assume that the call is automatically disconnected - if the DP is armed the SCF may request further action. */)]][9C(! 6d(! termination :=false)][C(!x!"x)[OC(! 6~! d!)[8(!& Application_ End(termination,) to CS)][C(!@!"!@XrX!"rXX@X)[?(! 6r&!)[8(! Timer expiry)]]][?(!!")[?(! 6x! d!)[8(! 6?! true)][%1@(! 6! ,)[8(!F ProcessEventReportBCSM (DP!LegId,DP!bcsmEvent, ServiceKey,ERBCSMArg))][a@(!&&!"&&)[%44!"4)[(! 64!Z)][$(! 624! d)[8(! I1)]]]]]]][$(!"!")[m&F&x!"&x&F)[6D(! 6x! d)[8(! InitialTssf_ Active := FALSE)][E(!&&!"&&)[(! 6&!}X)[%:(! 6r! d)[8(!) Process_ Furnish_ Charging_ Information)][=(!"33L!"L)[(! 63!(! Application_ End to CS)][3(!Fx!"xF)[43(! 6 x! d)[8(! )]]]]]]]]][q(!!"N(! 6L! d)[8(!" SET (NOW + Tssf_Duration, Tssf))][b?(!@!"@)[6G?(! 6L@! d)[8(!" UserInteraction_ Active := false)][e?(!!")[(! 6!Z)][3J?(! 6L! d)[8(! Waiting_for_ _Instruction)]]]]]]]]]]]]]]]]]]][=(!"&L!"L)[26(! 6RL! d!)[8(! Application_ Continue to CS)][S6(!!")[(! 6e()[(! l! 22!(P)[(! l)[(! 6)[I"(! 6d! )]][ (! 6)][3B(! 6^! d)[8(! Monitorim)[8(! call CheckACG)][;3(!R~!"~R)[8(! 63! false /* Not blocked */)][ 83(! 6,~! d)[8(! SF_ Encountered)][A3(!F!"F)[8(! 6! true)][63(! 6,F! d)[8(! 'Send SFResponse to SSME')][3(!!"(! Waiting_for_ _Instruction)]]]]]]]]]]]]][(!"&&  &!"&&)[j(! 6&! ,!)[8(!$ SendCharging_ Information (SCIArg))][O~! d)[8(! EDPR)]]]]]]]]][6(!" ^ wLwL!"L ^)[6(! 6! d!)[8(! DPMidCall (DP))][6(!"L!"~__x!"x~)[(! 6_!)][)=()]]]]]]]][I(!" x x&!"x&)[.(! 6& d!)[8(! virtual DPAbandon (DP))][-/(!!")[6l/(! 6! d)[8(! LegIdTable (DP!LegId) := False)][6(!"!"l)[(! 6!Z)][3(! 6! ,)[8(! Waiting_for_ _Instruction)]]]]]]]]]]]]]]]]]]]]}_ Active := false)][X4(!l!")[8(! Waiting_for_ _Instruction)]]]]]]]]]]]]]]][yC(!R!"R)[8(! 6! false)][%1C(! 6~R! d)[8(!' CallInformation_ ReportPending (true))][|C(!!")[%4C(! 6~! d)[8(!% ApplyCharging_ ReportPending (true))][C(!L~!"ZDLE STATE *****/)]][9(! 6F! )[8(!@ /* Note: An SSF instance only exists for the duration of a Trigger Detection Point and subsequent Event Detection Points and Call Information Requests. When the FSM returns XheckACG)]][${D(! 64! )[(! 6f! Call_ Filtered)]]]]}RTED PROCEDURE MatchingServiceFilteringCriteria; RETURNS Boolean; IMPORTED PROCEDURE CheckACG; RETURNS Boolean; IMPORTED PROCEDURE CallFilteredk()[(! l! 22!(K)[@(! l)["@(! 6)[%@(! 6d! )]][ (@(! 6)][+@(! 6,! d)[8(! EDPR)][!"@)[8(! 6! true)][?(! 6@! d!)[8(! Application_ Abort to CS)][?(!"~!":! virtual ProcessDP_ Specific)]][9fD(! 6! )[8(!9 /* Procedures for validation of operation arguments. */)]][$5(! 6l! ,)[(! 6! Connnect_ Analysis)]]]()[(! l! 22!(x)[ (! l)[(! 6)[!(! 6d! )]][ (! 6)][9cD(! 6X! )[8(!N /***** P)[(! 6F! d!)[8(! Application_ End)][(!R!"R)[6{5(! 6F! d)[8(!(!@!"@)[8(! 6Y! FALSE)][(! 6!Z)][39(! 6F! d)[8(! Idle)]]]]]]][:(!F~~~~()[(! l! 22!(p)[(! l)[(! 6)[0&(! 6d! )]][ (! 6)][3=(! 62^! d)[8(! Waiting_p)[8(! PICResume (DP!legId) to CS)][?(! !" )[ ?(! 6x! d)[8(! Application_ Active)][?(!@For_ _Instruction, Monitoring)][mC(!  ,!" , )["C(! 6,! d!)[8(! virtual DPAbandon (DP))][pC(!  !" )][)u;()]]]]]]][9iD(! 6l! )[8(! /* Note: Due to the simplified modelling of the event table, the capability of retriggering (TDP-R) after Continue is not modelled in the SDLs. */)]]]]} )[8=Continue)][5(!!")[(! 6!Z)][35(! 6! d)[8(! -)]]]]]]][(!"!"te is only legal if the SRF is not connected. For IN CS-2 (Q.1228) the processing of those operations is legal also when the SRF is connected. For reasons of simplicity (to avoid redefinition in the CS-2 specification), the CS-2 case is specified. */)]][3@(! 6! d)[8(! CallInformation_ ReportPending)][d@(!&&L!"&L&)[67@(! 6L! d)[8(!# SET (NOW + Tssf_ _Duration, Tssf))][g@(!&&!"&&)[:@(! 6! d!)[8(!& EventReport_ BCSM (,ERBCSMArg) to CS)][j@(!&F&x!"&x&F)[=@(! 6x! d!)[8(! Application_ Continue to CS)][m@(!&&!"&&)[(! 6&!Z)][3@@(! 6! d)[8(! Waiting_For_ _Instruction)]]]]]]]]]]]]][p@(!&&R!"R&)[8(! 6?! false)][C@(! 6R! d!)[8(! PICResume (DP!LegId) to CS)][ s@(!L!"L)[F@(! 6R!)[8(!4 disarm the events that can no longer be reached? )]]][v@(!!")[ I@(! 6R! ,)[8(! call AnyDPArmed)][y@(!~exex!"x~e)[8(! 6~! false)][ L@(! 6! )[8(!< CallInformationReportPending OR ApplyChargingReportPending)][|@(!xx!"xx)[8(! 6! false)][6O@(! 68 UserInteraction_ Active OR TemporaryConnection_ Active)][P?(! R!"R )[%8?(! 6LR! d)[8(!* Process_ Disconnect_ Forward_ Connection)][ S?(!L!"L)[5?(! 6R!)[8(!. Involves releasing the connection to the SRF)]]][V?(!!")[%;?(! ! false)][66(! 6! d)[8(! eventTable := call ArmTDPs)][ 6(!LL!"LL)[6(! 6!)[8(!, Retrieve the status\o CS)][\?(!!")[6A?(! 6L! d)[8(!! Tssf_Duration := Tssf_Duration2)][_?(!x!"x)[6D?$D(!!")[8(! 6! false)][%C(! 6R! d)[8(!( CallInformation_ ReportPending (false))][*D(!~!"(! 6X ! d)[8(!& ApplyCharging_ ReportPending := true)][#(!"!")[(! 6!)][)()]]]]]]]]]]]}XC(! 6! ,)[(! 6! Process_ Initiate_ CallAttempt)]][$$,(! 6! ,)[(! 6L! Process_ InitialDP)]][$L.(! 6! ,)[(! c()[(! l! 22!(d)[ (! l)[(! 6)[X"(! 6d! )]][ (! 6)][9]D(! 6! )[8(!4 /***** P#CG)][0(!!")[ 2(! 6 ! ,)[8(!) call MatchingService_ FilteringCriteria)][2(!L??!"*^^X)[ [4(! 6! )[8(! TemporaryConnection_ Active)][^4(!^R^!"^^R)[%!(! 6! ,)[8(!AITING FOR INSTRUCTIONS STATE *****/)]][9D(! 6! )[8(! /* Note: In Recommendation Q.1218 the processing of Connect, CollectInformation, Continue, SelectFacility, SelectRoute or AnalyseInformation in the WFI sta12_ _Instruction)][=(!13!")[i;14(! 62! d!)[815(!( ConnectTo_ Resource (invokeID,,CTRArg JYL!"L~)[(! 6!)][ 9(! 6FL! d)[8(! call AnyDPArmed)][9(!!")[8(! 6! false)][ 9(! 6! )[8(!< CallInformationReportPending OR ApplyChargingReportPending)][:(!F~F~!"~F)[8(! 6_! ,!)[8(!) Furnish_ Charging_ Information (FCIArg))][R(!xx!"xx)[ 14(! 6! )[8(! UserInteraction_ Active)][4416_ _Instruction)][=(!17!")[i;18(! 62! d!)[819(!( ConnectTo_ Resource (invokeID,,CTRArg ! d!)[8(!& EventReport_ BCSM (,ERBCSMArg) to CS)][ @(!x!"x)[?(! 6X! d!)[8(! Application_ Continue t -)]]]]]]]]][;6(! !" )[8(! 6! Continue)][)6(! 6R ! d!)[8(! Errror (invokeID,,IEArg) to CS)][M6(!~~!"~~)[D(! 6! d!)[8(!& Application_ End(termination,) to CS)][&E(!~r~!"~~r)[(!$Z)][3xA(! 6XF! d)[8(! Idle)]]]]]]]]][@(!"&??X!"X&)[@(! 6~X! d!)[8(!3 Furnish_ C]15[(!"2!")["2(! 6,! d!)[834(! EDP_N_Not_Last /* from CCF */)][ F[[L 6!Z)][3~>(! 62! d)[8(! Waiting_for_ _Instruction)]]]]]]]]]]]]][>(!"  &!"&)[f>(! 6,&! X)[%o;(! 62! d)[8(! ProcessConnect_ ToResource)][=(! !" )[6{;(! 62 ! d)[8(!! TssXXX)[(! 6! d!)[8(! Application_ Begin )][(!XX !"X X)[65(! 6 ! d)[8/)[6W>(! 62L! d)[8(! InitialTssf_ Active := FALSE)][`>(!!")[6Z>(! 62! d)[8(!# SET (NOW + Tssf_ _Duration, Tssf))][c>(!Fx!"xF)[(! 6x!Z)][3]>(! 62x! d)[8(! Waiting_for_ _Instruction)]]]]]]]]]]]]]]][>(!"!")[>(! 6&! d!)[8(! Continue (invokeID,))][>(!X !" X)[%>(! 6& ! d)[8(! Process_ Continue)][>(!!")[ >(! 6&! d)[8(! call AnyDPArmed)][9>(!<r)[@(! 6R@!)[8(! This page)]]]]]]]]]]][@(!~~~!"~~)[8(! 6! false)][(! 6~~!Z)][?l)[8(! 6'! TRUE)][69(! 6rr! d)[8(! termination :=true)][:(!!")[9(! 6r! d!)^X)[%r;(! 6x! d)[8(!+ Process_ Establish_ Temporary_ Connection)][=(! !" )[6~;(! 6x ! d)[8(!! Tssf_D!")[%?(! 62! d)[8(!7 ProcessRequest_ Notification_ ChargingEvent (RNCEArg))][&?(! R!"R )[6 ?(! 62 R! d)[8(!, EventNotification_ ChargingPending := TRUE)][)?(!!")[6x>(! 62! d)[8(! InitialTssf_ Active := FALSE)][!()[(! l! 22!(d)[?(! l)[?(! 6)[?(! 6d! )]][ ?(! 6)][3?(! 6X,! d)[8(! Monitorid! true)][(! 6~F!)][69(! 6! d)[8(! Reset(Tssf))][:(!~@~r!"~r~@)[69(! 6r! d)[8  !" )[8(! 6&! true)][(! 6 !)][)_()]]]]]]]]][96(! 6! )[8(!` /* The static DPs (SMF Service Fea'f_Duration := Tssf_Duration4)][=(!!")[6;(! 62! d)[8(!! UserInteraction_ Active := true)][=(!L!"Ld!)[8(!2 RequestReport_ BCSMEvent (invokeID,, RRBCSMEArg))][r>(!!")[%l>(! 6,! d)[8(!. ProcessRequest_ ReportBCSMEvent ([g7(! 62! d)[8(! Waiting_for_ _Instruction)][7(!&!"&)[m7(! 62&! d!)[8(!! ApplyCharging (invoke 99!" )[(! 69!)][)()]]]]]][3/(!"  &!"&)[0/(! 6~&! +ID,,ACArg))][7(!R!"R)[%s7(! 62R! d)[8(! ProcessApply_ Charging)][7(!!")[6v7%(!' ProcessFurnish_ Charging_ Information)][K(!"xx^^!"^x)[(! 6!)][)-()]]]]]]]]]]]})[8(! PICResume (DP!LegId) t +4(! 6! )[8(! UserInteraction_ Active)][.4(!!")[%4(! 6! ,)[8(! ProcessReset_ Timer)][X(BCSMArg) to CS)][HD(!r!"r)[D(! 6R! d!)[8(! Application_ Continue to CS)][QD(!:!":r(!"xx!"x)[(! 6!)][)()]]]]]]]]]]]]]}, Monitoring))]]][/(!!")[/(`(! Monitoring)]]]]]]]]][<>(!&x!"x&)[8(! 6! true)][)$>()]]]]]]]][h?(!"!"K(! InitialTssf_ Active := FALSE)][:(!~~!"~~)[(! 6~!Z)][39(! 6! d)[8(! Monitoring)]]]]]]][:(!ogingReport_ Pending := FALSE, CallInformationReport_ Pending := FALSE, EventNotificationCharging_ Pending := FALSE )][s=(!Fx!"xF)[%X=(! 6&x! d)[8(! InY()[(! l! 22!(M)[S(! l)[(! 6)[F"(! 6d! )]][ (! 6)][9C(! 6 ! )[8(! /***** MW()[(! l! 22!(x)[(! l)[(! 6)["(! 6d! )]][ (! 6)][3>(! 62! d)[8(! Waiting_- 99!" )[(! 69!)][)()]]]]]]]['(! 6! d)[8(! TDPN)]['(!"RR!"Hr)[6^=(! 6&! d)[8(!# SET (NOW + Tssf_ _Duration, Tssf))][=(!:!":)[(! 6:!Z)][3a=(! 6&:! 7(!R!"R)[8(! 6! false)][(! 6R!Z)][9(! 6@R! d)[8(! SEND_ ERROR)]]]]]]]]]]}_Duration, Tssf)>(!L~!"~L)[6{>(! 62~! d)[8(!# SET (NOW + Tssf_ _Duration, Tssf))][>(!!")[(!(! Application_ Active)][A(! !" )[8(! 6! TRUE)][6oA(! 6! d)[8(! termination :=true)][A(!L)[62(! 6R~! d)[8(! ApplicationActive := TRUE)][2(!!")[ D(! 6R! d)[8(!, 'IDP or DP SpecificU 6~!Z)][3D(! 6! d)[8(! Idle)]]]]]]][)E(!RFR!"RRF)[8(! 6k_! FALSE)][(! 6R!Z)(! 62! d)[8(!& ApplyCharging_ ReportPending := TRUE)][7(!L~!"~L)[6y7(! 62~! d)[8(! InitialTssf_ Active := FALS!")[l;(! 6x! d!)[8(!5 Establish_ Temporary_ Connection (invokeID,,ETCArg))][;(!X!" (! Cancel (CArg))][(!xRx!"xxR)[ 4(! 6! )[8(! UserInteraction_ Active)][4(!xLx~!"x~(xL)[%(! 6~! ,)[8(! Process_ Cancel)][(!xxF!"xFx)[6(! 6F! ,)[8(! 'Relay Message To SRF')][!3)]]]]]]]]]]]]]]]]]]]]]]]}()]]]]]]]]20}n)][=(!"3321L!"L)[3(! 63!)][)u;()]] a$&][2(!!")[)3()]]]]]]]]]}(!F ProcessEventReportBCSM (DP!LegId,DP!bcsmEvent, ServiceKey,ERBCSMArg))][+(!^^!"^^)[%cd!)[8(! virtual DPDisconnect (DP))][6/(!!")[6r/(! 6~! d)[8(! LegIdTable (DP!LegId) := False)][6(!"[8(! Waiting_for_ _Instruction)]]]]]]]]]]]]][o(!"XX L L&!"L&X)[Z(! 6&! ,!)[8(!& Send_ Charging_ Information (SCIArfor_ _Instruction)][,?(!&!"&)[?(! 62&! d!)[8(!8 RequestNotification_ ChargingEvent (invokeID,,RNCEArg))][#?(! ! d)[8(! Idle)][ D(!@L@!"L@@)[D(! 6L!)[8(!M Transition necessary to enable the generation of test cases using Autolink.)]B(! lastPrimitive:= Begin)][5(!XX!"XX)[6(! 6! d)[8(! application_ Active := true)][ (!XXL!"XLMd!)[8(!* InitiateCall_ Attempt (invokeID,,icaArg))][ (!RR !"R R)[6`/(! 6 ! d)[8(!; LegIdTable(icaArg! legToBeCreated! sendi1ngSideID) := True)][ f/(!RR!"RR)[c/(! 6 !)[8(!+ The SSF maintains a list of valid LegIds)]]][0(!RR!"R2R)[%(! 6! d)[8(!' ProcessInitiate_ CallAttempt (icaArg))][(!RRL!"RLR)[6(! 6L! d)[8(!" Ts3sf_Duration := Tssf_Duration2)][(!RR!"RR)[6(! 6! d)[8(!# SET (NOW + Tssf_ _Duration, Tssf))][(!RFRx!"R4xRF)[6D(! 6x! d)[8(! applicationActive:= true)][D(!RR!"RR)[(! 6R!Z)][3(! 6! j(! 69! true)][)2()]]]][2(! !" )[8(! 6! false)][62(! 6R ! d)[8(! SFEncountered := false)*()[w(!GSDL)]}d)[8(! 'ProcessTDPR' )][ F(!!")[%(! 6!)[8(!M Collect and verify parameters for sending an Initll).)]]][3(! !" )[ 4(! 6^ ! d)[8(! Application_ Active)][4(!!")[8(! )[6u;(! 6xL! d)[8(! InitialTssf_ Active := FALSE)][=(!!")[6;(! 6x! d)[8(!# SET (N9OW + Tssf_ _Duration, Tssf))][=(!Fx!"xF)[(! 6x!Z)][3;(! 6xx! d)[8(! Waiting_for_ _Instruction)]]]]]]]]]]]]]]][=(F!"FL)[8(! 6! false)][((! 6xF! d!)[8(! PICResume (DP!LegId) to CS)][((!!"= call IsDPArmed (DP!LegId,DP!bcsmEvent))][D(!R!"R)[8(! 6! true)][ C(! 6 R! ,)[8(!9 call DPArmed (DP!LegId,DP!bcsmEvent,)[6C(! 6R! d)[8(!# 'LegIdTable (DP!LegId) := False')][D(!&X!"X&)[ C(! 6 X! ,)[8(!(;)[(! 6!Z)][3((! 6x! d)[8(! Idle)]]]]][((!F!"F)[8(! 6_! true)][>(! 6!Z)][((! 6R! d)[8(! SFand_ ACG)][ @(!L!"L)[@(! 6L!)[8(! Next page.)]]]]]]][?*(!!")[8(! 6! true)][~D(! 6^! d!)[8(! Application_ Begin to CS)][D(!Fx!"@xF)[%+(! 6^x! d)[8(!= ProcessInitialDP (DP!LegId,DP!bcsmEvent, ServiceKey,IDPArg))][.(!!")['(! 6^A! d!)[8(! InitialDP (,IDPArg) to CS)][5(!r!"r)[64(! 6^! d)[8(! termination :=true)][4(!z]][D(!r!"r)[D(! 6R! d!)[8(! *)][D(!:!":)[(! 6:!ent, ServiceKey,ERBCSMArg))][~)(!  !"  )[{)(! 6! d!)[8(!& EventReport_ BCSM (,ERBCSMArg) to CS)][5(! F x!"V20(! l! 22!(21)[(! l)[(! 622)[!(! 6d! 3][ (! 6)]]]})[ ()[(! l! 22!(9)[+(! l)[+(! 6)[+(! 6d! )]][ +(! 6 )][9+(! 6! )[8(!0 /* IN Cw&X)[%B(! 6! d)[8(!. ProcessRequest_ ReportBCSMEvent (RRBCSMEArg))][B(!&& !"& &)[ B(! 6 ! d)[8e specification. */)]][3}(! 6^! d)[8(! Idle)][ @(!&X!"X&)[@(! 6X!)[8(! TDP processing.)]]][(!_! 6!Z)][)?()]]]]]]]]]]]}]})][3?(! 6x! d)[8(! Idle)]]]]][?(!!")[8(! 6! false)][5P PROCESSING *****/)]][9(! 6L,! )[8(! /* The detection point processing is part of the SSF because there is no concept of concurrent processing between the Dp processing and the SSF and because it simplifies thG()[(! l! 22!(x)[C(! l)[C(! 6)[C(! 6d! )]][ C(! 6)][3C(! 6! d)[8(!' Waiting_)[/?(! 6L! d!)[8(!+ Disconnect_ ForwardConnection (invokeID,))][M?(!X!"X)[ 2?(! 6! ,)[8(!R)[6@(! 6^! d)[8(!& ApplyCharging_ ReportPending := true)][A(!F!"F)[(! 6F!Z)][3A(! 6^F! +X)[(! 6XL!Z)][3(! 6L! d)[8(! -)]]]]]]]]][(!"XXXqRqR!"RXX)[(! 6! 0 ! d)[(! 69! IsDP_ Armed)][ $(!^RR!"R^R)[ $(! 6 !)[8(!M Check if the Event is armed for the specified LegId)][)2()]]]]]]]]]]]]]]]]]]]}(!L!"L)[0(! 6L!)[8(!, Spontaneous transition, can occur any time)]]][.(! !")CLARATION OF OPERATIONS ****/)]][9V(! 6^! )[8(! /* Event List Procedures */)]][$ (! 6! d!)[(! 6! virtual Initialise_ DPTable)][ $(!Q^&&!"&^&)[#(! 6!)[8(!: Initialise the Event Table for each LegId and ServiceKey)]]]][$B/(! 6L! d)[(! 6 ! RExist_ Leg)][ M0(!&F&!"F&&)[J0(! 6F!)[8(!< Predicate used to determine if a given LegID exist or not.)]]]][$(! 6! d)[Active := TRUE)][#(!x!"x)[4(! 6,! d!)[8(! ApplicationBegin to CV)][#(!@!"@SSF is invoked in Waiting For Instruction state for SCF Initiated Call Attempts. For this scenario there are no static DPs armed. */)]][2\(! 6! d)[8(! virtual)][b(!  &!" operations supported?')][D(!x!"x)[8(! 6! 'IDP')][%2(! 6R! d)[8(!> ProcessInitialDP (DP!LegId, DP!bcsmEvent, ServiceKey,J x F)[5(! 6x! d!)[8(! Application_ Continue to CS)][5(!  !"  )[(! 6 !Z)][`)?ONITORING STATE *****/)]][3@(! 6^! d)[8(! Monitoring)][@(!&X!"X&)[@(! 6^X! d!)[8(!# Apply_ Chfor_ _Instruction)][3(!^^!"^^)[(! 6! ,!)[8(!0 Request_ Notification_ ChargingEvent (RNCEArg))][<(!^X^!"itialise_ DPTable)][y=(!!")[6[=(! 6&! d)[8(! InitialTssf_ Active := FALSE)][|=(!r!"~L)[=C(! 6~~! d!)[8(! PICResume (DP!LegId) to CS)][C(!!")[6FC(! 6~! d)[82)[8(! None)][ 0(!22L!"L4)[0(! 6L!)[87(!, Spontaneous transition, can occur any a>D8 2(! 6L ! d)[8(! SFEncountered := true)][2(!"!")[(! 6!)][ 3(! 6R! dharging_ Information (invokeID,,FCIArg))][@(!!")[%@(! 6~! d)[8(!) Process_ Furnish_ Charging_ Information)][@(!RF!"S(! 6F!Z)][3uA(! 6F! d)[8(! Idle)]]]]]]][A(!F!"F)[8(! 6! FALSE)][(! 6F!&!"&)[(! 6^&! d!)[8(! DP (DP))][)(!!")[6K/(! 6^! `d)[8(! LegIdTable (DP!LegId) := True)][6(! !" )[ (! 6,! ,)[8(!9 call DPArmed (DP!LegId,DP!bcsmEvent, notifyAndContinue))][h()[(! l! 22!(d)[0(! l)[ 0(! 6)[#0(! 6d! )]][ &0(! 6)][9)0(! 6X! )[8(!# /**** VA()[(! l! 22!(c)[h(! 6d! x)[(! 6})[(! 6! )]][ (! 6})][AV(!  !)[c(! 6'! CS)][`(! )][.W(! )[8(! 6Y! (CS1_SSF_Out))]][(! 6 !)][.X(! )[8(! 6'&! (CS1_SSF_In))]][d(! 6 !)]][90(! 6&! )[8(!# /**** DATA TYPE DEFINITIONS ****/)]][9E/(! 6&! )[8(! /* The SSF-FSM maintains information about the leg IDs managed bye this SSF-FSM. */ NEWTYPE LegIdTableType ARRAY(LegType, Boolean) ENDNEWTYPE; NEWTYPE DialogPrimitive LITERALS Begin, Continue, End, Abort; ENDNEWTYPE;)]]]]}M event type and the monitor mode. */ NEWTYPE EventTableType ARRAY(LegType,EventRec(!4zE!5!7)[!(! 1!!3)[!(! 2!!3)[!(! 3!!3)[!(! 4!!3)[!(! 5!!3)[!g(! 6!!3)[!(! 7!!3)[!(! 8!!3)[! (! 9!!3)[! (! 10!!3)[! (! 11!!3)[!h (! 12!!3)[! (! 13!!3)[!(! 14!!3)[!(! 15!!3)[!(! 16!!3)[!(! 17!!3i)[!(! 18!!3)[!(! 19!!3)[!(! 20!!3)[!(! 21!!3)[!(! 22!!3)[!(! 23!) d)[8(! Waiting_For_ _Instruction)]]]]]]]]]]]]]]]]]]}l:)[(! 6l!Z)][3(! 6 l! d)[8(! Waiting_For_ _Instruction)]]]]]]]]]]]]]]]]]]]]}DMfalse, suspendedLegID LegType := leg2, /* Used with Continue */ /* Signal Parameter Declarations */ legIdTable LegIdTableType, serviceKey ServiceKey;)]]]]}]}]]]]]]]]]]]]]]]]]]]}3)]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]}3)]]]]]]]]]]]]]]!% ApplyCharging_ ReportPending (true))][,(!F!"F)[6!5(! 6^F! d)[8(! termination:=false)][$5(!!"I$(! 6^! d!)[8(! DPTMidCall(LegId))][$(!l!"l)[6$(! 6^! d)[8(! EventTypeBCSM := tMidCall)][DP Specific')][%D(! 6~! d)[8(!9 ProcessDPSpecific (DP!LegId, DP!bcsmEvent, ServiceKey) )][D(!"!")[(! 6!Ot_ Information (invokeID,,CIArg))][=(!~~R!"~R~)[%=(! 6R! d)[8(!' Process_ Collect_ Information (CIArg))][>(!"~~()[(! l! 22!(C)[6(! l)[6(! 6)[6(! 6d! )]][ 6(! 6)][9`D(! 6! )[8(!* /***** SxrF)[(! 6F_!)][) ()]]]]]]][3$(! 62r! d)[8(! Idle)][$(!!")[$(! 62! ()[(! l! 22!(P)['(! l)[(! 6)["(! 6d! d)]][ (! 6 )][3 (! 6^,! d)[8(! Idle)][s (!!")[ (! 6^! d!)[8(! DPO_ Answer(LegId))][ (!&X!"X&)[6 (! t6^X! d)[8(! EventTypeBCSM := oAnswer)][ (!!")[(! 6!Z)][ (! 6^! d)[8(! I1)]]]u]]]][ (!"!")[ (! 6! d!)[8(! DPODisconnect (LegId))][ (!&X!"Xv&)[6 (! 6X! d)[8(! EventTypeBCSM := oDisconnect)][ (!"!")[(! 6!)][) ()]]]]]][w (!"!")[ (! 6! d!)[8(! DPOMid_ Call(LegId))][ (!&X!"X&)x[6 (! 6X! d)[8(! EventTypeBCSM := oMidCall)][ (!"!")[(! 6!)][) ()]]]]]]["(!"y!")["(! 6! d!)[8(! DPONoAnswer (LegId))]["(!&X!"X&)[6"(!z 6X! d)[8(! EventTypeBCSM := oNoAnswer)]["(!"!")[(! 6!)][) ()]]]]]]][3 (! 62!{ d)[8(! Idle)][ (!L!"L)[ (! 62L! d!)[8(!" DPOrigAttempt_ Authorised(LegId))][ (!|!")[6 (! 62! d)[8(!( EventTypeBCSM := origAttemptAuthorised)][!(!Fx!"xF)[(! 6x!Z})][ (! 62x! d)[8(! I1)]]]]]]][!(!"33L!"L)[ (! 6^L! d!)[8(!, DPOrigAttempt_ Aut~horised_ DigByDig(LegId))][ (!!")[6 (! 6^! d)[8(!2 EventTypeBCSM := origAttempt_ AuthorisedDigByDig)][!(!"F__x!"xF)[(! 6_!)][) ()]]]]]][!(!"33L!"L)[ (! 6L! d!)[8(! DPRoute_ SelectFailure (LegId))][ (!!")[6 (! 6! d)[8(!% EventTypeBCSM := routeSelectFailure)][!(!"F__x!"xF)[(! 6_!)][) ()]]]]]][ !(!"3F3FL!"FL)[ (! 6L! d!)[8(! DPTAnswer(LegId))][ (!FF!"FF)[6 (! 6! d)[8(! EventTypeBCSM := tAnswer)][!(!"FFF__x!"xFF)[(! 6_!)][) ()]]]]]][#(!"3r3rL!"rL)["(! 6L! d!)[8(!()[(! l! 22!(P)['(! l)[(! 6)["(! 6d! d)]][ (! 6 )][3 !(! 6,,! d)[8(! Idle)][M!(!!")[&!(! 6,! d!)[8(! DPOAbandon (LegId))][S!(!&X!"X&)[6D!(! 6,X! d)[8(! EventTypeBCSM := OAbandon)]["(!!")["(! 6,! d!)[8(! PICResume(LegId) to CV)]["(!R!"R)[(! 6!Z)][3/!(! 6,! d)[8(! Idle)]]]]]]]]][e!(!"!")[8!(! 6! d!)[8(! DPTAbandon (LegId))][b!(!&X!"X&)[6G!(! 6X! d)[8(! EventTypeBCSM := TAbandon)]["(!!")["(! 6! d!)[8(! PICResume(LegId) to CV)]["(!"Rkk!"R)[(! 6k!)][)/!()]]]]]]]]]]]}]]]]]}! d!)[8(!) Disconnect (LegId) TO SELF /* to SSF */)][}!(!"Rk,k,!",Yr)[(! 6@!Z)][3=(! 6,@! d)[8(! Waiting_for_ _Instruction)]]]]]]]]]]]]]]][ #(!XX!"X)[8(! 63q! 'false')][^"(! 6! d!)[8(! PICResume(LegId) to CV)][ #(!~!"~)[#(! 6!)[8(!/ Call is terminated with appropriate treatment)]]][d"(! R!"R )[(! 6R!Z)][3a"(! 6R! d)[8(! Idle)]]]]]]]]]]]]]]}]]]]]]]]}]]][e(! )]]]]]]]]]]][4(!&R R !" L &R)[8(! 69k! false)][44(! 6! d)[8(! )]]]]]]]][33(! 6! 1! ,)[8(!$ ProcessSend_ Charging_ Information)][x#(!"~_&_&x!"&x~)[(! 6&_!)][)v()]]]]]]]]]]]}XX/(!& Application_ End(termination,) to CS)][C(!4!"4)[3jC(! 6,4! d)[8(! Idle)]]]]]]]]]]]]]]]]][C(!  !"TL    &!" &L)[(! 6  !)][)/()]]]]][r)(! 6! d)[8(! EDPN)][u)(!"X  !"4()[(! l! 22!(d)[50(! l)[80(! 6)[;0(! 6d! )]][ >0(! 6)][9D0(! 6X! )[8(! /**** TIMER DECLARATIONS ****/)]][9A0(! 6,! )[8(! /* The timer Tssf is used to prevent excessive call supsension time and to guard the association between the SSF and the SCF. */ TIMER Tssf; /* The timer Tssf can have four different values Tssf_Duration1 - Sending an InitialDP Tssf_Duration2 - Entering state Waiting_for_Instruction Tssf_Duration3 - Receiving an HoldCallInNetwork Tssf_Duration4 - Entering Waiting_for_End_of_User_Interaction or Waiting_for_End_of_Temporary_Connection */ /* The Tssf durations have been initialised to nominal values (1hr) */ DCL Tssf_Duration1 DURATION := 3600000, Tssf_Duration2 DURATION := 3600000, Tssf_Duration3 DURATION := 3600000, Tssf_Duration4 DURATION := 3600000, Tssf_Duration DURATION; /* The following flags are used to control the operation */ /* of the timer Tssf in Waiting_for_Instruction state */ DCL InitialTssfActive BOOLEAN := FALSE, InitialTssfReset BOOLEAN := FALSE;)]]]]})][)d%()]]]]]][!")[8(! 6! false)][(! 6!Z)][33>(! 6&! d)[8(! Idle)]]]]][B>(!x!"x)[8(! 6! true)][(! 6!)][6$>(! 6,x! d)[8(! Reset(Tssf))][K>(!!")[6*uration := Tssf_Duration4)][=(!!")[6;(! 6x! d)[8(!% TemporaryConnection_ Active := true)][=(!L!"L8! true)][6'>(! 6 ! d)[8(! termination :=true)][N>(!@!"@)[->(! 6 @! d!)[8(!& Appl!"R)[kE(! 6@! d!)[8(!' HoldCallInNetwork (invokeID,,hcinArg))][tE(!&X!"X&)[6qE5(! Next page)]]]]]]][V3(!*,!",)[8(! 6! false)][(! 6!)][)J3()]]]][3(!L!"L)[8(! 6e! true /* Blocked */)][ 3(! 6R! d)[8(! SF_ Encountered)][#3(!!")[8(! 6-! false)][3(! 6R! d!)[8(! PICResume (DP!LegId))][ )3(!L!"L)[&3(! 6L!)[8(!* With the ACG call treatment information.)]]][53(!"@!"@)[(! 6!)][32(! 6F! d)[8(! Idle)]]]]][3(!!")[8(! 6! true)][(! 6!)][2(! 6F! d!)[8(! PICResume (DP!LegId))][ROCESSING OF SSFSTOP, USED BY THE CS TO TERMINATE THE SSF-FSM *****/)]][3a(! 6^! d)[8(!' Monitoring, Waiting_for_ _Instruction)][(!X!"X)[dMENDING OF ERROR PRIMITIVE *****/)]][ 6(! 6R! d)[8(! SEND_ ERROR)][V6(!&!"&)[ #6(! 6R&! d)[8(! lastPrimi~ 23(!@!"@)[,3(! 6@!)[8(!) With the SF call treatment information.)]]][2(!@r!"r@)[6Y3(! 6Fr! d)[8(! 'Perform counting of call')][ b3(!@!"@)[_3(! 6@r!)[8(!L The call is counted if the treatment was performed succesfully by the CCF.)]]][\3(!!")[(! 6!Z)][)2()]]]]]]]]]]]][2(! !" )[85X)[ m4(! 6! )[8(! TemporaryConnection_ Active)][p4(!XX!"XX)[%](! 6! ,)[8(! ProcessApply_ ChaRIABLE DECLARATIONS ****/)]][920(! 62! )[8(! DCL /* IN CS-1 operation arguments. */ acArg ApplyChargingArg, acrArg ApplyChargingReportArg, ariArg AssistRequestInstructionsArg, aiArg AnalyseInformationA0(!&X!"X&)[40(! 6XX! d)[8(! )]]]]]]]]}struction, Monitoring))]]][/(!!")[/(tArg, etcArg EstablishTemporaryConnectionArg, encArg EventNotificationChargingArg, erBCSMArg EventReportBCSMArg, fciArg FurnishChargingInformationArg, hcinArg HoldCallInNetworkArg, idpArg InitialDPArg, icaArg InitiateCallAttemptArg, rcArg R ][E(!L&L&!"&L)[8(! 6?e! true)][(! 6&L!)][6D(! 6! d)[8(! Reset(Tssf))][E(!E)][7(!!")[6|7(! 62! d)[8(!# SET (NOW + Tssf_ _Duration, Tssf))][7(!x!"x)[)[3(! 6!)[8(!8 From the CS due to a call release (excl. ReleaseCall).)]]][3(! !"R )[43(! 6 ! d)[8(!rg, cirArg CallInformationReportArg, cirqArg CallInformationRequestArg, cArg CancelArg, ciArg CollectInformationArg, coArg ConnectArg, ctrArg ConnectToResourceArg, ctArg ContinueWithArgumentArg, dfcArg DisconnectForwardConnectionWithArgumene, dp DPArg, invokeID InvokeID, termination Boolean, flagContinue Boolean, pic PICArg, cs PId, lastPrimitive DialogPrimitive, sfEncountered Boolean := false, userInteractionActive Boolean := false, temporaryConnectionActive Boolean := kZ)][3D(! 6R:! d)[8(! -)]]]]]]]]}(! 6R! d!)[8(! *)][D(!:!":)[(! 6:!U6L! d)[8(!& ApplyCharging_ ReportPending (false))][Y?(!L~!"~L)[>?(! 6L~! d!)[8(! Application_ Continue tk?(! 6&! d!)[8(! Reset_ Timer (invokeID,,RTArg))][}?(!  !"  )[ n?(! 6! d)[8(! Initial_ TssfActo CS)][@(!@!"@)[(! 6@!Z)][?(! 6X@! d)[8(! EDPN)][ @(! rRr!"Rrr   !" )[8(! 6X! FALSE)][(! 6 !)][)w?()]]]]]][>(!"  &!"&)[i$(!"4!"4)[(! 6!)][)$()]]]]]][$(!"!")[$(! 6>(! 6~&! d!)[8(!. SendCharging_ Information (invokeID,,SCIArg))][u>(!!")[%o>(! 6~! d)[8(!$ Procarging)][#(!X~X!"XX~)[6c(! 6! ,)[8(!& ApplyCharging_ ReportPending := TRUE)][~(!XFXx!"XxXFv lastPrimitive:=End)][~5(!!")[6(! 6F! d)[8(! ApplicationActive := false)][(!~!"g! )[8(!z DCL eventTable EventTableType, applicationActive Boolean := false, applyChargingReportPending Boolean := false, callInformationReportPending Boolean := false, eventNotificationChargingPending Boolean := falst)][8(!!")[68(! 6,! d)[8(!( CallInformation_ ReportPending := TRUE)][8(!"Lee~!"~ ()[(! l! 22!(H)[(! l)[(! 6)[ "(! 6d! )]][ (! 6)][9@(! 6! )[8(! /***** I! d)[8(! termination :=true)][@(!xrx!"xxr)[R@(! 6! d!)[8(!& Application_ End(termination,) to CS)][@06! true)][%,(! 6^! d)[8(!' CallInformation_ ReportPending (true))][,(!~!"~)[%,(! 6^! d)[8(l~)[6C(! 6R! d)[8(!# SET (NOW + Tssf_ _Duration, Tssf))][3D(!F!"F)[%C(! 6 F! ,)[8 :)[(! 6!!)][)a=()]]]]]]]]]]]][>(!" ~ ~&!"~&)[=(! 6&! d!)[8(!( Colleco6! d)[8(!' CallInformation_ ReportPending (true))][-D(!~!"~)[%C(! 6! d)[8(!% ApplyCharging_ ReportPending (true)3(! 6! AnyDP_ Armed)][ $(!^!"^)[$(! 6!)[8(!; Check if any event is armed for all LegId and ServiceKey)]]]][$(! 6N (all ServiceKey values))]]]][$W,(! 6! d)[(! 6! Disarm_ DPs)][ ],(!^!"^)[Z,(! 6!)[8(!N Disarms all DPs up to and including the specified DP for the specified LegId)]]]][93(! 6L! )[8(! /* Management procedures. */)]][$3,(! 6L! d)[(! 6e! DP_ Armed)][ H,(!^~~!"~^~)[E,(! 6L!)[8(!e Generic procedure Check if the DP is armed for the specified mode and LegId (all ServiceKey Values))]]]][$,(! 6! ,)[(! 6~!$ Call_ Information_ Report_ Pending)][ -(!"F!"F)[-(! 6!)[8(!+ Send outstanding call information report)]]]][9oD(! 6F! )[8(!O /* Procedures for service management (involves interaction with the SSME). */)]][$,(! 6! ,)[(! 6T!" Apply_ Charging_ Report_ Pending)][ -(!"F!"F)[-(! 6!)[8(!+ Send outstanding call information report)]]]][$lD(! 6!  )[(! 6! Arm_ TDPs)]][$rD(! 6! )[(! 6!( Matching_ Service_ Filtering_ Criteria)]][$uD(! 6l! )[(! 6! Cive)][?(!   R!" R  )[8(! 699! TRUE)][ q?(! 6R! d)[8(! Initial_ TssfReset)][?(!  !" &! d)[8(! UserInteraction_ Active)][j=(!L!"L)[8(! 6e! false)][6O=(! 6! ,)[8(!~ ApplyChar! d!)[8(! DPTNoAnswer (LegId))][$(!l!"l)[6$(! 6! d)[8(! EventTypeBCSM := tNoAnswer)][$(!"4!"4)[(! 6!)][)$()]]]]]][$(!"!")[$(! 6!  d!)[8(!* DPTermination_ AttemptAuthorised (LegId))][$(!l!"l)[6$(! 6! d)[8(!/ EventTypeBCSM := terminationAttemptAuthorised)][$(!"4!"4)[(! 6!)][)$()]]]]]]]]]}!")[$(! 6! d!)[8(!* DPTermination_ AttemptAuthorised (LegId))][$(!l!"l)[6$(! 6! d)[8(!/ EventTypeBCSM := terminationAttemptAuthorised)][$(!"4!"4)[(! 6!)][)$()]]]]]]]]]}!")[$(! 6! d!)[8()[(! l! 22!(Z)[2(! l)[2(! 6)[2(! 6d! )]][ 2(! 6 )][P3(! 6R! d)[8(! TDPR)][S3(!&!"&)[62(! 6R&! d)[8(!" Tssf_Duration := Tssf_Duration1)][2(!!")[62(! 6R! d)[8(!! SET (NOW +Tssf_ _Duration,Tssf))][2(! R!"R )[62(! 6RR! d)[8(!6 InitialTssfActive := TRUE, InitialTssfReset := FALSE)][2(!!")[D(! 6R! d!)[8(! Application_ Begin to CS)][D(!L~!"~#)[%(! 6! d!)[8(! DPTMidCall(LegId))][&(!:!":)[6%(! 6:! d)[8(! EventTypeBCSM := tMidCall)][$&(!"!")[(! 6!)][)%()]]]]]][&(!"r  !" r)[%(! 6! d!)[8(! DPTNoAnswer (LegId))][&(!  :!" : )[6%(! 6:! d)[8(! EventTypeBCSM := tNoAnswer)]['&(!"  !" )[(! 6!)][)%()]]]]]][&(!"rLL!"Lr)[%(! 6! d!)[8(!* DPTermination_ AttemptAuthorised (LegId))][&(!LL:!"L:L)[6%(! 6:! d)[8(!/ EventTypeBCSM := terminationAttemptAuthorised)][*&(!"LL!"L)[(! 6 !)][)%()]]]]]]]]]}-------------------------------------------------------------------------------------