comparison gsm-fw/L1/include/l1_defty.h @ 530:25a7fe25864c

gsm-fw/L1/include: switch to LoCosto versions of all header files
author Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
date Fri, 01 Aug 2014 16:38:35 +0000
parents ed6071292a5c
children de635895e0be
comparison
equal deleted inserted replaced
529:f72c9db5e2f5 530:25a7fe25864c
1 /************* Revision Controle System Header ************* 1 /************* Revision Controle System Header *************
2 * GSM Layer 1 software 2 * GSM Layer 1 software
3 * L1_DEFTY.H 3 * L1_DEFTY.H
4 * 4 *
5 * Filename l1_defty.h 5 * Filename l1_defty.h
6 * Copyright 2003 (C) Texas Instruments 6 * Copyright 2003 (C) Texas Instruments
7 * 7 *
8 ************* Revision Controle System Header *************/ 8 ************* Revision Controle System Header *************/
9
10 #include "sys.cfg"
11 #include "l1sw.cfg"
12
13 #if (L1_RF_KBD_FIX == 1)
14 #include "l1_macro.h"
15
16 #if(OP_L1_STANDALONE == 0)
17 #include "kpd/kpd_scan_functions.h"
18 #endif
19
20 #endif
21
22 #include "cust_os.h"
9 #if(L1_DYN_DSP_DWNLD == 1) 23 #if(L1_DYN_DSP_DWNLD == 1)
10 #include "../dyn_dwl_include/l1_dyn_dwl_defty.h" 24 #include "l1_dyn_dwl_defty.h"
11 #endif 25 #endif
26 #if (L1_AAC == 1) //ADDED for AAC -sajal
27 #include "l1aac_defty.h"
28 #endif
29
30 typedef struct
31 {
32 UWORD8 enable; // activation of FACCH test
33 UWORD8 period; // period of FACCH test
34 }
35 T_FACCH_TEST_PARAMS;
12 36
13 typedef struct 37 typedef struct
14 { 38 {
15 UWORD16 modulus; 39 UWORD16 modulus;
16 UWORD16 relative_position; 40 UWORD16 relative_position;
21 { 45 {
22 UWORD8 schedule_array_size; 46 UWORD8 schedule_array_size;
23 T_BCCHS_SCHEDULE schedule_array[10]; 47 T_BCCHS_SCHEDULE schedule_array[10];
24 } 48 }
25 T_BCCHS; 49 T_BCCHS;
50
51 typedef struct
52 {
53 UWORD8 srr; /* SACCH Repetition Request - UL */
54 UWORD8 sro; /* SACCH Repetition Order - DL */
55 UWORD8 buffer[22+1]; /* New uplink buffer to save the repetition block data in case of retransmission */
56 BOOL buffer_empty; /* It is equal to 1 if the UL repetion buffer should be empty otherwise 0 */
57 }
58 T_REPEAT_SACCH;
59
60 typedef struct
61 {
62 API buffer[12]; /* New buffer to save the DL data for comparison */
63 UWORD8 buffer_empty; /* To indicate the saved buffer */
64 }T_REPEAT_FACCH_PIPELINE;
65 typedef struct
66 {
67 T_REPEAT_FACCH_PIPELINE pipeline[2];
68 UWORD8 counter;
69 UWORD8 counter_candidate;
70 } T_REPEAT_FACCH;
26 71
27 typedef struct 72 typedef struct
28 { 73 {
29 BOOL status; 74 BOOL status;
30 UWORD16 radio_freq; 75 UWORD16 radio_freq;
38 UWORD8 gprs_priority; 83 UWORD8 gprs_priority;
39 UWORD8 sb26_offset; // Set to 1 when SB26 RX win is entirely in frame 25. 84 UWORD8 sb26_offset; // Set to 1 when SB26 RX win is entirely in frame 25.
40 #if (L1_12NEIGH ==1) 85 #if (L1_12NEIGH ==1)
41 UWORD32 fn_offset_mem; 86 UWORD32 fn_offset_mem;
42 UWORD32 time_alignmt_mem; 87 UWORD32 time_alignmt_mem;
88 #endif // (L1_12NEIGH ==1)
89 #if ((REL99 == 1) && ((FF_BHO == 1) || (FF_RTD == 1)))
90 UWORD8 nb_fb_attempt ;
91 UWORD8 fb26_position; // used for RTD feature
43 #endif 92 #endif
44 } 93 }
45 T_NCELL_SINGLE; 94 T_NCELL_SINGLE;
95
96 #if ((REL99 == 1) && (FF_BHO == 1))
97 typedef struct
98 {
99 UWORD8 fb_found_attempt;
100 UWORD16 radio_freq;
101 UWORD32 fn_offset;
102 UWORD32 time_alignmt;
103 UWORD32 fb_toa;
104 }
105 T_BHO_PARAM;
106 #endif // #if ((REL99 == 1) && (FF_BHO == 1))
46 107
47 typedef struct 108 typedef struct
48 { 109 {
49 UWORD8 active_neigh_id_norm; 110 UWORD8 active_neigh_id_norm;
50 UWORD8 active_neigh_tc_norm; 111 UWORD8 active_neigh_tc_norm;
127 T_AMR_CONFIGURATION; 188 T_AMR_CONFIGURATION;
128 #endif 189 #endif
129 190
130 typedef struct 191 typedef struct
131 { 192 {
193 #if(L1_A5_3 == 1 && OP_L1_STANDALONE != 1)
194 UWORD8 A[15+1];
195 #else
132 UWORD8 A[7+1]; 196 UWORD8 A[7+1];
197 #endif
133 } 198 }
134 T_ENCRYPTION_KEY; 199 T_ENCRYPTION_KEY;
135 200
136 typedef struct 201 typedef struct
137 { 202 {
263 } 328 }
264 T_HO_PARAMS; 329 T_HO_PARAMS;
265 330
266 typedef struct 331 typedef struct
267 { 332 {
268 T_CHANNEL_DESCRIPTION channel_desc;
269 T_MOBILE_ALLOCATION frequency_list;
270 T_STARTING_TIME starting_time;
271 }
272 T_MPHC_CHANGE_FREQUENCY;
273
274 typedef struct
275 {
276 UWORD8 subchannel; 333 UWORD8 subchannel;
277 UWORD8 channel_mode; 334 UWORD8 channel_mode;
278 #if (AMR == 1) 335 #if (AMR == 1)
279 T_AMR_CONFIGURATION amr_configuration; 336 T_AMR_CONFIGURATION amr_configuration;
280 #endif 337 #endif
281 } 338 }
282 T_MPHC_CHANNEL_MODE_MODIFY_REQ; 339 T_MPHC_CHANNEL_MODE_MODIFY_REQ;
283 340
284 typedef struct 341 typedef struct
285 { 342 {
286 UWORD8 cipher_mode;
287 UWORD8 a5_algorithm;
288 T_ENCRYPTION_KEY new_ciph_param;
289 }
290 T_MPHC_SET_CIPHERING_REQ;
291
292 typedef struct
293 {
294 UWORD8 sub_channel; 343 UWORD8 sub_channel;
295 UWORD8 frame_erasure; 344 UWORD8 frame_erasure;
296 } 345 }
297 T_OML1_CLOSE_TCH_LOOP_REQ; 346 T_OML1_CLOSE_TCH_LOOP_REQ;
298 347
350 { 399 {
351 const T_FCT *address; 400 const T_FCT *address;
352 UWORD8 size; 401 UWORD8 size;
353 } 402 }
354 T_TASK_MFTAB; 403 T_TASK_MFTAB;
404
405
406 #if (GSM_IDLE_RAM != 0)
407 typedef struct
408 {
409 BOOL l1s_full_exec;
410 BOOL trff_ctrl_enable_cause_int;
411 WORD32 hw_timer;
412 WORD32 os_load;
413 UWORD32 sleep_mode;
414
415 #if GSM_IDLE_RAM_DEBUG
416 UWORD32 killing_flash_access;
417 UWORD32 killing_ext_ram_access;
418 UWORD32 irq;
419 UWORD32 fiq;
420 UWORD32 nb_inth;
421
422 #if (CHIPSET == 10) && (OP_WCP == 1)
423 UWORD16 TC_true_control;
424 #endif // CHIPSET && OP_WCP
425 #endif // GSM_IDLE_RAM_DEBUG
426 UWORD32 task_bitmap_idle_ram[SIZE_TAB_L1S_MONITOR];
427 UWORD32 mem_task_bitmap_idle_ram[SIZE_TAB_L1S_MONITOR];
428 }
429 T_L1S_GSM_IDLE_INTRAM;
430 #endif // GSM_IDLE_RAM
431
355 432
356 /***********************************************************/ 433 /***********************************************************/
357 /* TPU controle register components definition. */ 434 /* TPU controle register components definition. */
358 /***********************************************************/ 435 /***********************************************************/
359 436
392 /* */ 469 /* */
393 /***********************************************************/ 470 /***********************************************************/
394 471
395 typedef struct 472 typedef struct
396 { 473 {
397 API d_task_d; // (0) Downlink task command. 474 API d_task_d; // 0x0800 (0) Downlink task command.
398 API d_burst_d; // (1) Downlink burst identifier. 475 API d_burst_d; // 0x0801 (1) Downlink burst identifier.
399 API d_task_u; // (2) Uplink task command. 476 API d_task_u; // 0x0802 (2) Uplink task command.
400 API d_burst_u; // (3) Uplink burst identifier. 477 API d_burst_u; // 0x0803 (3) Uplink burst identifier.
401 API d_task_md; // (4) Downlink Monitoring (FB/SB) command. 478 API d_task_md; // 0x0804 (4) Downlink Monitoring (FB/SB) command.
402 #if (DSP == 33) || (DSP == 34) || (DSP == 35) || (DSP == 36) 479 #if (DSP == 33) || (DSP == 34) || (DSP == 35) || (DSP == 36) || (DSP == 37) || (DSP == 38) || (DSP == 39)
403 API d_background; // (5) Background tasks 480 API d_background; // 0x0805 (5) Background tasks
404 #else 481 #else
405 API d_reserved; // (5) Reserved 482 API d_reserved; // 0x0805 (5) Reserved
406 #endif 483 #endif
407 API d_debug; // (6) Debug/Acknowledge/general purpose word. 484 API d_debug; // 0x0806 (6) Debug/Acknowledge/general purpose word.
408 API d_task_ra; // (7) RA task command. 485 API d_task_ra; // 0x0807 (7) RA task command.
409 API d_fn; // (8) FN, in Rep. period and FN%104, used for TRAFFIC/TCH only. 486 API d_fn; // 0x0808 (8) FN, in Rep. period and FN%104, used for TRAFFIC/TCH only.
410 // bit [0..7] -> b_fn_report, FN in the normalized reporting period. 487 // bit [0..7] -> b_fn_report, FN in the normalized reporting period.
411 // bit [8..15] -> b_fn_sid, FN % 104, used for SID positionning. 488 // bit [8..15] -> b_fn_sid, FN % 104, used for SID positionning.
412 API d_ctrl_tch; // (9) Tch channel description. 489 API d_ctrl_tch; // 0x0809 (9) Tch channel description.
413 // bit [0..3] -> b_chan_mode, channel mode. 490 // bit [0..3] -> b_chan_mode, channel mode.
414 // bit [4..5] -> b_chan_type, channel type. 491 // bit [4..5] -> b_chan_type, channel type.
415 // bit [6] -> reset SACCH 492 // bit [6] -> reset SACCH
416 // bit [7] -> vocoder ON 493 // bit [7] -> vocoder O
417 // bit [8] -> b_sync_tch_ul, synchro. TCH/UL. 494 // bit [8] -> b_sync_tch_ul, synchro. TCH/UL.
418 // bit [9] -> b_sync_tch_dl, synchro. TCH/DL. 495 // bit [9] -> b_sync_tch_dl, synchro. TCH/DL.
419 // bit [10] -> b_stop_tch_ul, stop TCH/UL. 496 // bit [10] -> b_stop_tch_ul, stop TCH/UL.
420 // bit [11] -> b_stop_tch_dl, stop TCH/DL. 497 // bit [11] -> b_stop_tch_dl, stop TCH/DL.
421 // bit [12.13] -> b_tch_loop, tch loops A/B/C. 498 // bit [12.13] -> b_tch_loop, tch loops A/B/C.
422 API hole; // (10) unused hole. 499 API hole; // 0x080A (10) unused hole.
423 500
424 #if ((ANALOG == 1) || (ANALOG == 2) || (ANALOG == 3)) 501 #if ((ANLG_FAM == 1) || (ANLG_FAM == 2) || (ANLG_FAM == 3) || (ANLG_FAM == 11))
425 API d_ctrl_abb; // (11) Bit field indicating the analog baseband register to send. 502 API d_ctrl_abb; // 0x080B (11) Bit field indicating the analog baseband register to send.
426 // bit [0] -> b_ramp: the ramp information(a_ramp[]) is located in NDB 503 // bit [0] -> b_ramp: the ramp information(a_ramp[]) is located in NDB
427 // bit [1.2] -> unused 504 // bit [1.2] -> unused
428 // bit [3] -> b_apcdel: delays-register in NDB 505 // bit [3] -> b_apcdel: delays-register in NDB
429 // bit [4] -> b_afc: freq control register in DB 506 // bit [4] -> b_afc: freq control register in DB
430 // bit [5..15] -> unused 507 // bit [5..15] -> unused
431 #endif 508 #endif
432 API a_a5fn[2]; // (12..13) Encryption Frame number. 509 API a_a5fn[2]; // 0x080C (12..13) Encryption Frame number.
433 // word 0, bit [0..4] -> T2. 510 // word 0, bit [0..4] -> T2.
434 // word 0, bit [5..10] -> T3. 511 // word 0, bit [5..10] -> T3.
435 // word 1, bit [0..11] -> T1. 512 // word 1, bit [0..11] -> T1.
436 API d_power_ctl; // (14) Power level control. 513 API d_power_ctl; // 0x080E (14) Power level control.
437 API d_afc; // (15) AFC value (enabled by "b_afc" in "d_ctrl_TCM4400 or in d_ctrl_abb"). 514 API d_afc; // 0x080F (15) AFC value (enabled by "b_afc" in "d_ctrl_TCM4400 or in d_ctrl_abb").
438 API d_ctrl_system; // (16) Controle Register for RESET/RESUME. 515 API d_ctrl_system; // 0x0810 (16) Controle Register for RESET/RESUME.
439 // bit [0..2] -> b_tsq, training sequence. 516 // bit [0..2] -> b_tsq, training sequence.
440 // bit [3] -> b_bcch_freq_ind, BCCH frequency indication. 517 // bit [3] -> b_bcch_freq_ind, BCCH frequency indication.
441 // bit [15] -> b_task_abort, DSP task abort command. 518 // bit [15] -> b_task_abort, DSP task abort command.
519 // bit [4] -> B_SWH_APPLY_WHITENING, Apply whitening.
520 //#if (((DSP == 36)||(DSP == 37)||(DSP == 38) || (DSP == 39)))
521 // API d_swh_ApplyWhitening_db; // 0x0811 SWH Whitening Activation Flag
522 //#endif
442 } 523 }
443 T_DB_MCU_TO_DSP; 524 T_DB_MCU_TO_DSP;
444 525
445 typedef struct 526 #if (DSP == 38) || (DSP == 39)
446 { 527 // DB COMMON to GSM and GPRS
447 API d_task_d; // (0) Downlink task command. 528 typedef struct
448 API d_burst_d; // (1) Downlink burst identifier. 529 {
449 API d_task_u; // (2) Uplink task command. 530 API d_dco_algo_ctrl_nb; // DRP DCO enable/disable for normal burst
450 API d_burst_u; // (3) Uplink burst identifier. 531 API d_dco_algo_ctrl_sb; // DRP DCO enable/disable for synchro burst
451 API d_task_md; // (4) Downlink Monitoring (FB/SB) task command. 532 API d_dco_algo_ctrl_pw; // DRP DCO enable/disable for power burst
452 #if (DSP == 33) || (DSP == 34) || (DSP == 35) || (DSP == 36) 533 API d_swh_ctrl_db;
453 API d_background; // (5) Background tasks 534 API d_fast_paging_ctrl;
535 }
536 T_DB_COMMON_MCU_TO_DSP;
537 #endif // DSP == 38 || DSP == 39
538
539 /* DSP CPU load measurement */
540 #if (DSP == 38) || (DSP == 39)
541 // DB COMMON to GSM and GPRS
542 typedef struct
543 {
544 API d_dsp_fgd_tsk_tim0;
545 API d_dsp_fgd_tsk_tim1;
546 API d_tdma_dsp_fn;
547 API d_dsp_page_read;
548 }
549 T_DB_MCU_TO_DSP_CPU_LOAD;
550 #endif // DSP == 38 || DSP == 39
551
552 typedef struct
553 {
554 API d_task_d; // 0x0828 (0) Downlink task command.
555 API d_burst_d; // 0x0829 (1) Downlink burst identifier.
556 API d_task_u; // 0x082A (2) Uplink task command.
557 API d_burst_u; // 0x082B (3) Uplink burst identifier.
558 API d_task_md; // 0x082C (4) Downlink Monitoring (FB/SB) task command.
559 #if (DSP == 33) || (DSP == 34) || (DSP == 35) || (DSP == 36) || (DSP == 37) || (DSP == 38) || (DSP == 39)
560 API d_background; // 0x082D (5) Background tasks
454 #else 561 #else
455 API d_reserved; // (5) Reserved 562 API d_reserved; // 0x082D (5) Reserved
456 #endif 563 #endif
457 API d_debug; // (6) Debug/Acknowledge/general purpose word. 564 API d_debug; // 0x082E (6) Debug/Acknowledge/general purpose word.
458 API d_task_ra; // (7) RA task command. 565 API d_task_ra; // 0x082F (7) RA task command.
459 566
460 #if (DSP == 33) || (DSP == 34) || (DSP == 35) || (DSP == 36) 567 #if (DSP == 33) || (DSP == 34) || (DSP == 35) || (DSP == 36) || (DSP == 37) || (DSP == 38) || (DSP == 39)
461 API a_serv_demod[4]; // ( 8..11) Serv. cell demod. result, array of 4 words (D_TOA,D_PM,D_ANGLE,D_SNR). 568 API a_serv_demod[4]; // 0x0830 ( 8..11) Serv. cell demod. result, array of 4 words (D_TOA,D_PM,D_ANGLE,D_SNR).
462 API a_pm[3]; // (12..14) Power measurement results, array of 3 words. 569 API a_pm[3]; // 0x0834 (12..14) Power measurement results, array of 3 words.
463 API a_sch[5]; // (15..19) Header + SB information, array of 5 words. 570 API a_sch[5]; // 0x0837 (15..19) Header + SB information, array of 5 words.
464 #else 571 #else
465 API a_pm[3]; // ( 8..10) Power measurement results, array of 3 words. 572 API a_pm[3]; // ( 8..10) Power measurement results, array of 3 words.
466 API a_serv_demod[4]; // (11..14) Serv. cell demod. result, array of 4 words (D_TOA,D_PM,D_ANGLE,D_SNR). 573 API a_serv_demod[4]; // (11..14) Serv. cell demod. result, array of 4 words (D_TOA,D_PM,D_ANGLE,D_SNR).
467 API a_sch[5]; // (15..19) Header + SB information, array of 5 words. 574 API a_sch[5]; // (15..19) Header + SB information, array of 5 words.
468 #endif 575 #endif
469 } 576 }
470 T_DB_DSP_TO_MCU; 577 T_DB_DSP_TO_MCU;
471 578
472 #if (DSP == 34) || (DSP == 35) || (DSP == 36) // NDB GSM 579 #if (DSP == 38) || (DSP == 39)
580 typedef struct
581 {
582 // MISC Tasks
583 API d_dsp_page; // 0x08D4
584
585 // DSP status returned (DSP --> MCU).
586 API d_error_status; // 0x08D5
587
588 // RIF control (MCU -> DSP). // following is removed for Locosto
589 API d_spcx_rif_hole; // 0x08D6
590
591
592 API d_tch_mode; // 0x08D7 TCH mode register.
593 // bit [0..1] -> b_dai_mode.
594 // bit [2] -> b_dtx.
595
596 API d_debug1; // 0x08D8 bit 0 at 1 enable dsp f_tx delay for Omega
597
598 API d_dsp_test; // 0x08D9
599
600 // Words dedicated to Software version (DSP code + Patch)
601 API d_version_number1; // 0x08DA
602 API d_version_number2; // 0x08DB
603
604 API d_debug_ptr; // 0x08DC
605 API d_debug_bk; // 0x08DD
606
607 API d_pll_config; // 0x08DE
608
609 // GSM/GPRS DSP Debug trace support
610 API p_debug_buffer; // 0x08DF
611 API d_debug_buffer_size; // 0x08E0
612 API d_debug_trace_type; // 0x08E1
613
614 #if (W_A_DSP_IDLE3 == 1)
615 // DSP report its state: 0 run, 1 Idle1, 2 Idle2, 3 Idle3.
616 API d_dsp_state; // 0x08E2
617 // 5 words are reserved for any possible mapping modification
618 API d_hole1_ndb[2]; // 0x08E3
619 #else
620 // 6 words are reserved for any possible mapping modification
621 API d_hole1_ndb[3];
622 #endif
623
624 #if (AMR == 1)
625 API p_debug_amr; // 0x08E5??? DSP doc says reserved
626 #else
627 API d_hole_debug_amr;
628 #endif
629
630 API d_dsp_iq_scaling_factor; // 0x08E6
631 API d_mcsi_select; // 0x08E7
632
633 // New words APCDEL1 and APCDEL2 for 2TX: TX/PRACH combinations
634 API d_apcdel1_bis; // 0x08E8
635 API d_apcdel2_bis;
636 // New registers due to IOTA analog base band
637 API d_apcdel2;
638
639
640 API d_vbctrl2_hole; // 0x08EB
641 API d_bulgcal_hole; // 0x08EC
642 // Analog Based Band - removed in ROM 38
643 API d_afcctladd_hole; // 0x08ED
644 API d_vbuctrl_hole; // 0x08EE - removed in ROM38
645 API d_vbdctrl_hole; // 0x08EF - removed in ROM38
646
647 API d_apcdel1; // 0x08F0
648 // New Variables Added due to the APC Switch
649 // But for when DSP is in Idle3 all writes from MCU to APC are routed via DSP
650 API d_apclev; // APCLEV - 0x08F1 (In ROM36 - apcoff )
651 // NOTE: Used Only in Test mode
652 // Only when l1_config.tmode.rf_params.down_up == TMODE_UPLINK;
653 API d_apcctrl2; // APCCTRL2 - 0x08F2 (In ROM36 - bulioff)
654 API d_bulqoff_hole; // 0x08F3
655 API d_dai_onoff; // 0x08F4
656 API d_auxdac_hole; // 0x08F5
657
658 API d_vbctrl_hole; // 0x08F6 - removed in ROM38
659
660 API d_bbctrl_hole; // 0x08F7 - removed in ROM38
661
662 // Monitoring tasks control (MCU <- DSP)
663 // FB task
664 API d_fb_det; // 0x08F8 FB detection result. (1 for FOUND).
665 API d_fb_mode; // Mode for FB detection algorithm.
666 API a_sync_demod[4]; // FB/SB demod. result, (D_TOA,D_PM,D_ANGLE,D_SNR).
667
668 // SB Task
669 API a_sch26[5]; // 0x08FE Header + SB information, array of 5 words.
670
671 API d_audio_gain_ul; // 0x0903
672 API d_audio_gain_dl; // 0x0904
673
674 // Controller of the melody E2 audio compressor - removed in ROM 38
675 API d_audio_compressor_ctrl_hole; // 0x0905 - removed in ROM37,38
676
677 // AUDIO module
678 API d_audio_init; // 0x0906
679 API d_audio_status; //
680
681 // Audio tasks
682 // TONES (MCU -> DSP)
683 API d_toneskb_init;
684 API d_toneskb_status;
685 API d_k_x1_t0;
686 API d_k_x1_t1;
687 API d_k_x1_t2;
688 API d_pe_rep;
689 API d_pe_off;
690 API d_se_off;
691 API d_bu_off; // 0x0910
692 API d_t0_on;
693 API d_t0_off;
694 API d_t1_on;
695 API d_t1_off;
696 API d_t2_on;
697 API d_t2_off;
698 API d_k_x1_kt0;
699 API d_k_x1_kt1;
700 API d_dur_kb;
701 API d_shiftdl;
702 API d_shiftul; // 0x091B
703
704 API d_aec_18_hole; // 0x091C
705
706 API d_es_level_api;
707 API d_mu_api;
708
709 // Melody Ringer module
710 API d_melo_osc_used; // 0x091F
711 API d_melo_osc_active; // 0x0920
712 API a_melo_note0[4];
713 API a_melo_note1[4];
714 API a_melo_note2[4];
715 API a_melo_note3[4];
716 API a_melo_note4[4];
717 API a_melo_note5[4];
718 API a_melo_note6[4];
719 API a_melo_note7[4];
720
721 // selection of the melody format
722 API d_melody_selection; // 0x0941
723
724 // Holes due to the format melody E1
725 API a_melo_holes[3];
726
727 // Speech Recognition module - Removed in ROM38
728 API d_sr_holes[19]; // 0x0945
729
730 // Audio buffer
731 API a_dd_1[22]; // 0x0958 Header + DATA traffic downlink information, sub. chan. 1.
732 API a_du_1[22]; // 0x096E Header + DATA traffic uplink information, sub. chan. 1.
733
734 // V42bis module
735 API d_v42b_nego0; // 0x0984
736 API d_v42b_nego1;
737 API d_v42b_control;
738 API d_v42b_ratio_ind;
739 API d_mcu_control;
740 API d_mcu_control_sema;
741
742 // Background tasks
743 API d_background_enable; // 0x098A
744 API d_background_abort;
745 API d_background_state;
746 API d_max_background;
747 API a_background_tasks[16]; // 0x098E
748 API a_back_task_io[16]; //0x099E
749
750 // GEA module defined in l1p_deft.h (the following section is overlaid with GPRS NDB memory)
751 API d_gea_mode_ovly_hole; // 0x09AE
752 API a_gea_kc_ovly_hole[4]; // 0x09AF
753
754 API d_hole3_ndb[6]; //0x09B3
755 API d_dsp_aud_hint_flag; // 0x09B9;
756
757 // word used for the init of USF threshold
758 API d_thr_usf_detect; // 0x09BA
759
760 // Encryption module
761 API d_a5mode; // Encryption Mode.
762
763 API d_sched_mode_gprs_ovly; // 0x09Bc
764 #if (FF_L1_IT_DSP_USF == 1) || (FF_L1_IT_DSP_DTX == 1)
765 API d_hole1_fast_ndb[1]; // 0x09BD;
766 API d_dsp_hint_flag; // 0x09BE; //used for fast usf and fast dtx and other dyn dwn
767 // 6 words are reserved for any possible mapping modification
768 #if FF_L1_IT_DSP_DTX
769 API d_fast_dtx_enable;//used for enabling fast dtx- 0x09BF
770 API d_fast_dtx_enc_data;//fast usf written by DSP to indicate tx data is there or not- 0x09C0
771 #else // FF_L1_IT_DSP_DTX
772 API d_hole3_fast_ndb[2]; // 0x09BF
773 #endif // FF_L1_IT_DSP_USF
774 #if (FF_L1_FAST_DECODING == 1)
775 API d_fast_paging_data; // 0x9C1
776 #else
777 API d_hole_fast_paging_ndb;
778 #endif /* FF_L1_FAST_DECODING*/
779 #else
780 // 7 words are reserved for any possible mapping modification
781 API d_hole4_ndb[5]; // 0x09BD
782 #endif
783
784 // Ramp definition for Omega device
785 API a_ramp_hole[16]; //0x09C2
786
787 // CCCH/SACCH downlink information...(!!)
788 API a_cd[15]; //0x09D2 Header + CCCH/SACCH downlink information.
789
790 // FACCH downlink information........(!!)
791 API a_fd[15]; // 0x09E1 Header + FACCH downlink information.
792
793 // Traffic downlink data frames......(!!)
794 API a_dd_0[22]; // 0x09F0 Header + DATA traffic downlink information, sub. chan. 0.
795
796 // CCCH/SACCH uplink information.....(!!)
797 API a_cu[15]; // 0x0A06 Header + CCCH/SACCH uplink information.
798
799 // FACCH downlink information........(!!)
800 API a_fu[15]; // 0x0A15 Header + FACCH uplink information
801
802 // Traffic downlink data frames......(!!)
803 API a_du_0[22]; // 0x0A24 Header + DATA traffic uplink information, sub. chan. 0.
804
805 // Random access.....................(MCU -> DSP).
806 API d_rach; // 0x0A3A RACH information.
807
808 //...................................(MCU -> DSP).
809 API a_kc[4]; // 0x0A3B Encryption Key Code.
810
811 // Integrated Data Services module
812 API d_ra_conf;
813 API d_ra_act;
814 API d_ra_test;
815 API d_ra_statu;
816 API d_ra_statd;
817 API d_fax;
818 API a_data_buf_ul[21]; // 0x0A45
819 API a_data_buf_dl[37]; // 0x0A5A
820
821 API a_sr_holes0[422]; // 0x0A7F
822
823 #if (L1_AEC == 1)
824 #if (L1_NEW_AEC)
825 API d_cont_filter;
826 API d_granularity_att;
827 API d_coef_smooth;
828 API d_es_level_max;
829 API d_fact_vad;
830 API d_thrs_abs;
831 API d_fact_asd_fil;
832 API d_fact_asd_mut;
833 API d_far_end_pow_h;
834 API d_far_end_pow_l;
835 API d_far_end_noise_h;
836 API d_far_end_noise_l;
837 #else
838 API a_sr_hole1[12];
839 #endif
840 #else
841 API a_sr_hole2[12];
842 #endif
843
844 // Speech recognition model
845 API a_sr_holes1[145]; // 0x0C31
846
847 // Correction of PR G23M/L1_MCU-SPR-15494
848 API d_cport_init; // 0x0CC2
849 API d_cport_ctrl;
850 API a_cport_cfr[2];
851 API d_cport_tcl_tadt;
852 API d_cport_tdat;
853 API d_cport_tvs;
854 API d_cport_status;
855 API d_cport_reg_value;
856 API a_cport_holes[1011];
857
858 API a_model_holes[1041];
859
860 // EOTD buffer
861 #if (L1_EOTD==1)
862 API d_eotd_first;
863 API d_eotd_max;
864 API d_eotd_nrj_high;
865 API d_eotd_nrj_low;
866 API a_eotd_crosscor[18];
867 #else
868 API a_eotd_holes[22];
869 #endif
870 // AMR ver 1.0 buffers
871 API a_amr_config[4]; // 0x14E5
872 API a_ratscch_ul[6];
873 API a_ratscch_dl[6];
874 API d_amr_snr_est; // estimation of the SNR of the AMR speech block
875 #if (L1_VOICE_MEMO_AMR)
876 API d_amms_ul_voc;
877 #else
878 API a_voice_memo_amr_holes[1];
879 #endif
880 API d_thr_onset_afs; // thresh detection ONSET AFS
881 API d_thr_sid_first_afs; // thresh detection SID_FIRST AFS
882 API d_thr_ratscch_afs; // thresh detection RATSCCH AFS
883 API d_thr_update_afs; // thresh detection SID_UPDATE AFS
884 API d_thr_onset_ahs; // thresh detection ONSET AHS
885 API d_thr_sid_ahs; // thresh detection SID frames AHS
886 API d_thr_ratscch_marker; // thresh detection RATSCCH MARKER
887 API d_thr_sp_dgr; // thresh detection SPEECH DEGRADED/NO_DATA
888 API d_thr_soft_bits; // 0x14FF
889
890
891 API a_amrschd_debug[30]; // 0x1500
892 #if (W_A_AMR_THRESHOLDS)
893 API a_d_macc_thr_afs[8]; // 0x151E
894 API a_d_macc_thr_ahs[6]; // 0x1526
895 #else
896 API d_holes[14]; // 0x151E
897 #endif
898
899 // There is no melody E2 in DSP ROM38 as of now -> Only Holes
900 API d_melody_e2_holes[17]; // 0x152C
901
902
903 API d_vol_ul_level_hole; // 0x153D
904 API d_vol_dl_level_hole; // 0x153E
905 API d_vol_speed_hole; // 0x153F
906 API d_sidetone_level_hole; // 0x1540
907
908 // Audio control area
909 API d_es_ctrl; // 0x1541
910 API d_anr_ul_ctrl;
911 API d_aec_ul_ctrl;
912 API d_agc_ul_ctrl;
913 //API d_aqi_ctrl_hole1[4]; // Reserved for future UL modules earlier code now modified and added d_vad_noise_ene_ndb
914 API d_aqi_ctrl_hole1[1]; // Reserved for future UL modules
915
916 API d_vad_noise_ene_ndb[2]; //NAVC API address-0x1546-MSB, 0x1547-LSB-> 2-WORDs
917
918 API d_navc_ctrl_status; // NAVC control
919
920 API d_iir_dl_ctrl; // 0x1549
921 API d_lim_dl_ctrl;
922 API d_drc_dl_ctrl;
923 API d_agc_dl_ctrl;
924 API d_audio_apps_ctrl; // Reserved for future DL modules
925 API d_audio_apps_status;
926 API d_aqi_status;
927
928 #if (L1_IIR == 1)
929 API d_iir_input_scaling; // 0x1550
930 API d_iir_fir_scaling; //
931 API d_iir_input_gain_scaling; //
932 API d_iir_output_gain_scaling; //
933 API d_iir_output_gain; //
934 API d_iir_feedback; //
935 API d_iir_nb_iir_blocks; //
936 API d_iir_nb_fir_coefs; //
937 API a_iir_iir_coefs[80]; // 0x1558
938 API a_iir_fir_coefs[32]; // 0x15A8
939
940 #if (L1_ANR == 1)
941 API d_anr_min_gain;
942 API d_anr_vad_thr;
943 API d_anr_gamma_slow;
944 API d_anr_gamma_fast;
945 API d_anr_gamma_gain_slow;
946 API d_anr_gamma_gain_fast;
947 API d_anr_thr2;
948 API d_anr_thr4;
949 API d_anr_thr5;
950 API d_anr_mean_ratio_thr1;
951 API d_anr_mean_ratio_thr2;
952 API d_anr_mean_ratio_thr3;
953 API d_anr_mean_ratio_thr4;
954 API d_anr_div_factor_shift;
955 API d_anr_ns_level;
956 #else
957 API d_anr_hole[15];
958 #endif
959
960
961 #elif (L1_IIR == 2) //Srart address= 0x1550.
962 API d_iir4x_control;
963 API d_iir4x_frame_size;
964 API d_iir4x_fir_swap;
965 API d_iir4x_fir_enable;
966 API d_iir4x_fir_length;
967 API_SIGNED d_iir4x_fir_shift;
968 API_SIGNED a_iir4x_fir_taps[40];
969 API d_iir4x_sos_enable;
970 API d_iir4x_sos_number;
971 API_SIGNED d_iir4x_sos_fact_1;
972 API_SIGNED d_iir4x_sos_fact_form_1;
973 API_SIGNED a_iir4x_sos_den_1[2];
974 API_SIGNED a_iir4x_sos_num_1[3];
975 API_SIGNED d_iir4x_sos_num_form_1;
976 API_SIGNED d_iir4x_sos_fact_2;
977 API_SIGNED d_iir4x_sos_fact_form_2;
978 API_SIGNED a_iir4x_sos_den_2[2];
979 API_SIGNED a_iir4x_sos_num_2[3];
980 API_SIGNED d_iir4x_sos_num_form_2;
981 API_SIGNED d_iir4x_sos_fact_3;
982 API_SIGNED d_iir4x_sos_fact_form_3;
983 API_SIGNED a_iir4x_sos_den_3[2];
984 API_SIGNED a_iir4x_sos_num_3[3];
985 API_SIGNED d_iir4x_sos_num_form_3;
986 API_SIGNED d_iir4x_sos_fact_4;
987 API_SIGNED d_iir4x_sos_fact_form_4;
988 API_SIGNED a_iir4x_sos_den_4[2];
989 API_SIGNED a_iir4x_sos_num_4[3];
990 API_SIGNED d_iir4x_sos_num_form_4;
991 API_SIGNED d_iir4x_sos_fact_5;
992 API_SIGNED d_iir4x_sos_fact_form_5;
993 API_SIGNED a_iir4x_sos_den_5[2];
994 API_SIGNED a_iir4x_sos_num_5[3];
995 API_SIGNED d_iir4x_sos_num_form_5;
996 API_SIGNED d_iir4x_sos_fact_6;
997 API_SIGNED d_iir4x_sos_fact_form_6;
998 API_SIGNED a_iir4x_sos_den_6[2];
999 API_SIGNED a_iir4x_sos_num_6[3];
1000 API_SIGNED d_iir4x_sos_num_form_6;
1001 API_SIGNED d_iir4x_gain; //End address= 0x15B0
1002
1003
1004 #if (L1_AGC_UL == 1) //Start address= 0x15B1
1005 // AGC uplink
1006 API d_agc_ul_control;
1007 API d_agc_ul_frame_size;
1008 API_SIGNED d_agc_ul_targeted_level;
1009 API_SIGNED d_agc_ul_signal_up;
1010 API_SIGNED d_agc_ul_signal_down;
1011 API_SIGNED d_agc_ul_max_scale;
1012 API_SIGNED d_agc_ul_gain_smooth_alpha;
1013 API_SIGNED d_agc_ul_gain_smooth_alpha_fast;
1014 API_SIGNED d_agc_ul_gain_smooth_beta;
1015 API_SIGNED d_agc_ul_gain_smooth_beta_fast;
1016 API_SIGNED d_agc_ul_gain_intp_flag;
1017 #else
1018 API d_agc_ul_holes[11];
1019 #endif //End address= 0x15BB
1020
1021 #if (L1_AGC_DL == 1)
1022 // AGC downlink
1023 API d_agc_dl_control; //Start Address= 0x15BC
1024 API d_agc_dl_frame_size;
1025 API_SIGNED d_agc_dl_targeted_level;
1026 API_SIGNED d_agc_dl_signal_up;
1027 API_SIGNED d_agc_dl_signal_down;
1028 API_SIGNED d_agc_dl_max_scale;
1029 API_SIGNED d_agc_dl_gain_smooth_alpha;
1030 API_SIGNED d_agc_dl_gain_smooth_alpha_fast;
1031 API_SIGNED d_agc_dl_gain_smooth_beta;
1032 API_SIGNED d_agc_dl_gain_smooth_beta_fast;
1033 API_SIGNED d_agc_dl_gain_intp_flag;
1034 #else
1035 API d_agc_dl_holes[11];
1036 #endif //End address= 0x15C6
1037
1038
1039 #if(L1_AEC == 2)
1040 API d_aec_mode; //Start address= 0x15C7
1041 API d_mu;
1042 API d_cont_filter;
1043 API d_scale_input_ul;
1044 API d_scale_input_dl;
1045 API d_div_dmax;
1046 API d_div_swap_good;
1047 API d_div_swap_bad;
1048 API d_block_init;
1049 API d_fact_vad;
1050 API d_fact_asd_fil;
1051 API d_fact_asd_mut;
1052 API d_thrs_abs;
1053 API d_es_level_max;
1054 API d_granularity_att;
1055 API d_coef_smooth; //End address= 0x15D6
1056
1057 #else
1058
1059 #if (L1_ANR == 1)
1060 API d_iir_holes[1];
1061
1062 API d_anr_min_gain;
1063 API d_anr_vad_thr;
1064 API d_anr_gamma_slow;
1065 API d_anr_gamma_fast;
1066 API d_anr_gamma_gain_slow;
1067 API d_anr_gamma_gain_fast;
1068 API d_anr_thr2;
1069 API d_anr_thr4;
1070 API d_anr_thr5;
1071 API d_anr_mean_ratio_thr1;
1072 API d_anr_mean_ratio_thr2;
1073 API d_anr_mean_ratio_thr3;
1074 API d_anr_mean_ratio_thr4;
1075 API d_anr_div_factor_shift;
1076 API d_anr_ns_level;
1077 #else
1078 API d_iir_anr_hole[16];
1079 #endif
1080 #endif
1081
1082
1083 #else
1084 API d_iir_holes_1[97];
1085 #if (L1_AGC_UL == 1)
1086 // AGC uplink
1087 API d_agc_ul_control;
1088 API d_agc_ul_frame_size;
1089 API_SIGNED d_agc_ul_targeted_level;
1090 API_SIGNED d_agc_ul_signal_up;
1091 API_SIGNED d_agc_ul_signal_down;
1092 API_SIGNED d_agc_ul_max_scale;
1093 API_SIGNED d_agc_ul_gain_smooth_alpha;
1094 API_SIGNED d_agc_ul_gain_smooth_alpha_fast;
1095 API_SIGNED d_agc_ul_gain_smooth_beta;
1096 API_SIGNED d_agc_ul_gain_smooth_beta_fast;
1097 API_SIGNED d_agc_ul_gain_intp_flag;
1098 #else
1099 API d_agc_ul_holes[11];
1100 #endif
1101
1102 #if (L1_AGC_DL == 1)
1103 // AGC downlink
1104 API d_agc_dl_control;
1105 API d_agc_dl_frame_size;
1106 API_SIGNED d_agc_dl_targeted_level;
1107 API_SIGNED d_agc_dl_signal_up;
1108 API_SIGNED d_agc_dl_signal_down;
1109 API_SIGNED d_agc_dl_max_scale;
1110 API_SIGNED d_agc_dl_gain_smooth_alpha;
1111 API_SIGNED d_agc_dl_gain_smooth_alpha_fast;
1112 API_SIGNED d_agc_dl_gain_smooth_beta;
1113 API_SIGNED d_agc_dl_gain_smooth_beta_fast;
1114 API_SIGNED d_agc_dl_gain_intp_flag;
1115 #else
1116 API d_agc_dl_holes[11];
1117 #endif
1118
1119 #if(L1_AEC == 2)
1120 API d_aec_mode;
1121 API d_mu;
1122 API d_cont_filter;
1123 API d_scale_input_ul;
1124 API d_scale_input_dl;
1125 API d_div_dmax;
1126 API d_div_swap_good;
1127 API d_div_swap_bad;
1128 API d_block_init;
1129 API d_fact_vad;
1130 API d_fact_asd_fil;
1131 API d_fact_asd_mut;
1132 API d_thrs_abs;
1133 API d_es_level_max;
1134 API d_granularity_att;
1135 API d_coef_smooth;
1136
1137 #else
1138
1139 #if(L1_ANR == 1)
1140 API d_iir_holes[1];
1141
1142 API d_anr_min_gain;
1143 API d_anr_vad_thr;
1144 API d_anr_gamma_slow;
1145 API d_anr_gamma_fast;
1146 API d_anr_gamma_gain_slow;
1147 API d_anr_gamma_gain_fast;
1148 API d_anr_thr2;
1149 API d_anr_thr4;
1150 API d_anr_thr5;
1151 API d_anr_mean_ratio_thr1;
1152 API d_anr_mean_ratio_thr2;
1153 API d_anr_mean_ratio_thr3;
1154 API d_anr_mean_ratio_thr4;
1155 API d_anr_div_factor_shift;
1156 API d_anr_ns_level;
1157 #else
1158 API d_iir_anr_hole[16];
1159 #endif
1160
1161 #endif
1162
1163 #endif //L1_IIR
1164
1165 #if (L1_LIMITER == 1)
1166 API a_lim_mul_low[2]; // 0x15D7
1167 API a_lim_mul_high[2];
1168 API d_lim_gain_fall_q15; // 0x15DB
1169 API d_lim_gain_rise_q15; //
1170 API d_lim_block_size; // 0x15DD
1171 API d_lim_nb_fir_coefs; //
1172 API d_lim_slope_update_period;
1173 API a_lim_filter_coefs[16]; // 0x15E0
1174 #else
1175 API d_lim_hole[25];
1176 #endif
1177 #if (L1_ES == 1)
1178 API d_es_mode; // 0x15F0
1179 API d_es_gain_dl;
1180 API d_es_gain_ul_1;
1181 API d_es_gain_ul_2;
1182 API d_es_tcl_fe_ls_thr;
1183 API d_es_tcl_dt_ls_thr;
1184 API d_es_tcl_fe_ns_thr;
1185 API d_es_tcl_dt_ns_thr;
1186 API d_es_tcl_ne_thr;
1187 API d_es_ref_ls_pwr;
1188 API d_es_switching_time;
1189 API d_es_switching_time_dt;
1190 API d_es_hang_time;
1191 API a_es_gain_lin_dl_vect[4];
1192 API a_es_gain_lin_ul_vect[4];
1193 #else
1194 API d_es_hole[21];
1195 #endif
1196
1197 #if (L1_ANR == 2)
1198 API_SIGNED d_anr_ns_level; // start address= 0x1605
1199 API_SIGNED d_anr_control;
1200 API_SIGNED d_anr_tone_ene_th;
1201 API_SIGNED d_anr_tone_cnt_th;
1202 #else
1203 API d_anr_hole_2[4];
1204 #endif //End address= 0x1608
1205
1206 #if (L1_WCM == 1) // start address= 0x1609
1207 API_SIGNED d_wcm_mode;
1208 API_SIGNED d_wcm_frame_size;
1209 API_SIGNED d_wcm_num_sub_frames;
1210 API_SIGNED d_wcm_ratio;
1211 API_SIGNED d_wcm_threshold;
1212 API_SIGNED a_wcm_gain[16];
1213 #else
1214 API_SIGNED d_wcm_holes[21];
1215 #endif
1216
1217 API a_tty_holes1[24]; // 0x161E
1218
1219 #if (L1_GTT == 1)
1220 API d_tty_status; // 0x1636
1221 API d_ctm_detect_shift; // 0x1637
1222 API d_tty2x_baudot_mod_amplitude_scale;
1223 API d_tty2x_samples_per_baudot_stop_bit;
1224 API d_tty_reset_buffer_ul;
1225 API d_tty_loop_ctrl;
1226 API p_tty_loop_buffer;
1227 API d_ctm_mod_norm;
1228 API d_tty2x_offset_normalization;
1229 API d_tty2x_threshold_startbit;
1230 API d_tty2x_threshold_diff; // 0x1640
1231 API d_tty2x_duration_startdetect; // 0x1641
1232 API d_tty2x_startbit_thres; // 0x1642
1233 API d_tty2x_hole_init_mute_frame_count; // 0x1643
1234 API d_tty2x_dl_bypass_mute; // 0x1644
1235 #else
1236 API a_tty_holes2[15];
1237 #endif
1238
1239 API a_tty_fifo_holes[131]; // 0x1645
1240
1241 // New DRP Releated Variables Start Here
1242 API a_drp_holes_1[6]; // 0x16C8
1243 API d_drp_apcctrl2_hole; // 0x16CE - APC control register 2
1244 API d_drp_afc_add_api; // 0x16CF - Address where AFC value needs to be written
1245 API a_drp_holes_2[12]; // 0x16D0
1246 API a_drp_ramp[20]; // 0x16DC - Power ramp up/down in DRP registers format
1247 API a_drp_holes_3[271]; // 0x16F0
1248
1249
1250 API d_dsp_write_debug_pointer; // 0x17FF
1251
1252 #if (MELODY_E2)
1253 API a_dsp_trace[SC_AUDIO_MELODY_E2_MAX_SIZE_OF_DSP_TRACE]; // 0x1800
1254 API a_melody_e2_instrument_wave[SC_AUDIO_MELODY_E2_MAX_SIZE_OF_INSTRUMENT];
1255 API a_dsp_after_trace_holes[7440-(SC_AUDIO_MELODY_E2_MAX_SIZE_OF_DSP_TRACE + SC_AUDIO_MELODY_E2_MAX_SIZE_OF_INSTRUMENT)];
1256 #else
1257 API a_dsp_trace[C_DEBUG_BUFFER_SIZE]; // 0x1800;
1258 API a_dsp_after_trace_holes[7440-C_DEBUG_BUFFER_SIZE]; // 0x1800 + C_DEBUG_BUFFER_SIZE
1259 // In this region MP3 variables are placed + holes
1260 #endif
1261
1262 #if (L1_PCM_EXTRACTION)
1263 API a_pcm_api_download[160];
1264 API a_pcm_api_upload[160];
1265 API a_pcm_holes1[8];
1266 API d_pcm_api_upload;
1267 API d_pcm_api_download;
1268 API d_pcm_api_error;
1269 API a_pcm_holes2[1181];
1270 #else
1271 API a_pcm_holes[1512];
1272 #endif
1273
1274 #if REL99
1275 #if FF_EMR
1276 API a_mean_cv_bep_page_0[3];//0x3AF8
1277 API a_mean_cv_bep_padding_0;
1278 API a_mean_cv_bep_page_1[3];
1279 API a_mean_cv_bep_padding_1;
1280 API a_emr_holes2[378];
1281 #endif
1282 #else // L1_R99
1283 API a_emr_holes1[386];
1284 #endif // L1_R99
1285
1286 // SAIC related
1287 API a_swh_hole[16]; // 0x3C7A
1288 API d_swh_flag_ndb; // 0x3C8A - SWH (whitening) on / off flag
1289 API d_swh_Clipping_Threshold_ndb; // 0x3C8B - Threshold to which the DSP shall clip the SNR
1290
1291 // A5/3 related
1292 API a_a5_kc[8]; // 0x3C8C
1293
1294 // DCO related
1295 API d_dco_samples_per_symbol; // 0x3C94 No. of samples per symbol (IQ pair)
1296 API d_dco_fcw; // 0x3C95 Control word to tell the IF Frequency
1297 API a_dco_hole[15]; // 0x3C96 Hole related to DCO
1298
1299 // A5/3 related
1300 // API a_a5_holes[801]; // 0x3CA5
1301
1302 #if ((FF_REPEATED_SACCH == 1) || (FF_REPEATED_DL_FACCH == 1 ))
1303 API a_a5_holes[286]; // 0x3CA5
1304 API d_chase_comb_ctrl; // 0x3DC3 Control for the chase combine feature
1305 API a_a5_holes1[514]; // 0x3DC4
1306 #else
1307 // A5/3 related
1308 API a_a5_holes[801]; // 0x3CA5
1309 #endif /* (FF_REPEATED_SACCH == 1) */
1310
1311
1312
1313 }
1314 T_NDB_MCU_DSP;
1315
1316 #elif (DSP == 34) || (DSP == 35) || (DSP == 36) || (DSP == 37) // NDB GSM
473 typedef struct 1317 typedef struct
474 { 1318 {
475 // MISC Tasks 1319 // MISC Tasks
476 API d_dsp_page; 1320 API d_dsp_page;
477 1321
517 API p_debug_amr; 1361 API p_debug_amr;
518 #else 1362 #else
519 API d_hole_debug_amr; 1363 API d_hole_debug_amr;
520 #endif 1364 #endif
521 1365
522 #if (CHIPSET == 12) 1366 #if ((CHIPSET == 12) || (CHIPSET == 4) || ((CHIPSET == 10) && (OP_WCP == 1))) // Calypso+ or Perseus2
523 #if (DSP == 35) || (DSP == 36) 1367 #if (DSP == 35) || (DSP == 36) || (DSP == 37)
524 API d_hole2_ndb[1]; 1368 API d_hole2_ndb[1];
525 API d_mcsi_select; 1369 API d_mcsi_select;
526 #else 1370 #else
527 API d_hole2_ndb[2]; 1371 API d_hole2_ndb[2];
528 #endif 1372 #endif
550 API d_bulioff; 1394 API d_bulioff;
551 API d_bulqoff; 1395 API d_bulqoff;
552 API d_dai_onoff; 1396 API d_dai_onoff;
553 API d_auxdac; 1397 API d_auxdac;
554 1398
555 #if (ANALOG == 1) 1399 #if (ANLG_FAM == 1)
556 API d_vbctrl; 1400 API d_vbctrl;
557 #elif ((ANALOG == 2) || (ANALOG == 3)) 1401 #elif ((ANLG_FAM == 2) || (ANLG_FAM == 3))
558 API d_vbctrl1; 1402 API d_vbctrl1;
559 #endif 1403 #endif
560 1404
561 API d_bbctrl; 1405 API d_bbctrl;
562 1406
563 // Monitoring tasks control (MCU <- DSP) 1407 // Monitoring tasks control (MCU <- DSP)
564 // FB task 1408 // FB task
565 API d_fb_det; // FB detection result. (1 for FOUND). 1409 API d_fb_det; // FB detection result. (1 for FOUND).
658 1502
659 // GEA module defined in l1p_deft.h (the following section is overlaid with GPRS NDB memory) 1503 // GEA module defined in l1p_deft.h (the following section is overlaid with GPRS NDB memory)
660 API d_gea_mode_ovly; 1504 API d_gea_mode_ovly;
661 API a_gea_kc_ovly[4]; 1505 API a_gea_kc_ovly[4];
662 1506
663 #if (ANALOG == 3) 1507 #if (ANLG_FAM == 3)
664 // SYREN specific registers 1508 // SYREN specific registers
665 API d_vbpop; 1509 API d_vbpop;
666 API d_vau_delay_init; 1510 API d_vau_delay_init;
667 API d_vaud_cfg; 1511 API d_vaud_cfg;
668 API d_vauo_onoff; 1512 API d_vauo_onoff;
669 API d_vaus_vol; 1513 API d_vaus_vol;
670 API d_vaud_pll; 1514 API d_vaud_pll;
671 API d_hole3_ndb[1]; 1515 API d_togbr2;
672 #elif ((ANALOG == 1) || (ANALOG == 2)) 1516 #elif ((ANLG_FAM == 1) || (ANLG_FAM == 2))
673
674 API d_hole3_ndb[7]; 1517 API d_hole3_ndb[7];
675
676 #endif 1518 #endif
677 1519
678 // word used for the init of USF threshold 1520 // word used for the init of USF threshold
679 API d_thr_usf_detect; 1521 API d_thr_usf_detect;
680 1522
724 API a_data_buf_dl[37]; 1566 API a_data_buf_dl[37];
725 1567
726 // GTT API mapping for DSP code 34 (for test only) 1568 // GTT API mapping for DSP code 34 (for test only)
727 #if (L1_GTT == 1) 1569 #if (L1_GTT == 1)
728 API d_tty_status; 1570 API d_tty_status;
729 API d_tty_detect_thres;
730 API d_ctm_detect_shift; 1571 API d_ctm_detect_shift;
731 API d_tty_fa_thres; 1572 API d_tty2x_baudot_mod_amplitude_scale;
732 API d_tty_mod_norm; 1573 API d_tty2x_samples_per_baudot_stop_bit;
733 API d_tty_reset_buffer_ul; 1574 API d_tty_reset_buffer_ul;
734 API d_tty_loop_ctrl; 1575 API d_tty_loop_ctrl;
735 API p_tty_loop_buffer; 1576 API p_tty_loop_buffer;
1577 API d_ctm_mod_norm;
1578 API d_tty2x_offset_normalization;
1579 API d_tty2x_threshold_startbit;
1580 API d_tty2x_threshold_diff;
1581 API d_tty2x_duration_startdetect;
1582 API d_tty2x_startbit_thres;
736 #else 1583 #else
737 API a_tty_holes[8]; 1584 API a_tty_holes[13];
738 #endif 1585 #endif
739 1586
740 API a_sr_holes0[414]; 1587 API a_sr_holes0[409];
1588
741 1589
742 #if (L1_NEW_AEC) 1590 #if (L1_NEW_AEC)
743 // new AEC 1591 // new AEC
744 API d_cont_filter; 1592 API d_cont_filter;
745 API d_granularity_att; 1593 API d_granularity_att;
757 API a_new_aec_holes[12]; 1605 API a_new_aec_holes[12];
758 #endif // L1_NEW_AEC 1606 #endif // L1_NEW_AEC
759 1607
760 // Speech recognition model 1608 // Speech recognition model
761 API a_sr_holes1[145]; 1609 API a_sr_holes1[145];
1610
1611 // Correction of PR G23M/L1_MCU-SPR-15494
1612 #if ((CHIPSET == 12) || (CHIPSET == 4) || (CODE_VERSION == SIMULATION))
762 API d_cport_init; 1613 API d_cport_init;
763 API d_cport_ctrl; 1614 API d_cport_ctrl;
764 API a_cport_cfr[2]; 1615 API a_cport_cfr[2];
765 API d_cport_tcl_tadt; 1616 API d_cport_tcl_tadt;
766 API d_cport_tdat; 1617 API d_cport_tdat;
767 API d_cport_tvs; 1618 API d_cport_tvs;
768 API d_cport_status; 1619 API d_cport_status;
769 API d_cport_reg_value; 1620 API d_cport_reg_value;
770 1621
771 API a_cport_holes[1011]; 1622 API a_cport_holes[1011];
1623 #else // CHIPSET != 12
1624 API a_cport_holes[1020];
1625 #endif // CHIPSET == 12
772 1626
773 API a_model[1041]; 1627 API a_model[1041];
774 1628
775 // EOTD buffer 1629 // EOTD buffer
776 #if (L1_EOTD==1) 1630 #if (L1_EOTD==1)
790 #if (L1_VOICE_MEMO_AMR) 1644 #if (L1_VOICE_MEMO_AMR)
791 API d_amms_ul_voc; 1645 API d_amms_ul_voc;
792 #else 1646 #else
793 API a_voice_memo_amr_holes[1]; 1647 API a_voice_memo_amr_holes[1];
794 #endif 1648 #endif
795 API d_thr_onset_afs; // thresh detection ONSET AFS 1649 API d_thr_onset_afs; // thresh detection ONSET AFS
796 API d_thr_sid_first_afs; // thresh detection SID_FIRST AFS 1650 API d_thr_sid_first_afs; // thresh detection SID_FIRST AFS
797 API d_thr_ratscch_afs; // thresh detection RATSCCH AFS 1651 API d_thr_ratscch_afs; // thresh detection RATSCCH AFS
798 API d_thr_update_afs; // thresh detection SID_UPDATE AFS 1652 API d_thr_update_afs; // thresh detection SID_UPDATE AFS
799 API d_thr_onset_ahs; // thresh detection ONSET AHS 1653 API d_thr_onset_ahs; // thresh detection ONSET AHS
800 API d_thr_sid_ahs; // thresh detection SID frames AHS 1654 API d_thr_sid_ahs; // thresh detection SID frames AHS
801 API d_thr_ratscch_marker;// thresh detection RATSCCH MARKER 1655 API d_thr_ratscch_marker; // thresh detection RATSCCH MARKER
802 API d_thr_sp_dgr; // thresh detection SPEECH DEGRADED/NO_DATA 1656 API d_thr_sp_dgr; // thresh detection SPEECH DEGRADED/NO_DATA
803 API d_thr_soft_bits; 1657 API d_thr_soft_bits;
1658
1659 #if ((CODE_VERSION == SIMULATION) || (DSP != 37))
804 #if (MELODY_E2) 1660 #if (MELODY_E2)
805 API d_melody_e2_osc_stop; 1661 API d_melody_e2_osc_stop;
806 API d_melody_e2_osc_active; 1662 API d_melody_e2_osc_active;
807 API d_melody_e2_semaphore; 1663 API d_melody_e2_semaphore;
808 API a_melody_e2_osc[16][3]; 1664 API a_melody_e2_osc[16][3];
809 API d_melody_e2_globaltimefactor; 1665 API d_melody_e2_globaltimefactor;
810 API a_melody_e2_instrument_ptr[8]; 1666 API a_melody_e2_instrument_ptr[8];
811 API d_melody_e2_deltatime; 1667 API d_melody_e2_deltatime;
812 1668 #else
813 #if (AMR_THRESHOLDS_WORKAROUND) 1669 API d_melody_e2_holes[61];
814 API a_d_macc_thr_afs[8]; 1670 #endif
815 API a_d_macc_thr_ahs[6]; 1671 #else // (DSP == 37)
1672 API a_amrschd_debug[30]; // 0x1500
1673 #if (W_A_AMR_THRESHOLDS)
1674 API a_d_macc_thr_afs[8]; // 0x151E
1675 API a_d_macc_thr_ahs[6]; // 0x1526
1676 #else
1677 API a_d_macc_thr_holes[14]; // 0x151E
1678 #endif
1679 API d_melody_e2_holes[17]; //0x152C - This is not a melody E2 hole; But named like that;
1680 #endif
1681
1682 #if ((CHIPSET == 12) || (CHIPSET == 4) || ((CHIPSET == 10) && (OP_WCP == 1)) || (CODE_VERSION == SIMULATION)) // Calypso+ or Perseus2 or Samson
1683 API d_vol_ul_level;
1684 API d_vol_dl_level;
1685 API d_vol_speed;
1686 API d_sidetone_level;
1687
1688 // Audio control area
1689 API d_es_ctrl;
1690 API d_anr_ul_ctrl;
1691
1692 #if ((DSP == 36) || (DSP == 37))
1693
1694 API d_aqi_ctrl_hole1_1[3];
1695 #if (L1_SAIC != 0)
1696 API d_swh_flag_ndb;
1697 API d_swh_Clipping_Threshold_ndb;
1698 #else
1699 API d_swh_hole[2];
1700 #endif
1701 API d_aqi_ctrl_hole1_2[1];
816 #else 1702 #else
817 API a_melody_e2_holes0[14]; 1703 API d_aqi_ctrl_hole1[6]; // Reserved for future UL modules
818 #endif 1704 #endif
819 1705 API d_iir_dl_ctrl;
820 API a_melody_e2_holes1[693]; 1706 API d_lim_dl_ctrl;
1707 API d_aqi_ctrl_hole2[4]; // Reserved for future DL modules
1708 API d_aqi_status;
1709
1710 #if (L1_IIR == 1)
1711 API d_iir_input_scaling;
1712 API d_iir_fir_scaling;
1713 API d_iir_input_gain_scaling;
1714 API d_iir_output_gain_scaling;
1715 API d_iir_output_gain;
1716 API d_iir_feedback;
1717 API d_iir_nb_iir_blocks;
1718 API d_iir_nb_fir_coefs;
1719 API a_iir_iir_coefs[80];
1720 API a_iir_fir_coefs[32];
1721 #else
1722 API d_iir_hole[120];
1723 #endif
1724
1725 #if (L1_ANR == 1)
1726 API d_anr_min_gain;
1727 API d_anr_vad_thr;
1728 API d_anr_gamma_slow;
1729 API d_anr_gamma_fast;
1730 API d_anr_gamma_gain_slow;
1731 API d_anr_gamma_gain_fast;
1732 API d_anr_thr2;
1733 API d_anr_thr4;
1734 API d_anr_thr5;
1735 API d_anr_mean_ratio_thr1;
1736 API d_anr_mean_ratio_thr2;
1737 API d_anr_mean_ratio_thr3;
1738 API d_anr_mean_ratio_thr4;
1739 API d_anr_div_factor_shift;
1740 API d_anr_ns_level;
1741 #else
1742 API d_anr_hole[15];
1743 #endif
1744
1745 #if (L1_LIMITER == 1)
1746 API a_lim_mul_low[2];
1747 API a_lim_mul_high[2];
1748 API d_lim_gain_fall_q15;
1749 API d_lim_gain_rise_q15;
1750 API d_lim_block_size;
1751 API d_lim_nb_fir_coefs;
1752 API d_lim_slope_update_period;
1753 API a_lim_filter_coefs[16];
1754 #else
1755 API d_lim_hole[25];
1756 #endif
1757 #if (L1_ES == 1)
1758 API d_es_mode;
1759 API d_es_gain_dl;
1760 API d_es_gain_ul_1;
1761 API d_es_gain_ul_2;
1762 API d_es_tcl_fe_ls_thr;
1763 API d_es_tcl_dt_ls_thr;
1764 API d_es_tcl_fe_ns_thr;
1765 API d_es_tcl_dt_ns_thr;
1766 API d_es_tcl_ne_thr;
1767 API d_es_ref_ls_pwr;
1768 API d_es_switching_time;
1769 API d_es_switching_time_dt;
1770 API d_es_hang_time;
1771 API a_es_gain_lin_dl_vect[4];
1772 API a_es_gain_lin_ul_vect[4];
1773 #else
1774 API d_es_hole[21];
1775 #endif
1776
1777 #else // CALYPSO+ or PERSEUS2
1778 API a_calplus_holes[200];
1779 #endif
1780
1781 #if (W_A_AMR_THRESHOLDS)
1782 API d_holes[492];
1783 #if (CODE_VERSION == SIMULATION) || (DSP != 37)
1784 API a_d_macc_thr_afs[8]; // In ROM37 this is moved from 0x17F1 to 0x151E
1785 API a_d_macc_thr_ahs[6];
1786 #else
1787 API d_holes_rom37[14]; // In ROM37 this is moved from 0x17F1 to 0x151E
1788 #endif
1789 API d_one_hole[1];
1790 #else
1791 API d_holes[507];
1792 #endif
1793
1794 #if (MELODY_E2)
821 API a_dsp_trace[SC_AUDIO_MELODY_E2_MAX_SIZE_OF_DSP_TRACE]; 1795 API a_dsp_trace[SC_AUDIO_MELODY_E2_MAX_SIZE_OF_DSP_TRACE];
822 API a_melody_e2_instrument_wave[SC_AUDIO_MELODY_E2_MAX_SIZE_OF_INSTRUMENT]; 1796 API a_melody_e2_instrument_wave[SC_AUDIO_MELODY_E2_MAX_SIZE_OF_INSTRUMENT];
823 #else 1797 #endif
824 API d_holes[61];
825 #if (AMR_THRESHOLDS_WORKAROUND)
826 API a_d_macc_thr_afs[8];
827 API a_d_macc_thr_ahs[6];
828 #endif
829 #endif
830
831 } 1798 }
832 T_NDB_MCU_DSP; 1799 T_NDB_MCU_DSP;
833 #elif (DSP == 33) // NDB GSM 1800 #elif (DSP == 33) // NDB GSM
834 typedef struct 1801 typedef struct
835 { 1802 {
894 API d_bulioff; 1861 API d_bulioff;
895 API d_bulqoff; 1862 API d_bulqoff;
896 API d_dai_onoff; 1863 API d_dai_onoff;
897 API d_auxdac; 1864 API d_auxdac;
898 1865
899 #if (ANALOG == 1) 1866 #if (ANLG_FAM == 1)
900 API d_vbctrl; 1867 API d_vbctrl;
901 #elif ((ANALOG == 2) || (ANALOG == 3)) 1868 #elif ((ANLG_FAM == 2) || (ANLG_FAM == 3))
902 API d_vbctrl1; 1869 API d_vbctrl1;
903 #endif 1870 #endif
904 1871
905 API d_bbctrl; 1872 API d_bbctrl;
906 1873
1155 API d_tch_mode; // TCH mode register. 2122 API d_tch_mode; // TCH mode register.
1156 // bit [0..1] -> b_dai_mode. 2123 // bit [0..1] -> b_dai_mode.
1157 // bit [2] -> b_dtx. 2124 // bit [2] -> b_dtx.
1158 2125
1159 // OMEGA...........................(MCU -> DSP). 2126 // OMEGA...........................(MCU -> DSP).
1160 #if ((ANALOG == 1) || (ANALOG == 2)) 2127 #if ((ANLG_FAM == 1) || (ANLG_FAM == 2))
1161 API a_ramp[16]; 2128 API a_ramp[16];
1162 #if (MELODY_E1) 2129 #if (MELODY_E1)
1163 API d_melo_osc_used; 2130 API d_melo_osc_used;
1164 API d_melo_osc_active; 2131 API d_melo_osc_active;
1165 API a_melo_note0[4]; 2132 API a_melo_note0[4];
1213 API d_bulioff; 2180 API d_bulioff;
1214 API d_bulqoff; 2181 API d_bulqoff;
1215 API d_dai_onoff; 2182 API d_dai_onoff;
1216 API d_auxdac; 2183 API d_auxdac;
1217 2184
1218 #if (ANALOG == 1) 2185 #if (ANLG_FAM == 1)
1219 API d_vbctrl; 2186 API d_vbctrl;
1220 #elif (ANALOG == 2) 2187 #elif (ANLG_FAM == 2)
1221 API d_vbctrl1; 2188 API d_vbctrl1;
1222 #endif 2189 #endif
1223 2190
1224 API d_bbctrl; 2191 API d_bbctrl;
1225 #else 2192 #else
1226 #error DSPCODE not supported with given ANALOG 2193 #error DSPCODE not supported with given ANALOG
1227 #endif //(ANALOG)1, 2 2194 #endif //(ANALOG)1, 2
1228 //...................................(MCU -> DSP). 2195 //...................................(MCU -> DSP).
1229 API a_sch26[5]; // Header + SB information, array of 5 words. 2196 API a_sch26[5]; // Header + SB information, array of 5 words.
1230 2197
1305 API d_audio_status; 2272 API d_audio_status;
1306 2273
1307 #if (L1_EOTD ==1) 2274 #if (L1_EOTD ==1)
1308 API a_eotd_hole[369]; 2275 API a_eotd_hole[369];
1309 2276
1310 API d_eotd_first; 2277 API d_eotd_first;
1311 API d_eotd_max; 2278 API d_eotd_max;
1312 API d_eotd_nrj_high; 2279 API d_eotd_nrj_high;
1313 API d_eotd_nrj_low; 2280 API d_eotd_nrj_low;
1314 API a_eotd_crosscor[18]; 2281 API a_eotd_crosscor[18];
1315 #endif 2282 #endif
1316 #endif 2283 #endif
1317 } 2284 }
1318 T_NDB_MCU_DSP; 2285 T_NDB_MCU_DSP;
1319 2286
1320 2287
1385 // bit [0..1] -> b_dai_mode. 2352 // bit [0..1] -> b_dai_mode.
1386 // bit [2] -> b_dtx. 2353 // bit [2] -> b_dtx.
1387 2354
1388 // OMEGA...........................(MCU -> DSP). 2355 // OMEGA...........................(MCU -> DSP).
1389 2356
1390 #if ((ANALOG == 1) || (ANALOG == 2)) 2357 #if ((ANLG_FAM == 1) || (ANLG_FAM == 2))
1391 API a_ramp[16]; 2358 API a_ramp[16];
1392 #if (MELODY_E1) 2359 #if (MELODY_E1)
1393 API d_melo_osc_used; 2360 API d_melo_osc_used;
1394 API d_melo_osc_active; 2361 API d_melo_osc_active;
1395 API a_melo_note0[4]; 2362 API a_melo_note0[4];
1441 API d_apcoff; 2408 API d_apcoff;
1442 API d_bulioff; 2409 API d_bulioff;
1443 API d_bulqoff; 2410 API d_bulqoff;
1444 API d_dai_onoff; 2411 API d_dai_onoff;
1445 API d_auxdac; 2412 API d_auxdac;
1446 #if (ANALOG == 1) 2413 #if (ANLG_FAM == 1)
1447 API d_vbctrl; 2414 API d_vbctrl;
1448 #elif (ANALOG == 2) 2415 #elif (ANLG_FAM == 2)
1449 API d_vbctrl1; 2416 API d_vbctrl1;
1450 #endif 2417 #endif
1451 API d_bbctrl; 2418 API d_bbctrl;
1452 2419
1453 #else 2420 #else
1454 #error DSPCODE not supported with given ANALOG 2421 #error DSPCODE not supported with given ANALOG
1455 #endif //(ANALOG)1, 2 2422 #endif //(ANALOG)1, 2
1456 //...................................(MCU -> DSP). 2423 //...................................(MCU -> DSP).
1457 API a_sch26[5]; // Header + SB information, array of 5 words. 2424 API a_sch26[5]; // Header + SB information, array of 5 words.
1458 2425
1459 // TONES.............................(MCU -> DSP) 2426 // TONES.............................(MCU -> DSP)
1537 #endif 2504 #endif
1538 } 2505 }
1539 T_NDB_MCU_DSP; 2506 T_NDB_MCU_DSP;
1540 #endif 2507 #endif
1541 2508
1542 #if (DSP == 34) || (DSP == 35) || (DSP == 36) 2509 #if (DSP == 34) || (DSP == 35) || (DSP == 36) || (DSP == 37) || (DSP == 38) || (DSP == 39)
1543 typedef struct 2510 typedef struct
1544 { 2511 {
1545 API_SIGNED d_transfer_rate; 2512 API_SIGNED d_transfer_rate; // 0x0C31
1546 2513
1547 // Common GSM/GPRS 2514 // Common GSM/GPRS
1548 // These words specified the latencies to applies on some peripherics 2515 // These words specified the latencies to applies on some peripherics
1549 API_SIGNED d_lat_mcu_bridge; 2516 API_SIGNED d_lat_mcu_bridge;
1550 API_SIGNED d_lat_mcu_hom2sam; 2517 API_SIGNED d_lat_mcu_hom2sam;
1556 2523
1557 API_SIGNED d_misc_config; 2524 API_SIGNED d_misc_config;
1558 2525
1559 API_SIGNED d_cn_sw_workaround; 2526 API_SIGNED d_cn_sw_workaround;
1560 2527
1561 API_SIGNED d_hole2_param[4]; 2528 API_SIGNED d_hole2_param[4]; // 0x0C39
1562 2529
1563 //...................................Frequency Burst. 2530 //...................................Frequency Burst.
1564 API_SIGNED d_fb_margin_beg; 2531 API_SIGNED d_fb_margin_beg; // 0x0C3D
1565 API_SIGNED d_fb_margin_end; 2532 API_SIGNED d_fb_margin_end;
1566 API_SIGNED d_nsubb_idle; 2533 API_SIGNED d_nsubb_idle;
1567 API_SIGNED d_nsubb_dedic; 2534 API_SIGNED d_nsubb_dedic;
1568 API_SIGNED d_fb_thr_det_iacq; 2535 API_SIGNED d_fb_thr_det_iacq;
1569 API_SIGNED d_fb_thr_det_track; 2536 API_SIGNED d_fb_thr_det_track;
1588 API_SIGNED d_v42b_switch_min; 2555 API_SIGNED d_v42b_switch_min;
1589 API_SIGNED d_v42b_switch_max; 2556 API_SIGNED d_v42b_switch_max;
1590 API_SIGNED d_v42b_reset_delay; 2557 API_SIGNED d_v42b_reset_delay;
1591 2558
1592 //...................................TCH Half Speech. 2559 //...................................TCH Half Speech.
1593 API_SIGNED d_ldT_hr; 2560 API_SIGNED d_ldT_hr; // 0x0C53
1594 API_SIGNED d_maccthresh_hr; 2561 API_SIGNED d_maccthresh_hr;
1595 API_SIGNED d_maccthresh1_hr; 2562 API_SIGNED d_maccthresh1_hr;
1596 API_SIGNED d_gu_hr; 2563 API_SIGNED d_gu_hr;
1597 API_SIGNED d_go_hr; 2564 API_SIGNED d_go_hr;
1598 API_SIGNED d_b_hr; 2565 API_SIGNED d_b_hr;
1608 API_SIGNED c_b_efr; 2575 API_SIGNED c_b_efr;
1609 API_SIGNED c_sm_efr; 2576 API_SIGNED c_sm_efr;
1610 API_SIGNED c_attmax_efr; 2577 API_SIGNED c_attmax_efr;
1611 2578
1612 //...................................CHED 2579 //...................................CHED
1613 API_SIGNED d_sd_min_thr_tchfs; 2580 API_SIGNED d_sd_min_thr_tchfs; // 0x0C63
1614 API_SIGNED d_ma_min_thr_tchfs; 2581 API_SIGNED d_ma_min_thr_tchfs;
1615 API_SIGNED d_md_max_thr_tchfs; 2582 API_SIGNED d_md_max_thr_tchfs;
1616 API_SIGNED d_md1_max_thr_tchfs; 2583 API_SIGNED d_md1_max_thr_tchfs;
1617 2584
1618 API_SIGNED d_sd_min_thr_tchhs; 2585 API_SIGNED d_sd_min_thr_tchhs;
1635 API_SIGNED d_y_max; 2602 API_SIGNED d_y_max;
1636 API_SIGNED d_wed_diff_threshold; 2603 API_SIGNED d_wed_diff_threshold;
1637 API_SIGNED d_mabfi_min_thr_tchhs; 2604 API_SIGNED d_mabfi_min_thr_tchhs;
1638 2605
1639 // FACCH module 2606 // FACCH module
1640 API_SIGNED d_facch_thr; 2607 API_SIGNED d_facch_thr; // 0x0C79
1641 2608
1642 // IDS module 2609 // IDS module
1643 API_SIGNED d_max_ovsp_ul; 2610 API_SIGNED d_max_ovsp_ul; //
1644 API_SIGNED d_sync_thres; 2611 API_SIGNED d_sync_thres;
1645 API_SIGNED d_idle_thres; 2612 API_SIGNED d_idle_thres;
1646 API_SIGNED d_m1_thres; 2613 API_SIGNED d_m1_thres;
1647 API_SIGNED d_max_ovsp_dl; 2614 API_SIGNED d_max_ovsp_dl;
1648 API_SIGNED d_gsm_bgd_mgt; 2615 API_SIGNED d_gsm_bgd_mgt;
1649 2616
1650 // FIR coefficients 2617 // FIR coefficients
1651 API a_fir_holes[4]; 2618 API a_fir_holes[4];
1652 API a_fir31_uplink[31]; 2619 API a_fir31_uplink[31]; // 0x0C84
1653 API a_fir31_downlink[31]; 2620 API a_fir31_downlink[31];
1654 } 2621 }
1655 T_PARAM_MCU_DSP; 2622 T_PARAM_MCU_DSP;
1656 #elif (DSP == 33) 2623 #elif (DSP == 33)
1657 typedef struct 2624 typedef struct
1913 UWORD8 t3; // FN modulo 51. 2880 UWORD8 t3; // FN modulo 51.
1914 UWORD8 tc; // Scell: TC 2881 UWORD8 tc; // Scell: TC
1915 UWORD8 fn_in_report; // FN modulo 102 or 104. 2882 UWORD8 fn_in_report; // FN modulo 102 or 104.
1916 UWORD16 fn_mod42432; // FN modulo 42432. 2883 UWORD16 fn_mod42432; // FN modulo 42432.
1917 UWORD8 fn_mod13; // FN modulo 13. 2884 UWORD8 fn_mod13; // FN modulo 13.
2885 UWORD8 fn_mod13_mod4; // FN modulo 13 modulo 4.
1918 #if L1_GPRS 2886 #if L1_GPRS
1919 UWORD8 fn_mod52; // FN modulo 52. 2887 UWORD8 fn_mod52; // FN modulo 52.
1920 UWORD8 fn_mod104; // FN modulo 104. 2888 UWORD8 fn_mod104; // FN modulo 104.
1921 UWORD8 fn_mod13_mod4; // FN modulo 13 modulo 4.
1922 UWORD32 block_id; // Block ID 2889 UWORD32 block_id; // Block ID
1923 #endif 2890 #endif
1924 } 2891 }
1925 T_TIME_INFO; 2892 T_TIME_INFO;
1926 2893
2016 UWORD32 qual_nbr_meas_sub; // Subset: nbr meas. of rxqual. 2983 UWORD32 qual_nbr_meas_sub; // Subset: nbr meas. of rxqual.
2017 UWORD8 dtx_used; // Set when DTX as been used in current reporting period. 2984 UWORD8 dtx_used; // Set when DTX as been used in current reporting period.
2018 } 2985 }
2019 T_SMEAS; 2986 T_SMEAS;
2020 2987
2988
2989 #if REL99
2990 #if FF_EMR
2991 typedef struct
2992 {
2993
2994 WORD16 rxlev_val_acc; // Accumulated value of RXLEV_VAL
2995 UWORD8 rxlev_val_nbr_meas; // Number of RXLEV_VAL value accumulated on block bases
2996 UWORD8 nbr_rcvd_blocks; // Number of correctly decoded blocks excluding SACCH FACCH etc Refer 05.08
2997 UWORD32 mean_bep_block_acc; // Accumulated value of MEAN_BEP
2998 UWORD16 cv_bep_block_acc; // Accumulated value of CV_BEP
2999 UWORD8 mean_bep_block_num; // Number of blocks over MEAN_BEP is accumulated.
3000 UWORD8 cv_bep_block_num; // Number of blocks over CV_BEP is accumulated.
3001 }
3002 T_SMEAS_EMR;
3003
3004 typedef struct
3005 {
3006 UWORD8 task; // task id (TCHTH, TCHTF, DDL, ADL, TCHA)
3007 UWORD8 burst_id; // burst ID only used for SDCCH.
3008 UWORD8 channel_mode; // channel mode in case of half / full rate
3009 UWORD8 subchannel; // subchannel number
3010 UWORD32 normalised_fn_mod13_mod4; // used to find block boundary in case of half rate
3011 BOOL facch_present; // necessary for processing to indicate reception of Facch
3012 BOOL facch_fire1; // necessary for processing to indicate good/bad reception of Facch
3013 UWORD8 a_ntd; // used for Data : FCS OK/FCS KO
3014 UWORD8 a_dd_0_blud; // check data/speech block presence on sub 0
3015 UWORD8 a_dd_0_bfi; // check data/speech block integrity on sub 0
3016 UWORD8 a_dd_1_blud; // check data/speech block presence on sub 1
3017 UWORD8 a_dd_1_bfi; // check data/speech block integrity on sub 1
3018 UWORD8 b_m1; // used for Data 14.4 M1 = 1 for second half block RLP
3019 UWORD8 b_f48blk_dl; // used for Data 4.8 : = 1 for second half block RLP
3020 UWORD8 b_ce; // used for Data : transparent / not transparent
3021 UWORD8 a_cd_fire1; // check SDCCH bloch integrity
3022 UWORD8 sid_present_sub0; // check sid present on sub 0
3023 UWORD8 sid_present_sub1; // check sid present on sub 1
3024 #if (AMR ==1)
3025 BOOL amr_facch_present; // necessary for AMR processing to indicate reception of Facch
3026 BOOL amr_facch_fire1; // necessary for AMR processing to indicate good/bad reception of Facch
3027 UWORD8 b_ratscch_blud; // check ratscch present
3028 UWORD8 ratscch_rxtype; // check type of AMR block
3029 UWORD8 amr_rx_type_sub0; // AMR type on sub 0
3030 UWORD8 amr_rx_type_sub1; // AMR type on sub 1
3031 #endif
3032 }
3033 T_EMR_PARAMS;
3034 #endif //FF_EMR
3035 #endif //REL99
3036
2021 /***************************************************************************************/ 3037 /***************************************************************************************/
2022 /* */ 3038 /* */
2023 /***************************************************************************************/ 3039 /***************************************************************************************/
2024 typedef struct 3040 typedef struct
2025 { 3041 {
2100 3116
2101 UWORD8 ms_ctrl; 3117 UWORD8 ms_ctrl;
2102 UWORD8 ms_ctrl_d; 3118 UWORD8 ms_ctrl_d;
2103 UWORD8 ms_ctrl_dd; 3119 UWORD8 ms_ctrl_dd;
2104 3120
2105 UWORD8 used_il [2]; 3121 UWORD8 used_il [C_BA_PM_MEAS];
2106 UWORD8 used_il_d [2]; 3122 UWORD8 used_il_d [C_BA_PM_MEAS];
2107 UWORD8 used_il_dd[2]; 3123 UWORD8 used_il_dd[C_BA_PM_MEAS];
2108 3124
2109 UWORD8 used_lna [2]; 3125 UWORD8 used_lna [C_BA_PM_MEAS];
2110 UWORD8 used_lna_d [2]; 3126 UWORD8 used_lna_d [C_BA_PM_MEAS];
2111 UWORD8 used_lna_dd[2]; 3127 UWORD8 used_lna_dd[C_BA_PM_MEAS];
2112 3128
2113 T_MEAS_INFO A[32+1]; // list of 32 neighbors + 1 serving. 3129 T_MEAS_INFO A[32+1]; // list of 32 neighbors + 1 serving.
2114 3130
2115 BOOL new_list_present; 3131 BOOL new_list_present;
2116 T_NEW_BA_LIST new_list; 3132 T_NEW_BA_LIST new_list;
2222 // For handover... 3238 // For handover...
2223 UWORD8 ho_acc; // Handover access (part of HO reference) 3239 UWORD8 ho_acc; // Handover access (part of HO reference)
2224 WORD32 ho_acc_to_send; // Set to 4 for SYNC HO and to -1 for ASYNC HO. 3240 WORD32 ho_acc_to_send; // Set to 4 for SYNC HO and to -1 for ASYNC HO.
2225 UWORD8 t3124; // Timer used in Async. Ho. 3241 UWORD8 t3124; // Timer used in Async. Ho.
2226 3242
3243 #if ((REL99 == 1) && (FF_BHO == 1))
3244 // For blind handover...
3245 BOOL report_time_diff;
3246 BOOL nci;
3247 UWORD8 real_time_difference;
3248 WORD32 HO_SignalCode;
3249 #endif
3250
2227 // For DPAGC algorithms purpose 3251 // For DPAGC algorithms purpose
2228 UWORD8 G_all[DPAGC_FIFO_LEN]; 3252 UWORD8 G_all[DPAGC_FIFO_LEN];
2229 UWORD8 G_DTX[DPAGC_FIFO_LEN]; 3253 UWORD8 G_DTX[DPAGC_FIFO_LEN];
2230 #if (AMR == 1) 3254 #if (AMR == 1)
2231 UWORD8 G_amr[DPAGC_AMR_FIFO_LEN]; 3255 UWORD8 G_amr[DPAGC_AMR_FIFO_LEN];
2276 BOOL pwrc; // Flag used to reject serving pwr meas. on beacon. 3300 BOOL pwrc; // Flag used to reject serving pwr meas. on beacon.
2277 3301
2278 BOOL handover_fail_mode; // Flag used to indicate that the L1 wait for an handover fail request 3302 BOOL handover_fail_mode; // Flag used to indicate that the L1 wait for an handover fail request
2279 #if (AMR == 1) 3303 #if (AMR == 1)
2280 BOOL sync_amr; // Flag used to tell to the DSP that a new AMR paramters is ready in the NDB. 3304 BOOL sync_amr; // Flag used to tell to the DSP that a new AMR paramters is ready in the NDB.
3305 #endif // (AMR == 1)
3306
3307 #if ((REL99 == 1) && (FF_BHO == 1))
3308 // For blind handover...
3309 BOOL handover_type;
3310 BOOL long_rem_handover_type;
3311 UWORD16 bcch_carrier_of_nbr_cell;
3312 UWORD32 fn_offset;
3313 UWORD32 time_alignment;
2281 #endif 3314 #endif
2282 } 3315 }
2283 T_DEDIC_PARAM; 3316 T_DEDIC_PARAM;
2284 3317
2285 /*************************************************************/ 3318 /*************************************************************/
2301 3334
2302 // flags and variables for wake-up .... 3335 // flags and variables for wake-up ....
2303 UWORD8 Os_ticks_required; // TRUE : Os ticks to recover 3336 UWORD8 Os_ticks_required; // TRUE : Os ticks to recover
2304 UWORD8 frame_adjust; // TRUE : adjust 1 frame 3337 UWORD8 frame_adjust; // TRUE : adjust 1 frame
2305 UWORD32 sleep_duration; // sleep duration computed at wakeup 3338 UWORD32 sleep_duration; // sleep duration computed at wakeup
3339 UWORD32 wakeup_time; // frame number of last wakeup
3340 UWORD16 wake_up_int_id; // Interrupt waking up the target
3341 UWORD8 wakeup_type; // Type of the interrupt
3342 UWORD8 why_big_sleep; // Type of the big sleep
2306 3343
2307 // flag for sleep .... 3344 // flag for sleep ....
2308 UWORD8 sleep_performed; // NONE,SMALL,BIG,DEEP,ALL 3345 UWORD8 sleep_performed; // NONE,SMALL,BIG,DEEP,ALL
2309 3346
2310 // status of clocks modules .... 3347 // status of clocks modules ....
2319 UWORD32 c_delta_hf_update; // UPDATE state 3356 UWORD32 c_delta_hf_update; // UPDATE state
2320 3357
2321 // trace gauging parameters 3358 // trace gauging parameters
2322 UWORD8 state; // state of the gauging 3359 UWORD8 state; // state of the gauging
2323 UWORD32 lf; // Number of the 32KHz 3360 UWORD32 lf; // Number of the 32KHz
2324 UWORD32 hf; // HF: nb_hf( Number of the 13MHz *6 ) 3361 UWORD32 hf; // HF: nb_hf( Number of the 13MHz *6 )
2325 UWORD32 root; // root & frac: the ratio of the HF & LF in each state. 3362 UWORD32 root; // root & frac: the ratio of the HF & LF in each state.
2326 UWORD32 frac; 3363 UWORD32 frac;
2327 3364
3365 // flag for AFC bypass mode
3366 UWORD8 afc_bypass_mode; // ENABLED/DISABLED
2328 } 3367 }
2329 T_POWER_MNGT; 3368 T_POWER_MNGT;
2330 3369
2331 /*************************************************************/ 3370 /*************************************************************/
2332 /* code version structure... */ 3371 /* code version structure... */
2352 UWORD32 frame_count; 3391 UWORD32 frame_count;
2353 } 3392 }
2354 T_L1S_RECOVER; 3393 T_L1S_RECOVER;
2355 #endif 3394 #endif
2356 3395
3396 #if (TOA_ALGO == 2)
3397 typedef struct
3398 {
3399 WORD16 toa_shift; // TOA, value used to update the TOA
3400 UWORD8 toa_snr_mask; // TOA, mask counter to reject TOA/SNR results.
3401 BOOL toa_update_flag; // FLAG used to indicate when to the TOA module when to update TOA.
3402 // NOTE: Flag set to TRUE in l1s_synch() and reset to FALSE in l1ctl_toa()
3403 UWORD16 toa_frames_counter; // TOA Frames counter - Number of the TDMA frames (or bursts) which are used for TOA
3404 // updation OR number of times l1ctl_toa() function is invoked
3405 // Reset every TOA_PERIOD_LEN[l1_mode] frames
3406 UWORD16 toa_accumul_counter; // Number of TDMA frames (or bursts) which are actually used for TOA tracking
3407 // <= toa_frames_counter, as only if SNR>0.46875 TOA estimated by DSP is used to
3408 // update the tracking algorithm
3409 WORD16 toa_accumul_value; // TOA_tracking_value accumulated over 'toa_accumul_counter' frames
3410 // Based on this value the shift to be applied is decided
3411 UWORD32 toa_update_fn; // a counter which is in direct relation to l1s.actual_time.fn
3412 // and used for TOA tracking in ALL MODES every 433 MF's (approx. 2 seconds)
3413
3414 }T_TOA_ALGO;
3415 #endif
3416
3417
2357 /***************************************************************************************/ 3418 /***************************************************************************************/
2358 /* L1S global variable structure... */ 3419 /* L1S global variable structure... */
2359 /***************************************************************************************/ 3420 /***************************************************************************************/
2360 typedef struct 3421 typedef struct
2361 { 3422 {
2383 3444
2384 // Control parameters... 3445 // Control parameters...
2385 //----------------------------------------- 3446 //-----------------------------------------
2386 UWORD32 afc_frame_count; // AFC, Frame count between 2 calls to afc control function. 3447 UWORD32 afc_frame_count; // AFC, Frame count between 2 calls to afc control function.
2387 WORD16 afc; // AFC, Common Frequency controle. 3448 WORD16 afc; // AFC, Common Frequency controle.
3449 #if (TOA_ALGO == 2)
3450 T_TOA_ALGO toa_var;
3451 #else
2388 WORD16 toa_shift; // TOA, value used to update the TOA 3452 WORD16 toa_shift; // TOA, value used to update the TOA
2389 UWORD8 toa_snr_mask; // TOA, mask counter to reject TOA/SNR results. 3453 UWORD8 toa_snr_mask; // TOA, mask counter to reject TOA/SNR results.
2390 3454
2391 UWORD16 toa_period_count; // TOA frame period used in PACKET TRANSFER MODE 3455 UWORD16 toa_period_count; // TOA frame period used in PACKET TRANSFER MODE
2392 BOOL toa_update; // TOA, is set at the end of the update period, toa update occurs on next valid frame 3456 BOOL toa_update; // TOA, is set at the end of the update period, toa update occurs on next valid frame
3457 #endif
2393 3458
2394 // Flag registers for RF task controle... 3459 // Flag registers for RF task controle...
2395 //----------------------------------------- 3460 //-----------------------------------------
2396 // Made these control registers short's as more than 8-bits required. 3461 // Made these control registers short's as more than 8-bits required.
2397 UWORD16 tpu_ctrl_reg; // (x,x,x,x,SYNC,RX,TX,MS) RX/TX/MS/SYNC bit ON whenever an 3462 UWORD16 tpu_ctrl_reg; // (x,x,x,x,SYNC,RX,TX,MS) RX/TX/MS/SYNC bit ON whenever an
2432 #if L2_L3_SIMUL 3497 #if L2_L3_SIMUL
2433 // GTT test 3498 // GTT test
2434 T_GTT_TEST_L1S gtt_test; 3499 T_GTT_TEST_L1S gtt_test;
2435 #endif 3500 #endif
2436 #endif 3501 #endif
2437 3502 #if (L1_DYN_DSP_DWNLD == 1)
2438 #if (L1_DYN_DSP_DWNLD == 1) 3503 UWORD8 dyn_dwnld_state; // state for L1S DYN DWNLD manager
2439 UWORD8 dyn_dwnld_state; // state for L1S DYN DWNLD manager 3504 #endif // L1_DYN_DSP_DWNLD
2440 #endif
2441 #if (AUDIO_TASK == 1) 3505 #if (AUDIO_TASK == 1)
2442 // Audio task. 3506 // Audio task.
2443 //----------------------------------------- 3507 //-----------------------------------------
2444 BOOL l1_audio_it_com; // Flag to enable the ITCOM. 3508 BOOL l1_audio_it_com; // Flag to enable the ITCOM.
2445 UWORD8 audio_state[NBR_AUDIO_MANAGER]; // state for L1S audio manager. 3509 UWORD8 audio_state[NBR_AUDIO_MANAGER]; // state for L1S audio manager.
2448 T_L1S_MELODY_TASK melody1; 3512 T_L1S_MELODY_TASK melody1;
2449 #endif 3513 #endif
2450 #if (VOICE_MEMO) 3514 #if (VOICE_MEMO)
2451 T_L1S_VM_TASK voicememo; 3515 T_L1S_VM_TASK voicememo;
2452 #endif 3516 #endif
3517 #if (L1_PCM_EXTRACTION)
3518 T_L1S_PCM_TASK pcm;
3519 #endif
2453 #if (L1_VOICE_MEMO_AMR) 3520 #if (L1_VOICE_MEMO_AMR)
2454 T_L1S_VM_AMR_TASK voicememo_amr; 3521 T_L1S_VM_AMR_TASK voicememo_amr;
2455 #endif 3522 #endif
2456 #if (SPEECH_RECO) 3523 #if (SPEECH_RECO)
2457 T_L1S_SR_TASK speechreco; 3524 T_L1S_SR_TASK speechreco;
2458 #endif 3525 #endif
2459 #if (AEC) 3526 #if (L1_AEC == 1)
2460 T_L1S_AEC_TASK aec; 3527 T_L1S_AEC_TASK aec;
2461 #endif 3528 #endif
2462 #if (MELODY_E2) 3529 #if (MELODY_E2)
2463 T_L1S_MELODY_E2_COMMON_VAR melody_e2; 3530 T_L1S_MELODY_E2_COMMON_VAR melody_e2;
2464 T_L1S_MELODY_E2_TASK melody0_e2; 3531 T_L1S_MELODY_E2_TASK melody0_e2;
2465 T_L1S_MELODY_E2_TASK melody1_e2; 3532 T_L1S_MELODY_E2_TASK melody1_e2;
2466 #endif 3533 #endif
3534 #if (L1_EXT_AUDIO_MGT == 1)
3535 T_L1S_EXT_AUDIO_MGT_VAR ext_audio_mgt;
3536 #endif
3537 #if (L1_WCM == 1)
3538 T_WCM_ACTION wcm_action;
3539 #endif
3540 #if (L1_AGC_UL == 1)
3541 T_AGC_ACTION agc_ul_action;
3542 #endif
3543 #if (L1_AGC_DL == 1)
3544 T_AGC_ACTION agc_dl_action;
3545 #endif
3546 #if (L1_ANR == 2)
3547 T_ANR_ACTION anr_ul_action;
3548 #endif
3549 #if (L1_IIR == 2)
3550 T_IIR_ACTION iir_dl_action;
3551 #endif
3552 #if (L1_DRC == 1)
3553 T_DRC_ACTION drc_dl_action;
3554 #endif
3555
2467 #endif 3556 #endif
2468 3557
2469 UWORD8 last_used_txpwr; 3558 UWORD8 last_used_txpwr;
2470 3559
2471 #if L1_GPRS 3560 #if L1_GPRS
2472 BOOL ctrl_synch_before; //control of synchro for CCCH reading en TN-2 3561 BOOL ctrl_synch_before; //control of synchro for CCCH reading en TN-2
3562 UWORD32 next_gauging_scheduled_for_PNP; // gauging for Packet Idle
2473 #endif 3563 #endif
2474 3564
2475 #if L1_RECOVERY 3565 #if L1_RECOVERY
2476 T_L1S_RECOVER recovery; 3566 T_L1S_RECOVER recovery;
2477 #endif 3567 #endif
2478 BOOL spurious_fb_detected; 3568 BOOL spurious_fb_detected;
2479 3569
2480 // Handling DTX mode 3570 // Handling DTX mode
2481 BOOL dtx_ul_on; 3571 BOOL dtx_ul_on; //earlier name was- dtx_on
2482 WORD8 facch_bursts; 3572 WORD8 facch_bursts;
2483
2484 // DTX mode in AMR 3573 // DTX mode in AMR
2485 BOOL dtx_amr_dl_on; // set to TRUE when the AMR is in DTX mode in downlink 3574 BOOL dtx_amr_dl_on; // set to TRUE when the AMR is in DTX mode in downlink
2486 3575
3576 //+++++++++++++++++
3577 // GSM IDLE IN RAM
3578 //+++++++++++++++++
3579
3580 #if (GSM_IDLE_RAM != 0)
3581 T_L1S_GSM_IDLE_INTRAM gsm_idle_ram_ctl;
3582
3583 #if (GSM_IDLE_RAM == 1)
3584 // Used to avoid allocation of ext mem data while in L1S_meas_manager (allocate signal long time before sending)
3585 T_RXLEV_MEAS A[8];
3586 #endif
3587 #endif
3588
3589 //+++++++++++++++++
3590 // Triton Audio ON/OFF Changes
3591 //+++++++++++++++++
3592 #if (L1_AUDIO_MCU_ONOFF == 1)
3593 T_L1S_AUDIO_ONOFF_MANAGER audio_on_off_ctl;
3594 #endif
3595
3596 #if (ANLG_FAM == 11)
3597 UWORD8 abb_write_done;
3598 #endif
3599 UWORD8 tcr_prog_done;
3600
3601 #if (L1_RF_KBD_FIX == 1)
3602 UWORD16 total_kbd_on_time;
3603 UWORD8 correction_ratio; //KPD_CORRECTION_RATIO correction_ratio;//omaps00090550
3604 #endif
3605 #if (L1_GPRS == 1)
3606 BOOL algo_change_synchro_active;
3607 #endif /* FF_L1_FAST_DECODING */
3608 #if (FF_REPEATED_SACCH == 1)
3609 // Repeated SACCH mode
3610 T_REPEAT_SACCH repeated_sacch;
3611 #endif /* FF_REPEATED_SACCH */
3612 #if (FF_REPEATED_DL_FACCH == 1)
3613 // Repeated FACCH mode
3614 T_REPEAT_FACCH repeated_facch;
3615 #endif /* FF_REPEATED_DL_FACCH == 1 */
3616 /* 0 indicates success, non zero value indicates failure */
3617 UWORD8 boot_result;
3618 //Nina modify to save power, not forbid deep sleep, only force gauging in next paging
3619 UWORD8 force_gauging_next_paging_due_to_CCHR;
3620
2487 } 3621 }
2488 T_L1S_GLOBAL; 3622 T_L1S_GLOBAL;
2489 3623
3624 #if (AUDIO_TASK == 1)
3625 #if (L1_VOCODER_IF_CHANGE == 1)
3626 typedef struct
3627 {
3628 BOOL enabled; // TRUE if enabled, FALSE if disabled
3629 BOOL automatic_disable; // TRUE if vocoders are automatically disabld via a MPHC_STOP_DEDICATED_REQ, FALSE otherwise.
3630 } T_L1A_VOCODER_CFG_GLOBAL;
3631 #endif // AUDIO_TASK == 1
3632 typedef struct
3633 {
3634 UWORD8 outen1;
3635 UWORD8 outen2;
3636 UWORD8 outen3;
3637 UWORD8 classD;
3638 UWORD8 command_requested; /* updated in L1a task context*/
3639 UWORD8 command_commited; /* updated in I2c ISR callback context*/
3640 } T_OUTEN_CFG_TASK;
3641
3642 #endif //L1_VOCODER_IF_CHANGE == 1
2490 /***************************************************************************************/ 3643 /***************************************************************************************/
2491 /* L1A global variable structure... */ 3644 /* L1A global variable structure... */
2492 /***************************************************************************************/ 3645 /***************************************************************************************/
2493 typedef struct 3646 typedef struct
2494 { 3647 {
2502 3655
2503 // Flag for forward/delete message management. 3656 // Flag for forward/delete message management.
2504 //--------------------------------------------- 3657 //---------------------------------------------
2505 UWORD8 l1_msg_forwarded; 3658 UWORD8 l1_msg_forwarded;
2506 3659
2507 #if (L1_DYN_DSP_DWNLD == 1) 3660 #if (L1_DYN_DSP_DWNLD == 1)
2508 // Dynamic donload global variables 3661 // Dynamic donload global variables
2509 T_L1A_DYN_DWNLD_GLOBAL dyn_dwnld; 3662 T_L1A_DYN_DWNLD_GLOBAL dyn_dwnld;
2510 #endif 3663 #endif
3664
3665 // New Vocoder IF global L1A variable: L1A checks if the vocoder has already been enabled/disabled
3666 // in order to robust to possible multiples enabling/disabling messages coming from PS
3667
3668 #if (L1_VOCODER_IF_CHANGE == 1)
3669 T_L1A_VOCODER_CFG_GLOBAL vocoder_state;
3670 #endif // L1_VOCODER_IF_CHANGE == 1
2511 3671
2512 // signal code indicating the reason of L1C_DEDIC_DONE 3672 // signal code indicating the reason of L1C_DEDIC_DONE
2513 UWORD32 confirm_SignalCode; 3673 UWORD32 confirm_SignalCode;
2514 3674
2515 // Trace the best frequencies reported in MPHC_RXLEV_IND 3675 #if (L1_MP3 == 1)
2516 #if (L1_MPHC_RXLEV_IND_REPORT_SORT==1) 3676 T_L1_MP3_L1A mp3_task;
2517 UWORD16 tab_index[MAX_MEAS_RXLEV_IND_TRACE]; 3677 //ADDED FOR AAC
2518 UWORD16 max_report; //max number of fq reported, can be < MAX_MEAS_RXLEV_IND_TRACE if list is smaller 3678 #endif
2519 #endif 3679
3680 #if (L1_AAC == 1)
3681 T_L1_AAC_L1A aac_task;
3682 #endif
3683 #if(L1_IIR == 2)
3684 xSignalHeaderRec *iir_req_msg_ptr;
3685 #endif
3686
3687 #if(L1_DRC == 1)
3688 xSignalHeaderRec *drc_req_msg_ptr;
3689 #endif
3690
3691 #if(L1_WCM == 1)
3692 xSignalHeaderRec *wcm_req_msg_ptr;
3693 #endif
3694
3695 #if(L1_CHECK_COMPATIBLE == 1)
3696 BOOL vcr_wait;
3697 BOOL stop_req;
3698 BOOL vcr_msg_param;
3699 BOOL vch_auto_disable;
3700 #endif
3701
2520 } 3702 }
2521 T_L1A_GLOBAL; 3703 T_L1A_GLOBAL;
2522 3704
2523 /***************************************************************************************/ 3705 /***************************************************************************************/
2524 /* L1A -> L1S communication structure... */ 3706 /* L1A -> L1S communication structure... */
2542 T_BCCHS nbcchs; 3724 T_BCCHS nbcchs;
2543 T_BCCHS ebcchs; 3725 T_BCCHS ebcchs;
2544 3726
2545 // Synchro information. 3727 // Synchro information.
2546 //--------------------------------------- 3728 //---------------------------------------
3729 #if L1_FF_WA_OMAPS00099442
3730 BOOL change_tpu_offset_flag;
3731 #endif
3732
2547 WORD8 tn_difference; // Timeslot difference for next synchro. 3733 WORD8 tn_difference; // Timeslot difference for next synchro.
2548 UWORD8 dl_tn; // Current timeslot for downlink stuffs. 3734 UWORD8 dl_tn; // Current timeslot for downlink stuffs.
2549 #if L1_GPRS 3735 #if L1_GPRS
2550 UWORD8 dsp_scheduler_mode; // DSP Scheduler mode (GPRS or GSM). 3736 UWORD8 dsp_scheduler_mode; // DSP Scheduler mode (GPRS or GSM).
2551 #endif 3737 #endif
2586 UWORD8 adc_traffic_period; 3772 UWORD8 adc_traffic_period;
2587 UWORD8 adc_cpt; 3773 UWORD8 adc_cpt;
2588 3774
2589 // TXPWR management. 3775 // TXPWR management.
2590 //------------------- 3776 //-------------------
3777 #if (L1_FF_MULTIBAND == 0)
2591 UWORD8 powerclass_band1; // Power class for the MS, given in ACCESS LINK mode (GSM Band). 3778 UWORD8 powerclass_band1; // Power class for the MS, given in ACCESS LINK mode (GSM Band).
2592 UWORD8 powerclass_band2; // Power class for the MS, given in ACCESS LINK mode (DCS Band). 3779 UWORD8 powerclass_band2; // Power class for the MS, given in ACCESS LINK mode (DCS Band).
3780 #else
3781 UWORD8 powerclass[RF_NB_SUPPORTED_BANDS];
3782 #endif
3783
2593 3784
2594 // Dedicated parameters. 3785 // Dedicated parameters.
2595 //---------------------- 3786 //----------------------
2596 T_DEDIC_PARAM dedic_set; // Dedicated channel parameters. 3787 T_DEDIC_PARAM dedic_set; // Dedicated channel parameters.
2597 3788
2605 // BA list / FULL list. 3796 // BA list / FULL list.
2606 //--------------------- 3797 //---------------------
2607 T_BA_LIST ba_list; 3798 T_BA_LIST ba_list;
2608 T_FULL_LIST full_list; 3799 T_FULL_LIST full_list;
2609 T_FULL_LIST_MEAS *full_list_ptr; 3800 T_FULL_LIST_MEAS *full_list_ptr;
3801
3802 #if ((REL99 == 1) && (FF_BHO == 1))
3803 // For blind handover...
3804 T_BHO_PARAM nsync_fbsb;
3805 #endif
2610 3806
2611 //+++++++++++++++++++ 3807 //+++++++++++++++++++
2612 // L1S scheduler... 3808 // L1S scheduler...
2613 //+++++++++++++++++++ 3809 //+++++++++++++++++++
2614 3810
2655 T_MELODY_TASK melody1_task; 3851 T_MELODY_TASK melody1_task;
2656 #endif 3852 #endif
2657 #if (VOICE_MEMO) 3853 #if (VOICE_MEMO)
2658 T_VM_TASK voicememo_task; 3854 T_VM_TASK voicememo_task;
2659 #endif 3855 #endif
3856 #if (L1_PCM_EXTRACTION)
3857 T_PCM_TASK pcm_task;
3858 #endif
2660 #if (L1_VOICE_MEMO_AMR) 3859 #if (L1_VOICE_MEMO_AMR)
2661 T_VM_AMR_TASK voicememo_amr_task; 3860 T_VM_AMR_TASK voicememo_amr_task;
2662 #endif 3861 #endif
2663 #if (SPEECH_RECO) 3862 #if (SPEECH_RECO)
2664 T_SR_TASK speechreco_task; 3863 T_SR_TASK speechreco_task;
2665 #endif 3864 #endif
2666 #if (AEC) 3865 #if (L1_AEC == 1)
3866 T_AEC_TASK aec_task;
3867 #endif
3868 #if (L1_AEC == 2)
2667 T_AEC_TASK aec_task; 3869 T_AEC_TASK aec_task;
2668 #endif 3870 #endif
2669 #if (FIR) 3871 #if (FIR)
2670 T_FIR_TASK fir_task; 3872 T_FIR_TASK fir_task;
2671 #endif 3873 #endif
2677 T_MELODY_E2_TASK melody1_e2_task; 3879 T_MELODY_E2_TASK melody1_e2_task;
2678 #endif 3880 #endif
2679 #if (L1_CPORT == 1) 3881 #if (L1_CPORT == 1)
2680 T_CPORT_TASK cport_task; 3882 T_CPORT_TASK cport_task;
2681 #endif 3883 #endif
2682 #endif 3884
3885 #if (L1_EXTERNAL_AUDIO_VOICE_ONOFF == 1 || L1_EXT_MCU_AUDIO_VOICE_ONOFF == 1)
3886 T_AUDIO_ONOFF_TASK audio_onoff_task;
3887 #endif
3888
3889 BOOL audio_forced_by_l1s; /* This value is used to indicate if the L1S is forcing the audio_on_off feature in the DSP CQ21718 */
3890
3891 #if (L1_STEREOPATH == 1)
3892 T_STEREOPATH_DRV_TASK stereopath_drv_task;
3893 #endif
3894
3895 #if (L1_MP3 == 1)
3896 T_MP3_TASK mp3_task;
3897 #endif
3898
3899 #if (L1_MIDI == 1)
3900 T_MIDI_TASK midi_task;
3901 #endif
3902 //ADDED FOR AAC
3903 #if (L1_AAC == 1)
3904 T_AAC_TASK aac_task;
3905 #endif
3906
3907 #if (L1_ANR == 1)
3908 T_ANR_TASK anr_task;
3909 #endif
3910
3911 #if (L1_ANR == 2)
3912 T_AQI_ANR_TASK anr_task;
3913 #endif
3914
3915 #if (L1_IIR == 1)
3916 T_IIR_TASK iir_task;
3917 #endif
3918
3919 #if (L1_AGC_UL == 1)
3920 T_AQI_AGC_UL_TASK agc_ul_task;
3921 #endif
3922
3923 #if (L1_AGC_DL == 1)
3924 T_AQI_AGC_DL_TASK agc_dl_task;
3925 #endif
3926
3927 #if (L1_IIR == 2)
3928 T_AQI_IIR_TASK iir_task;
3929 #endif
3930
3931 #if (L1_DRC == 1)
3932 T_AQI_DRC_TASK drc_task;
3933 #endif
3934
3935 #if (L1_LIMITER == 1)
3936 T_LIMITER_TASK limiter_task;
3937 #endif
3938
3939 #if (L1_ES == 1)
3940 T_ES_TASK es_task;
3941 #endif
3942
3943 #if (L1_WCM == 1)
3944 T_AQI_WCM_TASK wcm_task;
3945 #endif
3946
3947 //++++++++++++++++++++++++++++++++++++
3948 // Fake L1S sm for audio IT generation
3949 //++++++++++++++++++++++++++++++++++++
3950 T_AUDIOIT_TASK audioIt_task;
3951 #endif
3952
2683 3953
2684 //+++++++++++++ 3954 //+++++++++++++
2685 // GTT task 3955 // GTT task
2686 //+++++++++++++ 3956 //+++++++++++++
2687 3957
2688 #if (L1_GTT == 1) 3958 #if (L1_GTT == 1)
2689 T_GTT_TASK gtt_task; 3959 T_GTT_TASK gtt_task;
2690 #endif 3960 #endif
2691 3961
2692 // Dynamic DSP download task 3962 // Dynamic DSP download task
2693 #if (L1_DYN_DSP_DWNLD == 1) 3963 #if (L1_DYN_DSP_DWNLD == 1)
2694 T_DYN_DWNLD_TASK_COMMAND dyn_dwnld_task; 3964 T_DYN_DWNLD_TASK_COMMAND dyn_dwnld_task;
2695 #endif 3965 #endif
3966 T_OUTEN_CFG_TASK outen_cfg_task;
3967
3968 #if REL99
3969 #if FF_EMR
3970 T_SMEAS_EMR Smeas_dedic_emr;
3971 #endif
3972 #endif
3973
3974 #if (FF_L1_FAST_DECODING == 1)
3975 UWORD8 last_fast_decoding;
3976 #endif /* if (FF_L1_FAST_DECODING == 1) */
2696 3977
2697 } 3978 }
2698 T_L1A_L1S_COM; 3979 T_L1A_L1S_COM;
2699 3980
2700 /***************************************************************************************/ 3981 /***************************************************************************************/
2706 UWORD8 dsp_r_page; // Active page for ARM "reading" from DSP {0,1}. 3987 UWORD8 dsp_r_page; // Active page for ARM "reading" from DSP {0,1}.
2707 UWORD8 dsp_r_page_used; // Used in "l1_synch" to know if the read page must be chged. 3988 UWORD8 dsp_r_page_used; // Used in "l1_synch" to know if the read page must be chged.
2708 3989
2709 T_DB_DSP_TO_MCU *dsp_db_r_ptr; // MCU<->DSP comm. read page (Double Buffered comm. memory). 3990 T_DB_DSP_TO_MCU *dsp_db_r_ptr; // MCU<->DSP comm. read page (Double Buffered comm. memory).
2710 T_DB_MCU_TO_DSP *dsp_db_w_ptr; // MCU<->DSP comm. write page (Double Buffered comm. memory). 3991 T_DB_MCU_TO_DSP *dsp_db_w_ptr; // MCU<->DSP comm. write page (Double Buffered comm. memory).
3992 #if (DSP ==38) || (DSP == 39)
3993 T_DB_COMMON_MCU_TO_DSP *dsp_db_common_w_ptr; // MCU<->DSP comm. common write page (Double Buffered comm. memory).
3994 #endif
2711 T_NDB_MCU_DSP *dsp_ndb_ptr; // MCU<->DSP comm. read/write (Non Double Buffered comm. memory). 3995 T_NDB_MCU_DSP *dsp_ndb_ptr; // MCU<->DSP comm. read/write (Non Double Buffered comm. memory).
2712 3996
2713 T_PARAM_MCU_DSP *dsp_param_ptr; // MCU<->DSP comm. read/write (Param comm. memory). 3997 T_PARAM_MCU_DSP *dsp_param_ptr; // MCU<->DSP comm. read/write (Param comm. memory).
2714 3998
2715 #if (DSP_DEBUG_TRACE_ENABLE == 1) 3999 #if (DSP_DEBUG_TRACE_ENABLE == 1)
2716 T_DB2_DSP_TO_MCU *dsp_db2_current_r_ptr; 4000 T_DB2_DSP_TO_MCU *dsp_db2_current_r_ptr;
2717 T_DB2_DSP_TO_MCU *dsp_db2_other_r_ptr; 4001 T_DB2_DSP_TO_MCU *dsp_db2_other_r_ptr;
2718 #endif 4002 #endif
4003
4004 /* DSP CPU load measurement */
4005 T_DB_MCU_TO_DSP_CPU_LOAD *dsp_cpu_load_db_w_ptr;
2719 } 4006 }
2720 T_L1S_DSP_COM; 4007 T_L1S_DSP_COM;
2721 4008
2722 /***************************************************************************************/ 4009 /***************************************************************************************/
2723 /* L1A -> TPU communication structure... */ 4010 /* L1A -> TPU communication structure... */
2737 T_L1S_TPU_COM; 4024 T_L1S_TPU_COM;
2738 4025
2739 /***************************************************************************************/ 4026 /***************************************************************************************/
2740 /* L1 configuration structure */ 4027 /* L1 configuration structure */
2741 /***************************************************************************************/ 4028 /***************************************************************************************/
4029 #if (L1_FF_MULTIBAND == 0)
2742 4030
2743 typedef struct 4031 typedef struct
2744 { 4032 {
2745 UWORD8 id; //standard identifier 4033 UWORD8 id; //standard identifier
2746 4034
2772 UWORD16 lna_switch_thr_high_band1; 4060 UWORD16 lna_switch_thr_high_band1;
2773 UWORD16 lna_switch_thr_high_band2; 4061 UWORD16 lna_switch_thr_high_band2;
2774 } 4062 }
2775 T_L1_STD_CNFG; 4063 T_L1_STD_CNFG;
2776 4064
4065 #endif // #if (L1_FF_MULTIBAND == 0)
4066
4067 #if (L1_FF_MULTIBAND == 1)
4068
4069 #if 0
4070 typedef struct
4071 {
4072 UWORD16 nbmax_carrier;
4073 UWORD16 first_radio_freq;
4074 UWORD16 first_tpu_radio_freq;
4075 UWORD16 first_operative_radio_freq;
4076 UWORD8 physical_band_id;
4077 }
4078 T_MULTIBAND_CONVERSION_DATA;
4079
4080 typedef struct
4081 {
4082 UWORD16 lna_switch_thr_high;
4083 UWORD16 lna_switch_thr_low;
4084 UWORD16 lna_att;
4085 UWORD16 g_magic;
4086 UWORD8 swap_iq;
4087 UWORD16 cal_freq1;
4088 UWORD8 tx_turning_point;
4089 UWORD8 max_txpwr;
4090 UWORD8 gsm_band_identifier;
4091 }
4092 T_MULTIBAND_RF_DATA;
4093 #endif // if 0
4094 typedef struct
4095 {
4096 UWORD8 radio_band;
4097 UWORD8 power_class;
4098 UWORD8 _align0;
4099 UWORD8 _align1;
4100 }
4101 T_L1_MULTIBAND_POWER_CLASS;
4102
4103
4104 #endif /*if (L1_FF_MULTIBAND == 1)*/
4105
4106
2777 //RF dependent parameter definitions 4107 //RF dependent parameter definitions
2778 typedef struct 4108 typedef struct
2779 { 4109 {
2780 UWORD16 rx_synth_setup_time; 4110 UWORD16 rx_synth_setup_time;
2781 UWORD8 rx_synth_load_split; 4111 UWORD8 rx_synth_load_split;
2809 UWORD16 il_min; 4139 UWORD16 il_min;
2810 4140
2811 UWORD16 fixed_txpwr; 4141 UWORD16 fixed_txpwr;
2812 WORD16 eeprom_afc; 4142 WORD16 eeprom_afc;
2813 WORD8 setup_afc_and_rf; 4143 WORD8 setup_afc_and_rf;
4144 WORD8 rf_wakeup_tpu_scenario_duration; // Duration (in TDMA frames) of TPU scenario for RF wakeup
2814 4145
2815 UWORD32 psi_sta_inv; 4146 UWORD32 psi_sta_inv;
2816 UWORD32 psi_st; 4147 UWORD32 psi_st;
2817 UWORD32 psi_st_32; 4148 UWORD32 psi_st_32;
2818 UWORD32 psi_st_inv; 4149 UWORD32 psi_st_inv;
2832 4163
2833 #if DCO_ALGO 4164 #if DCO_ALGO
2834 BOOL dco_enabled; 4165 BOOL dco_enabled;
2835 #endif 4166 #endif
2836 4167
2837 #if (ANALOG == 1) 4168 #if (ANLG_FAM == 1)
2838 UWORD16 debug1; 4169 UWORD16 debug1;
2839 UWORD16 afcctladd; 4170 UWORD16 afcctladd;
2840 UWORD16 vbuctrl; 4171 UWORD16 vbuctrl;
2841 UWORD16 vbdctrl; 4172 UWORD16 vbdctrl;
2842 UWORD16 bbctrl; 4173 UWORD16 bbctrl;
2846 UWORD16 dai_onoff; 4177 UWORD16 dai_onoff;
2847 UWORD16 auxdac; 4178 UWORD16 auxdac;
2848 UWORD16 vbctrl; 4179 UWORD16 vbctrl;
2849 UWORD16 apcdel1; 4180 UWORD16 apcdel1;
2850 #endif 4181 #endif
2851 #if (ANALOG == 2) 4182 #if (ANLG_FAM == 2)
2852 UWORD16 debug1; 4183 UWORD16 debug1;
2853 UWORD16 afcctladd; 4184 UWORD16 afcctladd;
2854 UWORD16 vbuctrl; 4185 UWORD16 vbuctrl;
2855 UWORD16 vbdctrl; 4186 UWORD16 vbdctrl;
2856 UWORD16 bbctrl; 4187 UWORD16 bbctrl;
2863 UWORD16 vbctrl1; 4194 UWORD16 vbctrl1;
2864 UWORD16 vbctrl2; 4195 UWORD16 vbctrl2;
2865 UWORD16 apcdel1; 4196 UWORD16 apcdel1;
2866 UWORD16 apcdel2; 4197 UWORD16 apcdel2;
2867 #endif 4198 #endif
2868 #if (ANALOG == 3) 4199 #if (ANLG_FAM == 3)
2869 UWORD16 debug1; 4200 UWORD16 debug1;
2870 UWORD16 afcctladd; 4201 UWORD16 afcctladd;
2871 UWORD16 vbuctrl; 4202 UWORD16 vbuctrl;
2872 UWORD16 vbdctrl; 4203 UWORD16 vbdctrl;
2873 UWORD16 bbctrl; 4204 UWORD16 bbctrl;
2886 UWORD16 vaud_cfg; 4217 UWORD16 vaud_cfg;
2887 UWORD16 vauo_onoff; 4218 UWORD16 vauo_onoff;
2888 UWORD16 vaus_vol; 4219 UWORD16 vaus_vol;
2889 UWORD16 vaud_pll; 4220 UWORD16 vaud_pll;
2890 #endif 4221 #endif
2891 4222 #if (ANLG_FAM == 11)
4223 UWORD8 vulgain;
4224 UWORD8 vdlgain;
4225 UWORD8 sidetone;
4226 UWORD8 ctrl1;
4227 UWORD8 ctrl2;
4228 UWORD8 ctrl3;
4229 UWORD8 ctrl4;
4230 UWORD8 ctrl5;
4231 UWORD8 ctrl6;
4232 UWORD8 popauto;
4233 UWORD8 outen1;
4234 UWORD8 outen2;
4235 UWORD8 outen3;
4236 UWORD8 aulga;
4237 UWORD8 aurga;
4238 #endif
4239 #if (RF_FAM == 61)
4240 UWORD16 apcdel1;
4241 UWORD16 apcdel2;
4242 UWORD16 apcctrl2;
4243 #endif
2892 #if L1_GPRS 4244 #if L1_GPRS
2893 UWORD16 toa_pm_thres; // PM threshold for TOA algorithm feeding in packet transfer mode 4245 UWORD16 toa_pm_thres; // PM threshold for TOA algorithm feeding in packet transfer mode
2894 #endif 4246 #endif
2895 } 4247 }
2896 T_L1_PARAMS; 4248 T_L1_PARAMS;
2897 4249
2898 typedef struct 4250 typedef struct
2899 { 4251 {
2900 T_L1_STD_CNFG std; //standard: GSM,GSM_E,GSM850,DCS,PCS,DUAL,DUALEXT 4252 #if (L1_FF_MULTIBAND == 0)
2901 UWORD8 pwr_mngt; //power management active 4253 T_L1_STD_CNFG std; //standard: GSM,GSM_E,GSM850,DCS,PCS,DUAL,DUALEXT
2902 UWORD8 tx_pwr_code; 4254 #endif // L1_FF_MULTIBAND == 0
2903 UWORD16 dwnld; 4255
2904 T_L1_PARAMS params; 4256 UWORD8 pwr_mngt; //power management active
2905 double dpll; //dpll factor 4257 UWORD8 tx_pwr_code;
2906 4258 #if IDS
2907 #if TESTMODE 4259 UWORD8 ids_enable;
2908 //Define the TestMode flag and TestMode parameters 4260 #endif
2909 UWORD8 TestMode; 4261 UWORD16 dwnld;
2910 4262 T_L1_PARAMS params;
2911 UWORD8 agc_enable; 4263 double dpll; //dpll factor
2912 UWORD8 afc_enable; 4264
2913 UWORD8 adc_enable; 4265 #if TESTMODE
2914 4266 //Define the TestMode flag and TestMode parameters
2915 T_TM_PARAMS tmode; //TestMode parameters structure 4267 UWORD8 TestMode;
2916 #endif 4268
2917 4269 UWORD8 agc_enable;
4270 UWORD8 afc_enable;
4271 UWORD8 adc_enable;
4272 #if (FF_REPEATED_SACCH == 1)
4273 UWORD8 repeat_sacch_enable;
4274 #endif /* FF_REPEATED_SACCH == 1 */
4275 #if (FF_REPEATED_DL_FACCH == 1)
4276 UWORD8 repeat_facch_dl_enable;
4277 #endif /* (FF_REPEATED_DL_FACCH == 1)*/
4278
4279 T_TM_PARAMS tmode; //TestMode parameters structure
4280 #endif
4281
4282 T_FACCH_TEST_PARAMS facch_test;
2918 } 4283 }
2919 T_L1_CONFIG; 4284 T_L1_CONFIG;
4285 // SAPI identifier : 0 (Signalling), 3 (Short Messages Services)
4286 #if FF_REPEATED_SACCH
4287 typedef enum
4288 {
4289 SAPI_0 = 0,
4290 SAPI_3 = 3
4291 } T_L1_SAPI_ID;
4292 #endif /* FF_REPEATED_SACCH */
2920 4293
2921 /***************************************************************************************/ 4294 /***************************************************************************************/
2922 /* API HISR -> L1A communication structure... Defined in case dynamic download is defined */ 4295 /* API HISR -> L1A communication structure... */
2923 /***************************************************************************************/ 4296 /***************************************************************************************/
2924 /***************************************************************************************/ 4297 #if ( (L1_MP3 == 1) || (L1_MIDI == 1) || (L1_AAC == 1) || (L1_DYN_DSP_DWNLD == 1) || (FF_L1_IT_DSP_USF == 1) ) // equivalent to an API_HISR flag
2925 /* Global API HISR -Defined in case dynamic download is defined 4298
2926 /***************************************************************************************/ 4299 #if FF_L1_IT_DSP_USF
2927 4300 typedef struct
2928 4301 {
2929 #if(L1_DYN_DSP_DWNLD==1) 4302 // Fast USF HISR pending
2930 typedef struct 4303 BOOL pending;
2931 { 4304 } T_L1A_USF_HISR_COM;
4305 #endif
4306
4307 #if FF_L1_IT_DSP_DTX
4308 typedef struct
4309 {
4310 // Fast DTX HISR pending
4311 BOOL pending;
4312 // TX activity programmed in TCH block
4313 BOOL tx_active;
4314 // Fast DTX service is available
4315 BOOL fast_dtx_ready;
4316 // Fast DTX service latency timer
4317 UWORD8 fast_dtx_ready_timer;
4318 // Fast DTX state variable
4319 UWORD8 dtx_status;
4320 } T_L1A_DTX_HISR_COM;
4321 #endif
4322
4323 #if (FF_L1_FAST_DECODING == 1)
4324 typedef struct
4325 {
4326 /* Fast Decoding HISR pending */
4327 BOOL pending;
4328 /* Current CRC */
4329 BOOL crc_error;
4330 /* Status (IT awaited?) */
4331 UWORD8 status;
4332 /* Control required during incoming fast API IT? */
4333 BOOL deferred_control_req;
4334 /* Task using fast decoding */
4335 UWORD8 task;
4336 /* Burst ID of the task */
4337 UWORD8 burst_id;
4338 /* Is the decoding of a contiguous block starting? */
4339 BOOL contiguous_decoding;
4340 } T_L1A_FAST_DECODING_HISR_COM;
4341 #endif /* FF_L1_FAST_DECODING */
4342
4343 typedef struct
4344 {
4345 #if (L1_MP3 == 1)
4346 T_L1A_MP3_HISR_COM mp3;
4347 #endif
4348 #if (L1_MIDI == 1)
4349 T_L1A_MIDI_HISR_COM midi;
4350 //ADDED FOR AAC
4351 #endif
4352 #if (L1_AAC == 1)
4353 T_L1A_AAC_HISR_COM aac;
4354 #endif
4355 #if (L1_DYN_DSP_DWNLD == 1)
2932 T_L1A_DYN_DWNLD_HISR_COM dyn_dwnld; 4356 T_L1A_DYN_DWNLD_HISR_COM dyn_dwnld;
4357 #endif // L1_DYN_DSP_DWNLD
4358 #if (FF_L1_IT_DSP_USF == 1)
4359 T_L1A_USF_HISR_COM usf;
4360 #endif
4361 #if (FF_L1_IT_DSP_DTX == 1)
4362 T_L1A_DTX_HISR_COM dtx;
4363 #endif
4364 #if (FF_L1_FAST_DECODING == 1)
4365 T_L1A_FAST_DECODING_HISR_COM fast_decoding;
4366 #endif /* FF_L1_FAST_DECODING */
2933 } T_L1A_API_HISR_COM; 4367 } T_L1A_API_HISR_COM;
2934 4368
2935 typedef struct 4369 #if (L1_MP3 == 1) || (L1_MIDI == 1) || (L1_AAC == 1) || (L1_DYN_DSP_DWNLD == 1)
2936 { 4370 typedef struct
4371 {
4372 #if (L1_MP3 == 1)
4373 T_L1_MP3_API_HISR mp3;
4374 #endif
4375 #if (L1_MIDI == 1)
4376 T_L1_MIDI_API_HISR midi;
4377 #endif
4378 //ADDED FOR AAC
4379 #if (L1_AAC == 1)
4380 T_L1_AAC_API_HISR aac;
4381 #endif
4382 #if (L1_DYN_DSP_DWNLD == 1)
2937 T_L1_DYN_DWNLD_API_HISR dyn_dwnld; 4383 T_L1_DYN_DWNLD_API_HISR dyn_dwnld;
4384 #endif // L1_DYN_DSP_DWNLD
2938 } T_L1_API_HISR; 4385 } T_L1_API_HISR;
2939 #endif 4386 #endif // #if (L1_MP3 == 1) || (L1_MIDI == 1) || || (L1_AAC == 1) || (L1_DYN_DSP_DWNLD == 1)
4387
4388 #endif //(L1_MP3 == 1) || (L1_MIDI == 1) || (L1_DYN_DSP_DWNLD == 1) || (FF_L1_IT_DSP_USF == 1)
4389
4390 typedef struct
4391 {
4392 /* 0 indicates success 1 indicates failure */
4393 UWORD16 boot_result;
4394 UWORD16 drp_maj_ver;
4395 UWORD16 drp_min_ver;
4396 // MCU versions
4397 UWORD16 mcu_tcs_program_release;
4398 UWORD16 mcu_tcs_official;
4399 UWORD16 mcu_tcs_internal;
4400 // DSP versions & checksum
4401 UWORD16 dsp_code_version;
4402 UWORD16 dsp_patch_version;
4403 }T_L1_BOOT_VERSION_CODE;
4404
4405