view gsm-fw/L1/audio_include/l1audio_defty.h @ 1023:cd6002e3aefb

doc/Freerunner-Howto: apparently some people still use SHR, so mention it too
author Mychaela Falconia <falcon@ivan.Harhan.ORG>
date Tue, 03 May 2016 13:48:39 +0000
parents 45bf440cc677
children
line wrap: on
line source

/************* Revision Controle System Header *************
 *                  GSM Layer 1 software
 * L1AUDIO_DEFTY.H
 *
 *        Filename l1audio_defty.h
 *  Copyright 2003 (C) Texas Instruments
 *
 ************* Revision Controle System Header *************/

#include "../../include/config.h"
#include "../include/l1_confg.h"
#include "l1audio_msgty.h"
#include "../audio_cust0/l1audio_cust.h"
#include "l1audio_const.h"
#include "l1audio_btapi.h"
#if (AUDIO_TASK == 1)

  #if (KEYBEEP)
    /**************************************************************************/
    /* Keybeep l1a_l1s_com structure...                                       */
    /**************************************************************************/
    typedef struct
    {
      BOOL  start;
      BOOL  stop;
    }
    T_KEYBEEP_COMMAND;

    typedef struct
    {
      T_KEYBEEP_COMMAND   command;
    }
    T_KEYBEEP_TASK;
  #endif

  #if (TONE)
    /**************************************************************************/
    /* Tone l1a_l1s_com structure...                                          */
    /**************************************************************************/
    typedef struct
    {
      BOOL  start;
      BOOL  stop;
    }
    T_TONE_COMMAND;

    typedef struct
    {
      T_TONE_COMMAND   command;
    }
    T_TONE_TASK;
  #endif

  #if (MELODY_E1)
    /**************************************************************************/
    /* Melody l1a_l1s_com structure...                                        */
    /**************************************************************************/
    typedef struct
    {
      BOOL  start;
      BOOL  stop;
    }
    T_MELODY_COMMAND;

    typedef struct
    {
      UWORD8  session_id;
      UWORD8  error_id;
      UWORD16 buffer_size;
      UWORD16 *ptr_buf;
      BOOL    loopback;
      UWORD16 oscillator_used_bitmap;
      UWORD16 oscillator_melody_bitmap;
      UWORD8  melody_to_oscillator[SC_NUMBER_OSCILLATOR];
    }
    T_MELODY_PARAM;

    typedef struct
    {
      T_MELODY_COMMAND    command;
      T_MELODY_PARAM      parameters;
    }
    T_MELODY_TASK;

    /**************************************************************************/
    /* Melody l1s structure...                                                */
    /**************************************************************************/

    typedef struct
    {
      UWORD8      error_id;
      UWORD16     buffer_size;
      UWORD16     *ptr_buf;
      UWORD16     melody_header;
      API         *(oscillator[SC_NUMBER_OSCILLATOR]);
      UWORD16     counter;
      UWORD16     oscillator_used_in_desc;
      UWORD16     oscillator_started;
    }
    T_L1S_MELODY_TASK;
  #endif

  #if (VOICE_MEMO)
    /**************************************************************************/
    /* Voice memo l1a_l1s_com structure...                                    */
    /**************************************************************************/

    typedef struct
    {
      BOOL  start;
      BOOL  stop;
    }
    T_VM_PLAY_COMMAND;

    typedef struct
    {
      UWORD8 session_id;
    }
    T_VM_PLAY_PARAM;

    typedef struct
    {
      T_VM_PLAY_COMMAND   command;
      T_VM_PLAY_PARAM     parameters;
    }
    T_VM_PLAY_TASK;

    typedef struct
    {
      BOOL  start;
      BOOL  stop;
    }
    T_VM_RECORD_COMMAND;

    typedef struct
    {
      UWORD8    session_id;
      UWORD32   maximum_size;
      BOOL      dtx;
    }
    T_VM_RECORD_PARAM;

    typedef struct
    {
      BOOL      start;
    }
    T_VM_RECORD_TONE_UL;

      typedef struct
    {
        T_VM_RECORD_COMMAND   command;
        T_VM_RECORD_PARAM     parameters;
        T_VM_RECORD_TONE_UL   tone_ul;
    }
    T_VM_RECORD_TASK;

    typedef struct
    {
      T_VM_PLAY_TASK    play;
      T_VM_RECORD_TASK  record;
    }
    T_VM_TASK;

    /**************************************************************************/
    /* Voice memo l1s structure...                                            */
    /**************************************************************************/

    typedef struct
    {
      API     *a_du_x;
      UWORD8  error_id;
      UWORD16 buffer_size;
      UWORD16 *ptr_buf;
      UWORD32 recorded_size;
    }
    T_L1S_VM_RECORD_TASK;

    typedef struct
    {
      API     *a_du_x;
      UWORD8  error_id;
      UWORD16 buffer_size;
      UWORD16 *ptr_buf;
    }
    T_L1S_VM_PLAY_TASK;

    typedef struct
    {
      T_L1S_VM_PLAY_TASK    play;
      T_L1S_VM_RECORD_TASK  record;
    }
    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...                                */
    /**************************************************************************/

    typedef struct
    {
      BOOL  start;
      BOOL pause;
      BOOL resume;
      BOOL  stop;
    }
    T_VM_AMR_PLAY_COMMAND;

    typedef struct
    {
      UWORD8 session_id;
    }
    T_VM_AMR_PLAY_PARAM;

    typedef struct
    {
      T_VM_AMR_PLAY_COMMAND   command;
      T_VM_AMR_PLAY_PARAM     parameters;
    }
    T_VM_AMR_PLAY_TASK;

    typedef struct
    {
      BOOL  start;
      BOOL  stop;
    }
    T_VM_AMR_RECORD_COMMAND;

    typedef struct
    {
      UWORD8    session_id;
      UWORD32   maximum_size;
      UWORD8    amr_vocoder;
      BOOL      dtx;
    }
    T_VM_AMR_RECORD_PARAM;

    typedef struct
    {
      T_VM_AMR_RECORD_COMMAND command;
      T_VM_AMR_RECORD_PARAM   parameters;
    }
    T_VM_AMR_RECORD_TASK;

    typedef struct
    {
      T_VM_AMR_PLAY_TASK    play;
      T_VM_AMR_RECORD_TASK  record;
    }
    T_VM_AMR_TASK;

    /**************************************************************************/
    /* Voice memo l1s structure...                                            */
    /**************************************************************************/

    typedef struct
    {
      API     *a_du_x;
      UWORD8  error_id;
      UWORD16 buffer_size;
      UWORD8  *ptr_buf;
      UWORD32 recorded_size;
    }
    T_L1S_VM_AMR_RECORD_TASK;

    typedef struct
    {
      API     *a_du_x;
      UWORD8  error_id;
      UWORD16 buffer_size;
      UWORD8  *ptr_buf;
      UWORD8  previous_type;
      UWORD8  transition_header;
    }
    T_L1S_VM_AMR_PLAY_TASK;

    typedef struct
    {
      T_L1S_VM_AMR_PLAY_TASK    play;
      T_L1S_VM_AMR_RECORD_TASK  record;
    }
    T_L1S_VM_AMR_TASK;

  #endif // L1_VOICE_MEMO_AMR
  #if (SPEECH_RECO)
    /**************************************************************************/
    /* Speech recogniton l1a_l1s_com structure...                             */
    /**************************************************************************/

    typedef struct
    {
      BOOL enroll_start;
      BOOL enroll_stop;
      BOOL update_start;
      BOOL update_stop;
      BOOL reco_start;
      BOOL reco_stop;
      BOOL processing_start;
      BOOL processing_stop;
      BOOL speech_start;
      BOOL speech_stop;
    }
    T_SR_COMMAND;

    typedef struct
    {
      UWORD8  database_id;
      UWORD8  word_index;
      API     *model_address;
      UWORD16 *model_temp_address;
      BOOL    speech;
      UWORD16 *speech_address;
      UWORD16 *start_address;
      UWORD16 *stop_address;
      BOOL    CTO_algorithm;
      UWORD8  index_counter;
      UWORD8  vocabulary_size;
      UWORD8  word_to_check;
      UWORD16 best_word_index;
      UWORD32 best_word_score;
      UWORD16 second_best_word_index;
      UWORD32 second_best_word_score;
      UWORD16 third_best_word_index;
      UWORD32 third_best_word_score;
      UWORD16 fourth_best_word_index;
      UWORD32 fourth_best_word_score;
      UWORD16 d_sr_db_level;
      UWORD16 d_sr_db_noise;
      UWORD16 d_sr_model_size;
    }
    T_SR_PARAM;

    typedef struct
    {
      T_SR_COMMAND  command;
      T_SR_PARAM    parameters;
    }
    T_SR_TASK;

    typedef struct
    {
      UWORD16   time_out;
      UWORD8    error;
      UWORD16   *speech_pointer;
      UWORD16   *end_pointer;
      API       *a_du_x;
      UWORD16   speech_old_status;
      BOOL      first_pass;
    }
    T_L1S_SR_TASK;

    typedef struct
    {
      BOOL emergency_stop;
    }
    T_L1_SRBACK_COM;

  #endif

  #if (L1_AEC == 1)
    typedef struct
    {
      UWORD16 aec_control;
    #if (L1_NEW_AEC)
      UWORD16 cont_filter;
      UWORD16 granularity_att;
      UWORD16 coef_smooth;
      UWORD16 es_level_max;
      UWORD16 fact_vad;
      UWORD16 thrs_abs;
      UWORD16 fact_asd_fil;
      UWORD16 fact_asd_mut;
    #endif
    }
    T_AEC_PARAM;

    typedef struct
    {
      BOOL start;
    }
    T_AEC_COMMAND;

    typedef struct
    {
      T_AEC_COMMAND  command;
      T_AEC_PARAM    parameters;
    }
    T_AEC_TASK;

    typedef struct
    {
      UWORD16 aec_control;
    #if (L1_NEW_AEC)
      BOOL    aec_visibility;
      UWORD16 cont_filter;
      UWORD16 granularity_att;
      UWORD16 coef_smooth;
      UWORD16 es_level_max;
      UWORD16 fact_vad;
      UWORD16 thrs_abs;
      UWORD16 fact_asd_fil;
      UWORD16 fact_asd_mut;
      WORD8   visibility_interval;
    #endif
    } 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
    {
      BOOL    fir_loop;
      UWORD8  update_fir;
      UWORD16 *fir_ul_coefficient;
      UWORD16 *fir_dl_coefficient;
    }
    T_FIR_PARAM;

    typedef struct
    {
      BOOL start;
    }
    T_FIR_COMMAND;

    typedef struct
    {
      T_FIR_COMMAND  command;
      T_FIR_PARAM    parameters;
    }
    T_FIR_TASK;
  #endif

  #if (AUDIO_MODE)
    typedef struct
    {
      UWORD16  audio_mode;
    }
    T_AUDIO_MODE_PARAM;

    typedef struct
    {
      BOOL start;
    }
    T_AUDIO_MODE_COMMAND;

    typedef struct
    {
      T_AUDIO_MODE_COMMAND command;
      T_AUDIO_MODE_PARAM   parameters;
    }
    T_AUDIO_MODE_TASK;
  #endif
  #if (MELODY_E2)
    /**************************************************************************/
    /* Melody format E2 l1a_l1s_com structure...                              */
    /**************************************************************************/
    typedef struct
    {
      BOOL  start;
      BOOL  stop;
    }
    T_MELODY_E2_COMMAND;

    typedef struct
    {
      UWORD8  session_id;
      UWORD8  error_id;
      UWORD16 buffer_size;
      UWORD8  *ptr_buf;
      BOOL    loopback;
      UWORD8  header_size;
      BOOL    emergency_stop;
      UWORD8  number_of_instrument;
      UWORD8  waves_table_id[SC_AUDIO_MELODY_E2_MAX_NUMBER_OF_INSTRUMENT];
    }
    T_MELODY_E2_PARAM;

    typedef struct
    {
      T_MELODY_E2_COMMAND    command;
      T_MELODY_E2_PARAM      parameters;
    }
    T_MELODY_E2_TASK;

    /**************************************************************************/
    /* Melody format E2 l1s structure...                                      */
    /**************************************************************************/
    typedef struct
    {
      UWORD8      error_id;
      UWORD16     buffer_size;
      UWORD8      *ptr_buf;
      UWORD32     counter;
      UWORD32     note_start_20ms;
      UWORD16     oscillator_start;
      UWORD16     oscillator_active;
      UWORD16     delta_time;
      BOOL        extension_flag;
      BOOL        end_of_file;
    }
    T_L1S_MELODY_E2_TASK;

    typedef struct
    {
      UWORD32     timebase;
      UWORD16     global_osc_active;
      UWORD16     global_osc_to_start;
      UWORD8      timebase_mod_60ms;
      BOOL        dsp_task;
    }
    T_L1S_MELODY_E2_COMMON_VAR;

    /**************************************************************************/
    /* Melody format E2 audio background structure...                         */
    /**************************************************************************/
    typedef struct
    {
      API     *API_address;
      UWORD16 allowed_size;
      UWORD8  number_of_user[SC_AUDIO_MELODY_E2_MAX_NUMBER_OF_INSTRUMENT];
      UWORD8  instrument_id[SC_AUDIO_MELODY_E2_MAX_NUMBER_OF_INSTRUMENT];
      UWORD16 instrument_size[SC_AUDIO_MELODY_E2_MAX_NUMBER_OF_INSTRUMENT];
    } T_AUDIO_BACK_MELODY_E2;
  #endif // MELODY_E2
  #if (L1_CPORT == 1)
    /**************************************************************************/
    /* Cport l1a_l1s_com structure...                                         */
    /**************************************************************************/
    typedef struct
    {
      BOOL  start;
    }
    T_CPORT_COMMAND;

    typedef struct
    {
     UWORD16 configuration;
     UWORD16 ctrl;
     UWORD8  cpcfr1;
     UWORD8  cpcfr2;
     UWORD8  cpcfr3;
     UWORD8  cpcfr4;
     UWORD8  cptctl;
     UWORD8  cpttaddr;
     UWORD16 cptdat;
     UWORD16 cptvs; 
    }
    T_CPORT_PARAM;

    typedef struct
    {
      T_CPORT_COMMAND   command;
      T_CPORT_PARAM     parameters;
    }
    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