view gsm-fw/L1/audio_include/l1audio_msgty.h @ 865:f5affe83ba2d

lldbg hack (poor girl's substitute for JTAG) implemented
author Space Falcon <falcon@ivan.Harhan.ORG>
date Fri, 15 May 2015 00:02:03 +0000
parents 45bf440cc677
children
line wrap: on
line source

/************* Revision Controle System Header *************
 *                  GSM Layer 1 software
 * L1AUDIO_MSGTY.H
 *
 *        Filename l1audio_msgty.h
 *  Copyright 2003 (C) Texas Instruments
 *
 ************* Revision Controle System Header *************/
#ifndef _L1AUDIO_MSGTY_H
#define _L1AUDIO_MSGTY_H

#include "../../include/config.h"
#include "../include/l1_confg.h"

#if (AUDIO_TASK == 1)

  #if (OP_RIV_AUDIO == 1)
    #include "rv_general.h"
  #endif

  #if (KEYBEEP)
    typedef struct
   {
      #if (defined _WINDOWS && (OP_RIV_AUDIO == 1))
        T_RV_HDR  header;
      #endif
      UWORD16 d_k_x1_kt0;
      UWORD16 d_k_x1_kt1;
      UWORD16 d_dur_kb;
    }
    T_MMI_KEYBEEP_REQ;
  #endif

  #if (TONE)
    typedef struct
    {
      #if (defined _WINDOWS && (OP_RIV_AUDIO == 1))
        T_RV_HDR  header;
      #endif
      UWORD16 d_k_x1_t0;
      UWORD16 d_k_x1_t1;
      UWORD16 d_k_x1_t2;
      UWORD16 d_pe_rep;
      UWORD16 d_pe_off;
      UWORD16 d_se_off;
      UWORD16 d_bu_off;
      UWORD16 d_t0_on;
      UWORD16 d_t0_off;
      UWORD16 d_t1_on;
      UWORD16 d_t1_off;
      UWORD16 d_t2_on;
      UWORD16 d_t2_off;
    }
    T_MMI_TONE_REQ;
  #endif

  #if (MELODY_E1)
    typedef struct
    {
      #if (defined _WINDOWS && (OP_RIV_AUDIO == 1))
        T_RV_HDR  header;
      #endif
      UWORD8 session_id;
      BOOL    loopback;
      UWORD16 oscillator_used_bitmap;
    }
    T_MMI_MELODY_REQ;
  #endif
  #if (VOICE_MEMO)
    typedef struct
    {
      #if (defined _WINDOWS && (OP_RIV_AUDIO == 1))
        T_RV_HDR  header;
      #endif
      UWORD8  session_id;
    }
    T_MMI_VM_PLAY_REQ;

    typedef struct
    {
      #if (defined _WINDOWS && (OP_RIV_AUDIO == 1))
        T_RV_HDR  header;
      #endif
      UWORD8  session_id;
      UWORD32 maximum_size;
      BOOL    dtx_used;
      UWORD16 record_coeff_dl;
      UWORD16 record_coeff_ul;
      UWORD16 d_k_x1_t0;
      UWORD16 d_k_x1_t1;
      UWORD16 d_k_x1_t2;
      UWORD16 d_pe_rep;
      UWORD16 d_pe_off;
      UWORD16 d_se_off;
      UWORD16 d_bu_off;
      UWORD16 d_t0_on;
      UWORD16 d_t0_off;
      UWORD16 d_t1_on;
      UWORD16 d_t1_off;
      UWORD16 d_t2_on;
      UWORD16 d_t2_off;
    }
    T_MMI_VM_RECORD_REQ;

    typedef struct
    {
      UWORD32 recorded_size;
    }
    T_L1_VM_RECORD_CON;

    #if (OP_RIV_AUDIO == 1)
      typedef struct
      {
        T_RV_HDR  header;
        UWORD32 recorded_size;
      }
      T_MMI_VM_RECORD_CON;
    #else
      typedef T_L1_VM_RECORD_CON T_MMI_VM_RECORD_CON;
    #endif
  #endif

  #if (L1_VOICE_MEMO_AMR)
    typedef struct
    {
      #if (defined _WINDOWS && (OP_RIV_AUDIO == 1))
        T_RV_HDR  header;
      #endif
      UWORD8  session_id;
    }
    T_MMI_VM_AMR_PLAY_REQ;

    typedef struct
    {
      #if (defined _WINDOWS && (OP_RIV_AUDIO == 1))
        T_RV_HDR  header;
      #endif
      UWORD8  session_id;
      UWORD32 maximum_size;
      BOOL    dtx_used;
      UWORD16 record_coeff_ul;
      UWORD8  amr_vocoder;
    }
    T_MMI_VM_AMR_RECORD_REQ;

    typedef struct
    {
      UWORD32 recorded_size;
    }
    T_L1_VM_AMR_RECORD_CON;

    #if (OP_RIV_AUDIO == 1)
      typedef struct
      {
        T_RV_HDR  header;
        UWORD32 recorded_size;
      }
      T_MMI_VM_AMR_RECORD_CON;
    #else
      typedef T_L1_VM_AMR_RECORD_CON T_MMI_VM_AMR_RECORD_CON;
    #endif
  #endif

  #if (OP_RIV_AUDIO == 1)
    #if (L1_AUDIO_DRIVER == 1)
      typedef struct
      {
        UWORD8 channel_id;
        UWORD16 *p_buffer;
      }
      T_L1_AUDIO_DRIVER_IND;
    #endif
  #endif

  #if (SPEECH_RECO)
    typedef struct
    {
      #if (defined _WINDOWS && (OP_RIV_AUDIO == 1))
        T_RV_HDR  header;
      #endif
      UWORD8  database_id;
      UWORD8  word_index;
      BOOL    speech;
      UWORD16 *speech_address;
    }
    T_MMI_SR_ENROLL_REQ;

    typedef struct
    {
    #if (OP_RIV_AUDIO == 1)
      T_RV_HDR  header;
    #endif
      UWORD8 error_id;
    }
    T_MMI_SR_ENROLL_STOP_CON;

    #if (OP_RIV_AUDIO == 1)
      typedef struct
      {
        UWORD8 error_id;
      }
      T_L1_SR_ENROLL_STOP_CON;
    #else
      typedef T_MMI_SR_ENROLL_STOP_CON T_L1_SR_ENROLL_STOP_CON;
    #endif

    typedef struct
    {
      #if (defined _WINDOWS && (OP_RIV_AUDIO == 1))
        T_RV_HDR  header;
      #endif
      UWORD8  database_id;
      UWORD8  word_index;
      BOOL    speech;
      UWORD16 *speech_address;
    }
    T_MMI_SR_UPDATE_REQ;

    typedef struct
    {
    #if (OP_RIV_AUDIO == 1)
      T_RV_HDR  header;
    #endif
      UWORD8 error_id;
    }
    T_MMI_SR_UPDATE_STOP_CON;

    #if (OP_RIV_AUDIO == 1)
      typedef struct
      {
        UWORD8 error_id;
      }
      T_L1_SR_UPDATE_STOP_CON;
    #else
      typedef T_MMI_SR_UPDATE_STOP_CON T_L1_SR_UPDATE_STOP_CON;
    #endif

    typedef struct
    {
      #if (defined _WINDOWS && (OP_RIV_AUDIO == 1))
        T_RV_HDR  header;
      #endif
      UWORD8  database_id;
      UWORD8  vocabulary_size;
    }
    T_MMI_SR_RECO_REQ;

    typedef struct
    {
    #if (OP_RIV_AUDIO == 1)
      T_RV_HDR  header;
    #endif
      UWORD8  error_id;
      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_MMI_SR_RECO_STOP_CON;

    typedef struct
    {
      UWORD8 error_id;
    }
    T_L1_SR_RECO_STOP_CON;

    #if (OP_RIV_AUDIO == 1)
      typedef struct
      {
        UWORD8  error_id;
        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_L1_SR_RECO_STOP_IND;
    #else
      typedef T_MMI_SR_RECO_STOP_CON T_L1_SR_RECO_STOP_IND;
    #endif

    typedef T_L1_SR_RECO_STOP_CON T_L1_SR_PROCESSING_STOP_CON;

    typedef struct
    {
      #if (defined _WINDOWS && (OP_RIV_AUDIO == 1))
        T_RV_HDR  header;
      #endif
      UWORD8  database_id;
      UWORD8  word_index;
      UWORD16 *model_address;
      BOOL    speech;
      UWORD16 *speech_address;
      UWORD8  vocabulary_size;
    }
    T_MMI_SR_UPDATE_CHECK_REQ;

    typedef T_MMI_SR_RECO_STOP_CON T_MMI_SR_UPDATE_CHECK_STOP_CON;

    // Background message type
    typedef struct
    {
    #if (OP_RIV_AUDIO == 1)
      T_RV_HDR  header;
    #endif
      UWORD8  database_id;
      UWORD8  model_index;
      API     *model_RAM_address;
      BOOL    speech;
      UWORD16 *start_buffer;
      UWORD16 *stop_buffer;
      UWORD16 *start_address;
      UWORD16 *stop_address;
    }
    T_L1_SRBACK_SAVE_DATA_REQ;

    typedef struct
    {
    #if (OP_RIV_AUDIO == 1)
      T_RV_HDR  header;
    #endif
      UWORD8  database_id;
      UWORD8  model_index;
      API     *model_RAM_address;
      BOOL    CTO_enable;
    }
    T_L1_SRBACK_LOAD_MODEL_REQ;

    typedef struct
    {
    #if (OP_RIV_AUDIO == 1)
      T_RV_HDR  header;
    #endif
      API     *model_RAM_address_input;
      UWORD16 *model_RAM_address_output;
    }
    T_L1_SRBACK_TEMP_SAVE_DATA_REQ;
  #endif

  #if (L1_AEC == 1)
    typedef struct
    {
      #if (defined _WINDOWS && (OP_RIV_AUDIO == 1))
        T_RV_HDR  header;
      #endif
      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_MMI_AEC_REQ;

    #if (L1_NEW_AEC)
      typedef struct
      {
        UWORD16 es_level;
        UWORD32 far_end_pow;
        UWORD32 far_end_noise;
      }
      T_L1_AEC_IND;
    #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
    {
      #if (defined _WINDOWS && (OP_RIV_AUDIO == 1))
        T_RV_HDR  header;
      #endif
      BOOL      fir_loop;
      UWORD8    update_fir;
      UWORD16   *fir_ul_coefficient;
      UWORD16   *fir_dl_coefficient;
    }
    T_MMI_AUDIO_FIR_REQ;
  #endif
  #if (AUDIO_MODE)
    typedef struct
    {
      #if (defined _WINDOWS && (OP_RIV_AUDIO == 1))
        T_RV_HDR  header;
      #endif
      #if (OP_RIV_AUDIO == 1)
        UWORD8  audio_mode;
      #else
        UWORD16  audio_mode;
      #endif
    }
    T_MMI_AUDIO_MODE;
  #endif
  #if (MELODY_E2)
    typedef struct
    {
    #if (OP_RIV_AUDIO == 1)
      T_RV_HDR  header;
    #endif
      UWORD8   melody_id;
      UWORD8   number_of_instrument;
      UWORD8   waves_table_id[SC_AUDIO_MELODY_E2_MAX_NUMBER_OF_INSTRUMENT];
    }
    T_L1_BACK_MELODY_E2_LOAD_INSTRUMENT_REQ;

    typedef struct
    {
    #if (OP_RIV_AUDIO == 1)
      T_RV_HDR  header;
    #endif
      UWORD8   melody_id;
    }
    T_L1_BACK_MELODY_E2_LOAD_INSTRUMENT_CON;

    typedef struct
    {
    #if (OP_RIV_AUDIO == 1)
      T_RV_HDR  header;
    #endif
      UWORD8    melody_id;
      UWORD8    number_of_instrument;
    }
    T_L1_BACK_MELODY_E2_UNLOAD_INSTRUMENT_REQ;

    typedef struct
    {
    #if (OP_RIV_AUDIO == 1)
      T_RV_HDR  header;
    #endif
      UWORD8    melody_id;
    }
    T_L1_BACK_MELODY_E2_UNLOAD_INSTRUMENT_CON;

    typedef struct
    {
      #if (defined _WINDOWS && (OP_RIV_AUDIO == 1))
        T_RV_HDR  header;
      #endif
      UWORD8 session_id;
      BOOL    loopback;
    }
    T_MMI_MELODY_E2_REQ;
  #endif

  #if (L1_CPORT == 1)
    typedef struct
    {
     UWORD16 configuration;
     UWORD16 ctrl;
     UWORD8  cpcfr1;
     UWORD8  cpcfr2;
     UWORD8  cpcfr3;
     UWORD8  cpcfr4;
     UWORD8  cptctl;
     UWORD8  cpttaddr;
     UWORD16 cptdat;
     UWORD16 cptvs; 
    }
    T_MMI_CPORT_CONFIGURE_REQ;

    typedef struct
    {
     UWORD16  register_id;
     UWORD16 register_value;
    }
    T_L1_CPORT_CONFIGURE_CON;

    #if (OP_RIV_AUDIO == 1)
      typedef struct
      {
        T_RV_HDR  header;
        UWORD8  register_id;
        UWORD16 register_value;
      }
      T_MMI_CPORT_CONFIGURE_CON;
    #else
      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