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