[Feature][task-view-306]merge P56U08(patch6) version

Only Configure: No
Affected branch: master
Affected module: unknow
Is it affected on both ZXIC and MTK: only ZXIC
Self-test: Yes
Doc Update: No

Change-Id: I8e809511ac30c97228dd110c304b4a08f4af36d7
diff --git a/cp/phy/bin/zx297520v3/merge_lte_220a1_bin/ps/evb_cpuphy_out.7z b/cp/phy/bin/zx297520v3/merge_lte_220a1_bin/ps/evb_cpuphy_out.7z
index 86ac87e..84a2d41 100755
--- a/cp/phy/bin/zx297520v3/merge_lte_220a1_bin/ps/evb_cpuphy_out.7z
+++ b/cp/phy/bin/zx297520v3/merge_lte_220a1_bin/ps/evb_cpuphy_out.7z
Binary files differ
diff --git a/cp/ps/driver/inc/misc/drvs_voiceprocess.h b/cp/ps/driver/inc/misc/drvs_voiceprocess.h
index 67cc84d..acceb20 100755
--- a/cp/ps/driver/inc/misc/drvs_voiceprocess.h
+++ b/cp/ps/driver/inc/misc/drvs_voiceprocess.h
@@ -283,6 +283,10 @@
 	BOOL firstRegZCATFlag; //25

 	T_Hal_EcallData	ecallData;//26

     UINT8 voice_nv_update;//27

+	UINT8 useVoiceBuffer; // 0 not use,1 use

+	UINT8 voiceBufferType; //0 single core, 1 dual core

+

+	

 } T_zDrvVoice_GbVar; //T_zDrvVoice_GbVar

 

 typedef struct

diff --git a/cp/ps/driver/src/chipsets/src/audio_base/audio_config/audioRef_cfg.c b/cp/ps/driver/src/chipsets/src/audio_base/audio_config/audioRef_cfg.c
index 7489d52..20c1ddc 100755
--- a/cp/ps/driver/src/chipsets/src/audio_base/audio_config/audioRef_cfg.c
+++ b/cp/ps/driver/src/chipsets/src/audio_base/audio_config/audioRef_cfg.c
@@ -25,6 +25,7 @@
 #include "drvs_general.h"

 #include "drvs_i2s.h"

 #include "drvs_voiceprocess.h"

+#include "hal_voiceprocess.h"

 #include "drvs_voice_config.h"

 #include "drvs_i2c.h"

 #include "NvParam_drv.h"

@@ -132,7 +133,7 @@
 

 //#define AUDIO_USE_FIXED_ADDRESS

 

-#define VP_INOUT_BAK_BUFFER_SIZE 0x30000  // 0x60000

+//#define VP_INOUT_BAK_BUFFER_SIZE 0x30000  // 0x60000

 #define VP_INOUT_NOBAK_BUFSIZE  640

 

 /**************************************************************************

@@ -595,7 +596,8 @@
 	//ret = zDrvNand_Read(OS_FLASH_VOICE_DRV_RW_NONFAC_BASE_ADDR,  sizeof(audionvflag), ((UINT8 *)(&audionvflag)));

 	ret = zOss_NvItemRead(OS_FLASH_VOICE_DRV_RW_NONFAC_BASE_ADDR, ((UINT8 *)(&audionvflag)),  sizeof(audionvflag));

 

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, " zDrvVoiceConfig_Init zOss_NvItemRead isVpParamInNv=%d,isUseSlicCodec=%d!\n", audionvflag.isVpParamInNv, audionvflag.isUseSlicCodec);

+

+	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, " zDrvVoiceConfig_Init zOss_NvItemRead isVpParamInNv=%d,isUseSlicCodec=%d,isUseVoiceProc=%d,isUseTdm=%d,isUseEcall=%d!\n", audionvflag.isVpParamInNv, audionvflag.isUseSlicCodec,audionvflag.isUseVoiceProc,audionvflag.isUseTdm,audionvflag.isUseEcall);

 	//hal_TestTopI2sConfig();

 

 	if (ret != DRV_SUCCESS)

diff --git a/cp/ps/driver/src/chipsets/src/audio_base/audio_lib/amr/lib/armv7-a/GCC/amr.a b/cp/ps/driver/src/chipsets/src/audio_base/audio_lib/amr/lib/armv7-a/GCC/amr.a
index 01399c1..82a1fc3 100755
--- a/cp/ps/driver/src/chipsets/src/audio_base/audio_lib/amr/lib/armv7-a/GCC/amr.a
+++ b/cp/ps/driver/src/chipsets/src/audio_base/audio_lib/amr/lib/armv7-a/GCC/amr.a
Binary files differ
diff --git a/cp/ps/driver/src/chipsets/src/audio_base/audiointf/hal_audextintf.c b/cp/ps/driver/src/chipsets/src/audio_base/audiointf/hal_audextintf.c
index dff7364..db57346 100755
--- a/cp/ps/driver/src/chipsets/src/audio_base/audiointf/hal_audextintf.c
+++ b/cp/ps/driver/src/chipsets/src/audio_base/audiointf/hal_audextintf.c
@@ -193,6 +193,40 @@
 {

 	return g_voiceVar.muteEn;

 }

+

+int zDrvVp_SetVoiceProc_Wrap(int val)

+{

+	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "%s: val=%d !\n",__func__,val);

+

+	g_voiceVar.audio_ctrlFlag.isUseVoiceProc = val;

+	return DRV_SUCCESS;

+}

+

+int zDrvVp_GetVoiceProc_Wrap(void)

+{

+	return g_voiceVar.audio_ctrlFlag.isUseVoiceProc;

+}

+

+int zDrvVp_SetVoiceBuffer_Wrap(int en,int type)

+{

+	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "%s: en=%d,type=%d !\n",__func__,en,type);

+

+	g_voiceVar.useVoiceBuffer = en;

+	g_voiceVar.voiceBufferType = type;

+	return DRV_SUCCESS;

+}

+

+void zDrvVp_GetVoiceBuffer_Wrap(int *en,int *type)

+{

+    if((en!=NULL)&&(type!=NULL)){

+		*en = g_voiceVar.useVoiceBuffer;

+		*type = g_voiceVar.voiceBufferType;

+		

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "%s: en=%d,type=%d !\n",__func__,*type,*en);

+    }

+}

+

+

 SINT32 zDrvVp_SetRxMute_Wrap(int enable)

 {

 	return zDrvVp_SetRxMute(enable, VOICE_DOWNLINK);

diff --git a/cp/ps/driver/src/chipsets/src/audio_base/audiointf/voice_procintf.c b/cp/ps/driver/src/chipsets/src/audio_base/audiointf/voice_procintf.c
old mode 100644
new mode 100755
index 2f0e803..5146753
--- a/cp/ps/driver/src/chipsets/src/audio_base/audiointf/voice_procintf.c
+++ b/cp/ps/driver/src/chipsets/src/audio_base/audiointf/voice_procintf.c
@@ -15,6 +15,10 @@
 * 	                                           Include files
 ****************************************************************************/
 #include "drvs_general.h"
+
+#include "drvs_volte.h"
+#include "drvs_voiceprocess.h"
+
 #include "drvs_ramlog.h"
 #include <oss_clib.h>
 #include <oss_kernel.h>
@@ -73,8 +77,12 @@
 
 	g_voiceVar.isUseSlicCodec = g_voiceVar.audio_ctrlFlag.isUseSlicCodec;
 	g_voiceVar.g_isUseTdm = g_voiceVar.audio_ctrlFlag.isUseTdm;
+	
+	g_voiceVar.useVoiceBuffer = g_voiceVar.audio_ctrlFlag.isUseVoiceBuffer; // 0 not use,1 use
+	g_voiceVar.voiceBufferType = g_voiceVar.audio_ctrlFlag.selVoiceBufferType;//0 single core, 1 dual core
 
-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, " VoiceProc_InitNvParam isUseVoiceProc=%d,isUseSlicCodec=%d,isUseTdm=%d!\n", g_voiceVar.audio_ctrlFlag.isUseVoiceProc, g_voiceVar.isUseSlicCodec, g_voiceVar.audio_ctrlFlag.isUseTdm);
+	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, " VoiceProc_InitNvParam isUseVoiceProc=%d,isUseSlicCodec=%d,isUseTdm=%d,useVoiceBuffer=%d,voiceBufferType=%d!\n", g_voiceVar.audio_ctrlFlag.isUseVoiceProc, \
+		                                  g_voiceVar.isUseSlicCodec, g_voiceVar.audio_ctrlFlag.isUseTdm,g_voiceVar.useVoiceBuffer,g_voiceVar.voiceBufferType);
 	if (g_voiceVar.audio_ctrlFlag.isUseVoiceProc == 1)
 	{
 #ifdef _USE_NXP_AUD
diff --git a/cp/ps/driver/src/chipsets/src/audio_base/i2s/hal_i2s.c b/cp/ps/driver/src/chipsets/src/audio_base/i2s/hal_i2s.c
index 983a92a..5ea7c1d 100755
--- a/cp/ps/driver/src/chipsets/src/audio_base/i2s/hal_i2s.c
+++ b/cp/ps/driver/src/chipsets/src/audio_base/i2s/hal_i2s.c
@@ -4322,6 +4322,37 @@
 */

 VOID vp_SetTopI2sConfig(VOID)

 {

+	

+

+UINT32 AmrRegBit = 0;

+

+if (g_voiceVar.useVoiceBuffer == 1){ 

+

+

+

+	/* inter loop */

+	AmrRegBit = ARM_I2S_LOOP_CFG;

+

+	AmrRegBit &= 0xfffffe07;

+	AmrRegBit |= 0x000000a8; /* 0x000000a8 loop dsp afe(loop i2s1)--arm i2s2(loop i2s2) 0x00000150 loop dsp arm(loop i2s1)--afe i2s2(loop i2s2)*/

+

+	ARM_I2S_LOOP_CFG = AmrRegBit;

+

+	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_SetTopI2sConfig ARM_I2S_LOOP_CFG=0x%x\n", ARM_I2S_LOOP_CFG);

+}

+#ifdef CONFIG_VOICE_BUFFER_DRV  

+	/* inter loop */

+	AmrRegBit = ARM_I2S_LOOP_CFG;

+

+	AmrRegBit &= 0xfffffe07;

+	AmrRegBit |= 0x000000a8; /* 0x000000a8 loop dsp afe(loop i2s1)--arm i2s2(loop i2s2) 0x00000150 loop dsp arm(loop i2s1)--afe i2s2(loop i2s2)*/

+

+	ARM_I2S_LOOP_CFG = AmrRegBit;

+

+	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_SetTopI2sConfig ARM_I2S_LOOP_CFG=0x%x\n", ARM_I2S_LOOP_CFG);

+

+#endif

+

 #if 0

 	UINT32 AmrRegBit = 0;

 	int ret;

diff --git a/cp/ps/driver/src/chipsets/src/audio_base/include/hal_voicebuffer.h b/cp/ps/driver/src/chipsets/src/audio_base/include/hal_voicebuffer.h
new file mode 100755
index 0000000..a9fbd34
--- /dev/null
+++ b/cp/ps/driver/src/chipsets/src/audio_base/include/hal_voicebuffer.h
@@ -0,0 +1,107 @@
+/*******************************************************************************

+ * Copyright (C) 2007, ZTE Corporation.

+ *

+ * File Name:    hal_voicebuffer.h

+ * File Mark:    

+* Description:  Provide voicebuffer hal function prototype declaration and type declaration.

+ * Others:        

+ * Version:       V0.5

+ * Author:        xxq

+ * Date:          2024-07-11

+ * History 1:      

+ *     Date: 

+ *     Version:

+ *     Author: 

+ *     Modification:  add mute/read/write/loopback.

+ * History 2: 

+  ********************************************************************************/

+

+#ifndef _HAL_VOICEBUFFER_H

+#define _HAL_VOICEBUFFER_H

+

+

+/****************************************************************************

+*                                             Include files

+****************************************************************************/

+

+

+/****************************************************************************

+*                                             Macros

+****************************************************************************/

+#define VP_BUF_LENGTH  0x7FF80 //0xFFD80   //0x7FE40  //0x4df80// (0.5M  0x80000)

+#define VP_FRAME_BUFFER_SIZE 320 //20ms 800KHZ

+#define VP_I2S_BUFFER_SIZE 320

+#define VOICE_SYNC_TIMEOUT_TIME 100

+	

+	//#define VP_INOUT_BAK_BUFFER_SIZE 0x30000	// 0x60000

+#define VP_INOUT_NOBAK_BUFSIZE  640

+#define VB_MAX_INT	     0x7fffffff

+#define VB_MIN_INT        0 //(0-2<<31)//0x80000000

+	

+#define VB_INT_OVERFLOW(x) if((x < VB_MIN_INT)||(x > VB_MAX_INT))  x = 0;

+

+#define RPMSG_CAP_ID 1

+

+#define MAX_BUF_SIZE	     640

+#define MAX_BUF_NUM        3

+

+/****************************************************************************

+*                                             Types

+****************************************************************************/

+

+

+

+enum{

+	UP_LINK,

+	DOWN_LINK	

+};

+

+struct voice_ring_buffer {

+	volatile uint read_pos;

+	volatile uint write_pos;

+	volatile char data[];

+

+};

+

+

+/****************************************************************************

+*                                             Constants

+****************************************************************************/

+

+/****************************************************************************

+*                                             Global  Variables

+****************************************************************************/

+

+/****************************************************************************

+*                                             Function Prototypes

+****************************************************************************/

+

+SINT32 vp_Open_Vbuffer(void);

+

+SINT32 vp_Close_Vbuffer(void);

+

+SINT32 vp_VoiceI2sStart_Vbuffer(VOID);

+

+VOID vp_VoiceI2sStop_Vbuffer(VOID);

+

+SINT32 zDrvVp_VoiceWorkStop_Vbuffer(VOID);

+

+SINT32 vp_VolteReadStart_Vbuffer(VOID);

+//whole replace 

+SINT32 vp_VolteReadStop_Vbuffer(VOID);

+

+SINT32 vp_VolteWriteStart_Vbuffer(VOID);

+//whole replace

+SINT32 vp_VolteWriteStop_Vbuffer(VOID);

+

+SINT32 vp_WriteDataToCodec_Vbuffer(UINT8 *pBuf, UINT32 count);

+

+SINT32 vp_ReadDataFromCodec_Vbuffer(UINT8 *pBuf, UINT32 count);

+

+SINT32 vp_CreateThreadSemaph_Vbuffer(VOID);

+

+

+

+

+#endif/*_HAL_VOICEBUFFER_H*/

+

diff --git a/cp/ps/driver/src/chipsets/src/audio_base/include/hal_voiceprocess.h b/cp/ps/driver/src/chipsets/src/audio_base/include/hal_voiceprocess.h
old mode 100644
new mode 100755
index 371297d..810e12c
--- a/cp/ps/driver/src/chipsets/src/audio_base/include/hal_voiceprocess.h
+++ b/cp/ps/driver/src/chipsets/src/audio_base/include/hal_voiceprocess.h
@@ -23,14 +23,42 @@
  *                                                 Include files                                	    *

  **************************************************************************/

 

+

+/****************************************************************************

+* 	                                           Local Types

+****************************************************************************/

+

+typedef enum

+{

+	VBUF_SEM = 0,//voice buffer

+	ECALL_SEM,		

+	SEM_MAX

+} T_Sem_Owner;

+

+typedef enum

+{

+	DIR_RX,

+	DIR_TX, 	

+	DIR_ALL,

+	DIR_MAX

+} T_Data_Dir_Type;

+

+

 /**************************************************************************

  *                                                 Macro                                    	            *

  **************************************************************************/

+#define VP_INOUT_BAK_BUFFER_SIZE 0x30000  // 0x60000

+

+//#define TEST_WHITE_NOISE

+

+//#define  VB_DATA_LOSS_TEST

+

+

 #if 0

 #define VOICE_TONE_MIXER_FUNCTION 

 //#define TEST_WHITE_NOISE

 

-

+#endif

 

 /****************************************************************************

 * 	                                        Global Constants                                        *

@@ -47,6 +75,7 @@
 /****************************************************************************

 * 	                                         Function Prototypes                                    *

 ****************************************************************************/

+#if 0

 typedef enum

 {

     VP_I2S_IDLE = 0,

@@ -60,6 +89,13 @@
 /**************************************************************************

  *                              Function Prototypes                                    *

  **************************************************************************/

+#ifdef ECALL_SUPPORT

+

+

+SINT32 update_ecall_state(T_Data_Dir_Type dir);

+

+

+#endif

 

 

 

diff --git a/cp/ps/driver/src/chipsets/src/audio_base/nxp/hal_nxp.c b/cp/ps/driver/src/chipsets/src/audio_base/nxp/hal_nxp.c
new file mode 100755
index 0000000..3dfed2e
--- /dev/null
+++ b/cp/ps/driver/src/chipsets/src/audio_base/nxp/hal_nxp.c
@@ -0,0 +1,1099 @@
+/*******************************************************************************

+ * Copyright (C) 2007, ZTE Corporation.

+ *

+ * File Name:

+ * File Mark:

+ * Description:

+ * Others:

+ * Version:

+ * Author:        lvwenhua

+ * Date:          2011-8-24

+ * History 1:

+ *     Date: 2016-2-16

+ *     Version:

+ *     Author:xuxinqiang

+ *     Modification: edit for union version

+ * History 2:

+  ********************************************************************************/

+

+/****************************************************************************

+* 	                                           Include files

+****************************************************************************/

+#include "drvs_general.h"

+#include "NvParam_drv.h"

+

+#ifdef _OS_TOS

+#include "./tos/LVVE.h"

+#include "./tos/PARAM_Default.h"

+#include "./tos/nxp_DrvNvData.h"

+

+#elif defined _OS_LINUX

+#include "./uclinux/LVVE.h"

+#include "./uclinux/PARAM_Default.h"

+#include "./uclinux/nxp_DrvNvData.h"

+

+#else

+#include "LVVE.h"

+#include "PARAM_Default.h"

+#include "nxp_DrvNvData.h"

+#endif

+

+#include "drvs_voiceprocess.h"

+#include "drvs_ramlog.h"

+

+#include "hal_audiointf.h"

+#include "RWNvConfig.h"

+

+/****************************************************************************

+* 	                                           Local Macros

+****************************************************************************/

+#define MAX_BLK_SIZE                400                  /* Maximum possible block size */

+#define LVVE_NUM_OF_SAMPLES        160

+#define VP_PARAM_IS_IN_NV        1

+

+/****************************************************************************

+* 	                                          Global Constants

+****************************************************************************/

+//extern BOOL g_vpMuteEn;

+//extern UINT8 g_voiceInGsmTdMode;

+//extern UINT8 g_voiceInVolteMode;

+//extern UINT8 g_volteIsWb;

+//extern UINT8 g_isUseSlicCodec;

+extern T_zDrvVoice_GbVar g_voiceVar;

+static BOOL g_nxpIsOpen = FALSE;

+

+

+/****************************************************************************

+* 	                                          Global Variables

+****************************************************************************/

+LVM_INT32   InBuffer16_Tx_FE[MAX_BLK_SIZE];                  /* Stereo, 16-bit aligned input buffer */

+LVM_INT16   pNoiseData[4];

+

+LVM_MemoryTable_st          MemoryTable_Tx = {0};                             /* Module memory table */

+LVM_MemoryTable_st          MemoryTable_Rx = {0};                             /* Module memory table */

+LVVE_Tx_Handle_t            hInstance_Tx = LVM_NULL;                               /* Module instance handle */

+LVVE_Rx_Handle_t            hInstance_Rx = LVM_NULL;                               /* Module instance handle */

+

+#define NUM_VOL_RX                   (5)                  /* Number of Rx volumes */

+

+//LVM_CHAR                    LVVE_Tx_Preset_Buffer[LVVE_TX_PRESET_LENGTH]; /* Byte buffer */

+LVVE_Tx_Preset_t            LVVE_Tx_Preset ; /* Preset buffer */

+//LVM_CHAR                    LVVE_Rx_Preset_Buffer[NUM_VOL_RX*LVVE_RX_PRESET_LENGTH]; /* Byte buffer */

+LVVE_Rx_Preset_t            LVVE_Rx_Preset ; /* Preset buffer */

+//LVM_CHAR                    LVVE_Tx_Preset_Buffer_Volte[LVVE_TX_PRESET_LENGTH]; /* Byte buffer */

+//LVM_CHAR                    LVVE_Rx_Preset_Buffer_Volte[NUM_VOL_RX*LVVE_RX_PRESET_LENGTH]; /* Byte buffer */

+

+T_Audio_NvParam g_audioNvParam = {0};

+

+static LVM_UINT32	NumBytesReadRx;                               /* Number of bytes in the preset file  RX*/

+static LVM_UINT32	NumBytesReadTx;                               /* Number of bytes in the preset file  TX*/

+

+static BOOL isFirstTxProcessErr = TRUE;

+static BOOL isFirstRxProcessErr = TRUE;

+/****************************************************************************

+* 	                                          Global Function Prototypes

+****************************************************************************/

+//T_ZDrv_VoiceOutputPath  s_vpPathout;

+//T_ZDrvVoice_OutputVolLevel  s_vpVolout;

+

+UINT32 zOss_NvItemRead(UINT32 NvItemID, UINT8 *NvItemData, UINT32 NvItemLen);

+UINT32 zOss_NvItemWrite(UINT32 NvItemID, UINT8 *NvItemData, UINT32 NvItemLen);

+

+/****************************************************************************

+* 	                                          Function Definitions

+****************************************************************************/

+SINT32 Vp_NxpInitNvParam(VOID)

+{

+	SINT32 ret = DRV_SUCCESS;

+	SINT32 i = 0;

+

+	LVVE_VersionInfo            pVersion;                                   /* version information */

+	LVVE_GetVersionInfo(&pVersion);

+

+	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "nxp Version  %s\n", pVersion.VersionNumber);

+#if 0

+	ret = zOss_NvItemRead(OS_FLASH_VOICE_DRV_RW_NONFAC_BASE_ADDR, ((UINT8 *)(&g_audioNvParam.audio_ctrlFlag)),  sizeof(g_audioNvParam.audio_ctrlFlag));

+	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpInitNvParam voice  flag baseAdd=0x%x, ret =%d ,isVpParamInNv= %d \n", (OS_FLASH_VOICE_DRV_RW_NONFAC_BASE_ADDR), \

+	                  ret, g_audioNvParam.audio_ctrlFlag.isVpParamInNv);

+

+	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpInitNvParam voiceflag isVpParamInNv=%d,isUseSlicCodec=%d,isUseVoiceProc=%d,isUseCodecDsp=%d,isUseNvWrite=%d \n", \

+	                  g_audioNvParam.audio_ctrlFlag.isVpParamInNv, g_audioNvParam.audio_ctrlFlag.isUseSlicCodec, g_audioNvParam.audio_ctrlFlag.isUseVoiceProc, \

+	                  g_audioNvParam.audio_ctrlFlag.isUseCodecDsp, g_audioNvParam.audio_ctrlFlag.isUseNvWrite);

+

+	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpInitNvParam the g_audioNvParam size=%d,audio_ctrlFlag size=%d\n", \

+	                  sizeof(g_audioNvParam), sizeof(g_audioNvParam.audio_ctrlFlag));

+

+	g_voiceVar.audio_ctrlFlag = g_audioNvParam.audio_ctrlFlag;

+	g_voiceVar.isUseSlicCodec = g_audioNvParam.audio_ctrlFlag.isUseSlicCodec;

+	g_voiceVar.g_isUseTdm = g_audioNvParam.audio_ctrlFlag.isUseTdm;

+	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, " Vp_NxpInitNvParam g_voiceVar.isUseSlicCodec=%d, g_voiceVar.g_isUseTdm=%d!\n", g_voiceVar.isUseSlicCodec, g_voiceVar.g_isUseTdm);

+#endif

+

+	g_audioNvParam.audio_ctrlFlag = g_voiceVar.audio_ctrlFlag;

+#if 0

+	if (g_audioNvParam.audio_ctrlFlag.isVpParamInNv == 1)

+	{

+		ret = zOss_NvItemRead(OS_FLASH_VOICE_RW_NONFAC_BASE_ADDR, ((UINT8 *)(&g_audioNvParam.vpNxpParamFile)),  sizeof(g_audioNvParam.vpNxpParamFile));

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpInitNvParam Read audio nv param base add=0x%x,vpNxpParamFile size=%d \n", \

+		                  (OS_FLASH_VOICE_RW_NONFAC_BASE_ADDR), sizeof(g_audioNvParam.vpNxpParamFile));

+

+	}

+	else

+	{

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpInitNvParam Set all path to the default param, txbuffer size=%d, rxbuffer size=%d \n", sizeof(LVVE_Tx_Preset_Buffer_Voice_Tool), sizeof(LVVE_Rx_Preset_Buffer_Voice_Tool));

+		// Vp_Nxp_Param_File.LVVE_Tx_File_Buffer=LVVE_Tx_Preset_Buffer_Voice_Tool;

+		//Vp_Nxp_Param_File.LVVE_Rx_File_Buffer=LVVE_Rx_Preset_Buffer_Voice_Tool;

+		for (i = 0; i < AUDIO_MAX_VP_PATH; i++)

+		{

+			zOss_Memcpy(g_audioNvParam.vpNxpParamFile.vpNxpPathParam[i].nxpTxFileBuffer, LVVE_Tx_Preset_Buffer_Voice_Tool, sizeof(LVVE_Tx_Preset_Buffer_Voice_Tool));

+			zOss_Memcpy(g_audioNvParam.vpNxpParamFile.vpNxpPathParam[i].nxpRxFileBuffer, LVVE_Rx_Preset_Buffer_Voice_Tool, sizeof(LVVE_Rx_Preset_Buffer_Voice_Tool));

+		}

+		zOss_Memcpy(g_audioNvParam.vpNxpParamFile.nxpTxNbMuteBuffer, LVVE_Tx_Mute_File_Buffer, sizeof(LVVE_Tx_Mute_File_Buffer));

+		zOss_Memcpy(g_audioNvParam.vpNxpParamFile.nxpTxWbMuteBuffer, LVVE_Tx_Wb_Mute_File_Buffer, sizeof(LVVE_Tx_Wb_Mute_File_Buffer));

+	}

+#endif

+	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpInitNvParam is over \n");

+

+	return ret;

+}

+

+SINT32 Vp_NxpOpen(UINT32 fs)

+{

+

+	LVVE_Tx_InstanceParams_st   InstanceParams_Tx;                          /* Instance parameters */

+	LVVE_Rx_InstanceParams_st   InstanceParams_Rx;                          /* Instance parameters */

+	LVVE_ReturnStatus_en        LVVE_Status;                                /* Module status return */

+	LVM_INT32                   i, ret = 0;                                          /* Index variable */

+

+	if (g_nxpIsOpen == TRUE)

+	{

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "nxp already opened!  \n");

+		return DRV_SUCCESS;

+	}

+

+	if (fs == 8000)

+	{

+

+		InstanceParams_Rx.SampleRate    = LVM_FS_8000;

+		InstanceParams_Rx.EQ_InstParams.EQ_MaxLength = LVVE_MAX_EQ_LENGTH_NB;

+		InstanceParams_Tx.SampleRate    = LVM_FS_8000;

+		InstanceParams_Tx.MaxBulkDelay  = LVVE_MAX_BULK_DELAY;

+		InstanceParams_Tx.EQ_InstParams.EQ_MaxLength = LVVE_MAX_EQ_LENGTH_NB;

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpOpen confg NB param!  \n", fs);

+	}

+	else if (fs == 16000)

+	{

+		InstanceParams_Rx.SampleRate    =  LVM_FS_16000;

+		InstanceParams_Rx.EQ_InstParams.EQ_MaxLength =  LVVE_MAX_EQ_LENGTH_WB;

+		InstanceParams_Tx.SampleRate    =  LVM_FS_16000;

+		InstanceParams_Tx.MaxBulkDelay  =  LVVE_MAX_BULK_DELAY;

+		InstanceParams_Tx.EQ_InstParams.EQ_MaxLength =  LVVE_MAX_EQ_LENGTH_WB;

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpOpen confg WB param !  \n", fs);

+	}

+	else

+	{

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpOpen nxp the fs=%d not support!  \n", fs);

+		return DRV_ERROR;

+	}

+

+	/******************************************************************************

+	    Allocate memory

+	*******************************************************************************/

+	/*

+	 * Get the memory requirements for the Tx Module

+	 */

+	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "before LVVE_Tx_GetMemoryTable\n");

+

+	LVVE_Status = LVVE_Tx_GetMemoryTable(LVM_NULL,

+	                                     &MemoryTable_Tx,

+	                                     &InstanceParams_Tx);

+

+	if (LVVE_Status == LVVE_NULLADDRESS)

+	{

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Parameter error - null pointer error returned by LVVE_Tx_GetMemoryTable\n");

+		return DRV_ERROR;

+	}

+	if (LVVE_Status == LVVE_OUTOFRANGE)

+	{

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Parameter error - out of range error returned by LVVE_Tx_GetMemoryTable\n");

+		return DRV_ERROR;

+	}

+

+	/*

+	 * Allocate the memory for the Tx module

+	 */

+	for (i = 0; i < LVM_NR_MEMORY_REGIONS; i++)

+	{

+		if (MemoryTable_Tx.Region[i].Size != 0)

+		{

+			MemoryTable_Tx.Region[i].pBaseAddress = zOss_Malloc(MemoryTable_Tx.Region[i].Size);

+			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Nxp tx malloc size = %d", MemoryTable_Tx.Region[i].Size);

+

+			if (MemoryTable_Tx.Region[i].pBaseAddress == LVM_NULL)

+			{

+				zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Failed to allocate %d bytes for region %d\n", (LVM_INT16)MemoryTable_Tx.Region[i].Size, (LVM_INT16)i);

+			}

+		}

+

+	}

+

+	/*

+	 * Get the memory requirements for the Rx Module

+	 */

+

+	LVVE_Status = LVVE_Rx_GetMemoryTable(LVM_NULL,

+	                                     &MemoryTable_Rx,

+	                                     &InstanceParams_Rx);

+	if (LVVE_Status == LVVE_NULLADDRESS)

+	{

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Parameter error - null pointer error returned by LVVE_Rx_GetMemoryTable\n");

+		return DRV_ERROR;

+	}

+	if (LVVE_Status == LVVE_OUTOFRANGE)

+	{

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Parameter error - out of range error returned by LVVE_Rx_GetMemoryTable\n");

+		return DRV_ERROR;

+	}

+

+	/*

+	 * Allocate the memory for the Rx module

+	 */

+	for (i = 0; i < LVM_NR_MEMORY_REGIONS; i++)

+	{

+		if (MemoryTable_Rx.Region[i].Size != 0)

+		{

+			MemoryTable_Rx.Region[i].pBaseAddress = zOss_Malloc(MemoryTable_Rx.Region[i].Size);

+			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Nxp rx malloc size = %d\n", MemoryTable_Rx.Region[i].Size);

+

+			if (MemoryTable_Rx.Region[i].pBaseAddress == LVM_NULL)

+			{

+				zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Failed to allocate %d bytes for region %d\n", (LVM_INT16)MemoryTable_Rx.Region[i].Size, (LVM_INT16)i);

+			}

+		}

+	}

+

+	/*

+	 * Allocate the memory for the noise data buffer (2*LVVE_NUM_OF_SAMPLES)

+	 */

+

+	hInstance_Tx = LVM_NULL;                                            /* Initialise to NULL */

+	LVVE_Status = LVVE_Tx_GetInstanceHandle(&hInstance_Tx,              /* Init sets the instance handle */

+	                                        &MemoryTable_Tx,

+	                                        &InstanceParams_Tx);

+

+	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "LVVE_Tx_GetInstanceHandle LVVE_Status=%d\n", LVVE_Status);

+	if (LVVE_Status == LVVE_NULLADDRESS)

+	{

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Parameter error - null pointer error returned by LVVE_Tx_GetInstanceHandle\n");

+		return DRV_ERROR;

+	}

+	if (LVVE_Status == LVVE_OUTOFRANGE)

+	{

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Parameter error - out of range error returned by LVVE_Tx_GetInstanceHandle\n");

+		return DRV_ERROR;

+	}

+

+	hInstance_Rx = LVM_NULL;                                            /* Initialise to NULL */

+	LVVE_Status = LVVE_Rx_GetInstanceHandle(&hInstance_Rx,              /* Init sets the instance handle */

+	                                        &MemoryTable_Rx,

+	                                        &InstanceParams_Rx);

+	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "LVVE_Rx_GetInstanceHandle LVVE_Status=%d\n", LVVE_Status);

+	if (LVVE_Status == LVVE_NULLADDRESS)

+	{

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Parameter error - null pointer error returned by LVVE_Rx_GetInstanceHandle\n");

+		return DRV_ERROR;

+	}

+	if (LVVE_Status == LVVE_OUTOFRANGE)

+	{

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Parameter error - out of range error returned by LVVE_Rx_GetInstanceHandle\n");

+		return DRV_ERROR;

+	}

+	LVM_UINT32 nxpParamSize = 0, nxpParamOffset = 0;

+

+	nxpParamSize = 4 * (LVWM_TX_FILE_SIZE + LVWM_RX_FILE_SIZE);

+

+	g_audioNvParam.s_nxpPathParam = zOss_Malloc(nxpParamSize);

+	if (g_audioNvParam.s_nxpPathParam == NULL)

+	{

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Failed to allocate g_audioNvParam.s_nxpPathParam\n");

+		return DRV_ERROR;

+	}

+

+	g_audioNvParam.s_nxpTxNbMuteParam = zOss_Malloc(2 * LVWM_TX_FILE_SIZE);

+	if (g_audioNvParam.s_nxpTxNbMuteParam == NULL)

+	{

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Failed to allocate g_audioNvParam.s_nxpTxNbMuteParam\n");

+		return DRV_ERROR;

+	}

+	g_audioNvParam.s_nxpTxWbMuteParam = g_audioNvParam.s_nxpTxNbMuteParam + LVWM_TX_FILE_SIZE;

+

+	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpOpen s_nxpPathParam=%p,s_nxpTxNbMuteParam=%p\n", g_audioNvParam.s_nxpPathParam, g_audioNvParam.s_nxpTxNbMuteParam);

+	if (g_audioNvParam.audio_ctrlFlag.isVpParamInNv == 1)

+	{

+		if (g_voiceVar.voiceMode == VOICE_GSM_MODE)

+		{

+			nxpParamOffset = 0;

+		}

+		else if ((g_voiceVar.voiceMode == VOICE_WCDMA_MODE) || (g_voiceVar.voiceMode == VOICE_TD_MODE))

+		{

+			if (g_voiceVar.volteIsWb != 1)

+			{

+				nxpParamOffset = nxpParamSize;

+			}

+			else

+			{

+				nxpParamOffset = 2 * nxpParamSize;

+			}

+		}

+		else if (g_voiceVar.voiceMode == VOICE_LTE_MODE)

+		{

+			if (g_voiceVar.volteIsWb != 1)

+			{

+				nxpParamOffset = 3 * nxpParamSize;

+			}

+			else

+			{

+				nxpParamOffset = 4 * nxpParamSize;

+			}

+		}

+

+		ret = zOss_NvItemRead(OS_FLASH_VOICE_RW_NONFAC_BASE_ADDR + nxpParamOffset, g_audioNvParam.s_nxpPathParam,  nxpParamSize);

+

+		nxpParamOffset = 5 * nxpParamSize;

+		ret = zOss_NvItemRead(OS_FLASH_VOICE_RW_NONFAC_BASE_ADDR + nxpParamOffset, g_audioNvParam.s_nxpTxNbMuteParam,  2 * LVWM_TX_FILE_SIZE);

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpInitNvParam Read audio nv param base add=0x%x,vpNxpParamFile size=%d \n", \

+		                  (OS_FLASH_VOICE_RW_NONFAC_BASE_ADDR + nxpParamOffset), nxpParamSize);

+

+	}

+	else

+	{

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpInitNvParam Set all path to the default param, txbuffer size=%d, rxbuffer size=%d \n", sizeof(LVVE_Tx_Preset_Buffer_Voice_Tool), sizeof(LVVE_Rx_Preset_Buffer_Voice_Tool));

+		// Vp_Nxp_Param_File.LVVE_Tx_File_Buffer=LVVE_Tx_Preset_Buffer_Voice_Tool;

+		//Vp_Nxp_Param_File.LVVE_Rx_File_Buffer=LVVE_Rx_Preset_Buffer_Voice_Tool;

+		for (i = 0; i < 4; i++)

+		{

+			zOss_Memcpy(g_audioNvParam.s_nxpPathParam + i * (LVWM_TX_FILE_SIZE + LVWM_RX_FILE_SIZE), LVVE_Tx_Preset_Buffer_Voice_Tool, sizeof(LVVE_Tx_Preset_Buffer_Voice_Tool));

+			zOss_Memcpy(g_audioNvParam.s_nxpPathParam + LVWM_TX_FILE_SIZE + i * (LVWM_TX_FILE_SIZE + LVWM_RX_FILE_SIZE), LVVE_Rx_Preset_Buffer_Voice_Tool, sizeof(LVVE_Rx_Preset_Buffer_Voice_Tool));

+		}

+		zOss_Memcpy(g_audioNvParam.s_nxpTxNbMuteParam, LVVE_Tx_Mute_File_Buffer, sizeof(LVVE_Tx_Mute_File_Buffer));

+		zOss_Memcpy(g_audioNvParam.s_nxpTxWbMuteParam, LVVE_Tx_Wb_Mute_File_Buffer, sizeof(LVVE_Tx_Wb_Mute_File_Buffer));

+	}

+	isFirstTxProcessErr = TRUE;

+	isFirstRxProcessErr = TRUE;

+	g_nxpIsOpen = TRUE;

+

+	return DRV_SUCCESS;

+}

+

+SINT32 Vp_NxpClose(VOID)

+{

+

+	LVVE_ReturnStatus_en        LVVE_Status;                                /* Module status return */

+	LVM_INT32                   i;                                          /* Index variable */

+

+	LVVE_Status = LVVE_Tx_GetMemoryTable(hInstance_Tx,

+	                                     &MemoryTable_Tx,

+	                                     LVM_NULL);

+

+	if (LVVE_Status == LVVE_NULLADDRESS)

+	{

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpClose Parameter error - null pointer error returned by LVVE_Tx_GetMemoryTable\n");

+		return DRV_ERROR;

+	}

+	if (LVVE_Status == LVVE_OUTOFRANGE)

+	{

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpClose Parameter error - out of range error returned by LVVE_Tx_GetMemoryTable\n");

+		return DRV_ERROR;

+	}

+

+	/* For each region */

+	for (i = 0; i < LVM_NR_MEMORY_REGIONS; i++)

+	{

+		if ((MemoryTable_Tx.Region[i].Size != 0) && (MemoryTable_Tx.Region[i].pBaseAddress != LVM_NULL))

+		{

+			zOss_Free(MemoryTable_Tx.Region[i].pBaseAddress);

+			MemoryTable_Tx.Region[i].pBaseAddress = LVM_NULL;

+		}

+	}

+

+	LVVE_Status = LVVE_Rx_GetMemoryTable(hInstance_Rx,

+	                                     &MemoryTable_Rx,

+	                                     LVM_NULL);

+

+	if (LVVE_Status == LVVE_NULLADDRESS)

+	{

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpClose Parameter error - null pointer error returned by LVVE_Rx_GetMemoryTable\n");

+		return DRV_ERROR;

+	}

+

+	if (LVVE_Status == LVVE_OUTOFRANGE)

+	{

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpClose Parameter error - out of range error returned by LVVE_Rx_GetMemoryTable\n");

+		return DRV_ERROR;

+	}

+

+	/* For each region */

+	for (i = 0; i < LVM_NR_MEMORY_REGIONS; i++)

+	{

+		if ((MemoryTable_Rx.Region[i].Size != 0) && (MemoryTable_Rx.Region[i].pBaseAddress != LVM_NULL))

+		{

+			zOss_Free(MemoryTable_Rx.Region[i].pBaseAddress);

+			MemoryTable_Rx.Region[i].pBaseAddress = LVM_NULL;

+		}

+	}

+

+	if (g_audioNvParam.s_nxpPathParam != NULL)

+	{

+		zOss_Free(g_audioNvParam.s_nxpPathParam);

+		g_audioNvParam.s_nxpPathParam = NULL;

+	}

+	if (g_audioNvParam.s_nxpTxNbMuteParam != NULL)

+	{

+		zOss_Free(g_audioNvParam.s_nxpTxNbMuteParam);

+		g_audioNvParam.s_nxpTxNbMuteParam = NULL;

+	}

+

+	hInstance_Tx = LVM_NULL;

+	hInstance_Rx = LVM_NULL;

+	g_nxpIsOpen = FALSE;

+

+	//zOss_Free(pNoiseData);

+

+//   zOss_Printf(SUBMDL_HAL, PRINT_LEVEL_NORMAL,"Vp_NxpClose success\n");

+	return DRV_SUCCESS;

+}

+

+SINT32 Vp_NxpGetParam(T_ZDrvVoice_MODE voiceMode, T_ZDrv_VpPath path)

+{

+	//add by zhanglixia

+	//UINT32  ret;//xiu gai chu

+	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpGetParam ######get NXP parameter start####### voiceMode=%d,path=%d \n", voiceMode, path);

+	UINT32 pathTxOffset, pathRxOffset;

+	/************************************************************************************/

+	/* Set the Voice Engine Parameter values                                            */

+	/************************************************************************************/

+	/*

+	* Read the Rx preset file and send the bytes to the Rx Module

+	*/

+

+	if (g_nxpIsOpen == FALSE)

+	{

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpGetParam, nxp has not been opened yet!\n");

+		return DRV_ERR_NOT_OPENED;

+	}

+	

+	/*klocwork 3  INVARIANT_CONDITION.UNREACH  MAX_VP_PATH¸ÄΪVP_PATH_BLUETOOTH ºÍɾ³ý (path<0)*/

+	if (path > VP_PATH_BLUETOOTH) 

+	{

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpGetParam the path error\n");

+		return DRV_ERROR;

+	}

+

+	if (g_audioNvParam.audio_ctrlFlag.isUseVoiceProc != 1)

+	{

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpGetParam error g_audioNvParam.audio_ctrlFlag.isUseVoiceProc != 1 \n");

+		return DRV_ERROR;

+	}

+

+	pathTxOffset = path * (LVWM_TX_FILE_SIZE + LVWM_RX_FILE_SIZE);

+	pathRxOffset = path * (LVWM_TX_FILE_SIZE + LVWM_RX_FILE_SIZE) + LVWM_TX_FILE_SIZE;

+

+	if (g_audioNvParam.audio_ctrlFlag.isVpParamInNv == 1)

+	{

+		LVVE_Tx_Preset = (LVM_CHAR*)g_audioNvParam.s_nxpPathParam + pathTxOffset ;

+		LVVE_Rx_Preset = (LVM_CHAR*)g_audioNvParam.s_nxpPathParam + pathRxOffset ;

+

+		NumBytesReadTx = LVWM_TX_FILE_SIZE;

+		NumBytesReadRx = LVWM_RX_FILE_SIZE;

+	}

+	else

+	{

+		LVVE_Rx_Preset = LVVE_Rx_Preset_Buffer_Voice_Tool;

+		LVVE_Tx_Preset = LVVE_Tx_Preset_Buffer_Voice_Tool;

+

+		NumBytesReadTx = sizeof(LVVE_Tx_Preset_Buffer_Voice_Tool);

+		NumBytesReadRx =  sizeof(LVVE_Rx_Preset_Buffer_Voice_Tool);

+

+	}

+

+	if (g_voiceVar.muteEn == TRUE)

+	{

+		if (g_audioNvParam.audio_ctrlFlag.isVpParamInNv == 1)

+		{

+			if (g_voiceVar.volteIsWb != 1)

+			{

+				zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpGetParam set nb mute config !\r\n");

+				LVVE_Tx_Preset = g_audioNvParam.s_nxpTxNbMuteParam;//xiu gai chu tong shang

+				NumBytesReadTx = LVWM_TX_FILE_SIZE;

+			}

+			else

+			{

+				zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpGetParam set wb mute config !\r\n");

+				LVVE_Tx_Preset = g_audioNvParam.s_nxpTxWbMuteParam;//xiu gai chu tong shang

+				NumBytesReadTx = LVWM_TX_FILE_SIZE;

+			}

+		}

+		else

+		{

+			if (g_voiceVar.volteIsWb != 1)

+			{

+				zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpGetParam set nb mute config !\r\n");

+				LVVE_Tx_Preset = LVVE_Tx_Mute_File_Buffer;

+				NumBytesReadTx = sizeof(LVVE_Tx_Mute_File_Buffer);

+			}

+			else

+			{

+				zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpGetParam set wb mute config !\r\n");

+				LVVE_Tx_Preset = LVVE_Tx_Wb_Mute_File_Buffer;

+				NumBytesReadTx = sizeof(LVVE_Tx_Wb_Mute_File_Buffer);

+

+			}

+		}

+	}

+

+	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpGetParam NumBytesReadRx=%d NumBytesReadTx= %d\n ", NumBytesReadRx , NumBytesReadTx);

+	/*klocwork 3  INVARIANT_CONDITION.UNREACH   delete if*/

+    /*

+	if ((NumBytesReadRx == LVM_NULL) || (NumBytesReadTx == LVM_NULL))

+	{

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpSetParam NXP read para is null !\r\n");

+		return DRV_ERROR;

+	}*/

+	return DRV_SUCCESS;

+

+}

+

+SINT32 Vp_NxpSetParam(T_ZDrv_VpPath path, T_ZDrv_VpVol volume, BOOL isLoop)

+{

+	LVVE_ReturnStatus_en        LVVE_Status;                                /* Module status return */

+	LVM_UINT16                  VolumeIndex;

+

+	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpSetParam ######set NXP parameter start#######");

+	/************************************************************************************/

+	/* Set the Voice Engine Parameter values                                            */

+	/************************************************************************************/

+	if (g_nxpIsOpen == FALSE)

+	{

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpSetParam, nxp has not been opened yet!\n");

+		return DRV_ERR_NOT_OPENED;

+	}

+

+	/*klocwork 3  INVARIANT_CONDITION.UNREACH  MAX_VP_PATH¸ÄΪVP_PATH_BLUETOOTH ºÍɾ³ý (path<0)*/

+	if (path > VP_PATH_BLUETOOTH) 

+	{

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpSetParam the path error\n");

+		return DRV_ERROR;

+	}

+	VolumeIndex = volume; /* Max Rx volume */

+	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpSetParam VolumeIndex  is %d\n", VolumeIndex);

+

+	if ((hInstance_Rx == NULL) || (LVVE_Rx_Preset == NULL) || (hInstance_Tx == NULL) || (LVVE_Tx_Preset == NULL))

+	{

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpSetParam, the input parameter is NULL\n");

+		return DRV_ERR_INVALID_PARAM;

+	}

+

+	LVVE_Status = LVVE_Rx_SetPreset(hInstance_Rx, LVVE_Rx_Preset, NumBytesReadRx, VolumeIndex);

+	if (LVVE_Status != LVVE_SUCCESS)

+	{

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpSetParam Error returned by LVVE_Rx_SetPreset: Error_code = %d\n", LVVE_Status);

+		return DRV_ERROR;

+	}

+

+	LVVE_Status = LVVE_Tx_SetPreset(hInstance_Tx, LVVE_Tx_Preset, NumBytesReadTx, 0);

+	if (LVVE_Status != LVVE_SUCCESS)

+	{

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpSetParam Error returned by LVVE_Tx_SetPreset: Error_code = %d\n", LVVE_Status);

+		return DRV_ERROR;

+	}

+

+	return DRV_SUCCESS;

+}

+

+SINT32 Vp_NxpSetParamTool(T_ZDrv_VpPath path, T_ZDrv_VpVol volume,

+                          zDrvVp_NxpParamsTool *NxpParamsTool,   BOOL isLoop, BOOL isVolte)

+{

+	LVVE_ReturnStatus_en        LVVE_Status;                                /* Module status return */

+	//LVM_UINT32  ret;//xiu gai chu

+	LVM_UINT16                  VolumeIndex;                                /* Volume index variable */

+	UINT32 nvAddrTxOffset = 0;

+	UINT32 nvAddrRxOffset = 0;

+

+	UINT32 pathTxOffset, pathRxOffset;

+

+	UINT32  ret = DRV_SUCCESS;

+	/************************************************************************************/

+	/* Set the Voice Engine Parameter values                                            */

+	/************************************************************************************/

+	VolumeIndex = volume; /* Max Rx volume */

+	if (g_nxpIsOpen == FALSE)

+	{

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpSetParamTool,nxp has not been opened yet!\n");

+		return DRV_ERR_NOT_OPENED;

+	}

+

+	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "######set NXP parameter start#######");

+	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpSetParamTool path = %d, volume = %d\n", path, volume);

+	if ((NxpParamsTool->PresetLengthTx > LVWM_TX_FILE_SIZE) || (NxpParamsTool->PresetLengthRx > LVWM_RX_FILE_SIZE))

+	{

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "The length is wrong!PresetLengthRx=%d,PresetLengthTx=%d", NxpParamsTool->PresetLengthRx, NxpParamsTool->PresetLengthTx);

+		return DRV_ERROR;

+	}

+	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "PresetLengthRx=%d NumBytesReadRx= %d volume= %d", NxpParamsTool->PresetLengthRx, NumBytesReadRx, volume);

+

+	LVVE_Status = LVVE_Rx_SetPreset(hInstance_Rx, (const LVVE_Rx_Preset_t)NxpParamsTool->pPresetRx, NxpParamsTool->PresetLengthRx, VolumeIndex);

+

+	if (LVVE_Status != LVVE_SUCCESS)

+	{

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Error returned by LVVE_Rx_SetPreset: Error_code = %d\n", LVVE_Status);

+		return DRV_ERROR;

+	}

+	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "PresetLengthTx=%d NumBytesReadTx= %d", NxpParamsTool->PresetLengthTx, NumBytesReadTx);

+	LVVE_Status = LVVE_Tx_SetPreset(hInstance_Tx, (const LVVE_Tx_Preset_t)NxpParamsTool->pPresetTx, NxpParamsTool->PresetLengthTx, 0);

+

+	if (LVVE_Status != LVVE_SUCCESS)

+	{

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Error returned by LVVE_Tx_SetPreset: Error_code = %d\n", LVVE_Status);

+		return DRV_ERROR;

+	}

+

+	if (g_audioNvParam.audio_ctrlFlag.isVpParamInNv == 1)

+	{

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpSetParamTool set voice  param isVpParamInNv \n");

+

+		if (g_voiceVar.muteEn == TRUE)

+		{

+			if (g_voiceVar.volteIsWb == 1)

+			{

+				zOss_Memcpy(g_audioNvParam.s_nxpTxWbMuteParam, NxpParamsTool->pPresetTx, NxpParamsTool->PresetLengthTx);

+			}

+			else

+			{

+				zOss_Memcpy(g_audioNvParam.s_nxpTxNbMuteParam, NxpParamsTool->pPresetTx, NxpParamsTool->PresetLengthTx);

+			}

+		}

+		else

+		{

+			pathTxOffset = path * (LVWM_TX_FILE_SIZE + LVWM_RX_FILE_SIZE);

+			pathRxOffset = path * (LVWM_TX_FILE_SIZE + LVWM_RX_FILE_SIZE) + LVWM_TX_FILE_SIZE;

+

+			zOss_Memcpy(g_audioNvParam.s_nxpPathParam + pathTxOffset, NxpParamsTool->pPresetTx, NxpParamsTool->PresetLengthTx);

+			zOss_Memcpy(g_audioNvParam.s_nxpPathParam + pathRxOffset, NxpParamsTool->pPresetRx, NxpParamsTool->PresetLengthRx);

+		}

+

+		if (g_audioNvParam.audio_ctrlFlag.isUseNvWrite == 1)

+		{

+			if (g_voiceVar.voiceMode == VOICE_GSM_MODE)

+			{

+				if (path == VP_PATH_HANDSET)

+				{

+					nvAddrTxOffset = 0;

+					nvAddrRxOffset = nvAddrTxOffset + LVWM_TX_FILE_SIZE;

+

+

+				}

+				else if (path == VP_PATH_SPEAKER)

+				{

+					nvAddrTxOffset = LVWM_TX_FILE_SIZE + LVWM_RX_FILE_SIZE;

+					nvAddrRxOffset = nvAddrTxOffset + LVWM_TX_FILE_SIZE;

+				}

+				else if (path == VP_PATH_HEADSET)

+				{

+					nvAddrTxOffset = 2 * (LVWM_TX_FILE_SIZE + LVWM_RX_FILE_SIZE);

+					nvAddrRxOffset = nvAddrTxOffset + LVWM_TX_FILE_SIZE;

+

+				}

+				else if (path == VP_PATH_BLUETOOTH)

+				{

+

+					nvAddrTxOffset = 3 * (LVWM_TX_FILE_SIZE + LVWM_RX_FILE_SIZE);

+					nvAddrRxOffset = nvAddrTxOffset + LVWM_TX_FILE_SIZE;

+				}

+

+			}

+			else if ((g_voiceVar.voiceMode == VOICE_WCDMA_MODE) || (g_voiceVar.voiceMode == VOICE_TD_MODE))

+			{

+				if (g_voiceVar.volteIsWb != 1)

+				{

+					if (path == VP_PATH_HANDSET)

+					{

+						nvAddrTxOffset = 4 * (LVWM_TX_FILE_SIZE + LVWM_RX_FILE_SIZE);

+						nvAddrRxOffset = nvAddrTxOffset + LVWM_TX_FILE_SIZE;

+					}

+					else if (path == VP_PATH_SPEAKER)

+					{

+						nvAddrTxOffset = 5 * (LVWM_TX_FILE_SIZE + LVWM_RX_FILE_SIZE);

+						nvAddrRxOffset = nvAddrTxOffset + LVWM_TX_FILE_SIZE;

+					}

+					else if (path == VP_PATH_HEADSET)

+					{

+						nvAddrTxOffset = 6 * (LVWM_TX_FILE_SIZE + LVWM_RX_FILE_SIZE);

+						nvAddrRxOffset = nvAddrTxOffset + LVWM_TX_FILE_SIZE;

+					}

+					else if (path == VP_PATH_BLUETOOTH)

+					{

+						nvAddrTxOffset = 7 * (LVWM_TX_FILE_SIZE + LVWM_RX_FILE_SIZE);

+						nvAddrRxOffset = nvAddrTxOffset + LVWM_TX_FILE_SIZE;

+					}

+				}

+				else

+				{

+					if (path == VP_PATH_HANDSET)

+					{

+						nvAddrTxOffset = 8 * (LVWM_TX_FILE_SIZE + LVWM_RX_FILE_SIZE);

+						nvAddrRxOffset = nvAddrTxOffset + LVWM_TX_FILE_SIZE;

+					}

+					else if (path == VP_PATH_SPEAKER)

+					{

+						nvAddrTxOffset = 9 * (LVWM_TX_FILE_SIZE + LVWM_RX_FILE_SIZE);

+						nvAddrRxOffset = nvAddrTxOffset + LVWM_TX_FILE_SIZE;

+					}

+					else if (path == VP_PATH_HEADSET)

+					{

+						nvAddrTxOffset = 10 * (LVWM_TX_FILE_SIZE + LVWM_RX_FILE_SIZE);

+						nvAddrRxOffset = nvAddrTxOffset + LVWM_TX_FILE_SIZE;

+					}

+					else if (path == VP_PATH_BLUETOOTH)

+					{

+						nvAddrTxOffset = 11 * (LVWM_TX_FILE_SIZE + LVWM_RX_FILE_SIZE);

+						nvAddrRxOffset = nvAddrTxOffset + LVWM_TX_FILE_SIZE;

+					}

+				}

+			}

+			else if (g_voiceVar.voiceMode == VOICE_LTE_MODE)

+			{

+				if (g_voiceVar.volteIsWb != 1)

+				{

+					if (path == VP_PATH_HANDSET)

+					{

+						nvAddrTxOffset = 12 * (LVWM_TX_FILE_SIZE + LVWM_RX_FILE_SIZE);

+						nvAddrRxOffset = nvAddrTxOffset + LVWM_TX_FILE_SIZE;

+					}

+					else if (path == VP_PATH_SPEAKER)

+					{

+						nvAddrTxOffset = 13 * (LVWM_TX_FILE_SIZE + LVWM_RX_FILE_SIZE);

+						nvAddrRxOffset = nvAddrTxOffset + LVWM_TX_FILE_SIZE;

+					}

+					else if (path == VP_PATH_HEADSET)

+					{

+						nvAddrTxOffset = 14 * (LVWM_TX_FILE_SIZE + LVWM_RX_FILE_SIZE);

+						nvAddrRxOffset = nvAddrTxOffset + LVWM_TX_FILE_SIZE;

+					}

+					else if (path == VP_PATH_BLUETOOTH)

+					{

+						nvAddrTxOffset = 15 * (LVWM_TX_FILE_SIZE + LVWM_RX_FILE_SIZE);

+						nvAddrRxOffset = nvAddrTxOffset + LVWM_TX_FILE_SIZE;

+					}

+				}

+				else

+				{

+					if (path == VP_PATH_HANDSET)

+					{

+						nvAddrTxOffset = 16 * (LVWM_TX_FILE_SIZE + LVWM_RX_FILE_SIZE);

+						nvAddrRxOffset = nvAddrTxOffset + LVWM_TX_FILE_SIZE;

+					}

+					else if (path == VP_PATH_SPEAKER)

+					{

+						nvAddrTxOffset = 17 * (LVWM_TX_FILE_SIZE + LVWM_RX_FILE_SIZE);

+						nvAddrRxOffset = nvAddrTxOffset + LVWM_TX_FILE_SIZE;

+					}

+					else if (path == VP_PATH_HEADSET)

+					{

+						nvAddrTxOffset = 18 * (LVWM_TX_FILE_SIZE + LVWM_RX_FILE_SIZE);

+						nvAddrRxOffset = nvAddrTxOffset + LVWM_TX_FILE_SIZE;

+					}

+					else if (path == VP_PATH_BLUETOOTH)

+					{

+						nvAddrTxOffset = 19 * (LVWM_TX_FILE_SIZE + LVWM_RX_FILE_SIZE);

+						nvAddrRxOffset = nvAddrTxOffset + LVWM_TX_FILE_SIZE;

+					}

+				}

+			}

+

+			if (g_voiceVar.muteEn != TRUE)

+			{

+				ret = zOss_NvItemWrite(OS_FLASH_VOICE_RW_NONFAC_BASE_ADDR + nvAddrTxOffset, (UINT8*)NxpParamsTool->pPresetTx, NxpParamsTool->PresetLengthTx);

+				if (ZOSS_SUCCESS == ret)

+				{

+					ret = Nvram_Flush();

+				}

+				zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpSetParamTool set tx config to nv ,path=%d,add=0x%x !\r\n", path, OS_FLASH_VOICE_RW_NONFAC_BASE_ADDR + nvAddrTxOffset);

+			}

+			ret = zOss_NvItemWrite(OS_FLASH_VOICE_RW_NONFAC_BASE_ADDR + nvAddrRxOffset, (UINT8*)NxpParamsTool->pPresetRx, NxpParamsTool->PresetLengthRx);

+			if (ZOSS_SUCCESS == ret)

+			{

+				ret = Nvram_Flush();

+			}

+			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpSetParamTool set rx config to nv ,path=%d,add=0x%x !\r\n", path, OS_FLASH_VOICE_RW_NONFAC_BASE_ADDR + nvAddrTxOffset);

+			if (g_voiceVar.muteEn == TRUE)

+			{

+				if (g_voiceVar.volteIsWb != 1)

+				{

+					nvAddrTxOffset = 20 * (LVWM_TX_FILE_SIZE + LVWM_RX_FILE_SIZE);

+					zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpSetParamTool set nb mute config to nv ,path=%d,add=0x%x !\r\n", path, OS_FLASH_VOICE_RW_NONFAC_BASE_ADDR + nvAddrTxOffset);

+				}

+				else

+				{

+					nvAddrTxOffset = 20 * (LVWM_TX_FILE_SIZE + LVWM_RX_FILE_SIZE) + LVWM_TX_FILE_SIZE;

+					zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpSetParamTool set wb mute config to nv ,path=%d,add=0x%x !\r\n", path, OS_FLASH_VOICE_RW_NONFAC_BASE_ADDR + nvAddrTxOffset);

+				}

+				ret = zOss_NvItemWrite(OS_FLASH_VOICE_RW_NONFAC_BASE_ADDR + nvAddrTxOffset, (UINT8*)NxpParamsTool->pPresetTx, NxpParamsTool->PresetLengthTx);

+				if (ZOSS_SUCCESS == ret)

+				{

+					ret = Nvram_Flush();

+				}

+			}

+

+		}

+

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpSetParamTool get voice mode param \n");

+	}

+	else

+	{

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpSetParamTool set voice  param not isVpParamInNv \n");

+		if (NxpParamsTool->PresetLengthTx <= sizeof(LVVE_Tx_Preset_Buffer_Voice_Tool))

+			zOss_Memcpy(LVVE_Tx_Preset_Buffer_Voice_Tool, NxpParamsTool->pPresetTx, NxpParamsTool->PresetLengthTx);

+		if (NxpParamsTool->PresetLengthRx <= sizeof(LVVE_Rx_Preset_Buffer_Voice_Tool))

+			zOss_Memcpy(LVVE_Rx_Preset_Buffer_Voice_Tool, NxpParamsTool->pPresetRx, NxpParamsTool->PresetLengthRx);

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpsetParamTool set param to default param array !\r\n");

+	}

+

+	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpSetParamTool  PresetLengthRx = %d ,PresetLengthTx= %d!\n", NxpParamsTool->PresetLengthRx, NxpParamsTool->PresetLengthTx);

+

+	return DRV_SUCCESS;

+}

+

+SINT32 Vp_NxpGetParamTool(T_ZDrv_VpPath path, T_ZDrv_VpVol volume,

+                          zDrvVp_NxpParamsTool *NxpParamsTool, BOOL isLoop, BOOL isVolte)

+{

+	UINT32 pathTxOffset, pathRxOffset;

+

+	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "######get NXP parameter start#######");

+	//LVM_UINT32                  NumBytesRead;                               /* Number of bytes in the preset file */

+	/************************************************************************************/

+	/* Set the Voice Engine Parameter values                                            */

+	/************************************************************************************/

+	if (g_nxpIsOpen == FALSE)

+	{

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpGetParamTool,nxp has not been opened yet!\n");

+		return DRV_ERR_NOT_OPENED;

+	}

+

+	if (g_audioNvParam.audio_ctrlFlag.isVpParamInNv == 1)

+	{

+

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpGetParamTool get para isVpParamInNv !\r\n");

+		pathTxOffset = path * (LVWM_TX_FILE_SIZE + LVWM_RX_FILE_SIZE);

+		pathRxOffset = path * (LVWM_TX_FILE_SIZE + LVWM_RX_FILE_SIZE) + LVWM_TX_FILE_SIZE;

+

+		NxpParamsTool->pPresetTx = (char*)g_audioNvParam.s_nxpPathParam + pathTxOffset;

+		NxpParamsTool->pPresetRx = (char*)g_audioNvParam.s_nxpPathParam + pathRxOffset;

+

+		NxpParamsTool->PresetLengthTx =  LVWM_TX_FILE_SIZE;

+		NxpParamsTool->PresetLengthRx =  LVWM_RX_FILE_SIZE;

+	}

+	else

+	{

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpGetParamTool get para not isVpParamInNv !\r\n");

+

+		NxpParamsTool->pPresetTx = LVVE_Tx_Preset_Buffer_Voice_Tool;

+		NxpParamsTool->pPresetRx = LVVE_Rx_Preset_Buffer_Voice_Tool;

+		NxpParamsTool->PresetLengthTx = sizeof(LVVE_Tx_Preset_Buffer_Voice_Tool);

+		NxpParamsTool->PresetLengthRx = sizeof(LVVE_Rx_Preset_Buffer_Voice_Tool);

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpGetParamTool get default param !\r\n");

+	}

+

+	if (g_voiceVar.muteEn == TRUE)

+	{

+		if (g_audioNvParam.audio_ctrlFlag.isVpParamInNv == 1)

+		{

+			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpGetParamTool get mute isVpParamInNv !\r\n");

+			if (g_voiceVar.volteIsWb != 1)

+			{

+				zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpGetParamTool get nb mute config !\r\n");

+				NxpParamsTool->pPresetTx = (char*)g_audioNvParam.s_nxpTxNbMuteParam; //xiu gai chu

+				NxpParamsTool->PresetLengthTx = LVWM_TX_FILE_SIZE;

+			}

+			else

+			{

+				zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpGetParamTool get wb mute config !\r\n");

+				NxpParamsTool->pPresetTx = (char*)g_audioNvParam.s_nxpTxWbMuteParam; //xiu gai chu

+				NxpParamsTool->PresetLengthTx = LVWM_TX_FILE_SIZE;

+			}

+		}

+		else

+		{

+			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpGetParamTool get mute not isVpParamInNv !\r\n");

+			if (g_voiceVar.volteIsWb != 1)

+			{

+				zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpGetParamTool get nb mute config !\r\n");

+				NxpParamsTool->pPresetTx = LVVE_Tx_Mute_File_Buffer;

+				NxpParamsTool->PresetLengthTx = sizeof(LVVE_Tx_Mute_File_Buffer);

+			}

+			else

+			{

+				zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpGetParamTool get wb mute config !\r\n");

+				NxpParamsTool->pPresetTx = LVVE_Tx_Wb_Mute_File_Buffer;

+				NxpParamsTool->PresetLengthTx = sizeof(LVVE_Tx_Wb_Mute_File_Buffer);

+			}

+		}

+	}

+

+	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpGetParamTool PresetLengthRx=%d PresetLengthTx= %d ", NxpParamsTool->PresetLengthRx, NxpParamsTool->PresetLengthTx);

+	/*klocwork 3  INVARIANT_CONDITION.UNREACH  delete if*/

+	/*

+	if ((NxpParamsTool->PresetLengthRx == LVM_NULL) || (NxpParamsTool->PresetLengthTx == LVM_NULL))

+	{

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpGetParamTool NXP read para is null !\r\n");

+		return DRV_ERROR;

+	}*/

+	return DRV_SUCCESS;

+}

+#if 0

+SINT32 Vp_NxpSetGain(SINT32 gain, UINT32 channel, T_ZDrv_VpPath path)

+{

+	//LVVE_ReturnStatus_en        LVVE_Status=LVVE_SUCCESS;//xiu gai chu

+	//LVM_INT16                         tempGain=0;//xiu gai chu

+	if (g_nxpIsOpen == FALSE)

+	{

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpSetGain,nxp has not been opened yet!\n");

+		return DRV_ERR_NOT_OPENED;

+	}

+

+	return DRV_SUCCESS;

+}

+#endif

+SINT32 Vp_NxpRxProcess(UINT8 **pPReadBuffer, UINT8 **pPWriteBuffer, UINT16 sampleNums)

+{

+	LVM_INT16   *pWriteBuffer;

+	LVM_INT16   *pReadBuffer;

+	LVM_INT16   *pReadBuffer_FE;

+	LVVE_ReturnStatus_en        LVVE_Status;                                /* Module status return */

+

+	SINT32 ret = DRV_SUCCESS;

+	if (g_nxpIsOpen == FALSE)

+	{

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpRxProcess,nxp has not been opened yet!\n");

+		return DRV_ERR_NOT_OPENED;

+	}

+

+	/*************************/

+	/* PROCESS THE RX MODULE */

+	/*************************/

+

+	pReadBuffer = (LVM_INT16  *)(*pPReadBuffer);

+	pWriteBuffer = (LVM_INT16  *)(*pPWriteBuffer);

+	pReadBuffer_FE  = (LVM_INT16 *)&InBuffer16_Tx_FE[0];

+

+	LVVE_Status = LVVE_Rx_Process(hInstance_Rx,                         /* Instance handle */

+	                              pReadBuffer,                        /* Input buffer */

+	                              pNoiseData,                         /* Noise data */

+	                              pWriteBuffer,                       /* Output buffer */

+	                              sampleNums);                        /* Number of samples pairs to process */

+

+	if (LVVE_Status == LVVE_NULLADDRESS)

+	{

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpRxProcess Parameter error - null pointer returned from LVVE_Rx_Process\n");

+		ret = DRV_ERROR;

+	}

+	if (LVVE_Status == LVVE_INVALIDNUMSAMPLES)

+	{

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpRxProcess Invalid number of samples, check value or range returned from LVVE_Rx_Process\n");

+		ret = DRV_ERROR;

+	}

+	if (LVVE_Status == LVVE_ALIGNMENTERROR)

+	{

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpRxProcess Alignment error, check input and/or output buffer alignment returned from LVVE_Rx_Process\n");

+		ret = DRV_ERROR;

+	}

+

+	if (LVVE_Status != LVVE_SUCCESS)

+	{

+		if (isFirstRxProcessErr == TRUE)

+		{

+			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpRxProcess Error while processing returned from LVVE_Rx_Process: %d\n", (LVM_INT16)LVVE_Status);

+			isFirstRxProcessErr = FALSE;

+		}

+		ret = DRV_ERROR;

+	}

+

+	zOss_Memcpy((VOID*)pReadBuffer_FE, (VOID*)pWriteBuffer, sampleNums * sizeof(LVM_INT16));

+//zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpRxProcess\n");

+	ret = DRV_SUCCESS;//xiu waring:unused ret

+	return ret;

+}

+

+SINT32 Vp_NxpTxProcess(UINT8 **pPReadBuffer_NE_MAIN, UINT8 **pPReadBuffer_NE_AUX, UINT8 **pPWriteBuffer, UINT16 sampleNums)

+{

+	SINT32 ret = DRV_SUCCESS;

+

+	LVM_INT16   *pWriteBuffer;

+	LVVE_ReturnStatus_en        LVVE_Status;                                /* Module status return */

+

+	LVM_INT16   *pReadBuffer_NE0;

+	LVM_INT16   *pReadBuffer_NE1;

+	LVM_INT16   *pReadBuffer_FE;

+

+	if (g_nxpIsOpen == FALSE)

+	{

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpTxProcess,nxp has not been opened yet!\n");

+		return DRV_ERR_NOT_OPENED;

+	}

+

+	/*************************/

+	/* PROCESS THE TX MODULE */

+	/*************************/

+

+	pReadBuffer_NE0 = (LVM_INT16 *)(*pPReadBuffer_NE_MAIN);

+	if (pPReadBuffer_NE_AUX == NULL)

+	{

+		pReadBuffer_NE1 = NULL;

+	}

+	else

+	{

+		pReadBuffer_NE1 = (LVM_INT16 *)(*pPReadBuffer_NE_AUX);

+	}

+	pWriteBuffer    = (LVM_INT16 *)(*pPWriteBuffer);

+	pReadBuffer_FE  = (LVM_INT16 *)&InBuffer16_Tx_FE[0];

+

+	LVVE_Status = LVVE_Tx_Process(hInstance_Tx,                         /* Instance handle */

+	                              pReadBuffer_NE0,                    /* Input buffer primary Mic */

+	                              pReadBuffer_NE1,                    /* Input buffer secondary Mic */

+	                              pReadBuffer_FE,                     /* Input buffer */

+	                              pNoiseData,                         /* Noise data */

+	                              pWriteBuffer,                       /* Output buffer */

+	                              sampleNums);                        /* Number of samples pairs to process */

+

+	/*

+	 * Check for error and stop if needed

+	 */

+	if (LVVE_Status == LVVE_NULLADDRESS)

+	{

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpTxProcess Parameter error - null pointer returned from LVVE_Tx_Process\n");

+		ret = DRV_ERROR;

+	}

+	if (LVVE_Status == LVVE_INVALIDNUMSAMPLES)

+	{

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpTxProcess Invalid number of samples, check value or range returned from LVVE_Tx_Process\n");

+		ret = DRV_ERROR;

+	}

+	if (LVVE_Status == LVVE_ALIGNMENTERROR)

+	{

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpTxProcess Alignment error, check input and/or output buffer alignment returned from LVVE_Tx_Process\n");

+		ret = DRV_ERROR;

+	}

+	if (LVVE_Status != LVVE_SUCCESS)

+	{

+

+		if (isFirstTxProcessErr == TRUE)

+		{

+			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpTxProcess Error while processing returned from LVVE_Tx_Process: %d\n", (LVM_INT16)LVVE_Status);

+			isFirstTxProcessErr = FALSE;

+		}

+		ret = DRV_ERROR;

+	}

+	ret = DRV_SUCCESS;//xiu warning:unused ret

+	//zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpTxProcess\n");

+	return ret;//xiu

+}

+

diff --git a/cp/ps/driver/src/chipsets/src/audio_base/nxp/hal_nxp.h b/cp/ps/driver/src/chipsets/src/audio_base/nxp/hal_nxp.h
new file mode 100755
index 0000000..9547823
--- /dev/null
+++ b/cp/ps/driver/src/chipsets/src/audio_base/nxp/hal_nxp.h
@@ -0,0 +1,32 @@
+/*******************************************************************************

+ * Copyright (C) 2007, ZTE Corporation.

+ *

+ * File Name:    hal_nxp.h

+ * File Mark:

+ * Description:  Provide the interface of nxp processing 

+ * Others:

+ * Version:       V0.5

+ * Author:        lvwenhua

+ * Date:          2012-06-13

+ * History 1:

+ *     Date:

+ *     Version:

+ *     Author:

+ *     Modification:

+ * History 2:

+  ********************************************************************************/

+#ifndef _HAL_NXP_H

+#define _HAL_NXP_H

+// added by zhanglixia

+//#include "LVVE.h"

+extern SINT32 Vp_NxpInitNvParam(VOID);

+extern SINT32 Vp_NxpOpen(UINT32 fs);

+extern SINT32 Vp_NxpClose(VOID);

+extern SINT32 Vp_NxpGetParam(T_ZDrvVoice_MODE voiceMode, T_ZDrv_VpPath path);

+extern SINT32 Vp_NxpSetParam(T_ZDrv_VpPath path, T_ZDrv_VpVol volume, BOOL isLoop);

+//end added by zhanglixia

+extern SINT32 Vp_NxpSetParamTool(T_ZDrv_VpPath path, T_ZDrv_VpVol volume, zDrvVp_NxpParamsTool *NxpParamsTool,BOOL isLoop,BOOL isVolte);

+extern SINT32 Vp_NxpGetParamTool(T_ZDrv_VpPath path, T_ZDrv_VpVol volume, zDrvVp_NxpParamsTool *NxpParamsTool,BOOL isLoop,BOOL isVolte);

+extern SINT32 Vp_NxpRxProcess(UINT8 **pPReadBuffer, UINT8 **pPWriteBuffer,UINT16 sampleNums);

+extern SINT32 Vp_NxpTxProcess(UINT8 **pPReadBuffer_NE_MAIN, UINT8 **pPReadBuffer_NE_AUX, UINT8 **pPWriteBuffer,UINT16 sampleNums);

+#endif

diff --git a/cp/ps/driver/src/chipsets/src/audio_base/nxp/makefile b/cp/ps/driver/src/chipsets/src/audio_base/nxp/makefile
new file mode 100755
index 0000000..b4f481e
--- /dev/null
+++ b/cp/ps/driver/src/chipsets/src/audio_base/nxp/makefile
@@ -0,0 +1,53 @@
+#***********************************************************************

+# °æÈ¨ËùÓÐ (C)2001,ÖÐÐËͨѶ¹É·ÝÓÐÏÞ¹«Ë¾¡£

+# 

+# ÎļþÃû³Æ£º makefile

+# Îļþ±êʶ£º ±àÒënxpÄ£¿é

+# ÄÚÈÝÕªÒª£º 

+#

+# ÐÞ¸ÄÈÕÆÚ     °æ±¾ºÅ     Ð޸ıê¼Ç     ÐÞ¸ÄÈË	     ÐÞ¸ÄÄÚÈÝ      

+# ---------------------------------------------------------------------

+# 2015/08/17	V1.0	               zhuoyongsheng       create

+#***********************************************************************/

+include $(PRJ_PATH)/config/project.mk

+include $(DRV_PATH)/ws/drv_cfg.mk

+

+

+#===============================================

+# ·¾¶ÉèÖÃ

+#===============================================

+_MDL_NAME = nxp

+

+_MDL_SRC_PATH = $(CHIP_SRC_PATH)/audio_base/$(_MDL_NAME)

+_MDL_INC_PATH = $(CHIP_INC_PATH)

+_MDL_OBJ_PATH = $(CHIP_OBJ_PATH)/audio_base/$(_MDL_NAME)

+

+

+

+

+#============================================

+#¸÷Ä£¿éÒÀÀµ¹«¹²Í·ÎļþÉèÖÃ

+#============================================

+ INCLUDE += $(_EXTERNAL_INC_PATH)  \

+           -I$(CHIP_SRC_PATH)/audio_base/include \

+           -I$(_MDL_INC_PATH) 

+#============================================

+#×ÓϵͳÀ©Õ¹¶¨Òå

+#============================================

+DEFINE += 

+

+#============================================

+#Ä£¿éÎļþÐÅÏ¢ 

+#============================================  

+_C_SOURCE = $(wildcard $(_MDL_SRC_PATH)/*.c)     

+

+_s_SOURCE =

+ 	 

+_S_SOURCE =

+

+#============================================

+# ±àÒë¹æÔò

+#============================================

+

+include $(FRAME_PATH)/rules/mdl_rules.mk

+

diff --git a/cp/ps/driver/src/chipsets/src/audio_base/nxp/testnxp_rxin2rxout.c b/cp/ps/driver/src/chipsets/src/audio_base/nxp/testnxp_rxin2rxout.c
new file mode 100755
index 0000000..6a10dbc
--- /dev/null
+++ b/cp/ps/driver/src/chipsets/src/audio_base/nxp/testnxp_rxin2rxout.c
@@ -0,0 +1,211 @@
+#include "drvs_general.h"

+#include "drvs_voiceprocess.h"

+#include "drvs_ramlog.h"

+#include "hal_nxp.h"

+

+#include <linux/module.h>
+#include <linux/kernel.h>
+#include <linux/init.h>
+#include <linux/fs.h>
+#include <linux/miscdevice.h>
+#include <asm/uaccess.h>
+#include <linux/slab.h>
+#include <linux/init.h>

+

+typedef struct testnxp{

+	int fs;

+	int voicemode;

+	int vp_path; 

+	int vp_vol;

+	int framecount;

+}T_TestNxp;

+

+#define TESTNXP_IOCTL_RXIN_TO_RXOUT_START	_IOW('N', 1, T_TestNxp)

+#define TESTNXP_IOCTL_RXIN_TO_RXOUT_STOP	_IO('N', 2)

+

+#define MAX_NXP_BUF	640

+

+

+static const char testnxp_shortname[] = "testnxp_dev";

+static unsigned char *rxin_buf = NULL;

+static unsigned char *rxout_buf = NULL;

+static int framecount;

+static int testnxp_open(struct inode * ip,struct file * fp);

+static int testnxp_release(struct inode *ip, struct file *fp);

+static ssize_t testnxp_read(struct file *fp, char __user *buf,size_t count, loff_t *pos);

+static ssize_t testnxp_write(struct file *fp, const char __user *buf,size_t count, loff_t *pos);

+static long testnxp_ioctl(struct file *fp, unsigned int cmd, unsigned long arg);

+
+
+
+
+/* file operations for testnxp device /dev/testnxp_device */

+static const struct file_operations testnxp_fops = {

+	.owner = THIS_MODULE,
+	.read = testnxp_read,

+	.write = testnxp_write,

+	.unlocked_ioctl = testnxp_ioctl,

+	.open = testnxp_open,

+	.release = testnxp_release,

+};
+
+static struct miscdevice testnxp_device = {

+	.minor = MISC_DYNAMIC_MINOR,
+	.name = testnxp_shortname,

+	.fops = &testnxp_fops,

+};
+
+
+
+static ssize_t testnxp_read(struct file *fp, char __user *buf,size_t count, loff_t *pos)

+{
+

+	if(buf == NULL)

+	{
+		pr_info("testnxp_read buffer null \n");

+		return -EINVAL;
+	}
+
+	if ((count>0) &&(count<=MAX_NXP_BUF)) {

+		if (copy_to_user(buf, rxout_buf, count)) {

+			pr_info("testnxp_read copy_to_user error \n");

+			return -EFAULT;
+		}

+	}else{
+		pr_info("testnxp_read count error \n");

+		return -EINVAL;
+	}
+	return count;

+}
+
+static ssize_t testnxp_write(struct file *fp, const char __user *buf,size_t count, loff_t *pos)

+{
+	int ret;
+
+	if(buf == NULL)

+	{
+		pr_info("testnxp_write buffer null \n");

+		return -EINVAL;
+	}
+
+	if ((count > 0) && (count <= MAX_NXP_BUF)) {

+		if (copy_from_user(rxin_buf, buf, count)) {

+			pr_info("testnxp_write copy_from_user error \n");

+			return -EFAULT;
+		}

+		

+		Vp_NxpRxProcess(&rxin_buf, &rxout_buf, count/2);

+		

+	}else{
+		pr_info("testnxp_write count error \n");

+		return -EINVAL;
+	}
+
+	return count;
+}
+
+
+static long testnxp_ioctl(struct file *fp, unsigned int cmd, unsigned long arg)

+{
+    T_TestNxp *param = (T_TestNxp *)arg;

+	T_TestNxp testnxp_param = {0};

+	int ret = 0;

+	printk("testnxp_ioctl\n");

+

+	switch(cmd)

+	{
+		case TESTNXP_IOCTL_RXIN_TO_RXOUT_START:

+		{

+			if (copy_from_user((void*)&testnxp_param, (void*)param, sizeof(struct testnxp)))

+			{

+				return DRV_ERR_INVALID_PARAM;

+			}

+			framecount = testnxp_param.framecount;

+			ret = Vp_NxpOpen(testnxp_param.fs);	

+			if (ret == 0) 

+			{

+				ret = Vp_NxpGetParam(testnxp_param.voicemode, testnxp_param.vp_path);

+				if (ret == 0)

+				{

+					ret = Vp_NxpSetParam(testnxp_param.vp_path, testnxp_param.vp_vol, FALSE);

+					if (ret != 0 )

+						Vp_NxpClose();

+				}

+				else

+				{

+					Vp_NxpClose();

+				}

+			}

+			break;

+		}

+		case TESTNXP_IOCTL_RXIN_TO_RXOUT_STOP:

+		{

+			Vp_NxpClose();

+		}

+		default:
+		{
+			break;
+		}
+	}
+	return ret;

+}
+
+
+
+static int testnxp_open(struct inode *ip, struct file *fp)

+{
+	printk("testnxp_open\n");

+

+	if(rxin_buf == NULL)

+	{

+		rxin_buf = kzalloc(2 * MAX_NXP_BUF, GFP_KERNEL);

+		if (!rxin_buf)

+		{

+		    pr_info("testnxp_init malloc error\n");

+			return -ENOMEM;

+		}

+		

+		rxout_buf = rxin_buf + MAX_NXP_BUF;

+	}

+
+	return 0;
+}
+
+static int testnxp_release(struct inode *ip, struct file *fp)

+{
+	printk("testnxp_release\n");

+

+	if(rxin_buf)

+	{
+		kfree(rxin_buf);

+		rxin_buf = NULL;

+	}
+

+	return 0;
+}
+
+
+// int __init testnxp_init(void)

+int  testnxp_init(void)

+{
+	int ret;
+	printk("testnxp driver initialize\n");

+

+	ret = misc_register(&testnxp_device);

+	if (ret){
+	    printk(KERN_ERR "testnxp driver failed to initialize\n");

+		return -EFAULT;
+	}
+

+    return 0;
+}
+
+
+ void __exit testnxp_exit(void)

+{
+	misc_deregister(&testnxp_device);

+}
+
+//late_initcall(testnxp_init);

+//module_exit(testnxp_exit);

+

diff --git a/cp/ps/driver/src/chipsets/src/audio_base/nxp/tos/LVC_Types.h b/cp/ps/driver/src/chipsets/src/audio_base/nxp/tos/LVC_Types.h
new file mode 100755
index 0000000..14efe8c
--- /dev/null
+++ b/cp/ps/driver/src/chipsets/src/audio_base/nxp/tos/LVC_Types.h
@@ -0,0 +1,383 @@
+/************************************************************************/

+/*  Copyright (c) 2004-2014 NXP Software. All rights are reserved.      */

+/*  Reproduction in whole or in part is prohibited without the prior    */

+/*  written consent of the copyright owner.                             */

+/*                                                                      */

+/*  This software and any compilation or derivative thereof is and      */

+/*  shall remain the proprietary information of NXP Software and is     */

+/*  highly confidential in nature. Any and all use hereof is restricted */

+/*  and is subject to the terms and conditions set forth in the         */

+/*  software license agreement concluded with NXP Software.             */

+/*                                                                      */

+/*  Under no circumstances is this software or any derivative thereof   */

+/*  to be combined with any Open Source Software in any way or          */

+/*  licensed under any Open License Terms without the express prior     */

+/*  written  permission of NXP Software.                                */

+/*                                                                      */

+/*  For the purpose of this clause, the term Open Source Software means */

+/*  any software that is licensed under Open License Terms. Open        */

+/*  License Terms means terms in any license that require as a          */

+/*  condition of use, modification and/or distribution of a work        */

+/*                                                                      */

+/*           1. the making available of source code or other materials  */

+/*              preferred for modification, or                          */

+/*                                                                      */

+/*           2. the granting of permission for creating derivative      */

+/*              works, or                                               */

+/*                                                                      */

+/*           3. the reproduction of certain notices or license terms    */

+/*              in derivative works or accompanying documentation, or   */

+/*                                                                      */

+/*           4. the granting of a royalty-free license to any party     */

+/*              under Intellectual Property Rights                      */

+/*                                                                      */

+/*  regarding the work and/or any work that contains, is combined with, */

+/*  requires or otherwise is based on the work.                         */

+/*                                                                      */

+/*  This software is provided for ease of recompilation only.           */

+/*  Modification and reverse engineering of this software are strictly  */

+/*  prohibited.                                                         */

+/*                                                                      */

+/************************************************************************/

+

+/****************************************************************************************

+

+     $Author: beq07720 $

+     $Revision: 55357 $

+     $Date: 2014-03-05 22:16:13 +0530 (Wed, 05 Mar 2014) $

+

+*****************************************************************************************/

+

+/** @file

+ *  Header file defining the standard LifeVibes types for use in the application layer

+ *  interface of all LifeVibes modules

+ */

+

+#ifndef LVM_TYPES_H

+#define LVM_TYPES_H

+

+#ifdef __cplusplus

+extern "C" {

+#endif /* __cplusplus */

+

+/****************************************************************************************/

+/*                                                                                      */

+/*  definitions                                                                         */

+/*                                                                                      */

+/****************************************************************************************/

+

+#define LVM_NULL                0                   ///< NULL pointer

+

+#define LVM_TRUE                1                   ///< Boolean True

+#define LVM_FALSE               0                   ///< Boolean False

+

+#define LVM_MAXINT_8            127                 ///< Maximum positive integer size

+#define LVM_MAXINT_16           32767               ///< Maximum signed int 16 bits number

+#define LVM_MAXINT_32           2147483647          ///< Maximum signed int 32 bits number

+#define LVM_MAXUINT_32          4294967295U         ///< Maximum un-signed int 32 bits number

+

+#if (  defined(VARIANT_24BIT) )

+#define LVM_MAXENUM             8388607L            ///< Maximum value for enumerator

+#else

+#define LVM_MAXENUM             2147483647          ///< Maximum value for enumerator

+#endif

+

+#define LVM_MODULEID_MASK       0xFF00              ///< Mask to extract the calling module ID from callbackId

+#define LVM_EVENTID_MASK        0x00FF              ///< Mask to extract the callback event from callbackId

+

+/* Memory table*/

+#define LVM_MEMREGION_PERSISTENT_SLOW_DATA      0   ///< Offset to the instance memory region

+#define LVM_MEMREGION_PERSISTENT_FAST_DATA      1   ///< Offset to the persistent data memory region

+#define LVM_MEMREGION_PERSISTENT_FAST_COEF      2   ///< Offset to the persistent coefficient memory region

+#define LVM_MEMREGION_TEMPORARY_FAST            3   ///< Offset to temporary memory region

+

+#define LVM_NR_MEMORY_REGIONS                   4   ///< Number of memory regions

+

+#define LVM_MODE_LVWIREFORMAT_LENGTH (4) ///< Number of bytes to encode @ref LVM_Mode_en in LVWireFormat

+#define LVM_CONFIG_LVWIREFORMAT_LENGTH (4) ///< Number of bytes to encode @ref LVM_Config_en in LVWireFormat

+#define LVM_FS_LVWIREFORMAT_LENGTH (4) ///< Number of bytes to encode @ref LVM_Fs_en sample Rate in LVWireFormat

+

+#define LVM_CHAR_LVWIREFORMAT_LENGTH   (1)

+#define LVM_INT8_LVWIREFORMAT_LENGTH   (1)

+#define LVM_UINT8_LVWIREFORMAT_LENGTH   (1)

+

+#define LVM_INT16_LVWIREFORMAT_LENGTH   (2)

+#define LVM_UINT16_LVWIREFORMAT_LENGTH   (2)

+

+#define LVM_INT32_LVWIREFORMAT_LENGTH   (4)

+#define LVM_UINT32_LVWIREFORMAT_LENGTH   (4)

+

+

+/****************************************************************************************/

+/*                                                                                      */

+/*  Basic types                                                                         */

+/*                                                                                      */

+/****************************************************************************************/

+

+#if defined(CORE_TIC64)

+typedef     char                LVM_CHAR;           ///< ASCII character

+

+typedef     char                LVM_INT8;           ///< Signed 8-bit word

+typedef     unsigned char       LVM_UINT8;          ///< Unsigned 8-bit word

+

+typedef     short               LVM_INT16;          ///< Signed 16-bit word

+typedef     unsigned short      LVM_UINT16;         ///< Unsigned 16-bit word

+

+typedef     int                 LVM_INT32;          ///< Signed 32-bit word

+typedef     unsigned int        LVM_UINT32;         ///< Unsigned 32-bit word

+#else

+

+#if (  defined(VARIANT_FRAC16) || defined (VARIANT_REFREAL16)   )

+typedef     long                DATATYPE;           ///< long data type

+

+typedef     char                LVM_CHAR;           ///< ASCII character

+

+typedef     char                LVM_INT8;           ///< Signed 8-bit word

+typedef     unsigned char       LVM_UINT8;          ///< Unsigned 8-bit word

+

+typedef     long                LVM_INT16;          ///< Signed 16-bit word

+typedef     long                LVM_UINT16;         ///< Unsigned 16-bit word

+

+typedef     long                LVM_INT32;          ///< Signed 32-bit word

+typedef     long                LVM_UINT32;         ///< Unsigned 32-bit word

+

+#else

+typedef     char                LVM_CHAR;           ///< ASCII character

+

+typedef     char                LVM_INT8;           ///< Signed 8-bit word

+typedef     unsigned char       LVM_UINT8;          ///< Unsigned 8-bit word

+

+typedef     short               LVM_INT16;          ///< Signed 16-bit word

+typedef     unsigned short      LVM_UINT16;         ///< Unsigned 16-bit word

+

+typedef     long                 LVM_INT32;          ///< Signed 32-bit word

+typedef     unsigned long        LVM_UINT32;         ///< Unsigned 32-bit word

+#if (  defined(VARIANT_24BIT) )

+

+#define LVM_MAXINT_24           8388607L      ///< 24 bit max int

+#define LVM_MININT_24          -8388608L    ///< 24bit min int

+

+#define LVM_MAXINT_48           140737488355327LL  ///< 48bit max int

+#define LVM_MININT_48           -140737488355328LL   ///< 48bit min int

+

+#endif // VARIANT_24BIT

+

+#endif // VARIANT_FRAC16

+

+#endif // CORE_TIC64

+

+/****************************************************************************************/

+/*                                                                                      */

+/*  Standard Enumerated types                                                           */

+/*                                                                                      */

+/****************************************************************************************/

+

+/**

+The @ref LVM_Mode_en enumerated type is used to set the operating mode of a particular feature inside the LifeVibes modules.

+The feature can be separately set to enable the feature processing (i.e., ON) or to disable all feature processing

+modules (i.e., OFF).

+*/

+typedef enum

+{

+    LVM_MODE_OFF    = 0,     ///< LVM module disabled

+    LVM_MODE_ON     = 1,     ///< LVM module enabled

+    LVM_MODE_DUMMY  = LVM_MAXENUM

+} LVM_Mode_en;

+

+/**

+Sets stream Format

+*/

+typedef enum

+{

+    LVM_STEREO          = 0,           ///<Stereo stream

+    LVM_MONOINSTEREO    = 1,           ///<Mono in stereo stream

+    LVM_MONO            = 2,           ///<Mono stream

+    LVM_5DOT1           = 3,           ///<stream 5.1 formatted

+    LVM_7DOT1           = 4,           ///<stream 7.1 formatted

+    LVM_SOURCE_DUMMY    = LVM_MAXENUM

+} LVM_Format_en;

+

+/**

+Sets Speaker type

+*/

+typedef enum

+{

+    LVM_SPEAKER_MONO    = 0,        ///< Mono type speaker

+    LVM_SPEAKER_STEREO  = 1,        ///< Stereo type speaker

+    LVM_SPEAKER_DUMMY   = LVM_MAXENUM

+} LVM_SpeakerType_en;

+

+/**

+Sets Word length

+*/

+typedef enum

+{

+    LVM_16_BIT      = 0,           ///< 16 bit word length

+    LVM_32_BIT      = 1,           ///< 32 bit word length

+    LVM_WORDLENGTH_DUMMY = LVM_MAXENUM

+} LVM_WordLength_en;

+

+/**

+The LVM product supports the sample rates specified in @ref LVM_Fs_en. The input and output sample rates are always the same.

+*/

+typedef enum

+{

+    LVM_FS_8000  = 0,              ///< 8k sampling rate

+    LVM_FS_11025 = 1,              ///< 11.025k sampling rate

+    LVM_FS_12000 = 2,              ///< 12k sampling rate

+    LVM_FS_16000 = 3,              ///< 16k sampling rate

+    LVM_FS_22050 = 4,              ///< 22.050k sampling rate

+    LVM_FS_24000 = 5,              ///< 24k sampling rate

+    LVM_FS_32000 = 6,              ///< 32k sampling rate

+    LVM_FS_44100 = 7,              ///< 44.1k sampling rate

+    LVM_FS_48000 = 8,              ///< 48k sampling rate

+    LVM_FS_COUNT = 9,              ///< Max sampling rate count

+    LVM_FS_INVALID = LVM_MAXENUM-1,

+    LVM_FS_DUMMY = LVM_MAXENUM

+} LVM_Fs_en;

+

+/**

+The enumerated type is used to select the reset mode for the module.

+@ref LVM_RESET_SOFT is used to select a soft reset (or partial reset) and @ref LVM_RESET_HARD is

+used to select a hard reset (full re-initialization).

+*/

+typedef enum

+{

+/**

+<table border>

+   <tr>

+       <td><b>Name</b></td>

+       <td><b>MODE</b></td>

+   </tr>

+   <tr>

+       <td>ResetType</td>

+       <td>@ref LVM_RESET_SOFT</td>

+   </tr>

+   <tr>

+       <td></td>

+       <td>@ref LVM_RESET_HARD</td>

+   </tr>

+</table>

+*/

+    LVM_RESET_SOFT    = 0,         ///< Reset type for LVM where a partial reset of the module should be performed

+    LVM_RESET_HARD    = 1,         ///< Reset type for LVM where a full reset of the module should be performed

+    LVM_RESET_DUMMY   = LVM_MAXENUM

+} LVM_ResetType_en;

+

+/**

+The @ref LVM_MemoryTypes_en enumerated type identifies the memory region types so that they can be correctly placed in memory

+by the calling application.

+The module initially has no permanent memory storage and makes no use of persistent memory allocation internally.

+The calling application must allocate memory for the module to use.

+

+Four memory regions are required:

+@li @ref LVM_MEMREGION_PERSISTENT_SLOW_DATA : this type of memory is used to store all the control data that needs to be saved between two consecutive calls to the process function.

+@li @ref LVM_MEMREGION_PERSISTENT_FAST_DATA : this type of memory is used to store data such as filter history

+@li @ref LVM_MEMREGION_PERSISTENT_FAST_COEF : this type of memory is used to store filter coefficients.

+@li @ref LVM_MEMREGION_TEMPORARY_FAST (scratch): this type of memory is used to store temporary data. This memory can be reused by the application in between calls to the process function.

+

+This collection of memory regions forms the module instance.

+

+Typically the memory is allocated by the application dynamically; however, it can be allocated statically if required.

+The sizes of the memory regions can be found by running the GetMemoryTable functions on a simulator and noting

+the returned values. Alternatively contact NXP who can provide the figures.

+It is possible that these memory sizes will change between release versions of the library and hence the dynamic memory allocation method is preferred where possible.

+On some target platforms the placement of memory regions is critical for achieving optimal performance of the module.

+*/

+typedef enum

+{

+    LVM_PERSISTENT_SLOW_DATA    = LVM_MEMREGION_PERSISTENT_SLOW_DATA,       ///< Persistent slow memory region

+    LVM_PERSISTENT_FAST_DATA    = LVM_MEMREGION_PERSISTENT_FAST_DATA,       ///< Persistent fast memory region

+    LVM_PERSISTENT_FAST_COEF    = LVM_MEMREGION_PERSISTENT_FAST_COEF,       ///< Persisten fast memory for coefficient storage

+    LVM_TEMPORARY_FAST          = LVM_MEMREGION_TEMPORARY_FAST,             ///< Temporary fast memory region

+    LVM_MEMORYTYPE_DUMMY        = LVM_MAXENUM

+} LVM_MemoryTypes_en;

+

+/**

+Sets mod of Configuration

+*/

+typedef enum

+{

+    LVM_CONFIG_HANDSET            = 0,                  ///< Handset configuration

+    LVM_CONFIG_SPEAKERPHONE       = 1,                  ///< Speaker mod configuration

+    LVM_CONFIG_EARPIECE           = 2,                  ///< Earpiece configuration

+    LVM_CONFIG_DUMMY              = LVM_MAXENUM

+} LVM_Config_en;

+

+/**

+The @ref LVM_MemoryRegion_st type defines a memory region by specifying its size in bytes, its region type and its base pointer.

+@see LVM_MemoryTypes_en

+*/

+#if (  defined(VARIANT_24BIT) )

+typedef struct

+{

+    LVM_INT24                    Size;                   ///< The size of the memory region in bytes

+    LVM_MemoryTypes_en           Type;                   ///< Type of memory region

+    void                        *pBaseAddress;           ///< Pointer to the memory region base address

+} LVM_MemoryRegion_st;

+#else

+typedef struct

+{

+    LVM_UINT32                  Size;                   ///< The size of the memory region in bytes

+    LVM_MemoryTypes_en          Type;                   ///< Type of memory region

+    void                        *pBaseAddress;          ///< Pointer to the memory region base address

+} LVM_MemoryRegion_st;

+#endif

+

+/**

+The LVM_MemoryTable_st type defines the memory requirements of the module as an array of region definitions.

+The number of required memory regions is given by the constant @ref LVM_NR_MEMORY_REGIONS

+@see LVM_MemoryRegion_st

+*/

+typedef struct

+{

+    LVM_MemoryRegion_st         Region[LVM_NR_MEMORY_REGIONS];  ///< One definition of all memory regions

+} LVM_MemoryTable_st;

+

+/**

+Beats Per Minute Structure

+*/

+typedef struct

+{

+    LVM_INT16                   ShortTermMinimum;       ///< Beats per minute in Q9.6 format

+    LVM_INT16                   ShortTermAverage;       ///< Beats per minute in Q9.6 format

+    LVM_INT16                   ShortTermMaximum;       ///< Beats per minute in Q9.6 format

+

+    LVM_INT16                   Confidence;             ///< Beat confidence level: 0 = no confidence, 32767 = maximum confidence

+    LVM_INT16                   Strength;               ///< Beat strength level:   0 = no beat, 32767 = maximum strength beat

+    LVM_INT16                   LongTermMinimum;        ///< Beats per minute in Q9.6 format

+    LVM_INT16                   LongTermAverage;        ///< Beats per minute in Q9.6 format

+    LVM_INT16                   LongTermMaximum;        ///< Beats per minute in Q9.6 format

+

+} LVM_BPMModuleStats_st;

+

+

+/****************************************************************************************/

+/*                                                                                      */

+/*  Standard Function Prototypes                                                        */

+/*                                                                                      */

+/****************************************************************************************/

+/**

+@brief General purpose callback function

+

+@param pCallbackData           Pointer to the callback data structure

+@param pGeneralPurpose         General purpose pointer (e.g. to a data structure needed in the callback)

+@param PresetLength            General purpose variable (e.g. to be used as callback ID)

+@return \ref LVM_INT32

+*/

+typedef LVM_INT32 (*LVM_Callback)(void          *pCallbackData,

+                                  void          *pGeneralPurpose,

+                                  LVM_INT16     GeneralPurpose );

+

+

+/****************************************************************************************/

+/*                                                                                      */

+/*  End of file                                                                         */

+/*                                                                                      */

+/****************************************************************************************/

+

+#ifdef __cplusplus

+}

+#endif /* __cplusplus */

+

+#endif  /* LVM_TYPES_H */

diff --git a/cp/ps/driver/src/chipsets/src/audio_base/nxp/tos/LVVE.h b/cp/ps/driver/src/chipsets/src/audio_base/nxp/tos/LVVE.h
new file mode 100755
index 0000000..9c48d8e
--- /dev/null
+++ b/cp/ps/driver/src/chipsets/src/audio_base/nxp/tos/LVVE.h
@@ -0,0 +1,1371 @@
+/****************************************************************************************/

+/*  Copyright (c) 2004-2014 NXP Software. All rights are reserved.                      */

+/*  Reproduction in whole or in part is prohibited without the prior                    */

+/*  written consent of the copyright owner.                                             */

+/*                                                                                      */

+/*  This software and any compilation or derivative thereof is and                      */

+/*  shall remain the proprietary information of NXP Software and is                     */

+/*  highly confidential in nature. Any and all use hereof is restricted                 */

+/*  and is subject to the terms and conditions set forth in the                         */

+/*  software license agreement concluded with NXP Software.                             */

+/*                                                                                      */

+/*  Under no circumstances is this software or any derivative thereof                   */

+/*  to be combined with any Open Source Software in any way or                          */

+/*  licensed under any Open License Terms without the express prior                     */

+/*  written  permission of NXP Software.                                                */

+/*                                                                                      */

+/*  For the purpose of this clause, the term Open Source Software means                 */

+/*  any software that is licensed under Open License Terms. Open                        */

+/*  License Terms means terms in any license that require as a                          */

+/*  condition of use, modification and/or distribution of a work                        */

+/*                                                                                      */

+/*           1. the making available of source code or other materials                  */

+/*              preferred for modification, or                                          */

+/*                                                                                      */

+/*           2. the granting of permission for creating derivative                      */

+/*              works, or                                                               */

+/*                                                                                      */

+/*           3. the reproduction of certain notices or license terms                    */

+/*              in derivative works or accompanying documentation, or                   */

+/*                                                                                      */

+/*           4. the granting of a royalty-free license to any party                     */

+/*              under Intellectual Property Rights                                      */

+/*                                                                                      */

+/*  regarding the work and/or any work that contains, is combined with,                 */

+/*  requires or otherwise is based on the work.                                         */

+/*                                                                                      */

+/*  This software is provided for ease of recompilation only.                           */

+/*  Modification and reverse engineering of this software are strictly                  */

+/*  prohibited.                                                                         */

+/*                                                                                      */

+/****************************************************************************************/

+

+/****************************************************************************************/

+/*                                                                                      */

+/*     $Author: nxp65285 $*/

+/*     $Revision: 56908 $*/

+/*     $Date: 2014-04-10 17:30:02 +0530 (Thu, 10 Apr 2014) $*/

+/*                                                                                      */

+/****************************************************************************************/

+

+/**

+@file

+Header file for the application layer interface of the LVVE module.

+This files includes all definitions, types, structures and function prototypes

+required by the calling layer. All other types, structures and functions are

+private.

+*/

+

+#ifndef __LVVE_H__

+#define __LVVE_H__

+

+#ifdef __cplusplus

+extern "C" {

+#endif /* __cplusplus */

+

+/****************************************************************************************/

+/*                                                                                      */

+/*  Includes                                                                            */

+/*                                                                                      */

+/****************************************************************************************/

+

+#include "LVVE_VID.h"

+

+/****************************************************************************************/

+/*                                                                                      */

+/*  Definitions                                                                         */

+/*                                                                                      */

+/****************************************************************************************/

+/* Below include logic is designed to reduce checks to 1 or 2 conditions due to limitations in the backend stripping code */

+

+

+

+

+

+#define LVVE_MAX_PCM_FRAME_SIZE         160                    ///< LVVE maximum processing frame size

+

+

+#define LVVE_NOISESAMPLES_PER_FRAME     2                           ///< Number of samples required for noise estimation per frame

+/**

+@def LVVE_RX_PRESET_LENGTH

+Length of the LVVE_Rx preset buffer (number of bytes).

+@see LVVE_Rx_SetPreset

+@ingroup LVVE_Rx

+*/

+#define LVVE_RX_PRESET_LENGTH (LVVIDHEADER_CONTROLPARAMS_LVWIREFORMAT_LENGTH + LVVE_RX_CONTROLPARAMS_LVWIREFORMAT_LENGTH) ///< RX preset Buffer length

+

+/**

+@def LVVE_TX_PRESET_LENGTH

+Length of the LVVE_Tx preset buffer (number of bytes).

+@see LVVE_Tx_SetPreset

+@ingroup LVVE_Tx

+*/

+#define LVVE_TX_PRESET_LENGTH (LVVIDHEADER_CONTROLPARAMS_LVWIREFORMAT_LENGTH + LVVE_TX_CONTROLPARAMS_LVWIREFORMAT_LENGTH) ///< TX preset buffer length

+

+

+/* Deprecated Definitions */

+

+#define LVVE_MAX_BULK_DELAY             LVVE_TX_BULKDELAY_MAX

+#define LVVE_RX_MODE_DUMMY LVVE_RX_MODE_EN_DUMMY

+#define LVVE_TX_MODE_DUMMY LVVE_TX_MODE_EN_DUMMY

+

+#define LVVE_MAX_VOL_GAIN_DB            LVVE_TX_VOL_GAIN_MAX

+#define LVVE_MIN_VOL_GAIN_DB            LVVE_TX_VOL_GAIN_MIN

+

+#define LVVE_MAX_HPF_CORNER_HZ          LVVE_TX_MIC_HPF_CORNERFREQ_MAX

+#define LVVE_MIN_HPF_CORNER_HZ          LVVE_TX_MIC_HPF_CORNERFREQ_MIN

+

+#define LVVE_MAX_HPF_RX_CORNER_HZ       LVVE_RX_HPF_CORNERFREQ_MAX

+

+#define LVVE_MAX_NLPP_LIMIT_DB          LVNLPP_NLPP_LIMIT_MAX

+#define LVVE_MIN_NLPP_LIMIT_DB          LVNLPP_NLPP_LIMIT_MIN

+

+

+#define LVVE_MAX_DRC_LEVEL              LVDRC_COMPRESSORCURVEINPUTLEVELS_MAX

+#define LVVE_MIN_DRC_LEVEL              LVDRC_COMPRESSORCURVEINPUTLEVELS_MIN

+#define LVVE_MIN_DRC_NUMKNEES           LVDRC_NUMKNEES_MIN

+#define LVVE_MAX_DRC_NUMKNEES           LVDRC_NUMKNEES_MAX

+#define LVVE_MIN_DRC_ATTACKTIME         LVDRC_ATTACKTIME_MIN

+#define LVVE_MAX_DRC_ATTACKTIME         LVDRC_ATTACKTIME_MAX

+#define LVVE_MIN_DRC_RELEASETIME        LVDRC_RELEASETIME_MIN

+#define LVVE_MAX_DRC_RELEASETIME        LVDRC_RELEASETIME_MAX

+

+

+/* End deprecated defines*/

+/****************************************************************************************/

+/*                                                                                      */

+/*  Types                                                                               */

+/*                                                                                      */

+/****************************************************************************************/

+

+/**

+LVVE_Tx Instance Handle

+This handle is used by most of the LVVE APIs

+@see LVVE_Tx_GetInstanceHandle

+@ingroup LVVE_Tx

+*/

+typedef void *LVVE_Tx_Handle_t;   ///< LVVE Tx handle

+/**

+This handle is used by most of the LVVE APIs

+@see LVVE_Rx_GetInstanceHandle

+@ingroup LVVE_Rx

+*/

+typedef void *LVVE_Rx_Handle_t;  ///< LVVE Rx handle

+

+/**

+This enum type specifies the different error codes returned by the API functions

+For the exact meaning see the individual function descriptions

+*/

+typedef enum

+{

+    LVVE_SUCCESS                            = 0,                ///< Successful return from a routine

+    LVVE_ALIGNMENTERROR                     = 1,                ///< Memory alignment error

+    LVVE_NULLADDRESS                        = 2,                ///< NULL allocation address

+    LVVE_OUTOFRANGE                         = 3,                ///< Out of range parameter

+    LVVE_INVALIDNUMSAMPLES                  = 4,                ///< Invalid number of samples

+    LVVE_INVALID_ALGORITHM_CONFIGURATION    = 5,                ///< Mutually exclusive algorithms configured ON

+    LVVE_INVALID_STATE_CONFIGURATION        = 6,                ///< Invalid state of the algorithm

+    LVVE_PRESET_INVALID_BUFFER_LENGTH       = 7,                ///< Incorrect length of buffer used in SetPreset

+    LVVE_PRESET_INVALID_VOLUME_INDEX        = 8,                ///< The volume index exceeds the buffer content in SetPreset

+    LVVE_PRESET_INVALID_BUFFER_VERSION      = 9,                ///< The version of the preset buffer does not match this library

+    LVVE_PRESET_INVALID_BASELINE_VERSION    = 10,               ///< Invalid LVVE Baseline Version in preset buffer

+    LVVE_PRESET_INVALID_MASK                = 11,               ///< Invalid algorithm mask in preset buffer

+    LVVE_PRESET_INVALID_SAMPLE_RATE         = 12,               ///< Invalid sample rate @ref LVM_Fs_en in preset buffer

+    LVVE_PRESET_INVALID_LVWIREFORMAT_MESSAGEID = 13,            ///< Invalid @ref LVVIDHeader_MessageID_en wire format message id in preset buffer

+

+    LVVE_RETURNSTATUS_DUMMY                 = LVM_MAXENUM

+} LVVE_ReturnStatus_en;

+

+/**

+Byte array containing encoded LVVE_Rx_ControlParams for one or multiple volumes.

+The length of this array should be a multiple of @ref LVVE_RX_PRESET_LENGTH.

+@see LVVE_Rx_SetPreset

+@ingroup LVVE_Rx

+*/

+typedef LVM_CHAR* LVVE_Rx_Preset_t; ///< LVVE Rx preset buffer

+

+/**

+Byte array containing encoded LVVE_Tx_ControlParams for one or multiple volumes.

+The length of this array should be a multiple of @ref LVVE_TX_PRESET_LENGTH.

+@see LVVE_Tx_SetPreset

+@ingroup LVVE_Tx

+*/

+typedef LVM_CHAR* LVVE_Tx_Preset_t;  ///< LVVE Tx preset buffer

+

+

+/****************************************************************************************/

+/*                                                                                      */

+/*  Structures                                                                          */

+/*                                                                                      */

+/****************************************************************************************/

+

+/**

+The instance parameters define certain important operating limits required by the calling application.

+These instance parameters affect how much memory is required by the LVVE and hence must be provided

+when the instance is created.

+@see LVVE_Rx_GetMemoryTable

+@see LVVE_Rx_GetInstanceHandle

+@see LVVE_Tx_GetMemoryTable

+@see LVVE_Tx_GetInstanceHandle

+*/

+/**

+EQ Module Instance Parameters Structure.

+@see LVEQ_InstanceParams_st

+*/

+typedef struct

+{

+/**

+Max Size of Equalizer

+Sets the maximum length of the equalizer impulse response that can be used.

+It must be a multiple of 8.

+<table border>

+<caption>EQ Max Length Table</caption>

+   <tr>

+       <td><b>Unit</b></td>

+       <td><b>Q format</b></td>

+       <td><b>Data Range</b></td>

+       <td><b>Default Values</b></td>

+   </tr>

+   <tr>

+       <td><b>Integer Length in Samples</b></td>

+       <td><b>Q16.0</b></td>

+       <td>[8,\ref LVEQ_EQ_LENGTH_MAX]</td>

+       <td>\ref LVEQ_EQ_LENGTH_DEFAULT</td>

+   </tr>

+</table>

+*/

+    LVM_UINT16                    EQ_MaxLength;  ///< EQ Max Length

+} LVEQ_InstanceParams_st;

+

+/**

+Tx Instance Parameter Structure

+These parameters are set at initialization time and may not be changed during processing

+@ref LVVE_Tx_GetInstanceHandle

+@ingroup LVVE_Tx

+*/

+typedef struct

+{

+    LVM_Fs_en                   SampleRate;      ///< Sample rate

+/**

+Sets the maximum length of the bulk delay between Rx and Tx expressed in samples.

+The unit of MaxBulkDelay is [number of samples] at the respective sampling rate.

+<table border>

+<caption>Max Bulk Delay Table</caption>

+   <tr>

+       <td><b>Type</b></td>

+       <td><b>Unit</b></td>

+       <td><b>Q format</b></td>

+       <td><b>Data Range</b></td>

+       <td><b>Default Values</b></td>

+   </tr>

+   <tr>

+       <td><b>LVM_UINT16</b></td>

+       <td><b>Integer Length in Samples</b></td>

+       <td><b>Q16.0</b></td>

+       <td>[0,6400]</td>

+       <td>None</td>

+   </tr>

+</table>

+*/

+    LVM_UINT16                  MaxBulkDelay;     ///< Max bulk delay

+

+    LVEQ_InstanceParams_st      EQ_InstParams;  ///< EQ instance

+} LVVE_Tx_InstanceParams_st;

+

+/**

+Rx Instance Parameter Structure

+These parameters are set at initialization time and may not be changed during processing.

+@ref LVVE_Rx_GetInstanceHandle

+@ingroup LVVE_Rx

+*/

+typedef struct

+{

+    LVM_Fs_en                   SampleRate;            ///< LVVE sample rate

+    LVEQ_InstanceParams_st      EQ_InstParams;///< EQ instance

+

+} LVVE_Rx_InstanceParams_st;

+

+/**

+The version information structure contains one character field to store LVVE version number.

+A call to the @ref LVVE_GetVersionInfo function is needed to retrieve this information.

+*/

+typedef struct

+{

+    LVM_CHAR                    VersionNumber[64];  ///< Version number of the LifeVibes&trade; VoiceExperience library

+} LVVE_VersionInfo;

+

+/**

+Used to reset LVVE_Rx module any time.

+@ref LVM_ResetType_en parameter determine the type of reset required

+@ingroup LVVE_Rx

+*/

+typedef struct

+{

+    LVM_ResetType_en ResetType;  ///< RX Reset Type

+} LVVE_Rx_ResetParams_st;

+

+/**

+Used to reset LVVE_Tx module any time.

+LVM_ResetType_en parameter determine the type of reset required

+@ingroup LVVE_Tx

+*/

+typedef struct

+{

+    LVM_ResetType_en ResetType;   ///< TX Reset Type

+} LVVE_Tx_ResetParams_st;

+

+/**

+@brief Retrieve the memory requirements of the LVVE_Tx module.

+

+This function returns a table of memory records that describe size, type and memory space of all buffers

+required by the instance. The number of initialized memory records is defined by LVVE_NR_MEMORY_REGIONS.

+This function is used for two purposes and is called in two different ways:

+

+@li Memory Allocation: When the LVVE_GetMemoryTable functions are called with a NULL instance handle (hInstance = LVM_NULL)

+    the function returns the memory requirements. The base address pointers in the memory table are set to NULL.

+    All elements of the instance parameters structure (pointed to by pInstParams) must contain valid values as the memory

+    requirements are affected by these settings.

+

+@li Memory Free: When called with a non-NULL instance handle (hInstance = a valid instance handle)

+      the function returns the memory table used when the instance was created.

+      The base address pointers returned will be those supplied by the calling application when the memory

+      was allocated and can now be used for freeing memory. The instance parameters (pointed to by pInstParams)

+      are ignored and the pInstParams parameter may be set to NULL.

+@li In case of memory allocation, all elements of the parameter initialization structure defined by pInstParams

+    must contain valid values as the memory requirements are affected by these settings.

+    In some releases of the bundle library one or more memory regions may have a zero size.

+

+@pre The number of memory records in the array defined by pMemoryTable is equal to @ref LVM_NR_MEMORY_REGIONS.

+@pre Exactly @ref LVM_NR_MEMORY_REGIONS memory records of pMemoryTable are initialized.

+

+@post When this function is called with hInstance = NULL the memory base address pointers

+will be NULL on return.

+@post When the function is called for freeing memory, hInstance = Instance Handle the

+memory table returns the allocated memory and base addresses used during

+initialisation.

+

+@return  LVVE_SUCCESS           when the function call succeeds and the memory table is filled correctly

+@return  LVVE_NULLADDRESS       when pMemoryTable was NULL

+@return  LVVE_NULLADDRESS       when pInstParams was NULL and the call was for memory allocation

+                                is NULL.

+@return  LVVE_OUTOFRANGE        when pInstParams contains parameters out of the excepted range

+

+@note  This function may be interrupted by the LVVE_Tx_Process function.

+

+@ingroup LVVE_Tx

+

+LVVE_Tx_GetMemoryTable: Memory Allocation Example:

+

+The following example shows how to get the memory requirements for the LVVE_Tx instance.

+\code

+    InstParams_Tx.SampleRate    = LVM_FS_8000;

+    // Include the other instance params here

+

+    LVVE_Status = LVVE_Tx_GetMemoryTable ( LVM_NULL,

+                                           &MemTab_Tx,

+                                           &InstParams_Tx );

+

+    if( LVVE_Status != LVVE_SUCCESS )

+    {

+        // Handle Errors

+    }

+

+    for( c1 = 0; c1 < LVVE_NR_MEMORY_REGIONS; c1++ )

+    {

+        if( MemTab_Tx.Region[c1].Size != 0 )

+        {

+            MemTab_Tx.Region[c1].pBaseAddress =

+                malloc(MemTab_Tx.Region[c1].Size);

+        }

+    }

+\endcode

+

+LVVE_Tx_GetMemoryTable: Freeing Memory Example:

+

+The following example shows how to free the memory from the LVVE_Tx instance.

+

+\code

+    LVVE_Status = LVVE_Tx_GetMemoryTable( hInstance,

+                                              &MemTab_Tx,

+                                              LVM_NULL);

+

+        if (LVVE_Status != LVVE_SUCCESS)

+        {

+            // Handle errors

+        }

+

+        for( c1 = 0; c1 < LVVE_NR_MEMORY_REGIONS; c1++)

+        {

+            if (MemTab_Tx.Region[c1].Size != 0)

+            {

+                free(MemTab_Tx.Region[c1].pBaseAddress);

+            }

+        }

+\endcode

+

+*/

+

+LVVE_ReturnStatus_en LVVE_Tx_GetMemoryTable(LVVE_Tx_Handle_t               hInstance,

+                                            LVM_MemoryTable_st             *pMemoryTable,

+                                            LVVE_Tx_InstanceParams_st      *pInstanceParams);

+

+/**

+@brief Retrieve the memory requirements of the LVVE_Rx module.

+

+This function returns a table of memory records that describe size, type and memory space of all buffers

+required by the instance. The number of initialized memory records is defined by LVVE_NR_MEMORY_REGIONS.

+This function is used for two purposes and is called in two different ways:

+

+@li Memory Allocation: When the LVVE_GetMemoryTable functions are called with a NULL instance handle (hInstance = LVM_NULL)

+    the function returns the memory requirements. The base address pointers in the memory table are set to NULL.

+    All elements of the instance parameters structure (pointed to by pInstParams) must contain valid values as the memory

+    requirements are affected by these settings.

+

+@li Memory Free: When called with a non-NULL instance handle (hInstance = a valid instance handle)

+      the function returns the memory table used when the instance was created.

+      The base address pointers returned will be those supplied by the calling application when the memory

+      was allocated and can now be used for freeing memory. The instance parameters (pointed to by pInstParams)

+      are ignored and the pInstParams parameter may be set to NULL.

+@li In case of memory allocation, all elements of the parameter initialization structure defined by pInstParams

+    must contain valid values as the memory requirements are affected by these settings.

+    In some releases of the bundle library one or more memory regions may have a zero size.

+

+@pre The number of memory records in the array defined by pMemoryTable is equal to @ref LVM_NR_MEMORY_REGIONS.

+@pre Exactly @ref LVM_NR_MEMORY_REGIONS memory records of pMemoryTable are initialized.

+

+@post When this function is called with hInstance = NULL the memory base address pointers

+will be NULL on return.

+@post When the function is called for freeing memory, hInstance = Instance Handle the

+memory table returns the allocated memory and base addresses used during

+initialisation.

+

+@return  LVVE_SUCCESS           when the function call succeeds and the memory table is filled correctly

+@return  LVVE_NULLADDRESS       when pMemoryTable was NULL

+@return  LVVE_NULLADDRESS       when pInstParams was NULL and the call was for memory allocation

+                                is NULL.

+@return  LVVE_OUTOFRANGE        when pInstParams contains parameters out of the excepted range

+

+@note  This function may be interrupted by the LVVE_Rx_Process function.

+

+@ingroup LVVE_Rx

+

+LVVE_Rx_GetMemoryTable: Memory Allocation Example:

+

+The following example shows how to get the memory requirements for the LVVE_Rx instance.

+

+\code

+    InstParams_Rx.SampleRate    = LVM_FS_8000;

+    // Include the other instance params here

+

+    LVVE_Status = LVVE_Rx_GetMemoryTable ( LVM_NULL,

+                                           &MemTab_Rx,

+                                           &InstParams_Rx );

+

+    if( LVVE_Status != LVVE_SUCCESS )

+    {

+        // Handle Errors

+    }

+

+    for( c1 = 0; c1 < LVVE_NR_MEMORY_REGIONS; c1++ )

+    {

+        if( MemTab_Rx.Region[c1].Size != 0 )

+        {

+            MemTab_Rx.Region[c1].pBaseAddress =

+                malloc(MemTab_Rx.Region[c1].Size);

+        }

+    }

+\endcode

+

+LVVE_Rx_GetMemoryTable: Freeing Memory Example:

+

+The following example shows how to free the memory from the LVVE_Rx instance.

+

+\code

+    LVVE_Status = LVVE_Rx_GetMemoryTable( hInstance,

+                                              &MemTab_Rx,

+                                              LVM_NULL);

+

+        if (LVVE_Status != LVVE_SUCCESS)

+        {

+            // Handle errors

+        }

+

+        for( c1 = 0; c1 < LVVE_NR_MEMORY_REGIONS; c1++)

+        {

+            if (MemTab_Rx.Region[c1].Size != 0)

+            {

+                free(MemTab_Rx.Region[c1].pBaseAddress);

+            }

+        }

+\endcode

+*/

+

+LVVE_ReturnStatus_en LVVE_Rx_GetMemoryTable(LVVE_Rx_Handle_t               hInstance,

+                                            LVM_MemoryTable_st             *pMemoryTable,

+                                            LVVE_Rx_InstanceParams_st      *pInstanceParams);

+

+

+/**

+@brief Created handle to the instance of the LVVE_Tx module

+

+This function is used to create the LVVE_Tx instance. All control parameters are set to invalid values.

+The memory table pointed to by pMemoryTable must be created. If the memory table is not correct then an error will be returned.

+The memory requirements of the Rx and Tx unit are dependent on the instance parameters supplied and so the

+instance parameters provided in this function call must be the same as those used in the @ref LVVE_Tx_GetMemoryTable function calls

+used for memory allocation.

+

+@pre The memory records tables defined by pMemoryTable contains pointers to non-overlapping buffers

+with the size as requested via the prior calls to the LVVE_Tx_GetMemoryTable functions.

+@pre The initialization parameter structure defined by pInstParams is identical to the structure passed

+to prior call to @ref LVVE_Tx_GetMemoryTable functions.

+

+

+@param  phInstance              Pointer to the instance handle.

+@param  pMemoryTable            Pointer to the memory definition table.

+@param  pInstanceParams         Pointer to the instance parameters.

+

+@return  LVVE_SUCCESS           when creation was successful

+@return  LVVE_NULLADDRESS       When phInstance or pMemoryTable or pInstanceParams is NULL.

+@return  LVVE_NULLADDRESS       when one or more of the memory regions with a non-zero size has been

+                                given a NULL base address pointer.

+@return LVVE_OUTOFRANGE         when pInstParams contains parameters out of the excepted range

+

+@ingroup LVVE_Tx

+

+ LVVE_Tx_GetInstanceHandle Example:

+

+The following example shows how to initialize LVVE_Tx_GetInstanceHandle.

+

+\code

+    hInstance_Tx = LVM_NULL;

+    LVVE_Status = LVVE_Tx_GetInstanceHandle( &hInstance_Tx,

+                                             &MemTab_Tx,

+                                             &InstParams_Tx );

+    if( LVVE_Status != LVVE_SUCCESS )

+    {

+         // Handle Errors

+    }

+\endcode

+

+*/

+

+LVVE_ReturnStatus_en LVVE_Tx_GetInstanceHandle(LVVE_Tx_Handle_t                *phInstance,

+                                               LVM_MemoryTable_st              *pMemoryTable,

+                                               LVVE_Tx_InstanceParams_st       *pInstanceParams);

+

+/**

+@brief Created handle to the instance of the LVVE_Rx module

+

+This functions is used to create LVVE_Rx instance. All control parameters are set to invalid values.

+The memory table pointed to by pMemoryTable must be created. If the memory table is not correct then an error will be returned.

+The memory requirements of the Rx and Rx unit are dependent on the instance parameters supplied and so the

+instance parameters provided in this function call must be the same as those used in the @ref LVVE_Rx_GetMemoryTable function calls

+used for memory allocation.

+

+@pre The memory records tables defined by pMemoryTable contains pointers to non-overlapping buffers

+with the size as requested via the prior calls to the LVVE_Rx_GetMemoryTable functions.

+@pre The initialization parameter structure defined by pInstParams is identical to the structure passed

+to prior call to @ref LVVE_Rx_GetMemoryTable functions.

+

+

+@param  phInstance              Pointer to the instance handle.

+@param  pMemoryTable            Pointer to the memory definition table.

+@param  pInstanceParams         Pointer to the instance parameters.

+

+@return  LVVE_SUCCESS           when creation was successful

+@return  LVVE_NULLADDRESS       When phInstance or pMemoryTable or pInstanceParams is NULL.

+@return  LVVE_NULLADDRESS       when one or more of the memory regions with a non-zero size has been

+                                given a NULL base address pointer.

+@return LVVE_OUTOFRANGE         when pInstParams contains parameters out of the excepted range

+

+@ingroup LVVE_Rx

+

+ LVVE_Rx_GetInstanceHandle Example:

+

+The following example shows how to initialize LVVE_Rx_GetInstanceHandle.

+

+\code

+    hInstance_Rx = LVM_NULL;

+    LVVE_Status = LVVE_Rx_GetInstanceHandle( &hInstance_Rx,

+                                             &MemTab_Rx,

+                                             &InstParams_Rx );

+    if( LVVE_Status != LVVE_SUCCESS )

+    {

+         // Handle Errors

+    }

+\endcode

+

+*/

+

+LVVE_ReturnStatus_en LVVE_Rx_GetInstanceHandle(LVVE_Rx_Handle_t                *phInstance,

+                                               LVM_MemoryTable_st              *pMemoryTable,

+                                               LVVE_Rx_InstanceParams_st       *pInstanceParams);

+

+/**

+@brief Retrieve the current LVVE_Tx control parameters.

+

+This function copies the control parameters from the LVVE_Tx into the supplied

+parameter structure, pControlParams. The values returned are the values given in the last successful

+call to the LVVE_Tx_SetControlParameters function.

+

+@param hInstance              Instance handle

+@param pControlParams         Pointer to the control parameters

+

+@pre   hInstance should be valid handle.

+@pre   pControlParams should be allocated by caller.

+@post  pControlParams will be filled with the values given in the last successful call to

+       the LVVE_Tx_SetControlParameters function. They are not necessarily the values

+       used in the last call to the LVVE_Tx_Process function, this will be the case if

+       LVVE_Tx_SetControlParameters has been called since the last call to LVVE_Tx_Process.

+

+@return LVVE_SUCCESS          Succeeded

+@return LVVE_NULLADDRESS      When hInstance or pControlParams is NULL

+

+@note The LVVE_Tx_GetControlParameters function can be called at any time during processing.

+

+@ingroup LVVE_Tx

+

+LVVE_Tx_GetControlParameters Example:

+

+The following example shows how to get different control parameters for the LVVE_Tx instance.

+

+\code

+    LVVE_Status = LVVE_Tx_GetControlParameters( &hInstance_Tx,

+                                                &ControlParams_Tx );

+

+    if( LVVE_Status != LVVE_SUCCESS )

+    {

+         // Handle Errors

+    }

+\endcode

+

+*/

+

+LVVE_ReturnStatus_en LVVE_Tx_GetControlParameters(   LVVE_Tx_Handle_t           hInstance,

+                                                     LVVE_Tx_ControlParams_st   *pControlParams);

+

+/**

+@brief Retrieve the current LVVE_Rx control parameters.

+

+This function copies the control parameters from the LVVE_Tx into the supplied

+parameter structure, pControlParams. The values returned are the values given in the last successful

+call to the LVVE_Rx_SetControlParameters function.

+

+@param hInstance              Instance handle

+@param pControlParams         Pointer to the control parameters

+

+@pre   hInstance should be valid handle.

+@pre   pControlParams should be allocated by caller.

+@post  pControlParams will be filled with the values given in the last successful call to

+       the LVVE_Rx_SetControlParameters function. They are not necessarily the values

+       used in the last call to the LVVE_Rx_Process function, this will be the case if

+       LVVE_Tx_SetControlParameters has been called since the last call to LVVE_Tx_Process.

+

+@return LVVE_SUCCESS          Succeeded

+@return LVVE_NULLADDRESS      When hInstance or pControlParams is NULL

+

+@note The LVVE_Rx_GetControlParameters function can be called at any time during processing.

+

+@ingroup LVVE_Rx

+

+LVVE_Rx_GetControlParameters Example:

+

+The following example shows how to get different control parameters for the LVVE_Rx instance.

+

+\code

+    LVVE_Status = LVVE_Rx_GetControlParameters( &hInstance_Rx,

+                                                &ControlParams_Rx );

+

+    if( LVVE_Status != LVVE_SUCCESS )

+    {

+         // Handle Errors

+    }

+\endcode

+

+*/

+

+LVVE_ReturnStatus_en LVVE_Rx_GetControlParameters(   LVVE_Rx_Handle_t           hInstance,

+                                                     LVVE_Rx_ControlParams_st   *pControlParams);

+

+/**

+@brief Sets or changes the LVVE_Tx module parameters using C-strcuture.

+

+This function takes the new set of parameters and makes a local copy within

+LVVE_Tx but the parameters are only applied on the next call of the LVVE_Tx_Process

+function. When a parameter is unchanged no action is taken. This function can

+be called at any time during the processing, even when the LVVE_Tx_Process function

+is running. LifeVibes&trade; VoiceExperience control parameters can be set using two methods.

+Control Parameters can be populated in a \"C\" style structure (as explained in example) and then sent to the library.

+Another method is to populate control parameters in a byte array called Preset Buffer, see @ref LVVE_Tx_SetPreset for example usage.

+

+@param hInstance               Instance Handle

+@param pNewParams              Pointer to a parameter structure

+

+@pre hInstance should be valid handle.

+

+@return LVVE_SUCCESS          Succeeded

+@return LVVE_NULLADDRESS      When hInstance or pNewParams is NULL

+@return LVVE_OUTOFRANGE       When pNewParams contains parameters of activated modules that are out of the excepted range

+@return LVVE_INVALID_ALGORITHM_CONFIGURATION  When two mutual exclusive algorithms are both configured ON at run-time

+                                               (e.g., NoiseVoid and HandsFree)

+

+

+@note This function may be interrupted by the LVVE_Tx_Process function

+

+@ingroup LVVE_Tx

+

+LVVE_Tx_GetControlParameters: Setting Control Parameters using C-Style structure Example:

+

+The following example shows how to set different control parameters for the LVVE_Tx instance.

+

+\code

+    LVVE_Status = LVVE_Tx_GetControlParameters( &hInstance_Tx,

+                                                &ControlParams_Tx );

+

+    if( LVVE_Status != LVVE_SUCCESS )

+    {

+        // Handle Errors

+    }

+

+     Change Parameters as required

+    ControlParams_Tx.VOL_Gain         = VOL_TABLE[i];

+    ControlParams_Tx.VC_ControlParams = VC_TABLE[i];

+

+    // Update instance with new parameters

+    LVVE_Status = LVVE_Tx_SetControlParameters( &hInstance_Tx,

+                                                &ControlParams_Tx );

+

+    if( LVVE_Status != LVVE_SUCCESS )

+    {

+        // Handle Errors

+    }

+\endcode

+

+*/

+

+LVVE_ReturnStatus_en LVVE_Tx_SetControlParameters(   LVVE_Tx_Handle_t           hInstance,

+                                        const LVVE_Tx_ControlParams_st * const pNewParams);

+

+/**

+@brief Sets or changes the LVVE_Rx module parameters using C-structure.

+

+This function takes the new set of parameters and makes a local copy within

+LVVE_Rx but the parameters are only applied on the next call of the LVVE_Rx_Process

+function. When a parameter is unchanged no action is taken. This function can

+be called at any time during the processing, even when the LVVE_Rx_Process function

+is running. LifeVibes&trade; VoiceExperience control parameters can be set using two methods.

+Control Parameters can be populated in a \"C\" style structure (as explained in example) and then sent to the library.

+Another method is to populate control parameters in a byte array called Preset Buffer, see @ref LVVE_Rx_SetPreset for example usage.

+

+@param hInstance               Instance Handle

+@param pNewParams              Pointer to a parameter structure

+

+@pre hInstance should be valid handle.

+

+@return LVVE_SUCCESS          Succeeded

+@return LVVE_NULLADDRESS      When hInstance or pNewParams is NULL

+@return LVVE_OUTOFRANGE       When pNewParams contains parameters of activated modules that are out of the excepted range

+@return LVVE_INVALID_ALGORITHM_CONFIGURATION  When two mutual exclusive algorithms are both configured ON at run-time

+                                               (e.g., NoiseVoid and HandsFree)

+

+

+@note This function may be interrupted by the LVVE_Rx_Process function

+

+@ingroup LVVE_Rx

+

+LVVE_Rx_GetControlParameters: Setting Control Parameters using C-Style structure Example:

+

+The following example shows how to set different control parameters for the LVVE_Rx instance.

+

+\code

+    LVVE_Status = LVVE_Rx_GetControlParameters( &hInstance_Rx,

+                                                &ControlParams_Rx );

+

+    if( LVVE_Status != LVVE_SUCCESS )

+    {

+        // Handle Errors

+    }

+

+     Change Parameters as required

+    ControlParams_Rx.VOL_Gain         = VOL_TABLE[i];

+    ControlParams_Rx.VC_ControlParams = VC_TABLE[i];

+

+    // Update instance with new parameters

+    LVVE_Status = LVVE_Rx_SetControlParameters( &hInstance_Rx,

+                                                &ControlParams_Rx );

+

+    if( LVVE_Status != LVVE_SUCCESS )

+    {

+        // Handle Errors

+    }

+\endcode

+

+*/

+LVVE_ReturnStatus_en LVVE_Rx_SetControlParameters(   LVVE_Rx_Handle_t           hInstance,

+                                        const LVVE_Rx_ControlParams_st * const pNewParams);

+

+/**

+@brief Retrieve the current LVVE_Tx status parameters.

+

+This function copies internal status variables into the supplied status

+parameter structures.

+

+@param hInstance      Instance handle

+@param pStatusParams  Pointer to the status parameters

+

+@pre   hInstance should be valid handle.

+@pre   pStatusParams should be allocated by caller.

+@post  pStatusParams will be filled with the latest status values of LVVE_Tx.

+

+@return LVVE_SUCCESS          Succeeded

+@return LVVE_NULLADDRESS      When hInstance or pStatusParams is NULL

+

+@note The LVVE_Tx_GetStatusParameters function can be called at any time during processing.

+This function can run in different threads than the process functions.

+

+

+@ingroup LVVE_Tx

+

+LVVE_Tx_GetStatusParameters: Get Internal Algorithm Status Attributes Example:

+The following example shows how to use LVVE_Tx_GetStatusParameters function call.

+

+\code

+    LVVE_Tx_StatusParams_st  Tx_Monitor;

+    Status=LVVE_Tx_GetStatusParameters(hInstance_Tx,&Tx_Monitor);

+    if (Status != LVVE_SUCCESS )

+    {

+       // Error Handling

+    }

+\endcode

+

+*/

+

+LVVE_ReturnStatus_en LVVE_Tx_GetStatusParameters(    LVVE_Tx_Handle_t           hInstance,

+                                                     LVVE_Tx_StatusParams_st    *pStatusParams);

+

+/**

+@brief Retrieve the current LVVE_Rx status parameters.

+

+This function copies internal status variables into the supplied status

+parameter structures.

+

+@param hInstance      Instance handle

+@param pStatusParams  Pointer to the status parameters

+

+@pre   hInstance should be valid handle.

+@pre   pStatusParams should be allocated by caller.

+@post  pStatusParams will be filled with the latest status values of LVVE_Rx.

+

+@return LVVE_SUCCESS          Succeeded

+@return LVVE_NULLADDRESS      When hInstance or pStatusParams is NULL

+

+@note The LVVE_Rx_GetStatusParameters function can be called at any time during processing.

+This function can run in different threads than the process functions.

+

+@ingroup LVVE_Rx

+

+LVVE_Rx_GetStatusParameters: Get Internal Algorithm Status Attributes Example:

+The following example shows how to use LVVE_Rx_GetStatusParameters function call.

+

+\code

+    LVVE_Rx_StatusParams_st  Rx_Monitor;

+    Status=LVVE_Rx_GetStatusParameters(hInstance_Rx,&Rx_Monitor);

+    if (Status != LVVE_SUCCESS )

+    {

+       // Error Handling

+    }

+\endcode

+

+*/

+

+LVVE_ReturnStatus_en LVVE_Rx_GetStatusParameters(    LVVE_Rx_Handle_t           hInstance,

+                                                     LVVE_Rx_StatusParams_st    *pStatusParams);

+

+/**

+@brief Resets the LVVE_Tx module.

+

+The LVVE_Tx module instance memory contains data which depend on the input

+samples that have been processed previously.  These data are buffers

+used for filter tabs and delay lines and also adaptive coefficients of the

+algorithm.  The LVVE_Tx_ResetInstance function resets this input dependent data.

+

+The LVVE_Tx_ResetInstance function should be called whenever there is a

+discontinuity in the input audio stream.  A discontinuity means that the

+current block of samples is not contiguous with the previous block of samples.

+Examples are

+@li Calling the LVVE_Tx_Process function after a period of inactivity

+@li Buffer underrun or overflow in the audio driver

+The LVVE_ResetInstance function of the Tx and/or Tx Unit should only be called when absolutely necessary as re-adaptation

+of internal algorithms will occur.

+The LVVE_ResetInstance functions can be called at any time, even when LVVE_Process is running. The reset will be

+applied at the start of the next call of the LVVE_Tx_Process function.

+

+

+@param hInstance               Instance Handle

+@param pResetParams            Reset Type

+

+@pre hInstance should be valid handle.

+

+@post Depending on the ResetType value, the LVVE_Tx_ResetInstance function can

+perform:

+@li Soft reset: partial reset of internal buffers and adaptive behavior. To be used for very short

+interruption or discontinuity, e.g., buffer under-run or overflow in the audio driver influencing the echo path delay.

+@li Hard reset: full reset of all internal buffers and adaptive behavior. To be used for long

+interruption or discontinuity, e.g., before calling the LVVE_Tx_Process function after a long period of inactivity

+in between calls in case instance was not freed.

+

+@return LVVE_SUCCESS          Succeeded

+@return LVVE_NULLADDRESS      When hInstance or pResetParams is NULL

+@return LVVE_OUTOFRANGE       When content of pResetParams is invalid

+

+@note This function may be interrupted by the LVVE_Tx_Process function

+

+@ingroup LVVE_Tx

+

+LVVE_Tx_ResetInstance Example:

+

+The following example shows how to use LVVE_Tx_ResetInstance.

+\code

+    LVVE_Status = LVVE_Tx_ResetInstance(hInstance, pResetParams);

+

+    if (LVVE_Status != LVVE_SUCCESS)

+    {

+        // Handle LVVE_Tx_ResetInstance errors

+    }

+\endcode

+

+*/

+LVVE_ReturnStatus_en LVVE_Tx_ResetInstance(  LVVE_Tx_Handle_t        hInstance,

+                                             LVVE_Tx_ResetParams_st *pResetParams  );

+

+/**

+@brief Resets the LVVE_Rx module.

+

+The LVVE_Rx module instance memory contains data which depend on the input

+samples that have been processed previously.  These data are buffers

+used for filter tabs and delay lines and also adaptive coefficients of the

+algorithm.  The LVVE_Rx_ResetInstance function resets this input dependent data.

+

+The LVVE_Rx_ResetInstance function should be called whenever there is a

+discontinuity in the input audio stream.  A discontinuity means that the

+current block of samples is not contiguous with the previous block of samples.

+Examples are

+@li Calling the LVVE_Rx_Process function after a period of inactivity

+@li Buffer underrun or overflow in the audio driver

+The LVVE_ResetInstance function of the Rx and/or Tx Unit should only be called when absolutely necessary as re-adaptation

+of internal algorithms will occur.

+The LVVE_ResetInstance functions can be called at any time, even when LVVE_Process is running. The reset will be

+applied at the start of the next call of the LVVE_Rx_Process function.

+

+

+@param hInstance               Instance Handle

+@param pResetParams            Reset Type

+

+@pre hInstance should be valid handle.

+

+@post Depending on the ResetType value, the LVVE_Rx_ResetInstance function can

+perform:

+@li Soft reset: partial reset of internal buffers and adaptive behavior. To be used for very short

+interruption or discontinuity, e.g., buffer under-run or overflow in the audio driver influencing the echo path delay.

+@li Hard reset: full reset of all internal buffers and adaptive behavior. To be used for long

+interruption or discontinuity, e.g., before calling the LVVE_Rx_Process function after a long period of inactivity

+in between calls in case instance was not freed.

+

+@return LVVE_SUCCESS          Succeeded

+@return LVVE_NULLADDRESS      When hInstance or pResetParams is NULL

+@return LVVE_OUTOFRANGE       When content of pResetParams is invalid

+

+@note This function may be interrupted by the LVVE_Rx_Process function

+

+@ingroup LVVE_Rx

+

+LVVE_Rx_ResetInstance Example:

+

+The following example shows how to use LVVE_Rx_ResetInstance.

+\code

+    LVVE_Status = LVVE_Rx_ResetInstance(hInstance, pResetParams);

+

+    if (LVVE_Status != LVVE_SUCCESS)

+    {

+        // Handle LVVE_Rx_ResetInstance errors

+    }

+\endcode

+

+*/

+LVVE_ReturnStatus_en LVVE_Rx_ResetInstance(  LVVE_Rx_Handle_t        hInstance,

+                                             LVVE_Rx_ResetParams_st *pResetParams  );

+

+/**

+@brief Processes a block of samples by the LVVE_Tx module.

+

+This function processes the block of samples as configured with the current

+parameter settings. If new parameters have been given since the last call to

+LVVE_Tx_Process then these will be applied at the beginning of this process call.

+

+@param hInstance      Instance Handle

+@param pInDataMic0    Pointer to the input speech sample buffer (pimary microphone).

+@param pInDataMic1    Pointer to the input speech sample buffer (secondary microphone).

+@param pRefData       Pointer to the input farend reference buffer.

+@param pNoiseData     Pointer to the output noise reference buffer.

+@param pOutData       Pointer to the output sample buffer.

+@param NumSamples     The number of samples to process should be integer multiple(n) of values in table.

+                      It is a frquency dependant paramter.

+<table border>

+   <tr>

+       <td><b>Unit</b></td>

+       <td><b>Q format</b></td>

+       <td><b>Data Range</b></td>

+       <td><b>Default Values</b></td>

+   </tr>

+   <tr>

+       <td><b>Samples</b></td>

+       <td><b>Q16.0</b></td>

+       <td>nx80 for 8kHz</td>

+       <td>80 for 8kHz</td>

+   </tr>

+   <tr>

+       <td></td>

+       <td></td>

+       <td>nx160 for 16kHz</td>

+       <td>160 for 16kHz</td>

+   </tr>

+   <tr>

+       <td></td>

+       <td></td>

+       <td>nx240 for 24kHz</td>

+       <td>240 for 24kHz</td>

+   </tr>

+   <tr>

+       <td></td>

+       <td></td>

+       <td>nx320 for 32kHz</td>

+       <td>320 for 32kHz</td>

+   </tr>

+   <tr>

+       <td></td>

+       <td></td>

+       <td>nx480 for 48kHz</td>

+       <td>480 for 48kHz</td>

+   </tr>

+</table>

+

+@pre hInstance should be valid handle.

+@pre LVVE_Tx_SetControlParameters should be called successfully once before.

+the first call to LVVE_Tx_Process

+@pre pInData is filled with the input samples to process.

+

+@post pOutData contains the processed samples.

+

+@return LVVE_SUCCESS          Succeeded

+@return LVVE_NULLADDRESS      When hInstance, pInData or pOutData is NULL

+@return LVVE_INVALIDNUMSAMPLES When the NumSamples is outside the allowed

+range

+@return LVVE_INVALID_STATE_CONFIGURATION When invalid state of the algorithm found

+

+@ingroup LVVE_Tx

+

+LVVE_Tx_Process Example:

+

+The following example shows how to use LVVE_Tx_Process function call

+

+\code

+    // Tx Processing

+    LVVE_STATUS = LVVE_Tx_Process( hInstance_Tx,

+                                   pInData_Tx0,

+                                   pInData_Tx1,

+                                   pInData_Ref,

+                                   pNoiseData,

+                                   pOutData_Tx,

+                                   NumSamples );

+    if (LVVE_STATUS != LVVE_SUCCESS )

+    {

+       // Error Handling

+    }

+\endcode

+

+*/

+LVVE_ReturnStatus_en LVVE_Tx_Process(   LVVE_Tx_Handle_t    hInstance,

+                                        const LVM_INT16     *pInDataMic0,

+                                        const LVM_INT16     *pInDataMic1,

+                                        const LVM_INT16     *pRefData,

+                                        LVM_INT16           *pNoiseData,

+                                        LVM_INT16           *pOutData,

+                                        const LVM_UINT16    NumSamples);

+

+/**

+@brief Processes a block of samples by the LVVE_Rx module.

+

+This function processes the block of samples as configured with the current

+parameter settings. If new parameters have been given since the last call to

+LVVE_Rx_Process then these will be applied at the beginning of this process call.

+

+@param hInstance      Instance Handle

+@param pInData        Pointer to the input sample buffer

+@param pNoiseData     Pointer to the input noise buffer (for LVVC only). Pointer to the input noise reference buffer.

+                      The size of this buffer depends on the number of samples to process: NoiseDataBufferSize = 2 (size of the input buffer in ms) / 10ms

+                        i.e. for 20 ms input buffer, the NoiseData buffer size should be 4.

+

+@param pOutData       Pointer to the output sample buffer

+@param NumSamples     The number of samples to process should be integer multiple(n) of values in table.

+                      It is a frquency dependant paramter.

+<table border>

+   <tr>

+       <td><b>Unit</b></td>

+       <td><b>Q format</b></td>

+       <td><b>Data Range</b></td>

+       <td><b>Default Values</b></td>

+   </tr>

+   <tr>

+       <td><b>Samples</b></td>

+       <td><b>Q16.0</b></td>

+       <td>nx80 for 8kHz</td>

+       <td>80 for 8kHz</td>

+   </tr>

+   <tr>

+       <td></td>

+       <td></td>

+       <td>nx160 for 16kHz</td>

+       <td>160 for 16kHz</td>

+   </tr>

+   <tr>

+       <td></td>

+       <td></td>

+       <td>nx240 for 24kHz</td>

+       <td>240 for 24kHz</td>

+   </tr>

+   <tr>

+       <td></td>

+       <td></td>

+       <td>nx320 for 32kHz</td>

+       <td>320 for 32kHz</td>

+   </tr>

+   <tr>

+       <td></td>

+       <td></td>

+       <td>nx480 for 48kHz</td>

+       <td>480 for 48kHz</td>

+   </tr>

+</table>

+

+@pre hInstance should be valid handle.

+@pre LVVE_Rx_SetControlParameters should be called successfully once before.

+the first call to LVVE_Rx_Process

+@pre pInData is filled with the input samples to process.

+

+@post pOutData contains the processed samples.

+

+@return LVVE_SUCCESS          Succeeded

+@return LVVE_NULLADDRESS      When hInstance, pInData or pOutData is NULL

+@return LVVE_INVALIDNUMSAMPLES When the NumSamples is outside the allowed

+range

+@return LVVE_INVALID_STATE_CONFIGURATION When invalid state of the algorithm found

+

+@ingroup LVVE_Rx

+

+LVVE_Rx_Process Example:

+The following example shows how to use LVVE_Rx_Process function call.

+

+\code

+    // Rx Processing

+    LVVE_STATUS = LVVE_Rx_Process( hInstance_Rx,

+                                   pInData_Rx,

+                                   pNoiseData,

+                                   pOutData_Rx,

+                                   NumSamples );

+

+    if (LVVE_STATUS != LVVE_SUCCESS )

+    {

+       // Error Handling

+    }

+\endcode

+

+*/

+

+LVVE_ReturnStatus_en LVVE_Rx_Process(   LVVE_Rx_Handle_t    hInstance,

+                                        const LVM_INT16     *pInData,

+                                        const LVM_INT16     *pNoiseData,

+                                        LVM_INT16           *pOutData,

+                                        const LVM_UINT16    NumSamples);

+

+

+/**

+\brief get the version number of current of LVVE library.

+

+This function returns, to host, current version of the LVVE library

+@param  pVersion                version info

+

+@return  LVVE_SUCCESS           Succeeded

+@return  LVVE_NULLADDRESS       When one of hInstance, pInData or pOutData is NULL

+

+LVVE_GetVersionInfot Example:

+

+\code

+    //Get the version information

+    LVVE_VersionInfo     VersionInfo;

+    LVVE_GetVersionInfo(&VersionInfo);

+\endcode

+

+*/

+LVVE_ReturnStatus_en LVVE_GetVersionInfo( LVVE_VersionInfo *pVersion );

+

+/**

+@brief Sets or changes the LVVE_Tx module parameters through a Preset Buffer.

+

+Sets or changes the LVVE_Tx module parameters through a Preset Buffer. To set parameters using \"C\" structure see

+@ref LVVE_Tx_SetControlParameters

+This function takes the new set of parameters and makes a local copy within the

+LVVE_Tx module but the parameters are only applied on the next call of the LVVE_Tx_Process

+function. When no parameters are changed, no action is taken. This function can

+be called at any time during the processing, even when the LVVE_Tx_Process function

+is running.

+The new parameters are supplied in the form a @ref LVVE_Tx_Preset_t (Byte array).

+The length of the byte array shall be a multiple of @ref LVVE_TX_PRESET_LENGTH.

+

+@param hInstance               Instance Handle

+@param pPreset                 Pointer to a Preset buffer

+@param PresetLength            Length in bytes of the Preset buffer

+@param VolumeIndex             Volume index to be selected from the Preset buffer

+

+@pre hInstance should be valid handle.

+

+@return @ref LVVE_SUCCESS          Succeeded

+@return @ref LVVE_NULLADDRESS      When hInstance or pPreset is NULL

+@return @ref LVVE_OUTOFRANGE       When PresetLength or any of the new parameters is out of range

+@return @ref LVVE_INVALID_ALGORITHM_CONFIGURATION When mutually exclusive algorithms are enabled in the parameters at the same time

+@return @ref LVVE_PRESET_INVALID_BUFFER_LENGTH When the length of the input buffer is smaller than LVVE_TX_PRESET_LENGTH

+@return @ref LVVE_PRESET_INVALID_VOLUME_INDEX When the volume index exceeds the buffer content

+@return @ref LVVE_PRESET_INVALID_BUFFER_VERSION When the version of the format of the preset buffer does not match the version of the library

+@return @ref LVVE_PRESET_INVALID_BASELINE_VERSION When the baseline version of the provided preset buffer and the baseline version of the library do not match. Is the preset generated for this library ?

+@return @ref LVVE_PRESET_INVALID_MASK When the algorithm mask of the provided preset buffer and the algorithm mask of the library do not match. Is the preset generated for this library ?

+@return @ref LVVE_PRESET_INVALID_SAMPLE_RATE When the sample rate @ref LVM_Fs_en of the preset does not match the sample rate of the hInstance

+@return @ref LVVE_PRESET_INVALID_LVWIREFORMAT_MESSAGEID  When the LVWireformat message id @ref LVVIDHeader_MessageID_en of the preset is not valid

+

+@note This function may be interrupted by the LVVE_Tx_Process function

+

+@ingroup LVVE_Tx

+LVVE_Tx_SetPreset: Setting Control Parameters using Preset Buffer Example:

+

+The following example shows how to set different control parameters for the LVVE_Tx instance using Preset Buffer.

+

+\code

+    LVM_CHAR LVVE_Tx_Preset_Buffer[LVVE_TX_PRESET_LENGTH];

+    LVVE_Tx_Preset_t const LVVE_Tx_Preset = LVVE_Tx_Preset_Buffer;

+

+    FILE *PRESETFILE_Tx;

+    LVM_INT32 ReadBytes = 0;

+

+    PRESETFILE_Tx=fopen(filename, "rb" );

+

+    // Read the preset buffer

+    ReadBytes = fread( LVVE_Tx_Preset_Buffer,

+                       sizeof(LVM_CHAR),

+                       (LVM_UINT32)LVVE_TX_PRESET_LENGTH,

+                       PRESETFILE_Tx );

+

+    fclose(PRESETFILE_Tx);

+

+     // Update instance with new preset buffer

+    LVVE_Status = LVVE_Tx_SetPreset( hInstance_Tx,

+                                     LVVE_Tx_Preset,

+                                     ReadBytes,

+                                     0);

+

+    if ( LVVE_Status != LVVE_SUCCESS )

+    {

+        // Handle Errors

+    }

+\endcode

+

+

+

+*/

+LVVE_ReturnStatus_en LVVE_Tx_SetPreset(LVVE_Tx_Handle_t hInstance,

+                                       const LVVE_Tx_Preset_t pPreset,

+                                       LVM_UINT32 PresetLength,

+                                       LVM_UINT16 VolumeIndex);

+

+/**

+@brief Sets or changes the LVVE_Rx module parameters through a Preset Buffer

+

+Sets or changes the LVVE_Rx module parameters through a Preset Buffer. To set parameters using \"C\" structure see

+@ref LVVE_Rx_SetControlParameters

+This function takes the new set of parameters and makes a local copy within the

+LVVE_Rx module but the parameters are only applied on the next call of the LVVE_Rx_Process

+function. When no parameters are changed, no action is taken. This function can

+be called at any time during the processing, even when the LVVE_Rx_Process function

+is running.

+The new parameters are supplied in the form a @ref LVVE_Rx_Preset_t (Byte array).

+The length of the byte array shall be a multiple of @ref LVVE_RX_PRESET_LENGTH.

+

+@param hInstance               Instance Handle

+@param pPreset                 Pointer to a Preset buffer

+@param PresetLength            Length in bytes of the Preset buffer

+@param VolumeIndex             Volume index to be selected from the Preset buffer

+

+@pre hInstance should be valid handle.

+

+@return @ref LVVE_SUCCESS          Succeeded

+@return @ref LVVE_NULLADDRESS      When hInstance or pPreset is NULL

+@return @ref LVVE_OUTOFRANGE       When PresetLength or any of the new parameters is out of range

+@return @ref LVVE_INVALID_ALGORITHM_CONFIGURATION When mutually exclusive algorithms are enabled in the parameters at the same time

+@return @ref LVVE_PRESET_INVALID_BUFFER_LENGTH When the length of the input buffer is smaller than LVVE_RX_PRESET_LENGTH

+@return @ref LVVE_PRESET_INVALID_VOLUME_INDEX When the volume index exceeds the buffer content

+@return @ref LVVE_PRESET_INVALID_BUFFER_VERSION When the version of the format of the preset buffer does not match the version of the library

+@return @ref LVVE_PRESET_INVALID_BASELINE_VERSION When the baseline version of the provided preset buffer and the baseline version of the library do not match. Is the preset generated for this library ?

+@return @ref LVVE_PRESET_INVALID_MASK When the algorithm mask of the provided preset buffer and the algorithm mask of the library do not match. Is the preset generated for this library ?

+@return @ref LVVE_PRESET_INVALID_SAMPLE_RATE When the sample rate @ref LVM_Fs_en of the preset does not match the sample rate of the hInstance

+@return @ref LVVE_PRESET_INVALID_LVWIREFORMAT_MESSAGEID  When the LVWireformat message id @ref LVVIDHeader_MessageID_en of the preset is not valid

+

+@note This function may be interrupted by the LVVE_Rx_Process function

+

+@ingroup LVVE_Rx

+

+LVVE_Rx_SetPreset: Setting Control Parameters using Preset Buffer Example:

+

+The following example shows how to set different control parameters for the LVVE_Rx instance using Preset Buffer.

+

+\code

+    #define NUM_VOLUMES (5)

+    LVM_CHAR LVVE_Rx_Preset_Buffer[NUM_VOLUMES*LVVE_RX_PRESET_LENGTH];

+    LVVE_Rx_Preset_t const LVVE_Rx_Preset = LVVE_Rx_Preset_Buffer;

+

+    FILE *PRESETFILE_Rx;

+    LVM_INT32 ReadBytes = 0;

+    LVM_UINT16 VolumeIndex = 3;

+

+    PRESETFILE_Rx=fopen(filename, "rb" );

+

+    // Read the preset buffer

+    ReadBytes = fread( LVVE_Rx_Preset_Buffer,

+                       sizeof(LVM_CHAR),

+                       (LVM_UINT32)(NUM_VOLUMES*LVVE_RX_PRESET_LENGTH),

+                       PRESETFILE_Rx );

+

+    fclose(PRESETFILE_Rx);

+

+     // Update instance with new preset buffer

+    LVVE_Status = LVVE_Rx_SetPreset( hInstance_Rx,

+                                     LVVE_Rx_Preset,

+                                     ReadBytes,

+                                     VolumeIndex);

+

+    if ( LVVE_Status != LVVE_SUCCESS )

+    {

+        // Handle Errors

+    }

+\endcode

+

+*/

+LVVE_ReturnStatus_en LVVE_Rx_SetPreset(LVVE_Rx_Handle_t hInstance,

+                                       const LVVE_Rx_Preset_t pPreset,

+                                       LVM_UINT32 PresetLength,

+                                       LVM_UINT16 VolumeIndex);

+

+

+#ifdef __cplusplus

+}

+#endif /* __cplusplus */

+

+#endif      /* __LVVE_H__ */

+

+/* End of file */

diff --git a/cp/ps/driver/src/chipsets/src/audio_base/nxp/tos/LVVE_VID.h b/cp/ps/driver/src/chipsets/src/audio_base/nxp/tos/LVVE_VID.h
new file mode 100755
index 0000000..98a1461
--- /dev/null
+++ b/cp/ps/driver/src/chipsets/src/audio_base/nxp/tos/LVVE_VID.h
@@ -0,0 +1,8452 @@
+/****************************************************************************************/

+/*  Copyright (c) 2004-2015 NXP Software. All rights are reserved.                      */

+/*  Reproduction in whole or in part is prohibited without the prior                    */

+/*  written consent of the copyright owner.                                             */

+/*                                                                                      */

+/*  This software and any compilation or derivative thereof is and                      */

+/*  shall remain the proprietary information of NXP Software and is                     */

+/*  highly confidential in nature. Any and all use hereof is restricted                 */

+/*  and is subject to the terms and conditions set forth in the                         */

+/*  software license agreement concluded with NXP Software.                             */

+/*                                                                                      */

+/*  Under no circumstances is this software or any derivative thereof                   */

+/*  to be combined with any Open Source Software in any way or                          */

+/*  licensed under any Open License Terms without the express prior                     */

+/*  written  permission of NXP Software.                                                */

+/*                                                                                      */

+/*  For the purpose of this clause, the term Open Source Software means                 */

+/*  any software that is licensed under Open License Terms. Open                        */

+/*  License Terms means terms in any license that require as a                          */

+/*  condition of use, modification and/or distribution of a work                        */

+/*                                                                                      */

+/*           1. the making available of source code or other materials                  */

+/*              preferred for modification, or                                          */

+/*                                                                                      */

+/*           2. the granting of permission for creating derivative                      */

+/*              works, or                                                               */

+/*                                                                                      */

+/*           3. the reproduction of certain notices or license terms                    */

+/*              in derivative works or accompanying documentation, or                   */

+/*                                                                                      */

+/*           4. the granting of a royalty-free license to any party                     */

+/*              under Intellectual Property Rights                                      */

+/*                                                                                      */

+/*  regarding the work and/or any work that contains, is combined with,                 */

+/*  requires or otherwise is based on the work.                                         */

+/*                                                                                      */

+/*  This software is provided for ease of recompilation only.                           */

+/*  Modification and reverse engineering of this software are strictly                  */

+/*  prohibited.                                                                         */

+/*                                                                                      */

+/****************************************************************************************/

+

+/****************************************************************************************/

+/*                                                                                      */

+/*     $Author: nxp65285 $*/

+/*     $Revision: 49390 $*/

+/*     $Date: 2013-10-16 18:34:35 +0530 (Wed, 16 Oct 2013) $*/

+/*                                                                                      */

+/****************************************************************************************/

+

+/** @file

+ *  Header file for the application layer interface of the REL_LVVE_HF_NV1_VC_AGC_RX_DRC_RX_WB module

+ *

+ *  The suffix VID in header file stands for Voice Interface Definition

+ *  This files includes all definitions, types, and structures required by the calling

+ *  layer. Public functions are defined in the protoypes header files.

+ *  All other types, structures and functions are private.

+ */

+

+#ifndef __REL_LVVE_HF_NV1_VC_AGC_RX_DRC_RX_WB_VIDPP_H__

+#define __REL_LVVE_HF_NV1_VC_AGC_RX_DRC_RX_WB_VIDPP_H__

+

+#ifdef __cplusplus

+extern "C" {

+#endif /* __cplusplus */

+

+/****************************************************************************************/

+/*                                                                                      */

+/*  Includes                                                                            */

+/*                                                                                      */

+/****************************************************************************************/

+#include "LVC_Types.h"

+

+/****************************************************************************************/

+/*                                                                                      */

+/*  Definitions                                                                         */

+/*                                                                                      */

+/****************************************************************************************/

+/**

+<table border>

+    <tr>

+        <td><b>Name</b></td>

+        <td><b>Value</b></td>

+        <td><b>Description</b></td>

+    </tr>

+    <tr>

+        <td>@ref LVVIDHEADER_LVVE_RX_LVFENS_MASK1</td>

+        <td>1</td>

+        <td>Far End Noise Suppression is present in the LVVE_Rx</td>

+    </tr>

+    <tr>

+        <td>@ref LVVIDHEADER_LVVE_RX_HPF_MASK1</td>

+        <td>4</td>

+        <td>High Pass Filter is present in the LVVE_Rx</td>

+    </tr>

+    <tr>

+        <td>@ref LVVIDHEADER_LVVE_RX_LVNG_MASK1</td>

+        <td>16</td>

+        <td>Noise Gate is present in the LVVE_Rx</td>

+    </tr>

+    <tr>

+        <td>@ref LVVIDHEADER_LVVE_RX_EQ_MASK1</td>

+        <td>64</td>

+        <td>Equalizer is present in the LVVE_Rx</td>

+    </tr>

+    <tr>

+        <td>@ref LVVIDHEADER_LVVE_RX_AGC_MASK1</td>

+        <td>128</td>

+        <td>Automatic Gain Control is present in the LVVE_Rx</td>

+    </tr>

+    <tr>

+        <td>@ref LVVIDHEADER_LVVE_RX_DRC_MASK1</td>

+        <td>256</td>

+        <td>Dynamic Range Control is present in the LVVE_Rx</td>

+    </tr>

+    <tr>

+        <td>@ref LVVIDHEADER_LVVE_RX_VOL_MASK1</td>

+        <td>512</td>

+        <td>Volume Control is present in the LVVE_Rx</td>

+    </tr>

+    <tr>

+        <td>@ref LVVIDHEADER_LVVE_RX_LVVC_MASK1</td>

+        <td>1024</td>

+        <td>VoiceClarity is present in the LVVE_Rx</td>

+    </tr>

+</table> */

+typedef LVM_UINT16 LVVIDHeader_LVVE_Rx_Mask1_bm;

+/**

+* @def LVVIDHeader_LVVE_Rx_LVFENS_MASK1

+* Far End Noise Suppression is present in the LVVE_Rx

+* @see LVVIDHeader_LVVE_Rx_Mask1_bm

+*/

+#define LVVIDHEADER_LVVE_RX_LVFENS_MASK1 ((LVVIDHeader_LVVE_Rx_Mask1_bm)1)

+/**

+* @def LVVIDHeader_LVVE_Rx_HPF_MASK1

+* High Pass Filter is present in the LVVE_Rx

+* @see LVVIDHeader_LVVE_Rx_Mask1_bm

+*/

+#define LVVIDHEADER_LVVE_RX_HPF_MASK1 ((LVVIDHeader_LVVE_Rx_Mask1_bm)4)

+/**

+* @def LVVIDHeader_LVVE_Rx_LVNG_MASK1

+* Noise Gate is present in the LVVE_Rx

+* @see LVVIDHeader_LVVE_Rx_Mask1_bm

+*/

+#define LVVIDHEADER_LVVE_RX_LVNG_MASK1 ((LVVIDHeader_LVVE_Rx_Mask1_bm)16)

+/**

+* @def LVVIDHeader_LVVE_Rx_EQ_MASK1

+* Equalizer is present in the LVVE_Rx

+* @see LVVIDHeader_LVVE_Rx_Mask1_bm

+*/

+#define LVVIDHEADER_LVVE_RX_EQ_MASK1 ((LVVIDHeader_LVVE_Rx_Mask1_bm)64)

+/**

+* @def LVVIDHeader_LVVE_Rx_AGC_MASK1

+* Automatic Gain Control is present in the LVVE_Rx

+* @see LVVIDHeader_LVVE_Rx_Mask1_bm

+*/

+#define LVVIDHEADER_LVVE_RX_AGC_MASK1 ((LVVIDHeader_LVVE_Rx_Mask1_bm)128)

+/**

+* @def LVVIDHeader_LVVE_Rx_DRC_MASK1

+* Dynamic Range Control is present in the LVVE_Rx

+* @see LVVIDHeader_LVVE_Rx_Mask1_bm

+*/

+#define LVVIDHEADER_LVVE_RX_DRC_MASK1 ((LVVIDHeader_LVVE_Rx_Mask1_bm)256)

+/**

+* @def LVVIDHeader_LVVE_Rx_VOL_MASK1

+* Volume Control is present in the LVVE_Rx

+* @see LVVIDHeader_LVVE_Rx_Mask1_bm

+*/

+#define LVVIDHEADER_LVVE_RX_VOL_MASK1 ((LVVIDHeader_LVVE_Rx_Mask1_bm)512)

+/**

+* @def LVVIDHeader_LVVE_Rx_LVVC_MASK1

+* VoiceClarity is present in the LVVE_Rx

+* @see LVVIDHeader_LVVE_Rx_Mask1_bm

+*/

+#define LVVIDHEADER_LVVE_RX_LVVC_MASK1 ((LVVIDHeader_LVVE_Rx_Mask1_bm)1024)

+/**

+* @def LVVIDHEADER_LVVE_RX_MASK1_BM_MIN

+* Minimal value for LVVIDHeader_LVVE_Rx_Mask1_bm

+* @see LVVIDHeader_LVVE_Rx_Mask1_bm

+*/

+#define LVVIDHEADER_LVVE_RX_MASK1_BM_MIN ((LVVIDHeader_LVVE_Rx_Mask1_bm)0)

+/**

+* @def LVVIDHEADER_LVVE_RX_MASK1_BM_MAX

+* Maximal value for LVVIDHeader_LVVE_Rx_Mask1_bm

+* @see LVVIDHeader_LVVE_Rx_Mask1_bm

+*/

+#define LVVIDHEADER_LVVE_RX_LVFENS_MASK1_FORMAX ((LVVIDHeader_LVVE_Rx_Mask1_bm)1)

+#define LVVIDHEADER_LVVE_RX_HPF_MASK1_FORMAX ((LVVIDHeader_LVVE_Rx_Mask1_bm)4)

+#define LVVIDHEADER_LVVE_RX_LVNG_MASK1_FORMAX ((LVVIDHeader_LVVE_Rx_Mask1_bm)16)

+#define LVVIDHEADER_LVVE_RX_EQ_MASK1_FORMAX ((LVVIDHeader_LVVE_Rx_Mask1_bm)64)

+#define LVVIDHEADER_LVVE_RX_AGC_MASK1_FORMAX ((LVVIDHeader_LVVE_Rx_Mask1_bm)128)

+#define LVVIDHEADER_LVVE_RX_DRC_MASK1_FORMAX ((LVVIDHeader_LVVE_Rx_Mask1_bm)256)

+#define LVVIDHEADER_LVVE_RX_VOL_MASK1_FORMAX ((LVVIDHeader_LVVE_Rx_Mask1_bm)512)

+#define LVVIDHEADER_LVVE_RX_LVVC_MASK1_FORMAX ((LVVIDHeader_LVVE_Rx_Mask1_bm)1024)

+#define LVVIDHEADER_LVVE_RX_MASK1_BM_MAX (LVVIDHEADER_LVVE_RX_LVFENS_MASK1_FORMAX | LVVIDHEADER_LVVE_RX_HPF_MASK1_FORMAX | LVVIDHEADER_LVVE_RX_LVNG_MASK1_FORMAX | LVVIDHEADER_LVVE_RX_EQ_MASK1_FORMAX | LVVIDHEADER_LVVE_RX_AGC_MASK1_FORMAX | LVVIDHEADER_LVVE_RX_DRC_MASK1_FORMAX | LVVIDHEADER_LVVE_RX_VOL_MASK1_FORMAX | LVVIDHEADER_LVVE_RX_LVVC_MASK1_FORMAX | ((LVVIDHeader_LVVE_Rx_Mask1_bm)0))

+/**

+<table border>

+    <tr>

+        <td><b>Name</b></td>

+        <td><b>Value</b></td>

+        <td><b>Description</b></td>

+    </tr>

+</table> */

+typedef LVM_UINT16 LVVIDHeader_LVVE_Rx_Mask2_bm;

+/**

+* @def LVVIDHEADER_LVVE_RX_MASK2_BM_MIN

+* Minimal value for LVVIDHeader_LVVE_Rx_Mask2_bm

+* @see LVVIDHeader_LVVE_Rx_Mask2_bm

+*/

+#define LVVIDHEADER_LVVE_RX_MASK2_BM_MIN ((LVVIDHeader_LVVE_Rx_Mask2_bm)0)

+/**

+* @def LVVIDHEADER_LVVE_RX_MASK2_BM_MAX

+* Maximal value for LVVIDHeader_LVVE_Rx_Mask2_bm

+* @see LVVIDHeader_LVVE_Rx_Mask2_bm

+*/

+#define LVVIDHEADER_LVVE_RX_MASK2_BM_MAX (((LVVIDHeader_LVVE_Rx_Mask2_bm)0))

+/**

+<table border>

+    <tr>

+        <td><b>Name</b></td>

+        <td><b>Value</b></td>

+        <td><b>Description</b></td>

+    </tr>

+    <tr>

+        <td>@ref LVVIDHEADER_LVVE_TX_LVHF_MASK1</td>

+        <td>1</td>

+        <td>HandsFree is present in the LVVE_Tx</td>

+    </tr>

+    <tr>

+        <td>@ref LVVIDHEADER_LVVE_TX_EQ_MASK1</td>

+        <td>4</td>

+        <td>Equalizer is present in the LVVE_Tx</td>

+    </tr>

+    <tr>

+        <td>@ref LVVIDHEADER_LVVE_TX_LVWM_MASK1</td>

+        <td>8</td>

+        <td>WhisperMode is present in the LVVE_Tx</td>

+    </tr>

+    <tr>

+        <td>@ref LVVIDHEADER_LVVE_TX_DRC_MASK1</td>

+        <td>16</td>

+        <td>Dynamic Range Control is present in the LVVE_Tx</td>

+    </tr>

+    <tr>

+        <td>@ref LVVIDHEADER_LVVE_TX_VOL_MASK1</td>

+        <td>32</td>

+        <td>Volume Control is present in the LVVE_Tx</td>

+    </tr>

+    <tr>

+        <td>@ref LVVIDHEADER_LVVE_TX_HPF_MASK1</td>

+        <td>128</td>

+        <td>HPF is present in the LVVE_Tx</td>

+    </tr>

+    <tr>

+        <td>@ref LVVIDHEADER_LVVE_TX_LVNV_01_MASK1</td>

+        <td>512</td>

+        <td>NoiseVoid is present in the LVVE_Tx</td>

+    </tr>

+</table> */

+typedef LVM_UINT16 LVVIDHeader_LVVE_Tx_Mask1_bm;

+/**

+* @def LVVIDHeader_LVVE_Tx_LVHF_MASK1

+* HandsFree is present in the LVVE_Tx

+* @see LVVIDHeader_LVVE_Tx_Mask1_bm

+*/

+#define LVVIDHEADER_LVVE_TX_LVHF_MASK1 ((LVVIDHeader_LVVE_Tx_Mask1_bm)1)

+/**

+* @def LVVIDHeader_LVVE_Tx_EQ_MASK1

+* Equalizer is present in the LVVE_Tx

+* @see LVVIDHeader_LVVE_Tx_Mask1_bm

+*/

+#define LVVIDHEADER_LVVE_TX_EQ_MASK1 ((LVVIDHeader_LVVE_Tx_Mask1_bm)4)

+/**

+* @def LVVIDHeader_LVVE_Tx_LVWM_MASK1

+* WhisperMode is present in the LVVE_Tx

+* @see LVVIDHeader_LVVE_Tx_Mask1_bm

+*/

+#define LVVIDHEADER_LVVE_TX_LVWM_MASK1 ((LVVIDHeader_LVVE_Tx_Mask1_bm)8)

+/**

+* @def LVVIDHeader_LVVE_Tx_DRC_MASK1

+* Dynamic Range Control is present in the LVVE_Tx

+* @see LVVIDHeader_LVVE_Tx_Mask1_bm

+*/

+#define LVVIDHEADER_LVVE_TX_DRC_MASK1 ((LVVIDHeader_LVVE_Tx_Mask1_bm)16)

+/**

+* @def LVVIDHeader_LVVE_Tx_VOL_MASK1

+* Volume Control is present in the LVVE_Tx

+* @see LVVIDHeader_LVVE_Tx_Mask1_bm

+*/

+#define LVVIDHEADER_LVVE_TX_VOL_MASK1 ((LVVIDHeader_LVVE_Tx_Mask1_bm)32)

+/**

+* @def LVVIDHeader_LVVE_Tx_HPF_MASK1

+* HPF is present in the LVVE_Tx

+* @see LVVIDHeader_LVVE_Tx_Mask1_bm

+*/

+#define LVVIDHEADER_LVVE_TX_HPF_MASK1 ((LVVIDHeader_LVVE_Tx_Mask1_bm)128)

+/**

+* @def LVVIDHeader_LVVE_Tx_LVNV_01_MASK1

+* NoiseVoid is present in the LVVE_Tx

+* @see LVVIDHeader_LVVE_Tx_Mask1_bm

+*/

+#define LVVIDHEADER_LVVE_TX_LVNV_01_MASK1 ((LVVIDHeader_LVVE_Tx_Mask1_bm)512)

+/**

+* @def LVVIDHEADER_LVVE_TX_MASK1_BM_MIN

+* Minimal value for LVVIDHeader_LVVE_Tx_Mask1_bm

+* @see LVVIDHeader_LVVE_Tx_Mask1_bm

+*/

+#define LVVIDHEADER_LVVE_TX_MASK1_BM_MIN ((LVVIDHeader_LVVE_Tx_Mask1_bm)0)

+/**

+* @def LVVIDHEADER_LVVE_TX_MASK1_BM_MAX

+* Maximal value for LVVIDHeader_LVVE_Tx_Mask1_bm

+* @see LVVIDHeader_LVVE_Tx_Mask1_bm

+*/

+#define LVVIDHEADER_LVVE_TX_LVHF_MASK1_FORMAX ((LVVIDHeader_LVVE_Tx_Mask1_bm)1)

+#define LVVIDHEADER_LVVE_TX_EQ_MASK1_FORMAX ((LVVIDHeader_LVVE_Tx_Mask1_bm)4)

+#define LVVIDHEADER_LVVE_TX_LVWM_MASK1_FORMAX ((LVVIDHeader_LVVE_Tx_Mask1_bm)8)

+#define LVVIDHEADER_LVVE_TX_DRC_MASK1_FORMAX ((LVVIDHeader_LVVE_Tx_Mask1_bm)16)

+#define LVVIDHEADER_LVVE_TX_VOL_MASK1_FORMAX ((LVVIDHeader_LVVE_Tx_Mask1_bm)32)

+#define LVVIDHEADER_LVVE_TX_HPF_MASK1_FORMAX ((LVVIDHeader_LVVE_Tx_Mask1_bm)128)

+#define LVVIDHEADER_LVVE_TX_LVNV_01_MASK1_FORMAX ((LVVIDHeader_LVVE_Tx_Mask1_bm)512)

+#define LVVIDHEADER_LVVE_TX_MASK1_BM_MAX (LVVIDHEADER_LVVE_TX_LVHF_MASK1_FORMAX | LVVIDHEADER_LVVE_TX_EQ_MASK1_FORMAX | LVVIDHEADER_LVVE_TX_LVWM_MASK1_FORMAX | LVVIDHEADER_LVVE_TX_DRC_MASK1_FORMAX | LVVIDHEADER_LVVE_TX_VOL_MASK1_FORMAX | LVVIDHEADER_LVVE_TX_HPF_MASK1_FORMAX | LVVIDHEADER_LVVE_TX_LVNV_01_MASK1_FORMAX | ((LVVIDHeader_LVVE_Tx_Mask1_bm)0))

+/**

+<table border>

+    <tr>

+        <td><b>Name</b></td>

+        <td><b>Value</b></td>

+        <td><b>Description</b></td>

+    </tr>

+</table> */

+typedef LVM_UINT16 LVVIDHeader_LVVE_Tx_Mask2_bm;

+/**

+* @def LVVIDHEADER_LVVE_TX_MASK2_BM_MIN

+* Minimal value for LVVIDHeader_LVVE_Tx_Mask2_bm

+* @see LVVIDHeader_LVVE_Tx_Mask2_bm

+*/

+#define LVVIDHEADER_LVVE_TX_MASK2_BM_MIN ((LVVIDHeader_LVVE_Tx_Mask2_bm)0)

+/**

+* @def LVVIDHEADER_LVVE_TX_MASK2_BM_MAX

+* Maximal value for LVVIDHeader_LVVE_Tx_Mask2_bm

+* @see LVVIDHeader_LVVE_Tx_Mask2_bm

+*/

+#define LVVIDHEADER_LVVE_TX_MASK2_BM_MAX (((LVVIDHeader_LVVE_Tx_Mask2_bm)0))

+/**

+<table border>

+    <tr>

+        <td><b>Name</b></td>

+        <td><b>Value</b></td>

+        <td><b>Description</b></td>

+    </tr>

+    <tr>

+        <td>@ref LVVIDHEADER_CONFIGURATIONS_WIDEBAND_MASK1</td>

+        <td>2</td>

+        <td>WideBand configuration is present in the LVVE</td>

+    </tr>

+</table> */

+typedef LVM_UINT16 LVVIDHeader_Configurations_Mask1_bm;

+/**

+* @def LVVIDHEADER_CONFIGURATIONS_WIDEBAND_MASK1

+* WideBand configuration is present in the LVVE

+* @see LVVIDHeader_Configurations_Mask1_bm

+*/

+#define LVVIDHEADER_CONFIGURATIONS_WIDEBAND_MASK1 ((LVVIDHeader_Configurations_Mask1_bm)2)

+/**

+* @def LVVIDHEADER_CONFIGURATIONS_MASK1_BM_MIN

+* Minimal value for LVVIDHeader_Configurations_Mask1_bm

+* @see LVVIDHeader_Configurations_Mask1_bm

+*/

+#define LVVIDHEADER_CONFIGURATIONS_MASK1_BM_MIN ((LVVIDHeader_Configurations_Mask1_bm)0)

+/**

+* @def LVVIDHEADER_CONFIGURATIONS_MASK1_BM_MAX

+* Maximal value for LVVIDHeader_Configurations_Mask1_bm

+* @see LVVIDHeader_Configurations_Mask1_bm

+*/

+#define LVVIDHEADER_CONFIGURATIONS_WIDEBAND_MASK1_FORMAX ((LVVIDHeader_Configurations_Mask1_bm)2)

+#define LVVIDHEADER_CONFIGURATIONS_MASK1_BM_MAX (LVVIDHEADER_CONFIGURATIONS_WIDEBAND_MASK1_FORMAX | ((LVVIDHeader_Configurations_Mask1_bm)0))

+/**

+<table border>

+    <tr>

+        <td><b>Name</b></td>

+        <td><b>Value</b></td>

+        <td><b>Description</b></td>

+    </tr>

+</table> */

+typedef LVM_UINT16 LVVIDHeader_Configurations_Mask2_bm;

+/**

+* @def LVVIDHEADER_CONFIGURATIONS_MASK2_BM_MIN

+* Minimal value for LVVIDHeader_Configurations_Mask2_bm

+* @see LVVIDHeader_Configurations_Mask2_bm

+*/

+#define LVVIDHEADER_CONFIGURATIONS_MASK2_BM_MIN ((LVVIDHeader_Configurations_Mask2_bm)0)

+/**

+* @def LVVIDHEADER_CONFIGURATIONS_MASK2_BM_MAX

+* Maximal value for LVVIDHeader_Configurations_Mask2_bm

+* @see LVVIDHeader_Configurations_Mask2_bm

+*/

+#define LVVIDHEADER_CONFIGURATIONS_MASK2_BM_MAX (((LVVIDHeader_Configurations_Mask2_bm)0))

+/**

+<table border>

+    <tr>

+        <td><b>Name</b></td>

+        <td><b>Value</b></td>

+        <td><b>Description</b></td>

+    </tr>

+    <tr>

+        <td>@ref LVVC_MODE_AVL</td>

+        <td>2</td>

+        <td>Turns on or off the AGC. If off both AGC and Limiter are bypassed.</td>

+    </tr>

+    <tr>

+        <td>@ref LVVC_MODE_AVL_ADAPT</td>

+        <td>4</td>

+        <td>Allows turning off the dependency of the AGC upon the nearend noise level. When turned off, the AGC uses the default parameters.</td>

+    </tr>

+    <tr>

+        <td>@ref LVVC_MODE_AVL_SPDETECT</td>

+        <td>8</td>

+        <td>Allows disabling speech detection in the AGC. When turned off, the AGC adapts its gain all the time.</td>

+    </tr>

+    <tr>

+        <td>@ref LVVC_MODE_LIMITER</td>

+        <td>16</td>

+        <td>Turns on or off the limiter.</td>

+    </tr>

+    <tr>

+        <td>@ref LVVC_MODE_LPF</td>

+        <td>32</td>

+        <td>Turns on or off the low-pass filter.</td>

+    </tr>

+    <tr>

+        <td>@ref LVVC_MODE_HPF</td>

+        <td>64</td>

+        <td>Turns on or off the high-pass filter.</td>

+    </tr>

+    <tr>

+        <td>@ref LVVC_MODE_VC</td>

+        <td>128</td>

+        <td>Turns on or off the VoiceClarity gain.</td>

+    </tr>

+</table> */

+typedef LVM_UINT16 LVVC_ModeWord_bm;

+/**

+* @def LVVC_MODE_AVL

+* Turns on or off the AGC. If off both AGC and Limiter are bypassed.

+* @see LVVC_ModeWord_bm

+*/

+#define LVVC_MODE_AVL ((LVVC_ModeWord_bm)2)

+/**

+* @def LVVC_MODE_AVL_ADAPT

+* Allows turning off the dependency of the AGC upon the nearend noise level. When turned off, the AGC uses the default parameters.

+* @see LVVC_ModeWord_bm

+*/

+#define LVVC_MODE_AVL_ADAPT ((LVVC_ModeWord_bm)4)

+/**

+* @def LVVC_MODE_AVL_SPDETECT

+* Allows disabling speech detection in the AGC. When turned off, the AGC adapts its gain all the time.

+* @see LVVC_ModeWord_bm

+*/

+#define LVVC_MODE_AVL_SPDETECT ((LVVC_ModeWord_bm)8)

+/**

+* @def LVVC_MODE_LIMITER

+* Turns on or off the limiter.

+* @see LVVC_ModeWord_bm

+*/

+#define LVVC_MODE_LIMITER ((LVVC_ModeWord_bm)16)

+/**

+* @def LVVC_MODE_LPF

+* Turns on or off the low-pass filter.

+* @see LVVC_ModeWord_bm

+*/

+#define LVVC_MODE_LPF ((LVVC_ModeWord_bm)32)

+/**

+* @def LVVC_MODE_HPF

+* Turns on or off the high-pass filter.

+* @see LVVC_ModeWord_bm

+*/

+#define LVVC_MODE_HPF ((LVVC_ModeWord_bm)64)

+/**

+* @def LVVC_MODE_VC

+* Turns on or off the VoiceClarity gain.

+* @see LVVC_ModeWord_bm

+*/

+#define LVVC_MODE_VC ((LVVC_ModeWord_bm)128)

+/**

+* @def LVVC_MODEWORD_BM_MIN

+* Minimal value for LVVC_ModeWord_bm

+* @see LVVC_ModeWord_bm

+*/

+#define LVVC_MODEWORD_BM_MIN ((LVVC_ModeWord_bm)0)

+/**

+* @def LVVC_MODEWORD_BM_MAX

+* Maximal value for LVVC_ModeWord_bm

+* @see LVVC_ModeWord_bm

+*/

+#define LVVC_MODE_AVL_FORMAX ((LVVC_ModeWord_bm)2)

+#define LVVC_MODE_AVL_ADAPT_FORMAX ((LVVC_ModeWord_bm)4)

+#define LVVC_MODE_AVL_SPDETECT_FORMAX ((LVVC_ModeWord_bm)8)

+#define LVVC_MODE_LIMITER_FORMAX ((LVVC_ModeWord_bm)16)

+#define LVVC_MODE_LPF_FORMAX ((LVVC_ModeWord_bm)32)

+#define LVVC_MODE_HPF_FORMAX ((LVVC_ModeWord_bm)64)

+#define LVVC_MODE_VC_FORMAX ((LVVC_ModeWord_bm)128)

+#define LVVC_MODEWORD_BM_MAX (LVVC_MODE_AVL_FORMAX | LVVC_MODE_AVL_ADAPT_FORMAX | LVVC_MODE_AVL_SPDETECT_FORMAX | LVVC_MODE_LIMITER_FORMAX | LVVC_MODE_LPF_FORMAX | LVVC_MODE_HPF_FORMAX | LVVC_MODE_VC_FORMAX | ((LVVC_ModeWord_bm)0))

+/**

+<table border>

+    <tr>

+        <td><b>Name</b></td>

+        <td><b>Value</b></td>

+        <td><b>Description</b></td>

+    </tr>

+    <tr>

+        <td>@ref LVFENS_MODE_HS</td>

+        <td>1</td>

+        <td>Switch ON and OFF Horn Suppressor. Currently Horn Suppressor is not supported.</td>

+    </tr>

+</table> */

+typedef LVM_UINT16 LVFENS_ModeWord_bm;

+/**

+* @def LVFENS_MODE_HS

+* Switch ON and OFF Horn Suppressor. Currently Horn Suppressor is not supported.

+* @see LVFENS_ModeWord_bm

+*/

+#define LVFENS_MODE_HS ((LVFENS_ModeWord_bm)1)

+/**

+* @def LVFENS_MODEWORD_BM_MIN

+* Minimal value for LVFENS_ModeWord_bm

+* @see LVFENS_ModeWord_bm

+*/

+#define LVFENS_MODEWORD_BM_MIN ((LVFENS_ModeWord_bm)0)

+/**

+* @def LVFENS_MODEWORD_BM_MAX

+* Maximal value for LVFENS_ModeWord_bm

+* @see LVFENS_ModeWord_bm

+*/

+#define LVFENS_MODE_HS_FORMAX ((LVFENS_ModeWord_bm)1)

+#define LVFENS_MODEWORD_BM_MAX (LVFENS_MODE_HS_FORMAX | ((LVFENS_ModeWord_bm)0))

+/**

+<table border>

+    <tr>

+        <td><b>Name</b></td>

+        <td><b>Value</b></td>

+        <td><b>Description</b></td>

+    </tr>

+    <tr>

+        <td>@ref LVWM_MODE_AVL</td>

+        <td>1</td>

+        <td>Turns on or off the AVL. If off, both AGC and Limiter are bypassed</td>

+    </tr>

+    <tr>

+        <td>@ref LVWM_MODE_SPDETECT</td>

+        <td>2</td>

+        <td>Allows disabling speech detection in the AVL. When turned off, the AGC adapts its gain all the time.</td>

+    </tr>

+    <tr>

+        <td>@ref LVWM_MODE_LIMITER</td>

+        <td>4</td>

+        <td>Turns on or off the limiter.</td>

+    </tr>

+    <tr>

+        <td>@ref LVWM_MODE_EXT_SPDETECT</td>

+        <td>8</td>

+        <td>Used to tell the WhisperMode module if an external speech detection is available (If 0, there is no external speech detector).</td>

+    </tr>

+</table> */

+typedef LVM_UINT16 LVWM_ModeWord_bm;

+/**

+* @def LVWM_MODE_AVL

+* Turns on or off the AVL. If off, both AGC and Limiter are bypassed

+* @see LVWM_ModeWord_bm

+*/

+#define LVWM_MODE_AVL ((LVWM_ModeWord_bm)1)

+/**

+* @def LVWM_MODE_SPDETECT

+* Allows disabling speech detection in the AVL. When turned off, the AGC adapts its gain all the time.

+* @see LVWM_ModeWord_bm

+*/

+#define LVWM_MODE_SPDETECT ((LVWM_ModeWord_bm)2)

+/**

+* @def LVWM_MODE_LIMITER

+* Turns on or off the limiter.

+* @see LVWM_ModeWord_bm

+*/

+#define LVWM_MODE_LIMITER ((LVWM_ModeWord_bm)4)

+/**

+* @def LVWM_MODE_EXT_SPDETECT

+* Used to tell the WhisperMode module if an external speech detection is available (If 0, there is no external speech detector).

+* @see LVWM_ModeWord_bm

+*/

+#define LVWM_MODE_EXT_SPDETECT ((LVWM_ModeWord_bm)8)

+/**

+* @def LVWM_MODEWORD_BM_MIN

+* Minimal value for LVWM_ModeWord_bm

+* @see LVWM_ModeWord_bm

+*/

+#define LVWM_MODEWORD_BM_MIN ((LVWM_ModeWord_bm)0)

+/**

+* @def LVWM_MODEWORD_BM_MAX

+* Maximal value for LVWM_ModeWord_bm

+* @see LVWM_ModeWord_bm

+*/

+#define LVWM_MODE_AVL_FORMAX ((LVWM_ModeWord_bm)1)

+#define LVWM_MODE_SPDETECT_FORMAX ((LVWM_ModeWord_bm)2)

+#define LVWM_MODE_LIMITER_FORMAX ((LVWM_ModeWord_bm)4)

+#define LVWM_MODE_EXT_SPDETECT_FORMAX ((LVWM_ModeWord_bm)8)

+#define LVWM_MODEWORD_BM_MAX (LVWM_MODE_AVL_FORMAX | LVWM_MODE_SPDETECT_FORMAX | LVWM_MODE_LIMITER_FORMAX | LVWM_MODE_EXT_SPDETECT_FORMAX | ((LVWM_ModeWord_bm)0))

+/**

+<table border>

+    <tr>

+        <td><b>Name</b></td>

+        <td><b>Value</b></td>

+        <td><b>Description</b></td>

+    </tr>

+    <tr>

+        <td>@ref MODE_NLMS0</td>

+        <td>1</td>

+        <td>NLMS0 functionality</td>

+    </tr>

+    <tr>

+        <td>@ref MODE_NLMS1</td>

+        <td>2</td>

+        <td>NLMS1 functionality</td>

+    </tr>

+    <tr>

+        <td>@ref MODE_BEAMFORMER</td>

+        <td>4</td>

+        <td>Fiter-and-Sum Beamformer functionality</td>

+    </tr>

+    <tr>

+        <td>@ref MODE_PCD</td>

+        <td>8</td>

+        <td>Switch between PCD (Path change detector) and BSD (Broadside detector)</td>

+    </tr>

+    <tr>

+        <td>@ref MODE_GSC</td>

+        <td>16</td>

+        <td>Generalized Sidelobe Canceller functionality</td>

+    </tr>

+    <tr>

+        <td>@ref MODE_DNNS</td>

+        <td>32</td>

+        <td>Dynamic Non-stationary Noise Suppression functionality</td>

+    </tr>

+    <tr>

+        <td>@ref MODE_DES</td>

+        <td>64</td>

+        <td>Dynamic Echo Suppression functionality</td>

+    </tr>

+    <tr>

+        <td>@ref MODE_NS</td>

+        <td>128</td>

+        <td>Stationary Noise Suppression functionality</td>

+    </tr>

+    <tr>

+        <td>@ref MODE_NS_N</td>

+        <td>256</td>

+        <td>Non-stationary Noise Suppression functionality</td>

+    </tr>

+    <tr>

+        <td>@ref MODE_CAL</td>

+        <td>2048</td>

+        <td>Switch between initial or continuous calibration</td>

+    </tr>

+    <tr>

+        <td>@ref MODE_HB</td>

+        <td>16384</td>

+        <td>High Band mute/activated</td>

+    </tr>

+    <tr>

+        <td>@ref MODE_HS</td>

+        <td>32768</td>

+        <td>Horn Suppressor functionality (if available)</td>

+    </tr>

+</table> */

+typedef LVM_UINT16 LVNV_ModeWord_bm;

+/**

+* @def MODE_NLMS0

+* NLMS0 functionality

+* @see LVNV_ModeWord_bm

+*/

+#define MODE_NLMS0 ((LVNV_ModeWord_bm)1)

+/**

+* @def MODE_NLMS1

+* NLMS1 functionality

+* @see LVNV_ModeWord_bm

+*/

+#define MODE_NLMS1 ((LVNV_ModeWord_bm)2)

+/**

+* @def MODE_BEAMFORMER

+* Fiter-and-Sum Beamformer functionality

+* @see LVNV_ModeWord_bm

+*/

+#define MODE_BEAMFORMER ((LVNV_ModeWord_bm)4)

+/**

+* @def MODE_PCD

+* Switch between PCD (Path change detector) and BSD (Broadside detector)

+* @see LVNV_ModeWord_bm

+*/

+#define MODE_PCD ((LVNV_ModeWord_bm)8)

+/**

+* @def MODE_GSC

+* Generalized Sidelobe Canceller functionality

+* @see LVNV_ModeWord_bm

+*/

+#define MODE_GSC ((LVNV_ModeWord_bm)16)

+/**

+* @def MODE_DNNS

+* Dynamic Non-stationary Noise Suppression functionality

+* @see LVNV_ModeWord_bm

+*/

+#define MODE_DNNS ((LVNV_ModeWord_bm)32)

+/**

+* @def MODE_DES

+* Dynamic Echo Suppression functionality

+* @see LVNV_ModeWord_bm

+*/

+#define MODE_DES ((LVNV_ModeWord_bm)64)

+/**

+* @def MODE_NS

+* Stationary Noise Suppression functionality

+* @see LVNV_ModeWord_bm

+*/

+#define MODE_NS ((LVNV_ModeWord_bm)128)

+/**

+* @def MODE_NS_N

+* Non-stationary Noise Suppression functionality

+* @see LVNV_ModeWord_bm

+*/

+#define MODE_NS_N ((LVNV_ModeWord_bm)256)

+/**

+* @def MODE_CAL

+* Switch between initial or continuous calibration

+* @see LVNV_ModeWord_bm

+*/

+#define MODE_CAL ((LVNV_ModeWord_bm)2048)

+/**

+* @def MODE_HB

+* High Band mute/activated

+* @see LVNV_ModeWord_bm

+*/

+#define MODE_HB ((LVNV_ModeWord_bm)16384)

+/**

+* @def MODE_HS

+* Horn Suppressor functionality (if available)

+* @see LVNV_ModeWord_bm

+*/

+#define MODE_HS ((LVNV_ModeWord_bm)32768)

+/**

+* @def LVNV_MODEWORD_BM_MIN

+* Minimal value for LVNV_ModeWord_bm

+* @see LVNV_ModeWord_bm

+*/

+#define LVNV_MODEWORD_BM_MIN ((LVNV_ModeWord_bm)0)

+/**

+* @def LVNV_MODEWORD_BM_MAX

+* Maximal value for LVNV_ModeWord_bm

+* @see LVNV_ModeWord_bm

+*/

+#define MODE_NLMS0_FORMAX ((LVNV_ModeWord_bm)1)

+#define MODE_NLMS1_FORMAX ((LVNV_ModeWord_bm)2)

+#define MODE_BEAMFORMER_FORMAX ((LVNV_ModeWord_bm)4)

+#define MODE_PCD_FORMAX ((LVNV_ModeWord_bm)8)

+#define MODE_GSC_FORMAX ((LVNV_ModeWord_bm)16)

+#define MODE_DNNS_FORMAX ((LVNV_ModeWord_bm)32)

+#define MODE_DES_FORMAX ((LVNV_ModeWord_bm)64)

+#define MODE_NS_FORMAX ((LVNV_ModeWord_bm)128)

+#define MODE_NS_N_FORMAX ((LVNV_ModeWord_bm)256)

+#define MODE_CAL_FORMAX ((LVNV_ModeWord_bm)2048)

+#define MODE_HB_FORMAX ((LVNV_ModeWord_bm)16384)

+#define MODE_HS_FORMAX ((LVNV_ModeWord_bm)32768)

+#define LVNV_MODEWORD_BM_MAX (MODE_NLMS0_FORMAX | MODE_NLMS1_FORMAX | MODE_BEAMFORMER_FORMAX | MODE_PCD_FORMAX | MODE_GSC_FORMAX | MODE_DNNS_FORMAX | MODE_DES_FORMAX | MODE_NS_FORMAX | MODE_NS_N_FORMAX | MODE_CAL_FORMAX | MODE_HB_FORMAX | MODE_HS_FORMAX | ((LVNV_ModeWord_bm)0))

+/**

+<table border>

+    <tr>

+        <td><b>Name</b></td>

+        <td><b>Value</b></td>

+        <td><b>Description</b></td>

+    </tr>

+    <tr>

+        <td>@ref MODE2_FSB_CARDIOID</td>

+        <td>1</td>

+        <td>FSB update based on speech detection in cardioid</td>

+    </tr>

+    <tr>

+        <td>@ref MODE2_FSB_WITHINBEAM</td>

+        <td>2</td>

+        <td>FSB update based on withinbeam detection</td>

+    </tr>

+    <tr>

+        <td>@ref MODE2_CAL_UPDATE</td>

+        <td>4</td>

+        <td>Switch for calibration functionality between updated or not-updated</td>

+    </tr>

+    <tr>

+        <td>@ref MODE2_BEAMDAMAGE</td>

+        <td>8</td>

+        <td>Microphone coverage protection</td>

+    </tr>

+</table> */

+typedef LVM_UINT16 LVNV_Mode2Word_bm;

+/**

+* @def MODE2_FSB_CARDIOID

+* FSB update based on speech detection in cardioid

+* @see LVNV_Mode2Word_bm

+*/

+#define MODE2_FSB_CARDIOID ((LVNV_Mode2Word_bm)1)

+/**

+* @def MODE2_FSB_WITHINBEAM

+* FSB update based on withinbeam detection

+* @see LVNV_Mode2Word_bm

+*/

+#define MODE2_FSB_WITHINBEAM ((LVNV_Mode2Word_bm)2)

+/**

+* @def MODE2_CAL_UPDATE

+* Switch for calibration functionality between updated or not-updated

+* @see LVNV_Mode2Word_bm

+*/

+#define MODE2_CAL_UPDATE ((LVNV_Mode2Word_bm)4)

+/**

+* @def MODE2_BEAMDAMAGE

+* Microphone coverage protection

+* @see LVNV_Mode2Word_bm

+*/

+#define MODE2_BEAMDAMAGE ((LVNV_Mode2Word_bm)8)

+/**

+* @def LVNV_MODE2WORD_BM_MIN

+* Minimal value for LVNV_Mode2Word_bm

+* @see LVNV_Mode2Word_bm

+*/

+#define LVNV_MODE2WORD_BM_MIN ((LVNV_Mode2Word_bm)0)

+/**

+* @def LVNV_MODE2WORD_BM_MAX

+* Maximal value for LVNV_Mode2Word_bm

+* @see LVNV_Mode2Word_bm

+*/

+#define MODE2_FSB_CARDIOID_FORMAX ((LVNV_Mode2Word_bm)1)

+#define MODE2_FSB_WITHINBEAM_FORMAX ((LVNV_Mode2Word_bm)2)

+#define MODE2_CAL_UPDATE_FORMAX ((LVNV_Mode2Word_bm)4)

+#define MODE2_BEAMDAMAGE_FORMAX ((LVNV_Mode2Word_bm)8)

+#define LVNV_MODE2WORD_BM_MAX (MODE2_FSB_CARDIOID_FORMAX | MODE2_FSB_WITHINBEAM_FORMAX | MODE2_CAL_UPDATE_FORMAX | MODE2_BEAMDAMAGE_FORMAX | ((LVNV_Mode2Word_bm)0))

+/**

+<table border>

+    <tr>

+        <td><b>Name</b></td>

+        <td><b>Value</b></td>

+        <td><b>Description</b></td>

+    </tr>

+    <tr>

+        <td>@ref TUNING_MODE_NLMS1</td>

+        <td>1</td>

+        <td>NLMS1 output</td>

+    </tr>

+    <tr>

+        <td>@ref TUNING_MODE_FSB</td>

+        <td>2</td>

+        <td>FSB noise reference output</td>

+    </tr>

+    <tr>

+        <td>@ref TUNING_MODE_WITHINBEAM</td>

+        <td>8</td>

+        <td>Tuning beep when Withinbeam=1</td>

+    </tr>

+    <tr>

+        <td>@ref TUNING_MODE_UPDATEONOFF</td>

+        <td>16</td>

+        <td>Tuning beep when FSB is updated</td>

+    </tr>

+    <tr>

+        <td>@ref TUNING_MODE_CAL_MICPOW</td>

+        <td>64</td>

+        <td>Tuning beep when MicPow is lower than Cal_micPowFloorMin</td>

+    </tr>

+    <tr>

+        <td>@ref TUNING_MODE_BROADSIDE</td>

+        <td>128</td>

+        <td>Tuning beep when broadside is detected</td>

+    </tr>

+</table> */

+typedef LVM_UINT16 LVNV_TuningModeWord_bm;

+/**

+* @def TUNING_MODE_NLMS1

+* NLMS1 output

+* @see LVNV_TuningModeWord_bm

+*/

+#define TUNING_MODE_NLMS1 ((LVNV_TuningModeWord_bm)1)

+/**

+* @def TUNING_MODE_FSB

+* FSB noise reference output

+* @see LVNV_TuningModeWord_bm

+*/

+#define TUNING_MODE_FSB ((LVNV_TuningModeWord_bm)2)

+/**

+* @def TUNING_MODE_WITHINBEAM

+* Tuning beep when Withinbeam=1

+* @see LVNV_TuningModeWord_bm

+*/

+#define TUNING_MODE_WITHINBEAM ((LVNV_TuningModeWord_bm)8)

+/**

+* @def TUNING_MODE_UPDATEONOFF

+* Tuning beep when FSB is updated

+* @see LVNV_TuningModeWord_bm

+*/

+#define TUNING_MODE_UPDATEONOFF ((LVNV_TuningModeWord_bm)16)

+/**

+* @def TUNING_MODE_CAL_MICPOW

+* Tuning beep when MicPow is lower than Cal_micPowFloorMin

+* @see LVNV_TuningModeWord_bm

+*/

+#define TUNING_MODE_CAL_MICPOW ((LVNV_TuningModeWord_bm)64)

+/**

+* @def TUNING_MODE_BROADSIDE

+* Tuning beep when broadside is detected

+* @see LVNV_TuningModeWord_bm

+*/

+#define TUNING_MODE_BROADSIDE ((LVNV_TuningModeWord_bm)128)

+/**

+* @def LVNV_TUNINGMODEWORD_BM_MIN

+* Minimal value for LVNV_TuningModeWord_bm

+* @see LVNV_TuningModeWord_bm

+*/

+#define LVNV_TUNINGMODEWORD_BM_MIN ((LVNV_TuningModeWord_bm)0)

+/**

+* @def LVNV_TUNINGMODEWORD_BM_MAX

+* Maximal value for LVNV_TuningModeWord_bm

+* @see LVNV_TuningModeWord_bm

+*/

+#define TUNING_MODE_NLMS1_FORMAX ((LVNV_TuningModeWord_bm)1)

+#define TUNING_MODE_FSB_FORMAX ((LVNV_TuningModeWord_bm)2)

+#define TUNING_MODE_WITHINBEAM_FORMAX ((LVNV_TuningModeWord_bm)8)

+#define TUNING_MODE_UPDATEONOFF_FORMAX ((LVNV_TuningModeWord_bm)16)

+#define TUNING_MODE_CAL_MICPOW_FORMAX ((LVNV_TuningModeWord_bm)64)

+#define TUNING_MODE_BROADSIDE_FORMAX ((LVNV_TuningModeWord_bm)128)

+#define LVNV_TUNINGMODEWORD_BM_MAX (TUNING_MODE_NLMS1_FORMAX | TUNING_MODE_FSB_FORMAX | TUNING_MODE_WITHINBEAM_FORMAX | TUNING_MODE_UPDATEONOFF_FORMAX | TUNING_MODE_CAL_MICPOW_FORMAX | TUNING_MODE_BROADSIDE_FORMAX | ((LVNV_TuningModeWord_bm)0))

+/**

+<table border>

+    <tr>

+        <td><b>Name</b></td>

+        <td><b>Value</b></td>

+        <td><b>Description</b></td>

+    </tr>

+    <tr>

+        <td>@ref LVNV_STATUS_LOST_BEAM</td>

+        <td>1</td>

+        <td>LostBeam detections</td>

+    </tr>

+    <tr>

+        <td>@ref LVNV_STATUS_MIC_COV</td>

+        <td>2</td>

+        <td>Microphone Coverage detections</td>

+    </tr>

+    <tr>

+        <td>@ref LVNV_STATUS_FSB_UPDATE</td>

+        <td>4</td>

+        <td>FSB updates</td>

+    </tr>

+    <tr>

+        <td>@ref LVNV_STATUS_BEAM_DAMAGE</td>

+        <td>8</td>

+        <td>BeamDamage detections</td>

+    </tr>

+    <tr>

+        <td>@ref LVNV_STATUS_GSC_UPDATE</td>

+        <td>16</td>

+        <td>GSC updates</td>

+    </tr>

+    <tr>

+        <td>@ref LVNV_STATUS_DNNS_WBEAM</td>

+        <td>32</td>

+        <td>DNNS WithinBeam detections</td>

+    </tr>

+    <tr>

+        <td>@ref LVNV_STATUS_DNNS_ACTIVITY</td>

+        <td>64</td>

+        <td>DNNS activity detections</td>

+    </tr>

+    <tr>

+        <td>@ref LVNV_STATUS_CAL_MICPOW</td>

+        <td>128</td>

+        <td>Calibration Microphone Power</td>

+    </tr>

+    <tr>

+        <td>@ref LVNV_STATUS_MICPOWSP</td>

+        <td>256</td>

+        <td>(LV1008) MicPow Speech detections</td>

+    </tr>

+    <tr>

+        <td>@ref LVNV_STATUS_BROADSIDE_FLAG</td>

+        <td>512</td>

+        <td>(LV2370) Broadside detection flag</td>

+    </tr>

+    <tr>

+        <td>@ref LVNV_STATUS_CAL_UPDATED</td>

+        <td>1024</td>

+        <td>(LV8237) Calibration updated flag</td>

+    </tr>

+    <tr>

+        <td>@ref LVNV_STATUS_WBEAM_FIX</td>

+        <td>2048</td>

+        <td>WithinBeam detection for Fixed Beamformer (if available).</td>

+    </tr>

+</table> */

+typedef LVM_UINT16 LVNV_StatusWord_bm;

+/**

+* @def LVNV_STATUS_LOST_BEAM

+* LostBeam detections

+* @see LVNV_StatusWord_bm

+*/

+#define LVNV_STATUS_LOST_BEAM ((LVNV_StatusWord_bm)1)

+/**

+* @def LVNV_STATUS_MIC_COV

+* Microphone Coverage detections

+* @see LVNV_StatusWord_bm

+*/

+#define LVNV_STATUS_MIC_COV ((LVNV_StatusWord_bm)2)

+/**

+* @def LVNV_STATUS_FSB_UPDATE

+* FSB updates

+* @see LVNV_StatusWord_bm

+*/

+#define LVNV_STATUS_FSB_UPDATE ((LVNV_StatusWord_bm)4)

+/**

+* @def LVNV_STATUS_BEAM_DAMAGE

+* BeamDamage detections

+* @see LVNV_StatusWord_bm

+*/

+#define LVNV_STATUS_BEAM_DAMAGE ((LVNV_StatusWord_bm)8)

+/**

+* @def LVNV_STATUS_GSC_UPDATE

+* GSC updates

+* @see LVNV_StatusWord_bm

+*/

+#define LVNV_STATUS_GSC_UPDATE ((LVNV_StatusWord_bm)16)

+/**

+* @def LVNV_STATUS_DNNS_WBEAM

+* DNNS WithinBeam detections

+* @see LVNV_StatusWord_bm

+*/

+#define LVNV_STATUS_DNNS_WBEAM ((LVNV_StatusWord_bm)32)

+/**

+* @def LVNV_STATUS_DNNS_ACTIVITY

+* DNNS activity detections

+* @see LVNV_StatusWord_bm

+*/

+#define LVNV_STATUS_DNNS_ACTIVITY ((LVNV_StatusWord_bm)64)

+/**

+* @def LVNV_STATUS_CAL_MICPOW

+* Calibration Microphone Power

+* @see LVNV_StatusWord_bm

+*/

+#define LVNV_STATUS_CAL_MICPOW ((LVNV_StatusWord_bm)128)

+/**

+* @def LVNV_STATUS_MICPOWSP

+* (LV1008) MicPow Speech detections

+* @see LVNV_StatusWord_bm

+*/

+#define LVNV_STATUS_MICPOWSP ((LVNV_StatusWord_bm)256)

+/**

+* @def LVNV_STATUS_BROADSIDE_FLAG

+* (LV2370) Broadside detection flag

+* @see LVNV_StatusWord_bm

+*/

+#define LVNV_STATUS_BROADSIDE_FLAG ((LVNV_StatusWord_bm)512)

+/**

+* @def LVNV_STATUS_CAL_UPDATED

+* (LV8237) Calibration updated flag

+* @see LVNV_StatusWord_bm

+*/

+#define LVNV_STATUS_CAL_UPDATED ((LVNV_StatusWord_bm)1024)

+/**

+* @def LVNV_STATUS_WBEAM_fix

+* WithinBeam detection for Fixed Beamformer (if available).

+* @see LVNV_StatusWord_bm

+*/

+#define LVNV_STATUS_WBEAM_FIX ((LVNV_StatusWord_bm)2048)

+/**

+* @def LVNV_STATUSWORD_BM_MIN

+* Minimal value for LVNV_StatusWord_bm

+* @see LVNV_StatusWord_bm

+*/

+#define LVNV_STATUSWORD_BM_MIN ((LVNV_StatusWord_bm)0)

+/**

+* @def LVNV_STATUSWORD_BM_MAX

+* Maximal value for LVNV_StatusWord_bm

+* @see LVNV_StatusWord_bm

+*/

+#define LVNV_STATUS_LOST_BEAM_FORMAX ((LVNV_StatusWord_bm)1)

+#define LVNV_STATUS_MIC_COV_FORMAX ((LVNV_StatusWord_bm)2)

+#define LVNV_STATUS_FSB_UPDATE_FORMAX ((LVNV_StatusWord_bm)4)

+#define LVNV_STATUS_BEAM_DAMAGE_FORMAX ((LVNV_StatusWord_bm)8)

+#define LVNV_STATUS_GSC_UPDATE_FORMAX ((LVNV_StatusWord_bm)16)

+#define LVNV_STATUS_DNNS_WBEAM_FORMAX ((LVNV_StatusWord_bm)32)

+#define LVNV_STATUS_DNNS_ACTIVITY_FORMAX ((LVNV_StatusWord_bm)64)

+#define LVNV_STATUS_CAL_MICPOW_FORMAX ((LVNV_StatusWord_bm)128)

+#define LVNV_STATUS_MICPOWSP_FORMAX ((LVNV_StatusWord_bm)256)

+#define LVNV_STATUS_BROADSIDE_FLAG_FORMAX ((LVNV_StatusWord_bm)512)

+#define LVNV_STATUS_CAL_UPDATED_FORMAX ((LVNV_StatusWord_bm)1024)

+#define LVNV_STATUS_WBEAM_FIX_FORMAX ((LVNV_StatusWord_bm)2048)

+#define LVNV_STATUSWORD_BM_MAX (LVNV_STATUS_LOST_BEAM_FORMAX | LVNV_STATUS_MIC_COV_FORMAX | LVNV_STATUS_FSB_UPDATE_FORMAX | LVNV_STATUS_BEAM_DAMAGE_FORMAX | LVNV_STATUS_GSC_UPDATE_FORMAX | LVNV_STATUS_DNNS_WBEAM_FORMAX | LVNV_STATUS_DNNS_ACTIVITY_FORMAX | LVNV_STATUS_CAL_MICPOW_FORMAX | LVNV_STATUS_MICPOWSP_FORMAX | LVNV_STATUS_BROADSIDE_FLAG_FORMAX | LVNV_STATUS_CAL_UPDATED_FORMAX | LVNV_STATUS_WBEAM_FIX_FORMAX | ((LVNV_StatusWord_bm)0))

+/**

+<table border>

+    <tr>

+        <td><b>Name</b></td>

+        <td><b>Value</b></td>

+        <td><b>Description</b></td>

+    </tr>

+    <tr>

+        <td>@ref LVHF_CONTROL_TUNE_PATHCHANGE</td>

+        <td>1</td>

+        <td>PCD tuning beep</td>

+    </tr>

+    <tr>

+        <td>@ref LVHF_CONTROL_TUNE_CLIP</td>

+        <td>2</td>

+        <td>SPDET_x_clip tuning beep</td>

+    </tr>

+    <tr>

+        <td>@ref LVHF_CONTROL_TUNE_FAR_SPEAKS</td>

+        <td>4</td>

+        <td>SPDET_far tuning beep</td>

+    </tr>

+    <tr>

+        <td>@ref LVHF_CONTROL_TUNE_MIC_SPEAKS</td>

+        <td>8</td>

+        <td>SPDET_mic tuning beep</td>

+    </tr>

+    <tr>

+        <td>@ref LVHF_CONTROL_TUNE_HB_MUTE</td>

+        <td>16</td>

+        <td>Mute high band (4kHz-8kHz). Should be disabled by default.</td>

+    </tr>

+    <tr>

+        <td>@ref LVHF_CONTROL_TUNE_TB_MUTE</td>

+        <td>32</td>

+        <td>Mute top band (above 8kHz). Should be disabled by default.</td>

+    </tr>

+</table> */

+typedef LVM_UINT16 LVHF_TuningModeWord;

+/**

+* @def LVHF_CONTROL_TUNE_PATHCHANGE

+* PCD tuning beep

+* @see LVHF_TuningModeWord

+*/

+#define LVHF_CONTROL_TUNE_PATHCHANGE ((LVHF_TuningModeWord)1)

+/**

+* @def LVHF_CONTROL_TUNE_CLIP

+* SPDET_x_clip tuning beep

+* @see LVHF_TuningModeWord

+*/

+#define LVHF_CONTROL_TUNE_CLIP ((LVHF_TuningModeWord)2)

+/**

+* @def LVHF_CONTROL_TUNE_FAR_SPEAKS

+* SPDET_far tuning beep

+* @see LVHF_TuningModeWord

+*/

+#define LVHF_CONTROL_TUNE_FAR_SPEAKS ((LVHF_TuningModeWord)4)

+/**

+* @def LVHF_CONTROL_TUNE_MIC_SPEAKS

+* SPDET_mic tuning beep

+* @see LVHF_TuningModeWord

+*/

+#define LVHF_CONTROL_TUNE_MIC_SPEAKS ((LVHF_TuningModeWord)8)

+/**

+* @def LVHF_CONTROL_TUNE_HB_MUTE

+* Mute high band (4kHz-8kHz). Should be disabled by default.

+* @see LVHF_TuningModeWord

+*/

+#define LVHF_CONTROL_TUNE_HB_MUTE ((LVHF_TuningModeWord)16)

+/**

+* @def LVHF_CONTROL_TUNE_TB_MUTE

+* Mute top band (above 8kHz). Should be disabled by default.

+* @see LVHF_TuningModeWord

+*/

+#define LVHF_CONTROL_TUNE_TB_MUTE ((LVHF_TuningModeWord)32)

+/**

+* @def LVHF_TUNINGMODEWORD_MIN

+* Minimal value for LVHF_TuningModeWord

+* @see LVHF_TuningModeWord

+*/

+#define LVHF_TUNINGMODEWORD_MIN ((LVHF_TuningModeWord)0)

+/**

+* @def LVHF_TUNINGMODEWORD_MAX

+* Maximal value for LVHF_TuningModeWord

+* @see LVHF_TuningModeWord

+*/

+#define LVHF_CONTROL_TUNE_PATHCHANGE_FORMAX ((LVHF_TuningModeWord)1)

+#define LVHF_CONTROL_TUNE_CLIP_FORMAX ((LVHF_TuningModeWord)2)

+#define LVHF_CONTROL_TUNE_FAR_SPEAKS_FORMAX ((LVHF_TuningModeWord)4)

+#define LVHF_CONTROL_TUNE_MIC_SPEAKS_FORMAX ((LVHF_TuningModeWord)8)

+#define LVHF_CONTROL_TUNE_HB_MUTE_FORMAX ((LVHF_TuningModeWord)16)

+#define LVHF_CONTROL_TUNE_TB_MUTE_FORMAX ((LVHF_TuningModeWord)32)

+#define LVHF_TUNINGMODEWORD_MAX (LVHF_CONTROL_TUNE_PATHCHANGE_FORMAX | LVHF_CONTROL_TUNE_CLIP_FORMAX | LVHF_CONTROL_TUNE_FAR_SPEAKS_FORMAX | LVHF_CONTROL_TUNE_MIC_SPEAKS_FORMAX | LVHF_CONTROL_TUNE_HB_MUTE_FORMAX | LVHF_CONTROL_TUNE_TB_MUTE_FORMAX | ((LVHF_TuningModeWord)0))

+/**

+<table border>

+    <tr>

+        <td><b>Name</b></td>

+        <td><b>Value</b></td>

+        <td><b>Description</b></td>

+    </tr>

+    <tr>

+        <td>@ref LVHF_MODE_NLMS</td>

+        <td>1</td>

+        <td>NLMS functionality</td>

+    </tr>

+    <tr>

+        <td>@ref LVHF_MODE_DES</td>

+        <td>2</td>

+        <td>DES (Dynamic Echo Suppression)</td>

+    </tr>

+    <tr>

+        <td>@ref LVHF_MODE_NS</td>

+        <td>4</td>

+        <td>NS (Noise Suppression)</td>

+    </tr>

+    <tr>

+        <td>@ref LVHF_MODE_CNI</td>

+        <td>8</td>

+        <td>CNI (Comfort Noise Injection)</td>

+    </tr>

+    <tr>

+        <td>@ref LVHF_MODE_NLES</td>

+        <td>16</td>

+        <td>NLES (Non Linear Echo Suppression)</td>

+    </tr>

+    <tr>

+        <td>@ref LVHF_MODE_PCD_DT</td>

+        <td>64</td>

+        <td>DT (Double Talk) protection after PCD</td>

+    </tr>

+    <tr>

+        <td>@ref LVHF_MODE_PCD</td>

+        <td>128</td>

+        <td>PCD (Path Change Detector)</td>

+    </tr>

+    <tr>

+        <td>@ref LVHF_MODE_INIT_ES</td>

+        <td>256</td>

+        <td>Initial echo suppression setting by PCD_gamma_e_rescue</td>

+    </tr>

+    <tr>

+        <td>@ref LVHF_MODE_HS</td>

+        <td>512</td>

+        <td>HornSuppression (if available)</td>

+    </tr>

+    <tr>

+        <td>@ref LVHF_MODE_PRENLMS</td>

+        <td>4096</td>

+        <td>Pre-NLMS preprocessing</td>

+    </tr>

+</table> */

+typedef LVM_UINT16 LVHF_ModeWord_bm;

+/**

+* @def LVHF_MODE_NLMS

+* NLMS functionality

+* @see LVHF_ModeWord_bm

+*/

+#define LVHF_MODE_NLMS ((LVHF_ModeWord_bm)1)

+/**

+* @def LVHF_MODE_DES

+* DES (Dynamic Echo Suppression)

+* @see LVHF_ModeWord_bm

+*/

+#define LVHF_MODE_DES ((LVHF_ModeWord_bm)2)

+/**

+* @def LVHF_MODE_NS

+* NS (Noise Suppression)

+* @see LVHF_ModeWord_bm

+*/

+#define LVHF_MODE_NS ((LVHF_ModeWord_bm)4)

+/**

+* @def LVHF_MODE_CNI

+* CNI (Comfort Noise Injection)

+* @see LVHF_ModeWord_bm

+*/

+#define LVHF_MODE_CNI ((LVHF_ModeWord_bm)8)

+/**

+* @def LVHF_MODE_NLES

+* NLES (Non Linear Echo Suppression)

+* @see LVHF_ModeWord_bm

+*/

+#define LVHF_MODE_NLES ((LVHF_ModeWord_bm)16)

+/**

+* @def LVHF_MODE_PCD_DT

+* DT (Double Talk) protection after PCD

+* @see LVHF_ModeWord_bm

+*/

+#define LVHF_MODE_PCD_DT ((LVHF_ModeWord_bm)64)

+/**

+* @def LVHF_MODE_PCD

+* PCD (Path Change Detector)

+* @see LVHF_ModeWord_bm

+*/

+#define LVHF_MODE_PCD ((LVHF_ModeWord_bm)128)

+/**

+* @def LVHF_MODE_INIT_ES

+* Initial echo suppression setting by PCD_gamma_e_rescue

+* @see LVHF_ModeWord_bm

+*/

+#define LVHF_MODE_INIT_ES ((LVHF_ModeWord_bm)256)

+/**

+* @def LVHF_MODE_HS

+* HornSuppression (if available)

+* @see LVHF_ModeWord_bm

+*/

+#define LVHF_MODE_HS ((LVHF_ModeWord_bm)512)

+/**

+* @def LVHF_MODE_PRENLMS

+* Pre-NLMS preprocessing

+* @see LVHF_ModeWord_bm

+*/

+#define LVHF_MODE_PRENLMS ((LVHF_ModeWord_bm)4096)

+/**

+* @def LVHF_MODEWORD_BM_MIN

+* Minimal value for LVHF_ModeWord_bm

+* @see LVHF_ModeWord_bm

+*/

+#define LVHF_MODEWORD_BM_MIN ((LVHF_ModeWord_bm)0)

+/**

+* @def LVHF_MODEWORD_BM_MAX

+* Maximal value for LVHF_ModeWord_bm

+* @see LVHF_ModeWord_bm

+*/

+#define LVHF_MODE_NLMS_FORMAX ((LVHF_ModeWord_bm)1)

+#define LVHF_MODE_DES_FORMAX ((LVHF_ModeWord_bm)2)

+#define LVHF_MODE_NS_FORMAX ((LVHF_ModeWord_bm)4)

+#define LVHF_MODE_CNI_FORMAX ((LVHF_ModeWord_bm)8)

+#define LVHF_MODE_NLES_FORMAX ((LVHF_ModeWord_bm)16)

+#define LVHF_MODE_PCD_DT_FORMAX ((LVHF_ModeWord_bm)64)

+#define LVHF_MODE_PCD_FORMAX ((LVHF_ModeWord_bm)128)

+#define LVHF_MODE_INIT_ES_FORMAX ((LVHF_ModeWord_bm)256)

+#define LVHF_MODE_HS_FORMAX ((LVHF_ModeWord_bm)512)

+#define LVHF_MODE_PRENLMS_FORMAX ((LVHF_ModeWord_bm)4096)

+#define LVHF_MODEWORD_BM_MAX (LVHF_MODE_NLMS_FORMAX | LVHF_MODE_DES_FORMAX | LVHF_MODE_NS_FORMAX | LVHF_MODE_CNI_FORMAX | LVHF_MODE_NLES_FORMAX | LVHF_MODE_PCD_DT_FORMAX | LVHF_MODE_PCD_FORMAX | LVHF_MODE_INIT_ES_FORMAX | LVHF_MODE_HS_FORMAX | LVHF_MODE_PRENLMS_FORMAX | ((LVHF_ModeWord_bm)0))

+/**

+<table border>

+    <tr>

+        <td><b>Name</b></td>

+        <td><b>Value</b></td>

+        <td><b>Description</b></td>

+    </tr>

+    <tr>

+        <td>@ref LVHF_STATUS_FAR_SPEAKS</td>

+        <td>1</td>

+        <td>FarEnd is speaking</td>

+    </tr>

+    <tr>

+        <td>@ref LVHF_STATUS_FAR_STARTS</td>

+        <td>2</td>

+        <td>FarEnd starts to speak</td>

+    </tr>

+    <tr>

+        <td>@ref LVHF_STATUS_MIC_SPEAKS</td>

+        <td>4</td>

+        <td>Mic activity detected</td>

+    </tr>

+    <tr>

+        <td>@ref LVHF_STATUS_CLIP</td>

+        <td>8</td>

+        <td>Clipping Detected</td>

+    </tr>

+    <tr>

+        <td>@ref LVHF_STATUS_PATHCHANGE</td>

+        <td>16</td>

+        <td>Path Change detected</td>

+    </tr>

+</table> */

+typedef LVM_UINT16 LVHF_StatusWord_bm;

+/**

+* @def LVHF_STATUS_FAR_SPEAKS

+* FarEnd is speaking

+* @see LVHF_StatusWord_bm

+*/

+#define LVHF_STATUS_FAR_SPEAKS ((LVHF_StatusWord_bm)1)

+/**

+* @def LVHF_STATUS_FAR_STARTS

+* FarEnd starts to speak

+* @see LVHF_StatusWord_bm

+*/

+#define LVHF_STATUS_FAR_STARTS ((LVHF_StatusWord_bm)2)

+/**

+* @def LVHF_STATUS_MIC_SPEAKS

+* Mic activity detected

+* @see LVHF_StatusWord_bm

+*/

+#define LVHF_STATUS_MIC_SPEAKS ((LVHF_StatusWord_bm)4)

+/**

+* @def LVHF_STATUS_CLIP

+* Clipping Detected

+* @see LVHF_StatusWord_bm

+*/

+#define LVHF_STATUS_CLIP ((LVHF_StatusWord_bm)8)

+/**

+* @def LVHF_STATUS_PATHCHANGE

+* Path Change detected

+* @see LVHF_StatusWord_bm

+*/

+#define LVHF_STATUS_PATHCHANGE ((LVHF_StatusWord_bm)16)

+/**

+* @def LVHF_STATUSWORD_BM_MIN

+* Minimal value for LVHF_StatusWord_bm

+* @see LVHF_StatusWord_bm

+*/

+#define LVHF_STATUSWORD_BM_MIN ((LVHF_StatusWord_bm)0)

+/**

+* @def LVHF_STATUSWORD_BM_MAX

+* Maximal value for LVHF_StatusWord_bm

+* @see LVHF_StatusWord_bm

+*/

+#define LVHF_STATUS_FAR_SPEAKS_FORMAX ((LVHF_StatusWord_bm)1)

+#define LVHF_STATUS_FAR_STARTS_FORMAX ((LVHF_StatusWord_bm)2)

+#define LVHF_STATUS_MIC_SPEAKS_FORMAX ((LVHF_StatusWord_bm)4)

+#define LVHF_STATUS_CLIP_FORMAX ((LVHF_StatusWord_bm)8)

+#define LVHF_STATUS_PATHCHANGE_FORMAX ((LVHF_StatusWord_bm)16)

+#define LVHF_STATUSWORD_BM_MAX (LVHF_STATUS_FAR_SPEAKS_FORMAX | LVHF_STATUS_FAR_STARTS_FORMAX | LVHF_STATUS_MIC_SPEAKS_FORMAX | LVHF_STATUS_CLIP_FORMAX | LVHF_STATUS_PATHCHANGE_FORMAX | ((LVHF_StatusWord_bm)0))

+

+#define LVVIDHEADER_LVVE_RX_MASK1_LVWIREFORMAT_LENGTH (2) ///< Number of bytes to encode @ref LVVIDHeader_LVVE_Rx_Mask1_bm in LVWireFormat.

+

+#define LVVIDHEADER_LVVE_RX_MASK2_LVWIREFORMAT_LENGTH (2) ///< Number of bytes to encode @ref LVVIDHeader_LVVE_Rx_Mask2_bm in LVWireFormat.

+

+#define LVVIDHEADER_LVVE_TX_MASK1_LVWIREFORMAT_LENGTH (2) ///< Number of bytes to encode @ref LVVIDHeader_LVVE_Tx_Mask1_bm in LVWireFormat.

+

+#define LVVIDHEADER_LVVE_TX_MASK2_LVWIREFORMAT_LENGTH (2) ///< Number of bytes to encode @ref LVVIDHeader_LVVE_Tx_Mask2_bm in LVWireFormat.

+

+#define LVVIDHEADER_CONFIGURATIONS_MASK1_LVWIREFORMAT_LENGTH (2) ///< Number of bytes to encode @ref LVVIDHeader_Configurations_Mask1_bm in LVWireFormat.

+

+#define LVVIDHEADER_CONFIGURATIONS_MASK2_LVWIREFORMAT_LENGTH (2) ///< Number of bytes to encode @ref LVVIDHeader_Configurations_Mask2_bm in LVWireFormat.

+

+#define LVVC_MODEWORD_LVWIREFORMAT_LENGTH (2) ///< Number of bytes to encode @ref LVVC_ModeWord_bm in LVWireFormat.

+

+#define LVFENS_MODEWORD_LVWIREFORMAT_LENGTH (2) ///< Number of bytes to encode @ref LVFENS_ModeWord_bm in LVWireFormat.

+

+#define LVWM_MODEWORD_LVWIREFORMAT_LENGTH (2) ///< Number of bytes to encode @ref LVWM_ModeWord_bm in LVWireFormat.

+

+#define LVNV_MODEWORD_LVWIREFORMAT_LENGTH (2) ///< Number of bytes to encode @ref LVNV_ModeWord_bm in LVWireFormat.

+

+#define LVNV_MODE2WORD_LVWIREFORMAT_LENGTH (2) ///< Number of bytes to encode @ref LVNV_Mode2Word_bm in LVWireFormat.

+

+#define LVNV_TUNINGMODEWORD_LVWIREFORMAT_LENGTH (2) ///< Number of bytes to encode @ref LVNV_TuningModeWord_bm in LVWireFormat.

+

+#define LVNV_STATUSWORD_LVWIREFORMAT_LENGTH (2) ///< Number of bytes to encode @ref LVNV_StatusWord_bm in LVWireFormat.

+

+#define LVHF_TUNINGMODEWORD_LVWIREFORMAT_LENGTH (2) ///< Number of bytes to encode @ref LVHF_TuningModeWord in LVWireFormat.

+

+#define LVHF_MODEWORD_LVWIREFORMAT_LENGTH (2) ///< Number of bytes to encode @ref LVHF_ModeWord_bm in LVWireFormat.

+

+#define LVHF_STATUSWORD_LVWIREFORMAT_LENGTH (2) ///< Number of bytes to encode @ref LVHF_StatusWord_bm in LVWireFormat.

+

+#define LVM_MODE_LVWIREFORMAT_LENGTH (4) ///< Number of bytes to encode @ref LVM_Mode_en in LVWireFormat.

+

+#define LVM_CONFIG_LVWIREFORMAT_LENGTH (4) ///< Number of bytes to encode @ref LVM_Config_en in LVWireFormat.

+

+#define LVM_FS_LVWIREFORMAT_LENGTH (4) ///< Number of bytes to encode @ref LVM_Fs_en in LVWireFormat.

+

+#define LVVIDHEADER_MESSAGEID_LVWIREFORMAT_LENGTH (4) ///< Number of bytes to encode @ref LVVIDHeader_MessageID_en in LVWireFormat.

+

+#define LVVIDHEADER_RETURNSTATUS_LVWIREFORMAT_LENGTH (4) ///< Number of bytes to encode @ref LVVIDHeader_ReturnStatus_en in LVWireFormat.

+

+#define LVVE_RX_MODE_LVWIREFORMAT_LENGTH (4) ///< Number of bytes to encode @ref LVVE_Rx_Mode_en in LVWireFormat.

+

+#define LVVE_TX_MODE_LVWIREFORMAT_LENGTH (4) ///< Number of bytes to encode @ref LVVE_Tx_Mode_en in LVWireFormat.

+

+#define LVVIDHEADER_CONTROLPARAMS_LVWIREFORMAT_LENGTH (7 \

+ + LVVIDHEADER_LVVE_RX_MASK1_LVWIREFORMAT_LENGTH \

+ + LVVIDHEADER_LVVE_RX_MASK2_LVWIREFORMAT_LENGTH \

+ + LVVIDHEADER_LVVE_TX_MASK1_LVWIREFORMAT_LENGTH \

+ + LVVIDHEADER_LVVE_TX_MASK2_LVWIREFORMAT_LENGTH \

+ + LVVIDHEADER_CONFIGURATIONS_MASK1_LVWIREFORMAT_LENGTH \

+ + LVVIDHEADER_CONFIGURATIONS_MASK2_LVWIREFORMAT_LENGTH \

+ + LVVIDHEADER_MESSAGEID_LVWIREFORMAT_LENGTH \

+ + LVM_FS_LVWIREFORMAT_LENGTH) ///< Number of bytes to encode LVVIDHeader ControlParameters in LVWireFormat.

+

+#define LVVC_CONTROLPARAMS_LVWIREFORMAT_LENGTH (22 \

+ + LVM_MODE_LVWIREFORMAT_LENGTH \

+ + LVVC_MODEWORD_LVWIREFORMAT_LENGTH) ///< Number of bytes to encode LVVC ControlParameters in LVWireFormat.

+

+#define LVFENS_CONTROLPARAMS_LVWIREFORMAT_LENGTH (2 \

+ + LVM_MODE_LVWIREFORMAT_LENGTH \

+ + LVFENS_MODEWORD_LVWIREFORMAT_LENGTH) ///< Number of bytes to encode LVFENS ControlParameters in LVWireFormat.

+

+#define LVWM_CONTROLPARAMS_LVWIREFORMAT_LENGTH (14 \

+ + LVM_MODE_LVWIREFORMAT_LENGTH \

+ + LVWM_MODEWORD_LVWIREFORMAT_LENGTH) ///< Number of bytes to encode LVWM ControlParameters in LVWireFormat.

+

+#define LVDRC_CONTROLPARAMS_LVWIREFORMAT_LENGTH (28 \

+ + LVM_MODE_LVWIREFORMAT_LENGTH \

+ + LVM_MODE_LVWIREFORMAT_LENGTH) ///< Number of bytes to encode LVDRC ControlParameters in LVWireFormat.

+

+#define LVNG_CONTROLPARAMS_LVWIREFORMAT_LENGTH (26 \

+ + LVM_MODE_LVWIREFORMAT_LENGTH) ///< Number of bytes to encode LVNG ControlParameters in LVWireFormat.

+

+#define LVNLPP_CONTROLPARAMS_LVWIREFORMAT_LENGTH (4) ///< Number of bytes to encode LVNLPP ControlParameters in LVWireFormat.

+

+#define LVEQ_CONTROLPARAMS_LVWIREFORMAT_LENGTH (130) ///< Number of bytes to encode LVEQ ControlParameters in LVWireFormat.

+

+#define LVVOL_CONTROLPARAMS_LVWIREFORMAT_LENGTH (2 \

+ + LVM_MODE_LVWIREFORMAT_LENGTH) ///< Number of bytes to encode LVVOL ControlParameters in LVWireFormat.

+

+#define LVHPF_CONTROLPARAMS_LVWIREFORMAT_LENGTH (2 \

+ + LVM_MODE_LVWIREFORMAT_LENGTH) ///< Number of bytes to encode LVHPF ControlParameters in LVWireFormat.

+

+#define LVMUTE_CONTROLPARAMS_LVWIREFORMAT_LENGTH (LVM_MODE_LVWIREFORMAT_LENGTH) ///< Number of bytes to encode LVMUTE ControlParameters in LVWireFormat.

+

+#define LVVE_RX_CONTROLPARAMS_LVWIREFORMAT_LENGTH (4 \

+ + LVVE_RX_MODE_LVWIREFORMAT_LENGTH \

+ + LVM_MODE_LVWIREFORMAT_LENGTH \

+ + LVM_MODE_LVWIREFORMAT_LENGTH \

+ + LVFENS_CONTROLPARAMS_LVWIREFORMAT_LENGTH \

+ + LVM_MODE_LVWIREFORMAT_LENGTH \

+ + LVNLPP_CONTROLPARAMS_LVWIREFORMAT_LENGTH \

+ + LVVC_CONTROLPARAMS_LVWIREFORMAT_LENGTH \

+ + LVM_MODE_LVWIREFORMAT_LENGTH \

+ + LVEQ_CONTROLPARAMS_LVWIREFORMAT_LENGTH \

+ + LVDRC_CONTROLPARAMS_LVWIREFORMAT_LENGTH \

+ + LVM_MODE_LVWIREFORMAT_LENGTH \

+ + LVWM_CONTROLPARAMS_LVWIREFORMAT_LENGTH \

+ + LVNG_CONTROLPARAMS_LVWIREFORMAT_LENGTH) ///< Number of bytes to encode LVVE_Rx ControlParameters in LVWireFormat.

+

+#define LVNV_CONTROLPARAMS_LVWIREFORMAT_LENGTH (122 \

+ + LVM_MODE_LVWIREFORMAT_LENGTH \

+ + LVNV_MODEWORD_LVWIREFORMAT_LENGTH \

+ + LVNV_MODE2WORD_LVWIREFORMAT_LENGTH \

+ + LVNV_TUNINGMODEWORD_LVWIREFORMAT_LENGTH) ///< Number of bytes to encode LVNV ControlParameters in LVWireFormat.

+

+#define LVHF_CONTROLPARAMS_LVWIREFORMAT_LENGTH (78 \

+ + LVM_MODE_LVWIREFORMAT_LENGTH \

+ + LVHF_MODEWORD_LVWIREFORMAT_LENGTH \

+ + LVHF_TUNINGMODEWORD_LVWIREFORMAT_LENGTH) ///< Number of bytes to encode LVHF ControlParameters in LVWireFormat.

+

+#define LVBD_CONTROLPARAMS_LVWIREFORMAT_LENGTH (4 \

+ + LVM_MODE_LVWIREFORMAT_LENGTH) ///< Number of bytes to encode LVBD ControlParameters in LVWireFormat.

+

+#define LVVE_TX_CONTROLPARAMS_LVWIREFORMAT_LENGTH (8 \

+ + LVVE_TX_MODE_LVWIREFORMAT_LENGTH \

+ + LVM_MODE_LVWIREFORMAT_LENGTH \

+ + LVM_MODE_LVWIREFORMAT_LENGTH \

+ + LVM_MODE_LVWIREFORMAT_LENGTH \

+ + LVM_MODE_LVWIREFORMAT_LENGTH \

+ + LVHF_CONTROLPARAMS_LVWIREFORMAT_LENGTH \

+ + LVNV_CONTROLPARAMS_LVWIREFORMAT_LENGTH \

+ + LVWM_CONTROLPARAMS_LVWIREFORMAT_LENGTH \

+ + LVM_MODE_LVWIREFORMAT_LENGTH \

+ + LVEQ_CONTROLPARAMS_LVWIREFORMAT_LENGTH \

+ + LVDRC_CONTROLPARAMS_LVWIREFORMAT_LENGTH) ///< Number of bytes to encode LVVE_Tx ControlParameters in LVWireFormat.

+

+/**

+* @def LVVIDHEADER_HEADERVERSION_DEFAULT

+* Default of HeaderVersion

+* @see LVVIDHeader_ControlParams_st

+*/

+#define LVVIDHEADER_HEADERVERSION_DEFAULT (3)

+/**

+* @def LVVIDHEADER_HEADERVERSION_MIN

+* MinValue of HeaderVersion

+* @see LVVIDHeader_ControlParams_st

+*/

+#define LVVIDHEADER_HEADERVERSION_MIN (0)

+/**

+* @def LVVIDHEADER_HEADERVERSION_MAX

+* MaxValue of HeaderVersion

+* @see LVVIDHeader_ControlParams_st

+*/

+#define LVVIDHEADER_HEADERVERSION_MAX (255)

+

+/**

+* @def LVVIDHEADER_BASELINEVERSION_DEFAULT

+* Default of BaselineVersion

+* @see LVVIDHeader_ControlParams_st

+*/

+#define LVVIDHEADER_BASELINEVERSION_DEFAULT (51906816)

+/**

+* @def LVVIDHEADER_BASELINEVERSION_MIN

+* MinValue of BaselineVersion

+* @see LVVIDHeader_ControlParams_st

+*/

+#define LVVIDHEADER_BASELINEVERSION_MIN (1)

+/**

+* @def LVVIDHEADER_BASELINEVERSION_MAX

+* MaxValue of BaselineVersion

+* @see LVVIDHeader_ControlParams_st

+*/

+#define LVVIDHEADER_BASELINEVERSION_MAX (4294967295)

+

+/**

+* @def LVVIDHEADER_LVVE_RX_ALGOMASK1_DEFAULT

+* Default of LVVE_Rx_AlgoMask1

+* @see LVVIDHeader_ControlParams_st

+*/

+#define LVVIDHEADER_LVVE_RX_ALGOMASK1_DEFAULT (LVVIDHEADER_LVVE_RX_MASK1_BM_MAX)

+

+/**

+* @def LVVIDHEADER_LVVE_RX_ALGOMASK2_DEFAULT

+* Default of LVVE_Rx_AlgoMask2

+* @see LVVIDHeader_ControlParams_st

+*/

+#define LVVIDHEADER_LVVE_RX_ALGOMASK2_DEFAULT (LVVIDHEADER_LVVE_RX_MASK2_BM_MAX)

+

+/**

+* @def LVVIDHEADER_LVVE_TX_ALGOMASK1_DEFAULT

+* Default of LVVE_Tx_AlgoMask1

+* @see LVVIDHeader_ControlParams_st

+*/

+#define LVVIDHEADER_LVVE_TX_ALGOMASK1_DEFAULT (LVVIDHEADER_LVVE_TX_MASK1_BM_MAX)

+

+/**

+* @def LVVIDHEADER_LVVE_TX_ALGOMASK2_DEFAULT

+* Default of LVVE_Tx_AlgoMask2

+* @see LVVIDHeader_ControlParams_st

+*/

+#define LVVIDHEADER_LVVE_TX_ALGOMASK2_DEFAULT (LVVIDHEADER_LVVE_TX_MASK2_BM_MAX)

+

+/**

+* @def LVVIDHEADER_LVVE_CONFIG_ALGOMASK1_DEFAULT

+* Default of LVVE_Config_AlgoMask1

+* @see LVVIDHeader_ControlParams_st

+*/

+#define LVVIDHEADER_LVVE_CONFIG_ALGOMASK1_DEFAULT (LVVIDHEADER_CONFIGURATIONS_MASK1_BM_MAX)

+

+/**

+* @def LVVIDHEADER_LVVE_CONFIG_ALGOMASK2_DEFAULT

+* Default of LVVE_Config_AlgoMask2

+* @see LVVIDHeader_ControlParams_st

+*/

+#define LVVIDHEADER_LVVE_CONFIG_ALGOMASK2_DEFAULT (LVVIDHEADER_CONFIGURATIONS_MASK2_BM_MAX)

+

+/**

+* @def LVVIDHEADER_MESSAGEID_DEFAULT

+* Default of MessageID

+* @see LVVIDHeader_ControlParams_st

+*/

+#define LVVIDHEADER_MESSAGEID_DEFAULT (LVVE_RX_PRESET)

+

+/**

+* @def LVVIDHEADER_SAMPLERATE_DEFAULT

+* Default of SampleRate

+* @see LVVIDHeader_ControlParams_st

+*/

+#define LVVIDHEADER_SAMPLERATE_DEFAULT (LVM_FS_8000)

+

+/**

+* @def LVVIDHEADER_VOLUMEINDEX_DEFAULT

+* Default of VolumeIndex

+* @see LVVIDHeader_ControlParams_st

+*/

+#define LVVIDHEADER_VOLUMEINDEX_DEFAULT (0)

+/**

+* @def LVVIDHEADER_VOLUMEINDEX_MIN

+* MinValue of VolumeIndex

+* @see LVVIDHeader_ControlParams_st

+*/

+#define LVVIDHEADER_VOLUMEINDEX_MIN (0)

+/**

+* @def LVVIDHEADER_VOLUMEINDEX_MAX

+* MaxValue of VolumeIndex

+* @see LVVIDHeader_ControlParams_st

+*/

+#define LVVIDHEADER_VOLUMEINDEX_MAX (255)

+

+/**

+* @def LVVIDHEADER_NUMVOLUMES_DEFAULT

+* Default of NumVolumes

+* @see LVVIDHeader_ControlParams_st

+*/

+#define LVVIDHEADER_NUMVOLUMES_DEFAULT (1)

+/**

+* @def LVVIDHEADER_NUMVOLUMES_MIN

+* MinValue of NumVolumes

+* @see LVVIDHeader_ControlParams_st

+*/

+#define LVVIDHEADER_NUMVOLUMES_MIN (0)

+/**

+* @def LVVIDHEADER_NUMVOLUMES_MAX

+* MaxValue of NumVolumes

+* @see LVVIDHeader_ControlParams_st

+*/

+#define LVVIDHEADER_NUMVOLUMES_MAX (255)

+

+/**

+* @def LVVC_OPERATINGMODE_DEFAULT

+* Default of OperatingMode

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_OPERATINGMODE_DEFAULT (LVM_MODE_OFF)

+

+/**

+* @def LVVC_MODE_DEFAULT

+* Default of mode

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_MODE_DEFAULT (0)

+

+/**

+* @def LVVC_GAIN_LIN_MAX_DEFAULT

+* Default of Gain_Lin_Max

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_GAIN_LIN_MAX_DEFAULT (1286)

+/**

+* @def LVVC_GAIN_LIN_MAX_MIN

+* MinValue of Gain_Lin_Max

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_GAIN_LIN_MAX_MIN (512)

+/**

+* @def LVVC_GAIN_LIN_MAX_MAX

+* MaxValue of Gain_Lin_Max

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_GAIN_LIN_MAX_MAX (32767)

+

+/**

+* @def LVVC_NOISE_SENSITIVITY_DEFAULT

+* Default of Noise_Sensitivity

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_NOISE_SENSITIVITY_DEFAULT (20000)

+/**

+* @def LVVC_NOISE_SENSITIVITY_MIN

+* MinValue of Noise_Sensitivity

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_NOISE_SENSITIVITY_MIN (-6709)

+/**

+* @def LVVC_NOISE_SENSITIVITY_MAX

+* MaxValue of Noise_Sensitivity

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_NOISE_SENSITIVITY_MAX (32767)

+

+/**

+* @def LVVC_AVL_TARGET_LEVEL_LIN_DEFAULT

+* Default of AVL_Target_level_lin

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_AVL_TARGET_LEVEL_LIN_DEFAULT (16384)

+/**

+* @def LVVC_AVL_TARGET_LEVEL_LIN_MIN

+* MinValue of AVL_Target_level_lin

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_AVL_TARGET_LEVEL_LIN_MIN (0)

+/**

+* @def LVVC_AVL_TARGET_LEVEL_LIN_MAX

+* MaxValue of AVL_Target_level_lin

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_AVL_TARGET_LEVEL_LIN_MAX (32767)

+

+/**

+* @def LVVC_AVL_MINGAINLIN_DEFAULT

+* Default of AVL_MinGainLin

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_AVL_MINGAINLIN_DEFAULT (256)

+/**

+* @def LVVC_AVL_MINGAINLIN_MIN

+* MinValue of AVL_MinGainLin

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_AVL_MINGAINLIN_MIN (0)

+/**

+* @def LVVC_AVL_MINGAINLIN_MAX

+* MaxValue of AVL_MinGainLin

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_AVL_MINGAINLIN_MAX (512)

+

+/**

+* @def LVVC_AVL_MAXGAINLIN_DEFAULT

+* Default of AVL_MaxGainLin

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_AVL_MAXGAINLIN_DEFAULT (8192)

+/**

+* @def LVVC_AVL_MAXGAINLIN_MIN

+* MinValue of AVL_MaxGainLin

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_AVL_MAXGAINLIN_MIN (512)

+/**

+* @def LVVC_AVL_MAXGAINLIN_MAX

+* MaxValue of AVL_MaxGainLin

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_AVL_MAXGAINLIN_MAX (32767)

+

+/**

+* @def LVVC_AVL_NOMINALGAIN_DEFAULT

+* Default of AVL_NominalGain

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_AVL_NOMINALGAIN_DEFAULT (512)

+/**

+* @def LVVC_AVL_NOMINALGAIN_MIN

+* MinValue of AVL_NominalGain

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_AVL_NOMINALGAIN_MIN (0)

+/**

+* @def LVVC_AVL_NOMINALGAIN_MAX

+* MaxValue of AVL_NominalGain

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_AVL_NOMINALGAIN_MAX (32767)

+

+/**

+* @def LVVC_AVL_ATTACK_DEFAULT

+* Default of AVL_Attack

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_AVL_ATTACK_DEFAULT (12055)

+/**

+* @def LVVC_AVL_ATTACK_MIN

+* MinValue of AVL_Attack

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_AVL_ATTACK_MIN (0)

+/**

+* @def LVVC_AVL_ATTACK_MAX

+* MaxValue of AVL_Attack

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_AVL_ATTACK_MAX (32767)

+

+/**

+* @def LVVC_AVL_RELEASE_DEFAULT

+* Default of AVL_Release

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_AVL_RELEASE_DEFAULT (32604)

+/**

+* @def LVVC_AVL_RELEASE_MIN

+* MinValue of AVL_Release

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_AVL_RELEASE_MIN (0)

+/**

+* @def LVVC_AVL_RELEASE_MAX

+* MaxValue of AVL_Release

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_AVL_RELEASE_MAX (32767)

+

+/**

+* @def LVVC_AVL_RELEASEMAX_DEFAULT

+* Default of AVL_ReleaseMax

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_AVL_RELEASEMAX_DEFAULT (32441)

+/**

+* @def LVVC_AVL_RELEASEMAX_MIN

+* MinValue of AVL_ReleaseMax

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_AVL_RELEASEMAX_MIN (0)

+/**

+* @def LVVC_AVL_RELEASEMAX_MAX

+* MaxValue of AVL_ReleaseMax

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_AVL_RELEASEMAX_MAX (32767)

+

+/**

+* @def LVVC_AVL_LIMIT_MAXOUTPUTLIN_DEFAULT

+* Default of AVL_Limit_MaxOutputLin

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_AVL_LIMIT_MAXOUTPUTLIN_DEFAULT (23170)

+/**

+* @def LVVC_AVL_LIMIT_MAXOUTPUTLIN_MIN

+* MinValue of AVL_Limit_MaxOutputLin

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_AVL_LIMIT_MAXOUTPUTLIN_MIN (0)

+/**

+* @def LVVC_AVL_LIMIT_MAXOUTPUTLIN_MAX

+* MaxValue of AVL_Limit_MaxOutputLin

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_AVL_LIMIT_MAXOUTPUTLIN_MAX (32767)

+

+/**

+* @def LVVC_SPDETECT_THRESHOLD_DEFAULT

+* Default of SpDetect_Threshold

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_SPDETECT_THRESHOLD_DEFAULT (1024)

+/**

+* @def LVVC_SPDETECT_THRESHOLD_MIN

+* MinValue of SpDetect_Threshold

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_SPDETECT_THRESHOLD_MIN (0)

+/**

+* @def LVVC_SPDETECT_THRESHOLD_MAX

+* MaxValue of SpDetect_Threshold

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_SPDETECT_THRESHOLD_MAX (32767)

+

+/**

+* @def LVFENS_OPERATINGMODE_DEFAULT

+* Default of OperatingMode

+* @see LVFENS_ControlParams_st

+*/

+#define LVFENS_OPERATINGMODE_DEFAULT (LVM_MODE_OFF)

+

+/**

+* @def LVFENS_FENS_LIMIT_NS_DEFAULT

+* Default of FENS_limit_NS

+* @see LVFENS_ControlParams_st

+*/

+#define LVFENS_FENS_LIMIT_NS_DEFAULT (10976)

+/**

+* @def LVFENS_FENS_LIMIT_NS_MIN

+* MinValue of FENS_limit_NS

+* @see LVFENS_ControlParams_st

+*/

+#define LVFENS_FENS_LIMIT_NS_MIN (0)

+/**

+* @def LVFENS_FENS_LIMIT_NS_MAX

+* MaxValue of FENS_limit_NS

+* @see LVFENS_ControlParams_st

+*/

+#define LVFENS_FENS_LIMIT_NS_MAX (32767)

+

+/**

+* @def LVFENS_MODE_DEFAULT

+* Default of Mode

+* @see LVFENS_ControlParams_st

+*/

+#define LVFENS_MODE_DEFAULT (0)

+

+/**

+* @def LVWM_OPERATINGMODE_DEFAULT

+* Default of OperatingMode

+* @see LVWM_ControlParams_st

+*/

+#define LVWM_OPERATINGMODE_DEFAULT (LVM_MODE_OFF)

+

+/**

+* @def LVWM_MODE_DEFAULT

+* Default of mode

+* @see LVWM_ControlParams_st

+*/

+#define LVWM_MODE_DEFAULT (7)

+

+/**

+* @def LVWM_AVL_TARGET_LEVEL_LIN_DEFAULT

+* Default of AVL_Target_level_lin

+* @see LVWM_ControlParams_st

+*/

+#define LVWM_AVL_TARGET_LEVEL_LIN_DEFAULT (16384)

+/**

+* @def LVWM_AVL_TARGET_LEVEL_LIN_MIN

+* MinValue of AVL_Target_level_lin

+* @see LVWM_ControlParams_st

+*/

+#define LVWM_AVL_TARGET_LEVEL_LIN_MIN (0)

+/**

+* @def LVWM_AVL_TARGET_LEVEL_LIN_MAX

+* MaxValue of AVL_Target_level_lin

+* @see LVWM_ControlParams_st

+*/

+#define LVWM_AVL_TARGET_LEVEL_LIN_MAX (32767)

+

+/**

+* @def LVWM_AVL_MINGAINLIN_DEFAULT

+* Default of AVL_MinGainLin

+* @see LVWM_ControlParams_st

+*/

+#define LVWM_AVL_MINGAINLIN_DEFAULT (128)

+/**

+* @def LVWM_AVL_MINGAINLIN_MIN

+* MinValue of AVL_MinGainLin

+* @see LVWM_ControlParams_st

+*/

+#define LVWM_AVL_MINGAINLIN_MIN (0)

+/**

+* @def LVWM_AVL_MINGAINLIN_MAX

+* MaxValue of AVL_MinGainLin

+* @see LVWM_ControlParams_st

+*/

+#define LVWM_AVL_MINGAINLIN_MAX (512)

+

+/**

+* @def LVWM_AVL_MAXGAINLIN_DEFAULT

+* Default of AVL_MaxGainLin

+* @see LVWM_ControlParams_st

+*/

+#define LVWM_AVL_MAXGAINLIN_DEFAULT (8189)

+/**

+* @def LVWM_AVL_MAXGAINLIN_MIN

+* MinValue of AVL_MaxGainLin

+* @see LVWM_ControlParams_st

+*/

+#define LVWM_AVL_MAXGAINLIN_MIN (512)

+/**

+* @def LVWM_AVL_MAXGAINLIN_MAX

+* MaxValue of AVL_MaxGainLin

+* @see LVWM_ControlParams_st

+*/

+#define LVWM_AVL_MAXGAINLIN_MAX (32767)

+

+/**

+* @def LVWM_AVL_ATTACK_DEFAULT

+* Default of AVL_Attack

+* @see LVWM_ControlParams_st

+*/

+#define LVWM_AVL_ATTACK_DEFAULT (25520)

+/**

+* @def LVWM_AVL_ATTACK_MIN

+* MinValue of AVL_Attack

+* @see LVWM_ControlParams_st

+*/

+#define LVWM_AVL_ATTACK_MIN (0)

+/**

+* @def LVWM_AVL_ATTACK_MAX

+* MaxValue of AVL_Attack

+* @see LVWM_ControlParams_st

+*/

+#define LVWM_AVL_ATTACK_MAX (32767)

+

+/**

+* @def LVWM_AVL_RELEASE_DEFAULT

+* Default of AVL_Release

+* @see LVWM_ControlParams_st

+*/

+#define LVWM_AVL_RELEASE_DEFAULT (32685)

+/**

+* @def LVWM_AVL_RELEASE_MIN

+* MinValue of AVL_Release

+* @see LVWM_ControlParams_st

+*/

+#define LVWM_AVL_RELEASE_MIN (0)

+/**

+* @def LVWM_AVL_RELEASE_MAX

+* MaxValue of AVL_Release

+* @see LVWM_ControlParams_st

+*/

+#define LVWM_AVL_RELEASE_MAX (32767)

+

+/**

+* @def LVWM_AVL_LIMIT_MAXOUTPUTLIN_DEFAULT

+* Default of AVL_Limit_MaxOutputLin

+* @see LVWM_ControlParams_st

+*/

+#define LVWM_AVL_LIMIT_MAXOUTPUTLIN_DEFAULT (23197)

+/**

+* @def LVWM_AVL_LIMIT_MAXOUTPUTLIN_MIN

+* MinValue of AVL_Limit_MaxOutputLin

+* @see LVWM_ControlParams_st

+*/

+#define LVWM_AVL_LIMIT_MAXOUTPUTLIN_MIN (0)

+/**

+* @def LVWM_AVL_LIMIT_MAXOUTPUTLIN_MAX

+* MaxValue of AVL_Limit_MaxOutputLin

+* @see LVWM_ControlParams_st

+*/

+#define LVWM_AVL_LIMIT_MAXOUTPUTLIN_MAX (32767)

+

+/**

+* @def LVWM_SPDETECT_THRESHOLD_DEFAULT

+* Default of SpDetect_Threshold

+* @see LVWM_ControlParams_st

+*/

+#define LVWM_SPDETECT_THRESHOLD_DEFAULT (9216)

+/**

+* @def LVWM_SPDETECT_THRESHOLD_MIN

+* MinValue of SpDetect_Threshold

+* @see LVWM_ControlParams_st

+*/

+#define LVWM_SPDETECT_THRESHOLD_MIN (0)

+/**

+* @def LVWM_SPDETECT_THRESHOLD_MAX

+* MaxValue of SpDetect_Threshold

+* @see LVWM_ControlParams_st

+*/

+#define LVWM_SPDETECT_THRESHOLD_MAX (32767)

+

+/**

+* @def LVDRC_OPERATINGMODE_DEFAULT

+* Default of OperatingMode

+* @see LVDRC_ControlParams_st

+*/

+#define LVDRC_OPERATINGMODE_DEFAULT (LVM_MODE_OFF)

+

+/**

+* @def LVDRC_NUMKNEES_DEFAULT

+* Default of NumKnees

+* @see LVDRC_ControlParams_st

+*/

+#define LVDRC_NUMKNEES_DEFAULT (5)

+/**

+* @def LVDRC_NUMKNEES_MIN

+* MinValue of NumKnees

+* @see LVDRC_ControlParams_st

+*/

+#define LVDRC_NUMKNEES_MIN (1)

+/**

+* @def LVDRC_NUMKNEES_MAX

+* MaxValue of NumKnees

+* @see LVDRC_ControlParams_st

+*/

+#define LVDRC_NUMKNEES_MAX (5)

+

+/**

+* @def LVDRC_COMPRESSORCURVEINPUTLEVELS_DEFAULT

+* Default of CompressorCurveInputLevels

+* @see LVDRC_ControlParams_st

+*/

+#define LVDRC_COMPRESSORCURVEINPUTLEVELS_DEFAULT {-96,-70,-50, -24, 0}

+/**

+* @def LVDRC_COMPRESSORCURVEINPUTLEVELS_MIN

+* MinValue of CompressorCurveInputLevels

+* @see LVDRC_ControlParams_st

+*/

+#define LVDRC_COMPRESSORCURVEINPUTLEVELS_MIN (-96)

+/**

+* @def LVDRC_COMPRESSORCURVEINPUTLEVELS_MAX

+* MaxValue of CompressorCurveInputLevels

+* @see LVDRC_ControlParams_st

+*/

+#define LVDRC_COMPRESSORCURVEINPUTLEVELS_MAX (0)

+/**

+* @def LVDRC_COMPRESSORCURVEINPUTLEVELS_LENGTH

+* Length of CompressorCurveInputLevels

+* @see LVDRC_ControlParams_st

+*/

+#define LVDRC_COMPRESSORCURVEINPUTLEVELS_LENGTH (5)

+

+/**

+* @def LVDRC_COMPRESSORCURVEOUTPUTLEVELS_DEFAULT

+* Default of CompressorCurveOutputLevels

+* @see LVDRC_ControlParams_st

+*/

+#define LVDRC_COMPRESSORCURVEOUTPUTLEVELS_DEFAULT {-96,-70,-38,-12,0}

+/**

+* @def LVDRC_COMPRESSORCURVEOUTPUTLEVELS_MIN

+* MinValue of CompressorCurveOutputLevels

+* @see LVDRC_ControlParams_st

+*/

+#define LVDRC_COMPRESSORCURVEOUTPUTLEVELS_MIN (-96)

+/**

+* @def LVDRC_COMPRESSORCURVEOUTPUTLEVELS_MAX

+* MaxValue of CompressorCurveOutputLevels

+* @see LVDRC_ControlParams_st

+*/

+#define LVDRC_COMPRESSORCURVEOUTPUTLEVELS_MAX (0)

+/**

+* @def LVDRC_COMPRESSORCURVEOUTPUTLEVELS_LENGTH

+* Length of CompressorCurveOutputLevels

+* @see LVDRC_ControlParams_st

+*/

+#define LVDRC_COMPRESSORCURVEOUTPUTLEVELS_LENGTH (5)

+

+/**

+* @def LVDRC_ATTACKTIME_DEFAULT

+* Default of AttackTime

+* @see LVDRC_ControlParams_st

+*/

+#define LVDRC_ATTACKTIME_DEFAULT (50)

+/**

+* @def LVDRC_ATTACKTIME_MIN

+* MinValue of AttackTime

+* @see LVDRC_ControlParams_st

+*/

+#define LVDRC_ATTACKTIME_MIN (0)

+/**

+* @def LVDRC_ATTACKTIME_MAX

+* MaxValue of AttackTime

+* @see LVDRC_ControlParams_st

+*/

+#define LVDRC_ATTACKTIME_MAX (32767)

+

+/**

+* @def LVDRC_RELEASETIME_DEFAULT

+* Default of ReleaseTime

+* @see LVDRC_ControlParams_st

+*/

+#define LVDRC_RELEASETIME_DEFAULT (50)

+/**

+* @def LVDRC_RELEASETIME_MIN

+* MinValue of ReleaseTime

+* @see LVDRC_ControlParams_st

+*/

+#define LVDRC_RELEASETIME_MIN (0)

+/**

+* @def LVDRC_RELEASETIME_MAX

+* MaxValue of ReleaseTime

+* @see LVDRC_ControlParams_st

+*/

+#define LVDRC_RELEASETIME_MAX (32767)

+

+/**

+* @def LVDRC_LIMITEROPERATINGMODE_DEFAULT

+* Default of LimiterOperatingMode

+* @see LVDRC_ControlParams_st

+*/

+#define LVDRC_LIMITEROPERATINGMODE_DEFAULT (LVM_MODE_OFF)

+

+/**

+* @def LVDRC_LIMITLEVEL_DEFAULT

+* Default of LimitLevel

+* @see LVDRC_ControlParams_st

+*/

+#define LVDRC_LIMITLEVEL_DEFAULT (0)

+/**

+* @def LVDRC_LIMITLEVEL_MIN

+* MinValue of LimitLevel

+* @see LVDRC_ControlParams_st

+*/

+#define LVDRC_LIMITLEVEL_MIN (-96)

+/**

+* @def LVDRC_LIMITLEVEL_MAX

+* MaxValue of LimitLevel

+* @see LVDRC_ControlParams_st

+*/

+#define LVDRC_LIMITLEVEL_MAX (0)

+

+/**

+* @def LVNG_OPERATINGMODE_DEFAULT

+* Default of OperatingMode

+* @see LVNG_ControlParams_st

+*/

+#define LVNG_OPERATINGMODE_DEFAULT (LVM_MODE_OFF)

+

+/**

+* @def LVNG_NUMKNEES_DEFAULT

+* Default of NumKnees

+* @see LVNG_ControlParams_st

+*/

+#define LVNG_NUMKNEES_DEFAULT (5)

+/**

+* @def LVNG_NUMKNEES_MIN

+* MinValue of NumKnees

+* @see LVNG_ControlParams_st

+*/

+#define LVNG_NUMKNEES_MIN (1)

+/**

+* @def LVNG_NUMKNEES_MAX

+* MaxValue of NumKnees

+* @see LVNG_ControlParams_st

+*/

+#define LVNG_NUMKNEES_MAX (5)

+

+/**

+* @def LVNG_COMPRESSORCURVEINPUTLEVELS_DEFAULT

+* Default of CompressorCurveInputLevels

+* @see LVNG_ControlParams_st

+*/

+#define LVNG_COMPRESSORCURVEINPUTLEVELS_DEFAULT {-80,-70,-50, -24, 0}

+/**

+* @def LVNG_COMPRESSORCURVEINPUTLEVELS_MIN

+* MinValue of CompressorCurveInputLevels

+* @see LVNG_ControlParams_st

+*/

+#define LVNG_COMPRESSORCURVEINPUTLEVELS_MIN (-96)

+/**

+* @def LVNG_COMPRESSORCURVEINPUTLEVELS_MAX

+* MaxValue of CompressorCurveInputLevels

+* @see LVNG_ControlParams_st

+*/

+#define LVNG_COMPRESSORCURVEINPUTLEVELS_MAX (0)

+/**

+* @def LVNG_COMPRESSORCURVEINPUTLEVELS_LENGTH

+* Length of CompressorCurveInputLevels

+* @see LVNG_ControlParams_st

+*/

+#define LVNG_COMPRESSORCURVEINPUTLEVELS_LENGTH (5)

+

+/**

+* @def LVNG_COMPRESSORCURVEOUTPUTLEVELS_DEFAULT

+* Default of CompressorCurveOutputLevels

+* @see LVNG_ControlParams_st

+*/

+#define LVNG_COMPRESSORCURVEOUTPUTLEVELS_DEFAULT {-96,-80,-50, -24, 0}

+/**

+* @def LVNG_COMPRESSORCURVEOUTPUTLEVELS_MIN

+* MinValue of CompressorCurveOutputLevels

+* @see LVNG_ControlParams_st

+*/

+#define LVNG_COMPRESSORCURVEOUTPUTLEVELS_MIN (-96)

+/**

+* @def LVNG_COMPRESSORCURVEOUTPUTLEVELS_MAX

+* MaxValue of CompressorCurveOutputLevels

+* @see LVNG_ControlParams_st

+*/

+#define LVNG_COMPRESSORCURVEOUTPUTLEVELS_MAX (0)

+/**

+* @def LVNG_COMPRESSORCURVEOUTPUTLEVELS_LENGTH

+* Length of CompressorCurveOutputLevels

+* @see LVNG_ControlParams_st

+*/

+#define LVNG_COMPRESSORCURVEOUTPUTLEVELS_LENGTH (5)

+

+/**

+* @def LVNG_ATTACKTIME_DEFAULT

+* Default of AttackTime

+* @see LVNG_ControlParams_st

+*/

+#define LVNG_ATTACKTIME_DEFAULT (50)

+/**

+* @def LVNG_ATTACKTIME_MIN

+* MinValue of AttackTime

+* @see LVNG_ControlParams_st

+*/

+#define LVNG_ATTACKTIME_MIN (0)

+/**

+* @def LVNG_ATTACKTIME_MAX

+* MaxValue of AttackTime

+* @see LVNG_ControlParams_st

+*/

+#define LVNG_ATTACKTIME_MAX (32767)

+

+/**

+* @def LVNG_RELEASETIME_DEFAULT

+* Default of ReleaseTime

+* @see LVNG_ControlParams_st

+*/

+#define LVNG_RELEASETIME_DEFAULT (50)

+/**

+* @def LVNG_RELEASETIME_MIN

+* MinValue of ReleaseTime

+* @see LVNG_ControlParams_st

+*/

+#define LVNG_RELEASETIME_MIN (0)

+/**

+* @def LVNG_RELEASETIME_MAX

+* MaxValue of ReleaseTime

+* @see LVNG_ControlParams_st

+*/

+#define LVNG_RELEASETIME_MAX (32767)

+

+/**

+* @def LVNLPP_NLPP_LIMIT_DEFAULT

+* Default of NLPP_Limit

+* @see LVNLPP_ControlParams_st

+*/

+#define LVNLPP_NLPP_LIMIT_DEFAULT (0)

+/**

+* @def LVNLPP_NLPP_LIMIT_MIN

+* MinValue of NLPP_Limit

+* @see LVNLPP_ControlParams_st

+*/

+#define LVNLPP_NLPP_LIMIT_MIN (-24)

+/**

+* @def LVNLPP_NLPP_LIMIT_MAX

+* MaxValue of NLPP_Limit

+* @see LVNLPP_ControlParams_st

+*/

+#define LVNLPP_NLPP_LIMIT_MAX (0)

+

+/**

+* @def LVNLPP_NLPP_HPF_CORNERFREQ_DEFAULT

+* Default of NLPP_HPF_CornerFreq

+* @see LVNLPP_ControlParams_st

+*/

+#define LVNLPP_NLPP_HPF_CORNERFREQ_DEFAULT (50)

+/**

+* @def LVNLPP_NLPP_HPF_CORNERFREQ_MIN

+* MinValue of NLPP_HPF_CornerFreq

+* @see LVNLPP_ControlParams_st

+*/

+#define LVNLPP_NLPP_HPF_CORNERFREQ_MIN (50)

+/**

+* @def LVNLPP_NLPP_HPF_CORNERFREQ_MAX

+* MaxValue of NLPP_HPF_CornerFreq

+* @see LVNLPP_ControlParams_st

+*/

+#define LVNLPP_NLPP_HPF_CORNERFREQ_MAX (1000)

+

+/**

+* @def LVEQ_EQ_LENGTH_DEFAULT

+* Default of EQ_Length

+* @see LVEQ_ControlParams_st

+*/

+#define LVEQ_EQ_LENGTH_DEFAULT (64)

+/**

+* @def LVEQ_EQ_LENGTH_MIN

+* MinValue of EQ_Length

+* @see LVEQ_ControlParams_st

+*/

+#define LVEQ_EQ_LENGTH_MIN (8)

+/**

+* @def LVEQ_EQ_LENGTH_MAX

+* MaxValue of EQ_Length

+* @see LVEQ_ControlParams_st

+*/

+#define LVEQ_EQ_LENGTH_MAX (64)

+

+/**

+* @def LVEQ_EQ_COEFS_DEFAULT

+* Default of EQ_Coefs

+* @see LVEQ_ControlParams_st

+*/

+#define LVEQ_EQ_COEFS_DEFAULT {4096,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}

+/**

+* @def LVEQ_EQ_COEFS_MIN

+* MinValue of EQ_Coefs

+* @see LVEQ_ControlParams_st

+*/

+#define LVEQ_EQ_COEFS_MIN (-32768)

+/**

+* @def LVEQ_EQ_COEFS_MAX

+* MaxValue of EQ_Coefs

+* @see LVEQ_ControlParams_st

+*/

+#define LVEQ_EQ_COEFS_MAX (32767)

+/**

+* @def LVEQ_EQ_COEFS_LENGTH

+* Length of EQ_Coefs

+* @see LVEQ_ControlParams_st

+*/

+#define LVEQ_EQ_COEFS_LENGTH (64)

+

+/**

+* @def LVVOL_VOL_OPERATINGMODE_DEFAULT

+* Default of VOL_OperatingMode

+* @see LVVOL_ControlParams_st

+*/

+#define LVVOL_VOL_OPERATINGMODE_DEFAULT (LVM_MODE_OFF)

+

+/**

+* @def LVVOL_VOL_GAIN_DEFAULT

+* Default of VOL_Gain

+* @see LVVOL_ControlParams_st

+*/

+#define LVVOL_VOL_GAIN_DEFAULT (0)

+/**

+* @def LVVOL_VOL_GAIN_MIN

+* MinValue of VOL_Gain

+* @see LVVOL_ControlParams_st

+*/

+#define LVVOL_VOL_GAIN_MIN (-96)

+/**

+* @def LVVOL_VOL_GAIN_MAX

+* MaxValue of VOL_Gain

+* @see LVVOL_ControlParams_st

+*/

+#define LVVOL_VOL_GAIN_MAX (24)

+

+/**

+* @def LVHPF_HPF_OPERATINGMODE_DEFAULT

+* Default of HPF_OperatingMode

+* @see LVHPF_ControlParams_st

+*/

+#define LVHPF_HPF_OPERATINGMODE_DEFAULT (LVM_MODE_OFF)

+

+/**

+* @def LVHPF_HPF_CORNERFREQ_DEFAULT

+* Default of HPF_CornerFreq

+* @see LVHPF_ControlParams_st

+*/

+#define LVHPF_HPF_CORNERFREQ_DEFAULT (50)

+/**

+* @def LVHPF_HPF_CORNERFREQ_MIN

+* MinValue of HPF_CornerFreq

+* @see LVHPF_ControlParams_st

+*/

+#define LVHPF_HPF_CORNERFREQ_MIN (50)

+/**

+* @def LVHPF_HPF_CORNERFREQ_MAX

+* MaxValue of HPF_CornerFreq

+* @see LVHPF_ControlParams_st

+*/

+#define LVHPF_HPF_CORNERFREQ_MAX (1500)

+

+/**

+* @def LVMUTE_MUTE_DEFAULT

+* Default of Mute

+* @see LVMUTE_ControlParams_st

+*/

+#define LVMUTE_MUTE_DEFAULT (LVM_MODE_OFF)

+

+/**

+* @def LVVE_RX_OPERATINGMODE_DEFAULT

+* Default of OperatingMode

+* @see LVVE_Rx_ControlParams_st

+*/

+#define LVVE_RX_OPERATINGMODE_DEFAULT (LVVE_RX_MODE_OFF)

+

+/**

+* @def LVVE_RX_MUTE_DEFAULT

+* Default of Mute

+* @see LVVE_Rx_ControlParams_st

+*/

+#define LVVE_RX_MUTE_DEFAULT (LVM_MODE_OFF)

+

+/**

+* @def LVVE_RX_VOL_OPERATINGMODE_DEFAULT

+* Default of VOL_OperatingMode

+* @see LVVE_Rx_ControlParams_st

+*/

+#define LVVE_RX_VOL_OPERATINGMODE_DEFAULT (LVM_MODE_OFF)

+

+/**

+* @def LVVE_RX_VOL_GAIN_DEFAULT

+* Default of VOL_Gain

+* @see LVVE_Rx_ControlParams_st

+*/

+#define LVVE_RX_VOL_GAIN_DEFAULT (0)

+/**

+* @def LVVE_RX_VOL_GAIN_MIN

+* MinValue of VOL_Gain

+* @see LVVE_Rx_ControlParams_st

+*/

+#define LVVE_RX_VOL_GAIN_MIN (-96)

+/**

+* @def LVVE_RX_VOL_GAIN_MAX

+* MaxValue of VOL_Gain

+* @see LVVE_Rx_ControlParams_st

+*/

+#define LVVE_RX_VOL_GAIN_MAX (24)

+

+

+/**

+* @def LVVE_RX_NLPP_OPERATINGMODE_DEFAULT

+* Default of NLPP_OperatingMode

+* @see LVVE_Rx_ControlParams_st

+*/

+#define LVVE_RX_NLPP_OPERATINGMODE_DEFAULT (LVM_MODE_OFF)

+

+

+

+/**

+* @def LVVE_RX_EQ_OPERATINGMODE_DEFAULT

+* Default of EQ_OperatingMode

+* @see LVVE_Rx_ControlParams_st

+*/

+#define LVVE_RX_EQ_OPERATINGMODE_DEFAULT (LVM_MODE_OFF)

+

+

+

+/**

+* @def LVVE_RX_HPF_OPERATINGMODE_DEFAULT

+* Default of HPF_OperatingMode

+* @see LVVE_Rx_ControlParams_st

+*/

+#define LVVE_RX_HPF_OPERATINGMODE_DEFAULT (LVM_MODE_OFF)

+

+/**

+* @def LVVE_RX_HPF_CORNERFREQ_DEFAULT

+* Default of HPF_CornerFreq

+* @see LVVE_Rx_ControlParams_st

+*/

+#define LVVE_RX_HPF_CORNERFREQ_DEFAULT (50)

+/**

+* @def LVVE_RX_HPF_CORNERFREQ_MIN

+* MinValue of HPF_CornerFreq

+* @see LVVE_Rx_ControlParams_st

+*/

+#define LVVE_RX_HPF_CORNERFREQ_MIN (50)

+/**

+* @def LVVE_RX_HPF_CORNERFREQ_MAX

+* MaxValue of HPF_CornerFreq

+* @see LVVE_Rx_ControlParams_st

+*/

+#define LVVE_RX_HPF_CORNERFREQ_MAX (1500)

+

+

+

+/**

+* @def LVNV_OPERATINGMODE_DEFAULT

+* Default of OperatingMode

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_OPERATINGMODE_DEFAULT (LVM_MODE_OFF)

+

+/**

+* @def LVNV_MODE_DEFAULT

+* Default of Mode

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_MODE_DEFAULT (18935)

+

+/**

+* @def LVNV_MODE2_DEFAULT

+* Default of Mode2

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_MODE2_DEFAULT (14)

+

+/**

+* @def LVNV_TUNING_MODE_DEFAULT

+* Default of Tuning_mode

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_TUNING_MODE_DEFAULT (0)

+

+/**

+* @def LVNV_INPUT_GAIN_MIC0_DEFAULT

+* Default of Input_Gain_Mic0

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_INPUT_GAIN_MIC0_DEFAULT (8192)

+/**

+* @def LVNV_INPUT_GAIN_MIC0_MIN

+* MinValue of Input_Gain_Mic0

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_INPUT_GAIN_MIC0_MIN (0)

+/**

+* @def LVNV_INPUT_GAIN_MIC0_MAX

+* MaxValue of Input_Gain_Mic0

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_INPUT_GAIN_MIC0_MAX (32767)

+

+/**

+* @def LVNV_INPUT_GAIN_MIC1_DEFAULT

+* Default of Input_Gain_Mic1

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_INPUT_GAIN_MIC1_DEFAULT (8192)

+/**

+* @def LVNV_INPUT_GAIN_MIC1_MIN

+* MinValue of Input_Gain_Mic1

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_INPUT_GAIN_MIC1_MIN (0)

+/**

+* @def LVNV_INPUT_GAIN_MIC1_MAX

+* MaxValue of Input_Gain_Mic1

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_INPUT_GAIN_MIC1_MAX (32767)

+

+/**

+* @def LVNV_OUTPUT_GAIN_DEFAULT

+* Default of Output_Gain

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_OUTPUT_GAIN_DEFAULT (2048)

+/**

+* @def LVNV_OUTPUT_GAIN_MIN

+* MinValue of Output_Gain

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_OUTPUT_GAIN_MIN (0)

+/**

+* @def LVNV_OUTPUT_GAIN_MAX

+* MaxValue of Output_Gain

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_OUTPUT_GAIN_MAX (32767)

+

+/**

+* @def LVNV_NLMS0_LB_TAPS_DEFAULT

+* Default of NLMS0_LB_taps

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS0_LB_TAPS_DEFAULT (32)

+/**

+* @def LVNV_NLMS0_LB_TAPS_MIN

+* MinValue of NLMS0_LB_taps

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS0_LB_TAPS_MIN (16)

+/**

+* @def LVNV_NLMS0_LB_TAPS_MAX

+* MaxValue of NLMS0_LB_taps

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS0_LB_TAPS_MAX (64)

+

+/**

+* @def LVNV_NLMS0_LB_TWOALPHA_DEFAULT

+* Default of NLMS0_LB_twoalpha

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS0_LB_TWOALPHA_DEFAULT (8192)

+/**

+* @def LVNV_NLMS0_LB_TWOALPHA_MIN

+* MinValue of NLMS0_LB_twoalpha

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS0_LB_TWOALPHA_MIN (0)

+/**

+* @def LVNV_NLMS0_LB_TWOALPHA_MAX

+* MaxValue of NLMS0_LB_twoalpha

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS0_LB_TWOALPHA_MAX (32767)

+

+/**

+* @def LVNV_NLMS0_LB_ERL_DEFAULT

+* Default of NLMS0_LB_erl

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS0_LB_ERL_DEFAULT (1000)

+/**

+* @def LVNV_NLMS0_LB_ERL_MIN

+* MinValue of NLMS0_LB_erl

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS0_LB_ERL_MIN (64)

+/**

+* @def LVNV_NLMS0_LB_ERL_MAX

+* MaxValue of NLMS0_LB_erl

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS0_LB_ERL_MAX (32767)

+

+/**

+* @def LVNV_NLMS0_HB_TAPS_DEFAULT

+* Default of NLMS0_HB_taps

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS0_HB_TAPS_DEFAULT (24)

+/**

+* @def LVNV_NLMS0_HB_TAPS_MIN

+* MinValue of NLMS0_HB_taps

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS0_HB_TAPS_MIN (16)

+/**

+* @def LVNV_NLMS0_HB_TAPS_MAX

+* MaxValue of NLMS0_HB_taps

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS0_HB_TAPS_MAX (64)

+

+/**

+* @def LVNV_NLMS0_HB_TWOALPHA_DEFAULT

+* Default of NLMS0_HB_twoalpha

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS0_HB_TWOALPHA_DEFAULT (8192)

+/**

+* @def LVNV_NLMS0_HB_TWOALPHA_MIN

+* MinValue of NLMS0_HB_twoalpha

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS0_HB_TWOALPHA_MIN (0)

+/**

+* @def LVNV_NLMS0_HB_TWOALPHA_MAX

+* MaxValue of NLMS0_HB_twoalpha

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS0_HB_TWOALPHA_MAX (32767)

+

+/**

+* @def LVNV_NLMS0_HB_ERL_DEFAULT

+* Default of NLMS0_HB_erl

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS0_HB_ERL_DEFAULT (1000)

+/**

+* @def LVNV_NLMS0_HB_ERL_MIN

+* MinValue of NLMS0_HB_erl

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS0_HB_ERL_MIN (64)

+/**

+* @def LVNV_NLMS0_HB_ERL_MAX

+* MaxValue of NLMS0_HB_erl

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS0_HB_ERL_MAX (32767)

+

+/**

+* @def LVNV_NLMS0_PRESET_COEFS_DEFAULT

+* Default of NLMS0_preset_coefs

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS0_PRESET_COEFS_DEFAULT (0)

+/**

+* @def LVNV_NLMS0_PRESET_COEFS_MIN

+* MinValue of NLMS0_preset_coefs

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS0_PRESET_COEFS_MIN (0)

+/**

+* @def LVNV_NLMS0_PRESET_COEFS_MAX

+* MaxValue of NLMS0_preset_coefs

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS0_PRESET_COEFS_MAX (2)

+

+/**

+* @def LVNV_NLMS0_OFFSET_DEFAULT

+* Default of NLMS0_offset

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS0_OFFSET_DEFAULT (776)

+/**

+* @def LVNV_NLMS0_OFFSET_MIN

+* MinValue of NLMS0_offset

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS0_OFFSET_MIN (0)

+/**

+* @def LVNV_NLMS0_OFFSET_MAX

+* MaxValue of NLMS0_offset

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS0_OFFSET_MAX (32767)

+

+/**

+* @def LVNV_NLMS1_LB_TAPS_DEFAULT

+* Default of NLMS1_LB_taps

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS1_LB_TAPS_DEFAULT (32)

+/**

+* @def LVNV_NLMS1_LB_TAPS_MIN

+* MinValue of NLMS1_LB_taps

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS1_LB_TAPS_MIN (16)

+/**

+* @def LVNV_NLMS1_LB_TAPS_MAX

+* MaxValue of NLMS1_LB_taps

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS1_LB_TAPS_MAX (32)

+

+/**

+* @def LVNV_NLMS1_LB_TWOALPHA_DEFAULT

+* Default of NLMS1_LB_twoalpha

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS1_LB_TWOALPHA_DEFAULT (8192)

+/**

+* @def LVNV_NLMS1_LB_TWOALPHA_MIN

+* MinValue of NLMS1_LB_twoalpha

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS1_LB_TWOALPHA_MIN (0)

+/**

+* @def LVNV_NLMS1_LB_TWOALPHA_MAX

+* MaxValue of NLMS1_LB_twoalpha

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS1_LB_TWOALPHA_MAX (32767)

+

+/**

+* @def LVNV_NLMS1_LB_ERL_DEFAULT

+* Default of NLMS1_LB_erl

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS1_LB_ERL_DEFAULT (1000)

+/**

+* @def LVNV_NLMS1_LB_ERL_MIN

+* MinValue of NLMS1_LB_erl

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS1_LB_ERL_MIN (64)

+/**

+* @def LVNV_NLMS1_LB_ERL_MAX

+* MaxValue of NLMS1_LB_erl

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS1_LB_ERL_MAX (32767)

+

+/**

+* @def LVNV_NLMS1_HB_TAPS_DEFAULT

+* Default of NLMS1_HB_taps

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS1_HB_TAPS_DEFAULT (24)

+/**

+* @def LVNV_NLMS1_HB_TAPS_MIN

+* MinValue of NLMS1_HB_taps

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS1_HB_TAPS_MIN (16)

+/**

+* @def LVNV_NLMS1_HB_TAPS_MAX

+* MaxValue of NLMS1_HB_taps

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS1_HB_TAPS_MAX (32)

+

+/**

+* @def LVNV_NLMS1_HB_TWOALPHA_DEFAULT

+* Default of NLMS1_HB_twoalpha

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS1_HB_TWOALPHA_DEFAULT (8192)

+/**

+* @def LVNV_NLMS1_HB_TWOALPHA_MIN

+* MinValue of NLMS1_HB_twoalpha

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS1_HB_TWOALPHA_MIN (0)

+/**

+* @def LVNV_NLMS1_HB_TWOALPHA_MAX

+* MaxValue of NLMS1_HB_twoalpha

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS1_HB_TWOALPHA_MAX (32767)

+

+/**

+* @def LVNV_NLMS1_HB_ERL_DEFAULT

+* Default of NLMS1_HB_erl

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS1_HB_ERL_DEFAULT (1000)

+/**

+* @def LVNV_NLMS1_HB_ERL_MIN

+* MinValue of NLMS1_HB_erl

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS1_HB_ERL_MIN (64)

+/**

+* @def LVNV_NLMS1_HB_ERL_MAX

+* MaxValue of NLMS1_HB_erl

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS1_HB_ERL_MAX (32767)

+

+/**

+* @def LVNV_NLMS1_PRESET_COEFS_DEFAULT

+* Default of NLMS1_preset_coefs

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS1_PRESET_COEFS_DEFAULT (0)

+/**

+* @def LVNV_NLMS1_PRESET_COEFS_MIN

+* MinValue of NLMS1_preset_coefs

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS1_PRESET_COEFS_MIN (0)

+/**

+* @def LVNV_NLMS1_PRESET_COEFS_MAX

+* MaxValue of NLMS1_preset_coefs

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS1_PRESET_COEFS_MAX (2)

+

+/**

+* @def LVNV_NLMS1_OFFSET_DEFAULT

+* Default of NLMS1_offset

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS1_OFFSET_DEFAULT (776)

+/**

+* @def LVNV_NLMS1_OFFSET_MIN

+* MinValue of NLMS1_offset

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS1_OFFSET_MIN (0)

+/**

+* @def LVNV_NLMS1_OFFSET_MAX

+* MaxValue of NLMS1_offset

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS1_OFFSET_MAX (32767)

+

+/**

+* @def LVNV_CAL_MICPOWFLOORMIN_DEFAULT

+* Default of CAL_micPowFloorMin

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_CAL_MICPOWFLOORMIN_DEFAULT (150)

+/**

+* @def LVNV_CAL_MICPOWFLOORMIN_MIN

+* MinValue of CAL_micPowFloorMin

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_CAL_MICPOWFLOORMIN_MIN (0)

+/**

+* @def LVNV_CAL_MICPOWFLOORMIN_MAX

+* MaxValue of CAL_micPowFloorMin

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_CAL_MICPOWFLOORMIN_MAX (32767)

+

+/**

+* @def LVNV_WGTHRESHOLD_DEFAULT

+* Default of WgThreshold

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_WGTHRESHOLD_DEFAULT (32767)

+/**

+* @def LVNV_WGTHRESHOLD_MIN

+* MinValue of WgThreshold

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_WGTHRESHOLD_MIN (0)

+/**

+* @def LVNV_WGTHRESHOLD_MAX

+* MaxValue of WgThreshold

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_WGTHRESHOLD_MAX (32767)

+

+/**

+* @def LVNV_MPTHRESHOLD_DEFAULT

+* Default of MpThreshold

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_MPTHRESHOLD_DEFAULT (6554)

+/**

+* @def LVNV_MPTHRESHOLD_MIN

+* MinValue of MpThreshold

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_MPTHRESHOLD_MIN (0)

+/**

+* @def LVNV_MPTHRESHOLD_MAX

+* MaxValue of MpThreshold

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_MPTHRESHOLD_MAX (32767)

+

+/**

+* @def LVNV_FSB_INIT_TABLE0_DEFAULT

+* Default of FSB_init_table0

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_FSB_INIT_TABLE0_DEFAULT {32767, 0, 0, 0, 0, 0, 0, 0}

+/**

+* @def LVNV_FSB_INIT_TABLE0_MIN

+* MinValue of FSB_init_table0

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_FSB_INIT_TABLE0_MIN (-32768)

+/**

+* @def LVNV_FSB_INIT_TABLE0_MAX

+* MaxValue of FSB_init_table0

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_FSB_INIT_TABLE0_MAX (32767)

+/**

+* @def LVNV_FSB_INIT_TABLE0_LENGTH

+* Length of FSB_init_table0

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_FSB_INIT_TABLE0_LENGTH (8)

+

+/**

+* @def LVNV_FSB_INIT_TABLE1_DEFAULT

+* Default of FSB_init_table1

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_FSB_INIT_TABLE1_DEFAULT {0, 0, 0, 0, 0, 0, 0, 0}

+/**

+* @def LVNV_FSB_INIT_TABLE1_MIN

+* MinValue of FSB_init_table1

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_FSB_INIT_TABLE1_MIN (-32768)

+/**

+* @def LVNV_FSB_INIT_TABLE1_MAX

+* MaxValue of FSB_init_table1

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_FSB_INIT_TABLE1_MAX (32767)

+/**

+* @def LVNV_FSB_INIT_TABLE1_LENGTH

+* Length of FSB_init_table1

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_FSB_INIT_TABLE1_LENGTH (8)

+

+/**

+* @def LVNV_FSB_TAPS_DEFAULT

+* Default of FSB_taps

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_FSB_TAPS_DEFAULT (16)

+/**

+* @def LVNV_FSB_TAPS_MIN

+* MinValue of FSB_taps

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_FSB_TAPS_MIN (8)

+/**

+* @def LVNV_FSB_TAPS_MAX

+* MaxValue of FSB_taps

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_FSB_TAPS_MAX (16)

+

+/**

+* @def LVNV_FSB_TWOALPHA_DEFAULT

+* Default of FSB_twoalpha

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_FSB_TWOALPHA_DEFAULT (655)

+/**

+* @def LVNV_FSB_TWOALPHA_MIN

+* MinValue of FSB_twoalpha

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_FSB_TWOALPHA_MIN (0)

+/**

+* @def LVNV_FSB_TWOALPHA_MAX

+* MaxValue of FSB_twoalpha

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_FSB_TWOALPHA_MAX (32767)

+

+/**

+* @def LVNV_FSB_REF_GAIN_DEFAULT

+* Default of FSB_ref_gain

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_FSB_REF_GAIN_DEFAULT (1024)

+/**

+* @def LVNV_FSB_REF_GAIN_MIN

+* MinValue of FSB_ref_gain

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_FSB_REF_GAIN_MIN (0)

+/**

+* @def LVNV_FSB_REF_GAIN_MAX

+* MaxValue of FSB_ref_gain

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_FSB_REF_GAIN_MAX (32767)

+

+/**

+* @def LVNV_GSC_TAPS_DEFAULT

+* Default of GSC_taps

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_GSC_TAPS_DEFAULT (16)

+/**

+* @def LVNV_GSC_TAPS_MIN

+* MinValue of GSC_taps

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_GSC_TAPS_MIN (8)

+/**

+* @def LVNV_GSC_TAPS_MAX

+* MaxValue of GSC_taps

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_GSC_TAPS_MAX (48)

+

+/**

+* @def LVNV_GSC_TWOALPHA_DEFAULT

+* Default of GSC_twoalpha

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_GSC_TWOALPHA_DEFAULT (1638)

+/**

+* @def LVNV_GSC_TWOALPHA_MIN

+* MinValue of GSC_twoalpha

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_GSC_TWOALPHA_MIN (0)

+/**

+* @def LVNV_GSC_TWOALPHA_MAX

+* MaxValue of GSC_twoalpha

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_GSC_TWOALPHA_MAX (32767)

+

+/**

+* @def LVNV_GSC_ERL_DEFAULT

+* Default of GSC_erl

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_GSC_ERL_DEFAULT (256)

+/**

+* @def LVNV_GSC_ERL_MIN

+* MinValue of GSC_erl

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_GSC_ERL_MIN (64)

+/**

+* @def LVNV_GSC_ERL_MAX

+* MaxValue of GSC_erl

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_GSC_ERL_MAX (32767)

+

+/**

+* @def LVNV_GSC_OFFSET_DEFAULT

+* Default of GSC_offset

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_GSC_OFFSET_DEFAULT (1638)

+/**

+* @def LVNV_GSC_OFFSET_MIN

+* MinValue of GSC_offset

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_GSC_OFFSET_MIN (0)

+/**

+* @def LVNV_GSC_OFFSET_MAX

+* MaxValue of GSC_offset

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_GSC_OFFSET_MAX (32767)

+

+/**

+* @def LVNV_DNNS_ECHOGAMMAHI_DEFAULT

+* Default of DNNS_EchoGammaHi

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_ECHOGAMMAHI_DEFAULT (16384)

+/**

+* @def LVNV_DNNS_ECHOGAMMAHI_MIN

+* MinValue of DNNS_EchoGammaHi

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_ECHOGAMMAHI_MIN (0)

+/**

+* @def LVNV_DNNS_ECHOGAMMAHI_MAX

+* MaxValue of DNNS_EchoGammaHi

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_ECHOGAMMAHI_MAX (32767)

+

+/**

+* @def LVNV_DNNS_ECHOGAMMALO_DEFAULT

+* Default of DNNS_EchoGammaLo

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_ECHOGAMMALO_DEFAULT (8192)

+/**

+* @def LVNV_DNNS_ECHOGAMMALO_MIN

+* MinValue of DNNS_EchoGammaLo

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_ECHOGAMMALO_MIN (0)

+/**

+* @def LVNV_DNNS_ECHOGAMMALO_MAX

+* MaxValue of DNNS_EchoGammaLo

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_ECHOGAMMALO_MAX (32767)

+

+/**

+* @def LVNV_DNNS_ECHOALPHAREV_DEFAULT

+* Default of DNNS_EchoAlphaRev

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_ECHOALPHAREV_DEFAULT (12000)

+/**

+* @def LVNV_DNNS_ECHOALPHAREV_MIN

+* MinValue of DNNS_EchoAlphaRev

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_ECHOALPHAREV_MIN (0)

+/**

+* @def LVNV_DNNS_ECHOALPHAREV_MAX

+* MaxValue of DNNS_EchoAlphaRev

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_ECHOALPHAREV_MAX (32767)

+

+/**

+* @def LVNV_DNNS_ECHOTAILPORTION_DEFAULT

+* Default of DNNS_EchoTailPortion

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_ECHOTAILPORTION_DEFAULT (7000)

+/**

+* @def LVNV_DNNS_ECHOTAILPORTION_MIN

+* MinValue of DNNS_EchoTailPortion

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_ECHOTAILPORTION_MIN (0)

+/**

+* @def LVNV_DNNS_ECHOTAILPORTION_MAX

+* MaxValue of DNNS_EchoTailPortion

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_ECHOTAILPORTION_MAX (32767)

+

+/**

+* @def LVNV_DNNS_NLATTEN_DEFAULT

+* Default of DNNS_NlAtten

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_NLATTEN_DEFAULT (256)

+/**

+* @def LVNV_DNNS_NLATTEN_MIN

+* MinValue of DNNS_NlAtten

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_NLATTEN_MIN (0)

+/**

+* @def LVNV_DNNS_NLATTEN_MAX

+* MaxValue of DNNS_NlAtten

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_NLATTEN_MAX (2048)

+

+/**

+* @def LVNV_DNNS_NOISEGAMMAS_DEFAULT

+* Default of DNNS_NoiseGammaS

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_NOISEGAMMAS_DEFAULT (11470)

+/**

+* @def LVNV_DNNS_NOISEGAMMAS_MIN

+* MinValue of DNNS_NoiseGammaS

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_NOISEGAMMAS_MIN (0)

+/**

+* @def LVNV_DNNS_NOISEGAMMAS_MAX

+* MaxValue of DNNS_NoiseGammaS

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_NOISEGAMMAS_MAX (32767)

+

+/**

+* @def LVNV_DNNS_NOISEGAMMAN_DEFAULT

+* Default of DNNS_NoiseGammaN

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_NOISEGAMMAN_DEFAULT (16384)

+/**

+* @def LVNV_DNNS_NOISEGAMMAN_MIN

+* MinValue of DNNS_NoiseGammaN

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_NOISEGAMMAN_MIN (0)

+/**

+* @def LVNV_DNNS_NOISEGAMMAN_MAX

+* MaxValue of DNNS_NoiseGammaN

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_NOISEGAMMAN_MAX (32767)

+

+/**

+* @def LVNV_DNNS_NOISEGAINMINS_DEFAULT

+* Default of DNNS_NoiseGainMinS

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_NOISEGAINMINS_DEFAULT (11140)

+/**

+* @def LVNV_DNNS_NOISEGAINMINS_MIN

+* MinValue of DNNS_NoiseGainMinS

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_NOISEGAINMINS_MIN (0)

+/**

+* @def LVNV_DNNS_NOISEGAINMINS_MAX

+* MaxValue of DNNS_NoiseGainMinS

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_NOISEGAINMINS_MAX (32767)

+

+/**

+* @def LVNV_DNNS_NOISEGAINMINN_DEFAULT

+* Default of DNNS_NoiseGainMinN

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_NOISEGAINMINN_DEFAULT (6554)

+/**

+* @def LVNV_DNNS_NOISEGAINMINN_MIN

+* MinValue of DNNS_NoiseGainMinN

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_NOISEGAINMINN_MIN (0)

+/**

+* @def LVNV_DNNS_NOISEGAINMINN_MAX

+* MaxValue of DNNS_NoiseGainMinN

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_NOISEGAINMINN_MAX (32767)

+

+/**

+* @def LVNV_DNNS_NOISEBIASCOMP_DEFAULT

+* Default of DNNS_NoiseBiasComp

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_NOISEBIASCOMP_DEFAULT (9830)

+/**

+* @def LVNV_DNNS_NOISEBIASCOMP_MIN

+* MinValue of DNNS_NoiseBiasComp

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_NOISEBIASCOMP_MIN (0)

+/**

+* @def LVNV_DNNS_NOISEBIASCOMP_MAX

+* MaxValue of DNNS_NoiseBiasComp

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_NOISEBIASCOMP_MAX (32767)

+

+/**

+* @def LVNV_DNNS_GAINETA_DEFAULT

+* Default of DNNS_GainEta

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_GAINETA_DEFAULT (256)

+/**

+* @def LVNV_DNNS_GAINETA_MIN

+* MinValue of DNNS_GainEta

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_GAINETA_MIN (0)

+/**

+* @def LVNV_DNNS_GAINETA_MAX

+* MaxValue of DNNS_GainEta

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_GAINETA_MAX (32767)

+

+/**

+* @def LVNV_DNNS_ACTHRESHOLD_DEFAULT

+* Default of DNNS_AcThreshold

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_ACTHRESHOLD_DEFAULT (12288)

+/**

+* @def LVNV_DNNS_ACTHRESHOLD_MIN

+* MinValue of DNNS_AcThreshold

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_ACTHRESHOLD_MIN (0)

+/**

+* @def LVNV_DNNS_ACTHRESHOLD_MAX

+* MaxValue of DNNS_AcThreshold

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_ACTHRESHOLD_MAX (32767)

+

+/**

+* @def LVNV_DNNS_WBTHRESHOLD_DEFAULT

+* Default of DNNS_WbThreshold

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_WBTHRESHOLD_DEFAULT (9216)

+/**

+* @def LVNV_DNNS_WBTHRESHOLD_MIN

+* MinValue of DNNS_WbThreshold

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_WBTHRESHOLD_MIN (0)

+/**

+* @def LVNV_DNNS_WBTHRESHOLD_MAX

+* MaxValue of DNNS_WbThreshold

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_WBTHRESHOLD_MAX (32767)

+

+/**

+* @def LVNV_DNNS_LOSTBEAMTHRESHOLD_DEFAULT

+* Default of DNNS_LostBeamThreshold

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_LOSTBEAMTHRESHOLD_DEFAULT (320)

+/**

+* @def LVNV_DNNS_LOSTBEAMTHRESHOLD_MIN

+* MinValue of DNNS_LostBeamThreshold

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_LOSTBEAMTHRESHOLD_MIN (0)

+/**

+* @def LVNV_DNNS_LOSTBEAMTHRESHOLD_MAX

+* MaxValue of DNNS_LostBeamThreshold

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_LOSTBEAMTHRESHOLD_MAX (32767)

+

+/**

+* @def LVNV_PCD_BETA_DEFAULT

+* Default of PCD_beta

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PCD_BETA_DEFAULT (230)

+/**

+* @def LVNV_PCD_BETA_MIN

+* MinValue of PCD_beta

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PCD_BETA_MIN (0)

+/**

+* @def LVNV_PCD_BETA_MAX

+* MaxValue of PCD_beta

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PCD_BETA_MAX (32767)

+

+/**

+* @def LVNV_PCD_THRESHOLD_DEFAULT

+* Default of PCD_Threshold

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PCD_THRESHOLD_DEFAULT (26213)

+/**

+* @def LVNV_PCD_THRESHOLD_MIN

+* MinValue of PCD_Threshold

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PCD_THRESHOLD_MIN (0)

+/**

+* @def LVNV_PCD_THRESHOLD_MAX

+* MaxValue of PCD_Threshold

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PCD_THRESHOLD_MAX (32767)

+

+/**

+* @def LVHF_OPERATINGMODE_DEFAULT

+* Default of OperatingMode

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_OPERATINGMODE_DEFAULT (LVM_MODE_OFF)

+

+/**

+* @def LVHF_MODE_DEFAULT

+* Default of Mode

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_MODE_DEFAULT (4607)

+

+/**

+* @def LVHF_TUNINGMODE_DEFAULT

+* Default of TuningMode

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_TUNINGMODE_DEFAULT (0)

+

+/**

+* @def LVHF_INPUTGAIN_DEFAULT

+* Default of InputGain

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_INPUTGAIN_DEFAULT (8192)

+/**

+* @def LVHF_INPUTGAIN_MIN

+* MinValue of InputGain

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_INPUTGAIN_MIN (0)

+/**

+* @def LVHF_INPUTGAIN_MAX

+* MaxValue of InputGain

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_INPUTGAIN_MAX (32767)

+

+/**

+* @def LVHF_OUTPUTGAIN_DEFAULT

+* Default of OutputGain

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_OUTPUTGAIN_DEFAULT (2048)

+/**

+* @def LVHF_OUTPUTGAIN_MIN

+* MinValue of OutputGain

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_OUTPUTGAIN_MIN (0)

+/**

+* @def LVHF_OUTPUTGAIN_MAX

+* MaxValue of OutputGain

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_OUTPUTGAIN_MAX (32767)

+

+/**

+* @def LVHF_NLMS_LIMIT_DEFAULT

+* Default of NLMS_limit

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_NLMS_LIMIT_DEFAULT (0)

+/**

+* @def LVHF_NLMS_LIMIT_MIN

+* MinValue of NLMS_limit

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_NLMS_LIMIT_MIN (-24)

+/**

+* @def LVHF_NLMS_LIMIT_MAX

+* MaxValue of NLMS_limit

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_NLMS_LIMIT_MAX (0)

+

+/**

+* @def LVHF_NLMS_LB_TAPS_DEFAULT

+* Default of NLMS_LB_taps

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_NLMS_LB_TAPS_DEFAULT (64)

+/**

+* @def LVHF_NLMS_LB_TAPS_MIN

+* MinValue of NLMS_LB_taps

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_NLMS_LB_TAPS_MIN (16)

+/**

+* @def LVHF_NLMS_LB_TAPS_MAX

+* MaxValue of NLMS_LB_taps

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_NLMS_LB_TAPS_MAX (200)

+

+/**

+* @def LVHF_NLMS_LB_TWO_ALPHA_DEFAULT

+* Default of NLMS_LB_two_alpha

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_NLMS_LB_TWO_ALPHA_DEFAULT (8192)

+/**

+* @def LVHF_NLMS_LB_TWO_ALPHA_MIN

+* MinValue of NLMS_LB_two_alpha

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_NLMS_LB_TWO_ALPHA_MIN (0)

+/**

+* @def LVHF_NLMS_LB_TWO_ALPHA_MAX

+* MaxValue of NLMS_LB_two_alpha

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_NLMS_LB_TWO_ALPHA_MAX (32767)

+

+/**

+* @def LVHF_NLMS_LB_ERL_DEFAULT

+* Default of NLMS_LB_erl

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_NLMS_LB_ERL_DEFAULT (128)

+/**

+* @def LVHF_NLMS_LB_ERL_MIN

+* MinValue of NLMS_LB_erl

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_NLMS_LB_ERL_MIN (64)

+/**

+* @def LVHF_NLMS_LB_ERL_MAX

+* MaxValue of NLMS_LB_erl

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_NLMS_LB_ERL_MAX (32767)

+

+/**

+* @def LVHF_NLMS_HB_TAPS_DEFAULT

+* Default of NLMS_HB_taps

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_NLMS_HB_TAPS_DEFAULT (64)

+/**

+* @def LVHF_NLMS_HB_TAPS_MIN

+* MinValue of NLMS_HB_taps

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_NLMS_HB_TAPS_MIN (16)

+/**

+* @def LVHF_NLMS_HB_TAPS_MAX

+* MaxValue of NLMS_HB_taps

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_NLMS_HB_TAPS_MAX (136)

+

+/**

+* @def LVHF_NLMS_HB_TWO_ALPHA_DEFAULT

+* Default of NLMS_HB_two_alpha

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_NLMS_HB_TWO_ALPHA_DEFAULT (8192)

+/**

+* @def LVHF_NLMS_HB_TWO_ALPHA_MIN

+* MinValue of NLMS_HB_two_alpha

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_NLMS_HB_TWO_ALPHA_MIN (0)

+/**

+* @def LVHF_NLMS_HB_TWO_ALPHA_MAX

+* MaxValue of NLMS_HB_two_alpha

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_NLMS_HB_TWO_ALPHA_MAX (32767)

+

+/**

+* @def LVHF_NLMS_HB_ERL_DEFAULT

+* Default of NLMS_HB_erl

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_NLMS_HB_ERL_DEFAULT (128)

+/**

+* @def LVHF_NLMS_HB_ERL_MIN

+* MinValue of NLMS_HB_erl

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_NLMS_HB_ERL_MIN (64)

+/**

+* @def LVHF_NLMS_HB_ERL_MAX

+* MaxValue of NLMS_HB_erl

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_NLMS_HB_ERL_MAX (32767)

+

+/**

+* @def LVHF_NLMS_PRESET_COEFS_DEFAULT

+* Default of NLMS_preset_coefs

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_NLMS_PRESET_COEFS_DEFAULT (1)

+/**

+* @def LVHF_NLMS_PRESET_COEFS_MIN

+* MinValue of NLMS_preset_coefs

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_NLMS_PRESET_COEFS_MIN (0)

+/**

+* @def LVHF_NLMS_PRESET_COEFS_MAX

+* MaxValue of NLMS_preset_coefs

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_NLMS_PRESET_COEFS_MAX (2)

+

+/**

+* @def LVHF_NLMS_OFFSET_DEFAULT

+* Default of NLMS_offset

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_NLMS_OFFSET_DEFAULT (767)

+/**

+* @def LVHF_NLMS_OFFSET_MIN

+* MinValue of NLMS_offset

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_NLMS_OFFSET_MIN (0)

+/**

+* @def LVHF_NLMS_OFFSET_MAX

+* MaxValue of NLMS_offset

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_NLMS_OFFSET_MAX (32767)

+

+/**

+* @def LVHF_DENS_TAIL_ALPHA_LB_DEFAULT

+* Default of DENS_tail_alpha_LB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_TAIL_ALPHA_LB_DEFAULT (25395)

+/**

+* @def LVHF_DENS_TAIL_ALPHA_LB_MIN

+* MinValue of DENS_tail_alpha_LB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_TAIL_ALPHA_LB_MIN (0)

+/**

+* @def LVHF_DENS_TAIL_ALPHA_LB_MAX

+* MaxValue of DENS_tail_alpha_LB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_TAIL_ALPHA_LB_MAX (32767)

+

+/**

+* @def LVHF_DENS_TAIL_PORTION_LB_DEFAULT

+* Default of DENS_tail_portion_LB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_TAIL_PORTION_LB_DEFAULT (29491)

+/**

+* @def LVHF_DENS_TAIL_PORTION_LB_MIN

+* MinValue of DENS_tail_portion_LB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_TAIL_PORTION_LB_MIN (0)

+/**

+* @def LVHF_DENS_TAIL_PORTION_LB_MAX

+* MaxValue of DENS_tail_portion_LB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_TAIL_PORTION_LB_MAX (32767)

+

+/**

+* @def LVHF_DENS_GAMMA_E_HIGH_LB_DEFAULT

+* Default of DENS_gamma_e_high_LB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_GAMMA_E_HIGH_LB_DEFAULT (512)

+/**

+* @def LVHF_DENS_GAMMA_E_HIGH_LB_MIN

+* MinValue of DENS_gamma_e_high_LB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_GAMMA_E_HIGH_LB_MIN (0)

+/**

+* @def LVHF_DENS_GAMMA_E_HIGH_LB_MAX

+* MaxValue of DENS_gamma_e_high_LB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_GAMMA_E_HIGH_LB_MAX (32767)

+

+/**

+* @def LVHF_DENS_GAMMA_E_DT_LB_DEFAULT

+* Default of DENS_gamma_e_dt_LB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_GAMMA_E_DT_LB_DEFAULT (256)

+/**

+* @def LVHF_DENS_GAMMA_E_DT_LB_MIN

+* MinValue of DENS_gamma_e_dt_LB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_GAMMA_E_DT_LB_MIN (0)

+/**

+* @def LVHF_DENS_GAMMA_E_DT_LB_MAX

+* MaxValue of DENS_gamma_e_dt_LB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_GAMMA_E_DT_LB_MAX (32767)

+

+/**

+* @def LVHF_DENS_GAMMA_E_LOW_LB_DEFAULT

+* Default of DENS_gamma_e_low_LB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_GAMMA_E_LOW_LB_DEFAULT (256)

+/**

+* @def LVHF_DENS_GAMMA_E_LOW_LB_MIN

+* MinValue of DENS_gamma_e_low_LB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_GAMMA_E_LOW_LB_MIN (0)

+/**

+* @def LVHF_DENS_GAMMA_E_LOW_LB_MAX

+* MaxValue of DENS_gamma_e_low_LB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_GAMMA_E_LOW_LB_MAX (32767)

+

+/**

+* @def LVHF_DENS_NL_ATTEN_LB_DEFAULT

+* Default of DENS_NL_atten_LB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_NL_ATTEN_LB_DEFAULT (0)

+/**

+* @def LVHF_DENS_NL_ATTEN_LB_MIN

+* MinValue of DENS_NL_atten_LB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_NL_ATTEN_LB_MIN (0)

+/**

+* @def LVHF_DENS_NL_ATTEN_LB_MAX

+* MaxValue of DENS_NL_atten_LB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_NL_ATTEN_LB_MAX (2048)

+

+/**

+* @def LVHF_DENS_TAIL_ALPHA_HB_DEFAULT

+* Default of DENS_tail_alpha_HB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_TAIL_ALPHA_HB_DEFAULT (25395)

+/**

+* @def LVHF_DENS_TAIL_ALPHA_HB_MIN

+* MinValue of DENS_tail_alpha_HB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_TAIL_ALPHA_HB_MIN (0)

+/**

+* @def LVHF_DENS_TAIL_ALPHA_HB_MAX

+* MaxValue of DENS_tail_alpha_HB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_TAIL_ALPHA_HB_MAX (32767)

+

+/**

+* @def LVHF_DENS_TAIL_PORTION_HB_DEFAULT

+* Default of DENS_tail_portion_HB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_TAIL_PORTION_HB_DEFAULT (29491)

+/**

+* @def LVHF_DENS_TAIL_PORTION_HB_MIN

+* MinValue of DENS_tail_portion_HB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_TAIL_PORTION_HB_MIN (0)

+/**

+* @def LVHF_DENS_TAIL_PORTION_HB_MAX

+* MaxValue of DENS_tail_portion_HB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_TAIL_PORTION_HB_MAX (32767)

+

+/**

+* @def LVHF_DENS_GAMMA_E_HIGH_HB_DEFAULT

+* Default of DENS_gamma_e_high_HB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_GAMMA_E_HIGH_HB_DEFAULT (512)

+/**

+* @def LVHF_DENS_GAMMA_E_HIGH_HB_MIN

+* MinValue of DENS_gamma_e_high_HB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_GAMMA_E_HIGH_HB_MIN (0)

+/**

+* @def LVHF_DENS_GAMMA_E_HIGH_HB_MAX

+* MaxValue of DENS_gamma_e_high_HB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_GAMMA_E_HIGH_HB_MAX (32767)

+

+/**

+* @def LVHF_DENS_GAMMA_E_DT_HB_DEFAULT

+* Default of DENS_gamma_e_dt_HB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_GAMMA_E_DT_HB_DEFAULT (256)

+/**

+* @def LVHF_DENS_GAMMA_E_DT_HB_MIN

+* MinValue of DENS_gamma_e_dt_HB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_GAMMA_E_DT_HB_MIN (0)

+/**

+* @def LVHF_DENS_GAMMA_E_DT_HB_MAX

+* MaxValue of DENS_gamma_e_dt_HB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_GAMMA_E_DT_HB_MAX (32767)

+

+/**

+* @def LVHF_DENS_GAMMA_E_LOW_HB_DEFAULT

+* Default of DENS_gamma_e_low_HB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_GAMMA_E_LOW_HB_DEFAULT (256)

+/**

+* @def LVHF_DENS_GAMMA_E_LOW_HB_MIN

+* MinValue of DENS_gamma_e_low_HB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_GAMMA_E_LOW_HB_MIN (0)

+/**

+* @def LVHF_DENS_GAMMA_E_LOW_HB_MAX

+* MaxValue of DENS_gamma_e_low_HB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_GAMMA_E_LOW_HB_MAX (32767)

+

+/**

+* @def LVHF_DENS_NL_ATTEN_HB_DEFAULT

+* Default of DENS_NL_atten_HB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_NL_ATTEN_HB_DEFAULT (0)

+/**

+* @def LVHF_DENS_NL_ATTEN_HB_MIN

+* MinValue of DENS_NL_atten_HB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_NL_ATTEN_HB_MIN (0)

+/**

+* @def LVHF_DENS_NL_ATTEN_HB_MAX

+* MaxValue of DENS_NL_atten_HB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_NL_ATTEN_HB_MAX (2048)

+

+/**

+* @def LVHF_DENS_GAMMA_E_ALPHA_DEFAULT

+* Default of DENS_gamma_e_alpha

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_GAMMA_E_ALPHA_DEFAULT (24000)

+/**

+* @def LVHF_DENS_GAMMA_E_ALPHA_MIN

+* MinValue of DENS_gamma_e_alpha

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_GAMMA_E_ALPHA_MIN (0)

+/**

+* @def LVHF_DENS_GAMMA_E_ALPHA_MAX

+* MaxValue of DENS_gamma_e_alpha

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_GAMMA_E_ALPHA_MAX (32767)

+

+/**

+* @def LVHF_DENS_GAMMA_N_DEFAULT

+* Default of DENS_gamma_n

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_GAMMA_N_DEFAULT (280)

+/**

+* @def LVHF_DENS_GAMMA_N_MIN

+* MinValue of DENS_gamma_n

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_GAMMA_N_MIN (0)

+/**

+* @def LVHF_DENS_GAMMA_N_MAX

+* MaxValue of DENS_gamma_n

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_GAMMA_N_MAX (32767)

+

+/**

+* @def LVHF_DENS_SPDET_NEAR_DEFAULT

+* Default of DENS_spdet_near

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_SPDET_NEAR_DEFAULT (512)

+/**

+* @def LVHF_DENS_SPDET_NEAR_MIN

+* MinValue of DENS_spdet_near

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_SPDET_NEAR_MIN (0)

+/**

+* @def LVHF_DENS_SPDET_NEAR_MAX

+* MaxValue of DENS_spdet_near

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_SPDET_NEAR_MAX (32767)

+

+/**

+* @def LVHF_DENS_SPDET_ACT_DEFAULT

+* Default of DENS_spdet_act

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_SPDET_ACT_DEFAULT (768)

+/**

+* @def LVHF_DENS_SPDET_ACT_MIN

+* MinValue of DENS_spdet_act

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_SPDET_ACT_MIN (0)

+/**

+* @def LVHF_DENS_SPDET_ACT_MAX

+* MaxValue of DENS_spdet_act

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_SPDET_ACT_MAX (32767)

+

+/**

+* @def LVHF_DENS_LIMIT_NS_DEFAULT

+* Default of DENS_limit_ns

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_LIMIT_NS_DEFAULT (10361)

+/**

+* @def LVHF_DENS_LIMIT_NS_MIN

+* MinValue of DENS_limit_ns

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_LIMIT_NS_MIN (0)

+/**

+* @def LVHF_DENS_LIMIT_NS_MAX

+* MaxValue of DENS_limit_ns

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_LIMIT_NS_MAX (32767)

+

+/**

+* @def LVHF_DENS_CNI_GAIN_DEFAULT

+* Default of DENS_CNI_Gain

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_CNI_GAIN_DEFAULT (16384)

+/**

+* @def LVHF_DENS_CNI_GAIN_MIN

+* MinValue of DENS_CNI_Gain

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_CNI_GAIN_MIN (0)

+/**

+* @def LVHF_DENS_CNI_GAIN_MAX

+* MaxValue of DENS_CNI_Gain

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_CNI_GAIN_MAX (32767)

+

+/**

+* @def LVHF_DENS_NFE_BLOCKSIZE_DEFAULT

+* Default of DENS_NFE_blocksize

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_NFE_BLOCKSIZE_DEFAULT (150)

+/**

+* @def LVHF_DENS_NFE_BLOCKSIZE_MIN

+* MinValue of DENS_NFE_blocksize

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_NFE_BLOCKSIZE_MIN (0)

+/**

+* @def LVHF_DENS_NFE_BLOCKSIZE_MAX

+* MaxValue of DENS_NFE_blocksize

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_NFE_BLOCKSIZE_MAX (32767)

+

+/**

+* @def LVHF_SPDET_FAR_DEFAULT

+* Default of SPDET_far

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_SPDET_FAR_DEFAULT (16384)

+/**

+* @def LVHF_SPDET_FAR_MIN

+* MinValue of SPDET_far

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_SPDET_FAR_MIN (0)

+/**

+* @def LVHF_SPDET_FAR_MAX

+* MaxValue of SPDET_far

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_SPDET_FAR_MAX (32767)

+

+/**

+* @def LVHF_SPDET_MIC_DEFAULT

+* Default of SPDET_mic

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_SPDET_MIC_DEFAULT (16384)

+/**

+* @def LVHF_SPDET_MIC_MIN

+* MinValue of SPDET_mic

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_SPDET_MIC_MIN (0)

+/**

+* @def LVHF_SPDET_MIC_MAX

+* MaxValue of SPDET_mic

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_SPDET_MIC_MAX (32767)

+

+/**

+* @def LVHF_SPDET_X_CLIP_DEFAULT

+* Default of SPDET_x_clip

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_SPDET_X_CLIP_DEFAULT (0)

+/**

+* @def LVHF_SPDET_X_CLIP_MIN

+* MinValue of SPDET_x_clip

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_SPDET_X_CLIP_MIN (0)

+/**

+* @def LVHF_SPDET_X_CLIP_MAX

+* MaxValue of SPDET_x_clip

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_SPDET_X_CLIP_MAX (32767)

+

+/**

+* @def LVHF_PCD_THRESHOLD_DEFAULT

+* Default of PCD_threshold

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_PCD_THRESHOLD_DEFAULT (20000)

+/**

+* @def LVHF_PCD_THRESHOLD_MIN

+* MinValue of PCD_threshold

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_PCD_THRESHOLD_MIN (0)

+/**

+* @def LVHF_PCD_THRESHOLD_MAX

+* MaxValue of PCD_threshold

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_PCD_THRESHOLD_MAX (32767)

+

+/**

+* @def LVHF_PCD_TAPS_DEFAULT

+* Default of PCD_taps

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_PCD_TAPS_DEFAULT (16)

+/**

+* @def LVHF_PCD_TAPS_MIN

+* MinValue of PCD_taps

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_PCD_TAPS_MIN (16)

+/**

+* @def LVHF_PCD_TAPS_MAX

+* MaxValue of PCD_taps

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_PCD_TAPS_MAX (64)

+

+/**

+* @def LVHF_PCD_ERL_DEFAULT

+* Default of PCD_erl

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_PCD_ERL_DEFAULT (64)

+/**

+* @def LVHF_PCD_ERL_MIN

+* MinValue of PCD_erl

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_PCD_ERL_MIN (64)

+/**

+* @def LVHF_PCD_ERL_MAX

+* MaxValue of PCD_erl

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_PCD_ERL_MAX (32767)

+

+/**

+* @def LVHF_PCD_MINIMUM_ERL_DEFAULT

+* Default of PCD_minimum_erl

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_PCD_MINIMUM_ERL_DEFAULT (64)

+/**

+* @def LVHF_PCD_MINIMUM_ERL_MIN

+* MinValue of PCD_minimum_erl

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_PCD_MINIMUM_ERL_MIN (64)

+/**

+* @def LVHF_PCD_MINIMUM_ERL_MAX

+* MaxValue of PCD_minimum_erl

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_PCD_MINIMUM_ERL_MAX (32767)

+

+/**

+* @def LVHF_PCD_ERL_STEP_DEFAULT

+* Default of PCD_erl_step

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_PCD_ERL_STEP_DEFAULT (16800)

+/**

+* @def LVHF_PCD_ERL_STEP_MIN

+* MinValue of PCD_erl_step

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_PCD_ERL_STEP_MIN (16384)

+/**

+* @def LVHF_PCD_ERL_STEP_MAX

+* MaxValue of PCD_erl_step

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_PCD_ERL_STEP_MAX (32767)

+

+/**

+* @def LVHF_PCD_GAMMA_E_RESCUE_DEFAULT

+* Default of PCD_gamma_e_rescue

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_PCD_GAMMA_E_RESCUE_DEFAULT (5000)

+/**

+* @def LVHF_PCD_GAMMA_E_RESCUE_MIN

+* MinValue of PCD_gamma_e_rescue

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_PCD_GAMMA_E_RESCUE_MIN (0)

+/**

+* @def LVHF_PCD_GAMMA_E_RESCUE_MAX

+* MaxValue of PCD_gamma_e_rescue

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_PCD_GAMMA_E_RESCUE_MAX (32767)

+

+/**

+* @def LVBD_BD_OPERATINGMODE_DEFAULT

+* Default of BD_OperatingMode

+* @see LVBD_ControlParams_st

+*/

+#define LVBD_BD_OPERATINGMODE_DEFAULT (LVM_MODE_OFF)

+

+/**

+* @def LVBD_BULKDELAY_DEFAULT

+* Default of BulkDelay

+* @see LVBD_ControlParams_st

+*/

+#define LVBD_BULKDELAY_DEFAULT (0)

+/**

+* @def LVBD_BULKDELAY_MIN

+* MinValue of BulkDelay

+* @see LVBD_ControlParams_st

+*/

+#define LVBD_BULKDELAY_MIN (0)

+/**

+* @def LVBD_BULKDELAY_MAX

+* MaxValue of BulkDelay

+* @see LVBD_ControlParams_st

+*/

+#define LVBD_BULKDELAY_MAX (6400)

+

+/**

+* @def LVBD_BD_GAIN_DEFAULT

+* Default of BD_Gain

+* @see LVBD_ControlParams_st

+*/

+#define LVBD_BD_GAIN_DEFAULT (8192)

+/**

+* @def LVBD_BD_GAIN_MIN

+* MinValue of BD_Gain

+* @see LVBD_ControlParams_st

+*/

+#define LVBD_BD_GAIN_MIN (0)

+/**

+* @def LVBD_BD_GAIN_MAX

+* MaxValue of BD_Gain

+* @see LVBD_ControlParams_st

+*/

+#define LVBD_BD_GAIN_MAX (32767)

+

+/**

+* @def LVVE_TX_OPERATINGMODE_DEFAULT

+* Default of OperatingMode

+* @see LVVE_Tx_ControlParams_st

+*/

+#define LVVE_TX_OPERATINGMODE_DEFAULT (LVVE_TX_MODE_OFF)

+

+/**

+* @def LVVE_TX_MUTE_DEFAULT

+* Default of Mute

+* @see LVVE_Tx_ControlParams_st

+*/

+#define LVVE_TX_MUTE_DEFAULT (LVM_MODE_OFF)

+

+/**

+* @def LVVE_TX_BD_OPERATINGMODE_DEFAULT

+* Default of BD_OperatingMode

+* @see LVVE_Tx_ControlParams_st

+*/

+#define LVVE_TX_BD_OPERATINGMODE_DEFAULT (LVM_MODE_OFF)

+

+/**

+* @def LVVE_TX_BULKDELAY_DEFAULT

+* Default of BulkDelay

+* @see LVVE_Tx_ControlParams_st

+*/

+#define LVVE_TX_BULKDELAY_DEFAULT (0)

+/**

+* @def LVVE_TX_BULKDELAY_MIN

+* MinValue of BulkDelay

+* @see LVVE_Tx_ControlParams_st

+*/

+#define LVVE_TX_BULKDELAY_MIN (0)

+/**

+* @def LVVE_TX_BULKDELAY_MAX

+* MaxValue of BulkDelay

+* @see LVVE_Tx_ControlParams_st

+*/

+#define LVVE_TX_BULKDELAY_MAX (6400)

+

+/**

+* @def LVVE_TX_BD_GAIN_DEFAULT

+* Default of BD_Gain

+* @see LVVE_Tx_ControlParams_st

+*/

+#define LVVE_TX_BD_GAIN_DEFAULT (8192)

+/**

+* @def LVVE_TX_BD_GAIN_MIN

+* MinValue of BD_Gain

+* @see LVVE_Tx_ControlParams_st

+*/

+#define LVVE_TX_BD_GAIN_MIN (0)

+/**

+* @def LVVE_TX_BD_GAIN_MAX

+* MaxValue of BD_Gain

+* @see LVVE_Tx_ControlParams_st

+*/

+#define LVVE_TX_BD_GAIN_MAX (32767)

+

+/**

+* @def LVVE_TX_VOL_OPERATINGMODE_DEFAULT

+* Default of VOL_OperatingMode

+* @see LVVE_Tx_ControlParams_st

+*/

+#define LVVE_TX_VOL_OPERATINGMODE_DEFAULT (LVM_MODE_OFF)

+

+/**

+* @def LVVE_TX_VOL_GAIN_DEFAULT

+* Default of VOL_Gain

+* @see LVVE_Tx_ControlParams_st

+*/

+#define LVVE_TX_VOL_GAIN_DEFAULT (0)

+/**

+* @def LVVE_TX_VOL_GAIN_MIN

+* MinValue of VOL_Gain

+* @see LVVE_Tx_ControlParams_st

+*/

+#define LVVE_TX_VOL_GAIN_MIN (-96)

+/**

+* @def LVVE_TX_VOL_GAIN_MAX

+* MaxValue of VOL_Gain

+* @see LVVE_Tx_ControlParams_st

+*/

+#define LVVE_TX_VOL_GAIN_MAX (24)

+

+/**

+* @def LVVE_TX_HPF_OPERATINGMODE_DEFAULT

+* Default of HPF_OperatingMode

+* @see LVVE_Tx_ControlParams_st

+*/

+#define LVVE_TX_HPF_OPERATINGMODE_DEFAULT (LVM_MODE_OFF)

+

+/**

+* @def LVVE_TX_MIC_HPF_CORNERFREQ_DEFAULT

+* Default of MIC_HPF_CornerFreq

+* @see LVVE_Tx_ControlParams_st

+*/

+#define LVVE_TX_MIC_HPF_CORNERFREQ_DEFAULT (50)

+/**

+* @def LVVE_TX_MIC_HPF_CORNERFREQ_MIN

+* MinValue of MIC_HPF_CornerFreq

+* @see LVVE_Tx_ControlParams_st

+*/

+#define LVVE_TX_MIC_HPF_CORNERFREQ_MIN (50)

+/**

+* @def LVVE_TX_MIC_HPF_CORNERFREQ_MAX

+* MaxValue of MIC_HPF_CornerFreq

+* @see LVVE_Tx_ControlParams_st

+*/

+#define LVVE_TX_MIC_HPF_CORNERFREQ_MAX (1500)

+

+

+

+

+/**

+* @def LVVE_TX_EQ_OPERATINGMODE_DEFAULT

+* Default of EQ_OperatingMode

+* @see LVVE_Tx_ControlParams_st

+*/

+#define LVVE_TX_EQ_OPERATINGMODE_DEFAULT (LVM_MODE_OFF)

+

+//adb by xuxinqiang  20150519

+#define LVVE_MAX_EQ_LENGTH_NB                32           /* Maximum equaliser length for narrowband configuration */

+#define LVVE_MAX_EQ_LENGTH_WB                64           /* Maximum equaliser length for wideband configuration */

+

+

+/**

+* @def LVVC_GAIN_DEFAULT

+* Default of Gain

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_GAIN_DEFAULT (0)

+/**

+* @def LVVC_GAIN_MIN

+* MinValue of Gain

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_GAIN_MIN (0)

+/**

+* @def LVVC_GAIN_MAX

+* MaxValue of Gain

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_GAIN_MAX (32767)

+

+/**

+* @def LVVC_SPDETECTED_DEFAULT

+* Default of SpDetected

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_SPDETECTED_DEFAULT (0)

+/**

+* @def LVVC_SPDETECTED_MIN

+* MinValue of SpDetected

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_SPDETECTED_MIN (0)

+/**

+* @def LVVC_SPDETECTED_MAX

+* MaxValue of SpDetected

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_SPDETECTED_MAX (1)

+

+/**

+* @def LVWM_AVL_GAIN_DEFAULT

+* Default of AVL_Gain

+* @see LVWM_ControlParams_st

+*/

+#define LVWM_AVL_GAIN_DEFAULT (0)

+/**

+* @def LVWM_AVL_GAIN_MIN

+* MinValue of AVL_Gain

+* @see LVWM_ControlParams_st

+*/

+#define LVWM_AVL_GAIN_MIN (0)

+/**

+* @def LVWM_AVL_GAIN_MAX

+* MaxValue of AVL_Gain

+* @see LVWM_ControlParams_st

+*/

+#define LVWM_AVL_GAIN_MAX (32767)

+

+

+

+/**

+* @def LVVE_RX_DUMMY_DEFAULT

+* Default of dummy

+* @see LVVE_Rx_ControlParams_st

+*/

+#define LVVE_RX_DUMMY_DEFAULT (0)

+/**

+* @def LVVE_RX_DUMMY_MIN

+* MinValue of dummy

+* @see LVVE_Rx_ControlParams_st

+*/

+#define LVVE_RX_DUMMY_MIN (-128)

+/**

+* @def LVVE_RX_DUMMY_MAX

+* MaxValue of dummy

+* @see LVVE_Rx_ControlParams_st

+*/

+#define LVVE_RX_DUMMY_MAX (127)

+

+/**

+* @def LVNV_STATUS_DEFAULT

+* Default of status

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_STATUS_DEFAULT (0)

+

+/**

+* @def LVNV_DUMMY_DEFAULT

+* Default of Dummy

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DUMMY_DEFAULT (0)

+/**

+* @def LVNV_DUMMY_MIN

+* MinValue of Dummy

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DUMMY_MIN (0)

+/**

+* @def LVNV_DUMMY_MAX

+* MaxValue of Dummy

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DUMMY_MAX (0)

+

+/**

+* @def LVNV_PNLMS0_LB_COEFFS_DEFAULT

+* Default of pNLMS0_LB_Coeffs

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PNLMS0_LB_COEFFS_DEFAULT (0)

+/**

+* @def LVNV_PNLMS0_LB_COEFFS_MIN

+* MinValue of pNLMS0_LB_Coeffs

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PNLMS0_LB_COEFFS_MIN (-2147483648)

+/**

+* @def LVNV_PNLMS0_LB_COEFFS_MAX

+* MaxValue of pNLMS0_LB_Coeffs

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PNLMS0_LB_COEFFS_MAX (2147483647)

+

+/**

+* @def LVNV_PNLMS0_HB_COEFFS_DEFAULT

+* Default of pNLMS0_HB_Coeffs

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PNLMS0_HB_COEFFS_DEFAULT (0)

+/**

+* @def LVNV_PNLMS0_HB_COEFFS_MIN

+* MinValue of pNLMS0_HB_Coeffs

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PNLMS0_HB_COEFFS_MIN (-2147483648)

+/**

+* @def LVNV_PNLMS0_HB_COEFFS_MAX

+* MaxValue of pNLMS0_HB_Coeffs

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PNLMS0_HB_COEFFS_MAX (2147483647)

+

+/**

+* @def LVNV_PNLMS1_LB_COEFFS_DEFAULT

+* Default of pNLMS1_LB_Coeffs

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PNLMS1_LB_COEFFS_DEFAULT (0)

+/**

+* @def LVNV_PNLMS1_LB_COEFFS_MIN

+* MinValue of pNLMS1_LB_Coeffs

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PNLMS1_LB_COEFFS_MIN (-2147483648)

+/**

+* @def LVNV_PNLMS1_LB_COEFFS_MAX

+* MaxValue of pNLMS1_LB_Coeffs

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PNLMS1_LB_COEFFS_MAX (2147483647)

+

+/**

+* @def LVNV_PNLMS1_HB_COEFFS_DEFAULT

+* Default of pNLMS1_HB_Coeffs

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PNLMS1_HB_COEFFS_DEFAULT (0)

+/**

+* @def LVNV_PNLMS1_HB_COEFFS_MIN

+* MinValue of pNLMS1_HB_Coeffs

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PNLMS1_HB_COEFFS_MIN (-2147483648)

+/**

+* @def LVNV_PNLMS1_HB_COEFFS_MAX

+* MaxValue of pNLMS1_HB_Coeffs

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PNLMS1_HB_COEFFS_MAX (2147483647)

+

+/**

+* @def LVNV_PFSB_COEFFS_DEFAULT

+* Default of pFSB_Coeffs

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PFSB_COEFFS_DEFAULT (0)

+/**

+* @def LVNV_PFSB_COEFFS_MIN

+* MinValue of pFSB_Coeffs

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PFSB_COEFFS_MIN (-2147483648)

+/**

+* @def LVNV_PFSB_COEFFS_MAX

+* MaxValue of pFSB_Coeffs

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PFSB_COEFFS_MAX (2147483647)

+

+/**

+* @def LVNV_PGSC_COEFFS_DEFAULT

+* Default of pGSC_Coeffs

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PGSC_COEFFS_DEFAULT (0)

+/**

+* @def LVNV_PGSC_COEFFS_MIN

+* MinValue of pGSC_Coeffs

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PGSC_COEFFS_MIN (-2147483648)

+/**

+* @def LVNV_PGSC_COEFFS_MAX

+* MaxValue of pGSC_Coeffs

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PGSC_COEFFS_MAX (2147483647)

+

+/**

+* @def LVNV_PMICPOWSP_DEFAULT

+* Default of pMicPowSp

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PMICPOWSP_DEFAULT (0)

+/**

+* @def LVNV_PMICPOWSP_MIN

+* MinValue of pMicPowSp

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PMICPOWSP_MIN (0)

+/**

+* @def LVNV_PMICPOWSP_MAX

+* MaxValue of pMicPowSp

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PMICPOWSP_MAX (1)

+

+/**

+* @def LVNV_PCALFACTOR_DEFAULT

+* Default of pCalFactor

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PCALFACTOR_DEFAULT (0)

+/**

+* @def LVNV_PCALFACTOR_MIN

+* MinValue of pCalFactor

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PCALFACTOR_MIN (0)

+/**

+* @def LVNV_PCALFACTOR_MAX

+* MaxValue of pCalFactor

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PCALFACTOR_MAX (32767)

+

+/**

+* @def LVNV_PCALREADY_DEFAULT

+* Default of pCalReady

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PCALREADY_DEFAULT (0)

+/**

+* @def LVNV_PCALREADY_MIN

+* MinValue of pCalReady

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PCALREADY_MIN (0)

+/**

+* @def LVNV_PCALREADY_MAX

+* MaxValue of pCalReady

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PCALREADY_MAX (2)

+

+/**

+* @def LVNV_PBROADSIDE_INTERCC_DEFAULT

+* Default of pBroadside_interCC

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PBROADSIDE_INTERCC_DEFAULT (0)

+/**

+* @def LVNV_PBROADSIDE_INTERCC_MIN

+* MinValue of pBroadside_interCC

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PBROADSIDE_INTERCC_MIN (0)

+/**

+* @def LVNV_PBROADSIDE_INTERCC_MAX

+* MaxValue of pBroadside_interCC

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PBROADSIDE_INTERCC_MAX (32767)

+

+/**

+* @def LVHF_GAMMAE_DEFAULT

+* Default of gammae

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_GAMMAE_DEFAULT (0)

+/**

+* @def LVHF_GAMMAE_MIN

+* MinValue of gammae

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_GAMMAE_MIN (0)

+/**

+* @def LVHF_GAMMAE_MAX

+* MaxValue of gammae

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_GAMMAE_MAX (32767)

+

+/**

+* @def LVHF_STATUS_DEFAULT

+* Default of status

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_STATUS_DEFAULT (0)

+

+/**

+* @def LVHF_PNLMS_LB_COEFS_DEFAULT

+* Default of pNLMS_LB_Coefs

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_PNLMS_LB_COEFS_DEFAULT (0)

+/**

+* @def LVHF_PNLMS_LB_COEFS_MIN

+* MinValue of pNLMS_LB_Coefs

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_PNLMS_LB_COEFS_MIN (-2147483648)

+/**

+* @def LVHF_PNLMS_LB_COEFS_MAX

+* MaxValue of pNLMS_LB_Coefs

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_PNLMS_LB_COEFS_MAX (2147483647)

+

+/**

+* @def LVHF_PNLMS_HB_COEFS_DEFAULT

+* Default of pNLMS_HB_Coefs

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_PNLMS_HB_COEFS_DEFAULT (0)

+/**

+* @def LVHF_PNLMS_HB_COEFS_MIN

+* MinValue of pNLMS_HB_Coefs

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_PNLMS_HB_COEFS_MIN (-2147483648)

+/**

+* @def LVHF_PNLMS_HB_COEFS_MAX

+* MaxValue of pNLMS_HB_Coefs

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_PNLMS_HB_COEFS_MAX (2147483647)

+

+/**

+* @def LVHF_PPCD_COEFS_DEFAULT

+* Default of pPCD_Coefs

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_PPCD_COEFS_DEFAULT (0)

+/**

+* @def LVHF_PPCD_COEFS_MIN

+* MinValue of pPCD_Coefs

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_PPCD_COEFS_MIN (-2147483648)

+/**

+* @def LVHF_PPCD_COEFS_MAX

+* MaxValue of pPCD_Coefs

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_PPCD_COEFS_MAX (2147483647)

+

+

+

+

+/**

+* @def LVVE_TX_DUMMY_DEFAULT

+* Default of dummy

+* @see LVVE_Tx_ControlParams_st

+*/

+#define LVVE_TX_DUMMY_DEFAULT (0)

+/**

+* @def LVVE_TX_DUMMY_MIN

+* MinValue of dummy

+* @see LVVE_Tx_ControlParams_st

+*/

+#define LVVE_TX_DUMMY_MIN (-128)

+/**

+* @def LVVE_TX_DUMMY_MAX

+* MaxValue of dummy

+* @see LVVE_Tx_ControlParams_st

+*/

+#define LVVE_TX_DUMMY_MAX (127)

+

+/**

+* Enum type for LVVIDHeader_MessageID_en

+*/

+typedef enum

+{

+    LVVE_RX_PRESET = 0, ///< VID header Message ID for LVVE_Rx presets

+    LVVE_TX_PRESET = 1, ///< VID header Message ID for LVVE_Tx Presets

+    LVVIDHEADER_MESSAGEID_EN_DUMMY = LVM_MAXENUM

+} LVVIDHeader_MessageID_en;

+

+/**

+* Enum type for LVVIDHeader_ReturnStatus_en

+*/

+typedef enum

+{

+    LVVIDHEADER_NULLADDRESS = 0, ///< LVVIDHeader module returns NULL address error

+    LVVIDHEADER_SUCCESS = 1, ///< LVVIDHeader module returns with success

+    LVVIDHEADER_RETURNSTATUS_EN_DUMMY = LVM_MAXENUM

+} LVVIDHeader_ReturnStatus_en;

+

+/**

+* Enum type for LVVE_Rx_Mode_en

+*/

+typedef enum

+{

+    LVVE_RX_MODE_OFF = 0, ///< Rx voice engine is turned off

+    LVVE_RX_MODE_ON = 1, ///< Rx voice in will run

+    LVVE_RX_MODE_BYPASS = 2, ///< Rx voice engine will run but output will be ignored

+    LVVE_RX_MODE_EN_DUMMY = LVM_MAXENUM

+} LVVE_Rx_Mode_en;

+

+/**

+* Enum type for LVVE_Tx_Mode_en

+*/

+typedef enum

+{

+    LVVE_TX_MODE_OFF = 0, ///< Tx in LVVE engine is disabled

+    LVVE_TX_MODE_ON = 1, ///< TX in LVVE is enabled

+    LVVE_TX_MODE_BYPASS_MIC0 = 2, ///< TX in LVVE engine will run but output will be Mic0 signal

+    LVVE_TX_MODE_BYPASS_MIC1 = 3, ///< Tx in LVVE engine will run but output will be Mic1 signal

+    LVVE_TX_MODE_BYPASS_REF = 4, ///< Tx in LVVE engine will run but output will be Ref signal

+    LVVE_TX_MODE_EN_DUMMY = LVM_MAXENUM

+} LVVE_Tx_Mode_en;

+

+/****************************************************************************************/

+/*                                                                                      */

+/*  Structures                                                                          */

+/*                                                                                      */

+/****************************************************************************************/

+/**

+* The status parameters are used to retrieve the status of the module.

+* @see LVVC_GetStatusParameters

+*/

+typedef struct

+{

+    /**

+    The internal gain setting used by VoiceClarity.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>6.9</td>

+        <td>@ref LVVC_GAIN_MIN (0)</td>

+        <td>@ref LVVC_GAIN_DEFAULT (0)</td>

+        <td>@ref LVVC_GAIN_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 Gain;          ///< Gain

+

+    /**

+    0 (no detection) or 1 (detection).

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>15.0</td>

+        <td>@ref LVVC_SPDETECTED_MIN (0)</td>

+        <td>@ref LVVC_SPDETECTED_DEFAULT (0)</td>

+        <td>@ref LVVC_SPDETECTED_MAX (1)</td>

+    </tr>

+    </table> */

+    LVM_INT16 SpDetected;          ///< The speech detector flag.

+

+} LVVC_StatusParams_st;

+

+/**

+* The status parameters are used to retrieve the status of the module.

+* @see LVWM_GetStatusParameters

+*/

+typedef struct

+{

+    /**

+    The internal gain setting used by WhisperMode in dB.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>6.9</td>

+        <td>@ref LVWM_AVL_GAIN_MIN (0)</td>

+        <td>@ref LVWM_AVL_GAIN_DEFAULT (0)</td>

+        <td>@ref LVWM_AVL_GAIN_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 AVL_Gain;          ///< gain (dB)

+

+} LVWM_StatusParams_st;

+

+/**

+* The status parameters are used to retrieve the status of the module.

+* @see LVVE_Rx_GetStatusParameters

+*/

+typedef struct

+{

+    /**

+    Voice Clarity Status Parameter Structure.

+    */

+    LVVC_StatusParams_st VC_StatusParams;          ///< Voice Clarity Status Parameter Structure

+

+    /**

+    Whisper Mode Status Parameter Structure.

+    */

+    LVWM_StatusParams_st WM_StatusParams;          ///< Whisper Mode Status Parameter Structure

+

+    /**

+    Dummy Param.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>1.7</td>

+        <td>@ref LVVE_RX_DUMMY_MIN (-128)</td>

+        <td>@ref LVVE_RX_DUMMY_DEFAULT (0)</td>

+        <td>@ref LVVE_RX_DUMMY_MAX (127)</td>

+    </tr>

+    </table> */

+    LVM_INT8 dummy;          ///< Dummy Param

+

+} LVVE_Rx_StatusParams_st;

+

+/**

+* The status parameters are used to retrieve the status of the module.

+* @see LVNV_GetStatusParameters

+*/

+typedef struct

+{

+    /**

+    Bit mask describing the current state of LVNV, used for debugging.

+    */

+    LVNV_StatusWord_bm status;          ///< current state

+

+    /**

+    To keep correct memory alignment. To be removed when LVNV_StatusWord_bm has

+    become int32 as it should.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVNV_DUMMY_MIN (0)</td>

+        <td>@ref LVNV_DUMMY_DEFAULT (0)</td>

+        <td>@ref LVNV_DUMMY_MAX (0)</td>

+    </tr>

+    </table> */

+    LVM_INT16 Dummy;          ///< Dummy for memory alignment.

+

+    /**

+    Pointer to the coefficients of the primary low-band (0-4kHz) NLMS filter

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>1.30</td>

+        <td>@ref LVNV_PNLMS0_LB_COEFFS_MIN (-2147483648)</td>

+        <td>@ref LVNV_PNLMS0_LB_COEFFS_DEFAULT (0)</td>

+        <td>@ref LVNV_PNLMS0_LB_COEFFS_MAX (2147483647)</td>

+    </tr>

+    </table> */

+    LVM_INT32* pNLMS0_LB_Coeffs;          ///< NLMS0 lowband filter coefficients

+

+    /**

+    Pointer to the coefficients of the primary high-band (4-8kHz) NLMS filter

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>1.30</td>

+        <td>@ref LVNV_PNLMS0_HB_COEFFS_MIN (-2147483648)</td>

+        <td>@ref LVNV_PNLMS0_HB_COEFFS_DEFAULT (0)</td>

+        <td>@ref LVNV_PNLMS0_HB_COEFFS_MAX (2147483647)</td>

+    </tr>

+    </table> */

+    LVM_INT32* pNLMS0_HB_Coeffs;          ///< NLMS0 highband filter coefficients

+

+    /**

+    Pointer to the coefficients of the secondary low-band (0-4kHz) NLMS filter

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>1.30</td>

+        <td>@ref LVNV_PNLMS1_LB_COEFFS_MIN (-2147483648)</td>

+        <td>@ref LVNV_PNLMS1_LB_COEFFS_DEFAULT (0)</td>

+        <td>@ref LVNV_PNLMS1_LB_COEFFS_MAX (2147483647)</td>

+    </tr>

+    </table> */

+    LVM_INT32* pNLMS1_LB_Coeffs;          ///< NLMS1 lowband filter coefficients

+

+    /**

+    Pointer to the coefficients of the secondary high-band (4-8kHz) NLMS filter

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>1.30</td>

+        <td>@ref LVNV_PNLMS1_HB_COEFFS_MIN (-2147483648)</td>

+        <td>@ref LVNV_PNLMS1_HB_COEFFS_DEFAULT (0)</td>

+        <td>@ref LVNV_PNLMS1_HB_COEFFS_MAX (2147483647)</td>

+    </tr>

+    </table> */

+    LVM_INT32* pNLMS1_HB_Coeffs;          ///< NLMS1 highband filter coefficients

+

+    /**

+    Pointer to the coefficients of the FSB0 and FSB1 filters

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>16.15</td>

+        <td>@ref LVNV_PFSB_COEFFS_MIN (-2147483648)</td>

+        <td>@ref LVNV_PFSB_COEFFS_DEFAULT (0)</td>

+        <td>@ref LVNV_PFSB_COEFFS_MAX (2147483647)</td>

+    </tr>

+    </table> */

+    LVM_INT32* pFSB_Coeffs;          ///< FSB0 and FSB1 coefficients

+

+    /**

+    Pointer to the coefficients of the GSC filter

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>1.30</td>

+        <td>@ref LVNV_PGSC_COEFFS_MIN (-2147483648)</td>

+        <td>@ref LVNV_PGSC_COEFFS_DEFAULT (0)</td>

+        <td>@ref LVNV_PGSC_COEFFS_MAX (2147483647)</td>

+    </tr>

+    </table> */

+    LVM_INT32* pGSC_Coeffs;          ///< GSC coefficients

+

+    /**

+    Pointer to the MicPowSp detection flag

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>15.0</td>

+        <td>@ref LVNV_PMICPOWSP_MIN (0)</td>

+        <td>@ref LVNV_PMICPOWSP_DEFAULT (0)</td>

+        <td>@ref LVNV_PMICPOWSP_MAX (1)</td>

+    </tr>

+    </table> */

+    LVM_INT16* pMicPowSp;          ///< MicPow Speech detection flag

+

+    /**

+    Pointer to the variable of Calibration factor

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>2.13</td>

+        <td>@ref LVNV_PCALFACTOR_MIN (0)</td>

+        <td>@ref LVNV_PCALFACTOR_DEFAULT (0)</td>

+        <td>@ref LVNV_PCALFACTOR_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16* pCalFactor;          ///< Calibration factor value

+

+    /**

+    Pointer to the variable of Calibration ready

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>15.0</td>

+        <td>@ref LVNV_PCALREADY_MIN (0)</td>

+        <td>@ref LVNV_PCALREADY_DEFAULT (0)</td>

+        <td>@ref LVNV_PCALREADY_MAX (2)</td>

+    </tr>

+    </table> */

+    LVM_INT16* pCalReady;          ///< Calibration ready value

+

+    /**

+    Pointer to the inter-channel correlation value used in broadside detection.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVNV_PBROADSIDE_INTERCC_MIN (0)</td>

+        <td>@ref LVNV_PBROADSIDE_INTERCC_DEFAULT (0)</td>

+        <td>@ref LVNV_PBROADSIDE_INTERCC_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16* pBroadside_interCC;          ///< Broadside correlation

+

+} LVNV_StatusParams_st;

+

+/**

+* The status parameters are used to retrieve the status of the module.

+* @see LVHF_GetStatusParameters

+*/

+typedef struct

+{

+    /**

+    Current value of the echo subtraction factor.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>5.10</td>

+        <td>@ref LVHF_GAMMAE_MIN (0)</td>

+        <td>@ref LVHF_GAMMAE_DEFAULT (0)</td>

+        <td>@ref LVHF_GAMMAE_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 gammae;          ///< multiplicator factor of echo suppression

+

+    /**

+    Bit mask describing the current state of LVHF, used for debugging.

+    */

+    LVHF_StatusWord_bm status;          ///< current state

+

+    /**

+    Pointer to the coefficients of the LB NLMS.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>1.30</td>

+        <td>@ref LVHF_PNLMS_LB_COEFS_MIN (-2147483648)</td>

+        <td>@ref LVHF_PNLMS_LB_COEFS_DEFAULT (0)</td>

+        <td>@ref LVHF_PNLMS_LB_COEFS_MAX (2147483647)</td>

+    </tr>

+    </table> */

+    LVM_INT32* pNLMS_LB_Coefs;          ///< NLMS lowband filter coefficients

+

+    /**

+    Pointer to the coefficients of the HB NLMS.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>1.30</td>

+        <td>@ref LVHF_PNLMS_HB_COEFS_MIN (-2147483648)</td>

+        <td>@ref LVHF_PNLMS_HB_COEFS_DEFAULT (0)</td>

+        <td>@ref LVHF_PNLMS_HB_COEFS_MAX (2147483647)</td>

+    </tr>

+    </table> */

+    LVM_INT32* pNLMS_HB_Coefs;          ///< NLMS highband filter coefficients

+

+    /**

+    Pointer to the coefficients of the PCD NLMS.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>1.30</td>

+        <td>@ref LVHF_PPCD_COEFS_MIN (-2147483648)</td>

+        <td>@ref LVHF_PPCD_COEFS_DEFAULT (0)</td>

+        <td>@ref LVHF_PPCD_COEFS_MAX (2147483647)</td>

+    </tr>

+    </table> */

+    LVM_INT32* pPCD_Coefs;          ///< PCD NLMS filter coefficients

+

+} LVHF_StatusParams_st;

+

+/**

+* The status parameters are used to retrieve the status of the module.

+* @see LVVE_Tx_GetStatusParameters

+*/

+typedef struct

+{

+    /**

+    HandsFree Status Parameter Structure.

+    */

+    LVHF_StatusParams_st HF_StatusParams;          ///< HandsFree Status Parameters Structure

+

+    /**

+    NoiseVoid Status Parameter Structure.

+    */

+    LVNV_StatusParams_st NV_StatusParams;          ///< NoiseVoid Status Parameters Structrue

+

+    /**

+    WhisperMode Status Parameter Structure.

+    */

+    LVWM_StatusParams_st WM_StatusParams;          ///< WhisperMode Status Parameter Structrue

+

+    /**

+    Dummy Param.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>1.7</td>

+        <td>@ref LVVE_TX_DUMMY_MIN (-128)</td>

+        <td>@ref LVVE_TX_DUMMY_DEFAULT (0)</td>

+        <td>@ref LVVE_TX_DUMMY_MAX (127)</td>

+    </tr>

+    </table> */

+    LVM_INT8 dummy;          ///< Dummy Param

+

+} LVVE_Tx_StatusParams_st;

+

+/**

+* The control parameters are used to control the overall module behavior. These parameters may

+* be changed at any time during processing using the LVVIDHeader_SetControlParameters function but they

+* will not take effect until the next call to the LVVIDHeader_Process function.

+*

+* @see LVVIDHeader_SetControlParameters

+* @see LVVIDHeader_Process

+*/

+typedef struct

+{

+    /**

+    This number always increments by one when there is change in the header format.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>8.0</td>

+        <td>@ref LVVIDHEADER_HEADERVERSION_MIN (0)</td>

+        <td>@ref LVVIDHEADER_HEADERVERSION_DEFAULT (3)</td>

+        <td>@ref LVVIDHEADER_HEADERVERSION_MAX (255)</td>

+    </tr>

+    </table> */

+    LVM_UINT8 HeaderVersion;          ///< Header Format Version

+

+    /**

+    Initially This variable holds value of the baseline version. The value is in

+    format of xxyyzzpp where xx is major number of the library, yy is minor number,

+    zz is second minor number and pp is patch number of the baseline.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>32.0</td>

+        <td>@ref LVVIDHEADER_BASELINEVERSION_MIN (1)</td>

+        <td>@ref LVVIDHEADER_BASELINEVERSION_DEFAULT (51906816)</td>

+        <td>@ref LVVIDHEADER_BASELINEVERSION_MAX (4294967295)</td>

+    </tr>

+    </table> */

+    LVM_UINT32 BaselineVersion;          ///< This is LVVE tagged version name

+

+    /**

+    First LVVE_Rx algorithm mask which holds information of which LVVE_Rx

+    algorithms are present.

+    */

+    LVVIDHeader_LVVE_Rx_Mask1_bm LVVE_Rx_AlgoMask1;          ///< This variable forms first part of LVVE_Rx algorithm mask

+

+    /**

+    Second LVVE_Rx algorithm mask which holds information of which LVVE_Rx

+    algorithms are present.

+    */

+    LVVIDHeader_LVVE_Rx_Mask2_bm LVVE_Rx_AlgoMask2;          ///< This variable forms second part of LVVE_Rx algorithm mask

+

+    /**

+    First LVVE_Tx algorithm mask which holds information of which LVVE_Tx

+    algorithms are present.

+    */

+    LVVIDHeader_LVVE_Tx_Mask1_bm LVVE_Tx_AlgoMask1;          ///< This variable forms first part of LVVE_Tx mask

+

+    /**

+    Second LVVE_Tx algorithm mask which holds information of which LVVE_Tx

+    algorithms are present.

+    */

+    LVVIDHeader_LVVE_Tx_Mask2_bm LVVE_Tx_AlgoMask2;          ///< This variable forms second part of LVVE_Tx mask

+

+    /**

+    First LVVE configuration mask which holds information of which configurations

+    of LVVE_Tx and LVVE_Rx algorithm are present.

+    */

+    LVVIDHeader_Configurations_Mask1_bm LVVE_Config_AlgoMask1;          ///< This variable forms first part of common LVVE_Tx and LVVE_Rx configuration mask

+

+    /**

+    Second LVVE configuration mask which holds information of which configurations

+    of LVVE_Tx and LVVE_Rx algorithm are present.

+    */

+    LVVIDHeader_Configurations_Mask2_bm LVVE_Config_AlgoMask2;          ///< This variable forms second part of common LVVE_Tx and LVVE_Rx configuration mask

+

+    /**

+    Messge ID is used to identify stream

+    */

+    LVVIDHeader_MessageID_en MessageID;          ///< This param holds message ID of the buffer

+

+    /**

+    This parameter specifies the sample rate information of the buffer.

+    */

+    LVM_Fs_en SampleRate;          ///< Sample rate information of the buffer.

+

+    /**

+    This parameter specifies the volume index corresponding to the subsequent data.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>8.0</td>

+        <td>@ref LVVIDHEADER_VOLUMEINDEX_MIN (0)</td>

+        <td>@ref LVVIDHEADER_VOLUMEINDEX_DEFAULT (0)</td>

+        <td>@ref LVVIDHEADER_VOLUMEINDEX_MAX (255)</td>

+    </tr>

+    </table> */

+    LVM_UINT8 VolumeIndex;          ///< Volume index corresponding to the subsequent data.

+

+    /**

+    This parameter specifies how many volumes are present in the binary file.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>8.0</td>

+        <td>@ref LVVIDHEADER_NUMVOLUMES_MIN (0)</td>

+        <td>@ref LVVIDHEADER_NUMVOLUMES_DEFAULT (1)</td>

+        <td>@ref LVVIDHEADER_NUMVOLUMES_MAX (255)</td>

+    </tr>

+    </table> */

+    LVM_UINT8 NumVolumes;          ///< Number of volumes present in the binary file.

+

+} LVVIDHeader_ControlParams_st;

+

+/**

+* The control parameters are used to control the overall module behavior. These parameters may

+* be changed at any time during processing using the LVVC_SetControlParameters function but they

+* will not take effect until the next call to the LVVC_Process function.

+*

+* @see LVVC_SetControlParameters

+* @see LVVC_Process

+*/

+typedef struct

+{

+    /**

+    Control the operating mode (ON/OFF) of the algorithm.

+    */

+    LVM_Mode_en OperatingMode;          ///< Operating mode

+

+    /**

+    The mode word to enable/disable internal algorithm blocks of VoiceClarity.

+    */

+    LVVC_ModeWord_bm mode;          ///< Mode word

+

+    /**

+    Maximum Gain applied to the signal.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>6.9</td>

+        <td>@ref LVVC_GAIN_LIN_MAX_MIN (512)</td>

+        <td>@ref LVVC_GAIN_LIN_MAX_DEFAULT (1286)</td>

+        <td>@ref LVVC_GAIN_LIN_MAX_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 Gain_Lin_Max;          ///< Maximum Gain.

+

+    /**

+    The Noise_Sensitivity parameter sets how sensitive VoiceClarity will be to the

+    background noise level. The Noise_Sensitivity parameter allows adjusting the

+    sensitivity of those processing blocks to the nearend noise level. For high

+    values of the Noise_Sensitivity the effect of the mentioned processing blocks

+    will be big, even at low to moderate nearend noise levels. For low values of

+    the Noise_Sensitivity the effect of the processing blocks will be smaller, even

+    for high nearend noise levels.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVVC_NOISE_SENSITIVITY_MIN (-6709)</td>

+        <td>@ref LVVC_NOISE_SENSITIVITY_DEFAULT (20000)</td>

+        <td>@ref LVVC_NOISE_SENSITIVITY_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 Noise_Sensitivity;          ///< Noise Sensitivity.

+

+    /**

+    The desired output level of the AGC. <br>

+    AVL_Target_level_lin = \f$32767*10^{Target_Level_dB/20}\f$

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVVC_AVL_TARGET_LEVEL_LIN_MIN (0)</td>

+        <td>@ref LVVC_AVL_TARGET_LEVEL_LIN_DEFAULT (16384)</td>

+        <td>@ref LVVC_AVL_TARGET_LEVEL_LIN_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 AVL_Target_level_lin;          ///< The desired output level of the AGC.

+

+    /**

+    The maximal attenuation of the AGC. <br>

+    AVL_MinGainLin = \f$512*10^{MinGain_dB/20}\f$

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>6.9</td>

+        <td>@ref LVVC_AVL_MINGAINLIN_MIN (0)</td>

+        <td>@ref LVVC_AVL_MINGAINLIN_DEFAULT (256)</td>

+        <td>@ref LVVC_AVL_MINGAINLIN_MAX (512)</td>

+    </tr>

+    </table> */

+    LVM_INT16 AVL_MinGainLin;          ///< The maximal attenuation of the AGC.

+

+    /**

+    The maximal gain of the AGC. <br>

+    AVL_MaxGainLin = \f$512*10^{MaxGain_dB/20}\f$

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>6.9</td>

+        <td>@ref LVVC_AVL_MAXGAINLIN_MIN (512)</td>

+        <td>@ref LVVC_AVL_MAXGAINLIN_DEFAULT (8192)</td>

+        <td>@ref LVVC_AVL_MAXGAINLIN_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 AVL_MaxGainLin;          ///< The maximal gain of the AGC.

+

+    /**

+    The nominal gain of the AGC.<br>

+    AVL_NominalGain = \f$512*10^{NominalGain_dB/20}\f$

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>6.9</td>

+        <td>@ref LVVC_AVL_NOMINALGAIN_MIN (0)</td>

+        <td>@ref LVVC_AVL_NOMINALGAIN_DEFAULT (512)</td>

+        <td>@ref LVVC_AVL_NOMINALGAIN_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 AVL_NominalGain;          ///< The nominal gain of the AGC.

+

+    /**

+    The gain of the AGC is smoothed across time. The time constant of the smoothing

+    depends on whether the gain is increasing or decreasing. When a sudden loud

+    signal is encountered (e.g. attack of speech), the attack time is used. When

+    the gain is increasing (e.g. long period of whispered speech), the release time

+    is used. <br>

+

+    AVL_Attack = \f$32767*\exp(-1/(100*AttackTimeSec))\f$

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVVC_AVL_ATTACK_MIN (0)</td>

+        <td>@ref LVVC_AVL_ATTACK_DEFAULT (12055)</td>

+        <td>@ref LVVC_AVL_ATTACK_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 AVL_Attack;          ///< The attack time of the AGC.

+

+    /**

+    The gain of the AGC is smoothed across time. The time constant of the smoothing

+    depends on whether the gain is increasing or decreasing. When a sudden loud

+    signal is encountered (e.g. attack of speech), the attack time is used. When

+    the gain is increasing (e.g. long period of whispered speech), the release time

+    is used. <br>

+

+    AVL_Release = \f$32767*\exp(-1/(100*ReleaseTimeSec))\f$

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVVC_AVL_RELEASE_MIN (0)</td>

+        <td>@ref LVVC_AVL_RELEASE_DEFAULT (32604)</td>

+        <td>@ref LVVC_AVL_RELEASE_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 AVL_Release;          ///< The release time of the AGC.

+

+    /**

+    The release time at maximum noise level.<br>

+

+    AVL_ReleaseMax = \f$32767*\exp(-1/(100*ReleaseMaxTimeSec))\f$

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVVC_AVL_RELEASEMAX_MIN (0)</td>

+        <td>@ref LVVC_AVL_RELEASEMAX_DEFAULT (32441)</td>

+        <td>@ref LVVC_AVL_RELEASEMAX_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 AVL_ReleaseMax;          ///< The release time at maximum noise level.

+

+    /**

+    AVL_Limit_MaxOutputLin = \f$32767*10^{TargetLimiterLeveldB/20}\f$

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVVC_AVL_LIMIT_MAXOUTPUTLIN_MIN (0)</td>

+        <td>@ref LVVC_AVL_LIMIT_MAXOUTPUTLIN_DEFAULT (23170)</td>

+        <td>@ref LVVC_AVL_LIMIT_MAXOUTPUTLIN_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 AVL_Limit_MaxOutputLin;          ///< The level to which the signal will be limited.

+

+    /**

+    The higher the value of the threshold, the less speech detections will occur.

+    <br>

+    SpDetect_Threshold = \f$512 * [0,64]\f$

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>6.9</td>

+        <td>@ref LVVC_SPDETECT_THRESHOLD_MIN (0)</td>

+        <td>@ref LVVC_SPDETECT_THRESHOLD_DEFAULT (1024)</td>

+        <td>@ref LVVC_SPDETECT_THRESHOLD_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 SpDetect_Threshold;          ///< The threshold used in the speech detector of VoiceClarity.

+

+} LVVC_ControlParams_st;

+

+/**

+* The control parameters are used to control the overall module behavior. These parameters may

+* be changed at any time during processing using the LVFENS_SetControlParameters function but they

+* will not take effect until the next call to the LVFENS_Process function.

+*

+* @see LVFENS_SetControlParameters

+* @see LVFENS_Process

+*/

+typedef struct

+{

+    /**

+    */

+    LVM_Mode_en OperatingMode;          ///< Operating Mode

+

+    /**

+    The maximum amount of noise suppression. <br>

+    Unit: dB<br>

+    FENS_limit_ns = \f$32767*10^{-max noise reduction[dB]/20}\f$

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVFENS_FENS_LIMIT_NS_MIN (0)</td>

+        <td>@ref LVFENS_FENS_LIMIT_NS_DEFAULT (10976)</td>

+        <td>@ref LVFENS_FENS_LIMIT_NS_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 FENS_limit_NS;          ///< FENS Noise Suppression Limit

+

+    /**

+    The mode word to control the internal operation of FENS.

+    */

+    LVFENS_ModeWord_bm Mode;          ///< Mode word

+

+} LVFENS_ControlParams_st;

+

+/**

+* The control parameters are used to control the overall module behavior. These parameters may

+* be changed at any time during processing using the LVWM_SetControlParameters function but they

+* will not take effect until the next call to the LVWM_Process function.

+*

+* @see LVWM_SetControlParameters

+* @see LVWM_Process

+*/

+typedef struct

+{

+    /**

+    Control the operating mode (ON/OFF) of the algorithm.

+    */

+    LVM_Mode_en OperatingMode;          ///< Operating mode

+

+    /**

+    The mode word to enable/disable internal algorithm blocks of WhisperMode.

+    */

+    LVWM_ModeWord_bm mode;          ///< Mode word

+

+    /**

+    The desired output level of the AGC. <br>

+    AVL_Target_level_lin = \f$32767*10^{TargetLeveldB/20}\f$

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVWM_AVL_TARGET_LEVEL_LIN_MIN (0)</td>

+        <td>@ref LVWM_AVL_TARGET_LEVEL_LIN_DEFAULT (16384)</td>

+        <td>@ref LVWM_AVL_TARGET_LEVEL_LIN_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 AVL_Target_level_lin;          ///< The desired output level of the AGC.

+

+    /**

+    The maximal attenuation of the AGC. <br>

+    AVL_MinGainLin = \f$512*10^{MinGaindB/20}\f$

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>6.9</td>

+        <td>@ref LVWM_AVL_MINGAINLIN_MIN (0)</td>

+        <td>@ref LVWM_AVL_MINGAINLIN_DEFAULT (128)</td>

+        <td>@ref LVWM_AVL_MINGAINLIN_MAX (512)</td>

+    </tr>

+    </table> */

+    LVM_INT16 AVL_MinGainLin;          ///< The maximal attenuation of the AGC.

+

+    /**

+    The maximal gain of the AGC. <br>

+    AVL_MaxGainLin = \f$512*10^{MaxGaindB/20}\f$

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>6.9</td>

+        <td>@ref LVWM_AVL_MAXGAINLIN_MIN (512)</td>

+        <td>@ref LVWM_AVL_MAXGAINLIN_DEFAULT (8189)</td>

+        <td>@ref LVWM_AVL_MAXGAINLIN_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 AVL_MaxGainLin;          ///< The maximal gain of the AGC.

+

+    /**

+    The gain of the AGC is smoothed across time. The time constant of the smoothing

+    depends on whether the gain is increasing or decreasing. When a sudden loud

+    signal is encountered (e.g. attack of speech), the attack time is used. When

+    the gain is increasing (e.g. long period of whispered speech), the release time

+    is used. <br>

+

+    AVL_Attack = \f$32767*\exp(-1/(100*AttackTimeSec))\f$

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVWM_AVL_ATTACK_MIN (0)</td>

+        <td>@ref LVWM_AVL_ATTACK_DEFAULT (25520)</td>

+        <td>@ref LVWM_AVL_ATTACK_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 AVL_Attack;          ///< The attack time of the AGC.

+

+    /**

+    The gain of the AGC is smoothed across time. The time constant of the smoothing

+    depends on whether the gain is increasing or decreasing. When a sudden loud

+    signal is encountered (e.g. attack of speech), the attack time is used. When

+    the gain is increasing (e.g. long period of whispered speech), the release time

+    is used. <br>

+

+    AVL_Release = \f$32767*\exp(-1/(100*ReleasTimeSec))\f$

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVWM_AVL_RELEASE_MIN (0)</td>

+        <td>@ref LVWM_AVL_RELEASE_DEFAULT (32685)</td>

+        <td>@ref LVWM_AVL_RELEASE_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 AVL_Release;          ///< The release time of the AGC.

+

+    /**

+    AVL_Limit_MaxOutputLin = \f$32767*10^{TargetLimiterLeveldB/20}\f$

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVWM_AVL_LIMIT_MAXOUTPUTLIN_MIN (0)</td>

+        <td>@ref LVWM_AVL_LIMIT_MAXOUTPUTLIN_DEFAULT (23197)</td>

+        <td>@ref LVWM_AVL_LIMIT_MAXOUTPUTLIN_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 AVL_Limit_MaxOutputLin;          ///< The level to which the signal will be limited.

+

+    /**

+    The higher the value of the threshold, the less speech detections will occur.

+    <br>

+    SpDetect_Threshold = \f$512 * [0,64]\f$

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>6.9</td>

+        <td>@ref LVWM_SPDETECT_THRESHOLD_MIN (0)</td>

+        <td>@ref LVWM_SPDETECT_THRESHOLD_DEFAULT (9216)</td>

+        <td>@ref LVWM_SPDETECT_THRESHOLD_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 SpDetect_Threshold;          ///< The threshold used in the speech detector of WhisperMode.

+

+} LVWM_ControlParams_st;

+

+/**

+* The control parameters are used to control the overall module behavior. These parameters may

+* be changed at any time during processing using the LVDRC_SetControlParameters function but they

+* will not take effect until the next call to the LVDRC_Process function.

+*

+* @see LVDRC_SetControlParameters

+* @see LVDRC_Process

+*/

+typedef struct

+{

+    /**

+    Operating mode for DRC

+    */

+    LVM_Mode_en OperatingMode;          ///< Operating mode

+

+    /**

+    Sets the number of sections (knee points) in the compressor curve

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>16.0</td>

+        <td>@ref LVDRC_NUMKNEES_MIN (1)</td>

+        <td>@ref LVDRC_NUMKNEES_DEFAULT (5)</td>

+        <td>@ref LVDRC_NUMKNEES_MAX (5)</td>

+    </tr>

+    </table> */

+    LVM_UINT16 NumKnees;          ///< Number of Knee points in compressor curve

+

+    /**

+    An array of size 5(maximum) containing the knee points specified by the

+    compression curve in dBFs. The number of knee points in use is limited by the

+    NumKnees parameter. Th input level for the first knee should be equal to or

+    larger than -96dB, and the input level for the last knee should be 0dB.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>15.0</td>

+        <td>@ref LVDRC_COMPRESSORCURVEINPUTLEVELS_MIN (-96)</td>

+        <td>@ref LVDRC_COMPRESSORCURVEINPUTLEVELS_DEFAULT {-96,-70,-50, -24, 0}</td>

+        <td>@ref LVDRC_COMPRESSORCURVEINPUTLEVELS_MAX (0)</td>

+    </tr>

+    </table> */

+    LVM_INT16 CompressorCurveInputLevels[LVDRC_COMPRESSORCURVEINPUTLEVELS_LENGTH];          ///< Compressor Curve Input Levels

+

+    /**

+    An array of size 5(maximum) containing the knee points specified by the

+    compression curve in dBFs. The number of knee points in use is limited by the

+    NumKnees parameter. The output level for the first knee should be equal to or

+    larger than -96dB, and the output level for the last knee should be equal to or

+    smaller than 0dB.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>15.0</td>

+        <td>@ref LVDRC_COMPRESSORCURVEOUTPUTLEVELS_MIN (-96)</td>

+        <td>@ref LVDRC_COMPRESSORCURVEOUTPUTLEVELS_DEFAULT {-96,-70,-38,-12,0}</td>

+        <td>@ref LVDRC_COMPRESSORCURVEOUTPUTLEVELS_MAX (0)</td>

+    </tr>

+    </table> */

+    LVM_INT16 CompressorCurveOutputLevels[LVDRC_COMPRESSORCURVEOUTPUTLEVELS_LENGTH];          ///< Compressor Curve Output Levels

+

+    /**

+    The AttackTime parameter is the time constant controlling the rate of reaction

+    to increase in signal level. The AttackTime is specified in increments of 100µs

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>15.0</td>

+        <td>@ref LVDRC_ATTACKTIME_MIN (0)</td>

+        <td>@ref LVDRC_ATTACKTIME_DEFAULT (50)</td>

+        <td>@ref LVDRC_ATTACKTIME_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 AttackTime;          ///< Attack Time

+

+    /**

+    The ReleaseTime parameter is the time constant controlling the rate of reaction

+    to decrease in signal level. The ReleaseTime is specified in increments of

+    100µs.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>15.0</td>

+        <td>@ref LVDRC_RELEASETIME_MIN (0)</td>

+        <td>@ref LVDRC_RELEASETIME_DEFAULT (50)</td>

+        <td>@ref LVDRC_RELEASETIME_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 ReleaseTime;          ///< Release Time

+

+    /**

+    Enable or Disable limiter with soft clipping.

+    */

+    LVM_Mode_en LimiterOperatingMode;          ///< Enable or Disable limiter with soft clipping

+

+    /**

+    Sets the limit level of the compressor in dB.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>15.0</td>

+        <td>@ref LVDRC_LIMITLEVEL_MIN (-96)</td>

+        <td>@ref LVDRC_LIMITLEVEL_DEFAULT (0)</td>

+        <td>@ref LVDRC_LIMITLEVEL_MAX (0)</td>

+    </tr>

+    </table> */

+    LVM_INT16 LimitLevel;          ///< Sets the limit level of the compressor in dB

+

+} LVDRC_ControlParams_st;

+

+/**

+* The control parameters are used to control the overall module behavior. These parameters may

+* be changed at any time during processing using the LVNG_SetControlParameters function but they

+* will not take effect until the next call to the LVNG_Process function.

+*

+* @see LVNG_SetControlParameters

+* @see LVNG_Process

+*/

+typedef struct

+{

+    /**

+    Operating mode for Noise Gate

+    */

+    LVM_Mode_en OperatingMode;          ///< Operating mode

+

+    /**

+    Sets the number of sections (knee points) in the compressor curve

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>16.0</td>

+        <td>@ref LVNG_NUMKNEES_MIN (1)</td>

+        <td>@ref LVNG_NUMKNEES_DEFAULT (5)</td>

+        <td>@ref LVNG_NUMKNEES_MAX (5)</td>

+    </tr>

+    </table> */

+    LVM_UINT16 NumKnees;          ///< Number of Knee points in compressor curve

+

+    /**

+    An array of size 5(maximum) containing the knee points specified by the

+    compression curve in dBFs. The number of knee points in use is limited by the

+    NumKnees parameter. The input level for the first knee should be equal to or

+    larger than -96dB, and the input level for the last knee should be 0dB.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>15.0</td>

+        <td>@ref LVNG_COMPRESSORCURVEINPUTLEVELS_MIN (-96)</td>

+        <td>@ref LVNG_COMPRESSORCURVEINPUTLEVELS_DEFAULT {-80,-70,-50, -24, 0}</td>

+        <td>@ref LVNG_COMPRESSORCURVEINPUTLEVELS_MAX (0)</td>

+    </tr>

+    </table> */

+    LVM_INT16 CompressorCurveInputLevels[LVNG_COMPRESSORCURVEINPUTLEVELS_LENGTH];          ///< Compressor Curve Input Levels

+

+    /**

+    An array of size 5(maximum) containing the knee points specified by the

+    compression curve in dBFs. The number of knee points in use is limited by the

+    NumKnees parameter. The output level for the first knee should be equal to or

+    larger than -96dB, and the output level for the last knee should be equal to or

+    smaller than 0dB.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>15.0</td>

+        <td>@ref LVNG_COMPRESSORCURVEOUTPUTLEVELS_MIN (-96)</td>

+        <td>@ref LVNG_COMPRESSORCURVEOUTPUTLEVELS_DEFAULT {-96,-80,-50, -24, 0}</td>

+        <td>@ref LVNG_COMPRESSORCURVEOUTPUTLEVELS_MAX (0)</td>

+    </tr>

+    </table> */

+    LVM_INT16 CompressorCurveOutputLevels[LVNG_COMPRESSORCURVEOUTPUTLEVELS_LENGTH];          ///< Compressor Curve Output Levels

+

+    /**

+    The AttackTime parameter is the time constant controlling the rate of reaction

+    to increase in signal level. The AttackTime is specified in increments of 100µs

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>15.0</td>

+        <td>@ref LVNG_ATTACKTIME_MIN (0)</td>

+        <td>@ref LVNG_ATTACKTIME_DEFAULT (50)</td>

+        <td>@ref LVNG_ATTACKTIME_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 AttackTime;          ///< Attack Time

+

+    /**

+    The ReleaseTime parameter is the time constant controlling the rate of reaction

+    to decrease in signal level. The ReleaseTime is specified in increments of

+    100µs.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>15.0</td>

+        <td>@ref LVNG_RELEASETIME_MIN (0)</td>

+        <td>@ref LVNG_RELEASETIME_DEFAULT (50)</td>

+        <td>@ref LVNG_RELEASETIME_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 ReleaseTime;          ///< Release Time

+

+} LVNG_ControlParams_st;

+

+/**

+* The control parameters are used to control the overall module behavior. These parameters may

+* be changed at any time during processing using the LVNLPP_SetControlParameters function but they

+* will not take effect until the next call to the LVNLPP_Process function.

+*

+* @see LVNLPP_SetControlParameters

+* @see LVNLPP_Process

+*/

+typedef struct

+{

+    /**

+    Limits the signal level compared to digital full scale in dB.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>15.0</td>

+        <td>@ref LVNLPP_NLPP_LIMIT_MIN (-24)</td>

+        <td>@ref LVNLPP_NLPP_LIMIT_DEFAULT (0)</td>

+        <td>@ref LVNLPP_NLPP_LIMIT_MAX (0)</td>

+    </tr>

+    </table> */

+    LVM_INT16 NLPP_Limit;          ///< NLPP Limit

+

+    /**

+    Sets the -3dB corner frequency of the high-pass filter in Hz.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>16.0</td>

+        <td>@ref LVNLPP_NLPP_HPF_CORNERFREQ_MIN (50)</td>

+        <td>@ref LVNLPP_NLPP_HPF_CORNERFREQ_DEFAULT (50)</td>

+        <td>@ref LVNLPP_NLPP_HPF_CORNERFREQ_MAX (1000)</td>

+    </tr>

+    </table> */

+    LVM_UINT16 NLPP_HPF_CornerFreq;          ///< NLPP HPF Corner Frequency

+

+} LVNLPP_ControlParams_st;

+

+/**

+* The control parameters are used to control the overall module behavior. These parameters may

+* be changed at any time during processing using the LVEQ_SetControlParameters function but they

+* will not take effect until the next call to the LVEQ_Process function.

+*

+* @see LVEQ_SetControlParameters

+* @see LVEQ_Process

+*/

+typedef struct

+{

+    /**

+    Sets the length of the Equalizer impulse response. This must never be more than

+    the value of EQ_MaxLength set at initialization time. The EQ_Length must be a

+    multiple of 8.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>16.0</td>

+        <td>@ref LVEQ_EQ_LENGTH_MIN (8)</td>

+        <td>@ref LVEQ_EQ_LENGTH_DEFAULT (64)</td>

+        <td>@ref LVEQ_EQ_LENGTH_MAX (64)</td>

+    </tr>

+    </table> */

+    LVM_UINT16 EQ_Length;          ///< EQ Tap Length

+

+    /**

+    Pointer to an array containing the samples of the Equalizer impulse response.

+    The format of the array content is specified below. The samples of the

+    Equalizer impulse response must be in Q3.12 format.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>3.12</td>

+        <td>@ref LVEQ_EQ_COEFS_MIN (-32768)</td>

+        <td>@ref LVEQ_EQ_COEFS_DEFAULT {4096,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}</td>

+        <td>@ref LVEQ_EQ_COEFS_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 *pEQ_Coefs;          ///< Equalizer impulse response

+

+} LVEQ_ControlParams_st;

+

+

+

+/*[Begin] [lvwenhua-2013/10/21]*/

+typedef struct

+{

+    LVM_INT16                     EqCoefs[LVVE_MAX_EQ_LENGTH_NB];

+} LVEQ_Coefs_st;

+/*[End] [lvwenhua-2013/10/21]*/

+

+

+

+

+

+

+/**

+* The control parameters are used to control the overall module behavior. These parameters may

+* be changed at any time during processing using the LVVOL_SetControlParameters function but they

+* will not take effect until the next call to the LVVOL_Process function.

+*

+* @see LVVOL_SetControlParameters

+* @see LVVOL_Process

+*/

+typedef struct

+{

+    /**

+    Turns on/off VOL_Gain.

+    */

+    LVM_Mode_en VOL_OperatingMode;          ///< Turns on/off VOL_Gain

+

+    /**

+    The volume control gain can be used to set the overall volume level of the

+    signal. The gain is set in dB with steps of 1dB.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>15.0</td>

+        <td>@ref LVVOL_VOL_GAIN_MIN (-96)</td>

+        <td>@ref LVVOL_VOL_GAIN_DEFAULT (0)</td>

+        <td>@ref LVVOL_VOL_GAIN_MAX (24)</td>

+    </tr>

+    </table> */

+    LVM_INT16 VOL_Gain;          ///< Apply Gain to Input signal

+

+} LVVOL_ControlParams_st;

+

+/**

+* The control parameters are used to control the overall module behavior. These parameters may

+* be changed at any time during processing using the LVHPF_SetControlParameters function but they

+* will not take effect until the next call to the LVHPF_Process function.

+*

+* @see LVHPF_SetControlParameters

+* @see LVHPF_Process

+*/

+typedef struct

+{

+    /**

+    Turns on/off High Pass filter.

+    */

+    LVM_Mode_en HPF_OperatingMode;          ///< Turns on/off High Pass filter

+

+    /**

+    Sets the 3dB corner frequency of the high-pass filter. In case NoiseVoid is

+    enabled, the same high-pass filter will be applied to the second microphone

+    channel.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>16.0</td>

+        <td>@ref LVHPF_HPF_CORNERFREQ_MIN (50)</td>

+        <td>@ref LVHPF_HPF_CORNERFREQ_DEFAULT (50)</td>

+        <td>@ref LVHPF_HPF_CORNERFREQ_MAX (1500)</td>

+    </tr>

+    </table> */

+    LVM_UINT16 HPF_CornerFreq;          ///< High Pass Filter Corner Frequency in Hz

+

+} LVHPF_ControlParams_st;

+

+/**

+* The control parameters are used to control the overall module behavior. These parameters may

+* be changed at any time during processing using the LVMUTE_SetControlParameters function but they

+* will not take effect until the next call to the LVMUTE_Process function.

+*

+* @see LVMUTE_SetControlParameters

+* @see LVMUTE_Process

+*/

+typedef struct

+{

+    /**

+    This param can mute unmute the Rx/Tx engine output.

+    */

+    LVM_Mode_en Mute;          ///< This param can mute unmute the Rx/Tx engine output

+

+} LVMUTE_ControlParams_st;

+

+/**

+* The control parameters are used to control the overall module behavior. These parameters may

+* be changed at any time during processing using the LVVE_Rx_SetControlParameters function but they

+* will not take effect until the next call to the LVVE_Rx_Process function.

+*

+* @see LVVE_Rx_SetControlParameters

+* @see LVVE_Rx_Process

+*/

+typedef struct

+{

+    /**

+    This enumerated type is used to set the operating mode of the Rx path. The

+    processing can be separately set to enable all processing modules (i.e., ON),

+    to disable all processing modules (i.e., OFF) or to bypass all processing

+    modules (i.e., BYPASS). When bypassed, all processing modules keep on running,

+    but their output is not used.

+    */

+    LVVE_Rx_Mode_en OperatingMode;          ///< This param controls the on/off of RX voice engine.

+

+    /**

+    This param can mute unmute the Rx/Tx engine output.

+    */

+    LVM_Mode_en Mute;          ///< This param can mute unmute the Rx/Tx engine output

+

+    /**

+    Turns on/off VOL_Gain.

+    */

+    LVM_Mode_en VOL_OperatingMode;          ///< Turns on/off VOL_Gain

+

+    /**

+    The volume control gain can be used to set the overall volume level of the

+    signal. The gain is set in dB with steps of 1dB.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>15.0</td>

+        <td>@ref LVVE_RX_VOL_GAIN_MIN (-96)</td>

+        <td>@ref LVVE_RX_VOL_GAIN_DEFAULT (0)</td>

+        <td>@ref LVVE_RX_VOL_GAIN_MAX (24)</td>

+    </tr>

+    </table> */

+    LVM_INT16 VOL_Gain;          ///< Apply Gain to Input signal

+

+    /**

+    Far End Noise Suppression Control Parameter Structure.

+    */

+    LVFENS_ControlParams_st FENS_ControlParams;          ///< Far End Noise Suppression Control Parameter Structure

+

+    /**

+    Turns on/off NLPP.

+    */

+    LVM_Mode_en NLPP_OperatingMode;          ///< Turns on/off NLPP

+

+    /**

+    NLPP Control Parameter Structure.

+    */

+    LVNLPP_ControlParams_st NLPP_ControlParams;          ///< NLPP Control Parameter Structure

+

+    /**

+    Voice Clarity Control Parameter Structure.

+    */

+    LVVC_ControlParams_st VC_ControlParams;          ///< Voice Clarity Control Parameter Structure

+

+    /**

+    Equalizer Operating mode.

+    */

+    LVM_Mode_en EQ_OperatingMode;          ///< Equalizer Operating mode

+

+    /**

+    Equalizer Control Parameters Structure.

+    */

+    LVEQ_ControlParams_st EQ_ControlParams;          ///< Equalizer Control Parameters Structure

+

+    /**

+    DRC Control Parameter Strcuture.

+    */

+    LVDRC_ControlParams_st DRC_ControlParams;          ///< DRC Control Parameter Strcuture

+

+    /**

+    Turns on/off High Pass filter.

+    */

+    LVM_Mode_en HPF_OperatingMode;          ///< Turns on/off High Pass filter

+

+    /**

+    Sets the 3dB corner frequency of the high-pass filter. In case NoiseVoid is

+    enabled, the same high-pass filter will be applied to the second microphone

+    channel.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>16.0</td>

+        <td>@ref LVVE_RX_HPF_CORNERFREQ_MIN (50)</td>

+        <td>@ref LVVE_RX_HPF_CORNERFREQ_DEFAULT (50)</td>

+        <td>@ref LVVE_RX_HPF_CORNERFREQ_MAX (1500)</td>

+    </tr>

+    </table> */

+    LVM_UINT16 HPF_CornerFreq;          ///< High Pass Filter Corner Frequency in Hz

+

+    /**

+    Whisper Mode Control Parameter Strcuture.

+    */

+    LVWM_ControlParams_st WM_ControlParams;          ///< Whisper Mode Control Parameter Strcuture

+

+    /**

+    Noise Gate Control Parameter Structure.

+    */

+    LVNG_ControlParams_st NG_ControlParams;          ///< Noise Gate Control Parameter Structure

+

+} LVVE_Rx_ControlParams_st;

+

+/**

+* The control parameters are used to control the overall module behavior. These parameters may

+* be changed at any time during processing using the LVNV_SetControlParameters function but they

+* will not take effect until the next call to the LVNV_Process function.

+*

+* @see LVNV_SetControlParameters

+* @see LVNV_Process

+*/

+typedef struct

+{

+    /**

+    */

+    LVM_Mode_en OperatingMode;          ///< Operating Mode

+

+    /**

+    The mode word to enable/disable internal algorithm blocks of LVNV.

+    */

+    LVNV_ModeWord_bm Mode;          ///< Mode word

+

+    /**

+    The mode2 word to allow switching or combining different blocks inside LVNV.

+    */

+    LVNV_Mode2Word_bm Mode2;          ///< Mode2 word

+

+    /**

+    The tuning mode word to enable/disable internal algorithm tuning capabilities

+    in the different blocks of LVNV. Only one bit is allowed to be enabled at a

+    time.

+    */

+    LVNV_TuningModeWord_bm Tuning_mode;          ///< Tuning mode word

+

+    /**

+    Gain applied at the primary channel in the Tx input. Used to scale the

+    microphone signal in order to give the NLMS0_LB and NLMS0_HB filters headroom

+    for correct operation.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>2.13</td>

+        <td>@ref LVNV_INPUT_GAIN_MIC0_MIN (0)</td>

+        <td>@ref LVNV_INPUT_GAIN_MIC0_DEFAULT (8192)</td>

+        <td>@ref LVNV_INPUT_GAIN_MIC0_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 Input_Gain_Mic0;          ///< The primary input gain.

+

+    /**

+    Gain applied at the secondary channel in the Tx input. Used to scale the

+    microphone signal in order to give the NLMS1_LB and NLMS1_HB filters headroom

+    for correct operation.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>2.13</td>

+        <td>@ref LVNV_INPUT_GAIN_MIC1_MIN (0)</td>

+        <td>@ref LVNV_INPUT_GAIN_MIC1_DEFAULT (8192)</td>

+        <td>@ref LVNV_INPUT_GAIN_MIC1_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 Input_Gain_Mic1;          ///< The secondary input gain.

+

+    /**

+    Gain applied at the Tx output of LVNV. Compensates the applied Input_Gain_Mic0

+    in order to preserve the overall Tx gain.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>4.11</td>

+        <td>@ref LVNV_OUTPUT_GAIN_MIN (0)</td>

+        <td>@ref LVNV_OUTPUT_GAIN_DEFAULT (2048)</td>

+        <td>@ref LVNV_OUTPUT_GAIN_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 Output_Gain;          ///< The output gain.

+

+    /**

+    Length of the low-band (0-4kHz) adaptive echo cancellation filter for the

+    primary channel. The Length should be chosen such that most of the energy of

+    the impulse response is covered by the filter. The length should be a multiple

+    of 8.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>16.0</td>

+        <td>@ref LVNV_NLMS0_LB_TAPS_MIN (16)</td>

+        <td>@ref LVNV_NLMS0_LB_TAPS_DEFAULT (32)</td>

+        <td>@ref LVNV_NLMS0_LB_TAPS_MAX (64)</td>

+    </tr>

+    </table> */

+    LVM_UINT16 NLMS0_LB_taps;          ///< Number of NLMS0 low-band taps.

+

+    /**

+    Step size for the update of the low-band adaptive filter coefficients for the

+    primary channel. It is recommended not to change the default value.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVNV_NLMS0_LB_TWOALPHA_MIN (0)</td>

+        <td>@ref LVNV_NLMS0_LB_TWOALPHA_DEFAULT (8192)</td>

+        <td>@ref LVNV_NLMS0_LB_TWOALPHA_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 NLMS0_LB_twoalpha;          ///< NLMS0 low-band step size

+

+    /**

+    Adaptive step-size control for the low-band adaptive echo cancellation filter

+    for the primary channel. This parameter is used to slow down the update speed

+    of the adaptive filter during double talk situations.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>9.6</td>

+        <td>@ref LVNV_NLMS0_LB_ERL_MIN (64)</td>

+        <td>@ref LVNV_NLMS0_LB_ERL_DEFAULT (1000)</td>

+        <td>@ref LVNV_NLMS0_LB_ERL_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 NLMS0_LB_erl;          ///< NLMS0 low-band erl

+

+    /**

+    Length of the high-band (4-8kHz) adaptive echo cancellation filter for the

+    primary channel. The Length should be chosen such that most of the energy of

+    the impulse response is covered by the filter. The length should be a multiple

+    of 8.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>16.0</td>

+        <td>@ref LVNV_NLMS0_HB_TAPS_MIN (16)</td>

+        <td>@ref LVNV_NLMS0_HB_TAPS_DEFAULT (24)</td>

+        <td>@ref LVNV_NLMS0_HB_TAPS_MAX (64)</td>

+    </tr>

+    </table> */

+    LVM_UINT16 NLMS0_HB_taps;          ///< Number of NLMS0 high-band taps.

+

+    /**

+    Step size for the update of the high-band adaptive filter coefficients for the

+    primary channel. It is recommended not to change the default value.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVNV_NLMS0_HB_TWOALPHA_MIN (0)</td>

+        <td>@ref LVNV_NLMS0_HB_TWOALPHA_DEFAULT (8192)</td>

+        <td>@ref LVNV_NLMS0_HB_TWOALPHA_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 NLMS0_HB_twoalpha;          ///< NLMS0 high-band step size

+

+    /**

+    Adaptive step-size control for the high-band adaptive echo cancellation filter

+    for the primary channel. This parameter is used to slow down the update speed

+    of the adaptive filter during double talk situations.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>9.6</td>

+        <td>@ref LVNV_NLMS0_HB_ERL_MIN (64)</td>

+        <td>@ref LVNV_NLMS0_HB_ERL_DEFAULT (1000)</td>

+        <td>@ref LVNV_NLMS0_HB_ERL_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 NLMS0_HB_erl;          ///< NLMS0 high-band erl

+

+    /**

+    Indicates whether a preset of adaptive filter coefficients should be done.<br>

+    0 = No preset (coefficients as they are).<br>

+    1 = Preset with internally calculated coefficients.<br>

+    2 = Preset with zero coefficients.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>15.0</td>

+        <td>@ref LVNV_NLMS0_PRESET_COEFS_MIN (0)</td>

+        <td>@ref LVNV_NLMS0_PRESET_COEFS_DEFAULT (0)</td>

+        <td>@ref LVNV_NLMS0_PRESET_COEFS_MAX (2)</td>

+    </tr>

+    </table> */

+    LVM_INT16 NLMS0_preset_coefs;          ///< NLMS0 preset

+

+    /**

+    Offset added to the normalization of the adaptation of the filter.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVNV_NLMS0_OFFSET_MIN (0)</td>

+        <td>@ref LVNV_NLMS0_OFFSET_DEFAULT (776)</td>

+        <td>@ref LVNV_NLMS0_OFFSET_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 NLMS0_offset;          ///< NLMS0 offset

+

+    /**

+    Length of the low-band (0-4kHz) adaptive echo cancellation filter for the

+    secondary channel. The Length should be chosen such that most of the energy of

+    the impulse response is covered by the filter. The length should be a multiple

+    of 8.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>16.0</td>

+        <td>@ref LVNV_NLMS1_LB_TAPS_MIN (16)</td>

+        <td>@ref LVNV_NLMS1_LB_TAPS_DEFAULT (32)</td>

+        <td>@ref LVNV_NLMS1_LB_TAPS_MAX (32)</td>

+    </tr>

+    </table> */

+    LVM_UINT16 NLMS1_LB_taps;          ///< Number of NLMS1 low-band taps.

+

+    /**

+    Step size for the update of the low-band adaptive filter coefficients for the

+    secondary channel. It is recommended not to change the default value.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVNV_NLMS1_LB_TWOALPHA_MIN (0)</td>

+        <td>@ref LVNV_NLMS1_LB_TWOALPHA_DEFAULT (8192)</td>

+        <td>@ref LVNV_NLMS1_LB_TWOALPHA_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 NLMS1_LB_twoalpha;          ///< NLMS1 low-band step size

+

+    /**

+    Adaptive step-size control for the low-band adaptive echo cancellation filter

+    for the secondary channel. This parameter is used to slow down the update speed

+    of the adaptive filter during double talk situations.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>9.6</td>

+        <td>@ref LVNV_NLMS1_LB_ERL_MIN (64)</td>

+        <td>@ref LVNV_NLMS1_LB_ERL_DEFAULT (1000)</td>

+        <td>@ref LVNV_NLMS1_LB_ERL_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 NLMS1_LB_erl;          ///< NLMS1 low-band erl

+

+    /**

+    Length of the high-band (4-8kHz) adaptive echo cancellation filter for the

+    secondary channel. The Length should be chosen such that most of the energy of

+    the impulse response is covered by the filter. The length should be a multiple

+    of 8.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>16.0</td>

+        <td>@ref LVNV_NLMS1_HB_TAPS_MIN (16)</td>

+        <td>@ref LVNV_NLMS1_HB_TAPS_DEFAULT (24)</td>

+        <td>@ref LVNV_NLMS1_HB_TAPS_MAX (32)</td>

+    </tr>

+    </table> */

+    LVM_UINT16 NLMS1_HB_taps;          ///< Number of NLMS1 high-band taps.

+

+    /**

+    Step size for the update of the high-band adaptive filter coefficients for the

+    secondary channel. It is recommended not to change the default value.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVNV_NLMS1_HB_TWOALPHA_MIN (0)</td>

+        <td>@ref LVNV_NLMS1_HB_TWOALPHA_DEFAULT (8192)</td>

+        <td>@ref LVNV_NLMS1_HB_TWOALPHA_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 NLMS1_HB_twoalpha;          ///< NLMS1 high-band step size

+

+    /**

+    Adaptive step-size control for the high-band adaptive echo cancellation filter

+    for the secondary channel. This parameter is used to slow down the update speed

+    of the adaptive filter during double talk situations.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>9.6</td>

+        <td>@ref LVNV_NLMS1_HB_ERL_MIN (64)</td>

+        <td>@ref LVNV_NLMS1_HB_ERL_DEFAULT (1000)</td>

+        <td>@ref LVNV_NLMS1_HB_ERL_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 NLMS1_HB_erl;          ///< NLMS1 high-band erl

+

+    /**

+    Indicates whether a preset of adaptive filter coefficients should be done.<br>

+    0 = No preset (coefficients as they are).<br>

+    1 = Preset with internally calculated coefficients.<br>

+    2 = Preset with zero coefficients.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>15.0</td>

+        <td>@ref LVNV_NLMS1_PRESET_COEFS_MIN (0)</td>

+        <td>@ref LVNV_NLMS1_PRESET_COEFS_DEFAULT (0)</td>

+        <td>@ref LVNV_NLMS1_PRESET_COEFS_MAX (2)</td>

+    </tr>

+    </table> */

+    LVM_INT16 NLMS1_preset_coefs;          ///< NLMS1 preset

+

+    /**

+    Offset added to the normalization of the adaptation of the filter.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVNV_NLMS1_OFFSET_MIN (0)</td>

+        <td>@ref LVNV_NLMS1_OFFSET_DEFAULT (776)</td>

+        <td>@ref LVNV_NLMS1_OFFSET_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 NLMS1_offset;          ///< NLMS1 offset

+

+    /**

+    A parameter representing a threshold for the detection of instrumental noise.

+    The higher the value for this parameter, the lower noise suppression

+    performance.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVNV_CAL_MICPOWFLOORMIN_MIN (0)</td>

+        <td>@ref LVNV_CAL_MICPOWFLOORMIN_DEFAULT (150)</td>

+        <td>@ref LVNV_CAL_MICPOWFLOORMIN_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 CAL_micPowFloorMin;          ///< Instrumental noise threshold

+

+    /**

+    Threshold for Windgush detector. The higher the value, the less sensitive the

+    detection.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>6.9</td>

+        <td>@ref LVNV_WGTHRESHOLD_MIN (0)</td>

+        <td>@ref LVNV_WGTHRESHOLD_DEFAULT (32767)</td>

+        <td>@ref LVNV_WGTHRESHOLD_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 WgThreshold;          ///< Windgush threshold

+

+    /**

+    Threshold for speech detector based on power comparison between primary and

+    secondary microphones. The higher the value, the less sensitive the detection.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>3.12</td>

+        <td>@ref LVNV_MPTHRESHOLD_MIN (0)</td>

+        <td>@ref LVNV_MPTHRESHOLD_DEFAULT (6554)</td>

+        <td>@ref LVNV_MPTHRESHOLD_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 MpThreshold;          ///< MicPow threshold

+

+    /**

+    Set of first 8 coefficients for adaptive filter FSB0. These values should be

+    determined for the given microphone configuration

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVNV_FSB_INIT_TABLE0_MIN (-32768)</td>

+        <td>@ref LVNV_FSB_INIT_TABLE0_DEFAULT {32767, 0, 0, 0, 0, 0, 0, 0}</td>

+        <td>@ref LVNV_FSB_INIT_TABLE0_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 FSB_init_table0[LVNV_FSB_INIT_TABLE0_LENGTH];          ///< FSB0 initial coefficients.

+

+    /**

+    Set of first 8 coefficients for adaptive filter FSB1. These values should be

+    determined for the given microphone configuration

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVNV_FSB_INIT_TABLE1_MIN (-32768)</td>

+        <td>@ref LVNV_FSB_INIT_TABLE1_DEFAULT {0, 0, 0, 0, 0, 0, 0, 0}</td>

+        <td>@ref LVNV_FSB_INIT_TABLE1_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 FSB_init_table1[LVNV_FSB_INIT_TABLE1_LENGTH];          ///< FSB1 initial coefficients.

+

+    /**

+    Length of the FSB to model the acoustical paths between the speech source and

+    two microphones. The length must be equal to 16 for the handset application.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>16.0</td>

+        <td>@ref LVNV_FSB_TAPS_MIN (8)</td>

+        <td>@ref LVNV_FSB_TAPS_DEFAULT (16)</td>

+        <td>@ref LVNV_FSB_TAPS_MAX (16)</td>

+    </tr>

+    </table> */

+    LVM_UINT16 FSB_taps;          ///< Number of FSB taps

+

+    /**

+    Step-size to update the coefficients of the adaptive filters. A higher value

+    leads to a faster speed of the adaptation, while a lower value provides more

+    stability, but a slow adaption speed.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVNV_FSB_TWOALPHA_MIN (0)</td>

+        <td>@ref LVNV_FSB_TWOALPHA_DEFAULT (655)</td>

+        <td>@ref LVNV_FSB_TWOALPHA_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 FSB_twoalpha;          ///< FSB step size control

+

+    /**

+    Gain applied on the samples of the second FSB reference signal (fsbref[1]).

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>5.10</td>

+        <td>@ref LVNV_FSB_REF_GAIN_MIN (0)</td>

+        <td>@ref LVNV_FSB_REF_GAIN_DEFAULT (1024)</td>

+        <td>@ref LVNV_FSB_REF_GAIN_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 FSB_ref_gain;          ///< FSB ref gain

+

+    /**

+    Length of the GSC to model the transfer function between the noise reference

+    and the residual signal, in order to reduce the noise and interfering sounds

+    from the desired signal. This number should be a multiple of 8.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>16.0</td>

+        <td>@ref LVNV_GSC_TAPS_MIN (8)</td>

+        <td>@ref LVNV_GSC_TAPS_DEFAULT (16)</td>

+        <td>@ref LVNV_GSC_TAPS_MAX (48)</td>

+    </tr>

+    </table> */

+    LVM_UINT16 GSC_taps;          ///< Number of GSC taps

+

+    /**

+    Step-size to update the coefficients of the adaptive filter. A higher value

+    leads to a faster speed of the adaptation, while a lower value provides more

+    stability, but a slow adaption speed.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVNV_GSC_TWOALPHA_MIN (0)</td>

+        <td>@ref LVNV_GSC_TWOALPHA_DEFAULT (1638)</td>

+        <td>@ref LVNV_GSC_TWOALPHA_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 GSC_twoalpha;          ///< GSC step size control

+

+    /**

+    Adaptive step-size control for GSC to avoid divergence of the adaptive filter

+    during desired speech. In general, GSC_erl is lower than NLMS_erl and ranges

+    between 0 and 30 dB.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>9.6</td>

+        <td>@ref LVNV_GSC_ERL_MIN (64)</td>

+        <td>@ref LVNV_GSC_ERL_DEFAULT (256)</td>

+        <td>@ref LVNV_GSC_ERL_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 GSC_erl;          ///< GSC erl

+

+    /**

+    Offset added to the computation of the power of the noise reference to avoid

+    that the power converges towards zero when the input is low.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVNV_GSC_OFFSET_MIN (0)</td>

+        <td>@ref LVNV_GSC_OFFSET_DEFAULT (1638)</td>

+        <td>@ref LVNV_GSC_OFFSET_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 GSC_offset;          ///< GSC offset

+

+    /**

+    Echo subtraction factor applied during farend-only.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>2.13</td>

+        <td>@ref LVNV_DNNS_ECHOGAMMAHI_MIN (0)</td>

+        <td>@ref LVNV_DNNS_ECHOGAMMAHI_DEFAULT (16384)</td>

+        <td>@ref LVNV_DNNS_ECHOGAMMAHI_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 DNNS_EchoGammaHi;          ///< High echo subtraction factor

+

+    /**

+    Echo subtraction factor applied during double talk and nearend-only.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>2.13</td>

+        <td>@ref LVNV_DNNS_ECHOGAMMALO_MIN (0)</td>

+        <td>@ref LVNV_DNNS_ECHOGAMMALO_DEFAULT (8192)</td>

+        <td>@ref LVNV_DNNS_ECHOGAMMALO_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 DNNS_EchoGammaLo;          ///< Low echo subtraction factor

+

+    /**

+    Parameter related to the reverberation time of the acoustical environment,

+    which represents the decay in energy over time of the echo tail of the impulse

+    response.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVNV_DNNS_ECHOALPHAREV_MIN (0)</td>

+        <td>@ref LVNV_DNNS_ECHOALPHAREV_DEFAULT (12000)</td>

+        <td>@ref LVNV_DNNS_ECHOALPHAREV_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 DNNS_EchoAlphaRev;          ///< Echo reverberation factor

+

+    /**

+    Parameter representing the portion of the echo tail (estimated by the NLMS

+    filter) that has to be extrapolated in time.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVNV_DNNS_ECHOTAILPORTION_MIN (0)</td>

+        <td>@ref LVNV_DNNS_ECHOTAILPORTION_DEFAULT (7000)</td>

+        <td>@ref LVNV_DNNS_ECHOTAILPORTION_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 DNNS_EchoTailPortion;          ///< Echo tail portion

+

+    /**

+    Non-linear echo subtraction factor applied during double talk and nearend-only.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>4.11</td>

+        <td>@ref LVNV_DNNS_NLATTEN_MIN (0)</td>

+        <td>@ref LVNV_DNNS_NLATTEN_DEFAULT (256)</td>

+        <td>@ref LVNV_DNNS_NLATTEN_MAX (2048)</td>

+    </tr>

+    </table> */

+    LVM_INT16 DNNS_NlAtten;          ///< Non-linear echo subtraction factor

+

+    /**

+    Gain factor for stationary noise oversubtraction.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>2.13</td>

+        <td>@ref LVNV_DNNS_NOISEGAMMAS_MIN (0)</td>

+        <td>@ref LVNV_DNNS_NOISEGAMMAS_DEFAULT (11470)</td>

+        <td>@ref LVNV_DNNS_NOISEGAMMAS_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 DNNS_NoiseGammaS;          ///< Stationary noise oversubtraction factor

+

+    /**

+    Gain factor for non-stationary noise oversubtraction.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>2.13</td>

+        <td>@ref LVNV_DNNS_NOISEGAMMAN_MIN (0)</td>

+        <td>@ref LVNV_DNNS_NOISEGAMMAN_DEFAULT (16384)</td>

+        <td>@ref LVNV_DNNS_NOISEGAMMAN_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 DNNS_NoiseGammaN;          ///< Non-stationary noise oversubtraction factor

+

+    /**

+    The maximum amount of stationary noise suppression.<br>

+    DNNS_NoiseGainMinS = \f$2*32767*10^{MaxNoiseReductiondB/20}\f$

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>-1.16</td>

+        <td>@ref LVNV_DNNS_NOISEGAINMINS_MIN (0)</td>

+        <td>@ref LVNV_DNNS_NOISEGAINMINS_DEFAULT (11140)</td>

+        <td>@ref LVNV_DNNS_NOISEGAINMINS_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 DNNS_NoiseGainMinS;          ///< Maximum stationary noise suppression.

+

+    /**

+    The maximum amount of non-stationary noise suppression.<br>

+    DNNS_NoiseGainMinN = \f$2*32767*10^{MaxNoiseReductiondB/20}\f$

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>-1.16</td>

+        <td>@ref LVNV_DNNS_NOISEGAINMINN_MIN (0)</td>

+        <td>@ref LVNV_DNNS_NOISEGAINMINN_DEFAULT (6554)</td>

+        <td>@ref LVNV_DNNS_NOISEGAINMINN_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 DNNS_NoiseGainMinN;          ///< Maximum non-stationary noise suppression.

+

+    /**

+    Bias compensation factor for stationary noise estimation.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>2.13</td>

+        <td>@ref LVNV_DNNS_NOISEBIASCOMP_MIN (0)</td>

+        <td>@ref LVNV_DNNS_NOISEBIASCOMP_DEFAULT (9830)</td>

+        <td>@ref LVNV_DNNS_NOISEBIASCOMP_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 DNNS_NoiseBiasComp;          ///< Bias compensation factor.

+

+    /**

+    Echo oversubtraction factor applied to the estimated non-stationary noise

+    floor.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>3.12</td>

+        <td>@ref LVNV_DNNS_GAINETA_MIN (0)</td>

+        <td>@ref LVNV_DNNS_GAINETA_DEFAULT (256)</td>

+        <td>@ref LVNV_DNNS_GAINETA_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 DNNS_GainEta;          ///< Echo oversubtraction factor.

+

+    /**

+    Detection threshold for microphone activity.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>3.12</td>

+        <td>@ref LVNV_DNNS_ACTHRESHOLD_MIN (0)</td>

+        <td>@ref LVNV_DNNS_ACTHRESHOLD_DEFAULT (12288)</td>

+        <td>@ref LVNV_DNNS_ACTHRESHOLD_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 DNNS_AcThreshold;          ///< Activity threshold.

+

+    /**

+    Detection threshold for activity within the beam of FSB.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>3.12</td>

+        <td>@ref LVNV_DNNS_WBTHRESHOLD_MIN (0)</td>

+        <td>@ref LVNV_DNNS_WBTHRESHOLD_DEFAULT (9216)</td>

+        <td>@ref LVNV_DNNS_WBTHRESHOLD_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 DNNS_WbThreshold;          ///< WithinBeam threshold.

+

+    /**

+    Detection threshold for lost beam where the nearend speaker is speaking outside

+    the beam of the FSB.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>9.6</td>

+        <td>@ref LVNV_DNNS_LOSTBEAMTHRESHOLD_MIN (0)</td>

+        <td>@ref LVNV_DNNS_LOSTBEAMTHRESHOLD_DEFAULT (320)</td>

+        <td>@ref LVNV_DNNS_LOSTBEAMTHRESHOLD_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 DNNS_LostBeamThreshold;          ///< Lost beam threshold.

+

+    /**

+    Smoothing factor applied to get a smoothed value of the inter-channel

+    correlation.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>9.6</td>

+        <td>@ref LVNV_PCD_BETA_MIN (0)</td>

+        <td>@ref LVNV_PCD_BETA_DEFAULT (230)</td>

+        <td>@ref LVNV_PCD_BETA_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 PCD_beta;          ///< ICC smoothing factor.

+

+    /**

+    Detection threshold for broadside when the nearend speaker is not in end-fire

+    position with respect to the microphone configuration.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>9.6</td>

+        <td>@ref LVNV_PCD_THRESHOLD_MIN (0)</td>

+        <td>@ref LVNV_PCD_THRESHOLD_DEFAULT (26213)</td>

+        <td>@ref LVNV_PCD_THRESHOLD_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 PCD_Threshold;          ///< Broadside detection threshold.

+

+} LVNV_ControlParams_st;

+

+/**

+* The control parameters are used to control the overall module behavior. These parameters may

+* be changed at any time during processing using the LVHF_SetControlParameters function but they

+* will not take effect until the next call to the LVHF_Process function.

+*

+* @see LVHF_SetControlParameters

+* @see LVHF_Process

+*/

+typedef struct

+{

+    /**

+    */

+    LVM_Mode_en OperatingMode;          ///< Operating Mode

+

+    /**

+    The mode word to enable/disable internal algorithm blocks of HandsFree

+    */

+    LVHF_ModeWord_bm Mode;          ///< Mode Word

+

+    /**

+    The tuning mode is used to enable/disable internal algorithm tuning

+    capabilities in the different blocks of HandsFree. Only one bit allowed to be

+    enabled at a time.

+    */

+    LVHF_TuningModeWord TuningMode;          ///< Tuning Mode

+

+    /**

+    Gain applied at the Tx input of LVHF. Used to scale the microphone signal in

+    order to give the NLMS filter headroom for correct operation.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>2.13</td>

+        <td>@ref LVHF_INPUTGAIN_MIN (0)</td>

+        <td>@ref LVHF_INPUTGAIN_DEFAULT (8192)</td>

+        <td>@ref LVHF_INPUTGAIN_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 InputGain;          ///< Input Gain

+

+    /**

+    Gain applied at the Tx output of LVHF. Compensates the applied InputGain in

+    order to preserve the overall Tx gain.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>4.11</td>

+        <td>@ref LVHF_OUTPUTGAIN_MIN (0)</td>

+        <td>@ref LVHF_OUTPUTGAIN_DEFAULT (2048)</td>

+        <td>@ref LVHF_OUTPUTGAIN_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 OutputGain;          ///< Output Gain

+

+    /**

+    Limit the NLMS reference signal. Value in dB Full Scale.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>15.0</td>

+        <td>@ref LVHF_NLMS_LIMIT_MIN (-24)</td>

+        <td>@ref LVHF_NLMS_LIMIT_DEFAULT (0)</td>

+        <td>@ref LVHF_NLMS_LIMIT_MAX (0)</td>

+    </tr>

+    </table> */

+    LVM_INT16 NLMS_limit;          ///< Limit the NLMS reference signal.

+

+    /**

+    Length of the low-band (0-4kHz) adaptive echo cancellation filter. The Length

+    should be chosen such that most of the energy of the impulse response is

+    covered by the filter. The length should be a multiple of 8.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>16.0</td>

+        <td>@ref LVHF_NLMS_LB_TAPS_MIN (16)</td>

+        <td>@ref LVHF_NLMS_LB_TAPS_DEFAULT (64)</td>

+        <td>@ref LVHF_NLMS_LB_TAPS_MAX (200)</td>

+    </tr>

+    </table> */

+    LVM_UINT16 NLMS_LB_taps;          ///< Number of taps for LB NLMS.

+

+    /**

+    Step size for the update of the low-band (0-4kHz) adaptive filter coefficients.

+    It is recommended not to change the default value.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVHF_NLMS_LB_TWO_ALPHA_MIN (0)</td>

+        <td>@ref LVHF_NLMS_LB_TWO_ALPHA_DEFAULT (8192)</td>

+        <td>@ref LVHF_NLMS_LB_TWO_ALPHA_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 NLMS_LB_two_alpha;          ///< Step Size of LB NLMS

+

+    /**

+    Adaptive step size control for the low-band (0-4kHz) adaptive echo cancellation

+    filter. This parameter is used to slow down the update speed of the adaptive

+    filter during double talk situations.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>9.6</td>

+        <td>@ref LVHF_NLMS_LB_ERL_MIN (64)</td>

+        <td>@ref LVHF_NLMS_LB_ERL_DEFAULT (128)</td>

+        <td>@ref LVHF_NLMS_LB_ERL_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 NLMS_LB_erl;          ///< ERL of LB NLMS

+

+    /**

+    Length of the high-band (4-8kHz) adaptive echo cancellation filter. The Length

+    should be chosen such that most of the energy of the impulse response is

+    covered by the filter. The length should be a multiple of 8. In case of

+    narrowband processing, this parameter has no effect.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>16.0</td>

+        <td>@ref LVHF_NLMS_HB_TAPS_MIN (16)</td>

+        <td>@ref LVHF_NLMS_HB_TAPS_DEFAULT (64)</td>

+        <td>@ref LVHF_NLMS_HB_TAPS_MAX (136)</td>

+    </tr>

+    </table> */

+    LVM_UINT16 NLMS_HB_taps;          ///< Number of taps for HB NLMS.

+

+    /**

+    Step size for the update of the high-band (4-8kHz) adaptive filter

+    coefficients. It is recommended not to change the default value. In case of

+    narrowband processing, this parameter has no effect.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVHF_NLMS_HB_TWO_ALPHA_MIN (0)</td>

+        <td>@ref LVHF_NLMS_HB_TWO_ALPHA_DEFAULT (8192)</td>

+        <td>@ref LVHF_NLMS_HB_TWO_ALPHA_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 NLMS_HB_two_alpha;          ///< Step Size of HB NLMS

+

+    /**

+    Adaptive step size control for the high-band (4-8kHz) adaptive echo

+    cancellation filter. This parameter is used to slow down the update speed of

+    the adaptive filter during double talk situations. In case of narrowband

+    processing, this parameter has no effect.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>9.6</td>

+        <td>@ref LVHF_NLMS_HB_ERL_MIN (64)</td>

+        <td>@ref LVHF_NLMS_HB_ERL_DEFAULT (128)</td>

+        <td>@ref LVHF_NLMS_HB_ERL_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 NLMS_HB_erl;          ///< ERL of HB NLMS

+

+    /**

+    Indicates whether a preset of adaptive filter coefficients should be done. <br>

+    0 = No preset (Coefficients as they are)<br>

+    1= Preset with internally calculated coefficients.<br>

+    2= Preset with zero coefficients.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>15.0</td>

+        <td>@ref LVHF_NLMS_PRESET_COEFS_MIN (0)</td>

+        <td>@ref LVHF_NLMS_PRESET_COEFS_DEFAULT (1)</td>

+        <td>@ref LVHF_NLMS_PRESET_COEFS_MAX (2)</td>

+    </tr>

+    </table> */

+    LVM_INT16 NLMS_preset_coefs;          ///< Coefficient preset.

+

+    /**

+    Offset added to the normalization of the adaptation of the filter.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVHF_NLMS_OFFSET_MIN (0)</td>

+        <td>@ref LVHF_NLMS_OFFSET_DEFAULT (767)</td>

+        <td>@ref LVHF_NLMS_OFFSET_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 NLMS_offset;          ///< NLMS offset

+

+    /**

+    Parameter related to the reverberation of the acoustic environment. It

+    represents the decay in time of the energy of the echo tail of the impulse

+    response for the LB.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVHF_DENS_TAIL_ALPHA_LB_MIN (0)</td>

+        <td>@ref LVHF_DENS_TAIL_ALPHA_LB_DEFAULT (25395)</td>

+        <td>@ref LVHF_DENS_TAIL_ALPHA_LB_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 DENS_tail_alpha_LB;

+    /**

+    Parameter related to the portion of the echo tail that has to be extrapolated

+    in time for LB.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVHF_DENS_TAIL_PORTION_LB_MIN (0)</td>

+        <td>@ref LVHF_DENS_TAIL_PORTION_LB_DEFAULT (29491)</td>

+        <td>@ref LVHF_DENS_TAIL_PORTION_LB_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 DENS_tail_portion_LB;

+    /**

+    Echo subtraction factor applied during farend-only for the LB.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>7.8</td>

+        <td>@ref LVHF_DENS_GAMMA_E_HIGH_LB_MIN (0)</td>

+        <td>@ref LVHF_DENS_GAMMA_E_HIGH_LB_DEFAULT (512)</td>

+        <td>@ref LVHF_DENS_GAMMA_E_HIGH_LB_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 DENS_gamma_e_high_LB;          ///< FE Echo subtraction LB

+

+    /**

+    Echo subtraction factor applied during double talk for the LB.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>7.8</td>

+        <td>@ref LVHF_DENS_GAMMA_E_DT_LB_MIN (0)</td>

+        <td>@ref LVHF_DENS_GAMMA_E_DT_LB_DEFAULT (256)</td>

+        <td>@ref LVHF_DENS_GAMMA_E_DT_LB_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 DENS_gamma_e_dt_LB;          ///< DT Echo subtraction factor LB

+

+    /**

+    Echo subtraction factor applied during nearend-only for the LB.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>7.8</td>

+        <td>@ref LVHF_DENS_GAMMA_E_LOW_LB_MIN (0)</td>

+        <td>@ref LVHF_DENS_GAMMA_E_LOW_LB_DEFAULT (256)</td>

+        <td>@ref LVHF_DENS_GAMMA_E_LOW_LB_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 DENS_gamma_e_low_LB;          ///< NE Echo subtraction factor LB

+

+    /**

+    The amount of extra non-linear suppression relative to the maximum linear echo

+    suppression for the LB. The use of these non-linear echo suppression mechanisms

+    should be avoided as much as possible since it affects the double talk

+    performance.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>4.11</td>

+        <td>@ref LVHF_DENS_NL_ATTEN_LB_MIN (0)</td>

+        <td>@ref LVHF_DENS_NL_ATTEN_LB_DEFAULT (0)</td>

+        <td>@ref LVHF_DENS_NL_ATTEN_LB_MAX (2048)</td>

+    </tr>

+    </table> */

+    LVM_INT16 DENS_NL_atten_LB;          ///< LB Non linear attenuation

+

+    /**

+    Parameter related to the reverberation of the acoustic environment. It

+    represents the decay in time of the energy of the echo tail of the impulse

+    response for the HB.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVHF_DENS_TAIL_ALPHA_HB_MIN (0)</td>

+        <td>@ref LVHF_DENS_TAIL_ALPHA_HB_DEFAULT (25395)</td>

+        <td>@ref LVHF_DENS_TAIL_ALPHA_HB_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 DENS_tail_alpha_HB;

+    /**

+    Parameter related to the portion of the echo tail that has to be extrapolated

+    in time for HB.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVHF_DENS_TAIL_PORTION_HB_MIN (0)</td>

+        <td>@ref LVHF_DENS_TAIL_PORTION_HB_DEFAULT (29491)</td>

+        <td>@ref LVHF_DENS_TAIL_PORTION_HB_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 DENS_tail_portion_HB;

+    /**

+    Echo subtraction factor applied during farend-only for the HB.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>7.8</td>

+        <td>@ref LVHF_DENS_GAMMA_E_HIGH_HB_MIN (0)</td>

+        <td>@ref LVHF_DENS_GAMMA_E_HIGH_HB_DEFAULT (512)</td>

+        <td>@ref LVHF_DENS_GAMMA_E_HIGH_HB_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 DENS_gamma_e_high_HB;          ///< FE Echo subtraction HB

+

+    /**

+    Echo subtraction factor applied during double talk for the HB.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>7.8</td>

+        <td>@ref LVHF_DENS_GAMMA_E_DT_HB_MIN (0)</td>

+        <td>@ref LVHF_DENS_GAMMA_E_DT_HB_DEFAULT (256)</td>

+        <td>@ref LVHF_DENS_GAMMA_E_DT_HB_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 DENS_gamma_e_dt_HB;          ///< DT Echo subtraction factor HB

+

+    /**

+    Echo subtraction factor applied during nearend-only for the HB.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>7.8</td>

+        <td>@ref LVHF_DENS_GAMMA_E_LOW_HB_MIN (0)</td>

+        <td>@ref LVHF_DENS_GAMMA_E_LOW_HB_DEFAULT (256)</td>

+        <td>@ref LVHF_DENS_GAMMA_E_LOW_HB_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 DENS_gamma_e_low_HB;          ///< NE Echo subtraction factor HB

+

+    /**

+    The amount of extra non-linear suppression relative to the maximum linear echo

+    suppression. for the HB. The use of these non-linear echo suppression

+    mechanisms should be avoided as much as possible since it affects the double

+    talk performance.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>4.11</td>

+        <td>@ref LVHF_DENS_NL_ATTEN_HB_MIN (0)</td>

+        <td>@ref LVHF_DENS_NL_ATTEN_HB_DEFAULT (0)</td>

+        <td>@ref LVHF_DENS_NL_ATTEN_HB_MAX (2048)</td>

+    </tr>

+    </table> */

+    LVM_INT16 DENS_NL_atten_HB;          ///< NE Echo subtraction factor HB

+

+    /**

+    Smoothing factor applied when switching between gamma_e values.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVHF_DENS_GAMMA_E_ALPHA_MIN (0)</td>

+        <td>@ref LVHF_DENS_GAMMA_E_ALPHA_DEFAULT (24000)</td>

+        <td>@ref LVHF_DENS_GAMMA_E_ALPHA_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 DENS_gamma_e_alpha;          ///< Smoothing factor for gamma_e

+

+    /**

+    Gain factor for Noise subtraction.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>7.8</td>

+        <td>@ref LVHF_DENS_GAMMA_N_MIN (0)</td>

+        <td>@ref LVHF_DENS_GAMMA_N_DEFAULT (280)</td>

+        <td>@ref LVHF_DENS_GAMMA_N_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 DENS_gamma_n;          ///< Gain factor

+

+    /**

+    Threshold for nearend activity detection.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>7.8</td>

+        <td>@ref LVHF_DENS_SPDET_NEAR_MIN (0)</td>

+        <td>@ref LVHF_DENS_SPDET_NEAR_DEFAULT (512)</td>

+        <td>@ref LVHF_DENS_SPDET_NEAR_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 DENS_spdet_near;

+    /**

+    Threshold for microphone activity detection.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>7.8</td>

+        <td>@ref LVHF_DENS_SPDET_ACT_MIN (0)</td>

+        <td>@ref LVHF_DENS_SPDET_ACT_DEFAULT (768)</td>

+        <td>@ref LVHF_DENS_SPDET_ACT_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 DENS_spdet_act;

+    /**

+    The maximum amount of noise suppression. <br>

+    DENS_limit_ns = \f$32767*10^{-MaxNoiseReduction[dB]/20}\f$

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVHF_DENS_LIMIT_NS_MIN (0)</td>

+        <td>@ref LVHF_DENS_LIMIT_NS_DEFAULT (10361)</td>

+        <td>@ref LVHF_DENS_LIMIT_NS_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 DENS_limit_ns;          ///< Maximum noise suppression.

+

+    /**

+    The amount of comfort noise insertion.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>1.14</td>

+        <td>@ref LVHF_DENS_CNI_GAIN_MIN (0)</td>

+        <td>@ref LVHF_DENS_CNI_GAIN_DEFAULT (16384)</td>

+        <td>@ref LVHF_DENS_CNI_GAIN_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 DENS_CNI_Gain;          ///< CNI gain

+

+    /**

+    The window length (expressed in integer multiples of 10ms) for the estimation

+    of the noise components. It is recommended to keep this parameter at its

+    default value.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVHF_DENS_NFE_BLOCKSIZE_MIN (0)</td>

+        <td>@ref LVHF_DENS_NFE_BLOCKSIZE_DEFAULT (150)</td>

+        <td>@ref LVHF_DENS_NFE_BLOCKSIZE_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 DENS_NFE_blocksize;          ///< NFE blocksize

+

+    /**

+    Threshold for farend activity detection.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVHF_SPDET_FAR_MIN (0)</td>

+        <td>@ref LVHF_SPDET_FAR_DEFAULT (16384)</td>

+        <td>@ref LVHF_SPDET_FAR_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 SPDET_far;

+    /**

+    Threshold for microphone activity detection.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVHF_SPDET_MIC_MIN (0)</td>

+        <td>@ref LVHF_SPDET_MIC_DEFAULT (16384)</td>

+        <td>@ref LVHF_SPDET_MIC_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 SPDET_mic;

+    /**

+    Threshold to activate the non-linear echo-suppression.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVHF_SPDET_X_CLIP_MIN (0)</td>

+        <td>@ref LVHF_SPDET_X_CLIP_DEFAULT (0)</td>

+        <td>@ref LVHF_SPDET_X_CLIP_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 SPDET_x_clip;

+    /**

+    Threshold to detect acoustical path changes.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVHF_PCD_THRESHOLD_MIN (0)</td>

+        <td>@ref LVHF_PCD_THRESHOLD_DEFAULT (20000)</td>

+        <td>@ref LVHF_PCD_THRESHOLD_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 PCD_threshold;          ///< PCD threshold

+

+    /**

+    Length of the background adaptive filter. The length should be chosen such that

+    only the main peak of the impulse response is covered by the filter. The length

+    should be a multiple of 8.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>16.0</td>

+        <td>@ref LVHF_PCD_TAPS_MIN (16)</td>

+        <td>@ref LVHF_PCD_TAPS_DEFAULT (16)</td>

+        <td>@ref LVHF_PCD_TAPS_MAX (64)</td>

+    </tr>

+    </table> */

+    LVM_INT16 PCD_taps;          ///< Number of taps of background NLMS.

+

+    /**

+    Adaptive step size control for the background adaptive filter.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>9.6</td>

+        <td>@ref LVHF_PCD_ERL_MIN (64)</td>

+        <td>@ref LVHF_PCD_ERL_DEFAULT (64)</td>

+        <td>@ref LVHF_PCD_ERL_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 PCD_erl;          ///< Step size of background NLMS.

+

+    /**

+    If a path change is detected, NLMS_erl of the NLMS is set to this value, to

+    ensure a fast adapting filter.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>9.6</td>

+        <td>@ref LVHF_PCD_MINIMUM_ERL_MIN (64)</td>

+        <td>@ref LVHF_PCD_MINIMUM_ERL_DEFAULT (64)</td>

+        <td>@ref LVHF_PCD_MINIMUM_ERL_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 PCD_minimum_erl;          ///< Step size of NLMS after PCD.

+

+    /**

+    After a path change the NLMS_erl of the NLMS increases back to the nominal

+    value. The speed to increase can be controlled by this parameter.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>1.14</td>

+        <td>@ref LVHF_PCD_ERL_STEP_MIN (16384)</td>

+        <td>@ref LVHF_PCD_ERL_STEP_DEFAULT (16800)</td>

+        <td>@ref LVHF_PCD_ERL_STEP_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 PCD_erl_step;          ///< Step of ERL increase after PCD.

+

+    /**

+    Gain factor applied to the echo subtraction during acoustical path change.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>7.8</td>

+        <td>@ref LVHF_PCD_GAMMA_E_RESCUE_MIN (0)</td>

+        <td>@ref LVHF_PCD_GAMMA_E_RESCUE_DEFAULT (5000)</td>

+        <td>@ref LVHF_PCD_GAMMA_E_RESCUE_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 PCD_gamma_e_rescue;          ///< gamma_e after PCD

+

+} LVHF_ControlParams_st;

+

+/**

+* The control parameters are used to control the overall module behavior. These parameters may

+* be changed at any time during processing using the LVBD_SetControlParameters function but they

+* will not take effect until the next call to the LVBD_Process function.

+*

+* @see LVBD_SetControlParameters

+* @see LVBD_Process

+*/

+typedef struct

+{

+    /**

+    Set Bulk Delay operating mode on/off.

+    */

+    LVM_Mode_en BD_OperatingMode;          ///< Set Bulk Delay operating mode on/off

+

+    /**

+    This parameter compensates for the fixed delay in the echo path and can be

+    measured in advance. This delay is caused by the audio I/O buffering, AD/DA

+    converter and propagation time between the loudspeaker and microphone. The unit

+    of 'BulkDelay' is [number of samples] at the respective sampling rate.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>16.0</td>

+        <td>@ref LVBD_BULKDELAY_MIN (0)</td>

+        <td>@ref LVBD_BULKDELAY_DEFAULT (0)</td>

+        <td>@ref LVBD_BULKDELAY_MAX (6400)</td>

+    </tr>

+    </table> */

+    LVM_UINT16 BulkDelay;          ///< Sets Bulk Delay

+

+    /**

+    This param sets the gain for the Echo reference signal. Value 8192 belong to

+    0dB

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>2.13</td>

+        <td>@ref LVBD_BD_GAIN_MIN (0)</td>

+        <td>@ref LVBD_BD_GAIN_DEFAULT (8192)</td>

+        <td>@ref LVBD_BD_GAIN_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 BD_Gain;          ///< Apply Gain to Echo reference signal

+

+} LVBD_ControlParams_st;

+

+/**

+* The control parameters are used to control the overall module behavior. These parameters may

+* be changed at any time during processing using the LVVE_Tx_SetControlParameters function but they

+* will not take effect until the next call to the LVVE_Tx_Process function.

+*

+* @see LVVE_Tx_SetControlParameters

+* @see LVVE_Tx_Process

+*/

+typedef struct

+{

+    /**

+    This enumerated type is used to set the operating mode of the Tx path. The

+    processing can be separately set to enable all processing modules (i.e., ON),

+    to disable all processing modules (i.e., OFF) or to bypass all processing

+    modules (i.e., BYPASS). When bypassed, all processing modules keep on running,

+    but their output is not used. When bypassing the Tx processing, the user can

+    select which buffer should be copied to the output buffer, if required: @li

+    Input microphone signal (or secondary microphone signal in case of

+    two-microphone setups); @li Rx reference signal; These operations ensure that

+    the input data is correctly transferred to the output buffer for all

+    combinations of input and output buffer types and input format. When OFF, the

+    input is copied to the output and the LVVE can be provided with invalid

+    parameters for modules. The sub module functions are not executed in this

+    scenario. Their combined functionality is summarized in follwoing table. <br>

+    <div align="center"> <table cellspacing="1" cellpadding="4" border="3">

+    <caption>LVVE Tx operating mode in combination with LVVE microphone routing

+    mode</caption> <tr> <th></th> <th colspan="2">MICROUTING_MODE_DEFAULT</th> <th

+    colspan="2">MICROUTING_MODE_SWAPPED</th> </tr> <tr> <th width="70"></th> <th

+    width="70">Process</th> <th width="70">Output</th> <th width="70">Process</th>

+    <th width="70">Output</th> </tr> <tr align="left"> <td>LVVE_TX_MODE_OFF</td>

+    <td>None</td> <td>Tx input 0</td> <td>None</td> <td>Tx input 1</td> </tr> <tr

+    align="left"> <td>LVVE_TX_MODE_ON</td> <td>Tx input 0</td> <td>Tx output</td>

+    <td>Tx input 1</td> <td>Tx output</td> </tr> <tr align="left">

+    <td>LVVE_TX_MODE_BYPASS_MIC0</td> <td>Tx input 0</td> <td>Tx input 0</td>

+    <td>Tx input 1</td> <td>Tx input 1</td> </tr> <tr align="left">

+    <td>LVVE_TX_MODE_BYPASS_MIC1</td> <td>Tx input 0</td> <td>Tx input 1</td>

+    <td>Tx input 1</td> <td>Tx input 0</td> </tr> <tr align="left">

+    <td>LVVE_TX_MODE_BYPASS_REF</td> <td>Tx input 0</td> <td>Tx ref input</td>

+    <td>Tx input 1</td> <td>Tx ref input</td> </tr> </table> </div>

+    */

+    LVVE_Tx_Mode_en OperatingMode;          ///< TX Operating mode

+

+    /**

+    This param can mute unmute the Rx/Tx engine output.

+    */

+    LVM_Mode_en Mute;          ///< This param can mute unmute the Rx/Tx engine output

+

+    /**

+    Set Bulk Delay operating mode on/off.

+    */

+    LVM_Mode_en BD_OperatingMode;          ///< Set Bulk Delay operating mode on/off

+

+    /**

+    This parameter compensates for the fixed delay in the echo path and can be

+    measured in advance. This delay is caused by the audio I/O buffering, AD/DA

+    converter and propagation time between the loudspeaker and microphone. The unit

+    of 'BulkDelay' is [number of samples] at the respective sampling rate.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>16.0</td>

+        <td>@ref LVVE_TX_BULKDELAY_MIN (0)</td>

+        <td>@ref LVVE_TX_BULKDELAY_DEFAULT (0)</td>

+        <td>@ref LVVE_TX_BULKDELAY_MAX (6400)</td>

+    </tr>

+    </table> */

+    LVM_UINT16 BulkDelay;          ///< Sets Bulk Delay

+

+    /**

+    This param sets the gain for the Echo reference signal. Value 8192 belong to

+    0dB

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>2.13</td>

+        <td>@ref LVVE_TX_BD_GAIN_MIN (0)</td>

+        <td>@ref LVVE_TX_BD_GAIN_DEFAULT (8192)</td>

+        <td>@ref LVVE_TX_BD_GAIN_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 BD_Gain;          ///< Apply Gain to Echo reference signal

+

+    /**

+    Turns on/off VOL_Gain.

+    */

+    LVM_Mode_en VOL_OperatingMode;          ///< Turns on/off VOL_Gain

+

+    /**

+    The volume control gain can be used to set the overall volume level of the

+    signal. The gain is set in dB with steps of 1dB.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>15.0</td>

+        <td>@ref LVVE_TX_VOL_GAIN_MIN (-96)</td>

+        <td>@ref LVVE_TX_VOL_GAIN_DEFAULT (0)</td>

+        <td>@ref LVVE_TX_VOL_GAIN_MAX (24)</td>

+    </tr>

+    </table> */

+    LVM_INT16 VOL_Gain;          ///< Apply Gain to Input signal

+

+    /**

+    Turns on/off High Pass filter.

+    */

+    LVM_Mode_en HPF_OperatingMode;          ///< Turns on/off High Pass filter

+

+    /**

+    Sets the 3dB corner frequency of the high-pass filter. In case NoiseVoid is

+    enabled, the same high-pass filter will be applied to the second microphone

+    channel.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>16.0</td>

+        <td>@ref LVVE_TX_MIC_HPF_CORNERFREQ_MIN (50)</td>

+        <td>@ref LVVE_TX_MIC_HPF_CORNERFREQ_DEFAULT (50)</td>

+        <td>@ref LVVE_TX_MIC_HPF_CORNERFREQ_MAX (1500)</td>

+    </tr>

+    </table> */

+    LVM_UINT16 MIC_HPF_CornerFreq;          ///< High Pass Filter Corner Frequency in Hz

+

+    /**

+    HandsFree Control Parameter Strcuture.

+    */

+    LVHF_ControlParams_st HF_ControlParams;          ///< HandsFree Control Parameter Structure

+

+    /**

+    NoiseVoid Control Parameter Structure.

+    */

+    LVNV_ControlParams_st NV_ControlParams;          ///< NoiseVoid Control Parameter Structure

+

+    /**

+    WhisperMode Control Parameter Structure.

+    */

+    LVWM_ControlParams_st WM_ControlParams;          ///< WhisperMode Control Parameter Structure

+

+    /**

+    Equalizer Operating mode.

+    */

+    LVM_Mode_en EQ_OperatingMode;          ///< Equalizer Operating mode

+

+    /**

+    Equalizer Control Parameter Structure.

+    */

+    LVEQ_ControlParams_st EQ_ControlParams;          ///< Equalizer Control Parameters Structure

+

+    /**

+    DRC Control Parameter Structure.

+    */

+    LVDRC_ControlParams_st DRC_ControlParams;          ///< DRC Control Parameter Structure

+

+} LVVE_Tx_ControlParams_st;

+

+

+

+/*[Begin] [lvwenhua-2012/3/12]*/

+#define LVVC_VOLUME_NUM             12

+

+typedef struct

+{

+    LVM_INT16                   NoiseSensitivity[LVVC_VOLUME_NUM];

+} LVVC_NoiseSens_st;

+/*[End] [lvwenhua-2012/3/12]*/

+

+/*[Begin] [lvwenhua-2011/8/23]*/

+typedef struct

+{

+    LVVE_Tx_ControlParams_st    Tx_ControlParams;

+    LVVE_Rx_ControlParams_st    Rx_ControlParams;

+    LVEQ_Coefs_st TxEqCoefs;

+    LVEQ_Coefs_st RxEqCoefs;

+    /*[Begin] [lvwenhua-2012/3/12]*/

+    LVVC_NoiseSens_st RxVcNoiseSens;

+    /*[End] [lvwenhua-2012/3/12]*/

+} LVVE_ControlParams_st;

+typedef struct

+{

+    LVM_UINT32 isVpParamInNv;

+    LVVE_ControlParams_st    Handset_ControlParams;

+    LVVE_ControlParams_st    Handsfree_ControlParams;

+    LVVE_ControlParams_st    Headset_ControlParams;

+    LVVE_ControlParams_st    Bluetooth_ControlParams;

+} LVVE_ControlParams_All_st;

+/*[End] [lvwenhua-2011/8/23]*/

+

+

+

+

+

+

+

+#ifdef __cplusplus

+}

+#endif /* __cplusplus */

+

+#endif      /* __REL_LVVE_HF_NV1_VC_AGC_RX_DRC_RX_WB_VIDPP_H__ */

+

+/* End of file */

diff --git a/cp/ps/driver/src/chipsets/src/audio_base/nxp/tos/PARAM_Default.h b/cp/ps/driver/src/chipsets/src/audio_base/nxp/tos/PARAM_Default.h
new file mode 100755
index 0000000..857327b
--- /dev/null
+++ b/cp/ps/driver/src/chipsets/src/audio_base/nxp/tos/PARAM_Default.h
@@ -0,0 +1,213 @@
+static LVM_CHAR LVVE_Tx_Preset_Buffer_Voice_Tool[] ={

+0x03, 0x00, 0x09, 0x18, 0x03, 0xD5, 0x07, 0x00, 0x00, 0xBD, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 

+0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x11, 0x00, 0x00, 0x00, 

+0x20, 0x00, 0x08, 0x00, 0x00, 0x40, 0x00, 0x00, 0x20, 0x80, 0x00, 0x40, 0x00, 0x00, 0x20, 0x80, 

+0x00, 0x01, 0x00, 0xFF, 0x02, 0x33, 0x63, 0x33, 0x73, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 

+0x00, 0x33, 0x63, 0x33, 0x73, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0xC0, 0x5D, 0x18, 

+0x01, 0x00, 0x02, 0x00, 0x03, 0x79, 0x28, 0x00, 0x40, 0x96, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 

+0x00, 0x20, 0x4E, 0x10, 0x00, 0x40, 0x00, 0x40, 0x00, 0xA0, 0x41, 0x88, 0x13, 0x00, 0x00, 0x00, 

+0x00, 0xF7, 0x49, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x00, 0x08, 0x20, 0x00, 0x00, 

+0x20, 0xE8, 0x03, 0x18, 0x00, 0x00, 0x20, 0xE8, 0x03, 0x00, 0x00, 0x08, 0x03, 0x20, 0x00, 0x00, 

+0x20, 0xE8, 0x03, 0x18, 0x00, 0x00, 0x20, 0xE8, 0x03, 0x00, 0x00, 0x08, 0x03, 0x96, 0x00, 0xFF, 

+0x7F, 0x9A, 0x19, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x10, 0x00, 0x8F, 0x02, 0x00, 0x04, 0x10, 0x00, 0x66, 0x06, 0x00, 0x01, 0x66, 

+0x06, 0x00, 0x40, 0x00, 0x20, 0xE0, 0x2E, 0x58, 0x1B, 0x00, 0x01, 0xCE, 0x2C, 0x00, 0x40, 0x84, 

+0x2B, 0x9A, 0x19, 0x66, 0x26, 0x00, 0x01, 0x00, 0x30, 0x00, 0x24, 0x40, 0x01, 0xE6, 0x00, 0x65, 

+0x66, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x40, 0x80, 0x00, 0xFD, 0x1F, 0xB0, 0x63, 0xAD, 

+0x7F, 0x9D, 0x5A, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 

+0x00, 0xA0, 0xFF, 0xBA, 0xFF, 0xCE, 0xFF, 0xE8, 0xFF, 0x00, 0x00, 0xA0, 0xFF, 0xBA, 0xFF, 0xDA, 

+0xFF, 0xF4, 0xFF, 0x00, 0x00, 0x32, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00

+};

+static LVM_CHAR LVVE_Rx_Preset_Buffer_Voice_Tool []={

+0x03, 0x00, 0x09, 0x18, 0x03, 0xD5, 0x07, 0x00, 0x00, 0xBD, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x2A, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 

+0x05, 0x20, 0x4E, 0x00, 0x40, 0x00, 0x01, 0x00, 0x20, 0x00, 0x02, 0x17, 0x2F, 0x5C, 0x7F, 0xB9, 

+0x7E, 0x82, 0x5A, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 

+0x00, 0xA0, 0xFF, 0xBA, 0xFF, 0xCE, 0xFF, 0xE8, 0xFF, 0x00, 0x00, 0xA0, 0xFF, 0xBA, 0xFF, 0xDA, 

+0xFF, 0xF4, 0xFF, 0x00, 0x00, 0x32, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x40, 0x80, 0x00, 0xFD, 

+0x1F, 0xB0, 0x63, 0xAD, 0x7F, 0x9D, 0x5A, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0xB0, 

+0xFF, 0xBA, 0xFF, 0xCE, 0xFF, 0xE8, 0xFF, 0x00, 0x00, 0xA0, 0xFF, 0xB0, 0xFF, 0xCE, 0xFF, 0xE8, 

+0xFF, 0x00, 0x00, 0x32, 0x00, 0x32, 0x00, 0x03, 0x00, 0x09, 0x18, 0x03, 0xD5, 0x07, 0x00, 0x00, 

+0xBD, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0xE0, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x05, 0x20, 0x4E, 0x00, 0x40, 0x00, 0x01, 0x00, 0x20, 

+0x00, 0x02, 0x17, 0x2F, 0x5C, 0x7F, 0xB9, 0x7E, 0x82, 0x5A, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 

+0x20, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0xA0, 0xFF, 0xBA, 0xFF, 0xCE, 0xFF, 0xE8, 0xFF, 

+0x00, 0x00, 0xA0, 0xFF, 0xBA, 0xFF, 0xDA, 0xFF, 0xF4, 0xFF, 0x00, 0x00, 0x32, 0x00, 0x32, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x07, 0x00, 0x00, 0x40, 0x80, 0x00, 0xFD, 0x1F, 0xB0, 0x63, 0xAD, 0x7F, 0x9D, 0x5A, 0x00, 0x24, 

+0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0xB0, 0xFF, 0xBA, 0xFF, 0xCE, 0xFF, 0xE8, 0xFF, 0x00, 0x00, 

+0xA0, 0xFF, 0xB0, 0xFF, 0xCE, 0xFF, 0xE8, 0xFF, 0x00, 0x00, 0x32, 0x00, 0x32, 0x00, 0x03, 0x00, 

+0x09, 0x18, 0x03, 0xD5, 0x07, 0x00, 0x00, 0xBD, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x2A, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x05, 0x20, 

+0x4E, 0x00, 0x40, 0x00, 0x01, 0x00, 0x20, 0x00, 0x02, 0x17, 0x2F, 0x5C, 0x7F, 0xB9, 0x7E, 0x82, 

+0x5A, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0xA0, 

+0xFF, 0xBA, 0xFF, 0xCE, 0xFF, 0xE8, 0xFF, 0x00, 0x00, 0xA0, 0xFF, 0xBA, 0xFF, 0xDA, 0xFF, 0xF4, 

+0xFF, 0x00, 0x00, 0x32, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x40, 0x80, 0x00, 0xFD, 0x1F, 0xB0, 

+0x63, 0xAD, 0x7F, 0x9D, 0x5A, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0xB0, 0xFF, 0xBA, 

+0xFF, 0xCE, 0xFF, 0xE8, 0xFF, 0x00, 0x00, 0xA0, 0xFF, 0xB0, 0xFF, 0xCE, 0xFF, 0xE8, 0xFF, 0x00, 

+0x00, 0x32, 0x00, 0x32, 0x00, 0x03, 0x00, 0x09, 0x18, 0x03, 0xD5, 0x07, 0x00, 0x00, 0xBD, 0x02, 

+0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x06, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0xE0, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x06, 0x05, 0x20, 0x4E, 0x00, 0x40, 0x00, 0x01, 0x00, 0x20, 0x00, 0x02, 

+0x17, 0x2F, 0x5C, 0x7F, 0xB9, 0x7E, 0x82, 0x5A, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 

+0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0xA0, 0xFF, 0xBA, 0xFF, 0xCE, 0xFF, 0xE8, 0xFF, 0x00, 0x00, 

+0xA0, 0xFF, 0xBA, 0xFF, 0xDA, 0xFF, 0xF4, 0xFF, 0x00, 0x00, 0x32, 0x00, 0x32, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 

+0x00, 0x40, 0x80, 0x00, 0xFD, 0x1F, 0xB0, 0x63, 0xAD, 0x7F, 0x9D, 0x5A, 0x00, 0x24, 0x00, 0x00, 

+0x00, 0x00, 0x05, 0x00, 0xB0, 0xFF, 0xBA, 0xFF, 0xCE, 0xFF, 0xE8, 0xFF, 0x00, 0x00, 0xA0, 0xFF, 

+0xB0, 0xFF, 0xCE, 0xFF, 0xE8, 0xFF, 0x00, 0x00, 0x32, 0x00, 0x32, 0x00, 0x03, 0x00, 0x09, 0x18, 

+0x03, 0xD5, 0x07, 0x00, 0x00, 0xBD, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x05, 0x20, 0x4E, 0x00, 

+0x40, 0x00, 0x01, 0x00, 0x20, 0x00, 0x02, 0x17, 0x2F, 0x5C, 0x7F, 0xB9, 0x7E, 0x82, 0x5A, 0x00, 

+0x04, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0xA0, 0xFF, 0xBA, 

+0xFF, 0xCE, 0xFF, 0xE8, 0xFF, 0x00, 0x00, 0xA0, 0xFF, 0xBA, 0xFF, 0xDA, 0xFF, 0xF4, 0xFF, 0x00, 

+0x00, 0x32, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x40, 0x80, 0x00, 0xFD, 0x1F, 0xB0, 0x63, 0xAD, 

+0x7F, 0x9D, 0x5A, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0xB0, 0xFF, 0xBA, 0xFF, 0xCE, 

+0xFF, 0xE8, 0xFF, 0x00, 0x00, 0xA0, 0xFF, 0xB0, 0xFF, 0xCE, 0xFF, 0xE8, 0xFF, 0x00, 0x00, 0x32, 

+0x00, 0x32, 0x00, 0x03, 0x00, 0x09, 0x18, 0x03, 0xD5, 0x07, 0x00, 0x00, 0xBD, 0x02, 0x00, 0x00, 

+0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x06, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0xE0, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x06, 0x05, 0x20, 0x4E, 0x00, 0x40, 0x00, 0x01, 0x00, 0x20, 0x00, 0x02, 0x17, 0x2F, 

+0x5C, 0x7F, 0xB9, 0x7E, 0x82, 0x5A, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x10, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x05, 0x00, 0xA0, 0xFF, 0xBA, 0xFF, 0xCE, 0xFF, 0xE8, 0xFF, 0x00, 0x00, 0xA0, 0xFF, 

+0xBA, 0xFF, 0xDA, 0xFF, 0xF4, 0xFF, 0x00, 0x00, 0x32, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x40, 

+0x80, 0x00, 0xFD, 0x1F, 0xB0, 0x63, 0xAD, 0x7F, 0x9D, 0x5A, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 

+0x05, 0x00, 0xB0, 0xFF, 0xBA, 0xFF, 0xCE, 0xFF, 0xE8, 0xFF, 0x00, 0x00, 0xA0, 0xFF, 0xB0, 0xFF, 

+0xCE, 0xFF, 0xE8, 0xFF, 0x00, 0x00, 0x32, 0x00, 0x32, 0x00

+};

+

+static LVM_CHAR LVVE_Tx_Mute_File_Buffer[] ={

+0x03, 0x00, 0x09, 0x18, 0x03, 0xD5, 0x07, 0x00, 0x00, 0xBD, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 

+0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x11, 0x00, 0x00, 0x00, 

+0x20, 0x00, 0x08, 0x00, 0x00, 0x40, 0x00, 0x00, 0x20, 0x80, 0x00, 0x40, 0x00, 0x00, 0x20, 0x80, 

+0x00, 0x01, 0x00, 0xFF, 0x02, 0x33, 0x63, 0x33, 0x73, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 

+0x00, 0x33, 0x63, 0x33, 0x73, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0xC0, 0x5D, 0x18, 

+0x01, 0x00, 0x02, 0x00, 0x03, 0x79, 0x28, 0x00, 0x40, 0x96, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 

+0x00, 0x20, 0x4E, 0x10, 0x00, 0x40, 0x00, 0x40, 0x00, 0xA0, 0x41, 0x88, 0x13, 0x00, 0x00, 0x00, 

+0x00, 0xF7, 0x49, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x00, 0x08, 0x20, 0x00, 0x00, 

+0x20, 0xE8, 0x03, 0x18, 0x00, 0x00, 0x20, 0xE8, 0x03, 0x00, 0x00, 0x08, 0x03, 0x20, 0x00, 0x00, 

+0x20, 0xE8, 0x03, 0x18, 0x00, 0x00, 0x20, 0xE8, 0x03, 0x00, 0x00, 0x08, 0x03, 0x96, 0x00, 0xFF, 

+0x7F, 0x9A, 0x19, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x10, 0x00, 0x8F, 0x02, 0x00, 0x04, 0x10, 0x00, 0x66, 0x06, 0x00, 0x01, 0x66, 

+0x06, 0x00, 0x40, 0x00, 0x20, 0xE0, 0x2E, 0x58, 0x1B, 0x00, 0x01, 0xCE, 0x2C, 0x00, 0x40, 0x84, 

+0x2B, 0x9A, 0x19, 0x66, 0x26, 0x00, 0x01, 0x00, 0x30, 0x00, 0x24, 0x40, 0x01, 0xE6, 0x00, 0x65, 

+0x66, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x40, 0x80, 0x00, 0xFD, 0x1F, 0xB0, 0x63, 0xAD, 

+0x7F, 0x9D, 0x5A, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 

+0x00, 0xA0, 0xFF, 0xBA, 0xFF, 0xCE, 0xFF, 0xE8, 0xFF, 0x00, 0x00, 0xA0, 0xFF, 0xBA, 0xFF, 0xDA, 

+0xFF, 0xF4, 0xFF, 0x00, 0x00, 0x32, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00

+};

+static LVM_CHAR LVVE_Tx_Wb_Mute_File_Buffer[] ={

+0x03, 0x00, 0x09, 0x18, 0x03, 0xD5, 0x07, 0x00, 0x00, 0xBD, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 

+0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x11, 0x00, 0x00, 0x00, 

+0x20, 0x00, 0x08, 0x00, 0x00, 0x40, 0x00, 0x00, 0x20, 0x80, 0x00, 0x40, 0x00, 0x00, 0x20, 0x80, 

+0x00, 0x01, 0x00, 0xFF, 0x02, 0x33, 0x63, 0x33, 0x73, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 

+0x00, 0x33, 0x63, 0x33, 0x73, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0xC0, 0x5D, 0x18, 

+0x01, 0x00, 0x02, 0x00, 0x03, 0x79, 0x28, 0x00, 0x40, 0x96, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 

+0x00, 0x20, 0x4E, 0x10, 0x00, 0x40, 0x00, 0x40, 0x00, 0xA0, 0x41, 0x88, 0x13, 0x00, 0x00, 0x00, 

+0x00, 0xF7, 0x49, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x00, 0x08, 0x20, 0x00, 0x00, 

+0x20, 0xE8, 0x03, 0x18, 0x00, 0x00, 0x20, 0xE8, 0x03, 0x00, 0x00, 0x08, 0x03, 0x20, 0x00, 0x00, 

+0x20, 0xE8, 0x03, 0x18, 0x00, 0x00, 0x20, 0xE8, 0x03, 0x00, 0x00, 0x08, 0x03, 0x96, 0x00, 0xFF, 

+0x7F, 0x9A, 0x19, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x10, 0x00, 0x8F, 0x02, 0x00, 0x04, 0x10, 0x00, 0x66, 0x06, 0x00, 0x01, 0x66, 

+0x06, 0x00, 0x40, 0x00, 0x20, 0xE0, 0x2E, 0x58, 0x1B, 0x00, 0x01, 0xCE, 0x2C, 0x00, 0x40, 0x84, 

+0x2B, 0x9A, 0x19, 0x66, 0x26, 0x00, 0x01, 0x00, 0x30, 0x00, 0x24, 0x40, 0x01, 0xE6, 0x00, 0x65, 

+0x66, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x40, 0x80, 0x00, 0xFD, 0x1F, 0xB0, 0x63, 0xAD, 

+0x7F, 0x9D, 0x5A, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 

+0x00, 0xA0, 0xFF, 0xBA, 0xFF, 0xCE, 0xFF, 0xE8, 0xFF, 0x00, 0x00, 0xA0, 0xFF, 0xBA, 0xFF, 0xDA, 

+0xFF, 0xF4, 0xFF, 0x00, 0x00, 0x32, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 

+};

diff --git a/cp/ps/driver/src/chipsets/src/audio_base/nxp/tos/audio_process.a b/cp/ps/driver/src/chipsets/src/audio_base/nxp/tos/audio_process.a
new file mode 100755
index 0000000..449febf
--- /dev/null
+++ b/cp/ps/driver/src/chipsets/src/audio_base/nxp/tos/audio_process.a
Binary files differ
diff --git a/cp/ps/driver/src/chipsets/src/audio_base/nxp/tos/nxp_DrvNvData.h b/cp/ps/driver/src/chipsets/src/audio_base/nxp/tos/nxp_DrvNvData.h
new file mode 100755
index 0000000..418c259
--- /dev/null
+++ b/cp/ps/driver/src/chipsets/src/audio_base/nxp/tos/nxp_DrvNvData.h
@@ -0,0 +1,6 @@
+//6 level volume

+//add by zhanglixia 

+//#define LVWM_TX_FILE_SIZE    463     //×Ö½ÚÊý

+//#define LVWM_RX_FILE_SIZE     1866

+

+//const static LVM_CHAR LVVE_Param_Test[] ={};

diff --git a/cp/ps/driver/src/chipsets/src/audio_base/nxp/uclinux/LVC_Types.h b/cp/ps/driver/src/chipsets/src/audio_base/nxp/uclinux/LVC_Types.h
new file mode 100755
index 0000000..14efe8c
--- /dev/null
+++ b/cp/ps/driver/src/chipsets/src/audio_base/nxp/uclinux/LVC_Types.h
@@ -0,0 +1,383 @@
+/************************************************************************/

+/*  Copyright (c) 2004-2014 NXP Software. All rights are reserved.      */

+/*  Reproduction in whole or in part is prohibited without the prior    */

+/*  written consent of the copyright owner.                             */

+/*                                                                      */

+/*  This software and any compilation or derivative thereof is and      */

+/*  shall remain the proprietary information of NXP Software and is     */

+/*  highly confidential in nature. Any and all use hereof is restricted */

+/*  and is subject to the terms and conditions set forth in the         */

+/*  software license agreement concluded with NXP Software.             */

+/*                                                                      */

+/*  Under no circumstances is this software or any derivative thereof   */

+/*  to be combined with any Open Source Software in any way or          */

+/*  licensed under any Open License Terms without the express prior     */

+/*  written  permission of NXP Software.                                */

+/*                                                                      */

+/*  For the purpose of this clause, the term Open Source Software means */

+/*  any software that is licensed under Open License Terms. Open        */

+/*  License Terms means terms in any license that require as a          */

+/*  condition of use, modification and/or distribution of a work        */

+/*                                                                      */

+/*           1. the making available of source code or other materials  */

+/*              preferred for modification, or                          */

+/*                                                                      */

+/*           2. the granting of permission for creating derivative      */

+/*              works, or                                               */

+/*                                                                      */

+/*           3. the reproduction of certain notices or license terms    */

+/*              in derivative works or accompanying documentation, or   */

+/*                                                                      */

+/*           4. the granting of a royalty-free license to any party     */

+/*              under Intellectual Property Rights                      */

+/*                                                                      */

+/*  regarding the work and/or any work that contains, is combined with, */

+/*  requires or otherwise is based on the work.                         */

+/*                                                                      */

+/*  This software is provided for ease of recompilation only.           */

+/*  Modification and reverse engineering of this software are strictly  */

+/*  prohibited.                                                         */

+/*                                                                      */

+/************************************************************************/

+

+/****************************************************************************************

+

+     $Author: beq07720 $

+     $Revision: 55357 $

+     $Date: 2014-03-05 22:16:13 +0530 (Wed, 05 Mar 2014) $

+

+*****************************************************************************************/

+

+/** @file

+ *  Header file defining the standard LifeVibes types for use in the application layer

+ *  interface of all LifeVibes modules

+ */

+

+#ifndef LVM_TYPES_H

+#define LVM_TYPES_H

+

+#ifdef __cplusplus

+extern "C" {

+#endif /* __cplusplus */

+

+/****************************************************************************************/

+/*                                                                                      */

+/*  definitions                                                                         */

+/*                                                                                      */

+/****************************************************************************************/

+

+#define LVM_NULL                0                   ///< NULL pointer

+

+#define LVM_TRUE                1                   ///< Boolean True

+#define LVM_FALSE               0                   ///< Boolean False

+

+#define LVM_MAXINT_8            127                 ///< Maximum positive integer size

+#define LVM_MAXINT_16           32767               ///< Maximum signed int 16 bits number

+#define LVM_MAXINT_32           2147483647          ///< Maximum signed int 32 bits number

+#define LVM_MAXUINT_32          4294967295U         ///< Maximum un-signed int 32 bits number

+

+#if (  defined(VARIANT_24BIT) )

+#define LVM_MAXENUM             8388607L            ///< Maximum value for enumerator

+#else

+#define LVM_MAXENUM             2147483647          ///< Maximum value for enumerator

+#endif

+

+#define LVM_MODULEID_MASK       0xFF00              ///< Mask to extract the calling module ID from callbackId

+#define LVM_EVENTID_MASK        0x00FF              ///< Mask to extract the callback event from callbackId

+

+/* Memory table*/

+#define LVM_MEMREGION_PERSISTENT_SLOW_DATA      0   ///< Offset to the instance memory region

+#define LVM_MEMREGION_PERSISTENT_FAST_DATA      1   ///< Offset to the persistent data memory region

+#define LVM_MEMREGION_PERSISTENT_FAST_COEF      2   ///< Offset to the persistent coefficient memory region

+#define LVM_MEMREGION_TEMPORARY_FAST            3   ///< Offset to temporary memory region

+

+#define LVM_NR_MEMORY_REGIONS                   4   ///< Number of memory regions

+

+#define LVM_MODE_LVWIREFORMAT_LENGTH (4) ///< Number of bytes to encode @ref LVM_Mode_en in LVWireFormat

+#define LVM_CONFIG_LVWIREFORMAT_LENGTH (4) ///< Number of bytes to encode @ref LVM_Config_en in LVWireFormat

+#define LVM_FS_LVWIREFORMAT_LENGTH (4) ///< Number of bytes to encode @ref LVM_Fs_en sample Rate in LVWireFormat

+

+#define LVM_CHAR_LVWIREFORMAT_LENGTH   (1)

+#define LVM_INT8_LVWIREFORMAT_LENGTH   (1)

+#define LVM_UINT8_LVWIREFORMAT_LENGTH   (1)

+

+#define LVM_INT16_LVWIREFORMAT_LENGTH   (2)

+#define LVM_UINT16_LVWIREFORMAT_LENGTH   (2)

+

+#define LVM_INT32_LVWIREFORMAT_LENGTH   (4)

+#define LVM_UINT32_LVWIREFORMAT_LENGTH   (4)

+

+

+/****************************************************************************************/

+/*                                                                                      */

+/*  Basic types                                                                         */

+/*                                                                                      */

+/****************************************************************************************/

+

+#if defined(CORE_TIC64)

+typedef     char                LVM_CHAR;           ///< ASCII character

+

+typedef     char                LVM_INT8;           ///< Signed 8-bit word

+typedef     unsigned char       LVM_UINT8;          ///< Unsigned 8-bit word

+

+typedef     short               LVM_INT16;          ///< Signed 16-bit word

+typedef     unsigned short      LVM_UINT16;         ///< Unsigned 16-bit word

+

+typedef     int                 LVM_INT32;          ///< Signed 32-bit word

+typedef     unsigned int        LVM_UINT32;         ///< Unsigned 32-bit word

+#else

+

+#if (  defined(VARIANT_FRAC16) || defined (VARIANT_REFREAL16)   )

+typedef     long                DATATYPE;           ///< long data type

+

+typedef     char                LVM_CHAR;           ///< ASCII character

+

+typedef     char                LVM_INT8;           ///< Signed 8-bit word

+typedef     unsigned char       LVM_UINT8;          ///< Unsigned 8-bit word

+

+typedef     long                LVM_INT16;          ///< Signed 16-bit word

+typedef     long                LVM_UINT16;         ///< Unsigned 16-bit word

+

+typedef     long                LVM_INT32;          ///< Signed 32-bit word

+typedef     long                LVM_UINT32;         ///< Unsigned 32-bit word

+

+#else

+typedef     char                LVM_CHAR;           ///< ASCII character

+

+typedef     char                LVM_INT8;           ///< Signed 8-bit word

+typedef     unsigned char       LVM_UINT8;          ///< Unsigned 8-bit word

+

+typedef     short               LVM_INT16;          ///< Signed 16-bit word

+typedef     unsigned short      LVM_UINT16;         ///< Unsigned 16-bit word

+

+typedef     long                 LVM_INT32;          ///< Signed 32-bit word

+typedef     unsigned long        LVM_UINT32;         ///< Unsigned 32-bit word

+#if (  defined(VARIANT_24BIT) )

+

+#define LVM_MAXINT_24           8388607L      ///< 24 bit max int

+#define LVM_MININT_24          -8388608L    ///< 24bit min int

+

+#define LVM_MAXINT_48           140737488355327LL  ///< 48bit max int

+#define LVM_MININT_48           -140737488355328LL   ///< 48bit min int

+

+#endif // VARIANT_24BIT

+

+#endif // VARIANT_FRAC16

+

+#endif // CORE_TIC64

+

+/****************************************************************************************/

+/*                                                                                      */

+/*  Standard Enumerated types                                                           */

+/*                                                                                      */

+/****************************************************************************************/

+

+/**

+The @ref LVM_Mode_en enumerated type is used to set the operating mode of a particular feature inside the LifeVibes modules.

+The feature can be separately set to enable the feature processing (i.e., ON) or to disable all feature processing

+modules (i.e., OFF).

+*/

+typedef enum

+{

+    LVM_MODE_OFF    = 0,     ///< LVM module disabled

+    LVM_MODE_ON     = 1,     ///< LVM module enabled

+    LVM_MODE_DUMMY  = LVM_MAXENUM

+} LVM_Mode_en;

+

+/**

+Sets stream Format

+*/

+typedef enum

+{

+    LVM_STEREO          = 0,           ///<Stereo stream

+    LVM_MONOINSTEREO    = 1,           ///<Mono in stereo stream

+    LVM_MONO            = 2,           ///<Mono stream

+    LVM_5DOT1           = 3,           ///<stream 5.1 formatted

+    LVM_7DOT1           = 4,           ///<stream 7.1 formatted

+    LVM_SOURCE_DUMMY    = LVM_MAXENUM

+} LVM_Format_en;

+

+/**

+Sets Speaker type

+*/

+typedef enum

+{

+    LVM_SPEAKER_MONO    = 0,        ///< Mono type speaker

+    LVM_SPEAKER_STEREO  = 1,        ///< Stereo type speaker

+    LVM_SPEAKER_DUMMY   = LVM_MAXENUM

+} LVM_SpeakerType_en;

+

+/**

+Sets Word length

+*/

+typedef enum

+{

+    LVM_16_BIT      = 0,           ///< 16 bit word length

+    LVM_32_BIT      = 1,           ///< 32 bit word length

+    LVM_WORDLENGTH_DUMMY = LVM_MAXENUM

+} LVM_WordLength_en;

+

+/**

+The LVM product supports the sample rates specified in @ref LVM_Fs_en. The input and output sample rates are always the same.

+*/

+typedef enum

+{

+    LVM_FS_8000  = 0,              ///< 8k sampling rate

+    LVM_FS_11025 = 1,              ///< 11.025k sampling rate

+    LVM_FS_12000 = 2,              ///< 12k sampling rate

+    LVM_FS_16000 = 3,              ///< 16k sampling rate

+    LVM_FS_22050 = 4,              ///< 22.050k sampling rate

+    LVM_FS_24000 = 5,              ///< 24k sampling rate

+    LVM_FS_32000 = 6,              ///< 32k sampling rate

+    LVM_FS_44100 = 7,              ///< 44.1k sampling rate

+    LVM_FS_48000 = 8,              ///< 48k sampling rate

+    LVM_FS_COUNT = 9,              ///< Max sampling rate count

+    LVM_FS_INVALID = LVM_MAXENUM-1,

+    LVM_FS_DUMMY = LVM_MAXENUM

+} LVM_Fs_en;

+

+/**

+The enumerated type is used to select the reset mode for the module.

+@ref LVM_RESET_SOFT is used to select a soft reset (or partial reset) and @ref LVM_RESET_HARD is

+used to select a hard reset (full re-initialization).

+*/

+typedef enum

+{

+/**

+<table border>

+   <tr>

+       <td><b>Name</b></td>

+       <td><b>MODE</b></td>

+   </tr>

+   <tr>

+       <td>ResetType</td>

+       <td>@ref LVM_RESET_SOFT</td>

+   </tr>

+   <tr>

+       <td></td>

+       <td>@ref LVM_RESET_HARD</td>

+   </tr>

+</table>

+*/

+    LVM_RESET_SOFT    = 0,         ///< Reset type for LVM where a partial reset of the module should be performed

+    LVM_RESET_HARD    = 1,         ///< Reset type for LVM where a full reset of the module should be performed

+    LVM_RESET_DUMMY   = LVM_MAXENUM

+} LVM_ResetType_en;

+

+/**

+The @ref LVM_MemoryTypes_en enumerated type identifies the memory region types so that they can be correctly placed in memory

+by the calling application.

+The module initially has no permanent memory storage and makes no use of persistent memory allocation internally.

+The calling application must allocate memory for the module to use.

+

+Four memory regions are required:

+@li @ref LVM_MEMREGION_PERSISTENT_SLOW_DATA : this type of memory is used to store all the control data that needs to be saved between two consecutive calls to the process function.

+@li @ref LVM_MEMREGION_PERSISTENT_FAST_DATA : this type of memory is used to store data such as filter history

+@li @ref LVM_MEMREGION_PERSISTENT_FAST_COEF : this type of memory is used to store filter coefficients.

+@li @ref LVM_MEMREGION_TEMPORARY_FAST (scratch): this type of memory is used to store temporary data. This memory can be reused by the application in between calls to the process function.

+

+This collection of memory regions forms the module instance.

+

+Typically the memory is allocated by the application dynamically; however, it can be allocated statically if required.

+The sizes of the memory regions can be found by running the GetMemoryTable functions on a simulator and noting

+the returned values. Alternatively contact NXP who can provide the figures.

+It is possible that these memory sizes will change between release versions of the library and hence the dynamic memory allocation method is preferred where possible.

+On some target platforms the placement of memory regions is critical for achieving optimal performance of the module.

+*/

+typedef enum

+{

+    LVM_PERSISTENT_SLOW_DATA    = LVM_MEMREGION_PERSISTENT_SLOW_DATA,       ///< Persistent slow memory region

+    LVM_PERSISTENT_FAST_DATA    = LVM_MEMREGION_PERSISTENT_FAST_DATA,       ///< Persistent fast memory region

+    LVM_PERSISTENT_FAST_COEF    = LVM_MEMREGION_PERSISTENT_FAST_COEF,       ///< Persisten fast memory for coefficient storage

+    LVM_TEMPORARY_FAST          = LVM_MEMREGION_TEMPORARY_FAST,             ///< Temporary fast memory region

+    LVM_MEMORYTYPE_DUMMY        = LVM_MAXENUM

+} LVM_MemoryTypes_en;

+

+/**

+Sets mod of Configuration

+*/

+typedef enum

+{

+    LVM_CONFIG_HANDSET            = 0,                  ///< Handset configuration

+    LVM_CONFIG_SPEAKERPHONE       = 1,                  ///< Speaker mod configuration

+    LVM_CONFIG_EARPIECE           = 2,                  ///< Earpiece configuration

+    LVM_CONFIG_DUMMY              = LVM_MAXENUM

+} LVM_Config_en;

+

+/**

+The @ref LVM_MemoryRegion_st type defines a memory region by specifying its size in bytes, its region type and its base pointer.

+@see LVM_MemoryTypes_en

+*/

+#if (  defined(VARIANT_24BIT) )

+typedef struct

+{

+    LVM_INT24                    Size;                   ///< The size of the memory region in bytes

+    LVM_MemoryTypes_en           Type;                   ///< Type of memory region

+    void                        *pBaseAddress;           ///< Pointer to the memory region base address

+} LVM_MemoryRegion_st;

+#else

+typedef struct

+{

+    LVM_UINT32                  Size;                   ///< The size of the memory region in bytes

+    LVM_MemoryTypes_en          Type;                   ///< Type of memory region

+    void                        *pBaseAddress;          ///< Pointer to the memory region base address

+} LVM_MemoryRegion_st;

+#endif

+

+/**

+The LVM_MemoryTable_st type defines the memory requirements of the module as an array of region definitions.

+The number of required memory regions is given by the constant @ref LVM_NR_MEMORY_REGIONS

+@see LVM_MemoryRegion_st

+*/

+typedef struct

+{

+    LVM_MemoryRegion_st         Region[LVM_NR_MEMORY_REGIONS];  ///< One definition of all memory regions

+} LVM_MemoryTable_st;

+

+/**

+Beats Per Minute Structure

+*/

+typedef struct

+{

+    LVM_INT16                   ShortTermMinimum;       ///< Beats per minute in Q9.6 format

+    LVM_INT16                   ShortTermAverage;       ///< Beats per minute in Q9.6 format

+    LVM_INT16                   ShortTermMaximum;       ///< Beats per minute in Q9.6 format

+

+    LVM_INT16                   Confidence;             ///< Beat confidence level: 0 = no confidence, 32767 = maximum confidence

+    LVM_INT16                   Strength;               ///< Beat strength level:   0 = no beat, 32767 = maximum strength beat

+    LVM_INT16                   LongTermMinimum;        ///< Beats per minute in Q9.6 format

+    LVM_INT16                   LongTermAverage;        ///< Beats per minute in Q9.6 format

+    LVM_INT16                   LongTermMaximum;        ///< Beats per minute in Q9.6 format

+

+} LVM_BPMModuleStats_st;

+

+

+/****************************************************************************************/

+/*                                                                                      */

+/*  Standard Function Prototypes                                                        */

+/*                                                                                      */

+/****************************************************************************************/

+/**

+@brief General purpose callback function

+

+@param pCallbackData           Pointer to the callback data structure

+@param pGeneralPurpose         General purpose pointer (e.g. to a data structure needed in the callback)

+@param PresetLength            General purpose variable (e.g. to be used as callback ID)

+@return \ref LVM_INT32

+*/

+typedef LVM_INT32 (*LVM_Callback)(void          *pCallbackData,

+                                  void          *pGeneralPurpose,

+                                  LVM_INT16     GeneralPurpose );

+

+

+/****************************************************************************************/

+/*                                                                                      */

+/*  End of file                                                                         */

+/*                                                                                      */

+/****************************************************************************************/

+

+#ifdef __cplusplus

+}

+#endif /* __cplusplus */

+

+#endif  /* LVM_TYPES_H */

diff --git a/cp/ps/driver/src/chipsets/src/audio_base/nxp/uclinux/LVVE.h b/cp/ps/driver/src/chipsets/src/audio_base/nxp/uclinux/LVVE.h
new file mode 100755
index 0000000..9c48d8e
--- /dev/null
+++ b/cp/ps/driver/src/chipsets/src/audio_base/nxp/uclinux/LVVE.h
@@ -0,0 +1,1371 @@
+/****************************************************************************************/

+/*  Copyright (c) 2004-2014 NXP Software. All rights are reserved.                      */

+/*  Reproduction in whole or in part is prohibited without the prior                    */

+/*  written consent of the copyright owner.                                             */

+/*                                                                                      */

+/*  This software and any compilation or derivative thereof is and                      */

+/*  shall remain the proprietary information of NXP Software and is                     */

+/*  highly confidential in nature. Any and all use hereof is restricted                 */

+/*  and is subject to the terms and conditions set forth in the                         */

+/*  software license agreement concluded with NXP Software.                             */

+/*                                                                                      */

+/*  Under no circumstances is this software or any derivative thereof                   */

+/*  to be combined with any Open Source Software in any way or                          */

+/*  licensed under any Open License Terms without the express prior                     */

+/*  written  permission of NXP Software.                                                */

+/*                                                                                      */

+/*  For the purpose of this clause, the term Open Source Software means                 */

+/*  any software that is licensed under Open License Terms. Open                        */

+/*  License Terms means terms in any license that require as a                          */

+/*  condition of use, modification and/or distribution of a work                        */

+/*                                                                                      */

+/*           1. the making available of source code or other materials                  */

+/*              preferred for modification, or                                          */

+/*                                                                                      */

+/*           2. the granting of permission for creating derivative                      */

+/*              works, or                                                               */

+/*                                                                                      */

+/*           3. the reproduction of certain notices or license terms                    */

+/*              in derivative works or accompanying documentation, or                   */

+/*                                                                                      */

+/*           4. the granting of a royalty-free license to any party                     */

+/*              under Intellectual Property Rights                                      */

+/*                                                                                      */

+/*  regarding the work and/or any work that contains, is combined with,                 */

+/*  requires or otherwise is based on the work.                                         */

+/*                                                                                      */

+/*  This software is provided for ease of recompilation only.                           */

+/*  Modification and reverse engineering of this software are strictly                  */

+/*  prohibited.                                                                         */

+/*                                                                                      */

+/****************************************************************************************/

+

+/****************************************************************************************/

+/*                                                                                      */

+/*     $Author: nxp65285 $*/

+/*     $Revision: 56908 $*/

+/*     $Date: 2014-04-10 17:30:02 +0530 (Thu, 10 Apr 2014) $*/

+/*                                                                                      */

+/****************************************************************************************/

+

+/**

+@file

+Header file for the application layer interface of the LVVE module.

+This files includes all definitions, types, structures and function prototypes

+required by the calling layer. All other types, structures and functions are

+private.

+*/

+

+#ifndef __LVVE_H__

+#define __LVVE_H__

+

+#ifdef __cplusplus

+extern "C" {

+#endif /* __cplusplus */

+

+/****************************************************************************************/

+/*                                                                                      */

+/*  Includes                                                                            */

+/*                                                                                      */

+/****************************************************************************************/

+

+#include "LVVE_VID.h"

+

+/****************************************************************************************/

+/*                                                                                      */

+/*  Definitions                                                                         */

+/*                                                                                      */

+/****************************************************************************************/

+/* Below include logic is designed to reduce checks to 1 or 2 conditions due to limitations in the backend stripping code */

+

+

+

+

+

+#define LVVE_MAX_PCM_FRAME_SIZE         160                    ///< LVVE maximum processing frame size

+

+

+#define LVVE_NOISESAMPLES_PER_FRAME     2                           ///< Number of samples required for noise estimation per frame

+/**

+@def LVVE_RX_PRESET_LENGTH

+Length of the LVVE_Rx preset buffer (number of bytes).

+@see LVVE_Rx_SetPreset

+@ingroup LVVE_Rx

+*/

+#define LVVE_RX_PRESET_LENGTH (LVVIDHEADER_CONTROLPARAMS_LVWIREFORMAT_LENGTH + LVVE_RX_CONTROLPARAMS_LVWIREFORMAT_LENGTH) ///< RX preset Buffer length

+

+/**

+@def LVVE_TX_PRESET_LENGTH

+Length of the LVVE_Tx preset buffer (number of bytes).

+@see LVVE_Tx_SetPreset

+@ingroup LVVE_Tx

+*/

+#define LVVE_TX_PRESET_LENGTH (LVVIDHEADER_CONTROLPARAMS_LVWIREFORMAT_LENGTH + LVVE_TX_CONTROLPARAMS_LVWIREFORMAT_LENGTH) ///< TX preset buffer length

+

+

+/* Deprecated Definitions */

+

+#define LVVE_MAX_BULK_DELAY             LVVE_TX_BULKDELAY_MAX

+#define LVVE_RX_MODE_DUMMY LVVE_RX_MODE_EN_DUMMY

+#define LVVE_TX_MODE_DUMMY LVVE_TX_MODE_EN_DUMMY

+

+#define LVVE_MAX_VOL_GAIN_DB            LVVE_TX_VOL_GAIN_MAX

+#define LVVE_MIN_VOL_GAIN_DB            LVVE_TX_VOL_GAIN_MIN

+

+#define LVVE_MAX_HPF_CORNER_HZ          LVVE_TX_MIC_HPF_CORNERFREQ_MAX

+#define LVVE_MIN_HPF_CORNER_HZ          LVVE_TX_MIC_HPF_CORNERFREQ_MIN

+

+#define LVVE_MAX_HPF_RX_CORNER_HZ       LVVE_RX_HPF_CORNERFREQ_MAX

+

+#define LVVE_MAX_NLPP_LIMIT_DB          LVNLPP_NLPP_LIMIT_MAX

+#define LVVE_MIN_NLPP_LIMIT_DB          LVNLPP_NLPP_LIMIT_MIN

+

+

+#define LVVE_MAX_DRC_LEVEL              LVDRC_COMPRESSORCURVEINPUTLEVELS_MAX

+#define LVVE_MIN_DRC_LEVEL              LVDRC_COMPRESSORCURVEINPUTLEVELS_MIN

+#define LVVE_MIN_DRC_NUMKNEES           LVDRC_NUMKNEES_MIN

+#define LVVE_MAX_DRC_NUMKNEES           LVDRC_NUMKNEES_MAX

+#define LVVE_MIN_DRC_ATTACKTIME         LVDRC_ATTACKTIME_MIN

+#define LVVE_MAX_DRC_ATTACKTIME         LVDRC_ATTACKTIME_MAX

+#define LVVE_MIN_DRC_RELEASETIME        LVDRC_RELEASETIME_MIN

+#define LVVE_MAX_DRC_RELEASETIME        LVDRC_RELEASETIME_MAX

+

+

+/* End deprecated defines*/

+/****************************************************************************************/

+/*                                                                                      */

+/*  Types                                                                               */

+/*                                                                                      */

+/****************************************************************************************/

+

+/**

+LVVE_Tx Instance Handle

+This handle is used by most of the LVVE APIs

+@see LVVE_Tx_GetInstanceHandle

+@ingroup LVVE_Tx

+*/

+typedef void *LVVE_Tx_Handle_t;   ///< LVVE Tx handle

+/**

+This handle is used by most of the LVVE APIs

+@see LVVE_Rx_GetInstanceHandle

+@ingroup LVVE_Rx

+*/

+typedef void *LVVE_Rx_Handle_t;  ///< LVVE Rx handle

+

+/**

+This enum type specifies the different error codes returned by the API functions

+For the exact meaning see the individual function descriptions

+*/

+typedef enum

+{

+    LVVE_SUCCESS                            = 0,                ///< Successful return from a routine

+    LVVE_ALIGNMENTERROR                     = 1,                ///< Memory alignment error

+    LVVE_NULLADDRESS                        = 2,                ///< NULL allocation address

+    LVVE_OUTOFRANGE                         = 3,                ///< Out of range parameter

+    LVVE_INVALIDNUMSAMPLES                  = 4,                ///< Invalid number of samples

+    LVVE_INVALID_ALGORITHM_CONFIGURATION    = 5,                ///< Mutually exclusive algorithms configured ON

+    LVVE_INVALID_STATE_CONFIGURATION        = 6,                ///< Invalid state of the algorithm

+    LVVE_PRESET_INVALID_BUFFER_LENGTH       = 7,                ///< Incorrect length of buffer used in SetPreset

+    LVVE_PRESET_INVALID_VOLUME_INDEX        = 8,                ///< The volume index exceeds the buffer content in SetPreset

+    LVVE_PRESET_INVALID_BUFFER_VERSION      = 9,                ///< The version of the preset buffer does not match this library

+    LVVE_PRESET_INVALID_BASELINE_VERSION    = 10,               ///< Invalid LVVE Baseline Version in preset buffer

+    LVVE_PRESET_INVALID_MASK                = 11,               ///< Invalid algorithm mask in preset buffer

+    LVVE_PRESET_INVALID_SAMPLE_RATE         = 12,               ///< Invalid sample rate @ref LVM_Fs_en in preset buffer

+    LVVE_PRESET_INVALID_LVWIREFORMAT_MESSAGEID = 13,            ///< Invalid @ref LVVIDHeader_MessageID_en wire format message id in preset buffer

+

+    LVVE_RETURNSTATUS_DUMMY                 = LVM_MAXENUM

+} LVVE_ReturnStatus_en;

+

+/**

+Byte array containing encoded LVVE_Rx_ControlParams for one or multiple volumes.

+The length of this array should be a multiple of @ref LVVE_RX_PRESET_LENGTH.

+@see LVVE_Rx_SetPreset

+@ingroup LVVE_Rx

+*/

+typedef LVM_CHAR* LVVE_Rx_Preset_t; ///< LVVE Rx preset buffer

+

+/**

+Byte array containing encoded LVVE_Tx_ControlParams for one or multiple volumes.

+The length of this array should be a multiple of @ref LVVE_TX_PRESET_LENGTH.

+@see LVVE_Tx_SetPreset

+@ingroup LVVE_Tx

+*/

+typedef LVM_CHAR* LVVE_Tx_Preset_t;  ///< LVVE Tx preset buffer

+

+

+/****************************************************************************************/

+/*                                                                                      */

+/*  Structures                                                                          */

+/*                                                                                      */

+/****************************************************************************************/

+

+/**

+The instance parameters define certain important operating limits required by the calling application.

+These instance parameters affect how much memory is required by the LVVE and hence must be provided

+when the instance is created.

+@see LVVE_Rx_GetMemoryTable

+@see LVVE_Rx_GetInstanceHandle

+@see LVVE_Tx_GetMemoryTable

+@see LVVE_Tx_GetInstanceHandle

+*/

+/**

+EQ Module Instance Parameters Structure.

+@see LVEQ_InstanceParams_st

+*/

+typedef struct

+{

+/**

+Max Size of Equalizer

+Sets the maximum length of the equalizer impulse response that can be used.

+It must be a multiple of 8.

+<table border>

+<caption>EQ Max Length Table</caption>

+   <tr>

+       <td><b>Unit</b></td>

+       <td><b>Q format</b></td>

+       <td><b>Data Range</b></td>

+       <td><b>Default Values</b></td>

+   </tr>

+   <tr>

+       <td><b>Integer Length in Samples</b></td>

+       <td><b>Q16.0</b></td>

+       <td>[8,\ref LVEQ_EQ_LENGTH_MAX]</td>

+       <td>\ref LVEQ_EQ_LENGTH_DEFAULT</td>

+   </tr>

+</table>

+*/

+    LVM_UINT16                    EQ_MaxLength;  ///< EQ Max Length

+} LVEQ_InstanceParams_st;

+

+/**

+Tx Instance Parameter Structure

+These parameters are set at initialization time and may not be changed during processing

+@ref LVVE_Tx_GetInstanceHandle

+@ingroup LVVE_Tx

+*/

+typedef struct

+{

+    LVM_Fs_en                   SampleRate;      ///< Sample rate

+/**

+Sets the maximum length of the bulk delay between Rx and Tx expressed in samples.

+The unit of MaxBulkDelay is [number of samples] at the respective sampling rate.

+<table border>

+<caption>Max Bulk Delay Table</caption>

+   <tr>

+       <td><b>Type</b></td>

+       <td><b>Unit</b></td>

+       <td><b>Q format</b></td>

+       <td><b>Data Range</b></td>

+       <td><b>Default Values</b></td>

+   </tr>

+   <tr>

+       <td><b>LVM_UINT16</b></td>

+       <td><b>Integer Length in Samples</b></td>

+       <td><b>Q16.0</b></td>

+       <td>[0,6400]</td>

+       <td>None</td>

+   </tr>

+</table>

+*/

+    LVM_UINT16                  MaxBulkDelay;     ///< Max bulk delay

+

+    LVEQ_InstanceParams_st      EQ_InstParams;  ///< EQ instance

+} LVVE_Tx_InstanceParams_st;

+

+/**

+Rx Instance Parameter Structure

+These parameters are set at initialization time and may not be changed during processing.

+@ref LVVE_Rx_GetInstanceHandle

+@ingroup LVVE_Rx

+*/

+typedef struct

+{

+    LVM_Fs_en                   SampleRate;            ///< LVVE sample rate

+    LVEQ_InstanceParams_st      EQ_InstParams;///< EQ instance

+

+} LVVE_Rx_InstanceParams_st;

+

+/**

+The version information structure contains one character field to store LVVE version number.

+A call to the @ref LVVE_GetVersionInfo function is needed to retrieve this information.

+*/

+typedef struct

+{

+    LVM_CHAR                    VersionNumber[64];  ///< Version number of the LifeVibes&trade; VoiceExperience library

+} LVVE_VersionInfo;

+

+/**

+Used to reset LVVE_Rx module any time.

+@ref LVM_ResetType_en parameter determine the type of reset required

+@ingroup LVVE_Rx

+*/

+typedef struct

+{

+    LVM_ResetType_en ResetType;  ///< RX Reset Type

+} LVVE_Rx_ResetParams_st;

+

+/**

+Used to reset LVVE_Tx module any time.

+LVM_ResetType_en parameter determine the type of reset required

+@ingroup LVVE_Tx

+*/

+typedef struct

+{

+    LVM_ResetType_en ResetType;   ///< TX Reset Type

+} LVVE_Tx_ResetParams_st;

+

+/**

+@brief Retrieve the memory requirements of the LVVE_Tx module.

+

+This function returns a table of memory records that describe size, type and memory space of all buffers

+required by the instance. The number of initialized memory records is defined by LVVE_NR_MEMORY_REGIONS.

+This function is used for two purposes and is called in two different ways:

+

+@li Memory Allocation: When the LVVE_GetMemoryTable functions are called with a NULL instance handle (hInstance = LVM_NULL)

+    the function returns the memory requirements. The base address pointers in the memory table are set to NULL.

+    All elements of the instance parameters structure (pointed to by pInstParams) must contain valid values as the memory

+    requirements are affected by these settings.

+

+@li Memory Free: When called with a non-NULL instance handle (hInstance = a valid instance handle)

+      the function returns the memory table used when the instance was created.

+      The base address pointers returned will be those supplied by the calling application when the memory

+      was allocated and can now be used for freeing memory. The instance parameters (pointed to by pInstParams)

+      are ignored and the pInstParams parameter may be set to NULL.

+@li In case of memory allocation, all elements of the parameter initialization structure defined by pInstParams

+    must contain valid values as the memory requirements are affected by these settings.

+    In some releases of the bundle library one or more memory regions may have a zero size.

+

+@pre The number of memory records in the array defined by pMemoryTable is equal to @ref LVM_NR_MEMORY_REGIONS.

+@pre Exactly @ref LVM_NR_MEMORY_REGIONS memory records of pMemoryTable are initialized.

+

+@post When this function is called with hInstance = NULL the memory base address pointers

+will be NULL on return.

+@post When the function is called for freeing memory, hInstance = Instance Handle the

+memory table returns the allocated memory and base addresses used during

+initialisation.

+

+@return  LVVE_SUCCESS           when the function call succeeds and the memory table is filled correctly

+@return  LVVE_NULLADDRESS       when pMemoryTable was NULL

+@return  LVVE_NULLADDRESS       when pInstParams was NULL and the call was for memory allocation

+                                is NULL.

+@return  LVVE_OUTOFRANGE        when pInstParams contains parameters out of the excepted range

+

+@note  This function may be interrupted by the LVVE_Tx_Process function.

+

+@ingroup LVVE_Tx

+

+LVVE_Tx_GetMemoryTable: Memory Allocation Example:

+

+The following example shows how to get the memory requirements for the LVVE_Tx instance.

+\code

+    InstParams_Tx.SampleRate    = LVM_FS_8000;

+    // Include the other instance params here

+

+    LVVE_Status = LVVE_Tx_GetMemoryTable ( LVM_NULL,

+                                           &MemTab_Tx,

+                                           &InstParams_Tx );

+

+    if( LVVE_Status != LVVE_SUCCESS )

+    {

+        // Handle Errors

+    }

+

+    for( c1 = 0; c1 < LVVE_NR_MEMORY_REGIONS; c1++ )

+    {

+        if( MemTab_Tx.Region[c1].Size != 0 )

+        {

+            MemTab_Tx.Region[c1].pBaseAddress =

+                malloc(MemTab_Tx.Region[c1].Size);

+        }

+    }

+\endcode

+

+LVVE_Tx_GetMemoryTable: Freeing Memory Example:

+

+The following example shows how to free the memory from the LVVE_Tx instance.

+

+\code

+    LVVE_Status = LVVE_Tx_GetMemoryTable( hInstance,

+                                              &MemTab_Tx,

+                                              LVM_NULL);

+

+        if (LVVE_Status != LVVE_SUCCESS)

+        {

+            // Handle errors

+        }

+

+        for( c1 = 0; c1 < LVVE_NR_MEMORY_REGIONS; c1++)

+        {

+            if (MemTab_Tx.Region[c1].Size != 0)

+            {

+                free(MemTab_Tx.Region[c1].pBaseAddress);

+            }

+        }

+\endcode

+

+*/

+

+LVVE_ReturnStatus_en LVVE_Tx_GetMemoryTable(LVVE_Tx_Handle_t               hInstance,

+                                            LVM_MemoryTable_st             *pMemoryTable,

+                                            LVVE_Tx_InstanceParams_st      *pInstanceParams);

+

+/**

+@brief Retrieve the memory requirements of the LVVE_Rx module.

+

+This function returns a table of memory records that describe size, type and memory space of all buffers

+required by the instance. The number of initialized memory records is defined by LVVE_NR_MEMORY_REGIONS.

+This function is used for two purposes and is called in two different ways:

+

+@li Memory Allocation: When the LVVE_GetMemoryTable functions are called with a NULL instance handle (hInstance = LVM_NULL)

+    the function returns the memory requirements. The base address pointers in the memory table are set to NULL.

+    All elements of the instance parameters structure (pointed to by pInstParams) must contain valid values as the memory

+    requirements are affected by these settings.

+

+@li Memory Free: When called with a non-NULL instance handle (hInstance = a valid instance handle)

+      the function returns the memory table used when the instance was created.

+      The base address pointers returned will be those supplied by the calling application when the memory

+      was allocated and can now be used for freeing memory. The instance parameters (pointed to by pInstParams)

+      are ignored and the pInstParams parameter may be set to NULL.

+@li In case of memory allocation, all elements of the parameter initialization structure defined by pInstParams

+    must contain valid values as the memory requirements are affected by these settings.

+    In some releases of the bundle library one or more memory regions may have a zero size.

+

+@pre The number of memory records in the array defined by pMemoryTable is equal to @ref LVM_NR_MEMORY_REGIONS.

+@pre Exactly @ref LVM_NR_MEMORY_REGIONS memory records of pMemoryTable are initialized.

+

+@post When this function is called with hInstance = NULL the memory base address pointers

+will be NULL on return.

+@post When the function is called for freeing memory, hInstance = Instance Handle the

+memory table returns the allocated memory and base addresses used during

+initialisation.

+

+@return  LVVE_SUCCESS           when the function call succeeds and the memory table is filled correctly

+@return  LVVE_NULLADDRESS       when pMemoryTable was NULL

+@return  LVVE_NULLADDRESS       when pInstParams was NULL and the call was for memory allocation

+                                is NULL.

+@return  LVVE_OUTOFRANGE        when pInstParams contains parameters out of the excepted range

+

+@note  This function may be interrupted by the LVVE_Rx_Process function.

+

+@ingroup LVVE_Rx

+

+LVVE_Rx_GetMemoryTable: Memory Allocation Example:

+

+The following example shows how to get the memory requirements for the LVVE_Rx instance.

+

+\code

+    InstParams_Rx.SampleRate    = LVM_FS_8000;

+    // Include the other instance params here

+

+    LVVE_Status = LVVE_Rx_GetMemoryTable ( LVM_NULL,

+                                           &MemTab_Rx,

+                                           &InstParams_Rx );

+

+    if( LVVE_Status != LVVE_SUCCESS )

+    {

+        // Handle Errors

+    }

+

+    for( c1 = 0; c1 < LVVE_NR_MEMORY_REGIONS; c1++ )

+    {

+        if( MemTab_Rx.Region[c1].Size != 0 )

+        {

+            MemTab_Rx.Region[c1].pBaseAddress =

+                malloc(MemTab_Rx.Region[c1].Size);

+        }

+    }

+\endcode

+

+LVVE_Rx_GetMemoryTable: Freeing Memory Example:

+

+The following example shows how to free the memory from the LVVE_Rx instance.

+

+\code

+    LVVE_Status = LVVE_Rx_GetMemoryTable( hInstance,

+                                              &MemTab_Rx,

+                                              LVM_NULL);

+

+        if (LVVE_Status != LVVE_SUCCESS)

+        {

+            // Handle errors

+        }

+

+        for( c1 = 0; c1 < LVVE_NR_MEMORY_REGIONS; c1++)

+        {

+            if (MemTab_Rx.Region[c1].Size != 0)

+            {

+                free(MemTab_Rx.Region[c1].pBaseAddress);

+            }

+        }

+\endcode

+*/

+

+LVVE_ReturnStatus_en LVVE_Rx_GetMemoryTable(LVVE_Rx_Handle_t               hInstance,

+                                            LVM_MemoryTable_st             *pMemoryTable,

+                                            LVVE_Rx_InstanceParams_st      *pInstanceParams);

+

+

+/**

+@brief Created handle to the instance of the LVVE_Tx module

+

+This function is used to create the LVVE_Tx instance. All control parameters are set to invalid values.

+The memory table pointed to by pMemoryTable must be created. If the memory table is not correct then an error will be returned.

+The memory requirements of the Rx and Tx unit are dependent on the instance parameters supplied and so the

+instance parameters provided in this function call must be the same as those used in the @ref LVVE_Tx_GetMemoryTable function calls

+used for memory allocation.

+

+@pre The memory records tables defined by pMemoryTable contains pointers to non-overlapping buffers

+with the size as requested via the prior calls to the LVVE_Tx_GetMemoryTable functions.

+@pre The initialization parameter structure defined by pInstParams is identical to the structure passed

+to prior call to @ref LVVE_Tx_GetMemoryTable functions.

+

+

+@param  phInstance              Pointer to the instance handle.

+@param  pMemoryTable            Pointer to the memory definition table.

+@param  pInstanceParams         Pointer to the instance parameters.

+

+@return  LVVE_SUCCESS           when creation was successful

+@return  LVVE_NULLADDRESS       When phInstance or pMemoryTable or pInstanceParams is NULL.

+@return  LVVE_NULLADDRESS       when one or more of the memory regions with a non-zero size has been

+                                given a NULL base address pointer.

+@return LVVE_OUTOFRANGE         when pInstParams contains parameters out of the excepted range

+

+@ingroup LVVE_Tx

+

+ LVVE_Tx_GetInstanceHandle Example:

+

+The following example shows how to initialize LVVE_Tx_GetInstanceHandle.

+

+\code

+    hInstance_Tx = LVM_NULL;

+    LVVE_Status = LVVE_Tx_GetInstanceHandle( &hInstance_Tx,

+                                             &MemTab_Tx,

+                                             &InstParams_Tx );

+    if( LVVE_Status != LVVE_SUCCESS )

+    {

+         // Handle Errors

+    }

+\endcode

+

+*/

+

+LVVE_ReturnStatus_en LVVE_Tx_GetInstanceHandle(LVVE_Tx_Handle_t                *phInstance,

+                                               LVM_MemoryTable_st              *pMemoryTable,

+                                               LVVE_Tx_InstanceParams_st       *pInstanceParams);

+

+/**

+@brief Created handle to the instance of the LVVE_Rx module

+

+This functions is used to create LVVE_Rx instance. All control parameters are set to invalid values.

+The memory table pointed to by pMemoryTable must be created. If the memory table is not correct then an error will be returned.

+The memory requirements of the Rx and Rx unit are dependent on the instance parameters supplied and so the

+instance parameters provided in this function call must be the same as those used in the @ref LVVE_Rx_GetMemoryTable function calls

+used for memory allocation.

+

+@pre The memory records tables defined by pMemoryTable contains pointers to non-overlapping buffers

+with the size as requested via the prior calls to the LVVE_Rx_GetMemoryTable functions.

+@pre The initialization parameter structure defined by pInstParams is identical to the structure passed

+to prior call to @ref LVVE_Rx_GetMemoryTable functions.

+

+

+@param  phInstance              Pointer to the instance handle.

+@param  pMemoryTable            Pointer to the memory definition table.

+@param  pInstanceParams         Pointer to the instance parameters.

+

+@return  LVVE_SUCCESS           when creation was successful

+@return  LVVE_NULLADDRESS       When phInstance or pMemoryTable or pInstanceParams is NULL.

+@return  LVVE_NULLADDRESS       when one or more of the memory regions with a non-zero size has been

+                                given a NULL base address pointer.

+@return LVVE_OUTOFRANGE         when pInstParams contains parameters out of the excepted range

+

+@ingroup LVVE_Rx

+

+ LVVE_Rx_GetInstanceHandle Example:

+

+The following example shows how to initialize LVVE_Rx_GetInstanceHandle.

+

+\code

+    hInstance_Rx = LVM_NULL;

+    LVVE_Status = LVVE_Rx_GetInstanceHandle( &hInstance_Rx,

+                                             &MemTab_Rx,

+                                             &InstParams_Rx );

+    if( LVVE_Status != LVVE_SUCCESS )

+    {

+         // Handle Errors

+    }

+\endcode

+

+*/

+

+LVVE_ReturnStatus_en LVVE_Rx_GetInstanceHandle(LVVE_Rx_Handle_t                *phInstance,

+                                               LVM_MemoryTable_st              *pMemoryTable,

+                                               LVVE_Rx_InstanceParams_st       *pInstanceParams);

+

+/**

+@brief Retrieve the current LVVE_Tx control parameters.

+

+This function copies the control parameters from the LVVE_Tx into the supplied

+parameter structure, pControlParams. The values returned are the values given in the last successful

+call to the LVVE_Tx_SetControlParameters function.

+

+@param hInstance              Instance handle

+@param pControlParams         Pointer to the control parameters

+

+@pre   hInstance should be valid handle.

+@pre   pControlParams should be allocated by caller.

+@post  pControlParams will be filled with the values given in the last successful call to

+       the LVVE_Tx_SetControlParameters function. They are not necessarily the values

+       used in the last call to the LVVE_Tx_Process function, this will be the case if

+       LVVE_Tx_SetControlParameters has been called since the last call to LVVE_Tx_Process.

+

+@return LVVE_SUCCESS          Succeeded

+@return LVVE_NULLADDRESS      When hInstance or pControlParams is NULL

+

+@note The LVVE_Tx_GetControlParameters function can be called at any time during processing.

+

+@ingroup LVVE_Tx

+

+LVVE_Tx_GetControlParameters Example:

+

+The following example shows how to get different control parameters for the LVVE_Tx instance.

+

+\code

+    LVVE_Status = LVVE_Tx_GetControlParameters( &hInstance_Tx,

+                                                &ControlParams_Tx );

+

+    if( LVVE_Status != LVVE_SUCCESS )

+    {

+         // Handle Errors

+    }

+\endcode

+

+*/

+

+LVVE_ReturnStatus_en LVVE_Tx_GetControlParameters(   LVVE_Tx_Handle_t           hInstance,

+                                                     LVVE_Tx_ControlParams_st   *pControlParams);

+

+/**

+@brief Retrieve the current LVVE_Rx control parameters.

+

+This function copies the control parameters from the LVVE_Tx into the supplied

+parameter structure, pControlParams. The values returned are the values given in the last successful

+call to the LVVE_Rx_SetControlParameters function.

+

+@param hInstance              Instance handle

+@param pControlParams         Pointer to the control parameters

+

+@pre   hInstance should be valid handle.

+@pre   pControlParams should be allocated by caller.

+@post  pControlParams will be filled with the values given in the last successful call to

+       the LVVE_Rx_SetControlParameters function. They are not necessarily the values

+       used in the last call to the LVVE_Rx_Process function, this will be the case if

+       LVVE_Tx_SetControlParameters has been called since the last call to LVVE_Tx_Process.

+

+@return LVVE_SUCCESS          Succeeded

+@return LVVE_NULLADDRESS      When hInstance or pControlParams is NULL

+

+@note The LVVE_Rx_GetControlParameters function can be called at any time during processing.

+

+@ingroup LVVE_Rx

+

+LVVE_Rx_GetControlParameters Example:

+

+The following example shows how to get different control parameters for the LVVE_Rx instance.

+

+\code

+    LVVE_Status = LVVE_Rx_GetControlParameters( &hInstance_Rx,

+                                                &ControlParams_Rx );

+

+    if( LVVE_Status != LVVE_SUCCESS )

+    {

+         // Handle Errors

+    }

+\endcode

+

+*/

+

+LVVE_ReturnStatus_en LVVE_Rx_GetControlParameters(   LVVE_Rx_Handle_t           hInstance,

+                                                     LVVE_Rx_ControlParams_st   *pControlParams);

+

+/**

+@brief Sets or changes the LVVE_Tx module parameters using C-strcuture.

+

+This function takes the new set of parameters and makes a local copy within

+LVVE_Tx but the parameters are only applied on the next call of the LVVE_Tx_Process

+function. When a parameter is unchanged no action is taken. This function can

+be called at any time during the processing, even when the LVVE_Tx_Process function

+is running. LifeVibes&trade; VoiceExperience control parameters can be set using two methods.

+Control Parameters can be populated in a \"C\" style structure (as explained in example) and then sent to the library.

+Another method is to populate control parameters in a byte array called Preset Buffer, see @ref LVVE_Tx_SetPreset for example usage.

+

+@param hInstance               Instance Handle

+@param pNewParams              Pointer to a parameter structure

+

+@pre hInstance should be valid handle.

+

+@return LVVE_SUCCESS          Succeeded

+@return LVVE_NULLADDRESS      When hInstance or pNewParams is NULL

+@return LVVE_OUTOFRANGE       When pNewParams contains parameters of activated modules that are out of the excepted range

+@return LVVE_INVALID_ALGORITHM_CONFIGURATION  When two mutual exclusive algorithms are both configured ON at run-time

+                                               (e.g., NoiseVoid and HandsFree)

+

+

+@note This function may be interrupted by the LVVE_Tx_Process function

+

+@ingroup LVVE_Tx

+

+LVVE_Tx_GetControlParameters: Setting Control Parameters using C-Style structure Example:

+

+The following example shows how to set different control parameters for the LVVE_Tx instance.

+

+\code

+    LVVE_Status = LVVE_Tx_GetControlParameters( &hInstance_Tx,

+                                                &ControlParams_Tx );

+

+    if( LVVE_Status != LVVE_SUCCESS )

+    {

+        // Handle Errors

+    }

+

+     Change Parameters as required

+    ControlParams_Tx.VOL_Gain         = VOL_TABLE[i];

+    ControlParams_Tx.VC_ControlParams = VC_TABLE[i];

+

+    // Update instance with new parameters

+    LVVE_Status = LVVE_Tx_SetControlParameters( &hInstance_Tx,

+                                                &ControlParams_Tx );

+

+    if( LVVE_Status != LVVE_SUCCESS )

+    {

+        // Handle Errors

+    }

+\endcode

+

+*/

+

+LVVE_ReturnStatus_en LVVE_Tx_SetControlParameters(   LVVE_Tx_Handle_t           hInstance,

+                                        const LVVE_Tx_ControlParams_st * const pNewParams);

+

+/**

+@brief Sets or changes the LVVE_Rx module parameters using C-structure.

+

+This function takes the new set of parameters and makes a local copy within

+LVVE_Rx but the parameters are only applied on the next call of the LVVE_Rx_Process

+function. When a parameter is unchanged no action is taken. This function can

+be called at any time during the processing, even when the LVVE_Rx_Process function

+is running. LifeVibes&trade; VoiceExperience control parameters can be set using two methods.

+Control Parameters can be populated in a \"C\" style structure (as explained in example) and then sent to the library.

+Another method is to populate control parameters in a byte array called Preset Buffer, see @ref LVVE_Rx_SetPreset for example usage.

+

+@param hInstance               Instance Handle

+@param pNewParams              Pointer to a parameter structure

+

+@pre hInstance should be valid handle.

+

+@return LVVE_SUCCESS          Succeeded

+@return LVVE_NULLADDRESS      When hInstance or pNewParams is NULL

+@return LVVE_OUTOFRANGE       When pNewParams contains parameters of activated modules that are out of the excepted range

+@return LVVE_INVALID_ALGORITHM_CONFIGURATION  When two mutual exclusive algorithms are both configured ON at run-time

+                                               (e.g., NoiseVoid and HandsFree)

+

+

+@note This function may be interrupted by the LVVE_Rx_Process function

+

+@ingroup LVVE_Rx

+

+LVVE_Rx_GetControlParameters: Setting Control Parameters using C-Style structure Example:

+

+The following example shows how to set different control parameters for the LVVE_Rx instance.

+

+\code

+    LVVE_Status = LVVE_Rx_GetControlParameters( &hInstance_Rx,

+                                                &ControlParams_Rx );

+

+    if( LVVE_Status != LVVE_SUCCESS )

+    {

+        // Handle Errors

+    }

+

+     Change Parameters as required

+    ControlParams_Rx.VOL_Gain         = VOL_TABLE[i];

+    ControlParams_Rx.VC_ControlParams = VC_TABLE[i];

+

+    // Update instance with new parameters

+    LVVE_Status = LVVE_Rx_SetControlParameters( &hInstance_Rx,

+                                                &ControlParams_Rx );

+

+    if( LVVE_Status != LVVE_SUCCESS )

+    {

+        // Handle Errors

+    }

+\endcode

+

+*/

+LVVE_ReturnStatus_en LVVE_Rx_SetControlParameters(   LVVE_Rx_Handle_t           hInstance,

+                                        const LVVE_Rx_ControlParams_st * const pNewParams);

+

+/**

+@brief Retrieve the current LVVE_Tx status parameters.

+

+This function copies internal status variables into the supplied status

+parameter structures.

+

+@param hInstance      Instance handle

+@param pStatusParams  Pointer to the status parameters

+

+@pre   hInstance should be valid handle.

+@pre   pStatusParams should be allocated by caller.

+@post  pStatusParams will be filled with the latest status values of LVVE_Tx.

+

+@return LVVE_SUCCESS          Succeeded

+@return LVVE_NULLADDRESS      When hInstance or pStatusParams is NULL

+

+@note The LVVE_Tx_GetStatusParameters function can be called at any time during processing.

+This function can run in different threads than the process functions.

+

+

+@ingroup LVVE_Tx

+

+LVVE_Tx_GetStatusParameters: Get Internal Algorithm Status Attributes Example:

+The following example shows how to use LVVE_Tx_GetStatusParameters function call.

+

+\code

+    LVVE_Tx_StatusParams_st  Tx_Monitor;

+    Status=LVVE_Tx_GetStatusParameters(hInstance_Tx,&Tx_Monitor);

+    if (Status != LVVE_SUCCESS )

+    {

+       // Error Handling

+    }

+\endcode

+

+*/

+

+LVVE_ReturnStatus_en LVVE_Tx_GetStatusParameters(    LVVE_Tx_Handle_t           hInstance,

+                                                     LVVE_Tx_StatusParams_st    *pStatusParams);

+

+/**

+@brief Retrieve the current LVVE_Rx status parameters.

+

+This function copies internal status variables into the supplied status

+parameter structures.

+

+@param hInstance      Instance handle

+@param pStatusParams  Pointer to the status parameters

+

+@pre   hInstance should be valid handle.

+@pre   pStatusParams should be allocated by caller.

+@post  pStatusParams will be filled with the latest status values of LVVE_Rx.

+

+@return LVVE_SUCCESS          Succeeded

+@return LVVE_NULLADDRESS      When hInstance or pStatusParams is NULL

+

+@note The LVVE_Rx_GetStatusParameters function can be called at any time during processing.

+This function can run in different threads than the process functions.

+

+@ingroup LVVE_Rx

+

+LVVE_Rx_GetStatusParameters: Get Internal Algorithm Status Attributes Example:

+The following example shows how to use LVVE_Rx_GetStatusParameters function call.

+

+\code

+    LVVE_Rx_StatusParams_st  Rx_Monitor;

+    Status=LVVE_Rx_GetStatusParameters(hInstance_Rx,&Rx_Monitor);

+    if (Status != LVVE_SUCCESS )

+    {

+       // Error Handling

+    }

+\endcode

+

+*/

+

+LVVE_ReturnStatus_en LVVE_Rx_GetStatusParameters(    LVVE_Rx_Handle_t           hInstance,

+                                                     LVVE_Rx_StatusParams_st    *pStatusParams);

+

+/**

+@brief Resets the LVVE_Tx module.

+

+The LVVE_Tx module instance memory contains data which depend on the input

+samples that have been processed previously.  These data are buffers

+used for filter tabs and delay lines and also adaptive coefficients of the

+algorithm.  The LVVE_Tx_ResetInstance function resets this input dependent data.

+

+The LVVE_Tx_ResetInstance function should be called whenever there is a

+discontinuity in the input audio stream.  A discontinuity means that the

+current block of samples is not contiguous with the previous block of samples.

+Examples are

+@li Calling the LVVE_Tx_Process function after a period of inactivity

+@li Buffer underrun or overflow in the audio driver

+The LVVE_ResetInstance function of the Tx and/or Tx Unit should only be called when absolutely necessary as re-adaptation

+of internal algorithms will occur.

+The LVVE_ResetInstance functions can be called at any time, even when LVVE_Process is running. The reset will be

+applied at the start of the next call of the LVVE_Tx_Process function.

+

+

+@param hInstance               Instance Handle

+@param pResetParams            Reset Type

+

+@pre hInstance should be valid handle.

+

+@post Depending on the ResetType value, the LVVE_Tx_ResetInstance function can

+perform:

+@li Soft reset: partial reset of internal buffers and adaptive behavior. To be used for very short

+interruption or discontinuity, e.g., buffer under-run or overflow in the audio driver influencing the echo path delay.

+@li Hard reset: full reset of all internal buffers and adaptive behavior. To be used for long

+interruption or discontinuity, e.g., before calling the LVVE_Tx_Process function after a long period of inactivity

+in between calls in case instance was not freed.

+

+@return LVVE_SUCCESS          Succeeded

+@return LVVE_NULLADDRESS      When hInstance or pResetParams is NULL

+@return LVVE_OUTOFRANGE       When content of pResetParams is invalid

+

+@note This function may be interrupted by the LVVE_Tx_Process function

+

+@ingroup LVVE_Tx

+

+LVVE_Tx_ResetInstance Example:

+

+The following example shows how to use LVVE_Tx_ResetInstance.

+\code

+    LVVE_Status = LVVE_Tx_ResetInstance(hInstance, pResetParams);

+

+    if (LVVE_Status != LVVE_SUCCESS)

+    {

+        // Handle LVVE_Tx_ResetInstance errors

+    }

+\endcode

+

+*/

+LVVE_ReturnStatus_en LVVE_Tx_ResetInstance(  LVVE_Tx_Handle_t        hInstance,

+                                             LVVE_Tx_ResetParams_st *pResetParams  );

+

+/**

+@brief Resets the LVVE_Rx module.

+

+The LVVE_Rx module instance memory contains data which depend on the input

+samples that have been processed previously.  These data are buffers

+used for filter tabs and delay lines and also adaptive coefficients of the

+algorithm.  The LVVE_Rx_ResetInstance function resets this input dependent data.

+

+The LVVE_Rx_ResetInstance function should be called whenever there is a

+discontinuity in the input audio stream.  A discontinuity means that the

+current block of samples is not contiguous with the previous block of samples.

+Examples are

+@li Calling the LVVE_Rx_Process function after a period of inactivity

+@li Buffer underrun or overflow in the audio driver

+The LVVE_ResetInstance function of the Rx and/or Tx Unit should only be called when absolutely necessary as re-adaptation

+of internal algorithms will occur.

+The LVVE_ResetInstance functions can be called at any time, even when LVVE_Process is running. The reset will be

+applied at the start of the next call of the LVVE_Rx_Process function.

+

+

+@param hInstance               Instance Handle

+@param pResetParams            Reset Type

+

+@pre hInstance should be valid handle.

+

+@post Depending on the ResetType value, the LVVE_Rx_ResetInstance function can

+perform:

+@li Soft reset: partial reset of internal buffers and adaptive behavior. To be used for very short

+interruption or discontinuity, e.g., buffer under-run or overflow in the audio driver influencing the echo path delay.

+@li Hard reset: full reset of all internal buffers and adaptive behavior. To be used for long

+interruption or discontinuity, e.g., before calling the LVVE_Rx_Process function after a long period of inactivity

+in between calls in case instance was not freed.

+

+@return LVVE_SUCCESS          Succeeded

+@return LVVE_NULLADDRESS      When hInstance or pResetParams is NULL

+@return LVVE_OUTOFRANGE       When content of pResetParams is invalid

+

+@note This function may be interrupted by the LVVE_Rx_Process function

+

+@ingroup LVVE_Rx

+

+LVVE_Rx_ResetInstance Example:

+

+The following example shows how to use LVVE_Rx_ResetInstance.

+\code

+    LVVE_Status = LVVE_Rx_ResetInstance(hInstance, pResetParams);

+

+    if (LVVE_Status != LVVE_SUCCESS)

+    {

+        // Handle LVVE_Rx_ResetInstance errors

+    }

+\endcode

+

+*/

+LVVE_ReturnStatus_en LVVE_Rx_ResetInstance(  LVVE_Rx_Handle_t        hInstance,

+                                             LVVE_Rx_ResetParams_st *pResetParams  );

+

+/**

+@brief Processes a block of samples by the LVVE_Tx module.

+

+This function processes the block of samples as configured with the current

+parameter settings. If new parameters have been given since the last call to

+LVVE_Tx_Process then these will be applied at the beginning of this process call.

+

+@param hInstance      Instance Handle

+@param pInDataMic0    Pointer to the input speech sample buffer (pimary microphone).

+@param pInDataMic1    Pointer to the input speech sample buffer (secondary microphone).

+@param pRefData       Pointer to the input farend reference buffer.

+@param pNoiseData     Pointer to the output noise reference buffer.

+@param pOutData       Pointer to the output sample buffer.

+@param NumSamples     The number of samples to process should be integer multiple(n) of values in table.

+                      It is a frquency dependant paramter.

+<table border>

+   <tr>

+       <td><b>Unit</b></td>

+       <td><b>Q format</b></td>

+       <td><b>Data Range</b></td>

+       <td><b>Default Values</b></td>

+   </tr>

+   <tr>

+       <td><b>Samples</b></td>

+       <td><b>Q16.0</b></td>

+       <td>nx80 for 8kHz</td>

+       <td>80 for 8kHz</td>

+   </tr>

+   <tr>

+       <td></td>

+       <td></td>

+       <td>nx160 for 16kHz</td>

+       <td>160 for 16kHz</td>

+   </tr>

+   <tr>

+       <td></td>

+       <td></td>

+       <td>nx240 for 24kHz</td>

+       <td>240 for 24kHz</td>

+   </tr>

+   <tr>

+       <td></td>

+       <td></td>

+       <td>nx320 for 32kHz</td>

+       <td>320 for 32kHz</td>

+   </tr>

+   <tr>

+       <td></td>

+       <td></td>

+       <td>nx480 for 48kHz</td>

+       <td>480 for 48kHz</td>

+   </tr>

+</table>

+

+@pre hInstance should be valid handle.

+@pre LVVE_Tx_SetControlParameters should be called successfully once before.

+the first call to LVVE_Tx_Process

+@pre pInData is filled with the input samples to process.

+

+@post pOutData contains the processed samples.

+

+@return LVVE_SUCCESS          Succeeded

+@return LVVE_NULLADDRESS      When hInstance, pInData or pOutData is NULL

+@return LVVE_INVALIDNUMSAMPLES When the NumSamples is outside the allowed

+range

+@return LVVE_INVALID_STATE_CONFIGURATION When invalid state of the algorithm found

+

+@ingroup LVVE_Tx

+

+LVVE_Tx_Process Example:

+

+The following example shows how to use LVVE_Tx_Process function call

+

+\code

+    // Tx Processing

+    LVVE_STATUS = LVVE_Tx_Process( hInstance_Tx,

+                                   pInData_Tx0,

+                                   pInData_Tx1,

+                                   pInData_Ref,

+                                   pNoiseData,

+                                   pOutData_Tx,

+                                   NumSamples );

+    if (LVVE_STATUS != LVVE_SUCCESS )

+    {

+       // Error Handling

+    }

+\endcode

+

+*/

+LVVE_ReturnStatus_en LVVE_Tx_Process(   LVVE_Tx_Handle_t    hInstance,

+                                        const LVM_INT16     *pInDataMic0,

+                                        const LVM_INT16     *pInDataMic1,

+                                        const LVM_INT16     *pRefData,

+                                        LVM_INT16           *pNoiseData,

+                                        LVM_INT16           *pOutData,

+                                        const LVM_UINT16    NumSamples);

+

+/**

+@brief Processes a block of samples by the LVVE_Rx module.

+

+This function processes the block of samples as configured with the current

+parameter settings. If new parameters have been given since the last call to

+LVVE_Rx_Process then these will be applied at the beginning of this process call.

+

+@param hInstance      Instance Handle

+@param pInData        Pointer to the input sample buffer

+@param pNoiseData     Pointer to the input noise buffer (for LVVC only). Pointer to the input noise reference buffer.

+                      The size of this buffer depends on the number of samples to process: NoiseDataBufferSize = 2 (size of the input buffer in ms) / 10ms

+                        i.e. for 20 ms input buffer, the NoiseData buffer size should be 4.

+

+@param pOutData       Pointer to the output sample buffer

+@param NumSamples     The number of samples to process should be integer multiple(n) of values in table.

+                      It is a frquency dependant paramter.

+<table border>

+   <tr>

+       <td><b>Unit</b></td>

+       <td><b>Q format</b></td>

+       <td><b>Data Range</b></td>

+       <td><b>Default Values</b></td>

+   </tr>

+   <tr>

+       <td><b>Samples</b></td>

+       <td><b>Q16.0</b></td>

+       <td>nx80 for 8kHz</td>

+       <td>80 for 8kHz</td>

+   </tr>

+   <tr>

+       <td></td>

+       <td></td>

+       <td>nx160 for 16kHz</td>

+       <td>160 for 16kHz</td>

+   </tr>

+   <tr>

+       <td></td>

+       <td></td>

+       <td>nx240 for 24kHz</td>

+       <td>240 for 24kHz</td>

+   </tr>

+   <tr>

+       <td></td>

+       <td></td>

+       <td>nx320 for 32kHz</td>

+       <td>320 for 32kHz</td>

+   </tr>

+   <tr>

+       <td></td>

+       <td></td>

+       <td>nx480 for 48kHz</td>

+       <td>480 for 48kHz</td>

+   </tr>

+</table>

+

+@pre hInstance should be valid handle.

+@pre LVVE_Rx_SetControlParameters should be called successfully once before.

+the first call to LVVE_Rx_Process

+@pre pInData is filled with the input samples to process.

+

+@post pOutData contains the processed samples.

+

+@return LVVE_SUCCESS          Succeeded

+@return LVVE_NULLADDRESS      When hInstance, pInData or pOutData is NULL

+@return LVVE_INVALIDNUMSAMPLES When the NumSamples is outside the allowed

+range

+@return LVVE_INVALID_STATE_CONFIGURATION When invalid state of the algorithm found

+

+@ingroup LVVE_Rx

+

+LVVE_Rx_Process Example:

+The following example shows how to use LVVE_Rx_Process function call.

+

+\code

+    // Rx Processing

+    LVVE_STATUS = LVVE_Rx_Process( hInstance_Rx,

+                                   pInData_Rx,

+                                   pNoiseData,

+                                   pOutData_Rx,

+                                   NumSamples );

+

+    if (LVVE_STATUS != LVVE_SUCCESS )

+    {

+       // Error Handling

+    }

+\endcode

+

+*/

+

+LVVE_ReturnStatus_en LVVE_Rx_Process(   LVVE_Rx_Handle_t    hInstance,

+                                        const LVM_INT16     *pInData,

+                                        const LVM_INT16     *pNoiseData,

+                                        LVM_INT16           *pOutData,

+                                        const LVM_UINT16    NumSamples);

+

+

+/**

+\brief get the version number of current of LVVE library.

+

+This function returns, to host, current version of the LVVE library

+@param  pVersion                version info

+

+@return  LVVE_SUCCESS           Succeeded

+@return  LVVE_NULLADDRESS       When one of hInstance, pInData or pOutData is NULL

+

+LVVE_GetVersionInfot Example:

+

+\code

+    //Get the version information

+    LVVE_VersionInfo     VersionInfo;

+    LVVE_GetVersionInfo(&VersionInfo);

+\endcode

+

+*/

+LVVE_ReturnStatus_en LVVE_GetVersionInfo( LVVE_VersionInfo *pVersion );

+

+/**

+@brief Sets or changes the LVVE_Tx module parameters through a Preset Buffer.

+

+Sets or changes the LVVE_Tx module parameters through a Preset Buffer. To set parameters using \"C\" structure see

+@ref LVVE_Tx_SetControlParameters

+This function takes the new set of parameters and makes a local copy within the

+LVVE_Tx module but the parameters are only applied on the next call of the LVVE_Tx_Process

+function. When no parameters are changed, no action is taken. This function can

+be called at any time during the processing, even when the LVVE_Tx_Process function

+is running.

+The new parameters are supplied in the form a @ref LVVE_Tx_Preset_t (Byte array).

+The length of the byte array shall be a multiple of @ref LVVE_TX_PRESET_LENGTH.

+

+@param hInstance               Instance Handle

+@param pPreset                 Pointer to a Preset buffer

+@param PresetLength            Length in bytes of the Preset buffer

+@param VolumeIndex             Volume index to be selected from the Preset buffer

+

+@pre hInstance should be valid handle.

+

+@return @ref LVVE_SUCCESS          Succeeded

+@return @ref LVVE_NULLADDRESS      When hInstance or pPreset is NULL

+@return @ref LVVE_OUTOFRANGE       When PresetLength or any of the new parameters is out of range

+@return @ref LVVE_INVALID_ALGORITHM_CONFIGURATION When mutually exclusive algorithms are enabled in the parameters at the same time

+@return @ref LVVE_PRESET_INVALID_BUFFER_LENGTH When the length of the input buffer is smaller than LVVE_TX_PRESET_LENGTH

+@return @ref LVVE_PRESET_INVALID_VOLUME_INDEX When the volume index exceeds the buffer content

+@return @ref LVVE_PRESET_INVALID_BUFFER_VERSION When the version of the format of the preset buffer does not match the version of the library

+@return @ref LVVE_PRESET_INVALID_BASELINE_VERSION When the baseline version of the provided preset buffer and the baseline version of the library do not match. Is the preset generated for this library ?

+@return @ref LVVE_PRESET_INVALID_MASK When the algorithm mask of the provided preset buffer and the algorithm mask of the library do not match. Is the preset generated for this library ?

+@return @ref LVVE_PRESET_INVALID_SAMPLE_RATE When the sample rate @ref LVM_Fs_en of the preset does not match the sample rate of the hInstance

+@return @ref LVVE_PRESET_INVALID_LVWIREFORMAT_MESSAGEID  When the LVWireformat message id @ref LVVIDHeader_MessageID_en of the preset is not valid

+

+@note This function may be interrupted by the LVVE_Tx_Process function

+

+@ingroup LVVE_Tx

+LVVE_Tx_SetPreset: Setting Control Parameters using Preset Buffer Example:

+

+The following example shows how to set different control parameters for the LVVE_Tx instance using Preset Buffer.

+

+\code

+    LVM_CHAR LVVE_Tx_Preset_Buffer[LVVE_TX_PRESET_LENGTH];

+    LVVE_Tx_Preset_t const LVVE_Tx_Preset = LVVE_Tx_Preset_Buffer;

+

+    FILE *PRESETFILE_Tx;

+    LVM_INT32 ReadBytes = 0;

+

+    PRESETFILE_Tx=fopen(filename, "rb" );

+

+    // Read the preset buffer

+    ReadBytes = fread( LVVE_Tx_Preset_Buffer,

+                       sizeof(LVM_CHAR),

+                       (LVM_UINT32)LVVE_TX_PRESET_LENGTH,

+                       PRESETFILE_Tx );

+

+    fclose(PRESETFILE_Tx);

+

+     // Update instance with new preset buffer

+    LVVE_Status = LVVE_Tx_SetPreset( hInstance_Tx,

+                                     LVVE_Tx_Preset,

+                                     ReadBytes,

+                                     0);

+

+    if ( LVVE_Status != LVVE_SUCCESS )

+    {

+        // Handle Errors

+    }

+\endcode

+

+

+

+*/

+LVVE_ReturnStatus_en LVVE_Tx_SetPreset(LVVE_Tx_Handle_t hInstance,

+                                       const LVVE_Tx_Preset_t pPreset,

+                                       LVM_UINT32 PresetLength,

+                                       LVM_UINT16 VolumeIndex);

+

+/**

+@brief Sets or changes the LVVE_Rx module parameters through a Preset Buffer

+

+Sets or changes the LVVE_Rx module parameters through a Preset Buffer. To set parameters using \"C\" structure see

+@ref LVVE_Rx_SetControlParameters

+This function takes the new set of parameters and makes a local copy within the

+LVVE_Rx module but the parameters are only applied on the next call of the LVVE_Rx_Process

+function. When no parameters are changed, no action is taken. This function can

+be called at any time during the processing, even when the LVVE_Rx_Process function

+is running.

+The new parameters are supplied in the form a @ref LVVE_Rx_Preset_t (Byte array).

+The length of the byte array shall be a multiple of @ref LVVE_RX_PRESET_LENGTH.

+

+@param hInstance               Instance Handle

+@param pPreset                 Pointer to a Preset buffer

+@param PresetLength            Length in bytes of the Preset buffer

+@param VolumeIndex             Volume index to be selected from the Preset buffer

+

+@pre hInstance should be valid handle.

+

+@return @ref LVVE_SUCCESS          Succeeded

+@return @ref LVVE_NULLADDRESS      When hInstance or pPreset is NULL

+@return @ref LVVE_OUTOFRANGE       When PresetLength or any of the new parameters is out of range

+@return @ref LVVE_INVALID_ALGORITHM_CONFIGURATION When mutually exclusive algorithms are enabled in the parameters at the same time

+@return @ref LVVE_PRESET_INVALID_BUFFER_LENGTH When the length of the input buffer is smaller than LVVE_RX_PRESET_LENGTH

+@return @ref LVVE_PRESET_INVALID_VOLUME_INDEX When the volume index exceeds the buffer content

+@return @ref LVVE_PRESET_INVALID_BUFFER_VERSION When the version of the format of the preset buffer does not match the version of the library

+@return @ref LVVE_PRESET_INVALID_BASELINE_VERSION When the baseline version of the provided preset buffer and the baseline version of the library do not match. Is the preset generated for this library ?

+@return @ref LVVE_PRESET_INVALID_MASK When the algorithm mask of the provided preset buffer and the algorithm mask of the library do not match. Is the preset generated for this library ?

+@return @ref LVVE_PRESET_INVALID_SAMPLE_RATE When the sample rate @ref LVM_Fs_en of the preset does not match the sample rate of the hInstance

+@return @ref LVVE_PRESET_INVALID_LVWIREFORMAT_MESSAGEID  When the LVWireformat message id @ref LVVIDHeader_MessageID_en of the preset is not valid

+

+@note This function may be interrupted by the LVVE_Rx_Process function

+

+@ingroup LVVE_Rx

+

+LVVE_Rx_SetPreset: Setting Control Parameters using Preset Buffer Example:

+

+The following example shows how to set different control parameters for the LVVE_Rx instance using Preset Buffer.

+

+\code

+    #define NUM_VOLUMES (5)

+    LVM_CHAR LVVE_Rx_Preset_Buffer[NUM_VOLUMES*LVVE_RX_PRESET_LENGTH];

+    LVVE_Rx_Preset_t const LVVE_Rx_Preset = LVVE_Rx_Preset_Buffer;

+

+    FILE *PRESETFILE_Rx;

+    LVM_INT32 ReadBytes = 0;

+    LVM_UINT16 VolumeIndex = 3;

+

+    PRESETFILE_Rx=fopen(filename, "rb" );

+

+    // Read the preset buffer

+    ReadBytes = fread( LVVE_Rx_Preset_Buffer,

+                       sizeof(LVM_CHAR),

+                       (LVM_UINT32)(NUM_VOLUMES*LVVE_RX_PRESET_LENGTH),

+                       PRESETFILE_Rx );

+

+    fclose(PRESETFILE_Rx);

+

+     // Update instance with new preset buffer

+    LVVE_Status = LVVE_Rx_SetPreset( hInstance_Rx,

+                                     LVVE_Rx_Preset,

+                                     ReadBytes,

+                                     VolumeIndex);

+

+    if ( LVVE_Status != LVVE_SUCCESS )

+    {

+        // Handle Errors

+    }

+\endcode

+

+*/

+LVVE_ReturnStatus_en LVVE_Rx_SetPreset(LVVE_Rx_Handle_t hInstance,

+                                       const LVVE_Rx_Preset_t pPreset,

+                                       LVM_UINT32 PresetLength,

+                                       LVM_UINT16 VolumeIndex);

+

+

+#ifdef __cplusplus

+}

+#endif /* __cplusplus */

+

+#endif      /* __LVVE_H__ */

+

+/* End of file */

diff --git a/cp/ps/driver/src/chipsets/src/audio_base/nxp/uclinux/LVVE_VID.h b/cp/ps/driver/src/chipsets/src/audio_base/nxp/uclinux/LVVE_VID.h
new file mode 100755
index 0000000..79047a8
--- /dev/null
+++ b/cp/ps/driver/src/chipsets/src/audio_base/nxp/uclinux/LVVE_VID.h
@@ -0,0 +1,8413 @@
+/****************************************************************************************/

+/*  Copyright (c) 2004-2016 NXP Software. All rights are reserved.                      */

+/*  Reproduction in whole or in part is prohibited without the prior                    */

+/*  written consent of the copyright owner.                                             */

+/*                                                                                      */

+/*  This software and any compilation or derivative thereof is and                      */

+/*  shall remain the proprietary information of NXP Software and is                     */

+/*  highly confidential in nature. Any and all use hereof is restricted                 */

+/*  and is subject to the terms and conditions set forth in the                         */

+/*  software license agreement concluded with NXP Software.                             */

+/*                                                                                      */

+/*  Under no circumstances is this software or any derivative thereof                   */

+/*  to be combined with any Open Source Software in any way or                          */

+/*  licensed under any Open License Terms without the express prior                     */

+/*  written  permission of NXP Software.                                                */

+/*                                                                                      */

+/*  For the purpose of this clause, the term Open Source Software means                 */

+/*  any software that is licensed under Open License Terms. Open                        */

+/*  License Terms means terms in any license that require as a                          */

+/*  condition of use, modification and/or distribution of a work                        */

+/*                                                                                      */

+/*           1. the making available of source code or other materials                  */

+/*              preferred for modification, or                                          */

+/*                                                                                      */

+/*           2. the granting of permission for creating derivative                      */

+/*              works, or                                                               */

+/*                                                                                      */

+/*           3. the reproduction of certain notices or license terms                    */

+/*              in derivative works or accompanying documentation, or                   */

+/*                                                                                      */

+/*           4. the granting of a royalty-free license to any party                     */

+/*              under Intellectual Property Rights                                      */

+/*                                                                                      */

+/*  regarding the work and/or any work that contains, is combined with,                 */

+/*  requires or otherwise is based on the work.                                         */

+/*                                                                                      */

+/*  This software is provided for ease of recompilation only.                           */

+/*  Modification and reverse engineering of this software are strictly                  */

+/*  prohibited.                                                                         */

+/*                                                                                      */

+/****************************************************************************************/

+

+/****************************************************************************************/

+/*                                                                                      */

+/*     $Author: nxp65285 $*/

+/*     $Revision: 49390 $*/

+/*     $Date: 2013-10-16 18:34:35 +0530 (Wed, 16 Oct 2013) $*/

+/*                                                                                      */

+/****************************************************************************************/

+

+/** @file

+ *  Header file for the application layer interface of the REL_LVVE_HF_NV1_VC_AGC_RX_DRC_RX module

+ *

+ *  The suffix VID in header file stands for Voice Interface Definition

+ *  This files includes all definitions, types, and structures required by the calling

+ *  layer. Public functions are defined in the protoypes header files.

+ *  All other types, structures and functions are private.

+ */

+

+#ifndef __REL_LVVE_HF_NV1_VC_AGC_RX_DRC_RX_VIDPP_H__

+#define __REL_LVVE_HF_NV1_VC_AGC_RX_DRC_RX_VIDPP_H__

+

+#ifdef __cplusplus

+extern "C" {

+#endif /* __cplusplus */

+

+/****************************************************************************************/

+/*                                                                                      */

+/*  Includes                                                                            */

+/*                                                                                      */

+/****************************************************************************************/

+#include "LVC_Types.h"

+

+/****************************************************************************************/

+/*                                                                                      */

+/*  Definitions                                                                         */

+/*                                                                                      */

+/****************************************************************************************/

+/**

+<table border>

+    <tr>

+        <td><b>Name</b></td>

+        <td><b>Value</b></td>

+        <td><b>Description</b></td>

+    </tr>

+    <tr>

+        <td>@ref LVVIDHEADER_LVVE_RX_LVFENS_MASK1</td>

+        <td>1</td>

+        <td>Far End Noise Suppression is present in the LVVE_Rx</td>

+    </tr>

+    <tr>

+        <td>@ref LVVIDHEADER_LVVE_RX_HPF_MASK1</td>

+        <td>4</td>

+        <td>High Pass Filter is present in the LVVE_Rx</td>

+    </tr>

+    <tr>

+        <td>@ref LVVIDHEADER_LVVE_RX_LVNG_MASK1</td>

+        <td>16</td>

+        <td>Noise Gate is present in the LVVE_Rx</td>

+    </tr>

+    <tr>

+        <td>@ref LVVIDHEADER_LVVE_RX_EQ_MASK1</td>

+        <td>64</td>

+        <td>Equalizer is present in the LVVE_Rx</td>

+    </tr>

+    <tr>

+        <td>@ref LVVIDHEADER_LVVE_RX_AGC_MASK1</td>

+        <td>128</td>

+        <td>Automatic Gain Control is present in the LVVE_Rx</td>

+    </tr>

+    <tr>

+        <td>@ref LVVIDHEADER_LVVE_RX_DRC_MASK1</td>

+        <td>256</td>

+        <td>Dynamic Range Control is present in the LVVE_Rx</td>

+    </tr>

+    <tr>

+        <td>@ref LVVIDHEADER_LVVE_RX_VOL_MASK1</td>

+        <td>512</td>

+        <td>Volume Control is present in the LVVE_Rx</td>

+    </tr>

+    <tr>

+        <td>@ref LVVIDHEADER_LVVE_RX_LVVC_MASK1</td>

+        <td>1024</td>

+        <td>VoiceClarity is present in the LVVE_Rx</td>

+    </tr>

+</table> */

+typedef LVM_UINT16 LVVIDHeader_LVVE_Rx_Mask1_bm;

+/**

+* @def LVVIDHeader_LVVE_Rx_LVFENS_MASK1

+* Far End Noise Suppression is present in the LVVE_Rx

+* @see LVVIDHeader_LVVE_Rx_Mask1_bm

+*/

+#define LVVIDHEADER_LVVE_RX_LVFENS_MASK1 ((LVVIDHeader_LVVE_Rx_Mask1_bm)1)

+/**

+* @def LVVIDHeader_LVVE_Rx_HPF_MASK1

+* High Pass Filter is present in the LVVE_Rx

+* @see LVVIDHeader_LVVE_Rx_Mask1_bm

+*/

+#define LVVIDHEADER_LVVE_RX_HPF_MASK1 ((LVVIDHeader_LVVE_Rx_Mask1_bm)4)

+/**

+* @def LVVIDHeader_LVVE_Rx_LVNG_MASK1

+* Noise Gate is present in the LVVE_Rx

+* @see LVVIDHeader_LVVE_Rx_Mask1_bm

+*/

+#define LVVIDHEADER_LVVE_RX_LVNG_MASK1 ((LVVIDHeader_LVVE_Rx_Mask1_bm)16)

+/**

+* @def LVVIDHeader_LVVE_Rx_EQ_MASK1

+* Equalizer is present in the LVVE_Rx

+* @see LVVIDHeader_LVVE_Rx_Mask1_bm

+*/

+#define LVVIDHEADER_LVVE_RX_EQ_MASK1 ((LVVIDHeader_LVVE_Rx_Mask1_bm)64)

+/**

+* @def LVVIDHeader_LVVE_Rx_AGC_MASK1

+* Automatic Gain Control is present in the LVVE_Rx

+* @see LVVIDHeader_LVVE_Rx_Mask1_bm

+*/

+#define LVVIDHEADER_LVVE_RX_AGC_MASK1 ((LVVIDHeader_LVVE_Rx_Mask1_bm)128)

+/**

+* @def LVVIDHeader_LVVE_Rx_DRC_MASK1

+* Dynamic Range Control is present in the LVVE_Rx

+* @see LVVIDHeader_LVVE_Rx_Mask1_bm

+*/

+#define LVVIDHEADER_LVVE_RX_DRC_MASK1 ((LVVIDHeader_LVVE_Rx_Mask1_bm)256)

+/**

+* @def LVVIDHeader_LVVE_Rx_VOL_MASK1

+* Volume Control is present in the LVVE_Rx

+* @see LVVIDHeader_LVVE_Rx_Mask1_bm

+*/

+#define LVVIDHEADER_LVVE_RX_VOL_MASK1 ((LVVIDHeader_LVVE_Rx_Mask1_bm)512)

+/**

+* @def LVVIDHeader_LVVE_Rx_LVVC_MASK1

+* VoiceClarity is present in the LVVE_Rx

+* @see LVVIDHeader_LVVE_Rx_Mask1_bm

+*/

+#define LVVIDHEADER_LVVE_RX_LVVC_MASK1 ((LVVIDHeader_LVVE_Rx_Mask1_bm)1024)

+/**

+* @def LVVIDHEADER_LVVE_RX_MASK1_BM_MIN

+* Minimal value for LVVIDHeader_LVVE_Rx_Mask1_bm

+* @see LVVIDHeader_LVVE_Rx_Mask1_bm

+*/

+#define LVVIDHEADER_LVVE_RX_MASK1_BM_MIN ((LVVIDHeader_LVVE_Rx_Mask1_bm)0)

+/**

+* @def LVVIDHEADER_LVVE_RX_MASK1_BM_MAX

+* Maximal value for LVVIDHeader_LVVE_Rx_Mask1_bm

+* @see LVVIDHeader_LVVE_Rx_Mask1_bm

+*/

+#define LVVIDHEADER_LVVE_RX_LVFENS_MASK1_FORMAX ((LVVIDHeader_LVVE_Rx_Mask1_bm)1)

+#define LVVIDHEADER_LVVE_RX_HPF_MASK1_FORMAX ((LVVIDHeader_LVVE_Rx_Mask1_bm)4)

+#define LVVIDHEADER_LVVE_RX_LVNG_MASK1_FORMAX ((LVVIDHeader_LVVE_Rx_Mask1_bm)16)

+#define LVVIDHEADER_LVVE_RX_EQ_MASK1_FORMAX ((LVVIDHeader_LVVE_Rx_Mask1_bm)64)

+#define LVVIDHEADER_LVVE_RX_AGC_MASK1_FORMAX ((LVVIDHeader_LVVE_Rx_Mask1_bm)128)

+#define LVVIDHEADER_LVVE_RX_DRC_MASK1_FORMAX ((LVVIDHeader_LVVE_Rx_Mask1_bm)256)

+#define LVVIDHEADER_LVVE_RX_VOL_MASK1_FORMAX ((LVVIDHeader_LVVE_Rx_Mask1_bm)512)

+#define LVVIDHEADER_LVVE_RX_LVVC_MASK1_FORMAX ((LVVIDHeader_LVVE_Rx_Mask1_bm)1024)

+#define LVVIDHEADER_LVVE_RX_MASK1_BM_MAX (LVVIDHEADER_LVVE_RX_LVFENS_MASK1_FORMAX | LVVIDHEADER_LVVE_RX_HPF_MASK1_FORMAX | LVVIDHEADER_LVVE_RX_LVNG_MASK1_FORMAX | LVVIDHEADER_LVVE_RX_EQ_MASK1_FORMAX | LVVIDHEADER_LVVE_RX_AGC_MASK1_FORMAX | LVVIDHEADER_LVVE_RX_DRC_MASK1_FORMAX | LVVIDHEADER_LVVE_RX_VOL_MASK1_FORMAX | LVVIDHEADER_LVVE_RX_LVVC_MASK1_FORMAX | ((LVVIDHeader_LVVE_Rx_Mask1_bm)0))

+/**

+<table border>

+    <tr>

+        <td><b>Name</b></td>

+        <td><b>Value</b></td>

+        <td><b>Description</b></td>

+    </tr>

+</table> */

+typedef LVM_UINT16 LVVIDHeader_LVVE_Rx_Mask2_bm;

+/**

+* @def LVVIDHEADER_LVVE_RX_MASK2_BM_MIN

+* Minimal value for LVVIDHeader_LVVE_Rx_Mask2_bm

+* @see LVVIDHeader_LVVE_Rx_Mask2_bm

+*/

+#define LVVIDHEADER_LVVE_RX_MASK2_BM_MIN ((LVVIDHeader_LVVE_Rx_Mask2_bm)0)

+/**

+* @def LVVIDHEADER_LVVE_RX_MASK2_BM_MAX

+* Maximal value for LVVIDHeader_LVVE_Rx_Mask2_bm

+* @see LVVIDHeader_LVVE_Rx_Mask2_bm

+*/

+#define LVVIDHEADER_LVVE_RX_MASK2_BM_MAX (((LVVIDHeader_LVVE_Rx_Mask2_bm)0))

+/**

+<table border>

+    <tr>

+        <td><b>Name</b></td>

+        <td><b>Value</b></td>

+        <td><b>Description</b></td>

+    </tr>

+    <tr>

+        <td>@ref LVVIDHEADER_LVVE_TX_LVHF_MASK1</td>

+        <td>1</td>

+        <td>HandsFree is present in the LVVE_Tx</td>

+    </tr>

+    <tr>

+        <td>@ref LVVIDHEADER_LVVE_TX_EQ_MASK1</td>

+        <td>4</td>

+        <td>Equalizer is present in the LVVE_Tx</td>

+    </tr>

+    <tr>

+        <td>@ref LVVIDHEADER_LVVE_TX_DRC_MASK1</td>

+        <td>16</td>

+        <td>Dynamic Range Control is present in the LVVE_Tx</td>

+    </tr>

+    <tr>

+        <td>@ref LVVIDHEADER_LVVE_TX_VOL_MASK1</td>

+        <td>32</td>

+        <td>Volume Control is present in the LVVE_Tx</td>

+    </tr>

+    <tr>

+        <td>@ref LVVIDHEADER_LVVE_TX_HPF_MASK1</td>

+        <td>128</td>

+        <td>HPF is present in the LVVE_Tx</td>

+    </tr>

+    <tr>

+        <td>@ref LVVIDHEADER_LVVE_TX_LVNV_01_MASK1</td>

+        <td>512</td>

+        <td>NoiseVoid is present in the LVVE_Tx</td>

+    </tr>

+</table> */

+typedef LVM_UINT16 LVVIDHeader_LVVE_Tx_Mask1_bm;

+/**

+* @def LVVIDHeader_LVVE_Tx_LVHF_MASK1

+* HandsFree is present in the LVVE_Tx

+* @see LVVIDHeader_LVVE_Tx_Mask1_bm

+*/

+#define LVVIDHEADER_LVVE_TX_LVHF_MASK1 ((LVVIDHeader_LVVE_Tx_Mask1_bm)1)

+/**

+* @def LVVIDHeader_LVVE_Tx_EQ_MASK1

+* Equalizer is present in the LVVE_Tx

+* @see LVVIDHeader_LVVE_Tx_Mask1_bm

+*/

+#define LVVIDHEADER_LVVE_TX_EQ_MASK1 ((LVVIDHeader_LVVE_Tx_Mask1_bm)4)

+/**

+* @def LVVIDHeader_LVVE_Tx_DRC_MASK1

+* Dynamic Range Control is present in the LVVE_Tx

+* @see LVVIDHeader_LVVE_Tx_Mask1_bm

+*/

+#define LVVIDHEADER_LVVE_TX_DRC_MASK1 ((LVVIDHeader_LVVE_Tx_Mask1_bm)16)

+/**

+* @def LVVIDHeader_LVVE_Tx_VOL_MASK1

+* Volume Control is present in the LVVE_Tx

+* @see LVVIDHeader_LVVE_Tx_Mask1_bm

+*/

+#define LVVIDHEADER_LVVE_TX_VOL_MASK1 ((LVVIDHeader_LVVE_Tx_Mask1_bm)32)

+/**

+* @def LVVIDHeader_LVVE_Tx_HPF_MASK1

+* HPF is present in the LVVE_Tx

+* @see LVVIDHeader_LVVE_Tx_Mask1_bm

+*/

+#define LVVIDHEADER_LVVE_TX_HPF_MASK1 ((LVVIDHeader_LVVE_Tx_Mask1_bm)128)

+/**

+* @def LVVIDHeader_LVVE_Tx_LVNV_01_MASK1

+* NoiseVoid is present in the LVVE_Tx

+* @see LVVIDHeader_LVVE_Tx_Mask1_bm

+*/

+#define LVVIDHEADER_LVVE_TX_LVNV_01_MASK1 ((LVVIDHeader_LVVE_Tx_Mask1_bm)512)

+/**

+* @def LVVIDHEADER_LVVE_TX_MASK1_BM_MIN

+* Minimal value for LVVIDHeader_LVVE_Tx_Mask1_bm

+* @see LVVIDHeader_LVVE_Tx_Mask1_bm

+*/

+#define LVVIDHEADER_LVVE_TX_MASK1_BM_MIN ((LVVIDHeader_LVVE_Tx_Mask1_bm)0)

+/**

+* @def LVVIDHEADER_LVVE_TX_MASK1_BM_MAX

+* Maximal value for LVVIDHeader_LVVE_Tx_Mask1_bm

+* @see LVVIDHeader_LVVE_Tx_Mask1_bm

+*/

+#define LVVIDHEADER_LVVE_TX_LVHF_MASK1_FORMAX ((LVVIDHeader_LVVE_Tx_Mask1_bm)1)

+#define LVVIDHEADER_LVVE_TX_EQ_MASK1_FORMAX ((LVVIDHeader_LVVE_Tx_Mask1_bm)4)

+#define LVVIDHEADER_LVVE_TX_DRC_MASK1_FORMAX ((LVVIDHeader_LVVE_Tx_Mask1_bm)16)

+#define LVVIDHEADER_LVVE_TX_VOL_MASK1_FORMAX ((LVVIDHeader_LVVE_Tx_Mask1_bm)32)

+#define LVVIDHEADER_LVVE_TX_HPF_MASK1_FORMAX ((LVVIDHeader_LVVE_Tx_Mask1_bm)128)

+#define LVVIDHEADER_LVVE_TX_LVNV_01_MASK1_FORMAX ((LVVIDHeader_LVVE_Tx_Mask1_bm)512)

+#define LVVIDHEADER_LVVE_TX_MASK1_BM_MAX (LVVIDHEADER_LVVE_TX_LVHF_MASK1_FORMAX | LVVIDHEADER_LVVE_TX_EQ_MASK1_FORMAX | LVVIDHEADER_LVVE_TX_DRC_MASK1_FORMAX | LVVIDHEADER_LVVE_TX_VOL_MASK1_FORMAX | LVVIDHEADER_LVVE_TX_HPF_MASK1_FORMAX | LVVIDHEADER_LVVE_TX_LVNV_01_MASK1_FORMAX | ((LVVIDHeader_LVVE_Tx_Mask1_bm)0))

+/**

+<table border>

+    <tr>

+        <td><b>Name</b></td>

+        <td><b>Value</b></td>

+        <td><b>Description</b></td>

+    </tr>

+</table> */

+typedef LVM_UINT16 LVVIDHeader_LVVE_Tx_Mask2_bm;

+/**

+* @def LVVIDHEADER_LVVE_TX_MASK2_BM_MIN

+* Minimal value for LVVIDHeader_LVVE_Tx_Mask2_bm

+* @see LVVIDHeader_LVVE_Tx_Mask2_bm

+*/

+#define LVVIDHEADER_LVVE_TX_MASK2_BM_MIN ((LVVIDHeader_LVVE_Tx_Mask2_bm)0)

+/**

+* @def LVVIDHEADER_LVVE_TX_MASK2_BM_MAX

+* Maximal value for LVVIDHeader_LVVE_Tx_Mask2_bm

+* @see LVVIDHeader_LVVE_Tx_Mask2_bm

+*/

+#define LVVIDHEADER_LVVE_TX_MASK2_BM_MAX (((LVVIDHeader_LVVE_Tx_Mask2_bm)0))

+/**

+<table border>

+    <tr>

+        <td><b>Name</b></td>

+        <td><b>Value</b></td>

+        <td><b>Description</b></td>

+    </tr>

+    <tr>

+        <td>@ref LVVIDHEADER_CONFIGURATIONS_NARROWBAND_MASK1</td>

+        <td>1</td>

+        <td>NarrowBand configuration is present in the LVVE</td>

+    </tr>

+</table> */

+typedef LVM_UINT16 LVVIDHeader_Configurations_Mask1_bm;

+/**

+* @def LVVIDHEADER_CONFIGURATIONS_NARROWBAND_MASK1

+* NarrowBand configuration is present in the LVVE

+* @see LVVIDHeader_Configurations_Mask1_bm

+*/

+#define LVVIDHEADER_CONFIGURATIONS_NARROWBAND_MASK1 ((LVVIDHeader_Configurations_Mask1_bm)1)

+/**

+* @def LVVIDHEADER_CONFIGURATIONS_MASK1_BM_MIN

+* Minimal value for LVVIDHeader_Configurations_Mask1_bm

+* @see LVVIDHeader_Configurations_Mask1_bm

+*/

+#define LVVIDHEADER_CONFIGURATIONS_MASK1_BM_MIN ((LVVIDHeader_Configurations_Mask1_bm)0)

+/**

+* @def LVVIDHEADER_CONFIGURATIONS_MASK1_BM_MAX

+* Maximal value for LVVIDHeader_Configurations_Mask1_bm

+* @see LVVIDHeader_Configurations_Mask1_bm

+*/

+#define LVVIDHEADER_CONFIGURATIONS_NARROWBAND_MASK1_FORMAX ((LVVIDHeader_Configurations_Mask1_bm)1)

+#define LVVIDHEADER_CONFIGURATIONS_MASK1_BM_MAX (LVVIDHEADER_CONFIGURATIONS_NARROWBAND_MASK1_FORMAX | ((LVVIDHeader_Configurations_Mask1_bm)0))

+/**

+<table border>

+    <tr>

+        <td><b>Name</b></td>

+        <td><b>Value</b></td>

+        <td><b>Description</b></td>

+    </tr>

+</table> */

+typedef LVM_UINT16 LVVIDHeader_Configurations_Mask2_bm;

+/**

+* @def LVVIDHEADER_CONFIGURATIONS_MASK2_BM_MIN

+* Minimal value for LVVIDHeader_Configurations_Mask2_bm

+* @see LVVIDHeader_Configurations_Mask2_bm

+*/

+#define LVVIDHEADER_CONFIGURATIONS_MASK2_BM_MIN ((LVVIDHeader_Configurations_Mask2_bm)0)

+/**

+* @def LVVIDHEADER_CONFIGURATIONS_MASK2_BM_MAX

+* Maximal value for LVVIDHeader_Configurations_Mask2_bm

+* @see LVVIDHeader_Configurations_Mask2_bm

+*/

+#define LVVIDHEADER_CONFIGURATIONS_MASK2_BM_MAX (((LVVIDHeader_Configurations_Mask2_bm)0))

+/**

+<table border>

+    <tr>

+        <td><b>Name</b></td>

+        <td><b>Value</b></td>

+        <td><b>Description</b></td>

+    </tr>

+    <tr>

+        <td>@ref LVVC_MODE_AVL</td>

+        <td>2</td>

+        <td>Turns on or off the AGC. If off both AGC and Limiter are bypassed.</td>

+    </tr>

+    <tr>

+        <td>@ref LVVC_MODE_AVL_ADAPT</td>

+        <td>4</td>

+        <td>Allows turning off the dependency of the AGC upon the nearend noise level. When turned off, the AGC uses the default parameters.</td>

+    </tr>

+    <tr>

+        <td>@ref LVVC_MODE_AVL_SPDETECT</td>

+        <td>8</td>

+        <td>Allows disabling speech detection in the AGC. When turned off, the AGC adapts its gain all the time.</td>

+    </tr>

+    <tr>

+        <td>@ref LVVC_MODE_LIMITER</td>

+        <td>16</td>

+        <td>Turns on or off the limiter.</td>

+    </tr>

+    <tr>

+        <td>@ref LVVC_MODE_LPF</td>

+        <td>32</td>

+        <td>Turns on or off the low-pass filter.</td>

+    </tr>

+    <tr>

+        <td>@ref LVVC_MODE_HPF</td>

+        <td>64</td>

+        <td>Turns on or off the high-pass filter.</td>

+    </tr>

+    <tr>

+        <td>@ref LVVC_MODE_VC</td>

+        <td>128</td>

+        <td>Turns on or off the VoiceClarity gain.</td>

+    </tr>

+</table> */

+typedef LVM_UINT16 LVVC_ModeWord_bm;

+/**

+* @def LVVC_MODE_AVL

+* Turns on or off the AGC. If off both AGC and Limiter are bypassed.

+* @see LVVC_ModeWord_bm

+*/

+#define LVVC_MODE_AVL ((LVVC_ModeWord_bm)2)

+/**

+* @def LVVC_MODE_AVL_ADAPT

+* Allows turning off the dependency of the AGC upon the nearend noise level. When turned off, the AGC uses the default parameters.

+* @see LVVC_ModeWord_bm

+*/

+#define LVVC_MODE_AVL_ADAPT ((LVVC_ModeWord_bm)4)

+/**

+* @def LVVC_MODE_AVL_SPDETECT

+* Allows disabling speech detection in the AGC. When turned off, the AGC adapts its gain all the time.

+* @see LVVC_ModeWord_bm

+*/

+#define LVVC_MODE_AVL_SPDETECT ((LVVC_ModeWord_bm)8)

+/**

+* @def LVVC_MODE_LIMITER

+* Turns on or off the limiter.

+* @see LVVC_ModeWord_bm

+*/

+#define LVVC_MODE_LIMITER ((LVVC_ModeWord_bm)16)

+/**

+* @def LVVC_MODE_LPF

+* Turns on or off the low-pass filter.

+* @see LVVC_ModeWord_bm

+*/

+#define LVVC_MODE_LPF ((LVVC_ModeWord_bm)32)

+/**

+* @def LVVC_MODE_HPF

+* Turns on or off the high-pass filter.

+* @see LVVC_ModeWord_bm

+*/

+#define LVVC_MODE_HPF ((LVVC_ModeWord_bm)64)

+/**

+* @def LVVC_MODE_VC

+* Turns on or off the VoiceClarity gain.

+* @see LVVC_ModeWord_bm

+*/

+#define LVVC_MODE_VC ((LVVC_ModeWord_bm)128)

+/**

+* @def LVVC_MODEWORD_BM_MIN

+* Minimal value for LVVC_ModeWord_bm

+* @see LVVC_ModeWord_bm

+*/

+#define LVVC_MODEWORD_BM_MIN ((LVVC_ModeWord_bm)0)

+/**

+* @def LVVC_MODEWORD_BM_MAX

+* Maximal value for LVVC_ModeWord_bm

+* @see LVVC_ModeWord_bm

+*/

+#define LVVC_MODE_AVL_FORMAX ((LVVC_ModeWord_bm)2)

+#define LVVC_MODE_AVL_ADAPT_FORMAX ((LVVC_ModeWord_bm)4)

+#define LVVC_MODE_AVL_SPDETECT_FORMAX ((LVVC_ModeWord_bm)8)

+#define LVVC_MODE_LIMITER_FORMAX ((LVVC_ModeWord_bm)16)

+#define LVVC_MODE_LPF_FORMAX ((LVVC_ModeWord_bm)32)

+#define LVVC_MODE_HPF_FORMAX ((LVVC_ModeWord_bm)64)

+#define LVVC_MODE_VC_FORMAX ((LVVC_ModeWord_bm)128)

+#define LVVC_MODEWORD_BM_MAX (LVVC_MODE_AVL_FORMAX | LVVC_MODE_AVL_ADAPT_FORMAX | LVVC_MODE_AVL_SPDETECT_FORMAX | LVVC_MODE_LIMITER_FORMAX | LVVC_MODE_LPF_FORMAX | LVVC_MODE_HPF_FORMAX | LVVC_MODE_VC_FORMAX | ((LVVC_ModeWord_bm)0))

+/**

+<table border>

+    <tr>

+        <td><b>Name</b></td>

+        <td><b>Value</b></td>

+        <td><b>Description</b></td>

+    </tr>

+    <tr>

+        <td>@ref LVFENS_MODE_HS</td>

+        <td>1</td>

+        <td>Switch ON and OFF Horn Suppressor. Currently Horn Suppressor is not supported.</td>

+    </tr>

+</table> */

+typedef LVM_UINT16 LVFENS_ModeWord_bm;

+/**

+* @def LVFENS_MODE_HS

+* Switch ON and OFF Horn Suppressor. Currently Horn Suppressor is not supported.

+* @see LVFENS_ModeWord_bm

+*/

+#define LVFENS_MODE_HS ((LVFENS_ModeWord_bm)1)

+/**

+* @def LVFENS_MODEWORD_BM_MIN

+* Minimal value for LVFENS_ModeWord_bm

+* @see LVFENS_ModeWord_bm

+*/

+#define LVFENS_MODEWORD_BM_MIN ((LVFENS_ModeWord_bm)0)

+/**

+* @def LVFENS_MODEWORD_BM_MAX

+* Maximal value for LVFENS_ModeWord_bm

+* @see LVFENS_ModeWord_bm

+*/

+#define LVFENS_MODE_HS_FORMAX ((LVFENS_ModeWord_bm)1)

+#define LVFENS_MODEWORD_BM_MAX (LVFENS_MODE_HS_FORMAX | ((LVFENS_ModeWord_bm)0))

+/**

+<table border>

+    <tr>

+        <td><b>Name</b></td>

+        <td><b>Value</b></td>

+        <td><b>Description</b></td>

+    </tr>

+    <tr>

+        <td>@ref LVWM_MODE_AVL</td>

+        <td>1</td>

+        <td>Turns on or off the AVL. If off, both AGC and Limiter are bypassed</td>

+    </tr>

+    <tr>

+        <td>@ref LVWM_MODE_SPDETECT</td>

+        <td>2</td>

+        <td>Allows disabling speech detection in the AVL. When turned off, the AGC adapts its gain all the time.</td>

+    </tr>

+    <tr>

+        <td>@ref LVWM_MODE_LIMITER</td>

+        <td>4</td>

+        <td>Turns on or off the limiter.</td>

+    </tr>

+    <tr>

+        <td>@ref LVWM_MODE_EXT_SPDETECT</td>

+        <td>8</td>

+        <td>Used to tell the WhisperMode module if an external speech detection is available (If 0, there is no external speech detector).</td>

+    </tr>

+</table> */

+typedef LVM_UINT16 LVWM_ModeWord_bm;

+/**

+* @def LVWM_MODE_AVL

+* Turns on or off the AVL. If off, both AGC and Limiter are bypassed

+* @see LVWM_ModeWord_bm

+*/

+#define LVWM_MODE_AVL ((LVWM_ModeWord_bm)1)

+/**

+* @def LVWM_MODE_SPDETECT

+* Allows disabling speech detection in the AVL. When turned off, the AGC adapts its gain all the time.

+* @see LVWM_ModeWord_bm

+*/

+#define LVWM_MODE_SPDETECT ((LVWM_ModeWord_bm)2)

+/**

+* @def LVWM_MODE_LIMITER

+* Turns on or off the limiter.

+* @see LVWM_ModeWord_bm

+*/

+#define LVWM_MODE_LIMITER ((LVWM_ModeWord_bm)4)

+/**

+* @def LVWM_MODE_EXT_SPDETECT

+* Used to tell the WhisperMode module if an external speech detection is available (If 0, there is no external speech detector).

+* @see LVWM_ModeWord_bm

+*/

+#define LVWM_MODE_EXT_SPDETECT ((LVWM_ModeWord_bm)8)

+/**

+* @def LVWM_MODEWORD_BM_MIN

+* Minimal value for LVWM_ModeWord_bm

+* @see LVWM_ModeWord_bm

+*/

+#define LVWM_MODEWORD_BM_MIN ((LVWM_ModeWord_bm)0)

+/**

+* @def LVWM_MODEWORD_BM_MAX

+* Maximal value for LVWM_ModeWord_bm

+* @see LVWM_ModeWord_bm

+*/

+#define LVWM_MODE_AVL_FORMAX ((LVWM_ModeWord_bm)1)

+#define LVWM_MODE_SPDETECT_FORMAX ((LVWM_ModeWord_bm)2)

+#define LVWM_MODE_LIMITER_FORMAX ((LVWM_ModeWord_bm)4)

+#define LVWM_MODE_EXT_SPDETECT_FORMAX ((LVWM_ModeWord_bm)8)

+#define LVWM_MODEWORD_BM_MAX (LVWM_MODE_AVL_FORMAX | LVWM_MODE_SPDETECT_FORMAX | LVWM_MODE_LIMITER_FORMAX | LVWM_MODE_EXT_SPDETECT_FORMAX | ((LVWM_ModeWord_bm)0))

+/**

+<table border>

+    <tr>

+        <td><b>Name</b></td>

+        <td><b>Value</b></td>

+        <td><b>Description</b></td>

+    </tr>

+    <tr>

+        <td>@ref MODE_NLMS0</td>

+        <td>1</td>

+        <td>NLMS0 functionality</td>

+    </tr>

+    <tr>

+        <td>@ref MODE_NLMS1</td>

+        <td>2</td>

+        <td>NLMS1 functionality</td>

+    </tr>

+    <tr>

+        <td>@ref MODE_BEAMFORMER</td>

+        <td>4</td>

+        <td>Fiter-and-Sum Beamformer functionality</td>

+    </tr>

+    <tr>

+        <td>@ref MODE_PCD</td>

+        <td>8</td>

+        <td>Switch between PCD (Path change detector) and BSD (Broadside detector)</td>

+    </tr>

+    <tr>

+        <td>@ref MODE_GSC</td>

+        <td>16</td>

+        <td>Generalized Sidelobe Canceller functionality</td>

+    </tr>

+    <tr>

+        <td>@ref MODE_DNNS</td>

+        <td>32</td>

+        <td>Dynamic Non-stationary Noise Suppression functionality</td>

+    </tr>

+    <tr>

+        <td>@ref MODE_DES</td>

+        <td>64</td>

+        <td>Dynamic Echo Suppression functionality</td>

+    </tr>

+    <tr>

+        <td>@ref MODE_NS</td>

+        <td>128</td>

+        <td>Stationary Noise Suppression functionality</td>

+    </tr>

+    <tr>

+        <td>@ref MODE_NS_N</td>

+        <td>256</td>

+        <td>Non-stationary Noise Suppression functionality</td>

+    </tr>

+    <tr>

+        <td>@ref MODE_CAL</td>

+        <td>2048</td>

+        <td>Switch between initial or continuous calibration</td>

+    </tr>

+    <tr>

+        <td>@ref MODE_HB</td>

+        <td>16384</td>

+        <td>High Band mute/activated</td>

+    </tr>

+    <tr>

+        <td>@ref MODE_HS</td>

+        <td>32768</td>

+        <td>Horn Suppressor functionality (if available)</td>

+    </tr>

+</table> */

+typedef LVM_UINT16 LVNV_ModeWord_bm;

+/**

+* @def MODE_NLMS0

+* NLMS0 functionality

+* @see LVNV_ModeWord_bm

+*/

+#define MODE_NLMS0 ((LVNV_ModeWord_bm)1)

+/**

+* @def MODE_NLMS1

+* NLMS1 functionality

+* @see LVNV_ModeWord_bm

+*/

+#define MODE_NLMS1 ((LVNV_ModeWord_bm)2)

+/**

+* @def MODE_BEAMFORMER

+* Fiter-and-Sum Beamformer functionality

+* @see LVNV_ModeWord_bm

+*/

+#define MODE_BEAMFORMER ((LVNV_ModeWord_bm)4)

+/**

+* @def MODE_PCD

+* Switch between PCD (Path change detector) and BSD (Broadside detector)

+* @see LVNV_ModeWord_bm

+*/

+#define MODE_PCD ((LVNV_ModeWord_bm)8)

+/**

+* @def MODE_GSC

+* Generalized Sidelobe Canceller functionality

+* @see LVNV_ModeWord_bm

+*/

+#define MODE_GSC ((LVNV_ModeWord_bm)16)

+/**

+* @def MODE_DNNS

+* Dynamic Non-stationary Noise Suppression functionality

+* @see LVNV_ModeWord_bm

+*/

+#define MODE_DNNS ((LVNV_ModeWord_bm)32)

+/**

+* @def MODE_DES

+* Dynamic Echo Suppression functionality

+* @see LVNV_ModeWord_bm

+*/

+#define MODE_DES ((LVNV_ModeWord_bm)64)

+/**

+* @def MODE_NS

+* Stationary Noise Suppression functionality

+* @see LVNV_ModeWord_bm

+*/

+#define MODE_NS ((LVNV_ModeWord_bm)128)

+/**

+* @def MODE_NS_N

+* Non-stationary Noise Suppression functionality

+* @see LVNV_ModeWord_bm

+*/

+#define MODE_NS_N ((LVNV_ModeWord_bm)256)

+/**

+* @def MODE_CAL

+* Switch between initial or continuous calibration

+* @see LVNV_ModeWord_bm

+*/

+#define MODE_CAL ((LVNV_ModeWord_bm)2048)

+/**

+* @def MODE_HB

+* High Band mute/activated

+* @see LVNV_ModeWord_bm

+*/

+#define MODE_HB ((LVNV_ModeWord_bm)16384)

+/**

+* @def MODE_HS

+* Horn Suppressor functionality (if available)

+* @see LVNV_ModeWord_bm

+*/

+#define MODE_HS ((LVNV_ModeWord_bm)32768)

+/**

+* @def LVNV_MODEWORD_BM_MIN

+* Minimal value for LVNV_ModeWord_bm

+* @see LVNV_ModeWord_bm

+*/

+#define LVNV_MODEWORD_BM_MIN ((LVNV_ModeWord_bm)0)

+/**

+* @def LVNV_MODEWORD_BM_MAX

+* Maximal value for LVNV_ModeWord_bm

+* @see LVNV_ModeWord_bm

+*/

+#define MODE_NLMS0_FORMAX ((LVNV_ModeWord_bm)1)

+#define MODE_NLMS1_FORMAX ((LVNV_ModeWord_bm)2)

+#define MODE_BEAMFORMER_FORMAX ((LVNV_ModeWord_bm)4)

+#define MODE_PCD_FORMAX ((LVNV_ModeWord_bm)8)

+#define MODE_GSC_FORMAX ((LVNV_ModeWord_bm)16)

+#define MODE_DNNS_FORMAX ((LVNV_ModeWord_bm)32)

+#define MODE_DES_FORMAX ((LVNV_ModeWord_bm)64)

+#define MODE_NS_FORMAX ((LVNV_ModeWord_bm)128)

+#define MODE_NS_N_FORMAX ((LVNV_ModeWord_bm)256)

+#define MODE_CAL_FORMAX ((LVNV_ModeWord_bm)2048)

+#define MODE_HB_FORMAX ((LVNV_ModeWord_bm)16384)

+#define MODE_HS_FORMAX ((LVNV_ModeWord_bm)32768)

+#define LVNV_MODEWORD_BM_MAX (MODE_NLMS0_FORMAX | MODE_NLMS1_FORMAX | MODE_BEAMFORMER_FORMAX | MODE_PCD_FORMAX | MODE_GSC_FORMAX | MODE_DNNS_FORMAX | MODE_DES_FORMAX | MODE_NS_FORMAX | MODE_NS_N_FORMAX | MODE_CAL_FORMAX | MODE_HB_FORMAX | MODE_HS_FORMAX | ((LVNV_ModeWord_bm)0))

+/**

+<table border>

+    <tr>

+        <td><b>Name</b></td>

+        <td><b>Value</b></td>

+        <td><b>Description</b></td>

+    </tr>

+    <tr>

+        <td>@ref MODE2_FSB_CARDIOID</td>

+        <td>1</td>

+        <td>FSB update based on speech detection in cardioid</td>

+    </tr>

+    <tr>

+        <td>@ref MODE2_FSB_WITHINBEAM</td>

+        <td>2</td>

+        <td>FSB update based on withinbeam detection</td>

+    </tr>

+    <tr>

+        <td>@ref MODE2_CAL_UPDATE</td>

+        <td>4</td>

+        <td>Switch for calibration functionality between updated or not-updated</td>

+    </tr>

+    <tr>

+        <td>@ref MODE2_BEAMDAMAGE</td>

+        <td>8</td>

+        <td>Microphone coverage protection</td>

+    </tr>

+</table> */

+typedef LVM_UINT16 LVNV_Mode2Word_bm;

+/**

+* @def MODE2_FSB_CARDIOID

+* FSB update based on speech detection in cardioid

+* @see LVNV_Mode2Word_bm

+*/

+#define MODE2_FSB_CARDIOID ((LVNV_Mode2Word_bm)1)

+/**

+* @def MODE2_FSB_WITHINBEAM

+* FSB update based on withinbeam detection

+* @see LVNV_Mode2Word_bm

+*/

+#define MODE2_FSB_WITHINBEAM ((LVNV_Mode2Word_bm)2)

+/**

+* @def MODE2_CAL_UPDATE

+* Switch for calibration functionality between updated or not-updated

+* @see LVNV_Mode2Word_bm

+*/

+#define MODE2_CAL_UPDATE ((LVNV_Mode2Word_bm)4)

+/**

+* @def MODE2_BEAMDAMAGE

+* Microphone coverage protection

+* @see LVNV_Mode2Word_bm

+*/

+#define MODE2_BEAMDAMAGE ((LVNV_Mode2Word_bm)8)

+/**

+* @def LVNV_MODE2WORD_BM_MIN

+* Minimal value for LVNV_Mode2Word_bm

+* @see LVNV_Mode2Word_bm

+*/

+#define LVNV_MODE2WORD_BM_MIN ((LVNV_Mode2Word_bm)0)

+/**

+* @def LVNV_MODE2WORD_BM_MAX

+* Maximal value for LVNV_Mode2Word_bm

+* @see LVNV_Mode2Word_bm

+*/

+#define MODE2_FSB_CARDIOID_FORMAX ((LVNV_Mode2Word_bm)1)

+#define MODE2_FSB_WITHINBEAM_FORMAX ((LVNV_Mode2Word_bm)2)

+#define MODE2_CAL_UPDATE_FORMAX ((LVNV_Mode2Word_bm)4)

+#define MODE2_BEAMDAMAGE_FORMAX ((LVNV_Mode2Word_bm)8)

+#define LVNV_MODE2WORD_BM_MAX (MODE2_FSB_CARDIOID_FORMAX | MODE2_FSB_WITHINBEAM_FORMAX | MODE2_CAL_UPDATE_FORMAX | MODE2_BEAMDAMAGE_FORMAX | ((LVNV_Mode2Word_bm)0))

+/**

+<table border>

+    <tr>

+        <td><b>Name</b></td>

+        <td><b>Value</b></td>

+        <td><b>Description</b></td>

+    </tr>

+    <tr>

+        <td>@ref TUNING_MODE_NLMS1</td>

+        <td>1</td>

+        <td>NLMS1 output</td>

+    </tr>

+    <tr>

+        <td>@ref TUNING_MODE_FSB</td>

+        <td>2</td>

+        <td>FSB noise reference output</td>

+    </tr>

+    <tr>

+        <td>@ref TUNING_MODE_WITHINBEAM</td>

+        <td>8</td>

+        <td>Tuning beep when Withinbeam=1</td>

+    </tr>

+    <tr>

+        <td>@ref TUNING_MODE_UPDATEONOFF</td>

+        <td>16</td>

+        <td>Tuning beep when FSB is updated</td>

+    </tr>

+    <tr>

+        <td>@ref TUNING_MODE_CAL_MICPOW</td>

+        <td>64</td>

+        <td>Tuning beep when MicPow is lower than Cal_micPowFloorMin</td>

+    </tr>

+    <tr>

+        <td>@ref TUNING_MODE_BROADSIDE</td>

+        <td>128</td>

+        <td>Tuning beep when broadside is detected</td>

+    </tr>

+</table> */

+typedef LVM_UINT16 LVNV_TuningModeWord_bm;

+/**

+* @def TUNING_MODE_NLMS1

+* NLMS1 output

+* @see LVNV_TuningModeWord_bm

+*/

+#define TUNING_MODE_NLMS1 ((LVNV_TuningModeWord_bm)1)

+/**

+* @def TUNING_MODE_FSB

+* FSB noise reference output

+* @see LVNV_TuningModeWord_bm

+*/

+#define TUNING_MODE_FSB ((LVNV_TuningModeWord_bm)2)

+/**

+* @def TUNING_MODE_WITHINBEAM

+* Tuning beep when Withinbeam=1

+* @see LVNV_TuningModeWord_bm

+*/

+#define TUNING_MODE_WITHINBEAM ((LVNV_TuningModeWord_bm)8)

+/**

+* @def TUNING_MODE_UPDATEONOFF

+* Tuning beep when FSB is updated

+* @see LVNV_TuningModeWord_bm

+*/

+#define TUNING_MODE_UPDATEONOFF ((LVNV_TuningModeWord_bm)16)

+/**

+* @def TUNING_MODE_CAL_MICPOW

+* Tuning beep when MicPow is lower than Cal_micPowFloorMin

+* @see LVNV_TuningModeWord_bm

+*/

+#define TUNING_MODE_CAL_MICPOW ((LVNV_TuningModeWord_bm)64)

+/**

+* @def TUNING_MODE_BROADSIDE

+* Tuning beep when broadside is detected

+* @see LVNV_TuningModeWord_bm

+*/

+#define TUNING_MODE_BROADSIDE ((LVNV_TuningModeWord_bm)128)

+/**

+* @def LVNV_TUNINGMODEWORD_BM_MIN

+* Minimal value for LVNV_TuningModeWord_bm

+* @see LVNV_TuningModeWord_bm

+*/

+#define LVNV_TUNINGMODEWORD_BM_MIN ((LVNV_TuningModeWord_bm)0)

+/**

+* @def LVNV_TUNINGMODEWORD_BM_MAX

+* Maximal value for LVNV_TuningModeWord_bm

+* @see LVNV_TuningModeWord_bm

+*/

+#define TUNING_MODE_NLMS1_FORMAX ((LVNV_TuningModeWord_bm)1)

+#define TUNING_MODE_FSB_FORMAX ((LVNV_TuningModeWord_bm)2)

+#define TUNING_MODE_WITHINBEAM_FORMAX ((LVNV_TuningModeWord_bm)8)

+#define TUNING_MODE_UPDATEONOFF_FORMAX ((LVNV_TuningModeWord_bm)16)

+#define TUNING_MODE_CAL_MICPOW_FORMAX ((LVNV_TuningModeWord_bm)64)

+#define TUNING_MODE_BROADSIDE_FORMAX ((LVNV_TuningModeWord_bm)128)

+#define LVNV_TUNINGMODEWORD_BM_MAX (TUNING_MODE_NLMS1_FORMAX | TUNING_MODE_FSB_FORMAX | TUNING_MODE_WITHINBEAM_FORMAX | TUNING_MODE_UPDATEONOFF_FORMAX | TUNING_MODE_CAL_MICPOW_FORMAX | TUNING_MODE_BROADSIDE_FORMAX | ((LVNV_TuningModeWord_bm)0))

+/**

+<table border>

+    <tr>

+        <td><b>Name</b></td>

+        <td><b>Value</b></td>

+        <td><b>Description</b></td>

+    </tr>

+    <tr>

+        <td>@ref LVNV_STATUS_LOST_BEAM</td>

+        <td>1</td>

+        <td>LostBeam detections</td>

+    </tr>

+    <tr>

+        <td>@ref LVNV_STATUS_MIC_COV</td>

+        <td>2</td>

+        <td>Microphone Coverage detections</td>

+    </tr>

+    <tr>

+        <td>@ref LVNV_STATUS_FSB_UPDATE</td>

+        <td>4</td>

+        <td>FSB updates</td>

+    </tr>

+    <tr>

+        <td>@ref LVNV_STATUS_BEAM_DAMAGE</td>

+        <td>8</td>

+        <td>BeamDamage detections</td>

+    </tr>

+    <tr>

+        <td>@ref LVNV_STATUS_GSC_UPDATE</td>

+        <td>16</td>

+        <td>GSC updates</td>

+    </tr>

+    <tr>

+        <td>@ref LVNV_STATUS_DNNS_WBEAM</td>

+        <td>32</td>

+        <td>DNNS WithinBeam detections</td>

+    </tr>

+    <tr>

+        <td>@ref LVNV_STATUS_DNNS_ACTIVITY</td>

+        <td>64</td>

+        <td>DNNS activity detections</td>

+    </tr>

+    <tr>

+        <td>@ref LVNV_STATUS_CAL_MICPOW</td>

+        <td>128</td>

+        <td>Calibration Microphone Power</td>

+    </tr>

+    <tr>

+        <td>@ref LVNV_STATUS_MICPOWSP</td>

+        <td>256</td>

+        <td>(LV1008) MicPow Speech detections</td>

+    </tr>

+    <tr>

+        <td>@ref LVNV_STATUS_BROADSIDE_FLAG</td>

+        <td>512</td>

+        <td>(LV2370) Broadside detection flag</td>

+    </tr>

+    <tr>

+        <td>@ref LVNV_STATUS_CAL_UPDATED</td>

+        <td>1024</td>

+        <td>(LV8237) Calibration updated flag</td>

+    </tr>

+    <tr>

+        <td>@ref LVNV_STATUS_WBEAM_FIX</td>

+        <td>2048</td>

+        <td>WithinBeam detection for Fixed Beamformer (if available).</td>

+    </tr>

+</table> */

+typedef LVM_UINT16 LVNV_StatusWord_bm;

+/**

+* @def LVNV_STATUS_LOST_BEAM

+* LostBeam detections

+* @see LVNV_StatusWord_bm

+*/

+#define LVNV_STATUS_LOST_BEAM ((LVNV_StatusWord_bm)1)

+/**

+* @def LVNV_STATUS_MIC_COV

+* Microphone Coverage detections

+* @see LVNV_StatusWord_bm

+*/

+#define LVNV_STATUS_MIC_COV ((LVNV_StatusWord_bm)2)

+/**

+* @def LVNV_STATUS_FSB_UPDATE

+* FSB updates

+* @see LVNV_StatusWord_bm

+*/

+#define LVNV_STATUS_FSB_UPDATE ((LVNV_StatusWord_bm)4)

+/**

+* @def LVNV_STATUS_BEAM_DAMAGE

+* BeamDamage detections

+* @see LVNV_StatusWord_bm

+*/

+#define LVNV_STATUS_BEAM_DAMAGE ((LVNV_StatusWord_bm)8)

+/**

+* @def LVNV_STATUS_GSC_UPDATE

+* GSC updates

+* @see LVNV_StatusWord_bm

+*/

+#define LVNV_STATUS_GSC_UPDATE ((LVNV_StatusWord_bm)16)

+/**

+* @def LVNV_STATUS_DNNS_WBEAM

+* DNNS WithinBeam detections

+* @see LVNV_StatusWord_bm

+*/

+#define LVNV_STATUS_DNNS_WBEAM ((LVNV_StatusWord_bm)32)

+/**

+* @def LVNV_STATUS_DNNS_ACTIVITY

+* DNNS activity detections

+* @see LVNV_StatusWord_bm

+*/

+#define LVNV_STATUS_DNNS_ACTIVITY ((LVNV_StatusWord_bm)64)

+/**

+* @def LVNV_STATUS_CAL_MICPOW

+* Calibration Microphone Power

+* @see LVNV_StatusWord_bm

+*/

+#define LVNV_STATUS_CAL_MICPOW ((LVNV_StatusWord_bm)128)

+/**

+* @def LVNV_STATUS_MICPOWSP

+* (LV1008) MicPow Speech detections

+* @see LVNV_StatusWord_bm

+*/

+#define LVNV_STATUS_MICPOWSP ((LVNV_StatusWord_bm)256)

+/**

+* @def LVNV_STATUS_BROADSIDE_FLAG

+* (LV2370) Broadside detection flag

+* @see LVNV_StatusWord_bm

+*/

+#define LVNV_STATUS_BROADSIDE_FLAG ((LVNV_StatusWord_bm)512)

+/**

+* @def LVNV_STATUS_CAL_UPDATED

+* (LV8237) Calibration updated flag

+* @see LVNV_StatusWord_bm

+*/

+#define LVNV_STATUS_CAL_UPDATED ((LVNV_StatusWord_bm)1024)

+/**

+* @def LVNV_STATUS_WBEAM_fix

+* WithinBeam detection for Fixed Beamformer (if available).

+* @see LVNV_StatusWord_bm

+*/

+#define LVNV_STATUS_WBEAM_FIX ((LVNV_StatusWord_bm)2048)

+/**

+* @def LVNV_STATUSWORD_BM_MIN

+* Minimal value for LVNV_StatusWord_bm

+* @see LVNV_StatusWord_bm

+*/

+#define LVNV_STATUSWORD_BM_MIN ((LVNV_StatusWord_bm)0)

+/**

+* @def LVNV_STATUSWORD_BM_MAX

+* Maximal value for LVNV_StatusWord_bm

+* @see LVNV_StatusWord_bm

+*/

+#define LVNV_STATUS_LOST_BEAM_FORMAX ((LVNV_StatusWord_bm)1)

+#define LVNV_STATUS_MIC_COV_FORMAX ((LVNV_StatusWord_bm)2)

+#define LVNV_STATUS_FSB_UPDATE_FORMAX ((LVNV_StatusWord_bm)4)

+#define LVNV_STATUS_BEAM_DAMAGE_FORMAX ((LVNV_StatusWord_bm)8)

+#define LVNV_STATUS_GSC_UPDATE_FORMAX ((LVNV_StatusWord_bm)16)

+#define LVNV_STATUS_DNNS_WBEAM_FORMAX ((LVNV_StatusWord_bm)32)

+#define LVNV_STATUS_DNNS_ACTIVITY_FORMAX ((LVNV_StatusWord_bm)64)

+#define LVNV_STATUS_CAL_MICPOW_FORMAX ((LVNV_StatusWord_bm)128)

+#define LVNV_STATUS_MICPOWSP_FORMAX ((LVNV_StatusWord_bm)256)

+#define LVNV_STATUS_BROADSIDE_FLAG_FORMAX ((LVNV_StatusWord_bm)512)

+#define LVNV_STATUS_CAL_UPDATED_FORMAX ((LVNV_StatusWord_bm)1024)

+#define LVNV_STATUS_WBEAM_FIX_FORMAX ((LVNV_StatusWord_bm)2048)

+#define LVNV_STATUSWORD_BM_MAX (LVNV_STATUS_LOST_BEAM_FORMAX | LVNV_STATUS_MIC_COV_FORMAX | LVNV_STATUS_FSB_UPDATE_FORMAX | LVNV_STATUS_BEAM_DAMAGE_FORMAX | LVNV_STATUS_GSC_UPDATE_FORMAX | LVNV_STATUS_DNNS_WBEAM_FORMAX | LVNV_STATUS_DNNS_ACTIVITY_FORMAX | LVNV_STATUS_CAL_MICPOW_FORMAX | LVNV_STATUS_MICPOWSP_FORMAX | LVNV_STATUS_BROADSIDE_FLAG_FORMAX | LVNV_STATUS_CAL_UPDATED_FORMAX | LVNV_STATUS_WBEAM_FIX_FORMAX | ((LVNV_StatusWord_bm)0))

+/**

+<table border>

+    <tr>

+        <td><b>Name</b></td>

+        <td><b>Value</b></td>

+        <td><b>Description</b></td>

+    </tr>

+    <tr>

+        <td>@ref LVHF_CONTROL_TUNE_PATHCHANGE</td>

+        <td>1</td>

+        <td>PCD tuning beep</td>

+    </tr>

+    <tr>

+        <td>@ref LVHF_CONTROL_TUNE_CLIP</td>

+        <td>2</td>

+        <td>SPDET_x_clip tuning beep</td>

+    </tr>

+    <tr>

+        <td>@ref LVHF_CONTROL_TUNE_FAR_SPEAKS</td>

+        <td>4</td>

+        <td>SPDET_far tuning beep</td>

+    </tr>

+    <tr>

+        <td>@ref LVHF_CONTROL_TUNE_MIC_SPEAKS</td>

+        <td>8</td>

+        <td>SPDET_mic tuning beep</td>

+    </tr>

+    <tr>

+        <td>@ref LVHF_CONTROL_TUNE_HB_MUTE</td>

+        <td>16</td>

+        <td>Mute high band (4kHz-8kHz). Should be disabled by default.</td>

+    </tr>

+    <tr>

+        <td>@ref LVHF_CONTROL_TUNE_TB_MUTE</td>

+        <td>32</td>

+        <td>Mute top band (above 8kHz). Should be disabled by default.</td>

+    </tr>

+</table> */

+typedef LVM_UINT16 LVHF_TuningModeWord;

+/**

+* @def LVHF_CONTROL_TUNE_PATHCHANGE

+* PCD tuning beep

+* @see LVHF_TuningModeWord

+*/

+#define LVHF_CONTROL_TUNE_PATHCHANGE ((LVHF_TuningModeWord)1)

+/**

+* @def LVHF_CONTROL_TUNE_CLIP

+* SPDET_x_clip tuning beep

+* @see LVHF_TuningModeWord

+*/

+#define LVHF_CONTROL_TUNE_CLIP ((LVHF_TuningModeWord)2)

+/**

+* @def LVHF_CONTROL_TUNE_FAR_SPEAKS

+* SPDET_far tuning beep

+* @see LVHF_TuningModeWord

+*/

+#define LVHF_CONTROL_TUNE_FAR_SPEAKS ((LVHF_TuningModeWord)4)

+/**

+* @def LVHF_CONTROL_TUNE_MIC_SPEAKS

+* SPDET_mic tuning beep

+* @see LVHF_TuningModeWord

+*/

+#define LVHF_CONTROL_TUNE_MIC_SPEAKS ((LVHF_TuningModeWord)8)

+/**

+* @def LVHF_CONTROL_TUNE_HB_MUTE

+* Mute high band (4kHz-8kHz). Should be disabled by default.

+* @see LVHF_TuningModeWord

+*/

+#define LVHF_CONTROL_TUNE_HB_MUTE ((LVHF_TuningModeWord)16)

+/**

+* @def LVHF_CONTROL_TUNE_TB_MUTE

+* Mute top band (above 8kHz). Should be disabled by default.

+* @see LVHF_TuningModeWord

+*/

+#define LVHF_CONTROL_TUNE_TB_MUTE ((LVHF_TuningModeWord)32)

+/**

+* @def LVHF_TUNINGMODEWORD_MIN

+* Minimal value for LVHF_TuningModeWord

+* @see LVHF_TuningModeWord

+*/

+#define LVHF_TUNINGMODEWORD_MIN ((LVHF_TuningModeWord)0)

+/**

+* @def LVHF_TUNINGMODEWORD_MAX

+* Maximal value for LVHF_TuningModeWord

+* @see LVHF_TuningModeWord

+*/

+#define LVHF_CONTROL_TUNE_PATHCHANGE_FORMAX ((LVHF_TuningModeWord)1)

+#define LVHF_CONTROL_TUNE_CLIP_FORMAX ((LVHF_TuningModeWord)2)

+#define LVHF_CONTROL_TUNE_FAR_SPEAKS_FORMAX ((LVHF_TuningModeWord)4)

+#define LVHF_CONTROL_TUNE_MIC_SPEAKS_FORMAX ((LVHF_TuningModeWord)8)

+#define LVHF_CONTROL_TUNE_HB_MUTE_FORMAX ((LVHF_TuningModeWord)16)

+#define LVHF_CONTROL_TUNE_TB_MUTE_FORMAX ((LVHF_TuningModeWord)32)

+#define LVHF_TUNINGMODEWORD_MAX (LVHF_CONTROL_TUNE_PATHCHANGE_FORMAX | LVHF_CONTROL_TUNE_CLIP_FORMAX | LVHF_CONTROL_TUNE_FAR_SPEAKS_FORMAX | LVHF_CONTROL_TUNE_MIC_SPEAKS_FORMAX | LVHF_CONTROL_TUNE_HB_MUTE_FORMAX | LVHF_CONTROL_TUNE_TB_MUTE_FORMAX | ((LVHF_TuningModeWord)0))

+/**

+<table border>

+    <tr>

+        <td><b>Name</b></td>

+        <td><b>Value</b></td>

+        <td><b>Description</b></td>

+    </tr>

+    <tr>

+        <td>@ref LVHF_MODE_NLMS</td>

+        <td>1</td>

+        <td>NLMS functionality</td>

+    </tr>

+    <tr>

+        <td>@ref LVHF_MODE_DES</td>

+        <td>2</td>

+        <td>DES (Dynamic Echo Suppression)</td>

+    </tr>

+    <tr>

+        <td>@ref LVHF_MODE_NS</td>

+        <td>4</td>

+        <td>NS (Noise Suppression)</td>

+    </tr>

+    <tr>

+        <td>@ref LVHF_MODE_CNI</td>

+        <td>8</td>

+        <td>CNI (Comfort Noise Injection)</td>

+    </tr>

+    <tr>

+        <td>@ref LVHF_MODE_NLES</td>

+        <td>16</td>

+        <td>NLES (Non Linear Echo Suppression)</td>

+    </tr>

+    <tr>

+        <td>@ref LVHF_MODE_PCD_DT</td>

+        <td>64</td>

+        <td>DT (Double Talk) protection after PCD</td>

+    </tr>

+    <tr>

+        <td>@ref LVHF_MODE_PCD</td>

+        <td>128</td>

+        <td>PCD (Path Change Detector)</td>

+    </tr>

+    <tr>

+        <td>@ref LVHF_MODE_INIT_ES</td>

+        <td>256</td>

+        <td>Initial echo suppression setting by PCD_gamma_e_rescue</td>

+    </tr>

+    <tr>

+        <td>@ref LVHF_MODE_HS</td>

+        <td>512</td>

+        <td>HornSuppression (if available)</td>

+    </tr>

+    <tr>

+        <td>@ref LVHF_MODE_PRENLMS</td>

+        <td>4096</td>

+        <td>Pre-NLMS preprocessing</td>

+    </tr>

+</table> */

+typedef LVM_UINT16 LVHF_ModeWord_bm;

+/**

+* @def LVHF_MODE_NLMS

+* NLMS functionality

+* @see LVHF_ModeWord_bm

+*/

+#define LVHF_MODE_NLMS ((LVHF_ModeWord_bm)1)

+/**

+* @def LVHF_MODE_DES

+* DES (Dynamic Echo Suppression)

+* @see LVHF_ModeWord_bm

+*/

+#define LVHF_MODE_DES ((LVHF_ModeWord_bm)2)

+/**

+* @def LVHF_MODE_NS

+* NS (Noise Suppression)

+* @see LVHF_ModeWord_bm

+*/

+#define LVHF_MODE_NS ((LVHF_ModeWord_bm)4)

+/**

+* @def LVHF_MODE_CNI

+* CNI (Comfort Noise Injection)

+* @see LVHF_ModeWord_bm

+*/

+#define LVHF_MODE_CNI ((LVHF_ModeWord_bm)8)

+/**

+* @def LVHF_MODE_NLES

+* NLES (Non Linear Echo Suppression)

+* @see LVHF_ModeWord_bm

+*/

+#define LVHF_MODE_NLES ((LVHF_ModeWord_bm)16)

+/**

+* @def LVHF_MODE_PCD_DT

+* DT (Double Talk) protection after PCD

+* @see LVHF_ModeWord_bm

+*/

+#define LVHF_MODE_PCD_DT ((LVHF_ModeWord_bm)64)

+/**

+* @def LVHF_MODE_PCD

+* PCD (Path Change Detector)

+* @see LVHF_ModeWord_bm

+*/

+#define LVHF_MODE_PCD ((LVHF_ModeWord_bm)128)

+/**

+* @def LVHF_MODE_INIT_ES

+* Initial echo suppression setting by PCD_gamma_e_rescue

+* @see LVHF_ModeWord_bm

+*/

+#define LVHF_MODE_INIT_ES ((LVHF_ModeWord_bm)256)

+/**

+* @def LVHF_MODE_HS

+* HornSuppression (if available)

+* @see LVHF_ModeWord_bm

+*/

+#define LVHF_MODE_HS ((LVHF_ModeWord_bm)512)

+/**

+* @def LVHF_MODE_PRENLMS

+* Pre-NLMS preprocessing

+* @see LVHF_ModeWord_bm

+*/

+#define LVHF_MODE_PRENLMS ((LVHF_ModeWord_bm)4096)

+/**

+* @def LVHF_MODEWORD_BM_MIN

+* Minimal value for LVHF_ModeWord_bm

+* @see LVHF_ModeWord_bm

+*/

+#define LVHF_MODEWORD_BM_MIN ((LVHF_ModeWord_bm)0)

+/**

+* @def LVHF_MODEWORD_BM_MAX

+* Maximal value for LVHF_ModeWord_bm

+* @see LVHF_ModeWord_bm

+*/

+#define LVHF_MODE_NLMS_FORMAX ((LVHF_ModeWord_bm)1)

+#define LVHF_MODE_DES_FORMAX ((LVHF_ModeWord_bm)2)

+#define LVHF_MODE_NS_FORMAX ((LVHF_ModeWord_bm)4)

+#define LVHF_MODE_CNI_FORMAX ((LVHF_ModeWord_bm)8)

+#define LVHF_MODE_NLES_FORMAX ((LVHF_ModeWord_bm)16)

+#define LVHF_MODE_PCD_DT_FORMAX ((LVHF_ModeWord_bm)64)

+#define LVHF_MODE_PCD_FORMAX ((LVHF_ModeWord_bm)128)

+#define LVHF_MODE_INIT_ES_FORMAX ((LVHF_ModeWord_bm)256)

+#define LVHF_MODE_HS_FORMAX ((LVHF_ModeWord_bm)512)

+#define LVHF_MODE_PRENLMS_FORMAX ((LVHF_ModeWord_bm)4096)

+#define LVHF_MODEWORD_BM_MAX (LVHF_MODE_NLMS_FORMAX | LVHF_MODE_DES_FORMAX | LVHF_MODE_NS_FORMAX | LVHF_MODE_CNI_FORMAX | LVHF_MODE_NLES_FORMAX | LVHF_MODE_PCD_DT_FORMAX | LVHF_MODE_PCD_FORMAX | LVHF_MODE_INIT_ES_FORMAX | LVHF_MODE_HS_FORMAX | LVHF_MODE_PRENLMS_FORMAX | ((LVHF_ModeWord_bm)0))

+/**

+<table border>

+    <tr>

+        <td><b>Name</b></td>

+        <td><b>Value</b></td>

+        <td><b>Description</b></td>

+    </tr>

+    <tr>

+        <td>@ref LVHF_STATUS_FAR_SPEAKS</td>

+        <td>1</td>

+        <td>FarEnd is speaking</td>

+    </tr>

+    <tr>

+        <td>@ref LVHF_STATUS_FAR_STARTS</td>

+        <td>2</td>

+        <td>FarEnd starts to speak</td>

+    </tr>

+    <tr>

+        <td>@ref LVHF_STATUS_MIC_SPEAKS</td>

+        <td>4</td>

+        <td>Mic activity detected</td>

+    </tr>

+    <tr>

+        <td>@ref LVHF_STATUS_CLIP</td>

+        <td>8</td>

+        <td>Clipping Detected</td>

+    </tr>

+    <tr>

+        <td>@ref LVHF_STATUS_PATHCHANGE</td>

+        <td>16</td>

+        <td>Path Change detected</td>

+    </tr>

+</table> */

+typedef LVM_UINT16 LVHF_StatusWord_bm;

+/**

+* @def LVHF_STATUS_FAR_SPEAKS

+* FarEnd is speaking

+* @see LVHF_StatusWord_bm

+*/

+#define LVHF_STATUS_FAR_SPEAKS ((LVHF_StatusWord_bm)1)

+/**

+* @def LVHF_STATUS_FAR_STARTS

+* FarEnd starts to speak

+* @see LVHF_StatusWord_bm

+*/

+#define LVHF_STATUS_FAR_STARTS ((LVHF_StatusWord_bm)2)

+/**

+* @def LVHF_STATUS_MIC_SPEAKS

+* Mic activity detected

+* @see LVHF_StatusWord_bm

+*/

+#define LVHF_STATUS_MIC_SPEAKS ((LVHF_StatusWord_bm)4)

+/**

+* @def LVHF_STATUS_CLIP

+* Clipping Detected

+* @see LVHF_StatusWord_bm

+*/

+#define LVHF_STATUS_CLIP ((LVHF_StatusWord_bm)8)

+/**

+* @def LVHF_STATUS_PATHCHANGE

+* Path Change detected

+* @see LVHF_StatusWord_bm

+*/

+#define LVHF_STATUS_PATHCHANGE ((LVHF_StatusWord_bm)16)

+/**

+* @def LVHF_STATUSWORD_BM_MIN

+* Minimal value for LVHF_StatusWord_bm

+* @see LVHF_StatusWord_bm

+*/

+#define LVHF_STATUSWORD_BM_MIN ((LVHF_StatusWord_bm)0)

+/**

+* @def LVHF_STATUSWORD_BM_MAX

+* Maximal value for LVHF_StatusWord_bm

+* @see LVHF_StatusWord_bm

+*/

+#define LVHF_STATUS_FAR_SPEAKS_FORMAX ((LVHF_StatusWord_bm)1)

+#define LVHF_STATUS_FAR_STARTS_FORMAX ((LVHF_StatusWord_bm)2)

+#define LVHF_STATUS_MIC_SPEAKS_FORMAX ((LVHF_StatusWord_bm)4)

+#define LVHF_STATUS_CLIP_FORMAX ((LVHF_StatusWord_bm)8)

+#define LVHF_STATUS_PATHCHANGE_FORMAX ((LVHF_StatusWord_bm)16)

+#define LVHF_STATUSWORD_BM_MAX (LVHF_STATUS_FAR_SPEAKS_FORMAX | LVHF_STATUS_FAR_STARTS_FORMAX | LVHF_STATUS_MIC_SPEAKS_FORMAX | LVHF_STATUS_CLIP_FORMAX | LVHF_STATUS_PATHCHANGE_FORMAX | ((LVHF_StatusWord_bm)0))

+

+#define LVVIDHEADER_LVVE_RX_MASK1_LVWIREFORMAT_LENGTH (2) ///< Number of bytes to encode @ref LVVIDHeader_LVVE_Rx_Mask1_bm in LVWireFormat.

+

+#define LVVIDHEADER_LVVE_RX_MASK2_LVWIREFORMAT_LENGTH (2) ///< Number of bytes to encode @ref LVVIDHeader_LVVE_Rx_Mask2_bm in LVWireFormat.

+

+#define LVVIDHEADER_LVVE_TX_MASK1_LVWIREFORMAT_LENGTH (2) ///< Number of bytes to encode @ref LVVIDHeader_LVVE_Tx_Mask1_bm in LVWireFormat.

+

+#define LVVIDHEADER_LVVE_TX_MASK2_LVWIREFORMAT_LENGTH (2) ///< Number of bytes to encode @ref LVVIDHeader_LVVE_Tx_Mask2_bm in LVWireFormat.

+

+#define LVVIDHEADER_CONFIGURATIONS_MASK1_LVWIREFORMAT_LENGTH (2) ///< Number of bytes to encode @ref LVVIDHeader_Configurations_Mask1_bm in LVWireFormat.

+

+#define LVVIDHEADER_CONFIGURATIONS_MASK2_LVWIREFORMAT_LENGTH (2) ///< Number of bytes to encode @ref LVVIDHeader_Configurations_Mask2_bm in LVWireFormat.

+

+#define LVVC_MODEWORD_LVWIREFORMAT_LENGTH (2) ///< Number of bytes to encode @ref LVVC_ModeWord_bm in LVWireFormat.

+

+#define LVFENS_MODEWORD_LVWIREFORMAT_LENGTH (2) ///< Number of bytes to encode @ref LVFENS_ModeWord_bm in LVWireFormat.

+

+#define LVWM_MODEWORD_LVWIREFORMAT_LENGTH (2) ///< Number of bytes to encode @ref LVWM_ModeWord_bm in LVWireFormat.

+

+#define LVNV_MODEWORD_LVWIREFORMAT_LENGTH (2) ///< Number of bytes to encode @ref LVNV_ModeWord_bm in LVWireFormat.

+

+#define LVNV_MODE2WORD_LVWIREFORMAT_LENGTH (2) ///< Number of bytes to encode @ref LVNV_Mode2Word_bm in LVWireFormat.

+

+#define LVNV_TUNINGMODEWORD_LVWIREFORMAT_LENGTH (2) ///< Number of bytes to encode @ref LVNV_TuningModeWord_bm in LVWireFormat.

+

+#define LVNV_STATUSWORD_LVWIREFORMAT_LENGTH (2) ///< Number of bytes to encode @ref LVNV_StatusWord_bm in LVWireFormat.

+

+#define LVHF_TUNINGMODEWORD_LVWIREFORMAT_LENGTH (2) ///< Number of bytes to encode @ref LVHF_TuningModeWord in LVWireFormat.

+

+#define LVHF_MODEWORD_LVWIREFORMAT_LENGTH (2) ///< Number of bytes to encode @ref LVHF_ModeWord_bm in LVWireFormat.

+

+#define LVHF_STATUSWORD_LVWIREFORMAT_LENGTH (2) ///< Number of bytes to encode @ref LVHF_StatusWord_bm in LVWireFormat.

+

+#define LVM_MODE_LVWIREFORMAT_LENGTH (4) ///< Number of bytes to encode @ref LVM_Mode_en in LVWireFormat.

+

+#define LVM_CONFIG_LVWIREFORMAT_LENGTH (4) ///< Number of bytes to encode @ref LVM_Config_en in LVWireFormat.

+

+#define LVM_FS_LVWIREFORMAT_LENGTH (4) ///< Number of bytes to encode @ref LVM_Fs_en in LVWireFormat.

+

+#define LVVIDHEADER_MESSAGEID_LVWIREFORMAT_LENGTH (4) ///< Number of bytes to encode @ref LVVIDHeader_MessageID_en in LVWireFormat.

+

+#define LVVIDHEADER_RETURNSTATUS_LVWIREFORMAT_LENGTH (4) ///< Number of bytes to encode @ref LVVIDHeader_ReturnStatus_en in LVWireFormat.

+

+#define LVVE_RX_MODE_LVWIREFORMAT_LENGTH (4) ///< Number of bytes to encode @ref LVVE_Rx_Mode_en in LVWireFormat.

+

+#define LVVE_TX_MODE_LVWIREFORMAT_LENGTH (4) ///< Number of bytes to encode @ref LVVE_Tx_Mode_en in LVWireFormat.

+

+#define LVVIDHEADER_CONTROLPARAMS_LVWIREFORMAT_LENGTH (7 \

+ + LVVIDHEADER_LVVE_RX_MASK1_LVWIREFORMAT_LENGTH \

+ + LVVIDHEADER_LVVE_RX_MASK2_LVWIREFORMAT_LENGTH \

+ + LVVIDHEADER_LVVE_TX_MASK1_LVWIREFORMAT_LENGTH \

+ + LVVIDHEADER_LVVE_TX_MASK2_LVWIREFORMAT_LENGTH \

+ + LVVIDHEADER_CONFIGURATIONS_MASK1_LVWIREFORMAT_LENGTH \

+ + LVVIDHEADER_CONFIGURATIONS_MASK2_LVWIREFORMAT_LENGTH \

+ + LVVIDHEADER_MESSAGEID_LVWIREFORMAT_LENGTH \

+ + LVM_FS_LVWIREFORMAT_LENGTH) ///< Number of bytes to encode LVVIDHeader ControlParameters in LVWireFormat.

+

+#define LVVC_CONTROLPARAMS_LVWIREFORMAT_LENGTH (22 \

+ + LVM_MODE_LVWIREFORMAT_LENGTH \

+ + LVVC_MODEWORD_LVWIREFORMAT_LENGTH) ///< Number of bytes to encode LVVC ControlParameters in LVWireFormat.

+

+#define LVFENS_CONTROLPARAMS_LVWIREFORMAT_LENGTH (2 \

+ + LVM_MODE_LVWIREFORMAT_LENGTH \

+ + LVFENS_MODEWORD_LVWIREFORMAT_LENGTH) ///< Number of bytes to encode LVFENS ControlParameters in LVWireFormat.

+

+#define LVWM_CONTROLPARAMS_LVWIREFORMAT_LENGTH (14 \

+ + LVM_MODE_LVWIREFORMAT_LENGTH \

+ + LVWM_MODEWORD_LVWIREFORMAT_LENGTH) ///< Number of bytes to encode LVWM ControlParameters in LVWireFormat.

+

+#define LVDRC_CONTROLPARAMS_LVWIREFORMAT_LENGTH (28 \

+ + LVM_MODE_LVWIREFORMAT_LENGTH \

+ + LVM_MODE_LVWIREFORMAT_LENGTH) ///< Number of bytes to encode LVDRC ControlParameters in LVWireFormat.

+

+#define LVNG_CONTROLPARAMS_LVWIREFORMAT_LENGTH (26 \

+ + LVM_MODE_LVWIREFORMAT_LENGTH) ///< Number of bytes to encode LVNG ControlParameters in LVWireFormat.

+

+#define LVNLPP_CONTROLPARAMS_LVWIREFORMAT_LENGTH (4) ///< Number of bytes to encode LVNLPP ControlParameters in LVWireFormat.

+

+#define LVEQ_CONTROLPARAMS_LVWIREFORMAT_LENGTH (66) ///< Number of bytes to encode LVEQ ControlParameters in LVWireFormat.

+

+#define LVVOL_CONTROLPARAMS_LVWIREFORMAT_LENGTH (2 \

+ + LVM_MODE_LVWIREFORMAT_LENGTH) ///< Number of bytes to encode LVVOL ControlParameters in LVWireFormat.

+

+#define LVHPF_CONTROLPARAMS_LVWIREFORMAT_LENGTH (2 \

+ + LVM_MODE_LVWIREFORMAT_LENGTH) ///< Number of bytes to encode LVHPF ControlParameters in LVWireFormat.

+

+#define LVMUTE_CONTROLPARAMS_LVWIREFORMAT_LENGTH (LVM_MODE_LVWIREFORMAT_LENGTH) ///< Number of bytes to encode LVMUTE ControlParameters in LVWireFormat.

+

+#define LVVE_RX_CONTROLPARAMS_LVWIREFORMAT_LENGTH (4 \

+ + LVVE_RX_MODE_LVWIREFORMAT_LENGTH \

+ + LVM_MODE_LVWIREFORMAT_LENGTH \

+ + LVM_MODE_LVWIREFORMAT_LENGTH \

+ + LVFENS_CONTROLPARAMS_LVWIREFORMAT_LENGTH \

+ + LVM_MODE_LVWIREFORMAT_LENGTH \

+ + LVNLPP_CONTROLPARAMS_LVWIREFORMAT_LENGTH \

+ + LVVC_CONTROLPARAMS_LVWIREFORMAT_LENGTH \

+ + LVM_MODE_LVWIREFORMAT_LENGTH \

+ + LVEQ_CONTROLPARAMS_LVWIREFORMAT_LENGTH \

+ + LVDRC_CONTROLPARAMS_LVWIREFORMAT_LENGTH \

+ + LVM_MODE_LVWIREFORMAT_LENGTH \

+ + LVWM_CONTROLPARAMS_LVWIREFORMAT_LENGTH \

+ + LVNG_CONTROLPARAMS_LVWIREFORMAT_LENGTH) ///< Number of bytes to encode LVVE_Rx ControlParameters in LVWireFormat.

+

+#define LVNV_CONTROLPARAMS_LVWIREFORMAT_LENGTH (122 \

+ + LVM_MODE_LVWIREFORMAT_LENGTH \

+ + LVNV_MODEWORD_LVWIREFORMAT_LENGTH \

+ + LVNV_MODE2WORD_LVWIREFORMAT_LENGTH \

+ + LVNV_TUNINGMODEWORD_LVWIREFORMAT_LENGTH) ///< Number of bytes to encode LVNV ControlParameters in LVWireFormat.

+

+#define LVHF_CONTROLPARAMS_LVWIREFORMAT_LENGTH (78 \

+ + LVM_MODE_LVWIREFORMAT_LENGTH \

+ + LVHF_MODEWORD_LVWIREFORMAT_LENGTH \

+ + LVHF_TUNINGMODEWORD_LVWIREFORMAT_LENGTH) ///< Number of bytes to encode LVHF ControlParameters in LVWireFormat.

+

+#define LVBD_CONTROLPARAMS_LVWIREFORMAT_LENGTH (4 \

+ + LVM_MODE_LVWIREFORMAT_LENGTH) ///< Number of bytes to encode LVBD ControlParameters in LVWireFormat.

+

+#define LVVE_TX_CONTROLPARAMS_LVWIREFORMAT_LENGTH (8 \

+ + LVVE_TX_MODE_LVWIREFORMAT_LENGTH \

+ + LVM_MODE_LVWIREFORMAT_LENGTH \

+ + LVM_MODE_LVWIREFORMAT_LENGTH \

+ + LVM_MODE_LVWIREFORMAT_LENGTH \

+ + LVM_MODE_LVWIREFORMAT_LENGTH \

+ + LVHF_CONTROLPARAMS_LVWIREFORMAT_LENGTH \

+ + LVNV_CONTROLPARAMS_LVWIREFORMAT_LENGTH \

+ + LVM_MODE_LVWIREFORMAT_LENGTH \

+ + LVEQ_CONTROLPARAMS_LVWIREFORMAT_LENGTH \

+ + LVDRC_CONTROLPARAMS_LVWIREFORMAT_LENGTH) ///< Number of bytes to encode LVVE_Tx ControlParameters in LVWireFormat.

+

+/**

+* @def LVVIDHEADER_HEADERVERSION_DEFAULT

+* Default of HeaderVersion

+* @see LVVIDHeader_ControlParams_st

+*/

+#define LVVIDHEADER_HEADERVERSION_DEFAULT (3)

+/**

+* @def LVVIDHEADER_HEADERVERSION_MIN

+* MinValue of HeaderVersion

+* @see LVVIDHeader_ControlParams_st

+*/

+#define LVVIDHEADER_HEADERVERSION_MIN (0)

+/**

+* @def LVVIDHEADER_HEADERVERSION_MAX

+* MaxValue of HeaderVersion

+* @see LVVIDHeader_ControlParams_st

+*/

+#define LVVIDHEADER_HEADERVERSION_MAX (255)

+

+/**

+* @def LVVIDHEADER_BASELINEVERSION_DEFAULT

+* Default of BaselineVersion

+* @see LVVIDHeader_ControlParams_st

+*/

+#define LVVIDHEADER_BASELINEVERSION_DEFAULT (51906816)

+/**

+* @def LVVIDHEADER_BASELINEVERSION_MIN

+* MinValue of BaselineVersion

+* @see LVVIDHeader_ControlParams_st

+*/

+#define LVVIDHEADER_BASELINEVERSION_MIN (1)

+/**

+* @def LVVIDHEADER_BASELINEVERSION_MAX

+* MaxValue of BaselineVersion

+* @see LVVIDHeader_ControlParams_st

+*/

+#define LVVIDHEADER_BASELINEVERSION_MAX (4294967295)

+

+/**

+* @def LVVIDHEADER_LVVE_RX_ALGOMASK1_DEFAULT

+* Default of LVVE_Rx_AlgoMask1

+* @see LVVIDHeader_ControlParams_st

+*/

+#define LVVIDHEADER_LVVE_RX_ALGOMASK1_DEFAULT (LVVIDHEADER_LVVE_RX_MASK1_BM_MAX)

+

+/**

+* @def LVVIDHEADER_LVVE_RX_ALGOMASK2_DEFAULT

+* Default of LVVE_Rx_AlgoMask2

+* @see LVVIDHeader_ControlParams_st

+*/

+#define LVVIDHEADER_LVVE_RX_ALGOMASK2_DEFAULT (LVVIDHEADER_LVVE_RX_MASK2_BM_MAX)

+

+/**

+* @def LVVIDHEADER_LVVE_TX_ALGOMASK1_DEFAULT

+* Default of LVVE_Tx_AlgoMask1

+* @see LVVIDHeader_ControlParams_st

+*/

+#define LVVIDHEADER_LVVE_TX_ALGOMASK1_DEFAULT (LVVIDHEADER_LVVE_TX_MASK1_BM_MAX)

+

+/**

+* @def LVVIDHEADER_LVVE_TX_ALGOMASK2_DEFAULT

+* Default of LVVE_Tx_AlgoMask2

+* @see LVVIDHeader_ControlParams_st

+*/

+#define LVVIDHEADER_LVVE_TX_ALGOMASK2_DEFAULT (LVVIDHEADER_LVVE_TX_MASK2_BM_MAX)

+

+/**

+* @def LVVIDHEADER_LVVE_CONFIG_ALGOMASK1_DEFAULT

+* Default of LVVE_Config_AlgoMask1

+* @see LVVIDHeader_ControlParams_st

+*/

+#define LVVIDHEADER_LVVE_CONFIG_ALGOMASK1_DEFAULT (LVVIDHEADER_CONFIGURATIONS_MASK1_BM_MAX)

+

+/**

+* @def LVVIDHEADER_LVVE_CONFIG_ALGOMASK2_DEFAULT

+* Default of LVVE_Config_AlgoMask2

+* @see LVVIDHeader_ControlParams_st

+*/

+#define LVVIDHEADER_LVVE_CONFIG_ALGOMASK2_DEFAULT (LVVIDHEADER_CONFIGURATIONS_MASK2_BM_MAX)

+

+/**

+* @def LVVIDHEADER_MESSAGEID_DEFAULT

+* Default of MessageID

+* @see LVVIDHeader_ControlParams_st

+*/

+#define LVVIDHEADER_MESSAGEID_DEFAULT (LVVE_RX_PRESET)

+

+/**

+* @def LVVIDHEADER_SAMPLERATE_DEFAULT

+* Default of SampleRate

+* @see LVVIDHeader_ControlParams_st

+*/

+#define LVVIDHEADER_SAMPLERATE_DEFAULT (LVM_FS_8000)

+

+/**

+* @def LVVIDHEADER_VOLUMEINDEX_DEFAULT

+* Default of VolumeIndex

+* @see LVVIDHeader_ControlParams_st

+*/

+#define LVVIDHEADER_VOLUMEINDEX_DEFAULT (0)

+/**

+* @def LVVIDHEADER_VOLUMEINDEX_MIN

+* MinValue of VolumeIndex

+* @see LVVIDHeader_ControlParams_st

+*/

+#define LVVIDHEADER_VOLUMEINDEX_MIN (0)

+/**

+* @def LVVIDHEADER_VOLUMEINDEX_MAX

+* MaxValue of VolumeIndex

+* @see LVVIDHeader_ControlParams_st

+*/

+#define LVVIDHEADER_VOLUMEINDEX_MAX (255)

+

+/**

+* @def LVVIDHEADER_NUMVOLUMES_DEFAULT

+* Default of NumVolumes

+* @see LVVIDHeader_ControlParams_st

+*/

+#define LVVIDHEADER_NUMVOLUMES_DEFAULT (1)

+/**

+* @def LVVIDHEADER_NUMVOLUMES_MIN

+* MinValue of NumVolumes

+* @see LVVIDHeader_ControlParams_st

+*/

+#define LVVIDHEADER_NUMVOLUMES_MIN (0)

+/**

+* @def LVVIDHEADER_NUMVOLUMES_MAX

+* MaxValue of NumVolumes

+* @see LVVIDHeader_ControlParams_st

+*/

+#define LVVIDHEADER_NUMVOLUMES_MAX (255)

+

+/**

+* @def LVVC_OPERATINGMODE_DEFAULT

+* Default of OperatingMode

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_OPERATINGMODE_DEFAULT (LVM_MODE_OFF)

+

+/**

+* @def LVVC_MODE_DEFAULT

+* Default of mode

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_MODE_DEFAULT (0)

+

+/**

+* @def LVVC_GAIN_LIN_MAX_DEFAULT

+* Default of Gain_Lin_Max

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_GAIN_LIN_MAX_DEFAULT (1286)

+/**

+* @def LVVC_GAIN_LIN_MAX_MIN

+* MinValue of Gain_Lin_Max

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_GAIN_LIN_MAX_MIN (512)

+/**

+* @def LVVC_GAIN_LIN_MAX_MAX

+* MaxValue of Gain_Lin_Max

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_GAIN_LIN_MAX_MAX (32767)

+

+/**

+* @def LVVC_NOISE_SENSITIVITY_DEFAULT

+* Default of Noise_Sensitivity

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_NOISE_SENSITIVITY_DEFAULT (20000)

+/**

+* @def LVVC_NOISE_SENSITIVITY_MIN

+* MinValue of Noise_Sensitivity

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_NOISE_SENSITIVITY_MIN (-6709)

+/**

+* @def LVVC_NOISE_SENSITIVITY_MAX

+* MaxValue of Noise_Sensitivity

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_NOISE_SENSITIVITY_MAX (32767)

+

+/**

+* @def LVVC_AVL_TARGET_LEVEL_LIN_DEFAULT

+* Default of AVL_Target_level_lin

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_AVL_TARGET_LEVEL_LIN_DEFAULT (16384)

+/**

+* @def LVVC_AVL_TARGET_LEVEL_LIN_MIN

+* MinValue of AVL_Target_level_lin

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_AVL_TARGET_LEVEL_LIN_MIN (0)

+/**

+* @def LVVC_AVL_TARGET_LEVEL_LIN_MAX

+* MaxValue of AVL_Target_level_lin

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_AVL_TARGET_LEVEL_LIN_MAX (32767)

+

+/**

+* @def LVVC_AVL_MINGAINLIN_DEFAULT

+* Default of AVL_MinGainLin

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_AVL_MINGAINLIN_DEFAULT (256)

+/**

+* @def LVVC_AVL_MINGAINLIN_MIN

+* MinValue of AVL_MinGainLin

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_AVL_MINGAINLIN_MIN (0)

+/**

+* @def LVVC_AVL_MINGAINLIN_MAX

+* MaxValue of AVL_MinGainLin

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_AVL_MINGAINLIN_MAX (512)

+

+/**

+* @def LVVC_AVL_MAXGAINLIN_DEFAULT

+* Default of AVL_MaxGainLin

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_AVL_MAXGAINLIN_DEFAULT (8192)

+/**

+* @def LVVC_AVL_MAXGAINLIN_MIN

+* MinValue of AVL_MaxGainLin

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_AVL_MAXGAINLIN_MIN (512)

+/**

+* @def LVVC_AVL_MAXGAINLIN_MAX

+* MaxValue of AVL_MaxGainLin

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_AVL_MAXGAINLIN_MAX (32767)

+

+/**

+* @def LVVC_AVL_NOMINALGAIN_DEFAULT

+* Default of AVL_NominalGain

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_AVL_NOMINALGAIN_DEFAULT (512)

+/**

+* @def LVVC_AVL_NOMINALGAIN_MIN

+* MinValue of AVL_NominalGain

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_AVL_NOMINALGAIN_MIN (0)

+/**

+* @def LVVC_AVL_NOMINALGAIN_MAX

+* MaxValue of AVL_NominalGain

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_AVL_NOMINALGAIN_MAX (32767)

+

+/**

+* @def LVVC_AVL_ATTACK_DEFAULT

+* Default of AVL_Attack

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_AVL_ATTACK_DEFAULT (12055)

+/**

+* @def LVVC_AVL_ATTACK_MIN

+* MinValue of AVL_Attack

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_AVL_ATTACK_MIN (0)

+/**

+* @def LVVC_AVL_ATTACK_MAX

+* MaxValue of AVL_Attack

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_AVL_ATTACK_MAX (32767)

+

+/**

+* @def LVVC_AVL_RELEASE_DEFAULT

+* Default of AVL_Release

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_AVL_RELEASE_DEFAULT (32604)

+/**

+* @def LVVC_AVL_RELEASE_MIN

+* MinValue of AVL_Release

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_AVL_RELEASE_MIN (0)

+/**

+* @def LVVC_AVL_RELEASE_MAX

+* MaxValue of AVL_Release

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_AVL_RELEASE_MAX (32767)

+

+/**

+* @def LVVC_AVL_RELEASEMAX_DEFAULT

+* Default of AVL_ReleaseMax

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_AVL_RELEASEMAX_DEFAULT (32441)

+/**

+* @def LVVC_AVL_RELEASEMAX_MIN

+* MinValue of AVL_ReleaseMax

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_AVL_RELEASEMAX_MIN (0)

+/**

+* @def LVVC_AVL_RELEASEMAX_MAX

+* MaxValue of AVL_ReleaseMax

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_AVL_RELEASEMAX_MAX (32767)

+

+/**

+* @def LVVC_AVL_LIMIT_MAXOUTPUTLIN_DEFAULT

+* Default of AVL_Limit_MaxOutputLin

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_AVL_LIMIT_MAXOUTPUTLIN_DEFAULT (23170)

+/**

+* @def LVVC_AVL_LIMIT_MAXOUTPUTLIN_MIN

+* MinValue of AVL_Limit_MaxOutputLin

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_AVL_LIMIT_MAXOUTPUTLIN_MIN (0)

+/**

+* @def LVVC_AVL_LIMIT_MAXOUTPUTLIN_MAX

+* MaxValue of AVL_Limit_MaxOutputLin

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_AVL_LIMIT_MAXOUTPUTLIN_MAX (32767)

+

+/**

+* @def LVVC_SPDETECT_THRESHOLD_DEFAULT

+* Default of SpDetect_Threshold

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_SPDETECT_THRESHOLD_DEFAULT (1024)

+/**

+* @def LVVC_SPDETECT_THRESHOLD_MIN

+* MinValue of SpDetect_Threshold

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_SPDETECT_THRESHOLD_MIN (0)

+/**

+* @def LVVC_SPDETECT_THRESHOLD_MAX

+* MaxValue of SpDetect_Threshold

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_SPDETECT_THRESHOLD_MAX (32767)

+

+/**

+* @def LVFENS_OPERATINGMODE_DEFAULT

+* Default of OperatingMode

+* @see LVFENS_ControlParams_st

+*/

+#define LVFENS_OPERATINGMODE_DEFAULT (LVM_MODE_OFF)

+

+/**

+* @def LVFENS_FENS_LIMIT_NS_DEFAULT

+* Default of FENS_limit_NS

+* @see LVFENS_ControlParams_st

+*/

+#define LVFENS_FENS_LIMIT_NS_DEFAULT (10976)

+/**

+* @def LVFENS_FENS_LIMIT_NS_MIN

+* MinValue of FENS_limit_NS

+* @see LVFENS_ControlParams_st

+*/

+#define LVFENS_FENS_LIMIT_NS_MIN (0)

+/**

+* @def LVFENS_FENS_LIMIT_NS_MAX

+* MaxValue of FENS_limit_NS

+* @see LVFENS_ControlParams_st

+*/

+#define LVFENS_FENS_LIMIT_NS_MAX (32767)

+

+/**

+* @def LVFENS_MODE_DEFAULT

+* Default of Mode

+* @see LVFENS_ControlParams_st

+*/

+#define LVFENS_MODE_DEFAULT (0)

+

+/**

+* @def LVWM_OPERATINGMODE_DEFAULT

+* Default of OperatingMode

+* @see LVWM_ControlParams_st

+*/

+#define LVWM_OPERATINGMODE_DEFAULT (LVM_MODE_OFF)

+

+/**

+* @def LVWM_MODE_DEFAULT

+* Default of mode

+* @see LVWM_ControlParams_st

+*/

+#define LVWM_MODE_DEFAULT (7)

+

+/**

+* @def LVWM_AVL_TARGET_LEVEL_LIN_DEFAULT

+* Default of AVL_Target_level_lin

+* @see LVWM_ControlParams_st

+*/

+#define LVWM_AVL_TARGET_LEVEL_LIN_DEFAULT (16384)

+/**

+* @def LVWM_AVL_TARGET_LEVEL_LIN_MIN

+* MinValue of AVL_Target_level_lin

+* @see LVWM_ControlParams_st

+*/

+#define LVWM_AVL_TARGET_LEVEL_LIN_MIN (0)

+/**

+* @def LVWM_AVL_TARGET_LEVEL_LIN_MAX

+* MaxValue of AVL_Target_level_lin

+* @see LVWM_ControlParams_st

+*/

+#define LVWM_AVL_TARGET_LEVEL_LIN_MAX (32767)

+

+/**

+* @def LVWM_AVL_MINGAINLIN_DEFAULT

+* Default of AVL_MinGainLin

+* @see LVWM_ControlParams_st

+*/

+#define LVWM_AVL_MINGAINLIN_DEFAULT (128)

+/**

+* @def LVWM_AVL_MINGAINLIN_MIN

+* MinValue of AVL_MinGainLin

+* @see LVWM_ControlParams_st

+*/

+#define LVWM_AVL_MINGAINLIN_MIN (0)

+/**

+* @def LVWM_AVL_MINGAINLIN_MAX

+* MaxValue of AVL_MinGainLin

+* @see LVWM_ControlParams_st

+*/

+#define LVWM_AVL_MINGAINLIN_MAX (512)

+

+/**

+* @def LVWM_AVL_MAXGAINLIN_DEFAULT

+* Default of AVL_MaxGainLin

+* @see LVWM_ControlParams_st

+*/

+#define LVWM_AVL_MAXGAINLIN_DEFAULT (8189)

+/**

+* @def LVWM_AVL_MAXGAINLIN_MIN

+* MinValue of AVL_MaxGainLin

+* @see LVWM_ControlParams_st

+*/

+#define LVWM_AVL_MAXGAINLIN_MIN (512)

+/**

+* @def LVWM_AVL_MAXGAINLIN_MAX

+* MaxValue of AVL_MaxGainLin

+* @see LVWM_ControlParams_st

+*/

+#define LVWM_AVL_MAXGAINLIN_MAX (32767)

+

+/**

+* @def LVWM_AVL_ATTACK_DEFAULT

+* Default of AVL_Attack

+* @see LVWM_ControlParams_st

+*/

+#define LVWM_AVL_ATTACK_DEFAULT (25520)

+/**

+* @def LVWM_AVL_ATTACK_MIN

+* MinValue of AVL_Attack

+* @see LVWM_ControlParams_st

+*/

+#define LVWM_AVL_ATTACK_MIN (0)

+/**

+* @def LVWM_AVL_ATTACK_MAX

+* MaxValue of AVL_Attack

+* @see LVWM_ControlParams_st

+*/

+#define LVWM_AVL_ATTACK_MAX (32767)

+

+/**

+* @def LVWM_AVL_RELEASE_DEFAULT

+* Default of AVL_Release

+* @see LVWM_ControlParams_st

+*/

+#define LVWM_AVL_RELEASE_DEFAULT (32685)

+/**

+* @def LVWM_AVL_RELEASE_MIN

+* MinValue of AVL_Release

+* @see LVWM_ControlParams_st

+*/

+#define LVWM_AVL_RELEASE_MIN (0)

+/**

+* @def LVWM_AVL_RELEASE_MAX

+* MaxValue of AVL_Release

+* @see LVWM_ControlParams_st

+*/

+#define LVWM_AVL_RELEASE_MAX (32767)

+

+/**

+* @def LVWM_AVL_LIMIT_MAXOUTPUTLIN_DEFAULT

+* Default of AVL_Limit_MaxOutputLin

+* @see LVWM_ControlParams_st

+*/

+#define LVWM_AVL_LIMIT_MAXOUTPUTLIN_DEFAULT (23197)

+/**

+* @def LVWM_AVL_LIMIT_MAXOUTPUTLIN_MIN

+* MinValue of AVL_Limit_MaxOutputLin

+* @see LVWM_ControlParams_st

+*/

+#define LVWM_AVL_LIMIT_MAXOUTPUTLIN_MIN (0)

+/**

+* @def LVWM_AVL_LIMIT_MAXOUTPUTLIN_MAX

+* MaxValue of AVL_Limit_MaxOutputLin

+* @see LVWM_ControlParams_st

+*/

+#define LVWM_AVL_LIMIT_MAXOUTPUTLIN_MAX (32767)

+

+/**

+* @def LVWM_SPDETECT_THRESHOLD_DEFAULT

+* Default of SpDetect_Threshold

+* @see LVWM_ControlParams_st

+*/

+#define LVWM_SPDETECT_THRESHOLD_DEFAULT (9216)

+/**

+* @def LVWM_SPDETECT_THRESHOLD_MIN

+* MinValue of SpDetect_Threshold

+* @see LVWM_ControlParams_st

+*/

+#define LVWM_SPDETECT_THRESHOLD_MIN (0)

+/**

+* @def LVWM_SPDETECT_THRESHOLD_MAX

+* MaxValue of SpDetect_Threshold

+* @see LVWM_ControlParams_st

+*/

+#define LVWM_SPDETECT_THRESHOLD_MAX (32767)

+

+/**

+* @def LVDRC_OPERATINGMODE_DEFAULT

+* Default of OperatingMode

+* @see LVDRC_ControlParams_st

+*/

+#define LVDRC_OPERATINGMODE_DEFAULT (LVM_MODE_OFF)

+

+/**

+* @def LVDRC_NUMKNEES_DEFAULT

+* Default of NumKnees

+* @see LVDRC_ControlParams_st

+*/

+#define LVDRC_NUMKNEES_DEFAULT (5)

+/**

+* @def LVDRC_NUMKNEES_MIN

+* MinValue of NumKnees

+* @see LVDRC_ControlParams_st

+*/

+#define LVDRC_NUMKNEES_MIN (1)

+/**

+* @def LVDRC_NUMKNEES_MAX

+* MaxValue of NumKnees

+* @see LVDRC_ControlParams_st

+*/

+#define LVDRC_NUMKNEES_MAX (5)

+

+/**

+* @def LVDRC_COMPRESSORCURVEINPUTLEVELS_DEFAULT

+* Default of CompressorCurveInputLevels

+* @see LVDRC_ControlParams_st

+*/

+#define LVDRC_COMPRESSORCURVEINPUTLEVELS_DEFAULT {-96,-70,-50, -24, 0}

+/**

+* @def LVDRC_COMPRESSORCURVEINPUTLEVELS_MIN

+* MinValue of CompressorCurveInputLevels

+* @see LVDRC_ControlParams_st

+*/

+#define LVDRC_COMPRESSORCURVEINPUTLEVELS_MIN (-96)

+/**

+* @def LVDRC_COMPRESSORCURVEINPUTLEVELS_MAX

+* MaxValue of CompressorCurveInputLevels

+* @see LVDRC_ControlParams_st

+*/

+#define LVDRC_COMPRESSORCURVEINPUTLEVELS_MAX (0)

+/**

+* @def LVDRC_COMPRESSORCURVEINPUTLEVELS_LENGTH

+* Length of CompressorCurveInputLevels

+* @see LVDRC_ControlParams_st

+*/

+#define LVDRC_COMPRESSORCURVEINPUTLEVELS_LENGTH (5)

+

+/**

+* @def LVDRC_COMPRESSORCURVEOUTPUTLEVELS_DEFAULT

+* Default of CompressorCurveOutputLevels

+* @see LVDRC_ControlParams_st

+*/

+#define LVDRC_COMPRESSORCURVEOUTPUTLEVELS_DEFAULT {-96,-70,-38,-12,0}

+/**

+* @def LVDRC_COMPRESSORCURVEOUTPUTLEVELS_MIN

+* MinValue of CompressorCurveOutputLevels

+* @see LVDRC_ControlParams_st

+*/

+#define LVDRC_COMPRESSORCURVEOUTPUTLEVELS_MIN (-96)

+/**

+* @def LVDRC_COMPRESSORCURVEOUTPUTLEVELS_MAX

+* MaxValue of CompressorCurveOutputLevels

+* @see LVDRC_ControlParams_st

+*/

+#define LVDRC_COMPRESSORCURVEOUTPUTLEVELS_MAX (0)

+/**

+* @def LVDRC_COMPRESSORCURVEOUTPUTLEVELS_LENGTH

+* Length of CompressorCurveOutputLevels

+* @see LVDRC_ControlParams_st

+*/

+#define LVDRC_COMPRESSORCURVEOUTPUTLEVELS_LENGTH (5)

+

+/**

+* @def LVDRC_ATTACKTIME_DEFAULT

+* Default of AttackTime

+* @see LVDRC_ControlParams_st

+*/

+#define LVDRC_ATTACKTIME_DEFAULT (50)

+/**

+* @def LVDRC_ATTACKTIME_MIN

+* MinValue of AttackTime

+* @see LVDRC_ControlParams_st

+*/

+#define LVDRC_ATTACKTIME_MIN (0)

+/**

+* @def LVDRC_ATTACKTIME_MAX

+* MaxValue of AttackTime

+* @see LVDRC_ControlParams_st

+*/

+#define LVDRC_ATTACKTIME_MAX (32767)

+

+/**

+* @def LVDRC_RELEASETIME_DEFAULT

+* Default of ReleaseTime

+* @see LVDRC_ControlParams_st

+*/

+#define LVDRC_RELEASETIME_DEFAULT (50)

+/**

+* @def LVDRC_RELEASETIME_MIN

+* MinValue of ReleaseTime

+* @see LVDRC_ControlParams_st

+*/

+#define LVDRC_RELEASETIME_MIN (0)

+/**

+* @def LVDRC_RELEASETIME_MAX

+* MaxValue of ReleaseTime

+* @see LVDRC_ControlParams_st

+*/

+#define LVDRC_RELEASETIME_MAX (32767)

+

+/**

+* @def LVDRC_LIMITEROPERATINGMODE_DEFAULT

+* Default of LimiterOperatingMode

+* @see LVDRC_ControlParams_st

+*/

+#define LVDRC_LIMITEROPERATINGMODE_DEFAULT (LVM_MODE_OFF)

+

+/**

+* @def LVDRC_LIMITLEVEL_DEFAULT

+* Default of LimitLevel

+* @see LVDRC_ControlParams_st

+*/

+#define LVDRC_LIMITLEVEL_DEFAULT (0)

+/**

+* @def LVDRC_LIMITLEVEL_MIN

+* MinValue of LimitLevel

+* @see LVDRC_ControlParams_st

+*/

+#define LVDRC_LIMITLEVEL_MIN (-96)

+/**

+* @def LVDRC_LIMITLEVEL_MAX

+* MaxValue of LimitLevel

+* @see LVDRC_ControlParams_st

+*/

+#define LVDRC_LIMITLEVEL_MAX (0)

+

+/**

+* @def LVNG_OPERATINGMODE_DEFAULT

+* Default of OperatingMode

+* @see LVNG_ControlParams_st

+*/

+#define LVNG_OPERATINGMODE_DEFAULT (LVM_MODE_OFF)

+

+/**

+* @def LVNG_NUMKNEES_DEFAULT

+* Default of NumKnees

+* @see LVNG_ControlParams_st

+*/

+#define LVNG_NUMKNEES_DEFAULT (5)

+/**

+* @def LVNG_NUMKNEES_MIN

+* MinValue of NumKnees

+* @see LVNG_ControlParams_st

+*/

+#define LVNG_NUMKNEES_MIN (1)

+/**

+* @def LVNG_NUMKNEES_MAX

+* MaxValue of NumKnees

+* @see LVNG_ControlParams_st

+*/

+#define LVNG_NUMKNEES_MAX (5)

+

+/**

+* @def LVNG_COMPRESSORCURVEINPUTLEVELS_DEFAULT

+* Default of CompressorCurveInputLevels

+* @see LVNG_ControlParams_st

+*/

+#define LVNG_COMPRESSORCURVEINPUTLEVELS_DEFAULT {-80,-70,-50, -24, 0}

+/**

+* @def LVNG_COMPRESSORCURVEINPUTLEVELS_MIN

+* MinValue of CompressorCurveInputLevels

+* @see LVNG_ControlParams_st

+*/

+#define LVNG_COMPRESSORCURVEINPUTLEVELS_MIN (-96)

+/**

+* @def LVNG_COMPRESSORCURVEINPUTLEVELS_MAX

+* MaxValue of CompressorCurveInputLevels

+* @see LVNG_ControlParams_st

+*/

+#define LVNG_COMPRESSORCURVEINPUTLEVELS_MAX (0)

+/**

+* @def LVNG_COMPRESSORCURVEINPUTLEVELS_LENGTH

+* Length of CompressorCurveInputLevels

+* @see LVNG_ControlParams_st

+*/

+#define LVNG_COMPRESSORCURVEINPUTLEVELS_LENGTH (5)

+

+/**

+* @def LVNG_COMPRESSORCURVEOUTPUTLEVELS_DEFAULT

+* Default of CompressorCurveOutputLevels

+* @see LVNG_ControlParams_st

+*/

+#define LVNG_COMPRESSORCURVEOUTPUTLEVELS_DEFAULT {-96,-80,-50, -24, 0}

+/**

+* @def LVNG_COMPRESSORCURVEOUTPUTLEVELS_MIN

+* MinValue of CompressorCurveOutputLevels

+* @see LVNG_ControlParams_st

+*/

+#define LVNG_COMPRESSORCURVEOUTPUTLEVELS_MIN (-96)

+/**

+* @def LVNG_COMPRESSORCURVEOUTPUTLEVELS_MAX

+* MaxValue of CompressorCurveOutputLevels

+* @see LVNG_ControlParams_st

+*/

+#define LVNG_COMPRESSORCURVEOUTPUTLEVELS_MAX (0)

+/**

+* @def LVNG_COMPRESSORCURVEOUTPUTLEVELS_LENGTH

+* Length of CompressorCurveOutputLevels

+* @see LVNG_ControlParams_st

+*/

+#define LVNG_COMPRESSORCURVEOUTPUTLEVELS_LENGTH (5)

+

+/**

+* @def LVNG_ATTACKTIME_DEFAULT

+* Default of AttackTime

+* @see LVNG_ControlParams_st

+*/

+#define LVNG_ATTACKTIME_DEFAULT (50)

+/**

+* @def LVNG_ATTACKTIME_MIN

+* MinValue of AttackTime

+* @see LVNG_ControlParams_st

+*/

+#define LVNG_ATTACKTIME_MIN (0)

+/**

+* @def LVNG_ATTACKTIME_MAX

+* MaxValue of AttackTime

+* @see LVNG_ControlParams_st

+*/

+#define LVNG_ATTACKTIME_MAX (32767)

+

+/**

+* @def LVNG_RELEASETIME_DEFAULT

+* Default of ReleaseTime

+* @see LVNG_ControlParams_st

+*/

+#define LVNG_RELEASETIME_DEFAULT (50)

+/**

+* @def LVNG_RELEASETIME_MIN

+* MinValue of ReleaseTime

+* @see LVNG_ControlParams_st

+*/

+#define LVNG_RELEASETIME_MIN (0)

+/**

+* @def LVNG_RELEASETIME_MAX

+* MaxValue of ReleaseTime

+* @see LVNG_ControlParams_st

+*/

+#define LVNG_RELEASETIME_MAX (32767)

+

+/**

+* @def LVNLPP_NLPP_LIMIT_DEFAULT

+* Default of NLPP_Limit

+* @see LVNLPP_ControlParams_st

+*/

+#define LVNLPP_NLPP_LIMIT_DEFAULT (0)

+/**

+* @def LVNLPP_NLPP_LIMIT_MIN

+* MinValue of NLPP_Limit

+* @see LVNLPP_ControlParams_st

+*/

+#define LVNLPP_NLPP_LIMIT_MIN (-24)

+/**

+* @def LVNLPP_NLPP_LIMIT_MAX

+* MaxValue of NLPP_Limit

+* @see LVNLPP_ControlParams_st

+*/

+#define LVNLPP_NLPP_LIMIT_MAX (0)

+

+/**

+* @def LVNLPP_NLPP_HPF_CORNERFREQ_DEFAULT

+* Default of NLPP_HPF_CornerFreq

+* @see LVNLPP_ControlParams_st

+*/

+#define LVNLPP_NLPP_HPF_CORNERFREQ_DEFAULT (50)

+/**

+* @def LVNLPP_NLPP_HPF_CORNERFREQ_MIN

+* MinValue of NLPP_HPF_CornerFreq

+* @see LVNLPP_ControlParams_st

+*/

+#define LVNLPP_NLPP_HPF_CORNERFREQ_MIN (50)

+/**

+* @def LVNLPP_NLPP_HPF_CORNERFREQ_MAX

+* MaxValue of NLPP_HPF_CornerFreq

+* @see LVNLPP_ControlParams_st

+*/

+#define LVNLPP_NLPP_HPF_CORNERFREQ_MAX (1000)

+

+/**

+* @def LVEQ_EQ_LENGTH_DEFAULT

+* Default of EQ_Length

+* @see LVEQ_ControlParams_st

+*/

+#define LVEQ_EQ_LENGTH_DEFAULT (32)

+/**

+* @def LVEQ_EQ_LENGTH_MIN

+* MinValue of EQ_Length

+* @see LVEQ_ControlParams_st

+*/

+#define LVEQ_EQ_LENGTH_MIN (8)

+/**

+* @def LVEQ_EQ_LENGTH_MAX

+* MaxValue of EQ_Length

+* @see LVEQ_ControlParams_st

+*/

+#define LVEQ_EQ_LENGTH_MAX (32)

+

+/**

+* @def LVEQ_EQ_COEFS_DEFAULT

+* Default of EQ_Coefs

+* @see LVEQ_ControlParams_st

+*/

+#define LVEQ_EQ_COEFS_DEFAULT {4096,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}

+/**

+* @def LVEQ_EQ_COEFS_MIN

+* MinValue of EQ_Coefs

+* @see LVEQ_ControlParams_st

+*/

+#define LVEQ_EQ_COEFS_MIN (-32768)

+/**

+* @def LVEQ_EQ_COEFS_MAX

+* MaxValue of EQ_Coefs

+* @see LVEQ_ControlParams_st

+*/

+#define LVEQ_EQ_COEFS_MAX (32767)

+/**

+* @def LVEQ_EQ_COEFS_LENGTH

+* Length of EQ_Coefs

+* @see LVEQ_ControlParams_st

+*/

+#define LVEQ_EQ_COEFS_LENGTH (32)

+

+/**

+* @def LVVOL_VOL_OPERATINGMODE_DEFAULT

+* Default of VOL_OperatingMode

+* @see LVVOL_ControlParams_st

+*/

+#define LVVOL_VOL_OPERATINGMODE_DEFAULT (LVM_MODE_OFF)

+

+/**

+* @def LVVOL_VOL_GAIN_DEFAULT

+* Default of VOL_Gain

+* @see LVVOL_ControlParams_st

+*/

+#define LVVOL_VOL_GAIN_DEFAULT (0)

+/**

+* @def LVVOL_VOL_GAIN_MIN

+* MinValue of VOL_Gain

+* @see LVVOL_ControlParams_st

+*/

+#define LVVOL_VOL_GAIN_MIN (-96)

+/**

+* @def LVVOL_VOL_GAIN_MAX

+* MaxValue of VOL_Gain

+* @see LVVOL_ControlParams_st

+*/

+#define LVVOL_VOL_GAIN_MAX (24)

+

+/**

+* @def LVHPF_HPF_OPERATINGMODE_DEFAULT

+* Default of HPF_OperatingMode

+* @see LVHPF_ControlParams_st

+*/

+#define LVHPF_HPF_OPERATINGMODE_DEFAULT (LVM_MODE_OFF)

+

+/**

+* @def LVHPF_HPF_CORNERFREQ_DEFAULT

+* Default of HPF_CornerFreq

+* @see LVHPF_ControlParams_st

+*/

+#define LVHPF_HPF_CORNERFREQ_DEFAULT (50)

+/**

+* @def LVHPF_HPF_CORNERFREQ_MIN

+* MinValue of HPF_CornerFreq

+* @see LVHPF_ControlParams_st

+*/

+#define LVHPF_HPF_CORNERFREQ_MIN (50)

+/**

+* @def LVHPF_HPF_CORNERFREQ_MAX

+* MaxValue of HPF_CornerFreq

+* @see LVHPF_ControlParams_st

+*/

+#define LVHPF_HPF_CORNERFREQ_MAX (1500)

+

+/**

+* @def LVMUTE_MUTE_DEFAULT

+* Default of Mute

+* @see LVMUTE_ControlParams_st

+*/

+#define LVMUTE_MUTE_DEFAULT (LVM_MODE_OFF)

+

+/**

+* @def LVVE_RX_OPERATINGMODE_DEFAULT

+* Default of OperatingMode

+* @see LVVE_Rx_ControlParams_st

+*/

+#define LVVE_RX_OPERATINGMODE_DEFAULT (LVVE_RX_MODE_OFF)

+

+/**

+* @def LVVE_RX_MUTE_DEFAULT

+* Default of Mute

+* @see LVVE_Rx_ControlParams_st

+*/

+#define LVVE_RX_MUTE_DEFAULT (LVM_MODE_OFF)

+

+/**

+* @def LVVE_RX_VOL_OPERATINGMODE_DEFAULT

+* Default of VOL_OperatingMode

+* @see LVVE_Rx_ControlParams_st

+*/

+#define LVVE_RX_VOL_OPERATINGMODE_DEFAULT (LVM_MODE_OFF)

+

+/**

+* @def LVVE_RX_VOL_GAIN_DEFAULT

+* Default of VOL_Gain

+* @see LVVE_Rx_ControlParams_st

+*/

+#define LVVE_RX_VOL_GAIN_DEFAULT (0)

+/**

+* @def LVVE_RX_VOL_GAIN_MIN

+* MinValue of VOL_Gain

+* @see LVVE_Rx_ControlParams_st

+*/

+#define LVVE_RX_VOL_GAIN_MIN (-96)

+/**

+* @def LVVE_RX_VOL_GAIN_MAX

+* MaxValue of VOL_Gain

+* @see LVVE_Rx_ControlParams_st

+*/

+#define LVVE_RX_VOL_GAIN_MAX (24)

+

+

+/**

+* @def LVVE_RX_NLPP_OPERATINGMODE_DEFAULT

+* Default of NLPP_OperatingMode

+* @see LVVE_Rx_ControlParams_st

+*/

+#define LVVE_RX_NLPP_OPERATINGMODE_DEFAULT (LVM_MODE_OFF)

+

+

+

+/**

+* @def LVVE_RX_EQ_OPERATINGMODE_DEFAULT

+* Default of EQ_OperatingMode

+* @see LVVE_Rx_ControlParams_st

+*/

+#define LVVE_RX_EQ_OPERATINGMODE_DEFAULT (LVM_MODE_OFF)

+

+

+

+/**

+* @def LVVE_RX_HPF_OPERATINGMODE_DEFAULT

+* Default of HPF_OperatingMode

+* @see LVVE_Rx_ControlParams_st

+*/

+#define LVVE_RX_HPF_OPERATINGMODE_DEFAULT (LVM_MODE_OFF)

+

+/**

+* @def LVVE_RX_HPF_CORNERFREQ_DEFAULT

+* Default of HPF_CornerFreq

+* @see LVVE_Rx_ControlParams_st

+*/

+#define LVVE_RX_HPF_CORNERFREQ_DEFAULT (50)

+/**

+* @def LVVE_RX_HPF_CORNERFREQ_MIN

+* MinValue of HPF_CornerFreq

+* @see LVVE_Rx_ControlParams_st

+*/

+#define LVVE_RX_HPF_CORNERFREQ_MIN (50)

+/**

+* @def LVVE_RX_HPF_CORNERFREQ_MAX

+* MaxValue of HPF_CornerFreq

+* @see LVVE_Rx_ControlParams_st

+*/

+#define LVVE_RX_HPF_CORNERFREQ_MAX (1500)

+

+

+

+/**

+* @def LVNV_OPERATINGMODE_DEFAULT

+* Default of OperatingMode

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_OPERATINGMODE_DEFAULT (LVM_MODE_OFF)

+

+/**

+* @def LVNV_MODE_DEFAULT

+* Default of Mode

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_MODE_DEFAULT (18935)

+

+/**

+* @def LVNV_MODE2_DEFAULT

+* Default of Mode2

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_MODE2_DEFAULT (14)

+

+/**

+* @def LVNV_TUNING_MODE_DEFAULT

+* Default of Tuning_mode

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_TUNING_MODE_DEFAULT (0)

+

+/**

+* @def LVNV_INPUT_GAIN_MIC0_DEFAULT

+* Default of Input_Gain_Mic0

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_INPUT_GAIN_MIC0_DEFAULT (8192)

+/**

+* @def LVNV_INPUT_GAIN_MIC0_MIN

+* MinValue of Input_Gain_Mic0

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_INPUT_GAIN_MIC0_MIN (0)

+/**

+* @def LVNV_INPUT_GAIN_MIC0_MAX

+* MaxValue of Input_Gain_Mic0

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_INPUT_GAIN_MIC0_MAX (32767)

+

+/**

+* @def LVNV_INPUT_GAIN_MIC1_DEFAULT

+* Default of Input_Gain_Mic1

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_INPUT_GAIN_MIC1_DEFAULT (8192)

+/**

+* @def LVNV_INPUT_GAIN_MIC1_MIN

+* MinValue of Input_Gain_Mic1

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_INPUT_GAIN_MIC1_MIN (0)

+/**

+* @def LVNV_INPUT_GAIN_MIC1_MAX

+* MaxValue of Input_Gain_Mic1

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_INPUT_GAIN_MIC1_MAX (32767)

+

+/**

+* @def LVNV_OUTPUT_GAIN_DEFAULT

+* Default of Output_Gain

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_OUTPUT_GAIN_DEFAULT (2048)

+/**

+* @def LVNV_OUTPUT_GAIN_MIN

+* MinValue of Output_Gain

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_OUTPUT_GAIN_MIN (0)

+/**

+* @def LVNV_OUTPUT_GAIN_MAX

+* MaxValue of Output_Gain

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_OUTPUT_GAIN_MAX (32767)

+

+/**

+* @def LVNV_NLMS0_LB_TAPS_DEFAULT

+* Default of NLMS0_LB_taps

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS0_LB_TAPS_DEFAULT (32)

+/**

+* @def LVNV_NLMS0_LB_TAPS_MIN

+* MinValue of NLMS0_LB_taps

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS0_LB_TAPS_MIN (16)

+/**

+* @def LVNV_NLMS0_LB_TAPS_MAX

+* MaxValue of NLMS0_LB_taps

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS0_LB_TAPS_MAX (64)

+

+/**

+* @def LVNV_NLMS0_LB_TWOALPHA_DEFAULT

+* Default of NLMS0_LB_twoalpha

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS0_LB_TWOALPHA_DEFAULT (8192)

+/**

+* @def LVNV_NLMS0_LB_TWOALPHA_MIN

+* MinValue of NLMS0_LB_twoalpha

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS0_LB_TWOALPHA_MIN (0)

+/**

+* @def LVNV_NLMS0_LB_TWOALPHA_MAX

+* MaxValue of NLMS0_LB_twoalpha

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS0_LB_TWOALPHA_MAX (32767)

+

+/**

+* @def LVNV_NLMS0_LB_ERL_DEFAULT

+* Default of NLMS0_LB_erl

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS0_LB_ERL_DEFAULT (1000)

+/**

+* @def LVNV_NLMS0_LB_ERL_MIN

+* MinValue of NLMS0_LB_erl

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS0_LB_ERL_MIN (64)

+/**

+* @def LVNV_NLMS0_LB_ERL_MAX

+* MaxValue of NLMS0_LB_erl

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS0_LB_ERL_MAX (32767)

+

+/**

+* @def LVNV_NLMS0_HB_TAPS_DEFAULT

+* Default of NLMS0_HB_taps

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS0_HB_TAPS_DEFAULT (24)

+/**

+* @def LVNV_NLMS0_HB_TAPS_MIN

+* MinValue of NLMS0_HB_taps

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS0_HB_TAPS_MIN (16)

+/**

+* @def LVNV_NLMS0_HB_TAPS_MAX

+* MaxValue of NLMS0_HB_taps

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS0_HB_TAPS_MAX (64)

+

+/**

+* @def LVNV_NLMS0_HB_TWOALPHA_DEFAULT

+* Default of NLMS0_HB_twoalpha

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS0_HB_TWOALPHA_DEFAULT (8192)

+/**

+* @def LVNV_NLMS0_HB_TWOALPHA_MIN

+* MinValue of NLMS0_HB_twoalpha

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS0_HB_TWOALPHA_MIN (0)

+/**

+* @def LVNV_NLMS0_HB_TWOALPHA_MAX

+* MaxValue of NLMS0_HB_twoalpha

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS0_HB_TWOALPHA_MAX (32767)

+

+/**

+* @def LVNV_NLMS0_HB_ERL_DEFAULT

+* Default of NLMS0_HB_erl

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS0_HB_ERL_DEFAULT (1000)

+/**

+* @def LVNV_NLMS0_HB_ERL_MIN

+* MinValue of NLMS0_HB_erl

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS0_HB_ERL_MIN (64)

+/**

+* @def LVNV_NLMS0_HB_ERL_MAX

+* MaxValue of NLMS0_HB_erl

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS0_HB_ERL_MAX (32767)

+

+/**

+* @def LVNV_NLMS0_PRESET_COEFS_DEFAULT

+* Default of NLMS0_preset_coefs

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS0_PRESET_COEFS_DEFAULT (0)

+/**

+* @def LVNV_NLMS0_PRESET_COEFS_MIN

+* MinValue of NLMS0_preset_coefs

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS0_PRESET_COEFS_MIN (0)

+/**

+* @def LVNV_NLMS0_PRESET_COEFS_MAX

+* MaxValue of NLMS0_preset_coefs

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS0_PRESET_COEFS_MAX (2)

+

+/**

+* @def LVNV_NLMS0_OFFSET_DEFAULT

+* Default of NLMS0_offset

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS0_OFFSET_DEFAULT (776)

+/**

+* @def LVNV_NLMS0_OFFSET_MIN

+* MinValue of NLMS0_offset

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS0_OFFSET_MIN (0)

+/**

+* @def LVNV_NLMS0_OFFSET_MAX

+* MaxValue of NLMS0_offset

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS0_OFFSET_MAX (32767)

+

+/**

+* @def LVNV_NLMS1_LB_TAPS_DEFAULT

+* Default of NLMS1_LB_taps

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS1_LB_TAPS_DEFAULT (32)

+/**

+* @def LVNV_NLMS1_LB_TAPS_MIN

+* MinValue of NLMS1_LB_taps

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS1_LB_TAPS_MIN (16)

+/**

+* @def LVNV_NLMS1_LB_TAPS_MAX

+* MaxValue of NLMS1_LB_taps

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS1_LB_TAPS_MAX (32)

+

+/**

+* @def LVNV_NLMS1_LB_TWOALPHA_DEFAULT

+* Default of NLMS1_LB_twoalpha

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS1_LB_TWOALPHA_DEFAULT (8192)

+/**

+* @def LVNV_NLMS1_LB_TWOALPHA_MIN

+* MinValue of NLMS1_LB_twoalpha

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS1_LB_TWOALPHA_MIN (0)

+/**

+* @def LVNV_NLMS1_LB_TWOALPHA_MAX

+* MaxValue of NLMS1_LB_twoalpha

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS1_LB_TWOALPHA_MAX (32767)

+

+/**

+* @def LVNV_NLMS1_LB_ERL_DEFAULT

+* Default of NLMS1_LB_erl

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS1_LB_ERL_DEFAULT (1000)

+/**

+* @def LVNV_NLMS1_LB_ERL_MIN

+* MinValue of NLMS1_LB_erl

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS1_LB_ERL_MIN (64)

+/**

+* @def LVNV_NLMS1_LB_ERL_MAX

+* MaxValue of NLMS1_LB_erl

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS1_LB_ERL_MAX (32767)

+

+/**

+* @def LVNV_NLMS1_HB_TAPS_DEFAULT

+* Default of NLMS1_HB_taps

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS1_HB_TAPS_DEFAULT (24)

+/**

+* @def LVNV_NLMS1_HB_TAPS_MIN

+* MinValue of NLMS1_HB_taps

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS1_HB_TAPS_MIN (16)

+/**

+* @def LVNV_NLMS1_HB_TAPS_MAX

+* MaxValue of NLMS1_HB_taps

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS1_HB_TAPS_MAX (32)

+

+/**

+* @def LVNV_NLMS1_HB_TWOALPHA_DEFAULT

+* Default of NLMS1_HB_twoalpha

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS1_HB_TWOALPHA_DEFAULT (8192)

+/**

+* @def LVNV_NLMS1_HB_TWOALPHA_MIN

+* MinValue of NLMS1_HB_twoalpha

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS1_HB_TWOALPHA_MIN (0)

+/**

+* @def LVNV_NLMS1_HB_TWOALPHA_MAX

+* MaxValue of NLMS1_HB_twoalpha

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS1_HB_TWOALPHA_MAX (32767)

+

+/**

+* @def LVNV_NLMS1_HB_ERL_DEFAULT

+* Default of NLMS1_HB_erl

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS1_HB_ERL_DEFAULT (1000)

+/**

+* @def LVNV_NLMS1_HB_ERL_MIN

+* MinValue of NLMS1_HB_erl

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS1_HB_ERL_MIN (64)

+/**

+* @def LVNV_NLMS1_HB_ERL_MAX

+* MaxValue of NLMS1_HB_erl

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS1_HB_ERL_MAX (32767)

+

+/**

+* @def LVNV_NLMS1_PRESET_COEFS_DEFAULT

+* Default of NLMS1_preset_coefs

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS1_PRESET_COEFS_DEFAULT (0)

+/**

+* @def LVNV_NLMS1_PRESET_COEFS_MIN

+* MinValue of NLMS1_preset_coefs

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS1_PRESET_COEFS_MIN (0)

+/**

+* @def LVNV_NLMS1_PRESET_COEFS_MAX

+* MaxValue of NLMS1_preset_coefs

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS1_PRESET_COEFS_MAX (2)

+

+/**

+* @def LVNV_NLMS1_OFFSET_DEFAULT

+* Default of NLMS1_offset

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS1_OFFSET_DEFAULT (776)

+/**

+* @def LVNV_NLMS1_OFFSET_MIN

+* MinValue of NLMS1_offset

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS1_OFFSET_MIN (0)

+/**

+* @def LVNV_NLMS1_OFFSET_MAX

+* MaxValue of NLMS1_offset

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_NLMS1_OFFSET_MAX (32767)

+

+/**

+* @def LVNV_CAL_MICPOWFLOORMIN_DEFAULT

+* Default of CAL_micPowFloorMin

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_CAL_MICPOWFLOORMIN_DEFAULT (150)

+/**

+* @def LVNV_CAL_MICPOWFLOORMIN_MIN

+* MinValue of CAL_micPowFloorMin

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_CAL_MICPOWFLOORMIN_MIN (0)

+/**

+* @def LVNV_CAL_MICPOWFLOORMIN_MAX

+* MaxValue of CAL_micPowFloorMin

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_CAL_MICPOWFLOORMIN_MAX (32767)

+

+/**

+* @def LVNV_WGTHRESHOLD_DEFAULT

+* Default of WgThreshold

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_WGTHRESHOLD_DEFAULT (32767)

+/**

+* @def LVNV_WGTHRESHOLD_MIN

+* MinValue of WgThreshold

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_WGTHRESHOLD_MIN (0)

+/**

+* @def LVNV_WGTHRESHOLD_MAX

+* MaxValue of WgThreshold

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_WGTHRESHOLD_MAX (32767)

+

+/**

+* @def LVNV_MPTHRESHOLD_DEFAULT

+* Default of MpThreshold

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_MPTHRESHOLD_DEFAULT (6554)

+/**

+* @def LVNV_MPTHRESHOLD_MIN

+* MinValue of MpThreshold

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_MPTHRESHOLD_MIN (0)

+/**

+* @def LVNV_MPTHRESHOLD_MAX

+* MaxValue of MpThreshold

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_MPTHRESHOLD_MAX (32767)

+

+/**

+* @def LVNV_FSB_INIT_TABLE0_DEFAULT

+* Default of FSB_init_table0

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_FSB_INIT_TABLE0_DEFAULT {32767, 0, 0, 0, 0, 0, 0, 0}

+/**

+* @def LVNV_FSB_INIT_TABLE0_MIN

+* MinValue of FSB_init_table0

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_FSB_INIT_TABLE0_MIN (-32768)

+/**

+* @def LVNV_FSB_INIT_TABLE0_MAX

+* MaxValue of FSB_init_table0

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_FSB_INIT_TABLE0_MAX (32767)

+/**

+* @def LVNV_FSB_INIT_TABLE0_LENGTH

+* Length of FSB_init_table0

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_FSB_INIT_TABLE0_LENGTH (8)

+

+/**

+* @def LVNV_FSB_INIT_TABLE1_DEFAULT

+* Default of FSB_init_table1

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_FSB_INIT_TABLE1_DEFAULT {0, 0, 0, 0, 0, 0, 0, 0}

+/**

+* @def LVNV_FSB_INIT_TABLE1_MIN

+* MinValue of FSB_init_table1

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_FSB_INIT_TABLE1_MIN (-32768)

+/**

+* @def LVNV_FSB_INIT_TABLE1_MAX

+* MaxValue of FSB_init_table1

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_FSB_INIT_TABLE1_MAX (32767)

+/**

+* @def LVNV_FSB_INIT_TABLE1_LENGTH

+* Length of FSB_init_table1

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_FSB_INIT_TABLE1_LENGTH (8)

+

+/**

+* @def LVNV_FSB_TAPS_DEFAULT

+* Default of FSB_taps

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_FSB_TAPS_DEFAULT (16)

+/**

+* @def LVNV_FSB_TAPS_MIN

+* MinValue of FSB_taps

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_FSB_TAPS_MIN (8)

+/**

+* @def LVNV_FSB_TAPS_MAX

+* MaxValue of FSB_taps

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_FSB_TAPS_MAX (16)

+

+/**

+* @def LVNV_FSB_TWOALPHA_DEFAULT

+* Default of FSB_twoalpha

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_FSB_TWOALPHA_DEFAULT (655)

+/**

+* @def LVNV_FSB_TWOALPHA_MIN

+* MinValue of FSB_twoalpha

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_FSB_TWOALPHA_MIN (0)

+/**

+* @def LVNV_FSB_TWOALPHA_MAX

+* MaxValue of FSB_twoalpha

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_FSB_TWOALPHA_MAX (32767)

+

+/**

+* @def LVNV_FSB_REF_GAIN_DEFAULT

+* Default of FSB_ref_gain

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_FSB_REF_GAIN_DEFAULT (1024)

+/**

+* @def LVNV_FSB_REF_GAIN_MIN

+* MinValue of FSB_ref_gain

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_FSB_REF_GAIN_MIN (0)

+/**

+* @def LVNV_FSB_REF_GAIN_MAX

+* MaxValue of FSB_ref_gain

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_FSB_REF_GAIN_MAX (32767)

+

+/**

+* @def LVNV_GSC_TAPS_DEFAULT

+* Default of GSC_taps

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_GSC_TAPS_DEFAULT (16)

+/**

+* @def LVNV_GSC_TAPS_MIN

+* MinValue of GSC_taps

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_GSC_TAPS_MIN (8)

+/**

+* @def LVNV_GSC_TAPS_MAX

+* MaxValue of GSC_taps

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_GSC_TAPS_MAX (48)

+

+/**

+* @def LVNV_GSC_TWOALPHA_DEFAULT

+* Default of GSC_twoalpha

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_GSC_TWOALPHA_DEFAULT (1638)

+/**

+* @def LVNV_GSC_TWOALPHA_MIN

+* MinValue of GSC_twoalpha

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_GSC_TWOALPHA_MIN (0)

+/**

+* @def LVNV_GSC_TWOALPHA_MAX

+* MaxValue of GSC_twoalpha

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_GSC_TWOALPHA_MAX (32767)

+

+/**

+* @def LVNV_GSC_ERL_DEFAULT

+* Default of GSC_erl

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_GSC_ERL_DEFAULT (256)

+/**

+* @def LVNV_GSC_ERL_MIN

+* MinValue of GSC_erl

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_GSC_ERL_MIN (64)

+/**

+* @def LVNV_GSC_ERL_MAX

+* MaxValue of GSC_erl

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_GSC_ERL_MAX (32767)

+

+/**

+* @def LVNV_GSC_OFFSET_DEFAULT

+* Default of GSC_offset

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_GSC_OFFSET_DEFAULT (1638)

+/**

+* @def LVNV_GSC_OFFSET_MIN

+* MinValue of GSC_offset

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_GSC_OFFSET_MIN (0)

+/**

+* @def LVNV_GSC_OFFSET_MAX

+* MaxValue of GSC_offset

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_GSC_OFFSET_MAX (32767)

+

+/**

+* @def LVNV_DNNS_ECHOGAMMAHI_DEFAULT

+* Default of DNNS_EchoGammaHi

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_ECHOGAMMAHI_DEFAULT (16384)

+/**

+* @def LVNV_DNNS_ECHOGAMMAHI_MIN

+* MinValue of DNNS_EchoGammaHi

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_ECHOGAMMAHI_MIN (0)

+/**

+* @def LVNV_DNNS_ECHOGAMMAHI_MAX

+* MaxValue of DNNS_EchoGammaHi

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_ECHOGAMMAHI_MAX (32767)

+

+/**

+* @def LVNV_DNNS_ECHOGAMMALO_DEFAULT

+* Default of DNNS_EchoGammaLo

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_ECHOGAMMALO_DEFAULT (8192)

+/**

+* @def LVNV_DNNS_ECHOGAMMALO_MIN

+* MinValue of DNNS_EchoGammaLo

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_ECHOGAMMALO_MIN (0)

+/**

+* @def LVNV_DNNS_ECHOGAMMALO_MAX

+* MaxValue of DNNS_EchoGammaLo

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_ECHOGAMMALO_MAX (32767)

+

+/**

+* @def LVNV_DNNS_ECHOALPHAREV_DEFAULT

+* Default of DNNS_EchoAlphaRev

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_ECHOALPHAREV_DEFAULT (12000)

+/**

+* @def LVNV_DNNS_ECHOALPHAREV_MIN

+* MinValue of DNNS_EchoAlphaRev

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_ECHOALPHAREV_MIN (0)

+/**

+* @def LVNV_DNNS_ECHOALPHAREV_MAX

+* MaxValue of DNNS_EchoAlphaRev

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_ECHOALPHAREV_MAX (32767)

+

+/**

+* @def LVNV_DNNS_ECHOTAILPORTION_DEFAULT

+* Default of DNNS_EchoTailPortion

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_ECHOTAILPORTION_DEFAULT (7000)

+/**

+* @def LVNV_DNNS_ECHOTAILPORTION_MIN

+* MinValue of DNNS_EchoTailPortion

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_ECHOTAILPORTION_MIN (0)

+/**

+* @def LVNV_DNNS_ECHOTAILPORTION_MAX

+* MaxValue of DNNS_EchoTailPortion

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_ECHOTAILPORTION_MAX (32767)

+

+/**

+* @def LVNV_DNNS_NLATTEN_DEFAULT

+* Default of DNNS_NlAtten

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_NLATTEN_DEFAULT (256)

+/**

+* @def LVNV_DNNS_NLATTEN_MIN

+* MinValue of DNNS_NlAtten

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_NLATTEN_MIN (0)

+/**

+* @def LVNV_DNNS_NLATTEN_MAX

+* MaxValue of DNNS_NlAtten

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_NLATTEN_MAX (2048)

+

+/**

+* @def LVNV_DNNS_NOISEGAMMAS_DEFAULT

+* Default of DNNS_NoiseGammaS

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_NOISEGAMMAS_DEFAULT (11470)

+/**

+* @def LVNV_DNNS_NOISEGAMMAS_MIN

+* MinValue of DNNS_NoiseGammaS

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_NOISEGAMMAS_MIN (0)

+/**

+* @def LVNV_DNNS_NOISEGAMMAS_MAX

+* MaxValue of DNNS_NoiseGammaS

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_NOISEGAMMAS_MAX (32767)

+

+/**

+* @def LVNV_DNNS_NOISEGAMMAN_DEFAULT

+* Default of DNNS_NoiseGammaN

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_NOISEGAMMAN_DEFAULT (16384)

+/**

+* @def LVNV_DNNS_NOISEGAMMAN_MIN

+* MinValue of DNNS_NoiseGammaN

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_NOISEGAMMAN_MIN (0)

+/**

+* @def LVNV_DNNS_NOISEGAMMAN_MAX

+* MaxValue of DNNS_NoiseGammaN

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_NOISEGAMMAN_MAX (32767)

+

+/**

+* @def LVNV_DNNS_NOISEGAINMINS_DEFAULT

+* Default of DNNS_NoiseGainMinS

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_NOISEGAINMINS_DEFAULT (11140)

+/**

+* @def LVNV_DNNS_NOISEGAINMINS_MIN

+* MinValue of DNNS_NoiseGainMinS

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_NOISEGAINMINS_MIN (0)

+/**

+* @def LVNV_DNNS_NOISEGAINMINS_MAX

+* MaxValue of DNNS_NoiseGainMinS

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_NOISEGAINMINS_MAX (32767)

+

+/**

+* @def LVNV_DNNS_NOISEGAINMINN_DEFAULT

+* Default of DNNS_NoiseGainMinN

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_NOISEGAINMINN_DEFAULT (6554)

+/**

+* @def LVNV_DNNS_NOISEGAINMINN_MIN

+* MinValue of DNNS_NoiseGainMinN

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_NOISEGAINMINN_MIN (0)

+/**

+* @def LVNV_DNNS_NOISEGAINMINN_MAX

+* MaxValue of DNNS_NoiseGainMinN

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_NOISEGAINMINN_MAX (32767)

+

+/**

+* @def LVNV_DNNS_NOISEBIASCOMP_DEFAULT

+* Default of DNNS_NoiseBiasComp

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_NOISEBIASCOMP_DEFAULT (9830)

+/**

+* @def LVNV_DNNS_NOISEBIASCOMP_MIN

+* MinValue of DNNS_NoiseBiasComp

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_NOISEBIASCOMP_MIN (0)

+/**

+* @def LVNV_DNNS_NOISEBIASCOMP_MAX

+* MaxValue of DNNS_NoiseBiasComp

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_NOISEBIASCOMP_MAX (32767)

+

+/**

+* @def LVNV_DNNS_GAINETA_DEFAULT

+* Default of DNNS_GainEta

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_GAINETA_DEFAULT (256)

+/**

+* @def LVNV_DNNS_GAINETA_MIN

+* MinValue of DNNS_GainEta

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_GAINETA_MIN (0)

+/**

+* @def LVNV_DNNS_GAINETA_MAX

+* MaxValue of DNNS_GainEta

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_GAINETA_MAX (32767)

+

+/**

+* @def LVNV_DNNS_ACTHRESHOLD_DEFAULT

+* Default of DNNS_AcThreshold

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_ACTHRESHOLD_DEFAULT (12288)

+/**

+* @def LVNV_DNNS_ACTHRESHOLD_MIN

+* MinValue of DNNS_AcThreshold

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_ACTHRESHOLD_MIN (0)

+/**

+* @def LVNV_DNNS_ACTHRESHOLD_MAX

+* MaxValue of DNNS_AcThreshold

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_ACTHRESHOLD_MAX (32767)

+

+/**

+* @def LVNV_DNNS_WBTHRESHOLD_DEFAULT

+* Default of DNNS_WbThreshold

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_WBTHRESHOLD_DEFAULT (9216)

+/**

+* @def LVNV_DNNS_WBTHRESHOLD_MIN

+* MinValue of DNNS_WbThreshold

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_WBTHRESHOLD_MIN (0)

+/**

+* @def LVNV_DNNS_WBTHRESHOLD_MAX

+* MaxValue of DNNS_WbThreshold

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_WBTHRESHOLD_MAX (32767)

+

+/**

+* @def LVNV_DNNS_LOSTBEAMTHRESHOLD_DEFAULT

+* Default of DNNS_LostBeamThreshold

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_LOSTBEAMTHRESHOLD_DEFAULT (320)

+/**

+* @def LVNV_DNNS_LOSTBEAMTHRESHOLD_MIN

+* MinValue of DNNS_LostBeamThreshold

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_LOSTBEAMTHRESHOLD_MIN (0)

+/**

+* @def LVNV_DNNS_LOSTBEAMTHRESHOLD_MAX

+* MaxValue of DNNS_LostBeamThreshold

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DNNS_LOSTBEAMTHRESHOLD_MAX (32767)

+

+/**

+* @def LVNV_PCD_BETA_DEFAULT

+* Default of PCD_beta

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PCD_BETA_DEFAULT (230)

+/**

+* @def LVNV_PCD_BETA_MIN

+* MinValue of PCD_beta

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PCD_BETA_MIN (0)

+/**

+* @def LVNV_PCD_BETA_MAX

+* MaxValue of PCD_beta

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PCD_BETA_MAX (32767)

+

+/**

+* @def LVNV_PCD_THRESHOLD_DEFAULT

+* Default of PCD_Threshold

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PCD_THRESHOLD_DEFAULT (26213)

+/**

+* @def LVNV_PCD_THRESHOLD_MIN

+* MinValue of PCD_Threshold

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PCD_THRESHOLD_MIN (0)

+/**

+* @def LVNV_PCD_THRESHOLD_MAX

+* MaxValue of PCD_Threshold

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PCD_THRESHOLD_MAX (32767)

+

+/**

+* @def LVHF_OPERATINGMODE_DEFAULT

+* Default of OperatingMode

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_OPERATINGMODE_DEFAULT (LVM_MODE_OFF)

+

+/**

+* @def LVHF_MODE_DEFAULT

+* Default of Mode

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_MODE_DEFAULT (4607)

+

+/**

+* @def LVHF_TUNINGMODE_DEFAULT

+* Default of TuningMode

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_TUNINGMODE_DEFAULT (0)

+

+/**

+* @def LVHF_INPUTGAIN_DEFAULT

+* Default of InputGain

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_INPUTGAIN_DEFAULT (8192)

+/**

+* @def LVHF_INPUTGAIN_MIN

+* MinValue of InputGain

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_INPUTGAIN_MIN (0)

+/**

+* @def LVHF_INPUTGAIN_MAX

+* MaxValue of InputGain

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_INPUTGAIN_MAX (32767)

+

+/**

+* @def LVHF_OUTPUTGAIN_DEFAULT

+* Default of OutputGain

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_OUTPUTGAIN_DEFAULT (2048)

+/**

+* @def LVHF_OUTPUTGAIN_MIN

+* MinValue of OutputGain

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_OUTPUTGAIN_MIN (0)

+/**

+* @def LVHF_OUTPUTGAIN_MAX

+* MaxValue of OutputGain

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_OUTPUTGAIN_MAX (32767)

+

+/**

+* @def LVHF_NLMS_LIMIT_DEFAULT

+* Default of NLMS_limit

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_NLMS_LIMIT_DEFAULT (0)

+/**

+* @def LVHF_NLMS_LIMIT_MIN

+* MinValue of NLMS_limit

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_NLMS_LIMIT_MIN (-24)

+/**

+* @def LVHF_NLMS_LIMIT_MAX

+* MaxValue of NLMS_limit

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_NLMS_LIMIT_MAX (0)

+

+/**

+* @def LVHF_NLMS_LB_TAPS_DEFAULT

+* Default of NLMS_LB_taps

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_NLMS_LB_TAPS_DEFAULT (64)

+/**

+* @def LVHF_NLMS_LB_TAPS_MIN

+* MinValue of NLMS_LB_taps

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_NLMS_LB_TAPS_MIN (16)

+/**

+* @def LVHF_NLMS_LB_TAPS_MAX

+* MaxValue of NLMS_LB_taps

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_NLMS_LB_TAPS_MAX (200)

+

+/**

+* @def LVHF_NLMS_LB_TWO_ALPHA_DEFAULT

+* Default of NLMS_LB_two_alpha

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_NLMS_LB_TWO_ALPHA_DEFAULT (8192)

+/**

+* @def LVHF_NLMS_LB_TWO_ALPHA_MIN

+* MinValue of NLMS_LB_two_alpha

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_NLMS_LB_TWO_ALPHA_MIN (0)

+/**

+* @def LVHF_NLMS_LB_TWO_ALPHA_MAX

+* MaxValue of NLMS_LB_two_alpha

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_NLMS_LB_TWO_ALPHA_MAX (32767)

+

+/**

+* @def LVHF_NLMS_LB_ERL_DEFAULT

+* Default of NLMS_LB_erl

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_NLMS_LB_ERL_DEFAULT (128)

+/**

+* @def LVHF_NLMS_LB_ERL_MIN

+* MinValue of NLMS_LB_erl

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_NLMS_LB_ERL_MIN (64)

+/**

+* @def LVHF_NLMS_LB_ERL_MAX

+* MaxValue of NLMS_LB_erl

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_NLMS_LB_ERL_MAX (32767)

+

+/**

+* @def LVHF_NLMS_HB_TAPS_DEFAULT

+* Default of NLMS_HB_taps

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_NLMS_HB_TAPS_DEFAULT (64)

+/**

+* @def LVHF_NLMS_HB_TAPS_MIN

+* MinValue of NLMS_HB_taps

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_NLMS_HB_TAPS_MIN (16)

+/**

+* @def LVHF_NLMS_HB_TAPS_MAX

+* MaxValue of NLMS_HB_taps

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_NLMS_HB_TAPS_MAX (136)

+

+/**

+* @def LVHF_NLMS_HB_TWO_ALPHA_DEFAULT

+* Default of NLMS_HB_two_alpha

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_NLMS_HB_TWO_ALPHA_DEFAULT (8192)

+/**

+* @def LVHF_NLMS_HB_TWO_ALPHA_MIN

+* MinValue of NLMS_HB_two_alpha

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_NLMS_HB_TWO_ALPHA_MIN (0)

+/**

+* @def LVHF_NLMS_HB_TWO_ALPHA_MAX

+* MaxValue of NLMS_HB_two_alpha

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_NLMS_HB_TWO_ALPHA_MAX (32767)

+

+/**

+* @def LVHF_NLMS_HB_ERL_DEFAULT

+* Default of NLMS_HB_erl

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_NLMS_HB_ERL_DEFAULT (128)

+/**

+* @def LVHF_NLMS_HB_ERL_MIN

+* MinValue of NLMS_HB_erl

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_NLMS_HB_ERL_MIN (64)

+/**

+* @def LVHF_NLMS_HB_ERL_MAX

+* MaxValue of NLMS_HB_erl

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_NLMS_HB_ERL_MAX (32767)

+

+/**

+* @def LVHF_NLMS_PRESET_COEFS_DEFAULT

+* Default of NLMS_preset_coefs

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_NLMS_PRESET_COEFS_DEFAULT (1)

+/**

+* @def LVHF_NLMS_PRESET_COEFS_MIN

+* MinValue of NLMS_preset_coefs

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_NLMS_PRESET_COEFS_MIN (0)

+/**

+* @def LVHF_NLMS_PRESET_COEFS_MAX

+* MaxValue of NLMS_preset_coefs

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_NLMS_PRESET_COEFS_MAX (2)

+

+/**

+* @def LVHF_NLMS_OFFSET_DEFAULT

+* Default of NLMS_offset

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_NLMS_OFFSET_DEFAULT (767)

+/**

+* @def LVHF_NLMS_OFFSET_MIN

+* MinValue of NLMS_offset

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_NLMS_OFFSET_MIN (0)

+/**

+* @def LVHF_NLMS_OFFSET_MAX

+* MaxValue of NLMS_offset

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_NLMS_OFFSET_MAX (32767)

+

+/**

+* @def LVHF_DENS_TAIL_ALPHA_LB_DEFAULT

+* Default of DENS_tail_alpha_LB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_TAIL_ALPHA_LB_DEFAULT (25395)

+/**

+* @def LVHF_DENS_TAIL_ALPHA_LB_MIN

+* MinValue of DENS_tail_alpha_LB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_TAIL_ALPHA_LB_MIN (0)

+/**

+* @def LVHF_DENS_TAIL_ALPHA_LB_MAX

+* MaxValue of DENS_tail_alpha_LB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_TAIL_ALPHA_LB_MAX (32767)

+

+/**

+* @def LVHF_DENS_TAIL_PORTION_LB_DEFAULT

+* Default of DENS_tail_portion_LB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_TAIL_PORTION_LB_DEFAULT (29491)

+/**

+* @def LVHF_DENS_TAIL_PORTION_LB_MIN

+* MinValue of DENS_tail_portion_LB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_TAIL_PORTION_LB_MIN (0)

+/**

+* @def LVHF_DENS_TAIL_PORTION_LB_MAX

+* MaxValue of DENS_tail_portion_LB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_TAIL_PORTION_LB_MAX (32767)

+

+/**

+* @def LVHF_DENS_GAMMA_E_HIGH_LB_DEFAULT

+* Default of DENS_gamma_e_high_LB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_GAMMA_E_HIGH_LB_DEFAULT (512)

+/**

+* @def LVHF_DENS_GAMMA_E_HIGH_LB_MIN

+* MinValue of DENS_gamma_e_high_LB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_GAMMA_E_HIGH_LB_MIN (0)

+/**

+* @def LVHF_DENS_GAMMA_E_HIGH_LB_MAX

+* MaxValue of DENS_gamma_e_high_LB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_GAMMA_E_HIGH_LB_MAX (32767)

+

+/**

+* @def LVHF_DENS_GAMMA_E_DT_LB_DEFAULT

+* Default of DENS_gamma_e_dt_LB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_GAMMA_E_DT_LB_DEFAULT (256)

+/**

+* @def LVHF_DENS_GAMMA_E_DT_LB_MIN

+* MinValue of DENS_gamma_e_dt_LB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_GAMMA_E_DT_LB_MIN (0)

+/**

+* @def LVHF_DENS_GAMMA_E_DT_LB_MAX

+* MaxValue of DENS_gamma_e_dt_LB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_GAMMA_E_DT_LB_MAX (32767)

+

+/**

+* @def LVHF_DENS_GAMMA_E_LOW_LB_DEFAULT

+* Default of DENS_gamma_e_low_LB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_GAMMA_E_LOW_LB_DEFAULT (256)

+/**

+* @def LVHF_DENS_GAMMA_E_LOW_LB_MIN

+* MinValue of DENS_gamma_e_low_LB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_GAMMA_E_LOW_LB_MIN (0)

+/**

+* @def LVHF_DENS_GAMMA_E_LOW_LB_MAX

+* MaxValue of DENS_gamma_e_low_LB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_GAMMA_E_LOW_LB_MAX (32767)

+

+/**

+* @def LVHF_DENS_NL_ATTEN_LB_DEFAULT

+* Default of DENS_NL_atten_LB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_NL_ATTEN_LB_DEFAULT (0)

+/**

+* @def LVHF_DENS_NL_ATTEN_LB_MIN

+* MinValue of DENS_NL_atten_LB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_NL_ATTEN_LB_MIN (0)

+/**

+* @def LVHF_DENS_NL_ATTEN_LB_MAX

+* MaxValue of DENS_NL_atten_LB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_NL_ATTEN_LB_MAX (2048)

+

+/**

+* @def LVHF_DENS_TAIL_ALPHA_HB_DEFAULT

+* Default of DENS_tail_alpha_HB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_TAIL_ALPHA_HB_DEFAULT (25395)

+/**

+* @def LVHF_DENS_TAIL_ALPHA_HB_MIN

+* MinValue of DENS_tail_alpha_HB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_TAIL_ALPHA_HB_MIN (0)

+/**

+* @def LVHF_DENS_TAIL_ALPHA_HB_MAX

+* MaxValue of DENS_tail_alpha_HB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_TAIL_ALPHA_HB_MAX (32767)

+

+/**

+* @def LVHF_DENS_TAIL_PORTION_HB_DEFAULT

+* Default of DENS_tail_portion_HB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_TAIL_PORTION_HB_DEFAULT (29491)

+/**

+* @def LVHF_DENS_TAIL_PORTION_HB_MIN

+* MinValue of DENS_tail_portion_HB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_TAIL_PORTION_HB_MIN (0)

+/**

+* @def LVHF_DENS_TAIL_PORTION_HB_MAX

+* MaxValue of DENS_tail_portion_HB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_TAIL_PORTION_HB_MAX (32767)

+

+/**

+* @def LVHF_DENS_GAMMA_E_HIGH_HB_DEFAULT

+* Default of DENS_gamma_e_high_HB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_GAMMA_E_HIGH_HB_DEFAULT (512)

+/**

+* @def LVHF_DENS_GAMMA_E_HIGH_HB_MIN

+* MinValue of DENS_gamma_e_high_HB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_GAMMA_E_HIGH_HB_MIN (0)

+/**

+* @def LVHF_DENS_GAMMA_E_HIGH_HB_MAX

+* MaxValue of DENS_gamma_e_high_HB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_GAMMA_E_HIGH_HB_MAX (32767)

+

+/**

+* @def LVHF_DENS_GAMMA_E_DT_HB_DEFAULT

+* Default of DENS_gamma_e_dt_HB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_GAMMA_E_DT_HB_DEFAULT (256)

+/**

+* @def LVHF_DENS_GAMMA_E_DT_HB_MIN

+* MinValue of DENS_gamma_e_dt_HB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_GAMMA_E_DT_HB_MIN (0)

+/**

+* @def LVHF_DENS_GAMMA_E_DT_HB_MAX

+* MaxValue of DENS_gamma_e_dt_HB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_GAMMA_E_DT_HB_MAX (32767)

+

+/**

+* @def LVHF_DENS_GAMMA_E_LOW_HB_DEFAULT

+* Default of DENS_gamma_e_low_HB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_GAMMA_E_LOW_HB_DEFAULT (256)

+/**

+* @def LVHF_DENS_GAMMA_E_LOW_HB_MIN

+* MinValue of DENS_gamma_e_low_HB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_GAMMA_E_LOW_HB_MIN (0)

+/**

+* @def LVHF_DENS_GAMMA_E_LOW_HB_MAX

+* MaxValue of DENS_gamma_e_low_HB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_GAMMA_E_LOW_HB_MAX (32767)

+

+/**

+* @def LVHF_DENS_NL_ATTEN_HB_DEFAULT

+* Default of DENS_NL_atten_HB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_NL_ATTEN_HB_DEFAULT (0)

+/**

+* @def LVHF_DENS_NL_ATTEN_HB_MIN

+* MinValue of DENS_NL_atten_HB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_NL_ATTEN_HB_MIN (0)

+/**

+* @def LVHF_DENS_NL_ATTEN_HB_MAX

+* MaxValue of DENS_NL_atten_HB

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_NL_ATTEN_HB_MAX (2048)

+

+/**

+* @def LVHF_DENS_GAMMA_E_ALPHA_DEFAULT

+* Default of DENS_gamma_e_alpha

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_GAMMA_E_ALPHA_DEFAULT (24000)

+/**

+* @def LVHF_DENS_GAMMA_E_ALPHA_MIN

+* MinValue of DENS_gamma_e_alpha

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_GAMMA_E_ALPHA_MIN (0)

+/**

+* @def LVHF_DENS_GAMMA_E_ALPHA_MAX

+* MaxValue of DENS_gamma_e_alpha

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_GAMMA_E_ALPHA_MAX (32767)

+

+/**

+* @def LVHF_DENS_GAMMA_N_DEFAULT

+* Default of DENS_gamma_n

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_GAMMA_N_DEFAULT (280)

+/**

+* @def LVHF_DENS_GAMMA_N_MIN

+* MinValue of DENS_gamma_n

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_GAMMA_N_MIN (0)

+/**

+* @def LVHF_DENS_GAMMA_N_MAX

+* MaxValue of DENS_gamma_n

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_GAMMA_N_MAX (32767)

+

+/**

+* @def LVHF_DENS_SPDET_NEAR_DEFAULT

+* Default of DENS_spdet_near

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_SPDET_NEAR_DEFAULT (512)

+/**

+* @def LVHF_DENS_SPDET_NEAR_MIN

+* MinValue of DENS_spdet_near

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_SPDET_NEAR_MIN (0)

+/**

+* @def LVHF_DENS_SPDET_NEAR_MAX

+* MaxValue of DENS_spdet_near

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_SPDET_NEAR_MAX (32767)

+

+/**

+* @def LVHF_DENS_SPDET_ACT_DEFAULT

+* Default of DENS_spdet_act

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_SPDET_ACT_DEFAULT (768)

+/**

+* @def LVHF_DENS_SPDET_ACT_MIN

+* MinValue of DENS_spdet_act

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_SPDET_ACT_MIN (0)

+/**

+* @def LVHF_DENS_SPDET_ACT_MAX

+* MaxValue of DENS_spdet_act

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_SPDET_ACT_MAX (32767)

+

+/**

+* @def LVHF_DENS_LIMIT_NS_DEFAULT

+* Default of DENS_limit_ns

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_LIMIT_NS_DEFAULT (10361)

+/**

+* @def LVHF_DENS_LIMIT_NS_MIN

+* MinValue of DENS_limit_ns

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_LIMIT_NS_MIN (0)

+/**

+* @def LVHF_DENS_LIMIT_NS_MAX

+* MaxValue of DENS_limit_ns

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_LIMIT_NS_MAX (32767)

+

+/**

+* @def LVHF_DENS_CNI_GAIN_DEFAULT

+* Default of DENS_CNI_Gain

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_CNI_GAIN_DEFAULT (16384)

+/**

+* @def LVHF_DENS_CNI_GAIN_MIN

+* MinValue of DENS_CNI_Gain

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_CNI_GAIN_MIN (0)

+/**

+* @def LVHF_DENS_CNI_GAIN_MAX

+* MaxValue of DENS_CNI_Gain

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_CNI_GAIN_MAX (32767)

+

+/**

+* @def LVHF_DENS_NFE_BLOCKSIZE_DEFAULT

+* Default of DENS_NFE_blocksize

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_NFE_BLOCKSIZE_DEFAULT (150)

+/**

+* @def LVHF_DENS_NFE_BLOCKSIZE_MIN

+* MinValue of DENS_NFE_blocksize

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_NFE_BLOCKSIZE_MIN (0)

+/**

+* @def LVHF_DENS_NFE_BLOCKSIZE_MAX

+* MaxValue of DENS_NFE_blocksize

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_DENS_NFE_BLOCKSIZE_MAX (32767)

+

+/**

+* @def LVHF_SPDET_FAR_DEFAULT

+* Default of SPDET_far

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_SPDET_FAR_DEFAULT (16384)

+/**

+* @def LVHF_SPDET_FAR_MIN

+* MinValue of SPDET_far

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_SPDET_FAR_MIN (0)

+/**

+* @def LVHF_SPDET_FAR_MAX

+* MaxValue of SPDET_far

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_SPDET_FAR_MAX (32767)

+

+/**

+* @def LVHF_SPDET_MIC_DEFAULT

+* Default of SPDET_mic

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_SPDET_MIC_DEFAULT (16384)

+/**

+* @def LVHF_SPDET_MIC_MIN

+* MinValue of SPDET_mic

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_SPDET_MIC_MIN (0)

+/**

+* @def LVHF_SPDET_MIC_MAX

+* MaxValue of SPDET_mic

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_SPDET_MIC_MAX (32767)

+

+/**

+* @def LVHF_SPDET_X_CLIP_DEFAULT

+* Default of SPDET_x_clip

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_SPDET_X_CLIP_DEFAULT (0)

+/**

+* @def LVHF_SPDET_X_CLIP_MIN

+* MinValue of SPDET_x_clip

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_SPDET_X_CLIP_MIN (0)

+/**

+* @def LVHF_SPDET_X_CLIP_MAX

+* MaxValue of SPDET_x_clip

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_SPDET_X_CLIP_MAX (32767)

+

+/**

+* @def LVHF_PCD_THRESHOLD_DEFAULT

+* Default of PCD_threshold

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_PCD_THRESHOLD_DEFAULT (20000)

+/**

+* @def LVHF_PCD_THRESHOLD_MIN

+* MinValue of PCD_threshold

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_PCD_THRESHOLD_MIN (0)

+/**

+* @def LVHF_PCD_THRESHOLD_MAX

+* MaxValue of PCD_threshold

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_PCD_THRESHOLD_MAX (32767)

+

+/**

+* @def LVHF_PCD_TAPS_DEFAULT

+* Default of PCD_taps

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_PCD_TAPS_DEFAULT (16)

+/**

+* @def LVHF_PCD_TAPS_MIN

+* MinValue of PCD_taps

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_PCD_TAPS_MIN (16)

+/**

+* @def LVHF_PCD_TAPS_MAX

+* MaxValue of PCD_taps

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_PCD_TAPS_MAX (64)

+

+/**

+* @def LVHF_PCD_ERL_DEFAULT

+* Default of PCD_erl

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_PCD_ERL_DEFAULT (64)

+/**

+* @def LVHF_PCD_ERL_MIN

+* MinValue of PCD_erl

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_PCD_ERL_MIN (64)

+/**

+* @def LVHF_PCD_ERL_MAX

+* MaxValue of PCD_erl

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_PCD_ERL_MAX (32767)

+

+/**

+* @def LVHF_PCD_MINIMUM_ERL_DEFAULT

+* Default of PCD_minimum_erl

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_PCD_MINIMUM_ERL_DEFAULT (64)

+/**

+* @def LVHF_PCD_MINIMUM_ERL_MIN

+* MinValue of PCD_minimum_erl

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_PCD_MINIMUM_ERL_MIN (64)

+/**

+* @def LVHF_PCD_MINIMUM_ERL_MAX

+* MaxValue of PCD_minimum_erl

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_PCD_MINIMUM_ERL_MAX (32767)

+

+/**

+* @def LVHF_PCD_ERL_STEP_DEFAULT

+* Default of PCD_erl_step

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_PCD_ERL_STEP_DEFAULT (16800)

+/**

+* @def LVHF_PCD_ERL_STEP_MIN

+* MinValue of PCD_erl_step

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_PCD_ERL_STEP_MIN (16384)

+/**

+* @def LVHF_PCD_ERL_STEP_MAX

+* MaxValue of PCD_erl_step

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_PCD_ERL_STEP_MAX (32767)

+

+/**

+* @def LVHF_PCD_GAMMA_E_RESCUE_DEFAULT

+* Default of PCD_gamma_e_rescue

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_PCD_GAMMA_E_RESCUE_DEFAULT (5000)

+/**

+* @def LVHF_PCD_GAMMA_E_RESCUE_MIN

+* MinValue of PCD_gamma_e_rescue

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_PCD_GAMMA_E_RESCUE_MIN (0)

+/**

+* @def LVHF_PCD_GAMMA_E_RESCUE_MAX

+* MaxValue of PCD_gamma_e_rescue

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_PCD_GAMMA_E_RESCUE_MAX (32767)

+

+/**

+* @def LVBD_BD_OPERATINGMODE_DEFAULT

+* Default of BD_OperatingMode

+* @see LVBD_ControlParams_st

+*/

+#define LVBD_BD_OPERATINGMODE_DEFAULT (LVM_MODE_OFF)

+

+/**

+* @def LVBD_BULKDELAY_DEFAULT

+* Default of BulkDelay

+* @see LVBD_ControlParams_st

+*/

+#define LVBD_BULKDELAY_DEFAULT (0)

+/**

+* @def LVBD_BULKDELAY_MIN

+* MinValue of BulkDelay

+* @see LVBD_ControlParams_st

+*/

+#define LVBD_BULKDELAY_MIN (0)

+/**

+* @def LVBD_BULKDELAY_MAX

+* MaxValue of BulkDelay

+* @see LVBD_ControlParams_st

+*/

+#define LVBD_BULKDELAY_MAX (6400)

+

+/**

+* @def LVBD_BD_GAIN_DEFAULT

+* Default of BD_Gain

+* @see LVBD_ControlParams_st

+*/

+#define LVBD_BD_GAIN_DEFAULT (8192)

+/**

+* @def LVBD_BD_GAIN_MIN

+* MinValue of BD_Gain

+* @see LVBD_ControlParams_st

+*/

+#define LVBD_BD_GAIN_MIN (0)

+/**

+* @def LVBD_BD_GAIN_MAX

+* MaxValue of BD_Gain

+* @see LVBD_ControlParams_st

+*/

+#define LVBD_BD_GAIN_MAX (32767)

+

+/**

+* @def LVVE_TX_OPERATINGMODE_DEFAULT

+* Default of OperatingMode

+* @see LVVE_Tx_ControlParams_st

+*/

+#define LVVE_TX_OPERATINGMODE_DEFAULT (LVVE_TX_MODE_OFF)

+

+/**

+* @def LVVE_TX_MUTE_DEFAULT

+* Default of Mute

+* @see LVVE_Tx_ControlParams_st

+*/

+#define LVVE_TX_MUTE_DEFAULT (LVM_MODE_OFF)

+

+/**

+* @def LVVE_TX_BD_OPERATINGMODE_DEFAULT

+* Default of BD_OperatingMode

+* @see LVVE_Tx_ControlParams_st

+*/

+#define LVVE_TX_BD_OPERATINGMODE_DEFAULT (LVM_MODE_OFF)

+

+/**

+* @def LVVE_TX_BULKDELAY_DEFAULT

+* Default of BulkDelay

+* @see LVVE_Tx_ControlParams_st

+*/

+#define LVVE_TX_BULKDELAY_DEFAULT (0)

+/**

+* @def LVVE_TX_BULKDELAY_MIN

+* MinValue of BulkDelay

+* @see LVVE_Tx_ControlParams_st

+*/

+#define LVVE_TX_BULKDELAY_MIN (0)

+/**

+* @def LVVE_TX_BULKDELAY_MAX

+* MaxValue of BulkDelay

+* @see LVVE_Tx_ControlParams_st

+*/

+#define LVVE_TX_BULKDELAY_MAX (6400)

+

+/**

+* @def LVVE_TX_BD_GAIN_DEFAULT

+* Default of BD_Gain

+* @see LVVE_Tx_ControlParams_st

+*/

+#define LVVE_TX_BD_GAIN_DEFAULT (8192)

+/**

+* @def LVVE_TX_BD_GAIN_MIN

+* MinValue of BD_Gain

+* @see LVVE_Tx_ControlParams_st

+*/

+#define LVVE_TX_BD_GAIN_MIN (0)

+/**

+* @def LVVE_TX_BD_GAIN_MAX

+* MaxValue of BD_Gain

+* @see LVVE_Tx_ControlParams_st

+*/

+#define LVVE_TX_BD_GAIN_MAX (32767)

+

+/**

+* @def LVVE_TX_VOL_OPERATINGMODE_DEFAULT

+* Default of VOL_OperatingMode

+* @see LVVE_Tx_ControlParams_st

+*/

+#define LVVE_TX_VOL_OPERATINGMODE_DEFAULT (LVM_MODE_OFF)

+

+/**

+* @def LVVE_TX_VOL_GAIN_DEFAULT

+* Default of VOL_Gain

+* @see LVVE_Tx_ControlParams_st

+*/

+#define LVVE_TX_VOL_GAIN_DEFAULT (0)

+/**

+* @def LVVE_TX_VOL_GAIN_MIN

+* MinValue of VOL_Gain

+* @see LVVE_Tx_ControlParams_st

+*/

+#define LVVE_TX_VOL_GAIN_MIN (-96)

+/**

+* @def LVVE_TX_VOL_GAIN_MAX

+* MaxValue of VOL_Gain

+* @see LVVE_Tx_ControlParams_st

+*/

+#define LVVE_TX_VOL_GAIN_MAX (24)

+

+/**

+* @def LVVE_TX_HPF_OPERATINGMODE_DEFAULT

+* Default of HPF_OperatingMode

+* @see LVVE_Tx_ControlParams_st

+*/

+#define LVVE_TX_HPF_OPERATINGMODE_DEFAULT (LVM_MODE_OFF)

+

+/**

+* @def LVVE_TX_MIC_HPF_CORNERFREQ_DEFAULT

+* Default of MIC_HPF_CornerFreq

+* @see LVVE_Tx_ControlParams_st

+*/

+#define LVVE_TX_MIC_HPF_CORNERFREQ_DEFAULT (50)

+/**

+* @def LVVE_TX_MIC_HPF_CORNERFREQ_MIN

+* MinValue of MIC_HPF_CornerFreq

+* @see LVVE_Tx_ControlParams_st

+*/

+#define LVVE_TX_MIC_HPF_CORNERFREQ_MIN (50)

+/**

+* @def LVVE_TX_MIC_HPF_CORNERFREQ_MAX

+* MaxValue of MIC_HPF_CornerFreq

+* @see LVVE_Tx_ControlParams_st

+*/

+#define LVVE_TX_MIC_HPF_CORNERFREQ_MAX (1500)

+

+

+

+/**

+* @def LVVE_TX_EQ_OPERATINGMODE_DEFAULT

+* Default of EQ_OperatingMode

+* @see LVVE_Tx_ControlParams_st

+*/

+#define LVVE_TX_EQ_OPERATINGMODE_DEFAULT (LVM_MODE_OFF)

+

+

+

+/**

+* @def LVVC_GAIN_DEFAULT

+* Default of Gain

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_GAIN_DEFAULT (0)

+/**

+* @def LVVC_GAIN_MIN

+* MinValue of Gain

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_GAIN_MIN (0)

+/**

+* @def LVVC_GAIN_MAX

+* MaxValue of Gain

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_GAIN_MAX (32767)

+

+/**

+* @def LVVC_SPDETECTED_DEFAULT

+* Default of SpDetected

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_SPDETECTED_DEFAULT (0)

+/**

+* @def LVVC_SPDETECTED_MIN

+* MinValue of SpDetected

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_SPDETECTED_MIN (0)

+/**

+* @def LVVC_SPDETECTED_MAX

+* MaxValue of SpDetected

+* @see LVVC_ControlParams_st

+*/

+#define LVVC_SPDETECTED_MAX (1)

+

+/**

+* @def LVWM_AVL_GAIN_DEFAULT

+* Default of AVL_Gain

+* @see LVWM_ControlParams_st

+*/

+#define LVWM_AVL_GAIN_DEFAULT (0)

+/**

+* @def LVWM_AVL_GAIN_MIN

+* MinValue of AVL_Gain

+* @see LVWM_ControlParams_st

+*/

+#define LVWM_AVL_GAIN_MIN (0)

+/**

+* @def LVWM_AVL_GAIN_MAX

+* MaxValue of AVL_Gain

+* @see LVWM_ControlParams_st

+*/

+#define LVWM_AVL_GAIN_MAX (32767)

+

+

+

+/**

+* @def LVVE_RX_DUMMY_DEFAULT

+* Default of dummy

+* @see LVVE_Rx_ControlParams_st

+*/

+#define LVVE_RX_DUMMY_DEFAULT (0)

+/**

+* @def LVVE_RX_DUMMY_MIN

+* MinValue of dummy

+* @see LVVE_Rx_ControlParams_st

+*/

+#define LVVE_RX_DUMMY_MIN (-128)

+/**

+* @def LVVE_RX_DUMMY_MAX

+* MaxValue of dummy

+* @see LVVE_Rx_ControlParams_st

+*/

+#define LVVE_RX_DUMMY_MAX (127)

+

+/**

+* @def LVNV_STATUS_DEFAULT

+* Default of status

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_STATUS_DEFAULT (0)

+

+/**

+* @def LVNV_DUMMY_DEFAULT

+* Default of Dummy

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DUMMY_DEFAULT (0)

+/**

+* @def LVNV_DUMMY_MIN

+* MinValue of Dummy

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DUMMY_MIN (0)

+/**

+* @def LVNV_DUMMY_MAX

+* MaxValue of Dummy

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_DUMMY_MAX (0)

+

+/**

+* @def LVNV_PNLMS0_LB_COEFFS_DEFAULT

+* Default of pNLMS0_LB_Coeffs

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PNLMS0_LB_COEFFS_DEFAULT (0)

+/**

+* @def LVNV_PNLMS0_LB_COEFFS_MIN

+* MinValue of pNLMS0_LB_Coeffs

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PNLMS0_LB_COEFFS_MIN (-2147483648)

+/**

+* @def LVNV_PNLMS0_LB_COEFFS_MAX

+* MaxValue of pNLMS0_LB_Coeffs

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PNLMS0_LB_COEFFS_MAX (2147483647)

+

+/**

+* @def LVNV_PNLMS0_HB_COEFFS_DEFAULT

+* Default of pNLMS0_HB_Coeffs

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PNLMS0_HB_COEFFS_DEFAULT (0)

+/**

+* @def LVNV_PNLMS0_HB_COEFFS_MIN

+* MinValue of pNLMS0_HB_Coeffs

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PNLMS0_HB_COEFFS_MIN (-2147483648)

+/**

+* @def LVNV_PNLMS0_HB_COEFFS_MAX

+* MaxValue of pNLMS0_HB_Coeffs

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PNLMS0_HB_COEFFS_MAX (2147483647)

+

+/**

+* @def LVNV_PNLMS1_LB_COEFFS_DEFAULT

+* Default of pNLMS1_LB_Coeffs

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PNLMS1_LB_COEFFS_DEFAULT (0)

+/**

+* @def LVNV_PNLMS1_LB_COEFFS_MIN

+* MinValue of pNLMS1_LB_Coeffs

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PNLMS1_LB_COEFFS_MIN (-2147483648)

+/**

+* @def LVNV_PNLMS1_LB_COEFFS_MAX

+* MaxValue of pNLMS1_LB_Coeffs

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PNLMS1_LB_COEFFS_MAX (2147483647)

+

+/**

+* @def LVNV_PNLMS1_HB_COEFFS_DEFAULT

+* Default of pNLMS1_HB_Coeffs

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PNLMS1_HB_COEFFS_DEFAULT (0)

+/**

+* @def LVNV_PNLMS1_HB_COEFFS_MIN

+* MinValue of pNLMS1_HB_Coeffs

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PNLMS1_HB_COEFFS_MIN (-2147483648)

+/**

+* @def LVNV_PNLMS1_HB_COEFFS_MAX

+* MaxValue of pNLMS1_HB_Coeffs

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PNLMS1_HB_COEFFS_MAX (2147483647)

+

+/**

+* @def LVNV_PFSB_COEFFS_DEFAULT

+* Default of pFSB_Coeffs

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PFSB_COEFFS_DEFAULT (0)

+/**

+* @def LVNV_PFSB_COEFFS_MIN

+* MinValue of pFSB_Coeffs

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PFSB_COEFFS_MIN (-2147483648)

+/**

+* @def LVNV_PFSB_COEFFS_MAX

+* MaxValue of pFSB_Coeffs

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PFSB_COEFFS_MAX (2147483647)

+

+/**

+* @def LVNV_PGSC_COEFFS_DEFAULT

+* Default of pGSC_Coeffs

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PGSC_COEFFS_DEFAULT (0)

+/**

+* @def LVNV_PGSC_COEFFS_MIN

+* MinValue of pGSC_Coeffs

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PGSC_COEFFS_MIN (-2147483648)

+/**

+* @def LVNV_PGSC_COEFFS_MAX

+* MaxValue of pGSC_Coeffs

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PGSC_COEFFS_MAX (2147483647)

+

+/**

+* @def LVNV_PMICPOWSP_DEFAULT

+* Default of pMicPowSp

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PMICPOWSP_DEFAULT (0)

+/**

+* @def LVNV_PMICPOWSP_MIN

+* MinValue of pMicPowSp

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PMICPOWSP_MIN (0)

+/**

+* @def LVNV_PMICPOWSP_MAX

+* MaxValue of pMicPowSp

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PMICPOWSP_MAX (1)

+

+/**

+* @def LVNV_PCALFACTOR_DEFAULT

+* Default of pCalFactor

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PCALFACTOR_DEFAULT (0)

+/**

+* @def LVNV_PCALFACTOR_MIN

+* MinValue of pCalFactor

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PCALFACTOR_MIN (0)

+/**

+* @def LVNV_PCALFACTOR_MAX

+* MaxValue of pCalFactor

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PCALFACTOR_MAX (32767)

+

+/**

+* @def LVNV_PCALREADY_DEFAULT

+* Default of pCalReady

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PCALREADY_DEFAULT (0)

+/**

+* @def LVNV_PCALREADY_MIN

+* MinValue of pCalReady

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PCALREADY_MIN (0)

+/**

+* @def LVNV_PCALREADY_MAX

+* MaxValue of pCalReady

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PCALREADY_MAX (2)

+

+/**

+* @def LVNV_PBROADSIDE_INTERCC_DEFAULT

+* Default of pBroadside_interCC

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PBROADSIDE_INTERCC_DEFAULT (0)

+/**

+* @def LVNV_PBROADSIDE_INTERCC_MIN

+* MinValue of pBroadside_interCC

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PBROADSIDE_INTERCC_MIN (0)

+/**

+* @def LVNV_PBROADSIDE_INTERCC_MAX

+* MaxValue of pBroadside_interCC

+* @see LVNV_ControlParams_st

+*/

+#define LVNV_PBROADSIDE_INTERCC_MAX (32767)

+

+/**

+* @def LVHF_GAMMAE_DEFAULT

+* Default of gammae

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_GAMMAE_DEFAULT (0)

+/**

+* @def LVHF_GAMMAE_MIN

+* MinValue of gammae

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_GAMMAE_MIN (0)

+/**

+* @def LVHF_GAMMAE_MAX

+* MaxValue of gammae

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_GAMMAE_MAX (32767)

+

+/**

+* @def LVHF_STATUS_DEFAULT

+* Default of status

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_STATUS_DEFAULT (0)

+

+/**

+* @def LVHF_PNLMS_LB_COEFS_DEFAULT

+* Default of pNLMS_LB_Coefs

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_PNLMS_LB_COEFS_DEFAULT (0)

+/**

+* @def LVHF_PNLMS_LB_COEFS_MIN

+* MinValue of pNLMS_LB_Coefs

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_PNLMS_LB_COEFS_MIN (-2147483648)

+/**

+* @def LVHF_PNLMS_LB_COEFS_MAX

+* MaxValue of pNLMS_LB_Coefs

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_PNLMS_LB_COEFS_MAX (2147483647)

+

+/**

+* @def LVHF_PNLMS_HB_COEFS_DEFAULT

+* Default of pNLMS_HB_Coefs

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_PNLMS_HB_COEFS_DEFAULT (0)

+/**

+* @def LVHF_PNLMS_HB_COEFS_MIN

+* MinValue of pNLMS_HB_Coefs

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_PNLMS_HB_COEFS_MIN (-2147483648)

+/**

+* @def LVHF_PNLMS_HB_COEFS_MAX

+* MaxValue of pNLMS_HB_Coefs

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_PNLMS_HB_COEFS_MAX (2147483647)

+

+/**

+* @def LVHF_PPCD_COEFS_DEFAULT

+* Default of pPCD_Coefs

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_PPCD_COEFS_DEFAULT (0)

+/**

+* @def LVHF_PPCD_COEFS_MIN

+* MinValue of pPCD_Coefs

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_PPCD_COEFS_MIN (-2147483648)

+/**

+* @def LVHF_PPCD_COEFS_MAX

+* MaxValue of pPCD_Coefs

+* @see LVHF_ControlParams_st

+*/

+#define LVHF_PPCD_COEFS_MAX (2147483647)

+

+

+

+/**

+* @def LVVE_TX_DUMMY_DEFAULT

+* Default of dummy

+* @see LVVE_Tx_ControlParams_st

+*/

+#define LVVE_TX_DUMMY_DEFAULT (0)

+/**

+* @def LVVE_TX_DUMMY_MIN

+* MinValue of dummy

+* @see LVVE_Tx_ControlParams_st

+*/

+#define LVVE_TX_DUMMY_MIN (-128)

+/**

+* @def LVVE_TX_DUMMY_MAX

+* MaxValue of dummy

+* @see LVVE_Tx_ControlParams_st

+*/

+#define LVVE_TX_DUMMY_MAX (127)

+

+/**

+* Enum type for LVVIDHeader_MessageID_en

+*/

+typedef enum

+{

+    LVVE_RX_PRESET = 0, ///< VID header Message ID for LVVE_Rx presets

+    LVVE_TX_PRESET = 1, ///< VID header Message ID for LVVE_Tx Presets

+    LVVIDHEADER_MESSAGEID_EN_DUMMY = LVM_MAXENUM

+} LVVIDHeader_MessageID_en;

+

+/**

+* Enum type for LVVIDHeader_ReturnStatus_en

+*/

+typedef enum

+{

+    LVVIDHEADER_NULLADDRESS = 0, ///< LVVIDHeader module returns NULL address error

+    LVVIDHEADER_SUCCESS = 1, ///< LVVIDHeader module returns with success

+    LVVIDHEADER_RETURNSTATUS_EN_DUMMY = LVM_MAXENUM

+} LVVIDHeader_ReturnStatus_en;

+

+/**

+* Enum type for LVVE_Rx_Mode_en

+*/

+typedef enum

+{

+    LVVE_RX_MODE_OFF = 0, ///< Rx voice engine is turned off

+    LVVE_RX_MODE_ON = 1, ///< Rx voice in will run

+    LVVE_RX_MODE_BYPASS = 2, ///< Rx voice engine will run but output will be ignored

+    LVVE_RX_MODE_EN_DUMMY = LVM_MAXENUM

+} LVVE_Rx_Mode_en;

+

+/**

+* Enum type for LVVE_Tx_Mode_en

+*/

+typedef enum

+{

+    LVVE_TX_MODE_OFF = 0, ///< Tx in LVVE engine is disabled

+    LVVE_TX_MODE_ON = 1, ///< TX in LVVE is enabled

+    LVVE_TX_MODE_BYPASS_MIC0 = 2, ///< TX in LVVE engine will run but output will be Mic0 signal

+    LVVE_TX_MODE_BYPASS_MIC1 = 3, ///< Tx in LVVE engine will run but output will be Mic1 signal

+    LVVE_TX_MODE_BYPASS_REF = 4, ///< Tx in LVVE engine will run but output will be Ref signal

+    LVVE_TX_MODE_EN_DUMMY = LVM_MAXENUM

+} LVVE_Tx_Mode_en;

+

+/****************************************************************************************/

+/*                                                                                      */

+/*  Structures                                                                          */

+/*                                                                                      */

+/****************************************************************************************/

+/**

+* The status parameters are used to retrieve the status of the module.

+* @see LVVC_GetStatusParameters

+*/

+typedef struct

+{

+    /**

+    The internal gain setting used by VoiceClarity.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>6.9</td>

+        <td>@ref LVVC_GAIN_MIN (0)</td>

+        <td>@ref LVVC_GAIN_DEFAULT (0)</td>

+        <td>@ref LVVC_GAIN_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 Gain;          ///< Gain

+

+    /**

+    0 (no detection) or 1 (detection).

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>15.0</td>

+        <td>@ref LVVC_SPDETECTED_MIN (0)</td>

+        <td>@ref LVVC_SPDETECTED_DEFAULT (0)</td>

+        <td>@ref LVVC_SPDETECTED_MAX (1)</td>

+    </tr>

+    </table> */

+    LVM_INT16 SpDetected;          ///< The speech detector flag.

+

+} LVVC_StatusParams_st;

+

+/**

+* The status parameters are used to retrieve the status of the module.

+* @see LVWM_GetStatusParameters

+*/

+typedef struct

+{

+    /**

+    The internal gain setting used by WhisperMode in dB.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>6.9</td>

+        <td>@ref LVWM_AVL_GAIN_MIN (0)</td>

+        <td>@ref LVWM_AVL_GAIN_DEFAULT (0)</td>

+        <td>@ref LVWM_AVL_GAIN_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 AVL_Gain;          ///< gain (dB)

+

+} LVWM_StatusParams_st;

+

+/**

+* The status parameters are used to retrieve the status of the module.

+* @see LVVE_Rx_GetStatusParameters

+*/

+typedef struct

+{

+    /**

+    Voice Clarity Status Parameter Structure.

+    */

+    LVVC_StatusParams_st VC_StatusParams;          ///< Voice Clarity Status Parameter Structure

+

+    /**

+    Whisper Mode Status Parameter Structure.

+    */

+    LVWM_StatusParams_st WM_StatusParams;          ///< Whisper Mode Status Parameter Structure

+

+    /**

+    Dummy Param.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>1.7</td>

+        <td>@ref LVVE_RX_DUMMY_MIN (-128)</td>

+        <td>@ref LVVE_RX_DUMMY_DEFAULT (0)</td>

+        <td>@ref LVVE_RX_DUMMY_MAX (127)</td>

+    </tr>

+    </table> */

+    LVM_INT8 dummy;          ///< Dummy Param

+

+} LVVE_Rx_StatusParams_st;

+

+/**

+* The status parameters are used to retrieve the status of the module.

+* @see LVNV_GetStatusParameters

+*/

+typedef struct

+{

+    /**

+    Bit mask describing the current state of LVNV, used for debugging.

+    */

+    LVNV_StatusWord_bm status;          ///< current state

+

+    /**

+    To keep correct memory alignment. To be removed when LVNV_StatusWord_bm has

+    become int32 as it should.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVNV_DUMMY_MIN (0)</td>

+        <td>@ref LVNV_DUMMY_DEFAULT (0)</td>

+        <td>@ref LVNV_DUMMY_MAX (0)</td>

+    </tr>

+    </table> */

+    LVM_INT16 Dummy;          ///< Dummy for memory alignment.

+

+    /**

+    Pointer to the coefficients of the primary low-band (0-4kHz) NLMS filter

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>1.30</td>

+        <td>@ref LVNV_PNLMS0_LB_COEFFS_MIN (-2147483648)</td>

+        <td>@ref LVNV_PNLMS0_LB_COEFFS_DEFAULT (0)</td>

+        <td>@ref LVNV_PNLMS0_LB_COEFFS_MAX (2147483647)</td>

+    </tr>

+    </table> */

+    LVM_INT32* pNLMS0_LB_Coeffs;          ///< NLMS0 lowband filter coefficients

+

+    /**

+    Pointer to the coefficients of the primary high-band (4-8kHz) NLMS filter

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>1.30</td>

+        <td>@ref LVNV_PNLMS0_HB_COEFFS_MIN (-2147483648)</td>

+        <td>@ref LVNV_PNLMS0_HB_COEFFS_DEFAULT (0)</td>

+        <td>@ref LVNV_PNLMS0_HB_COEFFS_MAX (2147483647)</td>

+    </tr>

+    </table> */

+    LVM_INT32* pNLMS0_HB_Coeffs;          ///< NLMS0 highband filter coefficients

+

+    /**

+    Pointer to the coefficients of the secondary low-band (0-4kHz) NLMS filter

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>1.30</td>

+        <td>@ref LVNV_PNLMS1_LB_COEFFS_MIN (-2147483648)</td>

+        <td>@ref LVNV_PNLMS1_LB_COEFFS_DEFAULT (0)</td>

+        <td>@ref LVNV_PNLMS1_LB_COEFFS_MAX (2147483647)</td>

+    </tr>

+    </table> */

+    LVM_INT32* pNLMS1_LB_Coeffs;          ///< NLMS1 lowband filter coefficients

+

+    /**

+    Pointer to the coefficients of the secondary high-band (4-8kHz) NLMS filter

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>1.30</td>

+        <td>@ref LVNV_PNLMS1_HB_COEFFS_MIN (-2147483648)</td>

+        <td>@ref LVNV_PNLMS1_HB_COEFFS_DEFAULT (0)</td>

+        <td>@ref LVNV_PNLMS1_HB_COEFFS_MAX (2147483647)</td>

+    </tr>

+    </table> */

+    LVM_INT32* pNLMS1_HB_Coeffs;          ///< NLMS1 highband filter coefficients

+

+    /**

+    Pointer to the coefficients of the FSB0 and FSB1 filters

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>16.15</td>

+        <td>@ref LVNV_PFSB_COEFFS_MIN (-2147483648)</td>

+        <td>@ref LVNV_PFSB_COEFFS_DEFAULT (0)</td>

+        <td>@ref LVNV_PFSB_COEFFS_MAX (2147483647)</td>

+    </tr>

+    </table> */

+    LVM_INT32* pFSB_Coeffs;          ///< FSB0 and FSB1 coefficients

+

+    /**

+    Pointer to the coefficients of the GSC filter

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>1.30</td>

+        <td>@ref LVNV_PGSC_COEFFS_MIN (-2147483648)</td>

+        <td>@ref LVNV_PGSC_COEFFS_DEFAULT (0)</td>

+        <td>@ref LVNV_PGSC_COEFFS_MAX (2147483647)</td>

+    </tr>

+    </table> */

+    LVM_INT32* pGSC_Coeffs;          ///< GSC coefficients

+

+    /**

+    Pointer to the MicPowSp detection flag

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>15.0</td>

+        <td>@ref LVNV_PMICPOWSP_MIN (0)</td>

+        <td>@ref LVNV_PMICPOWSP_DEFAULT (0)</td>

+        <td>@ref LVNV_PMICPOWSP_MAX (1)</td>

+    </tr>

+    </table> */

+    LVM_INT16* pMicPowSp;          ///< MicPow Speech detection flag

+

+    /**

+    Pointer to the variable of Calibration factor

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>2.13</td>

+        <td>@ref LVNV_PCALFACTOR_MIN (0)</td>

+        <td>@ref LVNV_PCALFACTOR_DEFAULT (0)</td>

+        <td>@ref LVNV_PCALFACTOR_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16* pCalFactor;          ///< Calibration factor value

+

+    /**

+    Pointer to the variable of Calibration ready

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>15.0</td>

+        <td>@ref LVNV_PCALREADY_MIN (0)</td>

+        <td>@ref LVNV_PCALREADY_DEFAULT (0)</td>

+        <td>@ref LVNV_PCALREADY_MAX (2)</td>

+    </tr>

+    </table> */

+    LVM_INT16* pCalReady;          ///< Calibration ready value

+

+    /**

+    Pointer to the inter-channel correlation value used in broadside detection.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVNV_PBROADSIDE_INTERCC_MIN (0)</td>

+        <td>@ref LVNV_PBROADSIDE_INTERCC_DEFAULT (0)</td>

+        <td>@ref LVNV_PBROADSIDE_INTERCC_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16* pBroadside_interCC;          ///< Broadside correlation

+

+} LVNV_StatusParams_st;

+

+/**

+* The status parameters are used to retrieve the status of the module.

+* @see LVHF_GetStatusParameters

+*/

+typedef struct

+{

+    /**

+    Current value of the echo subtraction factor.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>5.10</td>

+        <td>@ref LVHF_GAMMAE_MIN (0)</td>

+        <td>@ref LVHF_GAMMAE_DEFAULT (0)</td>

+        <td>@ref LVHF_GAMMAE_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 gammae;          ///< multiplicator factor of echo suppression

+

+    /**

+    Bit mask describing the current state of LVHF, used for debugging.

+    */

+    LVHF_StatusWord_bm status;          ///< current state

+

+    /**

+    Pointer to the coefficients of the LB NLMS.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>1.30</td>

+        <td>@ref LVHF_PNLMS_LB_COEFS_MIN (-2147483648)</td>

+        <td>@ref LVHF_PNLMS_LB_COEFS_DEFAULT (0)</td>

+        <td>@ref LVHF_PNLMS_LB_COEFS_MAX (2147483647)</td>

+    </tr>

+    </table> */

+    LVM_INT32* pNLMS_LB_Coefs;          ///< NLMS lowband filter coefficients

+

+    /**

+    Pointer to the coefficients of the HB NLMS.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>1.30</td>

+        <td>@ref LVHF_PNLMS_HB_COEFS_MIN (-2147483648)</td>

+        <td>@ref LVHF_PNLMS_HB_COEFS_DEFAULT (0)</td>

+        <td>@ref LVHF_PNLMS_HB_COEFS_MAX (2147483647)</td>

+    </tr>

+    </table> */

+    LVM_INT32* pNLMS_HB_Coefs;          ///< NLMS highband filter coefficients

+

+    /**

+    Pointer to the coefficients of the PCD NLMS.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>1.30</td>

+        <td>@ref LVHF_PPCD_COEFS_MIN (-2147483648)</td>

+        <td>@ref LVHF_PPCD_COEFS_DEFAULT (0)</td>

+        <td>@ref LVHF_PPCD_COEFS_MAX (2147483647)</td>

+    </tr>

+    </table> */

+    LVM_INT32* pPCD_Coefs;          ///< PCD NLMS filter coefficients

+

+} LVHF_StatusParams_st;

+

+/**

+* The status parameters are used to retrieve the status of the module.

+* @see LVVE_Tx_GetStatusParameters

+*/

+typedef struct

+{

+    /**

+    HandsFree Status Parameter Structure.

+    */

+    LVHF_StatusParams_st HF_StatusParams;          ///< HandsFree Status Parameters Structure

+

+    /**

+    NoiseVoid Status Parameter Structure.

+    */

+    LVNV_StatusParams_st NV_StatusParams;          ///< NoiseVoid Status Parameters Structrue

+

+    /**

+    Dummy Param.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>1.7</td>

+        <td>@ref LVVE_TX_DUMMY_MIN (-128)</td>

+        <td>@ref LVVE_TX_DUMMY_DEFAULT (0)</td>

+        <td>@ref LVVE_TX_DUMMY_MAX (127)</td>

+    </tr>

+    </table> */

+    LVM_INT8 dummy;          ///< Dummy Param

+

+} LVVE_Tx_StatusParams_st;

+

+/**

+* The control parameters are used to control the overall module behavior. These parameters may

+* be changed at any time during processing using the LVVIDHeader_SetControlParameters function but they

+* will not take effect until the next call to the LVVIDHeader_Process function.

+*

+* @see LVVIDHeader_SetControlParameters

+* @see LVVIDHeader_Process

+*/

+typedef struct

+{

+    /**

+    This number always increments by one when there is change in the header format.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>8.0</td>

+        <td>@ref LVVIDHEADER_HEADERVERSION_MIN (0)</td>

+        <td>@ref LVVIDHEADER_HEADERVERSION_DEFAULT (3)</td>

+        <td>@ref LVVIDHEADER_HEADERVERSION_MAX (255)</td>

+    </tr>

+    </table> */

+    LVM_UINT8 HeaderVersion;          ///< Header Format Version

+

+    /**

+    Initially This variable holds value of the baseline version. The value is in

+    format of xxyyzzpp where xx is major number of the library, yy is minor number,

+    zz is second minor number and pp is patch number of the baseline.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>32.0</td>

+        <td>@ref LVVIDHEADER_BASELINEVERSION_MIN (1)</td>

+        <td>@ref LVVIDHEADER_BASELINEVERSION_DEFAULT (51906816)</td>

+        <td>@ref LVVIDHEADER_BASELINEVERSION_MAX (4294967295)</td>

+    </tr>

+    </table> */

+    LVM_UINT32 BaselineVersion;          ///< This is LVVE tagged version name

+

+    /**

+    First LVVE_Rx algorithm mask which holds information of which LVVE_Rx

+    algorithms are present.

+    */

+    LVVIDHeader_LVVE_Rx_Mask1_bm LVVE_Rx_AlgoMask1;          ///< This variable forms first part of LVVE_Rx algorithm mask

+

+    /**

+    Second LVVE_Rx algorithm mask which holds information of which LVVE_Rx

+    algorithms are present.

+    */

+    LVVIDHeader_LVVE_Rx_Mask2_bm LVVE_Rx_AlgoMask2;          ///< This variable forms second part of LVVE_Rx algorithm mask

+

+    /**

+    First LVVE_Tx algorithm mask which holds information of which LVVE_Tx

+    algorithms are present.

+    */

+    LVVIDHeader_LVVE_Tx_Mask1_bm LVVE_Tx_AlgoMask1;          ///< This variable forms first part of LVVE_Tx mask

+

+    /**

+    Second LVVE_Tx algorithm mask which holds information of which LVVE_Tx

+    algorithms are present.

+    */

+    LVVIDHeader_LVVE_Tx_Mask2_bm LVVE_Tx_AlgoMask2;          ///< This variable forms second part of LVVE_Tx mask

+

+    /**

+    First LVVE configuration mask which holds information of which configurations

+    of LVVE_Tx and LVVE_Rx algorithm are present.

+    */

+    LVVIDHeader_Configurations_Mask1_bm LVVE_Config_AlgoMask1;          ///< This variable forms first part of common LVVE_Tx and LVVE_Rx configuration mask

+

+    /**

+    Second LVVE configuration mask which holds information of which configurations

+    of LVVE_Tx and LVVE_Rx algorithm are present.

+    */

+    LVVIDHeader_Configurations_Mask2_bm LVVE_Config_AlgoMask2;          ///< This variable forms second part of common LVVE_Tx and LVVE_Rx configuration mask

+

+    /**

+    Messge ID is used to identify stream

+    */

+    LVVIDHeader_MessageID_en MessageID;          ///< This param holds message ID of the buffer

+

+    /**

+    This parameter specifies the sample rate information of the buffer.

+    */

+    LVM_Fs_en SampleRate;          ///< Sample rate information of the buffer.

+

+    /**

+    This parameter specifies the volume index corresponding to the subsequent data.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>8.0</td>

+        <td>@ref LVVIDHEADER_VOLUMEINDEX_MIN (0)</td>

+        <td>@ref LVVIDHEADER_VOLUMEINDEX_DEFAULT (0)</td>

+        <td>@ref LVVIDHEADER_VOLUMEINDEX_MAX (255)</td>

+    </tr>

+    </table> */

+    LVM_UINT8 VolumeIndex;          ///< Volume index corresponding to the subsequent data.

+

+    /**

+    This parameter specifies how many volumes are present in the binary file.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>8.0</td>

+        <td>@ref LVVIDHEADER_NUMVOLUMES_MIN (0)</td>

+        <td>@ref LVVIDHEADER_NUMVOLUMES_DEFAULT (1)</td>

+        <td>@ref LVVIDHEADER_NUMVOLUMES_MAX (255)</td>

+    </tr>

+    </table> */

+    LVM_UINT8 NumVolumes;          ///< Number of volumes present in the binary file.

+

+} LVVIDHeader_ControlParams_st;

+

+/**

+* The control parameters are used to control the overall module behavior. These parameters may

+* be changed at any time during processing using the LVVC_SetControlParameters function but they

+* will not take effect until the next call to the LVVC_Process function.

+*

+* @see LVVC_SetControlParameters

+* @see LVVC_Process

+*/

+typedef struct

+{

+    /**

+    Control the operating mode (ON/OFF) of the algorithm.

+    */

+    LVM_Mode_en OperatingMode;          ///< Operating mode

+

+    /**

+    The mode word to enable/disable internal algorithm blocks of VoiceClarity.

+    */

+    LVVC_ModeWord_bm mode;          ///< Mode word

+

+    /**

+    Maximum Gain applied to the signal.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>6.9</td>

+        <td>@ref LVVC_GAIN_LIN_MAX_MIN (512)</td>

+        <td>@ref LVVC_GAIN_LIN_MAX_DEFAULT (1286)</td>

+        <td>@ref LVVC_GAIN_LIN_MAX_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 Gain_Lin_Max;          ///< Maximum Gain.

+

+    /**

+    The Noise_Sensitivity parameter sets how sensitive VoiceClarity will be to the

+    background noise level. The Noise_Sensitivity parameter allows adjusting the

+    sensitivity of those processing blocks to the nearend noise level. For high

+    values of the Noise_Sensitivity the effect of the mentioned processing blocks

+    will be big, even at low to moderate nearend noise levels. For low values of

+    the Noise_Sensitivity the effect of the processing blocks will be smaller, even

+    for high nearend noise levels.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVVC_NOISE_SENSITIVITY_MIN (-6709)</td>

+        <td>@ref LVVC_NOISE_SENSITIVITY_DEFAULT (20000)</td>

+        <td>@ref LVVC_NOISE_SENSITIVITY_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 Noise_Sensitivity;          ///< Noise Sensitivity.

+

+    /**

+    The desired output level of the AGC. <br>

+    AVL_Target_level_lin = \f$32767*10^{Target_Level_dB/20}\f$

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVVC_AVL_TARGET_LEVEL_LIN_MIN (0)</td>

+        <td>@ref LVVC_AVL_TARGET_LEVEL_LIN_DEFAULT (16384)</td>

+        <td>@ref LVVC_AVL_TARGET_LEVEL_LIN_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 AVL_Target_level_lin;          ///< The desired output level of the AGC.

+

+    /**

+    The maximal attenuation of the AGC. <br>

+    AVL_MinGainLin = \f$512*10^{MinGain_dB/20}\f$

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>6.9</td>

+        <td>@ref LVVC_AVL_MINGAINLIN_MIN (0)</td>

+        <td>@ref LVVC_AVL_MINGAINLIN_DEFAULT (256)</td>

+        <td>@ref LVVC_AVL_MINGAINLIN_MAX (512)</td>

+    </tr>

+    </table> */

+    LVM_INT16 AVL_MinGainLin;          ///< The maximal attenuation of the AGC.

+

+    /**

+    The maximal gain of the AGC. <br>

+    AVL_MaxGainLin = \f$512*10^{MaxGain_dB/20}\f$

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>6.9</td>

+        <td>@ref LVVC_AVL_MAXGAINLIN_MIN (512)</td>

+        <td>@ref LVVC_AVL_MAXGAINLIN_DEFAULT (8192)</td>

+        <td>@ref LVVC_AVL_MAXGAINLIN_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 AVL_MaxGainLin;          ///< The maximal gain of the AGC.

+

+    /**

+    The nominal gain of the AGC.<br>

+    AVL_NominalGain = \f$512*10^{NominalGain_dB/20}\f$

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>6.9</td>

+        <td>@ref LVVC_AVL_NOMINALGAIN_MIN (0)</td>

+        <td>@ref LVVC_AVL_NOMINALGAIN_DEFAULT (512)</td>

+        <td>@ref LVVC_AVL_NOMINALGAIN_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 AVL_NominalGain;          ///< The nominal gain of the AGC.

+

+    /**

+    The gain of the AGC is smoothed across time. The time constant of the smoothing

+    depends on whether the gain is increasing or decreasing. When a sudden loud

+    signal is encountered (e.g. attack of speech), the attack time is used. When

+    the gain is increasing (e.g. long period of whispered speech), the release time

+    is used. <br>

+

+    AVL_Attack = \f$32767*\exp(-1/(100*AttackTimeSec))\f$

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVVC_AVL_ATTACK_MIN (0)</td>

+        <td>@ref LVVC_AVL_ATTACK_DEFAULT (12055)</td>

+        <td>@ref LVVC_AVL_ATTACK_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 AVL_Attack;          ///< The attack time of the AGC.

+

+    /**

+    The gain of the AGC is smoothed across time. The time constant of the smoothing

+    depends on whether the gain is increasing or decreasing. When a sudden loud

+    signal is encountered (e.g. attack of speech), the attack time is used. When

+    the gain is increasing (e.g. long period of whispered speech), the release time

+    is used. <br>

+

+    AVL_Release = \f$32767*\exp(-1/(100*ReleaseTimeSec))\f$

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVVC_AVL_RELEASE_MIN (0)</td>

+        <td>@ref LVVC_AVL_RELEASE_DEFAULT (32604)</td>

+        <td>@ref LVVC_AVL_RELEASE_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 AVL_Release;          ///< The release time of the AGC.

+

+    /**

+    The release time at maximum noise level.<br>

+

+    AVL_ReleaseMax = \f$32767*\exp(-1/(100*ReleaseMaxTimeSec))\f$

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVVC_AVL_RELEASEMAX_MIN (0)</td>

+        <td>@ref LVVC_AVL_RELEASEMAX_DEFAULT (32441)</td>

+        <td>@ref LVVC_AVL_RELEASEMAX_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 AVL_ReleaseMax;          ///< The release time at maximum noise level.

+

+    /**

+    AVL_Limit_MaxOutputLin = \f$32767*10^{TargetLimiterLeveldB/20}\f$

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVVC_AVL_LIMIT_MAXOUTPUTLIN_MIN (0)</td>

+        <td>@ref LVVC_AVL_LIMIT_MAXOUTPUTLIN_DEFAULT (23170)</td>

+        <td>@ref LVVC_AVL_LIMIT_MAXOUTPUTLIN_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 AVL_Limit_MaxOutputLin;          ///< The level to which the signal will be limited.

+

+    /**

+    The higher the value of the threshold, the less speech detections will occur.

+    <br>

+    SpDetect_Threshold = \f$512 * [0,64]\f$

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>6.9</td>

+        <td>@ref LVVC_SPDETECT_THRESHOLD_MIN (0)</td>

+        <td>@ref LVVC_SPDETECT_THRESHOLD_DEFAULT (1024)</td>

+        <td>@ref LVVC_SPDETECT_THRESHOLD_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 SpDetect_Threshold;          ///< The threshold used in the speech detector of VoiceClarity.

+

+} LVVC_ControlParams_st;

+

+/**

+* The control parameters are used to control the overall module behavior. These parameters may

+* be changed at any time during processing using the LVFENS_SetControlParameters function but they

+* will not take effect until the next call to the LVFENS_Process function.

+*

+* @see LVFENS_SetControlParameters

+* @see LVFENS_Process

+*/

+typedef struct

+{

+    /**

+    */

+    LVM_Mode_en OperatingMode;          ///< Operating Mode

+

+    /**

+    The maximum amount of noise suppression. <br>

+    Unit: dB<br>

+    FENS_limit_ns = \f$32767*10^{-max noise reduction[dB]/20}\f$

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVFENS_FENS_LIMIT_NS_MIN (0)</td>

+        <td>@ref LVFENS_FENS_LIMIT_NS_DEFAULT (10976)</td>

+        <td>@ref LVFENS_FENS_LIMIT_NS_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 FENS_limit_NS;          ///< FENS Noise Suppression Limit

+

+    /**

+    The mode word to control the internal operation of FENS.

+    */

+    LVFENS_ModeWord_bm Mode;          ///< Mode word

+

+} LVFENS_ControlParams_st;

+

+/**

+* The control parameters are used to control the overall module behavior. These parameters may

+* be changed at any time during processing using the LVWM_SetControlParameters function but they

+* will not take effect until the next call to the LVWM_Process function.

+*

+* @see LVWM_SetControlParameters

+* @see LVWM_Process

+*/

+typedef struct

+{

+    /**

+    Control the operating mode (ON/OFF) of the algorithm.

+    */

+    LVM_Mode_en OperatingMode;          ///< Operating mode

+

+    /**

+    The mode word to enable/disable internal algorithm blocks of WhisperMode.

+    */

+    LVWM_ModeWord_bm mode;          ///< Mode word

+

+    /**

+    The desired output level of the AGC. <br>

+    AVL_Target_level_lin = \f$32767*10^{TargetLeveldB/20}\f$

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVWM_AVL_TARGET_LEVEL_LIN_MIN (0)</td>

+        <td>@ref LVWM_AVL_TARGET_LEVEL_LIN_DEFAULT (16384)</td>

+        <td>@ref LVWM_AVL_TARGET_LEVEL_LIN_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 AVL_Target_level_lin;          ///< The desired output level of the AGC.

+

+    /**

+    The maximal attenuation of the AGC. <br>

+    AVL_MinGainLin = \f$512*10^{MinGaindB/20}\f$

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>6.9</td>

+        <td>@ref LVWM_AVL_MINGAINLIN_MIN (0)</td>

+        <td>@ref LVWM_AVL_MINGAINLIN_DEFAULT (128)</td>

+        <td>@ref LVWM_AVL_MINGAINLIN_MAX (512)</td>

+    </tr>

+    </table> */

+    LVM_INT16 AVL_MinGainLin;          ///< The maximal attenuation of the AGC.

+

+    /**

+    The maximal gain of the AGC. <br>

+    AVL_MaxGainLin = \f$512*10^{MaxGaindB/20}\f$

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>6.9</td>

+        <td>@ref LVWM_AVL_MAXGAINLIN_MIN (512)</td>

+        <td>@ref LVWM_AVL_MAXGAINLIN_DEFAULT (8189)</td>

+        <td>@ref LVWM_AVL_MAXGAINLIN_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 AVL_MaxGainLin;          ///< The maximal gain of the AGC.

+

+    /**

+    The gain of the AGC is smoothed across time. The time constant of the smoothing

+    depends on whether the gain is increasing or decreasing. When a sudden loud

+    signal is encountered (e.g. attack of speech), the attack time is used. When

+    the gain is increasing (e.g. long period of whispered speech), the release time

+    is used. <br>

+

+    AVL_Attack = \f$32767*\exp(-1/(100*AttackTimeSec))\f$

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVWM_AVL_ATTACK_MIN (0)</td>

+        <td>@ref LVWM_AVL_ATTACK_DEFAULT (25520)</td>

+        <td>@ref LVWM_AVL_ATTACK_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 AVL_Attack;          ///< The attack time of the AGC.

+

+    /**

+    The gain of the AGC is smoothed across time. The time constant of the smoothing

+    depends on whether the gain is increasing or decreasing. When a sudden loud

+    signal is encountered (e.g. attack of speech), the attack time is used. When

+    the gain is increasing (e.g. long period of whispered speech), the release time

+    is used. <br>

+

+    AVL_Release = \f$32767*\exp(-1/(100*ReleasTimeSec))\f$

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVWM_AVL_RELEASE_MIN (0)</td>

+        <td>@ref LVWM_AVL_RELEASE_DEFAULT (32685)</td>

+        <td>@ref LVWM_AVL_RELEASE_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 AVL_Release;          ///< The release time of the AGC.

+

+    /**

+    AVL_Limit_MaxOutputLin = \f$32767*10^{TargetLimiterLeveldB/20}\f$

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVWM_AVL_LIMIT_MAXOUTPUTLIN_MIN (0)</td>

+        <td>@ref LVWM_AVL_LIMIT_MAXOUTPUTLIN_DEFAULT (23197)</td>

+        <td>@ref LVWM_AVL_LIMIT_MAXOUTPUTLIN_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 AVL_Limit_MaxOutputLin;          ///< The level to which the signal will be limited.

+

+    /**

+    The higher the value of the threshold, the less speech detections will occur.

+    <br>

+    SpDetect_Threshold = \f$512 * [0,64]\f$

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>6.9</td>

+        <td>@ref LVWM_SPDETECT_THRESHOLD_MIN (0)</td>

+        <td>@ref LVWM_SPDETECT_THRESHOLD_DEFAULT (9216)</td>

+        <td>@ref LVWM_SPDETECT_THRESHOLD_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 SpDetect_Threshold;          ///< The threshold used in the speech detector of WhisperMode.

+

+} LVWM_ControlParams_st;

+

+/**

+* The control parameters are used to control the overall module behavior. These parameters may

+* be changed at any time during processing using the LVDRC_SetControlParameters function but they

+* will not take effect until the next call to the LVDRC_Process function.

+*

+* @see LVDRC_SetControlParameters

+* @see LVDRC_Process

+*/

+typedef struct

+{

+    /**

+    Operating mode for DRC

+    */

+    LVM_Mode_en OperatingMode;          ///< Operating mode

+

+    /**

+    Sets the number of sections (knee points) in the compressor curve

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>16.0</td>

+        <td>@ref LVDRC_NUMKNEES_MIN (1)</td>

+        <td>@ref LVDRC_NUMKNEES_DEFAULT (5)</td>

+        <td>@ref LVDRC_NUMKNEES_MAX (5)</td>

+    </tr>

+    </table> */

+    LVM_UINT16 NumKnees;          ///< Number of Knee points in compressor curve

+

+    /**

+    An array of size 5(maximum) containing the knee points specified by the

+    compression curve in dBFs. The number of knee points in use is limited by the

+    NumKnees parameter. Th input level for the first knee should be equal to or

+    larger than -96dB, and the input level for the last knee should be 0dB.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>15.0</td>

+        <td>@ref LVDRC_COMPRESSORCURVEINPUTLEVELS_MIN (-96)</td>

+        <td>@ref LVDRC_COMPRESSORCURVEINPUTLEVELS_DEFAULT {-96,-70,-50, -24, 0}</td>

+        <td>@ref LVDRC_COMPRESSORCURVEINPUTLEVELS_MAX (0)</td>

+    </tr>

+    </table> */

+    LVM_INT16 CompressorCurveInputLevels[LVDRC_COMPRESSORCURVEINPUTLEVELS_LENGTH];          ///< Compressor Curve Input Levels

+

+    /**

+    An array of size 5(maximum) containing the knee points specified by the

+    compression curve in dBFs. The number of knee points in use is limited by the

+    NumKnees parameter. The output level for the first knee should be equal to or

+    larger than -96dB, and the output level for the last knee should be equal to or

+    smaller than 0dB.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>15.0</td>

+        <td>@ref LVDRC_COMPRESSORCURVEOUTPUTLEVELS_MIN (-96)</td>

+        <td>@ref LVDRC_COMPRESSORCURVEOUTPUTLEVELS_DEFAULT {-96,-70,-38,-12,0}</td>

+        <td>@ref LVDRC_COMPRESSORCURVEOUTPUTLEVELS_MAX (0)</td>

+    </tr>

+    </table> */

+    LVM_INT16 CompressorCurveOutputLevels[LVDRC_COMPRESSORCURVEOUTPUTLEVELS_LENGTH];          ///< Compressor Curve Output Levels

+

+    /**

+    The AttackTime parameter is the time constant controlling the rate of reaction

+    to increase in signal level. The AttackTime is specified in increments of 100µs

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>15.0</td>

+        <td>@ref LVDRC_ATTACKTIME_MIN (0)</td>

+        <td>@ref LVDRC_ATTACKTIME_DEFAULT (50)</td>

+        <td>@ref LVDRC_ATTACKTIME_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 AttackTime;          ///< Attack Time

+

+    /**

+    The ReleaseTime parameter is the time constant controlling the rate of reaction

+    to decrease in signal level. The ReleaseTime is specified in increments of

+    100µs.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>15.0</td>

+        <td>@ref LVDRC_RELEASETIME_MIN (0)</td>

+        <td>@ref LVDRC_RELEASETIME_DEFAULT (50)</td>

+        <td>@ref LVDRC_RELEASETIME_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 ReleaseTime;          ///< Release Time

+

+    /**

+    Enable or Disable limiter with soft clipping.

+    */

+    LVM_Mode_en LimiterOperatingMode;          ///< Enable or Disable limiter with soft clipping

+

+    /**

+    Sets the limit level of the compressor in dB.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>15.0</td>

+        <td>@ref LVDRC_LIMITLEVEL_MIN (-96)</td>

+        <td>@ref LVDRC_LIMITLEVEL_DEFAULT (0)</td>

+        <td>@ref LVDRC_LIMITLEVEL_MAX (0)</td>

+    </tr>

+    </table> */

+    LVM_INT16 LimitLevel;          ///< Sets the limit level of the compressor in dB

+

+} LVDRC_ControlParams_st;

+

+/**

+* The control parameters are used to control the overall module behavior. These parameters may

+* be changed at any time during processing using the LVNG_SetControlParameters function but they

+* will not take effect until the next call to the LVNG_Process function.

+*

+* @see LVNG_SetControlParameters

+* @see LVNG_Process

+*/

+typedef struct

+{

+    /**

+    Operating mode for Noise Gate

+    */

+    LVM_Mode_en OperatingMode;          ///< Operating mode

+

+    /**

+    Sets the number of sections (knee points) in the compressor curve

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>16.0</td>

+        <td>@ref LVNG_NUMKNEES_MIN (1)</td>

+        <td>@ref LVNG_NUMKNEES_DEFAULT (5)</td>

+        <td>@ref LVNG_NUMKNEES_MAX (5)</td>

+    </tr>

+    </table> */

+    LVM_UINT16 NumKnees;          ///< Number of Knee points in compressor curve

+

+    /**

+    An array of size 5(maximum) containing the knee points specified by the

+    compression curve in dBFs. The number of knee points in use is limited by the

+    NumKnees parameter. The input level for the first knee should be equal to or

+    larger than -96dB, and the input level for the last knee should be 0dB.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>15.0</td>

+        <td>@ref LVNG_COMPRESSORCURVEINPUTLEVELS_MIN (-96)</td>

+        <td>@ref LVNG_COMPRESSORCURVEINPUTLEVELS_DEFAULT {-80,-70,-50, -24, 0}</td>

+        <td>@ref LVNG_COMPRESSORCURVEINPUTLEVELS_MAX (0)</td>

+    </tr>

+    </table> */

+    LVM_INT16 CompressorCurveInputLevels[LVNG_COMPRESSORCURVEINPUTLEVELS_LENGTH];          ///< Compressor Curve Input Levels

+

+    /**

+    An array of size 5(maximum) containing the knee points specified by the

+    compression curve in dBFs. The number of knee points in use is limited by the

+    NumKnees parameter. The output level for the first knee should be equal to or

+    larger than -96dB, and the output level for the last knee should be equal to or

+    smaller than 0dB.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>15.0</td>

+        <td>@ref LVNG_COMPRESSORCURVEOUTPUTLEVELS_MIN (-96)</td>

+        <td>@ref LVNG_COMPRESSORCURVEOUTPUTLEVELS_DEFAULT {-96,-80,-50, -24, 0}</td>

+        <td>@ref LVNG_COMPRESSORCURVEOUTPUTLEVELS_MAX (0)</td>

+    </tr>

+    </table> */

+    LVM_INT16 CompressorCurveOutputLevels[LVNG_COMPRESSORCURVEOUTPUTLEVELS_LENGTH];          ///< Compressor Curve Output Levels

+

+    /**

+    The AttackTime parameter is the time constant controlling the rate of reaction

+    to increase in signal level. The AttackTime is specified in increments of 100µs

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>15.0</td>

+        <td>@ref LVNG_ATTACKTIME_MIN (0)</td>

+        <td>@ref LVNG_ATTACKTIME_DEFAULT (50)</td>

+        <td>@ref LVNG_ATTACKTIME_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 AttackTime;          ///< Attack Time

+

+    /**

+    The ReleaseTime parameter is the time constant controlling the rate of reaction

+    to decrease in signal level. The ReleaseTime is specified in increments of

+    100µs.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>15.0</td>

+        <td>@ref LVNG_RELEASETIME_MIN (0)</td>

+        <td>@ref LVNG_RELEASETIME_DEFAULT (50)</td>

+        <td>@ref LVNG_RELEASETIME_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 ReleaseTime;          ///< Release Time

+

+} LVNG_ControlParams_st;

+

+/**

+* The control parameters are used to control the overall module behavior. These parameters may

+* be changed at any time during processing using the LVNLPP_SetControlParameters function but they

+* will not take effect until the next call to the LVNLPP_Process function.

+*

+* @see LVNLPP_SetControlParameters

+* @see LVNLPP_Process

+*/

+typedef struct

+{

+    /**

+    Limits the signal level compared to digital full scale in dB.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>15.0</td>

+        <td>@ref LVNLPP_NLPP_LIMIT_MIN (-24)</td>

+        <td>@ref LVNLPP_NLPP_LIMIT_DEFAULT (0)</td>

+        <td>@ref LVNLPP_NLPP_LIMIT_MAX (0)</td>

+    </tr>

+    </table> */

+    LVM_INT16 NLPP_Limit;          ///< NLPP Limit

+

+    /**

+    Sets the -3dB corner frequency of the high-pass filter in Hz.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>16.0</td>

+        <td>@ref LVNLPP_NLPP_HPF_CORNERFREQ_MIN (50)</td>

+        <td>@ref LVNLPP_NLPP_HPF_CORNERFREQ_DEFAULT (50)</td>

+        <td>@ref LVNLPP_NLPP_HPF_CORNERFREQ_MAX (1000)</td>

+    </tr>

+    </table> */

+    LVM_UINT16 NLPP_HPF_CornerFreq;          ///< NLPP HPF Corner Frequency

+

+} LVNLPP_ControlParams_st;

+

+/**

+* The control parameters are used to control the overall module behavior. These parameters may

+* be changed at any time during processing using the LVEQ_SetControlParameters function but they

+* will not take effect until the next call to the LVEQ_Process function.

+*

+* @see LVEQ_SetControlParameters

+* @see LVEQ_Process

+*/

+typedef struct

+{

+    /**

+    Sets the length of the Equalizer impulse response. This must never be more than

+    the value of EQ_MaxLength set at initialization time. The EQ_Length must be a

+    multiple of 8.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>16.0</td>

+        <td>@ref LVEQ_EQ_LENGTH_MIN (8)</td>

+        <td>@ref LVEQ_EQ_LENGTH_DEFAULT (32)</td>

+        <td>@ref LVEQ_EQ_LENGTH_MAX (32)</td>

+    </tr>

+    </table> */

+    LVM_UINT16 EQ_Length;          ///< EQ Tap Length

+

+    /**

+    Pointer to an array containing the samples of the Equalizer impulse response.

+    The format of the array content is specified below. The samples of the

+    Equalizer impulse response must be in Q3.12 format.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>3.12</td>

+        <td>@ref LVEQ_EQ_COEFS_MIN (-32768)</td>

+        <td>@ref LVEQ_EQ_COEFS_DEFAULT {4096,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}</td>

+        <td>@ref LVEQ_EQ_COEFS_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 *pEQ_Coefs;          ///< Equalizer impulse response

+

+} LVEQ_ControlParams_st;

+

+/**

+* The control parameters are used to control the overall module behavior. These parameters may

+* be changed at any time during processing using the LVVOL_SetControlParameters function but they

+* will not take effect until the next call to the LVVOL_Process function.

+*

+* @see LVVOL_SetControlParameters

+* @see LVVOL_Process

+*/

+typedef struct

+{

+    /**

+    Turns on/off VOL_Gain.

+    */

+    LVM_Mode_en VOL_OperatingMode;          ///< Turns on/off VOL_Gain

+

+    /**

+    The volume control gain can be used to set the overall volume level of the

+    signal. The gain is set in dB with steps of 1dB.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>15.0</td>

+        <td>@ref LVVOL_VOL_GAIN_MIN (-96)</td>

+        <td>@ref LVVOL_VOL_GAIN_DEFAULT (0)</td>

+        <td>@ref LVVOL_VOL_GAIN_MAX (24)</td>

+    </tr>

+    </table> */

+    LVM_INT16 VOL_Gain;          ///< Apply Gain to Input signal

+

+} LVVOL_ControlParams_st;

+

+/**

+* The control parameters are used to control the overall module behavior. These parameters may

+* be changed at any time during processing using the LVHPF_SetControlParameters function but they

+* will not take effect until the next call to the LVHPF_Process function.

+*

+* @see LVHPF_SetControlParameters

+* @see LVHPF_Process

+*/

+typedef struct

+{

+    /**

+    Turns on/off High Pass filter.

+    */

+    LVM_Mode_en HPF_OperatingMode;          ///< Turns on/off High Pass filter

+

+    /**

+    Sets the 3dB corner frequency of the high-pass filter. In case NoiseVoid is

+    enabled, the same high-pass filter will be applied to the second microphone

+    channel.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>16.0</td>

+        <td>@ref LVHPF_HPF_CORNERFREQ_MIN (50)</td>

+        <td>@ref LVHPF_HPF_CORNERFREQ_DEFAULT (50)</td>

+        <td>@ref LVHPF_HPF_CORNERFREQ_MAX (1500)</td>

+    </tr>

+    </table> */

+    LVM_UINT16 HPF_CornerFreq;          ///< High Pass Filter Corner Frequency in Hz

+

+} LVHPF_ControlParams_st;

+

+/**

+* The control parameters are used to control the overall module behavior. These parameters may

+* be changed at any time during processing using the LVMUTE_SetControlParameters function but they

+* will not take effect until the next call to the LVMUTE_Process function.

+*

+* @see LVMUTE_SetControlParameters

+* @see LVMUTE_Process

+*/

+typedef struct

+{

+    /**

+    This param can mute unmute the Rx/Tx engine output.

+    */

+    LVM_Mode_en Mute;          ///< This param can mute unmute the Rx/Tx engine output

+

+} LVMUTE_ControlParams_st;

+

+/**

+* The control parameters are used to control the overall module behavior. These parameters may

+* be changed at any time during processing using the LVVE_Rx_SetControlParameters function but they

+* will not take effect until the next call to the LVVE_Rx_Process function.

+*

+* @see LVVE_Rx_SetControlParameters

+* @see LVVE_Rx_Process

+*/

+typedef struct

+{

+    /**

+    This enumerated type is used to set the operating mode of the Rx path. The

+    processing can be separately set to enable all processing modules (i.e., ON),

+    to disable all processing modules (i.e., OFF) or to bypass all processing

+    modules (i.e., BYPASS). When bypassed, all processing modules keep on running,

+    but their output is not used.

+    */

+    LVVE_Rx_Mode_en OperatingMode;          ///< This param controls the on/off of RX voice engine.

+

+    /**

+    This param can mute unmute the Rx/Tx engine output.

+    */

+    LVM_Mode_en Mute;          ///< This param can mute unmute the Rx/Tx engine output

+

+    /**

+    Turns on/off VOL_Gain.

+    */

+    LVM_Mode_en VOL_OperatingMode;          ///< Turns on/off VOL_Gain

+

+    /**

+    The volume control gain can be used to set the overall volume level of the

+    signal. The gain is set in dB with steps of 1dB.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>15.0</td>

+        <td>@ref LVVE_RX_VOL_GAIN_MIN (-96)</td>

+        <td>@ref LVVE_RX_VOL_GAIN_DEFAULT (0)</td>

+        <td>@ref LVVE_RX_VOL_GAIN_MAX (24)</td>

+    </tr>

+    </table> */

+    LVM_INT16 VOL_Gain;          ///< Apply Gain to Input signal

+

+    /**

+    Far End Noise Suppression Control Parameter Structure.

+    */

+    LVFENS_ControlParams_st FENS_ControlParams;          ///< Far End Noise Suppression Control Parameter Structure

+

+    /**

+    Turns on/off NLPP.

+    */

+    LVM_Mode_en NLPP_OperatingMode;          ///< Turns on/off NLPP

+

+    /**

+    NLPP Control Parameter Structure.

+    */

+    LVNLPP_ControlParams_st NLPP_ControlParams;          ///< NLPP Control Parameter Structure

+

+    /**

+    Voice Clarity Control Parameter Structure.

+    */

+    LVVC_ControlParams_st VC_ControlParams;          ///< Voice Clarity Control Parameter Structure

+

+    /**

+    Equalizer Operating mode.

+    */

+    LVM_Mode_en EQ_OperatingMode;          ///< Equalizer Operating mode

+

+    /**

+    Equalizer Control Parameters Structure.

+    */

+    LVEQ_ControlParams_st EQ_ControlParams;          ///< Equalizer Control Parameters Structure

+

+    /**

+    DRC Control Parameter Strcuture.

+    */

+    LVDRC_ControlParams_st DRC_ControlParams;          ///< DRC Control Parameter Strcuture

+

+    /**

+    Turns on/off High Pass filter.

+    */

+    LVM_Mode_en HPF_OperatingMode;          ///< Turns on/off High Pass filter

+

+    /**

+    Sets the 3dB corner frequency of the high-pass filter. In case NoiseVoid is

+    enabled, the same high-pass filter will be applied to the second microphone

+    channel.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>16.0</td>

+        <td>@ref LVVE_RX_HPF_CORNERFREQ_MIN (50)</td>

+        <td>@ref LVVE_RX_HPF_CORNERFREQ_DEFAULT (50)</td>

+        <td>@ref LVVE_RX_HPF_CORNERFREQ_MAX (1500)</td>

+    </tr>

+    </table> */

+    LVM_UINT16 HPF_CornerFreq;          ///< High Pass Filter Corner Frequency in Hz

+

+    /**

+    Whisper Mode Control Parameter Strcuture.

+    */

+    LVWM_ControlParams_st WM_ControlParams;          ///< Whisper Mode Control Parameter Strcuture

+

+    /**

+    Noise Gate Control Parameter Structure.

+    */

+    LVNG_ControlParams_st NG_ControlParams;          ///< Noise Gate Control Parameter Structure

+

+} LVVE_Rx_ControlParams_st;

+

+/**

+* The control parameters are used to control the overall module behavior. These parameters may

+* be changed at any time during processing using the LVNV_SetControlParameters function but they

+* will not take effect until the next call to the LVNV_Process function.

+*

+* @see LVNV_SetControlParameters

+* @see LVNV_Process

+*/

+typedef struct

+{

+    /**

+    */

+    LVM_Mode_en OperatingMode;          ///< Operating Mode

+

+    /**

+    The mode word to enable/disable internal algorithm blocks of LVNV.

+    */

+    LVNV_ModeWord_bm Mode;          ///< Mode word

+

+    /**

+    The mode2 word to allow switching or combining different blocks inside LVNV.

+    */

+    LVNV_Mode2Word_bm Mode2;          ///< Mode2 word

+

+    /**

+    The tuning mode word to enable/disable internal algorithm tuning capabilities

+    in the different blocks of LVNV. Only one bit is allowed to be enabled at a

+    time.

+    */

+    LVNV_TuningModeWord_bm Tuning_mode;          ///< Tuning mode word

+

+    /**

+    Gain applied at the primary channel in the Tx input. Used to scale the

+    microphone signal in order to give the NLMS0_LB and NLMS0_HB filters headroom

+    for correct operation.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>2.13</td>

+        <td>@ref LVNV_INPUT_GAIN_MIC0_MIN (0)</td>

+        <td>@ref LVNV_INPUT_GAIN_MIC0_DEFAULT (8192)</td>

+        <td>@ref LVNV_INPUT_GAIN_MIC0_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 Input_Gain_Mic0;          ///< The primary input gain.

+

+    /**

+    Gain applied at the secondary channel in the Tx input. Used to scale the

+    microphone signal in order to give the NLMS1_LB and NLMS1_HB filters headroom

+    for correct operation.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>2.13</td>

+        <td>@ref LVNV_INPUT_GAIN_MIC1_MIN (0)</td>

+        <td>@ref LVNV_INPUT_GAIN_MIC1_DEFAULT (8192)</td>

+        <td>@ref LVNV_INPUT_GAIN_MIC1_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 Input_Gain_Mic1;          ///< The secondary input gain.

+

+    /**

+    Gain applied at the Tx output of LVNV. Compensates the applied Input_Gain_Mic0

+    in order to preserve the overall Tx gain.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>4.11</td>

+        <td>@ref LVNV_OUTPUT_GAIN_MIN (0)</td>

+        <td>@ref LVNV_OUTPUT_GAIN_DEFAULT (2048)</td>

+        <td>@ref LVNV_OUTPUT_GAIN_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 Output_Gain;          ///< The output gain.

+

+    /**

+    Length of the low-band (0-4kHz) adaptive echo cancellation filter for the

+    primary channel. The Length should be chosen such that most of the energy of

+    the impulse response is covered by the filter. The length should be a multiple

+    of 8.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>16.0</td>

+        <td>@ref LVNV_NLMS0_LB_TAPS_MIN (16)</td>

+        <td>@ref LVNV_NLMS0_LB_TAPS_DEFAULT (32)</td>

+        <td>@ref LVNV_NLMS0_LB_TAPS_MAX (64)</td>

+    </tr>

+    </table> */

+    LVM_UINT16 NLMS0_LB_taps;          ///< Number of NLMS0 low-band taps.

+

+    /**

+    Step size for the update of the low-band adaptive filter coefficients for the

+    primary channel. It is recommended not to change the default value.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVNV_NLMS0_LB_TWOALPHA_MIN (0)</td>

+        <td>@ref LVNV_NLMS0_LB_TWOALPHA_DEFAULT (8192)</td>

+        <td>@ref LVNV_NLMS0_LB_TWOALPHA_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 NLMS0_LB_twoalpha;          ///< NLMS0 low-band step size

+

+    /**

+    Adaptive step-size control for the low-band adaptive echo cancellation filter

+    for the primary channel. This parameter is used to slow down the update speed

+    of the adaptive filter during double talk situations.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>9.6</td>

+        <td>@ref LVNV_NLMS0_LB_ERL_MIN (64)</td>

+        <td>@ref LVNV_NLMS0_LB_ERL_DEFAULT (1000)</td>

+        <td>@ref LVNV_NLMS0_LB_ERL_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 NLMS0_LB_erl;          ///< NLMS0 low-band erl

+

+    /**

+    Length of the high-band (4-8kHz) adaptive echo cancellation filter for the

+    primary channel. The Length should be chosen such that most of the energy of

+    the impulse response is covered by the filter. The length should be a multiple

+    of 8.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>16.0</td>

+        <td>@ref LVNV_NLMS0_HB_TAPS_MIN (16)</td>

+        <td>@ref LVNV_NLMS0_HB_TAPS_DEFAULT (24)</td>

+        <td>@ref LVNV_NLMS0_HB_TAPS_MAX (64)</td>

+    </tr>

+    </table> */

+    LVM_UINT16 NLMS0_HB_taps;          ///< Number of NLMS0 high-band taps.

+

+    /**

+    Step size for the update of the high-band adaptive filter coefficients for the

+    primary channel. It is recommended not to change the default value.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVNV_NLMS0_HB_TWOALPHA_MIN (0)</td>

+        <td>@ref LVNV_NLMS0_HB_TWOALPHA_DEFAULT (8192)</td>

+        <td>@ref LVNV_NLMS0_HB_TWOALPHA_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 NLMS0_HB_twoalpha;          ///< NLMS0 high-band step size

+

+    /**

+    Adaptive step-size control for the high-band adaptive echo cancellation filter

+    for the primary channel. This parameter is used to slow down the update speed

+    of the adaptive filter during double talk situations.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>9.6</td>

+        <td>@ref LVNV_NLMS0_HB_ERL_MIN (64)</td>

+        <td>@ref LVNV_NLMS0_HB_ERL_DEFAULT (1000)</td>

+        <td>@ref LVNV_NLMS0_HB_ERL_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 NLMS0_HB_erl;          ///< NLMS0 high-band erl

+

+    /**

+    Indicates whether a preset of adaptive filter coefficients should be done.<br>

+    0 = No preset (coefficients as they are).<br>

+    1 = Preset with internally calculated coefficients.<br>

+    2 = Preset with zero coefficients.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>15.0</td>

+        <td>@ref LVNV_NLMS0_PRESET_COEFS_MIN (0)</td>

+        <td>@ref LVNV_NLMS0_PRESET_COEFS_DEFAULT (0)</td>

+        <td>@ref LVNV_NLMS0_PRESET_COEFS_MAX (2)</td>

+    </tr>

+    </table> */

+    LVM_INT16 NLMS0_preset_coefs;          ///< NLMS0 preset

+

+    /**

+    Offset added to the normalization of the adaptation of the filter.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVNV_NLMS0_OFFSET_MIN (0)</td>

+        <td>@ref LVNV_NLMS0_OFFSET_DEFAULT (776)</td>

+        <td>@ref LVNV_NLMS0_OFFSET_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 NLMS0_offset;          ///< NLMS0 offset

+

+    /**

+    Length of the low-band (0-4kHz) adaptive echo cancellation filter for the

+    secondary channel. The Length should be chosen such that most of the energy of

+    the impulse response is covered by the filter. The length should be a multiple

+    of 8.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>16.0</td>

+        <td>@ref LVNV_NLMS1_LB_TAPS_MIN (16)</td>

+        <td>@ref LVNV_NLMS1_LB_TAPS_DEFAULT (32)</td>

+        <td>@ref LVNV_NLMS1_LB_TAPS_MAX (32)</td>

+    </tr>

+    </table> */

+    LVM_UINT16 NLMS1_LB_taps;          ///< Number of NLMS1 low-band taps.

+

+    /**

+    Step size for the update of the low-band adaptive filter coefficients for the

+    secondary channel. It is recommended not to change the default value.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVNV_NLMS1_LB_TWOALPHA_MIN (0)</td>

+        <td>@ref LVNV_NLMS1_LB_TWOALPHA_DEFAULT (8192)</td>

+        <td>@ref LVNV_NLMS1_LB_TWOALPHA_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 NLMS1_LB_twoalpha;          ///< NLMS1 low-band step size

+

+    /**

+    Adaptive step-size control for the low-band adaptive echo cancellation filter

+    for the secondary channel. This parameter is used to slow down the update speed

+    of the adaptive filter during double talk situations.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>9.6</td>

+        <td>@ref LVNV_NLMS1_LB_ERL_MIN (64)</td>

+        <td>@ref LVNV_NLMS1_LB_ERL_DEFAULT (1000)</td>

+        <td>@ref LVNV_NLMS1_LB_ERL_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 NLMS1_LB_erl;          ///< NLMS1 low-band erl

+

+    /**

+    Length of the high-band (4-8kHz) adaptive echo cancellation filter for the

+    secondary channel. The Length should be chosen such that most of the energy of

+    the impulse response is covered by the filter. The length should be a multiple

+    of 8.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>16.0</td>

+        <td>@ref LVNV_NLMS1_HB_TAPS_MIN (16)</td>

+        <td>@ref LVNV_NLMS1_HB_TAPS_DEFAULT (24)</td>

+        <td>@ref LVNV_NLMS1_HB_TAPS_MAX (32)</td>

+    </tr>

+    </table> */

+    LVM_UINT16 NLMS1_HB_taps;          ///< Number of NLMS1 high-band taps.

+

+    /**

+    Step size for the update of the high-band adaptive filter coefficients for the

+    secondary channel. It is recommended not to change the default value.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVNV_NLMS1_HB_TWOALPHA_MIN (0)</td>

+        <td>@ref LVNV_NLMS1_HB_TWOALPHA_DEFAULT (8192)</td>

+        <td>@ref LVNV_NLMS1_HB_TWOALPHA_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 NLMS1_HB_twoalpha;          ///< NLMS1 high-band step size

+

+    /**

+    Adaptive step-size control for the high-band adaptive echo cancellation filter

+    for the secondary channel. This parameter is used to slow down the update speed

+    of the adaptive filter during double talk situations.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>9.6</td>

+        <td>@ref LVNV_NLMS1_HB_ERL_MIN (64)</td>

+        <td>@ref LVNV_NLMS1_HB_ERL_DEFAULT (1000)</td>

+        <td>@ref LVNV_NLMS1_HB_ERL_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 NLMS1_HB_erl;          ///< NLMS1 high-band erl

+

+    /**

+    Indicates whether a preset of adaptive filter coefficients should be done.<br>

+    0 = No preset (coefficients as they are).<br>

+    1 = Preset with internally calculated coefficients.<br>

+    2 = Preset with zero coefficients.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>15.0</td>

+        <td>@ref LVNV_NLMS1_PRESET_COEFS_MIN (0)</td>

+        <td>@ref LVNV_NLMS1_PRESET_COEFS_DEFAULT (0)</td>

+        <td>@ref LVNV_NLMS1_PRESET_COEFS_MAX (2)</td>

+    </tr>

+    </table> */

+    LVM_INT16 NLMS1_preset_coefs;          ///< NLMS1 preset

+

+    /**

+    Offset added to the normalization of the adaptation of the filter.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVNV_NLMS1_OFFSET_MIN (0)</td>

+        <td>@ref LVNV_NLMS1_OFFSET_DEFAULT (776)</td>

+        <td>@ref LVNV_NLMS1_OFFSET_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 NLMS1_offset;          ///< NLMS1 offset

+

+    /**

+    A parameter representing a threshold for the detection of instrumental noise.

+    The higher the value for this parameter, the lower noise suppression

+    performance.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVNV_CAL_MICPOWFLOORMIN_MIN (0)</td>

+        <td>@ref LVNV_CAL_MICPOWFLOORMIN_DEFAULT (150)</td>

+        <td>@ref LVNV_CAL_MICPOWFLOORMIN_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 CAL_micPowFloorMin;          ///< Instrumental noise threshold

+

+    /**

+    Threshold for Windgush detector. The higher the value, the less sensitive the

+    detection.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>6.9</td>

+        <td>@ref LVNV_WGTHRESHOLD_MIN (0)</td>

+        <td>@ref LVNV_WGTHRESHOLD_DEFAULT (32767)</td>

+        <td>@ref LVNV_WGTHRESHOLD_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 WgThreshold;          ///< Windgush threshold

+

+    /**

+    Threshold for speech detector based on power comparison between primary and

+    secondary microphones. The higher the value, the less sensitive the detection.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>3.12</td>

+        <td>@ref LVNV_MPTHRESHOLD_MIN (0)</td>

+        <td>@ref LVNV_MPTHRESHOLD_DEFAULT (6554)</td>

+        <td>@ref LVNV_MPTHRESHOLD_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 MpThreshold;          ///< MicPow threshold

+

+    /**

+    Set of first 8 coefficients for adaptive filter FSB0. These values should be

+    determined for the given microphone configuration

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVNV_FSB_INIT_TABLE0_MIN (-32768)</td>

+        <td>@ref LVNV_FSB_INIT_TABLE0_DEFAULT {32767, 0, 0, 0, 0, 0, 0, 0}</td>

+        <td>@ref LVNV_FSB_INIT_TABLE0_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 FSB_init_table0[LVNV_FSB_INIT_TABLE0_LENGTH];          ///< FSB0 initial coefficients.

+

+    /**

+    Set of first 8 coefficients for adaptive filter FSB1. These values should be

+    determined for the given microphone configuration

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVNV_FSB_INIT_TABLE1_MIN (-32768)</td>

+        <td>@ref LVNV_FSB_INIT_TABLE1_DEFAULT {0, 0, 0, 0, 0, 0, 0, 0}</td>

+        <td>@ref LVNV_FSB_INIT_TABLE1_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 FSB_init_table1[LVNV_FSB_INIT_TABLE1_LENGTH];          ///< FSB1 initial coefficients.

+

+    /**

+    Length of the FSB to model the acoustical paths between the speech source and

+    two microphones. The length must be equal to 16 for the handset application.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>16.0</td>

+        <td>@ref LVNV_FSB_TAPS_MIN (8)</td>

+        <td>@ref LVNV_FSB_TAPS_DEFAULT (16)</td>

+        <td>@ref LVNV_FSB_TAPS_MAX (16)</td>

+    </tr>

+    </table> */

+    LVM_UINT16 FSB_taps;          ///< Number of FSB taps

+

+    /**

+    Step-size to update the coefficients of the adaptive filters. A higher value

+    leads to a faster speed of the adaptation, while a lower value provides more

+    stability, but a slow adaption speed.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVNV_FSB_TWOALPHA_MIN (0)</td>

+        <td>@ref LVNV_FSB_TWOALPHA_DEFAULT (655)</td>

+        <td>@ref LVNV_FSB_TWOALPHA_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 FSB_twoalpha;          ///< FSB step size control

+

+    /**

+    Gain applied on the samples of the second FSB reference signal (fsbref[1]).

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>5.10</td>

+        <td>@ref LVNV_FSB_REF_GAIN_MIN (0)</td>

+        <td>@ref LVNV_FSB_REF_GAIN_DEFAULT (1024)</td>

+        <td>@ref LVNV_FSB_REF_GAIN_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 FSB_ref_gain;          ///< FSB ref gain

+

+    /**

+    Length of the GSC to model the transfer function between the noise reference

+    and the residual signal, in order to reduce the noise and interfering sounds

+    from the desired signal. This number should be a multiple of 8.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>16.0</td>

+        <td>@ref LVNV_GSC_TAPS_MIN (8)</td>

+        <td>@ref LVNV_GSC_TAPS_DEFAULT (16)</td>

+        <td>@ref LVNV_GSC_TAPS_MAX (48)</td>

+    </tr>

+    </table> */

+    LVM_UINT16 GSC_taps;          ///< Number of GSC taps

+

+    /**

+    Step-size to update the coefficients of the adaptive filter. A higher value

+    leads to a faster speed of the adaptation, while a lower value provides more

+    stability, but a slow adaption speed.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVNV_GSC_TWOALPHA_MIN (0)</td>

+        <td>@ref LVNV_GSC_TWOALPHA_DEFAULT (1638)</td>

+        <td>@ref LVNV_GSC_TWOALPHA_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 GSC_twoalpha;          ///< GSC step size control

+

+    /**

+    Adaptive step-size control for GSC to avoid divergence of the adaptive filter

+    during desired speech. In general, GSC_erl is lower than NLMS_erl and ranges

+    between 0 and 30 dB.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>9.6</td>

+        <td>@ref LVNV_GSC_ERL_MIN (64)</td>

+        <td>@ref LVNV_GSC_ERL_DEFAULT (256)</td>

+        <td>@ref LVNV_GSC_ERL_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 GSC_erl;          ///< GSC erl

+

+    /**

+    Offset added to the computation of the power of the noise reference to avoid

+    that the power converges towards zero when the input is low.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVNV_GSC_OFFSET_MIN (0)</td>

+        <td>@ref LVNV_GSC_OFFSET_DEFAULT (1638)</td>

+        <td>@ref LVNV_GSC_OFFSET_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 GSC_offset;          ///< GSC offset

+

+    /**

+    Echo subtraction factor applied during farend-only.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>2.13</td>

+        <td>@ref LVNV_DNNS_ECHOGAMMAHI_MIN (0)</td>

+        <td>@ref LVNV_DNNS_ECHOGAMMAHI_DEFAULT (16384)</td>

+        <td>@ref LVNV_DNNS_ECHOGAMMAHI_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 DNNS_EchoGammaHi;          ///< High echo subtraction factor

+

+    /**

+    Echo subtraction factor applied during double talk and nearend-only.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>2.13</td>

+        <td>@ref LVNV_DNNS_ECHOGAMMALO_MIN (0)</td>

+        <td>@ref LVNV_DNNS_ECHOGAMMALO_DEFAULT (8192)</td>

+        <td>@ref LVNV_DNNS_ECHOGAMMALO_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 DNNS_EchoGammaLo;          ///< Low echo subtraction factor

+

+    /**

+    Parameter related to the reverberation time of the acoustical environment,

+    which represents the decay in energy over time of the echo tail of the impulse

+    response.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVNV_DNNS_ECHOALPHAREV_MIN (0)</td>

+        <td>@ref LVNV_DNNS_ECHOALPHAREV_DEFAULT (12000)</td>

+        <td>@ref LVNV_DNNS_ECHOALPHAREV_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 DNNS_EchoAlphaRev;          ///< Echo reverberation factor

+

+    /**

+    Parameter representing the portion of the echo tail (estimated by the NLMS

+    filter) that has to be extrapolated in time.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVNV_DNNS_ECHOTAILPORTION_MIN (0)</td>

+        <td>@ref LVNV_DNNS_ECHOTAILPORTION_DEFAULT (7000)</td>

+        <td>@ref LVNV_DNNS_ECHOTAILPORTION_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 DNNS_EchoTailPortion;          ///< Echo tail portion

+

+    /**

+    Non-linear echo subtraction factor applied during double talk and nearend-only.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>4.11</td>

+        <td>@ref LVNV_DNNS_NLATTEN_MIN (0)</td>

+        <td>@ref LVNV_DNNS_NLATTEN_DEFAULT (256)</td>

+        <td>@ref LVNV_DNNS_NLATTEN_MAX (2048)</td>

+    </tr>

+    </table> */

+    LVM_INT16 DNNS_NlAtten;          ///< Non-linear echo subtraction factor

+

+    /**

+    Gain factor for stationary noise oversubtraction.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>2.13</td>

+        <td>@ref LVNV_DNNS_NOISEGAMMAS_MIN (0)</td>

+        <td>@ref LVNV_DNNS_NOISEGAMMAS_DEFAULT (11470)</td>

+        <td>@ref LVNV_DNNS_NOISEGAMMAS_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 DNNS_NoiseGammaS;          ///< Stationary noise oversubtraction factor

+

+    /**

+    Gain factor for non-stationary noise oversubtraction.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>2.13</td>

+        <td>@ref LVNV_DNNS_NOISEGAMMAN_MIN (0)</td>

+        <td>@ref LVNV_DNNS_NOISEGAMMAN_DEFAULT (16384)</td>

+        <td>@ref LVNV_DNNS_NOISEGAMMAN_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 DNNS_NoiseGammaN;          ///< Non-stationary noise oversubtraction factor

+

+    /**

+    The maximum amount of stationary noise suppression.<br>

+    DNNS_NoiseGainMinS = \f$2*32767*10^{MaxNoiseReductiondB/20}\f$

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>-1.16</td>

+        <td>@ref LVNV_DNNS_NOISEGAINMINS_MIN (0)</td>

+        <td>@ref LVNV_DNNS_NOISEGAINMINS_DEFAULT (11140)</td>

+        <td>@ref LVNV_DNNS_NOISEGAINMINS_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 DNNS_NoiseGainMinS;          ///< Maximum stationary noise suppression.

+

+    /**

+    The maximum amount of non-stationary noise suppression.<br>

+    DNNS_NoiseGainMinN = \f$2*32767*10^{MaxNoiseReductiondB/20}\f$

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>-1.16</td>

+        <td>@ref LVNV_DNNS_NOISEGAINMINN_MIN (0)</td>

+        <td>@ref LVNV_DNNS_NOISEGAINMINN_DEFAULT (6554)</td>

+        <td>@ref LVNV_DNNS_NOISEGAINMINN_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 DNNS_NoiseGainMinN;          ///< Maximum non-stationary noise suppression.

+

+    /**

+    Bias compensation factor for stationary noise estimation.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>2.13</td>

+        <td>@ref LVNV_DNNS_NOISEBIASCOMP_MIN (0)</td>

+        <td>@ref LVNV_DNNS_NOISEBIASCOMP_DEFAULT (9830)</td>

+        <td>@ref LVNV_DNNS_NOISEBIASCOMP_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 DNNS_NoiseBiasComp;          ///< Bias compensation factor.

+

+    /**

+    Echo oversubtraction factor applied to the estimated non-stationary noise

+    floor.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>3.12</td>

+        <td>@ref LVNV_DNNS_GAINETA_MIN (0)</td>

+        <td>@ref LVNV_DNNS_GAINETA_DEFAULT (256)</td>

+        <td>@ref LVNV_DNNS_GAINETA_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 DNNS_GainEta;          ///< Echo oversubtraction factor.

+

+    /**

+    Detection threshold for microphone activity.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>3.12</td>

+        <td>@ref LVNV_DNNS_ACTHRESHOLD_MIN (0)</td>

+        <td>@ref LVNV_DNNS_ACTHRESHOLD_DEFAULT (12288)</td>

+        <td>@ref LVNV_DNNS_ACTHRESHOLD_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 DNNS_AcThreshold;          ///< Activity threshold.

+

+    /**

+    Detection threshold for activity within the beam of FSB.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>3.12</td>

+        <td>@ref LVNV_DNNS_WBTHRESHOLD_MIN (0)</td>

+        <td>@ref LVNV_DNNS_WBTHRESHOLD_DEFAULT (9216)</td>

+        <td>@ref LVNV_DNNS_WBTHRESHOLD_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 DNNS_WbThreshold;          ///< WithinBeam threshold.

+

+    /**

+    Detection threshold for lost beam where the nearend speaker is speaking outside

+    the beam of the FSB.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>9.6</td>

+        <td>@ref LVNV_DNNS_LOSTBEAMTHRESHOLD_MIN (0)</td>

+        <td>@ref LVNV_DNNS_LOSTBEAMTHRESHOLD_DEFAULT (320)</td>

+        <td>@ref LVNV_DNNS_LOSTBEAMTHRESHOLD_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 DNNS_LostBeamThreshold;          ///< Lost beam threshold.

+

+    /**

+    Smoothing factor applied to get a smoothed value of the inter-channel

+    correlation.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>9.6</td>

+        <td>@ref LVNV_PCD_BETA_MIN (0)</td>

+        <td>@ref LVNV_PCD_BETA_DEFAULT (230)</td>

+        <td>@ref LVNV_PCD_BETA_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 PCD_beta;          ///< ICC smoothing factor.

+

+    /**

+    Detection threshold for broadside when the nearend speaker is not in end-fire

+    position with respect to the microphone configuration.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>9.6</td>

+        <td>@ref LVNV_PCD_THRESHOLD_MIN (0)</td>

+        <td>@ref LVNV_PCD_THRESHOLD_DEFAULT (26213)</td>

+        <td>@ref LVNV_PCD_THRESHOLD_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 PCD_Threshold;          ///< Broadside detection threshold.

+

+} LVNV_ControlParams_st;

+

+/**

+* The control parameters are used to control the overall module behavior. These parameters may

+* be changed at any time during processing using the LVHF_SetControlParameters function but they

+* will not take effect until the next call to the LVHF_Process function.

+*

+* @see LVHF_SetControlParameters

+* @see LVHF_Process

+*/

+typedef struct

+{

+    /**

+    */

+    LVM_Mode_en OperatingMode;          ///< Operating Mode

+

+    /**

+    The mode word to enable/disable internal algorithm blocks of HandsFree

+    */

+    LVHF_ModeWord_bm Mode;          ///< Mode Word

+

+    /**

+    The tuning mode is used to enable/disable internal algorithm tuning

+    capabilities in the different blocks of HandsFree. Only one bit allowed to be

+    enabled at a time.

+    */

+    LVHF_TuningModeWord TuningMode;          ///< Tuning Mode

+

+    /**

+    Gain applied at the Tx input of LVHF. Used to scale the microphone signal in

+    order to give the NLMS filter headroom for correct operation.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>2.13</td>

+        <td>@ref LVHF_INPUTGAIN_MIN (0)</td>

+        <td>@ref LVHF_INPUTGAIN_DEFAULT (8192)</td>

+        <td>@ref LVHF_INPUTGAIN_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 InputGain;          ///< Input Gain

+

+    /**

+    Gain applied at the Tx output of LVHF. Compensates the applied InputGain in

+    order to preserve the overall Tx gain.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>4.11</td>

+        <td>@ref LVHF_OUTPUTGAIN_MIN (0)</td>

+        <td>@ref LVHF_OUTPUTGAIN_DEFAULT (2048)</td>

+        <td>@ref LVHF_OUTPUTGAIN_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 OutputGain;          ///< Output Gain

+

+    /**

+    Limit the NLMS reference signal. Value in dB Full Scale.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>15.0</td>

+        <td>@ref LVHF_NLMS_LIMIT_MIN (-24)</td>

+        <td>@ref LVHF_NLMS_LIMIT_DEFAULT (0)</td>

+        <td>@ref LVHF_NLMS_LIMIT_MAX (0)</td>

+    </tr>

+    </table> */

+    LVM_INT16 NLMS_limit;          ///< Limit the NLMS reference signal.

+

+    /**

+    Length of the low-band (0-4kHz) adaptive echo cancellation filter. The Length

+    should be chosen such that most of the energy of the impulse response is

+    covered by the filter. The length should be a multiple of 8.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>16.0</td>

+        <td>@ref LVHF_NLMS_LB_TAPS_MIN (16)</td>

+        <td>@ref LVHF_NLMS_LB_TAPS_DEFAULT (64)</td>

+        <td>@ref LVHF_NLMS_LB_TAPS_MAX (200)</td>

+    </tr>

+    </table> */

+    LVM_UINT16 NLMS_LB_taps;          ///< Number of taps for LB NLMS.

+

+    /**

+    Step size for the update of the low-band (0-4kHz) adaptive filter coefficients.

+    It is recommended not to change the default value.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVHF_NLMS_LB_TWO_ALPHA_MIN (0)</td>

+        <td>@ref LVHF_NLMS_LB_TWO_ALPHA_DEFAULT (8192)</td>

+        <td>@ref LVHF_NLMS_LB_TWO_ALPHA_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 NLMS_LB_two_alpha;          ///< Step Size of LB NLMS

+

+    /**

+    Adaptive step size control for the low-band (0-4kHz) adaptive echo cancellation

+    filter. This parameter is used to slow down the update speed of the adaptive

+    filter during double talk situations.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>9.6</td>

+        <td>@ref LVHF_NLMS_LB_ERL_MIN (64)</td>

+        <td>@ref LVHF_NLMS_LB_ERL_DEFAULT (128)</td>

+        <td>@ref LVHF_NLMS_LB_ERL_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 NLMS_LB_erl;          ///< ERL of LB NLMS

+

+    /**

+    Length of the high-band (4-8kHz) adaptive echo cancellation filter. The Length

+    should be chosen such that most of the energy of the impulse response is

+    covered by the filter. The length should be a multiple of 8. In case of

+    narrowband processing, this parameter has no effect.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>16.0</td>

+        <td>@ref LVHF_NLMS_HB_TAPS_MIN (16)</td>

+        <td>@ref LVHF_NLMS_HB_TAPS_DEFAULT (64)</td>

+        <td>@ref LVHF_NLMS_HB_TAPS_MAX (136)</td>

+    </tr>

+    </table> */

+    LVM_UINT16 NLMS_HB_taps;          ///< Number of taps for HB NLMS.

+

+    /**

+    Step size for the update of the high-band (4-8kHz) adaptive filter

+    coefficients. It is recommended not to change the default value. In case of

+    narrowband processing, this parameter has no effect.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVHF_NLMS_HB_TWO_ALPHA_MIN (0)</td>

+        <td>@ref LVHF_NLMS_HB_TWO_ALPHA_DEFAULT (8192)</td>

+        <td>@ref LVHF_NLMS_HB_TWO_ALPHA_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 NLMS_HB_two_alpha;          ///< Step Size of HB NLMS

+

+    /**

+    Adaptive step size control for the high-band (4-8kHz) adaptive echo

+    cancellation filter. This parameter is used to slow down the update speed of

+    the adaptive filter during double talk situations. In case of narrowband

+    processing, this parameter has no effect.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>9.6</td>

+        <td>@ref LVHF_NLMS_HB_ERL_MIN (64)</td>

+        <td>@ref LVHF_NLMS_HB_ERL_DEFAULT (128)</td>

+        <td>@ref LVHF_NLMS_HB_ERL_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 NLMS_HB_erl;          ///< ERL of HB NLMS

+

+    /**

+    Indicates whether a preset of adaptive filter coefficients should be done. <br>

+    0 = No preset (Coefficients as they are)<br>

+    1= Preset with internally calculated coefficients.<br>

+    2= Preset with zero coefficients.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>15.0</td>

+        <td>@ref LVHF_NLMS_PRESET_COEFS_MIN (0)</td>

+        <td>@ref LVHF_NLMS_PRESET_COEFS_DEFAULT (1)</td>

+        <td>@ref LVHF_NLMS_PRESET_COEFS_MAX (2)</td>

+    </tr>

+    </table> */

+    LVM_INT16 NLMS_preset_coefs;          ///< Coefficient preset.

+

+    /**

+    Offset added to the normalization of the adaptation of the filter.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVHF_NLMS_OFFSET_MIN (0)</td>

+        <td>@ref LVHF_NLMS_OFFSET_DEFAULT (767)</td>

+        <td>@ref LVHF_NLMS_OFFSET_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 NLMS_offset;          ///< NLMS offset

+

+    /**

+    Parameter related to the reverberation of the acoustic environment. It

+    represents the decay in time of the energy of the echo tail of the impulse

+    response for the LB.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVHF_DENS_TAIL_ALPHA_LB_MIN (0)</td>

+        <td>@ref LVHF_DENS_TAIL_ALPHA_LB_DEFAULT (25395)</td>

+        <td>@ref LVHF_DENS_TAIL_ALPHA_LB_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 DENS_tail_alpha_LB;

+    /**

+    Parameter related to the portion of the echo tail that has to be extrapolated

+    in time for LB.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVHF_DENS_TAIL_PORTION_LB_MIN (0)</td>

+        <td>@ref LVHF_DENS_TAIL_PORTION_LB_DEFAULT (29491)</td>

+        <td>@ref LVHF_DENS_TAIL_PORTION_LB_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 DENS_tail_portion_LB;

+    /**

+    Echo subtraction factor applied during farend-only for the LB.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>7.8</td>

+        <td>@ref LVHF_DENS_GAMMA_E_HIGH_LB_MIN (0)</td>

+        <td>@ref LVHF_DENS_GAMMA_E_HIGH_LB_DEFAULT (512)</td>

+        <td>@ref LVHF_DENS_GAMMA_E_HIGH_LB_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 DENS_gamma_e_high_LB;          ///< FE Echo subtraction LB

+

+    /**

+    Echo subtraction factor applied during double talk for the LB.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>7.8</td>

+        <td>@ref LVHF_DENS_GAMMA_E_DT_LB_MIN (0)</td>

+        <td>@ref LVHF_DENS_GAMMA_E_DT_LB_DEFAULT (256)</td>

+        <td>@ref LVHF_DENS_GAMMA_E_DT_LB_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 DENS_gamma_e_dt_LB;          ///< DT Echo subtraction factor LB

+

+    /**

+    Echo subtraction factor applied during nearend-only for the LB.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>7.8</td>

+        <td>@ref LVHF_DENS_GAMMA_E_LOW_LB_MIN (0)</td>

+        <td>@ref LVHF_DENS_GAMMA_E_LOW_LB_DEFAULT (256)</td>

+        <td>@ref LVHF_DENS_GAMMA_E_LOW_LB_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 DENS_gamma_e_low_LB;          ///< NE Echo subtraction factor LB

+

+    /**

+    The amount of extra non-linear suppression relative to the maximum linear echo

+    suppression for the LB. The use of these non-linear echo suppression mechanisms

+    should be avoided as much as possible since it affects the double talk

+    performance.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>4.11</td>

+        <td>@ref LVHF_DENS_NL_ATTEN_LB_MIN (0)</td>

+        <td>@ref LVHF_DENS_NL_ATTEN_LB_DEFAULT (0)</td>

+        <td>@ref LVHF_DENS_NL_ATTEN_LB_MAX (2048)</td>

+    </tr>

+    </table> */

+    LVM_INT16 DENS_NL_atten_LB;          ///< LB Non linear attenuation

+

+    /**

+    Parameter related to the reverberation of the acoustic environment. It

+    represents the decay in time of the energy of the echo tail of the impulse

+    response for the HB.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVHF_DENS_TAIL_ALPHA_HB_MIN (0)</td>

+        <td>@ref LVHF_DENS_TAIL_ALPHA_HB_DEFAULT (25395)</td>

+        <td>@ref LVHF_DENS_TAIL_ALPHA_HB_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 DENS_tail_alpha_HB;

+    /**

+    Parameter related to the portion of the echo tail that has to be extrapolated

+    in time for HB.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVHF_DENS_TAIL_PORTION_HB_MIN (0)</td>

+        <td>@ref LVHF_DENS_TAIL_PORTION_HB_DEFAULT (29491)</td>

+        <td>@ref LVHF_DENS_TAIL_PORTION_HB_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 DENS_tail_portion_HB;

+    /**

+    Echo subtraction factor applied during farend-only for the HB.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>7.8</td>

+        <td>@ref LVHF_DENS_GAMMA_E_HIGH_HB_MIN (0)</td>

+        <td>@ref LVHF_DENS_GAMMA_E_HIGH_HB_DEFAULT (512)</td>

+        <td>@ref LVHF_DENS_GAMMA_E_HIGH_HB_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 DENS_gamma_e_high_HB;          ///< FE Echo subtraction HB

+

+    /**

+    Echo subtraction factor applied during double talk for the HB.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>7.8</td>

+        <td>@ref LVHF_DENS_GAMMA_E_DT_HB_MIN (0)</td>

+        <td>@ref LVHF_DENS_GAMMA_E_DT_HB_DEFAULT (256)</td>

+        <td>@ref LVHF_DENS_GAMMA_E_DT_HB_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 DENS_gamma_e_dt_HB;          ///< DT Echo subtraction factor HB

+

+    /**

+    Echo subtraction factor applied during nearend-only for the HB.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>7.8</td>

+        <td>@ref LVHF_DENS_GAMMA_E_LOW_HB_MIN (0)</td>

+        <td>@ref LVHF_DENS_GAMMA_E_LOW_HB_DEFAULT (256)</td>

+        <td>@ref LVHF_DENS_GAMMA_E_LOW_HB_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 DENS_gamma_e_low_HB;          ///< NE Echo subtraction factor HB

+

+    /**

+    The amount of extra non-linear suppression relative to the maximum linear echo

+    suppression. for the HB. The use of these non-linear echo suppression

+    mechanisms should be avoided as much as possible since it affects the double

+    talk performance.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>4.11</td>

+        <td>@ref LVHF_DENS_NL_ATTEN_HB_MIN (0)</td>

+        <td>@ref LVHF_DENS_NL_ATTEN_HB_DEFAULT (0)</td>

+        <td>@ref LVHF_DENS_NL_ATTEN_HB_MAX (2048)</td>

+    </tr>

+    </table> */

+    LVM_INT16 DENS_NL_atten_HB;          ///< NE Echo subtraction factor HB

+

+    /**

+    Smoothing factor applied when switching between gamma_e values.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVHF_DENS_GAMMA_E_ALPHA_MIN (0)</td>

+        <td>@ref LVHF_DENS_GAMMA_E_ALPHA_DEFAULT (24000)</td>

+        <td>@ref LVHF_DENS_GAMMA_E_ALPHA_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 DENS_gamma_e_alpha;          ///< Smoothing factor for gamma_e

+

+    /**

+    Gain factor for Noise subtraction.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>7.8</td>

+        <td>@ref LVHF_DENS_GAMMA_N_MIN (0)</td>

+        <td>@ref LVHF_DENS_GAMMA_N_DEFAULT (280)</td>

+        <td>@ref LVHF_DENS_GAMMA_N_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 DENS_gamma_n;          ///< Gain factor

+

+    /**

+    Threshold for nearend activity detection.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>7.8</td>

+        <td>@ref LVHF_DENS_SPDET_NEAR_MIN (0)</td>

+        <td>@ref LVHF_DENS_SPDET_NEAR_DEFAULT (512)</td>

+        <td>@ref LVHF_DENS_SPDET_NEAR_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 DENS_spdet_near;

+    /**

+    Threshold for microphone activity detection.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>7.8</td>

+        <td>@ref LVHF_DENS_SPDET_ACT_MIN (0)</td>

+        <td>@ref LVHF_DENS_SPDET_ACT_DEFAULT (768)</td>

+        <td>@ref LVHF_DENS_SPDET_ACT_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 DENS_spdet_act;

+    /**

+    The maximum amount of noise suppression. <br>

+    DENS_limit_ns = \f$32767*10^{-MaxNoiseReduction[dB]/20}\f$

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVHF_DENS_LIMIT_NS_MIN (0)</td>

+        <td>@ref LVHF_DENS_LIMIT_NS_DEFAULT (10361)</td>

+        <td>@ref LVHF_DENS_LIMIT_NS_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 DENS_limit_ns;          ///< Maximum noise suppression.

+

+    /**

+    The amount of comfort noise insertion.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>1.14</td>

+        <td>@ref LVHF_DENS_CNI_GAIN_MIN (0)</td>

+        <td>@ref LVHF_DENS_CNI_GAIN_DEFAULT (16384)</td>

+        <td>@ref LVHF_DENS_CNI_GAIN_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 DENS_CNI_Gain;          ///< CNI gain

+

+    /**

+    The window length (expressed in integer multiples of 10ms) for the estimation

+    of the noise components. It is recommended to keep this parameter at its

+    default value.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVHF_DENS_NFE_BLOCKSIZE_MIN (0)</td>

+        <td>@ref LVHF_DENS_NFE_BLOCKSIZE_DEFAULT (150)</td>

+        <td>@ref LVHF_DENS_NFE_BLOCKSIZE_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 DENS_NFE_blocksize;          ///< NFE blocksize

+

+    /**

+    Threshold for farend activity detection.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVHF_SPDET_FAR_MIN (0)</td>

+        <td>@ref LVHF_SPDET_FAR_DEFAULT (16384)</td>

+        <td>@ref LVHF_SPDET_FAR_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 SPDET_far;

+    /**

+    Threshold for microphone activity detection.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVHF_SPDET_MIC_MIN (0)</td>

+        <td>@ref LVHF_SPDET_MIC_DEFAULT (16384)</td>

+        <td>@ref LVHF_SPDET_MIC_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 SPDET_mic;

+    /**

+    Threshold to activate the non-linear echo-suppression.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVHF_SPDET_X_CLIP_MIN (0)</td>

+        <td>@ref LVHF_SPDET_X_CLIP_DEFAULT (0)</td>

+        <td>@ref LVHF_SPDET_X_CLIP_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 SPDET_x_clip;

+    /**

+    Threshold to detect acoustical path changes.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>0.15</td>

+        <td>@ref LVHF_PCD_THRESHOLD_MIN (0)</td>

+        <td>@ref LVHF_PCD_THRESHOLD_DEFAULT (20000)</td>

+        <td>@ref LVHF_PCD_THRESHOLD_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 PCD_threshold;          ///< PCD threshold

+

+    /**

+    Length of the background adaptive filter. The length should be chosen such that

+    only the main peak of the impulse response is covered by the filter. The length

+    should be a multiple of 8.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>16.0</td>

+        <td>@ref LVHF_PCD_TAPS_MIN (16)</td>

+        <td>@ref LVHF_PCD_TAPS_DEFAULT (16)</td>

+        <td>@ref LVHF_PCD_TAPS_MAX (64)</td>

+    </tr>

+    </table> */

+    LVM_INT16 PCD_taps;          ///< Number of taps of background NLMS.

+

+    /**

+    Adaptive step size control for the background adaptive filter.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>9.6</td>

+        <td>@ref LVHF_PCD_ERL_MIN (64)</td>

+        <td>@ref LVHF_PCD_ERL_DEFAULT (64)</td>

+        <td>@ref LVHF_PCD_ERL_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 PCD_erl;          ///< Step size of background NLMS.

+

+    /**

+    If a path change is detected, NLMS_erl of the NLMS is set to this value, to

+    ensure a fast adapting filter.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>9.6</td>

+        <td>@ref LVHF_PCD_MINIMUM_ERL_MIN (64)</td>

+        <td>@ref LVHF_PCD_MINIMUM_ERL_DEFAULT (64)</td>

+        <td>@ref LVHF_PCD_MINIMUM_ERL_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 PCD_minimum_erl;          ///< Step size of NLMS after PCD.

+

+    /**

+    After a path change the NLMS_erl of the NLMS increases back to the nominal

+    value. The speed to increase can be controlled by this parameter.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>1.14</td>

+        <td>@ref LVHF_PCD_ERL_STEP_MIN (16384)</td>

+        <td>@ref LVHF_PCD_ERL_STEP_DEFAULT (16800)</td>

+        <td>@ref LVHF_PCD_ERL_STEP_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 PCD_erl_step;          ///< Step of ERL increase after PCD.

+

+    /**

+    Gain factor applied to the echo subtraction during acoustical path change.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>7.8</td>

+        <td>@ref LVHF_PCD_GAMMA_E_RESCUE_MIN (0)</td>

+        <td>@ref LVHF_PCD_GAMMA_E_RESCUE_DEFAULT (5000)</td>

+        <td>@ref LVHF_PCD_GAMMA_E_RESCUE_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 PCD_gamma_e_rescue;          ///< gamma_e after PCD

+

+} LVHF_ControlParams_st;

+

+/**

+* The control parameters are used to control the overall module behavior. These parameters may

+* be changed at any time during processing using the LVBD_SetControlParameters function but they

+* will not take effect until the next call to the LVBD_Process function.

+*

+* @see LVBD_SetControlParameters

+* @see LVBD_Process

+*/

+typedef struct

+{

+    /**

+    Set Bulk Delay operating mode on/off.

+    */

+    LVM_Mode_en BD_OperatingMode;          ///< Set Bulk Delay operating mode on/off

+

+    /**

+    This parameter compensates for the fixed delay in the echo path and can be

+    measured in advance. This delay is caused by the audio I/O buffering, AD/DA

+    converter and propagation time between the loudspeaker and microphone. The unit

+    of 'BulkDelay' is [number of samples] at the respective sampling rate.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>16.0</td>

+        <td>@ref LVBD_BULKDELAY_MIN (0)</td>

+        <td>@ref LVBD_BULKDELAY_DEFAULT (0)</td>

+        <td>@ref LVBD_BULKDELAY_MAX (6400)</td>

+    </tr>

+    </table> */

+    LVM_UINT16 BulkDelay;          ///< Sets Bulk Delay

+

+    /**

+    This param sets the gain for the Echo reference signal. Value 8192 belong to

+    0dB

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>2.13</td>

+        <td>@ref LVBD_BD_GAIN_MIN (0)</td>

+        <td>@ref LVBD_BD_GAIN_DEFAULT (8192)</td>

+        <td>@ref LVBD_BD_GAIN_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 BD_Gain;          ///< Apply Gain to Echo reference signal

+

+} LVBD_ControlParams_st;

+

+/**

+* The control parameters are used to control the overall module behavior. These parameters may

+* be changed at any time during processing using the LVVE_Tx_SetControlParameters function but they

+* will not take effect until the next call to the LVVE_Tx_Process function.

+*

+* @see LVVE_Tx_SetControlParameters

+* @see LVVE_Tx_Process

+*/

+typedef struct

+{

+    /**

+    This enumerated type is used to set the operating mode of the Tx path. The

+    processing can be separately set to enable all processing modules (i.e., ON),

+    to disable all processing modules (i.e., OFF) or to bypass all processing

+    modules (i.e., BYPASS). When bypassed, all processing modules keep on running,

+    but their output is not used. When bypassing the Tx processing, the user can

+    select which buffer should be copied to the output buffer, if required: @li

+    Input microphone signal (or secondary microphone signal in case of

+    two-microphone setups); @li Rx reference signal; These operations ensure that

+    the input data is correctly transferred to the output buffer for all

+    combinations of input and output buffer types and input format. When OFF, the

+    input is copied to the output and the LVVE can be provided with invalid

+    parameters for modules. The sub module functions are not executed in this

+    scenario. Their combined functionality is summarized in follwoing table. <br>

+    <div align="center"> <table cellspacing="1" cellpadding="4" border="3">

+    <caption>LVVE Tx operating mode in combination with LVVE microphone routing

+    mode</caption> <tr> <th></th> <th colspan="2">MICROUTING_MODE_DEFAULT</th> <th

+    colspan="2">MICROUTING_MODE_SWAPPED</th> </tr> <tr> <th width="70"></th> <th

+    width="70">Process</th> <th width="70">Output</th> <th width="70">Process</th>

+    <th width="70">Output</th> </tr> <tr align="left"> <td>LVVE_TX_MODE_OFF</td>

+    <td>None</td> <td>Tx input 0</td> <td>None</td> <td>Tx input 1</td> </tr> <tr

+    align="left"> <td>LVVE_TX_MODE_ON</td> <td>Tx input 0</td> <td>Tx output</td>

+    <td>Tx input 1</td> <td>Tx output</td> </tr> <tr align="left">

+    <td>LVVE_TX_MODE_BYPASS_MIC0</td> <td>Tx input 0</td> <td>Tx input 0</td>

+    <td>Tx input 1</td> <td>Tx input 1</td> </tr> <tr align="left">

+    <td>LVVE_TX_MODE_BYPASS_MIC1</td> <td>Tx input 0</td> <td>Tx input 1</td>

+    <td>Tx input 1</td> <td>Tx input 0</td> </tr> <tr align="left">

+    <td>LVVE_TX_MODE_BYPASS_REF</td> <td>Tx input 0</td> <td>Tx ref input</td>

+    <td>Tx input 1</td> <td>Tx ref input</td> </tr> </table> </div>

+    */

+    LVVE_Tx_Mode_en OperatingMode;          ///< TX Operating mode

+

+    /**

+    This param can mute unmute the Rx/Tx engine output.

+    */

+    LVM_Mode_en Mute;          ///< This param can mute unmute the Rx/Tx engine output

+

+    /**

+    Set Bulk Delay operating mode on/off.

+    */

+    LVM_Mode_en BD_OperatingMode;          ///< Set Bulk Delay operating mode on/off

+

+    /**

+    This parameter compensates for the fixed delay in the echo path and can be

+    measured in advance. This delay is caused by the audio I/O buffering, AD/DA

+    converter and propagation time between the loudspeaker and microphone. The unit

+    of 'BulkDelay' is [number of samples] at the respective sampling rate.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>16.0</td>

+        <td>@ref LVVE_TX_BULKDELAY_MIN (0)</td>

+        <td>@ref LVVE_TX_BULKDELAY_DEFAULT (0)</td>

+        <td>@ref LVVE_TX_BULKDELAY_MAX (6400)</td>

+    </tr>

+    </table> */

+    LVM_UINT16 BulkDelay;          ///< Sets Bulk Delay

+

+    /**

+    This param sets the gain for the Echo reference signal. Value 8192 belong to

+    0dB

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>2.13</td>

+        <td>@ref LVVE_TX_BD_GAIN_MIN (0)</td>

+        <td>@ref LVVE_TX_BD_GAIN_DEFAULT (8192)</td>

+        <td>@ref LVVE_TX_BD_GAIN_MAX (32767)</td>

+    </tr>

+    </table> */

+    LVM_INT16 BD_Gain;          ///< Apply Gain to Echo reference signal

+

+    /**

+    Turns on/off VOL_Gain.

+    */

+    LVM_Mode_en VOL_OperatingMode;          ///< Turns on/off VOL_Gain

+

+    /**

+    The volume control gain can be used to set the overall volume level of the

+    signal. The gain is set in dB with steps of 1dB.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>15.0</td>

+        <td>@ref LVVE_TX_VOL_GAIN_MIN (-96)</td>

+        <td>@ref LVVE_TX_VOL_GAIN_DEFAULT (0)</td>

+        <td>@ref LVVE_TX_VOL_GAIN_MAX (24)</td>

+    </tr>

+    </table> */

+    LVM_INT16 VOL_Gain;          ///< Apply Gain to Input signal

+

+    /**

+    Turns on/off High Pass filter.

+    */

+    LVM_Mode_en HPF_OperatingMode;          ///< Turns on/off High Pass filter

+

+    /**

+    Sets the 3dB corner frequency of the high-pass filter. In case NoiseVoid is

+    enabled, the same high-pass filter will be applied to the second microphone

+    channel.

+    <table border>

+    <tr>

+        <td><b>Q-format</b></td>

+        <td><b>Min</b></td>

+        <td><b>Default</b></td>

+        <td><b>Max</b></td>

+    </tr>

+    <tr>

+        <td>16.0</td>

+        <td>@ref LVVE_TX_MIC_HPF_CORNERFREQ_MIN (50)</td>

+        <td>@ref LVVE_TX_MIC_HPF_CORNERFREQ_DEFAULT (50)</td>

+        <td>@ref LVVE_TX_MIC_HPF_CORNERFREQ_MAX (1500)</td>

+    </tr>

+    </table> */

+    LVM_UINT16 MIC_HPF_CornerFreq;          ///< High Pass Filter Corner Frequency in Hz

+

+    /**

+    HandsFree Control Parameter Strcuture.

+    */

+    LVHF_ControlParams_st HF_ControlParams;          ///< HandsFree Control Parameter Structure

+

+    /**

+    NoiseVoid Control Parameter Structure.

+    */

+    LVNV_ControlParams_st NV_ControlParams;          ///< NoiseVoid Control Parameter Structure

+

+    /**

+    Equalizer Operating mode.

+    */

+    LVM_Mode_en EQ_OperatingMode;          ///< Equalizer Operating mode

+

+    /**

+    Equalizer Control Parameter Structure.

+    */

+    LVEQ_ControlParams_st EQ_ControlParams;          ///< Equalizer Control Parameters Structure

+

+    /**

+    DRC Control Parameter Structure.

+    */

+    LVDRC_ControlParams_st DRC_ControlParams;          ///< DRC Control Parameter Structure

+

+} LVVE_Tx_ControlParams_st;

+

+//adb by xuxinqiang  20150519

+#define LVVE_MAX_EQ_LENGTH_NB                32           /* Maximum equaliser length for narrowband configuration */

+#define LVVE_MAX_EQ_LENGTH_WB                64           /* Maximum equaliser length for wideband configuration */

+/*[Begin] [lvwenhua-2013/10/21]*/

+typedef struct

+{

+    LVM_INT16                     EqCoefs[LVVE_MAX_EQ_LENGTH_NB];

+} LVEQ_Coefs_st;

+/*[End] [lvwenhua-2013/10/21]*/

+/*[Begin] [lvwenhua-2012/3/12]*/

+#define LVVC_VOLUME_NUM             12

+

+typedef struct

+{

+    LVM_INT16                   NoiseSensitivity[LVVC_VOLUME_NUM];

+} LVVC_NoiseSens_st;

+/*[End] [lvwenhua-2012/3/12]*/

+

+/*[Begin] [lvwenhua-2011/8/23]*/

+typedef struct

+{

+    LVVE_Tx_ControlParams_st    Tx_ControlParams;

+    LVVE_Rx_ControlParams_st    Rx_ControlParams;

+    LVEQ_Coefs_st TxEqCoefs;

+    LVEQ_Coefs_st RxEqCoefs;

+    /*[Begin] [lvwenhua-2012/3/12]*/

+    LVVC_NoiseSens_st RxVcNoiseSens;

+    /*[End] [lvwenhua-2012/3/12]*/

+} LVVE_ControlParams_st;

+typedef struct

+{

+    LVM_UINT32 isVpParamInNv;

+    LVVE_ControlParams_st    Handset_ControlParams;

+    LVVE_ControlParams_st    Handsfree_ControlParams;

+    LVVE_ControlParams_st    Headset_ControlParams;

+    LVVE_ControlParams_st    Bluetooth_ControlParams;

+} LVVE_ControlParams_All_st;

+/*[End] [lvwenhua-2011/8/23]*/

+

+

+

+#ifdef __cplusplus

+}

+#endif /* __cplusplus */

+

+#endif      /* __REL_LVVE_HF_NV1_VC_AGC_RX_DRC_RX_VIDPP_H__ */

+

+/* End of file */

diff --git a/cp/ps/driver/src/chipsets/src/audio_base/nxp/uclinux/PARAM_Default.h b/cp/ps/driver/src/chipsets/src/audio_base/nxp/uclinux/PARAM_Default.h
new file mode 100755
index 0000000..0153e82
--- /dev/null
+++ b/cp/ps/driver/src/chipsets/src/audio_base/nxp/uclinux/PARAM_Default.h
@@ -0,0 +1,178 @@
+static LVM_CHAR LVVE_Tx_Preset_Buffer_Voice_Tool[] ={

+0x03, 0x00, 0x09, 0x18, 0x03, 0xD5, 0x07, 0x00, 0x00, 0xB5, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 

+0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x11, 0x00, 0x00, 0x00, 

+0x20, 0x00, 0x08, 0x00, 0x00, 0x40, 0x00, 0x00, 0x20, 0x80, 0x00, 0x40, 0x00, 0x00, 0x20, 0x80, 

+0x00, 0x01, 0x00, 0xFF, 0x02, 0x33, 0x63, 0x33, 0x73, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 

+0x00, 0x33, 0x63, 0x33, 0x73, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0xC0, 0x5D, 0x18, 

+0x01, 0x00, 0x02, 0x00, 0x03, 0x79, 0x28, 0x00, 0x40, 0x96, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 

+0x00, 0x20, 0x4E, 0x10, 0x00, 0x40, 0x00, 0x40, 0x00, 0xA0, 0x41, 0x88, 0x13, 0x00, 0x00, 0x00, 

+0x00, 0xF7, 0x49, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x00, 0x08, 0x20, 0x00, 0x00, 

+0x20, 0xE8, 0x03, 0x18, 0x00, 0x00, 0x20, 0xE8, 0x03, 0x00, 0x00, 0x08, 0x03, 0x20, 0x00, 0x00, 

+0x20, 0xE8, 0x03, 0x18, 0x00, 0x00, 0x20, 0xE8, 0x03, 0x00, 0x00, 0x08, 0x03, 0x96, 0x00, 0xFF, 

+0x7F, 0x9A, 0x19, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x10, 0x00, 0x8F, 0x02, 0x00, 0x04, 0x10, 0x00, 0x66, 0x06, 0x00, 0x01, 0x66, 

+0x06, 0x00, 0x40, 0x00, 0x20, 0xE0, 0x2E, 0x58, 0x1B, 0x00, 0x01, 0xCE, 0x2C, 0x00, 0x40, 0x84, 

+0x2B, 0x9A, 0x19, 0x66, 0x26, 0x00, 0x01, 0x00, 0x30, 0x00, 0x24, 0x40, 0x01, 0xE6, 0x00, 0x65, 

+0x66, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0xA0, 0xFF, 0xBA, 

+0xFF, 0xCE, 0xFF, 0xE8, 0xFF, 0x00, 0x00, 0xA0, 0xFF, 0xBA, 0xFF, 0xDA, 0xFF, 0xF4, 0xFF, 0x00, 

+0x00, 0x32, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00

+};

+static LVM_CHAR LVVE_Rx_Preset_Buffer_Voice_Tool []={

+0x03, 0x00, 0x09, 0x18, 0x03, 0xD5, 0x07, 0x00, 0x00, 0xB5, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x2A, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 

+0x05, 0x20, 0x4E, 0x00, 0x40, 0x00, 0x01, 0x00, 0x20, 0x00, 0x02, 0x17, 0x2F, 0x5C, 0x7F, 0xB9, 

+0x7E, 0x82, 0x5A, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 

+0x00, 0xA0, 0xFF, 0xBA, 0xFF, 0xCE, 0xFF, 0xE8, 0xFF, 0x00, 0x00, 0xA0, 0xFF, 0xBA, 0xFF, 0xDA, 

+0xFF, 0xF4, 0xFF, 0x00, 0x00, 0x32, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x40, 0x80, 0x00, 0xFD, 

+0x1F, 0xB0, 0x63, 0xAD, 0x7F, 0x9D, 0x5A, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0xB0, 

+0xFF, 0xBA, 0xFF, 0xCE, 0xFF, 0xE8, 0xFF, 0x00, 0x00, 0xA0, 0xFF, 0xB0, 0xFF, 0xCE, 0xFF, 0xE8, 

+0xFF, 0x00, 0x00, 0x32, 0x00, 0x32, 0x00, 0x03, 0x00, 0x09, 0x18, 0x03, 0xD5, 0x07, 0x00, 0x00, 

+0xB5, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0xE0, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x05, 0x20, 0x4E, 0x00, 0x40, 0x00, 0x01, 0x00, 0x20, 

+0x00, 0x02, 0x17, 0x2F, 0x5C, 0x7F, 0xB9, 0x7E, 0x82, 0x5A, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 

+0x20, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0xA0, 0xFF, 0xBA, 0xFF, 0xCE, 0xFF, 0xE8, 0xFF, 

+0x00, 0x00, 0xA0, 0xFF, 0xBA, 0xFF, 0xDA, 0xFF, 0xF4, 0xFF, 0x00, 0x00, 0x32, 0x00, 0x32, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x07, 0x00, 0x00, 0x40, 0x80, 0x00, 0xFD, 0x1F, 0xB0, 0x63, 0xAD, 0x7F, 0x9D, 0x5A, 0x00, 0x24, 

+0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0xB0, 0xFF, 0xBA, 0xFF, 0xCE, 0xFF, 0xE8, 0xFF, 0x00, 0x00, 

+0xA0, 0xFF, 0xB0, 0xFF, 0xCE, 0xFF, 0xE8, 0xFF, 0x00, 0x00, 0x32, 0x00, 0x32, 0x00, 0x03, 0x00, 

+0x09, 0x18, 0x03, 0xD5, 0x07, 0x00, 0x00, 0xB5, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x2A, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x05, 0x20, 

+0x4E, 0x00, 0x40, 0x00, 0x01, 0x00, 0x20, 0x00, 0x02, 0x17, 0x2F, 0x5C, 0x7F, 0xB9, 0x7E, 0x82, 

+0x5A, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0xA0, 

+0xFF, 0xBA, 0xFF, 0xCE, 0xFF, 0xE8, 0xFF, 0x00, 0x00, 0xA0, 0xFF, 0xBA, 0xFF, 0xDA, 0xFF, 0xF4, 

+0xFF, 0x00, 0x00, 0x32, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x40, 0x80, 0x00, 0xFD, 0x1F, 0xB0, 

+0x63, 0xAD, 0x7F, 0x9D, 0x5A, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0xB0, 0xFF, 0xBA, 

+0xFF, 0xCE, 0xFF, 0xE8, 0xFF, 0x00, 0x00, 0xA0, 0xFF, 0xB0, 0xFF, 0xCE, 0xFF, 0xE8, 0xFF, 0x00, 

+0x00, 0x32, 0x00, 0x32, 0x00, 0x03, 0x00, 0x09, 0x18, 0x03, 0xD5, 0x07, 0x00, 0x00, 0xB5, 0x02, 

+0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x06, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0xE0, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x06, 0x05, 0x20, 0x4E, 0x00, 0x40, 0x00, 0x01, 0x00, 0x20, 0x00, 0x02, 

+0x17, 0x2F, 0x5C, 0x7F, 0xB9, 0x7E, 0x82, 0x5A, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 

+0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0xA0, 0xFF, 0xBA, 0xFF, 0xCE, 0xFF, 0xE8, 0xFF, 0x00, 0x00, 

+0xA0, 0xFF, 0xBA, 0xFF, 0xDA, 0xFF, 0xF4, 0xFF, 0x00, 0x00, 0x32, 0x00, 0x32, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 

+0x00, 0x40, 0x80, 0x00, 0xFD, 0x1F, 0xB0, 0x63, 0xAD, 0x7F, 0x9D, 0x5A, 0x00, 0x24, 0x00, 0x00, 

+0x00, 0x00, 0x05, 0x00, 0xB0, 0xFF, 0xBA, 0xFF, 0xCE, 0xFF, 0xE8, 0xFF, 0x00, 0x00, 0xA0, 0xFF, 

+0xB0, 0xFF, 0xCE, 0xFF, 0xE8, 0xFF, 0x00, 0x00, 0x32, 0x00, 0x32, 0x00, 0x03, 0x00, 0x09, 0x18, 

+0x03, 0xD5, 0x07, 0x00, 0x00, 0xB5, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x05, 0x20, 0x4E, 0x00, 

+0x40, 0x00, 0x01, 0x00, 0x20, 0x00, 0x02, 0x17, 0x2F, 0x5C, 0x7F, 0xB9, 0x7E, 0x82, 0x5A, 0x00, 

+0x04, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0xA0, 0xFF, 0xBA, 

+0xFF, 0xCE, 0xFF, 0xE8, 0xFF, 0x00, 0x00, 0xA0, 0xFF, 0xBA, 0xFF, 0xDA, 0xFF, 0xF4, 0xFF, 0x00, 

+0x00, 0x32, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x40, 0x80, 0x00, 0xFD, 0x1F, 0xB0, 0x63, 0xAD, 

+0x7F, 0x9D, 0x5A, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0xB0, 0xFF, 0xBA, 0xFF, 0xCE, 

+0xFF, 0xE8, 0xFF, 0x00, 0x00, 0xA0, 0xFF, 0xB0, 0xFF, 0xCE, 0xFF, 0xE8, 0xFF, 0x00, 0x00, 0x32, 

+0x00, 0x32, 0x00, 0x03, 0x00, 0x09, 0x18, 0x03, 0xD5, 0x07, 0x00, 0x00, 0xB5, 0x02, 0x00, 0x00, 

+0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x06, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0xE0, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x06, 0x05, 0x20, 0x4E, 0x00, 0x40, 0x00, 0x01, 0x00, 0x20, 0x00, 0x02, 0x17, 0x2F, 

+0x5C, 0x7F, 0xB9, 0x7E, 0x82, 0x5A, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x10, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x05, 0x00, 0xA0, 0xFF, 0xBA, 0xFF, 0xCE, 0xFF, 0xE8, 0xFF, 0x00, 0x00, 0xA0, 0xFF, 

+0xBA, 0xFF, 0xDA, 0xFF, 0xF4, 0xFF, 0x00, 0x00, 0x32, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x40, 

+0x80, 0x00, 0xFD, 0x1F, 0xB0, 0x63, 0xAD, 0x7F, 0x9D, 0x5A, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 

+0x05, 0x00, 0xB0, 0xFF, 0xBA, 0xFF, 0xCE, 0xFF, 0xE8, 0xFF, 0x00, 0x00, 0xA0, 0xFF, 0xB0, 0xFF, 

+0xCE, 0xFF, 0xE8, 0xFF, 0x00, 0x00, 0x32, 0x00, 0x32, 0x00

+};

+const static LVM_CHAR LVVE_Tx_Mute_File_Buffer[] ={

+0x03, 0x00, 0x09, 0x18, 0x03, 0xD5, 0x07, 0x00, 0x00, 0xB5, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 

+0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x11, 0x00, 0x00, 0x00, 

+0x20, 0x00, 0x08, 0x00, 0x00, 0x40, 0x00, 0x00, 0x20, 0x80, 0x00, 0x40, 0x00, 0x00, 0x20, 0x80, 

+0x00, 0x01, 0x00, 0xFF, 0x02, 0x33, 0x63, 0x33, 0x73, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 

+0x00, 0x33, 0x63, 0x33, 0x73, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0xC0, 0x5D, 0x18, 

+0x01, 0x00, 0x02, 0x00, 0x03, 0x79, 0x28, 0x00, 0x40, 0x96, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 

+0x00, 0x20, 0x4E, 0x10, 0x00, 0x40, 0x00, 0x40, 0x00, 0xA0, 0x41, 0x88, 0x13, 0x00, 0x00, 0x00, 

+0x00, 0xF7, 0x49, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x00, 0x08, 0x20, 0x00, 0x00, 

+0x20, 0xE8, 0x03, 0x18, 0x00, 0x00, 0x20, 0xE8, 0x03, 0x00, 0x00, 0x08, 0x03, 0x20, 0x00, 0x00, 

+0x20, 0xE8, 0x03, 0x18, 0x00, 0x00, 0x20, 0xE8, 0x03, 0x00, 0x00, 0x08, 0x03, 0x96, 0x00, 0xFF, 

+0x7F, 0x9A, 0x19, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x10, 0x00, 0x8F, 0x02, 0x00, 0x04, 0x10, 0x00, 0x66, 0x06, 0x00, 0x01, 0x66, 

+0x06, 0x00, 0x40, 0x00, 0x20, 0xE0, 0x2E, 0x58, 0x1B, 0x00, 0x01, 0xCE, 0x2C, 0x00, 0x40, 0x84, 

+0x2B, 0x9A, 0x19, 0x66, 0x26, 0x00, 0x01, 0x00, 0x30, 0x00, 0x24, 0x40, 0x01, 0xE6, 0x00, 0x65, 

+0x66, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0xA0, 0xFF, 0xBA, 

+0xFF, 0xCE, 0xFF, 0xE8, 0xFF, 0x00, 0x00, 0xA0, 0xFF, 0xBA, 0xFF, 0xDA, 0xFF, 0xF4, 0xFF, 0x00, 

+0x00, 0x32, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00

+};

+const static LVM_CHAR LVVE_Tx_Wb_Mute_File_Buffer[] ={

+0x03, 0x00, 0x09, 0x18, 0x03, 0xD5, 0x07, 0x00, 0x00, 0xBD, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 

+0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x11, 0x00, 0x00, 0x00, 

+0x20, 0x00, 0x08, 0x00, 0x00, 0x40, 0x00, 0x00, 0x20, 0x80, 0x00, 0x40, 0x00, 0x00, 0x20, 0x80, 

+0x00, 0x01, 0x00, 0xFF, 0x02, 0x33, 0x63, 0x33, 0x73, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 

+0x00, 0x33, 0x63, 0x33, 0x73, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0xC0, 0x5D, 0x18, 

+0x01, 0x00, 0x02, 0x00, 0x03, 0x79, 0x28, 0x00, 0x40, 0x96, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 

+0x00, 0x20, 0x4E, 0x10, 0x00, 0x40, 0x00, 0x40, 0x00, 0xA0, 0x41, 0x88, 0x13, 0x00, 0x00, 0x00, 

+0x00, 0xF7, 0x49, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x00, 0x08, 0x20, 0x00, 0x00, 

+0x20, 0xE8, 0x03, 0x18, 0x00, 0x00, 0x20, 0xE8, 0x03, 0x00, 0x00, 0x08, 0x03, 0x20, 0x00, 0x00, 

+0x20, 0xE8, 0x03, 0x18, 0x00, 0x00, 0x20, 0xE8, 0x03, 0x00, 0x00, 0x08, 0x03, 0x96, 0x00, 0xFF, 

+0x7F, 0x9A, 0x19, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x10, 0x00, 0x8F, 0x02, 0x00, 0x04, 0x10, 0x00, 0x66, 0x06, 0x00, 0x01, 0x66, 

+0x06, 0x00, 0x40, 0x00, 0x20, 0xE0, 0x2E, 0x58, 0x1B, 0x00, 0x01, 0xCE, 0x2C, 0x00, 0x40, 0x84, 

+0x2B, 0x9A, 0x19, 0x66, 0x26, 0x00, 0x01, 0x00, 0x30, 0x00, 0x24, 0x40, 0x01, 0xE6, 0x00, 0x65, 

+0x66, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x40, 0x80, 0x00, 0xFD, 0x1F, 0xB0, 0x63, 0xAD, 

+0x7F, 0x9D, 0x5A, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 

+0x00, 0xA0, 0xFF, 0xBA, 0xFF, 0xCE, 0xFF, 0xE8, 0xFF, 0x00, 0x00, 0xA0, 0xFF, 0xBA, 0xFF, 0xDA, 

+0xFF, 0xF4, 0xFF, 0x00, 0x00, 0x32, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 

+};

diff --git a/cp/ps/driver/src/chipsets/src/audio_base/nxp/uclinux/audio_process.a b/cp/ps/driver/src/chipsets/src/audio_base/nxp/uclinux/audio_process.a
new file mode 100755
index 0000000..449febf
--- /dev/null
+++ b/cp/ps/driver/src/chipsets/src/audio_base/nxp/uclinux/audio_process.a
Binary files differ
diff --git a/cp/ps/driver/src/chipsets/src/audio_base/nxp/uclinux/nxp_DrvNvData.h b/cp/ps/driver/src/chipsets/src/audio_base/nxp/uclinux/nxp_DrvNvData.h
new file mode 100755
index 0000000..ce95a87
--- /dev/null
+++ b/cp/ps/driver/src/chipsets/src/audio_base/nxp/uclinux/nxp_DrvNvData.h
@@ -0,0 +1,10 @@
+//6 level volume

+//#define LVWM_TX_FILE_SIZE    463     //×Ö½ÚÊý

+//#define LVWM_RX_FILE_SIZE     1866

+//uc actual size

+//#define LVWM_TX_FILE_SIZE    379     //×Ö½ÚÊý

+//#define LVWM_RX_FILE_SIZE    1482

+

+

+

+//const static LVM_CHAR LVVE_Param_Test[] ={};

diff --git a/cp/ps/driver/src/chipsets/src/audio_base/tdm/hal_tdm.c b/cp/ps/driver/src/chipsets/src/audio_base/tdm/hal_tdm.c
old mode 100644
new mode 100755
index 322aea4..50e28da
--- a/cp/ps/driver/src/chipsets/src/audio_base/tdm/hal_tdm.c
+++ b/cp/ps/driver/src/chipsets/src/audio_base/tdm/hal_tdm.c
@@ -54,6 +54,7 @@
 #define TDM_DRIVER_VERSION          1

 

 //#define ARM_TDM_LOOP_SET	*((volatile unsigned int *)(ZX_SOC_SYS_BASE + 0x60))

+#define ARM_TDM_LOOP_CFG	*((volatile UINT32 *)(SOC_SYS_REG_BASE+0x60))

 

 /* version register */

 #define TDM_VERSION     				0x0104	/*TDM Version V1.4*/

@@ -2415,7 +2416,12 @@
 	memset(temp, 0, sizeof(temp));

 	tdmDmaState[TDM_RX].channel = DMA_CH_TDM_RX0;

 	tdmDmaState[TDM_RX].ch = dma_request_channel(mask, zx29_dma_filter_fn, (void*)(tdmDmaState[TDM_RX].channel));

-	

+	if(!tdmDmaState[TDM_RX].ch){

+		

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO,"%s: dma_request_channel fail,  dma_id(%d).\n",__func__,tdmDmaState[TDM_RX].channel);

+		return DRV_ERR_BUSY;

+

+	}	

 	for (i = 0; i < TDM_OUT_BUF_NUM; i++) {

 		temp[i].dest_addr 	= tdmDmaState[TDM_RX].dma_phyaddr  + (tdmStream->rxLen) * i;

 		temp[i].src_addr	= ZX29_TDM_PHYS + 0x24;

@@ -2484,6 +2490,12 @@
 	memset(temp, 0, sizeof(temp));

 	tdmDmaState[TDM_TX].channel = DMA_CH_TDM_TX0;	

 	tdmDmaState[TDM_TX].ch = dma_request_channel(mask, zx29_dma_filter_fn, (void*)(tdmDmaState[TDM_TX].channel));

+	if(!tdmDmaState[TDM_TX].ch){

+		

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO,"%s: dma_request_channel fail,  dma_id(%d).\n",__func__,tdmDmaState[TDM_TX].channel);

+		return DRV_ERR_BUSY;

+

+	}

 	

 	for (i = 0; i < TDM_OUT_BUF_NUM; i++) {

 		temp[i].src_addr 	= tdmDmaState[TDM_TX].dma_phyaddr + (txStream->txLen) * i;

@@ -2840,6 +2852,7 @@
 	SINT32 ret = DRV_SUCCESS;

 

 	ret = tdm_Reset();

+	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvTDM_Reset , ret=%d",ret);

 	

 	return ret;

 }

@@ -3751,6 +3764,21 @@
 

 VOID vp_SetTopTdmConfig(VOID)

 {

+    UINT32 AmrRegBit = 0;

+

+	/* inter loop */

+	AmrRegBit = ARM_TDM_LOOP_CFG;

+	

+	AmrRegBit &= 0xfffffe07;

+	AmrRegBit |= 0x000000a8; /* 0x000000a8 loop dsp afe(loop i2s1)--arm i2s2(loop i2s2) 0x00000150 loop dsp arm(loop i2s1)--afe i2s2(loop i2s2)*/

+

+	ARM_TDM_LOOP_CFG = AmrRegBit;

+

+	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_SetTopTDMConfig ARM_TDM_LOOP_CFG=0x%x\n", ARM_TDM_LOOP_CFG);

+	

+

+

+

 #if 0

     UINT32 AmrRegBit = 0;

 	int ret = 0;

diff --git a/cp/ps/driver/src/chipsets/src/audio_base/voiceprocess/hal_voicebuffer.c b/cp/ps/driver/src/chipsets/src/audio_base/voiceprocess/hal_voicebuffer.c
new file mode 100755
index 0000000..8d0e5f7
--- /dev/null
+++ b/cp/ps/driver/src/chipsets/src/audio_base/voiceprocess/hal_voicebuffer.c
@@ -0,0 +1,1065 @@
+/*******************************************************************************

+ * Copyright (C) 2007, ZTE Corporation.

+ *

+ * File Name:hal_voicebuffer.c

+ * File Mark:

+ * Description: voice buffer function.

+ * Others:

+ * Version:

+ * Author:        xxq

+ * Date:          2024-07-03

+ * History 1:

+ *     Date: 

+ *     Version:

+ *     Author:

+ *     Modification: edit for union version

+ * History 2:

+  ********************************************************************************/

+

+/****************************************************************************

+* 	                                           Include files

+****************************************************************************/

+#include "drvs_general.h"

+#include "drvs_volte.h"

+#include "drvs_i2s.h"

+#include "drvs_voiceprocess.h"

+#include "hal_voiceprocess.h"

+#include "drvs_voice_config.h"

+//#include "hal_pcmmixer.h"

+#include "NvParam_drv.h"

+#include "drvs_io_voice.h"

+#include "hal_ringdata.h"

+#include "drvs_tdm.h"

+#include "hal_dtmf_detect.h"

+#include "hal_audio_data.h"

+//#define TEST_WHITE_NOISE

+

+//#define  VB_DATA_LOSS_TEST

+#ifdef TEST_WHITE_NOISE

+#include "Fs8000_WhiteNoise_Mon.h"

+//#include "Fs8000_Sine_440Hz_Mon.h"

+#endif

+

+#include "drvs_icp.h"

+#include "drvs_rpmsg.h"

+//#include <linux/completion.h>

+#include "hal_voicebuffer.h"

+

+/****************************************************************************

+* 	                                           Local Macros

+****************************************************************************/

+//#define USE_AUDIO_RING

+//#define VP_GET_TX_ALL_DATA

+

+

+/****************************************************************************

+* 	                                           Local Types

+****************************************************************************/

+

+

+/****************************************************************************

+* 	                                           Local Constants

+****************************************************************************/

+static SINT32 vp_Get_Add_RpMsg_Vbuffer(VOID);

+

+/****************************************************************************

+* 	                                           Local Function Prototypes

+****************************************************************************/

+

+/****************************************************************************

+* 	                                          Global Constants

+****************************************************************************/

+

+

+/****************************************************************************

+* 	                                          Global Variables

+****************************************************************************/

+//static T_zDrvVp_SpeechState *s_pSpeechState = NULL;

+extern T_zDrvVp_SpeechState s_speechState;  //104 bytes

+extern T_zDrvVoice_GbVar g_voiceVar;

+extern T_zDrvVp_State s_vpState;

+

+

+#ifdef ECALL_SUPPORT

+extern int eWrErr;

+extern UINT8 e_reg_flag;

+

+#endif

+

+//for test whiteNoise

+#ifdef TEST_WHITE_NOISE

+extern UINT32 tempCount;

+extern UINT8 *pVoiceTempBuf;

+#endif

+

+

+extern T_ZDrv_VpInOutBuffer vpInOutBuffer;

+

+extern T_HalMixerToneInfo mixerToneInfo;

+

+static int vbuffer_init_flag = 0;

+

+/****************************************************************************

+* 	                                          Global Function Prototypes

+****************************************************************************/

+//aduvoice config code

+

+

+

+

+

+

+extern SINT32 voice_ToneMixerData(UINT8 *pvdata, UINT32 size, UINT8 *pmixdata);//xiu gai chu sheng ming

+extern SINT32 zDrvI2S_Read_Start(T_ZDrvI2S_Id tId, T_ZDrvI2s_Params *params, T_ZDrvI2S_Cfg *ptCfg);//xiu gai chu sheng ming

+extern SINT32 zDrvI2S_Write_Start(T_ZDrvI2S_Id tId, T_ZDrvI2s_Params *params, T_ZDrvI2S_Cfg *ptCfg);//xiu gai chu sheng ming

+

+

+

+/****************************************************************************

+* 	                                          Function Definitions

+****************************************************************************/

+ZOSS_TIMER_ID s_voiceTimerId ;

+ZOSS_SEMAPHORE_ID s_voiceRdSema;

+ZOSS_SEMAPHORE_ID s_voiceWrSema;

+

+//#ifdef CONFIG_VOICE_BUFFER_DRV  

+//#ifdef _VBUFF_IN_MULTI_CORE

+//voice buffer use in multi core 

+//#define RPMSG_CAP_ID 1

+

+

+

+int timer_cb_count = 0;

+int first_full_flag = 0;

+int first_empty_flag = 0;

+

+int vb_read_count = 0;

+int vb_write_count = 0;

+

+

+

+struct voice_ring_buffer *voice_buff[2] = {NULL,NULL};

+

+

+

+static bool voice_buff_is_full(int read_pos, int write_pos)

+{

+

+

+	if ((write_pos - read_pos) >= 20000000) {

+		write_pos = write_pos - 20000000;

+		//voice_buff[UP_LINK]->write_pos = write_pos;

+		voice_buff[DOWN_LINK]->write_pos = write_pos;

+	}

+	return ((write_pos - read_pos) == MAX_BUF_NUM);

+}

+static bool voice_buff_is_empty(int read_pos, int write_pos)

+{

+	

+	return (write_pos == read_pos);

+}

+static int voice_buffer_write( char *buf, int count)

+{

+	int read_pos, write_pos;	

+

+

+	read_pos = voice_buff[DOWN_LINK]->read_pos;

+	write_pos = voice_buff[DOWN_LINK]->write_pos;	

+	if(vb_write_count == 0){

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO,"%s: first read_pos=%d write_pos=%d \n",__FUNCTION__,read_pos,write_pos);

+	}

+

+	

+	if(voice_buff_is_full(read_pos, write_pos)){

+		//zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "voice_buffer_read readbuffer is full \n");

+   		 first_full_flag++;

+		VB_INT_OVERFLOW(first_full_flag);

+		if(first_full_flag == 1)

+			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "%s: writebuffer is full  read_pos %d,write_pos %d,vb_write_count %d,count %d\n",__FUNCTION__,read_pos,write_pos,vb_write_count,count);

+		return DRV_ERROR_FULL;

+	}

+	else {

+		vb_write_count++;	

+		

+		VB_INT_OVERFLOW(vb_write_count);

+		first_full_flag = 0;

+		zOss_Memcpy(&(voice_buff[DOWN_LINK]->data[(write_pos%MAX_BUF_NUM)*MAX_BUF_SIZE]), buf, count);

+	

+		write_pos++;

+

+		voice_buff[DOWN_LINK]->write_pos = write_pos;

+

+	}

+	

+	return DRV_SUCCESS;

+}

+static int voice_buffer_read(char *buf, size_t count)

+{

+	int read_pos, write_pos;

+	int* buf_int;

+	int i;

+	

+	read_pos = voice_buff[UP_LINK]->read_pos;

+	write_pos = voice_buff[UP_LINK]->write_pos;

+	if(vb_read_count == 0){

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO,"%s: first read_pos=%d write_pos=%d \n",__FUNCTION__,read_pos,write_pos);

+	}

+

+	if ((count > 0) && (count <= MAX_BUF_SIZE))  {

+		if(voice_buff_is_empty(read_pos, write_pos)){

+			first_empty_flag++;

+			VB_INT_OVERFLOW(first_empty_flag);

+			if(first_empty_flag ==1)

+				zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO,"%s: readbuffer is empty,read_pos %d,write_pos %d,vb_read_count %d,count %d\n",__FUNCTION__,read_pos,write_pos,vb_read_count,count);

+			//add memset,del return . edit for  far end hear near end repreat voice pcm, FROM MBB TEST

+			

+		#ifndef  VB_DATA_LOSS_TEST

+			zOss_Memset(&(voice_buff[UP_LINK]->data[(read_pos%MAX_BUF_NUM)*MAX_BUF_SIZE]),0, count);

+			zOss_Memset(buf,0, count);

+		#endif			

+			//return DRV_ERROR_EMPTY;

+			

+

+		}

+		else {

+			

+		    vb_read_count++; 			

+			VB_INT_OVERFLOW(vb_read_count);		

+			first_empty_flag = 0;

+			

+			zOss_Memcpy(buf, &(voice_buff[UP_LINK]->data[(read_pos%MAX_BUF_NUM)*MAX_BUF_SIZE]), count);

+			//zOss_Memset(&(voice_buff[UP_LINK]->data[(read_pos%MAX_BUF_NUM)*MAX_BUF_SIZE]),0, count);

+

+#ifdef VB_DATA_LOSS_TEST

+

+			

+			if(vb_read_count < 5){

+				pr_info("ps :count=%d vb_read_count=%d,read_pos=%d,write_pos=%d\n",count,vb_read_count,read_pos,write_pos);

+

+			

+				buf_int =( int*) &voice_buff[UP_LINK]->data[(write_pos%MAX_BUF_NUM)*MAX_BUF_SIZE];

+				

+				for(i=0;i<(count/4);i++){

+				   //*(buf_int+i) = i;

+				   //buf_int[i] = i;

+				 if(i>0x1f)  

+					zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO,"ps: *(buf_int+%d)=%d\n",i,*(buf_int+i));

+				}

+			

+			}

+#endif

+			read_pos++;

+			if(read_pos == 20000000)

+				read_pos = 0;

+			voice_buff[UP_LINK]->read_pos = read_pos;

+		}

+

+

+	}

+		

+	

+	return DRV_SUCCESS;

+}

+

+

+//voice buffer use in single core 

+extern int voicebuffer_ulqueue_read(void *buf, unsigned int size);

+extern int voicebuffer_dlqueue_write(void  *buf, unsigned int  size);

+extern void voice_inform_to_app(void);

+//static DECLARE_COMPLETION(s_voice_completion);

+//ZOSS_TIMER_ID s_voiceTimerId ;

+//ZOSS_SEMAPHORE_ID s_voiceRdSema;

+//ZOSS_SEMAPHORE_ID s_voiceWrSema;

+static void voiceTimerCallBack(SINT32 para)

+{

+

+

+	if (g_voiceVar.voiceBufferType == 1)//multi core

+	{	

+

+

+		T_ZDrvRpMsg_Msg icp_pMsg = {0}; 

+		

+		UINT8 s = 1;

+		icp_pMsg.actorID = RPMSG_CAP_ID;

+

+		icp_pMsg.chID = channel_41;

+		icp_pMsg.flag |= RPMSG_WRITE_INT;

+		icp_pMsg.buf = (void *)&s;

+		icp_pMsg.len = 1;

+

+

+		zOss_PutSemaphore(s_voiceWrSema);

+		zOss_PutSemaphore(s_voiceRdSema);

+		//zDrvRpMsg_Write(&icp_pMsg); 

+#ifdef _USE_VEHICLE_DC	

+		zDrvRpMsg_Write_Cap(&icp_pMsg);

+#endif

+		timer_cb_count++;

+		VB_INT_OVERFLOW(timer_cb_count);

+#ifdef VB_DATA_LOSS_TEST

+

+		if((timer_cb_count%1000 ) == 0){

+			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "%s:timer_cb_count(%d)\n",__FUNCTION__,timer_cb_count);

+			if(timer_cb_count> 10000000) 

+				timer_cb_count=0;

+		}

+

+#endif

+	

+

+	}

+	else{

+

+

+

+	//	complete_all(&s_voice_completion);

+		zOss_PutSemaphore(s_voiceWrSema);

+		zOss_PutSemaphore(s_voiceRdSema);

+		voice_inform_to_app();

+	//	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "voiceTimerCallBack timer=%u\n", cpu_clock(0)>>10);

+	}

+

+

+}

+

+

+

+

+

+static SINT32 vp_rxsem_count_Init(void)

+{

+	UINT32 i = 0;

+	UINT32 semCount = 0;

+	SINT32 Count = 0;

+

+	semCount = zOss_GetSemaphoreCount(s_voiceRdSema);

+	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_rxsem_count_Init rxSem count=%d\n",  semCount);

+

+	Count = semCount;

+	if(Count > 0)  {

+		for(i = 0; i < Count; i++) {

+			zOss_GetSemaphore(s_voiceRdSema, ZOSS_NO_WAIT);

+		}

+	}

+

+	return DRV_SUCCESS;

+}

+

+static SINT32 vp_txsem_count_Init(void)

+{

+	UINT32 i = 0;

+	UINT32 semCount = 0;

+	SINT32 Count = 0;

+

+	semCount = zOss_GetSemaphoreCount(s_voiceWrSema);

+	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_txsem_count_Init txSem count=%d \n",  semCount);

+

+	Count = 3 - semCount;

+	if(Count > 0) {

+		for(i = 0; i < Count; i++) {

+			zOss_PutSemaphore(s_voiceWrSema);

+		}

+	} else if(Count < 0) {

+		Count = 0 - Count;

+		for(i = 0; i < Count; i++) {

+			zOss_GetSemaphore(s_voiceWrSema, ZOSS_NO_WAIT);

+		}

+	}

+	

+	return DRV_SUCCESS;

+}

+

+

+

+

+

+SINT32 vp_Open_Vbuffer(void)

+{

+	SINT32 ret = DRV_SUCCESS;

+	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "%s:  start \n", __func__);

+	if (g_voiceVar.voiceBufferType == 1)//multi core

+	{

+ 		vp_Get_Add_RpMsg_Vbuffer();	

+		

+		vp_rxsem_count_Init();

+		vp_txsem_count_Init();

+		voice_buff[UP_LINK]->read_pos = 0;

+		voice_buff[UP_LINK]->write_pos = 0; 

+		voice_buff[DOWN_LINK]->read_pos = 0;

+		voice_buff[DOWN_LINK]->write_pos = 0; 

+		zOss_Memset(&(voice_buff[DOWN_LINK]->data[0]),0, MAX_BUF_NUM*MAX_BUF_SIZE);

+		zOss_Memset(&(voice_buff[UP_LINK]->data[0]),0, MAX_BUF_NUM*MAX_BUF_SIZE);

+		//for debug

+		timer_cb_count = 0;

+		first_full_flag = 0;

+		first_empty_flag = 0;

+

+		vb_read_count = 0;

+		vb_write_count = 0;	

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_Open_Vbuffer  init voice buffer val!\n");

+

+		

+	}else{

+

+	//	INIT_COMPLETION(s_voice_copletion);

+		vp_rxsem_count_Init();

+		vp_txsem_count_Init();

+	}

+

+	return DRV_SUCCESS;

+

+}

+

+

+SINT32 vp_Close_Vbuffer(void)

+{

+	SINT32 ret = DRV_SUCCESS;

+    

+	if (g_voiceVar.voiceBufferType == 1)//multi core

+	{

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "%s: timer_cb_count %d,first_full_flag %d,first_empty_flag %d,vb_read_count %d,vb_write_count %d!\n",__FUNCTION__,timer_cb_count,first_full_flag,first_empty_flag,vb_read_count,vb_write_count);

+	}

+

+	return DRV_SUCCESS;

+}

+

+SINT32 vp_VoiceI2sStart_Vbuffer(VOID)

+{

+	SINT32 ret = DRV_SUCCESS;

+

+	UINT8 *read_buf = NULL;

+	UINT8 *write_buf = NULL;

+	UINT32 read_len = 0;

+	UINT32 write_len = 0;

+

+

+	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "%s: start.\n",__func__);

+

+

+	ret = zDrvI2S_Read_Start(I2S_2, &s_speechState.i2sReadParam, s_vpState.pVpInnerI2sCfg);

+	if (ret != DRV_SUCCESS)

+	{

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VoiceI2sStart_Vbuffer failed ret is %d .\n", ret);

+		return DRV_ERROR;

+	}

+

+	zOss_StartTimer(s_voiceTimerId, 20, voiceTimerCallBack, 0);

+

+

+	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VoiceI2sStart_Vbuffer VB zOss_StartTimer\n");

+

+	ret = zDrvI2S_Write_Start(I2S_2, &s_speechState.i2sWriteParam, s_vpState.pVpInnerI2sCfg);

+

+	ret += zDrvI2S_GetBuf(I2S_2, &write_buf, &write_len);

+	if (ret != DRV_SUCCESS)

+	{

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VoiceI2sStart_Vbuffer error7:zDrvI2S_GetBuf I2S_2 ret=%d", ret);

+		return DRV_ERROR;

+	}

+	zOss_Memset(write_buf, 0, write_len);

+	ret = zDrvI2S_Write(I2S_2, write_buf, write_len);

+	if (ret != DRV_SUCCESS)

+	{

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VoiceI2sStart_Vbuffer error12:zDrvI2S_Write I2S_2 ret=%d", ret);

+	}

+	

+	ret += zDrvI2S_GetBuf(I2S_2, &write_buf, &write_len);

+	if (ret != DRV_SUCCESS)

+	{

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VoiceI2sStart_Vbuffer error13:zDrvI2S_GetBuf I2S_2 ret=%d", ret);

+		return DRV_ERROR;

+	}

+	zOss_Memset(write_buf, 0, write_len);

+	ret = zDrvI2S_Write(I2S_2, write_buf, write_len);

+	if (ret != DRV_SUCCESS)

+	{

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VoiceI2sStart_Vbuffer error14:zDrvI2S_Write I2S_2 ret=%d", ret);

+	}

+    

+	if (g_voiceVar.voiceBufferType == 1)//multi core

+	{

+

+		voice_buffer_write(s_speechState.pVpTempRxOutPutBuffer, s_speechState.totalFrameBufSize);

+

+	}else{

+		voicebuffer_dlqueue_write(s_speechState.pVpTempRxOutPutBuffer, s_speechState.totalFrameBufSize);

+	}

+	

+	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "%s: end.\n",__func__);

+	return ret;

+}

+VOID vp_VoiceI2sStop_Vbuffer(VOID)

+{

+	SINT32 ret = DRV_SUCCESS;

+    return ret;

+}

+

+

+

+SINT32 zDrvVp_VoiceWorkStop_Vbuffer(VOID)

+{

+	SINT32  ret = DRV_SUCCESS;

+

+	//complete_all(&s_voice_completion);

+	zOss_PutSemaphore(s_voiceRdSema);

+	zOss_PutSemaphore(s_voiceWrSema);

+	zOss_StopTimer(s_voiceTimerId);

+	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "%s: zOss_StopTimer\n",__func__);

+

+

+

+	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "%s: success",__func__);

+	return DRV_SUCCESS;

+}

+

+

+SINT32 vp_VolteReadStart_Vbuffer(VOID)

+{

+	SINT32 ret = DRV_SUCCESS;

+

+	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VolteReadStart_Vbuffer start\n");

+    

+	zOss_StartTimer(s_voiceTimerId, 20, voiceTimerCallBack, 0);

+

+	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VolteReadStart_Vbuffer zOss_StartTimer start\n");

+

+	return DRV_SUCCESS;

+}

+//whole replace 

+SINT32 vp_VolteReadStop_Vbuffer(VOID)

+{

+	SINT32  ret = DRV_SUCCESS;

+

+	if (g_voiceVar.useVoiceBuffer == 1)

+	{

+		zOss_PutSemaphore(s_voiceRdSema);

+	

+	}

+	else

+	{

+

+#ifdef  CONFIG_VOICE_BUFFER_DRV  

+		zOss_PutSemaphore(s_voiceRdSema);

+#else

+

+		//zDrvI2s_RxRlsSemaBeforeStop(I2S_1);

+		zDrvExtAudio_RxRlsSemaBeforeStop();

+

+#if 0//move to close lvwenhua 20150910

+		ret = zDrvExtAudio_Read_Stop();

+		if (ret != DRV_SUCCESS)

+		{

+			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVolte_ReadStop I2S1 Stop wrong  ret=%d", ret);

+		}

+#endif

+#endif

+

+	}

+

+	if (s_speechState.volteVpCfgEnFlag == 1)

+	{

+		ret = halVpCfg_Disable();

+		if (ret != DRV_SUCCESS)

+		{

+			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "%s: halVpCfg_Enable err ret=%x !\n",__func__, ret);

+		}

+		else

+		{

+			s_speechState.volteVpCfgEnFlag = 0;

+		}

+	}

+

+	s_speechState.volteVpReadStopFlag = 1;//together control vp s_speechState

+	if ((s_speechState.volteVpWriteStopFlag == 1) && (s_speechState.volteVpReadStopFlag == 1))

+	{

+		g_voiceVar.vpI2sStatus = VP_I2S_OPEN;

+		

+		if (g_voiceVar.useVoiceBuffer == 1)

+		{

+			zOss_StopTimer(s_voiceTimerId);

+			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "%s: zOss_StopTimer\n",__func__);

+		

+		}

+		else

+		{

+#ifdef  CONFIG_VOICE_BUFFER_DRV  	

+			zOss_StopTimer(s_voiceTimerId);

+			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VolteReadStop_Vbuffer zOss_StopTimer\n");

+#endif

+	}

+	}

+	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "%s: end\n",__func__);

+	return ret;

+}

+

+SINT32 vp_VolteWriteStart_Vbuffer(VOID)

+{

+	SINT32 ret = DRV_SUCCESS;

+

+	//???? for check

+	if (g_voiceVar.voiceBufferType == 1)//multi core

+	{

+		voice_buffer_write(s_speechState.pVpTempRxOutPutBuffer, s_speechState.totalFrameBufSize);

+	}

+	else

+	{

+		voicebuffer_dlqueue_write(s_speechState.pVpTempRxOutPutBuffer, s_speechState.totalFrameBufSize);

+	}

+	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO,  "%s:end \n",__func__);

+

+	return ret;

+}

+//whole replace

+SINT32 vp_VolteWriteStop_Vbuffer(VOID)

+{

+	SINT32  ret = DRV_SUCCESS;

+	if (g_voiceVar.useVoiceBuffer == 1)

+	{

+		zOss_PutSemaphore(s_voiceWrSema);

+	

+	}

+	else

+	{

+

+#ifdef  CONFIG_VOICE_BUFFER_DRV  

+		//complete_all(&s_voice_completion);

+		zOss_PutSemaphore(s_voiceWrSema);

+#else

+		//zDrvI2s_TxRlsSemaBeforeStop(I2S_1);

+		zDrvExtAudio_TxRlsSemaBeforeStop();

+#endif

+	}

+#if 0//move to close lvwenhua 20150910

+	//wait for write drain semaphore

+#ifdef VOICE_TONE_MIXER_FUNCTION

+	voice_ToneMixerStop();

+#endif

+

+	ret = zDrvExtAudio_Write_Stop();

+	if (ret != DRV_SUCCESS)

+	{

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVolte_WriteStop I2S1 Stop wrong  ret=%d", ret);

+	}

+

+	//s_VolteWriteSema = 0;

+#endif

+

+	if (s_speechState.volteVpCfgEnFlag == 1)

+	{

+		ret = halVpCfg_Disable();

+		if (ret != DRV_SUCCESS)

+		{

+			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VolteWriteStop_Vbuffer halVpCfg_Enable err ret=%x !\n", ret);

+		}

+		else

+		{

+			s_speechState.volteVpCfgEnFlag = 0;

+		}

+	}

+

+	s_speechState.volteVpWriteStopFlag = 1;//together control vp s_speechState

+	if ((s_speechState.volteVpWriteStopFlag == 1) && (s_speechState.volteVpReadStopFlag == 1))

+	{

+		g_voiceVar.vpI2sStatus = VP_I2S_OPEN;

+		

+		if (g_voiceVar.useVoiceBuffer == 1)

+		{

+

+			zOss_StopTimer(s_voiceTimerId);

+				

+		}

+		else

+		{

+			

+#ifdef  CONFIG_VOICE_BUFFER_DRV 

+			zOss_StopTimer(s_voiceTimerId);

+			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VolteWriteStop_Vbuffer zOss_StopTimer\n");

+#endif

+		}

+	}

+	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VolteWriteStop_Vbuffer \n");

+	return ret;

+}

+

+

+/*******************************************************************************

+ * For union version

+ * Others:

+ ********************************************************************************/

+SINT32 vp_WriteDataToCodec_Vbuffer(UINT8 *pBuf, UINT32 count)

+{

+	SINT32  ret = DRV_SUCCESS;

+	SINT32  e_ret = DRV_SUCCESS;	

+	UINT8 *write_buf = NULL;

+	UINT32 write_len = 0;

+	UINT8 *e_write_buf = NULL;

+	UINT32 e_write_len = 0;

+	UINT32 i = 0, j = 0;

+#ifdef TEST_WHITE_NOISE

+	// UINT32 tempCount = 0;

+	//zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "test the white noise");

+	//UINT8 *pVoiceTempBuf = s_voiceTempBuffer;

+#endif

+

+

+

+	if (pBuf == NULL)

+	{

+		return DRV_ERR_INVALID_PARAM;

+	}

+

+	if (count != s_speechState.i2sWriteParam.buffersize)

+	{

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_WriteDataToCodec_Vbuffer write data length err,count=%d,writebuffersize=%d \n", count, s_speechState.i2sWriteParam.buffersize);

+		return DRV_ERR_INVALID_PARAM;

+	}

+	#ifdef ECALL_SUPPORT	

+

+	if(e_reg_flag == 1)

+	{		

+		e_ret = update_ecall_state(DIR_RX); 

+		if (e_ret == DRV_ERR_NOT_SUPPORTED)

+		{

+			zOss_Printf(SUBMDL_HAL, PRINT_LEVEL_NORMAL, "vp_WriteDataToCodec_Vbuffer get__ecall_state fun not register or invalid para,e_ret=%d !\n",e_ret);

+	

+		}	

+	}	

+	#endif

+

+

+

+	#ifdef TEST_WHITE_NOISE

+

+	zOss_Memcpy(s_speechState.pVpTempRxInBuffer, pVoiceTempBuf, s_speechState.totalFrameBufSize);

+

+	pVoiceTempBuf += s_speechState.totalFrameBufSize;

+	tempCount += s_speechState.totalFrameBufSize;

+	if (tempCount >= 0x4df80)   //307200

+		//if(tempCount >= 0x4e200)   //320000

+	{

+		pVoiceTempBuf = s_voiceTempBuffer;

+		tempCount = 0;

+	}

+	#endif

+

+	#ifdef VOICE_TONE_MIXER_FUNCTION

+

+	if (mixerToneInfo.StartMixer == TRUE) 

+	{

+		//voice_ToneMixerData( s_speechState.pVpTempRxInBuffer);

+		if ((g_voiceVar.voiceInVolteMode == 1) && (g_voiceVar.volteIsWb == 1)) 

+		{

+			voice_ToneMixerData(s_speechState.pVpTempRxInBuffer, 640,  s_speechState.pVpTempRxInBuffer);

+		} 

+		else 

+		{

+			voice_ToneMixerData(s_speechState.pVpTempRxInBuffer, 320,  s_speechState.pVpTempRxInBuffer);

+		}

+

+	}

+

+	#endif

+	if (pBuf !=  s_speechState.pVpTempRxInBuffer)

+	{

+		zOss_Memcpy(s_speechState.pVpTempRxInBuffer, pBuf, s_speechState.totalFrameBufSize);

+	}

+    

+	if (g_voiceVar.vProcIsNormal == TRUE)

+	{

+		VoiceProc_RxProcess(& s_speechState.pVpTempRxInBuffer, & s_speechState.pVpTempRxOutPutBuffer, s_speechState.frameCount);

+	}

+	else

+	{

+		zOss_Memcpy((VOID *)(s_speechState.pVpTempRxOutPutBuffer), (VOID *) s_speechState.pVpTempRxInBuffer, s_speechState.totalFrameBufSize);

+	}

+	//wait_for_completion_timeout(&s_voice_completion, 60);

+	zOss_GetSemaphore(s_voiceWrSema,  60);

+	//#ifdef _VBUFF_IN_MULTI_CORE

+	if (g_voiceVar.voiceBufferType == 1)

+	{

+		voice_buffer_write(s_speechState.pVpTempRxOutPutBuffer, s_speechState.totalFrameBufSize);

+	}

+	else

+	{			

+		voicebuffer_dlqueue_write(s_speechState.pVpTempRxOutPutBuffer, s_speechState.totalFrameBufSize);

+	}

+	if (g_voiceVar.voiceInVolteMode == 1)

+	{

+		s_speechState.rxSaveLen += s_speechState.totalFrameBufSize;

+		if (s_speechState.rxSaveLen >= s_speechState.inOutBufUseSize)

+		{

+			s_speechState.rxSaveLen = 0;

+		}

+		s_speechState.pVpTempRxInBuffer = s_vpState.pVpRxInBuffer + s_speechState.rxSaveLen;

+		#ifdef _USE_VP_OUTPUT_RXOUT_DATA

+        s_speechState.pVpTempRxOutPutBuffer = s_vpState.pVpRxOutPutBuffer + s_speechState.rxSaveLen;

+		#else

+		s_speechState.pVpTempRxOutPutBuffer = s_vpState.pVpRxOutPutBuffer;

+		#endif

+	}

+

+	

+	if (s_speechState.firstWriteDataFlag == FALSE)

+	{

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_WriteDataToCodec_Vbuffer first write ret=%d,tick=%d.\n", ret, zOss_GetTickCount());

+		s_speechState.firstWriteDataFlag = TRUE;

+	}

+

+	return ret;

+}

+

+

+

+SINT32 vp_ReadDataFromCodec_Vbuffer(UINT8 *pBuf, UINT32 count)

+{

+	SINT32  ret = DRV_SUCCESS;

+	UINT8 *read_buf = NULL;

+	UINT32 read_len = 0;

+

+	UINT32 i = 0, j = 0;

+#ifdef CONFIG_ARCH_ZX297520V3_CPE_SWITCH

+	UINT8 temp8bit = 0;

+	UINT8 *ptemp8bit = NULL;

+#endif

+

+	if (pBuf == NULL)

+	{

+		return DRV_ERR_INVALID_PARAM;

+	}

+

+	if (count != s_speechState.i2sReadParam.buffersize)

+	{

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "%s: read data length err,count=%d,readbuffersize=%d \n",__func__, count, s_speechState.i2sReadParam.buffersize);

+		return DRV_ERR_INVALID_PARAM;

+	}

+#ifdef ECALL_SUPPORT

+

+	if(e_reg_flag == 1)

+	{		

+		ret = update_ecall_state(DIR_TX); 

+		if (ret == DRV_ERR_NOT_SUPPORTED)

+		{

+			zOss_Printf(SUBMDL_HAL, PRINT_LEVEL_NORMAL, "vp_ReadDataFromCodecvp_ReadDataFromCodec get__ecall_state fun not register,ret=%d !\n",ret);

+	

+		}	

+	}	

+#endif

+	

+

+//	wait_for_completion_timeout(&s_voice_completion, 60);

+	zOss_GetSemaphore(s_voiceRdSema,  60);

+	if (g_voiceVar.voiceBufferType == 1)

+	{

+		voice_buffer_read(s_speechState.pVpTempTxInBuffer,  s_speechState.totalFrameBufSize);

+

+	}

+	else

+	{

+		voicebuffer_ulqueue_read(s_speechState.pVpTempTxInBuffer,  s_speechState.totalFrameBufSize);

+	}

+	if (g_voiceVar.vProcIsNormal == TRUE)

+	{

+		VoiceProc_TxProcess(&s_speechState.pVpTempTxInBuffer, NULL, &s_speechState.pVpTempTxOutPutBuffer, s_speechState.frameCount);	

+	}

+	else

+	{

+		zOss_Memcpy((VOID *)(s_speechState.pVpTempTxOutPutBuffer), (VOID *) s_speechState.pVpTempTxInBuffer, s_speechState.totalFrameBufSize);

+	}

+

+	if (pBuf !=  s_speechState.pVpTempTxOutPutBuffer)

+	{

+		zOss_Memcpy(pBuf, s_speechState.pVpTempTxOutPutBuffer, s_speechState.totalFrameBufSize);

+	}

+	

+	if (g_voiceVar.voiceInVolteMode == 1)

+	{

+		// s_speechState.txSaveLen += VP_FRAME_BUFFER_SIZE;

+		s_speechState.txSaveLen += s_speechState.totalFrameBufSize;

+		if (s_speechState.txSaveLen >= s_speechState.inOutBufUseSize)

+		{

+			s_speechState.txSaveLen = 0;

+		}

+		s_speechState.pVpTempTxInBuffer = s_vpState.pVpTxInBuffer + s_speechState.txSaveLen;

+		s_speechState.pVpTempTxOutPutBuffer = s_vpState.pVpTxOutPutBuffer + s_speechState.txSaveLen;

+	}

+	

+	

+	if (s_speechState.firstReadDataFlag == FALSE)

+	{

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_ReadDataFromCodec first read tick=%d.\n", zOss_GetTickCount());

+		s_speechState.firstReadDataFlag = TRUE;

+	}

+

+	return ret;

+}

+

+

+

+

+SINT32 vp_CreateThreadSemaph_Vbuffer(VOID)

+{

+	SINT32 ret = 0;

+//#ifdef CONFIG_VOICE_BUFFER_DRV  	

+//	init_completion(&s_voice_completion);

+    /*

+	if(vbuffer_init_flag == 1){

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vbuffer already init,return! \n");

+		return DRV_SUCCESS;

+

+	}

+	*/

+	s_voiceRdSema = zOss_CreateSemaphore("voice_rx_sem", 0);

+	if(NULL == s_voiceRdSema) {

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "create voice_rx_sem err \n");

+		return DRV_ERROR;

+	}

+

+	s_voiceWrSema  = zOss_CreateSemaphore("voice_tx_sem", 0);

+	if(NULL == s_voiceWrSema) {

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "create voice_tx_sem err \n");

+		return DRV_ERROR;

+	}

+

+	

+ 

+	s_voiceTimerId	= zOss_CreateTimer("voice_frameTimer", voiceTimerCallBack, 0, TRUE);	 

+	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "s_voiceTimerId=%p\n", s_voiceTimerId);

+	if(!s_voiceTimerId)

+	{

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "voice_frameTimer  failed\n");

+		return DRV_ERROR;

+	}

+

+

+

+

+	//ret = zDrvRpMsg_CreateChannel(IPC_MSG_ACTOR_A9,channel_41,0x10);

+#ifdef _USE_VEHICLE_DC		

+	ret = zDrvRpMsg_CreateChannel_Cap(RPMSG_CAP_ID,channel_41,0x10);

+

+	if(DRV_SUCCESS != ret) {

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "create rpmsg err(%d) \n",ret);

+		return DRV_ERROR;

+	}

+/*	

+	volatile T_ZDrvRpMsg_Msg icp_pMsg = {0}; 

+	volatile unsigned int rpMsgBuf[2] = {0,0}; 

+	//printk( "vir_buf1:0x%x, vir_buf2:0x%x, phy_buf1:0x%x, phy_buf2:0x%x,\n",voice_buff[0],voice_buff[1],rpMsgBuf[0],rpMsgBuf[1]);

+	icp_pMsg.actorID = RPMSG_CAP_ID;

+	icp_pMsg.chID = channel_41;

+	icp_pMsg.flag &= ~RPMSG_READ_POLL;

+	icp_pMsg.buf = rpMsgBuf;

+	icp_pMsg.len = 8;

+

+	

+	ret = zDrvRpMsg_Read_Cap(&icp_pMsg);

+	if(ret <= 0){

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "voice buffer  rpmsg addr read  fail,ret=%d \n",ret);

+		zOss_Printf(SUBMDL_HAL, PRINT_LEVEL_NORMAL, "ps voice buffer  rpmsg addr read  fail,ret=%d \n",ret);

+		

+

+	}

+	else{

+		#if 0

+

+		voice_buff[UP_LINK] = (struct voice_ring_buffer *)(rpMsgBuf[0]);

+		voice_buff[DOWN_LINK] = (struct voice_ring_buffer *)(rpMsgBuf[1]);	

+		#else

+

+		voice_buff[UP_LINK] = (struct voice_ring_buffer *)ioremap_wc(rpMsgBuf[0], (sizeof(struct voice_ring_buffer) + MAX_BUF_SIZE*MAX_BUF_NUM));

+		voice_buff[DOWN_LINK] = (struct voice_ring_buffer *)ioremap_wc(rpMsgBuf[1],(sizeof(struct voice_ring_buffer) + MAX_BUF_SIZE*MAX_BUF_NUM));	

+		#endif

+

+		zOss_Printf(SUBMDL_HAL, PRINT_LEVEL_NORMAL, "ps rpmsg voice buffer addr,up vir buf=0x%x,  down vir buf=0x%x ,up phy buf=0x%x,  down phy buf=0x%x,size=%d \n" \

+		,voice_buff[0],voice_buff[1],rpMsgBuf[0],rpMsgBuf[1],(sizeof(struct voice_ring_buffer) + MAX_BUF_SIZE*MAX_BUF_NUM));

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "voice buffer addr,up vir buf=0x%x,  down vir buf=0x%x ,up phy buf=0x%x,  down phy buf=0x%x,size=%d \n" \

+			,voice_buff[0],voice_buff[1],rpMsgBuf[0],rpMsgBuf[1],(sizeof(struct voice_ring_buffer) + MAX_BUF_SIZE*MAX_BUF_NUM));

+	}

+*/	

+

+	

+#endif

+	//vbuffer_init_flag = 1;

+

+	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_CreateThreadSemaph success. \r\n");

+	return DRV_SUCCESS;

+}

+

+

+

+

+static SINT32 vp_Get_Add_RpMsg_Vbuffer(VOID)

+{

+	SINT32 ret = 0;

+//#ifdef CONFIG_VOICE_BUFFER_DRV  	

+//	init_completion(&s_voice_completion);

+    

+	if(vbuffer_init_flag == 1){

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vbuffer already init,return! \n");

+		return DRV_SUCCESS;

+

+	}

+

+	//ret = zDrvRpMsg_CreateChannel(IPC_MSG_ACTOR_A9,channel_41,0x10);

+#ifdef _USE_VEHICLE_DC		

+

+	volatile T_ZDrvRpMsg_Msg icp_pMsg = {0}; 

+	volatile unsigned int rpMsgBuf[2] = {0,0}; 

+	//printk( "vir_buf1:0x%x, vir_buf2:0x%x, phy_buf1:0x%x, phy_buf2:0x%x,\n",voice_buff[0],voice_buff[1],rpMsgBuf[0],rpMsgBuf[1]);

+	icp_pMsg.actorID = RPMSG_CAP_ID;

+	icp_pMsg.chID = channel_41;

+	icp_pMsg.flag &= ~RPMSG_READ_POLL;

+	icp_pMsg.buf = rpMsgBuf;

+	icp_pMsg.len = 8;

+

+	

+	ret = zDrvRpMsg_Read_Cap(&icp_pMsg);

+	if(ret <= 0){

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "voice buffer  rpmsg addr read  fail,ret=%d \n",ret);

+		zOss_Printf(SUBMDL_HAL, PRINT_LEVEL_NORMAL, "ps voice buffer  rpmsg addr read  fail,ret=%d \n",ret);

+		

+

+	}

+	else{

+		#if 0

+

+		voice_buff[UP_LINK] = (struct voice_ring_buffer *)(rpMsgBuf[0]);

+		voice_buff[DOWN_LINK] = (struct voice_ring_buffer *)(rpMsgBuf[1]);	

+		#else

+

+		voice_buff[UP_LINK] = (struct voice_ring_buffer *)ioremap_wc(rpMsgBuf[0], (sizeof(struct voice_ring_buffer) + MAX_BUF_SIZE*MAX_BUF_NUM));

+		voice_buff[DOWN_LINK] = (struct voice_ring_buffer *)ioremap_wc(rpMsgBuf[1],(sizeof(struct voice_ring_buffer) + MAX_BUF_SIZE*MAX_BUF_NUM));	

+		#endif

+

+		zOss_Printf(SUBMDL_HAL, PRINT_LEVEL_NORMAL, "ps rpmsg voice buffer addr,up vir buf=0x%x,  down vir buf=0x%x ,up phy buf=0x%x,  down phy buf=0x%x,size=%d \n" \

+		,voice_buff[0],voice_buff[1],rpMsgBuf[0],rpMsgBuf[1],(sizeof(struct voice_ring_buffer) + MAX_BUF_SIZE*MAX_BUF_NUM));

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "voice buffer addr,up vir buf=0x%x,  down vir buf=0x%x ,up phy buf=0x%x,  down phy buf=0x%x,size=%d \n" \

+			,voice_buff[0],voice_buff[1],rpMsgBuf[0],rpMsgBuf[1],(sizeof(struct voice_ring_buffer) + MAX_BUF_SIZE*MAX_BUF_NUM));

+

+		vbuffer_init_flag = 1;

+

+	}

+	

+

+	

+#endif

+

+	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "%s: success. \r\n",__func__);

+	return DRV_SUCCESS;

+}

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

diff --git a/cp/ps/driver/src/chipsets/src/audio_base/voiceprocess/hal_voiceprocess.c b/cp/ps/driver/src/chipsets/src/audio_base/voiceprocess/hal_voiceprocess.c
index f34d0b7..3296dad 100755
--- a/cp/ps/driver/src/chipsets/src/audio_base/voiceprocess/hal_voiceprocess.c
+++ b/cp/ps/driver/src/chipsets/src/audio_base/voiceprocess/hal_voiceprocess.c
@@ -34,9 +34,7 @@
 #include "drvs_tdm.h"

 #include "hal_dtmf_detect.h"

 #include "hal_audio_data.h"

-//#define TEST_WHITE_NOISE

 

-//#define  VB_DATA_LOSS_TEST

 #ifdef TEST_WHITE_NOISE

 #include "Fs8000_WhiteNoise_Mon.h"

 //#include "Fs8000_Sine_440Hz_Mon.h"

@@ -45,40 +43,19 @@
 #include "drvs_icp.h"

 #include "drvs_rpmsg.h"

 //#include <linux/completion.h>

+

+#include "hal_voicebuffer.h"

+

 /****************************************************************************

 * 	                                           Local Macros

 ****************************************************************************/

 //#define USE_AUDIO_RING

 //#define VP_GET_TX_ALL_DATA

 

-#define VP_BUF_LENGTH  0x7FF80 //0xFFD80   //0x7FE40  //0x4df80// (0.5M  0x80000)

-#define VP_FRAME_BUFFER_SIZE 320 //20ms 800KHZ

-#define VP_I2S_BUFFER_SIZE 320

-#define VOICE_SYNC_TIMEOUT_TIME 100

-

-#define VP_INOUT_BAK_BUFFER_SIZE 0x30000  // 0x60000

-#define VP_INOUT_NOBAK_BUFSIZE  640

-#define VB_MAX_INT	     0x7fffffff

-#define VB_MIN_INT        0 //(0-2<<31)//0x80000000

-

-#define VB_INT_OVERFLOW(x) if((x < VB_MIN_INT)||(x > VB_MAX_INT))  x = 0;

 /****************************************************************************

 * 	                                           Local Types

 ****************************************************************************/

-	typedef enum

-	{

-		VBUF_SEM = 0,//voice buffer

-		ECALL_SEM,		

-		SEM_MAX

-	} T_Sem_Owner;

 

-	typedef enum

-	{

-		DIR_RX,

-		DIR_TX, 	

-		DIR_ALL,

-		DIR_MAX

-	} T_Data_Dir_Type;

 

 /****************************************************************************

 * 	                                           Local Constants

@@ -104,7 +81,46 @@
 * 	                                          Global Variables

 ****************************************************************************/

 //static T_zDrvVp_SpeechState *s_pSpeechState = NULL;

+#if 0

 static T_zDrvVp_SpeechState s_speechState = {0};  //104 bytes

+#else

+T_zDrvVp_SpeechState s_speechState = {

+		//use for vp data process

+	.pVpTempRxInBuffer = NULL,	

+	.pVpTempTxInBuffer = NULL,	

+	.pVpTempRxOutPutBuffer = NULL,	

+	.pVpTempTxOutPutBuffer = NULL,	

+		

+	.pVpI2sCfg = NULL,	

+		

+	.vpCfgParam = {0},

+		

+	.i2sWriteParam = {0},

+	.i2sReadParam = {0},

+		

+	.frameCount = 0,

+	.totalFrameBufSize = 0,

+	.inOutBufUseSize = 0,

+	.rxSaveLen = 0,

+	.txSaveLen = 0,

+	.saveLen = 0,

+		

+	.pcmSlotNum = 0,

+	.pcmWbSecDataPosition = 0,

+		

+	.volteVpWriteStopFlag = 0,

+	.volteVpReadStopFlag = 0,

+	. volteVpCfgEnFlag = 0,

+	.firstWriteDataFlag = FALSE,

+	.firstReadDataFlag = FALSE,

+	.i2sIsRstFlag = FALSE,

+

+};

+

+

+#endif

+

+#if 0

 

 T_zDrvVoice_GbVar g_voiceVar =

 {

@@ -138,32 +154,104 @@
 #endif

     0 //27 voice_nv_update

 };

+#else

+T_zDrvVoice_GbVar g_voiceVar =

+{

+	.volteIsWb = 0,					//volteIsWb

+	.isUseSlicCodec = 0,					//isUseSlicCodec

+	.g_isUseTdm = 0,					//g_isUseTdm

+	.voiceInGsmTdMode = 0,					//voiceInGsmTdMode

+	.voiceInVolteMode = 0,					//voiceInVolteMode

+	.innerI2sIsMaster = FALSE,				//innerI2sIsMaster

+	.innerI2sIsI2sMode = TRUE,				//innerI2sIsI2sMode

+	.vpLoopRuning = FALSE,				//vpLoopRunning

+	.muteEn = FALSE,				//muteEn

+	.vProcIsNormal = FALSE,				//vProcIsNormal

+	.vpI2sStatus = VP_I2S_IDLE,		//vpI2sStatus

+	.vpPath = VP_PATH_HANDSET,	//vpPath

+	.vpLoopPath = VP_PATH_HANDSET,	//vpLoopPath

+	.vpVol = VP_VOL_3,			//vpVol

+	.voiceMode = MAX_VOICE_MODE,		//voiceMode

+	.vpInitGain = -1,					//vpInitGain

+	.audio_ctrlFlag = {0},				//audio_ctrlFlag

+	

+    .dtmfDirSel = DTMF_IDLE,			//dtmfDirSel

+    .sample_rate = 0,					//sample_rate

+    .useDtmfLoop = 0,					//useDtmfLoop

+    .muteCount = 0,					//muteCount

+    .vpLoopBkRunning = FALSE,				//vpLoopBkRunning

+	.rxMuteEn = FALSE,              //rxMuteEn

+	.firstRegZCATFlag = FALSE,

+#ifdef ECALL_SUPPORT	

+    .ecallData = {0},			    //ecallData

+#endif

+	.voice_nv_update = 0, // voice_nv_update

+	.useVoiceBuffer = 0,// 0 not use,1 use

+	.voiceBufferType = 0, //0 single core, 1 dual core

+	

+};

+

+#endif

+

+#if 0

+

 

 static T_zDrvVp_State s_vpState =

 {

-	NULL,

-	NULL,

-	NULL,

-	NULL,

-	0,

-	NULL,

-	NULL,

-	NULL,

-	NULL,

-	NULL,

-	NULL,

-	{0},

-	{0},

-	0,

-	NULL,

-	NULL,

-	NULL,

-	NULL,

-	NULL,

-	NULL,

-	NULL

+	NULL,//1 pVpRxInBuffer

+	NULL,//2 pVpTxInBuffer

+	NULL,//3 pVpRxOutPutBuffer

+	NULL,//4 pVpTxOutPutBuffer

+	0,//5 inOutBufSize

+	NULL,//6 pVpInnerI2sCfg

+	NULL,//7 pVpExtI2sCfg

+	NULL,//8 pVpExtI2sWbCfg

+	NULL,//9 s_pVpTdmCfg

+	NULL,//10 s_pVpTdmWbCfg

+	NULL,//11 pVpTdmCfg

+	{0},//12 pMsg

+	{0},//13 pMsgBuf[2]

+	//0,//14

+	NULL,//15 vpThread

+	NULL,//16 rcvDtmfThread

+	NULL,//17 vpSemaphore

+	NULL,//18 vpThreadQuitSema

+	NULL,//19 vpLoopThread

+	NULL,//20 vpLoopSemaphore

+	NULL//21 vpState

 //	{0}

 };

+#else

+T_zDrvVp_State s_vpState =

+{

+	.pVpRxInBuffer = NULL,//1

+	.pVpTxInBuffer = NULL,//2

+	.pVpRxOutPutBuffer = NULL,//3

+	.pVpTxOutPutBuffer = NULL,//4

+	.inOutBufSize = 0,//5

+	.pVpInnerI2sCfg = NULL,//6

+	.pVpExtI2sCfg = NULL,//7

+	.pVpExtI2sWbCfg = NULL,//8

+	.s_pVpTdmCfg = NULL,//9

+	.s_pVpTdmWbCfg = NULL,//10

+	.pVpTdmCfg = NULL,//11

+	.pMsg = {0},//12

+	.pMsgBuf = {0},//13

+	.vpThread = NULL,//14

+	.rcvDtmfThread = NULL,//15

+	.vpSemaphore = NULL,//16

+	.vpThreadQuitSema = NULL,//17

+	.vpLoopThread = NULL,//18

+	.vpLoopSemaphore = NULL,//19

+

+	.vpState = NULL,//

+//	{0}

+};

+

+

+#endif

+

+

 

 //for test whiteNoise

 #ifdef TEST_WHITE_NOISE

@@ -271,8 +359,8 @@
 ****************************************************************************/

 #ifdef CONFIG_VOICE_BUFFER_DRV  

 #ifdef _VBUFF_IN_MULTI_CORE

-#define RPMSG_CAP_ID 1

-

+//#define RPMSG_CAP_ID 1

+#if 0

 ZOSS_TIMER_ID s_voiceTimerId ;

 ZOSS_SEMAPHORE_ID s_voiceRdSema;

 ZOSS_SEMAPHORE_ID s_voiceWrSema;

@@ -283,9 +371,22 @@
 

 int vb_read_count = 0;

 int vb_write_count = 0;

+#else

+//define in hal_voicebuffer.c

+extern ZOSS_TIMER_ID s_voiceTimerId ;

+extern ZOSS_SEMAPHORE_ID s_voiceRdSema;

+extern ZOSS_SEMAPHORE_ID s_voiceWrSema;

 

+extern int timer_cb_count;

+extern int first_full_flag;

+extern int first_empty_flag;

 

-void voiceTimerCallBack(SINT32 para)

+extern int vb_read_count;

+extern int vb_write_count;

+

+#endif

+

+static void voiceTimerCallBack(SINT32 para)

 {

 	T_ZDrvRpMsg_Msg icp_pMsg = {0}; 

 	

@@ -316,22 +417,8 @@
 	

 //	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "voiceTimerCallBack timer=%u\n", cpu_clock(0)>>10);

 }

-#define MAX_BUF_SIZE	     640

-#define MAX_BUF_NUM        3

 

-

-enum{

-	UP_LINK,

-	DOWN_LINK	

-};

-

-struct voice_ring_buffer {

-	volatile uint read_pos;

-	volatile uint write_pos;

-	volatile char data[];

-

-};

-struct voice_ring_buffer *voice_buff[2] = {NULL,NULL};

+extern struct voice_ring_buffer *voice_buff[2];

 

 

 

@@ -460,10 +547,10 @@
 extern int  voicebuffer_dlqueue_write(void  *buf, unsigned int  size);

 extern void voice_inform_to_app(void);

 //static DECLARE_COMPLETION(s_voice_completion);

-ZOSS_TIMER_ID s_voiceTimerId ;

-ZOSS_SEMAPHORE_ID s_voiceRdSema;

-ZOSS_SEMAPHORE_ID s_voiceWrSema;

-void voiceTimerCallBack(SINT32 para)

+extern ZOSS_TIMER_ID s_voiceTimerId ;

+extern ZOSS_SEMAPHORE_ID s_voiceRdSema;

+extern ZOSS_SEMAPHORE_ID s_voiceWrSema;

+static void voiceTimerCallBack(SINT32 para)

 {

 //	complete_all(&s_voice_completion);

 	zOss_PutSemaphore(s_voiceWrSema);

@@ -476,7 +563,7 @@
 

 #endif

 

-SINT32 vp_rxsem_count_Init(void)

+static SINT32 vp_rxsem_count_Init(void)

 {

 	UINT32 i = 0;

 	UINT32 semCount = 0;

@@ -495,7 +582,7 @@
 	return DRV_SUCCESS;

 }

 

-SINT32 vp_txsem_count_Init(void)

+static SINT32 vp_txsem_count_Init(void)

 {

 	UINT32 i = 0;

 	UINT32 semCount = 0;

@@ -522,6 +609,7 @@
 #endif

 

 

+

 #ifdef ECALL_SUPPORT

 int eWrErr = 0;

 UINT8 e_reg_flag = 0;

@@ -533,6 +621,7 @@
 T_Ecall_State preEcallRxSta = 0;

 T_Ecall_State preEcallTxSta = 0;	

 

+

 //tx

 SINT32 rdsem_count_Init(T_Sem_Owner owner)

 {

@@ -706,7 +795,7 @@
 

 	e_startCount = 0;

     e_stopCount = 0;

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "ecall_Open  end!\n");

+	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "ecall_Open bufsize=%d end!\n",bufsize);

 

 	return DRV_SUCCESS;

 

@@ -758,7 +847,7 @@
 {

 	SINT32 ret = DRV_SUCCESS;

 

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "%s start e_startCount=%d \n",__FUNCTION__,e_startCount);

+	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "%s: start e_startCount=%d \n",__FUNCTION__,e_startCount);

 	if(g_voiceVar.ecallData.ecallSta == ECALL_ST_START)

 	{

 		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "ecall_Start repeat ecallSta=%d\n",g_voiceVar.ecallData.ecallSta);

@@ -785,7 +874,7 @@
 SINT32 ecall_Stop(VOID)

 {

 	SINT32  ret = DRV_SUCCESS;

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "%s start e_stopCount=%d \n",__FUNCTION__,e_stopCount);

+	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "%s: start e_stopCount=%d \n",__FUNCTION__,e_stopCount);

 	

 	if((g_voiceVar.ecallData.ecallSta == ECALL_ST_STOP)||(g_voiceVar.ecallData.ecallSta == ECALL_ST_CLOSE))

 	{

@@ -833,7 +922,7 @@
 	{						

 		if(dir == DIR_RX)

 		{

-			

+

 			preEcallRxSta = g_voiceVar.ecallData.ecallRxSta;

 			g_voiceVar.ecallData.ecallRxSta = ECALL_ST_RX_INUSE;

 			//zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "update_ecall_state rx state change to ecallRxSta = %d\n", g_voiceVar.ecallData.ecallRxSta);

@@ -964,9 +1053,15 @@
 	return DRV_SUCCESS;

 }

 

+

 SINT32 zDrvExtAudio_Open(T_ZDrvI2s_TransMode i2sTransMode)

 {

+

 	int ret = 0;

+	if (g_voiceVar.useVoiceBuffer == 1){ 

+		return ret;

+	}

+	

 #ifdef CONFIG_VOICE_BUFFER_DRV  

 #else

 	if (g_voiceVar.g_isUseTdm != 1)

@@ -984,6 +1079,9 @@
 SINT32 zDrvExtAudio_Reset()

 {

 	int ret = 0;

+	if (g_voiceVar.useVoiceBuffer == 1){ 

+		return ret;

+	}	

 #ifdef CONFIG_VOICE_BUFFER_DRV  

 #else	

 	if (g_voiceVar.g_isUseTdm != 1)

@@ -1000,6 +1098,9 @@
 SINT32 zDrvExtAudio_Close()

 {

 	int ret = 0;

+	if (g_voiceVar.useVoiceBuffer == 1){ 

+		return ret;

+	}	

 #ifdef CONFIG_VOICE_BUFFER_DRV  

 #else	

 	if (g_voiceVar.g_isUseTdm != 1)

@@ -1017,6 +1118,9 @@
 SINT32 zDrvExtAudio_Write_Prepare(T_ZDrvI2S_Cfg *i2sCfg, T_ZDrvTdm_Cfg *tdmCfg)

 {

 	int ret = 0;

+	if (g_voiceVar.useVoiceBuffer == 1){ 

+		return ret;

+	}	

 #ifdef CONFIG_VOICE_BUFFER_DRV  

 #else	

 	if (g_voiceVar.g_isUseTdm != 1)

@@ -1035,6 +1139,9 @@
                                 T_ZDrvTdm_Params *tdmParams, T_ZDrvTdm_Cfg *tdmCfg)

 {

 	int ret = 0;

+	if (g_voiceVar.useVoiceBuffer == 1){ 

+		return ret;

+	}	

 #ifdef CONFIG_VOICE_BUFFER_DRV  

 #else	

 	if (g_voiceVar.g_isUseTdm != 1)

@@ -1052,6 +1159,9 @@
                                    T_ZDrvTdm_Params *tdmParams, T_ZDrvTdm_Cfg *tdmCfg)

 {

 	int ret = 0;

+	if (g_voiceVar.useVoiceBuffer == 1){ 

+		return ret;

+	}	

 #ifdef CONFIG_VOICE_BUFFER_DRV  

 #else	

 	if (g_voiceVar.g_isUseTdm != 1)

@@ -1068,6 +1178,9 @@
 SINT32 zDrvExtAudio_Read_Prepare(T_ZDrvI2S_Cfg *i2sCfg, T_ZDrvTdm_Cfg *tdmCfg)

 {

 	int ret = 0;

+	if (g_voiceVar.useVoiceBuffer == 1){ 

+		return ret;

+	}	

 #ifdef CONFIG_VOICE_BUFFER_DRV  

 #else	

 	if (g_voiceVar.g_isUseTdm != 1)

@@ -1086,6 +1199,9 @@
                                T_ZDrvTdm_Params *tdmParams, T_ZDrvTdm_Cfg *tdmCfg)

 {

 	int ret = 0;

+	if (g_voiceVar.useVoiceBuffer == 1){ 

+		return ret;

+	}	

 #ifdef CONFIG_VOICE_BUFFER_DRV  

 #else	

 	if (g_voiceVar.g_isUseTdm != 1)

@@ -1103,6 +1219,9 @@
                                   T_ZDrvTdm_Params *tdmParams, T_ZDrvTdm_Cfg *tdmCfg)

 {

 	int ret = 0;

+	if (g_voiceVar.useVoiceBuffer == 1){ 

+		return ret;

+	}	

 #ifdef CONFIG_VOICE_BUFFER_DRV  

 #else	

 	if (g_voiceVar.g_isUseTdm != 1)

@@ -1119,6 +1238,9 @@
 SINT32 zDrvExtAudio_Write(const UINT8 *pBuf, UINT32 uiLen)

 {

 	int ret = 0;

+	if (g_voiceVar.useVoiceBuffer == 1){ 

+		return ret;

+	}	

 #ifdef CONFIG_VOICE_BUFFER_DRV  

 #else

 	if (g_voiceVar.g_isUseTdm != 1)

@@ -1136,6 +1258,9 @@
 SINT32 zDrvExtAudio_Read(const UINT8 **pBuf, UINT32 *uiLen)

 {

 	int ret = 0;

+	if (g_voiceVar.useVoiceBuffer == 1){ 

+		return ret;

+	}	

 #ifdef CONFIG_VOICE_BUFFER_DRV  	

 #else	

 	if (g_voiceVar.g_isUseTdm != 1)

@@ -1195,9 +1320,13 @@
 	return ret;

 }

 #endif

+

 SINT32 zDrvExtAudio_Write_Stop()

 {

 	int ret = 0;

+	if (g_voiceVar.useVoiceBuffer == 1){ 

+		return ret;

+	}	

 #ifdef CONFIG_VOICE_BUFFER_DRV  

 #else	

 	if (g_voiceVar.g_isUseTdm != 1)

@@ -1215,6 +1344,9 @@
 SINT32 zDrvExtAudio_Read_Stop()

 {

 	int ret = 0;

+	if (g_voiceVar.useVoiceBuffer == 1){ 

+		return ret;

+	}	

 #ifdef CONFIG_VOICE_BUFFER_DRV  

 #else	

 	if (g_voiceVar.g_isUseTdm != 1)

@@ -1232,6 +1364,9 @@
 SINT32 zDrvExtAudio_GetBuf(UINT8 **pBuf, UINT32 *uiLen)

 {

 	int ret = 0;

+	if (g_voiceVar.useVoiceBuffer == 1){ 

+		return ret;

+	}	

 #ifdef CONFIG_VOICE_BUFFER_DRV  	

 #else

 	if (g_voiceVar.g_isUseTdm != 1)

@@ -1263,6 +1398,9 @@
 SINT32 zDrvExtAudio_FreeBuf(UINT8 *pBuf)

 {

 	int ret = 0;

+	if (g_voiceVar.useVoiceBuffer == 1){ 

+		return ret;

+	}	

 #ifdef CONFIG_VOICE_BUFFER_DRV  

 #else		

 	if (g_voiceVar.g_isUseTdm != 1)

@@ -1279,6 +1417,10 @@
 

 void zDrvExtAudio_RlsAllSemaBeforeStop(void)

 {

+	if (g_voiceVar.useVoiceBuffer == 1){ 

+		return;

+	}

+

 #ifdef CONFIG_VOICE_BUFFER_DRV  

 #else		

 	if (g_voiceVar.g_isUseTdm == 1)

@@ -1296,6 +1438,10 @@
 

 void zDrvExtAudio_RxRlsSemaBeforeStop(void)

 {

+	if (g_voiceVar.useVoiceBuffer == 1){ 

+		return;

+	}

+

 #ifdef CONFIG_VOICE_BUFFER_DRV  

 #else		

 	if (g_voiceVar.g_isUseTdm == 1)

@@ -1311,6 +1457,10 @@
 

 void zDrvExtAudio_TxRlsSemaBeforeStop(void)

 {

+	if (g_voiceVar.useVoiceBuffer == 1){ 

+		return;

+	}

+

 #ifdef CONFIG_VOICE_BUFFER_DRV  

 #else		

 	if (g_voiceVar.g_isUseTdm == 1)

@@ -1595,7 +1745,19 @@
 

 	ext_aRdCount = 0;

 	ext_aRdFBufCount = 0;

+	

+	

 

+	if (g_voiceVar.useVoiceBuffer == 1)

+	{

+		ret = vp_Open_Vbuffer();		

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_Open_Vbuffer ret=%d!\n",ret);

+	}

+	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_Open_Vbuffer useVoiceBuffer=%d voiceBufferType=%d!\n",g_voiceVar.useVoiceBuffer,g_voiceVar.voiceBufferType);

+

+	

+

+	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_Open  end!\n");

 

 	return DRV_SUCCESS;

 

@@ -2282,7 +2444,7 @@
 		ret = ecall_Close();

 		if (ret != DRV_SUCCESS)

 		{

-		   zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "ecall_Open error,ret=%d", ret);

+		   zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "%s:ecall_Close error,ret=%d",__func__,ret);

 		}	

 		e_reg_flag = 0;

 	}

@@ -2305,6 +2467,12 @@
 	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "%s: timer_cb_count %d,first_full_flag %d,first_empty_flag %d,vb_read_count %d,vb_write_count %d!\n",__FUNCTION__,timer_cb_count,first_full_flag,first_empty_flag,vb_read_count,vb_write_count);

 #endif

 

+	if(g_voiceVar.useVoiceBuffer == 1)

+	{

+		ret = vp_Close_Vbuffer();

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_Close_Vbuffer ret=%d!\n",ret);

+	

+	}

 	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "%s: ext_aRdCount %d,ext_aRdFBufCount %d!\n",__FUNCTION__,ext_aRdCount,ext_aRdFBufCount);

 

 

@@ -2337,176 +2505,185 @@
 //	{

 //		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "is the i2s loopback mode");

 //	}

+	

+	if (g_voiceVar.useVoiceBuffer == 1)

+	{

+		ret = vp_VoiceI2sStart_Vbuffer();

+	}

+	else

+	{

+

 #ifdef  CONFIG_VOICE_BUFFER_DRV  	

-	ret = zDrvI2S_Read_Start(I2S_2, &s_speechState.i2sReadParam, s_vpState.pVpInnerI2sCfg);

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S2_Read_Start failed ret is %d .\n", ret);

-		return DRV_ERROR;

-	}

-	

-	zOss_StartTimer(s_voiceTimerId, 20, voiceTimerCallBack, 0);

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VoiceI2sStart VB zOss_StartTimer\n");

+		ret = zDrvI2S_Read_Start(I2S_2, &s_speechState.i2sReadParam, s_vpState.pVpInnerI2sCfg);

+		if (ret != DRV_SUCCESS)

+		{

+			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S2_Read_Start failed ret is %d .\n", ret);

+			return DRV_ERROR;

+		}

+		

+		zOss_StartTimer(s_voiceTimerId, 20, voiceTimerCallBack, 0);

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VoiceI2sStart VB zOss_StartTimer\n");

 

-	ret = zDrvI2S_Write_Start(I2S_2, &s_speechState.i2sWriteParam, s_vpState.pVpInnerI2sCfg);

+		ret = zDrvI2S_Write_Start(I2S_2, &s_speechState.i2sWriteParam, s_vpState.pVpInnerI2sCfg);

 

-	ret += zDrvI2S_GetBuf(I2S_2, &write_buf, &write_len);

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VoiceI2sStart error7:zDrvI2S_GetBuf I2S_2 ret=%d", ret);

-		return DRV_ERROR;

-	}

-	zOss_Memset(write_buf, 0, write_len);

-	ret = zDrvI2S_Write(I2S_2, write_buf, write_len);

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VoiceI2sStart error12:zDrvI2S_Write I2S_2 ret=%d", ret);

-	}

-	

-	ret += zDrvI2S_GetBuf(I2S_2, &write_buf, &write_len);

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VoiceI2sStart error13:zDrvI2S_GetBuf I2S_2 ret=%d", ret);

-		return DRV_ERROR;

-	}

-	zOss_Memset(write_buf, 0, write_len);

-	ret = zDrvI2S_Write(I2S_2, write_buf, write_len);

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VoiceI2sStart error14:zDrvI2S_Write I2S_2 ret=%d", ret);

-	}

+		ret += zDrvI2S_GetBuf(I2S_2, &write_buf, &write_len);

+		if (ret != DRV_SUCCESS)

+		{

+			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VoiceI2sStart error7:zDrvI2S_GetBuf I2S_2 ret=%d", ret);

+			return DRV_ERROR;

+		}

+		zOss_Memset(write_buf, 0, write_len);

+		ret = zDrvI2S_Write(I2S_2, write_buf, write_len);

+		if (ret != DRV_SUCCESS)

+		{

+			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VoiceI2sStart error12:zDrvI2S_Write I2S_2 ret=%d", ret);

+		}

+		

+		ret += zDrvI2S_GetBuf(I2S_2, &write_buf, &write_len);

+		if (ret != DRV_SUCCESS)

+		{

+			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VoiceI2sStart error13:zDrvI2S_GetBuf I2S_2 ret=%d", ret);

+			return DRV_ERROR;

+		}

+		zOss_Memset(write_buf, 0, write_len);

+		ret = zDrvI2S_Write(I2S_2, write_buf, write_len);

+		if (ret != DRV_SUCCESS)

+		{

+			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VoiceI2sStart error14:zDrvI2S_Write I2S_2 ret=%d", ret);

+		}

 #ifdef _VBUFF_IN_MULTI_CORE

-	voice_buffer_write(s_speechState.pVpTempRxOutPutBuffer, s_speechState.totalFrameBufSize);

+		voice_buffer_write(s_speechState.pVpTempRxOutPutBuffer, s_speechState.totalFrameBufSize);

 

 #else

-	voicebuffer_dlqueue_write(s_speechState.pVpTempRxOutPutBuffer, s_speechState.totalFrameBufSize);

+		voicebuffer_dlqueue_write(s_speechState.pVpTempRxOutPutBuffer, s_speechState.totalFrameBufSize);

 #endif

 #else	

-	if (g_voiceVar.isUseSlicCodec == 1)

-	{

-

-		if (s_speechState.i2sIsRstFlag == FALSE)

+		if (g_voiceVar.isUseSlicCodec == 1)

 		{

-			ret = zDrvExtAudio_Reset();

-			if (ret != DRV_SUCCESS)

+

+			if (s_speechState.i2sIsRstFlag == FALSE)

 			{

-				zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VoiceI2sStart zDrvExtAudio_Reset() err ret=%d ", ret);

-				return DRV_ERROR;

+				ret = zDrvExtAudio_Reset();

+				if (ret != DRV_SUCCESS)

+				{

+					zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VoiceI2sStart zDrvExtAudio_Reset() err ret=%d ", ret);

+					return DRV_ERROR;

+				}

+				s_speechState.i2sIsRstFlag = TRUE;

 			}

-			s_speechState.i2sIsRstFlag = TRUE;

+

 		}

 

-	}

+		ret = zDrvI2S_Read_Start(I2S_2, &s_speechState.i2sReadParam, s_vpState.pVpInnerI2sCfg);

+		if (ret != DRV_SUCCESS)

+		{

+			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S2_Read_Start failed ret is %d .\n", ret);

+			return DRV_ERROR;

+		}

 

-	ret = zDrvI2S_Read_Start(I2S_2, &s_speechState.i2sReadParam, s_vpState.pVpInnerI2sCfg);

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S2_Read_Start failed ret is %d .\n", ret);

-		return DRV_ERROR;

-	}

+		ret += zDrvExtAudio_Read_Start(&s_speechState.i2sReadParam, s_speechState.pVpI2sCfg, &s_vpTdmReadParam, s_vpState.pVpTdmCfg);

 

-	ret += zDrvExtAudio_Read_Start(&s_speechState.i2sReadParam, s_speechState.pVpI2sCfg, &s_vpTdmReadParam, s_vpState.pVpTdmCfg);

+		if (ret != DRV_SUCCESS)

+		{

+			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S1_Read_Start failed ret is %d .\n", ret);

+			zDrvI2S_Read_Stop(I2S_2);

+			return DRV_ERROR;

+		}

 

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S1_Read_Start failed ret is %d .\n", ret);

-		zDrvI2S_Read_Stop(I2S_2);

-		return DRV_ERROR;

-	}

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VoiceI2sStart zDrvI2S_Read_Start  ret=%d", ret);

 

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VoiceI2sStart zDrvI2S_Read_Start  ret=%d", ret);

+		ret = zDrvI2S_Read(I2S_2, &read_buf, &read_len);

+		if (ret != DRV_SUCCESS)

+		{

+			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VoiceI2sStart error:zDrvI2S_Read I2S_2 ret=%d", ret);

+			return DRV_ERROR;

+		}

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VoiceI2sStart zDrvI2S_Read I2S_2 ret=%d", ret);

 

-	ret = zDrvI2S_Read(I2S_2, &read_buf, &read_len);

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VoiceI2sStart error:zDrvI2S_Read I2S_2 ret=%d", ret);

-		return DRV_ERROR;

-	}

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VoiceI2sStart zDrvI2S_Read I2S_2 ret=%d", ret);

+		ret = zDrvExtAudio_Read(&read_buf, &read_len);

+		if (ret != DRV_SUCCESS)

+		{

+			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VoiceI2sStart error:zDrvI2S_Read  ret=%d", ret);

+			return DRV_ERROR;

+		}

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VoiceI2sStart zDrvI2S_Read I2S_1 ret=%d", ret);

 

-	ret = zDrvExtAudio_Read(&read_buf, &read_len);

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VoiceI2sStart error:zDrvI2S_Read  ret=%d", ret);

-		return DRV_ERROR;

-	}

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VoiceI2sStart zDrvI2S_Read I2S_1 ret=%d", ret);

+		ret += zDrvExtAudio_Read_Stop();

+		ret += zDrvI2S_Read_Stop(I2S_2);

+		if (ret != DRV_SUCCESS)

+		{

+			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VoiceI2sStart error:zDrvI2S_Read  ret=%d", ret);

+			return DRV_ERROR;

+		}

 

-	ret += zDrvExtAudio_Read_Stop();

-	ret += zDrvI2S_Read_Stop(I2S_2);

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VoiceI2sStart error:zDrvI2S_Read  ret=%d", ret);

-		return DRV_ERROR;

-	}

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VoiceI2sStart first read/write stop ret=%d", ret);

 

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VoiceI2sStart first read/write stop ret=%d", ret);

+		ret += zDrvExtAudio_Read_Start(&s_speechState.i2sReadParam, s_speechState.pVpI2sCfg, &s_vpTdmReadParam, s_vpState.pVpTdmCfg);

 

-	ret += zDrvExtAudio_Read_Start(&s_speechState.i2sReadParam, s_speechState.pVpI2sCfg, &s_vpTdmReadParam, s_vpState.pVpTdmCfg);

+		ret += zDrvI2S_Read_Start(I2S_2, &s_speechState.i2sReadParam, s_vpState.pVpInnerI2sCfg);

 

-	ret += zDrvI2S_Read_Start(I2S_2, &s_speechState.i2sReadParam, s_vpState.pVpInnerI2sCfg);

+		ret += zDrvExtAudio_Write_Start(&s_speechState.i2sWriteParam, s_speechState.pVpI2sCfg, &s_VpTdmWriteParam, s_vpState.pVpTdmCfg);

+		if (ret != DRV_SUCCESS)

+		{

+			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VoiceI2sStart error4:zDrvI2S_Write_Start  ret=%d", ret);

+			return DRV_ERROR;

+		}

+		ret += zDrvExtAudio_GetBuf(&write_buf, &write_len);

+		if (ret != DRV_SUCCESS)

+		{

+			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VoiceI2sStart error5:zDrvI2S_GetBuf  ret=%d", ret);

+			return DRV_ERROR;

+		}

 

-	ret += zDrvExtAudio_Write_Start(&s_speechState.i2sWriteParam, s_speechState.pVpI2sCfg, &s_VpTdmWriteParam, s_vpState.pVpTdmCfg);

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VoiceI2sStart error4:zDrvI2S_Write_Start  ret=%d", ret);

-		return DRV_ERROR;

-	}

-	ret += zDrvExtAudio_GetBuf(&write_buf, &write_len);

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VoiceI2sStart error5:zDrvI2S_GetBuf  ret=%d", ret);

-		return DRV_ERROR;

-	}

-

-	zOss_Memset(write_buf, 0, write_len);

-	ret += zDrvExtAudio_Write(write_buf, write_len);

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VoiceI2sStart error6:zDrvI2S_Write  ret=%d", ret);

-		return DRV_ERROR;

-	}

-	ret = zDrvI2S_Write_Start(I2S_2, &s_speechState.i2sWriteParam, s_vpState.pVpInnerI2sCfg);

-	ret += zDrvI2S_GetBuf(I2S_2, &write_buf, &write_len);

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VoiceI2sStart error7:zDrvI2S_GetBuf I2S_2 ret=%d", ret);

-		return DRV_ERROR;

-	}

-	zOss_Memset(write_buf, 0, write_len);

-	ret = zDrvI2S_Write(I2S_2, write_buf, write_len);

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VoiceI2sStart error8:zDrvI2S_Write I2S_2 ret=%d", ret);

-		return DRV_ERROR;

-	}

-	ret += zDrvExtAudio_GetBuf(&write_buf, &write_len);

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VoiceI2sStart error9:zDrvI2S_GetBuf  ret=%d", ret);

-		return DRV_ERROR;

-	}

-	zOss_Memset(write_buf, 0, write_len);

-	ret += zDrvExtAudio_Write(write_buf, write_len);

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VoiceI2sStart error10:zDrvI2S_Write  ret=%d", ret);

-		return DRV_ERROR;

-	}

-	ret += zDrvI2S_GetBuf(I2S_2, &write_buf, &write_len);

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VoiceI2sStart error11:zDrvI2S_GetBuf I2S_2 ret=%d", ret);

-		return DRV_ERROR;

-	}

-	zOss_Memset(write_buf, 0, write_len);

-	ret = zDrvI2S_Write(I2S_2, write_buf, write_len);

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VoiceI2sStart error12:zDrvI2S_Write I2S_2 ret=%d", ret);

-	}

+		zOss_Memset(write_buf, 0, write_len);

+		ret += zDrvExtAudio_Write(write_buf, write_len);

+		if (ret != DRV_SUCCESS)

+		{

+			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VoiceI2sStart error6:zDrvI2S_Write  ret=%d", ret);

+			return DRV_ERROR;

+		}

+		ret = zDrvI2S_Write_Start(I2S_2, &s_speechState.i2sWriteParam, s_vpState.pVpInnerI2sCfg);

+		ret += zDrvI2S_GetBuf(I2S_2, &write_buf, &write_len);

+		if (ret != DRV_SUCCESS)

+		{

+			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VoiceI2sStart error7:zDrvI2S_GetBuf I2S_2 ret=%d", ret);

+			return DRV_ERROR;

+		}

+		zOss_Memset(write_buf, 0, write_len);

+		ret = zDrvI2S_Write(I2S_2, write_buf, write_len);

+		if (ret != DRV_SUCCESS)

+		{

+			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VoiceI2sStart error8:zDrvI2S_Write I2S_2 ret=%d", ret);

+			return DRV_ERROR;

+		}

+		ret += zDrvExtAudio_GetBuf(&write_buf, &write_len);

+		if (ret != DRV_SUCCESS)

+		{

+			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VoiceI2sStart error9:zDrvI2S_GetBuf  ret=%d", ret);

+			return DRV_ERROR;

+		}

+		zOss_Memset(write_buf, 0, write_len);

+		ret += zDrvExtAudio_Write(write_buf, write_len);

+		if (ret != DRV_SUCCESS)

+		{

+			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VoiceI2sStart error10:zDrvI2S_Write  ret=%d", ret);

+			return DRV_ERROR;

+		}

+		ret += zDrvI2S_GetBuf(I2S_2, &write_buf, &write_len);

+		if (ret != DRV_SUCCESS)

+		{

+			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VoiceI2sStart error11:zDrvI2S_GetBuf I2S_2 ret=%d", ret);

+			return DRV_ERROR;

+		}

+		zOss_Memset(write_buf, 0, write_len);

+		ret = zDrvI2S_Write(I2S_2, write_buf, write_len);

+		if (ret != DRV_SUCCESS)

+		{

+			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VoiceI2sStart error12:zDrvI2S_Write I2S_2 ret=%d", ret);

+		}

 

 #endif

+	}

 #ifdef ECALL_SUPPORT

 	if((g_voiceVar.audio_ctrlFlag.isUseEcall == 1)&&(e_reg_flag == 1))

 	{

@@ -2657,18 +2834,27 @@
 	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_VoiceWorkStop call voice_ToneMixerStop !\n");

 

 	g_voiceVar.vpI2sStatus = VP_I2S_OPEN;

-#ifdef  CONFIG_VOICE_BUFFER_DRV 

-	//complete_all(&s_voice_completion);

-	zOss_PutSemaphore(s_voiceRdSema);

-	zOss_PutSemaphore(s_voiceWrSema);

-	zOss_StopTimer(s_voiceTimerId);

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_VoiceWorkStop zOss_StopTimer\n");

-#else

-	//zDrvI2s_RxRlsSemaBeforeStop(I2S_1);

-	//zDrvI2s_TxRlsSemaBeforeStop(I2S_1);

-	zDrvExtAudio_RlsAllSemaBeforeStop();

-#endif

+

 	

+

+	if (g_voiceVar.useVoiceBuffer == 1)

+	{

+		ret = zDrvVp_VoiceWorkStop_Vbuffer();

+	}

+	else

+	{	

+#ifdef  CONFIG_VOICE_BUFFER_DRV 

+		//complete_all(&s_voice_completion);

+		zOss_PutSemaphore(s_voiceRdSema);

+		zOss_PutSemaphore(s_voiceWrSema);

+		zOss_StopTimer(s_voiceTimerId);

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_VoiceWorkStop zOss_StopTimer\n");

+#else

+		//zDrvI2s_RxRlsSemaBeforeStop(I2S_1);

+		//zDrvI2s_TxRlsSemaBeforeStop(I2S_1);

+		zDrvExtAudio_RlsAllSemaBeforeStop();

+#endif

+	}	

 	zDrvI2s_RxRlsSemaBeforeStop(I2S_2);

 	zDrvI2s_TxRlsSemaBeforeStop(I2S_2);

 

@@ -2736,10 +2922,19 @@
 	}

 

 	g_voiceVar.vpI2sStatus = VP_I2S_INUSE;

+	

+	

+	if (g_voiceVar.useVoiceBuffer == 1)

+	{

+		ret = vp_VolteReadStart_Vbuffer();

+	}

+	else

+	{	

 #ifdef  CONFIG_VOICE_BUFFER_DRV

-	zOss_StartTimer(s_voiceTimerId, 20, voiceTimerCallBack, 0);

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VolteReadStart zOss_StartTimer start\n");

-#endif	

+		zOss_StartTimer(s_voiceTimerId, 20, voiceTimerCallBack, 0);

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VolteReadStart zOss_StartTimer start\n");

+#endif

+	}

 	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO,  "vp_VolteReadStart \n");

 

 	return DRV_SUCCESS;

@@ -2748,6 +2943,15 @@
 SINT32 vp_VolteReadStop(VOID)

 {

 	SINT32  ret = DRV_SUCCESS;

+

+	

+	if (g_voiceVar.useVoiceBuffer == 1)

+	{

+		ret = vp_VolteReadStop_Vbuffer();

+	    return ret;

+	}

+

+	

 #ifdef  CONFIG_VOICE_BUFFER_DRV  

 	zOss_PutSemaphore(s_voiceRdSema);

 #else

@@ -2844,46 +3048,54 @@
 	}

 

 	g_voiceVar.vpI2sStatus = VP_I2S_INUSE;

+	

+	if (g_voiceVar.useVoiceBuffer == 1)

+	{

+		vp_VolteWriteStart_Vbuffer();	

+	}

+	else

+	{

 #ifdef  CONFIG_VOICE_BUFFER_DRV  

 #ifdef _VBUFF_IN_MULTI_CORE

-	voice_buffer_write(s_speechState.pVpTempRxOutPutBuffer, s_speechState.totalFrameBufSize);

+		voice_buffer_write(s_speechState.pVpTempRxOutPutBuffer, s_speechState.totalFrameBufSize);

 

 #else

-	voicebuffer_dlqueue_write(s_speechState.pVpTempRxOutPutBuffer, s_speechState.totalFrameBufSize);

+		voicebuffer_dlqueue_write(s_speechState.pVpTempRxOutPutBuffer, s_speechState.totalFrameBufSize);

 #endif

 #else

-	ret = zDrvExtAudio_GetBuf(&write_buf, &write_len);

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VolteWriteStart error1:zDrvI2S_GetBuf I2S_1 ret=%d", ret);

-		zDrvExtAudio_Write_Stop();

-		return DRV_ERROR;

-	}

-	zOss_Memset(write_buf, 0, write_len);

-	ret = zDrvExtAudio_Write(write_buf, write_len);

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VolteWriteStart error2:zDrvI2S_Write I2S_1 ret=%d", ret);

-		zDrvExtAudio_Write_Stop();

-		return DRV_ERROR;

-	}

-	ret = zDrvExtAudio_GetBuf(&write_buf, &write_len);

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VolteWriteStart error3:zDrvI2S_GetBuf I2S_1 ret=%d", ret);

-		zDrvExtAudio_Write_Stop();

-		return DRV_ERROR;

-	}

-	zOss_Memset(write_buf, 0, write_len);

-	ret = zDrvExtAudio_Write(write_buf, write_len);

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VolteWriteStart error4:zDrvI2S_Write I2S_1 ret=%d", ret);

-		zDrvExtAudio_Write_Stop();

-		return DRV_ERROR;

-	}

+		ret = zDrvExtAudio_GetBuf(&write_buf, &write_len);

+		if (ret != DRV_SUCCESS)

+		{

+			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VolteWriteStart error1:zDrvI2S_GetBuf I2S_1 ret=%d", ret);

+			zDrvExtAudio_Write_Stop();

+			return DRV_ERROR;

+		}

+		zOss_Memset(write_buf, 0, write_len);

+		ret = zDrvExtAudio_Write(write_buf, write_len);

+		if (ret != DRV_SUCCESS)

+		{

+			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VolteWriteStart error2:zDrvI2S_Write I2S_1 ret=%d", ret);

+			zDrvExtAudio_Write_Stop();

+			return DRV_ERROR;

+		}

+		ret = zDrvExtAudio_GetBuf(&write_buf, &write_len);

+		if (ret != DRV_SUCCESS)

+		{

+			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VolteWriteStart error3:zDrvI2S_GetBuf I2S_1 ret=%d", ret);

+			zDrvExtAudio_Write_Stop();

+			return DRV_ERROR;

+		}

+		zOss_Memset(write_buf, 0, write_len);

+		ret = zDrvExtAudio_Write(write_buf, write_len);

+		if (ret != DRV_SUCCESS)

+		{

+			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VolteWriteStart error4:zDrvI2S_Write I2S_1 ret=%d", ret);

+			zDrvExtAudio_Write_Stop();

+			return DRV_ERROR;

+		}

 #endif

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO,  "vp_VolteWriteStart \n");

+	}

+	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO,  "vp_VolteWriteStart end\n");

 

 	return DRV_SUCCESS;

 }

@@ -2891,6 +3103,13 @@
 SINT32 vp_VolteWriteStop(VOID)

 {

 	SINT32  ret = DRV_SUCCESS;

+	if (g_voiceVar.useVoiceBuffer == 1)

+	{

+		ret = vp_VolteWriteStop_Vbuffer();

+	    return ret;

+	}

+

+

 

 #ifdef  CONFIG_VOICE_BUFFER_DRV  

 	//complete_all(&s_voice_completion);

@@ -2961,6 +3180,11 @@
 	//UINT8 *pVoiceTempBuf = s_voiceTempBuffer;

 #endif

 

+	if (g_voiceVar.useVoiceBuffer == 1)

+	{

+		ret = vp_WriteDataToCodec_Vbuffer(pBuf, count);

+	    return ret;

+	}

 

 

 	if (pBuf == NULL)

@@ -3285,6 +3509,14 @@
 	UINT8 *ptemp8bit = NULL;

 #endif

 

+	if (g_voiceVar.useVoiceBuffer == 1)

+	{

+		ret = vp_ReadDataFromCodec_Vbuffer(pBuf, count);

+	    return ret;

+	}

+

+

+

 	if (pBuf == NULL)

 	{

 		return DRV_ERR_INVALID_PARAM;

@@ -3313,6 +3545,8 @@
 //	wait_for_completion_timeout(&s_voice_completion, 60);

 	zOss_GetSemaphore(s_voiceRdSema,  60);

 	#ifdef _VBUFF_IN_MULTI_CORE

+

+	

 	voice_buffer_read(s_speechState.pVpTempTxInBuffer,  s_speechState.totalFrameBufSize);

 

 	#else

@@ -3911,11 +4145,14 @@
 

 SINT32 vp_CreateThreadSemaph(VOID)

 {

+	SINT32 ret = 0;

+

 	s_vpState.vpSemaphore = zOss_CreateSemaphore("VpI2sReadWriteSemaphore", 0);

 #ifdef _USE_WEBRTC_AUD

 	s_vpState.vpThread = zOss_CreateThread("vp_DataProcessThreadEntry", vp_DataProcessThreadEntry, 0, 8192, 15, 0, 1);

 #else

-	s_vpState.vpThread = zOss_CreateThread("vp_DataProcessThreadEntry", vp_DataProcessThreadEntry, 0, 1024, 15, 0, 1);

+	//s_vpState.vpThread = zOss_CreateThread("vp_DataProcessThreadEntry", vp_DataProcessThreadEntry, 0, 1024, 15, 0, 1);

+	s_vpState.vpThread = zOss_CreateThread("vp_DataProcessThreadEntry", vp_DataProcessThreadEntry, 0, 8192, 15, 0, 1);	

 #endif

 

 #ifdef  _OS_TOS

@@ -3937,6 +4174,9 @@
 		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "create vp Thread sem err s_vpState.vpThread=%p,s_vpState.vpSemaphore=%p !\r\n", s_vpState.vpThread, s_vpState.vpSemaphore);

 		return DRV_ERROR;

 	}

+

+

+

 #ifdef CONFIG_VOICE_BUFFER_DRV  	

 //	init_completion(&s_voice_completion);

 	s_voiceRdSema = zOss_CreateSemaphore("voice_rx_sem", 0);

@@ -3959,50 +4199,57 @@
 		return DRV_ERROR;

 	}

 #ifdef _VBUFF_IN_MULTI_CORE

-		SINT32 ret = 0;

+	//SINT32 ret = 0;

 

-		//ret = zDrvRpMsg_CreateChannel(IPC_MSG_ACTOR_A9,channel_41,0x10);

-		ret = zDrvRpMsg_CreateChannel_Cap(RPMSG_CAP_ID,channel_41,0x10);

+	//ret = zDrvRpMsg_CreateChannel(IPC_MSG_ACTOR_A9,channel_41,0x10);

+	ret = zDrvRpMsg_CreateChannel_Cap(RPMSG_CAP_ID,channel_41,0x10);

 

-		if(DRV_SUCCESS != ret) {

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "create rpmsg err(%d) \n",ret);

-			return DRV_ERROR;

-		}

+	if(DRV_SUCCESS != ret) {

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "create rpmsg err(%d) \n",ret);

+		return DRV_ERROR;

+	}

+	

+	volatile T_ZDrvRpMsg_Msg icp_pMsg = {0}; 

+	volatile unsigned int rpMsgBuf[2] = {0,0}; 

+	//printk( "vir_buf1:0x%x, vir_buf2:0x%x, phy_buf1:0x%x, phy_buf2:0x%x,\n",voice_buff[0],voice_buff[1],rpMsgBuf[0],rpMsgBuf[1]);

+	icp_pMsg.actorID = RPMSG_CAP_ID;

+	icp_pMsg.chID = channel_41;

+	icp_pMsg.flag &= ~RPMSG_READ_POLL;

+	icp_pMsg.buf = rpMsgBuf;

+	icp_pMsg.len = 8;

+	ret = zDrvRpMsg_Read_Cap(&icp_pMsg);

+	if(ret <= 0){

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "voice buffer  rpmsg addr read  fail,ret=%d \n",ret);

+		zOss_Printf(SUBMDL_HAL, PRINT_LEVEL_NORMAL, "ps voice buffer  rpmsg addr read  fail,ret=%d \n",ret);

 		

-		volatile T_ZDrvRpMsg_Msg icp_pMsg = {0}; 

-		volatile unsigned int rpMsgBuf[2] = {0,0}; 

-		//printk( "vir_buf1:0x%x, vir_buf2:0x%x, phy_buf1:0x%x, phy_buf2:0x%x,\n",voice_buff[0],voice_buff[1],rpMsgBuf[0],rpMsgBuf[1]);

-		icp_pMsg.actorID = RPMSG_CAP_ID;

-		icp_pMsg.chID = channel_41;

-		icp_pMsg.flag &= ~RPMSG_READ_POLL;

-		icp_pMsg.buf = rpMsgBuf;

-		icp_pMsg.len = 8;

-		ret = zDrvRpMsg_Read_Cap(&icp_pMsg);

-		if(ret <= 0){

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "voice buffer  rpmsg addr read  fail,ret=%d \n",ret);

-			zOss_Printf(SUBMDL_HAL, PRINT_LEVEL_NORMAL, "ps voice buffer  rpmsg addr read  fail,ret=%d \n",ret);

-			

 

-		}

-		else{

-			#if 0

+	}

+	else{

+		#if 0

 

-			voice_buff[UP_LINK] = (struct voice_ring_buffer *)(rpMsgBuf[0]);

-			voice_buff[DOWN_LINK] = (struct voice_ring_buffer *)(rpMsgBuf[1]);	

-			#else

+		voice_buff[UP_LINK] = (struct voice_ring_buffer *)(rpMsgBuf[0]);

+		voice_buff[DOWN_LINK] = (struct voice_ring_buffer *)(rpMsgBuf[1]);	

+		#else

 

-			voice_buff[UP_LINK] = (struct voice_ring_buffer *)ioremap_wc(rpMsgBuf[0], (sizeof(struct voice_ring_buffer) + MAX_BUF_SIZE*MAX_BUF_NUM));

-			voice_buff[DOWN_LINK] = (struct voice_ring_buffer *)ioremap_wc(rpMsgBuf[1],(sizeof(struct voice_ring_buffer) + MAX_BUF_SIZE*MAX_BUF_NUM));	

-			#endif

-	

-			zOss_Printf(SUBMDL_HAL, PRINT_LEVEL_NORMAL, "ps rpmsg voice buffer addr,up vir buf=0x%x,  down vir buf=0x%x ,up phy buf=0x%x,  down phy buf=0x%x,size=%d \n" \

+		voice_buff[UP_LINK] = (struct voice_ring_buffer *)ioremap_wc(rpMsgBuf[0], (sizeof(struct voice_ring_buffer) + MAX_BUF_SIZE*MAX_BUF_NUM));

+		voice_buff[DOWN_LINK] = (struct voice_ring_buffer *)ioremap_wc(rpMsgBuf[1],(sizeof(struct voice_ring_buffer) + MAX_BUF_SIZE*MAX_BUF_NUM));	

+		#endif

+

+		zOss_Printf(SUBMDL_HAL, PRINT_LEVEL_NORMAL, "ps rpmsg voice buffer addr,up vir buf=0x%x,  down vir buf=0x%x ,up phy buf=0x%x,  down phy buf=0x%x,size=%d \n" \

+		,voice_buff[0],voice_buff[1],rpMsgBuf[0],rpMsgBuf[1],(sizeof(struct voice_ring_buffer) + MAX_BUF_SIZE*MAX_BUF_NUM));

+		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "voice buffer addr,up vir buf=0x%x,  down vir buf=0x%x ,up phy buf=0x%x,  down phy buf=0x%x,size=%d \n" \

 			,voice_buff[0],voice_buff[1],rpMsgBuf[0],rpMsgBuf[1],(sizeof(struct voice_ring_buffer) + MAX_BUF_SIZE*MAX_BUF_NUM));

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "voice buffer addr,up vir buf=0x%x,  down vir buf=0x%x ,up phy buf=0x%x,  down phy buf=0x%x,size=%d \n" \

-				,voice_buff[0],voice_buff[1],rpMsgBuf[0],rpMsgBuf[1],(sizeof(struct voice_ring_buffer) + MAX_BUF_SIZE*MAX_BUF_NUM));

-		}

+	}

 #endif

+

+#else

+    //flag ctrl voicebuffer func

+	vp_CreateThreadSemaph_Vbuffer();

+

+

 #endif

-	

+

+

 	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_CreateThreadSemaph success. \r\n");

 	return DRV_SUCCESS;

 }

diff --git a/cp/ps/modem/com/src/appstart/inc/version_number.h b/cp/ps/modem/com/src/appstart/inc/version_number.h
index 072f131..28fa775 100755
--- a/cp/ps/modem/com/src/appstart/inc/version_number.h
+++ b/cp/ps/modem/com/src/appstart/inc/version_number.h
@@ -1,9 +1,9 @@
 #if defined _CHIP_ZX297520
-#define VERSION_NUMBER "7520SCV2.01.01.02P56U06"
+#define VERSION_NUMBER "7520SCV2.01.01.02P56U08"
 #endif
 #if defined _CHIP_ZX297520V2
-#define VERSION_NUMBER "7520V2SCV2.01.01.02P56U06"
+#define VERSION_NUMBER "7520V2SCV2.01.01.02P56U08"
 #endif
 #if defined _CHIP_ZX297520V3
-#define VERSION_NUMBER "7520V3SCV2.01.01.02P56U06"
+#define VERSION_NUMBER "7520V3SCV2.01.01.02P56U08"
 #endif
diff --git a/cp/ps/modem/ps/inc/apuiccint.h b/cp/ps/modem/ps/inc/apuiccint.h
index 57d364f..6d07534 100755
--- a/cp/ps/modem/ps/inc/apuiccint.h
+++ b/cp/ps/modem/ps/inc/apuiccint.h
@@ -1614,6 +1614,11 @@
 

 #define    Z_APUICC_EID_LEN            (BYTE)10  

 

+#define Z_UICC_CARD_READY             (BYTE)0

+#define Z_UICC_CARD_PWROFF            (BYTE)1

+#define Z_UICC_CARD_REMOVE            (BYTE)2

+#define Z_UICC_CARD_ERROR             (BYTE)3

+

 /**************************************************************************

 *                         È«¾ÖÊý¾ÝÀàÐͶ¨Òå                                *

 **************************************************************************/

diff --git a/cp/ps/modem/ps/inc/atipscom.h b/cp/ps/modem/ps/inc/atipscom.h
index 72560ba..19bf907 100755
--- a/cp/ps/modem/ps/inc/atipscom.h
+++ b/cp/ps/modem/ps/inc/atipscom.h
@@ -429,6 +429,15 @@
 #define Z_DEV_NV_RAT_VERSION_GSM_PRIORITY                  (BYTE)3

 #define Z_DEV_NV_RAT_VERSION_DEFAULT                       (BYTE)4

 

+/*************************CEER¼Ç¼ģ¿éÃû*******************/

+#define Z_CEER_MM_ID                (BYTE)0

+#define Z_CEER_SM_ID                (BYTE)1

+#define Z_CEER_UICCMNG_ID           (BYTE)2

+#define Z_CEER_ATI_ID               (BYTE)3

+#define Z_CEER_CC_ID               (BYTE)4

+#define Z_CEER_SMS_ID               (BYTE)5

+#define Z_CEER_SS_ID               (BYTE)6

+

 /*V2-V3Ãû×Ö¼æÈÝend*/

 #define Z_SUBMDL_NUM                                      (BYTE)((SUBMDL_PSEND - SUBMDL_PSBASE) + 1)

 

diff --git a/cp/ps/modem/ps/inc/atipsint.h b/cp/ps/modem/ps/inc/atipsint.h
index 5a79eba..90aac9e 100755
--- a/cp/ps/modem/ps/inc/atipsint.h
+++ b/cp/ps/modem/ps/inc/atipsint.h
@@ -258,8 +258,14 @@
 #define  Z_ATIUMM_MsgNormalWithNewCell_Err          (BYTE)180    //retry upon entry into a new cell

 #define  Z_ATIUMM_UeSecurityCapaMismatch            (BYTE)181    //UE security capabilities mismatch

 #define  Z_ATIUMM_Securitymoderejected              (BYTE)182    //Security mode rejected, unspecified

-#define  Z_ATIUMM_TemperatureStart                    (BYTE)183  //οؿªÊ¼

-#define  Z_ATIUMM_TemperatureStop                    (BYTE)184  //οؽáÊø

+#define  Z_ATIUMM_TemperatureStart                  (BYTE)183  //οؿªÊ¼

+#define  Z_ATIUMM_TemperatureStop                   (BYTE)184  //οؽáÊø

+#define  Z_ATIUMM_GsmRfOnFail                       (BYTE)190  //GSM¿ªÉäÆµÊ§°Ü

+#define  Z_ATIUMM_GsmRfOffFail                      (BYTE)191  //GSM¹ØÉäÆµÊ§°Ü

+#define  Z_ATIUMM_WRfOnFail                         (BYTE)192  //W¿ªÉäÆµÊ§°Ü

+#define  Z_ATIUMM_WRfOffFail                        (BYTE)193  //W¹ØÉäÆµÊ§°Ü

+#define  Z_ATIUMM_LteRfOnFail                       (BYTE)194  //LTE¿ªÉäÆµÊ§°Ü

+#define  Z_ATIUMM_LteRfOffFail                      (BYTE)195  //LTE¹ØÉäÆµÊ§°Ü

 

 /*============MMÄ£¿éCEER´íÎóÂë=============================== */

 #define Z_ATIMM_ImsiUnknownInHlr           (BYTE)2 //IMSI unknown in HLR

@@ -315,7 +321,17 @@
 #define Z_ATIMM_MsgNotCompatProtocolState             (BYTE)101 //Message not compatible with protocol state

 #define Z_ATIMM_ProtocolError                         (BYTE)111 //Protocol error, unspecified

 

-#define Z_ATIMM_UnspecifiedFail           (BYTE)120 //Unspecified Failure

+#define Z_ATIMM_UnspecifiedFail                       (BYTE)120 //Unspecified Failure

+#define Z_ATIMM_RrcFailUnspecifiedFail                (BYTE)121 //RRCÁ´Â·Ê§°Ü£¬·ÇÌØÊâÔ­Òò

+

+#define Z_ATIMM_T3210Exipre                        (BYTE)123 //3210³¬Ê±

+#define Z_ATIMM_T3213Exipre                        (BYTE)123 //3213³¬Ê±

+#define Z_ATIMM_T3214_16Exipre                     (BYTE)124 //3214/3216³¬Ê±

+#define Z_ATIMM_T3220Exipre                        (BYTE)125 //3220³¬Ê±

+#define Z_ATIMM_T3230Exipre                        (BYTE)126 //3230³¬Ê±

+#define Z_ATIMM_T3225Exipre                        (BYTE)127 //3225³¬Ê±

+#define Z_ATIMM_T3231Exipre                        (BYTE)128 //3231³¬Ê±

+#define Z_ATIMM_TwpgrExipre                        (BYTE)129 //Twpgr³¬Ê±

 

 /*================ Ë«¿¨Ë«´ýÅжÏÁ½ÕÅ¿¨ÊÇ·ñÐèÒª½»»»===============================*/ 

 #define  Z_NO_NEED_CHANGE                           (BYTE)0

@@ -9040,5 +9056,8 @@
 extern int get_cid_state(unsigned char cid);

 extern BYTE zAti_GetS0Value(VOID);

 extern DWORD zAti_GetUlRateIndTimerVal(BYTE bInsIdx);

+

+extern VOID zAs_AddNasTraceInfo(BYTE  bRat, WORD bCeer, BYTE ModeId, BYTE bDomain);

+

 #endif

 

diff --git a/cp/ps/modem/ps/src/nas/ati/src/zati_fnc.c b/cp/ps/modem/ps/src/nas/ati/src/zati_fnc.c
index ab3a03f..55236e0 100755
--- a/cp/ps/modem/ps/src/nas/ati/src/zati_fnc.c
+++ b/cp/ps/modem/ps/src/nas/ati/src/zati_fnc.c
@@ -3152,6 +3152,17 @@
 }

 

 /**************************************************************************

+*º¯ÊýÃû³Æ:zAt_AddAtiTraceInfo

+*º¯Êý¹¦ÄÜ:ͨµÀ¶ÂÈûÐÅÏ¢¼ÓÈëά²âÐÅÏ¢

+**************************************************************************/

+VOID zAt_AddAtiTraceInfo(WORD wCmdId, BYTE bChnelID)

+{

+    BYTE bCurAct = zAti_GetCurAct_ByIndex(g_zAti_CurInstance);

+

+    zAs_AddNasTraceInfo(bCurAct, wCmdId, Z_CEER_ATI_ID,  bChnelID);

+}

+

+/**************************************************************************

 * º¯ÊýÃû³Æ : zAti_ProcessCmd

 * ¹¦ÄÜÃèÊö : ´¦ÀíÉϲ㷢À´µÄÃüÁî

 * ²ÎÊý˵Ã÷£º (IN)£º 

@@ -3178,6 +3189,10 @@
 

     if ( ZAT2_NO_COMMAND != pChnelNode->cmd_id && ZAT2_CO_INVALID != pChnelNode->cmd_op)

     {

+        CHAR abStr[30] = {0};

+        sprintf(abStr, "Conflict Cmd id=%d\n", pChnelNode->cmd_id);

+        zAti_SendExpt2TraceAgt(ERR_InvalidMsg,  TRACE_ERR_LEVEL_NORMAL, abStr);

+        zAt_AddAtiTraceInfo(pChnelNode->cmd_id, pChnelNode->iChnelId);

         zAti_ProcChnelConflict(pChnelNode);

         return;

     }

diff --git a/cp/ps/plat/inc/oss/oss_sup.h b/cp/ps/plat/inc/oss/oss_sup.h
index 686c318..313ccd4 100755
--- a/cp/ps/plat/inc/oss/oss_sup.h
+++ b/cp/ps/plat/inc/oss/oss_sup.h
@@ -462,7 +462,7 @@
 VOID zOss_RamPrintf(VOID);

 

 /* ά²â */

-UINT32 zOss_DebugInfoRecord(UINT32 id, const VOID *pFormat, ...);

+UINT32 zOss_DebugInfoRecord(char *id, const VOID *pFormat, ...);

 

 /* shellÄ£¿é */

 UINT32 zOss_AddShellCmd(const CHAR *cmd_name, const Shell_Func func, const CHAR *description);

diff --git a/cp/ps/plat/src/oss/sup/src/sup_except.c b/cp/ps/plat/src/oss/sup/src/sup_except.c
index fd355b2..8c87a48 100755
--- a/cp/ps/plat/src/oss/sup/src/sup_except.c
+++ b/cp/ps/plat/src/oss/sup/src/sup_except.c
@@ -371,7 +371,7 @@
 * ·µ »Ø Öµ£º ³É¹¦: дÈ볤¶È; ʧ°Ü: ZOSS_ERROR

 * ÆäËü˵Ã÷£º

 **************************************************************************/

-UINT32 zOss_DebugInfoRecord(UINT32 id, const VOID *pFormat, ...)

+UINT32 zOss_DebugInfoRecord(char *id, const VOID *pFormat, ...)

 {

 #ifdef _OS_WIN

     return ZOSS_ERROR;

@@ -387,7 +387,7 @@
 #endif

 }

 #else

-UINT32 zOss_DebugInfoRecord(UINT32 id, const VOID *pFormat, ...)

+UINT32 zOss_DebugInfoRecord(char *id, const VOID *pFormat, ...)

 {

     return ZOSS_SUCCESS;

 }