comparison L1/include/l1_proto.h @ 0:75a11d740a02

initial import of gsm-fw from freecalypso-sw rev 1033:5ab737ac3ad7
author Mychaela Falconia <falcon@freecalypso.org>
date Thu, 09 Jun 2016 00:02:41 +0000
parents
children f93dab57b032
comparison
equal deleted inserted replaced
-1:000000000000 0:75a11d740a02
1 /************* Revision Controle System Header *************
2 * GSM Layer 1 software
3 * L1_PROTO.H
4 *
5 * Filename l1_proto.h
6 * Copyright 2003 (C) Texas Instruments
7 *
8 ************* Revision Controle System Header *************/
9
10 /**************************************/
11 /* prototypes of L1_SYNC.C functions */
12 /**************************************/
13 void hisr (void);
14
15 void frit_task (UWORD32 argc, void *argv);
16 void l1s_task (UWORD32 argc, void *argv);
17 #if FF_L1_IT_DSP_USF
18 void usf_task (UWORD32 argc, void *argv);
19 #endif
20 void l1s_synch (void);
21
22 void l1s_task_scheduler_process (void);
23 void l1s_execute_frame (void);
24 void l1s_meas_manager (void);
25 void l1s_end_manager (void);
26 void l1s_schedule_tasks (WORD32 *pending_task);
27 void l1s_merge_manager (WORD32 dl_pending_task);
28
29 void l1s_dedicated_mode_manager (void);
30 void l1s_keep_mftab_hist (void);
31
32 /**************************************/
33 /* prototypes of L1_PWMGR.C functions */
34 /**************************************/
35 void l1s_sleep_manager (void);
36 void l1s_wakeup (void);
37 void l1s_wakeup_adjust (void);
38 void GAUGING_Handler (void);
39 UWORD8 l1s_recover_Os (void);
40 UWORD8 l1s_check_System (void);
41 void l1s_recover_Frame (void);
42 void l1s_recover_HWTimers (void);
43 BOOL l1s_compute_wakeup_ticks (void);
44 void l1s_gauging_task (void);
45 void l1s_gauging_task_end (void);
46 UWORD32 l1s_get_next_gauging_in_Packet_Idle(void);
47 void l1s_adapt_traffic_controller (void);
48
49 /**************************************/
50 /* prototypes of L1_MFMGR.C functions */
51 /**************************************/
52 void l1s_clear_mftab (T_FRM *frmlst);
53 void l1s_exec_mftab (void);
54 void l1s_load_mftab (const T_FCT *fct,
55 const UWORD8 size,
56 UWORD8 frame,
57 T_FRM *frmlst);
58
59 /**************************************/
60 /* prototypes of L1_CMPLX.C functions */
61 /**************************************/
62 void l1s_new_synchro (UWORD8 param1, UWORD8 param2);
63 void l1s_abort (UWORD8 param1, UWORD8 param2);
64 void l1s_ctrl_ADC (UWORD8 param1, UWORD8 param2);
65
66 void l1s_ctrl_msagc (UWORD8 task, UWORD8 param2);
67 void l1s_ctrl_fb (UWORD8 param1, UWORD8 param2);
68 void l1s_ctrl_fb26 (UWORD8 task, UWORD8 param2);
69 void l1s_ctrl_sbgen (UWORD8 task, UWORD8 attempt);
70 void l1s_ctrl_sb26 (UWORD8 task, UWORD8 param2);
71 #if ((REL99 == 1) && (FF_BHO == 1))
72 void l1s_ctrl_fbsb (UWORD8 task , UWORD8 param2);
73 #endif
74 void l1s_ctrl_smscb (UWORD8 task, UWORD8 burst_id);
75
76 void l1s_ctrl_snb_dl (UWORD8 task, UWORD8 param2);
77 void l1s_ctrl_snb_ul (UWORD8 task, UWORD8 param2);
78 void l1s_ctrl_nnb (UWORD8 task, UWORD8 param2);
79
80 void l1s_ctrl_rach (UWORD8 task, UWORD8 param2);
81 void l1s_ctrl_tchtf (UWORD8 task, UWORD8 param2);
82 void l1s_ctrl_tchth (UWORD8 task, UWORD8 param2);
83 void l1s_ctrl_tchtd (UWORD8 task, UWORD8 param2);
84 void l1s_ctrl_tcha (UWORD8 task, UWORD8 param2);
85 void l1s_hopping_algo (UWORD8 param1, UWORD8 param2);
86
87 void l1s_ctrl_hwtest (UWORD8 task, UWORD8 param2);
88 void l1s_read_hwtest (UWORD8 task, UWORD8 param2);
89
90 void l1s_read_dummy (UWORD8 task, UWORD8 param2);
91 void l1s_read_msagc (UWORD8 task, UWORD8 param2);
92 void l1s_read_mon_result (UWORD8 task, UWORD8 param2);
93
94 void l1s_read_rx_result (UWORD8 param1, UWORD8 attempt_for_sb2);
95
96 void l1s_read_snb_dl (UWORD8 task, UWORD8 burst_id);
97 void l1s_read_nnb (UWORD8 task, UWORD8 param);
98 void l1s_read_dedic_dl (UWORD8 task, UWORD8 burst_id);
99
100 void l1s_read_tx_result (UWORD8 param1, UWORD8 param2);
101
102 #if FF_EMR
103 void l1s_read_dedic_scell_meas (UWORD8 meas, UWORD8 sub_flag, T_EMR_PARAMS *emr_params);
104 #else //FF_EMR
105 void l1s_read_dedic_scell_meas (UWORD8 meas, UWORD8 sub_flag);
106 #endif //FF_EMR
107 void l1s_dedic_reporting (void);
108
109 void l1s_read_fb (UWORD8 task, UWORD32 fb_flag, UWORD32 toa, UWORD32 attempt,
110 UWORD32 pm, UWORD32 angle, UWORD32 snr);
111 void l1s_read_sb (UWORD8 task,UWORD32 flag, API *data, UWORD32 toa, UWORD8 attempt,
112 UWORD32 pm, UWORD32 angle, UWORD32 snr);
113 #if ((REL99 == 1) && (FF_BHO == 1))
114 void l1s_read_fbsb (UWORD8 task, UWORD8 attempt, BOOL fb_flag, BOOL sb_flag, API *data,
115 UWORD32 toa, UWORD32 pm, UWORD32 angle, UWORD32 snr);
116 #endif
117 void l1s_read_sacch_dl (API *info_address, UWORD32 task_rx);
118 void l1s_read_dcch_dl (API *info_address, UWORD32 task_rx);
119 void l1s_read_l3frm (UWORD8 pwr_level, API *info_address, UWORD32 task_rx);
120 void l1s_reset_tx_ptr(UWORD8 param1, UWORD8 param2);
121
122
123 /**************************************/
124 /* prototypes of L1_AFUNC functions */
125 /**************************************/
126 void l1a_reset_full_list (void);
127 void l1a_reset_ba_list (void);
128 void l1a_add_time_for_nb (UWORD32 *time_alignmt, UWORD32 *fn_offset);
129 void l1a_add_timeslot (UWORD32 *time_alignmt, UWORD32 *fn_offset, UWORD8 tn);
130 void l1a_sub_time_for_nb (UWORD32 *time_alignmt, UWORD32 *fn_offset);
131 void l1a_sub_timeslot (UWORD32 *time_alignmt, UWORD32 *fn_offset, UWORD8 tn);
132
133 T_DEDIC_SET *l1a_get_free_dedic_set (void);
134 void l1a_fill_bef_sti_param (T_DEDIC_SET *set_ptr, BOOL start_time_present);
135 WORD32 l1a_decode_starting_time (T_STARTING_TIME coded_starting_time);
136 void l1a_reset_cell_info (T_CELL_INFO *cell_info);
137 void l1a_send_confirmation (UWORD32 SignalCode,UWORD8 queue_type);
138 void l1a_send_result (UWORD32 SignalCode, xSignalHeaderRec *msg, UWORD8 queue);
139 UWORD8 l1a_encode_rxqual (UWORD32 inlevel);
140 void l1a_report_failling_ncell_sync (UWORD32 SignalCode, UWORD8 neigh_id);
141 UWORD8 l1a_clip_txpwr (UWORD8 supplied_txpwr, UWORD16 radio_freq);
142 void l1a_add_time_delta (UWORD32 *time_alignmt, UWORD32 *fn_offset, WORD32 delta);
143 void l1a_compensate_sync_ind (T_MPHC_NCELL_SYNC_IND * msg);
144 void l1a_compute_Eotd_data (UWORD8 *first_scell, UWORD8 neigh_id, UWORD32 SignalCode, xSignalHeaderRec *msg);
145 void l1a_correct_timing (UWORD8 neigh_id,UWORD32 time_alignmt,UWORD32 fn_offset);
146
147 /**************************************/
148 /* prototypes of L1_FUNC functions */
149 /**************************************/
150 void dsp_power_on (void);
151 #if ((ANALOG == 1) || (ANALOG == 2) || (ANALOG == 3) || (ANALOG == 11))
152 void l1_abb_power_on (void);
153 #endif
154 void tpu_init (void);
155
156 void l1s_reset_db_mcu_to_dsp (T_DB_MCU_TO_DSP *page_ptr);
157 #if (DSP == 38) || (DSP == 39)
158 void l1s_reset_db_common_mcu_to_dsp (T_DB_COMMON_MCU_TO_DSP *page_ptr);
159 #endif
160 void l1s_reset_db_dsp_to_mcu (T_DB_DSP_TO_MCU *page_ptr);
161 void initialize_l1var (void);
162 void l1_initialize (T_MMI_L1_CONFIG *mmi_l1_config);
163 void l1_pwr_mgt_init (void);
164 void l1_dpll_init_var (void);
165
166 void l1s_increment_time (T_TIME_INFO *time, UWORD32 fn_offset);
167 WORD16 l1s_encode_rxlev (UWORD8 inlevel);
168 void l1s_send_ho_finished (UWORD8 cause);
169 void l1s_reset_dedic_serving_meas(void);
170 UWORD32 l1s_swap_iq_dl (UWORD16 radio_freq, UWORD8 task);
171 UWORD32 l1s_swap_iq_ul (UWORD16 radio_freq, UWORD8 task);
172 UWORD8 l1s_ADC_decision_on_NP (void);
173 #if (AMR == 1)
174 UWORD8 l1s_amr_get_ratscch_type (API *a_ratscch_dl);
175 void l1s_amr_update_from_ratscch (API *a_ratscch_dl);
176 #endif
177 void l1_memcpy_16bit(void *dst,void* src,unsigned int len);
178
179
180 /**************************************/
181 /* prototypes of L1_DRIVE functions */
182 /**************************************/
183 // MCU-DSP interface drivers.
184 //---------------------------
185
186 #if (FF_L1_FAST_DECODING == 1)
187 void l1ddsp_load_fast_dec_task(API task, UWORD8 burst_id);
188 #endif
189 void l1ddsp_load_info (UWORD32 task,
190 API *info_ptr,
191 UWORD8 *data);
192 void l1ddsp_load_monit_task (API monit_task,
193 API fb_mode);
194 void l1ddsp_load_afc (API afc);
195 void l1ddsp_load_rx_task (API rx_task,
196 UWORD8 burst_id,
197 UWORD8 tsq);
198 void l1ddsp_load_tx_task (API tx_task,
199 UWORD8 burst_id,
200 UWORD8 tsq);
201 void l1ddsp_load_ra_task (API ra_task);
202
203
204 void l1ddsp_load_txpwr (UWORD8 txpwr,
205 UWORD16 radio_freq);
206
207 // SAIC low level driver function
208 #if (L1_SAIC != 0)
209 void l1ddsp_load_swh_flag (UWORD16 SWH_flag, UWORD16 SAIC_flag);
210 #endif
211
212 void l1ddsp_read_iq_dump(UWORD8 task);
213 void l1ddsp_apc_load_apcctrl2(UWORD16 apcctrl2);
214 void l1ddsp_apc_set_manual_mode(void);
215 void l1ddsp_apc_set_automatic_mode(void);
216
217 #ifdef TESTMODE
218 void l1ddsp_apc_load_apclev(UWORD16 apclev);
219 #endif
220
221 #if (AMR == 1)
222 #if (FF_L1_TCH_VOCODER_CONTROL == 1)
223 // Add the AMR synchro bit in the driver's paramters
224 void l1ddsp_load_tch_param (T_TIME_INFO *next_time,
225 UWORD8 chan_mode,
226 UWORD8 chan_type,
227 UWORD8 subchannel,
228 UWORD8 tch_loop,
229 UWORD8 sync_tch,
230 UWORD8 sync_amr,
231 UWORD8 reset_sacch,
232 #if !FF_L1_IT_DSP_DTX
233 UWORD8 vocoder_on);
234 #else
235 UWORD8 vocoder_on,
236 BOOL dtx_dsp_interrupt);
237 #endif
238 #else
239 void l1ddsp_load_tch_param (T_TIME_INFO *next_time,
240 UWORD8 chan_mode,
241 UWORD8 chan_type,
242 UWORD8 subchannel,
243 UWORD8 tch_loop,
244 UWORD8 sync_tch,
245 #if !FF_L1_IT_DSP_DTX
246 UWORD8 sync_amr);
247 #else
248 UWORD8 sync_amr,
249 BOOL dtx_dsp_interrupt);
250 #endif
251 #endif
252 #else
253 #if (FF_L1_TCH_VOCODER_CONTROL == 1)
254 void l1ddsp_load_tch_param (T_TIME_INFO *next_time,
255 UWORD8 chan_mode,
256 UWORD8 chan_type,
257 UWORD8 subchannel,
258 UWORD8 tch_loop,
259 UWORD8 sync_tch,
260 UWORD8 reset_sacch,
261 #if !FF_L1_IT_DSP_DTX
262 UWORD8 vocoder_on);
263 #else
264 UWORD8 vocoder_on,
265 BOOL dtx_dsp_interrupt);
266 #endif
267 #else
268 void l1ddsp_load_tch_param (T_TIME_INFO *next_time,
269 UWORD8 chan_mode,
270 UWORD8 chan_type,
271 UWORD8 subchannel,
272 UWORD8 tch_loop,
273 #if !FF_L1_IT_DSP_DTX
274 UWORD8 sync_tch);
275 #else
276 UWORD8 sync_tch,
277 BOOL dtx_dsp_interrupt);
278 #endif
279 #endif
280 #endif
281
282 #if (L1_VOCODER_IF_CHANGE == 0)
283 BOOL enable_tch_vocoder (BOOL vocoder_on);
284 #endif // L1_VOCODER_IF_CHANGE == 0
285 BOOL l1_select_mcsi_port (UWORD8 port);
286
287 void l1ddsp_load_ciph_param (UWORD8 a5mode,
288 T_ENCRYPTION_KEY *ciph_key);
289 void l1ddsp_load_tch_mode (UWORD8 dai_mode,
290 BOOL dtx_allowed);
291 #if (AMR == 1)
292 void l1ddsp_load_amr_param (T_AMR_CONFIGURATION amr_param, UWORD8 cmip);
293 #endif
294 void l1ddsp_stop_tch (void);
295 void l1ddsp_load_afc (API afc);
296
297 // MCU-TPU interface drivers.
298 //---------------------------
299 void l1dtpu_meas (UWORD16 radio_freq,
300 WORD8 agc,
301 UWORD8 lna_off,
302 UWORD16 win_id,
303 UWORD16 tpu_synchro,
304 UWORD8 adc_active
305 #if(RF_FAM == 61)
306 ,UWORD8 afc_mode
307 ,UWORD8 if_ctl
308 #endif
309 );
310 void l1dtpu_neig_fb (UWORD16 radio_freq,
311 WORD8 agc,
312 UWORD8 lna_off);
313 void l1dtpu_neig_fb26 (UWORD16 radio_freq,
314 WORD8 agc,
315 UWORD8 lna_off,
316 UWORD32 offset_serv);
317 void l1dtpu_neig_sb (UWORD16 radio_freq,
318 WORD8 agc,
319 UWORD8 lna_off,
320 UWORD32 time_alignmt,
321 UWORD32 offset_serv,
322 UWORD8 reload_flag,
323 UWORD8 attempt
324 #if(RF_FAM == 61)
325 ,UWORD8 if_ctl
326 #endif
327 );
328 void l1dtpu_neig_sb26 (UWORD16 radio_freq,
329 WORD8 agc,
330 UWORD8 lna_off,
331 UWORD32 time_alignmt,
332 UWORD32 fn_offset,
333 UWORD32 offset_serv
334 #if(RF_FAM == 61)
335 ,UWORD8 if_ctl
336 #endif
337 );
338 void l1dtpu_serv_rx_nb (UWORD16 radio_freq,
339 WORD8 agc,
340 UWORD8 lna_off,
341 UWORD32 synchro_serv,
342 UWORD32 new_offset,
343 BOOL change_offset,
344 UWORD8 adc_active
345 #if(RF_FAM == 61)
346 ,UWORD8 csf_filter_choice
347 ,UWORD8 if_ctl
348 #endif
349 #if (NEW_SNR_THRESHOLD == 1)
350 ,UWORD8 saic_flag
351 #endif /* NEW_SNR_THRESHOLD*/
352 );
353 void l1dtpu_serv_tx_nb (UWORD16 radio_freq,
354 UWORD8 timing_advance,
355 UWORD32 offset_serv,
356 UWORD8 txpwr,
357 UWORD8 adc_active);
358 void l1dtpu_neig_rx_nb (UWORD16 radio_freq,
359 WORD8 agc,
360 UWORD8 lna_off,
361 UWORD32 time_alignmt,
362 UWORD32 offset_serv,
363 UWORD8 reload_flag,
364 UWORD8 nop
365 #if(RF_FAM == 61)
366 ,UWORD8 if_ctl
367 #endif
368 #if (NEW_SNR_THRESHOLD == 1)
369 ,UWORD8 saic_flag
370 #endif /* NEW_SNR_THRESHOLD*/
371 );
372
373 void l1dtpu_serv_tx_ra (UWORD16 radio_freq,
374 UWORD32 offset_serv,
375 UWORD8 txpwr,
376 UWORD8 adc_active);
377
378 // MCU-DSP interface drivers for POWER-ON.
379 //----------------------------------------
380 void l1dtpu_init_dpram (UWORD8 process);
381
382 // MCU-DSP interface drivers for RESET.
383 //-------------------------------------
384 void l1ddsp_end_scenario (UWORD8 type);
385 void l1dtpu_end_scenario (void);
386 void l1d_reset_hw (UWORD32 offset_value);
387
388
389
390 /**************************************/
391 /* Prototypes for L1 ASYNCH task */
392 /**************************************/
393
394 void l1a_task (UWORD32 argc, void *argv);
395 void l1a_balance_l1a_tasks (void);
396
397 void l1a_mmi_adc_req (xSignalHeaderRec *msg);
398 void l1a_network_lost (xSignalHeaderRec *msg);
399 void l1a_idle_6strongest_monitoring_process (xSignalHeaderRec *msg);
400 void l1a_idle_serving_cell_bcch_reading_process (xSignalHeaderRec *msg);
401 void l1a_idle_serving_cell_paging_process (xSignalHeaderRec *msg);
402 void l1a_idle_smscb_process (xSignalHeaderRec *msg);
403 void l1a_initial_network_sync_process (xSignalHeaderRec *msg);
404 void l1a_cres_process (xSignalHeaderRec *msg);
405 void l1a_dedic_ba_list_meas_process (xSignalHeaderRec *msg);
406
407 void l1a_full_list_meas_process (xSignalHeaderRec *msg);
408 void l1a_csel_bcch_process (xSignalHeaderRec *msg);
409
410 void l1a_idle_serv_meas_process (xSignalHeaderRec *msg);
411
412 void l1a_idle_neigh_meas_process (xSignalHeaderRec *msg);
413 void l1a_idle_neigh_full_bcch_process(xSignalHeaderRec *msg);
414 void l1a_idle_neigh_norm_bcch_process(xSignalHeaderRec *msg);
415 void l1a_idle_neigh_ext_bcch_process (xSignalHeaderRec *msg);
416 void l1a_idle_6conf_process (xSignalHeaderRec *msg);
417
418 void l1a_idle_smscb_process (xSignalHeaderRec *msg);
419
420 void l1a_access_process (xSignalHeaderRec *msg);
421 void l1a_dedicated_process (xSignalHeaderRec *msg);
422 void l1a_dedic_bcch_process (xSignalHeaderRec *msg);
423 void l1a_dedic6_process (xSignalHeaderRec *msg);
424 void l1a_dedic_neigh_meas_process (xSignalHeaderRec *msg);
425
426 void l1a_idle_ba_list_meas_process (xSignalHeaderRec *msg);
427 void l1a_idle_full_list_meas_process (xSignalHeaderRec *msg);
428 void l1a_test_process (xSignalHeaderRec *msg);
429 void l1a_freq_band_configuration (xSignalHeaderRec *msg);
430 void l1a_at_power_process (xSignalHeaderRec *msg);
431
432 #if(L1_CHECK_COMPATIBLE == 1)
433 void l1a_checkmsg_compatibility (xSignalHeaderRec *msg);
434 #endif
435 #if (OP_L1_STANDALONE == 1)
436 // Dynamic configuration process for L1 standalone only
437 void l1a_test_config_process (xSignalHeaderRec *msg);
438 #endif
439
440 // ...................NEW FOR ALR....................
441 void l1a_neighbour_cell_bcch_reading_process (xSignalHeaderRec *msg);
442 // ...................NEW FOR ALR....................
443
444 /**************************************/
445 /* Prototypes for l3 task */
446 /**************************************/
447 void l3_task (UWORD32 argc, void *argv);
448 void l3_expire_fct (UWORD32 id);
449
450 #if TESTMODE
451 void mmi_task (UWORD32 argc, void *argv);
452 #endif
453
454
455
456
457
458 /**************************************/
459 /* Prototypes for Nu_main. */
460 /**************************************/
461 void Adc_timer (UWORD32 id);
462
463 /**************************************/
464 /* Prototypes for l2 task */
465 /**************************************/
466 T_RADIO_FRAME *dll_read_dcch (UWORD8 chn_mode);
467 T_RADIO_FRAME *dll_read_sacch (UWORD8 chn_mode);
468 void l2_task (UWORD32 argc, void *argv);
469
470 #if (DSP_BACKGROUND_TASKS == 1)
471 // Task for backgrounds DSP testing
472 void background_task(UWORD32 argc, void *argv);
473 #endif
474
475 void rx_tch_data (API *data_address,
476 UWORD8 channel_mode,
477 UWORD8 blk_seq_number);
478 UWORD8 *tx_tch_data (void);
479
480 #if (SEND_FN_TO_L2_IN_DCCH==1)
481 #if (L1_SAGEM_INTERFACE == 1)
482 void dll_dcch_downlink (API *info_address,
483 UWORD8 valid_flag,
484 UWORD32 frame_number,
485 UWORD8 channel_type);
486 #else
487 void dll_dcch_downlink (API *info_address,
488 UWORD8 valid_flag,
489 UWORD32 frame_number);
490 #endif
491 #else
492 #if (L1_SAGEM_INTERFACE == 1)
493 void dll_dcch_downlink (API *info_address,
494 UWORD8 valid_flag,
495 UWORD8 channel_type);
496 #else
497 void dll_dcch_downlink (API *info_address,
498 UWORD8 valid_flag);
499 #endif
500 #endif
501
502 /***************************************/
503 /* Prototypes of L1_TRACE.c functions */
504 /***************************************/
505 void l1_trace_message (xSignalHeaderRec *msg);
506 void send_debug_sig (UWORD8 debug_code, UWORD8 task);
507 void l1_trace_cpu_load (UWORD8 cpu_load);
508
509 #if (TRACE_TYPE==7) // CPU_LOAD
510 void l1_cpu_load_start (void);
511 void l1_cpu_load_stop (void);
512 void l1_cpu_load_init (void);
513 void l1_cpu_load_interm (void);
514 #endif
515
516 /***************************************/
517 /* Prototypes of HW_DEBUG.c functions */
518 /***************************************/
519 void wait_for_next_message (CHAR *);
520
521 /***************************************/
522 /* Prototypes of L1_DEBUG.c functions */
523 /***************************************/
524 void scenario_and_log_files (void);
525 void decode_msg (xSignalHeaderRec *msg, CHAR *filename);
526 void trace_mft (CHAR *fct_name, WORD32 frame);
527 #if (L1_EOTD ==1)
528 void trace_EOTD_serving (UWORD16 arfcn, UWORD32 timetag, CHAR *text);
529 void trace_EOTD_serving1 (CHAR *text);
530 void trace_EOTD_neighbour (UWORD8 nbr, UWORD16 arfcn, UWORD32 delta_fn, WORD32 delta_qbit,
531 UWORD32 timetag, CHAR *text);
532 #endif
533 void trace_ULPD (CHAR *text, UWORD32 frame_number);
534 void log_fct (CHAR *fct_name, UWORD32 radio_freq);
535 void trace_msg (CHAR *msg_name, CHAR *queue_name);
536 void log_msg (CHAR *msg_name, CHAR *queue_name);
537 void trace_dedic (void);
538 void trace_fct_simu (CHAR *fct_name, UWORD32 radio_freq);
539 void trace_flowchart_msg (CHAR *msg_name, CHAR *dest_queue_name);
540 void trace_flowchart_l1tsk (UWORD32 bit_register, UWORD32 *src_register_set);
541 void trace_flowchart_dedic (WORD32 SignalCode);
542 void trace_flowchart_tpu (CHAR *task_name);
543 void trace_flowchart_dsp (CHAR *task_name);
544 void trace_flowchart_dsp_tpu (CHAR *task_name);
545 void trace_flowchart_dspres (CHAR *task_name);
546 void trace_flowchart_dsptx (CHAR *task_name);
547 void trace_flowchart_header (void);
548 void trace_sim_freq_band_configuration (UWORD8 freq_band_config);
549 #if (TOA_ALGO == 2)
550 void trace_toa_sim_ctrl (UWORD16 SNR_val, UWORD16 TOA_val, UWORD32 l1_mode,
551 UWORD32 frames_counter, UWORD32 cumul_counter,WORD16 cumul);
552 void trace_toa_sim_update (WORD16 toa_shift, UWORD32 tpu_offset);
553 #endif
554 #if (L1_SAIC != 0)
555 void trace_saic_sim (UWORD32 Il_for_rxlev, UWORD32 l1_mode, UWORD32 SWH_flag);
556 #endif
557
558 /**************************************/
559 /* prototypes of control functions */
560 /**************************************/
561 #if (VCXO_ALGO == 0)
562 WORD16 l1ctl_afc (UWORD8 phase,
563 UWORD32 *frame_count,
564 WORD16 angle,
565 WORD32 snr,
566 UWORD16 radio_freq);
567 #else
568 WORD16 l1ctl_afc (UWORD8 phase,
569 UWORD32 *frame_count,
570 WORD16 angle,
571 WORD32 snr,
572 UWORD16 radio_freq,
573 UWORD32 l1_mode);
574 #endif
575
576 #if (TOA_ALGO == 2)
577 WORD16 l1ctl_toa (UWORD8 phase,
578 UWORD32 l1_mode,
579 UWORD16 SNR_val,
580 UWORD16 TOA_val);
581 #else
582 WORD16 l1ctl_toa (UWORD8 phase,
583 UWORD32 l1_mode,
584 UWORD16 SNR_val,
585 UWORD16 TOA_val,
586 BOOL *toa_update,
587 UWORD16 *toa_period_count
588 #if (FF_L1_FAST_DECODING == 1)
589 ,UWORD8 skipped_values
590 #endif /* FF_L1_FAST_DECODING */
591 );
592 #endif
593
594 // SAIC Control Function
595 #if (L1_SAIC != 0)
596 UWORD8 l1ctl_saic (UWORD8 IL_for_rxlev,
597 UWORD32 l1_mode
598 #if (NEW_SNR_THRESHOLD == 1)
599 ,UWORD8 task,
600 UWORD8 * saic_flag
601 #endif /* NEW_SNR_THRESHOLD*/
602 );
603 #endif
604
605 UWORD8 l1ctl_txpwr (UWORD8 target_txpwr,
606 UWORD8 current_txpwr);
607
608 // Utility for agc control algorithms
609
610 void l1ctl_encode_lna (UWORD8 input_level,
611 UWORD8 * lna_state,
612 UWORD16 radio_freq);
613 UWORD8 l1ctl_find_max (UWORD8 *buff,
614 UWORD8 buffer_len);
615
616 // Automatic Gain Control Algorithms
617 void l1ctl_pgc2 (UWORD8 pm_high_agc,
618 UWORD8 pm_low_agc,
619 UWORD16 radio_freq);
620 UWORD8 l1ctl_csgc (UWORD8 pm,
621 UWORD16 radio_freq);
622 UWORD8 l1ctl_pgc (UWORD8 pm,
623 UWORD8 used_IL,
624 UWORD8 lna_off,
625 UWORD16 radio_freq);
626 UWORD8 l1ctl_pagc (UWORD8 pm,
627 UWORD16 radio_freq,
628 T_INPUT_LEVEL *traffic_meas_ptr);
629 UWORD8 l1ctl_dpagc (BOOL dtx_on,
630 BOOL beacon,
631 UWORD8 pm,
632 UWORD16 radio_freq,
633 T_INPUT_LEVEL *traffic_meas_ptr);
634 #if (AMR == 1)
635 UWORD8 l1ctl_dpagc_amr (BOOL dtx_on,
636 BOOL beacon,
637 UWORD8 pm,
638 UWORD16 radio_freq,
639 T_INPUT_LEVEL *traffic_meas_ptr);
640 #endif
641
642 UWORD16 l1ctl_get_g_magic (UWORD16 radio_freq);
643 UWORD16 l1ctl_get_lna_att (UWORD16 radio_freq);
644 UWORD16 l1ctl_update_TPU_with_toa(void);
645
646 #if (FF_L1_FAST_DECODING == 1)
647 void l1ctl_pagc_missing_bursts (UWORD8 skipped_values);
648 #endif
649
650 //functions for customization
651 void Cust_init_std (void);
652 void Cust_init_params (void);
653 WORD8 Cust_get_agc_from_IL (UWORD16 radio_freq, UWORD16 agc_index, UWORD8 table_id,UWORD8 lna_off_val);
654 WORD8 l1ctl_encode_delta1 (UWORD16 radio_freq);
655 WORD8 l1ctl_encode_delta2 (UWORD16 radio_freq);
656 void Cust_get_ramp_tab (API *a_ramp, UWORD8 txpwr_ramp_up, UWORD8 txpwr_ramp_down, UWORD16 radio_freq);
657 #if ((ANALOG == 1) || (ANALOG == 2) || (ANALOG == 3) || (RF_FAM == 61))
658 UWORD16 Cust_get_pwr_data(UWORD8 txpwr, UWORD16 radio_freq
659 #if(REL99 && FF_PRF)
660 ,UWORD8 number_uplink_timeslot
661 #endif
662 );
663 #endif
664
665 #if (RF_FAM == 61)
666 void l1_drp_wrapper_init (void);
667 void l1_drp_init (void);
668 void l1dapc_init_ramp_tables(void );
669 void cust_get_if_dco_ctl_algo (UWORD16* dco_algo_ctl, UWORD8* if_ctl,
670 UWORD8 input_level_flag, UWORD8 input_level, UWORD16 radio_freq, UWORD8 if_threshold);
671 #endif
672
673 void l1s_restore_synchro(void);
674
675 #if (FF_L1_FAST_DECODING == 1)
676 BOOL l1s_check_deferred_control(UWORD8 task, UWORD8 burst_id);
677 BOOL l1s_check_fast_decoding_authorized(UWORD8 task);
678 #endif /* FF_L1_FAST_DECODING */
679
680 #if (DRP_FW_EXT == 1)
681 void l1_get_boot_result_and_version(T_L1_BOOT_VERSION_CODE * p_version);
682 #endif /* DRP_FW_EXT */
683
684 /*-----------------------------------------------------------------*/
685 /* Prototypes of MULTIBAND related functions */
686 /*-----------------------------------------------------------------*/
687 #if (L1_FF_MULTIBAND == 1)
688 #if 0
689 UWORD16 l1_multiband_radio_freq_convert_into_operative_radio_freq(UWORD16 radio_freq);
690 UWORD8 l1_multiband_radio_freq_convert_into_physical_band_id(UWORD16 radio_freq);
691 UWORD8 l1_multiband_radio_freq_convert_into_effective_band_id(UWORD16 radio_freq);
692 void l1_multiband_fill_power_meas_array(UWORD16 power_array_size, T_FULL_LIST_MEAS *full_list);
693 UWORD8 l1_multiband_map_radio_freq_into_tpu_table(UWORD16 radio_freq);
694 void l1_multiband_increment_effective_band_id(UWORD8 *effective_band_id);
695 void l1_multiband_trace_params(UWORD8 multiband_table_id, UWORD8 multiband_trace_id) ;
696 void l1_multiband_tpu_get_power_classes(T_L1_MULTIBAND_POWER_CLASS multiband_power_class[]);
697 void l1_multiband_error_handler(UWORD16 radio_freq);
698 #endif // if 0
699
700 #endif /*if(L1_FF_MULTIBAND == 1)*/
701
702