comparison src/cs/layer1/p_include/l1p_deft.h @ 0:b6a5e36de839

src/cs: initial import from Magnetite
author Mychaela Falconia <falcon@freecalypso.org>
date Sun, 15 Jul 2018 04:39:26 +0000
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:b6a5e36de839
1 /************* Revision Controle System Header *************
2 * GSM Layer 1 software
3 * L1P_DEFTY.H
4 *
5 * Filename l1p_deft.h
6 * Copyright 2003 (C) Texas Instruments
7 *
8 ************* Revision Controle System Header *************/
9
10 typedef struct
11 {
12 WORD32 rand;
13 UWORD16 channel_request_data;
14 UWORD8 bs_prach_blks;
15 UWORD8 prach_alloc;
16 UWORD32 fn_to_report;
17 }
18 T_PRACH_INFO;
19
20 typedef union
21 {
22 UWORD16 prach_data[12];
23 UWORD8 cs1_data[24];
24 }
25 T_CHAN_REQ_DATA;
26
27 typedef struct
28 {
29 UWORD8 pol_resp_type;
30 T_CHAN_REQ_DATA chan_req;
31 UWORD32 fn;
32 UWORD8 timing_advance;
33 UWORD32 fn_to_report;
34 }
35 T_POLL_INFO;
36
37
38 typedef struct
39 {
40 UWORD8 data_array[23];
41 UWORD8 tn;
42 UWORD8 dl_tn_to_restore;
43 UWORD8 activity;
44 }
45 T_SINGLE_BLOCK;
46
47
48 typedef struct
49 {
50 UWORD32 SignalCode;
51 UWORD8 assignment_id;
52 UWORD8 synchro_tn;
53 UWORD8 allocated_tbf;
54 UWORD8 dl_tbf_synchro_timeslot;
55 UWORD8 ul_tbf_synchro_timeslot;
56 UWORD8 transfer_synchro_timeslot;
57
58 UWORD8 assignment_command;
59 UWORD8 multislot_class;
60 T_PACKET_TA packet_ta;
61 T_DL_POWER_CTL dl_pwr_ctl;
62 UWORD8 tsc;
63 T_PACKET_FREQ_PARAM freq_param;
64 UWORD8 mac_mode;
65 T_TBF_STI tbf_sti;
66
67 T_UL_RESSOURCE_ALLOC *ul_tbf_alloc;
68 T_DL_RESSOURCE_ALLOC dl_tbf_alloc;
69
70 BOOL interf_meas_enable;
71 UWORD8 ts_override;
72 BOOL pc_meas_chan;
73 }
74 T_TRANSFER_SET;
75
76
77 typedef struct
78 {
79 UWORD8 ta_update_cmd;
80 UWORD8 assignment_id;
81 UWORD16 radio_freq;
82 UWORD8 activity;
83 BOOL request_dl;
84 T_PACKET_TA packet_ta;
85 }
86 T_PTCCH_PARAM;
87
88 typedef struct
89 {
90 UWORD8 tbf_release_cmd;
91 UWORD8 released_tbf;
92 }
93 T_TBF_RELEASE_PARAM;
94
95 typedef struct
96 {
97 UWORD8 pdch_release_cmd;
98 UWORD8 timeslot_available;
99 UWORD8 assignment_id;
100 }
101 T_PDCH_RELEASE_PARAM;
102
103 typedef struct
104 {
105 UWORD8 assignment_id;
106 UWORD8 txpwr[8];
107 BOOL crc_error;
108 WORD8 bcch_level;
109 UWORD16 radio_freq_tbl[4];
110 WORD8 burst_level[4];
111 }
112 T_DL_PWR_CTRL;
113
114 typedef struct
115 {
116 UWORD8 psi_param_update_cmd;
117 UWORD8 Scell_pb;
118 UWORD8 access_burst_type;
119 }
120 T_PSI_PARAM_UPDATE;
121
122 typedef struct
123 {
124 BOOL semaphore;
125
126 T_TRANSFER_SET *aset;
127 T_TRANSFER_SET *fset[2];
128 T_TRANSFER_SET set[3];
129
130 T_UL_RESSOURCE_ALLOC ul_tbf_alloc[3];
131
132 T_SINGLE_BLOCK single_block;
133
134 T_PTCCH_PARAM ptcch;
135 T_TBF_RELEASE_PARAM tbf_release_param;
136 T_PDCH_RELEASE_PARAM pdch_release_param;
137 T_MPHP_REPEAT_UL_FIXED_ALLOC_REQ repeat_alloc;
138 T_PSI_PARAM_UPDATE psi_param;
139
140 T_DL_PWR_CTRL dl_pwr_ctrl;
141 }
142 T_TRANSFER_PARAM;
143
144 /***************************************************************************************/
145 /* L1S packet global variable structure... */
146 /***************************************************************************************/
147
148 typedef struct
149 {
150 BOOL new_set;
151 UWORD8 assignment_id;
152 UWORD8 allocated_tbf;
153 UWORD8 dl_tfi;
154 UWORD8 ul_tfi;
155 T_DL_POWER_CTL dl_pwr_ctl;
156 BOOL pc_meas_chan;
157 UWORD16 radio_freq_for_lna;
158 } T_READ_PARAM;
159
160 typedef struct
161 {
162 UWORD8 ILmin_beacon;
163 UWORD8 ILmin_others[8];
164
165 // No power control AGC algorithm variables
166 UWORD32 fn_select;
167 BOOL phase;
168
169 // Downlink power control mode B variables
170 UWORD8 last_PR_good;
171
172 // TBF Parameters used during the PDTCH read phase
173 T_READ_PARAM read_param;
174
175 // Flag used to know if the pc_meas_chan measurement has been controlled
176 BOOL pc_meas_chan_ctrl;
177 }
178 T_L1PS_GLOBAL;
179
180 /***********************************************************/
181 /* L1PA global variable structure... */
182 /***********************************************************/
183 typedef struct
184 {
185 // State for L1A state machines...
186 //-----------------------------------------
187 UWORD8 state[NBR_L1PA_PROCESSES];
188
189 // Measurement tasks management...
190 //-----------------------------------------
191 UWORD32 l1pa_en_meas[NBR_L1PA_PROCESSES];
192 }
193 T_L1PA_GLOBAL;
194
195
196 /*************************************************************/
197 /* Packet Idle mode tasks information... */
198 /*************************************************************/
199 /* must be filled according to Packet Idle parameters... */
200 /* ... */
201 /*************************************************************/
202 // Packet Idle Parameter description
203 typedef struct
204 {
205 UWORD16 radio_freq;
206 UWORD16 radio_freq_d;
207 UWORD16 radio_freq_dd;
208 }
209 T_P_IDLE_PARAM;
210
211 // Packet Paging description
212 typedef struct
213 {
214 // -------- Packet Paging description --------------
215 UWORD8 bs_pag_blks_res; // BS_PAG_BLKS_RES parameter (cf. S921 specification)
216 UWORD8 bs_pbcch_blks; // BS_PBCCH_BLKS parameter (cf. S921 specification)
217 T_PACKET_CHANNEL_DESC packet_chn_desc; // Packet Channel Description: arfcn/Hopping description + TN + TSC
218 T_MOBILE_ALLOCATION frequency_list; // Mobile allocation description
219 UWORD8 nb_ppch_per_mf52;// Number of Packet PCCH per MF52
220 UWORD16 first_pg_grp; // First Paging Group index
221 UWORD16 pg_blks_avail; // Number of Paging blocks available per MF52
222 UWORD16 pg_offset; // (IMSI mo 1000) div (KC*N) (Note N = 1 for PCCCH)
223 UWORD16 split_pg_value; // Min(pg_blks_avail, split_pg_cycle)
224
225 //--
226 BOOL epg_computation; // Packet Paging STATE used in Extended Paging scheduling
227 UWORD16 pnp_period; // Paging Period = (52*64)/split_pg_value
228 WORD16 time_to_pnp; // Time to next PPCH block position.
229 }
230 T_PCCCH_PARAM;
231
232 typedef struct
233 {
234 BOOL change_synchro;
235 BOOL control_offset;
236 BOOL read_all_psi;
237
238 UWORD8 nbr_psi;
239 UWORD8 bs_pbcch_blks;
240 UWORD8 psi1_repeat_period;
241 UWORD8 relative_position_array[20]; // Array for Relative position
242 UWORD16 offset_array[20]; // Array of offset computed from relative position
243 T_PACKET_CHANNEL_DESC packet_chn_desc; // Packet Channel Description: arfcn/Hopping description + TN + TSC
244 T_MOBILE_ALLOCATION frequency_list; // Mobile allocation description
245 UWORD8 rel_pos_to_report; // Relative Position of the PBCCH block read and to
246 // to report to L3.
247 UWORD16 pbcch_period; // PBCCH period = MFL52 * psi1_repaet_period;
248 UWORD8 tn_pbcch; // Time slot number relative for DSP point of view.
249 }
250 T_PBCCHS_PARAM;
251
252 typedef struct
253 {
254 BOOL change_synchro;
255
256 UWORD8 pb;
257 UWORD8 bs_pbcch_blks;
258 UWORD8 psi1_repeat_period;
259 UWORD8 relative_position; // for Relative position
260 UWORD16 offset; // offset computed from relative position
261 T_PACKET_CHANNEL_DESC packet_chn_desc; // Packet Channel Description: arfcn/Hopping description + TN + TSC
262 T_MOBILE_ALLOCATION frequency_list; // Mobile allocation description
263 UWORD16 pbcch_period; // PBCCH period = MFL52 * psi1_repaet_period;
264 UWORD16 bcch_carrier; // beacon of the neighbor cell (used by the DSP)
265 WORD32 fn_offset;
266 WORD32 time_alignmt;
267 }
268 T_PBCCHN_PARAM;
269
270 typedef struct
271 {
272 BOOL dsp_r_page_switch_req; // If true, the dsp_r_page must be toggled in the interference measurement read
273 UWORD8 multislot_class; // Mobile multislot class
274 UWORD8 meas_bitmap; // Timeslots on which the interference measurements are done
275 UWORD8 position; // Position on which measurements must be done (search or ptcch frame)
276 UWORD8 idle_tn_rx; // Timeslot bitmap in packet idle with PCCCH on the frame before
277 UWORD8 idle_tn_no_rx; // Timeslot bitmap in packet idle without PCCCH on the frame before
278 UWORD16 radio_freq; // Radio freq. processed by l1s_hopping_algo()
279 T_PACKET_FREQ_PARAM packet_intm_freq_param; // Frequency parameters
280 }
281 T_ITMEAS_PARAM;
282
283 typedef struct
284 {
285 UWORD32 fn; // Absolute FN reported during the last measurement session
286 UWORD8 rxlev[8]; // Buffer used to save the parameters reported to L3
287 UWORD8 meas_bitmap; // Interf meas bitmap.
288 UWORD8 id; // Id.
289 } T_L1A_INT_MEAS_PARAM;
290
291 typedef struct
292 {
293 UWORD8 lna; // Input level result
294 UWORD8 il; // LNA parameter
295 }
296 T_IL_LNA;
297
298 typedef struct
299 {
300 UWORD8 next_to_ctrl; // Carrier for next power measurement result.
301 UWORD8 next_to_read; // Next carrier to measure.
302
303 UWORD8 pnp_ctrl; // Specify to l1s_meas_manager() that a PPCH burst has been ctrl.
304
305 UWORD8 ms_ctrl;
306 UWORD8 ms_ctrl_d;
307 UWORD8 ms_ctrl_dd;
308
309 T_IL_LNA used_il_lna[NB_MEAS_MAX_GPRS];
310 T_IL_LNA used_il_lna_d[NB_MEAS_MAX_GPRS];
311 T_IL_LNA used_il_lna_dd[NB_MEAS_MAX_GPRS];
312 }
313 T_CR_FREQ_LIST;
314
315 typedef struct
316 {
317 UWORD8 nb_carrier;
318 UWORD16 freq_list[32+1];
319 UWORD8 list_id;
320 } T_CRES_LIST_PARAM;
321
322 typedef struct
323 {
324 T_CRES_LIST_PARAM *alist;
325 T_CRES_LIST_PARAM *flist;
326 T_CRES_LIST_PARAM list[2];
327 } T_CRES_FREQ_LIST;
328
329 typedef struct
330 {
331 UWORD8 tcr_next_to_ctrl;
332 UWORD8 tcr_next_to_read;
333 UWORD8 last_stored_tcr_to_read;
334
335 UWORD8 ms_ctrl;
336 UWORD8 ms_ctrl_d;
337 UWORD8 ms_ctrl_dd;
338
339 BOOL first_pass_flag;
340
341 T_IL_LNA used_il_lna;
342 T_IL_LNA used_il_lna_d;
343 T_IL_LNA used_il_lna_dd;
344
345 BOOL new_list_present;
346
347 WORD8 beacon_meas;
348
349 WORD8 fn_report;
350 UWORD8 cres_meas_report;
351
352 } T_TCR_LIST_SET;
353
354 /***************************************************************************************/
355 /* L1A <-> L1S communication structure dedicated to packet mode */
356 /***************************************************************************************/
357 typedef struct
358 {
359 // Packet Idle Parameters
360
361 // PCCCH parameters
362 T_PCCCH_PARAM pccch;
363
364 //--
365 T_P_IDLE_PARAM p_idle_param; // Packet Idle Parameters description
366
367 // Packet Access Parameters
368 T_PRACH_INFO pra_info;
369
370 // Packet Access Parameters
371 T_POLL_INFO poll_info;
372
373 // Packet Transfer Parameters
374 T_TRANSFER_PARAM transfer;
375
376 // Serving Cell PBCCH parameters
377 T_PBCCHS_PARAM pbcchs;
378
379 // Neigbour Cell PBCCH parameters
380 T_PBCCHN_PARAM pbcchn;
381
382 // Interference measurement parameters
383 T_ITMEAS_PARAM itmeas;
384
385 // Measurement tasks management...
386 //-----------------------------------------
387 UWORD32 meas_param; // Synchro semaphore bit register for packet measurement tasks.
388 UWORD32 l1ps_en_meas; // Enable packet Meas task bit register.
389
390 // Access burst type
391 //------------------
392 UWORD8 access_burst_type;
393
394 // Frequency list Parameters used in Cell Reselection measurements
395 // ---------------------------------------------------------------
396 T_CR_FREQ_LIST cr_freq_list;
397
398 // Parameters used in Packet Transfer Neighbour measurement task
399 // -------------------------------------------------------------
400 T_TCR_LIST_SET tcr_freq_list;
401
402 // Cell Reselection list, used both in Packet Idle and Packet Transfer
403 // -------------------------------------------------------------------
404 T_CRES_FREQ_LIST cres_freq_list;
405
406 } T_L1PA_L1PS_COM;
407
408
409 /***************************************************************************************/
410 /* API (MCU <-> DSP) communication structures */
411 /***************************************************************************************/
412
413 typedef struct
414 {
415 // GPRS Extension...............
416 API d_task_d_gprs; // (map?) Task, burst per burst (part of header)
417 API d_task_u_gprs; // (map?) Task, burst per burst (part of header)
418 API d_task_pm_gprs; // (map?) Task, burst per burst (part of header)
419 API d_burst_nb_gprs; // (map?) burst identifier. (part of header)
420 API a_ctrl_abb_gprs[8]; // (map?) Analog baseband control, burst per burst.
421 API a_ctrl_power_gprs[8]; // (map?) Power control value, burst per burst.
422 }
423 T_DB_MCU_TO_DSP_GPRS;
424
425 typedef struct
426 {
427 // GPRS Extension...............
428 API d_task_d_gprs; // (map?) Task, burst per burst (part of header)
429 API d_task_u_gprs; // (map?) Task, burst per burst (part of header)
430 API d_task_pm_gprs; // (map?) Task, burst per burst (part of header)
431 API d_burst_nb_gprs; // (map?) burst identifier. (part of header)
432
433 API a_burst_toa_gprs[8]; // (map?) Time of arrival, burst per burst
434 API a_burst_pm_gprs[8]; // (map?) Receive Power Level, burst per burst
435 API a_burst_angle_gprs[8];// (map?) Angle deviation, burst per burst
436 API a_burst_snr_gprs[8]; // (map?) Signal to noise ratio, burst per burst
437 }
438 T_DB_DSP_TO_MCU_GPRS;
439
440 #if (DSP == 34) || (DSP == 35) || (DSP == 36)
441 typedef struct
442 {
443 // GEA module
444 API d_gea_mode;
445 API a_gea_kc[4];
446
447 API d_hole1_ndb_gprs[8];
448 API d_a5mode_ovly;
449
450 API d_sched_mode_gprs;
451
452 API d_hole2_ndb_gprs[5];
453
454 API d_usf_updated_gprs;
455 API d_win_start_gprs;
456 API d_usf_vote_enable;
457 API d_bbctrl_gprs;
458
459 API d_hole3_ndb_gprs[2];
460
461 // (map?) BTS physical timeslot mapping.
462 API a_ctrl_ched_gprs[8]; // (map?) Ched configuration, burst per burst
463 API a_ul_buffer_gprs[8]; // (map?) UL burst / UL buffer mapping, burst per burst. (part of header)
464 API a_usf_gprs[8];
465 API a_interf_meas_gprs[8];
466
467 API a_ptcchu_gprs[4];
468
469 API a_dd_md_gprs[16];
470
471 API a_du_gprs[4][29];
472 API a_pu_gprs[4][15];
473
474 API d_rlcmac_rx_no_gprs;
475
476 API a_dd_gprs[8][31];
477
478 API a_ramp_gprs[8][16];
479
480 }
481 T_NDB_MCU_DSP_GPRS;
482
483 #elif (DSP == 33)
484 typedef struct
485 {
486 // GEA module
487 API d_gea_mode;
488 API a_gea_kc[4];
489
490 API d_hole1_ndb_gprs[8];
491 API d_a5mode_ovly;
492
493 API d_sched_mode_gprs;
494
495 API d_hole2_ndb_gprs[5];
496
497 API d_usf_updated_gprs;
498 API d_win_start_gprs;
499 API d_usf_vote_enable;
500 API d_bbctrl_gprs;
501
502 API d_hole3_ndb_gprs[2];
503
504 // (map?) BTS physical timeslot mapping.
505 API a_ctrl_ched_gprs[8]; // (map?) Ched configuration, burst per burst
506 API a_ul_buffer_gprs[8]; // (map?) UL burst / UL buffer mapping, burst per burst. (part of header)
507 API a_usf_gprs[8];
508 API a_interf_meas_gprs[8];
509
510 API a_ptcchu_gprs[4];
511
512 API a_dd_md_gprs[16];
513
514 API a_du_gprs[4][29];
515 API a_pu_gprs[4][15];
516
517 API d_rlcmac_rx_no_gprs;
518
519 API a_dd_gprs[8][31];
520
521 API a_ramp_gprs[8][16];
522
523 }
524 T_NDB_MCU_DSP_GPRS;
525
526 #else
527
528 typedef struct
529 {
530 // GPRS Extension...............
531 API a_ramp_gprs[8][16];
532
533 #if (CODE_VERSION != SIMULATION)
534 API a_hole1_gprs[22]; // hole for a_du_1 and d_a5_mode
535 #endif
536
537 API d_ptcchu_ctrl_abb_gprs;
538 API d_ptcchu_ctrl_power_gprs;
539 API d_ptcchd_burst_nb_gprs;
540
541 #if (CODE_VERSION != SIMULATION)
542 API a_hole2_gprs[184];
543 #endif
544
545 API d_usf_updated_gprs;
546 API d_win_start_gprs; // (map?) BTS physical timeslot mapping.
547 API a_ctrl_ched_gprs[8]; // (map?) Ched configuration, burst per burst
548 API a_ul_buffer_gprs[8]; // (map?) UL burst / UL buffer mapping, burst per burst. (part of header)
549 API a_usf_gprs[8];
550 API a_interf_meas_gprs[8];
551
552 API d_background_enable;
553 API d_background_abort;
554 API d_background_state;
555 API d_max_background;
556 API a_background_tasks[16];
557 API a_back_task_io[10];
558
559 #if (CODE_VERSION != SIMULATION)
560 API a_hole3_gprs[19];
561 #endif
562 API d_gea_mode;
563
564 API a_gea_kc[4];
565
566 API d_sched_mode_gprs;
567
568 #if (CODE_VERSION != SIMULATION)
569 API a_hole4_gprs[384];
570 #endif
571
572 API a_du_gprs[4][29];
573 API d_rlcmac_rx_no_gprs;
574 API a_dd_gprs[4][31];
575 API a_pu_gprs[4][15];
576
577 #if (CODE_VERSION != SIMULATION)
578 API a_hole5_gprs[112];
579 #endif
580
581 API a_ptcchu_gprs[4];
582 API a_dd_md_gprs[16];
583 }
584 T_NDB_MCU_DSP_GPRS;
585 #endif
586
587 #if (DSP == 34) || (DSP == 35) || (DSP == 36)
588 typedef struct
589 {
590 // GPRS Extension...............
591 API_SIGNED d_overlay_rlcmac_cfg_gprs;
592 API_SIGNED d_mac_threshold;
593 API_SIGNED d_sd_threshold;
594 API_SIGNED d_nb_max_iteration;
595 }
596 T_PARAM_MCU_DSP_GPRS;
597 #elif (DSP == 33)
598 typedef struct
599 {
600 // GPRS Extension...............
601 API_SIGNED d_overlay_rlcmac_cfg_gprs;
602 API_SIGNED d_mac_threshold;
603 API_SIGNED d_sd_threshold;
604 API_SIGNED d_nb_max_iteration;
605 }
606 T_PARAM_MCU_DSP_GPRS;
607 #else
608 typedef struct
609 {
610 // GPRS Extension...............
611 API_SIGNED d_overlay_rlcmac_cfg_gprs;
612 API_SIGNED d_lat_mcu_bridge;
613 API_SIGNED d_lat_pll2div;
614 API_SIGNED d_lat_mcu_hom2sam;
615 API_SIGNED d_gprs_install_address;
616 API_SIGNED d_mac_threshold;
617 API_SIGNED d_sd_threshold;
618 API_SIGNED d_nb_max_iteration;
619 }
620 T_PARAM_MCU_DSP_GPRS;
621 #endif
622
623 /***************************************************************************************/
624 /* L1PS -> DSP communication structure... */
625 /***************************************************************************************/
626 typedef struct
627 {
628 T_DB_DSP_TO_MCU_GPRS *pdsp_db_r_ptr; // MCU<->DSP comm. read page (Double Buffered comm. memory).
629 T_DB_MCU_TO_DSP_GPRS *pdsp_db_w_ptr; // MCU<->DSP comm. write page (Double Buffered comm. memory).
630 T_NDB_MCU_DSP_GPRS *pdsp_ndb_ptr; // MCU<->DSP comm. read/write (Non Double Buffered comm. memory).
631 T_PARAM_MCU_DSP_GPRS *pdsp_param_ptr; // MCU<->DSP comm. read/write (Param comm. memory).
632 }
633 T_L1PS_DSP_COM;
634
635 /***************************************************************************************/
636 /* L1PS -> MAC-S communication structure... */
637 /***************************************************************************************/
638
639 typedef struct
640 {
641 UWORD8 nb; // Number of error found
642 UWORD8 id[10]; // Error ID
643 }
644 T_MACS_STATUS;
645
646 typedef struct
647 {
648 BOOL new_set; // Set to 1 if allocation parameters have changed, reset by MAC-S
649 UWORD8 rx_allocation; // Downlink resources relative to Layer 1 frames
650 UWORD8 tx_nb_allocation; // Uplink resources used to transmit normal bursts relative to Layer 1 frames
651 UWORD8 tx_prach_allocation; // Uplink resources used to transmit PRACH bursts relative to Layer 1 frames
652 UWORD8 pwr_allocation; // Measurement gap relative to Layer 1 frames
653 BOOL fix_alloc_exhaust_flag; // Set to 1 if the fixed allocation has just exhausted
654 BOOL rlc_downlink_call;
655 T_MACS_STATUS macs_status;
656 }
657 T_L1PS_MACS_COM;
658
659
660