diff gsm-fw/L1/include/l1_const.h @ 530:25a7fe25864c

gsm-fw/L1/include: switch to LoCosto versions of all header files
author Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
date Fri, 01 Aug 2014 16:38:35 +0000
parents 1affe428bf72
children de635895e0be
line wrap: on
line diff
--- a/gsm-fw/L1/include/l1_const.h	Tue Jul 15 22:19:53 2014 +0000
+++ b/gsm-fw/L1/include/l1_const.h	Fri Aug 01 16:38:35 2014 +0000
@@ -6,6 +6,8 @@
  *  Copyright 2003 (C) Texas Instruments
  *
  ************* Revision Controle System Header *************/
+#ifndef  L1_CONST_H
+#define  L1_CONST_H
 
 #ifdef __MSDOS__              // Running BORLANDC compiler.
   #ifdef MVC
@@ -18,13 +20,11 @@
 #else                         // Running ARM compiler.
   #define FAR
   #define EXIT exit(0)
-  #undef  stricmp	// appease gcc
   #define stricmp strcmp
 #endif
 
 
 #if (CODE_VERSION != SIMULATION)
-  #undef  NULL		// appease gcc
   #define NULL                0
 #endif
 
@@ -57,7 +57,7 @@
 //-----------------------------
 // POWER MANAGEMENT............
 //-----------------------------
-#define MIN_SLEEP_TIME  (SETUP_FRAME+2+l1_config.params.setup_afc_and_rf) //HW WAKE-UP+MIN_SLEEP(2)+AFC RESTORE(2)
+#define MIN_SLEEP_TIME  (SETUP_FRAME+2+l1_config.params.rf_wakeup_tpu_scenario_duration) //HW WAKE-UP+MIN_SLEEP(2)+AFC RESTORE(rf_wakeup_tpu_scenario_duration)
 #define TPU_LOAD              01
 #define TPU_FREEZE            02
 
@@ -73,7 +73,7 @@
 #define MAX_BAD_GAUGING        3
 
 // GAUG_IN_32T =  (HF in clock of 13Mhz*dpll) * ( LF in Khz)
-#define GAUG_IN_32T           1348   // gauging duration is 1348*T32 measured on eva4
+#define GAUG_IN_32T           605   // gauging duration is 1348*T32 measured on eva4
 
 // DSP state need to be used to enter Deep Sleep mode
 #if (W_A_DSP_IDLE3 == 1)
@@ -154,6 +154,7 @@
 #define TCH_FS_BLEN           378                           // TCH FULL SPEECH block length
 #define TCH_HS_BLEN           211                           // TCH HALF SPEECH block length
 #define TCH_F_D_BLEN          456                           // FACCH, TCH_DATA block length
+#define MIN_ACCEPTABLE_SNR_FOR_SB 200  // threshold under which a SB shall be considered as not found
 
 // Define max PM/TDMA according to DSP code and TPU RAM size
 //----------------------------------------------------------
@@ -167,9 +168,9 @@
   #define NB_MEAS_MAX       4
   #define NB_MEAS_MAX_GPRS  4
 
-#elif ((CHIPSET == 5) || (CHIPSET == 6) || (CHIPSET == 7)  || (CHIPSET == 8) || (CHIPSET == 9) || (CHIPSET == 10) || (CHIPSET == 11) || (CHIPSET == 12))
+#elif ((CHIPSET == 5) || (CHIPSET == 6) || (CHIPSET == 7)  || (CHIPSET == 8) || (CHIPSET == 9) || (CHIPSET == 10) || (CHIPSET == 11) || (CHIPSET == 12) || (CHIPSET == 15))
 
-  #if (DSP == 33) || (DSP == 34) || (DSP == 35) || (DSP == 36)
+  #if (DSP == 33) || (DSP == 34) || (DSP == 35) || (DSP == 36) || (DSP == 37) || (DSP == 38) || (DSP == 39)
 
     // DSP code 33: upto 8 PMs with GSM and GPRS scheduler
 
@@ -211,279 +212,77 @@
 //----------------------------------------
 // LAYER 1 Asynchronous processes names...
 //----------------------------------------
-#if (TESTMODE) && !(L1_GPRS)
-  #if (AUDIO_TASK == 1)
-    #if (L1_GTT)
-      #if (OP_L1_STANDALONE == 1)
-        #define NBR_L1A_PROCESSES       45
-      #else    
-        #define NBR_L1A_PROCESSES       44
-      #endif
-    #else
-      #if (OP_L1_STANDALONE == 1)
-        #define NBR_L1A_PROCESSES       44
-      #else    
-        #define NBR_L1A_PROCESSES       43
-      #endif
-    #endif
-  #else
-    #if (L1_GTT)
-      #if (OP_L1_STANDALONE == 1)
-        #define NBR_L1A_PROCESSES       27
-      #else
-        #define NBR_L1A_PROCESSES       26
-      #endif
-  #else
-      #if (OP_L1_STANDALONE == 1)
-        #define NBR_L1A_PROCESSES       26
-      #else  
-        #define NBR_L1A_PROCESSES       25
-      #endif
-  #endif
-#endif
-#endif
+#define NBR_L1A_PROCESSES           63
 
-#if (TESTMODE) && (L1_GPRS)
-  #if (AUDIO_TASK == 1)
-    #if (L1_GTT)
-      #if (OP_L1_STANDALONE == 1)
-        #define NBR_L1A_PROCESSES       46
-      #else
-        #define NBR_L1A_PROCESSES       45
-      #endif
-    #else
-      #if (OP_L1_STANDALONE == 1)
-        #define NBR_L1A_PROCESSES       45
-      #else
-        #define NBR_L1A_PROCESSES       44
-      #endif
-    #endif
-  #else
-    #if (L1_GTT)
-      #if (OP_L1_STANDALONE == 1)
-        #define NBR_L1A_PROCESSES       28
-      #else
-        #define NBR_L1A_PROCESSES       27
-      #endif
-  #else
-      #if (OP_L1_STANDALONE == 1)
-        #define NBR_L1A_PROCESSES       27
-      #else
-        #define NBR_L1A_PROCESSES       26
-      #endif    
-  #endif
-#endif
+#define FULL_MEAS                         0   // l1a_full_list_meas_process(msg)
+#define CS_NORM                           1   // l1a_cs_bcch_process(msg)
+#define I_6MP                             2   // l1a_idle_6strongest_monitoring_process(msg)
+#define I_SCP                             3   // l1a_idle_serving_cell_paging_process(msg)
+#define I_SCB                             4   // l1a_idle_serving_cell_bcch_reading_process(msg)
+#define I_SMSCB                           5   // l1a_idle_smscb_process(msg)
+#define CR_B                              6   // l1a_cres_process(msg)
+#define ACCESS                            7   // l1a_access_process(msg)
+#define DEDICATED                         8   // l1a_dedicated_process(msg)
+#define I_FULL_MEAS                       9   // l1a_dedicated_process(msg)
+#define I_NMEAS                          10   // l1a_idle_ba_meas_process(msg)
+#define DEDIC_6                          11   // l1a_dedic6_process(msg)
+#define D_NMEAS                          12   // l1a_dedic_ba_list_meas_process(msg)
+#define HW_TEST                          13   // l1a_test_process(msg)
+#define I_BCCHN                          14   // l1a_idle_neighbour_cell_bcch_reading_process(msg)
+#define I_ADC                            15   // l1a_mmi_adc_req(msg)
+#define TMODE_FB0                        16   // l1a_tmode_fb0_process(msg)
+#define TMODE_FB1                        17   // l1a_tmode_fb1_process(msg)
+#define TMODE_SB                         18   // l1a_tmode_sb_process(msg)
+#define TMODE_BCCH                       19   // l1a_tmode_bcch_reading_process(msg)
+#define TMODE_RA                         20   // l1a_tmode_access_process(msg)
+#define TMODE_DEDICATED                  21   // l1a_tmode_dedicated_process(msg)
+#define TMODE_FULL_MEAS                  22   // l1a_tmode_full_list_meas_process(msg)
+#define TMODE_PM                         23   // l1a_tmode_meas_process(msg)
+#define TMODE_TRANSFER                   24   // l1a_tmode_transfer_process(msg)
+#define L1A_KEYBEEP_STATE                25   // l1a_mmi_keybeep_process(msg)
+#define L1A_TONE_STATE                   26   // l1a_mmi_tone_process(msg)
+#define L1A_MELODY0_STATE                27   // l1a_mmi_melody0_process(msg)
+#define L1A_MELODY1_STATE                28   // l1a_mmi_melody1_process(msg)
+#define L1A_VM_PLAY_STATE                29   // l1a_mmi_vm_playing_process(msg)
+#define L1A_VM_RECORD_STATE              30   // l1a_mmi_vm_recording_process(msg)
+#define L1A_SR_ENROLL_STATE              31   // l1a_mmi_sr_enroll_process(msg)
+#define L1A_SR_UPDATE_STATE              32   // l1a_mmi_sr_update_process(msg)
+#define L1A_SR_RECO_STATE                33   // l1a_mmi_sr_reco_process(msg)
+#define L1A_SR_UPDATE_CHECK_STATE        34   // l1a_mmi_sr_update_check_process(msg)
+#define L1A_AEC_STATE                    35   // l1a_mmi_aec_process(msg)
+#define L1A_FIR_STATE                    36   // l1a_mmi_fir_process(msg)
+#define L1A_AUDIO_MODE_STATE             37   // l1a_mmi_audio_mode_process(msg)
+#define L1A_MELODY0_E2_STATE             38   // l1a_mmi_melody0_e2_process(msg)
+#define L1A_MELODY1_E2_STATE             39   // l1a_mmi_melody1_e2_process(msg)
+#define L1A_VM_AMR_PLAY_STATE            40   // l1a_mmi_vm_amr_playing_process(msg)
+#define L1A_VM_AMR_RECORD_STATE          41   // l1a_mmi_vm_amr_recording_process(msg)
+#define L1A_CPORT_STATE                  42   // l1a_mmi_cport_process(msg)
+#define L1A_AUDIO_ONOFF_STATE            43   // l1a_mmi_audio_onoff_process(msg)
+#define L1A_GTT_STATE                    44   // l1a_mmi_gtt_process(msg)
+#define INIT_L1                          45   // l1a_init_layer1_process(msg)
+#define HSW_CONF                         46   // l1a_test_config_process(msg)
+#define L1A_MP3_STATE                    47   // l1a_mmi_mp3_process(msg)
+#define TMODE_AUDIO_STEREOPATH_DRV_STATE 48   // l1a_tmode_audio_stereopath_process(msg)
+#define L1A_EXT_AUDIO_MGT_STATE          49   // l1a_mmi_ext_audio_mgt_process(msg)
+#define L1A_ANR_STATE                    50   // l1a_mmi_anr_process(msg)
+#define L1A_IIR_STATE                    51   // l1a_mmi_iir_process(msg)
+#define L1A_LIMITER_STATE                52   // l1a_mmi_limiter_process(msg)
+#define L1A_ES_STATE                     53   // l1a_mmi_es_process(msg)
+#define L1A_MIDI_STATE                   54   // l1a_mmi_midi_process(msg)
+#define L1A_AGC_UL_STATE                 55   // l1a_mmi_agc_ul_process(msg)
+#define L1A_AGC_DL_STATE                 56   // l1a_mmi_agc_dl_process(msg)
+#define L1A_DRC_STATE                    57   // l1a_mmi_drc_process(msg)
+#define L1A_WCM_STATE                    58   // l1a_mmi_wcm_process(msg)
+#define L1A_AAC_STATE                    59   // l1a_mmi_aac_process(msg)
+#if (L1_VOCODER_IF_CHANGE == 1)
+#define L1A_VOCODER_CFG_STATE            60   // l1a_mmi_vocoder_cfg_process
 #endif
-
-#if !(TESTMODE)
-  #if (AUDIO_TASK == 1)
-    #if (L1_GTT)
-       #if (OP_L1_STANDALONE == 1)
-          #define NBR_L1A_PROCESSES       37
-       #else
-          #define NBR_L1A_PROCESSES       36
-       #endif
-    #else
-      #if (OP_L1_STANDALONE == 1)
-         #define NBR_L1A_PROCESSES       36
-      #else
-         #define NBR_L1A_PROCESSES       35
-      #endif
-    #endif
-  #else
-    #if (L1_GTT)
-      #if (OP_L1_STANDALONE == 1)
-          #define NBR_L1A_PROCESSES       19
-      #else
-          #define NBR_L1A_PROCESSES       18
-      #endif
-  #else
-      #if (OP_L1_STANDALONE == 1)
-          #define NBR_L1A_PROCESSES       18
-      #else
-          #define NBR_L1A_PROCESSES       17
-      #endif
-  #endif
-#endif
+#if (L1_PCM_EXTRACTION)
+#define L1A_PCM_DOWNLOAD_STATE           61
+#define L1A_PCM_UPLOAD_STATE             62
 #endif
 
 
-#define FULL_MEAS                0   // l1a_full_list_meas_process(msg)
-#define CS_NORM                  1   // l1a_cs_bcch_process(msg)
-#define I_6MP                    2   // l1a_idle_6strongest_monitoring_process(msg)
-#define I_SCP                    3   // l1a_idle_serving_cell_paging_process(msg)
-#define I_SCB                    4   // l1a_idle_serving_cell_bcch_reading_process(msg)
-#define I_SMSCB                  5   // l1a_idle_smscb_process(msg)
-#define CR_B                     6   // l1a_cres_process(msg)
-#define ACCESS                   7   // l1a_access_process(msg)
-#define DEDICATED                8   // l1a_dedicated_process(msg)
-#define I_FULL_MEAS              9   // l1a_dedicated_process(msg)
-#define I_NMEAS                 10   // l1a_idle_ba_meas_process(msg)
-#define DEDIC_6                 11   // l1a_dedic6_process(msg)
-#define D_NMEAS                 12   // l1a_dedic_ba_list_meas_process(msg)
-#define HW_TEST                 13   // l1a_test_process(msg)
-#define I_BCCHN                 14   // l1a_idle_neighbour_cell_bcch_reading_process(msg)
-#define I_ADC                   15   // l1a_mmi_adc_req(msg)
-
-#if (TESTMODE) && !(L1_GPRS)
-  #define TMODE_FB0                     16   // l1a_tmode_fb0_process(msg)
-  #define TMODE_FB1                     17   // l1a_tmode_fb1_process(msg)
-  #define TMODE_SB                      18   // l1a_tmode_sb_process(msg)
-  #define TMODE_BCCH                    19   // l1a_tmode_bcch_reading_process(msg)
-  #define TMODE_RA                      20   // l1a_tmode_access_process(msg)
-  #define TMODE_DEDICATED               21   // l1a_tmode_dedicated_process(msg)
-  #define TMODE_FULL_MEAS               22   // l1a_tmode_full_list_meas_process(msg)
-  #define TMODE_PM                      23   // l1a_tmode_meas_process(msg)
-  #if (AUDIO_TASK == 1)
-    #define L1A_KEYBEEP_STATE           24   // l1a_mmi_keybeep_process(msg)
-    #define L1A_TONE_STATE              25   // l1a_mmi_tone_process(msg)
-    #define L1A_MELODY0_STATE           26   // l1a_mmi_melody0_process(msg)
-    #define L1A_MELODY1_STATE           27   // l1a_mmi_melody1_process(msg)
-    #define L1A_VM_PLAY_STATE           28   // l1a_mmi_vm_playing_process(msg)
-    #define L1A_VM_RECORD_STATE         29   // l1a_mmi_vm_recording_process(msg)
-    #define L1A_SR_ENROLL_STATE         30   // l1a_mmi_sr_enroll_process(msg)
-    #define L1A_SR_UPDATE_STATE         31   // l1a_mmi_sr_update_process(msg)
-    #define L1A_SR_RECO_STATE           32   // l1a_mmi_sr_reco_process(msg)
-    #define L1A_SR_UPDATE_CHECK_STATE   33   // l1a_mmi_sr_update_check_process(msg)
-    #define L1A_AEC_STATE               34   // l1a_mmi_aec_process(msg)
-    #define L1A_FIR_STATE               35   // l1a_mmi_fir_process(msg)
-    #define L1A_AUDIO_MODE_STATE        36   // l1a_mmi_audio_mode_process(msg)
-    #define L1A_MELODY0_E2_STATE        37   // l1a_mmi_melody0_e2_process(msg)
-    #define L1A_MELODY1_E2_STATE        38   // l1a_mmi_melody1_e2_process(msg)
-    #define L1A_VM_AMR_PLAY_STATE       39   // l1a_mmi_vm_amr_playing_process(msg)
-    #define L1A_VM_AMR_RECORD_STATE     40   // l1a_mmi_vm_amr_recording_process(msg)
-    #define L1A_CPORT_STATE             41   // l1a_mmi_cport_process(msg)
-    #if (L1_GTT == 1)
-      #define L1A_GTT_STATE               42   // l1a_mmi_gtt_process(msg)
-      #define INIT_L1                     43   // l1a_init_layer1_process(msg)
-      #if (OP_L1_STANDALONE == 1)
-        #define HSW_CONF                  44   // l1a_test_config_process(msg)
-      #endif
-    #else
-      #define INIT_L1                     42   // l1a_init_layer1_process(msg)
-      #if (OP_L1_STANDALONE == 1)
-        #define HSW_CONF                  43  // l1a_test_config_process(msg)
-      #endif
-    #endif
-  #else
-    #if (L1_GTT == 1)
-      #define L1A_GTT_STATE               24   // l1a_mmi_gtt_process(msg)
-      #define INIT_L1                     25   // l1a_init_layer1_process(msg)
-      #if (OP_L1_STANDALONE == 1)
-        #define HSW_CONF                  26  // l1a_test_config_process(msg)
-      #endif
-    #else
-      #define INIT_L1                     24   // l1a_init_layer1_process(msg)
-      #if (OP_L1_STANDALONE == 1)
-        #define HSW_CONF                  25  // l1a_test_config_process(msg)
-      #endif
-    #endif
-  #endif
-#endif
-
-#if (TESTMODE) && (L1_GPRS)
-  #define TMODE_FB0                     16   // l1a_tmode_fb0_process(msg)
-  #define TMODE_FB1                     17   // l1a_tmode_fb1_process(msg)
-  #define TMODE_SB                      18   // l1a_tmode_sb_process(msg)
-  #define TMODE_BCCH                    19   // l1a_tmode_bcch_reading_process(msg)
-  #define TMODE_RA                      20   // l1a_tmode_access_process(msg)
-  #define TMODE_DEDICATED               21   // l1a_tmode_dedicated_process(msg)
-  #define TMODE_FULL_MEAS               22   // l1a_tmode_full_list_meas_process(msg)
-  #define TMODE_PM                      23   // l1a_tmode_meas_process(msg)
-  #define TMODE_TRANSFER                24   // l1a_tmode_transfer_process(msg)
-  #if (AUDIO_TASK == 1)
-    #define L1A_KEYBEEP_STATE           25   // l1a_mmi_keybeep_process(msg)
-    #define L1A_TONE_STATE              26   // l1a_mmi_tone_process(msg)
-    #define L1A_MELODY0_STATE           27   // l1a_mmi_melody0_process(msg)
-    #define L1A_MELODY1_STATE           28   // l1a_mmi_melody1_process(msg)
-    #define L1A_VM_PLAY_STATE           29   // l1a_mmi_vm_playing_process(msg)
-    #define L1A_VM_RECORD_STATE         30   // l1a_mmi_vm_recording_process(msg)
-    #define L1A_SR_ENROLL_STATE         31   // l1a_mmi_sr_enroll_process(msg)
-    #define L1A_SR_UPDATE_STATE         32   // l1a_mmi_sr_update_process(msg)
-    #define L1A_SR_RECO_STATE           33   // l1a_mmi_sr_reco_process(msg)
-    #define L1A_SR_UPDATE_CHECK_STATE   34   // l1a_mmi_sr_update_check_process(msg)
-    #define L1A_AEC_STATE               35   // l1a_mmi_aec_process(msg)
-    #define L1A_FIR_STATE               36   // l1a_mmi_fir_process(msg)
-    #define L1A_AUDIO_MODE_STATE        37   // l1a_mmi_audio_mode_process(msg)
-    #define L1A_MELODY0_E2_STATE        38   // l1a_mmi_melody0_e2_process(msg)
-    #define L1A_MELODY1_E2_STATE        39   // l1a_mmi_melody1_e2_process(msg)
-    #define L1A_VM_AMR_PLAY_STATE       40   // l1a_mmi_vm_amr_playing_process(msg)
-    #define L1A_VM_AMR_RECORD_STATE     41   // l1a_mmi_vm_amr_recording_process(msg)
-    #define L1A_CPORT_STATE             42   // l1a_mmi_cport_process(msg)
-    #if (L1_GTT == 1)
-      #define L1A_GTT_STATE             43
-      #define INIT_L1                   44   // l1a_init_layer1_process(msg)
-      #if (OP_L1_STANDALONE == 1)
-        #define HSW_CONF                45  // l1a_test_config_process(msg)
-      #endif
-    #else
-      #define INIT_L1                   43   // l1a_init_layer1_process(msg)
-      #if (OP_L1_STANDALONE == 1)
-        #define HSW_CONF                44  // l1a_test_config_process(msg)
-      #endif
-    #endif
-  #else
-    #if (L1_GTT == 1)
-      #define L1A_GTT_STATE             25
-      #define INIT_L1                   26   // l1a_init_layer1_process(msg)
-      #if (OP_L1_STANDALONE == 1)
-        #define HSW_CONF                27  // l1a_test_config_process(msg)
-      #endif
-    #else
-      #define INIT_L1                   25   // l1a_init_layer1_process(msg)
-      #if (OP_L1_STANDALONE == 1)
-        #define HSW_CONF                26  // l1a_test_config_process(msg)
-      #endif
-    #endif
-  #endif
-#endif
-
-#if !(TESTMODE) && (AUDIO_TASK == 1)
-  #define L1A_KEYBEEP_STATE             16   // l1a_mmi_keybeep_process(msg)
-  #define L1A_TONE_STATE                17   // l1a_mmi_tone_process(msg)
-  #define L1A_MELODY0_STATE             18   // l1a_mmi_melody0_process(msg)
-  #define L1A_MELODY1_STATE             19   // l1a_mmi_melody1_process(msg)
-  #define L1A_VM_PLAY_STATE             20   // l1a_mmi_vm_playing_process(msg)
-  #define L1A_VM_RECORD_STATE           21   // l1a_mmi_vm_recording_process(msg)
-  #define L1A_SR_ENROLL_STATE           22   // l1a_mmi_sr_enroll_process(msg)
-  #define L1A_SR_UPDATE_STATE           23   // l1a_mmi_sr_update_process(msg)
-  #define L1A_SR_RECO_STATE             24   // l1a_mmi_sr_reco_process(msg)
-  #define L1A_SR_UPDATE_CHECK_STATE     25   // l1a_mmi_sr_update_check_process(msg)
-  #define L1A_AEC_STATE                 26   // l1a_mmi_aec_process(msg)
-  #define L1A_FIR_STATE                 27   // l1a_mmi_fir_process(msg)
-  #define L1A_AUDIO_MODE_STATE          28   // l1a_mmi_audio_mode_process(msg)
-  #define L1A_MELODY0_E2_STATE          29   // l1a_mmi_melody0_e2_process(msg)
-  #define L1A_MELODY1_E2_STATE          30   // l1a_mmi_melody1_e2_process(msg)
-  #define L1A_VM_AMR_PLAY_STATE         31   // l1a_mmi_vm_amr_playing_process(msg)
-  #define L1A_VM_AMR_RECORD_STATE       32   // l1a_mmi_vm_amr_recording_process(msg)
-  #define L1A_CPORT_STATE               33   // l1a_mmi_cport_process(msg)
-  #if (L1_GTT == 1)
-    #define L1A_GTT_STATE               34   // l1a_mmi_tty_process(msg)
-    #define INIT_L1                     35   // l1a_init_layer1_process(msg)
-    #if (OP_L1_STANDALONE == 1)
-      #define HSW_CONF                  36   // l1a_test_config_process(msg)
-    #endif
-  #else
-    #define INIT_L1                     34   // l1a_init_layer1_process(msg)
-    #if (OP_L1_STANDALONE == 1)
-      #define HSW_CONF                  35   // l1a_test_config_process(msg)
-    #endif
-  #endif
-#elif !(TESTMODE) && !(AUDIO_TASK == 1)
-  #if (L1_GTT == 1)
-    #define L1A_GTT_STATE               16   // l1a_mmi_tty_process(msg)
-    #define INIT_L1                     17   // l1a_init_layer1_process(msg)
-    #if (OP_L1_STANDALONE == 1)
-      #define HSW_CONF                  18   // l1a_test_config_process(msg)
-    #endif   
-  #else
-    #define INIT_L1                     16   // l1a_init_layer1_process(msg)
-    #if (OP_L1_STANDALONE == 1)
-      #define HSW_CONF                  17   // l1a_test_config_process(msg)
-    #endif  
-  #endif
-#endif
-
 #if TESTMODE
   #define TMODE_UPLINK            (1<<0)
   #define TMODE_DOWNLINK          (1<<1)
@@ -503,9 +302,18 @@
 
 // Tasks in the order of their priority (low to high).
 
+#if (GSM_IDLE_RAM != 0)
+  #define INT_RAM_GSM_IDLE_L1S_PROCESSES1 0x00000618 // PNP, PEP, NP, EP only are supported
+#endif
+
+
 #if !L1_GPRS
 
+#if ((REL99 == 1) && (FF_BHO == 1))
+  #define NBR_DL_L1S_TASKS  33
+#else //#if ((REL99 == 1) && (FF_BHO == 1))
   #define NBR_DL_L1S_TASKS  32
+#endif //#if ((REL99 == 1) && (FF_BHO == 1))
 
   //GSM_TASKS/
   #define HWTEST       0  // DSP checksum reading
@@ -539,13 +347,25 @@
   #define TCHTF       28  // TCH Full rate
   #define TCHTH       29  // TCH Half rate
   #define BCCHN_TOP   30  // BCCH Neighbour TOP priority in Idle mode
+#if ((REL99 == 1) && (FF_BHO == 1))
+  #define FBSB        31  // Freq + Synchro Burst Reading in Blind Handover
+  #define SYNCHRO     32  // synchro task: L1S reset
+#else //#if ((REL99 == 1) && (FF_BHO == 1))
   #define SYNCHRO     31  // synchro task: L1S reset
+#endif //#if ((REL99 == 1) && (FF_BHO == 1))
   //END_GSM_TASKS/
 
 #else
 
+#if ((REL99 == 1) && (FF_BHO == 1))
+  #define NBR_DL_L1S_TASKS  46
+#else //#if ((REL99 == 1) && (FF_BHO == 1))
   #define NBR_DL_L1S_TASKS  45
+#endif //#if ((REL99 == 1) && (FF_BHO == 1))
 
+#if (FF_REPEATED_SACCH == 1 )
+  #define  REPEATED_SACCH_ENABLE  1
+#endif /*  FF_REPEATED_SACCH */
   //GPRS_TASKS/
   #define HWTEST       0   // DSP checksum reading
   #define ADC_CSMODE0  1   // ADC task in CS_MODE0 mode
@@ -557,7 +377,7 @@
   #define PRACH        7   // Packet Random Access Channel
   #define ITMEAS       8   // Interference measurements
   #define FBNEW        9   // Frequency burst search (Idle mode)
-  #define SBCONF       10   // Synchro. burst confirmation
+  #define SBCONF       10  // Synchro. burst confirmation
   #define SB2          11  // Synchro. burst read (1 frame uncertainty / SB position)
   #define PTCCH        12  // Packet Timing Advance control channel
   #define FB26         13  // Frequency burst search, dedic/transfer mode MF26 or MF52
@@ -591,11 +411,20 @@
   #define NP           41  // Normal paging Reading
   #define EP           42  // Extended paging Reading
   #define BCCHN_TOP    43  // BCCH Neighbour TOP priority in Idle mode
+#if ((REL99 == 1) && (FF_BHO == 1))
+  #define FBSB             44  // Freq + Synchro Burst Reading in Blind Handover
+  #define SYNCHRO          45  // synchro task: L1S reset
+#else //#if ((REL99 == 1) && (FF_BHO == 1))
   #define SYNCHRO      44  // synchro task: L1S reset
+#endif //#if ((REL99 == 1) && (FF_BHO == 1))
   //END_GPRS_TASKS/
 
 #endif
 
+#if (GSM_IDLE_RAM != 0)
+  #define SIZE_TAB_L1S_MONITOR (((NBR_DL_L1S_TASKS-1) >> 5) + 1)
+#endif
+
 //------------------------------------
 // LAYER 1 API
 //------------------------------------
@@ -603,27 +432,42 @@
 #define MCSI_PORT2 1
 
 
-//---------------------------------
-// DSP vocoder Enable/ Disable
-//---------------------------------
+#if (W_A_DSP_PR20037 == 1)
+ //---------------------------------
+ // DSP vocoder Enable/ Disable
+ //---------------------------------
+ #if (FF_L1_TCH_VOCODER_CONTROL == 1)
+ #if (L1_VOCODER_IF_CHANGE == 0)
+   #define TCH_VOCODER_DISABLE_REQ          0
+   #define TCH_VOCODER_ENABLE_REQ           1
+   #define TCH_VOCODER_ENABLED              2
+   #define TCH_VOCODER_DISABLED             3
+#else
+   #define TCH_VOCODER_RESET_COMMAND                0
+   #define TCH_VOCODER_ENABLE_COMMAND               1
+   #define TCH_VOCODER_DISABLE_COMMAND              2
+#endif // L1_VOCODER_IF_CHANGE == 0
 
-#if (L1M_WAIT_DSP_RESTART_AFTER_VOCODER_ENABLE ==1)
-  #if (FF_L1_TCH_VOCODER_CONTROL == 1)
-    #define TCH_VOCODER_DISABLE_REQ          0
-    #define TCH_VOCODER_ENABLE_REQ           1
-    #define TCH_VOCODER_ENABLED              2
-    #define TCH_VOCODER_DISABLED             3
+  #if (W_A_WAIT_DSP_RESTART_AFTER_VOCODER_ENABLE ==1)
+    // Number of TDMA wait frames until the DSP output is steady
+   #define DSP_VOCODER_ON_TRANSITION      165
+  #endif
+ #endif // FF_L1_TCH_VOCODER_CONTROL
+#endif // W_A_DSP_PR20037
 
-    // Number of TDMA wait frames until the DSP output is steady
-    #define DSP_VOCODER_ON_TRANSITION      165   
-  #endif // FF_L1_TCH_VOCODER_CONTROL
-#endif 
 
 //---------------------------------
 // Handover Finished cause defines.
 //---------------------------------
 #define HO_COMPLETE              0
 #define HO_TIMEOUT               1
+#if ((REL99 == 1) && (FF_BHO == 1))
+  #define HO_FB_FAIL             2
+  #define HO_SB_FAIL             3
+
+  #define NORMAL_HANDOVER        0
+  #define BLIND_HANDOVER         1
+#endif
 
 //---------------------------------
 // FB detection algorithm defines.
@@ -632,6 +476,13 @@
 #define FB_MODE_1                1                          // FB detec. mode 1.
 
 //---------------------------------
+// SB acquisition phase.
+//---------------------------------
+#if ((REL99 == 1) && ((FF_BHO == 1) || (FF_RTD == 1)))
+  #define SB_ACQUISITION_PHASE      5
+#endif
+
+//---------------------------------
 // AFC control defines.
 //---------------------------------
 #define AFC_INIT                 1
@@ -644,11 +495,30 @@
 #define AFC_INIT_MAX             5
 #define AFC_INIT_MIN             6
 #endif
+
+// For Locosto
+#define L1_AFC_MANUAL_MODE  0
+#define L1_AFC_SCRIPT_MODE  1
+#define L1_AFC_NONE         2
+
+#define L1_CTL_ZERO_IF 2
+#define L1_CTL_LOW_IF 1
+
+#define  L1_IL_INVALID 0
+#define  L1_IL_VALID 1
+
+
+// End Locosto
+
 //---------------------------------
 // TOA control defines.
 //---------------------------------
 #define TOA_INIT                 1
 #define TOA_RUN                  2
+#if (TOA_ALGO == 2)
+  // In this version TOA is refreshed every 2 seconds
+  #define   L1_TOA_UPDATE_TIME  ((UWORD32)(433))
+#endif
 
 //---------------------------------
 // Neighbour Synchro possible status.
@@ -669,10 +539,20 @@
   #define MAX_BLOCK_ID   ((UWORD32) (3 * (UWORD32) (MAX_FN / 13))) // Block ID corresponding to fn = FN MAX
 #endif
 
+#if FF_L1_IT_DSP_DTX
+  // dtx_status states
+  #define DTX_AVAILABLE          0
+  #define DTX_AWAITED            1
+  #define DTX_IT_DSP             2
+
+  // Latency time for Fast DTX availability upon channel start (TDMAs)
+  #define FAST_DTX_LATENCY       10 //chaged from value-4 -CQ- 74387
+#endif
+
 //--------------------------------------------------------
 // standard specific constants used in l1_config.std.xxx
 //--------------------------------------------------------
-
+#if (L1_FF_MULTIBAND == 0) 
 
 // GSM
 #define FIRST_ARFCN_GSM               1    // 1st arfcn is 1
@@ -718,6 +598,385 @@
 #define BAND1    1
 #define BAND2    2
 
+#else // L1_FF_MULTIBAND == 1 below
+
+/***** GSM Band Identifiers to be communicated to the L3, these indexes are fixed *****************/
+#define PGSM900                       0
+#define GSM850                        1
+#define PCS1900                       2
+#define DCS1800                       3   
+#define GSM750                        4
+#define GSM480                        5
+#define GSM450                        6
+#define T_GSM380                      7
+#define T_GSM410                      8 
+#define T_GSM900                      9 
+#define EGSM900                      10 
+#define RGSM900                      11
+
+/***** PGSM900, EGSM900 and RGSM900 are seen a single band GSM900 **********************************/
+#define GSM900                       12                    
+
+/***** The total number of bands specified in the 3GPP Specs ***************************************/
+#define NB_MAX_GSM_BANDS             12
+
+#if 0               
+/********************************* Physical_band_ids to be supported Definition *******************/
+#define RGSM900_SUPPORTED           0
+#define EGSM900_SUPPORTED           1
+#define PGSM900_SUPPORTED           0
+#define GSM850_SUPPORTED            1
+#define PCS1900_SUPPORTED           1  
+#define DCS1800_SUPPORTED           1 
+#define GSM750_SUPPORTED            0
+#define GSM710_SUPPORTED            0
+#define GSM480_SUPPORTED            0
+#define T_GSM380_SUPPORTED          0
+#define T_GSM410_SUPPORTED          0
+#define GSM450_SUPPORTED            0   
+#define T_GSM900_SUPPORTED          0
+
+/***** Bands to be supported Eror Cases ******************************************/
+
+#if (RGSM900_SUPPORTED + EGSM900_SUPPORTED + PGSM900_SUPPORTED > 1)
+#error " Only one of the RGSM900 or EGSM900 or PGSM900 bands is supported"
+#endif/*if(RGSM900_SUPPORTED + EGSM900_SUPPORTED + PGSM900_SUPPORTED > 1)*/  
+
+
+/***** GSM900_SUPPORTED means one of P, E or R GSM900 is supported ***/
+#if ((PGSM900_SUPPORTED == 1) || (EGSM900_SUPPORTED == 1) || (RGSM900_SUPPORTED == 1))
+#define GSM900_SUPPORTED 1
+#endif 
+
+#endif // if 0
+
+/***** Number of Physical Bands Supported by the L1 Calculation, this constant is less than NB_MAX_GSM_BANDS**********/
+#define NB_MAX_SUPPORTED_BANDS (GSM900_SUPPORTED +\
+                                GSM850_SUPPORTED + \
+                                PCS1900_SUPPORTED + \
+                                DCS1800_SUPPORTED + \
+                                GSM750_SUPPORTED + \
+                                GSM480_SUPPORTED + \
+                                GSM450_SUPPORTED + \
+                                T_GSM410_SUPPORTED + \
+                                T_GSM380_SUPPORTED + \
+                                T_GSM900_SUPPORTED)
+                                
+/***** 
+    EGSM and RGSM have two separate ranges of ARFCN's that are considered by L1 as 
+    separate bands. Hence number of supported bands is one more if E or R GSM900 is
+    supported. 
+*****/
+#if (PGSM900_SUPPORTED == 1)// This means E or R GSM900 is not supported
+#define NB_MAX_EFFECTIVE_SUPPORTED_BANDS NB_MAX_SUPPORTED_BANDS
+#endif
+
+#if ((EGSM900_SUPPORTED == 1) || (RGSM900_SUPPORTED == 1))
+#define NB_MAX_EFFECTIVE_SUPPORTED_BANDS (NB_MAX_SUPPORTED_BANDS + 1)
+#endif
+
+#if 0
+/*The following constants allows the indexing of the physical bands in the MULTIBAND rf table located in l1_cust.c*/
+/*The bands positionning order is related to the bands ENUMERATION here below*/
+/*Changing the bands positions in this table implies changing the the band ENUMERATION in the file l1_const.h*/
+/*Changing the the band ENUMERATION in the file l1_const.h implies changing the bands positions in the table below*/
+enum
+{
+#if (GSM900_SUPPORTED == 1)
+  GSM900_ID,
+#endif /*if (GSM900_SUPPORTED == 1)*/
+
+#if (GSM850_SUPPORTED == 1)
+  GSM850_ID,
+#endif /*if (GSM850_SUPPORTED == 1)*/
+
+#if (DCS1800_SUPPORTED == 1)
+  DCS1800_ID,
+#endif /*if (DCS1800_SUPPORTED == 1)*/
+
+#if (PCS1900_SUPPORTED == 1)
+  PCS1900_ID,
+#endif /*if (PCS1900_SUPPORTED == 1)*/
+
+#if (GSM750_SUPPORTED == 1)
+  GSM750_ID,
+#endif /*if (GSM750_SUPPORTED == 1)*/
+
+#if (GSM480_SUPPORTED == 1)
+  GSM480_ID,
+#endif /*if (GSM480_SUPPORTED == 1)*/
+
+#if GSM450_SUPPORTED
+  GSM450_ID,
+#endif /*if (GSM450_SUPPORTED == 1)*/
+
+#if (T_GSM410_SUPPORTED == 1)
+  T_GSM410_ID,
+#endif /*if (T_GSM410_SUPPORTED == 1)*/
+
+#if (T_GSM380_SUPPORTED == 1)
+  T_GSM380_ID,
+#endif /*if (T_GSM380_SUPPORTED == 1)*/
+
+#if (T_GSM900_SUPPORTED == 1)
+  T_GSM900_ID,
+#endif /*if (T_GSM900_SUPPORTED == 1)*/
+};
+#endif
+/***********************************Calculation of the number of carriers per Effective Band*********/
+#if 0
+
+#if (PGSM900_SUPPORTED == 1)
+#define NB_CARRIER_900_LOW_SUB_BAND 124
+#define NB_CARRIER_900_HIGH_SUB_BAND 0
+#endif /*if (PGSM900_SUPPORTED == 1)*/
+
+#if (EGSM900_SUPPORTED == 1) 
+#define NB_CARRIER_900_LOW_SUB_BAND 125
+#define NB_CARRIER_900_HIGH_SUB_BAND 49
+#endif /*if (EGSM900_SUPPORTED == 1)*/
+
+#if (RGSM900_SUPPORTED == 1) 
+#define NB_CARRIER_900_LOW_SUB_BAND 125
+#define NB_CARRIER_900_HIGH_SUB_BAND 69
+#endif /*if (RGSM900_SUPPORTED == 1)*/
+
+#define NB_CARRIER_850 124
+#define NB_CARRIER_1800 344
+#define NB_CARRIER_1900 299
+#define NB_CARRIER_750 74
+#define NB_CARRIER_480 35
+#define NB_CARRIER_450 35
+#define NB_CARRIER_T_410 47
+#define NB_CARRIER_T_380 47
+#define NB_CARRIER_T_900 27
+
+/****** NBMAX_CARRIER is the total number of carriers supported based on band support *********/
+
+#define NBMAX_CARRIER  (((NB_CARRIER_900_LOW_SUB_BAND + NB_CARRIER_900_HIGH_SUB_BAND)  * GSM900_SUPPORTED) \
+                       + (NB_CARRIER_850 * GSM850_SUPPORTED) \
+                       + (NB_CARRIER_1800 * DCS1800_SUPPORTED)\
+                       + (NB_CARRIER_1900 * PCS1900_SUPPORTED) \
+                       + (NB_CARRIER_750 * GSM750_SUPPORTED) \
+                       + (NB_CARRIER_480 * GSM480_SUPPORTED) \
+                       + (NB_CARRIER_450 * GSM450_SUPPORTED) \
+                       + (NB_CARRIER_T_410 * T_GSM410_SUPPORTED) \
+                       + (NB_CARRIER_T_380 * T_GSM380_SUPPORTED) \
+                       + (NB_CARRIER_T_900 * T_GSM900_SUPPORTED))
+
+
+/**
+    The multiband frequency numbers exchanged across L3-L1 I/F are the 3GPP ARFCN numbers
+    with exceptiopn of 1900 where the numbers start from 1024 onwards. This results in 
+    holes in the numbering given from L3 and hence cannot be used for indexing arrays of 
+    carriers. To index arrays the frequency numbers from L3 are translated to 'operative radio
+    frequencies'. For any band configuration supported, this is a continuos number from 
+    0 to NBMAX_CARRIER (The sum of number of carriers in all supported bands)
+    The defines below are for finding the first operative frequency corresponding to each band
+**/
+
+#define FIRST_OPERATIVE_RADIO_FREQ_900_LOW_SUB_BAND     0
+#define FIRST_OPERATIVE_RADIO_FREQ_900_HIGH_SUB_BAND    (FIRST_OPERATIVE_RADIO_FREQ_900_LOW_SUB_BAND  + NB_CARRIER_900_LOW_SUB_BAND) * GSM900_SUPPORTED
+#define FIRST_OPERATIVE_RADIO_FREQ_850                  (FIRST_OPERATIVE_RADIO_FREQ_900_HIGH_SUB_BAND + NB_CARRIER_900_HIGH_SUB_BAND) * GSM850_SUPPORTED
+#define FIRST_OPERATIVE_RADIO_FREQ_1900                 (FIRST_OPERATIVE_RADIO_FREQ_850 + NB_CARRIER_850) * PCS1900_SUPPORTED
+#define FIRST_OPERATIVE_RADIO_FREQ_1800                 (FIRST_OPERATIVE_RADIO_FREQ_1900 + NB_CARRIER_1900) * DCS1800_SUPPORTED
+#define FIRST_OPERATIVE_RADIO_FREQ_750                  (FIRST_OPERATIVE_RADIO_FREQ_1800 + NB_CARRIER_1800) * GSM750_SUPPORTED
+#define FIRST_OPERATIVE_RADIO_FREQ_480                  (FIRST_OPERATIVE_RADIO_FREQ_750 + NB_CARRIER_750) * GSM480_SUPPORTED
+#define FIRST_OPERATIVE_RADIO_FREQ_450                  (FIRST_OPERATIVE_RADIO_FREQ_480 + NB_CARRIER_480) * GSM450_SUPPORTED
+#define FIRST_OPERATIVE_RADIO_FREQ_T_410                (FIRST_OPERATIVE_RADIO_FREQ_450 + NB_CARRIER_450) * T_GSM410_SUPPORTED
+#define FIRST_OPERATIVE_RADIO_FREQ_T_380                (FIRST_OPERATIVE_RADIO_FREQ_T_410 + NB_CARRIER_T_410) * T_GSM380_SUPPORTED    
+#define FIRST_OPERATIVE_RADIO_FREQ_T_900                (FIRST_OPERATIVE_RADIO_FREQ_T_380 + NB_CARRIER_T_380) * T_GSM900_SUPPORTED
+   
+/********************** Definition of the first  radio freqs as per L3-L1 interface *********/
+
+#if (PGSM900_SUPPORTED == 1)
+#define FIRST_RADIO_FREQ_900_LOW_SUB_BAND 1
+#define FIRST_RADIO_FREQ_900_HIGH_SUB_BAND 0
+#endif /*if (PGSM900_SUPPORTED == 1)*/
+
+#if (EGSM900_SUPPORTED == 1)
+#define FIRST_RADIO_FREQ_900_LOW_SUB_BAND 0
+#define FIRST_RADIO_FREQ_900_HIGH_SUB_BAND 975
+#endif /*if (EGSM900_SUPPORTED == 1)*/
+
+#if (RGSM900_SUPPORTED == 1)
+#define FIRST_RADIO_FREQ_900_LOW_SUB_BAND 0
+#define FIRST_RADIO_FREQ_900_HIGH_SUB_BAND 955
+#endif /* (RGSM900_SUPPORTED == 1)*/
+
+#define FIRST_RADIO_FREQ_850      128    
+#define FIRST_RADIO_FREQ_1800     512
+#define FIRST_RADIO_FREQ_1900     1024
+#define FIRST_TPU_RADIO_FREQ_1900 512  /* TBD The GSM1900 is the unique band in which the FIRST_TPU_RADIO is not equal to FIRST_RADIO_FREQ*/
+
+#endif // if 0                       
+
+#endif // L1_FF_MULTIBAND == 0
+
+#if (L1_FF_MULTIBAND == 0)
+#else
+/* Prototypes */
+
+#define l1_multiband_radio_freq_convert_into_effective_band_id(radio_freq) \
+ rf_convert_rffreq_to_l1subband(radio_freq)
+
+#define l1_multiband_radio_freq_convert_into_physical_band_id(radio_freq) \
+((UWORD8)rf_convert_l1freq_to_rf_band_idx(rf_convert_rffreq_to_l1freq(radio_freq)))
+
+#define l1_multiband_radio_freq_convert_into_operative_radio_freq(radio_freq) \
+  rf_convert_rffreq_to_l1freq(radio_freq)
+
+#if (CODE_VERSION != SIMULATION)
+UWORD8 rf_convert_rffreq_to_l1subband(UWORD16 rf_freq);
+UWORD8 rf_convert_l1freq_to_l1subband(UWORD16 l1_freq);
+WORD8 rf_convert_l1freq_to_rf_band_idx(UWORD16 l1_freq);
+UWORD16 rf_convert_l1freq_to_rffreq(UWORD16 l1_freq );
+UWORD16 rf_convert_l1freq_to_rffreq_rfband(UWORD16 l1_freq, WORD8 *rf_band_index);
+UWORD16 rf_convert_l1freq_to_arfcn_rfband(UWORD16 l1_freq, WORD8 *rf_band_index);
+UWORD16 rf_convert_rffreq_to_l1freq(UWORD16 rf_freq);
+UWORD16 rf_convert_rffreq_to_l1freq_rfband(UWORD16 rf_freq, WORD8 *rf_band_index);
+UWORD16 rf_convert_tmarfcn_to_l1freq(UWORD16 tm_arfcn, WORD8 * error_flag);
+#endif
+
+/* RF defines */
+/******************************Physical_band_ids to be supported Definition****************************************/
+#define RGSM900_SUPPORTED  0
+#define PGSM900_SUPPORTED  0
+#define GSM750_SUPPORTED   0
+#define GSM710_SUPPORTED   0
+#define GSM480_SUPPORTED   0
+#define T_GSM380_SUPPORTED 0
+#define T_GSM410_SUPPORTED 0
+#define GSM450_SUPPORTED   0
+#define T_GSM900_SUPPORTED 0
+#if 0
+#if (RF_BAND_SYSTEM_INDEX == RF_DCS1800_850_DUALBAND)
+#define GSM900_SUPPORTED  0
+#define GSM850_SUPPORTED   1
+#define PCS1900_SUPPORTED  0
+#define DCS1800_SUPPORTED  1
+#elif (RF_BAND_SYSTEM_INDEX == RF_PCS1900_900_DUALBAND)
+#define GSM900_SUPPORTED  1
+#define GSM850_SUPPORTED   0
+#define PCS1900_SUPPORTED  1
+#define DCS1800_SUPPORTED  0
+#elif (RF_BAND_SYSTEM_INDEX == RF_US_DUALBAND)
+#define GSM900_SUPPORTED  0
+#define GSM850_SUPPORTED   1
+#define PCS1900_SUPPORTED  1
+#define DCS1800_SUPPORTED  0
+#elif (RF_BAND_SYSTEM_INDEX == RF_US_TRIBAND)
+#define GSM900_SUPPORTED  0
+#define GSM850_SUPPORTED   1
+#define PCS1900_SUPPORTED  1
+#define DCS1800_SUPPORTED  1
+#elif (RF_BAND_SYSTEM_INDEX == RF_EU_DUALBAND)
+#define GSM900_SUPPORTED  1
+#define GSM850_SUPPORTED   0
+#define PCS1900_SUPPORTED  0
+#define DCS1800_SUPPORTED  1
+#elif (RF_BAND_SYSTEM_INDEX == RF_EU_TRIBAND)
+#define GSM900_SUPPORTED  1
+#define GSM850_SUPPORTED   0
+#define PCS1900_SUPPORTED  1
+#define DCS1800_SUPPORTED  1
+#elif (RF_BAND_SYSTEM_INDEX == RF_QUADBAND)
+#define GSM900_SUPPORTED  1
+#define GSM850_SUPPORTED   1
+#define PCS1900_SUPPORTED  1
+#define DCS1800_SUPPORTED  1
+#endif
+#endif // if 0 TBD
+#define GSM900_SUPPORTED  1
+#define GSM850_SUPPORTED   1
+#define PCS1900_SUPPORTED  1
+#define DCS1800_SUPPORTED  1
+
+/* The physical RF bands are enumerated in order of increasing frequencies */
+/* The same order must be used in l1_rf61, l1_cust, and l1_const */
+enum
+{
+#if (GSM900_SUPPORTED == 1)
+  RF_GSM900,
+#endif
+#if (GSM850_SUPPORTED == 1)
+  RF_GSM850,
+#endif
+#if (DCS1800_SUPPORTED == 1)
+  RF_DCS1800,
+#endif
+#if (PCS1900_SUPPORTED == 1)
+  RF_PCS1900,
+#endif
+  RF_NB_SUPPORTED_BANDS /* The number of supported physical bands */
+};
+
+#if GSM900_SUPPORTED
+#define RF_NB_SUBBANDS (RF_NB_SUPPORTED_BANDS + 1)
+#else
+#define RF_NB_SUBBANDS (RF_NB_SUPPORTED_BANDS)
+#endif
+
+/***********************************Calculation of the number of carriers per Effective Band*********/
+#define NB_CHAN_900L  125
+#define NB_CHAN_900H  49
+#define NB_CHAN_850   124
+#define NB_CHAN_1800  374
+#define NB_CHAN_1900  299
+
+/**
+    The multiband frequency numbers exchanged across L3-L1 I/F are the 3GPP ARFCN numbers
+    except for DCS1900 where the numbers start from 1024 onwards, i.e. ARFCN+512.
+    L1 cannot have holes in the numbering, so a different L1 internal one is needed to build arrays in L1.
+    This numbering is similar to ARFCN numbering, except the high part of GSM900 channel numbers
+    are mapped between low part of GSM900 numbers and the GSM850 numbers.
+    For any band configuration supported, this is a continuos number from
+    0 to NB_CARRIERS (The sum of number of carriers in all supported bands)
+**/
+/****** L1_NB_CARRIER is the total number of carriers supported based on band support *********/
+#define L1_FREQ_1ST_900L    0
+#define L1_FREQ_1ST_900H   (L1_FREQ_1ST_900L + NB_CHAN_900L * GSM900_SUPPORTED)
+#define L1_FREQ_1ST_850    (L1_FREQ_1ST_900H + NB_CHAN_900H * GSM900_SUPPORTED)
+#define L1_FREQ_1ST_1800   (L1_FREQ_1ST_850  + NB_CHAN_850  * GSM850_SUPPORTED)
+#define L1_FREQ_1ST_1900   (L1_FREQ_1ST_1800 + NB_CHAN_1800 * DCS1800_SUPPORTED)
+#define NBMAX_CARRIER      (L1_FREQ_1ST_1900 + NB_CHAN_1900 * PCS1900_SUPPORTED)
+
+#define ARFCN_1ST_900L  0
+#define ARFCN_1ST_900H  975
+#define ARFCN_1ST_850   128
+#define ARFCN_1ST_1800  512
+#define ARFCN_1ST_1900  512
+
+#define RF_FREQ_1ST_900L  ARFCN_1ST_900L
+#define RF_FREQ_1ST_900H  ARFCN_1ST_900H
+#define RF_FREQ_1ST_850   ARFCN_1ST_850
+#define RF_FREQ_1ST_1800  ARFCN_1ST_1800
+#define RF_FREQ_1ST_1900  (ARFCN_1ST_1900 + 512)
+
+
+typedef struct
+{
+  UWORD16 first_rf_freq;
+  UWORD16 last_rf_freq;
+  UWORD16 first_l1_freq;
+  WORD16  l1freq2rffreq;
+}
+T_MULTIBAND_CONVERT;
+
+typedef struct
+{
+  UWORD8 power_class;
+  UWORD8  tx_turning_point;
+  UWORD8  max_txpwr;
+  UWORD8  gsm_band_identifier;
+  char*   name;
+}
+T_MULTIBAND_RF;
+
+#endif /*if (L1_FF_MULTIBAND == 1)*/
+
+
+
 #define NO_TXPWR 255     // sentinal value used with UWORD8 type.
 
 
@@ -727,13 +986,6 @@
 #define RXLEV63   63   // max value for RXLEV.
 #define IL_MIN    240  // minimum input level is -120 dbm.
 
-//--------------------------------------------------------
-// Max number of cell to report in MPHC_RXLEV_IND.
-// Nb cells to check to see if cell of MPHC_NETWORK_SYNC_REQ has been detected
-//--------------------------------------------------------
-#define MAX_MEAS_RXLEV_IND_TRACE 10
-#define NB_FQ_TO_CHK 4
-
 /*--------------------------------------------------------*/
 /* Max value for GSM Paging Parameters.                   */
 /*--------------------------------------------------------*/
@@ -791,6 +1043,15 @@
 #define CBCH_TB6            0x0010
 #define CBCH_TB7            0x0020
 
+#if FF_TBF
+/*--------------------------------------------------------*/
+/* Access burst types on the RACH/PRACH                   */
+/*--------------------------------------------------------*/
+  #define ACC_BURST_8              0
+  #define ACC_BURST_11             1
+  #define ACC_BURST_11_TS1         2
+  #define ACC_BURST_11_TS2         3
+#endif
 #define CBCH_CONTINUOUS_READING  0
 #define CBCH_SCHEDULED           1
 #define CBCH_INACTIVE            2
@@ -837,11 +1098,11 @@
 #define DEDIC_MODE         5    // functional mode in DEDICATED.
 #define DEDIC_MODE_HALF_DATA 6    // used only for TOA histogram length purpose.
 #if L1_GPRS
-  #define PACKET_TRANSFER_MODE 7
+  #define PACKET_TRANSFER_MODE 7 //
 #endif
 
 /*--------------------------------------------------------*/
-/* Error causes for MPHC_NO_BCCH message.                  */
+/* Error causes for MPHC_NO_BCCH message.                 */
 /*--------------------------------------------------------*/
 #define NO_FB_SB           0  // FB or SB not found.
 #define NCC_NOT_PERMITTED  1  // Synchro OK! but PLMN not permitted.
@@ -870,7 +1131,9 @@
   #define CTRL_PRACH     (TRUE_L << 10)
   #define CTRL_SYSINGLE  (TRUE_L << 11)
 #endif
-
+#if ((REL99 == 1) && (FF_BHO == 1))
+#define CTRL_FBSB_ABORT (TRUE_L << 12)
+#endif
 
 /********************************/
 /* MISC management              */
@@ -983,6 +1246,9 @@
 #define SB_DSP_TASK        6  // Sync. Burst reading task in Idle mode.
 #define TCH_FB_DSP_TASK    8  // Freq. Burst reading task in Dedicated mode.
 #define TCH_SB_DSP_TASK    9  // Sync. Burst reading task in Dedicated mode.
+#if ((REL99 == 1) && (FF_BHO == 1))
+#define FBSB_DSP_TASK     16  // Freq.+Sync. Burst reading task in Blind Handover.
+#endif
 #define IDLE1              1
 
 // Debug tasks
@@ -997,7 +1263,7 @@
 #define TCH_LOOP_A        31
 #define TCH_LOOP_B        32
 
-#if (DSP == 33) || (DSP == 34) || (DSP == 35) || (DSP == 36)
+#if (DSP == 33) || (DSP == 34) || (DSP == 35) || (DSP == 36) || (DSP == 37) || (DSP == 38) || (DSP == 39)
   #define SC_CHKSUM_VER     (DB_W_PAGE_0 + (2 * (0x08DB - 0x800)))
 #else
   #define SC_CHKSUM_VER     (DB_W_PAGE_0 + (2 * (0x09A0 - 0x800)))
@@ -1029,7 +1295,14 @@
 //#define D_NSUBB_DEDIC           30L
 #define D_FB_THR_DET_IACQ       0x3333L
 #define D_FB_THR_DET_TRACK      0x28f6L
+
+#if (RF_FAM == 60)
+// UPPCosto without dc offset compensation (DSP algo)
+  #define D_DC_OFF_THRES          0x0000L
+#else
 #define D_DC_OFF_THRES          0x7fffL
+#endif
+
 #define D_DUMMY_THRES           17408L
 #define D_DEM_POND_GEWL         26624L
 #define D_DEM_POND_RED          20152L
@@ -1050,7 +1323,7 @@
 #define D_MD_MAX_THR_TCHFS      1700L                 //(2000L *C_POND_RED)
 #define D_MD1_MAX_THR_TCHFS     99L                   //(160L  *C_POND_RED)
 
-#if (DSP == 33) || (DSP == 34) || (DSP == 35) || (DSP == 36)
+#if (DSP == 33) || (DSP == 34) || (DSP == 35) || (DSP == 36) || (DSP == 37) || (DSP == 38)|| (DSP == 39)
   // Frequency burst definitions
   #define D_FB_MARGIN_BEG         24
   #define D_FB_MARGIN_END         22
@@ -1062,7 +1335,7 @@
   #define D_V42B_RESET_DELAY      10L
 
   // Latencies definitions
-  #if (DSP == 33) || (DSP == 34) || (DSP == 35) || (DSP == 36)
+  #if (DSP == 33) || (DSP == 34) || (DSP == 35) || (DSP == 36) || (DSP == 37) || (DSP == 38) || (DSP == 39)
     // C.f. BUG1404
     #define D_LAT_MCU_BRIDGE        0x000FL
   #else
@@ -1079,7 +1352,9 @@
 
 #if (CHIPSET == 4)
   #define D_MISC_CONFIG           0L
-#elif (CHIPSET == 7)  || (CHIPSET == 8) || (CHIPSET == 10) || (CHIPSET == 11) || (CHIPSET == 12)
+#elif (CHIPSET == 7)  || (CHIPSET == 8) || (CHIPSET == 10) || (CHIPSET == 11) || (CHIPSET == 12) || (CHIPSET == 15)
+  // This variable is basically used for Samson. If SAMSON should be zero.
+  // A variable for making DSP not go to IDLE3 when DMA is on
   #define D_MISC_CONFIG           1L
 #else
   #define D_MISC_CONFIG           0L
@@ -1139,6 +1414,12 @@
 
 // d_ra_act: bit field definition
 #define B_F48BLK                5
+#if REL99
+#if FF_EMR
+#define B_F48BLK_DL             6
+#endif
+#endif
+
 
 // Mask for b_itc information (d_ra_conf)
 #define CE_MASK                 0x04
@@ -1176,7 +1457,16 @@
 #define D_ANGLE                  2  // Angle (AFC correction)
 #define D_SNR                    3  // Signal / Noise Ratio.
 
+#if REL99
+#if FF_EMR
+  #define D_CV_BEP                 2
+  #define D_MEAN_BEP_MSW           0
+  #define D_MEAN_BEP_LSW           1
+#endif
+#endif //L1_R99
+
 // Bit name/position definitions.
+#define B_JOINT                  4  // Chase combining flag
 #define B_FIRE0                  5  // Fire result bit 0. (00 -> NO ERROR) (01 -> ERROR CORRECTED)
 #define B_FIRE1                  6  // Fire result bit 1. (10 -> ERROR)    (11 -> unused)
 #define B_SCH_CRC                8  // CRC result for SB decoding. (1 for ERROR).
@@ -1187,6 +1477,21 @@
 #define B_ECRC                   9  // Enhanced full rate CRC bit
 #define B_EMPTY_BLOCK           10  // for voice memo purpose, this bit is used to determine
 
+#if REL99
+#if FF_EMR
+  #define MEAN_BEP_FORMAT        5  // mean_bep is received in F1.31 format from DSP and should be
+                                    // reported in F6.26 format to L2.
+  #define CV_BEP_FORMAT          5  // cv_bep is received in F3.13 format from DSP and should be
+                                    // reported in F8.8 format to L2.
+  #define B_SID1                 4  // SID1 bit.
+  #define B_M1                   0  // M1 bit.
+  #define B_CE                   8  // Connection element
+  #define B_FCS_OK               3  // Frame check sequence bit
+  #define WORD_SHIFT            16  // Shift word
+#endif
+#endif //L1_R99
+
+
 #if (DEBUG_DEDIC_TCH_BLOCK_STAT == 1)
   #define FACCH_GOOD 10
   #define FACCH_BAD  11
@@ -1215,6 +1520,15 @@
   // List of possible RX types in RATSCCH block
   #define C_RATSCCH_GOOD          5
 
+  #if REL99
+  #if FF_EMR
+    #define RATSCCH_GOOD            5
+    #define RATSCCH_BAD             6
+  #endif
+  #endif //L1_R99
+
+
+
   // List of the possible AMR channel rate
   #define AMR_CHANNEL_4_75        0
   #define AMR_CHANNEL_5_15        1
@@ -1225,6 +1539,7 @@
   #define AMR_CHANNEL_10_2        6
   #define AMR_CHANNEL_12_2        7
 
+
   // Types of RATSCCH blocks
   #define C_RATSCCH_UNKNOWN                   0
   #define C_RATSCCH_CMI_PHASE_REQ             1
@@ -1266,7 +1581,13 @@
 
 // "d_ctrl_abb" bits positions for conditionnal loading of abb registers.
 #define B_RAMP                   0
-#if ((ANALOG == 1) || (ANALOG == 2) || (ANALOG == 3))
+#if ((ANLG_FAM == 1) || (ANLG_FAM == 2) || (ANLG_FAM == 3))
+  #define B_BULRAMPDEL             3 // Note: this name is changed
+  #define B_BULRAMPDEL2            2 // Note: this name is changed
+  #define B_BULRAMPDEL_BIS         9
+  #define B_BULRAMPDEL2_BIS       10
+#endif
+#if ((RF_FAM == 61) && ((DSP == 38) || (DSP == 39)))
   #define B_BULRAMPDEL             3 // Note: this name is changed
   #define B_BULRAMPDEL2            2 // Note: this name is changed
   #define B_BULRAMPDEL_BIS         9
@@ -1278,7 +1599,73 @@
 #define B_TSQ                    0
 #define B_BCCH_FREQ_IND          3
 #define B_TASK_ABORT            15  // Abort RF tasks for DSP.
+#define B_SWH_APPLY_WHITENING    4  // SWH control(enable, disable)
 
+#if (NEW_SNR_THRESHOLD == 1) && (L1_SAIC == 0)
+#error "SNR threshold valid only for SAIC build"
+#endif
+
+//SAIC related
+#define B_SWH              1   /* SWH bit position */
+#define B_NEW_POND         2   /* NEW_POND bit position*/
+#define B_SWH_DOUBLE_INTERPOLATION    3  /* Single or Double Interpolation*/
+#define B_SWH_INTERPOLATE             4  /* interpolate or not*/
+#define B_TOA_ALMNT                   5  /* New TOA alignment from DSP for non saic mode*/
+#define B_SNR_ALMNT                   6  /* New SNR threshold set to 1024 for AFC and TOA*/
+
+// DB Area
+#define B_SAIC_DB                0
+#define B_NEW_POND_DB            1
+#define B_SWH_DB                 4
+#define B_SWH_CHANTAP            12
+#define SAIC_ENABLE_DB           ((0x01 << B_SAIC_DB) | (0x01 << B_NEW_POND_DB))
+
+#if (NEW_SNR_THRESHOLD == 1)
+#if (ONE_THIRD_INTRPOL ==1 )
+#define SAIC_INITIAL_VALUE ((1<< B_SWH)|(1<< B_NEW_POND)| (1<< B_SWH_DOUBLE_INTERPOLATION)) | (1 << B_SWH_INTERPOLATE) |(1<< B_TOA_ALMNT) | (1 << B_SNR_ALMNT)
+#else /* ONE_THIRD_INTRPOL == 0*/
+#define SAIC_INITIAL_VALUE ((1<< B_SWH)|(1<< B_NEW_POND)| (1 << B_SWH_INTERPOLATE) |(1<< B_TOA_ALMNT) | (1 << B_SNR_ALMNT)
+#endif /* ONE_THIRD_INTRPOL*/
+#else /* NEW_SNR_THRESHOLD == 0 */
+#if (ONE_THIRD_INTRPOL ==1 )
+#define SAIC_INITIAL_VALUE ((1<< B_SWH)|(1<< B_NEW_POND)| (1<< B_SWH_DOUBLE_INTERPOLATION)) | (1 << B_SWH_INTERPOLATE) /* added for CQ-95275 &  93303 */
+#else
+#define SAIC_INITIAL_VALUE ((1<< B_SWH)|(1<< B_NEW_POND)) | (1 << B_SWH_INTERPOLATE)
+#endif//ONE_THIRD_INTRPOL
+#endif /*NEW_SNR_THRESHOLD*/
+#if (FF_L1_FAST_DECODING == 1)
+#define B_FAST_DECODING_FLAG (5)
+#define C_FAST_DECODING_CRC_FIRE1 (0x02)
+
+/* Fast decoding states */
+#define C_FAST_DECODING_NONE       0
+#define C_FAST_DECODING_AWAITED    1
+#define C_FAST_DECODING_PROCESSING 2
+#define C_FAST_DECODING_COMPLETE   3
+#define C_FAST_DECODING_FORBIDDEN  4
+
+#endif /* FF_L1_FAST_DECODING */
+
+#if (FF_L1_FAST_DECODING == 1)
+#define C_BA_PM_MEAS (4)
+#else
+#define C_BA_PM_MEAS (2)
+#endif /* FF_L1_FAST_DECODING */
+
+#if FF_L1_IT_DSP_USF
+  // d_dsp_hint_flag word definition
+  #define B_USF_HINT_ISSUED      0
+  #define B_NON_USF_HINT_ISSUED 1
+#endif
+#if FF_L1_IT_DSP_DTX
+  // d_fast_dtx_hint word definition- now d_fast_dtx_hint is not used- same as- d_dsp_hint_flag
+  #define B_DTX_HINT_ISSUED      0
+  #define B_DTX_STATE            1
+
+  // d_tch_mode_ext word definition
+  #define B_FAST_DTX_ENABLED     0
+  #define B_NON_USF_HINT_ISSUED 1
+#endif
 // ****************************************************************
 // POLESTAR EVABOARD 3 REGISTERS & ADRESSES  DEFINITIONS
 // ****************************************************************
@@ -1289,7 +1676,9 @@
 
   #define DB_SIZE                 (4*20L)     // 4 pages of 20 words...
 
-  #if (DSP == 33) || (DSP == 34) || (DSP == 35) || (DSP == 36)
+  #if (DSP == 33) || (DSP == 34) || (DSP == 35) || (DSP == 36) || (DSP == 37) || (DSP == 38) || (DSP == 39)
+    #define MCU_API_BASE_ADDRESS 0xFFD00000L
+    #define DSP_API_BASE_ADDRESS 0x800
     #define DB_W_PAGE_0          0xFFD00000L   // DB page 0 write : 20 words long
     #define DB_W_PAGE_1          0xFFD00028L   // DB page 1 write : 20 words long
     #define DB_R_PAGE_0          0xFFD00050L   // DB page 0 read  : 20 words long
@@ -1301,7 +1690,17 @@
       #define DB2_R_PAGE_0       0xFFD00184L
       #define DB2_R_PAGE_1       0xFFD00188L
     #endif
+
+    /* DSP CPU load measurement */
+    #define DSP_CPU_LOAD_MCU_API_BASE_ADDRESS 0xFFD01DE0L
+    #define DSP_CPU_LOAD_DB_W_PAGE_0          0xFFD01DE0L   // DB page 0 write : 4 words long
+    #define DSP_CPU_LOAD_DB_W_PAGE_1          0xFFD01DE8L   // DB page 1 write : 4 words long
+    #define DSP_CPU_LOAD_MCU_W_CTRL           0xFFD01DF0L   // DSP CPU load feature control
+    #define DSP_CPU_LOAD_MCU_W_TDMA_FN        0xFFD01DF2L   // MCU TDMA frame number
+
   #else
+    #define MCU_API_BASE_ADDRESS 0xFFD00000L
+    #define DSP_API_BASE_ADDRESS 0x800
     #define DB_W_PAGE_0          0xFFD00000L   // DB page 0 write : 20 words long
     #define DB_W_PAGE_1          0xFFD00028L   // DB page 1 write : 20 words long
     #define DB_R_PAGE_0          0xFFD00050L   // DB page 0 read  : 20 words long
@@ -1310,6 +1709,12 @@
     #define PARAM_ADR            0xFFD002b8L   // PARAM start address  : 57 words
   #endif
 
+  #if (DSP == 38) || (DSP == 39)
+    // a DB common is used by the GSM and GPRS for the common feature
+    #define DB_COMMON_W_PAGE_0          0xFFD00760L   // DB common page 0
+    #define DB_COMMON_W_PAGE_1          0xFFD00780L   // DB common page 1
+  #endif
+
 // ****************************************************************
 // ADC reading definitions
 // ****************************************************************
@@ -1375,5 +1780,14 @@
   #define THR_MASK      0x003F
   #define HYST_MASK     0x000F
   #define CMIP_MASK     0x0001
+
 #endif
 
+#if (L1_RF_KBD_FIX == 1)
+
+#define FRAME_DURATION 5000
+#define CUST_DEBOUNCE_TIME 64
+
+#endif
+
+#endif // L1_CONST_H