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 local functions for service CPAP of
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
18 | 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_CPAPF_C
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
23 #define GRR_CPAPF_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
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
33 #include "vsi.h" /* to get a lot of macros */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
34 #include "macdef.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
35 #include "gprs.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
36 #include "gsm.h" /* to get a lot of macros */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
37 #include "ccdapi.h" /* to get CCD API */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
38 #include "cnf_grr.h" /* to get cnf-definitions */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
39 #include "mon_grr.h" /* to get mon-definitions */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
40 #include "prim.h" /* to get the definitions of used SAP and directions */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
41 #include "message.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
42 #include "pcm.h" /* to get a lot of macros */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
43 #include "grr.h" /* to get the global entity definitions */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
44 #include "grr_f.h" /* to get the global function definitions */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
45 #include "grr_tcf.h" /* to get the tc function definitions */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
46 #include "grr_tcs.h" /* to get the tc sig function definitions */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
47 #include "grr_cpapf.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
48 #include "grr_meass.h" /* to get the definitions for interference measurements */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
49
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
50 /*==== CONST ================================================================*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
51
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
52 /*==== LOCAL VARS ===========================================================*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
53
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
54 /*==== PRIVATE FUNCTIONS ====================================================*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
55
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
56 LOCAL void cpap_set_da_assignment_pdch (T_MPHP_ASSIGNMENT_REQ * ptr2prim_i);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
57 LOCAL void cpap_set_dl_assignment_pdch (T_MPHP_ASSIGNMENT_REQ * ptr2prim_i);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
58 LOCAL BOOL cpap_check_and_save_freq (void);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
59
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
60
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
61 /*==== PUBLIC 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
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
65 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
66 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
67 | Function : cpap_init
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
68 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
69 | Description : The function cpap_init() ....
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
70 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
71 | Parameters : void
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
72 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
73 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
74 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
75 GLOBAL void cpap_init ( void )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
76 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
77 TRACE_FUNCTION( "cpap_init" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
78
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
79 INIT_STATE(CPAP,CPAP_IDLE);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
80 grr_data->cpap.new_tbf_type = CGRLC_TBF_MODE_NULL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
81 grr_data->cpap.v_tma_ia = FALSE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
82 grr_data->cpap.p_d_imm_assign = NULL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
83 } /* cpap_init() */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
84
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
85
|
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 | Function : cpap_eval_ia
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
89 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
90 | Description : The function cpap_eval_ia() ....
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
91 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
92 | Parameters : void
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
93 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
94 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
95 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
96 GLOBAL T_EVAL_IA cpap_eval_ia ( void )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
97 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
98 MCAST(d_imm_assign,D_IMM_ASSIGN);/* T_D_IMM_ASSIGN T_U_CTRL_ACK */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
99 T_EVAL_IA result = E_IA_NULL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
100 T_tfi_ass_alloc * p_tfi_ass;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
101 TRACE_FUNCTION( "cpap_eval_ia" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
102
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
103 if(d_imm_assign->tma EQ TMA_1)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
104 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
105 /* the 1st message is only delivered by rr if the 2nd message has arrived */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
106 /* with correct request reference so it has not to be checked here again */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
107 result = E_IA_TMA; /* 1st part of TWO MESSAGE ASSIGNMENT */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
108 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
109 else if(d_imm_assign->d_t EQ D_T_DED)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
110 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
111 result = E_IA_DCCH;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
112 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
113 else if(d_imm_assign->ia_rest_oct.v_ia_assign_par AND
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
114 d_imm_assign->ia_rest_oct.ia_assign_par.v_pck_upl_ass_ia AND
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
115 d_imm_assign->ia_rest_oct.ia_assign_par.pck_upl_ass_ia.v_tfi_ass_alloc)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
116 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
117 T_pck_upl_ass_ia *pck_upl_ass_ia =
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
118 &(d_imm_assign->ia_rest_oct.ia_assign_par.pck_upl_ass_ia);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
119 p_tfi_ass = &(pck_upl_ass_ia->tfi_ass_alloc); /* more contents than before*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
120
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
121 grr_data->uplink_tbf.ts_usage = (0x80>>d_imm_assign->pck_chan_desc.tn);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
122 grr_data->uplink_tbf.nts = 1;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
123 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
124 * handle polling bit
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
125 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
126 if(p_tfi_ass->poll AND
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
127 (!grr_check_if_tbf_start_is_elapsed(grr_decode_tbf_start_abs((T_abs *)&d_imm_assign->ia_rest_oct.ia_assign_par.pck_upl_ass_ia.tfi_ass_alloc.tbf_start_time ),grr_data->ul_fn)))
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
128 grr_data->uplink_tbf.polling_bit = d_imm_assign->pck_chan_desc.tn;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
129 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
130 grr_data->uplink_tbf.polling_bit = 0xFF;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
131
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
132 grr_data->uplink_tbf.cs_mode = p_tfi_ass->ccm;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
133 grr_data->uplink_tbf.tlli_cs_mode = p_tfi_ass->tlli_bcc;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
134
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
135
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
136
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
137 if(p_tfi_ass->allo_flag EQ 0) /* Dynamic Allocation */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
138 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
139 if(p_tfi_ass->v_usf AND p_tfi_ass->v_usf_gran)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
140 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
141 result = E_IA_UL; /* Dynamic Allocation */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
142 grr_data->uplink_tbf.mac_mode = CGRLC_MAC_MODE_DA;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
143 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
144 else /* dynamic alloc but no usf value */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
145 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
146 result = E_IA_ERROR_RA;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
147 TRACE_ERROR("dynamic alloc but no usf value!");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
148 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
149 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
150 else /*fixed alloc*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
151 if (p_tfi_ass->v_allo_len5 AND p_tfi_ass->v_allo_bmp5 AND
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
152 p_tfi_ass->v_tbf_start_time)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
153 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
154 result = E_IA_UL; /* Fixed Allocation */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
155 grr_data->uplink_tbf.mac_mode = CGRLC_MAC_MODE_FA;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
156 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
157 else /* fixed alloc but no alloc bitmap or tbf starting time */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
158 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
159 result = E_IA_ERROR_RA;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
160 TRACE_ERROR("fixed alloc but no alloc bitmap or tbf starting time!");
|
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 if (!cpap_check_and_save_freq())
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
164 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
165 result = E_IA_ERROR_RA;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
166 TRACE_EVENT("cpap_eval_ia: return E_IA_ERROR_RA (frequencies wrong)");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
167 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
168
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
169 if( result NEQ E_IA_ERROR_RA )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
170 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
171 /* process power control parameter */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
172 grr_store_type_pck_upl_ass_ia( p_tfi_ass,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
173 d_imm_assign->pck_chan_desc.tn );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
174 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
175 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
176 else if(d_imm_assign->ia_rest_oct.v_ia_assign_par AND
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
177 d_imm_assign->ia_rest_oct.ia_assign_par.v_pck_upl_ass_ia AND
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
178 d_imm_assign->ia_rest_oct.ia_assign_par.pck_upl_ass_ia.v_sngl_block_alloc)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
179 { /* single block */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
180 T_sngl_block_alloc *sngl_block_ass =
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
181 &d_imm_assign->ia_rest_oct.ia_assign_par.pck_upl_ass_ia.sngl_block_alloc;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
182
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
183 if( grr_data->tc.v_sb_without_tbf )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
184 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
185 result = E_IA_SB_WITHOUT_TBF;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
186 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
187 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
188 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
189 result = E_IA_SB_2PHASE_ACCESS;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
190 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
191
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
192 if (!cpap_check_and_save_freq())
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
193 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
194 result = E_IA_ERROR_RA;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
195 TRACE_EVENT("cpap_eval_ia: return E_IA_ERROR_RA (frequencies wrong)");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
196 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
197
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
198 if( result NEQ E_IA_ERROR_RA )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
199 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
200 /* process power control parameter */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
201 grr_store_type_pck_snbl_ass_ia( sngl_block_ass,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
202 d_imm_assign->pck_chan_desc.tn );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
203 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
204 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
205 else if(d_imm_assign->ia_rest_oct.v_ia_assign_par AND
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
206 d_imm_assign->ia_rest_oct.ia_assign_par.v_ia_2nd_part)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
207 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
208 result = E_IA_TMA_SECOND;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
209 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
210 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
211 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
212 result = E_IA_ERROR_RA;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
213 TRACE_ERROR("corrupted message recieved!");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
214 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
215 return(result);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
216 } /* cpap_eval_ia() */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
217
|
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
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
221 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
222 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
223 | Function : cpap_eval_ia_dl
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
224 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
225 | Description : The function cpap_eval_ia_dl() ....
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
226 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
227 | Parameters : void
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
228 |
|
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 GLOBAL T_EVAL_IA_DL cpap_eval_ia_dl ( void )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
232 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
233 MCAST(d_imm_assign,D_IMM_ASSIGN);/* T_D_IMM_ASSIGN */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
234 T_EVAL_IA_DL result = E_IA_DL_IGNORE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
235 T_pck_downl_ass_ia * p_dl_assign;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
236
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
237 TRACE_FUNCTION( "cpap_eval_ia_dl" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
238
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
239 if(d_imm_assign->d_t EQ D_T_DED)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
240 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
241 result = E_IA_DL_DCCH;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
242 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
243 else if(d_imm_assign->tma EQ TMA_1)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
244 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
245 /* the 1st message is only delivered by rr if the 2nd message has arrived */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
246 /* with correct request reference so it has not to be checked here again */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
247 if(d_imm_assign->ia_rest_oct.v_ia_assign_par AND
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
248 d_imm_assign->ia_rest_oct.ia_assign_par.v_pck_downl_ass_ia AND
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
249 d_imm_assign->ia_rest_oct.ia_assign_par.pck_downl_ass_ia.v_tfi_ass_rlc)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
250 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
251 p_dl_assign =
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
252 &(d_imm_assign->ia_rest_oct.ia_assign_par.pck_downl_ass_ia);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
253 if(grr_check_all_tlli((BUF_tlli_value *)&(p_dl_assign->ded_tlli)))
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
254 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
255 result = E_IA_DL_TMA;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
256 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
257 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
258 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
259 result = E_IA_DL_NOT_OURS;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
260 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
261 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
262 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
263 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
264 result = E_IA_DL_IGNORE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
265 TRACE_ERROR("the 1st message is only delivered by rr if the 2nd message has arrived");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
266 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
267 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
268 else if(d_imm_assign->ia_rest_oct.v_ia_assign_par AND
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
269 d_imm_assign->ia_rest_oct.ia_assign_par.v_pck_downl_ass_ia AND
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
270 d_imm_assign->ia_rest_oct.ia_assign_par.pck_downl_ass_ia.v_tfi_ass_rlc)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
271 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
272 p_dl_assign =
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
273 &(d_imm_assign->ia_rest_oct.ia_assign_par.pck_downl_ass_ia);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
274 if(grr_check_all_tlli((BUF_tlli_value *)&(p_dl_assign->ded_tlli)))
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
275 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
276 result = E_IA_DL_ASSIGN;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
277 grr_data->downlink_tbf.ts_usage = (0x80>>d_imm_assign->pck_chan_desc.tn);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
278 grr_data->downlink_tbf.nts = 1;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
279 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
280 * handle polling bit
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
281 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
282 if(p_dl_assign->tfi_ass_rlc.poll AND
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
283 (!grr_check_if_tbf_start_is_elapsed(grr_decode_tbf_start_abs((T_abs *)&d_imm_assign->ia_rest_oct.ia_assign_par.pck_downl_ass_ia.tbf_start_time ),grr_data->ul_fn)))
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
284 grr_data->downlink_tbf.polling_bit = d_imm_assign->pck_chan_desc.tn;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
285 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
286 grr_data->downlink_tbf.polling_bit = 0xFF;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
287
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
288 grr_data->downlink_tbf.mac_mode = DA; /* by default set to */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
289 grr_data->downlink_tbf.t3192 = FALSE; /* indicates if t3192 is running*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
290 grr_data->downlink_tbf.rlc_mode = p_dl_assign->tfi_ass_rlc.rlc_mode;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
291 grr_data->downlink_tbf.ctrl_ack_bit= 0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
292
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
293 if (!cpap_check_and_save_freq())
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
294 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
295 result = E_IA_DL_IGNORE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
296 TRACE_EVENT("cpap_eval_ia_dl: return E_IA_DL_IGNORE (frequencies wrong)");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
297 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
298
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
299 if( result EQ E_IA_DL_ASSIGN )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
300 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
301 grr_store_type_tfi_ass_rlc( &p_dl_assign->tfi_ass_rlc,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
302 d_imm_assign->pck_chan_desc.tn );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
303 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
304 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
305 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
306 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
307 result = E_IA_DL_NOT_OURS;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
308 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
309 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
310 else if(d_imm_assign->ia_rest_oct.v_ia_assign_par AND
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
311 d_imm_assign->ia_rest_oct.ia_assign_par.v_pck_downl_ass_ia AND
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
312 d_imm_assign->ia_rest_oct.ia_assign_par.pck_downl_ass_ia.v_tbf_start_time)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
313 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
314 p_dl_assign =
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
315 &(d_imm_assign->ia_rest_oct.ia_assign_par.pck_downl_ass_ia);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
316 if(grr_check_all_tlli((BUF_tlli_value *)&(p_dl_assign->ded_tlli)))
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
317 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
318 result = E_IA_DL_SB;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
319 if (!cpap_check_and_save_freq())
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
320 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
321 result = E_IA_DL_IGNORE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
322 TRACE_EVENT("cpap_eval_ia_dl: return E_IA_DL_IGNORE (frequencies wrong)");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
323 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
324 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
325 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
326 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
327 result = E_IA_DL_NOT_OURS;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
328 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
329 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
330 else if(d_imm_assign->ia_rest_oct.v_ia_assign_par AND
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
331 d_imm_assign->ia_rest_oct.ia_assign_par.v_ia_2nd_part)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
332 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
333 result = E_IA_DL_TMA_SECOND;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
334 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
335
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
336 if(result EQ E_IA_DL_IGNORE)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
337 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
338 TRACE_ERROR("None of the if switches were reached LINE 330 cpapf");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
339 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
340 return(result);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
341 } /* cpap_eval_ia_dl() */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
342
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
343
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
344 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
345 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
346 | Function : cpap_eval_pdch_assignment
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
347 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
348 | Description : The function cpap_eval_pdch_assignment() ....
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
349 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
350 | Parameters : void
|
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 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
354 GLOBAL T_EVAL_PDCH_ASSIGN cpap_eval_pdch_assignment ( void )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
355 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
356 MCAST(d_pdch_ass_cmd,D_PDCH_ASS_CMD);/* T_D_PDCH_ASS_CMD */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
357 T_EVAL_PDCH_ASSIGN result = E_PDCH_ASSIGN_IGNORE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
358
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
359 TRACE_FUNCTION( "cpap_eval_pdch_assignment" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
360
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
361 if(d_pdch_ass_cmd->msg_type EQ D_PDCH_ASS_CMD)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
362 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
363 if(!(d_pdch_ass_cmd->v_pck_ul_ass OR d_pdch_ass_cmd->v_pck_dl_ass))
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
364 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
365 result = E_PDCH_ASSIGN_ERROR;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
366 TRACE_ERROR("no Packet Assignment included in message");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
367 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
368 else if(d_pdch_ass_cmd->v_pck_ul_ass AND d_pdch_ass_cmd->pck_ul_ass.v_dyn_alloc)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
369 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
370 UBYTE tx_slots = 0, ts_usage = 0,i,mask;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
371 grr_data->uplink_tbf.mac_mode = CGRLC_MAC_MODE_DA;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
372 result = E_PDCH_ASSIGN_UL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
373 if(d_pdch_ass_cmd->pck_ul_ass.dyn_alloc.v_tagged_usf_tn)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
374 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
375 for(i = 0,mask = 0x80;i < 8;i++)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
376 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
377 if(d_pdch_ass_cmd->pck_ul_ass.dyn_alloc.tagged_usf_tn[i].v_usf)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
378 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
379 ts_usage |= mask;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
380 tx_slots++;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
381 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
382 mask >>= 1;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
383 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
384 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
385 else if(d_pdch_ass_cmd->pck_ul_ass.dyn_alloc.v_usf_gamma_csn1)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
386 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
387 for(i = 0,mask = 0x80;i < 8;i++)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
388 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
389 if(d_pdch_ass_cmd->pck_ul_ass.dyn_alloc.usf_gamma_csn1[i].v_usf_gamma)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
390 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
391 ts_usage |= mask;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
392 tx_slots++;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
393 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
394 mask >>= 1;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
395 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
396 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
397 grr_store_type_dyn_alloc( &d_pdch_ass_cmd->pck_ul_ass.dyn_alloc );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
398
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
399 grr_data->uplink_tbf.ts_usage = ts_usage;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
400 grr_data->uplink_tbf.nts = tx_slots;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
401 if( !handle_ms_cap(UL_ASSIGNMENT) )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
402 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
403 result = E_PDCH_ASSIGN_ERROR;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
404 TRACE_ERROR("too much or no timeslot(s) assigned!");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
405 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
406 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
407 else if(d_pdch_ass_cmd->v_pck_ul_ass AND
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
408 d_pdch_ass_cmd->pck_ul_ass.v_single_alloc)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
409 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
410 result = E_PDCH_ASSIGN_SB;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
411 if( d_pdch_ass_cmd->pck_ul_ass.single_alloc.v_alpha_gamma EQ TRUE )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
412 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
413 grr_store_type_alpha_gamma
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
414 ( &d_pdch_ass_cmd->pck_ul_ass.single_alloc.alpha_gamma,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
415 d_pdch_ass_cmd->pck_ul_ass.single_alloc.tn );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
416 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
417
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
418 /* SZML-CPAP/029 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
419 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
420 else if(d_pdch_ass_cmd->v_pck_ul_ass AND
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
421 d_pdch_ass_cmd->pck_ul_ass.v_fix_alloc)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
422 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
423 result = E_PDCH_ASSIGN_UL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
424 grr_data->uplink_tbf.mac_mode = CGRLC_MAC_MODE_FA;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
425 if( d_pdch_ass_cmd->pck_ul_ass.fix_alloc.v_pwr_ctrl EQ TRUE )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
426 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
427 grr_store_type_pwr_ctrl( &d_pdch_ass_cmd->pck_ul_ass.fix_alloc.pwr_ctrl );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
428 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
429
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
430 /* SZML-CPAP/030 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
431 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
432 else if(d_pdch_ass_cmd->v_pck_dl_ass)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
433 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
434 result = E_PDCH_ASSIGN_DL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
435 if( d_pdch_ass_cmd->pck_dl_ass.v_pwr_ctrl EQ TRUE )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
436 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
437 grr_store_type_pwr_ctrl( &d_pdch_ass_cmd->pck_dl_ass.pwr_ctrl );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
438 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
439
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
440 /* SZML-CPAP/031 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
441 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
442 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
443 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
444 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
445 TRACE_ERROR("wrong message type!");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
446 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
447 return(result);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
448 } /* cpap_eval_pdch_assignment() */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
449
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
450
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
451 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
452 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
453 | Function : cpap_build_gprs_data_request
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
454 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
455 | Description : The function cpap_build_gprs_data_request() ....
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
456 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
457 | Parameters : void
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
458 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
459 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
460 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
461 GLOBAL void cpap_build_gprs_data_request (T_RRGRR_GPRS_DATA_REQ *rrgrr_gprs_data_req)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
462 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
463 /* T_D_RR_INIT_REQ */ /* T_PRIM_QUEUE */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
464 /* T_D_IMM_ASSIGN */ /* T_GRR_DATA_REQ */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
465
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
466 TRACE_FUNCTION( "cpap_build_gprs_data_request" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
467
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
468 rrgrr_gprs_data_req->new_ptmsi = grr_data->db.ms_id.new_ptmsi;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
469 rrgrr_gprs_data_req->old_ptmsi = grr_data->db.ms_id.old_ptmsi;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
470
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
471 rrgrr_gprs_data_req->tlli = grr_data->db.ms_id.new_tlli;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
472 rrgrr_gprs_data_req->rai = grr_data->db.ms_id.rai;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
473 rrgrr_gprs_data_req->mac_req = DA;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
474 rrgrr_gprs_data_req->cs_req = COD_S_1;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
475 rrgrr_gprs_data_req->p_chan_req_des.mo_mt = OR_TY_MO;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
476 if( grr_data->tc.v_sb_without_tbf )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
477 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
478 rrgrr_gprs_data_req->p_chan_req_des.llc_type = LLC_NOT_ACK;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
479 rrgrr_gprs_data_req->p_chan_req_des.rlc_mode_req = RLC_UNACK_MODE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
480 rrgrr_gprs_data_req->p_chan_req_des.prio = RADIO_PRIO_4;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
481 rrgrr_gprs_data_req->p_chan_req_des.req_bwd = 80;/* 8000 bit/s */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
482 rrgrr_gprs_data_req->p_chan_req_des.rlc_octets = 22;/* one RLC/MAC block */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
483 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
484 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
485 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
486 UBYTE i=0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
487 USHORT j =1;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
488 if(grr_data->uplink_tbf.prim_type EQ CGRLC_LLC_PRIM_TYPE_DATA_REQ)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
489 { /* CGRLC_LLC_PRIM_TYPE_DATA_REQ */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
490 rrgrr_gprs_data_req->p_chan_req_des.llc_type = LLC_NOT_ACK;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
491 rrgrr_gprs_data_req->p_chan_req_des.rlc_mode_req = RLC_ACK_MODE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
492 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
493 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
494 { /* CGRLC_LLC_PRIM_TYPE_UNITDATA_REQ*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
495 rrgrr_gprs_data_req->p_chan_req_des.llc_type = LLC_IS_ACK;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
496 rrgrr_gprs_data_req->p_chan_req_des.rlc_mode_req = RLC_UNACK_MODE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
497 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
498 rrgrr_gprs_data_req->p_chan_req_des.prio = grr_data->uplink_tbf.prio;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
499
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
500 rrgrr_gprs_data_req->p_chan_req_des.req_bwd = 0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
501
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
502 for(i=2; i<=grr_data->uplink_tbf.peak;i++)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
503 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
504 j *= 2;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
505 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
506 if(grr_data->uplink_tbf.peak)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
507 rrgrr_gprs_data_req->p_chan_req_des.req_bwd = j*80;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
508
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
509 rrgrr_gprs_data_req->p_chan_req_des.rlc_octets = grr_data->uplink_tbf.rlc_oct_cnt;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
510 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
511
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
512 rrgrr_gprs_data_req->gprs_meas_results.c_value = meas_c_get_value( );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
513 rrgrr_gprs_data_req->gprs_meas_results.rxqual = 0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
514 rrgrr_gprs_data_req->gprs_meas_results.sign_var = 0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
515
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
516 } /* cpap_build_gprs_data_request() */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
517
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
518
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
519
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
520
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
521 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
522 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
523 | Function : cpap_send_ass_fail
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
524 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
525 | Description : The function cpap_send_ass_fail() ....
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
526 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
527 | Parameters : void
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
528 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
529 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
530 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
531 GLOBAL void cpap_send_ass_fail (UBYTE cause)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
532 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
533 TRACE_FUNCTION( "cpap_send_ass_fail" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
534 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
535 PALLOC_SDU(rrgrr_data_req,RRGRR_DATA_REQ,3*8);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
536
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
537 rrgrr_data_req->sdu.l_buf = 3*8;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
538 rrgrr_data_req->sdu.o_buf = 0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
539 rrgrr_data_req->sdu.buf[0] = 0x06; /* protocol discriminator & skip indicator */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
540 rrgrr_data_req->sdu.buf[1] = U_ASSIGN_FAIL; /* message type */ /*lint !e415*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
541 rrgrr_data_req->sdu.buf[2] = cause; /* RRC_CHANNEL_MODE*/ /* assignment failure cause */ /*lint !e415 !e416*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
542 sig_cpap_tc_dcch_data_req(rrgrr_data_req);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
543 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
544 } /* cpap_send_ass_fail() */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
545
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
546
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
547 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
548 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
549 | Function : cpap_send_assign_req_pdch
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
550 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
551 | Description : The function cpap_send_assign_req_pdch() builds MPHP_ASSIGNMENT_REQ
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
552 | and send it.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
553 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
554 | Parameters : tbf_type_i - type of TBF that is to activate
|
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 GLOBAL void cpap_send_assign_req_pdch (T_TBF_TYPE tbf_type_i)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
559 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
560 TRACE_FUNCTION( "cpap_send_assign_req_pdch" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
561 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
562 PALLOC(ptr2prim,MPHP_ASSIGNMENT_REQ);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
563
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
564 memset(ptr2prim,0,sizeof(T_MPHP_ASSIGNMENT_REQ));
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
565
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
566 grr_set_tbf_cfg_req_param( ptr2prim );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
567
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
568 switch( tbf_type_i )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
569 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
570 case CGRLC_TBF_MODE_UL:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
571 ptr2prim->assign_cmd = UL_ASSIGNMENT;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
572 if(grr_data->uplink_tbf.mac_mode EQ CGRLC_MAC_MODE_DA)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
573 cpap_set_da_assignment_pdch(ptr2prim);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
574 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
575 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
576 /* SZML-CPAP/032 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
577 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
578
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
579 sig_cpap_tc_assign_pdch(ptr2prim, PDCH_UL_ASS_CMD);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
580 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
581 case CGRLC_TBF_MODE_DL:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
582 ptr2prim->assign_cmd = DL_ASSIGNMENT;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
583 cpap_set_dl_assignment_pdch(ptr2prim);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
584 sig_cpap_tc_assign_pdch(ptr2prim, PDCH_DL_ASS_CMD);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
585 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
586 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
587 PFREE(ptr2prim);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
588 TRACE_ERROR ( "unknown tbf type!" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
589 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
590 } /* switch (tbf_type_i) */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
591 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
592 } /* cpap_send_assign_req_pdch() */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
593
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
594
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
595 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
596 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
597 | Function : cpap_set_da_assignment_pdch
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
598 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
599 | Description : This function sets some parameter of MPHP_ASSIGFNMENT_REQ in
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
600 | case of uplink dynamic allocation.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
601 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
602 | Parameters : ptr2prim_i - ptr to mphp_assignment_req
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
603 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
604 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
605 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
606 LOCAL void cpap_set_da_assignment_pdch (T_MPHP_ASSIGNMENT_REQ * ptr2prim_i)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
607 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
608 UBYTE i;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
609 MCAST(d_pdch_ass_cmd,D_PDCH_ASS_CMD); /* T_D_PDCH_ASS_CMD */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
610 /* T_D_IMM_ASSIGN */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
611
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
612 TRACE_FUNCTION( "cpap_set_da_assignment_pdch" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
613 if( d_pdch_ass_cmd->msg_type EQ D_PDCH_ASS_CMD)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
614 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
615 /* bts downlink power control parameters */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
616 if(d_pdch_ass_cmd->pck_ul_ass.dyn_alloc.v_p0)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
617 ptr2prim_i->p_dl_power.p0 = d_pdch_ass_cmd->pck_ul_ass.dyn_alloc.p0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
618 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
619 ptr2prim_i->p_dl_power.p0 = 0xff;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
620 /* dynamic allocation must use mode a */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
621 ptr2prim_i->p_dl_power.bts_pwr_ctl_mode = MODE_A;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
622 ptr2prim_i->p_dl_power.pr_mode = PR_MODE_A_ONE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
623 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
624 * timing advance
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
625 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
626 if(d_pdch_ass_cmd->pck_ul_ass.pck_ta.v_ta)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
627 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
628 ptr2prim_i->p_timing_advance.ta_value =
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
629 d_pdch_ass_cmd->pck_ul_ass.pck_ta.ta;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
630 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
631 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
632 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
633 ptr2prim_i->p_timing_advance.ta_value = 0xff;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
634 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
635 if(d_pdch_ass_cmd->pck_ul_ass.pck_ta.v_ta_idx_nm)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
636 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
637 ptr2prim_i->p_timing_advance.ta_index =
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
638 d_pdch_ass_cmd->pck_ul_ass.pck_ta.ta_idx_nm.ta_idx;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
639 ptr2prim_i->p_timing_advance.tn =
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
640 d_pdch_ass_cmd->pck_ul_ass.pck_ta.ta_idx_nm.ta_nm;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
641 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
642 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
643 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
644 ptr2prim_i->p_timing_advance.ta_index = 0xff;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
645 ptr2prim_i->p_timing_advance.tn = 0xff;
|
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 * trainings sequence
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
649 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
650 ptr2prim_i->tsc = d_pdch_ass_cmd->chan_desc.tsc;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
651 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
652 * frequency parameters
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
653 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
654 if(!d_pdch_ass_cmd->chan_desc.hop)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
655 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
656 if(d_pdch_ass_cmd->chan_desc.v_arfcn)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
657 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
658 ptr2prim_i->p_frequency_par.p_chan_sel.hopping=0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
659 memset(ptr2prim_i->p_frequency_par.p_freq_list.p_rf_chan_no.p_radio_freq,0,MPHP_NUMC_MA);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
660 ptr2prim_i->p_frequency_par.p_chan_sel.p_rf_ch.arfcn =
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
661 grr_g23_arfcn_to_l1(d_pdch_ass_cmd->chan_desc.arfcn);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
662 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
663 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
664 /* SZML-CPAP/002 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
665 /* SZML-CPAP/003 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
666 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
667 * mac mode
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
668 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
669 ptr2prim_i->mac_mode =
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
670 (d_pdch_ass_cmd->pck_ul_ass.dyn_alloc.ext_dyn_all)? EDA:DA;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
671 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
672 * uplink allocation structure
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
673 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
674 if(d_pdch_ass_cmd->pck_ul_ass.dyn_alloc.v_tfi)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
675 ptr2prim_i->p_ul_alloc.ul_tfi = d_pdch_ass_cmd->pck_ul_ass.dyn_alloc.tfi;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
676 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
677 ptr2prim_i->p_ul_alloc.ul_tfi = grr_data->uplink_tbf.tfi;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
678 ptr2prim_i->p_ul_alloc.ts_mask = grr_data->uplink_tbf.ts_usage;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
679 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
680 * dynamic allocation structure
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
681 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
682 ptr2prim_i->p_ul_alloc.p_dynamic_alloc.usf_gran =
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
683 d_pdch_ass_cmd->pck_ul_ass.dyn_alloc.usf_gran;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
684 if(d_pdch_ass_cmd->pck_ul_ass.dyn_alloc.v_tagged_usf_tn)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
685 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
686 for(i = 0;i < 8;i++)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
687 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
688 ptr2prim_i->p_ul_alloc.p_dynamic_alloc.usf_table[i] =
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
689 d_pdch_ass_cmd->pck_ul_ass.dyn_alloc.tagged_usf_tn[i].usf;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
690 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
691 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
692 else if(d_pdch_ass_cmd->pck_ul_ass.dyn_alloc.v_usf_gamma_csn1)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
693 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
694 for(i = 0;i < 8;i++)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
695 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
696 ptr2prim_i->p_ul_alloc.p_dynamic_alloc.usf_table[i] =
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
697 d_pdch_ass_cmd->pck_ul_ass.dyn_alloc.usf_gamma_csn1[i].usf_gamma.usf;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
698 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
699 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
700 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
701 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
702 ptr2prim_i->p_ul_alloc.p_dynamic_alloc.usf_table[0] = 5;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
703 TRACE_EVENT("USF-Error: set (hardcoded) USF_TN0 = 0x05");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
704 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
705 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
706 * TBF starting time
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
707 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
708 if(d_pdch_ass_cmd->v_start_time)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
709 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
710 ptr2prim_i->p_tbf_start.tbf_start_present = 1;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
711 ptr2prim_i->p_tbf_start.fn = grr_decode_tbf_start_abs((T_abs *)&d_pdch_ass_cmd->start_time);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
712 if(d_pdch_ass_cmd->v_chan_desc_before)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
713 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
714 PALLOC(ptr2prim2,MPHP_ASSIGNMENT_REQ);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
715 memset(ptr2prim2,0,sizeof(T_MPHP_ASSIGNMENT_REQ));
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
716
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
717 grr_set_tbf_cfg_req_param( ptr2prim2 );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
718
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
719 ptr2prim2->assign_cmd = UL_ASSIGNMENT;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
720 ptr2prim2->p_dl_power.p0 = ptr2prim_i->p_dl_power.p0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
721 ptr2prim2->p_dl_power.bts_pwr_ctl_mode =
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
722 ptr2prim_i->p_dl_power.bts_pwr_ctl_mode;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
723 ptr2prim2->p_dl_power.pr_mode = ptr2prim_i->p_dl_power.pr_mode;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
724 ptr2prim2->p_timing_advance.ta_value =
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
725 ptr2prim_i->p_timing_advance.ta_value;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
726 ptr2prim2->p_timing_advance.ta_index =
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
727 ptr2prim_i->p_timing_advance.ta_index;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
728 ptr2prim2->p_timing_advance.tn = ptr2prim_i->p_timing_advance.tn;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
729 /* trainings sequence */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
730 ptr2prim2->tsc = d_pdch_ass_cmd->chan_desc_before.tsc;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
731 /* frequency parameters */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
732 if(!d_pdch_ass_cmd->chan_desc_before.hop)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
733 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
734 if(d_pdch_ass_cmd->chan_desc_before.v_arfcn)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
735 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
736 ptr2prim_i->p_frequency_par.p_chan_sel.hopping=0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
737 memset(ptr2prim_i->p_frequency_par.p_freq_list.p_rf_chan_no.p_radio_freq,0,MPHP_NUMC_MA);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
738 ptr2prim_i->p_frequency_par.p_chan_sel.p_rf_ch.arfcn =
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
739 grr_g23_arfcn_to_l1(d_pdch_ass_cmd->chan_desc_before.arfcn);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
740 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
741 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
742 /* SZML-CPAP/004 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
743 /* SZML-CPAP/005 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
744 /* mac mode */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
745 ptr2prim2->mac_mode = ptr2prim_i->mac_mode;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
746 /* uplink allocation structure */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
747 /* take from grr_data to avoide mistakes */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
748 ptr2prim2->p_ul_alloc.ul_tfi = ptr2prim_i->p_ul_alloc.ul_tfi;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
749 ptr2prim2->p_ul_alloc.ts_mask = ptr2prim_i->p_ul_alloc.ts_mask;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
750 /* dynamic allocation structure */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
751 ptr2prim2->p_ul_alloc.p_dynamic_alloc.usf_gran =
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
752 ptr2prim_i->p_ul_alloc.p_dynamic_alloc.usf_gran;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
753 for(i = 0;i < 8;i++)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
754 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
755 ptr2prim2->p_ul_alloc.p_dynamic_alloc.usf_table[i] =
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
756 ptr2prim_i->p_ul_alloc.p_dynamic_alloc.usf_table[i];
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
757 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
758 ptr2prim2->p_tbf_start.tbf_start_present = 0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
759 sig_cpap_tc_assign_pdch(ptr2prim2, PDCH_UL_ASS_CMD);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
760 } /* if(d_pdch_ass_cmd->v_chan_desc_before) */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
761 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
762 else /* if(d_pdch_ass_cmd->v_start_time) */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
763 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
764 ptr2prim_i->p_tbf_start.tbf_start_present = 0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
765 ptr2prim_i->p_tbf_start.fn = 0xFFFFFFFF;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
766 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
767 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
768 else /* if( d_pdch_ass_cmd->msg_type EQ D_PDCH_ASS_CMD) */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
769 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
770 TRACE_ERROR ( "Wrong message type in _decodedCtrlMsg" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
771 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
772
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
773
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
774 if(ptr2prim_i->p_tbf_start.tbf_start_present)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
775 grr_data->uplink_tbf.tbf_start_fn = ptr2prim_i->p_tbf_start.fn;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
776 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
777 grr_data->uplink_tbf.tbf_start_fn = CGRLC_STARTING_TIME_NOT_PRESENT;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
778
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
779 grr_data->uplink_tbf.st_tfi = ptr2prim_i->p_ul_alloc.ul_tfi;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
780 grr_data->uplink_tbf.mac_mode = DA;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
781
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
782 return;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
783 } /* cpap_set_da_assignment_pdch */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
784
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
785
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
786
|
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 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
790 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
791 | Function : cpap_set_dl_assignment_pdch
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
792 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
793 | Description : This function sets some parameter of T_MPHP_ASSIGNMENT_REQ is
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
794 | case of ia downlink allocation
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
795 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
796 | Parameters : ptr2prim_i - ptr to MPHP_ASSIGNMENT_REQ
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
797 |
|
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 LOCAL void cpap_set_dl_assignment_pdch (T_MPHP_ASSIGNMENT_REQ * ptr2prim_i)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
801 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
802 MCAST(d_imm_assign,D_IMM_ASSIGN); /* T_D_IMM_ASSIGN */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
803 T_pck_downl_ass_ia *ptr2dl_assign;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
804
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
805 TRACE_FUNCTION( "cpap_set_dl_assignment_pdch" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
806 if( d_imm_assign->msg_type EQ D_IMM_ASSIGN)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
807 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
808 ptr2dl_assign =
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
809 &d_imm_assign->ia_rest_oct.ia_assign_par.pck_downl_ass_ia;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
810 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
811 * timing advance
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
812 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
813 if (ptr2dl_assign->tfi_ass_rlc.ta_valid)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
814 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
815 ptr2prim_i->p_timing_advance.ta_value = d_imm_assign->time_advance.ta;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
816 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
817 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
818 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
819 ptr2prim_i->p_timing_advance.ta_value = 0xff;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
820 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
821 if(ptr2dl_assign->v_ta_idx)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
822 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
823 ptr2prim_i->p_timing_advance.ta_index = ptr2dl_assign->ta_idx;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
824 ptr2prim_i->p_timing_advance.tn = d_imm_assign->pck_chan_desc.tn;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
825 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
826 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
827 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
828 ptr2prim_i->p_timing_advance.ta_index = 0xff;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
829 ptr2prim_i->p_timing_advance.tn = 0xff;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
830 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
831 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
832 * trainings sequence
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
833 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
834 ptr2prim_i->tsc = d_imm_assign->pck_chan_desc.tsc;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
835 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
836 * TBF starting time
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
837 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
838 if(ptr2dl_assign->v_tbf_start_time)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
839 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
840 ptr2prim_i->p_tbf_start.tbf_start_present = 1;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
841 ptr2prim_i->p_tbf_start.fn = grr_decode_tbf_start_abs((T_abs *)&ptr2dl_assign->tbf_start_time);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
842 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
843 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
844 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
845 ptr2prim_i->p_tbf_start.tbf_start_present = 0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
846 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
847 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
848 * mac mode
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
849 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
850 ptr2prim_i->mac_mode = DA;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
851 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
852 * downlink allocation structure
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
853 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
854 ptr2prim_i->p_dl_alloc.dl_tfi = grr_data->downlink_tbf.tfi; /* take from grr_data to avoide mistakes */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
855 ptr2prim_i->p_dl_alloc.ts_mask = grr_data->downlink_tbf.ts_usage;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
856
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
857
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
858 if(ptr2prim_i->p_tbf_start.tbf_start_present)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
859 grr_data->downlink_tbf.tbf_start_fn = ptr2prim_i->p_tbf_start.fn;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
860 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
861 grr_data->downlink_tbf.tbf_start_fn = CGRLC_STARTING_TIME_NOT_PRESENT;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
862
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
863 grr_data->downlink_tbf.st_tfi = ptr2prim_i->p_dl_alloc.dl_tfi;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
864 grr_data->downlink_tbf.mac_mode = DA;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
865
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
866 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
867 return;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
868 } /* cpap_set_dl_assignment_pdch() */
|
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 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
872 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
873 | Function : cpap_send_assign_req_ia
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
874 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
875 | Description : The function cpap_send_assign_req_ia() builds MPHP_ASSIGNMENT_REQ
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
876 | and send it.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
877 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
878 | Parameters : tbf_type_i - type of TBF that is to activate
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
879 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
880 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
881 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
882 GLOBAL BOOL cpap_send_assign_req_ia ( T_TBF_TYPE tbf_type_i )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
883 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
884 T_MPHP_ASSIGNMENT_REQ *ptr2prim = NULL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
885
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
886 TRACE_FUNCTION( "cpap_send_assign_req_ia" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
887
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
888 ptr2prim = tc_set_freq();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
889 if(NULL EQ ptr2prim)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
890 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
891 return FALSE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
892 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
893
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
894 grr_set_tbf_cfg_req_param( ptr2prim );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
895
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
896 switch( tbf_type_i )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
897 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
898 case CGRLC_TBF_MODE_UL:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
899 ptr2prim->assign_cmd = UL_ASSIGNMENT;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
900 if(grr_data->uplink_tbf.mac_mode EQ CGRLC_MAC_MODE_DA)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
901 cpap_set_da_assignment_ia(ptr2prim);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
902 else if(!cpap_set_fa_assignment_ia(ptr2prim))
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
903 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
904 PFREE(ptr2prim);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
905 return FALSE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
906 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
907 sig_cpap_tc_assign_pdch( ptr2prim, IA_UL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
908 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
909 case CGRLC_TBF_MODE_DL:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
910 ptr2prim->assign_cmd = DL_ASSIGNMENT;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
911 cpap_set_dl_assignment_ia(ptr2prim);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
912 sig_cpap_tc_assign_pdch( ptr2prim, IA_DL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
913 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
914 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
915 return FALSE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
916 } /* switch (tbf_type_i) */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
917 return TRUE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
918 } /* cpap_send_assign_req_ia() */
|
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 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
923 | Function : cpap_set_da_assignment_ia
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
924 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
925 | Description : This function sets some parameter of MPHP_ASSIGFNMENT_REQ in
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
926 | case of uplink dynamic allocation.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
927 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
928 | Parameters : ptr2prim_i - ptr to mphp_assignment_req
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
929 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
930 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
931 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
932 GLOBAL void cpap_set_da_assignment_ia (T_MPHP_ASSIGNMENT_REQ *ptr2prim)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
933 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
934 MCAST(d_imm_assign,D_IMM_ASSIGN); /* T_D_IMM_ASSIGN */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
935 T_pck_upl_ass_ia *ptr2ul_assign;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
936
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
937 TRACE_FUNCTION( "cpap_set_da_assignment_ia" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
938
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
939 if( d_imm_assign->msg_type EQ D_IMM_ASSIGN)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
940 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
941 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
942 * timing advance
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
943 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
944 ptr2ul_assign =
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
945 &d_imm_assign->ia_rest_oct.ia_assign_par.pck_upl_ass_ia;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
946 if(ptr2ul_assign->v_tfi_ass_alloc AND ptr2ul_assign->tfi_ass_alloc.v_p0_prmode)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
947 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
948 ptr2prim->p_dl_power.p0 = ptr2ul_assign->tfi_ass_alloc.p0_prmode.p0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
949 ptr2prim->p_dl_power.pr_mode =
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
950 ptr2ul_assign->tfi_ass_alloc.p0_prmode.pr_mode;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
951 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
952 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
953 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
954 ptr2prim->p_dl_power.p0 = 0xff;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
955 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
956 /* Timing Advance */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
957 grr_data->ta_params.ta_valid = TRUE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
958 grr_handle_ta ( 1, /* always present in Immediate Assignment*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
959 d_imm_assign->time_advance.ta,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
960 ptr2ul_assign->tfi_ass_alloc.v_ta_idx,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
961 ptr2ul_assign->tfi_ass_alloc.ta_idx,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
962 d_imm_assign->pck_chan_desc.tn,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
963 0xFF,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
964 0,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
965 0,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
966 &ptr2prim->p_timing_advance);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
967
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
968 /* TBF starting time */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
969 if(ptr2ul_assign->tfi_ass_alloc.v_tbf_start_time)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
970 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
971 ptr2prim->p_tbf_start.tbf_start_present = 1;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
972 ptr2prim->p_tbf_start.fn = grr_decode_tbf_start_abs((T_abs *)&ptr2ul_assign->tfi_ass_alloc.tbf_start_time);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
973 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
974 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
975 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
976 ptr2prim->p_tbf_start.tbf_start_present = 0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
977 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
978 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
979 * mac mode
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
980 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
981 ptr2prim->mac_mode = DA;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
982 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
983 * uplink allocation structure
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
984 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
985 /* take from grr_data to avoide mistakes */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
986 ptr2prim->p_ul_alloc.ul_tfi = ptr2ul_assign->tfi_ass_alloc.tfi;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
987 ptr2prim->p_ul_alloc.ts_mask = grr_data->uplink_tbf.ts_usage;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
988 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
989 * dynamic allocation structure
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
990 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
991 ptr2prim->p_ul_alloc.p_dynamic_alloc.usf_gran =
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
992 ptr2ul_assign->tfi_ass_alloc.usf_gran;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
993 if(ptr2ul_assign->tfi_ass_alloc.v_usf)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
994 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
995 ptr2prim->p_ul_alloc.p_dynamic_alloc.usf_table[
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
996 d_imm_assign->pck_chan_desc.tn] = ptr2ul_assign->tfi_ass_alloc.usf;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
997 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
998 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
999 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1000 ptr2prim->p_ul_alloc.p_dynamic_alloc.usf_table[
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1001 d_imm_assign->pck_chan_desc.tn] = 5;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1002 TRACE_EVENT("USF-Error: set (hardcoded) USF_TN0 = 0x05");
|
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 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1006 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1007 TRACE_ERROR ( "Wrong message type in _decodedCtrlMsg" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1008 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1009
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1010
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1011 if(ptr2prim->p_tbf_start.tbf_start_present)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1012 grr_data->uplink_tbf.tbf_start_fn = ptr2prim->p_tbf_start.fn;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1013 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1014 grr_data->uplink_tbf.tbf_start_fn = CGRLC_STARTING_TIME_NOT_PRESENT;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1015
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1016 grr_data->uplink_tbf.st_tfi = ptr2prim->p_ul_alloc.ul_tfi;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1017 grr_data->uplink_tbf.mac_mode = DA;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1018
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1019
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1020 return;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1021 } /* cpap_set_da_assignment_ia */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1022
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1023
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1024 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1025 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1026 | Function : cpap_set_fa_assignment_ia
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1027 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1028 | Description : This function sets some parameter of MPHP_ASSIGFNMENT_REQ in
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1029 | case of uplink fixed allocation.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1030 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1031 | Parameters : ptr2prim_i - ptr to mphp_assignment_req
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1032 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1033 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1034 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1035 GLOBAL UBYTE cpap_set_fa_assignment_ia (T_MPHP_ASSIGNMENT_REQ *ptr2prim)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1036 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1037 MCAST(d_imm_assign,D_IMM_ASSIGN); /* T_D_IMM_ASSIGN */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1038 T_pck_upl_ass_ia *ptr2ul_assign;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1039
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1040 TRACE_FUNCTION( "cpap_set_fa_assignment_ia" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1041
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1042 ptr2ul_assign =
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1043 &d_imm_assign->ia_rest_oct.ia_assign_par.pck_upl_ass_ia;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1044 if( d_imm_assign->msg_type EQ D_IMM_ASSIGN)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1045 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1046 /* PO, BTS_POWER_MODE and PR_ MODE */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1047 if(ptr2ul_assign->v_tfi_ass_alloc AND ptr2ul_assign->tfi_ass_alloc.v_p0_bts_prmode)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1048 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1049 ptr2prim->p_dl_power.p0 = ptr2ul_assign->tfi_ass_alloc.p0_bts_prmode.p0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1050 ptr2prim->p_dl_power.bts_pwr_ctl_mode = ptr2ul_assign->tfi_ass_alloc.p0_bts_prmode.pwr_ctrl_mode;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1051 ptr2prim->p_dl_power.pr_mode = ptr2ul_assign->tfi_ass_alloc.p0_bts_prmode.pr_mode;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1052 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1053 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1054 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1055 ptr2prim->p_dl_power.p0 = 0xff;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1056 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1057 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1058 * timing advance
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1059 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1060 grr_data->ta_params.ta_valid = TRUE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1061 grr_handle_ta ( 1, /* always present in Immediate Assignment*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1062 d_imm_assign->time_advance.ta,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1063 ptr2ul_assign->tfi_ass_alloc.v_ta_idx,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1064 ptr2ul_assign->tfi_ass_alloc.ta_idx,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1065 d_imm_assign->pck_chan_desc.tn,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1066 0xFF,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1067 0,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1068 0,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1069 &ptr2prim->p_timing_advance);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1070 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1071 * mac mode
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1072 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1073 ptr2prim->mac_mode = FA;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1074 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1075 * uplink allocation structure
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1076 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1077 /* take from grr_data to avoide mistakes */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1078 ptr2prim->p_ul_alloc.ul_tfi = ptr2ul_assign->tfi_ass_alloc.tfi;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1079 ptr2prim->p_ul_alloc.ts_mask = grr_data->uplink_tbf.ts_usage;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1080 /* TBF starting time */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1081 if(ptr2ul_assign->tfi_ass_alloc.v_tbf_start_time)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1082 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1083 ptr2prim->p_tbf_start.tbf_start_present = 1;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1084 ptr2prim->p_tbf_start.fn = grr_decode_tbf_start_abs((T_abs *)&ptr2ul_assign->tfi_ass_alloc.tbf_start_time);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1085 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1086 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1087 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1088 TRACE_ERROR("IA FIX ALLOC WITHOUT TBF STARTING TIME");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1089 return FALSE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1090 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1091 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1092 * DOWNLINK_CONTROL_TIMESLOT parameter shall always indicate a timeslot number
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1093 * which is used for TBF uplink. GSM 04.60 Chapter 8.1.1.3.4
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1094 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1095 switch(grr_data->uplink_tbf.ts_usage)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1096 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1097 case 1:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1098 ptr2prim->p_ul_alloc.p_fixed_alloc.dl_ctrl_ts = 7;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1099 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1100 case 2:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1101 ptr2prim->p_ul_alloc.p_fixed_alloc.dl_ctrl_ts = 6;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1102 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1103 case 4:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1104 ptr2prim->p_ul_alloc.p_fixed_alloc.dl_ctrl_ts = 5;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1105 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1106 case 8:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1107 ptr2prim->p_ul_alloc.p_fixed_alloc.dl_ctrl_ts = 4;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1108 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1109 case 16:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1110 ptr2prim->p_ul_alloc.p_fixed_alloc.dl_ctrl_ts = 3;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1111 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1112 case 32:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1113 ptr2prim->p_ul_alloc.p_fixed_alloc.dl_ctrl_ts = 2;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1114 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1115 case 64:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1116 ptr2prim->p_ul_alloc.p_fixed_alloc.dl_ctrl_ts = 1;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1117 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1118 case 128:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1119 ptr2prim->p_ul_alloc.p_fixed_alloc.dl_ctrl_ts = 0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1120 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1121 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1122
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1123 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1124 * ALLOCATION BITMAP tc function call not allowed
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1125 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1126 grr_data->tc.fa_ctrl.fa_type = FA_NO_CURRENT;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1127 tc_calc_fa_bitmap(ptr2prim->p_tbf_start.fn, /* starting time of cuurent tbf*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1128 1, /* block periods*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1129 ptr2ul_assign->tfi_ass_alloc.allo_len5, /* bitmap length */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1130 ptr2ul_assign->tfi_ass_alloc.allo_bmp5, /* ptr to alloc struct*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1131 &ptr2prim->p_ul_alloc.p_fixed_alloc); /* ptr to fix sttruct*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1132 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1133 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1134 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1135 TRACE_ERROR ( "Wrong message type in _decodedCtrlMsg" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1136 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1137
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1138
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1139 if(ptr2prim->p_tbf_start.tbf_start_present)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1140 grr_data->uplink_tbf.tbf_start_fn = ptr2prim->p_tbf_start.fn;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1141 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1142 grr_data->uplink_tbf.tbf_start_fn = CGRLC_STARTING_TIME_NOT_PRESENT;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1143
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1144 grr_data->uplink_tbf.st_tfi = ptr2prim->p_ul_alloc.ul_tfi;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1145 grr_data->uplink_tbf.mac_mode = FA;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1146
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1147 return TRUE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1148 } /* cpap_set_fa_assignment_ia */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1149
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1150
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1151 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1152 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1153 | Function : cpap_set_dl_assignment_ia
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1154 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1155 | Description : This function sets some parameter of T_MPHP_ASSIGNMENT_REQ is
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1156 | case of ia downlink allocation
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1157 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1158 | Parameters : ptr2prim_i - ptr to MPHP_ASSIGNMENT_REQ
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1159 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1160 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1161 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1162 GLOBAL void cpap_set_dl_assignment_ia (T_MPHP_ASSIGNMENT_REQ *ptr2prim)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1163 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1164 MCAST(d_imm_assign,D_IMM_ASSIGN); /* T_D_IMM_ASSIGN */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1165 T_pck_downl_ass_ia *ptr2dl_assign;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1166 TRACE_FUNCTION( "cpap_set_dl_assignment_ia" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1167 if( d_imm_assign->msg_type EQ D_IMM_ASSIGN)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1168 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1169 ptr2dl_assign = &d_imm_assign->ia_rest_oct.ia_assign_par.pck_downl_ass_ia;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1170 if(ptr2dl_assign->v_p0_bts_prmode)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1171 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1172 ptr2prim->p_dl_power.p0 = ptr2dl_assign->p0_bts_prmode.p0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1173 ptr2prim->p_dl_power.bts_pwr_ctl_mode =
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1174 ptr2dl_assign->p0_bts_prmode.pwr_ctrl_mode;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1175 ptr2prim->p_dl_power.pr_mode = ptr2dl_assign->p0_bts_prmode.pr_mode;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1176 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1177 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1178 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1179 ptr2prim->p_dl_power.p0 = 0xff;
|
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 * timing advance
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1183 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1184 grr_handle_ta ( ptr2dl_assign->tfi_ass_rlc.ta_valid,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1185 d_imm_assign->time_advance.ta,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1186 0xFF,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1187 0,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1188 0,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1189 ptr2dl_assign->v_ta_idx,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1190 ptr2dl_assign->ta_idx,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1191 d_imm_assign->pck_chan_desc.tn,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1192 &ptr2prim->p_timing_advance);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1193 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1194 * TBF starting time
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1195 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1196 if(ptr2dl_assign->v_tbf_start_time)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1197 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1198 ptr2prim->p_tbf_start.tbf_start_present = 1;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1199 ptr2prim->p_tbf_start.fn = grr_decode_tbf_start_abs((T_abs *)&ptr2dl_assign->tbf_start_time);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1200 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1201 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1202 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1203 ptr2prim->p_tbf_start.tbf_start_present = 0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1204 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1205
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1206 /* SZML-CPAP/008 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1207 ptr2prim->mac_mode = DA;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1208 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1209 * downlink allocation structure
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1210 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1211 ptr2prim->p_dl_alloc.dl_tfi = ptr2dl_assign->tfi_ass_rlc.tfi;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1212 ptr2prim->p_dl_alloc.ts_mask = grr_data->downlink_tbf.ts_usage;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1213
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1214
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1215 if(ptr2prim->p_tbf_start.tbf_start_present)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1216 grr_data->downlink_tbf.tbf_start_fn = ptr2prim->p_tbf_start.fn;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1217 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1218 grr_data->downlink_tbf.tbf_start_fn = CGRLC_STARTING_TIME_NOT_PRESENT;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1219
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1220 grr_data->downlink_tbf.st_tfi = ptr2prim->p_dl_alloc.dl_tfi;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1221
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1222 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1223 return;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1224 } /* cpap_set_dl_assignment_ia() */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1225
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1226
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1227 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1228 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1229 | Function : cpap_send_resource_request_ia
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1230 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1231 | Description : The function cpap_send_resource_request_ia() sends the primitive
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1232 | MPHP_SINGLE_BLOCK_REQ with Packet Resource Request
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1233 | for two phase access due to the reception of a Immediate
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1234 | Assignment message.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1235 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1236 | Parameters : void
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1237 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1238 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1239 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1240 GLOBAL UBYTE cpap_send_resource_request_ia ( void )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1241 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1242 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1243 MCAST(d_imm_assign,D_IMM_ASSIGN); /* T_D_IMM_ASSIGN */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1244
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1245 T_pck_upl_ass_ia *ptr2ul_assign;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1246 UBYTE frame[23];
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1247 ULONG start_fn;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1248
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1249
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1250 TRACE_FUNCTION( "cpap_send_resource_request_ia" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1251
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1252 ptr2ul_assign = &d_imm_assign->ia_rest_oct.ia_assign_par.pck_upl_ass_ia;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1253
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1254 start_fn = grr_decode_tbf_start_abs((T_abs *)&ptr2ul_assign->sngl_block_alloc.tbf_start_time);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1255 if( !(grr_check_if_tbf_start_is_elapsed ( start_fn, grr_data->ul_fn)))
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1256 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1257 T_U_RESOURCE_REQ resource_req;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1258 sig_cpap_tc_build_res_req( &resource_req );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1259 grr_encode_ul_ctrl_block( frame, ( UBYTE* )&resource_req );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1260 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1261 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1262 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1263 TRACE_ERROR("TBF Starting time is elpased in single block allocation!");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1264 return FALSE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1265 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1266 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1267 PALLOC(ptr2prim,MPHP_SINGLE_BLOCK_REQ);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1268 memcpy( ptr2prim->l2_frame, frame, 23 );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1269 ptr2prim->p_tbf_start.tbf_start_present = 1;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1270 ptr2prim->p_tbf_start.fn = start_fn;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1271
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1272 if( ptr2ul_assign->v_sngl_block_alloc AND ptr2ul_assign->sngl_block_alloc.v_p0_bts_prmode )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1273 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1274 ptr2prim->p_dl_power.p0 = ptr2ul_assign->sngl_block_alloc.p0_bts_prmode.p0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1275 ptr2prim->p_dl_power.bts_pwr_ctl_mode = ptr2ul_assign->sngl_block_alloc.p0_bts_prmode.pwr_ctrl_mode;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1276 ptr2prim->p_dl_power.pr_mode = ptr2ul_assign->sngl_block_alloc.p0_bts_prmode.pr_mode;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1277 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1278 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1279 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1280 ptr2prim->p_dl_power.p0 = 0xff;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1281 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1282
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1283 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1284 * mark that single block is because of two phase access procedure
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1285 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1286 ptr2prim->purpose = TWO_PHASE_ACESS;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1287 ptr2prim->pc_meas_chan = psc_db->g_pwr_par.pc_meas_chan;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1288 ptr2prim->burst_type = (psc_db->gprs_cell_opt.ab_type EQ AB_8_BIT)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1289 ?AB_8_BIT
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1290 :AB_11_BIT;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1291
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1292 grr_handle_ta ( 1, /*Ta is mandatory in immediate assignment*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1293 d_imm_assign->time_advance.ta,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1294 0,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1295 0,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1296 0,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1297 0,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1298 0,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1299 0,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1300 &ptr2prim->p_timing_advance);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1301
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1302 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1303 * trainings sequence
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1304 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1305 ptr2prim->tsc = d_imm_assign->pck_chan_desc.tsc;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1306 ptr2prim->tn = d_imm_assign->pck_chan_desc.tn;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1307
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1308 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1309 * frequency parameters
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1310 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1311 grr_set_freq_par( &ptr2prim->p_frequency_par );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1312 sig_cpap_tc_assign_sb( ( void* )ptr2prim, TWO_PHASE_ACESS );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1313 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1314 return TRUE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1315 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1316 } /* cpap_send_resource_request_ia() */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1317
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1318
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1319 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1320 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1321 | Function : cpap_send_single_block_without_tbf
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1322 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1323 | Description : The function cpap_send_single_block_without_tbf() sends
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1324 | the primitive MPHP_SINGLE_BLOCK_REQ with single
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1325 | block request without TBF establishment due to the reception
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1326 | of an immediate assignment message.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1327 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1328 | Parameters : void
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1329 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1330 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1331 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1332 GLOBAL UBYTE cpap_send_single_block_without_tbf ( void )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1333 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1334 PALLOC( prim, MPHP_SINGLE_BLOCK_REQ );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1335 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1336 MCAST( d_imm_assign, D_IMM_ASSIGN );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1337
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1338 T_pck_upl_ass_ia *assign;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1339 UBYTE result = FALSE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1340
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1341 TRACE_FUNCTION( "cpap_send_single_block_without_tbf" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1342
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1343 assign = &d_imm_assign->ia_rest_oct.ia_assign_par.pck_upl_ass_ia;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1344
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1345 if( assign->v_sngl_block_alloc AND assign->sngl_block_alloc.v_p0_bts_prmode )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1346 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1347 prim->p_dl_power.p0 = assign->sngl_block_alloc.p0_bts_prmode.p0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1348 prim->p_dl_power.bts_pwr_ctl_mode = assign->sngl_block_alloc.p0_bts_prmode.pwr_ctrl_mode;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1349 prim->p_dl_power.pr_mode = assign->sngl_block_alloc.p0_bts_prmode.pr_mode;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1350 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1351 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1352 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1353 prim->p_dl_power.p0 = 0xff;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1354 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1355
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1356 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1357 * mark that single block is because of two phase access procedure
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1358 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1359 prim->purpose = SINGLE_BLOCK_TRANSFER_UL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1360 prim->pc_meas_chan = psc_db->g_pwr_par.pc_meas_chan;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1361 prim->burst_type = ( psc_db->gprs_cell_opt.ab_type EQ AB_8_BIT )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1362 ? AB_8_BIT : AB_11_BIT;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1363
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1364 prim->p_timing_advance.ta_value = d_imm_assign->time_advance.ta;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1365
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1366 grr_data->ta_params.ta_value = d_imm_assign->time_advance.ta;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1367 grr_data->ta_params.ta_valid = TRUE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1368
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1369 if( assign->tfi_ass_alloc.v_ta_idx )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1370 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1371 prim->p_timing_advance.ta_index = assign->tfi_ass_alloc.ta_idx;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1372 prim->p_timing_advance.tn = d_imm_assign->pck_chan_desc.tn;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1373 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1374 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1375 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1376 prim->p_timing_advance.ta_index = 0xff;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1377 prim->p_timing_advance.tn = 0xff;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1378 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1379
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1380 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1381 * trainings sequence
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1382 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1383 prim->tsc = d_imm_assign->pck_chan_desc.tsc;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1384
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1385 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1386 TRACE_EVENT_P4( "request_ia1 tn:%d tsc: %d p0:%d pr_mode:%d",
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1387 d_imm_assign->pck_chan_desc.tn, prim->tsc,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1388 prim->p_dl_power.p0, prim->p_dl_power.pr_mode );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1389 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1390
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1391
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1392 /* SZML-CPAP/009 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1393 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1394 * handle TBF starting time is always present in single block allocation,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1395 * otherwise something is wrong
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1396 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1397
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1398 if( assign->v_sngl_block_alloc)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1399 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1400 prim->p_tbf_start.tbf_start_present = 1;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1401 prim->p_tbf_start.fn = grr_decode_tbf_start_abs((T_abs*) &assign->sngl_block_alloc.tbf_start_time);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1402 if(grr_check_if_tbf_start_is_elapsed ( prim->p_tbf_start.fn, grr_data->ul_fn))
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1403 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1404 TRACE_ERROR("TBF Starting time is ELAPSED in single block allocation!");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1405 TRACE_EVENT_P2("CPAP SBR TBF ST ELAPSED st=%ld c_fn=%ld ", prim->p_tbf_start.fn,grr_data->dl_fn);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1406 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1407 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1408 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1409 result = TRUE;
|
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 if( result )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1414 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1415 tc_cpy_ctrl_blk_to_buffer( prim->l2_frame );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1416
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1417 prim->tsc = grr_data->tc.freq_set.tsc;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1418 prim->tn = d_imm_assign->pck_chan_desc.tn;
|
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 * frequency parameters
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1422 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1423 grr_set_freq_par( &prim->p_frequency_par );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1424 sig_cpap_tc_assign_sb( (void*)prim, SINGLE_BLOCK_TRANSFER_UL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1425
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1426 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1427 TRACE_EVENT_P8("request_ia2 tn:%d tsc: %d ta:%d arfcn:%ld : nr: %d p0:%d pr:%d ctrl:%d",
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1428 prim_i->tn,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1429 prim_i->tsc,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1430 prim_i->p_timing_advance,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1431 prim_i->p_chan_sel.p_rf_ch.arfcn,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1432 prim_i->ptr2prim->p_frequency_par.p_freq_list.p_rf_chan_cnt,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1433 prim_i->p_dl_power.p0,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1434 prim_i->p_dl_power.pr_mode,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1435 prim_i->p_dl_power.bts_pwr_ctl_mode);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1436 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1437 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1438 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1439 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1440 PFREE(prim);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1441 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1442
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1443 return result;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1444 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1445 } /* cpap_send_single_block_without_tbf() */
|
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 | Function : cpap_send_receive_normal_burst
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1451 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1452 | Description : The function cpap_send_receive_normal_burst() sends the
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1453 | primitive MPHP_SINGLE_BLOCK_REQ to receive a single packet
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1454 | control block on the specified radio resource.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1455 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1456 | Parameters : void
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1457 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1458 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1459 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1460 GLOBAL UBYTE cpap_send_receive_normal_burst ( void )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1461 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1462 MCAST( d_imm_assign, D_IMM_ASSIGN );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1463
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1464 T_pck_downl_ass_ia *ptr2dl_assign =
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1465 &d_imm_assign->ia_rest_oct.ia_assign_par.pck_downl_ass_ia;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1466 UBYTE result = FALSE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1467
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1468 PALLOC( mphp_single_block_req, MPHP_SINGLE_BLOCK_REQ );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1469
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1470 TRACE_FUNCTION( "cpap_send_receive_normal_burst" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1471
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1472 memset( mphp_single_block_req, 0, sizeof( T_MPHP_SINGLE_BLOCK_REQ ) );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1473
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1474 mphp_single_block_req->assign_id = 0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1475 grr_data->tc.last_rec_nb_id = mphp_single_block_req->assign_id;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1476 mphp_single_block_req->purpose = SINGLE_BLOCK_TRANSFER_DL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1477 mphp_single_block_req->tsc = grr_data->tc.freq_set.tsc;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1478 mphp_single_block_req->tn = d_imm_assign->pck_chan_desc.tn;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1479
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1480 grr_set_freq_par( &mphp_single_block_req->p_frequency_par );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1481
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1482 if( ptr2dl_assign->v_p0_bts_prmode )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1483 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1484 mphp_single_block_req->p_dl_power.p0 = ptr2dl_assign->p0_bts_prmode.p0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1485 mphp_single_block_req->p_dl_power.bts_pwr_ctl_mode =
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1486 ptr2dl_assign->p0_bts_prmode.pwr_ctrl_mode;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1487 mphp_single_block_req->p_dl_power.pr_mode = ptr2dl_assign->p0_bts_prmode.pr_mode;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1488 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1489 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1490 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1491 mphp_single_block_req->p_dl_power.p0 = 0xff;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1492 mphp_single_block_req->p_dl_power.bts_pwr_ctl_mode = 0xff;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1493 mphp_single_block_req->p_dl_power.pr_mode = 0xff;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1494 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1495
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1496 mphp_single_block_req->pc_meas_chan = psc_db->g_pwr_par.pc_meas_chan;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1497 mphp_single_block_req->burst_type = (psc_db->gprs_cell_opt.ab_type EQ AB_8_BIT)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1498 ?AB_8_BIT
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1499 :AB_11_BIT;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1500
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1501 /* a downlink single block don't need timing advance!! */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1502 mphp_single_block_req->p_timing_advance.ta_value = 0xff;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1503 mphp_single_block_req->p_timing_advance.ta_index = 0xff;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1504 mphp_single_block_req->p_timing_advance.tn = 0xff;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1505 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1506 * handle TBF starting time
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1507 * is always present in single block allocation (otherwise something is wrong)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1508 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1509 if(ptr2dl_assign->v_tbf_start_time)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1510 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1511 mphp_single_block_req->p_tbf_start.tbf_start_present = 1;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1512 mphp_single_block_req->p_tbf_start.fn = grr_decode_tbf_start_abs((T_abs *)&ptr2dl_assign->tbf_start_time);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1513 if(grr_check_if_tbf_start_is_elapsed ( mphp_single_block_req->p_tbf_start.fn, grr_data->ul_fn))
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1514 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1515 TRACE_ERROR("TBF Starting time is ELAPSED in single block allocation!");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1516 TRACE_EVENT_P2("CPAP SBR TBF ST ELAPSED st=%ld c_fn=%ld ", mphp_single_block_req->p_tbf_start.fn,grr_data->dl_fn);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1517 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1518 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1519 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1520 result = TRUE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1521 grr_data->tc.last_rec_nb_fn = mphp_single_block_req->p_tbf_start.fn;
|
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 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1525 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1526 TRACE_ERROR("TBF Starting time is missing in single block allocation!");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1527 /* SZML-CPAP/013 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1528 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1529
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1530 if(result)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1531 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1532 sig_cpap_tc_assign_sb((void*)mphp_single_block_req,SINGLE_BLOCK_TRANSFER_DL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1533 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1534 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1535 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1536 PFREE(mphp_single_block_req);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1537 TRACE_ERROR("SINGLE BLOCK STARTING TIME HAS ALREADY BEEN ELAPSED");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1538 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1539
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1540 return result;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1541 } /* cpap_send_receive_normal_burst() */
|
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 : cpap_store_ia_message
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1547 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1548 | Description : The function cpap_store_ia_message() stores the 1st message of
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1549 | a two message assignment.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1550 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1551 | Parameters : void
|
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 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1555 GLOBAL void cpap_store_ia_message ( void )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1556 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1557 MCAST(d_imm_assign,D_IMM_ASSIGN); /* T_D_IMM_ASSIGN */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1558
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1559 TRACE_FUNCTION( "cpap_store_ia_message" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1560
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1561 memcpy(&grr_data->cpap.tma_ia, d_imm_assign, sizeof(T_D_IMM_ASSIGN));
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1562 grr_data->cpap.v_tma_ia = TRUE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1563
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1564 } /* cpap_store_ia_message() */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1565
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1566
|
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 | Function : cpap_join_tma_messages
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1570 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1571 | Description : The function cpap_join_tma_messages() join the stored 1st and
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1572 | the 2nd message of a two message assignment.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1573 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1574 | Parameters : void
|
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 GLOBAL void cpap_join_tma_messages ( void )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1579 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1580 MCAST(d_imm_assign,D_IMM_ASSIGN); /* T_D_IMM_ASSIGN */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1581
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1582 TRACE_FUNCTION( "cpap_join_tma_messages" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1583
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1584 /* the 2nd message contains only the packet channel description and the
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1585 * mobile allocation if needed.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1586 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1587
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1588 d_imm_assign->tma = TMA_0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1589 d_imm_assign->page_mode.pm = grr_data->cpap.tma_ia.page_mode.pm;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1590 d_imm_assign->time_advance.ta = grr_data->cpap.tma_ia.time_advance.ta;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1591 if(grr_data->cpap.tma_ia.v_start_time)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1592 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1593 d_imm_assign->v_start_time = TRUE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1594 d_imm_assign->start_time.t1 = grr_data->cpap.tma_ia.start_time.t1;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1595 d_imm_assign->start_time.t2 = grr_data->cpap.tma_ia.start_time.t2;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1596 d_imm_assign->start_time.t3 = grr_data->cpap.tma_ia.start_time.t3;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1597 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1598 memcpy( &d_imm_assign->ia_rest_oct,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1599 &grr_data->cpap.tma_ia.ia_rest_oct,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1600 sizeof(T_ia_rest_oct) );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1601 grr_data->cpap.v_tma_ia = FALSE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1602
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1603 } /* cpap_join_tma_messages() */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1604
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1605 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1606 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1607 | Function : cpap_malloc_ia
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1608 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1609 | Description : The function cpap_malloc_ia() ....
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1610 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1611 | Parameters :
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1612 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1613 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1614 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1615 GLOBAL void cpap_malloc_ia ( void )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1616 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1617 TRACE_FUNCTION( "cpap_malloc_ia" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1618
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1619 if( grr_data->cpap.p_d_imm_assign EQ NULL )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1620 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1621 MALLOC( grr_data->cpap.p_d_imm_assign, sizeof( T_D_IMM_ASSIGN ) );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1622 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1623 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1624 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1625 TRACE_ERROR( "cpap_malloc_ia: fatal error, memory reallocation not implemented" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1626 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1627
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1628 *grr_data->cpap.p_d_imm_assign = *( ( T_D_IMM_ASSIGN * )_decodedMsg );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1629
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1630 } /* cpap_malloc_ia() */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1631
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1632 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1633 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1634 | Function : cpap_mfree_ia
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1635 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1636 | Description : The function cpap_mfree_ia() ....
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1637 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1638 | Parameters :
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1639 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1640 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1641 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1642 GLOBAL void cpap_mfree_ia ( BOOL restore_data )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1643 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1644 TRACE_FUNCTION( "cpap_mfree_ia" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1645
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1646 if( grr_data->cpap.p_d_imm_assign NEQ NULL )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1647 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1648 if( restore_data )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1649 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1650 *( ( T_D_IMM_ASSIGN * )_decodedMsg ) = *grr_data->cpap.p_d_imm_assign;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1651 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1652
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1653 MFREE( grr_data->cpap.p_d_imm_assign );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1654 grr_data->cpap.p_d_imm_assign = NULL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1655 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1656 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1657 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1658 TRACE_ERROR( "cpap_mfree_ia: fatal error, no memory allocated" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1659 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1660 } /* cpap_mfree_ia() */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1661
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1662 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1663 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1664 | Function : cpap_check_and_save_freq
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1665 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1666 | Description : This function check if the freq_par is valid or not..
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1667 | If it is hopping case, save the hoppinging freq.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1668 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1669 | Parameters : void
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1670 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1671 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1672 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1673 LOCAL BOOL cpap_check_and_save_freq (void)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1674 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1675 MCAST(d_imm_assign,D_IMM_ASSIGN); /* T_D_IMM_ASSIGN */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1676 T_pck_chan_desc *chan_desc = &d_imm_assign->pck_chan_desc;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1677 T_mob_alloc *mob_alloc = &d_imm_assign->mob_alloc;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1678 BOOL result = FALSE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1679 T_freq_par freq_par;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1680 TRACE_FUNCTION( "cpap_check_and_save_freq" );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1681
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1682 if(chan_desc->hop OR (!chan_desc->hop AND chan_desc->indir))
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1683 { /* hopping*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1684
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1685 if (chan_desc->indir)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1686 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1687 /* indirect encoding */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1688 /* set up tc's freq_par struct */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1689 memset(&freq_par,0,sizeof(T_freq_par));
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1690 freq_par.v_indi_encod = TRUE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1691 freq_par.indi_encod.maio = chan_desc->maio;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1692 freq_par.tsc = chan_desc->tsc;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1693 freq_par.indi_encod.ma_num =
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1694 chan_desc->ma_num + MA_NUMBER_4_PSI13_OR_CELL_ALLOC;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1695 if( chan_desc->v_ch_mark1)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1696 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1697 freq_par.indi_encod.v_chamge_ma_sub = TRUE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1698 freq_par.indi_encod.chamge_ma_sub.cm1 = chan_desc->ch_mark1;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1699 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1700
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1701 result = tc_set_hopping_par( &freq_par );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1702 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1703 else if( chan_desc->v_maio AND chan_desc->v_hsn )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1704 { /* direct encoding */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1705
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1706 UBYTE i;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1707 memset(&freq_par,0,sizeof(T_freq_par));
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1708 freq_par.v_di_encod1 = TRUE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1709 freq_par.di_encod1.maio = chan_desc->maio;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1710 freq_par.tsc = chan_desc->tsc;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1711 freq_par.di_encod1.gprs_ms_alloc_ie.hsn = chan_desc->hsn;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1712
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1713 if(0 NEQ mob_alloc->c_mac)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1714 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1715 freq_par.di_encod1.gprs_ms_alloc_ie.v_ma_struct = TRUE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1716 freq_par.di_encod1.gprs_ms_alloc_ie.ma_struct.c_ma_map
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1717 = mob_alloc->c_mac*8;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1718 freq_par.di_encod1.gprs_ms_alloc_ie.ma_struct.ma_len =
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1719 (mob_alloc->c_mac*8)-1;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1720 for(i = 0;i < (mob_alloc->c_mac*8);i++)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1721 { /* convert bitbuffer type of rr to type of grr */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1722 freq_par.di_encod1.gprs_ms_alloc_ie.ma_struct.ma_map[i]
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1723 = (mob_alloc->mac[i/8]>>(7-(i%8)))&0x01;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1724 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1725 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1726
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1727 result = tc_set_hopping_par( &freq_par );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1728 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1729 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1730 { /* corrupted message decoding */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1731 grr_data->tc.v_freq_set = FALSE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1732 result = FALSE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1733 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1734
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1735 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1736 else if(chan_desc->v_arfcn)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1737 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1738 /* absolut radio frequency channel number */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1739 grr_data->tc.v_freq_set = TRUE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1740 result = TRUE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1741 grr_data->tc.freq_set.freq_par.p_chan_sel.hopping = FALSE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1742 grr_data->tc.freq_set.tsc = chan_desc->tsc;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1743 grr_data->tc.freq_set.freq_par.p_chan_sel.p_rf_ch.arfcn = grr_g23_arfcn_to_l1(chan_desc->arfcn);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1744 /* set up tc's freq_par struct */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1745 memset(&grr_data->tc.freq_set.freq_par.p_freq_list.p_rf_chan_no.p_radio_freq,0,sizeof(grr_data->tc.freq_set.freq_par.p_freq_list.p_rf_chan_no.p_radio_freq));
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1746 grr_data->tc.freq_set.freq_par.p_freq_list.p_rf_chan_cnt = 0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1747 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1748 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1749 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1750 grr_data->tc.v_freq_set = FALSE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1751 result = FALSE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1752 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1753
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1754 grr_data->pwr_ctrl_valid_flags.v_glbl_pwr_ctrl_param = TRUE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1755 grr_data->pwr_ctrl_valid_flags.v_freq_param = TRUE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1756
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1757 return result;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1758 } /* cpap_check_and_save_freq */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1759
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1760
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1761
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1762
|