/*************************************************************************** rrc_ue.c ------------------- begin : Nov 10, 2001 copyright : (C) 2001, 2010 by Eurecom author : Michelle.Wetterwald@eurecom.fr ************************************************************************** This file contains the code generated by the Esterel engine IT MUST NOT BE MODIFIED MANUALLY ***************************************************************************/ /******************** //OpenAir definitions ********************/ #include "LAYER2/MAC/extern.h" #include "UTIL/MEM/mem_block.h" //----------------------------------------------------------------------------- #include "rrc_ue_vars.h" //----------------------------------------------------------------------------- /* "SAXORT STRL Compiler version 3.1.6n compiled on Fri_Oct_18_15:50:53_CEST_2002" */ /* automaton kernel code*/ //#include //#include //#include #include "rrc_ue.h" #define SIZEOFINT 32 #define B_SET_VECTOR_MASK(i) ((unsigned int)1 << i) #define B_RES_VECTOR_MASK(i) (~((unsigned int)1 << i)) #define BIT_SET(b_vector, bit_number) (b_vector)[(bit_number) / SIZEOFINT] |= B_SET_VECTOR_MASK((bit_number) % SIZEOFINT) #define BIT_RESET(b_vector, bit_number) (b_vector)[(bit_number) / SIZEOFINT] &= ~B_SET_VECTOR_MASK((bit_number) % SIZEOFINT) #define IS_ON(point) (_On[point / SIZEOFINT] & B_SET_VECTOR_MASK(point % SIZEOFINT)) #define IS_PAUSE_ON(point) (_Pause[point / SIZEOFINT] & B_SET_VECTOR_MASK(point % SIZEOFINT)) #define HALT_POINT_NUM 43 #define HALT_POINT_VECTOR_SIZE ((HALT_POINT_NUM-1)/(int)SIZEOFINT)+1 static unsigned int _On[HALT_POINT_VECTOR_SIZE]; static unsigned int _Pause[HALT_POINT_VECTOR_SIZE]; #define SIGNAL_NUM 55 #define SIGNAL_VECTOR_SIZE 2 #define SIGNAL_WITH_PRE_VECTOR_SIZE 1 #define GLOBALMAXPRELEVEL 2 static unsigned int _Sig[SIGNAL_VECTOR_SIZE]; static unsigned int _SigPreTab[GLOBALMAXPRELEVEL][SIGNAL_WITH_PRE_VECTOR_SIZE]; static unsigned int *_SigPre_0 = _SigPreTab[0]; static unsigned int *_SigPre_1 = _SigPreTab[1]; #define EMIT(vector, signal) (vector)[signal / SIZEOFINT] |= B_SET_VECTOR_MASK(signal % SIZEOFINT) #define CLEAR_SIGNAL(vector, signal) (vector)[signal / SIZEOFINT] &= B_RES_VECTOR_MASK(signal % SIZEOFINT) #define IS_SIGNAL(vector, signal) ((vector)[signal / SIZEOFINT] & B_SET_VECTOR_MASK(signal % SIZEOFINT)) #define GUARD_NUM 13 #define GUARD_VECTOR_SIZE ((GUARD_NUM-1)/(int)SIZEOFINT)+1 static unsigned int _Guard[GUARD_VECTOR_SIZE]; #define IS_GUARD(guard) (_Guard[guard / SIZEOFINT] & B_SET_VECTOR_MASK(guard % SIZEOFINT)) #define SET_GUARD(guard) _Guard[guard / SIZEOFINT] |= B_SET_VECTOR_MASK(guard % SIZEOFINT) #define RESET_GUARD(guard) _Guard[guard / SIZEOFINT] &= B_RES_VECTOR_MASK(guard % SIZEOFINT) #ifndef _PREDEFINED_TYPES # define _PREDEFINED_TYPES typedef int boolean; typedef int integer; # ifndef STRLEN # define STRLEN 81 # endif typedef char *string; # define _integer(x, y) (*x) = (y) # define _boolean(x, y) (*x) = (y) # define _float(x, y) (*x) = (y) # define _double(x, y) (*x) = (y) # define _string(x, y) strcpy((*x), (y)) # define _eq_integer(x, y) ((x) == (y)) # define _eq_boolean(x, y) ((x) == (y)) # define _eq_float(x, y) ((x) == (y)) # define _eq_double(x, y) ((x) == (y)) # define _eq_string(x, y) (!strcmp((x), (y))) # define _ne_integer(x, y) ((x) != (y)) # define _ne_boolean(x, y) ((x) != (y)) # define _ne_float(x, y) ((x) != (y)) # define _ne_double(x, y) ((x) != (y)) # define _ne_string(x, y) (strcmp((x), (y))) # define _cond_integer(x, y, z) ((x)?(y):(z)) # define _cond_boolean(x, y, z) ((x)?(y):(z)) # define _cond_float(x, y, z) ((x)?(y):(z)) # define _cond_double(x, y, z) ((x)?(y):(z)) # define _cond_string(x, y, z) ((x)?(y):(z)) # define _string_to_text(x) (x) # define _text_to_string(x, y) (strcpy((*x), (y))) # define _plus_(x, y) (x) + (y) # define _minus_(x, y) (x) - (y) # define _times_(x, y) (x) * (y) # define _div_(x, y) (x) / (y) # define _mod_(x, y) (x) % (y) # define _not_(x) !(x) # define _or_(x, y) (x) || (y) # define _and_(x, y) (x) && (y) # define _equal_(x, y) (x) == (y) # define _diff_(x, y) (x) != (y) # define _sup_(x, y) (x) > (y) # define _supequal_(x, y) (x) >= (y) # define _inf_(x, y) (x) < (y) # define _infequal_(x, y) (x) <= (y) #endif #ifndef SUCCESS extern integer SUCCESS; #endif #ifndef FAILURE extern integer FAILURE; #endif #ifndef ALREADY_C extern integer ALREADY_C; #endif #ifndef CELL_FACH extern integer CELL_FACH; #endif #ifndef CELL_DCH extern integer CELL_DCH; #endif #ifndef CELL_PCH extern integer CELL_PCH; #endif #ifndef RRC_CONN_REQ extern integer RRC_CONN_REQ; #endif #ifndef RRC_CONN_SETUP extern integer RRC_CONN_SETUP; #endif #ifndef RRC_CONN_SETUP_COMPLETE extern integer RRC_CONN_SETUP_COMPLETE; #endif #ifndef RRC_CONN_REL_COMPLETE extern integer RRC_CONN_REL_COMPLETE; #endif #ifndef RRC_CONN_RELEASE extern integer RRC_CONN_RELEASE; #endif #ifndef IDLE extern integer IDLE; #endif #ifndef N300 extern integer N300; #endif #ifndef N308 extern integer N308; #endif static boolean Var__ThisIsTheEnd__157; #define __Sig_sc_in_Connection_Management_DOT_Idle_117 0 #define __Sig_sc_in_Connection_Management_DOT_Connected_DOT_CELL_DCH_118 0 #define __Sig_sc_in_Connection_Management_DOT_Connected_DOT_CELL_FACH_119 1 #define __Sig_sc_go_5_CELL_DCH_138 1 static integer Var_msg_142; #define __Sig_sc_go_24_ConnReq_sent_141 2 static integer Var_msg_143; #define __Sig_sc_go_18_ConnSU_fail2_145 3 #define __Sig_sc_go_14_Timer_started_153 4 static integer Sig_max_value_151; #define __Sig_sc_go_14_Timer_started_156 5 static integer Sig_max_value_154; #define __Sig_sc_go_41_ConnRel_send_146 6 #define __Sig_sc_go_40_ConnRel_proc_148 7 static integer Var_msg_147; static integer Var_msg_149; static integer Var_msg_150; #define __Sig_Conn_Setup_End_136 8 static int Sig_V308_135_Pre0 = 0; static int Sig_V308_135_Pre1 = 0; static integer Sig_V308_135[2]; #define __Sig_start_T308_133 9 static integer Sig_start_T308_133; static int Sig_V300_132_Pre0 = 0; static int Sig_V300_132_Pre1 = 0; static integer Sig_V300_132[2]; #define __Sig_inc_V300_131 10 #define __Sig_start_T300_130 11 static integer Sig_start_T300_130; #define __Sig_Conn_Rel_Compl_Repeat_129 12 #define __Sig_Conn_Rel_Compl_Stop_128 13 #define __Sig_Conn_Request_Repeat_127 14 #define __Sig_Conn_Request_Stop_126 15 #define __Sig_Waiting_Connection_124 16 #define __Sig_Go_state_CELL_FACH_122 17 #define __Sig_Go_state_CELL_DCH_121 18 #define __Sig_Go_Idle_120 19 #define __Out_O_wait_116 20 static integer Out_O_wait_116; #define __Out_O_UpdateSI_852_115 21 #define __Out_O_startT308_114 22 #define __Out_O_stopT300_113 23 #define __Out_O_startT300_112 24 #define __Out_O_NAS_CONN_LOSS_IND_111 25 #define __Out_O_NAS_CONN_RELEASE_IND_110 26 #define __Out_O_NAS_CONN_ESTAB_RESP_109 27 static integer Out_O_NAS_CONN_ESTAB_RESP_109; #define __Out_O_SEND_DCCH_UM_108 28 static integer Out_O_SEND_DCCH_UM_108; #define __Out_O_SEND_DCCH_AM_107 29 static integer Out_O_SEND_DCCH_AM_107; #define __Out_O_SEND_CCCH_106 30 static integer Out_O_SEND_CCCH_106; #define __Out_O_Setup_FACHRACH_105 31 #define __Out_O_PHY_SYNCH_104 32 #define __In_I_Go_CELL_FACH_103 33 #define __In_I_Go_CELL_DCH_102 34 #define __In_I_WaitTimerExpired_101 35 #define __In_I_T308_TimeOut_100 36 #define __In_I_T300_TimeOut_99 37 #define __In_I_NAS_CONN_RELEASE_REQ_98 38 #define __In_I_NAS_CONN_ESTABLISHMENT_REQ_97 39 #define __In_I_RRC_CONNECTION_RELEASE_96 40 #define __In_I_RRC_CONNECTION_REJECT_95 41 #define __In_I_RRC_CONNECTION_SETUP_94 42 #define __In_I_RLC_Success_93 43 #define __In_I_RLC_Failure_92 44 #define __In_I_CPHY_CONNECTION_LOSS_91 45 #define __In_I_CPHY_SYNCH_IND_90 46 #define __In_I_CPHY_SYNCH_Failure_89 47 #define __In_I_rcved_on_CCCH_88 48 #define __In_I_rcved_on_DCCH_87 49 #define __In_I_Wait_Time_86 50 static integer In_I_Wait_Time_86; #define __In_I_IE_Freq_Info_85 51 #define __In_I_IE_RRC_State_84 52 static integer In_I_IE_RRC_State_84; #define __In_UE_ID_INIT_83 53 static integer In_UE_ID_INIT_83; #define __In_UE_ID_MSG_82 54 static integer In_UE_ID_MSG_82; #ifndef encode_message extern void encode_message (integer *, integer); #endif #ifndef Select_PRACH extern void Select_PRACH (); #endif #ifndef Select_Secondary_CCPCH extern void Select_Secondary_CCPCH (); #endif #ifndef Set_State extern void Set_State (integer, boolean); #endif #ifndef release_radio_resources extern void release_radio_resources (); #endif #ifndef clear_variables_rel extern void clear_variables_rel (); #endif #ifndef ue_clear_transaction extern void ue_clear_transaction (integer); #endif #ifndef INTEGER_COMBINE extern integer INTEGER_COMBINE (integer, integer); #endif extern void RRC_UE_O_O_wait (integer); extern void RRC_UE_O_O_UpdateSI_852 (void); extern void RRC_UE_O_O_startT308 (void); extern void RRC_UE_O_O_stopT300 (void); extern void RRC_UE_O_O_startT300 (void); extern void RRC_UE_O_O_NAS_CONN_LOSS_IND (void); extern void RRC_UE_O_O_NAS_CONN_RELEASE_IND (void); extern void RRC_UE_O_O_NAS_CONN_ESTAB_RESP (integer); extern void RRC_UE_O_O_SEND_DCCH_UM (integer); extern void RRC_UE_O_O_SEND_DCCH_AM (integer); extern void RRC_UE_O_O_SEND_CCCH (integer); extern void RRC_UE_O_O_Setup_FACHRACH (void); extern void RRC_UE_O_O_PHY_SYNCH (void); void RRC_UE_I_I_Go_CELL_FACH (void) { EMIT (_Sig, __In_I_Go_CELL_FACH_103); } void RRC_UE_I_I_Go_CELL_DCH (void) { EMIT (_Sig, __In_I_Go_CELL_DCH_102); } void RRC_UE_I_I_WaitTimerExpired (void) { EMIT (_Sig, __In_I_WaitTimerExpired_101); } void RRC_UE_I_I_T308_TimeOut (void) { EMIT (_Sig, __In_I_T308_TimeOut_100); } void RRC_UE_I_I_T300_TimeOut (void) { EMIT (_Sig, __In_I_T300_TimeOut_99); } void RRC_UE_I_I_NAS_CONN_RELEASE_REQ (void) { EMIT (_Sig, __In_I_NAS_CONN_RELEASE_REQ_98); } void RRC_UE_I_I_NAS_CONN_ESTABLISHMENT_REQ (void) { EMIT (_Sig, __In_I_NAS_CONN_ESTABLISHMENT_REQ_97); } void RRC_UE_I_I_RRC_CONNECTION_RELEASE (void) { EMIT (_Sig, __In_I_RRC_CONNECTION_RELEASE_96); } void RRC_UE_I_I_RRC_CONNECTION_REJECT (void) { EMIT (_Sig, __In_I_RRC_CONNECTION_REJECT_95); } void RRC_UE_I_I_RRC_CONNECTION_SETUP (void) { EMIT (_Sig, __In_I_RRC_CONNECTION_SETUP_94); } void RRC_UE_I_I_RLC_Success (void) { EMIT (_Sig, __In_I_RLC_Success_93); } void RRC_UE_I_I_RLC_Failure (void) { EMIT (_Sig, __In_I_RLC_Failure_92); } void RRC_UE_I_I_CPHY_CONNECTION_LOSS (void) { EMIT (_Sig, __In_I_CPHY_CONNECTION_LOSS_91); } void RRC_UE_I_I_CPHY_SYNCH_IND (void) { EMIT (_Sig, __In_I_CPHY_SYNCH_IND_90); } void RRC_UE_I_I_CPHY_SYNCH_Failure (void) { EMIT (_Sig, __In_I_CPHY_SYNCH_Failure_89); } void RRC_UE_I_I_rcved_on_CCCH (void) { EMIT (_Sig, __In_I_rcved_on_CCCH_88); } void RRC_UE_I_I_rcved_on_DCCH (void) { EMIT (_Sig, __In_I_rcved_on_DCCH_87); } void RRC_UE_I_I_Wait_Time (integer value) { EMIT (_Sig, __In_I_Wait_Time_86); _integer (&In_I_Wait_Time_86, value); } void RRC_UE_I_I_IE_Freq_Info (void) { EMIT (_Sig, __In_I_IE_Freq_Info_85); } void RRC_UE_I_I_IE_RRC_State (integer value) { EMIT (_Sig, __In_I_IE_RRC_State_84); _integer (&In_I_IE_RRC_State_84, value); } void RRC_UE_I_UE_ID_INIT (integer value) { EMIT (_Sig, __In_UE_ID_INIT_83); _integer (&In_UE_ID_INIT_83, value); } void RRC_UE_I_UE_ID_MSG (integer value) { EMIT (_Sig, __In_UE_ID_MSG_82); _integer (&In_UE_ID_MSG_82, value); } static void Point_0 (void) { /*#0 */ _boolean (&Var__ThisIsTheEnd__157, 1); CLEAR_SIGNAL (_SigPre_0, __Sig_sc_in_Connection_Management_DOT_Connected_DOT_CELL_DCH_118); CLEAR_SIGNAL (_SigPre_1, __Sig_sc_in_Connection_Management_DOT_Connected_DOT_CELL_DCH_118); CLEAR_SIGNAL (_SigPre_0, __Sig_sc_in_Connection_Management_DOT_Connected_DOT_CELL_FACH_119); CLEAR_SIGNAL (_SigPre_1, __Sig_sc_in_Connection_Management_DOT_Connected_DOT_CELL_FACH_119); Set_State (IDLE, 0); _Pause[0] |= 0x2088011a; _Pause[1] |= 0x12; /* PauseOn: #1 #3 #4 #8 #19 #23 #29 #33 #36 */ } static void Point_1 (void) { /*#1 AutoPauseOn */ if (IS_SIGNAL (_Sig, __In_I_NAS_CONN_RELEASE_REQ_98)) { if ((IS_SIGNAL (_SigPre_1, __Sig_sc_in_Connection_Management_DOT_Connected_DOT_CELL_FACH_119) || IS_SIGNAL (_SigPre_1, __Sig_sc_in_Connection_Management_DOT_Connected_DOT_CELL_DCH_118))) { encode_message (&Var_msg_150, RRC_CONN_RELEASE); EMIT (_Sig, __Out_O_SEND_DCCH_AM_107); if (!(IS_GUARD (9))) _integer (&Out_O_SEND_DCCH_AM_107, Var_msg_150); else _integer (&Out_O_SEND_DCCH_AM_107, INTEGER_COMBINE (Out_O_SEND_DCCH_AM_107, Var_msg_150)); SET_GUARD (9); _On[0] |= 0x100000; /* On: #20 */ _On[0] &= ~0x2; /* Off: #1 */ _Pause[0] |= 0x4; /* PauseOn: #2 */ } } } static void Point_2 (void) { /*#2 AutoPauseOn */ if ((IS_SIGNAL (_Sig, __In_I_RLC_Success_93) || IS_SIGNAL (_Sig, __In_I_RLC_Failure_92))) { release_radio_resources (); clear_variables_rel (); EMIT (_Sig, __Sig_Go_Idle_120); EMIT (_Sig, __Out_O_UpdateSI_852_115); if (!(IS_GUARD (1))) { RRC_UE_O_O_UpdateSI_852 (); SET_GUARD (1); } EMIT (_Sig, __Sig_Conn_Setup_End_136); _On[0] |= 0x1000000; /* On: #24 */ _On[0] &= ~0x4; /* Off: #2 */ } } static void Point_3 (void) { /*#3 AutoPauseOn */ EMIT (_Sig, __Sig_sc_in_Connection_Management_DOT_Idle_117); } static void Point_4 (void) { /*#4 AutoPauseOn */ if (IS_SIGNAL (_Sig, __In_I_NAS_CONN_ESTABLISHMENT_REQ_97)) { _On[0] |= 0x10000000; /* On: #28 */ _On[0] &= ~0x10; /* Off: #4 */ } } static void Point_5 (void) { /*#5 AutoPauseOn */ if (IS_SIGNAL (_Sig, __In_I_WaitTimerExpired_101)) { EMIT (_Sig, __Sig_inc_V300_131); _On[0] |= 0x10000; /* On: #16 */ _On[0] &= ~0x20; /* Off: #5 */ } } static void Point_6 (void) { /*#6 */ if (IS_SIGNAL (_Sig, __In_I_RRC_CONNECTION_REJECT_95)) { EMIT (_Sig, __Out_O_stopT300_113); if (!(IS_GUARD (3))) { RRC_UE_O_O_stopT300 (); SET_GUARD (3); } if (((In_I_Wait_Time_86 > 0) && (Sig_V300_132[Sig_V300_132_Pre1] <= N300))) { if (IS_SIGNAL (_Sig, __In_I_IE_Freq_Info_85)) { EMIT (_Sig, __Sig_sc_go_18_ConnSU_fail2_145); _On[0] |= 0x10000; /* On: #16 */ } else { EMIT (_Sig, __Out_O_wait_116); _integer (&Out_O_wait_116, In_I_Wait_Time_86); RRC_UE_O_O_wait (Out_O_wait_116); _Pause[0] |= 0x20; /* PauseOn: #5 */ } } else { EMIT (_Sig, __Sig_sc_go_18_ConnSU_fail2_145); _On[0] |= 0x10000; /* On: #16 */ } } else { if (IS_SIGNAL (_Sig, __In_I_RRC_CONNECTION_SETUP_94)) { EMIT (_Sig, __Out_O_stopT300_113); if (!(IS_GUARD (3))) { RRC_UE_O_O_stopT300 (); SET_GUARD (3); } _Pause[0] |= 0x80; /* PauseOn: #7 */ if (_eq_integer (In_I_IE_RRC_State_84, CELL_FACH)) { Select_PRACH (); Select_Secondary_CCPCH (); } EMIT (_Sig, __Out_O_PHY_SYNCH_104); if (!(IS_GUARD (12))) { RRC_UE_O_O_PHY_SYNCH (); SET_GUARD (12); } } else { _On[1] |= 0x80; /* On: #39 */ } } } static void Point_7 (void) { /*#7 AutoPauseOn */ if (IS_SIGNAL (_Sig, __In_I_CPHY_SYNCH_Failure_89)) { _On[0] &= ~0x80; /* Off: #7 */ if ((Sig_V300_132[Sig_V300_132_Pre1] <= N300)) { EMIT (_Sig, __Sig_inc_V300_131); _On[0] |= 0x10000; /* On: #16 */ } else { EMIT (_Sig, __Sig_sc_go_18_ConnSU_fail2_145); _On[0] |= 0x10000; /* On: #16 */ } } else { if (IS_SIGNAL (_Sig, __In_I_CPHY_SYNCH_IND_90)) { _On[0] &= ~0x80; /* Off: #7 */ _Pause[0] |= 0x8000; /* PauseOn: #15 */ if (_eq_integer (In_I_IE_RRC_State_84, CELL_FACH)) { EMIT (_Sig, __Sig_Go_state_CELL_FACH_122); } if (_eq_integer (In_I_IE_RRC_State_84, CELL_DCH)) { EMIT (_Sig, __Sig_Go_state_CELL_DCH_121); } encode_message (&Var_msg_143, RRC_CONN_SETUP_COMPLETE); EMIT (_Sig, __Out_O_SEND_DCCH_AM_107); if (!(IS_GUARD (9))) _integer (&Out_O_SEND_DCCH_AM_107, Var_msg_143); else _integer (&Out_O_SEND_DCCH_AM_107, INTEGER_COMBINE (Out_O_SEND_DCCH_AM_107, Var_msg_143)); SET_GUARD (9); _On[0] |= 0x100000; /* On: #20 */ } } } static void Point_8 (void) { /*#8 AutoPauseOn */ if ((IS_SIGNAL (_Sig, __Sig_Go_state_CELL_DCH_121) || IS_SIGNAL (_Sig, __Sig_Go_state_CELL_FACH_122))) { CLEAR_SIGNAL (_Sig, __Sig_sc_go_5_CELL_DCH_138); _On[0] |= 0x200; /* On: #9 */ _On[0] &= ~0x100; /* Off: #8 */ _Pause[0] |= 0x8000000; /* PauseOn: #27 */ _Pause[0] &= ~0x8; _On[0] &= ~0x8; /* PauseOff: #3 */ } } static void Point_9 (void) { /*#9 AutoPauseOn */ if (IS_SIGNAL (_Sig, __Sig_Go_state_CELL_FACH_122)) { SET_GUARD (0); _On[0] &= ~0x200; /* Off: #9 */ } else { if (IS_SIGNAL (_Sig, __Sig_Go_state_CELL_DCH_121)) { SET_GUARD (0); EMIT (_Sig, __Sig_sc_go_5_CELL_DCH_138); _On[0] &= ~0x200; /* Off: #9 */ } } if (IS_GUARD (0)) { if (IS_SIGNAL (_Sig, __Sig_sc_go_5_CELL_DCH_138)) { EMIT (_SigPre_0, __Sig_sc_in_Connection_Management_DOT_Connected_DOT_CELL_DCH_118); _Pause[0] |= 0xc00; /* PauseOn: #10 #11 */ if (IS_SIGNAL (_Sig, __In_I_Go_CELL_DCH_102)) { Set_State (CELL_DCH, 1); } else { Set_State (CELL_DCH, 0); } } else { EMIT (_SigPre_0, __Sig_sc_in_Connection_Management_DOT_Connected_DOT_CELL_FACH_119); _Pause[0] |= 0x3000; /* PauseOn: #12 #13 */ if (IS_SIGNAL (_Sig, __In_I_Go_CELL_FACH_103)) { Set_State (CELL_FACH, 1); } else { Set_State (CELL_FACH, 0); } } } } static void Point_10 (void) { /*#10 AutoPauseOn */ EMIT (_SigPre_0, __Sig_sc_in_Connection_Management_DOT_Connected_DOT_CELL_DCH_118); } static void Point_11 (void) { /*#11 AutoPauseOn */ if ((IS_SIGNAL (_Sig, __Sig_Go_state_CELL_FACH_122) || IS_SIGNAL (_Sig, __In_I_Go_CELL_FACH_103))) { _On[0] |= 0x4000; /* On: #14 */ _On[0] &= ~0x800; /* Off: #11 */ _Pause[0] &= ~0x400; _On[0] &= ~0x400; /* PauseOff: #10 */ } } static void Point_12 (void) { /*#12 AutoPauseOn */ EMIT (_SigPre_0, __Sig_sc_in_Connection_Management_DOT_Connected_DOT_CELL_FACH_119); } static void Point_13 (void) { /*#13 AutoPauseOn */ if ((IS_SIGNAL (_Sig, __Sig_Go_state_CELL_DCH_121) || IS_SIGNAL (_Sig, __In_I_Go_CELL_DCH_102))) { EMIT (_Sig, __Sig_sc_go_5_CELL_DCH_138); _On[0] |= 0x4000; /* On: #14 */ _On[0] &= ~0x2000; /* Off: #13 */ _Pause[0] &= ~0x1000; _On[0] &= ~0x1000; /* PauseOff: #12 */ } } static void Point_14 (void) { /*#14 */ if (IS_SIGNAL (_Sig, __Sig_sc_go_5_CELL_DCH_138)) { EMIT (_SigPre_0, __Sig_sc_in_Connection_Management_DOT_Connected_DOT_CELL_DCH_118); _Pause[0] |= 0xc00; /* PauseOn: #10 #11 */ if (IS_SIGNAL (_Sig, __In_I_Go_CELL_DCH_102)) { Set_State (CELL_DCH, 1); } else { Set_State (CELL_DCH, 0); } } else { EMIT (_SigPre_0, __Sig_sc_in_Connection_Management_DOT_Connected_DOT_CELL_FACH_119); _Pause[0] |= 0x3000; /* PauseOn: #12 #13 */ if (IS_SIGNAL (_Sig, __In_I_Go_CELL_FACH_103)) { Set_State (CELL_FACH, 1); } else { Set_State (CELL_FACH, 0); } } } static void Point_15 (void) { /*#15 AutoPauseOn */ if (IS_SIGNAL (_Sig, __In_I_RLC_Failure_92)) { EMIT (_Sig, __Sig_Go_Idle_120); EMIT (_Sig, __Sig_sc_go_18_ConnSU_fail2_145); _On[0] |= 0x10000; /* On: #16 */ _On[0] &= ~0x8000; /* Off: #15 */ } else { if (IS_SIGNAL (_Sig, __In_I_RLC_Success_93)) { EMIT (_Sig, __Out_O_NAS_CONN_ESTAB_RESP_109); if (!(IS_GUARD (7))) _integer (&Out_O_NAS_CONN_ESTAB_RESP_109, SUCCESS); else _integer (&Out_O_NAS_CONN_ESTAB_RESP_109, INTEGER_COMBINE (Out_O_NAS_CONN_ESTAB_RESP_109, SUCCESS)); SET_GUARD (7); ue_clear_transaction (RRC_CONN_SETUP); EMIT (_Sig, __Sig_Conn_Setup_End_136); _On[1] |= 0x200; /* On: #41 */ _On[0] &= ~0x8000; /* Off: #15 */ } } } static void Point_16 (void) { /*#16 */ if (IS_SIGNAL (_Sig, __Sig_sc_go_18_ConnSU_fail2_145)) { EMIT (_Sig, __Sig_Conn_Setup_End_136); EMIT (_Sig, __Out_O_UpdateSI_852_115); if (!(IS_GUARD (1))) { RRC_UE_O_O_UpdateSI_852 (); SET_GUARD (1); } EMIT (_Sig, __Out_O_NAS_CONN_ESTAB_RESP_109); if (!(IS_GUARD (7))) _integer (&Out_O_NAS_CONN_ESTAB_RESP_109, FAILURE); else _integer (&Out_O_NAS_CONN_ESTAB_RESP_109, INTEGER_COMBINE (Out_O_NAS_CONN_ESTAB_RESP_109, FAILURE)); SET_GUARD (7); _On[1] |= 0x200; /* On: #41 */ } else { _Pause[0] |= 0x40; /* PauseOn: #6 */ } } static void Point_17 (void) { /*#17 */ if (IS_SIGNAL (_Sig, __In_I_T308_TimeOut_100)) { if ((Sig_V308_135[Sig_V308_135_Pre1] > Sig_max_value_154)) { EMIT (_Sig, __Sig_Conn_Rel_Compl_Stop_128); _On[1] |= 0x4; /* On: #34 */ } else { EMIT (_Sig, __Sig_Conn_Rel_Compl_Repeat_129); _On[1] |= 0x1; /* On: #32 */ } } else { _On[0] |= 0x80000000; /* On: #31 */ } } static void Point_18 (void) { /*#18 AutoPauseOn */ if (IS_SIGNAL (_Sig, __Sig_Conn_Rel_Compl_Repeat_129)) { EMIT (_Sig, __Sig_sc_go_41_ConnRel_send_146); _On[0] |= 0x400000; /* On: #22 */ _On[0] &= ~0x40000; /* Off: #18 */ } else { if (IS_SIGNAL (_Sig, __Sig_Conn_Rel_Compl_Stop_128)) { EMIT (_Sig, __Sig_sc_go_40_ConnRel_proc_148); _On[0] |= 0x400000; /* On: #22 */ _On[0] &= ~0x40000; /* Off: #18 */ } } } static void Point_19 (void) { /*#19 AutoPauseOn */ if (IS_SIGNAL (_Sig, __In_I_RRC_CONNECTION_RELEASE_96)) { _On[0] &= ~0x80000; /* Off: #19 */ if (IS_SIGNAL (_SigPre_1, __Sig_sc_in_Connection_Management_DOT_Connected_DOT_CELL_FACH_119)) { if (IS_SIGNAL (_Sig, __In_I_rcved_on_CCCH_88)) { EMIT (_Sig, __Sig_sc_go_40_ConnRel_proc_148); _On[0] |= 0x400000; /* On: #22 */ } else { if (IS_SIGNAL (_Sig, __In_I_rcved_on_DCCH_87)) { encode_message (&Var_msg_147, RRC_CONN_REL_COMPLETE); EMIT (_Sig, __Out_O_SEND_DCCH_AM_107); if (!(IS_GUARD (9))) _integer (&Out_O_SEND_DCCH_AM_107, Var_msg_147); else _integer (&Out_O_SEND_DCCH_AM_107, INTEGER_COMBINE (Out_O_SEND_DCCH_AM_107, Var_msg_147)); SET_GUARD (9); _On[0] |= 0x100000; /* On: #20 */ _Pause[0] |= 0x200000; /* PauseOn: #21 */ } else { _On[0] |= 0x400000; /* On: #22 */ } } } else { if (IS_SIGNAL (_SigPre_1, __Sig_sc_in_Connection_Management_DOT_Connected_DOT_CELL_DCH_118)) { encode_message (&Var_msg_147, RRC_CONN_REL_COMPLETE); EMIT (_Sig, __Sig_start_T308_133); _integer (&Sig_start_T308_133, N308); EMIT (_Sig, __Sig_sc_go_41_ConnRel_send_146); _On[0] |= 0x400000; /* On: #22 */ } else { _On[0] |= 0x400000; /* On: #22 */ } } } } static void Point_20 (void) { /*#20 */ RRC_UE_O_O_SEND_DCCH_AM (Out_O_SEND_DCCH_AM_107); } static void Point_21 (void) { /*#21 AutoPauseOn */ if ((IS_SIGNAL (_Sig, __In_I_RLC_Success_93) || IS_SIGNAL (_Sig, __In_I_RLC_Failure_92))) { EMIT (_Sig, __Sig_sc_go_40_ConnRel_proc_148); _On[0] |= 0x400000; /* On: #22 */ _On[0] &= ~0x200000; /* Off: #21 */ } } static void Point_22 (void) { /*#22 */ if (IS_SIGNAL (_Sig, __Sig_sc_go_40_ConnRel_proc_148)) { release_radio_resources (); EMIT (_Sig, __Out_O_NAS_CONN_RELEASE_IND_110); if (!(IS_GUARD (6))) { RRC_UE_O_O_NAS_CONN_RELEASE_IND (); SET_GUARD (6); } clear_variables_rel (); EMIT (_Sig, __Sig_Go_Idle_120); EMIT (_Sig, __Out_O_UpdateSI_852_115); if (!(IS_GUARD (1))) { RRC_UE_O_O_UpdateSI_852 (); SET_GUARD (1); } EMIT (_Sig, __Sig_Conn_Setup_End_136); _On[0] |= 0x4000000; /* On: #26 */ } else { _On[0] |= 0x40000000; /* On: #30 */ } } static void Point_23 (void) { /*#23 AutoPauseOn */ if (IS_SIGNAL (_Sig, __In_I_CPHY_CONNECTION_LOSS_91)) { release_radio_resources (); EMIT (_Sig, __Out_O_NAS_CONN_LOSS_IND_111); if (!(IS_GUARD (5))) { RRC_UE_O_O_NAS_CONN_LOSS_IND (); SET_GUARD (5); } clear_variables_rel (); EMIT (_Sig, __Out_O_UpdateSI_852_115); if (!(IS_GUARD (1))) { RRC_UE_O_O_UpdateSI_852 (); SET_GUARD (1); } EMIT (_Sig, __Sig_Conn_Setup_End_136); EMIT (_Sig, __Sig_Go_Idle_120); _On[0] |= 0x2000000; /* On: #25 */ _On[0] &= ~0x800000; /* Off: #23 */ } } static void Point_24 (void) { /*#24 AutoPauseOn */ if (IS_SIGNAL (_Sig, __Sig_Conn_Setup_End_136)) { _On[0] &= ~0x1000000; /* Off: #24 */ _Pause[0] |= 0x2; /* PauseOn: #1 */ } } static void Point_25 (void) { /*#25 AutoPauseOn */ if (IS_SIGNAL (_Sig, __Sig_Conn_Setup_End_136)) { _On[0] &= ~0x2000000; /* Off: #25 */ _Pause[0] |= 0x800000; /* PauseOn: #23 */ } } static void Point_26 (void) { /*#26 AutoPauseOn */ if (IS_SIGNAL (_Sig, __Sig_Conn_Setup_End_136)) { _On[0] |= 0x40000000; /* On: #30 */ _On[0] &= ~0x4000000; /* Off: #26 */ } } static void Point_27 (void) { /*#27 AutoPauseOn */ if (IS_SIGNAL (_Sig, __Sig_Go_Idle_120)) { Set_State (IDLE, 0); EMIT (_Sig, __Sig_sc_in_Connection_Management_DOT_Idle_117); _On[0] &= ~0x8000000; /* Off: #27 */ _Pause[0] |= 0x108; /* PauseOn: #3 #8 */ _Pause[0] &= ~0x3e00; _On[0] &= ~0x3e00; /* PauseOff: #9 #10 #11 #12 #13 */ } } static void Point_28 (void) { /*#28 AutoPauseOn */ if (IS_SIGNAL (_Sig, __Sig_sc_in_Connection_Management_DOT_Idle_117)) { EMIT (_Sig, __Out_O_Setup_FACHRACH_105); if (!(IS_GUARD (11))) { RRC_UE_O_O_Setup_FACHRACH (); SET_GUARD (11); } encode_message (&Var_msg_142, RRC_CONN_REQ); EMIT (_Sig, __Sig_Waiting_Connection_124); EMIT (_Sig, __Sig_start_T300_130); _integer (&Sig_start_T300_130, N300); EMIT (_Sig, __Sig_sc_go_24_ConnReq_sent_141); _On[1] |= 0x400; /* On: #42 */ _On[0] &= ~0x10000000; /* Off: #28 */ } else { if ((!IS_SIGNAL (_Sig, __Sig_sc_in_Connection_Management_DOT_Idle_117))) { EMIT (_Sig, __Out_O_NAS_CONN_ESTAB_RESP_109); if (!(IS_GUARD (7))) _integer (&Out_O_NAS_CONN_ESTAB_RESP_109, ALREADY_C); else _integer (&Out_O_NAS_CONN_ESTAB_RESP_109, INTEGER_COMBINE (Out_O_NAS_CONN_ESTAB_RESP_109, ALREADY_C)); SET_GUARD (7); _On[1] |= 0x600; /* On: #41 #42 */ _On[0] &= ~0x10000000; /* Off: #28 */ } } } static void Point_29 (void) { /*#29 AutoPauseOn */ if (IS_SIGNAL (_Sig, __Sig_Waiting_Connection_124)) { _On[1] |= 0x100; /* On: #40 */ _On[0] &= ~0x20000000; /* Off: #29 */ _Pause[0] |= 0x40; /* PauseOn: #6 */ } } static void Point_30 (void) { /*#30 */ if (IS_SIGNAL (_Sig, __Sig_sc_go_41_ConnRel_send_146)) { EMIT (_Sig, __Out_O_SEND_DCCH_UM_108); if (!(IS_GUARD (8))) _integer (&Out_O_SEND_DCCH_UM_108, Var_msg_147); else _integer (&Out_O_SEND_DCCH_UM_108, INTEGER_COMBINE (Out_O_SEND_DCCH_UM_108, Var_msg_147)); SET_GUARD (8); EMIT (_Sig, __Out_O_startT308_114); if (!(IS_GUARD (2))) { RRC_UE_O_O_startT308 (); SET_GUARD (2); } RRC_UE_O_O_SEND_DCCH_UM (Out_O_SEND_DCCH_UM_108); _Pause[0] |= 0x40000; /* PauseOn: #18 */ } else { _Pause[0] |= 0x80000; /* PauseOn: #19 */ } } static void Point_31 (void) { /*#31 */ if (IS_SIGNAL (_Sig, __Sig_Conn_Setup_End_136)) { _On[1] |= 0x4; /* On: #34 */ } else { _Pause[0] |= 0x20000; /* PauseOn: #17 */ } } static void Point_32 (void) { /*#32 */ Sig_V308_135_Pre0 = Sig_V308_135_Pre1 ^ 1; _integer (&Sig_V308_135[Sig_V308_135_Pre0], (Sig_V308_135[Sig_V308_135_Pre1] + 1)); EMIT (_Sig, __Sig_sc_go_14_Timer_started_156); _On[1] |= 0x4; /* On: #34 */ } static void Point_33 (void) { /*#33 AutoPauseOn */ if (IS_SIGNAL (_Sig, __Sig_start_T308_133)) { Sig_V308_135_Pre0 = Sig_V308_135_Pre1 ^ 1; _integer (&Sig_V308_135[Sig_V308_135_Pre0], 1); _integer (&Sig_max_value_154, Sig_start_T308_133); EMIT (_Sig, __Sig_sc_go_14_Timer_started_156); _On[1] |= 0x4; /* On: #34 */ _On[1] &= ~0x2; /* Off: #33 */ } } static void Point_34 (void) { /*#34 */ if (IS_SIGNAL (_Sig, __Sig_sc_go_14_Timer_started_156)) { _Pause[0] |= 0x20000; /* PauseOn: #17 */ } else { _Pause[1] |= 0x2; /* PauseOn: #33 */ } } static void Point_35 (void) { /*#35 AutoPauseOn */ if ((IS_SIGNAL (_Sig, __In_I_T300_TimeOut_99) || IS_SIGNAL (_Sig, __Sig_inc_V300_131))) { _On[1] &= ~0x8; /* Off: #35 */ if ((Sig_V300_132[Sig_V300_132_Pre1] > Sig_max_value_151)) { EMIT (_Sig, __Sig_Conn_Request_Stop_126); _On[1] |= 0x20; /* On: #37 */ } else { EMIT (_Sig, __Sig_Conn_Request_Repeat_127); Sig_V300_132_Pre0 = Sig_V300_132_Pre1 ^ 1; _integer (&Sig_V300_132[Sig_V300_132_Pre0], (Sig_V300_132[Sig_V300_132_Pre1] + 1)); EMIT (_Sig, __Sig_sc_go_14_Timer_started_153); _On[1] |= 0x20; /* On: #37 */ } } else { if (IS_SIGNAL (_Sig, __Sig_Conn_Setup_End_136)) { _On[1] |= 0x20; /* On: #37 */ _On[1] &= ~0x8; /* Off: #35 */ } } } static void Point_36 (void) { /*#36 AutoPauseOn */ if (IS_SIGNAL (_Sig, __Sig_start_T300_130)) { Sig_V300_132_Pre0 = Sig_V300_132_Pre1 ^ 1; _integer (&Sig_V300_132[Sig_V300_132_Pre0], 1); _integer (&Sig_max_value_151, Sig_start_T300_130); EMIT (_Sig, __Sig_sc_go_14_Timer_started_153); _On[1] |= 0x20; /* On: #37 */ _On[1] &= ~0x10; /* Off: #36 */ } } static void Point_37 (void) { /*#37 */ if (IS_SIGNAL (_Sig, __Sig_sc_go_14_Timer_started_153)) { _Pause[1] |= 0x8; /* PauseOn: #35 */ } else { _Pause[1] |= 0x10; /* PauseOn: #36 */ } } static void Point_38 (void) { /*#38 AutoPauseOn */ if (IS_SIGNAL (_Sig, __Sig_Conn_Request_Repeat_127)) { EMIT (_Sig, __Sig_sc_go_24_ConnReq_sent_141); _On[1] |= 0x400; /* On: #42 */ _On[1] &= ~0x40; /* Off: #38 */ } else { if (IS_SIGNAL (_Sig, __Sig_Conn_Request_Stop_126)) { _On[1] |= 0x400; /* On: #42 */ _On[1] &= ~0x40; /* Off: #38 */ } else { if (IS_SIGNAL (_Sig, __Sig_Conn_Setup_End_136)) { _On[1] |= 0x400; /* On: #42 */ _On[1] &= ~0x40; /* Off: #38 */ } } } } static void Point_39 (void) { /*#39 */ if (IS_SIGNAL (_Sig, __Sig_Conn_Request_Stop_126)) { EMIT (_Sig, __Out_O_NAS_CONN_ESTAB_RESP_109); if (!(IS_GUARD (7))) _integer (&Out_O_NAS_CONN_ESTAB_RESP_109, FAILURE); else _integer (&Out_O_NAS_CONN_ESTAB_RESP_109, INTEGER_COMBINE (Out_O_NAS_CONN_ESTAB_RESP_109, FAILURE)); SET_GUARD (7); _On[1] |= 0x200; /* On: #41 */ } else { _Pause[0] |= 0x40; /* PauseOn: #6 */ } } static void Point_40 (void) { /*#40 AutoPauseOn */ if ((IS_SIGNAL (_Sig, __Sig_Conn_Setup_End_136) || IS_SIGNAL (_Sig, __Sig_Conn_Request_Stop_126))) { _On[1] &= ~0x100; /* Off: #40 */ _Pause[0] |= 0x20000000; /* PauseOn: #29 */ _Pause[0] &= ~0x80e0; _On[0] &= ~0x80a0; /* PauseOff: #5 #6 #7 #15 */ } } static void Point_41 (void) { /*#41 */ RRC_UE_O_O_NAS_CONN_ESTAB_RESP (Out_O_NAS_CONN_ESTAB_RESP_109); } static void Point_42 (void) { /*#42 */ if (IS_SIGNAL (_Sig, __Sig_sc_go_24_ConnReq_sent_141)) { EMIT (_Sig, __Out_O_SEND_CCCH_106); if (!(IS_GUARD (10))) _integer (&Out_O_SEND_CCCH_106, Var_msg_142); else _integer (&Out_O_SEND_CCCH_106, INTEGER_COMBINE (Out_O_SEND_CCCH_106, Var_msg_142)); SET_GUARD (10); EMIT (_Sig, __Out_O_startT300_112); if (!(IS_GUARD (4))) { RRC_UE_O_O_startT300 (); SET_GUARD (4); } RRC_UE_O_O_SEND_CCCH (Out_O_SEND_CCCH_106); _Pause[1] |= 0x40; /* PauseOn: #38 */ } else { _Pause[0] |= 0x10; /* PauseOn: #4 */ } } int RRC_UE (void) { unsigned int *Points; Points = _On; if (*Points) { if (*Points & 0x1) { Point_0 (); } if (*Points & 0x2) { Point_1 (); } if (*Points & 0x4) { Point_2 (); } if (*Points & 0x8) { Point_3 (); } if (*Points & 0x10) { Point_4 (); } if (*Points & 0x20) { Point_5 (); } if (*Points & 0x40) { Point_6 (); } if (*Points & 0x80) { Point_7 (); } if (*Points & 0x100) { Point_8 (); } if (*Points & 0x200) { Point_9 (); } if (*Points & 0x400) { Point_10 (); } if (*Points & 0x800) { Point_11 (); } if (*Points & 0x1000) { Point_12 (); } if (*Points & 0x2000) { Point_13 (); } if (*Points & 0x4000) { Point_14 (); } if (*Points & 0x8000) { Point_15 (); } if (*Points & 0x10000) { Point_16 (); } if (*Points & 0x20000) { Point_17 (); } if (*Points & 0x40000) { Point_18 (); } if (*Points & 0x80000) { Point_19 (); } if (*Points & 0x100000) { Point_20 (); } if (*Points & 0x200000) { Point_21 (); } if (*Points & 0x400000) { Point_22 (); } if (*Points & 0x800000) { Point_23 (); } if (*Points & 0x1000000) { Point_24 (); } if (*Points & 0x2000000) { Point_25 (); } if (*Points & 0x4000000) { Point_26 (); } if (*Points & 0x8000000) { Point_27 (); } if (*Points & 0x10000000) { Point_28 (); } if (*Points & 0x20000000) { Point_29 (); } if (*Points & 0x40000000) { Point_30 (); } if (*Points & 0x80000000) { Point_31 (); } } Points++; if (*Points) { if (*Points & 0x1) { Point_32 (); } if (*Points & 0x2) { Point_33 (); } if (*Points & 0x4) { Point_34 (); } if (*Points & 0x8) { Point_35 (); } if (*Points & 0x10) { Point_36 (); } if (*Points & 0x20) { Point_37 (); } if (*Points & 0x40) { Point_38 (); } if (*Points & 0x80) { Point_39 (); } if (*Points & 0x100) { Point_40 (); } if (*Points & 0x200) { Point_41 (); } if (*Points & 0x400) { Point_42 (); } } Points++; { int j; unsigned int *_tmp; _tmp = _SigPre_1; _SigPre_1 = _SigPre_0; _SigPre_0 = _tmp; for (j = 0; j < SIGNAL_WITH_PRE_VECTOR_SIZE; j++) _SigPre_0[j] = 0; for (j = 0; j < SIGNAL_VECTOR_SIZE; j++) _Sig[j] = 0; Sig_V308_135_Pre1 = Sig_V308_135_Pre0; Sig_V300_132_Pre1 = Sig_V300_132_Pre0; _On[0] = _Pause[0] | (_On[0] & 0x3facbfbe); _On[1] = _Pause[1] | (_On[1] & 0x15a); /* AutoPauseOn: #1 #2 #3 #4 #5 #7 #8 #9 #10 #11 #12 #13 #15 #18 #19 #21 #23 #24 #25 #26 #27 #28 #29 #33 #35 #36 #38 #40 */ for (j = 0; j < HALT_POINT_VECTOR_SIZE; j++) _Pause[j] = 0; for (j = 0; j < GUARD_VECTOR_SIZE; j++) _Guard[j] = 0; } return Var__ThisIsTheEnd__157; } int RRC_UE_reset (void) { int i, j; for (j = 0; j < SIGNAL_VECTOR_SIZE; j++) _Sig[j] = 0; for (i = 0; i < GLOBALMAXPRELEVEL; i++) for (j = 0; j < SIGNAL_WITH_PRE_VECTOR_SIZE; j++) _SigPreTab[i][j] = 0; _integer (&In_UE_ID_INIT_83, 33); for (i = 0; i < HALT_POINT_VECTOR_SIZE; i++) _On[i] = 0; for (i = 0; i < HALT_POINT_VECTOR_SIZE; i++) _Pause[i] = 0; for (i = 0; i < GUARD_VECTOR_SIZE; i++) _Guard[i] = 0; BIT_SET (_On, 0); return 1; } typedef int (*SimInitFunc_t) (); int RRC_UE_init (char **pError, SimInitFunc_t pFunc) { return 1; } typedef int (*SimEndFunc_t) (); int RRC_UE_end (SimEndFunc_t pFunc) { return 1; } int RRC_UE_run (void) { return RRC_UE (); } int RRC_UE_getError (void) { return 0; } char * RRC_UE_getErrorMessage (void) { return (char *) 0; }