FreeCalypso > hg > fc-magnetite
comparison src/cs/layer1/p_cfile/l1p_func.c @ 302:0740b5ff15f6
reconstructed L1_GPRS source imported from tcs211-l1-reconst
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Tue, 31 Oct 2017 03:42:35 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
301:a963c5c35f8d | 302:0740b5ff15f6 |
---|---|
1 /************* Revision Controle System Header ************* | |
2 * GSM Layer 1 software | |
3 * L1P_FUNC.C | |
4 * | |
5 * Filename l1p_func.c | |
6 * Copyright 2003 (C) Texas Instruments | |
7 * | |
8 ************* Revision Controle System Header *************/ | |
9 | |
10 #define L1P_FUNC_C | |
11 | |
12 #include "l1_macro.h" | |
13 #include "l1_confg.h" | |
14 | |
15 #if L1_GPRS | |
16 | |
17 #if (CODE_VERSION == SIMULATION) | |
18 #include "stddef.h" | |
19 #endif | |
20 | |
21 #include "l1_types.h" | |
22 #include "sys_types.h" | |
23 #include "l1_const.h" | |
24 | |
25 | |
26 #if TESTMODE | |
27 #include "l1tm_defty.h" | |
28 #endif | |
29 #if (AUDIO_TASK == 1) | |
30 #include "l1audio_const.h" | |
31 #include "l1audio_cust.h" | |
32 #include "l1audio_defty.h" | |
33 #endif | |
34 #if (L1_GTT == 1) | |
35 #include "l1gtt_const.h" | |
36 #include "l1gtt_defty.h" | |
37 #endif | |
38 #if (L1_MP3 == 1) | |
39 #include "l1mp3_defty.h" | |
40 #endif | |
41 #if (L1_MIDI == 1) | |
42 #include "l1midi_defty.h" | |
43 #endif | |
44 #include "l1_defty.h" | |
45 #include "l1_varex.h" | |
46 | |
47 #include "cust_os.h" | |
48 #include "l1_msgty.h" | |
49 #include "l1_time.h" | |
50 | |
51 #include "l1p_cons.h" | |
52 #include "l1p_msgt.h" | |
53 #include "l1p_deft.h" | |
54 #include "l1p_vare.h" | |
55 #include "l1p_sign.h" | |
56 | |
57 #if(RF_FAM == 61) | |
58 #include "l1_rf61.h" | |
59 #include "tpudrv61.h" | |
60 #endif | |
61 | |
62 #if (CODE_VERSION == SIMULATION) | |
63 #include "l1_rf2.h" | |
64 #endif | |
65 | |
66 /*-------------------------------------------------------*/ | |
67 /* Prototypes of external functions used in this file. */ | |
68 /*-------------------------------------------------------*/ | |
69 | |
70 void l1pddsp_meas_ctrl (UWORD8 nbmeas, UWORD8 pm_pos); | |
71 void l1dtpu_meas (UWORD16 radio_freq,WORD8 agc,UWORD8 lna_off, | |
72 UWORD16 win_id,UWORD16 tpu_synchro, UWORD8 adc_active | |
73 #if (RF_FAM == 61) | |
74 ,UWORD8 afc_mode | |
75 ,UWORD8 if_ctl | |
76 #endif | |
77 ); | |
78 WORD8 Cust_get_agc_from_IL (UWORD16 radio_freq, UWORD16 agc_index, UWORD8 table_id); | |
79 void l1ps_macs_init (void); | |
80 | |
81 /*-------------------------------------------------------*/ | |
82 /* initialize_l1pvar() */ | |
83 /*-------------------------------------------------------*/ | |
84 /* Parameters : */ | |
85 /* ------------- */ | |
86 /* Return : */ | |
87 /* ------------- */ | |
88 /* Description : */ | |
89 /* ------------- */ | |
90 /* This routine is used to initialize the l1pa, l1ps and */ | |
91 /* l1pa_l1ps_com global structures. */ | |
92 /*-------------------------------------------------------*/ | |
93 void initialize_l1pvar(void) | |
94 { | |
95 UWORD8 i; | |
96 | |
97 //++++++++++++++++++++++++++++++++++++++++++ | |
98 // Reset "l1ps" structure. | |
99 //++++++++++++++++++++++++++++++++++++++++++ | |
100 | |
101 l1ps.last_PR_good = 0; | |
102 l1ps.ILmin_beacon = 255; | |
103 #if 0 /* FreeCalypso TCS211 reconstruction */ | |
104 l1ps.read_param.assignment_id = 0xFF; /* do not return non initialized value to RLC */ | |
105 #endif | |
106 | |
107 for(i = 0; i < 8; i++) | |
108 l1ps.ILmin_others[i] = l1_config.params.il_min; | |
109 | |
110 //++++++++++++++++++++++++++++++++++++++++++ | |
111 // Reset "l1pa" structure. | |
112 //++++++++++++++++++++++++++++++++++++++++++ | |
113 | |
114 for(i=0;i<NBR_L1PA_PROCESSES;i++) | |
115 { | |
116 l1pa.state[i] = 0; | |
117 l1pa.l1pa_en_meas[i] = 0; | |
118 } | |
119 | |
120 //++++++++++++++++++++++++++++++++++++++++++ | |
121 // Reset "l1pa_l1ps_com" structure. | |
122 //++++++++++++++++++++++++++++++++++++++++++ | |
123 | |
124 // Initialize PC_MEAS_CHAN flag | |
125 l1ps.pc_meas_chan_ctrl = FALSE; | |
126 | |
127 // Initialize active list used in Neighbour Measurement Transfer Process | |
128 l1pa_l1ps_com.cres_freq_list.alist = &(l1pa_l1ps_com.cres_freq_list.list[0]); | |
129 | |
130 // Initialize parameters used in Neighbour Measurement Transfer Process | |
131 l1pa_l1ps_com.cres_freq_list.alist->nb_carrier = 0; | |
132 l1pa_l1ps_com.tcr_freq_list.new_list_present = FALSE; | |
133 | |
134 l1pa_l1ps_com.transfer.semaphore = TRUE; | |
135 l1pa_l1ps_com.transfer.aset = &(l1pa_l1ps_com.transfer.set[0]); | |
136 l1pa_l1ps_com.transfer.fset[0] = &(l1pa_l1ps_com.transfer.set[1]); | |
137 l1pa_l1ps_com.transfer.fset[1] = &(l1pa_l1ps_com.transfer.set[2]); | |
138 | |
139 // Initialize Downlink Power Control Struture. Set CRC to BAD, bcch_level | |
140 // and burst_level[] to INVALID. | |
141 l1pa_l1ps_com.transfer.dl_pwr_ctrl.crc_error = TRUE; | |
142 l1pa_l1ps_com.transfer.dl_pwr_ctrl.bcch_level = (WORD8)0x80;//omaps00090550 | |
143 | |
144 for(i = 0; i < 4; i++) | |
145 { | |
146 l1pa_l1ps_com.transfer.dl_pwr_ctrl.burst_level[i] = (WORD8)0x80;//omaps00090550 | |
147 } | |
148 | |
149 l1pa_l1ps_com.transfer.set[0].ul_tbf_alloc = &(l1pa_l1ps_com.transfer.ul_tbf_alloc[0]); | |
150 l1pa_l1ps_com.transfer.set[1].ul_tbf_alloc = &(l1pa_l1ps_com.transfer.ul_tbf_alloc[1]); | |
151 l1pa_l1ps_com.transfer.set[2].ul_tbf_alloc = &(l1pa_l1ps_com.transfer.ul_tbf_alloc[2]); | |
152 | |
153 for(i=0;i<3;i++) | |
154 { | |
155 l1pa_l1ps_com.transfer.set[i].SignalCode = 0; | |
156 l1pa_l1ps_com.transfer.set[i].dl_tbf_synchro_timeslot = 0; | |
157 l1pa_l1ps_com.transfer.set[i].dl_tbf_synchro_timeslot = 0; | |
158 l1pa_l1ps_com.transfer.set[i].transfer_synchro_timeslot = 0; | |
159 l1pa_l1ps_com.transfer.set[i].allocated_tbf = NO_TBF; | |
160 l1pa_l1ps_com.transfer.set[i].assignment_command = NO_TBF; | |
161 l1pa_l1ps_com.transfer.set[i].multislot_class = 0; | |
162 | |
163 l1pa_l1ps_com.transfer.set[i].packet_ta.ta = 255; | |
164 l1pa_l1ps_com.transfer.set[i].packet_ta.ta_index = 255; | |
165 l1pa_l1ps_com.transfer.set[i].packet_ta.ta_tn = 255; | |
166 | |
167 l1pa_l1ps_com.transfer.set[i].tsc = 0; | |
168 | |
169 l1pa_l1ps_com.transfer.set[i].freq_param.chan_sel.h = 0; | |
170 l1pa_l1ps_com.transfer.set[i].freq_param.chan_sel. | |
171 rf_channel.single_rf.radio_freq = 0; | |
172 | |
173 l1pa_l1ps_com.transfer.set[i].tbf_sti.present = FALSE; | |
174 | |
175 l1pa_l1ps_com.transfer.set[i].mac_mode = 0; | |
176 | |
177 l1pa_l1ps_com.transfer.set[i].ul_tbf_alloc->tfi = 255; | |
178 l1pa_l1ps_com.transfer.set[i].dl_tbf_alloc.tfi = 255; | |
179 | |
180 l1pa_l1ps_com.transfer.set[i].dl_pwr_ctl.p0 = 255; | |
181 l1pa_l1ps_com.transfer.set[i].dl_pwr_ctl.bts_pwr_ctl_mode = 0; | |
182 l1pa_l1ps_com.transfer.set[i].dl_pwr_ctl.pr_mode = 0; | |
183 } | |
184 | |
185 //++++++++++++++++++++++++++++++++++++++++++ | |
186 // Reset "l1pa_macs_com" structure. | |
187 //++++++++++++++++++++++++++++++++++++++++++ | |
188 | |
189 l1ps_macs_com.fix_alloc_exhaust_flag = FALSE; | |
190 l1ps_macs_com.rlc_downlink_call = FALSE; | |
191 #if FF_L1_IT_DSP_USF | |
192 l1ps_macs_com.usf_status = USF_AVAILABLE; | |
193 #endif | |
194 #if L1_EDA | |
195 l1ps_macs_com.fb_sb_task_enabled = FALSE; | |
196 l1ps_macs_com.fb_sb_task_detect = FALSE; | |
197 #endif | |
198 | |
199 //++++++++++++++++++++++++++++++++++++++++++ | |
200 // Reset MAC-S static structure. | |
201 //++++++++++++++++++++++++++++++++++++++++++ | |
202 l1ps_macs_init(); | |
203 | |
204 //++++++++++++++++++++++++++++++++++++++++++ | |
205 // Reset packet transfer mode commands. | |
206 //++++++++++++++++++++++++++++++++++++++++++ | |
207 | |
208 l1pa_l1ps_com.transfer.ptcch.ta_update_cmd = FALSE; | |
209 l1pa_l1ps_com.transfer.psi_param.psi_param_update_cmd = FALSE; | |
210 l1pa_l1ps_com.transfer.tbf_release_param.tbf_release_cmd = FALSE; | |
211 l1pa_l1ps_com.transfer.pdch_release_param.pdch_release_cmd = FALSE; | |
212 l1pa_l1ps_com.transfer.repeat_alloc.repeat_allocation = FALSE; | |
213 } | |
214 | |
215 /*-------------------------------------------------------*/ | |
216 /* l1ps_reset_db_mcu_to_dsp() */ | |
217 /*-------------------------------------------------------*/ | |
218 /* Parameters : */ | |
219 /* Return : */ | |
220 /* Functionality : */ | |
221 /*-------------------------------------------------------*/ | |
222 void l1ps_reset_db_mcu_to_dsp(T_DB_MCU_TO_DSP_GPRS *page_ptr) | |
223 { | |
224 API i; | |
225 API size = sizeof(T_DB_MCU_TO_DSP_GPRS) / sizeof(API); | |
226 API *ptr = (API *)page_ptr; | |
227 | |
228 // Clear all locations. | |
229 for(i=0; i<size; i++) *ptr++ = 0; | |
230 } | |
231 | |
232 /*-------------------------------------------------------*/ | |
233 /* l1ps_reset_db_dsp_to_mcu() */ | |
234 /*-------------------------------------------------------*/ | |
235 /* Parameters : */ | |
236 /* Return : */ | |
237 /* Functionality : */ | |
238 /*-------------------------------------------------------*/ | |
239 void l1ps_reset_db_dsp_to_mcu(T_DB_DSP_TO_MCU *page_ptr) | |
240 { | |
241 API i; | |
242 API size = sizeof(T_DB_DSP_TO_MCU_GPRS) / sizeof(API); | |
243 API *ptr = (API *)page_ptr; | |
244 | |
245 // Clear all locations. | |
246 for(i=0; i<size; i++) *ptr++ = 0; | |
247 | |
248 // Set crc result as "SB not found". | |
249 page_ptr->a_sch[0] = (1<<B_SCH_CRC); // B_SCH_CRC =1, BLUD =0 | |
250 } | |
251 | |
252 /*-------------------------------------------------------*/ | |
253 /* l1ps_swap_iq_dl() */ | |
254 /*-------------------------------------------------------*/ | |
255 /* Parameters : */ | |
256 /* Return : */ | |
257 /* Functionality : */ | |
258 /*-------------------------------------------------------*/ | |
259 BOOL l1ps_swap_iq_dl(UWORD16 radio_freq) | |
260 { | |
261 UWORD8 swap_iq; | |
262 BOOL swap_flag; | |
263 | |
264 #if (L1_FF_MULTIBAND == 0) | |
265 | |
266 if(((l1_config.std.id == DUAL) || (l1_config.std.id == DUALEXT) || (l1_config.std.id == DUAL_US)) && | |
267 (radio_freq >= l1_config.std.first_radio_freq_band2)) | |
268 { | |
269 swap_iq = l1_config.std.swap_iq_band2; | |
270 } | |
271 else | |
272 { | |
273 swap_iq = l1_config.std.swap_iq_band1; | |
274 } | |
275 | |
276 #else // L1_FF_MULTIBAND = 1 below | |
277 | |
278 UWORD16 physical_band_id; | |
279 physical_band_id = | |
280 l1_multiband_radio_freq_convert_into_physical_band_id(radio_freq); | |
281 swap_iq = rf_band[physical_band_id].swap_iq; | |
282 | |
283 #endif // #if (L1_FF_MULTIBAND == 0) else | |
284 | |
285 | |
286 switch(swap_iq) | |
287 { | |
288 case 0: /* No swap at all. */ | |
289 case 2: /* DL, no swap. */ | |
290 swap_flag = FALSE; | |
291 break; | |
292 case 1: /* DL I/Q swap. */ | |
293 case 3: /* DL I/Q swap. */ | |
294 swap_flag = TRUE; | |
295 break; | |
296 } | |
297 return(swap_flag); | |
298 } | |
299 | |
300 /*-------------------------------------------------------*/ | |
301 /* l1ps_swap_iq_ul() */ | |
302 /*-------------------------------------------------------*/ | |
303 /* Parameters : */ | |
304 /* Return : */ | |
305 /* Functionality : */ | |
306 /*-------------------------------------------------------*/ | |
307 BOOL l1ps_swap_iq_ul(UWORD16 radio_freq) | |
308 { | |
309 UWORD8 swap_iq; | |
310 BOOL swap_flag; | |
311 | |
312 #if (L1_FF_MULTIBAND == 0) | |
313 | |
314 if(((l1_config.std.id == DUAL) || (l1_config.std.id == DUALEXT) || (l1_config.std.id == DUAL_US)) && | |
315 (radio_freq >= l1_config.std.first_radio_freq_band2)) | |
316 { | |
317 swap_iq = l1_config.std.swap_iq_band2; | |
318 } | |
319 else | |
320 { | |
321 swap_iq = l1_config.std.swap_iq_band1; | |
322 } | |
323 | |
324 #else // L1_FF_MULTIBAND = 1 below | |
325 | |
326 UWORD16 physical_band_id = 0; | |
327 physical_band_id = | |
328 l1_multiband_radio_freq_convert_into_physical_band_id(radio_freq); | |
329 swap_iq = rf_band[physical_band_id].swap_iq; | |
330 | |
331 #endif // #if (L1_FF_MULTIBAND == 0) else | |
332 | |
333 switch(swap_iq) | |
334 { | |
335 case 0: /* No swap at all. */ | |
336 case 1: /* UL, no swap. */ | |
337 swap_flag = FALSE; | |
338 break; | |
339 case 2: /* UL I/Q swap. */ | |
340 case 3: /* UL I/Q swap. */ | |
341 swap_flag = TRUE; | |
342 break; | |
343 } | |
344 return(swap_flag); | |
345 } | |
346 | |
347 /*-------------------------------------------------------*/ | |
348 /* l1ps_tcr_ctrl() */ | |
349 /*-------------------------------------------------------*/ | |
350 /* Parameters : */ | |
351 /* Return : */ | |
352 /* Functionality : */ | |
353 /*-------------------------------------------------------*/ | |
354 void l1ps_tcr_ctrl(UWORD8 pm_position) | |
355 { | |
356 UWORD16 radio_freq_ctrl; | |
357 UWORD8 lna_off; | |
358 WORD8 agc; | |
359 | |
360 UWORD8 mode = PACKET_TRANSFER; | |
361 UWORD8 input_level; | |
362 #if (RF_FAM == 61) | |
363 UWORD16 dco_algo_ctl_pw = 0; | |
364 UWORD8 if_ctl = 0; | |
365 UWORD8 if_threshold = C_IF_ZERO_LOW_THRESHOLD_GSM; | |
366 #endif | |
367 | |
368 radio_freq_ctrl = l1pa_l1ps_com.cres_freq_list.alist->freq_list[l1pa_l1ps_com.tcr_freq_list.tcr_next_to_ctrl]; | |
369 | |
370 // Get AGC according to the last known IL. | |
371 | |
372 input_level = l1a_l1s_com.last_input_level[radio_freq_ctrl - l1_config.std.radio_freq_index_offset].input_level; | |
373 agc = Cust_get_agc_from_IL(radio_freq_ctrl, input_level >> 1, PWR_ID); | |
374 lna_off = l1a_l1s_com.last_input_level[radio_freq_ctrl - l1_config.std.radio_freq_index_offset].lna_off; | |
375 | |
376 #if (RF_FAM == 61) // Locosto DCO | |
377 #if (PWMEAS_IF_MODE_FORCE == 0) | |
378 cust_get_if_dco_ctl_algo(&dco_algo_ctl_pw, &if_ctl, (UWORD8) L1_IL_VALID , | |
379 input_level, | |
380 l1pa_l1ps_com.p_idle_param.radio_freq, if_threshold); | |
381 #else | |
382 if_ctl = IF_120KHZ_DSP; | |
383 dco_algo_ctl_pw = DCO_IF_0KHZ; | |
384 #endif | |
385 | |
386 | |
387 l1ddsp_load_dco_ctl_algo_pw(dco_algo_ctl_pw); | |
388 l1s.tcr_prog_done=1; | |
389 #endif | |
390 | |
391 // Memorize the IL and LNA used for AGC setting. | |
392 l1pa_l1ps_com.tcr_freq_list.used_il_lna.il = l1a_l1s_com.last_input_level[radio_freq_ctrl - l1_config.std.radio_freq_index_offset].input_level; | |
393 l1pa_l1ps_com.tcr_freq_list.used_il_lna.lna = l1a_l1s_com.last_input_level[radio_freq_ctrl - l1_config.std.radio_freq_index_offset].lna_off; | |
394 | |
395 // tpu pgm: 1 measurement only. | |
396 l1dtpu_meas(radio_freq_ctrl, | |
397 agc, | |
398 lna_off, | |
399 l1s.tpu_win, | |
400 l1s.tpu_offset,INACTIVE | |
401 #if(RF_FAM == 61) | |
402 ,L1_AFC_SCRIPT_MODE | |
403 ,if_ctl | |
404 #endif | |
405 ); | |
406 | |
407 // Increment tpu window identifier. | |
408 l1s.tpu_win += (l1_config.params.rx_synth_load_split + PWR_LOAD); | |
409 | |
410 // increment carrier counter for next measurement... | |
411 if(++l1pa_l1ps_com.tcr_freq_list.tcr_next_to_ctrl >= l1pa_l1ps_com.cres_freq_list.alist->nb_carrier) | |
412 l1pa_l1ps_com.tcr_freq_list.tcr_next_to_ctrl = 0; | |
413 | |
414 // Program DSP, in order to performed 1 measure. | |
415 // Second argument specifies PW position. | |
416 l1pddsp_meas_ctrl(1, pm_position); | |
417 | |
418 #if (TRACE_TYPE!=0) | |
419 //trace_fct(CST_CTRL_TRANSFER_MEAS, radio_freq_ctrl); | |
420 #endif | |
421 | |
422 // Update d_debug timer | |
423 l1s_dsp_com.dsp_db_w_ptr->d_debug = (l1s.debug_time + 2) ; | |
424 | |
425 | |
426 // Flag measurement control. | |
427 // ************************** | |
428 | |
429 // Set flag "ms_ctrl" to nb_meas_to_perform. | |
430 // It will be used as 2 tdma delayed to trigger Read phase. | |
431 l1pa_l1ps_com.tcr_freq_list.ms_ctrl = 1; | |
432 | |
433 // Flag DSP and TPU programmation. | |
434 // ******************************** | |
435 | |
436 // Set "CTRL_MS" flag in the controle flag register. | |
437 l1s.tpu_ctrl_reg |= CTRL_MS; | |
438 l1s.dsp_ctrl_reg |= CTRL_MS; | |
439 | |
440 } | |
441 | |
442 /*-------------------------------------------------------*/ | |
443 /* l1ps_bcch_meas_ctrl() */ | |
444 /*-------------------------------------------------------*/ | |
445 /* Parameters : */ | |
446 /* Return : */ | |
447 /* Functionality : */ | |
448 /*-------------------------------------------------------*/ | |
449 void l1ps_bcch_meas_ctrl(UWORD8 ts) | |
450 { | |
451 UWORD8 lna_off; | |
452 WORD8 agc; | |
453 | |
454 UWORD8 mode = PACKET_TRANSFER; | |
455 UWORD8 input_level; | |
456 #if (RF_FAM == 61) | |
457 UWORD16 dco_algo_ctl_pw =0; | |
458 UWORD8 if_ctl=0; | |
459 UWORD8 if_threshold = C_IF_ZERO_LOW_THRESHOLD_GSM; | |
460 #endif | |
461 | |
462 | |
463 if ((l1s.dsp_ctrl_reg & CTRL_ABORT) == 0) | |
464 { | |
465 #define radio_freq_ctrl l1a_l1s_com.Scell_info.radio_freq | |
466 | |
467 // Get AGC according to the last known IL. | |
468 input_level = l1a_l1s_com.last_input_level[radio_freq_ctrl - l1_config.std.radio_freq_index_offset].input_level; | |
469 agc = Cust_get_agc_from_IL(radio_freq_ctrl, input_level >> 1, PWR_ID); | |
470 lna_off = l1a_l1s_com.last_input_level[radio_freq_ctrl - l1_config.std.radio_freq_index_offset].lna_off; | |
471 // Memorize the IL and LNA used for AGC setting. | |
472 // Note: the same structure as for TCR meas is used for PC_MEAS_CHAN measurements | |
473 l1pa_l1ps_com.tcr_freq_list.used_il_lna.il = l1a_l1s_com.last_input_level[radio_freq_ctrl - l1_config.std.radio_freq_index_offset].input_level; | |
474 l1pa_l1ps_com.tcr_freq_list.used_il_lna.lna = l1a_l1s_com.last_input_level[radio_freq_ctrl - l1_config.std.radio_freq_index_offset].lna_off; | |
475 | |
476 | |
477 #if (RF_FAM == 61) // Locosto DCO | |
478 cust_get_if_dco_ctl_algo(&dco_algo_ctl_pw, &if_ctl, (UWORD8) L1_IL_VALID, | |
479 input_level, | |
480 radio_freq_ctrl,if_threshold); | |
481 | |
482 l1ddsp_load_dco_ctl_algo_pw(dco_algo_ctl_pw); | |
483 #endif | |
484 | |
485 | |
486 // tpu pgm: 1 measurement only. | |
487 l1dtpu_meas(radio_freq_ctrl, | |
488 agc, | |
489 lna_off, | |
490 l1s.tpu_win, | |
491 l1s.tpu_offset,INACTIVE | |
492 #if(RF_FAM == 61) | |
493 ,L1_AFC_SCRIPT_MODE | |
494 ,if_ctl | |
495 #endif | |
496 ); | |
497 | |
498 // Increment tpu window identifier. | |
499 l1s.tpu_win += (l1_config.params.rx_synth_load_split + PWR_LOAD); | |
500 | |
501 // Program DSP, in order to performed 1 measure. | |
502 // Second argument specifies PW position. | |
503 l1pddsp_meas_ctrl(1, (UWORD8)ts); | |
504 | |
505 #if (TRACE_TYPE!=0) && (TRACE_TYPE!=5) | |
506 //trace_fct(CST_CTRL_SCELL_TRANSFER_MEAS, radio_freq_ctrl); | |
507 #endif | |
508 | |
509 // Update d_debug timer | |
510 l1s_dsp_com.dsp_db_w_ptr->d_debug = (l1s.debug_time + 2) ; | |
511 | |
512 | |
513 // Flag measurement control. | |
514 // ************************** | |
515 | |
516 l1ps.pc_meas_chan_ctrl = TRUE; | |
517 | |
518 // Flag DSP and TPU programmation. | |
519 // ******************************** | |
520 | |
521 // Set "CTRL_MS" flag in the controle flag register. | |
522 l1s.tpu_ctrl_reg |= CTRL_MS; | |
523 l1s.dsp_ctrl_reg |= CTRL_MS; | |
524 } | |
525 } | |
526 | |
527 /*-------------------------------------------------------*/ | |
528 /* l1ps_update_read_set_parameters() */ | |
529 /*-------------------------------------------------------*/ | |
530 /* Parameters : */ | |
531 /* Return : */ | |
532 /* Functionality : Updating of the "Read_param" structure*/ | |
533 /* usefull in case the aset structure has been updated */ | |
534 /* before the last read of the current block */ | |
535 /*-------------------------------------------------------*/ | |
536 void l1ps_update_read_set_parameters(void) | |
537 { | |
538 #define READ_PARAM l1ps.read_param | |
539 #define ASET l1pa_l1ps_com.transfer.aset | |
540 | |
541 // Copy of the "aset" parameters in the "read_param" structure | |
542 #if 0 /* FreeCalypso TCS211 reconstruction */ | |
543 READ_PARAM.dl_tn = l1a_l1s_com.dl_tn; | |
544 #endif | |
545 READ_PARAM.new_set = 0; | |
546 READ_PARAM.assignment_id = ASET->assignment_id; | |
547 READ_PARAM.allocated_tbf = ASET->allocated_tbf; | |
548 READ_PARAM.dl_tfi = ASET->dl_tbf_alloc.tfi; | |
549 READ_PARAM.ul_tfi = ASET->ul_tbf_alloc->tfi; | |
550 READ_PARAM.dl_pwr_ctl = ASET->dl_pwr_ctl; | |
551 READ_PARAM.pc_meas_chan = ASET->pc_meas_chan; | |
552 | |
553 // We need to know on which frequency band we work for LNA state processing | |
554 if (!l1pa_l1ps_com.transfer.aset->freq_param.chan_sel.h) | |
555 { | |
556 // Single frequency | |
557 READ_PARAM.radio_freq_for_lna = l1pa_l1ps_com.transfer.aset->freq_param.chan_sel.rf_channel.single_rf.radio_freq; | |
558 } | |
559 else | |
560 { | |
561 // Frequency hopping: all frequencies of the frequency list are on the same band | |
562 // We take the first frequency of the list | |
563 READ_PARAM.radio_freq_for_lna = l1pa_l1ps_com.transfer.aset->freq_param.freq_list.rf_chan_no.A[0]; | |
564 } | |
565 } | |
566 #endif |