1
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2 +-----------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3 | Project : GPRS (8441)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
4 | Modul : GRR
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
5 +-----------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
6 | Copyright 2002 Texas Instruments Berlin, AG
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
7 | All rights reserved.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
8 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
9 | This file is confidential and a trade secret of Texas
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
10 | Instruments Berlin, AG
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
11 | The receipt of or possession of this file does not convey
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
12 | any rights to reproduce or disclose its contents or to
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
13 | manufacture, use, or sell anything it may describe, in
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
14 | whole, or in part, without the specific written consent of
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
15 | Texas Instruments Berlin, AG.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
16 +-----------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
17 | Purpose : This module implements signal handler functions for service
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
18 | TC of entity GRR.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
19 +-----------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
20 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
21
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
22 #ifndef GRR_TCS_C
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
23 #define GRR_TCS_C
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
24 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
25
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
26 #define ENTITY_GRR
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
27
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
28 /*==== INCLUDES =============================================================*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
29
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
30 #include <string.h>
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
31 #include "typedefs.h" /* to get Condat data types */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
32 #include "vsi.h" /* to get a lot of macros */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
33 #include "macdef.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
34 #include "gprs.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
35 #include "gsm.h" /* to get a lot of macros */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
36 #include "ccdapi.h" /* to get CCD API */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
37 #include "cnf_grr.h" /* to get cnf-definitions */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
38 #include "mon_grr.h" /* to get mon-definitions */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
39 #include "prim.h" /* to get the definitions of used SAP and directions */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
40 #include "message.h" /* to get air message definitions */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
41 #include "grr.h" /* to get the global entity definitions */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
42 #include "grr_f.h" /* to get the global entity definitions */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
43 #include "grr_tcf.h" /* to get the service TC procedure definitions */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
44 #include "grr_tcs.h" /* to get the service TC signal definitions */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
45 #include "grr_ctrls.h" /* to get the service CTRL signal definitions */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
46 #include "grr_cpaps.h" /* to get the service CPAP signal definitions */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
47 #include "grr_meass.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
48 #include "grr_psif.h" /* stop timers in Testmode A */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
49 #include "cl_rlcmac.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
50
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
51 /*==== CONST ================================================================*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
52
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
53 /*==== DIAGNOSTICS ==========================================================*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
54
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
55 /*==== LOCAL TYPES===========================================================*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
56
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
57 LOCAL void tc_handle_new_cell ( BOOL cell_has_changed, UBYTE enable_cause );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
58
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
59 /*==== LOCAL VARS ===========================================================*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
60
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
61 /*==== PRIVATE FUNCTIONS ====================================================*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
62 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
63 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
64 | Function : tc_handle_new_cell
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
65 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
66 | Description :
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
67 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
68 | Parameters :
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
69 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
70 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
71 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
72 LOCAL void tc_handle_new_cell ( BOOL cell_has_changed, UBYTE enable_cause )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
73 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
74 UBYTE queue_mode;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
75
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
76 TRACE_FUNCTION( "tc_handle_new_cell" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
77
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
78 if( cell_has_changed )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
79 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
80 /* inform CPAP because it has to stop T3142 if running */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
81 sig_tc_cpap_new_cell();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
82
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
83 grr_data->ta_params.ta_valid = FALSE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
84
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
85 TRACE_EVENT_P1( "tc_handle_new_cell: N3102 = %d", psc_db->gprs_cell_opt.pan_struct.pmax );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
86 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
87
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
88 queue_mode = ( enable_cause EQ CGRLC_ENAC_NORMAL ?
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
89 CGRLC_QUEUE_MODE_GMM : CGRLC_QUEUE_MODE_LLC );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
90
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
91 tc_cgrlc_enable_req( queue_mode,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
92 CGRLC_RA_DEFAULT,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
93 cell_has_changed,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
94 enable_cause );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
95 } /* tc_handle_new_cell() */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
96
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
97 /*==== PUBLIC FUNCTIONS =====================================================*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
98 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
99 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
100 | Function : tc_get_ctrl_blk
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
101 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
102 | Description :
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
103 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
104 | Parameters :
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
105 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
106 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
107 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
108 GLOBAL UBYTE* tc_get_ctrl_blk ( UBYTE *index, BOOL unacknowledged )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
109 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
110 UBYTE *ctrl_blk;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
111
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
112 TRACE_FUNCTION( "tc_get_ctrl_blk" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
113
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
114 ctrl_blk = tc_set_start_ctrl_blk( index );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
115
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
116 if( unacknowledged )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
117 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
118 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
119 * in case the control blocks are send by the service RU, we are
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
120 * working in unacknowledged mode, so every block is transmitted
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
121 * succesfully
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
122 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
123 tc_set_stop_ctrl_blk( TRUE, CGRLC_BLK_OWNER_NONE, 0 );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
124 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
125
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
126 return( ctrl_blk );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
127
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
128 } /* tc_get_ctrl_blk() */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
129
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
130 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
131 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
132 | Function : tc_is_ctrl_blk_rdy
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
133 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
134 | Description :
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
135 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
136 | Parameters :
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
137 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
138 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
139 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
140 GLOBAL BOOL tc_is_ctrl_blk_rdy ( UBYTE ack_cnt_meas_rpt, UBYTE ack_cnt_other )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
141 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
142 BOOL result = FALSE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
143 T_BLK_INDEX blk_index = grr_data->tc.ul_ctrl_blk.seq[0];
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
144
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
145 TRACE_FUNCTION( "tc_is_ctrl_blk_rdy" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
146
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
147 if( blk_index NEQ MAX_CTRL_BLK_NUM )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
148 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
149 switch( grr_data->tc.ul_ctrl_blk.blk[blk_index].owner )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
150 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
151 case( CGRLC_BLK_OWNER_MEAS ):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
152 case( CGRLC_BLK_OWNER_CS ): result = ( ack_cnt_meas_rpt EQ 0 ); break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
153 default : result = ( ack_cnt_other EQ 0 ); break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
154 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
155 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
156
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
157 return( result );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
158
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
159 } /* tc_is_ctrl_blk_rdy() */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
160
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
161 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
162 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
163 | Function : tc_get_num_ctrl_blck
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
164 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
165 | Description : This function returns the number of allocated control blocks.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
166 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
167 | Parameters :
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
168 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
169 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
170 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
171 GLOBAL UBYTE tc_get_num_ctrl_blck ( void )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
172 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
173 UBYTE i = 0; /* used for counting */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
174 UBYTE num = 0; /* number of allocated control blocks */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
175
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
176 TRACE_FUNCTION( "tc_get_num_ctrl_blck" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
177
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
178 while( i < MAX_CTRL_BLK_NUM AND
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
179 grr_data->tc.ul_ctrl_blk.seq[i] NEQ MAX_CTRL_BLK_NUM )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
180 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
181 if( grr_data->tc.ul_ctrl_blk.blk[grr_data->tc.ul_ctrl_blk.seq[i]].state
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
182 EQ BLK_STATE_ALLOCATED )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
183 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
184 num++;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
185 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
186
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
187 i++;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
188 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
189
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
190 return( num );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
191
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
192 } /* tc_get_num_ctrl_blck() */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
193
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
194 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
195 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
196 | Function : tc_cpy_ctrl_blk_to_buffer
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
197 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
198 | Description : This function ...
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
199 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
200 | Parameters :
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
201 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
202 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
203 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
204 GLOBAL UBYTE tc_cpy_ctrl_blk_to_buffer( UBYTE *buffer )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
205 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
206 UBYTE index;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
207 UBYTE *ctrl_block = tc_get_ctrl_blk( &index, FALSE );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
208
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
209 TRACE_FUNCTION( "tc_cpy_ctrl_blk_to_buffer" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
210
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
211 if( ctrl_block NEQ NULL )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
212 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
213 memcpy( buffer, ctrl_block, BYTE_UL_CTRL_BLOCK );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
214 grr_data->tc.v_sb_without_tbf = FALSE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
215 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
216 * After copying Measurement reports (PIM) in single block req
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
217 * v_sb_without_tbf is not required
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
218 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
219 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
220 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
221 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
222 TRACE_ERROR( "tc_cpy_ctrl_blk_to_buffer: ctrl_block EQ NULL" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
223 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
224
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
225 return( index );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
226 } /* tc_cpy_ctrl_blk_to_buffer() */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
227
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
228 /*==== SIGNAL FUNCTIONS =====================================================*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
229 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
230 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
231 | Function : sig_ctrl_tc_control_block
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
232 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
233 | Description : Handles the internal signal SIG_CTRL_TC_CONTROL_BLOCK
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
234 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
235 | Parameters : void
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
236 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
237 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
238 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
239 GLOBAL void sig_ctrl_tc_control_block ( T_BLK_OWNER blk_owner_i,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
240 void * blk_struct_i )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
241 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
242 TRACE_ISIG( "sig_ctrl_tc_control_block " );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
243
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
244 switch( GET_STATE( TC ) )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
245 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
246 case TC_ACCESS_DISABLED:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
247 case TC_CPAP:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
248 case TC_WAIT_ASSIGN:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
249 case TC_POLLING:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
250 case TC_WAIT_2P_ASSIGN:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
251 case TC_CONTENTION_RESOLUTION:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
252 case TC_TBF_ACTIVE:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
253 case TC_WAIT_STOP_TASK_CNF:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
254 if( tc_store_ctrl_blk( blk_owner_i, blk_struct_i ) EQ FALSE )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
255 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
256 sig_tc_ctrl_control_block_result( blk_owner_i, FALSE );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
257 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
258 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
259 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
260 tc_send_control_msg_to_grlc();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
261 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
262 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
263 case TC_SINGLE_BLOCK:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
264 case TC_PIM:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
265 if( tc_store_ctrl_blk( blk_owner_i, blk_struct_i ) EQ FALSE )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
266 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
267 sig_tc_ctrl_control_block_result( blk_owner_i, FALSE );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
268 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
269 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
270 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
271 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
272 * check if grlc has to transmit data
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
273 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
274 tc_cgrlc_access_status_req();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
275 /* grr_data->tc.v_sb_without_tbf = TRUE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
276 grr_data->uplink_tbf.nr_blocks = 1;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
277 grr_data->uplink_tbf.prio = RADIO_PRIO_4;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
278 grr_data->uplink_tbf.access_type = CGRLC_AT_SINGLE_BLOCK;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
279 grr_data->uplink_tbf.ti = 0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
280 tc_check_access_is_needed( CAC_OTHER );*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
281 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
282 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
283 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
284 sig_tc_ctrl_control_block_result( blk_owner_i, FALSE );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
285
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
286 TRACE_ERROR( "SIG_CTRL_TC_CONTROL_BLOCK unexpected" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
287 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
288 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
289 } /* sig_ctrl_tc_control_block () */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
290
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
291 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
292 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
293 | Function : sig_ctrl_tc_cancel_control_block
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
294 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
295 | Description : Handles the internal signal SIG_CTRL_TC_CANCEL_CONTROL_BLOCK
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
296 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
297 | Parameters : void
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
298 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
299 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
300 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
301 GLOBAL void sig_ctrl_tc_cancel_control_block ( T_BLK_OWNER blk_owner_i )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
302 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
303 UBYTE state = GET_STATE( TC );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
304
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
305 TRACE_ISIG( "sig_ctrl_tc_cancel_control_block " );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
306
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
307 switch( state )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
308 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
309 case TC_CPAP:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
310 case TC_WAIT_ASSIGN:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
311 if( tc_cancel_ctrl_blk( blk_owner_i ) EQ TRUE )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
312 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
313 if( tc_get_num_ctrl_blck( ) EQ 0 )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
314 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
315 if( state EQ TC_CPAP )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
316 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
317 sig_tc_cpap_abort_access();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
318 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
319 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
320 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
321 SET_STATE( TC, TC_PIM );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
322
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
323 tc_send_ra_stop_req( );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
324 vsi_t_stop( GRR_handle, T3170 );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
325 tc_check_access_is_needed( CAC_OTHER );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
326 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
327 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
328 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
329 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
330 case TC_ACCESS_DISABLED:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
331 case TC_POLLING:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
332 case TC_PIM:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
333 tc_cancel_ctrl_blk( blk_owner_i );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
334 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
335 case TC_SINGLE_BLOCK:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
336 case TC_WAIT_2P_ASSIGN:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
337 tc_cancel_ctrl_blk( blk_owner_i );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
338 tc_stop_normal_burst_req( );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
339 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
340 case TC_TBF_ACTIVE:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
341 case TC_CONTENTION_RESOLUTION:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
342 tc_cancel_ctrl_blk( blk_owner_i );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
343 tc_handle_error_ra();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
344 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
345 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
346 TRACE_EVENT( "SIG_CTRL_TC_CANCEL_CONTROL_BLOCK unexpected" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
347 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
348 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
349 } /* sig_ctrl_tc_cancel_control_block () */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
350
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
351 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
352 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
353 | Function : sig_ctrl_tc_enable_grlc
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
354 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
355 | Description : Handles the internal signal SIG_CTRL_TC_ENABLE_GRLC
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
356 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
357 | Parameters : void
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
358 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
359 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
360 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
361 GLOBAL void sig_ctrl_tc_enable_grlc (UBYTE queue_mode, UBYTE cell_update_cause )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
362 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
363 TRACE_ISIG( "sig_ctrl_tc_enable_grlc" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
364
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
365 if(cell_update_cause EQ GMMRR_RA_CU)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
366 tc_cgrlc_enable_req(queue_mode,CGRLC_RA_CU,FALSE,CGRLC_ENAC_NORMAL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
367 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
368 tc_cgrlc_enable_req(queue_mode,CGRLC_RA_DEFAULT,FALSE,CGRLC_ENAC_NORMAL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
369
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
370 } /* sig_ctrl_tc_enable_grlc() */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
371
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
372 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
373 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
374 | Function : sig_ctrl_tc_access_disable
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
375 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
376 | Description : Handles the internal signal SIG_CTRL_TC_ACCESS_DISABLE
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
377 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
378 | Parameters : dc - disable cause
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
379 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
380 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
381 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
382 GLOBAL void sig_ctrl_tc_access_disable
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
383 ( T_TC_DISABLE_CAUSE disable_cause,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
384 T_TC_DISABLE_CALLBACK_FUNC callback_func )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
385 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
386 UBYTE disable_class;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
387
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
388 T_TC_DC_CLASS dc_class = ( disable_cause & DCM_CLASS );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
389 T_TC_DC_TYPE dc_type = ( UBYTE )( disable_cause & DCM_TYPE );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
390 UBYTE state = GET_STATE( TC );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
391 UBYTE prim_st = CGRLC_PRIM_STATUS_NULL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
392
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
393 TRACE_ISIG( "sig_ctrl_tc_access_disable" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
394
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
395 disable_class =
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
396 ( dc_class EQ DCC_CR ? CGRLC_DISABLE_CLASS_CR : CGRLC_DISABLE_CLASS_OTHER );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
397
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
398 if( grr_data->tc.disable_class EQ CGRLC_DISABLE_CLASS_NULL OR
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
399 disable_class NEQ CGRLC_DISABLE_CLASS_CR )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
400 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
401 grr_data->tc.disable_class = disable_class;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
402 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
403 if ( disable_cause EQ TC_DC_CR_NETWORK)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
404 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
405 TRACE_EVENT("T3170 stopped if disable cause is NW CR");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
406 vsi_t_stop(GRR_handle,T3170);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
407 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
408 switch( state )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
409 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
410 case TC_CPAP:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
411 sig_tc_cpap_abort_access();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
412
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
413 SET_STATE( TC, TC_ACCESS_DISABLED );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
414
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
415 tc_cgrlc_disable_req(prim_st);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
416
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
417 callback_func( );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
418 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
419
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
420 case TC_WAIT_2P_ASSIGN:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
421 vsi_t_stop( GRR_handle, T3168 );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
422 #if defined REL99 AND defined TI_PS_FF_TBF_EST_PACCH
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
423 if(grr_data->tbf_type EQ CGRLC_TBF_MODE_2PA)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
424 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
425 tc_abort_tbf( grr_data->tbf_type );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
426 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
427 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
428 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
429 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
430 tc_stop_normal_burst_req( );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
431 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
432
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
433 SET_STATE( TC, TC_ACCESS_DISABLED );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
434
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
435 if( dc_class EQ DCC_SUSPEND )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
436 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
437 prim_st = CGRLC_PRIM_STATUS_ONE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
438 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
439 tc_cgrlc_disable_req(prim_st);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
440
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
441 grr_data->tc.disable_callback_func = callback_func;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
442 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
443
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
444 case TC_POLLING:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
445 case TC_WAIT_ASSIGN:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
446 tc_send_ra_stop_req( );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
447
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
448 SET_STATE( TC, TC_ACCESS_DISABLED );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
449
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
450 if( dc_class EQ DCC_SUSPEND )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
451 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
452 prim_st = CGRLC_PRIM_STATUS_ONE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
453 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
454 tc_cgrlc_disable_req(prim_st);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
455
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
456 callback_func( );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
457 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
458
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
459 case TC_CONTENTION_RESOLUTION:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
460 case TC_TBF_ACTIVE:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
461 TRACE_EVENT_P1( "SIG_CTRL_TC_ACCESS_DISABLE: %s of TBF",
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
462 dc_type EQ DCT_NORMAL ? "normal release" : "abort" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
463
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
464 if(!grr_data->tc.two_2p_w_4_tbf_con AND
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
465 ( dc_type NEQ DCT_NORMAL ))
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
466 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
467 TRACE_EVENT("SB SUSPEND Before TBF_C");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
468 tc_stop_normal_burst_req( );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
469 SET_STATE( TC, TC_ACCESS_DISABLED );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
470 if( dc_class EQ DCC_SUSPEND )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
471 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
472 prim_st = CGRLC_PRIM_STATUS_ONE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
473 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
474 tc_cgrlc_disable_req(prim_st);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
475 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
476 else if( dc_type NEQ DCT_NORMAL )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
477 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
478 if( grr_data->tc.num_of_rels_running EQ 0 OR
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
479 grr_data->tbf_type NEQ CGRLC_TBF_MODE_NULL )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
480 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
481 tc_abort_tbf( grr_data->tbf_type );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
482
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
483 SET_STATE( TC, TC_ACCESS_DISABLED );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
484 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
485 tc_cgrlc_disable_req(prim_st);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
486 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
487
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
488 grr_data->tc.disable_callback_func = callback_func;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
489 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
490
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
491 case TC_SINGLE_BLOCK:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
492 tc_stop_normal_burst_req( );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
493 tc_set_stop_all_ctrl_blk( );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
494
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
495 tc_cgrlc_disable_req(prim_st);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
496
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
497 SET_STATE( TC, TC_ACCESS_DISABLED );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
498
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
499 grr_data->tc.disable_callback_func = callback_func;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
500 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
501
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
502 case TC_PIM:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
503
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
504 tc_cgrlc_disable_req(prim_st);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
505
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
506 if( grr_data->tc.num_of_rels_running NEQ 0 )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
507 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
508 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
509 * disable request during TBF release procedure,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
510 * GRR is waiting for RRGRR_STOP_TASK_CNF
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
511 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
512 TRACE_EVENT( "SIG_CTRL_TC_ACCESS_DISABLE: TBF release procedure is running" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
513
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
514 grr_data->tc.disable_callback_func = callback_func;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
515 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
516 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
517 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
518 SET_STATE( TC, TC_ACCESS_DISABLED );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
519
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
520 callback_func( );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
521 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
522 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
523
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
524 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
525 TRACE_EVENT_P1( "SIG_CTRL_TC_ACCESS_DISABLE in TC state %d", state );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
526
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
527 /*lint -fallthrough*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
528
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
529 case TC_ACCESS_DISABLED:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
530 case TC_WAIT_STOP_TASK_CNF:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
531
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
532 tc_cgrlc_disable_req(prim_st);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
533
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
534 SET_STATE( TC, TC_ACCESS_DISABLED );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
535
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
536 if( grr_data->tc.disable_callback_func EQ NULL )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
537 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
538 callback_func( );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
539 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
540 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
541 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
542 grr_data->tc.disable_callback_func = callback_func;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
543 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
544 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
545 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
546 #ifdef _SIMULATION_
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
547 tc_stop_timer_t3172();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
548 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
549 } /* sig_ctrl_tc_access_disable() */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
550
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
551
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
552
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
553
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
554
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
555
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
556 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
557 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
558 | Function : sig_cpap_tc_error_pim
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
559 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
560 | Description : Handles the internal signal SIG_CPAP_TC_ERROR_PIM
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
561 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
562 | Parameters : void
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
563 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
564 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
565 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
566 GLOBAL void sig_cpap_tc_error_pim ( void )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
567 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
568 TRACE_ISIG( "sig_cpap_tc_error_pim" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
569
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
570 switch( GET_STATE( TC ) )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
571 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
572 case TC_CPAP:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
573 SET_STATE( TC, TC_PIM );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
574
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
575 tc_handle_error_pim();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
576 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
577
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
578 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
579 TRACE_ERROR( "SIG_CPAP_TC_ERROR_PIM unexpected" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
580 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
581 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
582 } /* sig_cpap_tc_error_pim() */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
583
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
584 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
585 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
586 | Function : sig_cpap_tc_tbf_created
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
587 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
588 | Description : Handles the internal signal SIG_CPAP_TC_TBF_CREATED
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
589 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
590 | Parameters : void
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
591 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
592 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
593 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
594 GLOBAL void sig_cpap_tc_tbf_created ( T_TBF_TYPE tbf_type )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
595 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
596 TRACE_ISIG( "sig_cpap_tc_tbf_created" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
597
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
598
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
599 switch( GET_STATE( TC ) )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
600 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
601 case TC_CPAP:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
602 switch(tbf_type)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
603 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
604 case CGRLC_TBF_MODE_UL:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
605 SET_STATE(TC,TC_CONTENTION_RESOLUTION);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
606 tc_activate_tbf(tbf_type);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
607 tc_cgrlc_ul_tbf_res(CGRLC_TBF_MODE_UL,CGRLC_PRIM_STATUS_NULL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
608 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
609 case CGRLC_TBF_MODE_DL:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
610 SET_STATE(TC,TC_TBF_ACTIVE);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
611 tc_activate_tbf(tbf_type);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
612 tc_cgrlc_dl_tbf_req();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
613 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
614 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
615 TRACE_ERROR("unknown tbf type! sig_cpap_tc_tbf_created");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
616 SET_STATE(TC,TC_PIM);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
617 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
618 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
619 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
620 case TC_PIM:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
621 switch(tbf_type)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
622 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
623 case CGRLC_TBF_MODE_UL:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
624 TRACE_ERROR("unexpected tbf type! sig_cpap_tc_tbf_created");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
625 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
626 case CGRLC_TBF_MODE_DL:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
627 SET_STATE(TC,TC_TBF_ACTIVE);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
628 tc_activate_tbf(tbf_type);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
629 tc_cgrlc_dl_tbf_req();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
630 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
631 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
632 TRACE_ERROR("unknown tbf type! sig_cpap_tc_tbf_created 2");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
633 SET_STATE(TC,TC_PIM);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
634 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
635 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
636 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
637 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
638 TRACE_ERROR( "SIG_CPAP_TC_TBF_CREATED unexpected" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
639 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
640 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
641 } /* sig_cpap_tc_tbf_created() */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
642
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
643
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
644
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
645
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
646
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
647 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
648 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
649 | Function : sig_ctrl_tc_ia_received
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
650 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
651 | Description : Handles the internal signal SIG_CTRL_TC_IA_RECEIVED
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
652 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
653 | Parameters : -
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
654 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
655 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
656 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
657 GLOBAL void sig_ctrl_tc_ia_received (T_RRGRR_IA_IND *rrgrr_ia_ind )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
658 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
659 TRACE_ISIG( "sig_ctrl_tc_ia_received" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
660
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
661 switch( GET_STATE( TC ) )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
662 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
663 case TC_CPAP:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
664 case TC_SINGLE_BLOCK:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
665 case TC_PIM:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
666 case TC_WAIT_ASSIGN:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
667 case TC_POLLING:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
668 case TC_WAIT_2P_ASSIGN:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
669 case TC_CONTENTION_RESOLUTION:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
670 case TC_TBF_ACTIVE:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
671 sig_tc_cpap_ia_received(rrgrr_ia_ind);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
672 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
673 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
674 TRACE_ERROR( "sig_ctrl_tc_ia_received unexpected" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
675 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
676 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
677 } /* sig_ctrl_tc_ia_received() */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
678
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
679
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
680 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
681 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
682 | Function : sig_ctrl_tc_iaext_received
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
683 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
684 | Description : Handles the internal signal SIG_CTRL_TC_IAEXT_RECEIVED
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
685 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
686 | Parameters : UBYTE indicates the valid immediate assignment
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
687 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
688 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
689 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
690 GLOBAL void sig_ctrl_tc_iaext_received ( T_RRGRR_IAEXT_IND *rrgrr_iaext_ind )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
691 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
692 TRACE_ISIG( "sig_ctrl_tc_iaext_received" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
693
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
694 switch( GET_STATE( TC ) )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
695 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
696 case TC_CPAP:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
697 sig_tc_cpap_iaext_received ( rrgrr_iaext_ind);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
698 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
699 case TC_SINGLE_BLOCK:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
700 case TC_PIM:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
701 case TC_WAIT_ASSIGN:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
702 case TC_POLLING:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
703 case TC_WAIT_2P_ASSIGN:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
704 case TC_CONTENTION_RESOLUTION:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
705 case TC_TBF_ACTIVE:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
706
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
707 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
708 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
709 TRACE_ERROR( "sig_ctrl_tc_iaext_received unexpected" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
710 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
711 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
712 } /* sig_ctrl_tc_iaext_received() */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
713
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
714 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
715 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
716 | Function : sig_ctrl_tc_iarej_received
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
717 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
718 | Description : Handles the internal signal sig_ctrl_tc_iarej_received
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
719 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
720 | Parameters : -
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
721 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
722 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
723 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
724 GLOBAL void sig_ctrl_tc_iarej_received(T_RRGRR_ASSIGNMENT_REJ_IND *rrgrr_assignment_rej_ind )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
725 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
726 TRACE_ISIG( "sig_ctrl_tc_iarej_received" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
727
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
728 switch( GET_STATE( TC ) )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
729 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
730 case TC_CPAP:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
731 sig_tc_cpap_iarej_received(rrgrr_assignment_rej_ind);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
732 if(grr_data->cc_running)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
733 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
734 SET_STATE(TC,TC_ACCESS_DISABLED)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
735 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
736 * todo:why state change: grlc will be disabled by sending ctrl_tc_disable
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
737 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
738 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
739 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
740 case TC_SINGLE_BLOCK:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
741 case TC_PIM:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
742 case TC_WAIT_ASSIGN:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
743 case TC_POLLING:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
744 case TC_WAIT_2P_ASSIGN:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
745 case TC_CONTENTION_RESOLUTION:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
746 case TC_TBF_ACTIVE:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
747
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
748 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
749 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
750 TRACE_ERROR( "sig_ctrl_tc_iarej_received unexpected" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
751 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
752 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
753
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
754 } /* sig_ctrl_tc_iarej_received() */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
755
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
756
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
757 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
758 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
759 | Function : sig_ctrl_tc_ia_downlink_received
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
760 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
761 | Description : Handles the internal signal SIG_CTRL_TC_IA_DOWNLINK_RECEIVED
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
762 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
763 | Parameters : -
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
764 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
765 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
766 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
767 GLOBAL void sig_ctrl_tc_ia_downlink_received (T_RRGRR_IA_DOWNLINK_IND *rrgrr_ia_downlink_in )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
768 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
769 TRACE_ISIG( "sig_ctrl_tc_ia_downlink_received" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
770
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
771
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
772 switch( GET_STATE( TC ) )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
773 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
774 case TC_CPAP:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
775 case TC_SINGLE_BLOCK:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
776 case TC_PIM:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
777 case TC_WAIT_ASSIGN:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
778 case TC_CONTENTION_RESOLUTION:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
779 case TC_TBF_ACTIVE:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
780 sig_tc_cpap_ia_downlink_received(rrgrr_ia_downlink_in);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
781 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
782 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
783 sig_tc_ctrl_send_stop_task_req( INVALID_MSG );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
784 TRACE_EVENT_P1( "sig_ctrl_tc_ia_downlink_received unexpected tc_state=%d", grr_data->tc.state);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
785 TRACE_ERROR( "sig_ctrl_tc_ia_downlink_received unexpected" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
786 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
787 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
788
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
789 } /* sig_ctrl_tc_ia_downlink_received() */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
790
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
791 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
792 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
793 | Function : sig_ctrl_tc_stop_task_cnf_received
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
794 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
795 | Description : Handles the internal signal SIG_CTRL_TC_STOP_TASK_CNF
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
796 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
797 | Parameters :
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
798 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
799 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
800 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
801 GLOBAL void sig_ctrl_tc_stop_task_cnf_received ( void )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
802 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
803 TRACE_ISIG( "sig_ctrl_tc_stop_task_cnf_received" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
804
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
805 switch( GET_STATE( TC ) )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
806 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
807 case TC_CPAP:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
808 case TC_PIM:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
809 sig_tc_cpap_stop_task_cnf_received();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
810 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
811 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
812 TRACE_ERROR( "SIG_CTRL_TC_STOP_TASK_CNF unexpected" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
813 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
814 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
815 } /* sig_ctrl_tc_stop_task_cnf_received() */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
816
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
817 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
818 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
819 | Function : sig_cpap_tc_send_stop_task_req
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
820 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
821 | Description : Handles the internal signal SIG_CTRL_TC_STOP_TASK_REQ
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
822 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
823 | Parameters :
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
824 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
825 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
826 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
827 GLOBAL void sig_cpap_tc_send_stop_task_req( UBYTE v_stop_ccch )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
828 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
829 TRACE_ISIG( "sig_cpap_tc_send_stop_task_req" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
830
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
831 sig_tc_ctrl_send_stop_task_req( v_stop_ccch );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
832
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
833 } /* sig_cpap_tc_send_stop_task_req() */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
834
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
835 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
836 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
837 | Function : sig_cpap_tc_channel_req
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
838 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
839 | Description : Handles the internal signal SIG_CPAP_TC_CHANNEL_REQ
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
840 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
841 | Parameters : req_data - data which RR has to send
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
842 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
843 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
844 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
845 GLOBAL void sig_cpap_tc_channel_req(UBYTE req_data )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
846 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
847 TRACE_ISIG( "sig_cpap_tc_channel_req" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
848
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
849 switch( GET_STATE( TC ) )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
850 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
851 case TC_CPAP:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
852 sig_tc_ctrl_channel_req(req_data);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
853 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
854 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
855 TRACE_ERROR( "sig_cpap_tc_channel_req unexpected" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
856 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
857 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
858 } /* sig_cpap_tc_channel_req() */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
859
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
860
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
861 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
862 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
863 | Function : sig_cpap_tc_assign_sb
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
864 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
865 | Description : Handles the internal signal SIG_CPAP_TC_ASSIGN_SB
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
866 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
867 | Parameters : void
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
868 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
869 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
870 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
871 GLOBAL void sig_cpap_tc_assign_sb(void *ptr2prim, UBYTE purpose)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
872 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
873 TRACE_ISIG( "sig_cpap_tc_assign_sb" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
874
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
875 switch( GET_STATE( TC ) )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
876 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
877 case TC_CPAP:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
878 if(TWO_PHASE_ACESS EQ purpose)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
879 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
880 SET_STATE(TC,TC_WAIT_2P_ASSIGN);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
881 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
882 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
883 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
884 SET_STATE(TC,TC_SINGLE_BLOCK);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
885 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
886
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
887 sig_tc_meas_update_pch( );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
888
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
889 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
890 T_MPHP_SINGLE_BLOCK_REQ* mphp_single_block_req = ( T_MPHP_SINGLE_BLOCK_REQ* )ptr2prim;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
891
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
892 TRACE_BINDUMP
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
893 ( hCommGRR, TC_USER4,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
894 cl_rlcmac_get_msg_name
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
895 ( ( UBYTE )( mphp_single_block_req->l2_frame[1] >> 2 ), RLC_MAC_ROUTE_UL ),
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
896 mphp_single_block_req->l2_frame, MAX_L2_FRAME_SIZE ); /*lint !e569*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
897 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
898
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
899 PSEND(hCommL1,ptr2prim);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
900 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
901 case TC_PIM:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
902 if(SINGLE_BLOCK_TRANSFER_DL EQ purpose)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
903 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
904 SET_STATE(TC,TC_SINGLE_BLOCK);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
905 PSEND(hCommL1,ptr2prim);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
906 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
907 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
908 { /* this shall never happen! */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
909 TRACE_ERROR("FATAL ERROR: single block assignment in wrong state!");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
910 PFREE(ptr2prim);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
911 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
912 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
913 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
914 TRACE_ERROR( "sig_cpap_tc_assign_sb unexpected" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
915 PFREE(ptr2prim);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
916 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
917 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
918 } /* sig_cpap_tc_assign_sb() */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
919
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
920 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
921 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
922 | Function : sig_ctrl_tc_pdch_assign_received
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
923 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
924 | Description : Handles the internal signal SIG_CTRL_TC_PDCH_ASSIGN_RECEIVED
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
925 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
926 | Parameters : fn - reception frame number
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
927 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
928 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
929 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
930 GLOBAL void sig_ctrl_tc_pdch_assign_received( T_RRGRR_DATA_IND *rrgrr_data_ind )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
931 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
932 TRACE_ISIG( "sig_ctrl_tc_pdch_assign_received" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
933
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
934 switch( GET_STATE( TC ) )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
935 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
936 case TC_CPAP:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
937 sig_tc_cpap_pdch_assign_received(rrgrr_data_ind);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
938 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
939
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
940 case TC_SINGLE_BLOCK:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
941 case TC_PIM:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
942 case TC_WAIT_ASSIGN:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
943 case TC_POLLING:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
944 case TC_WAIT_2P_ASSIGN:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
945 case TC_CONTENTION_RESOLUTION:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
946 case TC_TBF_ACTIVE:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
947 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
948 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
949 TRACE_ERROR( "sig_ctrl_tc_pdch_assign_received unexpected" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
950 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
951 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
952 } /* sig_ctrl_tc_pdch_assign_received() */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
953
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
954
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
955 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
956 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
957 | Function : sig_cpap_tc_dcch_data_req
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
958 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
959 | Description : Handles the internal signal SIG_CPAP_TC_DCCH_DATA_REQ
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
960 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
961 | Parameters : pointer - to primitive with data
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
962 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
963 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
964 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
965 GLOBAL void sig_cpap_tc_dcch_data_req( T_RRGRR_DATA_REQ * rrgrr_data_req_i )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
966 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
967 TRACE_ISIG( "sig_cpap_tc_dcch_data_req" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
968
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
969 switch( GET_STATE( TC ) )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
970 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
971 case TC_CPAP:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
972 sig_tc_ctrl_dcch_data_req(rrgrr_data_req_i);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
973 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
974 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
975 TRACE_ERROR( "sig_cpap_tc_dcch_data_req unexpected" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
976 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
977 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
978 } /* sig_cpap_tc_dcch_data_req() */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
979
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
980
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
981 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
982 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
983 | Function : sig_cpap_tc_assign_pdch
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
984 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
985 | Description : Handles the internal signal SIG_CPAP_TC_ASSIGN_PDCH
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
986 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
987 | Parameters : void
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
988 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
989 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
990 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
991 GLOBAL void sig_cpap_tc_assign_pdch(T_MPHP_ASSIGNMENT_REQ *ptr2prim,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
992 T_PDCH_ASS_CAUSE cause )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
993 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
994 TRACE_ISIG( "sig_cpap_tc_assign_pdch" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
995
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
996 switch( GET_STATE( TC ) )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
997 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
998 case TC_CPAP:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
999 grr_data->tc.dcch_present = FALSE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1000 if( (PDCH_UL_ASS_CMD EQ cause) OR (PDCH_DL_ASS_CMD EQ cause) )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1001 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1002 grr_data->tc.dcch_present = TRUE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1003 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1004
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1005 PSEND(hCommL1,ptr2prim);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1006 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1007 case TC_PIM:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1008 grr_data->tc.dcch_present = FALSE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1009 if((IA_UL EQ cause) OR (PDCH_UL_ASS_CMD EQ cause))
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1010 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1011 PFREE(ptr2prim);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1012 TRACE_ERROR( "uplink assignments unexpected in PIM" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1013 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1014 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1015 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1016 if((PDCH_DL_ASS_CMD EQ cause))
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1017 grr_data->tc.dcch_present = TRUE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1018
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1019 PSEND(hCommL1,ptr2prim);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1020 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1021 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1022 case TC_WAIT_ASSIGN:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1023 case TC_POLLING:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1024 case TC_WAIT_2P_ASSIGN:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1025 case TC_CONTENTION_RESOLUTION:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1026 case TC_TBF_ACTIVE:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1027 TRACE_ERROR( "sig_cpap_tc_assign_pdch unexpected" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1028 PFREE(ptr2prim);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1029 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1030 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1031 TRACE_ERROR( "sig_cpap_tc_assign_pdch unexpected" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1032 FREE(ptr2prim);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1033 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1034 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1035 } /* sig_cpap_tc_assign_pdch() */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1036
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1037
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1038 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1039 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1040 | Function : sig_cpap_tc_suspend_dedi_chan
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1041 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1042 | Description : Handles the internal signal SIG_CPAP_TC_SUSPEND_DEDI_CHAN
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1043 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1044 | Parameters : void
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1045 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1046 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1047 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1048 GLOBAL void sig_cpap_tc_suspend_dedi_chan(void )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1049 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1050 TRACE_ISIG( "sig_cpap_tc_suspend_dedi_chan" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1051
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1052 switch( GET_STATE( TC ) )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1053 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1054 case TC_CPAP:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1055 sig_tc_ctrl_suspend_dedi_chan();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1056 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1057 case TC_SINGLE_BLOCK:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1058 case TC_PIM:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1059 case TC_WAIT_ASSIGN:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1060 case TC_POLLING:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1061 case TC_WAIT_2P_ASSIGN:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1062 case TC_CONTENTION_RESOLUTION:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1063 case TC_TBF_ACTIVE:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1064 TRACE_ERROR( "sig_cpap_tc_suspend_dedi_chan unexpected" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1065
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1066 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1067 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1068 TRACE_ERROR( "sig_cpap_tc_suspend_dedi_chan unexpected" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1069 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1070 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1071 } /* sig_cpap_tc_suspend_dedi_chan() */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1072
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1073
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1074 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1075 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1076 | Function : sig_cpap_tc_resume_dedi_chan
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1077 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1078 | Description : Handles the internal signal SIG_CPAP_TC_RESUME_DEDI_CHAN
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1079 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1080 | Parameters : void
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1081 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1082 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1083 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1084 GLOBAL void sig_cpap_tc_resume_dedi_chan(void )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1085 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1086 TRACE_ISIG( "sig_cpap_tc_resume_dedi_chan" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1087
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1088 switch( GET_STATE( TC ) )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1089 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1090 case TC_CPAP:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1091 sig_tc_ctrl_resume_dedi_chan();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1092 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1093 case TC_SINGLE_BLOCK:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1094 case TC_PIM:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1095 case TC_WAIT_ASSIGN:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1096 case TC_POLLING:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1097 case TC_WAIT_2P_ASSIGN:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1098 case TC_CONTENTION_RESOLUTION:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1099 case TC_TBF_ACTIVE:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1100 TRACE_ERROR( "sig_cpap_tc_resume_dedi_chan unexpected" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1101
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1102 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1103 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1104 TRACE_ERROR( "sig_cpap_tc_resume_dedi_chan unexpected" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1105 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1106 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1107 } /* sig_cpap_tc_resume_dedi_chan() */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1108
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1109
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1110 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1111 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1112 | Function : sig_cpap_tc_send_gprs_data_req
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1113 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1114 | Description : Handles the internal signal SIG_CPAP_TC_SEND_GPRS_DATA_REQ
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1115 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1116 | Parameters : void
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1117 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1118 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1119 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1120 GLOBAL void sig_cpap_tc_send_gprs_data_req(T_RRGRR_GPRS_DATA_REQ *rrgrr_gprs_data_req)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1121 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1122 TRACE_ISIG( "sig_cpap_tc_send_gprs_data_req" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1123
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1124 switch( GET_STATE( TC ) )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1125 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1126 case TC_CPAP:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1127 sig_tc_ctrl_gprs_data_req(rrgrr_gprs_data_req);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1128 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1129 case TC_SINGLE_BLOCK:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1130 case TC_PIM:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1131 case TC_WAIT_ASSIGN:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1132 case TC_POLLING:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1133 case TC_WAIT_2P_ASSIGN:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1134 case TC_CONTENTION_RESOLUTION:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1135 case TC_TBF_ACTIVE:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1136 TRACE_ERROR( "sig_cpap_tc_send_gprs_data_req unexpected" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1137
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1138 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1139 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1140 TRACE_ERROR( "sig_cpap_tc_send_gprs_data_req unexpected" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1141 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1142 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1143 } /* sig_cpap_tc_send_gprs_data_req() */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1144
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1145
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1146 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1147 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1148 | Function : sig_ctrl_tc_suspend_dcch_cnf
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1149 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1150 | Description : Handles the internal signal SIG_CTRL_TC_SUSPEND_DCCH_CNF
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1151 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1152 | Parameters : void
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1153 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1154 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1155 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1156 GLOBAL void sig_ctrl_tc_suspend_dcch_cnf(void)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1157 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1158 TRACE_ISIG( "sig_ctrl_tc_suspend_dcch_cnf" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1159
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1160 switch( GET_STATE( TC ) )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1161 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1162 case TC_CPAP:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1163 sig_tc_cpap_suspend_dcch_cnf();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1164 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1165 case TC_SINGLE_BLOCK:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1166 case TC_PIM:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1167 case TC_WAIT_ASSIGN:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1168 case TC_POLLING:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1169 case TC_WAIT_2P_ASSIGN:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1170 case TC_CONTENTION_RESOLUTION:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1171 case TC_TBF_ACTIVE:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1172 TRACE_ERROR( "sig_ctrl_tc_suspend_dcch_cnf unexpected" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1173
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1174 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1175 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1176 TRACE_ERROR( "sig_ctrl_tc_suspend_dcch_cnf unexpected" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1177 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1178 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1179 } /* sig_ctrl_tc_suspend_dcch_cnf() */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1180
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1181 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1182 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1183 | Function : sig_cpap_tc_build_res_req
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1184 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1185 | Description : Handles the internal signal SIG_CPAP_TC_BUILD_RES_REQ
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1186 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1187 | Parameters : void
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1188 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1189 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1190 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1191 GLOBAL void sig_cpap_tc_build_res_req(T_U_RESOURCE_REQ *ptr2res_req)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1192 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1193 TRACE_ISIG( "sig_cpap_tc_build_res_req" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1194
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1195 switch( GET_STATE( TC ) )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1196 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1197 case TC_CPAP:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1198 tc_build_res_req( ptr2res_req,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1199 R_BUILD_2PHASE_ACCESS,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1200 SRC_TBF_INFO_IMM_ASSIGN );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1201 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1202 case TC_SINGLE_BLOCK:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1203 case TC_PIM:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1204 case TC_WAIT_ASSIGN:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1205 case TC_POLLING:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1206 case TC_WAIT_2P_ASSIGN:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1207 case TC_CONTENTION_RESOLUTION:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1208 case TC_TBF_ACTIVE:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1209 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1210 TRACE_ERROR( "sig_cpap_tc_build_res_req unexpected" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1211 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1212 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1213 } /* sig_cpap_tc_build_res_req() */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1214
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1215
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1216 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1217 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1218 | Function : sig_cpap_tc_ctrl_ptm
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1219 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1220 | Description : Handles the internal signal SIG_CPAP_TC_CTRL_PTM
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1221 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1222 | Parameters : void
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1223 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1224 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1225 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1226 GLOBAL void sig_cpap_tc_ctrl_ptm(void)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1227 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1228 TRACE_ISIG( "sig_cpap_tc_ctrl_ptm" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1229
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1230 switch( GET_STATE( TC ) )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1231 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1232 case TC_CPAP:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1233 case TC_PIM:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1234 sig_tc_ctrl_set_pckt_mode( GLBL_PCKT_MODE_TRANSFER, TASK_STOP_DUMMY_VALUE );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1235 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1236 case TC_SINGLE_BLOCK:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1237 case TC_WAIT_ASSIGN:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1238 case TC_POLLING:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1239 case TC_WAIT_2P_ASSIGN:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1240 case TC_CONTENTION_RESOLUTION:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1241 case TC_TBF_ACTIVE:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1242 TRACE_ERROR( "sig_cpap_tc_ctrl_ptm unexpected" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1243
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1244 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1245 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1246 TRACE_ERROR( "sig_cpap_tc_ctrl_ptm unexpected" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1247 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1248 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1249 } /* sig_cpap_tc_ctrl_ptm() */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1250
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1251
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1252
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1253 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1254 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1255 | Function : sig_gfp_tc_fix_alloc_ack_ptm
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1256 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1257 | Description : Handles the internal signal SIG_GFP_TC_FIX_ALLOC_ACK_PTM
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1258 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1259 | Parameters : void
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1260 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1261 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1262 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1263 GLOBAL void sig_gfp_tc_fix_alloc_ack_ptm( void )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1264 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1265 MCAST(d_ul_ack,D_UL_ACK);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1266 TRACE_ISIG( "sig_ru_tc_fix_alloc_ack" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1267
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1268 grr_data->uplink_tbf.cs_mode = d_ul_ack->gprs_ul_ack_nack_info.chan_coding_cmd;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1269
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1270 switch( GET_STATE( TC ) )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1271 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1272 case TC_CONTENTION_RESOLUTION:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1273 case TC_TBF_ACTIVE:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1274 if(d_ul_ack->gprs_ul_ack_nack_info.v_f_alloc_ack EQ 0 )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1275 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1276 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1277 * if no fix alloc is present in last uplink ack/nack, delete any existing repeat alloc
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1278 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1279 if(grr_data->tc.fa_ctrl.fa_type EQ FA_REPEAT)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1280 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1281 /*kill reapeat alloc, which is not yet started*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1282 grr_data->tc.fa_ctrl.fa_type = FA_NO_NEXT;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1283 grr_data->tc.fa_ctrl.repeat_alloc = FALSE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1284 tc_send_ul_repeat_alloc_req();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1285 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1286 else if(grr_data->tc.fa_ctrl.fa_type EQ FA_NO_NEXT AND
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1287 grr_data->tc.fa_ctrl.repeat_alloc EQ TRUE )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1288 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1289 if(!grr_check_if_tbf_start_is_elapsed ( grr_data->tc.fa_ctrl.current_alloc.alloc_start_fn, grr_data->ul_fn))
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1290 /*grr_data->tc.fa_ctrl.ul_res_remain EQ grr_data->tc.fa_ctrl.current_alloc.ul_res_sum*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1291 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1292 /*kill reapeat alloc if is not yet started*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1293 grr_data->tc.fa_ctrl.fa_type = FA_NO_CURRENT;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1294 grr_data->tc.fa_ctrl.repeat_alloc = FALSE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1295 tc_send_ul_repeat_alloc_req();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1296 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1297 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1298 return;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1299 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1300
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1301 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1302 * check if current allocation is active
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1303 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1304 if(grr_data->tc.fa_ctrl.fa_type EQ FA_NO_CURRENT AND
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1305 d_ul_ack->gprs_ul_ack_nack_info.f_alloc_ack.v_ts_overr )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1306 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1307 ULONG next_start_fn;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1308 ULONG next_end_fn;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1309 /* repeat allocation in packet uplink ack/nack received,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1310 * no fixed allocation active, find out the next natural boundary
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1311 * and store new allocation in current allocation
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1312 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1313 grr_data->tc.fa_ctrl.fa_type = FA_NO_NEXT;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1314 grr_data->tc.fa_ctrl.repeat_alloc = TRUE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1315 grr_data->tc.fa_ctrl.ts_overr = d_ul_ack->gprs_ul_ack_nack_info.f_alloc_ack.ts_overr;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1316 tc_set_fa_bitmap((UBYTE)(d_ul_ack->gprs_ul_ack_nack_info.f_alloc_ack.ts_overr & grr_data->uplink_tbf.ts_usage),
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1317 &grr_data->tc.fa_ctrl.current_alloc);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1318 /*find start of alloc (natural boundary of next allocation)*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1319 next_end_fn = grr_data->tc.fa_ctrl.current_alloc.alloc_end_fn;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1320 do
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1321 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1322 USHORT len;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1323 len = grr_data->tc.fa_ctrl.current_alloc.alloc.size_bitmap-1;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1324 next_start_fn = grr_decode_tbf_start_rel(next_end_fn,0);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1325 next_end_fn = grr_decode_tbf_start_rel(next_start_fn,(USHORT)(len-1));
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1326 if(grr_data->ul_fn EQ next_start_fn)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1327 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1328 else if((next_end_fn > next_start_fn) AND
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1329 (grr_data->ul_fn <= next_start_fn) AND
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1330 (grr_data->ul_fn > next_start_fn) )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1331 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1332 next_start_fn = grr_decode_tbf_start_rel(next_end_fn,0);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1333 next_end_fn = grr_decode_tbf_start_rel(next_start_fn,(USHORT)(len-1));
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1334 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1335 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1336 else if( (next_end_fn < next_start_fn) AND
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1337 (
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1338 ((next_end_fn >= grr_data->ul_fn) AND (next_start_fn > grr_data->ul_fn)) OR
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1339 ((next_end_fn < grr_data->ul_fn) AND (next_start_fn < grr_data->ul_fn))
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1340 )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1341 )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1342 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1343 next_start_fn = grr_decode_tbf_start_rel(next_end_fn,0);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1344 next_end_fn = grr_decode_tbf_start_rel(next_start_fn,(USHORT)(len-1));
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1345 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1346 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1347 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1348 while (1);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1349 grr_data->tc.fa_ctrl.current_alloc.alloc_start_fn = next_start_fn;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1350 grr_data->tc.fa_ctrl.current_alloc.alloc_end_fn = next_end_fn;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1351 tc_send_ul_repeat_alloc_req();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1352 return;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1353 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1354 else if(d_ul_ack->gprs_ul_ack_nack_info.f_alloc_ack.v_ts_overr )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1355 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1356 UBYTE len;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1357 /* repeat allocation in packet uplink ack/nack received,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1358 * current allocation is active, store new alloc in next alloc
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1359 * overwriting is possibe.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1360 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1361 grr_data->tc.fa_ctrl.fa_type = FA_REPEAT;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1362 grr_data->tc.fa_ctrl.repeat_alloc = TRUE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1363 grr_data->tc.fa_ctrl.ts_overr = d_ul_ack->gprs_ul_ack_nack_info.f_alloc_ack.ts_overr;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1364 tc_set_fa_bitmap((UBYTE)(d_ul_ack->gprs_ul_ack_nack_info.f_alloc_ack.ts_overr & grr_data->uplink_tbf.ts_usage),&grr_data->tc.fa_ctrl.current_alloc);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1365
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1366 grr_data->tc.fa_ctrl.current_alloc.alloc_start_fn =
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1367 grr_decode_tbf_start_rel(grr_data->tc.fa_ctrl.current_alloc.alloc_end_fn,0);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1368 len = grr_data->tc.fa_ctrl.current_alloc.alloc.size_bitmap-1;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1369 grr_data->tc.fa_ctrl.current_alloc.alloc_end_fn =
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1370 grr_decode_tbf_start_rel(grr_data->tc.fa_ctrl.current_alloc.alloc_start_fn,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1371 (USHORT)(len-1));
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1372 tc_send_ul_repeat_alloc_req();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1373 return;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1374 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1375 grr_data->tc.fa_ctrl.repeat_alloc = FALSE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1376 if( d_ul_ack->gprs_ul_ack_nack_info.f_alloc_ack.v_fa_s2 )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1377 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1378 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1379 * new fixed allocation with allocation bitmap
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1380 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1381 if(d_ul_ack->gprs_ul_ack_nack_info.f_alloc_ack.fa_s2.v_ts_alloc)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1382 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1383 UBYTE tx_slots;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1384 tx_slots = grr_calc_nr_of_set_bits (d_ul_ack->gprs_ul_ack_nack_info.f_alloc_ack.fa_s2.ts_alloc);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1385 grr_data->uplink_tbf.nts = tx_slots;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1386 grr_data->uplink_tbf.ts_usage = d_ul_ack->gprs_ul_ack_nack_info.f_alloc_ack.fa_s2.ts_alloc;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1387 if(!handle_ms_cap(UL_ASSIGNMENT))
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1388 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1389 TRACE_ERROR( "TS_ALLOC not valid" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1390 return;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1391 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1392 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1393 tc_handle_tbf_start(CGRLC_TBF_MODE_UL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1394 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1395 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1396 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1397 TRACE_EVENT("NO FIX ALLOC STRUCT IN D_UL_ACK " );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1398 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1399 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1400 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1401 TRACE_ERROR( "sig_ru_tc_fix_alloc_ack unexpected" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1402 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1403 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1404
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1405
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1406
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1407 } /* sig_gfp_tc_fix_alloc_ack_ptm() */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1408
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1409
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1410
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1411 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1412 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1413 | Function : sig_ctrl_tc_reconnect_cnf
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1414 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1415 | Description : Cell reselection has failled and we have to inform cpap
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1416 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1417 | Parameters : void
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1418 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1419 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1420 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1421
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1422 GLOBAL void sig_ctrl_tc_reconnect_dcch_cnf()
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1423 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1424 TRACE_ISIG( "sig_ctrl_tc_reconnect_cnf" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1425 switch( GET_STATE( TC ) )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1426 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1427 case TC_CONTENTION_RESOLUTION:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1428 case TC_TBF_ACTIVE:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1429 case TC_WAIT_ASSIGN:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1430 SET_STATE(TC, TC_ACCESS_DISABLED);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1431 sig_tc_cpap_reconnect_ind();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1432 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1433 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1434 TRACE_ERROR( "sig_ctrl_tc_reconnect_cnf unexpected" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1435 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1436 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1437 /*sig_ctrl_tc_reconnect_dcch_cnf()*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1438
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1439 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1440 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1441 | Function : sig_ctrl_tc_cr_timerout_cnf
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1442 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1443 | Description : Cell reselection has failled because of timer out
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1444 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1445 | Parameters : void
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1446 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1447 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1448 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1449
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1450 GLOBAL void sig_ctrl_tc_cr_timerout_cnf()
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1451 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1452 TRACE_ISIG( "sig_ctrl_tc_cr_timerout_cnf" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1453 switch( GET_STATE( TC ) )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1454 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1455 case TC_CONTENTION_RESOLUTION:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1456 case TC_TBF_ACTIVE:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1457 case TC_WAIT_ASSIGN:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1458 tc_abort_tbf(grr_data->tbf_type);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1459 SET_STATE(TC, TC_ACCESS_DISABLED);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1460 sig_tc_cpap_reconnect_ind();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1461 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1462 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1463 TRACE_ERROR( "sig_ctrl_cr_timerout_cnf unexpected" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1464 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1465
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1466
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1467 }/*sig_ctrl_tc_cr_timerout_cnf()*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1468
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1469
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1470
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1471 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1472 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1473 | Function : sig_ctrl_tc_abnorm_rel_with_cr_failed
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1474 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1475 | Description : Handles the internal signal
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1476 | SIG_CTRL_TC_ABNORM_REL_WITH_CR_FAILED
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1477 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1478 | Parameters :
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1479 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1480 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1481 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1482 GLOBAL BOOL sig_ctrl_tc_abnorm_rel_with_cr_failed ( BOOL cell_has_changed )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1483 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1484 TRACE_ISIG( "sig_ctrl_tc_abnorm_rel_with_cr_failed" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1485
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1486 switch( GET_STATE( TC ) )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1487 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1488 case TC_ACCESS_DISABLED:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1489 SET_STATE_TC_PIM_AFTER_ACCESS_DISABLED
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1490 ( cell_has_changed, CGRLC_ENAC_ABNORM_RELEASE_CRESELECT_FAILED );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1491 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1492
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1493 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1494 TRACE_ERROR( "SIG_CTRL_TC_ABNORM_REL_WITH_CR_FAILED unexpected" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1495 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1496 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1497
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1498 return( TRUE );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1499 } /* sig_ctrl_tc_abnorm_rel_with_cr_failed() */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1500
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1501
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1502
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1503 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1504 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1505 | Function : sig_cpap_tc_start_T3142
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1506 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1507 | Description : Handles the internal signal SIG_CPAP_TC_START_T3142,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1508 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1509 | Parameters : void
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1510 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1511 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1512 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1513 GLOBAL void sig_cpap_tc_start_T3142(ULONG wait)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1514 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1515 TRACE_ISIG( "sig_cpap_tc_start_T3142" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1516
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1517 tc_start_timer_t3172(wait);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1518 sig_tc_ctrl_t3172_running();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1519
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1520 } /* sig_cpap_tc_start_T3142 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1521
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1522
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1523
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1524 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1525 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1526 | Function : sig_cpap_tc_stop_T3142
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1527 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1528 | Description : Handles the internal signal SIG_CPAP_TC_STOP_T3142,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1529 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1530 | Parameters : void
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1531 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1532 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1533 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1534 GLOBAL void sig_cpap_tc_stop_T3142(void)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1535 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1536 TRACE_ISIG( "sig_cpap_tc_stop_T3142" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1537
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1538
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1539 } /* sig_cpap_tc_stop_T3142 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1540
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1541
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1542
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1543
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1544 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1545 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1546 | Function : sig_ctrl_tc_disable_prim_queue
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1547 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1548 | Description : Handles the internal signal SIG_CTRL_TC_DISABLE_PRIM_QUEUE
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1549 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1550 | Parameters : void
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1551 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1552 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1553 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1554 GLOBAL BOOL sig_ctrl_tc_disable_prim_queue ( BOOL cell_has_changed )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1555 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1556 TRACE_EVENT( "sig_ctrl_tc_disable_prim_queue" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1557
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1558 switch( GET_STATE( TC ) )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1559 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1560 case TC_ACCESS_DISABLED:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1561 SET_STATE_TC_PIM_AFTER_ACCESS_DISABLED( cell_has_changed,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1562 CGRLC_ENAC_NORMAL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1563 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1564 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1565 TRACE_ERROR( "SIG_CTRL_TC_DISABLE_PRIM_QUEUE unexpected" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1566 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1567 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1568
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1569 return( TRUE);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1570 } /* sig_ctrl_tc_disable_prim_queue() */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1571
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1572
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1573
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1574
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1575
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1576 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1577 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1578 | Function : sig_meas_tc_update_ta_req
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1579 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1580 | Description : Handles the internal signal SIG_MEAS_TC_UPDATE_TA_REQ.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1581 | New TA values are received, it shall passed to l1
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1582 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1583 | Parameters :
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1584 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1585 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1586 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1587 GLOBAL void sig_meas_tc_update_ta_req ( void)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1588 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1589 MCAST(d_ctrl_pwr_ta,D_CTRL_PWR_TA); /* T_D_CTRL_PWR_TA */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1590
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1591 TRACE_FUNCTION( "tc_send_reconf_tbf_ta_req" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1592
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1593 TRACE_EVENT_P9("TAU: %d tav=%d - %d %d %d - %d %d %d tbf_type=%d"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1594 ,d_ctrl_pwr_ta->gpta.v_ta_value
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1595 ,d_ctrl_pwr_ta->gpta.ta_value
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1596 ,d_ctrl_pwr_ta->gpta.v_ul_ta_index
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1597 ,d_ctrl_pwr_ta->gpta.ul_ta_index
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1598 ,d_ctrl_pwr_ta->gpta.ul_ta_tn
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1599 ,d_ctrl_pwr_ta->gpta.v_dl_ta_index
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1600 ,d_ctrl_pwr_ta->gpta.dl_ta_index
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1601 ,d_ctrl_pwr_ta->gpta.dl_ta_tn
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1602 ,grr_data->tbf_type );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1603 switch(grr_data->tbf_type)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1604 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1605 case CGRLC_TBF_MODE_DL_UL:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1606 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1607 PALLOC(mphp_timing_advance_req,MPHP_TIMING_ADVANCE_REQ);/* T_MPHP_TIMING_ADVANCE_REQ */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1608 mphp_timing_advance_req->assign_id = 0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1609 grr_handle_ta ( d_ctrl_pwr_ta->gpta.v_ta_value,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1610 d_ctrl_pwr_ta->gpta.ta_value,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1611 d_ctrl_pwr_ta->gpta.v_ul_ta_index,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1612 d_ctrl_pwr_ta->gpta.ul_ta_index,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1613 d_ctrl_pwr_ta->gpta.ul_ta_tn,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1614 d_ctrl_pwr_ta->gpta.v_dl_ta_index,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1615 d_ctrl_pwr_ta->gpta.dl_ta_index,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1616 d_ctrl_pwr_ta->gpta.dl_ta_tn,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1617 &mphp_timing_advance_req->p_timing_advance);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1618 PSEND(hCommL1,mphp_timing_advance_req);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1619 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1620 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1621 case CGRLC_TBF_MODE_DL:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1622 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1623 PALLOC(mphp_timing_advance_req,MPHP_TIMING_ADVANCE_REQ);/* T_MPHP_TIMING_ADVANCE_REQ */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1624 mphp_timing_advance_req->assign_id = 0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1625 if(d_ctrl_pwr_ta->gpta.v_ul_ta_index)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1626 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1627 d_ctrl_pwr_ta->gpta.v_ul_ta_index = 0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1628 TRACE_EVENT("TAU: only dl tbf is running, ul ta index present");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1629 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1630 if(!d_ctrl_pwr_ta->gpta.v_dl_ta_index)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1631 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1632 TRACE_EVENT("TAU: only dl tbf is running, no dl ta index present");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1633 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1634 grr_handle_ta ( d_ctrl_pwr_ta->gpta.v_ta_value,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1635 d_ctrl_pwr_ta->gpta.ta_value,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1636 d_ctrl_pwr_ta->gpta.v_ul_ta_index,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1637 d_ctrl_pwr_ta->gpta.ul_ta_index,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1638 d_ctrl_pwr_ta->gpta.ul_ta_tn,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1639 d_ctrl_pwr_ta->gpta.v_dl_ta_index,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1640 d_ctrl_pwr_ta->gpta.dl_ta_index,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1641 d_ctrl_pwr_ta->gpta.dl_ta_tn,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1642 &mphp_timing_advance_req->p_timing_advance);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1643 PSEND(hCommL1,mphp_timing_advance_req);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1644 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1645 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1646 case CGRLC_TBF_MODE_UL:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1647 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1648 PALLOC(mphp_timing_advance_req,MPHP_TIMING_ADVANCE_REQ);/* T_MPHP_TIMING_ADVANCE_REQ */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1649 mphp_timing_advance_req->assign_id = 0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1650 if(d_ctrl_pwr_ta->gpta.v_dl_ta_index)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1651 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1652 d_ctrl_pwr_ta->gpta.v_dl_ta_index = 0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1653 TRACE_EVENT("TAU: only ul tbf is running, dl ta index present");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1654 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1655 if(!d_ctrl_pwr_ta->gpta.v_ul_ta_index)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1656 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1657 TRACE_EVENT("TAU: only ul tbf is running, no ul ta index present");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1658 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1659 grr_handle_ta ( d_ctrl_pwr_ta->gpta.v_ta_value,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1660 d_ctrl_pwr_ta->gpta.ta_value,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1661 d_ctrl_pwr_ta->gpta.v_ul_ta_index,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1662 d_ctrl_pwr_ta->gpta.ul_ta_index,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1663 d_ctrl_pwr_ta->gpta.ul_ta_tn,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1664 d_ctrl_pwr_ta->gpta.v_dl_ta_index,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1665 d_ctrl_pwr_ta->gpta.dl_ta_index,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1666 d_ctrl_pwr_ta->gpta.dl_ta_tn,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1667 &mphp_timing_advance_req->p_timing_advance);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1668 PSEND(hCommL1,mphp_timing_advance_req);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1669 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1670 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1671 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1672 TRACE_ERROR ( "sig_meas_tc_update_ta_req: TBF type is invalid" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1673 TRACE_EVENT_P1 ( "TBF type = %d",grr_data->tbf_type );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1674 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1675 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1676 } /* sig_meas_tc_update_ta_req() */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1677
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1678
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1679 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1680 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1681 | Function : sig_gfp_tc_update_ta_req_ptm
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1682 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1683 | Description : Handles the internal signal SIG_GFP_TC_UPDATE_TA_REQ_PTM.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1684 | New TA values are received, it shall passed to l1
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1685 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1686 | Parameters :
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1687 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1688 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1689 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1690 GLOBAL void sig_gfp_tc_update_ta_req_ptm ( void)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1691 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1692 MCAST(d_ul_ack,D_UL_ACK);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1693 PALLOC(mphp_timing_advance_req,MPHP_TIMING_ADVANCE_REQ);/* T_MPHP_TIMING_ADVANCE_REQ */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1694
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1695 TRACE_FUNCTION( "tc_send_reconf_tbf_ta_req" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1696
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1697 mphp_timing_advance_req->assign_id = 0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1698
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1699 grr_handle_ta ( d_ul_ack->gprs_ul_ack_nack_info.pta.v_ta_value,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1700 d_ul_ack->gprs_ul_ack_nack_info.pta.ta_value,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1701 d_ul_ack->gprs_ul_ack_nack_info.pta.v_ta_index_tn,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1702 d_ul_ack->gprs_ul_ack_nack_info.pta.ta_index_tn.ta_index,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1703 d_ul_ack->gprs_ul_ack_nack_info.pta.ta_index_tn.ta_tn,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1704 0xFF,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1705 0,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1706 0,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1707 &mphp_timing_advance_req->p_timing_advance);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1708 PSEND(hCommL1,mphp_timing_advance_req);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1709 } /* sig_gfp_tc_update_ta_req_ptm() */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1710
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1711
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1712 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1713 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1714 | Function : sig_ctrl_tc_enter_pam
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1715 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1716 | Description : Handles the internal signal SIG_CTRL_TC_ENTER_PAM.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1717 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1718 | Parameters :
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1719 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1720 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1721 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1722 GLOBAL void sig_ctrl_tc_enter_pam ( void )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1723 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1724 TRACE_ISIG( "sig_ctrl_tc_enter_pam" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1725
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1726 switch( GET_STATE( TC ) )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1727 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1728 case TC_WAIT_STOP_TASK_CNF:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1729 if( grr_is_pbcch_present( ) )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1730 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1731 if( grr_data->tc.last_eval_assign.tbf_type EQ CGRLC_TBF_MODE_DL )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1732 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1733 sig_tc_ctrl_set_pckt_mode( GLBL_PCKT_MODE_ASSIGNED,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1734 grr_data->tc.last_eval_assign.ccch_read );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1735 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1736 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1737 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1738 SET_STATE( TC, TC_WAIT_ASSIGN );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1739 vsi_t_start( GRR_handle, T3186, T3186_VALUE );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1740 tc_send_ra_req( );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1741 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1742 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1743 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1744 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1745 SET_STATE( TC, TC_CPAP );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1746 sig_tc_cpap_acc_req( );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1747 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1748 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1749
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1750 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1751 TRACE_ERROR( "SIG_CTRL_TC_ENTER_PAM unexpected" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1752 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1753 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1754 } /* sig_ctrl_tc_enter_pam() */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1755
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1756 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1757 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1758 | Function : sig_ctrl_tc_leave_to_ptm
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1759 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1760 | Description : Handles the internal signal SIG_CTRL_TC_LEAVE_TO_PTM
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1761 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1762 | Parameters :
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1763 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1764 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1765 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1766 GLOBAL void sig_ctrl_tc_leave_to_ptm ( void )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1767 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1768 TRACE_ISIG( "sig_ctrl_tc_leave_to_ptm" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1769
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1770 switch( GET_STATE( TC ) )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1771 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1772 case TC_WAIT_STOP_TASK_CNF:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1773 tc_mfree_assign( TRUE );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1774
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1775 #ifdef _SIMULATION_
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1776
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1777 switch( grr_data->tc.last_eval_assign.state )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1778 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1779 case TC_ACCESS_DISABLED : SET_STATE( TC, TC_ACCESS_DISABLED ); break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1780 case TC_CPAP : SET_STATE( TC, TC_CPAP ); break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1781 case TC_PIM : SET_STATE( TC, TC_PIM ); break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1782 case TC_WAIT_ASSIGN : SET_STATE( TC, TC_WAIT_ASSIGN ); break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1783 case TC_POLLING : SET_STATE( TC, TC_POLLING ); break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1784 case TC_WAIT_2P_ASSIGN : SET_STATE( TC, TC_WAIT_2P_ASSIGN ); break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1785 case TC_CONTENTION_RESOLUTION: SET_STATE( TC, TC_CONTENTION_RESOLUTION ); break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1786 case TC_TBF_ACTIVE : SET_STATE( TC, TC_TBF_ACTIVE); break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1787 case TC_SINGLE_BLOCK : SET_STATE( TC, TC_SINGLE_BLOCK); break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1788 case TC_WAIT_STOP_TASK_CNF : SET_STATE( TC, TC_WAIT_STOP_TASK_CNF); break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1789
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1790 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1791 SET_STATE( TC, grr_data->tc.last_eval_assign.state );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1792 TRACE_ERROR( "sig_ctrl_tc_leave_to_ptm: unknown TC state" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1793 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1794 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1795
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1796 #else /* #ifdef _SIMULATION_ */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1797
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1798 SET_STATE( TC, grr_data->tc.last_eval_assign.state );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1799
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1800 #endif /* #ifdef _SIMULATION_ */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1801
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1802 tc_handle_tbf_start( grr_data->tc.last_eval_assign.tbf_type );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1803 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1804
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1805 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1806 TRACE_ERROR( "SIG_CTRL_TC_LEAVE_TO_PTM unexpected" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1807 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1808 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1809 } /* sig_ctrl_tc_leave_to_ptm() */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1810
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1811 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1812 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1813 | Function : sig_ctrl_tc_leave_to_pim
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1814 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1815 | Description : Handles the internal signal SIG_CTRL_TC_LEAVE_TO_PIM
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1816 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1817 | Parameters :
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1818 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1819 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1820 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1821 GLOBAL void sig_ctrl_tc_leave_to_pim ( void )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1822 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1823 TRACE_ISIG( "sig_ctrl_tc_leave_to_pim" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1824
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1825 tc_send_tbf_release_req( grr_data->tc.last_tbf_type, FALSE );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1826
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1827 } /* sig_ctrl_tc_leave_to_pim() */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1828
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1829
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1830
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1831 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1832 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1833 | Function : sig_gfp_tc_access_rej_ptm
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1834 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1835 | Description : Handles the signal SIG_GFP_TC_ACCESS_REJ_PTM
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1836 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1837 | Parameters : -
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1838 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1839 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1840 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1841 GLOBAL void sig_gfp_tc_access_rej_ptm ( void )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1842 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1843 ULONG t3172_value=0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1844
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1845 TRACE_ISIG( "sig_gfp_tc_access_rej_ptm" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1846 TRACE_EVENT("ACC REJ PACCH" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1847
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1848
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1849 switch(grr_data->tbf_type)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1850 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1851 case CGRLC_TBF_MODE_UL:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1852 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1853 * wait for the end of the current UL TBF
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1854 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1855 if(grr_t_status( T3172_1 ) EQ 0)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1856 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1857 TRACE_EVENT("Return to idle mode after release of DA");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1858
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1859 #if defined REL99 AND defined TI_PS_FF_TBF_EST_PACCH
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1860 if(grr_data->tc.tbf_est_pacch AND grr_t_status( T3170) EQ 0 )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1861 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1862 /* GRLC has sent PCA or PRR. PAR received before PUA */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1863 vsi_t_start(GRR_handle,T3170,tc_get_t3170_value());
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1864
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1865 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1866 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1867 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1868
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1869 /*lint -fallthrough*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1870
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1871 case CGRLC_TBF_MODE_DL_UL:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1872
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1873 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1874 * UL TBF ends before the number of requested octets has been transferred, as if FINAL_ALLOCATION bit
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1875 * go to idle mode after release
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1876 * stop 3168
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1877 * check 3172
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1878 * Before initiating a new packet access procedure the mobile station shall decode the
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1879 * PRACH Control Parameters if they are broadcast.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1880 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1881
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1882 if(grr_data->uplink_tbf.mac_mode EQ FIXED_ALLOCATION)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1883 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1884 tc_abort_tbf(CGRLC_TBF_MODE_UL); /* abort UL TBF*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1885
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1886 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1887 else if(grr_t_status( T3172_1 ) EQ 0 )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1888 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1889 ;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1890 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1891
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1892 /*lint -fallthrough*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1893
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1894 case CGRLC_TBF_MODE_DL:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1895 if(grr_t_status( T3172_1 ) EQ 0 )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1896 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1897 TRACE_EVENT("CGRLC_TBF_MODE_DL, T3172_1 is not running");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1898 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1899 * primtive is delted if prim_status is set, status indication is sent to higher layers
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1900 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1901 tc_cgrlc_ul_tbf_res(CGRLC_TBF_MODE_ACCESS_FAILED,CGRLC_PRIM_STATUS_ONE);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1902 switch( tc_eval_access_rej(&t3172_value) )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1903 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1904 case E_ACCESS_REJ_WAIT:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1905 tc_start_timer_t3172( t3172_value );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1906 sig_tc_ctrl_t3172_running();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1907 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1908 case E_ACCESS_REJ_NO_WAIT:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1909 TRACE_EVENT("NO WAIT_INDICATION: nothing to do");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1910 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1911 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1912 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1913 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1914 } /* no else because additional rejects have to be ignored!! */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1915 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1916 #if defined REL99 AND defined TI_PS_FF_TBF_EST_PACCH
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1917 case CGRLC_TBF_MODE_2PA:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1918 /* PRR is sent by GRLC. NW responds with PAR */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1919 if(grr_data->tc.tbf_est_pacch)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1920 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1921
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1922 if(grr_t_status( T3170) EQ 0 )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1923 vsi_t_start(GRR_handle,T3170,tc_get_t3170_value());
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1924
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1925 switch( tc_eval_access_rej(&t3172_value) )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1926 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1927 case E_ACCESS_REJ_WAIT:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1928 tc_start_timer_t3172( t3172_value );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1929 sig_tc_ctrl_t3172_running();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1930 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1931 case E_ACCESS_REJ_NO_WAIT:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1932 TRACE_EVENT("NO WAIT_INDICATION: nothing to do");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1933 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1934 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1935 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1936 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1937 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1938 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1939 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1940 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1941 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1942 }/* switch tbf_type*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1943
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1944 } /* sig_gfp_tc_access_rej_ptm() */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1945
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1946
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1947 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1948 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1949 | Function : sig_gfp_tc_ts_reconfig_ptm
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1950 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1951 | Description : Handles the
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1952 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1953 | Parameters :
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1954 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1955 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1956 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1957 GLOBAL void sig_gfp_tc_ts_reconfig_ptm ( void )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1958 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1959
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1960 TRACE_ISIG( "sig_gfp_tc_ts_reconfig_ptm" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1961 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1962 * ASUMPTION:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1963 * This primitive (re)assigns an uplink AND downlink assignment.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1964 * if not the primitive is ignored.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1965 * CASES:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1966 * 1. ONLY UL_TBF is running: reassignment of uplink AND assignment of downlink
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1967 * 2. ONLY DL_TBF is running: reassignment of downlink AND assignment of uplink
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1968 * 3. DL_TBF AND UL_TBF is running: reassignment of downlink AND reassignment of uplink
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1969 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1970
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1971 switch( GET_STATE( TC ) )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1972 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1973 case TC_CONTENTION_RESOLUTION:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1974 TRACE_ERROR("TS RECONF in CONT: RES. ignored");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1975 break; /*ignore during contention resolution procedure*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1976 case TC_TBF_ACTIVE:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1977 switch(tc_eval_ts_reconf())
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1978 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1979 /*handle tbf starting time for uplink*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1980 case E_TS_UL_REASSIG_NEW_DL:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1981 case E_TS_NEW_UL_DL_REASSIG:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1982 case E_TS_UL_REASSIG_DL_REASSIG:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1983 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1984 TRACE_EVENT("Packet TS Reconfigure ");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1985 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1986 tc_handle_tbf_start( CGRLC_TBF_MODE_DL_UL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1987 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1988 case E_TS_IGNORE:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1989 /*no effect on current tbfs*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1990 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1991 case E_TS_RECONFIG_ERROR_RA:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1992 TRACE_EVENT("Packet TS Reconfigure invalid");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1993 vsi_t_stop(GRR_handle,T3168);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1994 tc_handle_error_ra();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1995 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1996 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1997 TRACE_ERROR( "SIG_GFP_TC_TS_RECONFIG_PTM unexpected" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1998 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1999 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2000 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2001 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2002 TRACE_ERROR( "SIG_GFP_TC_TS_RECONFIG_PTM unexpected" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2003 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2004 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2005
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2006 } /* sig_gfp_tc_ts_reconfig_ptm() */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2007
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2008
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2009 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2010 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2011 | Function : sig_gfp_tc_ul_assign_ptm
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2012 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2013 | Description : Handles the
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2014 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2015 | Parameters :
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2016 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2017 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2018 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2019 GLOBAL void sig_gfp_tc_ul_assign_ptm (void )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2020 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2021 TRACE_ISIG( "sig_gfp_tc_ul_assign_ptm " );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2022
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2023
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2024 switch( GET_STATE( TC ) )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2025 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2026 case TC_CONTENTION_RESOLUTION:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2027 case TC_TBF_ACTIVE:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2028 switch( tc_eval_ul_assign() )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2029 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2030 case E_UL_ASSIGN_DYNAMIC:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2031 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2032 TRACE_EVENT("Packet UL Assignment with dynamic allocation");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2033 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2034 tc_handle_tbf_start( CGRLC_TBF_MODE_UL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2035 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2036 case E_UL_ASSIGN_FIXED:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2037 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2038 TRACE_EVENT("Packet UL Assignment with fixed allocation");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2039 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2040 tc_handle_tbf_start( CGRLC_TBF_MODE_UL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2041 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2042 #if defined REL99 AND defined TI_PS_FF_TBF_EST_PACCH
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2043 case E_UL_ASSIGN_SB_2PHASE_ACCESS:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2044 if((grr_data->tc.tbf_est_pacch) AND
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2045 (!psc_db->gprs_cell_opt.ctrl_ack_type))
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2046 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2047 /* Control ack type is Access burst. GRLC would have sent
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2048 * PCA as poll for initiating TBF est on PACCH. Send UL_TBF_RES
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2049 * to GRLC. Packet resource request message will be sent by GRLC.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2050 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2051 TRACE_EVENT("TBF on pacch");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2052 SET_STATE(TC,TC_WAIT_2P_ASSIGN);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2053 tc_handle_tbf_start( CGRLC_TBF_MODE_2PA);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2054 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2055 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2056 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2057
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2058
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2059
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2060
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2061 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2062 TRACE_EVENT("Packet UL Assignment invalid");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2063 tc_handle_error_ra();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2064 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2065 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2066 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2067 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2068 TRACE_ERROR( "SIG_GFP_TC_UL_ASSIGN_PTM unexpected" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2069 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2070 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2071
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2072 } /* sig_gfp_tc_ul_assign_ptm () */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2073
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2074
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2075 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2076 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2077 | Function : sig_gfp_tc_dl_assign_ptm
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2078 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2079 | Description : Handles the
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2080 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2081 | Parameters :
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2082 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2083 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2084 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2085 GLOBAL void sig_gfp_tc_dl_assign_ptm ( void )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2086 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2087 TRACE_ISIG( "sig_gfp_tc_dl_assign_ptm" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2088
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2089 switch( GET_STATE( TC ) )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2090 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2091 case TC_CONTENTION_RESOLUTION:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2092 TRACE_ERROR("P. DL. ASS. in CONT: RES. ignored");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2093 break; /*ignore during contention resolution procedure*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2094 case TC_TBF_ACTIVE:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2095 switch( tc_eval_dl_assign() )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2096 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2097 case E_DL_ASSIGN:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2098 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2099 TRACE_EVENT("Packet DL Assignment");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2100 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2101 tc_handle_tbf_start( CGRLC_TBF_MODE_DL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2102 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2103 case E_DL_ASSIGN_ERROR_RA:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2104 TRACE_EVENT("Packet DL Assignment invalid");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2105 tc_handle_error_ra();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2106 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2107 case E_DL_ASSIGN_IGNORE:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2108 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2109 * If a failure in the PACKET DOWNLINK ASSIGNMENT is due to any reason,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2110 * the mobile station shall abort the procedure and continue the normal
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2111 * operation of the uplink TBF.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2112 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2113 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2114 case E_DL_ASSIGN_ABORT_DL:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2115 tc_abort_tbf(CGRLC_TBF_MODE_DL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2116 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2117 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2118 TRACE_ERROR( "Packet DL Assignment with unexpected content" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2119 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2120 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2121 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2122 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2123 TRACE_ERROR( "SIG_GFP_TC_DL_ASSIGN_PTM unexpected" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2124 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2125 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2126 } /* sig_gfp_tc_dl_assign_ptm() */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2127
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2128
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2129
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2130 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2131 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2132 | Function : sig_gfp_tc_pdch_release_ptm ( tn );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2133 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2134 | Description : Handles
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2135 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2136 | Parameters : tn_i
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2137 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2138 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2139 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2140 GLOBAL void sig_gfp_tc_pdch_release_ptm ( UBYTE tn)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2141 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2142 TRACE_ISIG( "sig_gfp_tc_pdch_release_ptm" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2143
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2144 switch( GET_STATE( TC ) )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2145 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2146 case TC_CONTENTION_RESOLUTION:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2147 case TC_TBF_ACTIVE:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2148 switch( tc_eval_pdch_rel(tn) )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2149 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2150 case E_PDCH_REL_RECONF:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2151 tc_send_pdch_rel(grr_data->pdch_rel_ts_mask);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2152 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2153 case E_PDCH_REL_RELEASE_DL_RECONF_UL:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2154 tc_abort_tbf(CGRLC_TBF_MODE_DL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2155 tc_send_pdch_rel(grr_data->pdch_rel_ts_mask);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2156 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2157 case E_PDCH_REL_RELEASE_UL_RECONF_DL:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2158 tc_abort_tbf(CGRLC_TBF_MODE_UL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2159 tc_send_pdch_rel(grr_data->pdch_rel_ts_mask);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2160 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2161 case E_PDCH_REL_RELEASE_BOTH:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2162 tc_abort_tbf(CGRLC_TBF_MODE_DL_UL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2163 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2164 case E_PDCH_REL_RELEASE_UL:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2165 tc_abort_tbf(CGRLC_TBF_MODE_UL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2166 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2167 case E_PDCH_REL_RELEASE_DL:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2168 tc_abort_tbf(CGRLC_TBF_MODE_DL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2169 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2170 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2171 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2172 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2173 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2174 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2175 TRACE_ERROR( "SIG_GFP_TC_PDCH_RELEASE_PTM unexpected" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2176 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2177 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2178
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2179 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2180 * in all states
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2181 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2182 if(grr_data->tbf_type EQ CGRLC_TBF_MODE_NULL)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2183 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2184 /* new access is done when release confirm arrives */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2185 SET_STATE(TC,TC_PIM);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2186 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2187 else if(grr_data->tbf_type EQ CGRLC_TBF_MODE_DL)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2188 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2189 SET_STATE(TC,TC_TBF_ACTIVE);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2190 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2191
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2192
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2193 } /* sig_gfp_tc_pdch_release_ptm() */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2194
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2195
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2196 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2197 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2198 | Function : sig_gfp_tc_queuing_not
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2199 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2200 | Description : Handles
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2201 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2202 | Parameters : void
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2203 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2204 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2205 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2206 GLOBAL void sig_gfp_tc_queuing_not ( void )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2207 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2208 TRACE_ISIG( "sig_gfp_tc_queuing_not " );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2209 switch( GET_STATE( TC ) )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2210 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2211 case TC_WAIT_ASSIGN:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2212
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2213 SET_STATE(TC,TC_POLLING);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2214 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2215 * stop sending packet access request
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2216 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2217 tc_send_ra_stop_req();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2218
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2219 vsi_t_stop(GRR_handle,T3170);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2220 vsi_t_start(GRR_handle,T3162,T3162_VALUE);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2221
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2222 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2223 * save tqi
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2224 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2225 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2226 MCAST(d_queuing_not,D_QUEUING_NOT);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2227 grr_data->tqi = d_queuing_not->tqi;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2228 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2229 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2230 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2231 TRACE_ERROR( "SIG_GFP_TC_QUEUING_NOT unexpected" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2232 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2233 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2234
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2235 } /* sig_gfp_tc_queuing_not () */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2236
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2237
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2238 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2239 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2240 | Function : sig_gfp_tc_ul_assign
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2241 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2242 | Description : Handles
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2243 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2244 | Parameters : void
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2245 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2246 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2247 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2248 GLOBAL void sig_gfp_tc_ul_assign ( void )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2249 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2250 UBYTE old_state = GET_STATE( TC );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2251
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2252 TRACE_ISIG( "sig_gfp_tc_ul_assign" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2253
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2254 if( grr_t_status( T3172_1 ) > 0 )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2255 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2256 if( grr_t_status( T3170 ) > 0 )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2257 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2258 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2259 * stop T3172 and set some parameters
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2260 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2261 tc_stop_timer_t3172();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2262 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2263 else if ( grr_t_status( T3176 ) EQ 0)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2264 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2265 TRACE_EVENT("Ignore UL Assignment");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2266 return;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2267 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2268 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2269
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2270 switch( old_state )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2271 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2272 case TC_WAIT_2P_ASSIGN:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2273 grr_data->uplink_tbf.ti = 0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2274 /* mark that contention resulution is not yet done */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2275
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2276 /*lint -fallthrough*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2277
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2278 case TC_WAIT_STOP_TASK_CNF:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2279 if (grr_data->tc.last_eval_assign.tbf_type EQ CGRLC_TBF_MODE_UL)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2280 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2281 TRACE_EVENT("Reassignment for UL ASS in CNF state");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2282 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2283 else if(grr_data->tc.last_eval_assign.tbf_type EQ CGRLC_TBF_MODE_DL)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2284 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2285 TRACE_EVENT("Ignore UL ASS, wait for DL start");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2286 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2287 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2288 else if(grr_data->tc.last_eval_assign.tbf_type EQ CGRLC_TBF_MODE_NULL AND grr_data->uplink_tbf.ti)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2289 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2290 TRACE_EVENT("Ignore UL ASS, wait for condirn to start RA procedure !!!!");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2291 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2292 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2293
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2294 /*lint -fallthrough*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2295
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2296 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2297 * else :TWO PHASE ACCESS IS RUNNING
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2298 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2299 case TC_POLLING:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2300 case TC_WAIT_ASSIGN:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2301 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2302 * stop sending packet access request if in progress
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2303 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2304 tc_send_ra_stop_req();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2305
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2306 /*lint -fallthrough*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2307
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2308 case TC_SINGLE_BLOCK:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2309 case TC_CONTENTION_RESOLUTION:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2310 switch( tc_eval_ul_assign() )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2311 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2312 case E_UL_ASSIGN_SB_2PHASE_ACCESS:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2313 SET_STATE(TC,TC_WAIT_2P_ASSIGN);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2314 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2315 * send MPHP_SINGLE_BLOCK_REQ with PACKET RESOURCE REQUEST
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2316 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2317 tc_send_resource_request_p();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2318 vsi_t_stop(GRR_handle,T3170);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2319 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2320
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2321 case E_UL_ASSIGN_DYNAMIC:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2322 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2323 TRACE_EVENT("Packet UL Assignment with dynamic allocation");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2324 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2325 if(grr_data->uplink_tbf.ti)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2326 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2327 SET_STATE(TC,TC_CONTENTION_RESOLUTION);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2328 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2329 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2330 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2331 SET_STATE(TC,TC_TBF_ACTIVE);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2332 sig_tc_ctrl_contention_ok();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2333 grr_data->tc.two_2p_w_4_tbf_con = FALSE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2334 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2335 tc_prepare_handle_tbf_start( CGRLC_TBF_MODE_UL, GET_STATE( TC ), old_state );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2336 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2337 case E_UL_ASSIGN_FIXED:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2338 /*TRACE_EVENT("Packet UL Assignment with fixed allocation");*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2339 if(grr_data->uplink_tbf.ti)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2340 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2341 SET_STATE(TC,TC_CONTENTION_RESOLUTION);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2342 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2343 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2344 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2345 SET_STATE(TC,TC_TBF_ACTIVE);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2346 sig_tc_ctrl_contention_ok();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2347 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2348 tc_prepare_handle_tbf_start( CGRLC_TBF_MODE_UL, GET_STATE( TC ), old_state );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2349 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2350 case E_UL_ASSIGN_SB_WITHOUT_TBF:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2351 TRACE_EVENT("Packet UL Assignment with single block allocation");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2352 /* send MPHP_SINGLE_BLOCK_REQ with DATA
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2353 * (measurement report) */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2354 tc_send_single_block();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2355 SET_STATE(TC,TC_SINGLE_BLOCK);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2356 vsi_t_stop(GRR_handle,T3170);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2357 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2358 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2359 vsi_t_stop(GRR_handle,T3170);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2360 if(grr_data->tc.state EQ TC_WAIT_2P_ASSIGN OR
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2361 grr_data->tc.state EQ TC_SINGLE_BLOCK)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2362 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2363 vsi_t_stop(GRR_handle,T3168);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2364 TRACE_EVENT_P1("Packet UL Assignment invalid during 2 phase access state=%d",grr_data->tc.state);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2365 tc_stop_normal_burst_req( );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2366 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2367 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2368 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2369 TRACE_EVENT("Packet UL Assignment invalid");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2370 tc_handle_error_ra();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2371 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2372 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2373 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2374 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2375 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2376 vsi_t_stop(GRR_handle,T3170);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2377 TRACE_ERROR( "SIG_GFP_TC_UL_ASSIGN unexpected" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2378 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2379 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2380
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2381 } /* sig_gfp_tc_ul_assign() */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2382
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2383
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2384 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2385 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2386 | Function : sig_gfp_tc_dl_assign
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2387 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2388 | Description : Handles
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2389 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2390 | Parameters : -
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2391 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2392 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2393 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2394 GLOBAL void sig_gfp_tc_dl_assign (void)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2395 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2396 UBYTE old_state = GET_STATE( TC );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2397
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2398 TRACE_ISIG( "sig_gfp_tc_dl_assign " );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2399
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2400
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2401 switch( old_state )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2402 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2403 case TC_WAIT_STOP_TASK_CNF:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2404 TRACE_EVENT_P4("ASS IN CNF state:ccch_read=%d tbf_Type =%d state=%d p_assign=%ld"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2405 ,grr_data->tc.last_eval_assign.ccch_read
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2406 ,grr_data->tc.last_eval_assign.tbf_type
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2407 ,grr_data->tc.last_eval_assign.state
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2408 ,grr_data->tc.p_assign);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2409 if (grr_data->tc.last_eval_assign.tbf_type EQ CGRLC_TBF_MODE_UL)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2410 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2411 TRACE_EVENT("Ignore DL ASS, wait for UL start");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2412 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2413 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2414
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2415 /*lint -fallthrough*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2416
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2417 case TC_WAIT_ASSIGN:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2418 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2419 * stop sending packet access request if in progress
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2420 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2421 tc_send_ra_stop_req();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2422
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2423 /*lint -fallthrough*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2424
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2425 case TC_PIM:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2426 case TC_POLLING:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2427 case TC_SINGLE_BLOCK:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2428 case TC_TBF_ACTIVE:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2429 switch( tc_eval_dl_assign() )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2430 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2431 case E_DL_ASSIGN:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2432 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2433 TRACE_EVENT("Packet DL Assignment");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2434 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2435 SET_STATE(TC,TC_TBF_ACTIVE);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2436 if( grr_t_status( T3162 ) NEQ 0 )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2437 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2438 vsi_t_stop(GRR_handle,T3162);/*ETSI 4.60 7.1.2.2.2.*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2439 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2440 tc_prepare_handle_tbf_start( CGRLC_TBF_MODE_DL, GET_STATE( TC ), old_state );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2441 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2442 case E_DL_ASSIGN_ERROR_RA:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2443 TRACE_EVENT("Packet DL Assignment invalid");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2444 vsi_t_stop(GRR_handle,T3170);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2445
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2446 if(grr_data->tc.state EQ TC_SINGLE_BLOCK)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2447 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2448 TRACE_EVENT_P1("Packet DL Assignment invalid during IA_DL_SB state=%d",grr_data->tc.state);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2449 tc_stop_normal_burst_req( );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2450 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2451 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2452 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2453 tc_handle_error_ra();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2454 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2455 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2456 case E_DL_ASSIGN_IGNORE:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2457 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2458 * If a failure in the PACKET DOWNLINK ASSIGNMENT is due to any reason,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2459 * the mobile station shall abort the procedure and continue the normal
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2460 * operation of the uplink TBF.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2461 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2462 vsi_t_stop(GRR_handle,T3170);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2463 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2464 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2465 vsi_t_stop(GRR_handle,T3170);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2466 TRACE_ERROR( "DL_ASSIGNMENT with unexpected content" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2467 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2468 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2469 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2470 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2471 vsi_t_stop(GRR_handle,T3170);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2472 TRACE_ERROR( "SIG_GFP_TC_DL_ASSIGN unexpected" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2473 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2474 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2475
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2476 } /* sig_gfp_tc_dl_assign () */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2477
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2478
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2479
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2480 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2481 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2482 | Function : sig_gfp_tc_access_rej
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2483 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2484 | Description : Handles
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2485 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2486 | Parameters : void
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2487 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2488 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2489 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2490 GLOBAL void sig_gfp_tc_access_rej ( void )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2491 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2492 ULONG t3172_value=0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2493 BOOL start_t3172 = TRUE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2494
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2495 TRACE_ISIG( "sig_gfp_tc_access_rej " );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2496
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2497 if(grr_t_status( T3172_1 ) > 0)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2498 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2499 TRACE_EVENT("T3172 running: Ignore PACKET ACCESS REJECT");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2500 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2501 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2502 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2503 /* The T3168 could running. */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2504 vsi_t_stop(GRR_handle,T3168);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2505
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2506 switch( GET_STATE( TC ) )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2507 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2508 case TC_WAIT_ASSIGN:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2509 case TC_POLLING:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2510 case TC_WAIT_2P_ASSIGN:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2511 case TC_SINGLE_BLOCK:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2512 tc_send_ra_stop_req();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2513 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2514 * stop Packet Access Request sending (T3186 will be stopped if runnig)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2515 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2516 if( grr_t_status( T3174 ) > 0 )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2517 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2518 TRACE_ERROR( " Access reject on the network commanded cell" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2519 grr_data->pcco_failure_cause = 2;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2520 sig_tc_ctrl_access_reject_on_new_cell();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2521 /* Do not start the 3172 timer if on the new cell access reject is received */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2522 start_t3172 = FALSE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2523 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2524 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2525 if(grr_t_status( T3170 ) EQ 0 )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2526 { /* T3170 is not running */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2527 vsi_t_start(GRR_handle,T3170,tc_get_t3170_value());
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2528 TRACE_EVENT("sig_gfp_tc_access_rej: t3170 started");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2529 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2530 switch( tc_eval_access_rej( &t3172_value ) )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2531 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2532 case E_ACCESS_REJ_WAIT:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2533 if (start_t3172 EQ TRUE)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2534 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2535 tc_start_timer_t3172( t3172_value );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2536 sig_tc_ctrl_t3172_running();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2537 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2538 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2539 case E_ACCESS_REJ_NO_WAIT:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2540 TRACE_EVENT("No value for T3172, go to idle mode after T3170 expiration");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2541 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2542 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2543 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2544 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2545 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2546 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2547 TRACE_ERROR( "SIG_GFP_TC_ACCESS_REJ unexpected" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2548 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2549 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2550 }/* ignore reject*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2551
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2552 } /* sig_gfp_tc_access_rej () */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2553
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2554 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2555 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2556 | Function : sig_gfp_tc_ra_con
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2557 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2558 | Description : Handles
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2559 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2560 | Parameters : payload to primitive
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2561 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2562 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2563 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2564 GLOBAL void sig_gfp_tc_ra_con ( T_MPHP_RA_CON * mphp_ra_con_i )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2565 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2566 TRACE_ISIG( "sig_gfp_tc_ra_con" ); /*MODIF*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2567
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2568 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2569 * save last packet access request reference
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2570 * see also 0408d640, 10.5.2.28
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2571 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2572
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2573 grr_data->req_ref[grr_data->tc.n_acc_req%3].fn_mod.t1 =
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2574 (UBYTE)( ( mphp_ra_con_i->fn / 1326) % 32 );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2575 grr_data->req_ref[grr_data->tc.n_acc_req%3].fn_mod.t2 =
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2576 (UBYTE)( mphp_ra_con_i->fn % 26 );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2577 grr_data->req_ref[grr_data->tc.n_acc_req%3].fn_mod.t3 =
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2578 (UBYTE)( mphp_ra_con_i->fn % 51 );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2579
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2580
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2581 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2582 * 0 8 bit access burst
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2583 * 1 11 bit access burst
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2584 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2585 if(psc_db->gprs_cell_opt.ab_type)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2586 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2587 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2588 * 11 Bit access burst
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2589 * b: bit
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2590 * b10 b9 b8 b7 b6 b5 b4 b3 b2 b1 b0
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2591 * should be sent to the network -according 04.60 and 0404- in the
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2592 * following 16-bit format:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2593 * 0 0 0 0 0 b2 b1 b0 b10 b9 b8 b7 b6 b5 b4 b3
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2594 *
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2595 * We have to store the access info in the
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2596 * b10 b9 b8 b7 b6 b5 b4 b3 b2 b1 b0 format
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2597 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2598 USHORT acc_inf, dummy = 0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2599 dummy = mphp_ra_con_i->channel_request_data;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2600 dummy = dummy >> 8; /* 0 0 0 0 0 0 0 0 0 0 0 0 0 b2 b1 b0*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2601 acc_inf = mphp_ra_con_i->channel_request_data;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2602 acc_inf = (acc_inf & 0xFF);/* 0 0 0 0 0 0 0 0 b10 b9 b8 b7 b6 b5 b4 b3 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2603 acc_inf = acc_inf << 3; /* 0 0 0 0 0 b10 b9 b8 b7 b6 b5 b4 b3 0 0 0 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2604 acc_inf = acc_inf | dummy;/* 0 0 0 0 0 b10 b9 b8 b7 b6 b5 b4 b3 b2 b1 b0 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2605 grr_data->req_ref[grr_data->tc.n_acc_req%3].access_info = acc_inf;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2606 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2607 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2608 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2609 grr_data->req_ref[grr_data->tc.n_acc_req%3].access_info = mphp_ra_con_i->channel_request_data;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2610 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2611
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2612 grr_data->tc.n_acc_req++;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2613
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2614 grr_data->tc.ra_once_sent++;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2615
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2616 if (grr_data->tc.ra_once_sent >= 2)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2617 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2618 grr_data->r_bit = 1;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2619 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2620
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2621 switch( GET_STATE( TC ) )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2622 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2623 case TC_WAIT_ASSIGN:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2624 switch( tc_handle_ra_con() )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2625 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2626 case H_RA_CON_STOP_REQ:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2627 tc_send_ra_stop_req();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2628 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2629 case H_RA_CON_CONTINUE:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2630 tc_send_ra_req();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2631 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2632 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2633 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2634 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2635 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2636 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2637 tc_send_ra_stop_req();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2638 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2639 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2640 } /* sig_gfp_tc_ra_con() */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2641
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2642
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2643 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2644 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2645 | Function : sig_gfp_tc_ra_stop_con
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2646 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2647 | Description : Handles the primitive T_MPHP_RA_STOP_CON
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2648 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2649 | Parameters : Ptr to primitive payload
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2650 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2651 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2652 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2653 GLOBAL void sig_gfp_tc_ra_stop_con ( T_MPHP_RA_STOP_CON * mphp_ra_stop_con_i )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2654 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2655 TRACE_ISIG( "sig_gfp_tc_ra_stop_con" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2656
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2657 switch( GET_STATE( TC ) )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2658 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2659 case TC_ACCESS_DISABLED:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2660 tc_call_disable_callback_func( );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2661 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2662 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2663 /* nothing to do */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2664 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2665 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2666 } /* sig_gfp_tc_ra_stop_con() */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2667
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2668 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2669 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2670 | Function : sig_gfp_tc_single_block_cnf
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2671 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2672 | Description : Handles
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2673 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2674 | Parameters : *mphp_single_block_con - Ptr to primitive payload
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2675 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2676 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2677 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2678 GLOBAL void sig_gfp_tc_single_block_cnf ( T_MPHP_SINGLE_BLOCK_CON *mphp_single_block_con)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2679 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2680 TRACE_ISIG( "sig_gfp_tc_single_block_cnf" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2681
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2682 switch( GET_STATE( TC ) )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2683 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2684 case TC_WAIT_2P_ASSIGN:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2685 if(!mphp_single_block_con->sb_status)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2686 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2687 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2688 * TRACE_EVENT_P1("T3168 start: %d ms",((psc_db->gprs_cell_opt.t3168)+1)*500);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2689 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2690 vsi_t_start(GRR_handle,T3168,(psc_db->gprs_cell_opt.t3168+1)*500);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2691 sig_tc_ctrl_set_pckt_mode( GLBL_PCKT_MODE_ACCESS_TWO_PHASE, TASK_STOP_DUMMY_VALUE );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2692 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2693 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2694 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2695 vsi_t_stop(GRR_handle,T3168);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2696 TRACE_ERROR("Single Block not sent by layer 1");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2697 TRACE_EVENT_P1("sb_status = %d",mphp_single_block_con->sb_status);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2698 sig_tc_ctrl_set_pckt_mode( GLBL_PCKT_MODE_ACCESS_TWO_PHASE, TASK_STOP_DUMMY_VALUE );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2699 tc_stop_normal_burst_req( );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2700 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2701 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2702 case TC_SINGLE_BLOCK:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2703 if(mphp_single_block_con->purpose EQ SINGLE_BLOCK_TRANSFER_UL)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2704 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2705 BOOL is_tx_success = mphp_single_block_con->sb_status EQ SB_STAT_OK;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2706 tc_set_stop_ctrl_blk ( is_tx_success,CGRLC_BLK_OWNER_NONE, 0 );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2707 sig_tc_ctrl_set_pckt_mode( GLBL_PCKT_MODE_MEAS_REP_IDLE, TASK_STOP_DUMMY_VALUE );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2708 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2709 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2710 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2711 sig_tc_ctrl_set_pckt_mode( GLBL_PCKT_MODE_ACCESS_TWO_PHASE, TASK_STOP_DUMMY_VALUE );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2712 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2713 tc_stop_normal_burst_req( );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2714 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2715 case TC_ACCESS_DISABLED:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2716 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2717 * After receiving a Packet Cell Change Order the signal SIG_GFP_SINGLE_BLOCK_CNF
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2718 * was unexpected. MPHP_STOP_SINGLE_BLOCK_REQ is sent during disableing of the
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2719 * GRR services.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2720 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2721 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2722 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2723 TRACE_ERROR( "SIG_GFP_TC_SINGLE_BLOCK_CNF unexpected" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2724 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2725 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2726 } /* sig_gfp_tc_single_block_cnf () */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2727
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2728
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2729
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2730 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2731 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2732 | Function : sig_gfp_tc_assignment_con
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2733 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2734 | Description : Handles
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2735 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2736 | Parameters : void
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2737 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2738 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2739 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2740 GLOBAL void sig_gfp_tc_assignment_con ( void )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2741 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2742 TRACE_ISIG( "sig_gfp_tc_assignment_con " );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2743
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2744 grr_data->tc.two_2p_w_4_tbf_con = TRUE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2745
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2746 if(grr_data->tc.state NEQ TC_ACCESS_DISABLED)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2747 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2748 if(grr_is_pbcch_present( ))
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2749 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2750 grr_data->tc.last_eval_assign.ccch_read = 0xFF;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2751 grr_data->tc.last_eval_assign.tbf_type = CGRLC_TBF_MODE_NULL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2752 grr_data->tc.last_eval_assign.state = 0xFF;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2753 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2754 sig_tc_ctrl_set_pckt_mode( GLBL_PCKT_MODE_TRANSFER, TASK_STOP_DUMMY_VALUE );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2755 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2756 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2757 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2758 TRACE_EVENT_P1("TBF_C in TC_ACCESS_DISABLED: do not sent sig_tc_ctrl_set_pckt_mode num_rel=%d ",grr_data->tc.num_of_rels_running );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2759 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2760
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2761
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2762 } /* sig_gfp_tc_assignment_con () */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2763
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2764
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2765 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2766 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2767 | Function : sig_gfp_tc_tbf_release_con
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2768 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2769 | Description : Handles
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2770 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2771 | Parameters : T_MPHP_TBF_RELEASE_CON * mphp_tbf_release_con_i
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2772 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2773 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2774 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2775 GLOBAL void sig_gfp_tc_tbf_release_con ( T_MPHP_TBF_RELEASE_CON * mphp_tbf_release_con_i )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2776 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2777 T_RELEASE_STATE rel_state= REL_RUNNING;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2778 TRACE_ISIG( "sig_gfp_tc_tbf_release_con" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2779
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2780 if(mphp_tbf_release_con_i->tbf_type EQ UL_DL_ASSIGNMENT)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2781 grr_data->tc.num_of_rels_running = 0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2782 else if (grr_data->tc.num_of_rels_running)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2783 grr_data->tc.num_of_rels_running--;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2784 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2785 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2786 TRACE_EVENT_P2("REL CON UNEXPECTED num=%d tbf_rel_type=%d "
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2787 ,grr_data->tc.num_of_rels_running
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2788 ,mphp_tbf_release_con_i->tbf_type);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2789 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2790
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2791 if(!grr_data->tc.num_of_rels_running)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2792 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2793 rel_state = REL_PERFORMED;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2794 if(grr_is_pbcch_present( ))
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2795 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2796 grr_data->tc.last_eval_assign.ccch_read = 0xFF;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2797 grr_data->tc.last_eval_assign.tbf_type = CGRLC_TBF_MODE_NULL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2798 grr_data->tc.last_eval_assign.state = 0xFF;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2799 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2800 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2801
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2802 sig_tc_ctrl_rel_state(rel_state);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2803
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2804 switch( GET_STATE( TC ) )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2805 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2806 case TC_PIM:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2807 grr_data->ta_params.ta_value = 0xFF;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2808 grr_data->ta_params.ta_valid = FALSE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2809 memset(&grr_data->ta_params, 0xFF, sizeof(T_TA_PARAMS));
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2810
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2811 if(0 EQ grr_data->tc.num_of_rels_running)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2812 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2813 grr_data->tc.v_freq_set = FALSE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2814
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2815 if( grr_data->tc.disable_callback_func EQ NULL )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2816 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2817 /*enable access for grlc*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2818 tc_cgrlc_tbf_rel_res( mphp_tbf_release_con_i->tbf_type ); /* release of all tbfs, grr has entered PIM, transition rule is taken into acocount*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2819 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2820 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2821 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2822 SET_STATE( TC, TC_ACCESS_DISABLED );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2823
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2824 tc_cgrlc_disable_req ( CGRLC_PRIM_STATUS_NULL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2825 tc_call_disable_callback_func( );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2826 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2827 }/* else: wait for last release confirm */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2828 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2829 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2830 tc_cgrlc_tbf_rel_res( mphp_tbf_release_con_i->tbf_type );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2831
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2832 TRACE_EVENT_P1("WAIT FOR %d TBF RELEASE CON ",grr_data->tc.num_of_rels_running);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2833 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2834 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2835 case TC_ACCESS_DISABLED:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2836 grr_data->ta_params.ta_value = 0xFF;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2837 grr_data->ta_params.ta_valid = FALSE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2838 memset(&grr_data->ta_params, 0xFF, sizeof(T_TA_PARAMS));
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2839 grr_data->tc.v_freq_set = FALSE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2840 grr_data->tc.two_2p_w_4_tbf_con = TRUE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2841
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2842 tc_cgrlc_disable_req ( CGRLC_PRIM_STATUS_NULL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2843
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2844 if(0 EQ grr_data->tc.num_of_rels_running)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2845 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2846 tc_call_disable_callback_func( );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2847 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2848 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2849 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2850 TRACE_EVENT_P1("REL_C in disable state: nr_rel=%d",grr_data->tc.num_of_rels_running);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2851 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2852 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2853 case TC_CONTENTION_RESOLUTION:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2854 case TC_TBF_ACTIVE:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2855 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2856 * update timimg advance
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2857 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2858 switch(mphp_tbf_release_con_i->tbf_type )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2859 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2860 case DL_ASSIGNMENT:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2861 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2862 tc_cgrlc_tbf_rel_res( mphp_tbf_release_con_i->tbf_type );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2863
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2864 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2865 * downlink tbf released, set ul ta, if it is different
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2866 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2867 if(!((grr_data->ta_params.l1_ta_value EQ grr_data->ta_params.ta_value) AND
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2868 (grr_data->ta_params.l1_ta_i EQ grr_data->ta_params.ul_ta_i) AND
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2869 (grr_data->ta_params.l1_ta_tn EQ grr_data->ta_params.ul_ta_tn)))
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2870 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2871 PALLOC(mphp_timing_advance_req,MPHP_TIMING_ADVANCE_REQ);/* T_MPHP_TIMING_ADVANCE_REQ */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2872 mphp_timing_advance_req->assign_id = 0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2873 mphp_timing_advance_req->p_timing_advance.ta_value = grr_data->ta_params.ta_value;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2874 mphp_timing_advance_req->p_timing_advance.ta_index = grr_data->ta_params.ul_ta_i;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2875 mphp_timing_advance_req->p_timing_advance.tn = grr_data->ta_params.ul_ta_tn;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2876 PSEND(hCommL1,mphp_timing_advance_req);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2877 TRACE_EVENT_P5("DL TBF_REL TAU: new: %d %d %d-- old %d %d"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2878 ,grr_data->ta_params.ta_value
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2879 ,grr_data->ta_params.ul_ta_i
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2880 ,grr_data->ta_params.ul_ta_tn
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2881 ,grr_data->ta_params.dl_ta_i
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2882 ,grr_data->ta_params.dl_ta_tn);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2883 grr_data->ta_params.dl_ta_i = 0xFF;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2884 grr_data->ta_params.dl_ta_tn = 0xFF;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2885 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2886 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2887 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2888 case UL_ASSIGNMENT:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2889 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2890 tc_cgrlc_tbf_rel_res( mphp_tbf_release_con_i->tbf_type );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2891
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2892 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2893 * uplink tbf released, set dl ta, if it is different
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2894 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2895 if(!((grr_data->ta_params.l1_ta_value EQ grr_data->ta_params.ta_value) AND
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2896 (grr_data->ta_params.l1_ta_i EQ grr_data->ta_params.dl_ta_i) AND
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2897 (grr_data->ta_params.l1_ta_tn EQ grr_data->ta_params.dl_ta_tn)))
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2898 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2899 PALLOC(mphp_timing_advance_req,MPHP_TIMING_ADVANCE_REQ);/* T_MPHP_TIMING_ADVANCE_REQ */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2900 mphp_timing_advance_req->assign_id = 0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2901 mphp_timing_advance_req->p_timing_advance.ta_value = grr_data->ta_params.ta_value;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2902 mphp_timing_advance_req->p_timing_advance.ta_index = grr_data->ta_params.dl_ta_i;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2903 mphp_timing_advance_req->p_timing_advance.tn = grr_data->ta_params.dl_ta_tn;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2904 PSEND(hCommL1,mphp_timing_advance_req);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2905 TRACE_EVENT_P5("UL TBF_REL TAU: new: %d %d %d-- old %d %d"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2906 ,grr_data->ta_params.ta_value
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2907 ,grr_data->ta_params.dl_ta_i
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2908 ,grr_data->ta_params.dl_ta_tn
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2909 ,grr_data->ta_params.ul_ta_i
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2910 ,grr_data->ta_params.ul_ta_tn);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2911
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2912 grr_data->ta_params.ul_ta_i = 0xFF;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2913 grr_data->ta_params.ul_ta_tn = 0xFF;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2914 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2915 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2916 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2917 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2918 TRACE_ERROR( "TBF RELEASED, stay in tbf mode, concurrent tbf or no tbf ????" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2919 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2920 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2921 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2922 case TC_CPAP:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2923 case TC_WAIT_ASSIGN:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2924 case TC_POLLING:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2925 case TC_WAIT_2P_ASSIGN:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2926 /* in these cases the prim shall not occur */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2927 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2928 TRACE_ERROR( "SIG_GFP_TC_TBF_RELEASE_CON unexpected" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2929 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2930 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2931
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2932 } /* sig_gfp_tc_tbf_release_con() */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2933
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2934 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2935 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2936 | Function : sig_gfp_tc_stop_single_block_con
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2937 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2938 | Description : Handles
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2939 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2940 | Parameters : T_MPHP_STOP_SINGLE_BLOCK_CON * mphp_stop_single_block_con_i
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2941 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2942 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2943 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2944 GLOBAL void sig_gfp_tc_stop_single_block_con (T_MPHP_STOP_SINGLE_BLOCK_CON * mphp_stop_single_block_con_i )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2945 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2946 TRACE_ISIG( "sig_gfp_tc_stop_single_block_con" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2947
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2948 switch( GET_STATE( TC ) )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2949 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2950 case TC_PIM:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2951 TRACE_EVENT("MPHP_STOP_SINGLE_BLOCK_CON in TC_PIM: nothing to do");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2952 tc_cgrlc_access_status_req();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2953 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2954 case TC_WAIT_2P_ASSIGN:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2955 if(grr_t_status( T3172_1 ) > 0)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2956 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2957 tc_cgrlc_ul_tbf_res(CGRLC_TBF_MODE_ACCESS_FAILED,CGRLC_PRIM_STATUS_ONE);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2958 sig_tc_ctrl_set_pckt_mode( GLBL_PCKT_MODE_IDLE, TASK_STOP_DUMMY_VALUE );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2959 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2960 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2961 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2962 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2963 * two phase access has failed
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2964 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2965 SET_STATE(TC,TC_PIM);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2966 tc_cgrlc_ul_tbf_res(CGRLC_TBF_MODE_ACCESS_FAILED,CGRLC_PRIM_STATUS_NULL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2967 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2968 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2969 case TC_ACCESS_DISABLED:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2970 if(!grr_data->tc.two_2p_w_4_tbf_con)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2971 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2972 TRACE_EVENT("BLC_C abort TBF");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2973 tc_abort_tbf( grr_data->tbf_type );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2974 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2975 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2976 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2977 tc_call_disable_callback_func( );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2978 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2979
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2980 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2981 case TC_SINGLE_BLOCK:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2982 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2983 * single block procedure for uplink ctrl message or receiving DL block stopped
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2984 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2985 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2986 * Stay in TC_SINGLE_BLOCK state while access reject is running.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2987 * Go to TC_PIM after T3170 is expired
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2988 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2989 if( grr_t_status( T3170 ) EQ 0 )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2990 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2991 SET_STATE(TC,TC_PIM);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2992 tc_cgrlc_access_status_req();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2993 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2994 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2995 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2996 TRACE_ERROR( "SIG_GFP_TC_STOP_SINGLE_BLOCK_CON unexpected" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2997 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2998 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2999 } /* sig_gfp_tc_stop_single_block_con () */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3000
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3001
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3002
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3003 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3004 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3005 | Function : sig_gfp_tc_packet_tbf_rel_ptm
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3006 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3007 | Description : Handles the signal sig_gfp_tc_packet_tbf_rel_ptm
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3008 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3009 | Parameters :
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3010 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3011 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3012 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3013 GLOBAL void sig_gfp_tc_packet_tbf_rel_ptm (ULONG fn, UBYTE rrbp, UBYTE sp )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3014 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3015 MCAST(d_tbf_release,D_TBF_RELEASE);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3016
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3017 TRACE_ISIG( "sig_gfp_tc_packet_tbf_rel_ptm" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3018
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3019 switch( GET_STATE( TC ) )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3020 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3021 case TC_CONTENTION_RESOLUTION:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3022 case TC_TBF_ACTIVE:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3023
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3024
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3025 if( !d_tbf_release->dl_release AND
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3026 !d_tbf_release->ul_release)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3027 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3028 TRACE_ERROR("no release request in packet tbf release");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3029 return;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3030 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3031 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3032 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3033 T_TBF_TYPE tbf_type = CGRLC_TBF_MODE_NULL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3034 UBYTE rel_cause = CGRLC_TBF_REL_ABNORMAL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3035 ULONG rel_fn = CGRLC_STARTING_TIME_NOT_PRESENT;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3036
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3037
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3038 if( d_tbf_release->dl_release AND
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3039 d_tbf_release->ul_release )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3040 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3041 if (grr_data->tbf_type EQ CGRLC_TBF_MODE_DL_UL)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3042 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3043 tbf_type = CGRLC_TBF_MODE_DL_UL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3044 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3045 else if (grr_data->tbf_type EQ CGRLC_TBF_MODE_UL)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3046 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3047 tbf_type = CGRLC_TBF_MODE_UL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3048 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3049 else if (grr_data->tbf_type EQ CGRLC_TBF_MODE_DL)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3050 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3051 tbf_type = CGRLC_TBF_MODE_DL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3052 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3053 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3054
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3055 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3056 if ( d_tbf_release->dl_release AND
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3057 ((grr_data->tbf_type EQ CGRLC_TBF_MODE_DL) OR
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3058 (grr_data->tbf_type EQ CGRLC_TBF_MODE_DL_UL)))
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3059 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3060 tbf_type = CGRLC_TBF_MODE_DL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3061 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3062
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3063 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3064 if ( d_tbf_release->ul_release AND
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3065 ((grr_data->tbf_type EQ CGRLC_TBF_MODE_UL) OR
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3066 (grr_data->tbf_type EQ CGRLC_TBF_MODE_DL_UL)))
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3067 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3068 tbf_type = CGRLC_TBF_MODE_UL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3069 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3070
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3071
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3072 if( sp )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3073 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3074 rel_fn = grr_calc_new_poll_pos(fn,rrbp);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3075 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3076
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3077 if( d_tbf_release->rel_cause EQ NORMAL_RELEASE)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3078 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3079 if ( d_tbf_release->ul_release AND
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3080 ((grr_data->tbf_type EQ CGRLC_TBF_MODE_UL) OR
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3081 (grr_data->tbf_type EQ CGRLC_TBF_MODE_DL_UL)))
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3082
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3083 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3084 rel_cause = CGRLC_TBF_REL_NORMAL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3085 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3086 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3087
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3088 tc_cgrlc_tbf_rel_req(tbf_type,rel_cause,rel_fn);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3089 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3090 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3091 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3092 TRACE_ERROR( "SIG_GFP_TC_PACKET_TBF_REL_PTM unexpected" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3093 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3094 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3095
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3096 } /* sig_gfp_tc_packet_tbf_rel_ptm () */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3097
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3098
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3099
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3100 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3101 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3102 | Function : sig_gfp_tc_poll_ind
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3103 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3104 | Description : Handles the signal sig_gfp_tc_poll_ind
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3105 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3106 | Parameters :
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3107 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3108 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3109 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3110 GLOBAL void sig_gfp_tc_poll_ind (ULONG fn, UBYTE rrbp, UBYTE poll_type,UBYTE pctrl_ack )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3111 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3112
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3113 TRACE_ISIG( "sig_gfp_tc_poll_ind" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3114
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3115 switch( GET_STATE( TC ) )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3116 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3117 case TC_PIM:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3118 case TC_CPAP:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3119 case TC_POLLING:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3120 case TC_WAIT_ASSIGN:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3121 case TC_WAIT_2P_ASSIGN:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3122 case TC_SINGLE_BLOCK:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3123 case TC_WAIT_STOP_TASK_CNF:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3124
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3125 switch(grr_data->tbf_type)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3126 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3127 case CGRLC_TBF_MODE_NULL:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3128 tc_send_polling_res ( poll_type,fn,rrbp,pctrl_ack);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3129 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3130 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3131 TRACE_ERROR( "SIG_GFP_TC_POLL_IND unexpected tbf_type" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3132 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3133 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3134 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3135 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3136 TRACE_ERROR( "SIG_GFP_TC_POLL_IND unexpected" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3137 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3138 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3139
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3140 } /* sig_gfp_tc_poll_ind () */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3141
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3142
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3143 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3144 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3145 | Function : sig_ctrl_tc_delete_cs_msg
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3146 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3147 | Description : This function deletes the control blocks of cs owner. This
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3148 | function is called when MS is moving from PAM to PTM. In this
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3149 | scenario it has to delete PMRs if any.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3150 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3151 | Parameters :
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3152 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3153 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3154 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3155
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3156 GLOBAL void sig_ctrl_tc_delete_cs_msg ( void )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3157 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3158 UBYTE i= 0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3159
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3160 TRACE_FUNCTION( "sig_ctrl_tc_delete_cs_msg" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3161
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3162
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3163 while( i < MAX_CTRL_BLK_NUM AND
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3164 grr_data->tc.ul_ctrl_blk.seq[i] NEQ MAX_CTRL_BLK_NUM )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3165 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3166 if( grr_data->tc.ul_ctrl_blk.blk[grr_data->tc.ul_ctrl_blk.seq[i]].state
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3167 EQ BLK_STATE_ALLOCATED )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3168 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3169 /* remove control block */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3170 TRACE_EVENT_P2("Delete Control msg sequence:%d owner:%d",
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3171 grr_data->tc.ul_ctrl_blk.seq[i],
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3172 grr_data->tc.ul_ctrl_blk.blk[grr_data->tc.ul_ctrl_blk.seq[i]].owner);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3173 if (CGRLC_BLK_OWNER_CS EQ grr_data->tc.ul_ctrl_blk.blk[grr_data->tc.ul_ctrl_blk.seq[i]].owner)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3174 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3175 tc_cancel_ctrl_blk(grr_data->tc.ul_ctrl_blk.blk[grr_data->tc.ul_ctrl_blk.seq[i]].owner);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3176 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3177
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3178 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3179 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3180
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3181
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3182 }/* sig_ctrl_tc_delete_cs_msg*/
|