diff gsm-fw/L1/include/l1_defty.h @ 143:afceeeb2cba1

Our nuc-fw is destined to become gsm-fw, so I went ahead and did the big hg mv
author Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
date Tue, 12 Nov 2013 05:35:48 +0000
parents nuc-fw/L1/include/l1_defty.h@1e41550feec5
children ed6071292a5c
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gsm-fw/L1/include/l1_defty.h	Tue Nov 12 05:35:48 2013 +0000
@@ -0,0 +1,2939 @@
+/************* Revision Controle System Header *************
+ *                  GSM Layer 1 software
+ * L1_DEFTY.H
+ *
+ *        Filename l1_defty.h
+ *  Copyright 2003 (C) Texas Instruments  
+ *
+ ************* Revision Controle System Header *************/
+#if(L1_DYN_DSP_DWNLD == 1)
+  #include "l1_dyn_dwl_defty.h"
+#endif
+
+typedef struct
+{
+  UWORD16  modulus;
+  UWORD16  relative_position;
+}
+T_BCCHS_SCHEDULE;
+
+typedef struct
+{
+  UWORD8            schedule_array_size;
+  T_BCCHS_SCHEDULE  schedule_array[10];
+}
+T_BCCHS;
+
+typedef struct
+{
+  BOOL        status;
+  UWORD16     radio_freq;
+  UWORD32     fn_offset;
+  UWORD32     time_alignmt;
+  UWORD8      sb26_attempt;
+  UWORD8      tsc;
+  UWORD16     bcch_blks_req;
+  UWORD8      timing_validity;
+  UWORD8      search_mode;
+  UWORD8      gprs_priority;
+  UWORD8      sb26_offset; // Set to 1 when SB26 RX win is entirely in frame 25.
+#if (L1_12NEIGH ==1)
+  UWORD32     fn_offset_mem;
+  UWORD32     time_alignmt_mem;
+#endif
+}
+T_NCELL_SINGLE;
+
+typedef struct
+{
+  UWORD8          active_neigh_id_norm;
+  UWORD8          active_neigh_tc_norm;
+  UWORD8          active_neigh_id_top;
+  UWORD8          active_neigh_tc_top;
+  UWORD8          current_list_size;
+  T_NCELL_SINGLE  list[6];
+}
+T_BCCHN_LIST;
+
+typedef struct
+{
+  UWORD8          active_fb_id;
+  UWORD8          active_sbconf_id;
+  UWORD8          active_sb_id;
+  UWORD8          current_list_size;
+  UWORD8          first_in_list;  //point at oldest element in list. Used when parsing the list.
+#if (L1_EOTD==1)
+  #if L1_EOTD_QBIT_ACC
+    // Store serving fn_offset and time_alignmt, so that they can be tracked
+    // independently.
+    UWORD32  serv_fn_offset;
+    UWORD32       serv_time_alignmt;
+  #endif
+  // Need to track any TOA updates in dedicated mode else
+  // QB errors are introduced in the results...
+
+  UWORD8          eotd_toa_phase;
+  WORD32          eotd_toa_tracking;
+  WORD32          eotd_cache_toa_tracking;
+
+  UWORD8          eotd_meas_session;
+  UWORD32         fn_sb_serv;       // for methods 1 & 2
+  UWORD32         ta_sb_serv;       // for methods 1 & 2
+  WORD32          teotdS;           // for method 2 only
+  UWORD32         fn_offset_serv;   // for method 2 only
+#endif
+#if (L1_12NEIGH==1)
+  T_NCELL_SINGLE  list[NBR_NEIGHBOURS+1]; // 1 place (13th) for S.C in EOTD.
+#else
+  T_NCELL_SINGLE  list[6];
+#endif
+}
+T_NSYNC_LIST;
+
+typedef struct
+{
+  UWORD8   cbch_state;
+  UWORD32  starting_fn;
+  UWORD32  first_block[48];
+  UWORD8   cbch_num;
+  UWORD8   schedule_length;
+  UWORD8   next;
+  WORD32   start_continuous_fn;
+}
+T_CBCH_HEAD_SCHEDULE;
+
+typedef struct
+{
+  UWORD8   cbch_num;
+  UWORD8   next;
+  UWORD32  start_fn[6];
+}
+T_CBCH_INFO_SCHEDULE;
+
+/*=========================================================================*/
+/* Moved type definitions from Debis files.                                */
+/*=========================================================================*/
+#if (AMR == 1)
+  // AMR ver 1.0 parameters
+  typedef struct
+  {
+    BOOL    noise_suppression_bit;
+    BOOL    initial_codec_mode_indicator;
+    UWORD8  initial_codec_mode;
+    UWORD8  active_codec_set;
+    UWORD8  threshold[3];
+    UWORD8  hysteresis[3];
+  }
+  T_AMR_CONFIGURATION;
+#endif
+
+typedef struct
+{
+  UWORD8  A[7+1];
+}
+T_ENCRYPTION_KEY;
+
+typedef struct
+{
+  UWORD8  A[22+1];
+}
+T_RADIO_FRAME;
+
+typedef struct
+{
+  UWORD8  n32;
+  UWORD8  n51;
+  UWORD8  n26;
+}
+T_SHORT_FRAME_NUMBER;
+
+typedef struct
+{
+  UWORD16  A[31+1];
+}
+T_CHAN_LIST;
+
+typedef struct
+{
+  UWORD16      num_of_chans;
+  T_CHAN_LIST  chan_number;
+}
+T_BCCH_LIST;
+
+typedef struct
+{
+  UWORD16        rf_chan_num;
+  UWORD8         l2_channel_type;
+  UWORD8         error_cause;
+  T_RADIO_FRAME  l2_frame;
+  UWORD8         bsic;
+  UWORD8         tc;
+}
+T_PH_DATA_IND;
+
+typedef struct
+{
+  UWORD16  A[63+1];
+}
+T_MA_FIELD;
+
+typedef struct
+{
+  UWORD16     rf_chan_cnt;
+  T_MA_FIELD  rf_chan_no;
+}
+T_MOBILE_ALLOCATION;
+
+typedef struct
+{
+  BOOL                  start_time_present;
+  T_SHORT_FRAME_NUMBER  start_time;
+}
+T_STARTING_TIME;
+
+typedef struct
+{
+  UWORD16  radio_freq_no;
+  WORD8   rxlev;
+}
+T_RXLEV_MEAS;
+
+typedef struct
+{
+  UWORD8  maio;
+  UWORD8  hsn;
+}
+T_HOPPING_RF;
+
+typedef struct
+{
+  UWORD16  radio_freq;
+}
+T_SINGLE_RF;
+
+typedef union
+{
+  T_SINGLE_RF   single_rf;
+  T_HOPPING_RF  hopping_rf;
+}
+T_CHN_SEL_CHOICE;
+
+typedef struct
+{
+  BOOL              h;
+  T_CHN_SEL_CHOICE  rf_channel;
+}
+T_CHN_SEL;
+
+typedef struct
+{
+    T_CHN_SEL  chan_sel;
+    UWORD8     channel_type;
+    UWORD8     subchannel;
+    UWORD8     timeslot_no;
+    UWORD8     tsc;
+}
+T_CHANNEL_DESCRIPTION;
+
+typedef struct
+{
+  UWORD8   ncc;
+  UWORD8   bcc;
+  UWORD16  bcch_carrier;
+}
+T_CELL_DESC;
+
+typedef struct
+{
+  T_CELL_DESC            cell_description;
+  T_CHANNEL_DESCRIPTION  channel_desc_1;
+  UWORD8                 channel_mode_1;
+  T_STARTING_TIME        starting_time;
+  UWORD8                 ho_acc;
+  UWORD8                 txpwr;
+  BOOL                   report_time_diff;
+  T_MOBILE_ALLOCATION    frequency_list;
+  T_CHANNEL_DESCRIPTION  channel_desc_2;
+  UWORD8                 channel_mode_2;
+  T_MOBILE_ALLOCATION    frequency_list_bef_sti;
+  T_CHANNEL_DESCRIPTION  channel_desc_1_bef_sti;
+  T_CHANNEL_DESCRIPTION  channel_desc_2_bef_sti;
+  BOOL                   cipher_mode;
+  UWORD8                 a5_algorithm;
+}
+T_HO_PARAMS;
+
+typedef struct
+{
+    T_CHANNEL_DESCRIPTION  channel_desc;
+    T_MOBILE_ALLOCATION    frequency_list;
+    T_STARTING_TIME        starting_time;
+}
+T_MPHC_CHANGE_FREQUENCY;
+
+typedef struct
+{
+  UWORD8  subchannel;
+  UWORD8  channel_mode;
+  #if (AMR == 1)
+    T_AMR_CONFIGURATION  amr_configuration;
+  #endif
+}
+T_MPHC_CHANNEL_MODE_MODIFY_REQ;
+
+typedef struct
+{
+  UWORD8            cipher_mode;
+  UWORD8            a5_algorithm;
+  T_ENCRYPTION_KEY  new_ciph_param;
+}
+T_MPHC_SET_CIPHERING_REQ;
+
+typedef struct
+{
+  UWORD8  sub_channel;
+  UWORD8  frame_erasure;
+}
+T_OML1_CLOSE_TCH_LOOP_REQ;
+
+typedef struct
+{
+  #if (defined _WINDOWS && (OP_RIV_AUDIO == 1))
+    T_RV_HDR  header;
+  #endif
+  UWORD8  tested_device;
+}
+T_OML1_START_DAI_TEST_REQ;
+
+/***********************************************************/
+/* Type definitions for DEBUG...                           */
+/***********************************************************/
+typedef struct                  // translate string in int and int in string
+{
+  CHAR *message;
+  WORD32  SignalCode;
+  WORD32  size;
+}
+MSG_DEBUG;
+
+typedef struct                  // translate string in int and int in string
+{
+  CHAR *name;
+}
+TASK_TRACE;
+
+/***********************************************************/
+/* Type definitions for data structures used for MFTAB     */
+/* managment...                                            */
+/***********************************************************/
+typedef struct
+{
+  void   (*fct_ptr)(UWORD8,UWORD8);
+  CHAR   param1;
+  CHAR   param2;
+}
+T_FCT;
+
+typedef struct
+{
+  T_FCT  fct[L1_MAX_FCT];
+}
+T_FRM;
+
+typedef struct
+{
+  T_FRM  frmlst[MFTAB_SIZE];
+}
+T_MFTAB;
+
+typedef struct
+{
+  const T_FCT    *address;
+  UWORD8  size;
+}
+T_TASK_MFTAB;
+
+/***********************************************************/
+/* TPU controle register components definition.            */
+/***********************************************************/
+
+#if (CODE_VERSION==SIMULATION)
+  typedef struct                      // contents of REG_CMD register
+  {
+    unsigned int  tpu_reset_bit : 1;  // TPU_RESET bit : ON (reset TPU)
+    unsigned int  tpu_pag_bit   : 1;  // TPU_PAG   bit : 0  (page 0)
+    unsigned int  tpu_enb_bit   : 1;  // TPU_ENB   bit : ON (TPU commun.int.)
+    unsigned int  dsp_pag_bit   : 1;  // DSP_PAG   bit : 0  (page 0)
+    unsigned int  dsp_enb_bit   : 1;  // DSP_ENB   bit : ON (DSP commun.int.)
+    unsigned int  tpu_stat_bit  : 1;  // TPU_STAT  bit : ON (if TPU active) OFF (if TPU in IDLE)
+    unsigned int  tpu_idle_bit  : 1;  // TPU_IDLE  bit : ON (force IDLE mode)
+  }
+  T_reg_cmd;  // Rem: we must keep "unsigned int" type for bitmap.
+#else
+  typedef struct                      // contents of REG_CMD register
+  {
+    unsigned int  tpu_reset_bit : 1;  // TPU_RESET bit : ON (reset TPU)
+    unsigned int  tpu_pag_bit   : 1;  // TPU_PAG   bit : 0  (page 0)
+    unsigned int  tpu_enb_bit   : 1;  // TPU_ENB   bit : ON (TPU commun.int.)
+    unsigned int  unused_1      : 1;  //
+    unsigned int  dsp_enb_bit   : 1;  // DSP_ENB   bit : ON (DSP commun.int.)
+    unsigned int  unused_2      : 1;  //
+    unsigned int  unused_3      : 1;  //
+    unsigned int  tsp_reset_bit : 1;  // TSP_RESET bit : ON (reset TSP)
+    unsigned int  tpu_idle_bit  : 1;  // TPU_IDLE  bit : ON (force IDLE mode)
+    unsigned int  tup_wait_bit  : 1;  // TPU_WAIT  bit : ON (TPU ready)
+    unsigned int  tpu_ck_enb_bit: 1;  // TPU_CLK   bit : ON (TPU clock on)
+  }
+    T_reg_cmd;
+#endif
+/***********************************************************/
+/*                                                         */
+/*  Data structure for global info components.             */
+/*                                                         */
+/***********************************************************/
+
+typedef struct
+{
+  API d_task_d;           // (0)  Downlink task command.
+  API d_burst_d;          // (1)  Downlink burst identifier.
+  API d_task_u;           // (2)  Uplink task command.
+  API d_burst_u;          // (3)  Uplink burst identifier.
+  API d_task_md;          // (4)  Downlink Monitoring (FB/SB) command.
+#if (DSP == 33) || (DSP == 34) || (DSP == 35) || (DSP == 36)
+  API d_background;       // (5) Background tasks
+#else
+  API d_reserved;         // (5)  Reserved
+#endif
+  API d_debug;            // (6)  Debug/Acknowledge/general purpose word.
+  API d_task_ra;          // (7)  RA task command.
+  API d_fn;               // (8)  FN, in Rep. period and FN%104, used for TRAFFIC/TCH only.
+                             //        bit [0..7]  -> b_fn_report, FN in the normalized reporting period.
+                             //        bit [8..15] -> b_fn_sid,    FN % 104, used for SID positionning.
+  API d_ctrl_tch;         // (9)  Tch channel description.
+                             //        bit [0..3]  -> b_chan_mode,    channel  mode.
+                             //        bit [4..5]  -> b_chan_type,    channel type.
+                             //        bit [6]     -> reset SACCH
+                             //        bit [7]     -> vocoder ON
+                             //        bit [8]     -> b_sync_tch_ul,  synchro. TCH/UL.
+                             //        bit [9]     -> b_sync_tch_dl,  synchro. TCH/DL.
+                             //        bit [10]    -> b_stop_tch_ul,  stop TCH/UL.
+                             //        bit [11]    -> b_stop_tch_dl,  stop TCH/DL.
+                             //        bit [12.13] -> b_tch_loop,     tch loops A/B/C.
+  API hole;               // (10) unused hole.
+
+#if ((ANLG_FAM == 1) || (ANLG_FAM == 2) || (ANLG_FAM == 3))
+  API d_ctrl_abb;         // (11) Bit field indicating the analog baseband register to send.
+                             //        bit [0]     -> b_ramp: the ramp information(a_ramp[]) is located in NDB
+                             //        bit [1.2]   -> unused
+                             //        bit [3]     -> b_apcdel: delays-register in NDB
+                             //        bit [4]     -> b_afc: freq control register in DB
+                             //        bit [5..15] -> unused
+#endif
+  API a_a5fn[2];          // (12..13) Encryption Frame number.
+                             //        word 0, bit [0..4]  -> T2.
+                             //        word 0, bit [5..10] -> T3.
+                             //        word 1, bit [0..11] -> T1.
+  API d_power_ctl;        // (14) Power level control.
+  API d_afc;              // (15) AFC value (enabled by "b_afc" in "d_ctrl_TCM4400 or in d_ctrl_abb").
+  API d_ctrl_system;      // (16) Controle Register for RESET/RESUME.
+                             //        bit [0..2] -> b_tsq,           training sequence.
+                             //        bit [3]    -> b_bcch_freq_ind, BCCH frequency indication.
+                             //        bit [15]   -> b_task_abort,    DSP task abort command.
+}
+T_DB_MCU_TO_DSP;
+
+typedef struct
+{
+  API d_task_d;           // (0) Downlink task command.
+  API d_burst_d;          // (1) Downlink burst identifier.
+  API d_task_u;           // (2) Uplink task command.
+  API d_burst_u;          // (3) Uplink burst identifier.
+  API d_task_md;          // (4) Downlink Monitoring (FB/SB) task command.
+#if (DSP == 33) || (DSP == 34) || (DSP == 35) || (DSP == 36)
+  API d_background;       // (5) Background tasks
+#else
+  API d_reserved;         // (5)  Reserved
+#endif
+  API d_debug;            // (6) Debug/Acknowledge/general purpose word.
+  API d_task_ra;          // (7) RA task command.
+
+#if (DSP == 33) || (DSP == 34) || (DSP == 35) || (DSP == 36)
+  API a_serv_demod[4];    // ( 8..11) Serv. cell demod. result, array of 4 words (D_TOA,D_PM,D_ANGLE,D_SNR).
+  API a_pm[3];            // (12..14) Power measurement results, array of 3 words.
+  API a_sch[5];           // (15..19) Header + SB information, array of  5 words.
+#else
+  API a_pm[3];            // ( 8..10) Power measurement results, array of 3 words.
+  API a_serv_demod[4];    // (11..14) Serv. cell demod. result, array of 4 words (D_TOA,D_PM,D_ANGLE,D_SNR).
+  API a_sch[5];           // (15..19) Header + SB information, array of  5 words.
+#endif
+}
+T_DB_DSP_TO_MCU;
+
+#if (DSP == 34) || (DSP == 35) || (DSP == 36) // NDB GSM
+  typedef struct
+  {
+    // MISC Tasks
+    API d_dsp_page;
+
+    // DSP status returned (DSP --> MCU).
+    API d_error_status;
+
+    // RIF control (MCU -> DSP).
+    API d_spcx_rif;
+
+    API d_tch_mode;  // TCH mode register.
+                     // bit [0..1]  -> b_dai_mode.
+                     // bit [2]     -> b_dtx.
+
+    API d_debug1;                // bit 0 at 1 enable dsp f_tx delay for Omega
+
+    API d_dsp_test;
+
+    // Words dedicated to Software version (DSP code + Patch)
+    API d_version_number1;
+    API d_version_number2;
+
+    API d_debug_ptr;
+    API d_debug_bk;
+
+    API d_pll_config;
+
+    // GSM/GPRS DSP Debug trace support
+    API p_debug_buffer;
+    API d_debug_buffer_size;
+    API d_debug_trace_type;
+
+    #if (W_A_DSP_IDLE3 == 1)
+      // DSP report its state: 0 run, 1 Idle1, 2 Idle2, 3 Idle3.
+      API d_dsp_state;
+      // 5 words are reserved for any possible mapping modification
+      API d_hole1_ndb[2];
+    #else
+      // 6 words are reserved for any possible mapping modification
+      API d_hole1_ndb[3];
+    #endif
+
+    #if (AMR == 1)
+      API p_debug_amr;
+    #else
+      API d_hole_debug_amr;
+    #endif
+
+    #if (CHIPSET == 12)
+      #if (DSP == 35) || (DSP == 36)
+        API d_hole2_ndb[1];
+        API d_mcsi_select;
+      #else
+        API d_hole2_ndb[2];
+      #endif
+    #else
+      API d_hole2_ndb[2];
+    #endif
+
+    // New words APCDEL1 and APCDEL2 for 2TX: TX/PRACH combinations
+    API d_apcdel1_bis;
+    API d_apcdel2_bis;
+
+
+    // New registers due to IOTA analog base band
+    API d_apcdel2;
+    API d_vbctrl2;
+    API d_bulgcal;
+
+    // Analog Based Band
+    API d_afcctladd;
+
+    API d_vbuctrl;
+    API d_vbdctrl;
+    API d_apcdel1;
+    API d_apcoff;
+    API d_bulioff;
+    API d_bulqoff;
+    API d_dai_onoff;
+    API d_auxdac;
+
+  #if (ANLG_FAM == 1)
+    API d_vbctrl;
+  #elif ((ANLG_FAM == 2) || (ANLG_FAM == 3))
+    API d_vbctrl1;
+  #endif
+  
+    API d_bbctrl;
+
+    // Monitoring tasks control (MCU <- DSP)
+    // FB task
+    API d_fb_det;           // FB detection result. (1 for FOUND).
+    API d_fb_mode;          // Mode for FB detection algorithm.
+    API a_sync_demod[4];    // FB/SB demod. result, (D_TOA,D_PM,D_ANGLE,D_SNR).
+
+    // SB Task
+    API a_sch26[5];         // Header + SB information, array of  5 words.
+
+    API d_audio_gain_ul;
+    API d_audio_gain_dl;
+
+    // Controller of the melody E2 audio compressor
+    API d_audio_compressor_ctrl;
+
+    // AUDIO module
+    API d_audio_init;
+    API d_audio_status;
+
+    // Audio tasks
+    // TONES (MCU -> DSP)
+    API d_toneskb_init;
+    API d_toneskb_status;
+    API d_k_x1_t0;
+    API d_k_x1_t1;
+    API d_k_x1_t2;
+    API d_pe_rep;
+    API d_pe_off;
+    API d_se_off;
+    API d_bu_off;
+    API d_t0_on;
+    API d_t0_off;
+    API d_t1_on;
+    API d_t1_off;
+    API d_t2_on;
+    API d_t2_off;
+    API d_k_x1_kt0;
+    API d_k_x1_kt1;
+    API d_dur_kb;
+    API d_shiftdl;
+    API d_shiftul;
+
+    API d_aec_ctrl;
+
+    API d_es_level_api;
+    API d_mu_api;
+
+    // Melody Ringer module
+    API d_melo_osc_used;
+    API d_melo_osc_active;
+    API a_melo_note0[4];
+    API a_melo_note1[4];
+    API a_melo_note2[4];
+    API a_melo_note3[4];
+    API a_melo_note4[4];
+    API a_melo_note5[4];
+    API a_melo_note6[4];
+    API a_melo_note7[4];
+
+    // selection of the melody format
+    API d_melody_selection;
+
+    // Holes due to the format melody E1
+    API a_melo_holes[3];
+
+    // Speech Recognition module
+    API d_sr_status;          // status of the DSP speech reco task
+    API d_sr_param;           // paramters for the DSP speech reco task: OOV threshold.
+    API d_sr_bit_exact_test;  // bit exact test
+    API d_sr_nb_words;        // number of words used in the speech recognition task
+    API d_sr_db_level;        // estimate voice level in dB
+    API d_sr_db_noise;        // estimate noise in dB
+    API d_sr_mod_size;        // size of the model
+    API a_n_best_words[4];  // array of the 4 best words
+    API a_n_best_score[8];  // array of the 4 best scores (each score is 32 bits length)
+
+    // Audio buffer
+    API a_dd_1[22];         // Header + DATA traffic downlink information, sub. chan. 1.
+    API a_du_1[22];         // Header + DATA traffic uplink information, sub. chan. 1.
+
+    // V42bis module
+    API d_v42b_nego0;
+    API d_v42b_nego1;
+    API d_v42b_control;
+    API d_v42b_ratio_ind;
+    API d_mcu_control;
+    API d_mcu_control_sema;
+
+    // Background tasks
+    API d_background_enable;
+    API d_background_abort;
+    API d_background_state;
+    API d_max_background;
+    API a_background_tasks[16];
+    API a_back_task_io[16];
+
+    // GEA module defined in l1p_deft.h (the following section is overlaid with GPRS NDB memory)
+    API d_gea_mode_ovly;
+    API a_gea_kc_ovly[4];
+
+#if (ANLG_FAM == 3)
+    // SYREN specific registers
+    API d_vbpop;
+    API d_vau_delay_init;
+    API d_vaud_cfg;
+    API d_vauo_onoff;
+    API d_vaus_vol;
+    API d_vaud_pll;
+    API d_hole3_ndb[1];
+#elif ((ANLG_FAM == 1) || (ANLG_FAM == 2))
+
+    API d_hole3_ndb[7];
+
+#endif
+
+    // word used for the init of USF threshold
+    API d_thr_usf_detect;
+
+    // Encryption module
+    API d_a5mode;           // Encryption Mode.
+
+    API d_sched_mode_gprs_ovly;
+
+    // 7 words are reserved for any possible mapping modification
+    API d_hole4_ndb[5];
+
+    // Ramp definition for Omega device
+    API a_ramp[16];
+
+    // CCCH/SACCH downlink information...(!!)
+    API a_cd[15];           // Header + CCCH/SACCH downlink information.
+
+    // FACCH downlink information........(!!)
+    API a_fd[15];           // Header + FACCH downlink information.
+
+    // Traffic downlink data frames......(!!)
+    API a_dd_0[22];         // Header + DATA traffic downlink information, sub. chan. 0.
+
+    // CCCH/SACCH uplink information.....(!!)
+    API a_cu[15];           // Header + CCCH/SACCH uplink information.
+
+    // FACCH downlink information........(!!)
+    API a_fu[15];           // Header + FACCH uplink information
+
+    // Traffic downlink data frames......(!!)
+    API a_du_0[22];         // Header + DATA traffic uplink information, sub. chan. 0.
+
+    // Random access.....................(MCU -> DSP).
+    API d_rach;             // RACH information.
+
+    //...................................(MCU -> DSP).
+    API a_kc[4];            // Encryption Key Code.
+
+    // Integrated Data Services module
+    API d_ra_conf;
+    API d_ra_act;
+    API d_ra_test;
+    API d_ra_statu;
+    API d_ra_statd;
+    API d_fax;
+    API a_data_buf_ul[21];
+    API a_data_buf_dl[37];
+
+  // GTT API mapping for DSP code 34 (for test only)
+  #if (L1_GTT == 1)
+    API d_tty_status;
+    API d_tty_detect_thres;
+    API d_ctm_detect_shift;
+    API d_tty_fa_thres;
+    API d_tty_mod_norm;
+    API d_tty_reset_buffer_ul;
+    API d_tty_loop_ctrl;
+    API p_tty_loop_buffer;
+  #else
+    API a_tty_holes[8];
+  #endif
+
+    API a_sr_holes0[414];
+
+  #if (L1_NEW_AEC)
+    // new AEC
+    API d_cont_filter;
+    API d_granularity_att;
+    API d_coef_smooth;
+    API d_es_level_max;
+    API d_fact_vad;
+    API d_thrs_abs;
+    API d_fact_asd_fil;
+    API d_fact_asd_mut;
+    API d_far_end_pow_h;
+    API d_far_end_pow_l;
+    API d_far_end_noise_h;
+    API d_far_end_noise_l;
+  #else
+    API a_new_aec_holes[12];
+  #endif // L1_NEW_AEC
+
+    // Speech recognition model
+    API a_sr_holes1[145];
+    API d_cport_init;
+    API d_cport_ctrl;
+    API a_cport_cfr[2];
+    API d_cport_tcl_tadt;
+    API d_cport_tdat;
+    API d_cport_tvs;
+    API d_cport_status;
+    API d_cport_reg_value;
+
+    API a_cport_holes[1011];
+
+    API a_model[1041];
+
+    // EOTD buffer
+#if (L1_EOTD==1)
+    API d_eotd_first;
+    API d_eotd_max;
+    API d_eotd_nrj_high;
+    API d_eotd_nrj_low;
+    API a_eotd_crosscor[18];
+#else
+    API a_eotd_holes[22];
+#endif
+    // AMR ver 1.0 buffers
+    API a_amr_config[4];
+    API a_ratscch_ul[6];
+    API a_ratscch_dl[6];
+    API d_amr_snr_est; // estimation of the SNR of the AMR speech block
+  #if (L1_VOICE_MEMO_AMR)
+    API d_amms_ul_voc;
+  #else
+    API a_voice_memo_amr_holes[1];
+  #endif
+    API d_thr_onset_afs;     // thresh detection ONSET AFS
+    API d_thr_sid_first_afs; // thresh detection SID_FIRST AFS
+    API d_thr_ratscch_afs;   // thresh detection RATSCCH AFS
+    API d_thr_update_afs;    // thresh detection SID_UPDATE AFS
+    API d_thr_onset_ahs;     // thresh detection ONSET AHS
+    API d_thr_sid_ahs;       // thresh detection SID frames AHS
+    API d_thr_ratscch_marker;// thresh detection RATSCCH MARKER
+    API d_thr_sp_dgr;   // thresh detection SPEECH DEGRADED/NO_DATA
+    API d_thr_soft_bits;   
+    #if (MELODY_E2)
+      API d_melody_e2_osc_stop;
+      API d_melody_e2_osc_active;
+      API d_melody_e2_semaphore;
+      API a_melody_e2_osc[16][3];
+      API d_melody_e2_globaltimefactor;
+      API a_melody_e2_instrument_ptr[8];
+      API d_melody_e2_deltatime;
+
+      #if (AMR_THRESHOLDS_WORKAROUND)
+        API a_d_macc_thr_afs[8];
+        API a_d_macc_thr_ahs[6];
+      #else
+        API a_melody_e2_holes0[14];
+      #endif
+
+      API a_melody_e2_holes1[693];
+      API a_dsp_trace[SC_AUDIO_MELODY_E2_MAX_SIZE_OF_DSP_TRACE];
+      API a_melody_e2_instrument_wave[SC_AUDIO_MELODY_E2_MAX_SIZE_OF_INSTRUMENT];
+    #else
+      API d_holes[61];
+      #if (AMR_THRESHOLDS_WORKAROUND)
+        API a_d_macc_thr_afs[8];
+        API a_d_macc_thr_ahs[6];
+      #endif
+    #endif
+
+  }
+  T_NDB_MCU_DSP;
+#elif (DSP == 33) // NDB GSM
+  typedef struct
+  {
+    // MISC Tasks
+    API d_dsp_page;
+
+    // DSP status returned (DSP --> MCU).
+    API d_error_status;
+
+    // RIF control (MCU -> DSP).
+    API d_spcx_rif;
+
+    API d_tch_mode;  // TCH mode register.
+                     // bit [0..1]  -> b_dai_mode.
+                     // bit [2]     -> b_dtx.
+
+    API d_debug1;                // bit 0 at 1 enable dsp f_tx delay for Omega
+
+    API d_dsp_test;
+
+    // Words dedicated to Software version (DSP code + Patch)
+    API d_version_number1;
+    API d_version_number2;
+
+    API d_debug_ptr;
+    API d_debug_bk;
+
+    API d_pll_config;
+
+    // GSM/GPRS DSP Debug trace support
+    API p_debug_buffer;
+    API d_debug_buffer_size;
+    API d_debug_trace_type;
+
+    #if (W_A_DSP_IDLE3 == 1)
+      // DSP report its state: 0 run, 1 Idle1, 2 Idle2, 3 Idle3.
+      API d_dsp_state;
+      // 10 words are reserved for any possible mapping modification
+      API d_hole1_ndb[5];
+    #else
+      // 11 words are reserved for any possible mapping modification
+      API d_hole1_ndb[6];
+    #endif
+
+    // New words APCDEL1 and APCDEL2 for 2TX: TX/PRACH combinations
+    API d_apcdel1_bis;
+    API d_apcdel2_bis;
+
+
+    // New registers due to IOTA analog base band
+    API d_apcdel2;
+    API d_vbctrl2;
+    API d_bulgcal;
+
+    // Analog Based Band
+    API d_afcctladd;
+
+    API d_vbuctrl;
+    API d_vbdctrl;
+    API d_apcdel1;
+    API d_apcoff;
+    API d_bulioff;
+    API d_bulqoff;
+    API d_dai_onoff;
+    API d_auxdac;
+
+  #if (ANLG_FAM == 1)
+    API d_vbctrl;
+  #elif ((ANLG_FAM == 2) || (ANLG_FAM == 3))
+    API d_vbctrl1;
+  #endif
+
+    API d_bbctrl;
+
+    // Monitoring tasks control (MCU <- DSP)
+    // FB task
+    API d_fb_det;           // FB detection result. (1 for FOUND).
+    API d_fb_mode;          // Mode for FB detection algorithm.
+    API a_sync_demod[4];    // FB/SB demod. result, (D_TOA,D_PM,D_ANGLE,D_SNR).
+
+    // SB Task
+    API a_sch26[5];         // Header + SB information, array of  5 words.
+
+    API d_audio_gain_ul;
+    API d_audio_gain_dl;
+
+    // Controller of the melody E2 audio compressor
+    API d_audio_compressor_ctrl;
+
+    // AUDIO module
+    API d_audio_init;
+    API d_audio_status;
+
+    // Audio tasks
+    // TONES (MCU -> DSP)
+    API d_toneskb_init;
+    API d_toneskb_status;
+    API d_k_x1_t0;
+    API d_k_x1_t1;
+    API d_k_x1_t2;
+    API d_pe_rep;
+    API d_pe_off;
+    API d_se_off;
+    API d_bu_off;
+    API d_t0_on;
+    API d_t0_off;
+    API d_t1_on;
+    API d_t1_off;
+    API d_t2_on;
+    API d_t2_off;
+    API d_k_x1_kt0;
+    API d_k_x1_kt1;
+    API d_dur_kb;
+    API d_shiftdl;
+    API d_shiftul;
+
+    API d_aec_ctrl;
+
+    API d_es_level_api;
+    API d_mu_api;
+
+    // Melody Ringer module
+    API d_melo_osc_used;
+    API d_melo_osc_active;
+    API a_melo_note0[4];
+    API a_melo_note1[4];
+    API a_melo_note2[4];
+    API a_melo_note3[4];
+    API a_melo_note4[4];
+    API a_melo_note5[4];
+    API a_melo_note6[4];
+    API a_melo_note7[4];
+
+    // selection of the melody format
+    API d_melody_selection;
+
+    // Holes due to the format melody E1
+    API a_melo_holes[3];
+
+    // Speech Recognition module
+    API d_sr_status;          // status of the DSP speech reco task
+    API d_sr_param;           // paramters for the DSP speech reco task: OOV threshold.
+    API d_sr_bit_exact_test;  // bit exact test
+    API d_sr_nb_words;        // number of words used in the speech recognition task
+    API d_sr_db_level;        // estimate voice level in dB
+    API d_sr_db_noise;        // estimate noise in dB
+    API d_sr_mod_size;        // size of the model
+    API a_n_best_words[4];  // array of the 4 best words
+    API a_n_best_score[8];  // array of the 4 best scores (each score is 32 bits length)
+
+    // Audio buffer
+    API a_dd_1[22];         // Header + DATA traffic downlink information, sub. chan. 1.
+    API a_du_1[22];         // Header + DATA traffic uplink information, sub. chan. 1.
+
+    // V42bis module
+    API d_v42b_nego0;
+    API d_v42b_nego1;
+    API d_v42b_control;
+    API d_v42b_ratio_ind;
+    API d_mcu_control;
+    API d_mcu_control_sema;
+
+    // Background tasks
+    API d_background_enable;
+    API d_background_abort;
+    API d_background_state;
+    API d_max_background;
+    API a_background_tasks[16];
+    API a_back_task_io[16];
+
+    // GEA module defined in l1p_deft.h (the following section is overlaid with GPRS NDB memory)
+    API d_gea_mode_ovly;
+    API a_gea_kc_ovly[4];
+
+    API d_hole3_ndb[8];
+
+    // Encryption module
+    API d_a5mode;           // Encryption Mode.
+
+    API d_sched_mode_gprs_ovly;
+
+    // 7 words are reserved for any possible mapping modification
+    API d_hole4_ndb[5];
+
+    // Ramp definition for Omega device
+    API a_ramp[16];
+
+    // CCCH/SACCH downlink information...(!!)
+    API a_cd[15];           // Header + CCCH/SACCH downlink information.
+
+    // FACCH downlink information........(!!)
+    API a_fd[15];           // Header + FACCH downlink information.
+
+    // Traffic downlink data frames......(!!)
+    API a_dd_0[22];         // Header + DATA traffic downlink information, sub. chan. 0.
+
+    // CCCH/SACCH uplink information.....(!!)
+    API a_cu[15];           // Header + CCCH/SACCH uplink information.
+
+    // FACCH downlink information........(!!)
+    API a_fu[15];           // Header + FACCH uplink information
+
+    // Traffic downlink data frames......(!!)
+    API a_du_0[22];         // Header + DATA traffic uplink information, sub. chan. 0.
+
+    // Random access.....................(MCU -> DSP).
+    API d_rach;             // RACH information.
+
+    //...................................(MCU -> DSP).
+    API a_kc[4];            // Encryption Key Code.
+
+    // Integrated Data Services module
+    API d_ra_conf;
+    API d_ra_act;
+    API d_ra_test;
+    API d_ra_statu;
+    API d_ra_statd;
+    API d_fax;
+    API a_data_buf_ul[21];
+    API a_data_buf_dl[37];
+
+  #if (L1_NEW_AEC)
+    // new AEC
+    API a_new_aec_holes[422];
+    API d_cont_filter;
+    API d_granularity_att;
+    API d_coef_smooth;
+    API d_es_level_max;
+    API d_fact_vad;
+    API d_thrs_abs;
+    API d_fact_asd_fil;
+    API d_fact_asd_mut;
+    API d_far_end_pow_h;
+    API d_far_end_pow_l;
+    API d_far_end_noise_h;
+    API d_far_end_noise_l;
+  #endif
+
+  // Speech recognition model
+  #if (L1_NEW_AEC)
+    API a_sr_holes[1165];
+  #else
+    API a_sr_holes[1599];
+  #endif // L1_NEW_AEC
+    API a_model[1041];
+
+    // EOTD buffer
+    #if (L1_EOTD==1)
+      API d_eotd_first;
+      API d_eotd_max;
+      API d_eotd_nrj_high;
+      API d_eotd_nrj_low;
+      API a_eotd_crosscor[18];
+    #else
+      API a_eotd_holes[22];
+    #endif
+
+    #if (MELODY_E2)
+      API a_melody_e2_holes0[27];
+      API d_melody_e2_osc_used;
+      API d_melody_e2_osc_active;
+      API d_melody_e2_semaphore;
+      API a_melody_e2_osc[16][3];
+      API d_melody_e2_globaltimefactor;
+      API a_melody_e2_instrument_ptr[8];
+      API a_melody_e2_holes1[708];
+      API a_dsp_trace[SC_AUDIO_MELODY_E2_MAX_SIZE_OF_DSP_TRACE];
+      API a_melody_e2_instrument_wave[SC_AUDIO_MELODY_E2_MAX_SIZE_OF_INSTRUMENT];
+    #endif
+  }
+  T_NDB_MCU_DSP;
+
+#elif ((DSP == 32) || (DSP == 31))
+  typedef struct
+  {
+    // Monitoring tasks control..........(MCU <- DSP)
+    API d_fb_det;           // FB detection result. (1 for FOUND).
+    API d_fb_mode;          // Mode for FB detection algorithm.
+    API a_sync_demod[4];    // FB/SB demod. result, (D_TOA,D_PM,D_ANGLE,D_SNR).
+
+    // CCCH/SACCH downlink information...(!!)
+    API a_cd[15];           // Header + CCCH/SACCH downlink information.
+
+    // FACCH downlink information........(!!)
+    API a_fd[15];           // Header + FACCH downlink information.
+
+    // Traffic downlink data frames......(!!)
+    API a_dd_0[22];         // Header + DATA traffic downlink information, sub. chan. 0.
+    API a_dd_1[22];         // Header + DATA traffic downlink information, sub. chan. 1.
+
+    // CCCH/SACCH uplink information.....(!!)
+    API a_cu[15];           // Header + CCCH/SACCH uplink information.
+
+    #if (SPEECH_RECO)
+      // FACCH downlink information........(!!)
+      API a_fu[3];              // Header + FACCH uplink information
+                                // The size of this buffer is 15 word but some speech reco words
+                                // are overlayer with this buffer. This is the reason why the size is 3 instead of 15.
+      API d_sr_status;          // status of the DSP speech reco task
+      API d_sr_param;           // paramters for the DSP speech reco task: OOV threshold.
+      API sr_hole1;             // hole
+      API d_sr_bit_exact_test;  // bit exact test
+      API d_sr_nb_words;        // number of words used in the speech recognition task
+      API d_sr_db_level;        // estimate voice level in dB
+      API d_sr_db_noise;        // estimate noise in dB
+      API d_sr_mod_size;        // size of the model
+      API sr_holes_1[4];        // hole
+    #else
+      // FACCH downlink information........(!!)
+      API a_fu[15];           // Header + FACCH uplink information
+    #endif
+
+    // Traffic uplink data frames........(!!)
+    API a_du_0[22];         // Header + DATA traffic uplink information, sub. chan. 0.
+    API a_du_1[22];         // Header + DATA traffic uplink information, sub. chan. 1.
+
+    // Random access.....................(MCU -> DSP).
+    API d_rach;             // RACH information.
+
+    //...................................(MCU -> DSP).
+    API d_a5mode;           // Encryption Mode.
+    API a_kc[4];            // Encryption Key Code.
+    API d_tch_mode;         // TCH mode register.
+                            //   bit [0..1]  -> b_dai_mode.
+                            //   bit [2]     -> b_dtx.
+
+  // OMEGA...........................(MCU -> DSP).
+  #if ((ANLG_FAM == 1) || (ANLG_FAM == 2))
+    API a_ramp[16];
+    #if (MELODY_E1)
+      API d_melo_osc_used;
+      API d_melo_osc_active;
+      API a_melo_note0[4];
+      API a_melo_note1[4];
+      API a_melo_note2[4];
+      API a_melo_note3[4];
+      API a_melo_note4[4];
+      API a_melo_note5[4];
+      API a_melo_note6[4];
+      API a_melo_note7[4];
+      #if (DSP==31)
+        // selection of the melody format
+        API d_melody_selection;
+        API holes[9];
+      #else // DSP==32
+        API d_dco_type;               // Tide
+        API p_start_IQ;
+        API d_level_off;
+        API d_dco_dbg;
+        API d_tide_resa;
+        API d_asynch_margin;          // Perseus Asynch Audio Workaround
+        API hole[4];
+      #endif // DSP 32
+
+    #else // NO MELODY E1
+      #if (DSP==31)
+      // selection of the melody format
+      API d_melody_selection;
+      API holes[43];               // 43 unused holes.
+      #else // DSP==32
+        API holes[34];               // 34 unused holes.
+        API d_dco_type;               // Tide
+        API p_start_IQ;
+        API d_level_off;
+        API d_dco_dbg;
+        API d_tide_resa;
+        API d_asynch_margin;          // Perseus Asynch Audio Workaround
+        API hole[4];
+      #endif //DSP == 32
+    #endif // NO MELODY E1
+
+    API d_debug3;
+    API d_debug2;
+    API d_debug1;                // bit 0 at 1 enable dsp f_tx delay for Omega
+    API d_afcctladd;
+    API d_vbuctrl;
+    API d_vbdctrl;
+    API d_apcdel1;
+    API d_aec_ctrl;
+    API d_apcoff;
+    API d_bulioff;
+    API d_bulqoff;
+    API d_dai_onoff;
+    API d_auxdac;
+
+    #if (ANLG_FAM == 1)
+      API d_vbctrl;
+    #elif (ANLG_FAM == 2)
+      API d_vbctrl1;
+    #endif
+
+    API d_bbctrl;
+  #else 
+    #error DSPCODE not supported with given ANALOG
+  #endif //(ANALOG)1, 2
+    //...................................(MCU -> DSP).
+    API a_sch26[5];         // Header + SB information, array of  5 words.
+
+    // TONES.............................(MCU -> DSP)
+    API d_toneskb_init;
+    API d_toneskb_status;
+    API d_k_x1_t0;
+    API d_k_x1_t1;
+    API d_k_x1_t2;
+    API d_pe_rep;
+    API d_pe_off;
+    API d_se_off;
+    API d_bu_off;
+    API d_t0_on;
+    API d_t0_off;
+    API d_t1_on;
+    API d_t1_off;
+    API d_t2_on;
+    API d_t2_off;
+    API d_k_x1_kt0;
+    API d_k_x1_kt1;
+    API d_dur_kb;
+
+    // PLL...............................(MCU -> DSP).
+    API d_pll_clkmod1;
+    API d_pll_clkmod2;
+
+    // DSP status returned..........(DSP --> MCU).
+    API d_error_status;
+
+    // RIF control.......................(MCU -> DSP).
+    API d_spcx_rif;
+
+    API d_shiftdl;
+    API d_shiftul;
+
+    API p_saec_prog;
+    API p_aec_prog;
+    API p_spenh_prog;
+
+    API a_ovly[75];
+    API d_ra_conf;
+    API d_ra_act;
+    API d_ra_test;
+    API d_ra_statu;
+    API d_ra_statd;
+    API d_fax;
+    #if (SPEECH_RECO)
+      API a_data_buf_ul[3];
+      API a_n_best_words[4];  // array of the 4 best words
+      API a_n_best_score[8];  // array of the 4 best scores (each score is 32 bits length)
+      API sr_holes_2[6];
+      API a_data_buf_dl[37];
+
+      API a_hole[24];
+
+      API d_sched_mode_gprs_ovly;
+
+      API fir_holes1[384];
+      API a_fir31_uplink[31];
+      API a_fir31_downlink[31];
+      API d_audio_init;
+      API d_audio_status;
+
+      API a_model[1041];  // array of the speech reco model
+    #else
+      API a_data_buf_ul[21];
+      API a_data_buf_dl[37];
+
+      API a_hole[24];
+
+      API d_sched_mode_gprs_ovly;
+
+      API fir_holes1[384];
+      API a_fir31_uplink[31];
+      API a_fir31_downlink[31];
+      API d_audio_init;
+      API d_audio_status;
+
+#if (L1_EOTD ==1)
+      API a_eotd_hole[369];
+
+      API d_eotd_first;
+      API d_eotd_max;
+      API d_eotd_nrj_high;
+      API d_eotd_nrj_low;
+      API a_eotd_crosscor[18];
+#endif
+    #endif
+  }
+  T_NDB_MCU_DSP;
+
+
+#else // OTHER DSP CODE like 17
+
+typedef struct
+{
+  // Monitoring tasks control..........(MCU <- DSP)
+  API d_fb_det;           // FB detection result. (1 for FOUND).
+  API d_fb_mode;          // Mode for FB detection algorithm.
+  API a_sync_demod[4];    // FB/SB demod. result, (D_TOA,D_PM,D_ANGLE,D_SNR).
+
+  // CCCH/SACCH downlink information...(!!)
+  API a_cd[15];           // Header + CCCH/SACCH downlink information.
+
+  // FACCH downlink information........(!!)
+  API a_fd[15];           // Header + FACCH downlink information.
+
+  // Traffic downlink data frames......(!!)
+  #if (DATA14_4 == 0)
+    API a_dd_0[20];         // Header + DATA traffic downlink information, sub. chan. 0.
+    API a_dd_1[20];         // Header + DATA traffic downlink information, sub. chan. 1.
+  #endif
+  #if (DATA14_4 == 1)
+    API a_dd_0[22];         // Header + DATA traffic downlink information, sub. chan. 0.
+    API a_dd_1[22];         // Header + DATA traffic downlink information, sub. chan. 1.
+  #endif
+
+  // CCCH/SACCH uplink information.....(!!)
+  API a_cu[15];           // Header + CCCH/SACCH uplink information.
+
+  #if (SPEECH_RECO)
+    // FACCH downlink information........(!!)
+    API a_fu[3];              // Header + FACCH uplink information
+                              // The size of this buffer is 15 word but some speech reco words
+                              // are overlayer with this buffer. This is the reason why the size is 3 instead of 15.
+    API d_sr_status;          // status of the DSP speech reco task
+    API d_sr_param;           // paramters for the DSP speech reco task: OOV threshold.
+    API sr_hole1;             // hole
+    API d_sr_bit_exact_test;  // bit exact test
+    API d_sr_nb_words;        // number of words used in the speech recognition task
+    API d_sr_db_level;        // estimate voice level in dB
+    API d_sr_db_noise;        // estimate noise in dB
+    API d_sr_mod_size;        // size of the model
+    API sr_holes_1[4];        // hole
+  #else
+    // FACCH downlink information........(!!)
+    API a_fu[15];           // Header + FACCH uplink information
+  #endif
+
+  // Traffic uplink data frames........(!!)
+  #if (DATA14_4 == 0)
+    API a_du_0[20];         // Header + DATA traffic uplink information, sub. chan. 0.
+    API a_du_1[20];         // Header + DATA traffic uplink information, sub. chan. 1.
+  #endif
+  #if (DATA14_4 == 1)
+    API a_du_0[22];         // Header + DATA traffic uplink information, sub. chan. 0.
+    API a_du_1[22];         // Header + DATA traffic uplink information, sub. chan. 1.
+  #endif
+
+  // Random access.....................(MCU -> DSP).
+  API d_rach;             // RACH information.
+
+  //...................................(MCU -> DSP).
+  API d_a5mode;           // Encryption Mode.
+  API a_kc[4];            // Encryption Key Code.
+  API d_tch_mode;         // TCH mode register.
+                               //        bit [0..1]  -> b_dai_mode.
+                               //        bit [2]     -> b_dtx.
+
+  // OMEGA...........................(MCU -> DSP).
+
+#if ((ANLG_FAM == 1) || (ANLG_FAM == 2))
+  API a_ramp[16];
+  #if (MELODY_E1)
+    API d_melo_osc_used;
+    API d_melo_osc_active;
+    API a_melo_note0[4];
+    API a_melo_note1[4];
+    API a_melo_note2[4];
+    API a_melo_note3[4];
+    API a_melo_note4[4];
+    API a_melo_note5[4];
+    API a_melo_note6[4];
+    API a_melo_note7[4];
+    #if (DSP == 17)
+    // selection of the melody format
+      API d_dco_type;               // Tide
+      API p_start_IQ;
+      API d_level_off;
+      API d_dco_dbg;
+      API d_tide_resa;
+      API d_asynch_margin;          // Perseus Asynch Audio Workaround
+      API hole[4];
+    #else
+      API d_melody_selection;
+      API holes[9];
+    #endif
+  #else // NO MELODY E1
+    // selection of the melody format
+    #if (DSP == 17)
+      API holes[34];               // 34 unused holes.
+      API d_dco_type;               // Tide
+      API p_start_IQ;
+      API d_level_off;
+      API d_dco_dbg;
+      API d_tide_resa;
+      API d_asynch_margin;          // Perseus Asynch Audio Workaround
+      API hole[4]
+    #else
+      // selection of the melody format
+      API d_melody_selection;
+      API holes[43];               // 43 unused holes.
+    #endif
+  #endif
+  API d_debug3;
+  API d_debug2;
+  API d_debug1;                // bit 0 at 1 enable dsp f_tx delay for Omega
+  API d_afcctladd;
+  API d_vbuctrl;
+  API d_vbdctrl;
+  API d_apcdel1;
+  API d_aec_ctrl;
+  API d_apcoff;
+  API d_bulioff;
+  API d_bulqoff;
+  API d_dai_onoff;
+  API d_auxdac;
+  #if (ANLG_FAM == 1)
+    API d_vbctrl;
+  #elif (ANLG_FAM == 2)
+    API d_vbctrl1;
+  #endif
+  API d_bbctrl;
+
+  #else 
+    #error DSPCODE not supported with given ANALOG
+  #endif //(ANALOG)1, 2
+  //...................................(MCU -> DSP).
+  API a_sch26[5];         // Header + SB information, array of  5 words.
+
+  // TONES.............................(MCU -> DSP)
+  API d_toneskb_init;
+  API d_toneskb_status;
+  API d_k_x1_t0;
+  API d_k_x1_t1;
+  API d_k_x1_t2;
+  API d_pe_rep;
+  API d_pe_off;
+  API d_se_off;
+  API d_bu_off;
+  API d_t0_on;
+  API d_t0_off;
+  API d_t1_on;
+  API d_t1_off;
+  API d_t2_on;
+  API d_t2_off;
+  API d_k_x1_kt0;
+  API d_k_x1_kt1;
+  API d_dur_kb;
+
+  // PLL...............................(MCU -> DSP).
+  API d_pll_clkmod1;
+  API d_pll_clkmod2;
+
+  // DSP status returned..........(DSP --> MCU).
+  API d_error_status;
+
+  // RIF control.......................(MCU -> DSP).
+  API d_spcx_rif;
+
+  API d_shiftdl;
+  API d_shiftul;
+
+  #if (AEC == 1)
+    // AEC control.......................(MCU -> DSP).
+    #if (VOC == FR_EFR)
+      API p_aec_init;
+      API p_aec_prog;
+      API p_spenh_init;
+      API p_spenh_prog;
+    #endif
+
+    #if (VOC == FR_HR_EFR)
+      API p_saec_prog;
+      API p_aec_prog;
+      API p_spenh_prog;
+    #endif
+  #endif
+
+    API a_ovly[75];
+    API d_ra_conf;
+    API d_ra_act;
+    API d_ra_test;
+    API d_ra_statu;
+    API d_ra_statd;
+    API d_fax;
+    #if (SPEECH_RECO)
+      API a_data_buf_ul[3];
+      API a_n_best_words[4];  // array of the 4 best words
+      API a_n_best_score[8];  // array of the 4 best scores (each score is 32 bits length)
+      API sr_holes_2[6];
+      API a_data_buf_dl[37];
+
+      API fir_holes1[409];
+      API a_fir31_uplink[31];
+      API a_fir31_downlink[31];
+      API d_audio_init;
+      API d_audio_status;
+      API a_model[1041];  // array of the speech reco model
+    #else
+      API a_data_buf_ul[21];
+      API a_data_buf_dl[37];
+
+      API fir_holes1[409];
+      API a_fir31_uplink[31];
+      API a_fir31_downlink[31];
+      API d_audio_init;
+      API d_audio_status;
+    #endif
+}
+T_NDB_MCU_DSP;
+#endif
+
+#if (DSP == 34) || (DSP == 35) || (DSP == 36)
+typedef struct
+{
+  API_SIGNED d_transfer_rate;
+
+  // Common GSM/GPRS
+  // These words specified the latencies to applies on some peripherics
+  API_SIGNED d_lat_mcu_bridge;
+  API_SIGNED d_lat_mcu_hom2sam;
+  API_SIGNED d_lat_mcu_bef_fast_access;
+  API_SIGNED d_lat_dsp_after_sam;
+
+  // DSP Start address
+  API_SIGNED d_gprs_install_address;
+
+  API_SIGNED d_misc_config;
+
+  API_SIGNED d_cn_sw_workaround;
+
+  API_SIGNED d_hole2_param[4];
+
+    //...................................Frequency Burst.
+  API_SIGNED d_fb_margin_beg;
+  API_SIGNED d_fb_margin_end;
+  API_SIGNED d_nsubb_idle;
+  API_SIGNED d_nsubb_dedic;
+  API_SIGNED d_fb_thr_det_iacq;
+  API_SIGNED d_fb_thr_det_track;
+    //...................................Demodulation.
+  API_SIGNED d_dc_off_thres;
+  API_SIGNED d_dummy_thres;
+  API_SIGNED d_dem_pond_gewl;
+  API_SIGNED d_dem_pond_red;
+
+    //...................................TCH Full Speech.
+  API_SIGNED d_maccthresh1;
+  API_SIGNED d_mldt;
+  API_SIGNED d_maccthresh;
+  API_SIGNED d_gu;
+  API_SIGNED d_go;
+  API_SIGNED d_attmax;
+  API_SIGNED d_sm;
+  API_SIGNED d_b;
+
+  // V42Bis module
+  API_SIGNED d_v42b_switch_hyst;
+  API_SIGNED d_v42b_switch_min;
+  API_SIGNED d_v42b_switch_max;
+  API_SIGNED d_v42b_reset_delay;
+
+  //...................................TCH Half Speech.
+  API_SIGNED d_ldT_hr;
+  API_SIGNED d_maccthresh_hr;
+  API_SIGNED d_maccthresh1_hr;
+  API_SIGNED d_gu_hr;
+  API_SIGNED d_go_hr;
+  API_SIGNED d_b_hr;
+  API_SIGNED d_sm_hr;
+  API_SIGNED d_attmax_hr;
+
+  //...................................TCH Enhanced FR Speech.
+  API_SIGNED c_mldt_efr;
+  API_SIGNED c_maccthresh_efr;
+  API_SIGNED c_maccthresh1_efr;
+  API_SIGNED c_gu_efr;
+  API_SIGNED c_go_efr;
+  API_SIGNED c_b_efr;
+  API_SIGNED c_sm_efr;
+  API_SIGNED c_attmax_efr;
+
+  //...................................CHED
+  API_SIGNED d_sd_min_thr_tchfs;
+  API_SIGNED d_ma_min_thr_tchfs;
+  API_SIGNED d_md_max_thr_tchfs;
+  API_SIGNED d_md1_max_thr_tchfs;
+
+  API_SIGNED d_sd_min_thr_tchhs;
+  API_SIGNED d_ma_min_thr_tchhs;
+  API_SIGNED d_sd_av_thr_tchhs;
+  API_SIGNED d_md_max_thr_tchhs;
+  API_SIGNED d_md1_max_thr_tchhs;
+
+  API_SIGNED d_sd_min_thr_tchefs;
+  API_SIGNED d_ma_min_thr_tchefs;
+  API_SIGNED d_md_max_thr_tchefs;
+  API_SIGNED d_md1_max_thr_tchefs;
+
+  API_SIGNED d_wed_fil_ini;
+  API_SIGNED d_wed_fil_tc;
+  API_SIGNED d_x_min;
+  API_SIGNED d_x_max;
+  API_SIGNED d_slope;
+  API_SIGNED d_y_min;
+  API_SIGNED d_y_max;
+  API_SIGNED d_wed_diff_threshold;
+  API_SIGNED d_mabfi_min_thr_tchhs;
+
+  // FACCH module
+  API_SIGNED d_facch_thr;
+
+  // IDS module
+  API_SIGNED d_max_ovsp_ul;
+  API_SIGNED d_sync_thres;
+  API_SIGNED d_idle_thres;
+  API_SIGNED d_m1_thres;
+  API_SIGNED d_max_ovsp_dl;
+  API_SIGNED d_gsm_bgd_mgt;
+
+  // FIR coefficients
+  API a_fir_holes[4];
+  API a_fir31_uplink[31];
+  API a_fir31_downlink[31];
+}
+T_PARAM_MCU_DSP;
+#elif (DSP == 33)
+typedef struct
+{
+  API_SIGNED d_transfer_rate;
+
+  // Common GSM/GPRS
+  // These words specified the latencies to applies on some peripherics
+  API_SIGNED d_lat_mcu_bridge;
+  API_SIGNED d_lat_mcu_hom2sam;
+  API_SIGNED d_lat_mcu_bef_fast_access;
+  API_SIGNED d_lat_dsp_after_sam;
+
+  // DSP Start address
+  API_SIGNED d_gprs_install_address;
+
+  API_SIGNED d_misc_config;
+
+  API_SIGNED d_cn_sw_workaround;
+
+  #if DCO_ALGO
+    API_SIGNED d_cn_dco_param;
+
+    API_SIGNED d_hole2_param[3];
+  #else
+    API_SIGNED d_hole2_param[4];
+  #endif
+
+    //...................................Frequency Burst.
+  API_SIGNED d_fb_margin_beg;
+  API_SIGNED d_fb_margin_end;
+  API_SIGNED d_nsubb_idle;
+  API_SIGNED d_nsubb_dedic;
+  API_SIGNED d_fb_thr_det_iacq;
+  API_SIGNED d_fb_thr_det_track;
+    //...................................Demodulation.
+  API_SIGNED d_dc_off_thres;
+  API_SIGNED d_dummy_thres;
+  API_SIGNED d_dem_pond_gewl;
+  API_SIGNED d_dem_pond_red;
+
+    //...................................TCH Full Speech.
+  API_SIGNED d_maccthresh1;
+  API_SIGNED d_mldt;
+  API_SIGNED d_maccthresh;
+  API_SIGNED d_gu;
+  API_SIGNED d_go;
+  API_SIGNED d_attmax;
+  API_SIGNED d_sm;
+  API_SIGNED d_b;
+
+  // V42Bis module
+  API_SIGNED d_v42b_switch_hyst;
+  API_SIGNED d_v42b_switch_min;
+  API_SIGNED d_v42b_switch_max;
+  API_SIGNED d_v42b_reset_delay;
+
+  //...................................TCH Half Speech.
+  API_SIGNED d_ldT_hr;
+  API_SIGNED d_maccthresh_hr;
+  API_SIGNED d_maccthresh1_hr;
+  API_SIGNED d_gu_hr;
+  API_SIGNED d_go_hr;
+  API_SIGNED d_b_hr;
+  API_SIGNED d_sm_hr;
+  API_SIGNED d_attmax_hr;
+
+  //...................................TCH Enhanced FR Speech.
+  API_SIGNED c_mldt_efr;
+  API_SIGNED c_maccthresh_efr;
+  API_SIGNED c_maccthresh1_efr;
+  API_SIGNED c_gu_efr;
+  API_SIGNED c_go_efr;
+  API_SIGNED c_b_efr;
+  API_SIGNED c_sm_efr;
+  API_SIGNED c_attmax_efr;
+
+  //...................................CHED
+  API_SIGNED d_sd_min_thr_tchfs;
+  API_SIGNED d_ma_min_thr_tchfs;
+  API_SIGNED d_md_max_thr_tchfs;
+  API_SIGNED d_md1_max_thr_tchfs;
+
+  API_SIGNED d_sd_min_thr_tchhs;
+  API_SIGNED d_ma_min_thr_tchhs;
+  API_SIGNED d_sd_av_thr_tchhs;
+  API_SIGNED d_md_max_thr_tchhs;
+  API_SIGNED d_md1_max_thr_tchhs;
+
+  API_SIGNED d_sd_min_thr_tchefs;
+  API_SIGNED d_ma_min_thr_tchefs;
+  API_SIGNED d_md_max_thr_tchefs;
+  API_SIGNED d_md1_max_thr_tchefs;
+
+  API_SIGNED d_wed_fil_ini;
+  API_SIGNED d_wed_fil_tc;
+  API_SIGNED d_x_min;
+  API_SIGNED d_x_max;
+  API_SIGNED d_slope;
+  API_SIGNED d_y_min;
+  API_SIGNED d_y_max;
+  API_SIGNED d_wed_diff_threshold;
+  API_SIGNED d_mabfi_min_thr_tchhs;
+
+  // FACCH module
+  API_SIGNED d_facch_thr;
+
+  // IDS module
+  API_SIGNED d_max_ovsp_ul;
+  API_SIGNED d_sync_thres;
+  API_SIGNED d_idle_thres;
+  API_SIGNED d_m1_thres;
+  API_SIGNED d_max_ovsp_dl;
+  API_SIGNED d_gsm_bgd_mgt;
+
+  // FIR coefficients
+  API a_fir_holes[4];
+  API a_fir31_uplink[31];
+  API a_fir31_downlink[31];
+}
+T_PARAM_MCU_DSP;
+
+#else
+
+typedef struct
+{
+    //...................................Frequency Burst.
+  API_SIGNED d_nsubb_idle;
+  API_SIGNED d_nsubb_dedic;
+  API_SIGNED d_fb_thr_det_iacq;
+  API_SIGNED d_fb_thr_det_track;
+    //...................................Demodulation.
+  API_SIGNED d_dc_off_thres;
+  API_SIGNED d_dummy_thres;
+  API_SIGNED d_dem_pond_gewl;
+  API_SIGNED d_dem_pond_red;
+  API_SIGNED hole[1];
+  API_SIGNED d_transfer_rate;
+    //...................................TCH Full Speech.
+  API_SIGNED d_maccthresh1;
+  API_SIGNED d_mldt;
+  API_SIGNED d_maccthresh;
+  API_SIGNED d_gu;
+  API_SIGNED d_go;
+  API_SIGNED d_attmax;
+  API_SIGNED d_sm;
+  API_SIGNED d_b;
+
+  #if (VOC == FR_HR) || (VOC == FR_HR_EFR)
+      //...................................TCH Half Speech.
+    API_SIGNED d_ldT_hr;
+    API_SIGNED d_maccthresh_hr;
+    API_SIGNED d_maccthresh1_hr;
+    API_SIGNED d_gu_hr;
+    API_SIGNED d_go_hr;
+    API_SIGNED d_b_hr;
+    API_SIGNED d_sm_hr;
+    API_SIGNED d_attmax_hr;
+  #endif
+
+  #if (VOC == FR_EFR) || (VOC == FR_HR_EFR)
+      //...................................TCH Enhanced FR Speech.
+    API_SIGNED c_mldt_efr;
+    API_SIGNED c_maccthresh_efr;
+    API_SIGNED c_maccthresh1_efr;
+    API_SIGNED c_gu_efr;
+    API_SIGNED c_go_efr;
+    API_SIGNED c_b_efr;
+    API_SIGNED c_sm_efr;
+    API_SIGNED c_attmax_efr;
+  #endif
+
+    //...................................TCH Full Speech.
+  API_SIGNED d_sd_min_thr_tchfs;
+  API_SIGNED d_ma_min_thr_tchfs;
+  API_SIGNED d_md_max_thr_tchfs;
+  API_SIGNED d_md1_max_thr_tchfs;
+
+  #if (VOC == FR) || (VOC == FR_HR) || (VOC == FR_HR_EFR)
+      //...................................TCH Half Speech.
+    API_SIGNED d_sd_min_thr_tchhs;
+    API_SIGNED d_ma_min_thr_tchhs;
+    API_SIGNED d_sd_av_thr_tchhs;
+    API_SIGNED d_md_max_thr_tchhs;
+    API_SIGNED d_md1_max_thr_tchhs;
+  #endif
+
+  #if (VOC == FR_EFR) || (VOC == FR_HR_EFR)
+      //...................................TCH Enhanced FR Speech.
+    API_SIGNED d_sd_min_thr_tchefs;                       //(24L   *C_POND_RED)
+    API_SIGNED d_ma_min_thr_tchefs;                       //(1200L *C_POND_RED)
+    API_SIGNED d_md_max_thr_tchefs;                       //(2000L *C_POND_RED)
+    API_SIGNED d_md1_max_thr_tchefs;                      //(160L  *C_POND_RED)
+    API_SIGNED d_hole1;
+  #endif
+
+  API_SIGNED d_wed_fil_ini;
+  API_SIGNED d_wed_fil_tc;
+  API_SIGNED d_x_min;
+  API_SIGNED d_x_max;
+  API_SIGNED d_slope;
+  API_SIGNED d_y_min;
+  API_SIGNED d_y_max;
+  API_SIGNED d_wed_diff_threshold;
+  API_SIGNED d_mabfi_min_thr_tchhs;
+  API_SIGNED d_facch_thr;
+  API_SIGNED d_dsp_test;
+
+
+  #if (DATA14_4 == 0 ) || (VOC == FR_HR_EFR)
+    API_SIGNED d_patch_addr1;
+    API_SIGNED d_patch_data1;
+    API_SIGNED d_patch_addr2;
+    API_SIGNED d_patch_data2;
+    API_SIGNED d_patch_addr3;
+    API_SIGNED d_patch_data3;
+    API_SIGNED d_patch_addr4;
+    API_SIGNED d_patch_data4;
+  #endif
+
+    //...................................
+  API_SIGNED d_version_number;    // DSP patch version
+  API_SIGNED d_ti_version;        // customer number. No more used since 1.5
+
+  API_SIGNED d_dsp_page;
+
+  #if IDS
+  API_SIGNED d_max_ovsp_ul;
+  API_SIGNED d_sync_thres;
+  API_SIGNED d_idle_thres;
+  API_SIGNED d_m1_thres;
+  API_SIGNED d_max_ovsp_dl;
+  #endif
+
+
+}
+T_PARAM_MCU_DSP;
+#endif
+
+#if (DSP_DEBUG_TRACE_ENABLE == 1)
+typedef struct
+{
+  API d_debug_ptr_begin;
+  API d_debug_ptr_end;
+}
+T_DB2_DSP_TO_MCU;
+#endif
+
+/*************************************************************/
+/* Time informations...                                      */
+/*************************************************************/
+/*                                                           */
+/*************************************************************/
+typedef struct
+{
+  UWORD32  fn;                   // FN count
+  UWORD16  t1;                   // FN div (26*51), (0..2047).
+  UWORD8   t2;                   // FN modulo 26.
+  UWORD8   t3;                   // FN modulo 51.
+  UWORD8   tc;                   // Scell: TC
+  UWORD8   fn_in_report;         // FN modulo 102 or 104.
+  UWORD16  fn_mod42432;          // FN modulo 42432.
+  UWORD8   fn_mod13;             // FN modulo 13.
+  #if L1_GPRS
+    UWORD8   fn_mod52;             // FN modulo 52.
+    UWORD8   fn_mod104;            // FN modulo 104.
+    UWORD8   fn_mod13_mod4;        // FN modulo 13 modulo 4.
+    UWORD32  block_id;             // Block ID
+  #endif
+}
+T_TIME_INFO;
+
+/*************************************************************/
+/* Idle mode tasks information...                            */
+/*************************************************************/
+/* must be filled according to Idle parameters...            */
+/* ...                                                       */
+/*************************************************************/
+typedef struct
+{
+  UWORD8 pg_position;    // Paging block starting frame.
+  UWORD8 extpg_position; // Extended Paging block starting frame.
+}
+T_IDLE_TASK_INFO;
+
+/*************************************************************/
+/* SDCCH information structure.                              */
+/*************************************************************/
+/*                                                           */
+/*                                                           */
+/*************************************************************/
+typedef struct
+{
+  UWORD8 dl_sdcch_position;
+  UWORD8 dl_sacch_position;
+  UWORD8 ul_sdcch_position;
+  UWORD8 ul_sacch_position;
+  UWORD8 mon_area_position;
+}
+T_SDCCH_DESC;
+
+/*************************************************************/
+/* Random Access Task information structure.                 */
+/*************************************************************/
+/*                                                           */
+/*                                                           */
+/*************************************************************/
+typedef struct
+{
+  WORD32  rand;             // 16 bit signed !!
+  UWORD8  channel_request;
+  UWORD8  ra_to_ctrl;
+  UWORD8  ra_num;
+}
+T_RA_TASK_INFO;
+
+/***************************************************************************************/
+/* Measurement info element for last input level table                                 */
+/***************************************************************************************/
+typedef struct
+{
+  UWORD8  lna_off;              // 1 if lna switch is off.
+  UWORD8  input_level;          // last measured input level in dbm.
+}
+T_INPUT_LEVEL;
+
+/***************************************************************************************/
+/* Measurement info element for Neighbor cell lists.                                   */
+/***************************************************************************************/
+typedef struct
+{
+  UWORD16  radio_freq;                // carrier id.
+  WORD32  acc;                  // Accumulation of measurements already performed.
+  UWORD8   nbr_meas;
+}
+T_MEAS_INFO;
+
+typedef struct
+{
+  UWORD16  bcch_freq;
+  WORD16   rxlev_acc;
+  UWORD8   rxlev_nbr_meas;
+}
+T5_CELL_MEAS;
+
+typedef struct
+{
+  T5_CELL_MEAS A[33];
+}
+T5_NCELL_MEAS;
+
+/***************************************************************************************/
+/* Measurement info element serving cell in dedicated mode                             */
+/***************************************************************************************/
+typedef struct
+{
+  WORD32   acc_sub;            // Subset:  accu. rxlev meas.
+  UWORD32  nbr_meas_sub;       // Subset:  nbr meas. of rxlev.
+  UWORD32  qual_acc_full;      // Fullset: accu. rxqual meas.
+  UWORD32  qual_acc_sub;       // Subset:  accu. rxqual meas.
+  UWORD32  qual_nbr_meas_full; // Fullset: nbr meas. of rxqual.
+  UWORD32  qual_nbr_meas_sub;  // Subset:  nbr meas. of rxqual.
+  UWORD8   dtx_used;           // Set when DTX as been used in current reporting period.
+}
+T_SMEAS;
+
+/***************************************************************************************/
+/*                                                                                     */
+/***************************************************************************************/
+typedef struct
+{
+  UWORD8  new_status;
+  UWORD8  current_status;
+  WORD32  time_to_exec;
+}
+T_TASK_STATUS;
+
+/***************************************************************************************/
+/* Cell/Carrier info: identity, RX level measurement, time info, gain controle info.   */
+/***************************************************************************************/
+typedef struct
+{
+  // Carrier/Cell Identity.
+  UWORD16  radio_freq;                  // carrier id.
+  WORD32   bsic;                   // BSIC.
+
+  // Time difference information.
+  UWORD32  fn_offset;              // offset between fn of this NCELL and the SCELL fn.
+  UWORD32  time_alignmt;           // time alignment.
+
+  // Receive Level Measurement info. structure.
+  T_MEAS_INFO    meas;
+  T_INPUT_LEVEL  traffic_meas;
+  T_INPUT_LEVEL  traffic_meas_beacon;
+
+  // Beacon frequency FIFO
+  UWORD8         buff_beacon[4];
+
+  #if L1_GPRS
+    // Receive Level measurements in packet transfer mode
+    // Daughter frequencies info.
+    T_INPUT_LEVEL  transfer_meas;
+
+    // Power reduction on serving cell PCCCH / PBCCH
+    UWORD8         pb;
+  #endif
+
+  // Number of unsuccessfull attempt on SB reading.
+  UWORD8  attempt_count;
+
+  // System information bitmap.
+  UWORD32  si_bit_map;             // System info. bitmap used for BCCH reading.
+}
+T_CELL_INFO;
+
+
+typedef struct
+{
+  UWORD16  A[32+1];
+}
+TC_CHAN_LIST;
+
+
+typedef struct
+{
+  UWORD8        num_of_chans;
+  TC_CHAN_LIST  chan_list;
+  BOOL          pwrc;
+  BOOL          dtx_allowed;
+  UWORD8        ba_id;
+}
+T_NEW_BA_LIST;
+
+
+typedef struct
+{
+  UWORD8         ba_id;            // BA list identifier.
+
+  UWORD32        nbr_carrier;      // number of carriers in the BA list.
+  UWORD8         np_ctrl;          // Tels the meas_manager which PCH burst has been controled.
+
+  UWORD8         first_index;      // First BA index measured in current session.
+
+  UWORD8         next_to_ctrl;     // Carrier for next power measurement result.
+  UWORD8         next_to_read;     // Measurement session time spent.
+
+  UWORD8         ms_ctrl;
+  UWORD8         ms_ctrl_d;
+  UWORD8         ms_ctrl_dd;
+
+  UWORD8         used_il   [2];
+  UWORD8         used_il_d [2];
+  UWORD8         used_il_dd[2];
+
+  UWORD8         used_lna   [2];
+  UWORD8         used_lna_d [2];
+  UWORD8         used_lna_dd[2];
+
+  T_MEAS_INFO    A[32+1];          // list of 32 neighbors + 1 serving.
+
+  BOOL           new_list_present;
+  T_NEW_BA_LIST  new_list;
+}
+T_BA_LIST;
+
+typedef struct
+{
+  UWORD16  radio_freq;
+  WORD16   accum_power_result;
+}
+T_POWER_ARRAY;
+
+typedef struct
+{
+  UWORD16         power_array_size;
+  T_POWER_ARRAY   power_array[NBMAX_CARRIER];
+}
+T_FULL_LIST_MEAS;
+
+typedef struct
+{
+  UWORD32            nbr_sat_carrier_ctrl;  // Nb of saturated carriers after a pm session in ctrl.
+  UWORD32            nbr_sat_carrier_read;  // Nb of saturated carriers after a pm session in read.
+
+  UWORD8             meas_1st_pass_ctrl;    // flag for 1st pass during a pm session in ctrl.
+  UWORD8             meas_1st_pass_read;    // flag for 1st pass during a pm session in read.
+
+  UWORD32            next_to_ctrl;          // Carrier for next power measurement result.
+  UWORD32            next_to_read;          // Measurement session time spent.
+
+  UWORD8             ms_ctrl;
+  UWORD8             ms_ctrl_d;
+  UWORD8             ms_ctrl_dd;
+
+  UWORD8             sat_flag[NBMAX_CARRIER];
+                                            // last measure was saturated, so not valid
+}
+T_FULL_LIST;
+
+/*************************************************************/
+/* Dedicated channel information structure...                */
+/*************************************************************/
+/*                                                           */
+/*************************************************************/
+typedef struct
+{
+  T_CHANNEL_DESCRIPTION  *desc_ptr;    // Ptr to the Active channel description
+  T_CHANNEL_DESCRIPTION  desc;         // Channel description for AFTER STI.
+  T_CHANNEL_DESCRIPTION  desc_bef_sti; // Channel description for BEFORE STI.
+  UWORD8                 mode;         // Channel mode.
+  UWORD8                 tch_loop;     // TCH loop mode.
+}
+T_CHANNEL_INFO;
+
+/*************************************************************/
+/* Mobile allocation information structure...                */
+/*************************************************************/
+/*                                                           */
+/*************************************************************/
+typedef struct
+{
+  T_MOBILE_ALLOCATION    *alist_ptr;         // Ptr to the Active frequency list
+  T_MOBILE_ALLOCATION    freq_list;
+  T_MOBILE_ALLOCATION    freq_list_bef_sti;
+}
+T_MA_INFO;
+
+/*************************************************************/
+/* Dedicated channel parameter structure...                  */
+/*************************************************************/
+/*                                                           */
+/*************************************************************/
+typedef struct
+{
+  T_CHANNEL_INFO  *achan_ptr;         // Ptr to the Active channel (chan1 or chan2)
+  T_CHANNEL_INFO  chan1;
+  T_CHANNEL_INFO  chan2;
+
+  T_MA_INFO       ma;
+
+  WORD32          serv_sti_fn;        // Chan. desc. change time, serving domain.(-1 for not in use).
+  WORD32          neig_sti_fn;        // Chan. desc. change time, neighbor domain.(-1 for not in use).
+
+  // Frequency redefinition ongoing flag.
+  //-------------------------------------
+  UWORD8          freq_redef_flag;    // Set to TRUE when a Freq. Redef. must be confirmed.
+
+  // Timing Advance management.
+  //---------------------------
+  UWORD8          timing_advance;     // Currently used TA.
+  UWORD8          new_timing_advance; // New timing advance value to be used on 1st frame
+                                             // of the next reporting period.
+  // TXPWR management.
+  //-------------------
+  UWORD8          new_target_txpwr;   // New Target value for TXPWR control algo.
+
+
+  T_CELL_INFO     cell_desc;          // Ptr to the new serving cell to download.
+
+  // DAI test mode... DTX allowed...
+  UWORD8          dai_mode;           // Dai test mode.
+  BOOL            dtx_allowed;        // DTX allowed (flag).
+
+  // Encryption...
+  T_ENCRYPTION_KEY  ciph_key;
+  UWORD8            a5mode;
+
+  // For handover...
+  UWORD8          ho_acc;             // Handover access (part of HO reference)
+  WORD32          ho_acc_to_send;     // Set to 4 for SYNC HO and to -1 for ASYNC HO.
+  UWORD8          t3124;              // Timer used in Async. Ho.
+
+  // For DPAGC algorithms purpose
+  UWORD8          G_all[DPAGC_FIFO_LEN];
+  UWORD8          G_DTX[DPAGC_FIFO_LEN];
+  #if (AMR == 1)
+    UWORD8          G_amr[DPAGC_AMR_FIFO_LEN];
+  #endif
+
+  #if IDS
+  // IDS mode configuration
+    UWORD8        ids_mode;           // Information transfert capability coded on 2 bits
+                                      // 0: speech
+                                      // 1: data service
+                                      // 2: fax service
+  #endif
+  #if (AMR == 1)
+    T_AMR_CONFIGURATION  amr_configuration;
+    UWORD8               cmip;
+  #endif
+}
+T_DEDIC_SET;
+
+/*************************************************************/
+/* Dedicated channel parameter structure...                  */
+/*************************************************************/
+/*                                                           */
+/*************************************************************/
+typedef struct
+{
+  T_DEDIC_SET  *aset;       // Ptr to the Active parameter set
+  T_DEDIC_SET  *fset;       // Ptr to the Free parameter set
+  T_DEDIC_SET  set[2];      // Table of parameter set
+
+  T_MPHC_CHANNEL_MODE_MODIFY_REQ  mode_modif;  // New mode for a given subchannel.
+  WORD32                            SignalCode;  // Message name, set when a new param. set is given
+
+#if (FF_L1_TCH_VOCODER_CONTROL == 1)
+  UWORD8       reset_sacch; // Flag to control SACCH reset (set during CHAN ASSIGN and Hand-overs)
+  UWORD8       vocoder_on; // Flag to control execution of vocoder
+  UWORD8       start_vocoder; // Flag to trigger start of vocoder (vocoder must be started with a synchro start)
+#endif
+
+  UWORD8       sync_tch;    // Flag used to synchronize TCH/F or TCH/H.
+  UWORD8       reset_facch; // Flag used to reset FACCH buffer header on new IAS/CAS/handover
+  UWORD8       stop_tch;    // Flag used to stop TCH/F or TCH/H (VEGA pwrdown).
+
+  UWORD16      radio_freq;       // ARFCN buffer (returned by hopping algo).
+  UWORD16      radio_freq_d;     // 1 frame  delayed ARFCN.
+  UWORD16      radio_freq_dd;    // 2 frames delayed ARFCN.
+
+  BOOL         pwrc;        // Flag used to reject serving pwr meas. on beacon.
+
+  BOOL         handover_fail_mode;  // Flag used to indicate that the L1 wait for an handover fail request
+  #if (AMR == 1)
+    BOOL         sync_amr;        // Flag used to tell to the DSP that a new AMR paramters is ready in the NDB.
+  #endif
+}
+T_DEDIC_PARAM;
+
+/*************************************************************/
+/* Power Management structure...                             */
+/*************************************************************/
+typedef struct
+{
+  // fields of TST_SLEEP_REQ primitive ....
+  UWORD8      mode_authorized;    // NONE,SMALL,BIG,DEEP,ALL
+  UWORD32           clocks;             // clocks disabled in Big sleep
+
+  // 32 Khz gauging ....
+  UWORD8      gauging_task;       // ACTIVE, INACTIVE,WAIT-IQ
+  UWORD8      gaug_duration;      // gauging task duration
+  UWORD8      gaug_count;         // gauging task duration compteur
+  UWORD32     histo[SIZE_HIST][2];// gauging histogram
+  UWORD8      enough_gaug;        // enough good gauging
+  UWORD8      paging_scheduled;   // first Paging Frame
+
+  // flags and variables for wake-up ....
+  UWORD8      Os_ticks_required;  // TRUE : Os ticks to recover
+  UWORD8      frame_adjust;       // TRUE : adjust 1 frame
+  UWORD32     sleep_duration;     // sleep duration computed at wakeup
+
+  // flag for sleep ....
+  UWORD8      sleep_performed;    // NONE,SMALL,BIG,DEEP,ALL
+
+  // status of clocks modules  ....
+  UWORD32           modules_status;     // modules clocks status
+
+  // constantes for 32Khz filtering
+  UWORD32     c_clk_min;          // INIT state
+  UWORD32     c_clk_init_min;     // INIT state
+  UWORD32     c_clk_max;          // INIT state
+  UWORD32     c_clk_init_max;     // INIT state
+  UWORD32     c_delta_hf_acquis;  // ACQUIS state
+  UWORD32     c_delta_hf_update;  // UPDATE state
+
+  // trace gauging parameters
+  UWORD8      state;   // state of the gauging
+  UWORD32     lf;      // Number of the 32KHz
+  UWORD32     hf;	     // HF: nb_hf( Number of the 13MHz *6 )
+  UWORD32     root;	   // root & frac: the ratio of the HF & LF in each state.
+  UWORD32     frac;    
+
+}
+T_POWER_MNGT;
+
+/*************************************************************/
+/* code version structure...                                 */
+/*************************************************************/
+typedef struct
+{
+    // DSP versions & checksum
+    UWORD16 dsp_code_version;
+    UWORD16 dsp_patch_version;
+    UWORD16 dsp_checksum;     // DSP checksum : patch+code
+
+    // MCU versions
+    UWORD16 mcu_tcs_program_release;
+    UWORD16 mcu_tcs_official;
+    UWORD16 mcu_tcs_internal;
+    UWORD16 mcu_tm_version;
+}
+T_VERSION;
+
+#if L1_RECOVERY
+  typedef struct
+  {
+    UWORD32 frame_count;
+  }
+  T_L1S_RECOVER;
+#endif
+
+/***************************************************************************************/
+/* L1S global variable structure...                                                    */
+/***************************************************************************************/
+typedef struct
+{
+  //++++++++++++++++++++
+  // Power Management...
+  //++++++++++++++++++++
+
+  T_POWER_MNGT pw_mgr;             // data base for power management
+
+  // Time for debug & Simulation purpose...
+  //  -> used as base time for BTS simulation.
+  //-----------------------------------------
+  UWORD32      debug_time;         // time counter used by L3 scenario...
+
+  // L1S Tasks management...
+  //-----------------------------------------
+  T_TASK_STATUS  task_status[NBR_DL_L1S_TASKS];        // ...in L1S, scheduler.
+  UWORD8         frame_count;                          // ...nb frames to go.
+  UWORD8         forbid_meas;                          // ...frames where meas. ctrl is not allowed.
+
+  // MFTAB management variables...
+  //-----------------------------------------
+  UWORD8         afrm;             // active frame ID.
+  T_MFTAB  FAR   mftab;            // Multiframe table.
+
+  // Control parameters...
+  //-----------------------------------------
+  UWORD32   afc_frame_count;  // AFC, Frame count between 2 calls to afc control function.
+  WORD16    afc;              // AFC, Common Frequency controle.
+  WORD16    toa_shift;        // TOA, value used to update the TOA
+  UWORD8    toa_snr_mask;     // TOA, mask counter to reject TOA/SNR results.
+
+  UWORD16   toa_period_count;  // TOA frame period used in PACKET TRANSFER MODE
+  BOOL      toa_update;       // TOA, is set at the end of the update period, toa update occurs on next valid frame
+
+  // Flag registers for RF task controle...
+  //-----------------------------------------
+  // Made these control registers short's as more than 8-bits required.
+  UWORD16   tpu_ctrl_reg;     // (x,x,x,x,SYNC,RX,TX,MS) RX/TX/MS/SYNC bit ON whenever an
+                              // according "controle" has been setup in the current frame.
+  UWORD16   dsp_ctrl_reg;     // (x,x,x,x,x,RX,TX,MS) RX/TX/MS bit ON whenever an
+                              // according "controle" has been setup in the current frame.
+
+  //+++++++++++++++++++
+  // Serving...
+  //+++++++++++++++++++
+
+  // Serving frame number management.
+  //---------------------------------
+  T_TIME_INFO      actual_time;          // Time info: current FN, T1, T2, T3...
+  T_TIME_INFO      next_time;            // Time info: next    FN, T1, T2, T3...
+  T_TIME_INFO      next_plus_time;       // Time info: next    FN, T1, T2, T3...
+
+  // TXPWR management.
+  //-------------------
+  UWORD8           reported_txpwr;       // Reported value for TXPWR.
+  UWORD8           applied_txpwr;        // Current value for TXPWR.
+
+  // Last RXQUAL value.
+  //-------------------
+  UWORD8           rxqual;               // last rxqual value.
+
+  // Hardware info.
+  //---------------
+  UWORD32          tpu_offset;           // Current TPU offset register value safeguard.
+  UWORD32          tpu_offset_hw;        // Current TPU offset register value copied in the TPU.
+  UWORD16          tpu_win;              // tpu window identifier inside a TDMA.
+
+  // code versions
+  T_VERSION version;
+
+  #if (L1_GTT == 1)
+    UWORD8         tty_state;  // state for L1S GTT manager.
+    #if L2_L3_SIMUL
+      // GTT test
+      T_GTT_TEST_L1S gtt_test;
+    #endif
+  #endif
+
+ #if (L1_DYN_DSP_DWNLD == 1)
+  UWORD8       dyn_dwnld_state; // state for L1S DYN DWNLD manager
+ #endif
+  #if (AUDIO_TASK == 1)
+    // Audio task.
+    //-----------------------------------------
+    BOOL                  l1_audio_it_com;                  // Flag to enable the ITCOM.
+    UWORD8                audio_state[NBR_AUDIO_MANAGER];  // state for L1S audio manager.
+    #if (MELODY_E1)
+      T_L1S_MELODY_TASK   melody0;
+      T_L1S_MELODY_TASK   melody1;
+    #endif
+    #if (VOICE_MEMO)
+      T_L1S_VM_TASK       voicememo;
+    #endif
+    #if (L1_VOICE_MEMO_AMR)
+      T_L1S_VM_AMR_TASK   voicememo_amr;
+    #endif
+    #if (SPEECH_RECO)
+      T_L1S_SR_TASK       speechreco;
+    #endif
+    #if (AEC)
+      T_L1S_AEC_TASK      aec;
+    #endif
+    #if (MELODY_E2)
+      T_L1S_MELODY_E2_COMMON_VAR  melody_e2;
+      T_L1S_MELODY_E2_TASK        melody0_e2;
+      T_L1S_MELODY_E2_TASK        melody1_e2;
+    #endif
+  #endif
+
+  UWORD8  last_used_txpwr;
+
+  #if L1_GPRS
+    BOOL    ctrl_synch_before;   //control of synchro for CCCH reading en TN-2
+  #endif
+
+  #if L1_RECOVERY
+    T_L1S_RECOVER    recovery;
+  #endif
+  BOOL spurious_fb_detected;
+  
+  // Handling DTX mode
+  BOOL dtx_ul_on;
+  WORD8 facch_bursts;
+
+  // DTX mode in AMR
+  BOOL dtx_amr_dl_on;   // set to TRUE when the AMR is in DTX mode in downlink
+
+}
+T_L1S_GLOBAL;
+
+/***************************************************************************************/
+/* L1A global variable structure...                                                    */
+/***************************************************************************************/
+typedef struct
+{
+  // State for L1A state machines...
+  //-----------------------------------------
+  UWORD8    state[NBR_L1A_PROCESSES];
+
+  // Measurement tasks management...
+  //-----------------------------------------
+  UWORD32   l1a_en_meas[NBR_L1A_PROCESSES];
+
+  // Flag for forward/delete message management.
+  //---------------------------------------------
+  UWORD8    l1_msg_forwarded;
+
+#if (L1_DYN_DSP_DWNLD == 1)
+  // Dynamic donload global variables
+  T_L1A_DYN_DWNLD_GLOBAL dyn_dwnld;
+#endif
+
+  // signal code indicating the reason of L1C_DEDIC_DONE
+  UWORD32   confirm_SignalCode;
+
+  // Trace the best frequencies reported in MPHC_RXLEV_IND 
+#if (L1_MPHC_RXLEV_IND_REPORT_SORT==1)
+  UWORD16 tab_index[MAX_MEAS_RXLEV_IND_TRACE];
+  UWORD16 max_report; //max number of fq reported, can be < MAX_MEAS_RXLEV_IND_TRACE if list is smaller
+#endif
+}
+T_L1A_GLOBAL;
+
+/***************************************************************************************/
+/* L1A -> L1S communication structure...                                               */
+/***************************************************************************************/
+typedef struct
+{
+  //+++++++++++++++++++
+  // Serving Cell...
+  //+++++++++++++++++++
+
+  // Serving Cell identity and information.
+  //---------------------------------------
+  T_CELL_INFO      Scell_info;
+  T_SMEAS          Smeas_dedic;
+
+  UWORD8           Scell_IL_for_rxlev;
+  T_INPUT_LEVEL    Scell_used_IL;
+  T_INPUT_LEVEL    Scell_used_IL_d;
+  T_INPUT_LEVEL    Scell_used_IL_dd;
+
+  T_BCCHS          nbcchs;
+  T_BCCHS          ebcchs;
+
+  // Synchro information.
+  //---------------------------------------
+  WORD8            tn_difference;        // Timeslot difference for next synchro.
+  UWORD8           dl_tn;                // Current timeslot for downlink stuffs.
+  #if L1_GPRS
+    UWORD8           dsp_scheduler_mode; // DSP Scheduler mode (GPRS or GSM).
+  #endif
+
+  // Idle parameters.
+  //-----------------
+  BOOL              bcch_combined;    // BS_CCCH_SDCCH_COMB flag.
+  UWORD8            bs_pa_mfrms;      // BS_PA_MFRMS parameter.
+  UWORD8            bs_ag_blks_res;   // BS_AG_BLKS_RES parameter.
+  UWORD8            ccch_group;       // CCCH_GROUP parameter.
+  UWORD8            page_group;       // PAGING_GROUP parameter.
+  UWORD8            page_block_index; // Paging block index paramter.
+  T_IDLE_TASK_INFO  idle_task_info;   // Idle task positions...
+  UWORD8            nb_pch_per_mf51;  // nbr paging blocks per mf51.
+
+  // CBCH parameters.
+  // ----------------
+  UWORD32               offset_tn0;         // TPU offset for TN=0 (used for SMSCB only).
+  T_CHANNEL_DESCRIPTION cbch_desc;          // CBCH (SMSCB) channel description.
+  T_MOBILE_ALLOCATION   cbch_freq_list;     // CBCH frequency list (hopping freq list).
+  UWORD32               mf51_fn;            // Starting FN (for CBCH reading.
+  UWORD8                cbch_start_in_mf51; // Starting position of CBCH in the MF51.
+  T_CBCH_HEAD_SCHEDULE  norm_cbch_schedule; // Normal CBCH scheduling structure.
+  T_CBCH_HEAD_SCHEDULE  ext_cbch_schedule;  // Extended CBCH scheduling structure.
+  T_CBCH_INFO_SCHEDULE  cbch_info_req;
+  BOOL                  pre_scheduled_cbch; // CBCH task has to be scheduled 1 FN in advance
+  BOOL                  change_synchro_cbch;// A Pseudo Synchro is needed to read CBCH block
+  UWORD8                tn_smscb;           // CBCH TN taking into account new Synchro
+
+  // Random Access information.
+  // ----------------------------
+  T_RA_TASK_INFO   ra_info;
+
+  // ADC management.
+  //-------------------
+  UWORD16          adc_mode;
+  UWORD8           adc_idle_period;
+  UWORD8           adc_traffic_period;
+  UWORD8           adc_cpt;
+
+  // TXPWR management.
+  //-------------------
+  UWORD8           powerclass_band1;     // Power class for the MS, given in ACCESS LINK mode (GSM Band).
+  UWORD8           powerclass_band2;     // Power class for the MS, given in ACCESS LINK mode (DCS Band).
+
+  // Dedicated parameters.
+  //----------------------
+  T_DEDIC_PARAM    dedic_set;             // Dedicated channel parameters.
+
+  //+++++++++++++++++++
+  // Neighbour Cells...
+  //+++++++++++++++++++
+
+  T_BCCHN_LIST     bcchn;
+  T_NSYNC_LIST     nsync;
+
+  // BA list / FULL list.
+  //---------------------
+  T_BA_LIST        ba_list;
+  T_FULL_LIST      full_list;
+  T_FULL_LIST_MEAS *full_list_ptr;
+
+  //+++++++++++++++++++
+  // L1S scheduler...
+  //+++++++++++++++++++
+
+  // L1S tasks management...
+  //-----------------------------------------
+  BOOL            task_param[NBR_DL_L1S_TASKS];   // ...synchro semaphores.
+  BOOL            l1s_en_task[NBR_DL_L1S_TASKS];  // ...enable register.
+  UWORD32         time_to_next_l1s_task;          // time to wait to reach starting frame of next task.
+  UWORD8          l1a_activity_flag;              // Activity flag.
+
+  // Measurement tasks management...
+  //-----------------------------------------
+  UWORD32         meas_param;         // Synchro semaphore bit register.
+  UWORD32         l1s_en_meas;        // Enable task bit register.
+
+  // L1 mode...
+  //-----------------------------------------
+  UWORD32         mode;               // functional mode: CS_MODE, I_MODE...
+
+  //++++++++++++++++++++++++
+  // Controle parameters...
+  //++++++++++++++++++++++++
+  UWORD32         fb_mode;            // Mode for fb detection algorithm.
+  UWORD8          toa_reset;          // Flag for TOA algo. reset.
+
+  // Input level memory for AGC management.
+  //---------------------------------------
+  T_INPUT_LEVEL    last_input_level[NBMAX_CARRIER+1];
+
+  BOOL          recovery_flag;       // in case of the system is down and needs to be recovered
+
+  //++++++++++++++++++++++++
+  // Audio task...
+  //++++++++++++++++++++++++
+  #if (AUDIO_TASK == 1)
+    #if (KEYBEEP)
+      T_KEYBEEP_TASK keybeep_task;
+    #endif
+    #if (TONE)
+      T_TONE_TASK    tone_task;
+    #endif
+    #if (MELODY_E1)
+      T_MELODY_TASK  melody0_task;
+      T_MELODY_TASK  melody1_task;
+    #endif
+    #if (VOICE_MEMO)
+      T_VM_TASK      voicememo_task;
+    #endif
+    #if (L1_VOICE_MEMO_AMR)
+      T_VM_AMR_TASK  voicememo_amr_task;
+    #endif
+    #if (SPEECH_RECO)
+      T_SR_TASK      speechreco_task;
+    #endif
+    #if (AEC)
+      T_AEC_TASK     aec_task;
+    #endif
+    #if (FIR)
+      T_FIR_TASK     fir_task;
+    #endif
+    #if (AUDIO_MODE)
+      T_AUDIO_MODE_TASK audio_mode_task;
+    #endif
+    #if (MELODY_E2)
+      T_MELODY_E2_TASK  melody0_e2_task;
+      T_MELODY_E2_TASK  melody1_e2_task;
+    #endif
+    #if (L1_CPORT == 1)
+      T_CPORT_TASK    cport_task;
+    #endif
+  #endif
+
+  //+++++++++++++
+  // GTT task
+  //+++++++++++++
+
+  #if (L1_GTT == 1)
+    T_GTT_TASK   gtt_task;
+  #endif
+
+  // Dynamic DSP download task
+   #if (L1_DYN_DSP_DWNLD == 1)
+      T_DYN_DWNLD_TASK_COMMAND       dyn_dwnld_task;
+   #endif
+
+}
+T_L1A_L1S_COM;
+
+/***************************************************************************************/
+/* L1A -> DSP communication structure...                                               */
+/***************************************************************************************/
+typedef struct
+{
+  UWORD8           dsp_w_page;       // Active page for ARM "writting" to DSP {0,1}.
+  UWORD8           dsp_r_page;       // Active page for ARM "reading" from DSP {0,1}.
+  UWORD8           dsp_r_page_used;  // Used in "l1_synch" to know if the read page must be chged.
+
+  T_DB_DSP_TO_MCU *dsp_db_r_ptr;     // MCU<->DSP comm. read  page (Double Buffered comm. memory).
+  T_DB_MCU_TO_DSP *dsp_db_w_ptr;     // MCU<->DSP comm. write page (Double Buffered comm. memory).
+  T_NDB_MCU_DSP   *dsp_ndb_ptr;      // MCU<->DSP comm. read/write (Non Double Buffered comm. memory).
+
+  T_PARAM_MCU_DSP *dsp_param_ptr;    // MCU<->DSP comm. read/write (Param comm. memory).
+
+ #if (DSP_DEBUG_TRACE_ENABLE == 1)
+   T_DB2_DSP_TO_MCU *dsp_db2_current_r_ptr;
+   T_DB2_DSP_TO_MCU *dsp_db2_other_r_ptr;
+ #endif
+}
+T_L1S_DSP_COM;
+
+/***************************************************************************************/
+/* L1A -> TPU communication structure...                                               */
+/***************************************************************************************/
+typedef struct
+{
+  UWORD8    tpu_w_page;       // Active page for ARM "writting" to TPU {0,1}.
+  UWORD32  *tpu_page_ptr;     // Current Pointer within the active "tpu_page".
+  #if (CODE_VERSION == SIMULATION)
+    T_reg_cmd  *reg_cmd;      // command register for TPU & DSP enabling and pages pgmation
+  #else
+    UWORD16    *reg_cmd;      // command register for TPU & DSP enabling and pages pgmation
+  #endif
+  UWORD32      *reg_com_int;  // communication int. register
+  UWORD32      *offset;       // offset register
+}
+T_L1S_TPU_COM;
+
+/***************************************************************************************/
+/* L1 configuration structure                                               */
+/***************************************************************************************/
+
+typedef struct
+{
+  UWORD8   id;                   //standard identifier
+
+
+
+  UWORD16  radio_band_support;
+
+
+  UWORD8   swap_iq_band1;
+  UWORD8   swap_iq_band2;
+
+  UWORD32  first_radio_freq;
+  UWORD32  first_radio_freq_band2;
+  UWORD32  radio_freq_index_offset;
+  UWORD32  nbmax_carrier;
+  UWORD32  nbmeas;
+  UWORD32  max_txpwr_band1;
+  UWORD32  max_txpwr_band2;
+  UWORD32  txpwr_turning_point;
+
+  UWORD16  cal_freq1_band1;
+  UWORD16  cal_freq1_band2;
+  UWORD16  g_magic_band1;
+  UWORD16  g_magic_band2;
+  UWORD16  lna_att_band1;
+  UWORD16  lna_att_band2;
+  UWORD16  lna_switch_thr_low_band1;
+  UWORD16  lna_switch_thr_low_band2;
+  UWORD16  lna_switch_thr_high_band1;
+  UWORD16  lna_switch_thr_high_band2;
+}
+T_L1_STD_CNFG;
+
+//RF dependent parameter definitions
+typedef struct
+{
+  UWORD16  rx_synth_setup_time;
+  UWORD8   rx_synth_load_split;
+  WORD16   rx_synth_start_time;
+  WORD16   rx_change_offset_time;
+  WORD16   rx_change_synchro_time;
+  UWORD8   rx_tpu_scenario_ending;
+
+  UWORD16  tx_synth_setup_time;
+  UWORD8   tx_synth_load_split;
+  WORD16   tx_synth_start_time;
+  WORD16   tx_change_offset_time;
+  WORD16   tx_nb_duration;
+  WORD16   tx_ra_duration;
+  UWORD8   tx_nb_load_split;
+  UWORD8   tx_ra_load_split;
+  UWORD8   tx_tpu_scenario_ending;
+
+  WORD16   fb26_anchoring_time;
+  WORD16   fb26_change_offset_time;
+
+  UWORD32  prg_tx_gsm;
+  UWORD32  prg_tx_dcs;
+
+  UWORD16  low_agc_noise_thr;
+  UWORD16  high_agc_sat_thr;
+
+  UWORD16  low_agc;
+  UWORD16  high_agc;
+
+  UWORD16  il_min;
+
+  UWORD16  fixed_txpwr;
+  WORD16   eeprom_afc;
+  WORD8    setup_afc_and_rf;
+
+  UWORD32  psi_sta_inv;
+  UWORD32  psi_st;
+  UWORD32  psi_st_32;
+  UWORD32  psi_st_inv;
+
+  #if (VCXO_ALGO==1)
+    WORD16   afc_dac_center;
+    WORD16   afc_dac_min;
+    WORD16   afc_dac_max;
+    WORD16   afc_snr_thr;
+    UWORD8   afc_algo;
+    UWORD8   afc_win_avg_size_M;
+    UWORD8   rgap_algo;
+    UWORD8   rgap_bad_snr_count_B;
+  #endif
+
+  UWORD8   guard_bits;
+
+  #if DCO_ALGO
+    BOOL     dco_enabled;
+  #endif
+
+  #if (ANLG_FAM == 1)
+    UWORD16 debug1;
+    UWORD16 afcctladd;
+    UWORD16 vbuctrl;
+    UWORD16 vbdctrl;
+    UWORD16 bbctrl;
+    UWORD16 apcoff;
+    UWORD16 bulioff;
+    UWORD16 bulqoff;
+    UWORD16 dai_onoff;
+    UWORD16 auxdac;
+    UWORD16 vbctrl;
+    UWORD16 apcdel1;
+  #endif
+  #if (ANLG_FAM == 2)
+    UWORD16 debug1;
+    UWORD16 afcctladd;
+    UWORD16 vbuctrl;
+    UWORD16 vbdctrl;
+    UWORD16 bbctrl;
+    UWORD16 bulgcal;
+    UWORD16 apcoff;
+    UWORD16 bulioff;
+    UWORD16 bulqoff;
+    UWORD16 dai_onoff;
+    UWORD16 auxdac;
+    UWORD16 vbctrl1;
+    UWORD16 vbctrl2;
+    UWORD16 apcdel1;
+    UWORD16 apcdel2;
+  #endif
+  #if (ANLG_FAM == 3)
+    UWORD16 debug1;
+    UWORD16 afcctladd;
+    UWORD16 vbuctrl;
+    UWORD16 vbdctrl;
+    UWORD16 bbctrl;
+    UWORD16 bulgcal;
+    UWORD16 apcoff;
+    UWORD16 bulioff;
+    UWORD16 bulqoff;
+    UWORD16 dai_onoff;
+    UWORD16 auxdac;
+    UWORD16 vbctrl1;
+    UWORD16 vbctrl2;
+    UWORD16 apcdel1;
+    UWORD16 apcdel2;
+    UWORD16 vbpop;
+    UWORD16 vau_delay_init;
+    UWORD16 vaud_cfg;
+    UWORD16 vauo_onoff;
+    UWORD16 vaus_vol;
+    UWORD16 vaud_pll;
+  #endif
+
+  #if L1_GPRS
+    UWORD16  toa_pm_thres;  // PM threshold for TOA algorithm feeding in packet transfer mode
+  #endif
+}
+T_L1_PARAMS;
+
+typedef struct
+{
+ T_L1_STD_CNFG  std;            //standard: GSM,GSM_E,GSM850,DCS,PCS,DUAL,DUALEXT
+ UWORD8         pwr_mngt;       //power management active
+ UWORD8         tx_pwr_code;
+ UWORD16        dwnld;
+ T_L1_PARAMS    params;
+ double         dpll;           //dpll factor
+
+ #if TESTMODE
+   //Define the TestMode flag and TestMode parameters
+   UWORD8  TestMode;
+
+   UWORD8  agc_enable;
+   UWORD8  afc_enable;
+   UWORD8  adc_enable;
+
+   T_TM_PARAMS tmode;  //TestMode parameters structure
+ #endif
+
+}
+T_L1_CONFIG;
+
+/***************************************************************************************/
+/* API HISR -> L1A communication structure... Defined in case dynamic download is defined                                          */
+/***************************************************************************************/
+/***************************************************************************************/
+/* Global API HISR -Defined in case dynamic download is defined                                          
+/***************************************************************************************/
+
+
+#if(L1_DYN_DSP_DWNLD==1)
+typedef struct
+{
+  T_L1A_DYN_DWNLD_HISR_COM dyn_dwnld;
+} T_L1A_API_HISR_COM;
+
+typedef struct
+{
+  T_L1_DYN_DWNLD_API_HISR dyn_dwnld;
+} T_L1_API_HISR;
+#endif