[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/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™ 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™ 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™ 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™ 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™ 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™ 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;
}