changeset 603:d638de8cc6b8

gsm-fw/L1/audio_*/*.h: replacing Leonardo headers with LoCosto versions
author Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
date Thu, 28 Aug 2014 18:40:12 +0000
parents 5f93a9a8f9a0
children 45bf440cc677
files gsm-fw/L1/audio_cust0/l1audio_cust.h gsm-fw/L1/audio_include/l1audio_abb.h gsm-fw/L1/audio_include/l1audio_btapi.h gsm-fw/L1/audio_include/l1audio_const.h gsm-fw/L1/audio_include/l1audio_defty.h gsm-fw/L1/audio_include/l1audio_msgty.h gsm-fw/L1/audio_include/l1audio_proto.h gsm-fw/L1/audio_include/l1audio_signa.h gsm-fw/L1/audio_include/l1audio_stereo.h
diffstat 9 files changed, 2199 insertions(+), 109 deletions(-) [+]
line wrap: on
line diff
--- a/gsm-fw/L1/audio_cust0/l1audio_cust.h	Sun Aug 17 21:35:23 2014 +0000
+++ b/gsm-fw/L1/audio_cust0/l1audio_cust.h	Thu Aug 28 18:40:12 2014 +0000
@@ -7,6 +7,9 @@
  *
  ************* Revision Controle System Header *************/
 
+#ifndef _L1AUDIO_CUST_H_
+#define _L1AUDIO_CUST_H_
+
 #if (AUDIO_TASK == 1)
 
   #if (OP_RIV_AUDIO == 0)
@@ -119,6 +122,8 @@
   #define SESSION_ERROR     1   // Wrong session id
   #define POINTER_ERROR     2   // Wrong ptr argument
   #define DATA_AVAIL_ERROR  3   // No more data available
+  #define DATA_LAST         4   // Last buffer, no more data available after
+  #define WAIT_FOR_DATA     6
 
   #if (AUDIO_MODE)
     #define GSM_ONLY        0   // GSM normal mode
@@ -142,8 +147,20 @@
          // size of the E2 instrument buffers > 1
          // size of DSP trace buffer > 1
   #endif
+  
 #endif // AUDIO_TASK
 
 // Number of coefficient for each FIR (fixed value)
 #define MAX_FIR_COEF  31
 
+// Triton Audio ON/OFF Changes
+#if (L1_AUDIO_MCU_ONOFF == 1)
+// Num of radio frames the audio path is kept on after all 
+// users have requested turn off
+// 0..255
+#define L1_AUDIO_ON2OFF_UL_HOLD_TIME    20 //127
+#define L1_AUDIO_ON2OFF_DL_HOLD_TIME    20 //127
+#endif
+
+
+#endif      // _L1AUDIO_CUST_H_
--- a/gsm-fw/L1/audio_include/l1audio_abb.h	Sun Aug 17 21:35:23 2014 +0000
+++ b/gsm-fw/L1/audio_include/l1audio_abb.h	Thu Aug 28 18:40:12 2014 +0000
@@ -1,24 +1,43 @@
 /*
  *        Filename l1audio_abb.h
- *  Copyright 2003 (C) Texas Instruments  
+ *  Copyright 2003 (C) Texas Instruments
  *
  *
  */
 
-#define ABB_L1_WRITE(addr,data) (((data) << 6) | (addr) | 0x01)
+#if (ANLG_FAM != 11)
 
-void ABB_CAL_UlVolume     (UWORD8 pga_index);
-void ABB_CAL_DlVolume     (UWORD8 volume_index, UWORD8 pga_index);
-void ABB_UlVolume         (UWORD8 volume_index);
-void ABB_DlVolume         (UWORD8 volume_index);
-void ABB_DlMute           (BOOL mute);
-void ABB_SideTone         (UWORD8 volume_index);
-void ABB_Audio_Config     (UWORD16 data);
-void ABB_Audio_Config_2   (UWORD16 data); 
-void ABB_UlMute           (BOOL mute);
-void ABB_Audio_Control    (UWORD16 data);
-void ABB_Audio_On_Off     (UWORD16 data);
-void ABB_Audio_Volume     (UWORD16 data);
-void ABB_Audio_PLL        (UWORD16 data);
-void ABB_Audio_VBPop      (UWORD16 data);
-void ABB_Audio_Delay_Init (UWORD8 delay);
+   #define ABB_L1_WRITE(addr,data)  (((data) << 6) | (addr) | 0x01)
+   
+   void    ABB_CAL_UlVolume     (UWORD8 pga_index);
+   void    ABB_CAL_DlVolume     (UWORD8 volume_index, UWORD8 pga_index);
+   void    ABB_UlVolume         (UWORD8 volume_index);
+   void    ABB_DlVolume         (UWORD8 volume_index);
+   void    ABB_DlMute           (BOOL mute);
+   void    ABB_SideTone         (UWORD8 volume_index);
+   void    ABB_Audio_Config     (UWORD16 data);
+   void    ABB_Audio_Config_2   (UWORD16 data);
+   void    ABB_UlMute           (BOOL mute);
+   void    ABB_Audio_Control    (UWORD16 data);
+   void    ABB_Audio_On_Off     (UWORD16 data);
+   void    ABB_Audio_Volume     (UWORD16 data);
+   void    ABB_Audio_PLL        (UWORD16 data);
+   void    ABB_Audio_VBPop      (UWORD16 data);
+   void    ABB_Audio_Delay_Init (UWORD8 delay);
+   UWORD16 ABB_Read_DLGain      (void);
+#endif
+#if (ANLG_FAM == 11)
+  UWORD16 l1_audio_abb_Read_DLGain  (void);
+#endif
+
+// Triton Audio ON/OFF Changes
+#if (L1_AUDIO_MCU_ONOFF == 1)
+void l1_audio_abb_ul_on_req         ( void(*callback_fn)(void) );
+void l1_audio_abb_dl_on_req         ( void(*callback_fn)(void) );
+void l1_audio_abb_ul_off_req        ( void(*callback_fn)(void) );
+void l1_audio_abb_dl_off_req        ( void(*callback_fn)(void) );
+void l1_audio_abb_ul_off_dl_off_req ( void(*callback_fn)(void) );
+void l1_audio_abb_ul_off_dl_on_req  ( void(*callback_fn)(void) );
+void l1_audio_abb_ul_on_dl_off_req  ( void(*callback_fn)(void) );
+void l1_audio_abb_ul_on_dl_on_req   ( void(*callback_fn)(void) );
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gsm-fw/L1/audio_include/l1audio_btapi.h	Thu Aug 28 18:40:12 2014 +0000
@@ -0,0 +1,109 @@
+/****************************************************
+/  FILE NAME:- BT_L1_API.h file.
+/ ****************************************************/
+#include "l1sw.cfg"
+#include "l1_types.h"
+#if(L1_BT_AUDIO==1)
+
+/****************************************************
+/ Data structure defination
+/ ****************************************************/
+#define BT_STATUS_ERROR    1
+#define BT_STATUS_OK          0
+
+/*-------------------------------------------------------------------------------
+ * L1AudioPcmStatus type
+ *
+ *     Defines status of current PCM buffer
+ *
+ */
+typedef unsigned char L1AudioPcmStatus;
+
+#define L1_PCM_READY		(0x01)	/* the next PCM block is ready */
+#define L1_PCM_PENDING		(0x02)	/* the next PCM block is not ready yet.
+                                       a callback will be made when it will be ready */
+#define L1_PCM_MEDIA_ENDED	(0x03)	/* no PCM blocks are available anymore.
+                                       (e.g. current track ended) */
+#define L1_PCM_FAILED		(0x04)	/* no PCM blocks are ready. general failure */
+
+typedef struct _L1AudioPcmBlock
+{
+	UWORD8 *pcmBuffer; /* a pointer to the buffer holding the PCM data */
+	int lengthInBytes;        /* how many bytes are currently in the PCM buffer */
+} L1AudioPcmBlock;
+
+/****************************************************/
+typedef struct _L1AudioPcmConfig
+{
+	int sampleRate;		/* PCM sample rate in Hz (e.g. 44100, 48000, 32000, 16000) */
+	short numChannels;		/* number of audio channels (1 or 2, for mono or stereo) */
+	short bitsPerSample;	/* number of bits per PCM sample. must always be 16. */
+} L1AudioPcmConfig;
+/****************************************************/
+
+/****************************************************/
+typedef void (*L1AudioPcmCallback)(L1AudioPcmBlock *pcmBlock);
+/*Description:- A callback function, implemented at BTHAL_MM, which will be called by L1-MCU to send a ready PCM block.
+The callback will be called by L1-MCU only after a previous call from BTHAL_MM to request a PCM block returned Pending.
+NOTE: Since the callback is called from L1 context, the BTHAL_MM code should not spend considerable time in this function.
+It must not block the L1-MCU task.
+
+Parameters:
+pcmBlock     [in] - a pointer to a PCM block structure
+Returns: void
+*/
+
+/****************************************************/
+typedef void (*L1AudioConfigureCallback) (L1AudioPcmConfig *pcmConfig);
+
+/*Description:- A callback function, implemented at BTHAL_MM, that will be called by MCU-L1 to specify the next PCM configuration.
+L1-MCU will call this function before a new audio track is going to start playing. BT side will use this info to reconfigure the current
+A2DP stream, and after the configuration is completed, it will start pulling PCM blocks from the L1-MCU stack.
+Parameters: pcmConfig    [in] - pointer to struct with the PCM config info
+*/
+
+/****************************************************/
+
+
+BOOL L1Audio_InformBtAudioPathState (BOOL connected);
+/*Description: - This function is implemented in L1-MCU and called by BTHAL_MM to inform L1,
+whether the audio path to BT is up or down. The use of this function is optional. It should be used by BTHAL_MM,
+to find out that L1-MCU is not being told byBMI/MMI, whether to use the BT audio or not.
+
+Parameters:- connected  [in] -
+TRUE - path is valid, MM should send the PCM to BT
+FALSE - path is not valid, MM should send the PCM to handset default audio device
+Returns: void
+*/
+
+/****************************************************/
+void L1Audio_RegisterBthal (L1AudioPcmCallback pcmCallback, L1AudioConfigureCallback configCallback);
+/*Description: - This function is implemented in L1-MCU and called by BTHAL_MM to init the L1-MCU for BT audio
+and to register callback functions that the L1-MCU will need to call into BTHAL.
+
+Parameters:
+pcmCallback    [in] - pointer of the PCM callback function.
+configCallback [in] - pointer of the config callback function.
+Returns: void
+*/
+
+
+/****************************************************/
+L1AudioPcmStatus L1Audio_PullPcmBlock (L1AudioPcmBlock *pcmBlock);
+/*Description: - This function is implemented in L1-MCU and called by BTHAL_MM to pull the next PCM block.
+If L1 already has a ready PCM block it should fill he pcmBlock parameter and return L1_PCM_READY.
+If a block is not ready yet, it should return with proper return type as defined below.
+
+Parameters:
+pcmBlock    [out] - a pointer to PCM block struct. if the function returns MM_PCM_READY, MM should fill this struct with the info of the current ready PCM block .
+Returns:
+L1_PCM_READY:	  The next PCM block is ready now
+L1_PCM_PENDING: The next PCM block is not ready yet, a callback will be made by MM when it is ready
+L1_PCM_MEDIA_ENDED: no more PCM blocks will be available anymore for the current track
+L1_PCM_FAILED:	  other failures
+*/
+
+/****************************************************/
+
+#endif
+
--- a/gsm-fw/L1/audio_include/l1audio_const.h	Sun Aug 17 21:35:23 2014 +0000
+++ b/gsm-fw/L1/audio_include/l1audio_const.h	Thu Aug 28 18:40:12 2014 +0000
@@ -3,17 +3,20 @@
  * L1AUDIO_CONST.H
  *
  *        Filename l1audio_const.h
- *  Copyright 2003 (C) Texas Instruments  
+ *  Copyright 2003 (C) Texas Instruments
  *
  ************* Revision Controle System Header *************/
 
 #if (AUDIO_TASK == 1)
 
+// DRC API base address
+#define C_DRC_API_BASE_ADDRESS 0x161E
+
   //----------------------------------------
   // LAYER 1 Synchronous audio process name.
   //----------------------------------------
 
-  #define NBR_AUDIO_MANAGER        19   // Number of L1S audio managers
+  #define NBR_AUDIO_MANAGER        37  // Number of L1S audio managers
 
   #define L1S_KEYBEEP_STATE         0   // l1s_keybeep_manager()
   #define L1S_TONE_STATE            1   // l1s_tone_manager()
@@ -34,6 +37,31 @@
   #define L1S_VM_AMR_PLAY_STATE    16   // l1s_vm_amr_play_manager()
   #define L1S_VM_AMR_RECORD_STATE  17   // l1s_vm_amr_record_manager()
   #define L1S_CPORT_STATE          18   // l1s_cport_manager()
+  #define L1S_AUDIO_ONOFF_STATE    19   // l1s_audio_onoff_manager()
+  #define L1S_STEREOPATH_DRV_STATE 20   // l1s_stereopath_drv_manager()
+  #define L1S_MP3_STATE            21   // l1s_mp3_manager()
+  #define L1S_ANR_STATE            22   // l1s_anr_manager()
+  #define L1S_IIR_STATE            23   // l1s_iir_manager()
+  #define L1S_LIMITER_STATE        24   // l1s_limiter_manager()
+  #define L1S_ES_STATE             25   // l1s_es_manager()
+  #define L1S_MIDI_STATE           26   // l1s_midi_manager()
+  #define L1S_AGC_UL_STATE         27   // l1s_agc_ul_manager()
+  #define L1S_AGC_DL_STATE         28   // l1s_agc_dl_manager()
+  #define L1S_WCM_STATE            29   // l1s_wcm_manager()
+  #define L1S_DRC_STATE            30   // l1s_drc_manager()
+#if (L1_AAC == 1)
+
+//added from e-sample for AAC
+  #define L1S_AAC_STATE            31   // l1s_aac_manager()
+#endif
+#if (L1_AUDIO_MCU_ONOFF == 1)
+  #define L1S_AUDIO_UL_ONOFF_STATE 32  // l1s_audio_ul_onoff_manager()
+  #define L1S_AUDIO_DL_ONOFF_STATE 33   // l1s_audio_dl_onoff_manager()
+#endif
+  #define L1S_PCM_DOWNLOAD_STATE   34   // l1s_pcm_download_manager()
+  #define L1S_PCM_UPLOAD_STATE     35   // l1s_pcm_upload_manager()
+#define L1S_FIR_STATE            36   // l1s_fir_manager()
+
 
   //----------------------------------------
   // MCU<->DSP communication bit field.
@@ -41,7 +69,7 @@
 
   // bit in d_tch_mode for audio features
   #define B_VOICE_MEMO_DTX      (TRUE_L << 5)
-#if (DSP == 34) || (DSP == 35) || (DSP == 36)
+#if (DSP == 34) || (DSP == 35) || (DSP == 36) || (DSP == 37) || (DSP == 38) || (DSP == 39)
   #define B_VM_VOCODER_SELECT   (TRUE_L << 6)
 #endif
 
@@ -58,6 +86,12 @@
   #define B_SR_PROCESSING_TASK  (TRUE_L <<  7) // Indicate if the DSP processing task is running
   #define B_SR_ALIGNMENT_TASK   (TRUE_L <<  8) // Indicate if the DSP alignment task is running
   #define B_IT_COM_REQ          (TRUE_L <<  9) // Indicate that the DSP requests an IT com for the next TDMA
+  #define B_AUDIO_ON_STATUS     (TRUE_L <<  14) // Set to 1 if DSP doesn'tpower OFF audio ABB if no DSP audio activity
+
+  #if(L1_PCM_EXTRACTION)
+    #define B_PCM_UPLOAD_ON_GOING    (TRUE_L << 4)
+    #define B_PCM_DOWNLOAD_ON_GOING  (TRUE_L << 5)
+  #endif
 
   // bits in d_toneskb_init
   #define B_VM_RECORD_START  (TRUE_L <<  2)   // Start the DSP voice memo recording task
@@ -76,6 +110,17 @@
   #define B_SR_STOP          (TRUE_L << 11)   // Stop the current DSP speech reco task
 
   #define B_MELO             (TRUE_L << 13)   // Start the DSP melody module if it's not started
+  #define B_AUDIO_ON_START   (TRUE_L << 14)   // Use to start ABB audio and to not stop it when 
+                                              // no audio activity on DSP side
+  #define B_AUDIO_OFF_STOP   (TRUE_L << 15)   // Use to stop ABB audio when no audio activity
+
+  #if(L1_PCM_EXTRACTION)
+    #define B_PCM_UPLOAD_START     (TRUE_L << 7)
+    #define B_PCM_UPLOAD_STOP      (TRUE_L << 8)
+    #define B_PCM_DOWNLOAD_START   (TRUE_L << 9)
+    #define B_PCM_DOWNLOAD_STOP    (TRUE_L << 10)
+  #endif
+
   #if (L1_CPORT == 1)
     //----------------------------------------
     // C_PORT constant.
@@ -169,6 +214,15 @@
     #define SC_VM_SPEECH_SAMPLE   20
   #endif // VOICE_MEMO || SPEECH_RECO
 
+  #if (L1_PCM_EXTRACTION)
+    #define B_PCM_DOWNLOAD_READY    (TRUE_L << 0)
+    #define B_PCM_UPLOAD_READY      (TRUE_L << 0)
+    #define SC_PCM_DOWNLOAD_SAMPLE  160
+    #define SC_PCM_UPLOAD_SAMPLE    160
+    #define B_PCM_UPLOAD_ERROR      (TRUE_L << 0)
+    #define B_PCM_DOWNLOAD_ERROR    (TRUE_L << 1)
+  #endif /* L1_PCM_EXTRACTION */
+
   #if (L1_VOICE_MEMO_AMR)
     //----------------------------------------
     // Voice memo amr constant.
@@ -257,14 +311,9 @@
 
   #endif // SPEECH_RECO
 
-  #if (AEC)
+  #if (L1_AEC == 1)
     #define B_AEC_ACK        (TRUE_L <<  0)  // Bit set by the MCU to indicate a new AEC settings and
                                              // clear by the DSP to confirm the new settings.
-    
-    #define B_AEC_EN         (TRUE_L <<  1)   // enables AEC module
-    #define B_SPENH_EN       (TRUE_L <<  2)   // enables SPENH module
-
-
     #if (L1_NEW_AEC)
       #define B_AEC_VISIBILITY (TRUE_L <<  9)  // Bit set by the MCU to have internal output values of AEC copied in API
       #define SC_AEC_VISIBILITY_SHIFT (9)
@@ -340,6 +389,76 @@
   #define MELODY_E1_SELECTED    (2)
   #define MELODY_E2_SELECTED    (3)
 
+  #if (L1_STEREOPATH == 1)
+    // configuration
+    #define AUDIO_SP_SELF_CONF      0
+    #define AUDIO_SP_MIDI_CONF      1
+    #define AUDIO_SP_MP3_CONF       2
+    #define AUDIO_SP_EXTAUDIO_CONF  3
+
+#if (ANLG_FAM == 3)
+    // sampling frequency 
+    #define AUDIO_SP_FREQ_8         7
+    #define AUDIO_SP_FREQ_11        6
+    #define AUDIO_SP_FREQ_16        5
+    #define AUDIO_SP_FREQ_22        4
+    #define AUDIO_SP_FREQ_32        3
+    #define AUDIO_SP_FREQ_44        2
+    #define AUDIO_SP_FREQ_48        0
+#endif
+
+#if (ANLG_FAM == 11 || CODE_VERSION == SIMULATION)
+ // sampling frequency index for Triton. This would be set in the 
+ //SRW[0:3] bits of the CTRL5 register.
+    #define AUDIO_SP_FREQ_8           0
+    #define AUDIO_SP_FREQ_11         1
+    #define AUDIO_SP_FREQ_12         2
+    #define AUDIO_SP_FREQ_16         3
+    #define AUDIO_SP_FREQ_22         4
+    #define AUDIO_SP_FREQ_24         5
+    #define AUDIO_SP_FREQ_32         6
+    #define AUDIO_SP_FREQ_44         7
+    #define AUDIO_SP_FREQ_48         8
+#endif
+
+    // DMA allocation
+    #define AUDIO_SP_DMA_ALLOC_MCU  0
+    #define AUDIO_SP_DMA_ALLOC_DSP  1
+
+    // Data type
+    #define AUDIO_SP_DATA_S8        0
+    #define AUDIO_SP_DATA_S16       1
+    #define AUDIO_SP_DATA_S32       2
+
+    // Source port
+    #define AUDIO_SP_SOURCE_IMIF    0
+    #define AUDIO_SP_SOURCE_API     2
+#if (CHIPSET == 15)
+    //In Locosto, EMIF is also a source port for the audio
+    #define AUDIO_SP_SOURCE_EMIF   4
+#endif
+
+    // output type
+    #define AUDIO_SP_MONO_OUTPUT    0
+    #define AUDIO_SP_STEREO_OUTPUT  1
+
+    // feature identifier
+    #define AUDIO_SP_MIDI_ID        0
+    #define AUDIO_SP_EXT_AUDIO_ID   1
+    #define AUDIO_SP_MP3_ID         2
+    #define AUDIO_SP_TESTS_ID       3
+#if (L1_AAC == 1)
+    #define AUDIO_SP_AAC_ID         4   //added for AAC
+#endif
+
+    // Pattern
+    #define AUDIO_SP_SILENCE_PATTERN 0
+    #define AUDIO_SP_SINUS1_PATTERN  1
+    #define AUDIO_SP_SINUS2_PATTERN  2
+    #define AUDIO_SP_SINUS3_PATTERN  3
+
+  #endif
+
 #endif // AUDIO_TASK
 
 #if (DSP == 17) || (DSP == 32)
@@ -348,3 +467,171 @@
 
 #define B_FIR_LOOP  (TRUE_L <<  1)  // Bit set by the MCU to close the loop between the audio UL and DL path.
                                     // This features is used to find the FIR coefficient.
+
+/*************************************/
+/* ACOUSTIC interface                */
+/*************************************/
+
+/* Control values */
+/*----------------*/
+
+#define B_ANR_ENABLE      (TRUE_L << 0)
+#define B_ANR_DISABLE     (TRUE_L << 1)
+#define B_ANR_FULL_UPDATE (TRUE_L << 2)
+
+#define B_IIR_ENABLE      (TRUE_L << 0)
+#define B_IIR_DISABLE     (TRUE_L << 1)
+#define B_IIR_FULL_UPDATE (TRUE_L << 2)
+
+#define B_AGC_ENABLE      (TRUE_L << 0)
+#define B_AGC_DISABLE     (TRUE_L << 1)
+#define B_AGC_FULL_UPDATE (TRUE_L << 2)
+
+#define B_WCM_ENABLE      (TRUE_L << 0)
+#define B_WCM_DISABLE     (TRUE_L << 1)
+#define B_WCM_FULL_UPDATE (TRUE_L << 2)
+
+#if (L1_DRC == 1)
+#define DRC_LPF_LENGTH  17
+#define DRC_BPF_LENGTH  17 
+#endif
+
+#define B_DRC_ENABLE      (TRUE_L << 0)
+#define B_DRC_DISABLE     (TRUE_L << 1)
+#define B_DRC_FULL_UPDATE (TRUE_L << 2)
+
+#define B_LIM_ENABLE      (TRUE_L << 0)
+#define B_LIM_DISABLE     (TRUE_L << 1)
+#define B_LIM_FULL_UPDATE (TRUE_L << 2)
+#define B_LIM_UPDATE      (TRUE_L << 3)
+
+#define B_ES_ENABLE       (TRUE_L << 0)
+#define B_ES_DISABLE      (TRUE_L << 1)
+#define B_ES_FULL_UPDATE  (TRUE_L << 2)
+
+#if (L1_IIR == 2)
+#define IIR_4X_ORDER_OF_SECTION      2
+#define IIR_4X_FIR_MAX_LENGTH       40
+#endif
+
+#if (L1_WCM == 1)
+#define  WCM_1X_GAIN_TABLE_LENGTH  16
+#endif
+
+/* d_aqi_status bits */
+/*-------------------*/
+#if (DSP == 38) || (DSP == 39)
+#define B_DRC_DL_STATE    (TRUE_L <<  3)
+#define B_IIR_DL_STATE    (TRUE_L <<  4)
+#define B_LIM_STATE       (TRUE_L <<  5)
+#define B_AGC_DL_STATE    (TRUE_L <<  6)
+#define B_AEC_STATE       (TRUE_L <<  11)
+#define B_ANR_UL_STATE    (TRUE_L <<  12)
+#define B_ES_STATE        (TRUE_L <<  13)
+#define B_AGC_UL_STATE    (TRUE_L <<  14)
+#else
+#define B_IIR_STATE       (TRUE_L <<  4)
+#define B_LIM_STATE       (TRUE_L <<  5)
+#define B_ANR_STATE       (TRUE_L << 12)
+#define B_ES_STATE        (TRUE_L << 13)
+#endif
+
+/* d_audio_apps_status bits */
+/*-------------------*/
+#if (DSP == 38) || (DSP == 39)
+#define B_WCM_STATE    (TRUE_L <<  0)
+#endif
+
+/*****************/
+/* ANR constants */
+/*****************/
+#if (L1_ANR == 1)
+#define C_ANR_VAD_THR            0x1333
+#define C_ANR_GAMMA_SLOW         0x7F1B
+#define C_ANR_GAMMA_FAST         0x75C3
+#define C_ANR_GAMMA_GAIN_SLOW    28836
+#define C_ANR_GAMMA_GAIN_FAST    32113
+#define C_ANR_THR2               0x01E0
+#define C_ANR_THR4               0x03DE
+#define C_ANR_THR5               0x012C
+#define C_ANR_MEAN_RATIO_THR1    10000
+#define C_ANR_MEAN_RATIO_THR2    6000
+#define C_ANR_MEAN_RATIO_THR3    5000
+#define C_ANR_MEAN_RATIO_THR4    4000
+#endif
+
+
+#if (L1_ES == 1)
+
+/*******************/
+/* ES constants    */
+/*******************/
+
+// ES custom mode
+#define ES_CUSTOM_PARAM 0xFF
+
+// ES mode definition
+#define B_ES_UL             (0x1 << 0)   // ES UL enable
+#define B_ES_DL             (0x1 << 1)   // ES DL enable
+#define B_ES_CNG            (0x1 << 2)   // CNG enable
+#define B_ES_NSF            (0x1 << 3)   // NSF enable
+#define B_ES_ALS_UL         (0x1 << 4)   // ALS UL enable
+#define B_ES_ALS_DL         (0x1 << 5)   // ALS DL enable
+
+// ES parameter values
+#define C_ES_GAIN_DL_OFF    0x0
+#define C_ES_GAIN_UL_1_OFF  0x0
+#define C_ES_GAIN_UL_2_OFF  0x0
+
+#define C_ES_TCL_M23DB      0x005E    // ref. -23dB
+#define C_ES_TCL_M6DB       0x0176    // ref. -6dB
+#define C_ES_TCL_M3DB       0x02EA    // ref. -6dB
+#define C_ES_TCL_0DB        0x05D1    // ref. 0dB
+#define C_ES_TCL_4DB        0x0E9D    // ref. 4dB
+#define C_ES_TCL_6DB        0x1729    // ref. 6dB
+#define C_ES_TCL_10DB       0x3A2F    // ref. 10dB
+#define C_ES_TCL_12DB       0x5C36    // ref. 12dB
+#define C_ES_TCL_B3_FE_LS   0x0004    // ref. -10dB
+#define C_ES_TCL_B3_DT_LS   0x0001    // ref. -16dB
+#define C_ES_TCL_B3_FE_NS   0x000F    // ref. -10dB
+#define C_ES_TCL_B3_DT_NS   0x0004    // ref. -16dB
+#define C_ES_TCL_B3_NE      0x000F    // ref. 0dB
+
+#define C_ES_TCL_FE_0       0x05D1    // ref. 0dB
+#define C_ES_TCL_DT_0       0x05D1    // ref. 0dB
+#define C_ES_TCL_NE_0       0x05D1    // ref. 0dB
+
+#define C_ES_TCL_LOUD       0x00BF    // ref. 70dB
+
+#define C_ES_SW_CNT         5         // ref. switching time 100ms
+#define C_ES_DT_CNT         5         // ref. double-talk time 100ms
+
+#define C_ES_HG_CNT_1       8         // ref. hangover time 150ms, A_S(IDLE) = -3dB
+#define C_ES_HG_CNT_1A      8         // ref. hangover time 150ms, A_S(IDLE) = -3dB
+#define C_ES_HG_CNT_2A      10        // ref. hangover time 200ms, A_S(IDLE) = -3dB
+#define C_ES_HG_CNT_2B      13        // ref. hangover time 250ms, A_S(IDLE) = -3dB
+#define C_ES_HG_CNT_2C      13        // ref. hangover time 250ms, A_S(IDLE) = -3dB
+#define C_ES_HG_CNT_2C_IDLE 13        // ref. hangover time 250ms, A_S(IDLE) = -3dB
+#define C_ES_HG_CNT_3       20        // ref. hangover time 400ms
+
+#define C_ES_ATT_LIN_0DB    0x7fff    // ref.  0dB
+#define C_ES_ATT_LIN_3DB    0x5A9D    // ref. -3dB
+#define C_ES_ATT_LIN_5DB    0x47FA    // ref. -5dB
+#define C_ES_ATT_LIN_6DB    0x4026    // ref. -6dB
+#define C_ES_ATT_LIN_8DB    0x32F4    // ref. -8dB
+#define C_ES_ATT_LIN_9DB    0x2D6A    // ref. -9dB
+#define C_ES_ATT_LIN_10DB   0x2879    // ref. -10dB
+#define C_ES_ATT_LIN_12DB   0x2026    // ref. -12dB
+#define C_ES_ATT_LIN_15DB   0x16C2    // ref. -15dB
+#define C_ES_ATT_LIN_16DB   0x1449    // ref. -16dB
+#define C_ES_ATT_LIN_19DB   0x0E5D    // ref. -19dB
+#define C_ES_ATT_LIN_21DB   0x0B68    // ref. -21dB
+#define C_ES_ATT_LIN_24DB   0x0813    // ref. -24dB
+#define C_ES_ATT_LIN_36DB   0x0207    // ref. -36dB
+#define C_ES_ATT_LIN_48DB   0x0082    // ref. -48dB
+#define C_ES_ATT_LIN_66DB   0x0010    // ref. -56dB
+
+#endif    // L1_ES
+#if(L1_EXT_AUDIO_MGT == 1)
+#define AUDIO_EXT_MIDI_BUFFER_SIZE 2640
+#endif
--- a/gsm-fw/L1/audio_include/l1audio_defty.h	Sun Aug 17 21:35:23 2014 +0000
+++ b/gsm-fw/L1/audio_include/l1audio_defty.h	Thu Aug 28 18:40:12 2014 +0000
@@ -3,10 +3,15 @@
  * L1AUDIO_DEFTY.H
  *
  *        Filename l1audio_defty.h
- *  Copyright 2003 (C) Texas Instruments  
+ *  Copyright 2003 (C) Texas Instruments
  *
  ************* Revision Controle System Header *************/
 
+#include "l1sw.cfg"
+#include "l1audio_msgty.h"
+#include "l1audio_cust.h"
+#include "l1audio_const.h"
+#include "l1audio_btapi.h"
 #if (AUDIO_TASK == 1)
 
   #if (KEYBEEP)
@@ -186,14 +191,102 @@
     T_L1S_VM_TASK;
 
   #endif
+
+  #if (L1_PCM_EXTRACTION)
+  /***************************************************************************************/
+  /* PCM extraction l1a_l1s_com structure...                                             */
+  /***************************************************************************************/
+
+    typedef struct
+    {
+      BOOL  start;
+      BOOL  stop;
+    }
+    T_PCM_DOWNLOAD_COMMAND;
+
+    typedef struct
+    {
+      UWORD8 session_id;
+      UWORD32   maximum_size;
+    }
+    T_PCM_DOWNLOAD_PARAM;
+
+    typedef struct
+    {
+      T_PCM_DOWNLOAD_COMMAND   command;
+      T_PCM_DOWNLOAD_PARAM     parameters;
+    }
+    T_PCM_DOWNLOAD_TASK;
+
+    typedef struct
+    {
+      BOOL  start;
+      BOOL  stop;
+    }
+    T_PCM_UPLOAD_COMMAND;
+
+    typedef struct
+    {
+      UWORD8    session_id;
+      UWORD32   maximum_size;
+    }
+    T_PCM_UPLOAD_PARAM;
+
+    typedef struct
+    {
+        T_PCM_UPLOAD_COMMAND   command;
+        T_PCM_UPLOAD_PARAM     parameters;
+    }
+    T_PCM_UPLOAD_TASK;
+
+    typedef struct
+    {
+      T_PCM_DOWNLOAD_TASK download;
+      T_PCM_UPLOAD_TASK   upload;
+    }
+    T_PCM_TASK;
+
+    /***************************************************************************************/
+    /* PCM l1s structure...                                                                */
+    /***************************************************************************************/
+
+    typedef struct
+    {
+      UWORD8  error_id;
+      UWORD16 buffer_size;
+      UWORD16 *ptr_buf;
+      UWORD32 uploaded_size;
+    }
+    T_L1S_PCM_UPLOAD_TASK;
+
+    typedef struct
+    {
+      UWORD8  error_id;
+      UWORD16 buffer_size;
+      UWORD16 *ptr_buf;
+      UWORD32 downloaded_size;
+    }
+    T_L1S_PCM_DOWNLOAD_TASK;
+
+    typedef struct
+    {
+      T_L1S_PCM_DOWNLOAD_TASK download;
+      T_L1S_PCM_UPLOAD_TASK   upload;
+    }
+    T_L1S_PCM_TASK;
+
+  #endif   /* L1_PCM_EXTRACTION */
+
   #if (L1_VOICE_MEMO_AMR)
     /***************************************************************************************/
-    /* Voice memo amr l1a_l1s_com structure...                                                 */
+    /* Voice memo amr l1a_l1s_com structure...                                             */
     /***************************************************************************************/
 
     typedef struct
     {
       BOOL  start;
+      BOOL pause;
+      BOOL resume;
       BOOL  stop;
     }
     T_VM_AMR_PLAY_COMMAND;
@@ -229,8 +322,8 @@
 
     typedef struct
     {
-        T_VM_AMR_RECORD_COMMAND   command;
-        T_VM_AMR_RECORD_PARAM     parameters;
+      T_VM_AMR_RECORD_COMMAND command;
+      T_VM_AMR_RECORD_PARAM   parameters;
     }
     T_VM_AMR_RECORD_TASK;
 
@@ -349,7 +442,7 @@
 
   #endif
 
-  #if (AEC)
+  #if (L1_AEC == 1)
     typedef struct
     {
       UWORD16 aec_control;
@@ -397,6 +490,50 @@
     } T_L1S_AEC_TASK;
   #endif
 
+#if(L1_AEC == 2)
+
+    typedef struct
+     {
+       BOOL start;
+     }
+     T_AEC_COMMAND;
+
+
+	typedef struct
+	{
+	  WORD16 aec_mode;
+	  WORD16 mu;
+	  UWORD16 cont_filter;
+	  WORD16 scale_input_ul;
+	  WORD16 scale_input_dl;
+	  WORD16 div_dmax;
+	  UWORD16 div_swap_good;
+	  UWORD16 div_swap_bad;
+	  WORD16 block_init;
+	  UWORD16 fact_vad;
+	  UWORD16 fact_asd_fil;
+	  UWORD16 fact_asd_mut;
+	  UWORD16 thrs_abs;
+	  UWORD16 es_level_max;
+	  UWORD16 granularity_att;
+	  UWORD16 coef_smooth;
+//	  UWORD16 block_size;
+	}
+	T_AEC_PARAMS;
+
+
+   typedef struct
+   {
+     T_AEC_COMMAND  command;
+     T_AEC_CONTROL aec_control;
+     T_AEC_PARAMS parameters;
+   }
+   T_AEC_TASK;
+
+
+#endif
+
+
   #if (FIR)
     typedef struct
     {
@@ -545,4 +682,519 @@
     }
     T_CPORT_TASK;
   #endif
+
+  #if (L1_EXTERNAL_AUDIO_VOICE_ONOFF == 1 || L1_EXT_MCU_AUDIO_VOICE_ONOFF == 1)
+    typedef struct
+    {
+      BOOL      start;
+    }
+    T_AUDIO_ONOFF_COMMAND;
+
+    typedef struct 
+    {
+  #if (L1_EXTERNAL_AUDIO_VOICE_ONOFF == 1)
+      UWORD8  onoff_value;   /* This value is used to indicate the required state from the MMI interface */
+  #endif
+  #if (L1_EXT_MCU_AUDIO_VOICE_ONOFF == 1)
+      UWORD8  vul_onoff_value;/* This value is used to indicate the required state from the MMI interface */
+      UWORD8  vdl_onoff_value;/* This value is used to indicate the required state from the MMI interface */
+
+  #endif
+    }
+    T_AUDIO_ONOFF_PARAM;
+
+    typedef struct
+    {
+      T_AUDIO_ONOFF_COMMAND  command;
+      T_AUDIO_ONOFF_PARAM    parameters;
+    }
+    T_AUDIO_ONOFF_TASK;
+  #endif
+
+  #if (L1_EXT_MCU_AUDIO_VOICE_ONOFF == 1)
+    #define L1_AUDIO_VOICE_UL_OFF 	0
+    #define L1_AUDIO_VOICE_UL_ON 	1
+    #define L1_AUDIO_VOICE_UL_NO_ACTION	2 
+
+    #define L1_AUDIO_VOICE_DL_OFF 	0
+    #define L1_AUDIO_VOICE_DL_ON 	1
+    #define L1_AUDIO_VOICE_DL_NO_ACTION	2 
+  #endif
+
+  #if (L1_STEREOPATH == 1)
+    /***************************************************************************************/
+    /* Stereopath l1a_l1s_com structure...                                                 */
+    /***************************************************************************************/
+    typedef struct
+    {
+      BOOL  start;
+      BOOL  stop;
+    }
+    T_STEREOPATH_DRV_COMMAND;
+
+    typedef struct
+    {
+#if (CODE_VERSION == NOT_SIMULATION)
+      UWORD8  sampling_frequency;
+      UWORD8  DMA_allocation;
+      void    (*DMA_int_callback_fct) (UWORD16);
+      UWORD8  DMA_channel_number;
+      UWORD8  data_type;
+      UWORD8  source_port;
+      WORD8   *source_buffer_address;
+      UWORD16 element_number;
+      UWORD16 frame_number;
+      UWORD8  mono_stereo;
+      UWORD8  feature_identifier;
+#else
+      UWORD8  dummy;
+#endif
+    }
+    T_STEREOPATH_DRV_PARAM;
+
+    typedef struct
+    {
+      T_STEREOPATH_DRV_COMMAND   command;
+      T_STEREOPATH_DRV_PARAM     parameters;
+    }
+    T_STEREOPATH_DRV_TASK;
+
+  #endif
+
+  #if (L1_EXT_AUDIO_MGT == 1)
+    typedef struct
+    {
+      UWORD8 session_id;
+    }
+    T_L1S_EXT_AUDIO_MGT_VAR;
+  #endif
+
+  #if (L1_ANR == 1)
+    /***************************************************************************************/
+    /* ANR l1a_l1s_com structure...                                                        */
+    /***************************************************************************************/
+    typedef struct
+    {
+      BOOL  update;
+    }
+    T_ANR_COMMAND;
+
+    typedef struct 
+    {
+      BOOL      anr_enable;
+      WORD16    min_gain;
+      WORD8     div_factor_shift;
+      UWORD8    ns_level;
+    }
+    T_ANR_PARAM;
+
+    typedef struct
+    {
+      T_ANR_COMMAND   command;
+      T_ANR_PARAM     parameters;
+    }
+    T_ANR_TASK;
+  #endif
+
+  #if (L1_ANR == 2)
+    /***************************************************************************************/
+    /* ANR 2.13 l1a_l1s_com structure...                                                        */
+    /***************************************************************************************/
+    typedef struct
+    {
+      BOOL  update;
+    }
+    T_AQI_ANR_COMMAND;
+
+    typedef struct
+    {
+      T_ANR_CONTROL     anr_ul_control;
+      WORD16            control;
+      WORD16            ns_level;
+      WORD16            tone_ene_th;
+      WORD16            tone_cnt_th;
+    }
+    T_AQI_ANR_PARAM;
+
+    typedef struct
+    {
+      T_AQI_ANR_COMMAND   command;
+      T_AQI_ANR_PARAM     parameters;
+    }
+    T_AQI_ANR_TASK;
+  #endif
+
+  #if (L1_IIR == 1)
+    /***************************************************************************************/
+    /* IIR l1a_l1s_com structure...                                                        */
+    /***************************************************************************************/
+    typedef struct
+    {
+      BOOL  update;
+    }
+    T_IIR_COMMAND;
+
+    typedef struct 
+    {
+      BOOL      iir_enable;
+      UWORD8    nb_iir_blocks;
+      WORD16   *iir_coefs;
+      UWORD8    nb_fir_coefs;
+      WORD16   *fir_coefs;
+      WORD8     input_scaling;  
+      WORD8     fir_scaling;  
+      WORD8     input_gain_scaling;
+      WORD8     output_gain_scaling;
+      UWORD16   output_gain;
+      WORD16    feedback;
+    }
+    T_IIR_PARAM;
+
+    typedef struct
+    {
+      T_IIR_COMMAND   command;
+      T_IIR_PARAM     parameters;
+    }
+    T_IIR_TASK;
+  #endif
+
+  #if (L1_WCM == 1)
+    /***************************************************************************************/
+    /* WCM 1.x l1a_l1s_com structure...                                                        */
+    /***************************************************************************************/
+    typedef struct
+    {
+      BOOL  update;
+    }
+    T_AQI_WCM_COMMAND;
+
+    typedef struct
+    {
+      T_AQI_WCM_COMMAND   command;
+      T_AQI_WCM_PARAM     *parameters;
+    }
+    T_AQI_WCM_TASK;
+  #endif
+
+  #if (L1_IIR == 2)
+    /***************************************************************************************/
+    /* IIR 4.x l1a_l1s_com structure...                                                        */
+    /***************************************************************************************/
+    typedef struct
+    {
+      BOOL  update;
+    }
+    T_AQI_IIR_COMMAND;
+
+    typedef struct
+    {
+      T_AQI_IIR_COMMAND   command;
+      T_AQI_IIR_PARAM     *parameters;
+    }
+    T_AQI_IIR_TASK;
+  #endif
+
+  
+#if (L1_AGC_UL == 1 || L1_AGC_DL == 1)
+    typedef struct
+    {
+      BOOL  update;
+    }
+    T_AQI_AGC_COMMAND;
+  #endif
+
+  #if (L1_AGC_UL == 1)
+    /***************************************************************************************/
+    /* AGC UL l1a_l1s_com structure...                                                        */
+    /***************************************************************************************/
+
+    typedef struct
+    {
+      T_AGC_CONTROL agc_ul_control;
+	  UWORD16       control;
+      UWORD16       frame_size;
+      WORD16        targeted_level;
+      WORD16        signal_up;
+      WORD16        signal_down;
+      WORD16        max_scale;
+      WORD16        gain_smooth_alpha;
+      WORD16        gain_smooth_alpha_fast;
+      WORD16        gain_smooth_beta;
+      WORD16        gain_smooth_beta_fast;
+      WORD16        gain_intp_flag;
+    }
+    T_AQI_AGC_UL_PARAM;
+
+    typedef struct
+    {
+      T_AQI_AGC_COMMAND   command;
+      T_AQI_AGC_UL_PARAM  parameters;
+    }
+    T_AQI_AGC_UL_TASK;
+  #endif
+
+  #if (L1_AGC_DL == 1)
+    /***************************************************************************************/
+    /* AGC DL l1a_l1s_com structure...                                                        */
+    /***************************************************************************************/
+
+    typedef struct
+    {
+      T_AGC_CONTROL agc_dl_control;
+	  UWORD16       control;
+      UWORD16       frame_size;
+      WORD16        targeted_level;
+      WORD16        signal_up;
+      WORD16        signal_down;
+      WORD16        max_scale;
+      WORD16        gain_smooth_alpha;
+      WORD16        gain_smooth_alpha_fast;
+      WORD16        gain_smooth_beta;
+      WORD16        gain_smooth_beta_fast;
+      WORD16        gain_intp_flag;
+    }
+    T_AQI_AGC_DL_PARAM;
+
+    typedef struct
+    {
+      T_AQI_AGC_COMMAND   command;
+      T_AQI_AGC_DL_PARAM  parameters;
+    }
+    T_AQI_AGC_DL_TASK;
+  #endif
+
+  #if (L1_DRC == 1)
+    /***************************************************************************************/
+    /* DRC 1.x l1a_l1s_com structure...                                                        */
+    /***************************************************************************************/
+    typedef struct
+    {
+      BOOL  update;
+    }
+    T_AQI_DRC_COMMAND;
+
+    typedef struct
+    {
+      T_AQI_DRC_COMMAND   command;
+      T_AQI_DRC_PARAM     *parameters;
+    }
+    T_AQI_DRC_TASK;
+
+
+   /***************************************************************************************/
+   /* MP3 MCU-DSP API                                                                     */
+   /***************************************************************************************/
+   typedef struct
+   {
+    API_SIGNED d_drc_speech_mode_samp_f;
+    API_SIGNED d_drc_num_subbands;
+    API_SIGNED d_drc_frame_len;
+    API_SIGNED d_drc_expansion_knee_fb_bs;
+    API_SIGNED d_drc_expansion_knee_md_hg;
+    API_SIGNED d_drc_expansion_ratio_fb_bs;
+    API_SIGNED d_drc_expansion_ratio_md_hg;
+    API_SIGNED d_drc_max_amplification_fb_bs;
+    API_SIGNED d_drc_max_amplification_md_hg;
+	API_SIGNED d_drc_compression_knee_fb_bs;
+    API_SIGNED d_drc_compression_knee_md_hg;
+    API_SIGNED d_drc_compression_ratio_fb_bs;
+    API_SIGNED d_drc_compression_ratio_md_hg;
+    API_SIGNED d_drc_energy_limiting_th_fb_bs;
+    API_SIGNED d_drc_energy_limiting_th_md_hg;
+    API_SIGNED d_drc_limiter_threshold_fb;
+    API_SIGNED d_drc_limiter_threshold_bs;
+    API_SIGNED d_drc_limiter_threshold_md;
+    API_SIGNED d_drc_limiter_threshold_hg;
+    API_SIGNED d_drc_limiter_hangover_spect_preserve;
+    API_SIGNED d_drc_limiter_release_fb_bs;
+    API_SIGNED d_drc_limiter_release_md_hg;
+    API_SIGNED d_drc_gain_track_fb_bs;
+    API_SIGNED d_drc_gain_track_md_hg;
+    API_SIGNED a_drc_low_pass_filter[17];
+    API_SIGNED a_drc_mid_band_filter[17];
+   } T_DRC_MCU_DSP;
+  #endif
+
+  #if (L1_LIMITER == 1)
+    /***************************************************************************************/
+    /* LIMITER l1a_l1s_com structure...                                                    */
+    /***************************************************************************************/
+    typedef struct
+    {
+      BOOL  update;
+      BOOL  partial_update;
+    }
+    T_LIMITER_COMMAND;
+
+    typedef struct 
+    {
+      BOOL      limiter_enable;
+      UWORD16   block_size;
+      UWORD16   slope_update_period;
+      UWORD16   nb_fir_coefs;
+      WORD16   *filter_coefs;
+      WORD16    thr_low_0;
+      WORD16    thr_low_slope;
+      WORD16    thr_high_0;
+      WORD16    thr_high_slope;
+      WORD16    gain_fall;
+      WORD16    gain_rise;
+    }
+    T_LIMITER_PARAM;
+
+    typedef struct
+    {
+      T_LIMITER_COMMAND   command;
+      T_LIMITER_PARAM     parameters;
+    }
+    T_LIMITER_TASK;
+  #endif
+
+  #if (L1_ES == 1)
+    /***************************************************************************************/
+    /* ES l1a_l1s_com structure...                                                         */
+    /***************************************************************************************/
+    typedef struct
+    {
+      BOOL  update;
+    }
+    T_ES_COMMAND;
+
+    typedef struct
+    {
+      UWORD8 es_mode;                    /* ES general configuration */
+      WORD16 es_gain_dl;
+      WORD16 es_gain_ul_1;
+      WORD16 es_gain_ul_2;
+      WORD16 tcl_fe_ls_thr;              /* TCL reference threshold in FE mode for loud signal */
+      WORD16 tcl_dt_ls_thr;              /* TCL reference threshold in DT mode for loud signal */
+      WORD16 tcl_fe_ns_thr;              /* TCL reference threshold in FE mode for nominal signal */
+      WORD16 tcl_dt_ns_thr;              /* TCL reference threshold in DT mode for nominal signal */
+      WORD16 tcl_ne_thr;                 /* TCL reference threshold in NE mode */
+      WORD16 ref_ls_pwr;                 /* reference power for loud signals in DL */
+      WORD16 switching_time;             /* switching time (idx) */
+      WORD16 switching_time_dt;          /* switching time (idx) in DT mode */
+      WORD16 hang_time;                  /* hangover time  (idx) */
+      WORD16 gain_lin_dl_vect[4];        /* downlink linear gain per state */
+      WORD16 gain_lin_ul_vect[4];        /* uplink linear gain per state */
+    }
+    T_ES_CONFIG;
+
+    typedef struct 
+    {
+      UWORD8      es_enable;
+      UWORD8      es_behavior;
+      T_ES_CONFIG es_config;
+    }
+    T_ES_PARAM;
+
+    typedef struct
+    {
+      T_ES_COMMAND   command;
+      T_ES_PARAM     parameters;
+    }
+    T_ES_TASK;
+  #endif
+
+    typedef struct
+    {
+      BOOL      start;
+    }
+    T_AUDIOIT_COMMAND;
+
+    typedef struct
+    {
+      T_AUDIOIT_COMMAND   command;
+    }
+    T_AUDIOIT_TASK;
+
+    // Triton Audio ON/OFF Changes
+#if (L1_AUDIO_MCU_ONOFF == 1)    
+    typedef enum
+    {
+        L1_AUDIO_NO_ACTION = 0,
+        L1_AUDIO_TURN_ON   = 1,
+        L1_AUDIO_TURN_OFF  = 2
+    }
+    T_L1_AUDIO_ACTION;
+
+    typedef enum
+    {
+        L1_INVALID                             =  0xFF,
+        L1_AUDIO_UL_OFF                 =   0,
+        L1_AUDIO_UL_SWITCHON_STARTED    =   1,
+        L1_AUDIO_UL_ON                  =   2,
+        L1_AUDIO_UL_SWITCHOFF_STARTED   =   3
+    }
+    T_L1_AUDIO_UL_STATE;
+
+    typedef enum
+    {
+        L1_DL_INVALID  			=  0xFF,
+        L1_AUDIO_DL_OFF                 =   0,
+        L1_AUDIO_DL_SWITCHON_STARTED    =   1,
+        L1_AUDIO_DL_ON                  =   2,
+        L1_AUDIO_DL_SWITCHOFF_STARTED   =   3
+    }
+    T_L1_AUDIO_DL_STATE;
+
+    typedef enum
+    {
+        L1_AUDIO_DL_PATH = 0,
+        L1_AUDIO_UL_PATH = 1
+    }
+    T_L1_AUDIO_PATH;
+
+
+    typedef struct
+    {
+        UWORD8              l1_audio_switch_on_ul_request;
+        UWORD8              l1_audio_switch_on_dl_request;
+
+        UWORD8              l1_audio_ul_on2off_hold_time;
+        UWORD8              l1_audio_dl_on2off_hold_time;
+
+        T_L1_AUDIO_ACTION   l1_audio_ul_action;
+        T_L1_AUDIO_ACTION   l1_audio_dl_action;
+
+
+        BOOL                l1_audio_ul_switched_on;
+        BOOL                l1_audio_dl_switched_on;
+
+        BOOL                l1_audio_ul_switched_off;
+        BOOL                l1_audio_dl_switched_off;
+        
+    }
+    T_L1S_AUDIO_ONOFF_MANAGER;
+
+#endif // L1_AUDIO_MCU_ONOFF    
+	
+#if(L1_MIDI_BUFFER == 1)
+typedef struct
+{
+   UWORD8 a_midi_buffer_size;
+#if (DRP_FW_BUILD != 1)
+#if ((OP_L1_STANDALONE == 0) && (PSP_STANDALONE == 0))
+      UINT16 audio_play_buffer[AUDIO_EXT_MIDI_BUFFER_SIZE*2];
+#endif
+#endif
+  }T_MIDI_DMA_PARAM;
+#endif
+
+#if(L1_BT_AUDIO ==1)
+typedef struct
+{
+      BOOL connected_status;
+      BOOL pcm_data_ready;
+      UWORD8 pcm_data_pending;
+      UWORD8 pcm_data_end;
+      UWORD8 pcm_data_failed;
+      L1AudioPcmConfig pcmconfig;
+      L1AudioPcmBlock  pcmblock;
+      L1AudioConfigureCallback audio_configure_callback;
+      L1AudioPcmCallback audio_pcmblock_callback;
+ } T_L1_BT_AUDIO;
+#endif
+
+
 #endif // AUDIO_TASK
--- a/gsm-fw/L1/audio_include/l1audio_msgty.h	Sun Aug 17 21:35:23 2014 +0000
+++ b/gsm-fw/L1/audio_include/l1audio_msgty.h	Thu Aug 28 18:40:12 2014 +0000
@@ -3,9 +3,13 @@
  * L1AUDIO_MSGTY.H
  *
  *        Filename l1audio_msgty.h
- *  Copyright 2003 (C) Texas Instruments  
+ *  Copyright 2003 (C) Texas Instruments
  *
  ************* Revision Controle System Header *************/
+#ifndef _L1AUDIO_MSGTY_H
+#define _L1AUDIO_MSGTY_H
+
+#include "l1sw.cfg"
 
 #if (AUDIO_TASK == 1)
 
@@ -345,7 +349,7 @@
     T_L1_SRBACK_TEMP_SAVE_DATA_REQ;
   #endif
 
-  #if (AEC)
+  #if (L1_AEC == 1)
     typedef struct
     {
       #if (defined _WINDOWS && (OP_RIV_AUDIO == 1))
@@ -376,6 +380,84 @@
     #endif
   #endif
 
+#if (L1_AEC == 2)
+
+   typedef enum
+   {
+	  L1_AQI_AEC_STOP   = 0,
+	  L1_AQI_AEC_START  = 1,
+	  L1_AQI_AEC_UPDATE = 2
+   }
+   T_AEC_CONTROL;
+
+
+	typedef struct
+	{
+	  WORD16 aec_mode;
+	  WORD16 mu;
+	  UWORD16 cont_filter;
+	  WORD16 scale_input_ul;
+	  WORD16 scale_input_dl;
+	  WORD16 div_dmax;
+	  UWORD16 div_swap_good;
+	  UWORD16 div_swap_bad;
+	  WORD16 block_init;
+	  UWORD16 fact_vad;
+	  UWORD16 fact_asd_fil;
+	  UWORD16 fact_asd_mut;
+	  UWORD16 thrs_abs;
+	  UWORD16 es_level_max;
+	  UWORD16 granularity_att;
+	  UWORD16 coef_smooth;
+//	  UWORD16 block_size;
+	}
+	T_MMI_AQI_AEC_PARAMS;
+
+
+
+    typedef struct
+    {
+      #if (defined _WINDOWS && (OP_RIV_AUDIO == 1))
+       T_RV_HDR  header;
+      #endif
+       T_AEC_CONTROL aec_control;
+       T_MMI_AQI_AEC_PARAMS aec_parameters;
+    }
+    T_MMI_AQI_AEC_REQ;
+
+
+	typedef enum
+	{
+		L1_AQI_AEC_NO_ACTION = -1,
+		L1_AQI_AEC_STOPPED = 0,
+		L1_AQI_AEC_STARTED = 1,
+		L1_AQI_AEC_UPDATED = 2
+	}
+	T_AEC_ACTION;
+
+	typedef struct
+	{
+      #if (defined _WINDOWS && (OP_RIV_AUDIO == 1))
+       T_RV_HDR  header;
+      #endif
+
+		T_AEC_ACTION aec_action;
+	}
+	T_MMI_AQI_AEC_CON;
+
+	typedef struct
+	{
+      #if (defined _WINDOWS && (OP_RIV_AUDIO == 1))
+       T_RV_HDR  header;
+      #endif
+
+	T_AEC_ACTION aec_action;
+	}
+	T_L1_AQI_AEC_CON;
+
+#endif// L1_AEC ==2
+
+
   #if (FIR)
     typedef struct
     {
@@ -489,4 +571,602 @@
       typedef T_L1_CPORT_CONFIGURE_CON T_MMI_CPORT_CONFIGURE_CON;
     #endif
   #endif
+
+  #if (L1_EXTERNAL_AUDIO_VOICE_ONOFF == 1)
+    typedef struct
+    {
+      #if (defined _WINDOWS && (OP_RIV_AUDIO == 1))
+        T_RV_HDR  header;
+      #endif
+       UWORD8   onoff_value;
+    }
+    T_MMI_AUDIO_ONOFF_REQ;
+  #endif
+
+  #if (L1_EXT_MCU_AUDIO_VOICE_ONOFF == 1)
+    typedef struct
+    {
+      #if (defined _WINDOWS && (OP_RIV_AUDIO == 1))
+        T_RV_HDR  header;
+      #endif
+       UWORD8   vul_onoff_value;
+       UWORD8   vdl_onoff_value;
+    }
+    T_MMI_AUDIO_ONOFF_REQ;
+  #endif
+
+  #if (L1_EXT_AUDIO_MGT == 1)
+    typedef struct
+    {
+     UWORD8   sampling_frequency;
+     UWORD8   DMA_channel_number;
+     UWORD8   data_type;
+     UWORD8   element_number;
+     UWORD16  frame_number;
+     WORD8*   source_buffer_address;
+     UWORD8   mono_stereo;
+     UWORD8   session_id;
+    }
+    T_MMI_EXT_AUDIO_MGT_START_REQ;
+  #endif
+
+  #if (L1_ANR == 1)
+   typedef struct
+   {
+    #if (OP_RIV_AUDIO == 1)
+      T_RV_HDR  header;
+    #endif
+      BOOL      anr_enable;
+      WORD16    min_gain;
+      WORD8     div_factor_shift;
+      UWORD8    ns_level;
+   }
+   T_MMI_ANR_REQ;
+  #endif
+
+  #if (L1_ANR == 2)
+   typedef enum
+   {
+      ANR_STOP  = 0,
+      ANR_START = 1,
+      ANR_UPDATE = 2
+   }
+   T_ANR_CONTROL;
+
+   typedef struct
+   {
+      WORD16    control;
+      WORD16    ns_level;
+      WORD16    tone_ene_th;
+      WORD16    tone_cnt_th;
+   }
+   T_MMI_AQI_ANR_PARAMS;
+
+   typedef struct
+   {
+    #if (OP_RIV_AUDIO == 1)
+      T_RV_HDR  header;
+    #endif
+      T_ANR_CONTROL         anr_ul_control;
+      T_MMI_AQI_ANR_PARAMS  parameters;
+   }
+   T_MMI_AQI_ANR_REQ;
+
+   typedef enum
+   {
+      ANR_NO_ACTION = -1,
+      ANR_STOPPED   = 0,
+      ANR_STARTED   = 1,
+      ANR_UPDATED   = 2
+   }
+   T_ANR_ACTION;
+
+   typedef struct
+   {
+    #if (OP_RIV_AUDIO == 1)
+      T_RV_HDR  header;
+    #endif
+      T_ANR_ACTION      anr_ul_action;
+   }
+   T_MMI_AQI_ANR_CON;
+
+   typedef struct
+   {
+    #if (OP_RIV_AUDIO == 1)
+      T_RV_HDR  header;
+    #endif
+      T_ANR_ACTION      anr_ul_action;
+   }
+   T_L1_AQI_ANR_CON;
+
+  #endif
+
+  #if (L1_IIR == 1)
+   typedef struct
+   {
+    #if (OP_RIV_AUDIO == 1)
+      T_RV_HDR  header;
+    #endif
+      BOOL      iir_enable;
+      UWORD8    nb_iir_blocks;
+      WORD16   *iir_coefs;
+      UWORD8    nb_fir_coefs;
+      WORD16   *fir_coefs;
+      WORD8     input_scaling;  
+      WORD8     fir_scaling;  
+      WORD8     input_gain_scaling;
+      WORD8     output_gain_scaling;
+      UWORD16   output_gain;
+      WORD16    feedback;
+   }
+   T_MMI_IIR_REQ;
+  #endif
+
+  #if (L1_WCM == 1)
+
+   typedef enum
+   {
+      WCM_STOP   = 0,
+      WCM_START  = 1,
+      WCM_UPDATE = 2
+   }
+   T_WCM_CONTROL;
+
+   typedef struct
+   {
+     WORD16 mode;
+     WORD16 frame_size;
+	 WORD16 num_sub_frames;
+     WORD16 ratio;
+     WORD16 threshold;
+     WORD16 gain[16];
+   }
+   T_MMI_AQI_WCM_PARAMS;
+
+   typedef struct
+   {
+    #if (OP_RIV_AUDIO == 1)
+      T_RV_HDR  header;
+    #endif
+    T_WCM_CONTROL         wcm_control;
+    T_MMI_AQI_WCM_PARAMS  parameters;
+   }
+   T_MMI_AQI_WCM_REQ;
+
+   typedef T_MMI_AQI_WCM_REQ  T_AQI_WCM_PARAM;
+
+   typedef enum
+   {
+      WCM_NO_ACTION = -1,
+      WCM_STOPPED   = 0,
+      WCM_STARTED   = 1,
+      WCM_UPDATED   = 2
+   }
+   T_WCM_ACTION;
+
+   typedef struct
+   {
+    #if (OP_RIV_AUDIO == 1)
+      T_RV_HDR  header;
+    #endif
+    T_WCM_ACTION  wcm_action;
+   }
+   T_MMI_AQI_WCM_CON;
+
+   typedef struct
+   {
+    #if (OP_RIV_AUDIO == 1)
+      T_RV_HDR  header;
+    #endif
+      T_WCM_ACTION  wcm_action;
+   }
+   T_L1_AQI_WCM_CON;
+
+  #endif
+
+
+  #if (L1_AGC_UL == 1 || L1_AGC_DL == 1)
+
+   typedef enum
+   {
+     AGC_STOP   = 0,
+     AGC_START  = 1,
+     AGC_UPDATE = 2
+   }
+   T_AGC_CONTROL;
+
+   typedef struct
+   {
+     UWORD16  control;
+     UWORD16  frame_size;
+     WORD16   targeted_level;
+     WORD16   signal_up;
+     WORD16   signal_down;
+     WORD16   max_scale;
+     WORD16   gain_smooth_alpha;
+     WORD16   gain_smooth_alpha_fast;
+     WORD16   gain_smooth_beta;
+     WORD16   gain_smooth_beta_fast;
+     WORD16   gain_intp_flag;
+   }
+   T_MMI_AQI_AGC_PARAMS;
+
+   typedef enum
+   {
+	 AGC_NO_ACTION = -1,
+     AGC_STOPPED = 0,
+     AGC_STARTED = 1,
+     AGC_UPDATED = 2
+   }
+   T_AGC_ACTION;
+
+  #endif
+
+  #if (L1_AGC_UL == 1)
+
+   typedef struct
+   {
+    #if (OP_RIV_AUDIO == 1)
+      T_RV_HDR  header;
+    #endif
+     T_AGC_CONTROL        agc_ul_control;
+	 T_MMI_AQI_AGC_PARAMS parameters;
+   }
+   T_MMI_AQI_AGC_UL_REQ ;
+
+   typedef struct
+   {
+    #if (OP_RIV_AUDIO == 1)
+      T_RV_HDR  header;
+    #endif
+      T_AGC_ACTION	agc_ul_action;
+   }
+   T_MMI_AQI_AGC_UL_CON;
+
+   typedef struct
+   {
+    #if (OP_RIV_AUDIO == 1)
+      T_RV_HDR  header;
+    #endif
+      T_AGC_ACTION  agc_ul_action;
+   }
+   T_L1_AQI_AGC_UL_CON;  
+
+  #endif
+
+
+  #if (L1_AGC_DL == 1)
+
+   typedef struct
+   {
+    #if (OP_RIV_AUDIO == 1)
+      T_RV_HDR  header;
+    #endif
+     T_AGC_CONTROL        agc_dl_control;
+	 T_MMI_AQI_AGC_PARAMS parameters;
+   }
+   T_MMI_AQI_AGC_DL_REQ ;
+
+   typedef struct
+   {
+    #if (OP_RIV_AUDIO == 1)
+      T_RV_HDR  header;
+    #endif
+      T_AGC_ACTION	agc_dl_action;
+   }
+   T_MMI_AQI_AGC_DL_CON;
+
+   typedef struct
+   {
+    #if (OP_RIV_AUDIO == 1)
+      T_RV_HDR  header;
+    #endif
+      T_AGC_ACTION  agc_dl_action;
+   }
+   T_L1_AQI_AGC_DL_CON;  
+
+  #endif
+
+
+  #if (L1_IIR == 2)
+
+   typedef enum
+   {
+      IIR_STOP   = 0,
+      IIR_START  = 1,
+      IIR_UPDATE = 2
+   }
+   T_IIR_CONTROL;
+
+
+   typedef struct
+   {
+      UWORD16 fir_enable;
+      UWORD16 fir_length;
+      WORD16  fir_shift;
+      WORD16  fir_taps[40];
+   }
+   T_MMI_AQI_IIR_FIR_PARAMS;
+
+   typedef struct
+   {
+      WORD16 sos_fact;
+      WORD16 sos_fact_form;
+      WORD16 sos_den[2];
+      WORD16 sos_num[3];
+      WORD16 sos_num_form;
+   }
+   T_MMI_AQI_IIR_SINGLE_SOS_PARAMS;
+
+   typedef struct
+   {
+
+     UWORD16 sos_enable;
+     UWORD16 sos_number;
+     T_MMI_AQI_IIR_SINGLE_SOS_PARAMS sos_filter[6];
+   }
+   T_MMI_AQI_IIR_SOS_PARAMS;
+
+   typedef struct
+   {
+     UWORD16 control;
+     UWORD16 frame_size;
+     UWORD16 fir_swap;
+     T_MMI_AQI_IIR_FIR_PARAMS fir_filter;
+     T_MMI_AQI_IIR_SOS_PARAMS sos_filter;
+     WORD16 gain;
+   }
+   T_MMI_AQI_IIR_PARAMS;
+
+   typedef struct
+   {
+    #if (OP_RIV_AUDIO == 1)
+      T_RV_HDR  header;
+    #endif
+    T_IIR_CONTROL           iir_dl_control;
+      T_MMI_AQI_IIR_PARAMS  parameters;
+   }
+   T_MMI_AQI_IIR_DL_REQ;
+
+   typedef T_MMI_AQI_IIR_DL_REQ  T_AQI_IIR_PARAM;
+
+   typedef enum
+   {
+      IIR_NO_ACTION = -1,
+      IIR_STOPPED   = 0,
+      IIR_STARTED   = 1,
+      IIR_UPDATED   = 2
+   }
+   T_IIR_ACTION;
+
+   typedef struct
+   {
+    #if (OP_RIV_AUDIO == 1)
+      T_RV_HDR  header;
+    #endif
+    T_IIR_ACTION  iir_dl_action;
+   }
+   T_MMI_AQI_IIR_DL_CON;
+
+   typedef struct
+   {
+    #if (OP_RIV_AUDIO == 1)
+      T_RV_HDR  header;
+    #endif
+      T_IIR_ACTION  iir_dl_action;
+   }
+   T_L1_AQI_IIR_DL_CON;
+
+  #endif
+
+
+#if (L1_DRC == 1)
+
+   typedef enum
+   {
+      DRC_STOP   = 0,
+      DRC_START  = 1,
+      DRC_UPDATE = 2
+   }
+   T_DRC_CONTROL;
+
+   typedef struct
+   {
+     WORD16 speech_mode_samp_f;
+     WORD16 num_subbands;
+     WORD16 frame_len;
+     WORD16 expansion_knee_fb_bs;
+     WORD16 expansion_knee_md_hg;
+     WORD16 expansion_ratio_fb_bs;
+     WORD16 expansion_ratio_md_hg;
+     WORD16 max_amplification_fb_bs;
+     WORD16 max_amplification_md_hg;
+     WORD16 compression_knee_fb_bs;
+     WORD16 compression_knee_md_hg;
+     WORD16 compression_ratio_fb_bs;
+     WORD16 compression_ratio_md_hg;
+     WORD16 energy_limiting_th_fb_bs;
+     WORD16 energy_limiting_th_md_hg;
+     WORD16 limiter_threshold_fb;
+     WORD16 limiter_threshold_bs;
+     WORD16 limiter_threshold_md;
+     WORD16 limiter_threshold_hg;
+     WORD16 limiter_hangover_spect_preserve;
+     WORD16 limiter_release_fb_bs;
+     WORD16 limiter_release_md_hg;
+     WORD16 gain_track_fb_bs;
+     WORD16 gain_track_md_hg;
+     WORD16 low_pass_filter[17];
+     WORD16 mid_band_filter[17];
+   }
+   T_MMI_AQI_DRC_PARAMS;
+
+   typedef struct
+   {
+    #if (OP_RIV_AUDIO == 1)
+      T_RV_HDR  header;
+    #endif
+      T_DRC_CONTROL         drc_dl_control;
+      T_MMI_AQI_DRC_PARAMS  parameters;
+   }
+   T_MMI_AQI_DRC_REQ;
+
+   typedef T_MMI_AQI_DRC_REQ  T_AQI_DRC_PARAM;
+
+   typedef enum
+   {
+      DRC_NO_ACTION = -1,
+      DRC_STOPPED   = 0,
+      DRC_STARTED   = 1,
+      DRC_UPDATED   = 2
+   }
+   T_DRC_ACTION;
+
+   typedef struct
+   {
+    #if (OP_RIV_AUDIO == 1)
+      T_RV_HDR  header;
+    #endif
+    T_DRC_ACTION  drc_dl_action;
+   }
+   T_MMI_AQI_DRC_CON;
+
+   typedef struct
+   {
+    #if (OP_RIV_AUDIO == 1)
+      T_RV_HDR  header;
+    #endif
+      T_DRC_ACTION  drc_dl_action;
+   }
+   T_L1_AQI_DRC_CON;
+
+  #endif //L1_DRC
+
+ 
+  #if (L1_LIMITER == 1)
+   typedef struct
+   {
+    #if (OP_RIV_AUDIO == 1)
+      T_RV_HDR  header;
+    #endif
+      BOOL      limiter_enable;
+      UWORD16   block_size;
+      UWORD16   slope_update_period;
+      UWORD16   nb_fir_coefs;
+      WORD16   *filter_coefs;
+      WORD16    thr_low_0;
+      WORD16    thr_low_slope;
+      WORD16    thr_high_0;
+      WORD16    thr_high_slope;
+      WORD16    gain_fall;
+      WORD16    gain_rise;
+   }
+   T_MMI_LIMITER_REQ;
+  #endif
+
+  #if (L1_ES == 1)
+   typedef struct
+   {
+    #if (OP_RIV_AUDIO == 1)
+      T_RV_HDR  header;
+    #endif
+      BOOL   es_enable;
+      UWORD8 es_behavior;
+      UWORD8 es_mode;
+      WORD16 es_gain_dl;
+      WORD16 es_gain_ul_1;
+      WORD16 es_gain_ul_2;
+      WORD16 tcl_fe_ls_thr;
+      WORD16 tcl_dt_ls_thr;
+      WORD16 tcl_fe_ns_thr;
+      WORD16 tcl_dt_ns_thr;
+      WORD16 tcl_ne_thr;
+      WORD16 ref_ls_pwr;
+      WORD16 switching_time;
+      WORD16 switching_time_dt;
+      WORD16 hang_time;
+      WORD16 gain_lin_dl_vect[4];
+      WORD16 gain_lin_ul_vect[4];
+   }
+   T_MMI_ES_REQ;
+  #endif
+  
+#if (L1_VOCODER_IF_CHANGE == 1)
+  typedef struct 
+  {
+    BOOL vocoder_state; // TRUE if enable request, FALSE if disable request
+  } T_MMI_TCH_VOCODER_CFG_REQ;
+#endif // L1_VOCODER_IF_CHANGE == 1
+
+#if (L1_PCM_EXTRACTION)
+  typedef struct
+  {
+  #if (defined _WINDOWS && (OP_RIV_AUDIO == 1))
+    T_RV_HDR  header;
+  #endif
+    UWORD8 session_id;
+    UWORD8 download_ul_gain;
+    UWORD8 download_dl_gain;
+    UWORD32 maximum_size;
+  } T_MMI_PCM_DOWNLOAD_START_REQ;
+
+  typedef struct
+  {
+  #if (defined _WINDOWS && (OP_RIV_AUDIO == 1))
+    T_RV_HDR  header;
+  #endif
+    UWORD8 session_id;
+    UWORD8 upload_ul_gain;
+    UWORD8 upload_dl_gain;
+    UWORD32 maximum_size;
+  } T_MMI_PCM_UPLOAD_START_REQ;
+
+  typedef struct
+  {
+  #if (defined _WINDOWS && (OP_RIV_AUDIO == 1))
+    T_RV_HDR  header;
+  #endif
+    UWORD32 maximum_size;
+  } T_MMI_PCM_DOWNLOAD_STOP_REQ;
+
+  typedef struct
+  {
+    UWORD32 uploaded_size;
+  } T_L1_PCM_UPLOAD_STOP_CON;
+
+ #if (OP_RIV_AUDIO == 1)
+  typedef struct
+  {
+    T_RV_HDR  header;
+    UWORD32 uploaded_size;
+  }
+  T_MMI_PCM_UPLOAD_STOP_CON;
+  #else
+    typedef T_L1_PCM_UPLOAD_STOP_CON T_MMI_PCM_UPLOAD_STOP_CON;
+  #endif
+
+#endif  /* L1_PCM_EXTRACTION */
+
 #endif // AUDIO_TASK
+
+  typedef struct
+  {
+    UWORD8 outen1;
+    UWORD8 outen2;
+    UWORD8 outen3;
+    UWORD8 classD;
+  } T_MMI_OUTEN_CFG_REQ;
+
+ typedef struct
+  {
+#if (OP_RIV_AUDIO == 1)
+      T_RV_HDR  header;
+#endif
+    UWORD8 outen1;
+    UWORD8 outen2;
+    UWORD8 outen3;
+    UWORD8 classD;
+  } T_MMI_OUTEN_CFG_READ_CON;
+
+
+#endif // _L1AUDIO_MSGTY_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gsm-fw/L1/audio_include/l1audio_proto.h	Thu Aug 28 18:40:12 2014 +0000
@@ -0,0 +1,31 @@
+/************* Revision Controle System Header *************
+ *                  GSM Layer 1 software
+ * L1AUDIO_PROTO.H
+ *
+ *        Filename l1audio_proto.h
+ *  Copyright 2004 (C) Texas Instruments
+ *
+ ************* Revision Controle System Header *************/
+
+#if (AUDIO_TASK == 1)
+
+#ifndef _L1AUDIO_PROTO_H_
+#define _L1AUDIO_PROTO_H_
+
+// Functions declared in l1audio_afunc.c
+void l1a_audio_send_confirmation(UWORD32 SignalCode);
+
+void l1a_audio_send_result      (UWORD32 SignalCode, xSignalHeaderRec *msg, UWORD8 queue);
+#if (SPEECH_RECO)
+void l1_send_sr_background_msg  (UWORD32 SignalCode);
+#endif
+#if (MELODY_E2)
+void l1_send_melody_e2_background_msg(UWORD32 SignalCode, UWORD8  melody_id);
+#endif
+#if (OP_L1_STANDALONE == 0)
+void * mem_Allocate(UWORD16 size);
+void    mem_Deallocate(void *memoryBlock);
+#endif
+#endif    // _L1AUDIO_PROTO_H_
+
+#endif    // AUDIO_TASK
--- a/gsm-fw/L1/audio_include/l1audio_signa.h	Sun Aug 17 21:35:23 2014 +0000
+++ b/gsm-fw/L1/audio_include/l1audio_signa.h	Thu Aug 28 18:40:12 2014 +0000
@@ -3,100 +3,122 @@
  * L1AUDIO_SIGNA.H
  *
  *        Filename l1audio_signa.h
- *  Copyright 2003 (C) Texas Instruments  
+ *  Copyright 2003 (C) Texas Instruments
  *
  ************* Revision Controle System Header *************/
 
+#include "l1sw.cfg"
+
 #if (AUDIO_TASK == 1)
   #define P_AUDIO ( 0x18 )
 
   // Messages MMI <-> L1A
   #if (KEYBEEP)
-    #define MMI_KEYBEEP_START_REQ             ( ( P_AUDIO << 8 ) |   0 )
-    #define MMI_KEYBEEP_STOP_REQ              ( ( P_AUDIO << 8 ) |   1 )
+    #define MMI_KEYBEEP_START_REQ             ( ( P_AUDIO << 8 ) |   0 ) // build: T_MMI_KEYBEEP_REQ
+    #define MMI_KEYBEEP_STOP_REQ              ( ( P_AUDIO << 8 ) |   1 ) // build: trigger
     #define MMI_KEYBEEP_START_CON             ( ( P_AUDIO << 8 ) |   2 )
     #define MMI_KEYBEEP_STOP_CON              ( ( P_AUDIO << 8 ) |   3 )
   #endif
   #if (TONE)
-    #define MMI_TONE_START_REQ                ( ( P_AUDIO << 8 ) |   4 )
-    #define MMI_TONE_STOP_REQ                 ( ( P_AUDIO << 8 ) |   5 )
+    #define MMI_TONE_START_REQ                ( ( P_AUDIO << 8 ) |   4 ) // build: T_MMI_TONE_REQ 
+    #define MMI_TONE_STOP_REQ                 ( ( P_AUDIO << 8 ) |   5 ) // build: trigger
     #define MMI_TONE_START_CON                ( ( P_AUDIO << 8 ) |   6 )
     #define MMI_TONE_STOP_CON                 ( ( P_AUDIO << 8 ) |   7 )
   #endif
   #if (MELODY_E1)
-    #define MMI_MELODY0_START_REQ             ( ( P_AUDIO << 8 ) |   8 )
-    #define MMI_MELODY0_STOP_REQ              ( ( P_AUDIO << 8 ) |   9 )
+    #define MMI_MELODY0_START_REQ             ( ( P_AUDIO << 8 ) |   8 ) // build: T_MMI_MELODY_REQ
+    #define MMI_MELODY0_STOP_REQ              ( ( P_AUDIO << 8 ) |   9 ) // build: trigger
     #define MMI_MELODY0_START_CON             ( ( P_AUDIO << 8 ) |  10 )
     #define MMI_MELODY0_STOP_CON              ( ( P_AUDIO << 8 ) |  11 )
 
-    #define MMI_MELODY1_START_REQ             ( ( P_AUDIO << 8 ) |  12 )
-    #define MMI_MELODY1_STOP_REQ              ( ( P_AUDIO << 8 ) |  13 )
+    #define MMI_MELODY1_START_REQ             ( ( P_AUDIO << 8 ) |  12 ) // build: T_MMI_MELODY_REQ
+    #define MMI_MELODY1_STOP_REQ              ( ( P_AUDIO << 8 ) |  13 ) // build: trigger
     #define MMI_MELODY1_START_CON             ( ( P_AUDIO << 8 ) |  14 )
     #define MMI_MELODY1_STOP_CON              ( ( P_AUDIO << 8 ) |  15 )
   #endif
   #if (VOICE_MEMO)
-    #define MMI_VM_PLAY_START_REQ             ( ( P_AUDIO << 8 ) |  16 )
-    #define MMI_VM_PLAY_STOP_REQ              ( ( P_AUDIO << 8 ) |  17 )
+    #define MMI_VM_PLAY_START_REQ             ( ( P_AUDIO << 8 ) |  16 ) // build: T_MMI_VM_PLAY_REQ
+    #define MMI_VM_PLAY_STOP_REQ              ( ( P_AUDIO << 8 ) |  17 ) // build: trigger
     #define MMI_VM_PLAY_START_CON             ( ( P_AUDIO << 8 ) |  18 )
     #define MMI_VM_PLAY_STOP_CON              ( ( P_AUDIO << 8 ) |  19 )
 
-    #define MMI_VM_RECORD_START_REQ           ( ( P_AUDIO << 8 ) |  20 )
-    #define MMI_VM_RECORD_STOP_REQ            ( ( P_AUDIO << 8 ) |  21 )
+    #define MMI_VM_RECORD_START_REQ           ( ( P_AUDIO << 8 ) |  20 ) // build: T_MMI_VM_RECORD_REQ
+    #define MMI_VM_RECORD_STOP_REQ            ( ( P_AUDIO << 8 ) |  21 ) // build: trigger
     #define MMI_VM_RECORD_START_CON           ( ( P_AUDIO << 8 ) |  22 )
     #define MMI_VM_RECORD_STOP_CON            ( ( P_AUDIO << 8 ) |  23 )
   #endif
+  #if (L1_PCM_EXTRACTION)
+    #define MMI_PCM_DOWNLOAD_START_REQ        ( ( P_AUDIO << 8 ) | 24 )
+    #define MMI_PCM_DOWNLOAD_STOP_REQ         ( ( P_AUDIO << 8 ) | 25 )
+    #define MMI_PCM_DOWNLOAD_START_CON        ( ( P_AUDIO << 8 ) | 26 )
+    #define MMI_PCM_DOWNLOAD_STOP_CON         ( ( P_AUDIO << 8 ) | 27 )
+
+    #define MMI_PCM_UPLOAD_START_REQ          ( ( P_AUDIO << 8 ) | 28 )
+    #define MMI_PCM_UPLOAD_STOP_REQ           ( ( P_AUDIO << 8 ) | 29 )
+    #define MMI_PCM_UPLOAD_START_CON          ( ( P_AUDIO << 8 ) | 30 )
+    #define MMI_PCM_UPLOAD_STOP_CON           ( ( P_AUDIO << 8 ) | 31 )
+  #endif
   #if (SPEECH_RECO)
-    #define MMI_SR_ENROLL_START_REQ           ( ( P_AUDIO << 8 ) |  24 )
-    #define MMI_SR_ENROLL_STOP_REQ            ( ( P_AUDIO << 8 ) |  25 )
+    #define MMI_SR_ENROLL_START_REQ           ( ( P_AUDIO << 8 ) |  24 ) // build: T_MMI_SR_ENROLL_REQ
+    #define MMI_SR_ENROLL_STOP_REQ            ( ( P_AUDIO << 8 ) |  25 ) // build: trigger
     #define MMI_SR_ENROLL_START_CON           ( ( P_AUDIO << 8 ) |  26 )
     #define MMI_SR_ENROLL_STOP_CON            ( ( P_AUDIO << 8 ) |  27 )
 
-    #define MMI_SR_UPDATE_START_REQ           ( ( P_AUDIO << 8 ) |  28 )
-    #define MMI_SR_UPDATE_STOP_REQ            ( ( P_AUDIO << 8 ) |  29 )
+    #define MMI_SR_UPDATE_START_REQ           ( ( P_AUDIO << 8 ) |  28 ) // build: T_MMI_SR_UPDATE_REQ
+    #define MMI_SR_UPDATE_STOP_REQ            ( ( P_AUDIO << 8 ) |  29 ) // build: trigger
     #define MMI_SR_UPDATE_START_CON           ( ( P_AUDIO << 8 ) |  30 )
     #define MMI_SR_UPDATE_STOP_CON            ( ( P_AUDIO << 8 ) |  31 )
 
-    #define MMI_SR_RECO_START_REQ             ( ( P_AUDIO << 8 ) |  32 )
-    #define MMI_SR_RECO_STOP_REQ              ( ( P_AUDIO << 8 ) |  33 )
+    #define MMI_SR_RECO_START_REQ             ( ( P_AUDIO << 8 ) |  32 ) // build: T_MMI_SR_RECO_REQ
+    #define MMI_SR_RECO_STOP_REQ              ( ( P_AUDIO << 8 ) |  33 ) // build: trigger
     #define MMI_SR_RECO_START_CON             ( ( P_AUDIO << 8 ) |  34 )
     #define MMI_SR_RECO_STOP_CON              ( ( P_AUDIO << 8 ) |  35 )
 
-    #define MMI_SR_UPDATE_CHECK_START_REQ     ( ( P_AUDIO << 8 ) |  36 )
-    #define MMI_SR_UPDATE_CHECK_STOP_REQ      ( ( P_AUDIO << 8 ) |  37 )
+    #define MMI_SR_UPDATE_CHECK_START_REQ     ( ( P_AUDIO << 8 ) |  36 ) // build: T_MMI_SR_UPDATE_CHECK_REQ
+    #define MMI_SR_UPDATE_CHECK_STOP_REQ      ( ( P_AUDIO << 8 ) |  37 ) // build: trigger
     #define MMI_SR_UPDATE_CHECK_START_CON     ( ( P_AUDIO << 8 ) |  38 )
     #define MMI_SR_UPDATE_CHECK_STOP_CON      ( ( P_AUDIO << 8 ) |  39 )
   #endif
-  #if (AEC)
-    #define MMI_AEC_REQ                       ( ( P_AUDIO << 8 ) |  40 )
+  #if (L1_AEC == 1)
+    #define MMI_AEC_REQ                       ( ( P_AUDIO << 8 ) |  40 ) // build: T_MMI_AEC_REQ
     #define MMI_AEC_CON                       ( ( P_AUDIO << 8 ) |  41 )
   #endif
+  #if (L1_AEC == 2)
+    #define MMI_AQI_AEC_REQ                   ( ( P_AUDIO << 8 ) |  143 ) // build: T_MMI_AQI_AEC_REQ
+    #define MMI_AQI_AEC_CON                   ( ( P_AUDIO << 8 ) |  144 )
+  #endif
   #if (FIR)
-    #define MMI_AUDIO_FIR_REQ                 ( ( P_AUDIO << 8 ) |  42 )
+    #define MMI_AUDIO_FIR_REQ                 ( ( P_AUDIO << 8 ) |  42 ) // build: T_MMI_AUDIO_FIR_REQ
     #define MMI_AUDIO_FIR_CON                 ( ( P_AUDIO << 8 ) |  43 )
   #endif
   #if (AUDIO_MODE)
-    #define MMI_AUDIO_MODE_REQ                ( ( P_AUDIO << 8 ) |  44 )
+    #define MMI_AUDIO_MODE_REQ                ( ( P_AUDIO << 8 ) |  44 ) // build: T_MMI_AUDIO_MODE
     #define MMI_AUDIO_MODE_CON                ( ( P_AUDIO << 8 ) |  45 )
   #endif
   #if (MELODY_E2)
-    #define MMI_MELODY0_E2_START_REQ          ( ( P_AUDIO << 8 ) |  46 )
-    #define MMI_MELODY0_E2_STOP_REQ           ( ( P_AUDIO << 8 ) |  47 )
+    #define MMI_MELODY0_E2_START_REQ          ( ( P_AUDIO << 8 ) |  46 ) // build: T_MMI_MELODY_E2_REQ
+    #define MMI_MELODY0_E2_STOP_REQ           ( ( P_AUDIO << 8 ) |  47 ) // build: trigger
     #define MMI_MELODY0_E2_START_CON          ( ( P_AUDIO << 8 ) |  48 )
     #define MMI_MELODY0_E2_STOP_CON           ( ( P_AUDIO << 8 ) |  49 )
 
-    #define MMI_MELODY1_E2_START_REQ          ( ( P_AUDIO << 8 ) |  50 )
-    #define MMI_MELODY1_E2_STOP_REQ           ( ( P_AUDIO << 8 ) |  51 )
+    #define MMI_MELODY1_E2_START_REQ          ( ( P_AUDIO << 8 ) |  50 ) // build: T_MMI_MELODY_E2_REQ
+    #define MMI_MELODY1_E2_STOP_REQ           ( ( P_AUDIO << 8 ) |  51 ) // build: trigger
     #define MMI_MELODY1_E2_START_CON          ( ( P_AUDIO << 8 ) |  52 )
     #define MMI_MELODY1_E2_STOP_CON           ( ( P_AUDIO << 8 ) |  53 )
   #endif
   #if (L1_VOICE_MEMO_AMR)
-    #define MMI_VM_AMR_PLAY_START_REQ         ( ( P_AUDIO << 8 ) |  54 )
-    #define MMI_VM_AMR_PLAY_STOP_REQ          ( ( P_AUDIO << 8 ) |  55 )
+    #define MMI_VM_AMR_PLAY_START_REQ         ( ( P_AUDIO << 8 ) |  54 ) // build: T_MMI_VM_AMR_PLAY_REQ
+    #define MMI_VM_AMR_PLAY_STOP_REQ          ( ( P_AUDIO << 8 ) |  55 ) // build: trigger
     #define MMI_VM_AMR_PLAY_START_CON         ( ( P_AUDIO << 8 ) |  56 )
     #define MMI_VM_AMR_PLAY_STOP_CON          ( ( P_AUDIO << 8 ) |  57 )
+    #define MMI_VM_AMR_PAUSE_REQ              ( ( P_AUDIO << 8 ) | 158 )
+    #define MMI_VM_AMR_RESUME_REQ             ( ( P_AUDIO << 8 ) | 159 )
+    #define MMI_VM_AMR_PAUSE_CON              ( ( P_AUDIO << 8 ) | 160 )
+    #define MMI_VM_AMR_RESUME_CON             ( ( P_AUDIO << 8 ) | 161 )
+    
 
-    #define MMI_VM_AMR_RECORD_START_REQ       ( ( P_AUDIO << 8 ) |  58 )
-    #define MMI_VM_AMR_RECORD_STOP_REQ        ( ( P_AUDIO << 8 ) |  59 )
+    #define MMI_VM_AMR_RECORD_START_REQ       ( ( P_AUDIO << 8 ) |  58 ) // build: T_MMI_VM_AMR_RECORD_REQ
+    #define MMI_VM_AMR_RECORD_STOP_REQ        ( ( P_AUDIO << 8 ) |  59 ) // build: trigger
     #define MMI_VM_AMR_RECORD_START_CON       ( ( P_AUDIO << 8 ) |  60 )
     #define MMI_VM_AMR_RECORD_STOP_CON        ( ( P_AUDIO << 8 ) |  61 )
   #endif
@@ -104,86 +126,217 @@
     #define MMI_CPORT_CONFIGURE_REQ           ( ( P_AUDIO << 8 ) |   62 )
     #define MMI_CPORT_CONFIGURE_CON           ( ( P_AUDIO << 8 ) |   63 )
   #endif
+  #if (L1_EXTERNAL_AUDIO_VOICE_ONOFF == 1 || L1_EXT_MCU_AUDIO_VOICE_ONOFF == 1)
+    #define MMI_AUDIO_ONOFF_REQ                 ( ( P_AUDIO << 8 ) |  64 )
+    #define MMI_AUDIO_ONOFF_CON                 ( ( P_AUDIO << 8 ) |  65 )
+  #endif
+  #if (L1_EXT_AUDIO_MGT == 1)
+    #define MMI_EXT_AUDIO_MGT_START_REQ       ( ( P_AUDIO << 8 ) |  66 )
+    #define MMI_EXT_AUDIO_MGT_STOP_REQ        ( ( P_AUDIO << 8 ) |  67 )
+    #define MMI_EXT_AUDIO_MGT_START_CON       ( ( P_AUDIO << 8 ) |  68 )
+    #define MMI_EXT_AUDIO_MGT_STOP_CON        ( ( P_AUDIO << 8 ) |  69 )
+  #endif
+  #if (L1_ANR == 1)
+    #define MMI_ANR_REQ                       ( ( P_AUDIO << 8 ) |  70 )
+    #define MMI_ANR_CON                       ( ( P_AUDIO << 8 ) |  71 )
+  #endif
+  #if (L1_IIR == 1)
+    #define MMI_IIR_REQ                       ( ( P_AUDIO << 8 ) |  72 )
+    #define MMI_IIR_CON                       ( ( P_AUDIO << 8 ) |  73 )
+  #endif
+  #if (L1_LIMITER == 1)
+    #define MMI_LIMITER_REQ                   ( ( P_AUDIO << 8 ) |  74 )
+    #define MMI_LIMITER_CON                   ( ( P_AUDIO << 8 ) |  75 )
+  #endif
+  #if (L1_ES == 1)
+    #define MMI_ES_REQ                        ( ( P_AUDIO << 8 ) |  76 )
+    #define MMI_ES_CON                        ( ( P_AUDIO << 8 ) |  77 )
+  #endif
+  #if (L1_DRC == 1)
+    #define MMI_AQI_DRC_REQ                   ( ( P_AUDIO << 8 ) |  146 )
+    #define MMI_AQI_DRC_CON                   ( ( P_AUDIO << 8 ) |  147 )
+  #endif
+  #if (L1_VOCODER_IF_CHANGE == 1)
+    #define MMI_TCH_VOCODER_CFG_REQ   0x0E0C
+    #define MMI_TCH_VOCODER_CFG_CON   0x4E08
+  #endif
+  #if (L1_WCM == 1)
+    #define MMI_AQI_WCM_REQ                    ( ( P_AUDIO << 8 ) |  149 )
+    #define MMI_AQI_WCM_CON                    ( ( P_AUDIO << 8 ) |  150 )
+  #endif
 
+  #if (L1_AGC_UL == 1)
+    #define MMI_AQI_AGC_UL_REQ                   ( ( P_AUDIO << 8 ) |  137)
+    #define MMI_AQI_AGC_UL_CON                   ( ( P_AUDIO << 8 ) |  138)
+  #endif
+
+  #if (L1_AGC_DL == 1)
+    #define MMI_AQI_AGC_DL_REQ                   ( ( P_AUDIO << 8 ) |  139)
+    #define MMI_AQI_AGC_DL_CON                   ( ( P_AUDIO << 8 ) |  140)
+  #endif
+
+
+  #if (L1_ANR == 2)
+    #define MMI_AQI_ANR_REQ                   ( ( P_AUDIO << 8 ) |  131)
+    #define MMI_AQI_ANR_CON                   ( ( P_AUDIO << 8 ) |  132)
+  #endif
+
+#if (L1_IIR == 2)
+    #define MMI_AQI_IIR_DL_REQ                   ( ( P_AUDIO << 8 ) |  134)
+    #define MMI_AQI_IIR_DL_CON                   ( ( P_AUDIO << 8 ) |  135)
+  #endif
+
+    #define MMI_OUTEN_CFG_REQ                     ( ( P_AUDIO << 8) | 152)
+    #define MMI_OUTEN_CFG_CON                     ( ( P_AUDIO << 8) | 153)
+    #define MMI_OUTEN_CFG_READ_REQ                ( ( P_AUDIO << 8) | 154)
+    #define MMI_OUTEN_CFG_READ_CON                ( ( P_AUDIO << 8) | 155)
+
+#if(L1_BT_AUDIO==1)
+   #define MMI_BT_ENABLE_REQ                            ((P_AUDIO<<8)|167)
+   #define MMI_BT_DISABLE_REQ                           ((P_AUDIO<<8)|169)
+#endif
 
   // Messages L1S -> L1A
   #if (KEYBEEP)
-    #define L1_KEYBEEP_START_CON              ( ( P_AUDIO << 8 ) |  64 )
-    #define L1_KEYBEEP_STOP_CON               ( ( P_AUDIO << 8 ) |  65 )
+    #define L1_KEYBEEP_START_CON              ( ( P_AUDIO << 8 ) |  78 )
+    #define L1_KEYBEEP_STOP_CON               ( ( P_AUDIO << 8 ) |  79 )
   #endif
   #if (TONE)
-    #define L1_TONE_START_CON                 ( ( P_AUDIO << 8 ) |  66 )
-    #define L1_TONE_STOP_CON                  ( ( P_AUDIO << 8 ) |  67 )
+    #define L1_TONE_START_CON                 ( ( P_AUDIO << 8 ) |  80 )
+    #define L1_TONE_STOP_CON                  ( ( P_AUDIO << 8 ) |  81 )
   #endif
   #if (MELODY_E1)
-    #define L1_MELODY0_START_CON              ( ( P_AUDIO << 8 ) |  68 )
-    #define L1_MELODY0_STOP_CON               ( ( P_AUDIO << 8 ) |  69 )
+    #define L1_MELODY0_START_CON              ( ( P_AUDIO << 8 ) |  82 )
+    #define L1_MELODY0_STOP_CON               ( ( P_AUDIO << 8 ) |  83 )
 
-    #define L1_MELODY1_START_CON              ( ( P_AUDIO << 8 ) |  70 )
-    #define L1_MELODY1_STOP_CON               ( ( P_AUDIO << 8 ) |  71 )
+    #define L1_MELODY1_START_CON              ( ( P_AUDIO << 8 ) |  84 )
+    #define L1_MELODY1_STOP_CON               ( ( P_AUDIO << 8 ) |  85 )
   #endif
   #if (VOICE_MEMO)
-    #define L1_VM_PLAY_START_CON              ( ( P_AUDIO << 8 ) |  72 )
-    #define L1_VM_PLAY_STOP_CON               ( ( P_AUDIO << 8 ) |  73 )
+    #define L1_VM_PLAY_START_CON              ( ( P_AUDIO << 8 ) |  86 )
+    #define L1_VM_PLAY_STOP_CON               ( ( P_AUDIO << 8 ) |  87 )
 
-    #define L1_VM_RECORD_START_CON            ( ( P_AUDIO << 8 ) |  74 )
-    #define L1_VM_RECORD_STOP_CON             ( ( P_AUDIO << 8 ) |  75 )
+    #define L1_VM_RECORD_START_CON            ( ( P_AUDIO << 8 ) |  88 )
+    #define L1_VM_RECORD_STOP_CON             ( ( P_AUDIO << 8 ) |  89 )
+  #endif
+  #if (L1_PCM_EXTRACTION)
+    #define L1_PCM_DOWNLOAD_START_CON         ( ( P_AUDIO << 8 ) |  90 )
+    #define L1_PCM_DOWNLOAD_STOP_CON          ( ( P_AUDIO << 8 ) |  91 )
+
+    #define L1_PCM_UPLOAD_START_CON           ( ( P_AUDIO << 8 ) |  92 )
+    #define L1_PCM_UPLOAD_STOP_CON            ( ( P_AUDIO << 8 ) |  93 )
+
   #endif
   #if (SPEECH_RECO)
-    #define L1_SR_ENROLL_START_CON            ( ( P_AUDIO << 8 ) |  76 )
-    #define L1_SR_ENROLL_STOP_CON             ( ( P_AUDIO << 8 ) |  77 )
+    #define L1_SR_ENROLL_START_CON            ( ( P_AUDIO << 8 ) |  90 )
+    #define L1_SR_ENROLL_STOP_CON             ( ( P_AUDIO << 8 ) |  91 )
 
-    #define L1_SR_UPDATE_START_CON            ( ( P_AUDIO << 8 ) |  78 )
-    #define L1_SR_UPDATE_STOP_CON             ( ( P_AUDIO << 8 ) |  79 )
+    #define L1_SR_UPDATE_START_CON            ( ( P_AUDIO << 8 ) |  92 )
+    #define L1_SR_UPDATE_STOP_CON             ( ( P_AUDIO << 8 ) |  93 )
 
-    #define L1_SR_RECO_START_CON              ( ( P_AUDIO << 8 ) |  80 )
-    #define L1_SR_RECO_STOP_CON               ( ( P_AUDIO << 8 ) |  81 )
-    #define L1_SR_RECO_STOP_IND               ( ( P_AUDIO << 8 ) |  82 )
-    #define L1_SR_PROCESSING_STOP_CON         ( ( P_AUDIO << 8 ) |  83 )
+    #define L1_SR_RECO_START_CON              ( ( P_AUDIO << 8 ) |  94 )
+    #define L1_SR_RECO_STOP_CON               ( ( P_AUDIO << 8 ) |  95 )
+    #define L1_SR_RECO_STOP_IND               ( ( P_AUDIO << 8 ) |  96 )
+    #define L1_SR_PROCESSING_STOP_CON         ( ( P_AUDIO << 8 ) |  97 )
   #endif
-  #if (AEC)
-    #define L1_AEC_CON                        ( ( P_AUDIO << 8 ) |  84 )
-    #define L1_AEC_IND                        ( ( P_AUDIO << 8 ) |  85 )
+  #if (L1_AEC == 1)
+    #define L1_AEC_CON                        ( ( P_AUDIO << 8 ) |  98 )
+    #define L1_AEC_IND                        ( ( P_AUDIO << 8 ) |  99 )
+  #endif
+  #if (L1_AEC == 2)
+    #define L1_AQI_AEC_CON                    ( ( P_AUDIO << 8 ) |  145 )
   #endif
   #if (FIR)
-    #define L1_AUDIO_FIR_CON                  ( ( P_AUDIO << 8 ) |  86 )
+    #define L1_AUDIO_FIR_CON                  ( ( P_AUDIO << 8 ) | 100 )
   #endif
   #if (AUDIO_MODE)
-    #define L1_AUDIO_MODE_CON                 ( ( P_AUDIO << 8 ) |  87 )
+    #define L1_AUDIO_MODE_CON                 ( ( P_AUDIO << 8 ) | 101 )
   #endif
   #if (L1_VOICE_MEMO_AMR)
-    #define L1_VM_AMR_PLAY_START_CON          ( ( P_AUDIO << 8 ) |  88 )
-    #define L1_VM_AMR_PLAY_STOP_CON           ( ( P_AUDIO << 8 ) |  89 )
+    #define L1_VM_AMR_PLAY_START_CON          ( ( P_AUDIO << 8 ) | 102 )
+    #define L1_VM_AMR_PLAY_STOP_CON           ( ( P_AUDIO << 8 ) | 103 )
+    #define L1_VM_AMR_PAUSE_CON               ( ( P_AUDIO << 8 ) | 156 )
+    #define L1_VM_AMR_RESUME_CON              ( ( P_AUDIO << 8 ) | 157 )
+    
 
-    #define L1_VM_AMR_RECORD_START_CON        ( ( P_AUDIO << 8 ) |  90 )
-    #define L1_VM_AMR_RECORD_STOP_CON         ( ( P_AUDIO << 8 ) |  91 )
+    #define L1_VM_AMR_RECORD_START_CON        ( ( P_AUDIO << 8 ) | 104 )
+    #define L1_VM_AMR_RECORD_STOP_CON         ( ( P_AUDIO << 8 ) | 105 )
   #endif
   #if (L1_CPORT == 1)
-    #define L1_CPORT_CONFIGURE_CON            ( ( P_AUDIO << 8 ) |  92 )
+    #define L1_CPORT_CONFIGURE_CON            ( ( P_AUDIO << 8 ) | 106 )
+  #endif
+  #if (L1_STEREOPATH == 1)
+    #define L1_STEREOPATH_DRV_START_CON       ( ( P_AUDIO << 8 ) | 107 )
+    #define L1_STEREOPATH_DRV_STOP_CON        ( ( P_AUDIO << 8 ) | 108 )
+  #endif
+  #if (L1_ANR == 1)
+    #define L1_ANR_CON                        ( ( P_AUDIO << 8 ) | 109 )
+  #endif
+  #if (L1_IIR == 1)
+    #define L1_IIR_CON                        ( ( P_AUDIO << 8 ) | 110 )
+  #endif
+  #if (L1_DRC == 1)
+    #define L1_AQI_DRC_CON                    ( ( P_AUDIO << 8 ) | 148 )
+  #endif
+  #if (L1_LIMITER == 1)
+    #define L1_LIMITER_CON                    ( ( P_AUDIO << 8 ) | 111 )
+  #endif
+  #if (L1_ES == 1)
+    #define L1_ES_CON                         ( ( P_AUDIO << 8 ) | 112 )
+  #endif
+
+  #if (L1_VOCODER_IF_CHANGE == 1)
+    #define L1_VOCODER_CFG_ENABLE_CON        ( ( P_AUDIO << 8 ) |  129 )
+    #define L1_VOCODER_CFG_DISABLE_CON      ( ( P_AUDIO << 8 ) |  130 )
+  #endif
+
+  #if (L1_AGC_UL == 1)
+    #define L1_AQI_AGC_UL_CON                ( ( P_AUDIO << 8 ) |  141)
+  #endif
+
+  #if (L1_AGC_DL == 1)
+    #define L1_AQI_AGC_DL_CON                ( ( P_AUDIO << 8 ) |  142)
+  #endif
+
+  #if (L1_ANR == 2)
+    #define L1_AQI_ANR_CON                    ( ( P_AUDIO << 8 ) | 133 )
+  #endif
+
+#if (L1_IIR == 2)
+    #define L1_AQI_IIR_DL_CON                   ( ( P_AUDIO << 8 ) |  136)
+  #endif
+
+#if (L1_WCM == 1)
+    #define L1_AQI_WCM_CON                  ( ( P_AUDIO << 8 ) | 151 )
   #endif
 
   // Messages L1A <-> Audio background
   #if (SPEECH_RECO)
-    #define L1_SRBACK_SAVE_DATA_REQ           ( ( P_AUDIO << 8 ) |  93 )
-    #define L1_SRBACK_SAVE_DATA_CON           ( ( P_AUDIO << 8 ) |  94 )
-    #define L1_SRBACK_LOAD_MODEL_REQ          ( ( P_AUDIO << 8 ) |  95 )
-    #define L1_SRBACK_LOAD_MODEL_CON          ( ( P_AUDIO << 8 ) |  96 )
-    #define L1_SRBACK_TEMP_SAVE_DATA_REQ      ( ( P_AUDIO << 8 ) |  97 )
-    #define L1_SRBACK_TEMP_SAVE_DATA_CON      ( ( P_AUDIO << 8 ) |  98 )
+    #define L1_SRBACK_SAVE_DATA_REQ                 ( ( P_AUDIO << 8 ) |  113 )
+    #define L1_SRBACK_SAVE_DATA_CON                 ( ( P_AUDIO << 8 ) |  114 )
+    #define L1_SRBACK_LOAD_MODEL_REQ                ( ( P_AUDIO << 8 ) |  115 )
+    #define L1_SRBACK_LOAD_MODEL_CON                ( ( P_AUDIO << 8 ) |  116 )
+    #define L1_SRBACK_TEMP_SAVE_DATA_REQ            ( ( P_AUDIO << 8 ) |  117 )
+    #define L1_SRBACK_TEMP_SAVE_DATA_CON            ( ( P_AUDIO << 8 ) |  118 )
   #endif
   #if (MELODY_E2)
-    #define L1_BACK_MELODY_E2_LOAD_INSTRUMENT_REQ   ( ( P_AUDIO << 8 ) |  99 )
-    #define L1_BACK_MELODY_E2_LOAD_INSTRUMENT_CON   ( ( P_AUDIO << 8 ) |  100 )
-    #define L1_BACK_MELODY_E2_UNLOAD_INSTRUMENT_REQ ( ( P_AUDIO << 8 ) |  101 )
-    #define L1_BACK_MELODY_E2_UNLOAD_INSTRUMENT_CON ( ( P_AUDIO << 8 ) |  102 )
+    #define L1_BACK_MELODY_E2_LOAD_INSTRUMENT_REQ   ( ( P_AUDIO << 8 ) |  119 )
+    #define L1_BACK_MELODY_E2_LOAD_INSTRUMENT_CON   ( ( P_AUDIO << 8 ) |  120 )
+    #define L1_BACK_MELODY_E2_UNLOAD_INSTRUMENT_REQ ( ( P_AUDIO << 8 ) |  121 )
+    #define L1_BACK_MELODY_E2_UNLOAD_INSTRUMENT_CON ( ( P_AUDIO << 8 ) |  122 )
 
-    #define L1_MELODY0_E2_STOP_CON                  ( ( P_AUDIO << 8 ) |  103 )
-    #define L1_MELODY1_E2_STOP_CON                  ( ( P_AUDIO << 8 ) |  104 )
+    #define L1_MELODY0_E2_STOP_CON                  ( ( P_AUDIO << 8 ) |  123 )
+    #define L1_MELODY1_E2_STOP_CON                  ( ( P_AUDIO << 8 ) |  124 )
   #endif
 
   #if (OP_RIV_AUDIO == 1)
     #if (L1_AUDIO_DRIVER == 1)
-      #define L1_AUDIO_DRIVER_IND                 ( ( P_AUDIO << 8 ) |  105 )
+      #define L1_AUDIO_DRIVER_IND                   ( ( P_AUDIO << 8 ) |  125 )
     #endif
   #endif
+
+ #if (L1_EXTERNAL_AUDIO_VOICE_ONOFF == 1 || L1_EXT_MCU_AUDIO_VOICE_ONOFF == 1)
+  #define L1_AUDIO_ONOFF_CON                        ( ( P_AUDIO << 8 ) |  126 )
+ #endif
+
 #endif // AUDIO_TASK == 1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gsm-fw/L1/audio_include/l1audio_stereo.h	Thu Aug 28 18:40:12 2014 +0000
@@ -0,0 +1,142 @@
+ /************* Revision Controle System Header *************
+ *                  GSM Layer 1 software
+ * L1AUDIO_STEREO_H
+ *
+ *        Filename l1audio_stereo.h
+ *  Copyright 2003 (C) Texas Instruments
+ *
+ ************* Revision Controle System Header *************/
+
+
+#if (L1_STEREOPATH == 1)
+  
+
+
+
+  //////////////////////////////////////////////////////
+  //              VARIABLES DEFINITIONS               //
+  //////////////////////////////////////////////////////
+
+  #if (TESTMODE && (OP_L1_STANDALONE == 1))
+
+    #define C_STP_DRV_API_BASE_ADDRESS      0x1AD0
+    #define C_STP_DRV_BUF_API_BASE_ADDRESS  0x1AD8
+    #define STEREOPATH_MAX_NB_OF_FRAMES     1152
+    #define NB_MAX_STEREOPATH_CONFIG        4
+    #define C_BGD_STP_DRV                   9
+
+    /***************************************************************************************/
+    /* AUDIO STEREOPATH MCU-DSP API                                                            */
+    /***************************************************************************************/
+    typedef struct
+    {
+      API d_cport_api_dma_install;
+      API d_cport_api_dma_channel;
+      API d_cport_api_dma_rootcause;
+    } T_STP_DRV_MCU_DSP;
+
+    #if (CODE_VERSION != SIMULATION)
+    #ifdef _L1AUDIO_STEREO_C_
+  
+      /***************************************************************************
+       *                      AUDIO_SP_MIDI_CONF configuration
+       **************************************************************************/
+      const T_TMODE_AUDIO_STEREOPATH_START_REQ tmode_audio_sp_midi_conf = 
+          {
+           AUDIO_SP_MIDI_CONF,       //   configuration
+           AUDIO_SP_FREQ_22,         //   sampling_frequency
+           AUDIO_SP_DMA_ALLOC_DSP,   //   DMA_allocation
+           2,                        //   DMA_channel_number
+           AUDIO_SP_DATA_S16,        //   data_type
+           AUDIO_SP_SOURCE_API,      //   source_port
+           2,                        //   element_number
+           864,                      //   frame_number
+           AUDIO_SP_STEREO_OUTPUT,   //   mono_stereo
+           AUDIO_SP_SINUS2_PATTERN   //   pattern_identifier
+          };
+
+      /***************************************************************************
+       *                      AUDIO_SP_MP3_CONF configuration
+       **************************************************************************/
+      const T_TMODE_AUDIO_STEREOPATH_START_REQ tmode_audio_sp_mp3_conf = 
+          {
+           AUDIO_SP_MP3_CONF,        //   configuration
+           AUDIO_SP_FREQ_48,         //   sampling_frequency
+           AUDIO_SP_DMA_ALLOC_DSP,   //   DMA_allocation
+           2,                        //   DMA_channel_number
+           AUDIO_SP_DATA_S16,        //   data_type
+           AUDIO_SP_SOURCE_API,      //   source_port
+           2,                        //   element_number
+           1152,                     //   frame_number
+           AUDIO_SP_STEREO_OUTPUT,   //   mono_stereo
+           AUDIO_SP_SINUS1_PATTERN   //   pattern_identifier
+          };
+
+      /***************************************************************************
+       *                      AUDIO_SP_EXTAUDIO_CONF configuration
+       **************************************************************************/
+
+      const T_TMODE_AUDIO_STEREOPATH_START_REQ tmode_audio_sp_extaudio_conf = 
+          {
+           AUDIO_SP_EXTAUDIO_CONF,   //   configuration
+           AUDIO_SP_FREQ_22,         //   sampling_frequency
+           AUDIO_SP_DMA_ALLOC_MCU,   //   DMA_allocation
+           2,                        //   DMA_channel_number
+           AUDIO_SP_DATA_S16,        //   data_type
+           AUDIO_SP_SOURCE_IMIF,     //   source_port
+           2,                        //   element_number
+           1100,                     //   frame_number
+           AUDIO_SP_MONO_OUTPUT,     //   mono_stereo
+           AUDIO_SP_SINUS3_PATTERN   //   pattern_identifier
+          };
+                                      
+
+      const T_TMODE_AUDIO_STEREOPATH_START_REQ * tmode_audio_sp_conf[NB_MAX_STEREOPATH_CONFIG] = {
+                          &tmode_audio_sp_midi_conf,        
+                          &tmode_audio_sp_mp3_conf,         
+                          &tmode_audio_sp_extaudio_conf,        
+                          (T_TMODE_AUDIO_STEREOPATH_START_REQ *) NULL,
+            };
+
+    #else
+       extern const T_TMODE_AUDIO_STEREOPATH_START_REQ * tmode_audio_sp_conf[NB_MAX_STEREOPATH_CONFIG];
+    #endif // _L1AUDIO_STEREO_C_
+    #endif // CODE_VERSION
+  #endif // TESTMODE
+
+  //////////////////////////////////////////////////////
+  //              CONSTANTS DEFINITIONS               //
+  //////////////////////////////////////////////////////
+
+  #define L1S_STEREOPATH_DRV_WAIT_PLL_COUNTER 3  
+
+  //////////////////////////////////////////////////////
+  //              FUNCTIONS PROTOTYPES                //
+  //////////////////////////////////////////////////////
+#if (CODE_VERSION == NOT_SIMULATION)
+  extern void l1s_stereopath_drv_config_ABB(UWORD8 mono_stereo,UWORD8 sampling_frequency);
+  extern void l1s_stereopath_drv_start_ABB(void);
+  extern void l1s_stereopath_drv_stop_ABB(void);
+#if ((CHIPSET == 12) || (CHIPSET == 15))
+  extern void l1s_stereopath_drv_start_DMA(T_DMA_TYPE_CHANNEL_PARAMETER d_dma_channel_parameter,UWORD8 DMA_allocation);
+  extern void l1s_stereopath_drv_reset_DMA(T_DMA_TYPE_CHANNEL_PARAMETER d_dma_channel_parameter);
+#endif
+  extern void l1s_stereopath_drv_reset_CPORT(void);
+  extern void l1s_stereopath_drv_stop_CPORT(void);
+  extern void l1s_stereopath_drv_config_CPORT(void);
+  extern void l1s_stereopath_drv_start_CPORT(void);
+
+  enum L1S_STEREOPATH_CALLBACK_CONSTANT
+  {
+    L1S_TWL3029_STEROPATH_CONFIG =10,
+    L1S_TWL3029_STEROPATH_STOP,
+    L1S_TWL3029_STEROPATH_START,
+    L1S_TWL3029_STEROPATH_OUTEN_CONFIG
+  };
+
+  //Add the call back function of the stereo path.
+  void l1s_stereopath_callback(UWORD8 cbvalue); 
+  
+#endif    // CODE_VERSION == NOT_SIMULATION
+ 
+#endif /* L1_STEREOPATH == 1 */