------------------------SDT2 CUSF_FSM--------------------------------------------------------------------------------------------------------------------------------------------------------ObjectName----------------------------------------ObjectType----------------------------------------!%&()LinkEndpoints--------------------------------!%()HeadingText----------------------------------- CUSF_FSM-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------15-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------()[8(! Virtual Process Type CUSF_FSM)]}-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------5()[w(!GSDL)]}-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------()[(! ! !(P)[/(! )[2(! 6)[5(! 6d! )]][ 8(! 6)][9(! 6 d! )[8(!5 DCL legI!%()HeadingText-----------------------------------!%()PageOrder-------------------------------------1------------------------------------------------11------------------------------------------------ r!%&()LinkEndpoints--------------------------------10------------------------------------------------2-------------------------------------------------5------------------------------------------------- c"~Ed LegID_AType, serviceKey ServiceKey_AType;)]][9;(! 62! )[8(! /* Variable Declarations*/ DCL eventTable_A EventList_AType, eventTypeBCUSM EventTypeBCUSMType, ApplicationActive BOOLEAN:=False, InitialTcusfAct ive Boolean:= False, DP_A DP_AArg, PIA PIAArg;)]][9>(! 6! )[8(!Q /*Signal Parameter Declarations*/ DCL RRBCUSMEArg RequestReportBCUSMEventType;)]][9A(! 62&! )[8(! / * Timer Definitions */ /* The timer TCUSF is used to prevent excessive call suspension time and to guard the association between the CUSF and the SCF. */ TIMER Tcusf; /* The timer can have the following values Tcusf_Duration1 - Sending an Association T rigger Tcusf_Duration2 - Entering state Waiting_for_Instruction */ /* The Tcusf durations have been initialise to nomial values*/ DCL Tcusf_Duration1 DURATION:=100, Tcusf_Duration2 DURATION:=200, Tcusf_Duration DURATION; /* The following flags are used  to control the operation of the timer Fcusf in Waiting_for_Instruction state. */ DCL InitialTcusfActive BOOLEAN := False, InitialTssfReset BOOLEAN := False;)]][9(! 6,! )[8(! ARAAArg ActivateReceivedAndAutho risedArg, ARRArg AssociationReleaseRequestedArg, CRArg ComponentReceivedArg, IAArg InitiateAssociationArg, RAArg ReleaseAssociationArg, RRBCUSMEArg RequestReportBCUSMEventArg;)]]]]}-----------------------------------------------------------------()[(! ! 22!(d)[!(! )[$(! 6)['(! 6d! )]][ *(! 6)][98 (! 6! )[8(!, /* INAP Operation processing procedures */)]][$> (! 6! d)[(! 6!( ProcessActivate_ ReceivedAndAuthorised)]][$A (! 6! d)[(! 6!& ProcessAssociation_ ReleaseRequested)]][$D (! 6R! d)[(! 6k! ProcessComponent_ Received)]][$G (! 6! d)[(! 63! ProcessInitiate_ Association)]][$J (! 6! d)[(! 6! ProcessRelease_ Association)]][$M (! 6! d)[(! 6!" ProcessRequest_ ReportBCUSMEvent)]]]]}-------------------------------------------------------------()[(! ! !(d)[D(! )[G(! 6)[J(! 6d! )]][ M(! 6)][9P(! 6,d! )[8(! /* Event List Procedures */)]][$(! 6,! d)[(! 6E! Initialise_ DPTable_A)][ (!,&,!"&,,)[e(! 6&!! )[8(!l Initialise the Event List for each ServiceKey (assuming that for CS2 the LegID equals the controlling leg))]]]][$# (! 6,! d)[(! 6E! Arm_ Static_ DPs_A)][ ) (!&!"&)[& (! 6&!! )[8(!> Initialise the static DPs (SMF Service Feature Provisioning))]]]][$V(! 6,&! d)[(! 6EX! AnyDPArmed_A)][ n(!X&X!"&XX)[k(! 6&&!! )[8(!n Check if any event is armed for each ServiceKey (assuming that for CS2 the LegID equals the controlling leg))]]]][$\(! 6,! d)[(! 6E! IsDPArmed_A)][ z(!&!"&)[w(! 6&!! )[8(!n Check if the Event is armed for each ServiceKey (assuming that for CS2 the LegID equals the controlling leg))]]]][$, (! 6,R! d)[(! 6E! DisarmDPs_A)][ 2 (!&!"&)[/ (! 6&R!! )[8(!N Disarms all DPs up to and including the specified DP for the specified LegId)]]]][$5 (! 6,! d)[(! 6E! DPArmed_A)]][$b(! 6,~! d)[(! 6E! GetDPIndex_A)][ (!&!"&)[(! 6&~!! )[8(!2 Get the()[(! ! 22!(P)[h(! )[k(! 6)[n(! 6d! )]][ q(! 6)][2w(! 6! d)[8(! )][3-------------------------------------------------4-------------------------------------------------5-------------------------------------------------6------------------------------------------------- "6(!^!"^)[6(! 6! d)[8(! IH:=Parent)][ (!X!"X)[%(! 6X! d)[8(! InitialiseDPTable_A)][(!!")[ (! 6! d)[8(! SCFInitialised)][(!RL!"LR)[8(! 6k! false)][%(! 6L! d)[8(! ArmStaticDPs_A)][(!!")[(! 6!Z)][3 (! 6! d)[8(! Idle)]]]]][(!*^  !"^ )[8(! 6! true)][(! 6!)][)!()]]]]]]]]]]]}-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------()[(! ! 22!(P)[-(! )[0(! 6)[3(! 6d! )]][ 6(! 6)][9(! 6d! )[8(!k Activat#eReceivedAndAuthorisedArg, ARRArg AssociationReleaseRequestedArg, CRArg ComponentReceivedArg,)]][39(! 6! d)[8(! Idle)][r(!&&,!"&,&)[<(!$ 6,! d!)[8(! DP_A(DP_A))][(!&&!"&&)[ (! 6! d)[8(!@ call DPArmed_A (DP_A!legID,DP_A!bcusmEvent, not%ifyAndContinue))][(!&&&X!"&X&&)[8(! 6??! true)][ (! 6X! d)[8(! DP_A!bcusmEvent)][(! !"& )[8(! 6}!! ActivationReceivedAndAuthorised)][%(! 6d ! d)[8(!^ ProcessActivationReceived_ AndAuthorisedDP (DP_A!legId, DP_A!bcusmEvent, serviceKey,ARAAA'rg))][(!!")[N(! 6d! d!)[8(! ApplicationBegin to IH)][(!L~!"~L)[((! 6d~! d!)[8(!2 ActivationReceived_ AndAuthorised (ARAAArg) toIH)][(!"&&F!"&F)[(! 6&!)][W)(! 6F! d!)[8(! ApplicationEnd to IH)][(!&&!"&&)[(! 6&!Z)][(! 6! d)[8*(! TDPN)]]]]]]]]]]][(!&& !"& &)[8(! 6! AssociationReleaseRequested)][%(! 6 ! d)[8(!Y ProcessAssociationRelease_ Req+uestedDP (DP_A!legId, DP_A!bcusmEvent, serviceKey,ARRArg))][(!&&!"&&)[(! 6! d!)[8(! ApplicationBegin to IH)][(!&L,&~!"&~&L)[(! 6~! d!)[8(!- Association_ ReleaseRequested (ARRArg) toIH)][(!&&F!"&F&)[)W()-]]]]]]]][(! !" )[8(! 6k! ComponentReceived)][%(! 6R ! d)[8(!N ProcessComponent_ ReceivedDP (DP_A!legId, DP_A!bcu.smEvent, serviceKey,CRArg))][(!!")[(! 6R! d!)[8(! ApplicationBegin to IH)][(!L~!"~/L)[(! 6R~! d!)[8(!" Component_ Reveived (CRArg) toIH)][(!"&&F!"&F)[(! 6&!)0][)W()]]]]]]]]]][(!!")[8(! 6 ! false)][ (! 6L! d)[8(!; call DPArmed_A (DP_A!legID,DP_A!bcusmEvent, in1terrupted)))][(!!")[8(! 6! false)][(! 6x! d!)[8(! PIAResume (legID) to IH)][(!2R!"R)[(! 6!Z)][3(! 6x! d)[8(! Idle)]]]]][ (! !" )[8(! 36! true)][(! 6 !Z)][(! 6L ! d)[8(! TDPR)]]]]]]]]][(!"&&,!",&)[(! 6R,4! d!)[8(!) DPAssociaitonReleaseRequested (DP_AArg))][(!"&&!"&)[(! 6&!)][)()]]]]][B(! 56d,! d)[8(! TDPN)][(!"&&!"&)[(! 6&!)][)()]]]]]}-------------------------------------------------------()[(! ! 22!(d)[(! )[ (! 6)[#(! 6d! )]][ &(! 6)][)(! 6! d)[8(! TDPR)][7/(!&^&!"&&^)[6,(! 6! d)[8(!" Tcusf_Duration:= tcusf_Duration1)][5(!&&&!"&&&)[62(8! 6&! d)[8(!$ SET (NOW + Tcusf_ _Duration,Tcusf))][;(!&&!"&&)[68(! 6! d)[8(!3 ApplicationActive:=true, InitialT9cusfActive:=true)][w(!& &!"&& )[ >(! 6! d)[8(! DP_A!bcusmEvent)][\(!L!"L)[:8(! 6}!! ActivationReceivedAndAuthorised)][%A(! 6dL! d)[8(!] ProcessActivationReceive_ AndAuthorisedDP (DP_A!legId, DP_A!bcusmEvent, serviceKey,ARAAArg))][_(!;!")[D(! 6d! d!)[8(! ApplicationBegin to IH)][b(!x!"x)[G(! 6d! d!<)[8(!2 ActivationReceived_ AndAuthorised (ARAAArg) toIH)][}(!"@&@&r!"&r)[(! 6&@!)][3z(! 6r! d)[8=(! Waiting_for_ _Instruction)]]]]]]]]][k(!&&L!"&L&)[8(! 6?! AssociationReleaseRequested)][%J(! 6L! d)[8(!Y Proce>ssAssociationRelease_ RequestedDP (DP_A!legId, DP_A!bcusmEvent, serviceKey,ARRArg))][e(!&&!"&&)[M(! 6! d!)[8(! ApplicationBegin to IH)]?[h(!&x&!"&&x)[P(! 6! d!)[8(!- AssociationRelease_ Requested (ARRArg) toIH)][(!&&r!"&r@&)[(! 6&r!Z)][)z()]]]]]]]][t(!L!"L)[8(! 6! ComponentReceived)][%S(! 6RL! d)[8A(!N ProcessComponent_ ReceivedDP (DP_A!legId, DP_A!bcusmEvent, serviceKey,CRArg))][n(!!")[V(! 6R! d!)[8(! ApplicationBegiBn to IH)][q(!x!"x)[Y(! 6R! d!)[8(! ComponentReceived (CRArg) toIH)][(!"@&@&r!"&Cr)[(! 6&@!)][)z()]]]]]]]]]]]]]]]]]]]}---------------------------------------------------------------------------------------------------------------------------------------------------------------a()[(! ! !(P)[(! )[(! 6)[(! 6d! )]][ (! 6)][3(! 6 d! d)[8(!' Waiting_F6-------------------------------------------------7-------------------------------------------------8-------------------------------------------------9------------------------------------------------- 6DK\For_ _Instruction, Monitoring)][(!!")[(! 6 ! d!)[8(! Release_ Association (RAArg))][(!^!"G^)[%(! 6 ! d)[8(!% Process_ ReleaseAssociation (RAArg))][(!&!"&)[ (! 6 &! d)[8H(! Application_ Active)][(!!")[8(! 6! true)][(! 6 ! d!)[8(! ApplicationEnd to IH)][(!I R!"R )[(! 6R!Z)][3(! 6 R! d)[8(! Idle)]]]]][(!X~X~!"~X)[8J(! 6q! false)][(! 6~!Z)][3(! 6! d)[8(! Idle)]]]]]]]]]]]]}--------------------------------------------------------------------------------------------------()[(! ! !(P)[I(! )[L(! 6)[O(! 6d! )]][ R(! 6)][3U(! 6 d! d)[8(! Waiting_Lfor_ _Instruction)][[(!!")[X(! 6 ! d!)[8(!) RequestReport_ BCUSMEvent (RRBCUSMRArg))][d(!^!"M^)[%a(! 6 ! d)[8(!0 ProcessRequest_ ReportBCUSMEvent (RRBCUSMArg) )][(!&!"&)[6(! 6 &! d)[N8(! InitialTcusfActive:= FALSE)][(!!")[6g(! 6 ! d)[8(!" Set (NOW+ Tcusf_Duration, Tcusf))][p(! R!"OR )[(! 6R!Z)][3m(! 6 R! d)[8(! -)]]]]]]]]]]][v(!"~~!"~)[s(! P6! d!)[8(! SendComponent (SCArg))][(!~^~!"~~^)[%(! 6! d)[8(! ProcessSend_ Component (SCArg))][ Q(!!")[(! 6!)[8(! SendComponent to bcusm)]]][(!~~&!"~&~)[ y(! 6&R! d)[8(! call AnyDPArmed_A)][(!~~!"~~)[8(! 6! true)][6(! 6! d)[8(! Reset(Tcust))][S(!~ ~R!"~R~ )[6 (! 6R! d)[8(! InitialTcusfActive:= FALSE)][(!~~!"~~)[(! 6~T!Z)][3(! 6! d)[8(! Monitoring)]]]]]]][(!XxXx!"xX)[8(! 6q! false)][ (! 6! dU)[8(! ApplicationActive)][ (!x xR!"xRx )[8(! 69! false)][(! 6xR!Z)][3(! 6R! d)[8(!V Idle)]]][&(!rrR!"rR)[8(! 6! true)][(! 6rR!Z)][3)(! 6R! d)[8(! Waiting_for_ _InstrWuction)]]]]]]]]]]]][3(! 6,! d)[8(! Waiting_for_ _Instruction)][(!&!"&)[(! 6,&! d!)[8(! XTCUSF /* timer Expiry*/)][(!!")[(! 6,! d!)[8(! PIAResume (LegId))][(! R!"RY )[ (! 6,R! d)[8(! Application_ Active)][(!!")[8(! 6! true)][(! 6&! dZ!)[8(! ApplicationAbort to IH)][(!"L!"L)[(! 6!)][3(! 6,! d)[8(! Idle)[]]]]][(!!")[8(! 6! false)][(! 6!Z)][)()]]]]]]]]]]]}----------------------------------------------------------------------()[(! ! !(d)[(! )[(! 6)[(! 6d! )]][ (! 6)][3(! 6&d! d)[8(! Idle)][](!!")[(! 6&! d!)[8(! ApplicationBegin)][(!^!"^)[6(! ^6&! d)[8(! Application_ Active:= TRUE)][(!&!"&)[(! 6&!Z)][3(! 6&&! d)[8(! -)]]]]_]]][(!"!")[(! 6 ! d!)[8(! InitiateAssociation (IAArg))][(!^!"`^)[%(! 6 ! d)[8(!& ProcessInitiate_ Association (IAArg))][(!&!"&)[6(! 6 &! d)[8(!" Tcusaf_Duration:= Tcusf_Duration2)][(!!")[6(! 6 ! d)[8(! SET(NOW+ Tcusf_Duration,Tcusf))][(! R!"Rb )[(! 6R!Z)][3(! 6 R! d)[8(! Waiting_For_ _Instruction)]]]]]]]]]]]]]]}-----------------------------------------------------------------------------------------------()[(! ! !(d)[(! )[(! 6)[(! 6d! )]][ (! 6q)][3(! 6&! d)[8(!& Montorindg, Waiting_for_ _Instruction)][(!^!"^)[(! 6&! d!)[8(!( DPAssociationRelease_ Requested (DP_A))][(!&!"e&)[ (! 6&&! d)[8(!0 call IsDPArmed_A (DP_A!legId, DP_A!bcusmEvent))][(!!")[8(! 6! ftrue)][ (! 6&! d)[8(!A call DPArmed_A (DP_A!legID,DP_A!bcusmEvent, notifyAndContinue) )][ (!&R!"R&)[8(! 6! true)]g[%(! 62R! d)[8(!Y ProcessAssociationRelease_ RequestedDP (DP_A!legId, DP_A!bcusmEvent, serviceKey,ARRArg))]["(!!")[(! 62! h d!)[8(!- Association_ ReleaseRequested (ARRArg) toIH)][(!L~!"~L)[%(! 62~! d!)[8(! PIAResume (legID) toi IH)][((!!")[(! 62! d!)[8(! ApplicationEnd to IH)][.(!x!"x)[j(! 6!Z)][3+(! 62! d)[8(! Idle)]]]]]]]]]]][F(! R!"R )[8(! 69! false)][%(! 6&R!k d)[8(!X ProcessAssociationRelease_ RequesteDP (DP_A!legId, DP_A!bcusmEvent, serviceKey,ARRArg))][I(!!")[4(! 6&! d!)[8l(!. Association_ ReleasedRequested (ARRArg) toIH)][@(!L~!"~L)[6L(! 6&~! d)[8(!" SET (NOW + Tcusf_Duration,Tcusf))][U(!m!")[(! 6!Z)][3R(! 6&! d)[8(! Waiting_for_ _Instruction )]]]]]]]]]]][g(!X~X~R!"~RnX)[8(! 6q! false)][[(! 6R! d!)[8(! PIAResume (legID) to IH)][a(!~~!"~~)[X(! 6o! d!)[8(! ApplicationEnd to IH)][d(!~L~~!"~~~L)[(! 6~~!Z)][3^(! 6~! d)[8(! Idle)]]]]p]]]]]]]][3j(! 6&@! d)[8(! *)][p(!!")[m(! 6&! d!)[8(! CUSFStop)][v(!:ql!"l:)[4s(! 6&l! d)[8(! )]]]]]]]]}--------------------------------------------------------------------------------------------------------------------------------------z()[(! ! 22!(d)[y(! )[|(! 6)[(! 6d! )]][ (! 6q)][3(! 6! d)[8(!% Monitorisng, Waiting_for_Instruction)][(!X,X^!"X^X,)[(! 6^! d!)[8(! DP_A(DP_A))][(!XX!"XXt)[ (! 6! d)[8(!@ call DPArmed_A (DP_A!legID,DP_A!bcusmEvent, notifyAndContinue))][(!&&X!"X&)[8(! 6?! falseu)][(! 6X!Z)][(! 6LX! d)[8(! EDPR)]]][(!XXX!"XXX)[8(! 6qq! true)][ (! 6! v d)[8(! DP_A!bcusmEvent)][(!R!"R)[8(! 6!! ActivationReceivedAndAuthorised)][%(! 6R! d)[8(!w^ ProcessActivationReceived_ AndAuthorisedDP (DP_A!legId, DP_A!bcusmEvent, serviceKey,ARAAArg))][(!!")[(! 6! d!)[8(!2 ActivatixonReceived_ AndAuthorised (ARAAArg) toIH)][(!"Le&e&!"&L)[(! 6&e!)][(! 6! d)[8(! EDPN)]]]]]]][y(!XXR!"XRX)[8(! 6 ! ComponentReceived)][%(! 6R! d)[8(!N ProcessComponent_ ReceivedDP (DP_A!legId, DP_A!bcusmEvent, serviceKey,CRArgz))][(!XX!"XX)[(! 6! d!)[8(!" Component_ Reveived (CRArg) toIH)][(!"XLXe&e&!"&{XL)[(! 6&!Z)][)()]]]]]][(!2XX9999&&!"&X)[8(! 6RR! else)][(! 6&!|)][)()]]]]]]]]][(! 6^! d)[8(! EDPN)][(!"XX!"X)[(! 6X!)][)()]]]]]}------()[(! ! 22!(d)[(! )[(! 6)[(! 6d! )]][ (! 6q)][(! 6^,! d)[8(! EDPR)][11------------------------------------------------12------------------------------------------------13--------------------------------------------------------------------------------------------------- ----r}--------l(!!")[ W(! 6^! d)[8(!; call DPArmed_A (DP_A!legID,DP_A!bcusmEvent, interrupted)))][c(!&X!"X&)[8(! 6 ! false)][Z(! 6X! d!)[8(! PIAResume (legID) to IH)][i(!!")[ ~(! 6! d)[8(! call AnyDPArmed_A)][(!L  R!"RL )[8(! 6! false)][(! 6~R! d!)[8(! Application_ End to IH)][(!!")[(! 6!Z)][3(! 6~! d)[8(! Idle)]]]]][(!R!"R)[8(! 6k! true)][3`(! 6! d)[8(! Monitoring)]]]]]]][{(!&!"&)[8(! 6?! )][ (! 6^! d)[8(! DP_A!bcusmEvent)][3(!^ !" ^)[8(! 6!! ActivationReceivedAndAuthorised)][% (! 6 ! d)[8(![ ProcessActivateReceive_ AndAuthorisedDP (DP_A!legId, DP_A!bcusmEvent, serviceKey,ARAAArg))][<(!!")[(! 6! d!)[8(!1 ActivateReceived_ AndAuthorised (ARAAArg) to IH)][N(!"Lee~!"~L)[6o(! 6^~! d)[8(!" Tcusf_Duration:= tcusf_Duration1)][u(!!")[6r(! 6^! d)[8(!$ SET (NOW + Tcusf_ _Duration,Tcusf))][x(!x!"x)[(! 6!Z)][3$(! 6^! d)[8(! Waiting_for_ _Instruction)]]]]]]]]]]][9(!& !" &)[8(! 6! ComponentReceived)][%(! 6& ! d)[8(!N ProcessComponent_ ReceivedDP (DP_A!legId, DP_A!bcusmEvent, serviceKey,CRArg))][B(!!")[(! 6&! d!)[8(!! componentReceived (CrArg) to IH)][K(!"Lee~!"~L)[(! 6e!)][)o()]]]]]]]]]]]]]}------------------()[(! ! 22!(d)[(! )[(! 6)[(! 6d! )]][ (! 6q)][3(! 6! d)[8(! *)][(!"    &!"& )[(! 6&&! d!)[8(! Application_ Abort)][ (!!")[6(! 6&! d)[8(! applicationActive:= false)][ (! R!"R )[(! 6R!Z)][3 (! 6&R! d)[8(! Idle)]]]]]]][ (!"    &!"& )[ (! 6R&! d!)[8(! Application_ End)][  (!XLX!"LXXX)[ (! 6L&!)[8(!A The ApplicationEnd is processed before the operation components)]]][ (!!")[6 (! 6R! d)[8(! applicationActive:= false)][ (! R!"R )[(! 6R!Z)][3 (! 6RR! d)[8(! -)]]]]]]]][3(! 6d! d)[8(! Monitoring)][(!&X!"X&)[(! 6dX! d!)[8(!) RequestReport_ BCUSMEvent (RRBCUSMRArg))][(!!")[%(! 6d! d)[8(!0 ProcessRequest_ ReportBCUSMEvent (RRBCUSMArg) )][(!R!"R)[ (! 6d! d)[8(! call AnyDPArmed_A)][(!!")[8(! 6! false)][(! 6d! d!)[8(! Application_ End to IH)][(!~!"~)[(! 6!Z)][3(! 6d! d)[8(! Idle)]]]]][(!,!",)[8(! 6 ! true)][(! 6!Z)][3(! 6! d)[8(! Monitoring)]]]]]]]]]][3(! 6! d)[8(! Idle)]]]]}-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------(!4P !5!7)[!(! 1!!3)[!(! 2!!3)[!(! 3!!3)[!(! 4!!3)[!(! 5!!3)[!(! 6!!3)[!(! 7!!3)[!(! 8!!3)[! (! 9!!3)[! (! 10!!3)[! (! 11!!3)[! (! 12!!3)[! (! 13!!3)]]]]]]]]]]]]]}------------------------------------------------------------------------------------------------------------------------------------------------------------d event index for the specified event type)]]]]]]}---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------1