[Feature][T106_eSDK]update from T106-V2.01.01.02P56U06.AP.15.11_CAP.15.11.01 to T106-V2.01.01.02P56U09.AP.17.02_CAP.17.02.02 -- Uboot

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: I0d82c355a0fe633dc3ce2770f3091d496abfa89b
diff --git a/Uboot/boot/common/src/loader/lib/board.c b/Uboot/boot/common/src/loader/lib/board.c
index b72ce93..3ddc41f 100755
--- a/Uboot/boot/common/src/loader/lib/board.c
+++ b/Uboot/boot/common/src/loader/lib/board.c
@@ -146,6 +146,7 @@
 	int32_t add;
 	uint32_t amt_value = 0;
 	int32_t err_flag = 0;
+	int32_t switch_flag = 0;
     T_BOOT_TARGET bootTarget;
 	T_FLAGS flagsData;
 	T_FLAGS_INFO *fotaFlag;
@@ -267,44 +268,127 @@
         if (fotaFlag->boot_fota_flag.system.status == DUALSYSTEM_STATUS_UNBOOTABLE)
         {
             printf("dual_system status is unbootable!");
-		    goto error;
+			//goto error;
+			if(fotaFlag->boot_fota_flag.system2.status == DUALSYSTEM_STATUS_UNBOOTABLE)
+			{
+				printf("system status is both unbootable,restart system1!");
+				err_flag = 1;
+				/*ĬÈÏflags·ÖÇøÊý¾Ý*/
+				flagsData.magic_start = FLAGS_MAGIC;
+				flagsData.boot_fota_flag.boot_to = DUAL_SYSTEM;
+				flagsData.boot_fota_flag.fota_status = 1;
+				flagsData.boot_fota_flag.system.status = DUALSYSTEM_STATUS_BOOTABLE;
+				flagsData.boot_fota_flag.system2.status = DUALSYSTEM_STATUS_BOOTABLE;
+				flagsData.magic_end = FLAGS_MAGIC;
+				fotaFlag = &flagsData;
+			}
+			else
+			{
+				writel(DUALSYSTEM_STATUS_UNBOOTABLE, BOOT_FLAG_ADDR);
+				printf("restart system2!");
+				switch_flag = 1;
+			}
+		    
 		}
-		ret = read_uboot_image((uint8_t *)UBOOT_IMAGE, &uboot_entry_point);    
-		if( ret != 0)
-        {
-            printf("read uboot1 image error, goto uboot2!");
-			writel(DUALSYSTEM_STATUS_UNBOOTABLE, BOOT_FLAG_ADDR);		
-			ret = read_uboot_image((uint8_t *)UBOOT2_IMAGE, &uboot_entry_point);		
+
+		if(1 == switch_flag)
+		{
+			ret = read_uboot_image((uint8_t *)UBOOT2_IMAGE, &uboot_entry_point);    
 			if( ret != 0)
 	        {
-	            printf("read uboot2 iamge error!");
-				goto error;	
+	            printf("read uboot2 image error, goto uboot!");
+				writel(DUALSYSTEM_STATUS_UNBOOTABLE, BOOT_FLAG_ADDR);		
+				ret = read_uboot_image((uint8_t *)UBOOT_IMAGE, &uboot_entry_point);		
+				if( ret != 0)
+		        {
+		            printf("read uboot image error!");
+					goto error;	
+				}
 			}
+			else	
+			    printf("goto uboot2!");		
 		}
-		else	
-		    printf("goto uboot!");
+		else
+		{
+			ret = read_uboot_image((uint8_t *)UBOOT_IMAGE, &uboot_entry_point);    
+			if( ret != 0)
+	        {
+	            printf("read uboot1 image error, goto uboot2!");
+				writel(DUALSYSTEM_STATUS_UNBOOTABLE, BOOT_FLAG_ADDR);		
+				ret = read_uboot_image((uint8_t *)UBOOT2_IMAGE, &uboot_entry_point);		
+				if( ret != 0)
+		        {
+		            printf("read uboot2 image error!");
+					goto error;	
+				}
+			}
+			else	
+			    printf("goto uboot!");
+		}
+		
 	}
     else if(bootTarget == DUAL_SYSTEM2)
     {
         if (fotaFlag->boot_fota_flag.system2.status == DUALSYSTEM_STATUS_UNBOOTABLE)
         {
             printf("dual_system2 status is unbootable!");
-		    goto error;
-		}
-		ret = read_uboot_image((uint8_t *)UBOOT2_IMAGE, &uboot_entry_point);		
-		if( ret != 0)
-        {
-            printf("read uboot2 iamge error, goto uboot!");
-			writel(DUALSYSTEM_STATUS_UNBOOTABLE, BOOT_FLAG_ADDR);	
-			ret = read_uboot_image((uint8_t *)UBOOT_IMAGE, &uboot_entry_point);		
-			if( ret != 0)
-	        {
-	            printf("read uboot iamge error!");
-				goto error;	
+		    //goto error;
+			if(fotaFlag->boot_fota_flag.system.status == DUALSYSTEM_STATUS_UNBOOTABLE)
+			{
+				printf("system status is both unbootable,restart system2!");
+				err_flag = 1;
+				/*ĬÈÏflags·ÖÇøÊý¾Ý*/
+				flagsData.magic_start = FLAGS_MAGIC;
+				flagsData.boot_fota_flag.boot_to = DUAL_SYSTEM2;
+				flagsData.boot_fota_flag.fota_status = 1;
+				flagsData.boot_fota_flag.system.status = DUALSYSTEM_STATUS_BOOTABLE;
+				flagsData.boot_fota_flag.system2.status = DUALSYSTEM_STATUS_BOOTABLE;
+				flagsData.magic_end = FLAGS_MAGIC;
+				fotaFlag = &flagsData;
+			}
+			else
+			{
+				writel(DUALSYSTEM_STATUS_UNBOOTABLE, BOOT_FLAG_ADDR);
+				printf("restart system1!");
+				switch_flag = 1;
 			}
 		}
+		
+		if(1 == switch_flag)
+		{
+			ret = read_uboot_image((uint8_t *)UBOOT_IMAGE, &uboot_entry_point);    
+			if( ret != 0)
+	        {
+	            printf("read uboot image error, goto uboot2!");
+				writel(DUALSYSTEM_STATUS_UNBOOTABLE, BOOT_FLAG_ADDR);		
+				ret = read_uboot_image((uint8_t *)UBOOT2_IMAGE, &uboot_entry_point);		
+				if( ret != 0)
+		        {
+		            printf("read uboot2 image error!");
+					goto error;	
+				}
+			}
+			else	
+			    printf("goto uboot!");		
+		}
 		else
-		    printf("goto uboot2!");
+		{
+			ret = read_uboot_image((uint8_t *)UBOOT2_IMAGE, &uboot_entry_point);		
+			if( ret != 0)
+	        {
+	            printf("read uboot2 image error, goto uboot!");
+				writel(DUALSYSTEM_STATUS_UNBOOTABLE, BOOT_FLAG_ADDR);	
+				ret = read_uboot_image((uint8_t *)UBOOT_IMAGE, &uboot_entry_point);		
+				if( ret != 0)
+		        {
+		            printf("read uboot image error!");
+					goto error;	
+				}
+			}
+			else
+			    printf("goto uboot2!");
+		}
+		
 	}
 	else
 	{
diff --git a/Uboot/boot/common/src/uboot/arch/arm/lib/Makefile b/Uboot/boot/common/src/uboot/arch/arm/lib/Makefile
index b5625a6..c35e97e 100755
--- a/Uboot/boot/common/src/uboot/arch/arm/lib/Makefile
+++ b/Uboot/boot/common/src/uboot/arch/arm/lib/Makefile
@@ -49,9 +49,9 @@
 SOBJS-$(CONFIG_USE_ARCH_MEMCPY) += memcpy.o
 endif
 #xf.li@2023.04.14 modify for ZXW-25 start
-LYNQ_CONFIG_VERSION = "T106-W-V2.01.01.02P56U06.AP.15.05_CAP.15.05"
+LYNQ_CONFIG_VERSION = "T106-V2.01.01.02P56U09.AP.17.02_CAP.17.02.02"
 CFLAGS += -DLYNQ_VERSION=\"$(LYNQ_CONFIG_VERSION)\"
-LYNQ_CONFIG_COMMITID = "c33b177c8b861ee957b6c8b0dea003278a3671d6"
+LYNQ_CONFIG_COMMITID = "9aea88bb79cfb2fae9ddab87f8307126d618aec2"
 CFLAGS += -DLYNQ_COMMITID=\"$(LYNQ_CONFIG_COMMITID)\"
 #xf.li@2023.04.14 modify for ZXW-25 end
 SRCS	:= $(GLSOBJS:.o=.S) $(GLCOBJS:.o=.c) \
diff --git a/Uboot/boot/common/src/uboot/board/zte/zx297520v3/zx297520v3_mdl_ab.c b/Uboot/boot/common/src/uboot/board/zte/zx297520v3/zx297520v3_mdl_ab.c
index bf9a900..78f48a4 100755
--- a/Uboot/boot/common/src/uboot/board/zte/zx297520v3/zx297520v3_mdl_ab.c
+++ b/Uboot/boot/common/src/uboot/board/zte/zx297520v3/zx297520v3_mdl_ab.c
@@ -635,6 +635,7 @@
 		ret = rewrite_flags();
 		if(ret != 0)
 			return -1;
+		system_reset();
 		return 0;
 #endif
 	}
diff --git a/Uboot/boot/common/src/uboot/board/zte/zx297520v3/zx297520v3_vehicle_dc.c b/Uboot/boot/common/src/uboot/board/zte/zx297520v3/zx297520v3_vehicle_dc.c
index 2f9dde8..d538891 100755
--- a/Uboot/boot/common/src/uboot/board/zte/zx297520v3/zx297520v3_vehicle_dc.c
+++ b/Uboot/boot/common/src/uboot/board/zte/zx297520v3/zx297520v3_vehicle_dc.c
@@ -636,6 +636,7 @@
 		ret = rewrite_flags();
 		if(ret != 0)
 			return -1;
+		system_reset();
 		return 0;
 #endif
 	}
diff --git a/Uboot/boot/common/src/uboot/board/zte/zx297520v3/zx297520v3_vehicle_dc_ref.c b/Uboot/boot/common/src/uboot/board/zte/zx297520v3/zx297520v3_vehicle_dc_ref.c
index 7703ad0..8e767d2 100755
--- a/Uboot/boot/common/src/uboot/board/zte/zx297520v3/zx297520v3_vehicle_dc_ref.c
+++ b/Uboot/boot/common/src/uboot/board/zte/zx297520v3/zx297520v3_vehicle_dc_ref.c
@@ -638,6 +638,7 @@
 		ret = rewrite_flags();
 		if(ret != 0)
 			return -1;
+		system_reset();
 		return 0;
 #endif
 	}
diff --git a/Uboot/boot/common/src/uboot/downloader/cmd_compat_write.c b/Uboot/boot/common/src/uboot/downloader/cmd_compat_write.c
index 4d5e339..4d6ae9d 100755
--- a/Uboot/boot/common/src/uboot/downloader/cmd_compat_write.c
+++ b/Uboot/boot/common/src/uboot/downloader/cmd_compat_write.c
@@ -34,9 +34,10 @@
 /****************************************************************************
 *							Global Function Prototypes
 ****************************************************************************/
-T_IMG_SIZE img_size[IMG_NUM] = {{"uboot",0,0},{"imagefs",0,0},{"rootfs",0,0},{"caprootfs",0,0},{"oem",0,0}};
+//T_IMG_SIZE img_size[IMG_NUM] = {{"uboot",0,0},{"imagefs",0,0},{"rootfs",0,0},{"caprootfs",0,0},{"oem",0,0}};
+T_IMG_SIZE img_size[IMG_NUM_MAX];
+int img_num = 0;
 int flags_partiton_write = 0;
-
 extern int g_iftype;
 extern partition_table_t * g_partition_table_dl;
 /*******************************************************************************
@@ -56,11 +57,14 @@
 {
     partition_entry_t *part = NULL;
     char *par = NULL;
+	char *par_tmp = NULL;
     char ack[64]={0};
 	unsigned int offset = 0;
 	unsigned int size = 0;
 	unsigned int ret = 0;
 	unsigned int i = 0;
+	unsigned int len = 0;
+	unsigned int found = 0;
 	flags_partiton_write = 1;
 	
 	if(argc<4)
@@ -80,23 +84,55 @@
 	}
 
 	/*record image size*/
-	for(i=0; i<IMG_NUM; i++)
+	len = strlen(par);
+/* Started by AICoder, pid:q5743g3f62rd9291419e086de0327502c5d710ce */
+	par_tmp = (char *)malloc(len + 1);
+	if (par[len - 1] == '2') {
+		strncpy(par_tmp, par, len - 1);
+		par_tmp[len - 1] = '\0';
+	} else {
+		strcpy(par_tmp, par);
+	}
+/* Ended by AICoder, pid:q5743g3f62rd9291419e086de0327502c5d710ce */
+	
+/* Started by AICoder, pid:ye4dcm700en8c6e14cdf0ac390813e36dc075765 */
+	for(i=0; i<img_num; i++)
 	{
-		if(memcmp((char *)img_size[i].name , par, strlen(img_size[i].name)) == 0){
-			if(!memcmp(par,"oemdata",7))
-				break;
-			if(strlen(img_size[i].name) == strlen(par))
-			{
-				img_size[i].size_a = size;
-				printf("partition is %s,size_a is 0x%x.\n",par,size);
-			}
-			else
-			{
-				img_size[i].size_b = size;
-				printf("partition is %s,size_b is 0x%x.\n",par,size);
-			}
-		}
+	    if(strcmp((char *)img_size[i].name, par_tmp) == 0 && strlen((char *)img_size[i].name) == strlen(par_tmp))
+	    {
+	        found = 1;
+	        if(strcmp(par_tmp,par) == 0)
+	        {
+	            img_size[i].size_a = size;
+	            printf("partition is %s,size_a is 0x%x.\n",par,size);
+	        }
+	        else
+	        {
+	            img_size[i].size_b = size;
+	            printf("partition is %s,size_b is 0x%x.\n",par,size);
+	        }
+	        
+	        break;
+	    }
 	}  
+	if (!found)
+	{   
+	    strcpy(img_size[img_num].name,par_tmp);
+	    if(strcmp(par_tmp,par) == 0)
+	    {
+	        img_size[img_num].size_a = size;
+	        printf("partition is %s,size_a is 0x%x.\n",par,size);
+	    }
+	    else
+	    {
+	        img_size[img_num].size_b = size;
+	        printf("partition is %s,size_b is 0x%x.\n",par,size);
+	    }
+	    
+	    img_num += 1;
+	}
+	free(par_tmp);
+/* Ended by AICoder, pid:ye4dcm700en8c6e14cdf0ac390813e36dc075765 */
 	
 #if defined (CONFIG_ZX297520V3E_VEHICLE_DC) || defined (CONFIG_ZX297520V3E_VEHICLE_DC_REF)
 	if(g_nor_flag == 1)
diff --git a/Uboot/boot/common/src/uboot/include/partition_table.h b/Uboot/boot/common/src/uboot/include/partition_table.h
index 306a64c..febd365 100755
--- a/Uboot/boot/common/src/uboot/include/partition_table.h
+++ b/Uboot/boot/common/src/uboot/include/partition_table.h
@@ -211,7 +211,7 @@
 #define PARTITION_CRC               0x12345678
 #define PARTITION_SIZE              0X1000                  /* ·ÖÇø±íµÄ´óС */
 
-#define IMG_NUM  5
+#define IMG_NUM  15
 
 typedef struct partition_entry {
     unsigned char	part_name[16]; 
diff --git a/Uboot/boot/prj/zx297520v3/bootrom/dl_off/loader2.bin b/Uboot/boot/prj/zx297520v3/bootrom/dl_off/loader2.bin
index 343a176..9f59920 100755
--- a/Uboot/boot/prj/zx297520v3/bootrom/dl_off/loader2.bin
+++ b/Uboot/boot/prj/zx297520v3/bootrom/dl_off/loader2.bin
Binary files differ
diff --git a/Uboot/boot/prj/zx297520v3/bootrom/dl_off/z-load b/Uboot/boot/prj/zx297520v3/bootrom/dl_off/z-load
index 305591e..adb25a4 100755
--- a/Uboot/boot/prj/zx297520v3/bootrom/dl_off/z-load
+++ b/Uboot/boot/prj/zx297520v3/bootrom/dl_off/z-load
Binary files differ
diff --git a/Uboot/boot/prj/zx297520v3/bootrom/dl_off/z-load.map b/Uboot/boot/prj/zx297520v3/bootrom/dl_off/z-load.map
index 07ae1fd..b4ee310 100755
--- a/Uboot/boot/prj/zx297520v3/bootrom/dl_off/z-load.map
+++ b/Uboot/boot/prj/zx297520v3/bootrom/dl_off/z-load.map
@@ -300,20 +300,20 @@
 .stabstr        0x0000000000000000       0x67
  .stabstr       0x0000000000000000       0x67 cpu/m0/start.o
 
-.debug_info     0x0000000000000000     0x34d2
- .debug_info    0x0000000000000000      0x70b lib/libarm.a(board.o)
- .debug_info    0x000000000000070b      0x22b lib/libarm.a(string.o)
- .debug_info    0x0000000000000936      0x329 drivers/libdrivers.a(ddr.o)
- .debug_info    0x0000000000000c5f      0x2a0 drivers/libdrivers.a(uart.o)
- .debug_info    0x0000000000000eff      0x6d3 drivers/libdrivers.a(image.o)
- .debug_info    0x00000000000015d2      0x1c3 drivers/libdrivers.a(efuse.o)
- .debug_info    0x0000000000001795      0x62d drivers/libdrivers.a(secure_verify.o)
- .debug_info    0x0000000000001dc2      0xd5f drivers/libdrivers.a(nor.o)
- .debug_info    0x0000000000002b21      0x1e8 drivers/libdrivers.a(drv_hash.o)
- .debug_info    0x0000000000002d09      0x3b4 drivers/libdrivers.a(drv_rsa.o)
- .debug_info    0x00000000000030bd      0x20f drivers/libdrivers.a(flash.o)
- .debug_info    0x00000000000032cc      0x17b cpu/m0/libm0.a(cpu.o)
- .debug_info    0x0000000000003447       0x8b cpu/m0/libm0.a(clk.o)
+.debug_info     0x0000000000000000     0x34df
+ .debug_info    0x0000000000000000      0x718 lib/libarm.a(board.o)
+ .debug_info    0x0000000000000718      0x22b lib/libarm.a(string.o)
+ .debug_info    0x0000000000000943      0x329 drivers/libdrivers.a(ddr.o)
+ .debug_info    0x0000000000000c6c      0x2a0 drivers/libdrivers.a(uart.o)
+ .debug_info    0x0000000000000f0c      0x6d3 drivers/libdrivers.a(image.o)
+ .debug_info    0x00000000000015df      0x1c3 drivers/libdrivers.a(efuse.o)
+ .debug_info    0x00000000000017a2      0x62d drivers/libdrivers.a(secure_verify.o)
+ .debug_info    0x0000000000001dcf      0xd5f drivers/libdrivers.a(nor.o)
+ .debug_info    0x0000000000002b2e      0x1e8 drivers/libdrivers.a(drv_hash.o)
+ .debug_info    0x0000000000002d16      0x3b4 drivers/libdrivers.a(drv_rsa.o)
+ .debug_info    0x00000000000030ca      0x20f drivers/libdrivers.a(flash.o)
+ .debug_info    0x00000000000032d9      0x17b cpu/m0/libm0.a(cpu.o)
+ .debug_info    0x0000000000003454       0x8b cpu/m0/libm0.a(clk.o)
 
 .debug_abbrev   0x0000000000000000     0x12c2
  .debug_abbrev  0x0000000000000000      0x2b8 lib/libarm.a(board.o)
@@ -395,32 +395,32 @@
  .debug_line    0x000000000000131d       0xa7 cpu/m0/libm0.a(cpu.o)
  .debug_line    0x00000000000013c4       0x61 cpu/m0/libm0.a(clk.o)
 
-.debug_str      0x0000000000000000      0xebb
- .debug_str     0x0000000000000000      0x4d5 lib/libarm.a(board.o)
-                                        0x554 (松开之前的大小)
- .debug_str     0x00000000000004d5       0x4c lib/libarm.a(string.o)
+.debug_str      0x0000000000000000      0xec7
+ .debug_str     0x0000000000000000      0x4e1 lib/libarm.a(board.o)
+                                        0x560 (松开之前的大小)
+ .debug_str     0x00000000000004e1       0x4c lib/libarm.a(string.o)
                                         0x214 (松开之前的大小)
- .debug_str     0x0000000000000521       0xa1 drivers/libdrivers.a(ddr.o)
+ .debug_str     0x000000000000052d       0xa1 drivers/libdrivers.a(ddr.o)
                                         0x216 (松开之前的大小)
- .debug_str     0x00000000000005c2       0x8a drivers/libdrivers.a(uart.o)
+ .debug_str     0x00000000000005ce       0x8a drivers/libdrivers.a(uart.o)
                                         0x253 (松开之前的大小)
- .debug_str     0x000000000000064c      0x229 drivers/libdrivers.a(image.o)
+ .debug_str     0x0000000000000658      0x229 drivers/libdrivers.a(image.o)
                                         0x4a0 (松开之前的大小)
- .debug_str     0x0000000000000875       0x7b drivers/libdrivers.a(efuse.o)
+ .debug_str     0x0000000000000881       0x7b drivers/libdrivers.a(efuse.o)
                                         0x255 (松开之前的大小)
- .debug_str     0x00000000000008f0      0x177 drivers/libdrivers.a(secure_verify.o)
+ .debug_str     0x00000000000008fc      0x177 drivers/libdrivers.a(secure_verify.o)
                                         0x407 (松开之前的大小)
- .debug_str     0x0000000000000a67      0x2c3 drivers/libdrivers.a(nor.o)
+ .debug_str     0x0000000000000a73      0x2c3 drivers/libdrivers.a(nor.o)
                                         0x5f3 (松开之前的大小)
- .debug_str     0x0000000000000d2a       0x87 drivers/libdrivers.a(drv_hash.o)
+ .debug_str     0x0000000000000d36       0x87 drivers/libdrivers.a(drv_hash.o)
                                         0x25a (松开之前的大小)
- .debug_str     0x0000000000000db1       0x79 drivers/libdrivers.a(drv_rsa.o)
+ .debug_str     0x0000000000000dbd       0x79 drivers/libdrivers.a(drv_rsa.o)
                                         0x29c (松开之前的大小)
- .debug_str     0x0000000000000e2a       0x12 drivers/libdrivers.a(flash.o)
+ .debug_str     0x0000000000000e36       0x12 drivers/libdrivers.a(flash.o)
                                         0x2a8 (松开之前的大小)
- .debug_str     0x0000000000000e3c       0x79 cpu/m0/libm0.a(cpu.o)
+ .debug_str     0x0000000000000e48       0x79 cpu/m0/libm0.a(cpu.o)
                                         0x1f8 (松开之前的大小)
- .debug_str     0x0000000000000eb5        0x6 cpu/m0/libm0.a(clk.o)
+ .debug_str     0x0000000000000ec1        0x6 cpu/m0/libm0.a(clk.o)
                                         0x1bd (松开之前的大小)
 
 .debug_frame    0x0000000000000000      0x6a0
diff --git a/Uboot/boot/prj/zx297520v3/bootrom/dl_off/z-load2 b/Uboot/boot/prj/zx297520v3/bootrom/dl_off/z-load2
index 65ef38e..be71fcd 100755
--- a/Uboot/boot/prj/zx297520v3/bootrom/dl_off/z-load2
+++ b/Uboot/boot/prj/zx297520v3/bootrom/dl_off/z-load2
Binary files differ
diff --git a/Uboot/boot/prj/zx297520v3/bootrom/dl_off/z-load2.map b/Uboot/boot/prj/zx297520v3/bootrom/dl_off/z-load2.map
index 0163e41..c906aa5 100755
--- a/Uboot/boot/prj/zx297520v3/bootrom/dl_off/z-load2.map
+++ b/Uboot/boot/prj/zx297520v3/bootrom/dl_off/z-load2.map
@@ -34,7 +34,7 @@
                 0x0000000000000000                . = 0x0
                 0x0000000000000000                . = ALIGN (0x4)
 
-.text           0x0000000020300000     0x4ddc
+.text           0x0000000020300000     0x4ea4
  cpu/m0/start.o(.text)
  .text          0x0000000020300000      0x220 cpu/m0/start.o
                 0x00000000203001a4                _bss_start
@@ -44,7 +44,7 @@
                 0x00000000203001b8                _start
                 0x00000000203001fe                run_at
  *(.text)
- .text          0x0000000020300220      0x4ec lib/libarm.a(board.o)
+ .text          0x0000000020300220      0x5b4 lib/libarm.a(board.o)
                 0x0000000020300220                print_info
                 0x0000000020300230                copy_to_iram1
                 0x0000000020300250                clear_iram
@@ -55,201 +55,201 @@
                 0x0000000020300338                pmu_read
                 0x0000000020300404                pmu_write
                 0x00000000203004d0                start_armboot
- .text          0x000000002030070c       0x80 lib/libarm.a(string.o)
-                0x000000002030070c                strlen
-                0x000000002030071c                memset
-                0x000000002030075e                memcmp
-                0x000000002030077a                memcpy
- .text          0x000000002030078c      0x82c drivers/libdrivers.a(ddr.o)
-                0x000000002030078c                nsdelay
-                0x00000000203007a6                ddr_clk_init
-                0x00000000203007bc                ddr_phy_init
-                0x00000000203008b8                ddr_ctrl_init
-                0x0000000020300c74                ddr_prio_init
-                0x0000000020300d98                ddr_init
- .text          0x0000000020300fb8      0x138 drivers/libdrivers.a(uart.o)
-                0x0000000020300fb8                uart_init
-                0x0000000020301038                uart_putc
-                0x0000000020301060                uart_puts
-                0x0000000020301074                uart_getc
-                0x0000000020301090                uart_tstc
-                0x00000000203010a0                UART_Read
-                0x00000000203010bc                UART_Write
-                0x00000000203010d8                UART_Check_Sync
- .text          0x00000000203010f0      0x338 drivers/libdrivers.a(image.o)
-                0x00000000203010f4                page_align
-                0x000000002030110c                find_partition_para
-                0x000000002030113c                read_image_part_offset
-                0x0000000020301190                read_flags_image
-                0x0000000020301278                read_uboot_image
-                0x0000000020301358                nand_read_m0
-                0x00000000203013c4                read_zloader_image
- .text          0x0000000020301428      0x2b0 drivers/libdrivers.a(secure_verify.o)
-                0x0000000020301446                BIG2SMALL
-                0x0000000020301476                bin2hex
-                0x00000000203014c0                secure_verify_zloader
-                0x00000000203015b4                SecureVerify
- .text          0x00000000203016d8      0x648 drivers/libdrivers.a(spifc_loader2.o)
-                0x00000000203017cc                zDrvGpio_SetFunc
-                0x0000000020301804                zDrvGpio_SetDirection
-                0x0000000020301854                zDrvGpio_SetOutputValue
-                0x0000000020301890                spi_nand_cs
-                0x00000000203018cc                spifc_clear_fifo
-                0x00000000203018e0                spifc_clear_int
-                0x0000000020301a3c                spifc_read_oob
-                0x0000000020301a80                spifc_read_page_raw
-                0x0000000020301abc                spifc_read_page
-                0x0000000020301b38                spifc_read
-                0x0000000020301b7c                read_data
-                0x0000000020301bd0                read_id
-                0x0000000020301c54                spifc_init
-                0x0000000020301cd8                zloader_flash_init
- .text          0x0000000020301d20      0x1c0 drivers/libdrivers.a(bbt.o)
-                0x0000000020301d80                nand_creat_ram_bbt
-                0x0000000020301dc4                nand_search_bbt
-                0x0000000020301e50                nand_creat_bbt
-                0x0000000020301ecc                nand_block_isbad
- .text          0x0000000020301ee0     0x2688 drivers/libdrivers.a(sha256.o)
-                0x0000000020304400                sha256_starts
-                0x0000000020304448                sha256_update
-                0x0000000020304454                sha256_finish
-                0x0000000020304540                sha256_csum_wd
- .text          0x0000000020304568      0x424 drivers/libdrivers.a(nor.o)
-                0x0000000020304568                spifc_enable
-                0x0000000020304598                spifc_disable
-                0x00000000203045bc                spifc_setup_cmd
-                0x0000000020304640                spifc_wait_cmd_end
-                0x000000002030466c                spifc_read_fifo
-                0x00000000203046a8                spifc_start
-                0x00000000203046b8                cmd_seek
-                0x00000000203046d8                nor_read_reg
-                0x0000000020304738                nor_read_id
-                0x00000000203047a0                spi_nor_read
-                0x00000000203047fc                nor_read
-                0x0000000020304850                spi_nor_read_security_register
-                0x00000000203048ac                nor_read_security_register
-                0x0000000020304900                nor_init
-                0x0000000020304950                board_flash_init
- .text          0x000000002030498c       0xa4 drivers/libdrivers.a(drv_hash.o)
-                0x000000002030498c                Hash_Calculate
- .text          0x0000000020304a30      0x174 drivers/libdrivers.a(drv_rsa.o)
-                0x0000000020304a4a                Rsa_Calculate
- .text          0x0000000020304ba4       0x28 drivers/libdrivers.a(flash.o)
-                0x0000000020304ba4                get_boot_mode
- .text          0x0000000020304bcc      0x1bc drivers/libdrivers.a(efuse.o)
-                0x0000000020304bcc                efuse_init
-                0x0000000020304bf0                get_ddr_flag
-                0x0000000020304d10                get_secure_verify_status
-                0x0000000020304d54                get_otp_secure_verify_status
- .text          0x0000000020304d88       0x54 cpu/m0/libm0.a(cpu.o)
-                0x0000000020304d88                timer_init
-                0x0000000020304da0                usdelay
+ .text          0x00000000203007d4       0x80 lib/libarm.a(string.o)
+                0x00000000203007d4                strlen
+                0x00000000203007e4                memset
+                0x0000000020300826                memcmp
+                0x0000000020300842                memcpy
+ .text          0x0000000020300854      0x82c drivers/libdrivers.a(ddr.o)
+                0x0000000020300854                nsdelay
+                0x000000002030086e                ddr_clk_init
+                0x0000000020300884                ddr_phy_init
+                0x0000000020300980                ddr_ctrl_init
+                0x0000000020300d3c                ddr_prio_init
+                0x0000000020300e60                ddr_init
+ .text          0x0000000020301080      0x138 drivers/libdrivers.a(uart.o)
+                0x0000000020301080                uart_init
+                0x0000000020301100                uart_putc
+                0x0000000020301128                uart_puts
+                0x000000002030113c                uart_getc
+                0x0000000020301158                uart_tstc
+                0x0000000020301168                UART_Read
+                0x0000000020301184                UART_Write
+                0x00000000203011a0                UART_Check_Sync
+ .text          0x00000000203011b8      0x338 drivers/libdrivers.a(image.o)
+                0x00000000203011bc                page_align
+                0x00000000203011d4                find_partition_para
+                0x0000000020301204                read_image_part_offset
+                0x0000000020301258                read_flags_image
+                0x0000000020301340                read_uboot_image
+                0x0000000020301420                nand_read_m0
+                0x000000002030148c                read_zloader_image
+ .text          0x00000000203014f0      0x2b0 drivers/libdrivers.a(secure_verify.o)
+                0x000000002030150e                BIG2SMALL
+                0x000000002030153e                bin2hex
+                0x0000000020301588                secure_verify_zloader
+                0x000000002030167c                SecureVerify
+ .text          0x00000000203017a0      0x648 drivers/libdrivers.a(spifc_loader2.o)
+                0x0000000020301894                zDrvGpio_SetFunc
+                0x00000000203018cc                zDrvGpio_SetDirection
+                0x000000002030191c                zDrvGpio_SetOutputValue
+                0x0000000020301958                spi_nand_cs
+                0x0000000020301994                spifc_clear_fifo
+                0x00000000203019a8                spifc_clear_int
+                0x0000000020301b04                spifc_read_oob
+                0x0000000020301b48                spifc_read_page_raw
+                0x0000000020301b84                spifc_read_page
+                0x0000000020301c00                spifc_read
+                0x0000000020301c44                read_data
+                0x0000000020301c98                read_id
+                0x0000000020301d1c                spifc_init
+                0x0000000020301da0                zloader_flash_init
+ .text          0x0000000020301de8      0x1c0 drivers/libdrivers.a(bbt.o)
+                0x0000000020301e48                nand_creat_ram_bbt
+                0x0000000020301e8c                nand_search_bbt
+                0x0000000020301f18                nand_creat_bbt
+                0x0000000020301f94                nand_block_isbad
+ .text          0x0000000020301fa8     0x2688 drivers/libdrivers.a(sha256.o)
+                0x00000000203044c8                sha256_starts
+                0x0000000020304510                sha256_update
+                0x000000002030451c                sha256_finish
+                0x0000000020304608                sha256_csum_wd
+ .text          0x0000000020304630      0x424 drivers/libdrivers.a(nor.o)
+                0x0000000020304630                spifc_enable
+                0x0000000020304660                spifc_disable
+                0x0000000020304684                spifc_setup_cmd
+                0x0000000020304708                spifc_wait_cmd_end
+                0x0000000020304734                spifc_read_fifo
+                0x0000000020304770                spifc_start
+                0x0000000020304780                cmd_seek
+                0x00000000203047a0                nor_read_reg
+                0x0000000020304800                nor_read_id
+                0x0000000020304868                spi_nor_read
+                0x00000000203048c4                nor_read
+                0x0000000020304918                spi_nor_read_security_register
+                0x0000000020304974                nor_read_security_register
+                0x00000000203049c8                nor_init
+                0x0000000020304a18                board_flash_init
+ .text          0x0000000020304a54       0xa4 drivers/libdrivers.a(drv_hash.o)
+                0x0000000020304a54                Hash_Calculate
+ .text          0x0000000020304af8      0x174 drivers/libdrivers.a(drv_rsa.o)
+                0x0000000020304b12                Rsa_Calculate
+ .text          0x0000000020304c6c       0x28 drivers/libdrivers.a(flash.o)
+                0x0000000020304c6c                get_boot_mode
+ .text          0x0000000020304c94      0x1bc drivers/libdrivers.a(efuse.o)
+                0x0000000020304c94                efuse_init
+                0x0000000020304cb8                get_ddr_flag
+                0x0000000020304dd8                get_secure_verify_status
+                0x0000000020304e1c                get_otp_secure_verify_status
+ .text          0x0000000020304e50       0x54 cpu/m0/libm0.a(cpu.o)
+                0x0000000020304e50                timer_init
+                0x0000000020304e68                usdelay
 
-.glue_7         0x0000000020304ddc        0x0
+.glue_7         0x0000000020304ea4        0x0
  .glue_7        0x0000000000000000        0x0 linker stubs
 
-.glue_7t        0x0000000020304ddc        0x0
+.glue_7t        0x0000000020304ea4        0x0
  .glue_7t       0x0000000000000000        0x0 linker stubs
 
-.vfp11_veneer   0x0000000020304ddc        0x0
+.vfp11_veneer   0x0000000020304ea4        0x0
  .vfp11_veneer  0x0000000000000000        0x0 linker stubs
 
-.v4_bx          0x0000000020304ddc        0x0
+.v4_bx          0x0000000020304ea4        0x0
  .v4_bx         0x0000000000000000        0x0 linker stubs
 
-.iplt           0x0000000020304ddc        0x0
+.iplt           0x0000000020304ea4        0x0
  .iplt          0x0000000000000000        0x0 cpu/m0/start.o
-                0x0000000020304ddc                . = ALIGN (0x4)
+                0x0000000020304ea4                . = ALIGN (0x4)
 
-.rodata         0x0000000020304ddc      0x3f0
+.rodata         0x0000000020304ea4      0x3f0
  *(.rodata)
- .rodata        0x0000000020304ddc      0x270 drivers/libdrivers.a(spifc_loader2.o)
- .rodata        0x000000002030504c       0x13 drivers/libdrivers.a(sha256.o)
-                0x000000002030504c                sha256_der_prefix
- *fill*         0x000000002030505f        0x1 
- .rodata        0x0000000020305060      0x16c drivers/libdrivers.a(nor.o)
+ .rodata        0x0000000020304ea4      0x270 drivers/libdrivers.a(spifc_loader2.o)
+ .rodata        0x0000000020305114       0x13 drivers/libdrivers.a(sha256.o)
+                0x0000000020305114                sha256_der_prefix
+ *fill*         0x0000000020305127        0x1 
+ .rodata        0x0000000020305128      0x16c drivers/libdrivers.a(nor.o)
 
-.rodata.str1.1  0x00000000203051cc      0x48d
+.rodata.str1.1  0x0000000020305294      0x516
  .rodata.str1.1
-                0x00000000203051cc      0x18a lib/libarm.a(board.o)
-                                        0x1a3 (松开之前的大小)
+                0x0000000020305294      0x213 lib/libarm.a(board.o)
+                                        0x24e (松开之前的大小)
  .rodata.str1.1
-                0x0000000020305356       0xef drivers/libdrivers.a(image.o)
+                0x00000000203054a7       0xef drivers/libdrivers.a(image.o)
                                         0x115 (松开之前的大小)
  .rodata.str1.1
-                0x0000000020305445       0x5b drivers/libdrivers.a(secure_verify.o)
+                0x0000000020305596       0x5b drivers/libdrivers.a(secure_verify.o)
                                          0x5d (松开之前的大小)
  .rodata.str1.1
-                0x00000000203054a0       0x3d drivers/libdrivers.a(spifc_loader2.o)
+                0x00000000203055f1       0x3d drivers/libdrivers.a(spifc_loader2.o)
                                          0x4a (松开之前的大小)
  .rodata.str1.1
-                0x00000000203054dd        0x9 drivers/libdrivers.a(bbt.o)
+                0x000000002030562e        0x9 drivers/libdrivers.a(bbt.o)
  .rodata.str1.1
-                0x00000000203054e6      0x15c drivers/libdrivers.a(nor.o)
+                0x0000000020305637      0x15c drivers/libdrivers.a(nor.o)
  .rodata.str1.1
-                0x0000000020305642       0x17 drivers/libdrivers.a(efuse.o)
+                0x0000000020305793       0x17 drivers/libdrivers.a(efuse.o)
 
-.rel.dyn        0x000000002030565c        0x0
+.rel.dyn        0x00000000203057ac        0x0
  .rel.iplt      0x0000000000000000        0x0 cpu/m0/start.o
-                0x000000002030565c                . = ALIGN (0x4)
+                0x00000000203057ac                . = ALIGN (0x4)
 
-.data           0x000000002030565c       0xd0
+.data           0x00000000203057ac       0xd0
  *(.data)
- .data          0x000000002030565c        0x0 cpu/m0/start.o
- .data          0x000000002030565c        0x0 lib/libarm.a(board.o)
- .data          0x000000002030565c        0x0 lib/libarm.a(string.o)
- .data          0x000000002030565c        0x0 drivers/libdrivers.a(ddr.o)
- .data          0x000000002030565c        0x0 drivers/libdrivers.a(uart.o)
- .data          0x000000002030565c        0x0 drivers/libdrivers.a(image.o)
- .data          0x000000002030565c        0x0 drivers/libdrivers.a(secure_verify.o)
- .data          0x000000002030565c        0x0 drivers/libdrivers.a(spifc_loader2.o)
- .data          0x000000002030565c       0x40 drivers/libdrivers.a(bbt.o)
- .data          0x000000002030569c       0x40 drivers/libdrivers.a(sha256.o)
- .data          0x00000000203056dc       0x50 drivers/libdrivers.a(nor.o)
-                0x00000000203056dc                nor_cmd_table
- .data          0x000000002030572c        0x0 drivers/libdrivers.a(drv_hash.o)
- .data          0x000000002030572c        0x0 drivers/libdrivers.a(drv_rsa.o)
- .data          0x000000002030572c        0x0 drivers/libdrivers.a(flash.o)
- .data          0x000000002030572c        0x0 drivers/libdrivers.a(efuse.o)
- .data          0x000000002030572c        0x0 cpu/m0/libm0.a(cpu.o)
+ .data          0x00000000203057ac        0x0 cpu/m0/start.o
+ .data          0x00000000203057ac        0x0 lib/libarm.a(board.o)
+ .data          0x00000000203057ac        0x0 lib/libarm.a(string.o)
+ .data          0x00000000203057ac        0x0 drivers/libdrivers.a(ddr.o)
+ .data          0x00000000203057ac        0x0 drivers/libdrivers.a(uart.o)
+ .data          0x00000000203057ac        0x0 drivers/libdrivers.a(image.o)
+ .data          0x00000000203057ac        0x0 drivers/libdrivers.a(secure_verify.o)
+ .data          0x00000000203057ac        0x0 drivers/libdrivers.a(spifc_loader2.o)
+ .data          0x00000000203057ac       0x40 drivers/libdrivers.a(bbt.o)
+ .data          0x00000000203057ec       0x40 drivers/libdrivers.a(sha256.o)
+ .data          0x000000002030582c       0x50 drivers/libdrivers.a(nor.o)
+                0x000000002030582c                nor_cmd_table
+ .data          0x000000002030587c        0x0 drivers/libdrivers.a(drv_hash.o)
+ .data          0x000000002030587c        0x0 drivers/libdrivers.a(drv_rsa.o)
+ .data          0x000000002030587c        0x0 drivers/libdrivers.a(flash.o)
+ .data          0x000000002030587c        0x0 drivers/libdrivers.a(efuse.o)
+ .data          0x000000002030587c        0x0 cpu/m0/libm0.a(cpu.o)
 
-.igot.plt       0x000000002030572c        0x0
+.igot.plt       0x000000002030587c        0x0
  .igot.plt      0x0000000000000000        0x0 cpu/m0/start.o
-                0x000000002030572c                . = ALIGN (0x4)
+                0x000000002030587c                . = ALIGN (0x4)
 
 .got
  *(.got)
-                0x000000002030572c                . = ALIGN (0x4)
-                0x000000002030572c                __bss_start = .
+                0x000000002030587c                . = ALIGN (0x4)
+                0x000000002030587c                __bss_start = .
 
-.bss            0x000000002030572c      0x1e8
+.bss            0x000000002030587c      0x1e8
  *(.bss)
- .bss           0x000000002030572c        0x0 cpu/m0/start.o
- .bss           0x000000002030572c        0x4 lib/libarm.a(board.o)
-                0x000000002030572c                zloader_entry_point
- .bss           0x0000000020305730        0x0 lib/libarm.a(string.o)
- .bss           0x0000000020305730        0x0 drivers/libdrivers.a(ddr.o)
- .bss           0x0000000020305730        0x0 drivers/libdrivers.a(uart.o)
- .bss           0x0000000020305730        0x0 drivers/libdrivers.a(image.o)
- .bss           0x0000000020305730      0x104 drivers/libdrivers.a(secure_verify.o)
-                0x0000000020305730                result
- .bss           0x0000000020305834        0x4 drivers/libdrivers.a(spifc_loader2.o)
- .bss           0x0000000020305838       0x80 drivers/libdrivers.a(bbt.o)
- .bss           0x00000000203058b8        0x0 drivers/libdrivers.a(sha256.o)
- .bss           0x00000000203058b8       0x28 drivers/libdrivers.a(nor.o)
-                0x00000000203058b8                spi_nor_flash
-                0x00000000203058bc                otp_data
- .bss           0x00000000203058e0        0x0 drivers/libdrivers.a(drv_hash.o)
- .bss           0x00000000203058e0        0x0 drivers/libdrivers.a(drv_rsa.o)
- .bss           0x00000000203058e0       0x24 drivers/libdrivers.a(flash.o)
-                0x00000000203058e0                flash
- .bss           0x0000000020305904        0x0 drivers/libdrivers.a(efuse.o)
- .bss           0x0000000020305904       0x10 cpu/m0/libm0.a(cpu.o)
-                0x0000000020305904                g_tick
-                0x0000000020305914                __bss_end = .
-                0x0000000020305914                . = ALIGN (0x4)
+ .bss           0x000000002030587c        0x0 cpu/m0/start.o
+ .bss           0x000000002030587c        0x4 lib/libarm.a(board.o)
+                0x000000002030587c                zloader_entry_point
+ .bss           0x0000000020305880        0x0 lib/libarm.a(string.o)
+ .bss           0x0000000020305880        0x0 drivers/libdrivers.a(ddr.o)
+ .bss           0x0000000020305880        0x0 drivers/libdrivers.a(uart.o)
+ .bss           0x0000000020305880        0x0 drivers/libdrivers.a(image.o)
+ .bss           0x0000000020305880      0x104 drivers/libdrivers.a(secure_verify.o)
+                0x0000000020305880                result
+ .bss           0x0000000020305984        0x4 drivers/libdrivers.a(spifc_loader2.o)
+ .bss           0x0000000020305988       0x80 drivers/libdrivers.a(bbt.o)
+ .bss           0x0000000020305a08        0x0 drivers/libdrivers.a(sha256.o)
+ .bss           0x0000000020305a08       0x28 drivers/libdrivers.a(nor.o)
+                0x0000000020305a08                spi_nor_flash
+                0x0000000020305a0c                otp_data
+ .bss           0x0000000020305a30        0x0 drivers/libdrivers.a(drv_hash.o)
+ .bss           0x0000000020305a30        0x0 drivers/libdrivers.a(drv_rsa.o)
+ .bss           0x0000000020305a30       0x24 drivers/libdrivers.a(flash.o)
+                0x0000000020305a30                flash
+ .bss           0x0000000020305a54        0x0 drivers/libdrivers.a(efuse.o)
+ .bss           0x0000000020305a54       0x10 cpu/m0/libm0.a(cpu.o)
+                0x0000000020305a54                g_tick
+                0x0000000020305a64                __bss_end = .
+                0x0000000020305a64                . = ALIGN (0x4)
 
-.para           0x0000000082000000        0x0 加载地址 0x0000000020305914
+.para           0x0000000082000000        0x0 加载地址 0x0000000020305a64
                 0x0000000082000000                __para_start = .
  *(.para)
                 0x0000000082000000                __para_end = .
@@ -356,22 +356,22 @@
 .stabstr        0x0000000000000000       0x67
  .stabstr       0x0000000000000000       0x67 cpu/m0/start.o
 
-.debug_info     0x0000000000000000     0x65ab
- .debug_info    0x0000000000000000      0x9a2 lib/libarm.a(board.o)
- .debug_info    0x00000000000009a2      0x22b lib/libarm.a(string.o)
- .debug_info    0x0000000000000bcd      0x329 drivers/libdrivers.a(ddr.o)
- .debug_info    0x0000000000000ef6      0x2a0 drivers/libdrivers.a(uart.o)
- .debug_info    0x0000000000001196      0xdd6 drivers/libdrivers.a(image.o)
- .debug_info    0x0000000000001f6c      0xb01 drivers/libdrivers.a(secure_verify.o)
- .debug_info    0x0000000000002a6d     0x1661 drivers/libdrivers.a(spifc_loader2.o)
- .debug_info    0x00000000000040ce      0x70f drivers/libdrivers.a(bbt.o)
- .debug_info    0x00000000000047dd      0x586 drivers/libdrivers.a(sha256.o)
- .debug_info    0x0000000000004d63      0xd5f drivers/libdrivers.a(nor.o)
- .debug_info    0x0000000000005ac2      0x1e8 drivers/libdrivers.a(drv_hash.o)
- .debug_info    0x0000000000005caa      0x3b4 drivers/libdrivers.a(drv_rsa.o)
- .debug_info    0x000000000000605e      0x20f drivers/libdrivers.a(flash.o)
- .debug_info    0x000000000000626d      0x1c3 drivers/libdrivers.a(efuse.o)
- .debug_info    0x0000000000006430      0x17b cpu/m0/libm0.a(cpu.o)
+.debug_info     0x0000000000000000     0x66af
+ .debug_info    0x0000000000000000      0xaa6 lib/libarm.a(board.o)
+ .debug_info    0x0000000000000aa6      0x22b lib/libarm.a(string.o)
+ .debug_info    0x0000000000000cd1      0x329 drivers/libdrivers.a(ddr.o)
+ .debug_info    0x0000000000000ffa      0x2a0 drivers/libdrivers.a(uart.o)
+ .debug_info    0x000000000000129a      0xdd6 drivers/libdrivers.a(image.o)
+ .debug_info    0x0000000000002070      0xb01 drivers/libdrivers.a(secure_verify.o)
+ .debug_info    0x0000000000002b71     0x1661 drivers/libdrivers.a(spifc_loader2.o)
+ .debug_info    0x00000000000041d2      0x70f drivers/libdrivers.a(bbt.o)
+ .debug_info    0x00000000000048e1      0x586 drivers/libdrivers.a(sha256.o)
+ .debug_info    0x0000000000004e67      0xd5f drivers/libdrivers.a(nor.o)
+ .debug_info    0x0000000000005bc6      0x1e8 drivers/libdrivers.a(drv_hash.o)
+ .debug_info    0x0000000000005dae      0x3b4 drivers/libdrivers.a(drv_rsa.o)
+ .debug_info    0x0000000000006162      0x20f drivers/libdrivers.a(flash.o)
+ .debug_info    0x0000000000006371      0x1c3 drivers/libdrivers.a(efuse.o)
+ .debug_info    0x0000000000006534      0x17b cpu/m0/libm0.a(cpu.o)
 
 .debug_abbrev   0x0000000000000000     0x1c94
  .debug_abbrev  0x0000000000000000      0x304 lib/libarm.a(board.o)
@@ -390,22 +390,22 @@
  .debug_abbrev  0x0000000000001aaf      0x11d drivers/libdrivers.a(efuse.o)
  .debug_abbrev  0x0000000000001bcc       0xc8 cpu/m0/libm0.a(cpu.o)
 
-.debug_loc      0x0000000000000000     0x9737
- .debug_loc     0x0000000000000000      0x345 lib/libarm.a(board.o)
- .debug_loc     0x0000000000000345      0x29d lib/libarm.a(string.o)
- .debug_loc     0x00000000000005e2      0x2d8 drivers/libdrivers.a(ddr.o)
- .debug_loc     0x00000000000008ba      0x228 drivers/libdrivers.a(uart.o)
- .debug_loc     0x0000000000000ae2      0x6a2 drivers/libdrivers.a(image.o)
- .debug_loc     0x0000000000001184      0x790 drivers/libdrivers.a(secure_verify.o)
- .debug_loc     0x0000000000001914      0xef4 drivers/libdrivers.a(spifc_loader2.o)
- .debug_loc     0x0000000000002808      0x282 drivers/libdrivers.a(bbt.o)
- .debug_loc     0x0000000000002a8a     0x5f3f drivers/libdrivers.a(sha256.o)
- .debug_loc     0x00000000000089c9      0x80a drivers/libdrivers.a(nor.o)
- .debug_loc     0x00000000000091d3      0x1b8 drivers/libdrivers.a(drv_hash.o)
- .debug_loc     0x000000000000938b      0x238 drivers/libdrivers.a(drv_rsa.o)
- .debug_loc     0x00000000000095c3       0x1f drivers/libdrivers.a(flash.o)
- .debug_loc     0x00000000000095e2       0xab drivers/libdrivers.a(efuse.o)
- .debug_loc     0x000000000000968d       0xaa cpu/m0/libm0.a(cpu.o)
+.debug_loc      0x0000000000000000     0x9807
+ .debug_loc     0x0000000000000000      0x415 lib/libarm.a(board.o)
+ .debug_loc     0x0000000000000415      0x29d lib/libarm.a(string.o)
+ .debug_loc     0x00000000000006b2      0x2d8 drivers/libdrivers.a(ddr.o)
+ .debug_loc     0x000000000000098a      0x228 drivers/libdrivers.a(uart.o)
+ .debug_loc     0x0000000000000bb2      0x6a2 drivers/libdrivers.a(image.o)
+ .debug_loc     0x0000000000001254      0x790 drivers/libdrivers.a(secure_verify.o)
+ .debug_loc     0x00000000000019e4      0xef4 drivers/libdrivers.a(spifc_loader2.o)
+ .debug_loc     0x00000000000028d8      0x282 drivers/libdrivers.a(bbt.o)
+ .debug_loc     0x0000000000002b5a     0x5f3f drivers/libdrivers.a(sha256.o)
+ .debug_loc     0x0000000000008a99      0x80a drivers/libdrivers.a(nor.o)
+ .debug_loc     0x00000000000092a3      0x1b8 drivers/libdrivers.a(drv_hash.o)
+ .debug_loc     0x000000000000945b      0x238 drivers/libdrivers.a(drv_rsa.o)
+ .debug_loc     0x0000000000009693       0x1f drivers/libdrivers.a(flash.o)
+ .debug_loc     0x00000000000096b2       0xab drivers/libdrivers.a(efuse.o)
+ .debug_loc     0x000000000000975d       0xaa cpu/m0/libm0.a(cpu.o)
 
 .debug_aranges  0x0000000000000000      0x1e0
  .debug_aranges
@@ -449,53 +449,53 @@
  .debug_ranges  0x00000000000001d8       0x28 drivers/libdrivers.a(drv_hash.o)
  .debug_ranges  0x0000000000000200       0x38 drivers/libdrivers.a(drv_rsa.o)
 
-.debug_line     0x0000000000000000     0x203f
- .debug_line    0x0000000000000000      0x3a4 lib/libarm.a(board.o)
- .debug_line    0x00000000000003a4      0x152 lib/libarm.a(string.o)
- .debug_line    0x00000000000004f6      0x299 drivers/libdrivers.a(ddr.o)
- .debug_line    0x000000000000078f      0x112 drivers/libdrivers.a(uart.o)
- .debug_line    0x00000000000008a1      0x3b8 drivers/libdrivers.a(image.o)
- .debug_line    0x0000000000000c59      0x38e drivers/libdrivers.a(secure_verify.o)
- .debug_line    0x0000000000000fe7      0x442 drivers/libdrivers.a(spifc_loader2.o)
- .debug_line    0x0000000000001429      0x251 drivers/libdrivers.a(bbt.o)
- .debug_line    0x000000000000167a      0x2bb drivers/libdrivers.a(sha256.o)
- .debug_line    0x0000000000001935      0x2a2 drivers/libdrivers.a(nor.o)
- .debug_line    0x0000000000001bd7       0x88 drivers/libdrivers.a(drv_hash.o)
- .debug_line    0x0000000000001c5f      0x117 drivers/libdrivers.a(drv_rsa.o)
- .debug_line    0x0000000000001d76      0x10a drivers/libdrivers.a(flash.o)
- .debug_line    0x0000000000001e80      0x118 drivers/libdrivers.a(efuse.o)
- .debug_line    0x0000000000001f98       0xa7 cpu/m0/libm0.a(cpu.o)
+.debug_line     0x0000000000000000     0x2078
+ .debug_line    0x0000000000000000      0x3dd lib/libarm.a(board.o)
+ .debug_line    0x00000000000003dd      0x152 lib/libarm.a(string.o)
+ .debug_line    0x000000000000052f      0x299 drivers/libdrivers.a(ddr.o)
+ .debug_line    0x00000000000007c8      0x112 drivers/libdrivers.a(uart.o)
+ .debug_line    0x00000000000008da      0x3b8 drivers/libdrivers.a(image.o)
+ .debug_line    0x0000000000000c92      0x38e drivers/libdrivers.a(secure_verify.o)
+ .debug_line    0x0000000000001020      0x442 drivers/libdrivers.a(spifc_loader2.o)
+ .debug_line    0x0000000000001462      0x251 drivers/libdrivers.a(bbt.o)
+ .debug_line    0x00000000000016b3      0x2bb drivers/libdrivers.a(sha256.o)
+ .debug_line    0x000000000000196e      0x2a2 drivers/libdrivers.a(nor.o)
+ .debug_line    0x0000000000001c10       0x88 drivers/libdrivers.a(drv_hash.o)
+ .debug_line    0x0000000000001c98      0x117 drivers/libdrivers.a(drv_rsa.o)
+ .debug_line    0x0000000000001daf      0x10a drivers/libdrivers.a(flash.o)
+ .debug_line    0x0000000000001eb9      0x118 drivers/libdrivers.a(efuse.o)
+ .debug_line    0x0000000000001fd1       0xa7 cpu/m0/libm0.a(cpu.o)
 
-.debug_str      0x0000000000000000     0x160a
- .debug_str     0x0000000000000000      0x55d lib/libarm.a(board.o)
-                                        0x5d3 (松开之前的大小)
- .debug_str     0x000000000000055d       0x3f lib/libarm.a(string.o)
+.debug_str      0x0000000000000000     0x1616
+ .debug_str     0x0000000000000000      0x569 lib/libarm.a(board.o)
+                                        0x5df (松开之前的大小)
+ .debug_str     0x0000000000000569       0x3f lib/libarm.a(string.o)
                                         0x214 (松开之前的大小)
- .debug_str     0x000000000000059c       0xa2 drivers/libdrivers.a(ddr.o)
+ .debug_str     0x00000000000005a8       0xa2 drivers/libdrivers.a(ddr.o)
                                         0x216 (松开之前的大小)
- .debug_str     0x000000000000063e       0x94 drivers/libdrivers.a(uart.o)
+ .debug_str     0x000000000000064a       0x94 drivers/libdrivers.a(uart.o)
                                         0x253 (松开之前的大小)
- .debug_str     0x00000000000006d2      0x35b drivers/libdrivers.a(image.o)
+ .debug_str     0x00000000000006de      0x35b drivers/libdrivers.a(image.o)
                                         0x854 (松开之前的大小)
- .debug_str     0x0000000000000a2d      0x2f9 drivers/libdrivers.a(secure_verify.o)
+ .debug_str     0x0000000000000a39      0x2f9 drivers/libdrivers.a(secure_verify.o)
                                         0x61f (松开之前的大小)
- .debug_str     0x0000000000000d26      0x3bb drivers/libdrivers.a(spifc_loader2.o)
+ .debug_str     0x0000000000000d32      0x3bb drivers/libdrivers.a(spifc_loader2.o)
                                         0x6c1 (松开之前的大小)
- .debug_str     0x00000000000010e1      0x103 drivers/libdrivers.a(bbt.o)
+ .debug_str     0x00000000000010ed      0x103 drivers/libdrivers.a(bbt.o)
                                         0x3fe (松开之前的大小)
- .debug_str     0x00000000000011e4       0xc3 drivers/libdrivers.a(sha256.o)
+ .debug_str     0x00000000000011f0       0xc3 drivers/libdrivers.a(sha256.o)
                                         0x2b7 (松开之前的大小)
- .debug_str     0x00000000000012a7      0x1ad drivers/libdrivers.a(nor.o)
+ .debug_str     0x00000000000012b3      0x1ad drivers/libdrivers.a(nor.o)
                                         0x5f3 (松开之前的大小)
- .debug_str     0x0000000000001454       0x87 drivers/libdrivers.a(drv_hash.o)
+ .debug_str     0x0000000000001460       0x87 drivers/libdrivers.a(drv_hash.o)
                                         0x25a (松开之前的大小)
- .debug_str     0x00000000000014db       0x79 drivers/libdrivers.a(drv_rsa.o)
+ .debug_str     0x00000000000014e7       0x79 drivers/libdrivers.a(drv_rsa.o)
                                         0x29c (松开之前的大小)
- .debug_str     0x0000000000001554       0x12 drivers/libdrivers.a(flash.o)
+ .debug_str     0x0000000000001560       0x12 drivers/libdrivers.a(flash.o)
                                         0x2a8 (松开之前的大小)
- .debug_str     0x0000000000001566       0x20 drivers/libdrivers.a(efuse.o)
+ .debug_str     0x0000000000001572       0x20 drivers/libdrivers.a(efuse.o)
                                         0x255 (松开之前的大小)
- .debug_str     0x0000000000001586       0x84 cpu/m0/libm0.a(cpu.o)
+ .debug_str     0x0000000000001592       0x84 cpu/m0/libm0.a(cpu.o)
                                         0x1f8 (松开之前的大小)
 
 .debug_frame    0x0000000000000000      0xaf0
diff --git a/Uboot/boot/prj/zx297520v3/bootrom/dl_on/loader2.bin b/Uboot/boot/prj/zx297520v3/bootrom/dl_on/loader2.bin
index e13e6d9..6cf279f 100755
--- a/Uboot/boot/prj/zx297520v3/bootrom/dl_on/loader2.bin
+++ b/Uboot/boot/prj/zx297520v3/bootrom/dl_on/loader2.bin
Binary files differ
diff --git a/Uboot/boot/prj/zx297520v3/bootrom/dl_on/z-load b/Uboot/boot/prj/zx297520v3/bootrom/dl_on/z-load
index 2bc2831..fea89a9 100755
--- a/Uboot/boot/prj/zx297520v3/bootrom/dl_on/z-load
+++ b/Uboot/boot/prj/zx297520v3/bootrom/dl_on/z-load
Binary files differ
diff --git a/Uboot/boot/prj/zx297520v3/bootrom/dl_on/z-load.map b/Uboot/boot/prj/zx297520v3/bootrom/dl_on/z-load.map
index 07ae1fd..b4ee310 100755
--- a/Uboot/boot/prj/zx297520v3/bootrom/dl_on/z-load.map
+++ b/Uboot/boot/prj/zx297520v3/bootrom/dl_on/z-load.map
@@ -300,20 +300,20 @@
 .stabstr        0x0000000000000000       0x67
  .stabstr       0x0000000000000000       0x67 cpu/m0/start.o
 
-.debug_info     0x0000000000000000     0x34d2
- .debug_info    0x0000000000000000      0x70b lib/libarm.a(board.o)
- .debug_info    0x000000000000070b      0x22b lib/libarm.a(string.o)
- .debug_info    0x0000000000000936      0x329 drivers/libdrivers.a(ddr.o)
- .debug_info    0x0000000000000c5f      0x2a0 drivers/libdrivers.a(uart.o)
- .debug_info    0x0000000000000eff      0x6d3 drivers/libdrivers.a(image.o)
- .debug_info    0x00000000000015d2      0x1c3 drivers/libdrivers.a(efuse.o)
- .debug_info    0x0000000000001795      0x62d drivers/libdrivers.a(secure_verify.o)
- .debug_info    0x0000000000001dc2      0xd5f drivers/libdrivers.a(nor.o)
- .debug_info    0x0000000000002b21      0x1e8 drivers/libdrivers.a(drv_hash.o)
- .debug_info    0x0000000000002d09      0x3b4 drivers/libdrivers.a(drv_rsa.o)
- .debug_info    0x00000000000030bd      0x20f drivers/libdrivers.a(flash.o)
- .debug_info    0x00000000000032cc      0x17b cpu/m0/libm0.a(cpu.o)
- .debug_info    0x0000000000003447       0x8b cpu/m0/libm0.a(clk.o)
+.debug_info     0x0000000000000000     0x34df
+ .debug_info    0x0000000000000000      0x718 lib/libarm.a(board.o)
+ .debug_info    0x0000000000000718      0x22b lib/libarm.a(string.o)
+ .debug_info    0x0000000000000943      0x329 drivers/libdrivers.a(ddr.o)
+ .debug_info    0x0000000000000c6c      0x2a0 drivers/libdrivers.a(uart.o)
+ .debug_info    0x0000000000000f0c      0x6d3 drivers/libdrivers.a(image.o)
+ .debug_info    0x00000000000015df      0x1c3 drivers/libdrivers.a(efuse.o)
+ .debug_info    0x00000000000017a2      0x62d drivers/libdrivers.a(secure_verify.o)
+ .debug_info    0x0000000000001dcf      0xd5f drivers/libdrivers.a(nor.o)
+ .debug_info    0x0000000000002b2e      0x1e8 drivers/libdrivers.a(drv_hash.o)
+ .debug_info    0x0000000000002d16      0x3b4 drivers/libdrivers.a(drv_rsa.o)
+ .debug_info    0x00000000000030ca      0x20f drivers/libdrivers.a(flash.o)
+ .debug_info    0x00000000000032d9      0x17b cpu/m0/libm0.a(cpu.o)
+ .debug_info    0x0000000000003454       0x8b cpu/m0/libm0.a(clk.o)
 
 .debug_abbrev   0x0000000000000000     0x12c2
  .debug_abbrev  0x0000000000000000      0x2b8 lib/libarm.a(board.o)
@@ -395,32 +395,32 @@
  .debug_line    0x000000000000131d       0xa7 cpu/m0/libm0.a(cpu.o)
  .debug_line    0x00000000000013c4       0x61 cpu/m0/libm0.a(clk.o)
 
-.debug_str      0x0000000000000000      0xebb
- .debug_str     0x0000000000000000      0x4d5 lib/libarm.a(board.o)
-                                        0x554 (松开之前的大小)
- .debug_str     0x00000000000004d5       0x4c lib/libarm.a(string.o)
+.debug_str      0x0000000000000000      0xec7
+ .debug_str     0x0000000000000000      0x4e1 lib/libarm.a(board.o)
+                                        0x560 (松开之前的大小)
+ .debug_str     0x00000000000004e1       0x4c lib/libarm.a(string.o)
                                         0x214 (松开之前的大小)
- .debug_str     0x0000000000000521       0xa1 drivers/libdrivers.a(ddr.o)
+ .debug_str     0x000000000000052d       0xa1 drivers/libdrivers.a(ddr.o)
                                         0x216 (松开之前的大小)
- .debug_str     0x00000000000005c2       0x8a drivers/libdrivers.a(uart.o)
+ .debug_str     0x00000000000005ce       0x8a drivers/libdrivers.a(uart.o)
                                         0x253 (松开之前的大小)
- .debug_str     0x000000000000064c      0x229 drivers/libdrivers.a(image.o)
+ .debug_str     0x0000000000000658      0x229 drivers/libdrivers.a(image.o)
                                         0x4a0 (松开之前的大小)
- .debug_str     0x0000000000000875       0x7b drivers/libdrivers.a(efuse.o)
+ .debug_str     0x0000000000000881       0x7b drivers/libdrivers.a(efuse.o)
                                         0x255 (松开之前的大小)
- .debug_str     0x00000000000008f0      0x177 drivers/libdrivers.a(secure_verify.o)
+ .debug_str     0x00000000000008fc      0x177 drivers/libdrivers.a(secure_verify.o)
                                         0x407 (松开之前的大小)
- .debug_str     0x0000000000000a67      0x2c3 drivers/libdrivers.a(nor.o)
+ .debug_str     0x0000000000000a73      0x2c3 drivers/libdrivers.a(nor.o)
                                         0x5f3 (松开之前的大小)
- .debug_str     0x0000000000000d2a       0x87 drivers/libdrivers.a(drv_hash.o)
+ .debug_str     0x0000000000000d36       0x87 drivers/libdrivers.a(drv_hash.o)
                                         0x25a (松开之前的大小)
- .debug_str     0x0000000000000db1       0x79 drivers/libdrivers.a(drv_rsa.o)
+ .debug_str     0x0000000000000dbd       0x79 drivers/libdrivers.a(drv_rsa.o)
                                         0x29c (松开之前的大小)
- .debug_str     0x0000000000000e2a       0x12 drivers/libdrivers.a(flash.o)
+ .debug_str     0x0000000000000e36       0x12 drivers/libdrivers.a(flash.o)
                                         0x2a8 (松开之前的大小)
- .debug_str     0x0000000000000e3c       0x79 cpu/m0/libm0.a(cpu.o)
+ .debug_str     0x0000000000000e48       0x79 cpu/m0/libm0.a(cpu.o)
                                         0x1f8 (松开之前的大小)
- .debug_str     0x0000000000000eb5        0x6 cpu/m0/libm0.a(clk.o)
+ .debug_str     0x0000000000000ec1        0x6 cpu/m0/libm0.a(clk.o)
                                         0x1bd (松开之前的大小)
 
 .debug_frame    0x0000000000000000      0x6a0
diff --git a/Uboot/boot/prj/zx297520v3/bootrom/dl_on/z-load2 b/Uboot/boot/prj/zx297520v3/bootrom/dl_on/z-load2
index aa9d47a..88a41ea 100755
--- a/Uboot/boot/prj/zx297520v3/bootrom/dl_on/z-load2
+++ b/Uboot/boot/prj/zx297520v3/bootrom/dl_on/z-load2
Binary files differ
diff --git a/Uboot/boot/prj/zx297520v3/bootrom/dl_on/z-load2.map b/Uboot/boot/prj/zx297520v3/bootrom/dl_on/z-load2.map
index 0163e41..c906aa5 100755
--- a/Uboot/boot/prj/zx297520v3/bootrom/dl_on/z-load2.map
+++ b/Uboot/boot/prj/zx297520v3/bootrom/dl_on/z-load2.map
@@ -34,7 +34,7 @@
                 0x0000000000000000                . = 0x0
                 0x0000000000000000                . = ALIGN (0x4)
 
-.text           0x0000000020300000     0x4ddc
+.text           0x0000000020300000     0x4ea4
  cpu/m0/start.o(.text)
  .text          0x0000000020300000      0x220 cpu/m0/start.o
                 0x00000000203001a4                _bss_start
@@ -44,7 +44,7 @@
                 0x00000000203001b8                _start
                 0x00000000203001fe                run_at
  *(.text)
- .text          0x0000000020300220      0x4ec lib/libarm.a(board.o)
+ .text          0x0000000020300220      0x5b4 lib/libarm.a(board.o)
                 0x0000000020300220                print_info
                 0x0000000020300230                copy_to_iram1
                 0x0000000020300250                clear_iram
@@ -55,201 +55,201 @@
                 0x0000000020300338                pmu_read
                 0x0000000020300404                pmu_write
                 0x00000000203004d0                start_armboot
- .text          0x000000002030070c       0x80 lib/libarm.a(string.o)
-                0x000000002030070c                strlen
-                0x000000002030071c                memset
-                0x000000002030075e                memcmp
-                0x000000002030077a                memcpy
- .text          0x000000002030078c      0x82c drivers/libdrivers.a(ddr.o)
-                0x000000002030078c                nsdelay
-                0x00000000203007a6                ddr_clk_init
-                0x00000000203007bc                ddr_phy_init
-                0x00000000203008b8                ddr_ctrl_init
-                0x0000000020300c74                ddr_prio_init
-                0x0000000020300d98                ddr_init
- .text          0x0000000020300fb8      0x138 drivers/libdrivers.a(uart.o)
-                0x0000000020300fb8                uart_init
-                0x0000000020301038                uart_putc
-                0x0000000020301060                uart_puts
-                0x0000000020301074                uart_getc
-                0x0000000020301090                uart_tstc
-                0x00000000203010a0                UART_Read
-                0x00000000203010bc                UART_Write
-                0x00000000203010d8                UART_Check_Sync
- .text          0x00000000203010f0      0x338 drivers/libdrivers.a(image.o)
-                0x00000000203010f4                page_align
-                0x000000002030110c                find_partition_para
-                0x000000002030113c                read_image_part_offset
-                0x0000000020301190                read_flags_image
-                0x0000000020301278                read_uboot_image
-                0x0000000020301358                nand_read_m0
-                0x00000000203013c4                read_zloader_image
- .text          0x0000000020301428      0x2b0 drivers/libdrivers.a(secure_verify.o)
-                0x0000000020301446                BIG2SMALL
-                0x0000000020301476                bin2hex
-                0x00000000203014c0                secure_verify_zloader
-                0x00000000203015b4                SecureVerify
- .text          0x00000000203016d8      0x648 drivers/libdrivers.a(spifc_loader2.o)
-                0x00000000203017cc                zDrvGpio_SetFunc
-                0x0000000020301804                zDrvGpio_SetDirection
-                0x0000000020301854                zDrvGpio_SetOutputValue
-                0x0000000020301890                spi_nand_cs
-                0x00000000203018cc                spifc_clear_fifo
-                0x00000000203018e0                spifc_clear_int
-                0x0000000020301a3c                spifc_read_oob
-                0x0000000020301a80                spifc_read_page_raw
-                0x0000000020301abc                spifc_read_page
-                0x0000000020301b38                spifc_read
-                0x0000000020301b7c                read_data
-                0x0000000020301bd0                read_id
-                0x0000000020301c54                spifc_init
-                0x0000000020301cd8                zloader_flash_init
- .text          0x0000000020301d20      0x1c0 drivers/libdrivers.a(bbt.o)
-                0x0000000020301d80                nand_creat_ram_bbt
-                0x0000000020301dc4                nand_search_bbt
-                0x0000000020301e50                nand_creat_bbt
-                0x0000000020301ecc                nand_block_isbad
- .text          0x0000000020301ee0     0x2688 drivers/libdrivers.a(sha256.o)
-                0x0000000020304400                sha256_starts
-                0x0000000020304448                sha256_update
-                0x0000000020304454                sha256_finish
-                0x0000000020304540                sha256_csum_wd
- .text          0x0000000020304568      0x424 drivers/libdrivers.a(nor.o)
-                0x0000000020304568                spifc_enable
-                0x0000000020304598                spifc_disable
-                0x00000000203045bc                spifc_setup_cmd
-                0x0000000020304640                spifc_wait_cmd_end
-                0x000000002030466c                spifc_read_fifo
-                0x00000000203046a8                spifc_start
-                0x00000000203046b8                cmd_seek
-                0x00000000203046d8                nor_read_reg
-                0x0000000020304738                nor_read_id
-                0x00000000203047a0                spi_nor_read
-                0x00000000203047fc                nor_read
-                0x0000000020304850                spi_nor_read_security_register
-                0x00000000203048ac                nor_read_security_register
-                0x0000000020304900                nor_init
-                0x0000000020304950                board_flash_init
- .text          0x000000002030498c       0xa4 drivers/libdrivers.a(drv_hash.o)
-                0x000000002030498c                Hash_Calculate
- .text          0x0000000020304a30      0x174 drivers/libdrivers.a(drv_rsa.o)
-                0x0000000020304a4a                Rsa_Calculate
- .text          0x0000000020304ba4       0x28 drivers/libdrivers.a(flash.o)
-                0x0000000020304ba4                get_boot_mode
- .text          0x0000000020304bcc      0x1bc drivers/libdrivers.a(efuse.o)
-                0x0000000020304bcc                efuse_init
-                0x0000000020304bf0                get_ddr_flag
-                0x0000000020304d10                get_secure_verify_status
-                0x0000000020304d54                get_otp_secure_verify_status
- .text          0x0000000020304d88       0x54 cpu/m0/libm0.a(cpu.o)
-                0x0000000020304d88                timer_init
-                0x0000000020304da0                usdelay
+ .text          0x00000000203007d4       0x80 lib/libarm.a(string.o)
+                0x00000000203007d4                strlen
+                0x00000000203007e4                memset
+                0x0000000020300826                memcmp
+                0x0000000020300842                memcpy
+ .text          0x0000000020300854      0x82c drivers/libdrivers.a(ddr.o)
+                0x0000000020300854                nsdelay
+                0x000000002030086e                ddr_clk_init
+                0x0000000020300884                ddr_phy_init
+                0x0000000020300980                ddr_ctrl_init
+                0x0000000020300d3c                ddr_prio_init
+                0x0000000020300e60                ddr_init
+ .text          0x0000000020301080      0x138 drivers/libdrivers.a(uart.o)
+                0x0000000020301080                uart_init
+                0x0000000020301100                uart_putc
+                0x0000000020301128                uart_puts
+                0x000000002030113c                uart_getc
+                0x0000000020301158                uart_tstc
+                0x0000000020301168                UART_Read
+                0x0000000020301184                UART_Write
+                0x00000000203011a0                UART_Check_Sync
+ .text          0x00000000203011b8      0x338 drivers/libdrivers.a(image.o)
+                0x00000000203011bc                page_align
+                0x00000000203011d4                find_partition_para
+                0x0000000020301204                read_image_part_offset
+                0x0000000020301258                read_flags_image
+                0x0000000020301340                read_uboot_image
+                0x0000000020301420                nand_read_m0
+                0x000000002030148c                read_zloader_image
+ .text          0x00000000203014f0      0x2b0 drivers/libdrivers.a(secure_verify.o)
+                0x000000002030150e                BIG2SMALL
+                0x000000002030153e                bin2hex
+                0x0000000020301588                secure_verify_zloader
+                0x000000002030167c                SecureVerify
+ .text          0x00000000203017a0      0x648 drivers/libdrivers.a(spifc_loader2.o)
+                0x0000000020301894                zDrvGpio_SetFunc
+                0x00000000203018cc                zDrvGpio_SetDirection
+                0x000000002030191c                zDrvGpio_SetOutputValue
+                0x0000000020301958                spi_nand_cs
+                0x0000000020301994                spifc_clear_fifo
+                0x00000000203019a8                spifc_clear_int
+                0x0000000020301b04                spifc_read_oob
+                0x0000000020301b48                spifc_read_page_raw
+                0x0000000020301b84                spifc_read_page
+                0x0000000020301c00                spifc_read
+                0x0000000020301c44                read_data
+                0x0000000020301c98                read_id
+                0x0000000020301d1c                spifc_init
+                0x0000000020301da0                zloader_flash_init
+ .text          0x0000000020301de8      0x1c0 drivers/libdrivers.a(bbt.o)
+                0x0000000020301e48                nand_creat_ram_bbt
+                0x0000000020301e8c                nand_search_bbt
+                0x0000000020301f18                nand_creat_bbt
+                0x0000000020301f94                nand_block_isbad
+ .text          0x0000000020301fa8     0x2688 drivers/libdrivers.a(sha256.o)
+                0x00000000203044c8                sha256_starts
+                0x0000000020304510                sha256_update
+                0x000000002030451c                sha256_finish
+                0x0000000020304608                sha256_csum_wd
+ .text          0x0000000020304630      0x424 drivers/libdrivers.a(nor.o)
+                0x0000000020304630                spifc_enable
+                0x0000000020304660                spifc_disable
+                0x0000000020304684                spifc_setup_cmd
+                0x0000000020304708                spifc_wait_cmd_end
+                0x0000000020304734                spifc_read_fifo
+                0x0000000020304770                spifc_start
+                0x0000000020304780                cmd_seek
+                0x00000000203047a0                nor_read_reg
+                0x0000000020304800                nor_read_id
+                0x0000000020304868                spi_nor_read
+                0x00000000203048c4                nor_read
+                0x0000000020304918                spi_nor_read_security_register
+                0x0000000020304974                nor_read_security_register
+                0x00000000203049c8                nor_init
+                0x0000000020304a18                board_flash_init
+ .text          0x0000000020304a54       0xa4 drivers/libdrivers.a(drv_hash.o)
+                0x0000000020304a54                Hash_Calculate
+ .text          0x0000000020304af8      0x174 drivers/libdrivers.a(drv_rsa.o)
+                0x0000000020304b12                Rsa_Calculate
+ .text          0x0000000020304c6c       0x28 drivers/libdrivers.a(flash.o)
+                0x0000000020304c6c                get_boot_mode
+ .text          0x0000000020304c94      0x1bc drivers/libdrivers.a(efuse.o)
+                0x0000000020304c94                efuse_init
+                0x0000000020304cb8                get_ddr_flag
+                0x0000000020304dd8                get_secure_verify_status
+                0x0000000020304e1c                get_otp_secure_verify_status
+ .text          0x0000000020304e50       0x54 cpu/m0/libm0.a(cpu.o)
+                0x0000000020304e50                timer_init
+                0x0000000020304e68                usdelay
 
-.glue_7         0x0000000020304ddc        0x0
+.glue_7         0x0000000020304ea4        0x0
  .glue_7        0x0000000000000000        0x0 linker stubs
 
-.glue_7t        0x0000000020304ddc        0x0
+.glue_7t        0x0000000020304ea4        0x0
  .glue_7t       0x0000000000000000        0x0 linker stubs
 
-.vfp11_veneer   0x0000000020304ddc        0x0
+.vfp11_veneer   0x0000000020304ea4        0x0
  .vfp11_veneer  0x0000000000000000        0x0 linker stubs
 
-.v4_bx          0x0000000020304ddc        0x0
+.v4_bx          0x0000000020304ea4        0x0
  .v4_bx         0x0000000000000000        0x0 linker stubs
 
-.iplt           0x0000000020304ddc        0x0
+.iplt           0x0000000020304ea4        0x0
  .iplt          0x0000000000000000        0x0 cpu/m0/start.o
-                0x0000000020304ddc                . = ALIGN (0x4)
+                0x0000000020304ea4                . = ALIGN (0x4)
 
-.rodata         0x0000000020304ddc      0x3f0
+.rodata         0x0000000020304ea4      0x3f0
  *(.rodata)
- .rodata        0x0000000020304ddc      0x270 drivers/libdrivers.a(spifc_loader2.o)
- .rodata        0x000000002030504c       0x13 drivers/libdrivers.a(sha256.o)
-                0x000000002030504c                sha256_der_prefix
- *fill*         0x000000002030505f        0x1 
- .rodata        0x0000000020305060      0x16c drivers/libdrivers.a(nor.o)
+ .rodata        0x0000000020304ea4      0x270 drivers/libdrivers.a(spifc_loader2.o)
+ .rodata        0x0000000020305114       0x13 drivers/libdrivers.a(sha256.o)
+                0x0000000020305114                sha256_der_prefix
+ *fill*         0x0000000020305127        0x1 
+ .rodata        0x0000000020305128      0x16c drivers/libdrivers.a(nor.o)
 
-.rodata.str1.1  0x00000000203051cc      0x48d
+.rodata.str1.1  0x0000000020305294      0x516
  .rodata.str1.1
-                0x00000000203051cc      0x18a lib/libarm.a(board.o)
-                                        0x1a3 (松开之前的大小)
+                0x0000000020305294      0x213 lib/libarm.a(board.o)
+                                        0x24e (松开之前的大小)
  .rodata.str1.1
-                0x0000000020305356       0xef drivers/libdrivers.a(image.o)
+                0x00000000203054a7       0xef drivers/libdrivers.a(image.o)
                                         0x115 (松开之前的大小)
  .rodata.str1.1
-                0x0000000020305445       0x5b drivers/libdrivers.a(secure_verify.o)
+                0x0000000020305596       0x5b drivers/libdrivers.a(secure_verify.o)
                                          0x5d (松开之前的大小)
  .rodata.str1.1
-                0x00000000203054a0       0x3d drivers/libdrivers.a(spifc_loader2.o)
+                0x00000000203055f1       0x3d drivers/libdrivers.a(spifc_loader2.o)
                                          0x4a (松开之前的大小)
  .rodata.str1.1
-                0x00000000203054dd        0x9 drivers/libdrivers.a(bbt.o)
+                0x000000002030562e        0x9 drivers/libdrivers.a(bbt.o)
  .rodata.str1.1
-                0x00000000203054e6      0x15c drivers/libdrivers.a(nor.o)
+                0x0000000020305637      0x15c drivers/libdrivers.a(nor.o)
  .rodata.str1.1
-                0x0000000020305642       0x17 drivers/libdrivers.a(efuse.o)
+                0x0000000020305793       0x17 drivers/libdrivers.a(efuse.o)
 
-.rel.dyn        0x000000002030565c        0x0
+.rel.dyn        0x00000000203057ac        0x0
  .rel.iplt      0x0000000000000000        0x0 cpu/m0/start.o
-                0x000000002030565c                . = ALIGN (0x4)
+                0x00000000203057ac                . = ALIGN (0x4)
 
-.data           0x000000002030565c       0xd0
+.data           0x00000000203057ac       0xd0
  *(.data)
- .data          0x000000002030565c        0x0 cpu/m0/start.o
- .data          0x000000002030565c        0x0 lib/libarm.a(board.o)
- .data          0x000000002030565c        0x0 lib/libarm.a(string.o)
- .data          0x000000002030565c        0x0 drivers/libdrivers.a(ddr.o)
- .data          0x000000002030565c        0x0 drivers/libdrivers.a(uart.o)
- .data          0x000000002030565c        0x0 drivers/libdrivers.a(image.o)
- .data          0x000000002030565c        0x0 drivers/libdrivers.a(secure_verify.o)
- .data          0x000000002030565c        0x0 drivers/libdrivers.a(spifc_loader2.o)
- .data          0x000000002030565c       0x40 drivers/libdrivers.a(bbt.o)
- .data          0x000000002030569c       0x40 drivers/libdrivers.a(sha256.o)
- .data          0x00000000203056dc       0x50 drivers/libdrivers.a(nor.o)
-                0x00000000203056dc                nor_cmd_table
- .data          0x000000002030572c        0x0 drivers/libdrivers.a(drv_hash.o)
- .data          0x000000002030572c        0x0 drivers/libdrivers.a(drv_rsa.o)
- .data          0x000000002030572c        0x0 drivers/libdrivers.a(flash.o)
- .data          0x000000002030572c        0x0 drivers/libdrivers.a(efuse.o)
- .data          0x000000002030572c        0x0 cpu/m0/libm0.a(cpu.o)
+ .data          0x00000000203057ac        0x0 cpu/m0/start.o
+ .data          0x00000000203057ac        0x0 lib/libarm.a(board.o)
+ .data          0x00000000203057ac        0x0 lib/libarm.a(string.o)
+ .data          0x00000000203057ac        0x0 drivers/libdrivers.a(ddr.o)
+ .data          0x00000000203057ac        0x0 drivers/libdrivers.a(uart.o)
+ .data          0x00000000203057ac        0x0 drivers/libdrivers.a(image.o)
+ .data          0x00000000203057ac        0x0 drivers/libdrivers.a(secure_verify.o)
+ .data          0x00000000203057ac        0x0 drivers/libdrivers.a(spifc_loader2.o)
+ .data          0x00000000203057ac       0x40 drivers/libdrivers.a(bbt.o)
+ .data          0x00000000203057ec       0x40 drivers/libdrivers.a(sha256.o)
+ .data          0x000000002030582c       0x50 drivers/libdrivers.a(nor.o)
+                0x000000002030582c                nor_cmd_table
+ .data          0x000000002030587c        0x0 drivers/libdrivers.a(drv_hash.o)
+ .data          0x000000002030587c        0x0 drivers/libdrivers.a(drv_rsa.o)
+ .data          0x000000002030587c        0x0 drivers/libdrivers.a(flash.o)
+ .data          0x000000002030587c        0x0 drivers/libdrivers.a(efuse.o)
+ .data          0x000000002030587c        0x0 cpu/m0/libm0.a(cpu.o)
 
-.igot.plt       0x000000002030572c        0x0
+.igot.plt       0x000000002030587c        0x0
  .igot.plt      0x0000000000000000        0x0 cpu/m0/start.o
-                0x000000002030572c                . = ALIGN (0x4)
+                0x000000002030587c                . = ALIGN (0x4)
 
 .got
  *(.got)
-                0x000000002030572c                . = ALIGN (0x4)
-                0x000000002030572c                __bss_start = .
+                0x000000002030587c                . = ALIGN (0x4)
+                0x000000002030587c                __bss_start = .
 
-.bss            0x000000002030572c      0x1e8
+.bss            0x000000002030587c      0x1e8
  *(.bss)
- .bss           0x000000002030572c        0x0 cpu/m0/start.o
- .bss           0x000000002030572c        0x4 lib/libarm.a(board.o)
-                0x000000002030572c                zloader_entry_point
- .bss           0x0000000020305730        0x0 lib/libarm.a(string.o)
- .bss           0x0000000020305730        0x0 drivers/libdrivers.a(ddr.o)
- .bss           0x0000000020305730        0x0 drivers/libdrivers.a(uart.o)
- .bss           0x0000000020305730        0x0 drivers/libdrivers.a(image.o)
- .bss           0x0000000020305730      0x104 drivers/libdrivers.a(secure_verify.o)
-                0x0000000020305730                result
- .bss           0x0000000020305834        0x4 drivers/libdrivers.a(spifc_loader2.o)
- .bss           0x0000000020305838       0x80 drivers/libdrivers.a(bbt.o)
- .bss           0x00000000203058b8        0x0 drivers/libdrivers.a(sha256.o)
- .bss           0x00000000203058b8       0x28 drivers/libdrivers.a(nor.o)
-                0x00000000203058b8                spi_nor_flash
-                0x00000000203058bc                otp_data
- .bss           0x00000000203058e0        0x0 drivers/libdrivers.a(drv_hash.o)
- .bss           0x00000000203058e0        0x0 drivers/libdrivers.a(drv_rsa.o)
- .bss           0x00000000203058e0       0x24 drivers/libdrivers.a(flash.o)
-                0x00000000203058e0                flash
- .bss           0x0000000020305904        0x0 drivers/libdrivers.a(efuse.o)
- .bss           0x0000000020305904       0x10 cpu/m0/libm0.a(cpu.o)
-                0x0000000020305904                g_tick
-                0x0000000020305914                __bss_end = .
-                0x0000000020305914                . = ALIGN (0x4)
+ .bss           0x000000002030587c        0x0 cpu/m0/start.o
+ .bss           0x000000002030587c        0x4 lib/libarm.a(board.o)
+                0x000000002030587c                zloader_entry_point
+ .bss           0x0000000020305880        0x0 lib/libarm.a(string.o)
+ .bss           0x0000000020305880        0x0 drivers/libdrivers.a(ddr.o)
+ .bss           0x0000000020305880        0x0 drivers/libdrivers.a(uart.o)
+ .bss           0x0000000020305880        0x0 drivers/libdrivers.a(image.o)
+ .bss           0x0000000020305880      0x104 drivers/libdrivers.a(secure_verify.o)
+                0x0000000020305880                result
+ .bss           0x0000000020305984        0x4 drivers/libdrivers.a(spifc_loader2.o)
+ .bss           0x0000000020305988       0x80 drivers/libdrivers.a(bbt.o)
+ .bss           0x0000000020305a08        0x0 drivers/libdrivers.a(sha256.o)
+ .bss           0x0000000020305a08       0x28 drivers/libdrivers.a(nor.o)
+                0x0000000020305a08                spi_nor_flash
+                0x0000000020305a0c                otp_data
+ .bss           0x0000000020305a30        0x0 drivers/libdrivers.a(drv_hash.o)
+ .bss           0x0000000020305a30        0x0 drivers/libdrivers.a(drv_rsa.o)
+ .bss           0x0000000020305a30       0x24 drivers/libdrivers.a(flash.o)
+                0x0000000020305a30                flash
+ .bss           0x0000000020305a54        0x0 drivers/libdrivers.a(efuse.o)
+ .bss           0x0000000020305a54       0x10 cpu/m0/libm0.a(cpu.o)
+                0x0000000020305a54                g_tick
+                0x0000000020305a64                __bss_end = .
+                0x0000000020305a64                . = ALIGN (0x4)
 
-.para           0x0000000082000000        0x0 加载地址 0x0000000020305914
+.para           0x0000000082000000        0x0 加载地址 0x0000000020305a64
                 0x0000000082000000                __para_start = .
  *(.para)
                 0x0000000082000000                __para_end = .
@@ -356,22 +356,22 @@
 .stabstr        0x0000000000000000       0x67
  .stabstr       0x0000000000000000       0x67 cpu/m0/start.o
 
-.debug_info     0x0000000000000000     0x65ab
- .debug_info    0x0000000000000000      0x9a2 lib/libarm.a(board.o)
- .debug_info    0x00000000000009a2      0x22b lib/libarm.a(string.o)
- .debug_info    0x0000000000000bcd      0x329 drivers/libdrivers.a(ddr.o)
- .debug_info    0x0000000000000ef6      0x2a0 drivers/libdrivers.a(uart.o)
- .debug_info    0x0000000000001196      0xdd6 drivers/libdrivers.a(image.o)
- .debug_info    0x0000000000001f6c      0xb01 drivers/libdrivers.a(secure_verify.o)
- .debug_info    0x0000000000002a6d     0x1661 drivers/libdrivers.a(spifc_loader2.o)
- .debug_info    0x00000000000040ce      0x70f drivers/libdrivers.a(bbt.o)
- .debug_info    0x00000000000047dd      0x586 drivers/libdrivers.a(sha256.o)
- .debug_info    0x0000000000004d63      0xd5f drivers/libdrivers.a(nor.o)
- .debug_info    0x0000000000005ac2      0x1e8 drivers/libdrivers.a(drv_hash.o)
- .debug_info    0x0000000000005caa      0x3b4 drivers/libdrivers.a(drv_rsa.o)
- .debug_info    0x000000000000605e      0x20f drivers/libdrivers.a(flash.o)
- .debug_info    0x000000000000626d      0x1c3 drivers/libdrivers.a(efuse.o)
- .debug_info    0x0000000000006430      0x17b cpu/m0/libm0.a(cpu.o)
+.debug_info     0x0000000000000000     0x66af
+ .debug_info    0x0000000000000000      0xaa6 lib/libarm.a(board.o)
+ .debug_info    0x0000000000000aa6      0x22b lib/libarm.a(string.o)
+ .debug_info    0x0000000000000cd1      0x329 drivers/libdrivers.a(ddr.o)
+ .debug_info    0x0000000000000ffa      0x2a0 drivers/libdrivers.a(uart.o)
+ .debug_info    0x000000000000129a      0xdd6 drivers/libdrivers.a(image.o)
+ .debug_info    0x0000000000002070      0xb01 drivers/libdrivers.a(secure_verify.o)
+ .debug_info    0x0000000000002b71     0x1661 drivers/libdrivers.a(spifc_loader2.o)
+ .debug_info    0x00000000000041d2      0x70f drivers/libdrivers.a(bbt.o)
+ .debug_info    0x00000000000048e1      0x586 drivers/libdrivers.a(sha256.o)
+ .debug_info    0x0000000000004e67      0xd5f drivers/libdrivers.a(nor.o)
+ .debug_info    0x0000000000005bc6      0x1e8 drivers/libdrivers.a(drv_hash.o)
+ .debug_info    0x0000000000005dae      0x3b4 drivers/libdrivers.a(drv_rsa.o)
+ .debug_info    0x0000000000006162      0x20f drivers/libdrivers.a(flash.o)
+ .debug_info    0x0000000000006371      0x1c3 drivers/libdrivers.a(efuse.o)
+ .debug_info    0x0000000000006534      0x17b cpu/m0/libm0.a(cpu.o)
 
 .debug_abbrev   0x0000000000000000     0x1c94
  .debug_abbrev  0x0000000000000000      0x304 lib/libarm.a(board.o)
@@ -390,22 +390,22 @@
  .debug_abbrev  0x0000000000001aaf      0x11d drivers/libdrivers.a(efuse.o)
  .debug_abbrev  0x0000000000001bcc       0xc8 cpu/m0/libm0.a(cpu.o)
 
-.debug_loc      0x0000000000000000     0x9737
- .debug_loc     0x0000000000000000      0x345 lib/libarm.a(board.o)
- .debug_loc     0x0000000000000345      0x29d lib/libarm.a(string.o)
- .debug_loc     0x00000000000005e2      0x2d8 drivers/libdrivers.a(ddr.o)
- .debug_loc     0x00000000000008ba      0x228 drivers/libdrivers.a(uart.o)
- .debug_loc     0x0000000000000ae2      0x6a2 drivers/libdrivers.a(image.o)
- .debug_loc     0x0000000000001184      0x790 drivers/libdrivers.a(secure_verify.o)
- .debug_loc     0x0000000000001914      0xef4 drivers/libdrivers.a(spifc_loader2.o)
- .debug_loc     0x0000000000002808      0x282 drivers/libdrivers.a(bbt.o)
- .debug_loc     0x0000000000002a8a     0x5f3f drivers/libdrivers.a(sha256.o)
- .debug_loc     0x00000000000089c9      0x80a drivers/libdrivers.a(nor.o)
- .debug_loc     0x00000000000091d3      0x1b8 drivers/libdrivers.a(drv_hash.o)
- .debug_loc     0x000000000000938b      0x238 drivers/libdrivers.a(drv_rsa.o)
- .debug_loc     0x00000000000095c3       0x1f drivers/libdrivers.a(flash.o)
- .debug_loc     0x00000000000095e2       0xab drivers/libdrivers.a(efuse.o)
- .debug_loc     0x000000000000968d       0xaa cpu/m0/libm0.a(cpu.o)
+.debug_loc      0x0000000000000000     0x9807
+ .debug_loc     0x0000000000000000      0x415 lib/libarm.a(board.o)
+ .debug_loc     0x0000000000000415      0x29d lib/libarm.a(string.o)
+ .debug_loc     0x00000000000006b2      0x2d8 drivers/libdrivers.a(ddr.o)
+ .debug_loc     0x000000000000098a      0x228 drivers/libdrivers.a(uart.o)
+ .debug_loc     0x0000000000000bb2      0x6a2 drivers/libdrivers.a(image.o)
+ .debug_loc     0x0000000000001254      0x790 drivers/libdrivers.a(secure_verify.o)
+ .debug_loc     0x00000000000019e4      0xef4 drivers/libdrivers.a(spifc_loader2.o)
+ .debug_loc     0x00000000000028d8      0x282 drivers/libdrivers.a(bbt.o)
+ .debug_loc     0x0000000000002b5a     0x5f3f drivers/libdrivers.a(sha256.o)
+ .debug_loc     0x0000000000008a99      0x80a drivers/libdrivers.a(nor.o)
+ .debug_loc     0x00000000000092a3      0x1b8 drivers/libdrivers.a(drv_hash.o)
+ .debug_loc     0x000000000000945b      0x238 drivers/libdrivers.a(drv_rsa.o)
+ .debug_loc     0x0000000000009693       0x1f drivers/libdrivers.a(flash.o)
+ .debug_loc     0x00000000000096b2       0xab drivers/libdrivers.a(efuse.o)
+ .debug_loc     0x000000000000975d       0xaa cpu/m0/libm0.a(cpu.o)
 
 .debug_aranges  0x0000000000000000      0x1e0
  .debug_aranges
@@ -449,53 +449,53 @@
  .debug_ranges  0x00000000000001d8       0x28 drivers/libdrivers.a(drv_hash.o)
  .debug_ranges  0x0000000000000200       0x38 drivers/libdrivers.a(drv_rsa.o)
 
-.debug_line     0x0000000000000000     0x203f
- .debug_line    0x0000000000000000      0x3a4 lib/libarm.a(board.o)
- .debug_line    0x00000000000003a4      0x152 lib/libarm.a(string.o)
- .debug_line    0x00000000000004f6      0x299 drivers/libdrivers.a(ddr.o)
- .debug_line    0x000000000000078f      0x112 drivers/libdrivers.a(uart.o)
- .debug_line    0x00000000000008a1      0x3b8 drivers/libdrivers.a(image.o)
- .debug_line    0x0000000000000c59      0x38e drivers/libdrivers.a(secure_verify.o)
- .debug_line    0x0000000000000fe7      0x442 drivers/libdrivers.a(spifc_loader2.o)
- .debug_line    0x0000000000001429      0x251 drivers/libdrivers.a(bbt.o)
- .debug_line    0x000000000000167a      0x2bb drivers/libdrivers.a(sha256.o)
- .debug_line    0x0000000000001935      0x2a2 drivers/libdrivers.a(nor.o)
- .debug_line    0x0000000000001bd7       0x88 drivers/libdrivers.a(drv_hash.o)
- .debug_line    0x0000000000001c5f      0x117 drivers/libdrivers.a(drv_rsa.o)
- .debug_line    0x0000000000001d76      0x10a drivers/libdrivers.a(flash.o)
- .debug_line    0x0000000000001e80      0x118 drivers/libdrivers.a(efuse.o)
- .debug_line    0x0000000000001f98       0xa7 cpu/m0/libm0.a(cpu.o)
+.debug_line     0x0000000000000000     0x2078
+ .debug_line    0x0000000000000000      0x3dd lib/libarm.a(board.o)
+ .debug_line    0x00000000000003dd      0x152 lib/libarm.a(string.o)
+ .debug_line    0x000000000000052f      0x299 drivers/libdrivers.a(ddr.o)
+ .debug_line    0x00000000000007c8      0x112 drivers/libdrivers.a(uart.o)
+ .debug_line    0x00000000000008da      0x3b8 drivers/libdrivers.a(image.o)
+ .debug_line    0x0000000000000c92      0x38e drivers/libdrivers.a(secure_verify.o)
+ .debug_line    0x0000000000001020      0x442 drivers/libdrivers.a(spifc_loader2.o)
+ .debug_line    0x0000000000001462      0x251 drivers/libdrivers.a(bbt.o)
+ .debug_line    0x00000000000016b3      0x2bb drivers/libdrivers.a(sha256.o)
+ .debug_line    0x000000000000196e      0x2a2 drivers/libdrivers.a(nor.o)
+ .debug_line    0x0000000000001c10       0x88 drivers/libdrivers.a(drv_hash.o)
+ .debug_line    0x0000000000001c98      0x117 drivers/libdrivers.a(drv_rsa.o)
+ .debug_line    0x0000000000001daf      0x10a drivers/libdrivers.a(flash.o)
+ .debug_line    0x0000000000001eb9      0x118 drivers/libdrivers.a(efuse.o)
+ .debug_line    0x0000000000001fd1       0xa7 cpu/m0/libm0.a(cpu.o)
 
-.debug_str      0x0000000000000000     0x160a
- .debug_str     0x0000000000000000      0x55d lib/libarm.a(board.o)
-                                        0x5d3 (松开之前的大小)
- .debug_str     0x000000000000055d       0x3f lib/libarm.a(string.o)
+.debug_str      0x0000000000000000     0x1616
+ .debug_str     0x0000000000000000      0x569 lib/libarm.a(board.o)
+                                        0x5df (松开之前的大小)
+ .debug_str     0x0000000000000569       0x3f lib/libarm.a(string.o)
                                         0x214 (松开之前的大小)
- .debug_str     0x000000000000059c       0xa2 drivers/libdrivers.a(ddr.o)
+ .debug_str     0x00000000000005a8       0xa2 drivers/libdrivers.a(ddr.o)
                                         0x216 (松开之前的大小)
- .debug_str     0x000000000000063e       0x94 drivers/libdrivers.a(uart.o)
+ .debug_str     0x000000000000064a       0x94 drivers/libdrivers.a(uart.o)
                                         0x253 (松开之前的大小)
- .debug_str     0x00000000000006d2      0x35b drivers/libdrivers.a(image.o)
+ .debug_str     0x00000000000006de      0x35b drivers/libdrivers.a(image.o)
                                         0x854 (松开之前的大小)
- .debug_str     0x0000000000000a2d      0x2f9 drivers/libdrivers.a(secure_verify.o)
+ .debug_str     0x0000000000000a39      0x2f9 drivers/libdrivers.a(secure_verify.o)
                                         0x61f (松开之前的大小)
- .debug_str     0x0000000000000d26      0x3bb drivers/libdrivers.a(spifc_loader2.o)
+ .debug_str     0x0000000000000d32      0x3bb drivers/libdrivers.a(spifc_loader2.o)
                                         0x6c1 (松开之前的大小)
- .debug_str     0x00000000000010e1      0x103 drivers/libdrivers.a(bbt.o)
+ .debug_str     0x00000000000010ed      0x103 drivers/libdrivers.a(bbt.o)
                                         0x3fe (松开之前的大小)
- .debug_str     0x00000000000011e4       0xc3 drivers/libdrivers.a(sha256.o)
+ .debug_str     0x00000000000011f0       0xc3 drivers/libdrivers.a(sha256.o)
                                         0x2b7 (松开之前的大小)
- .debug_str     0x00000000000012a7      0x1ad drivers/libdrivers.a(nor.o)
+ .debug_str     0x00000000000012b3      0x1ad drivers/libdrivers.a(nor.o)
                                         0x5f3 (松开之前的大小)
- .debug_str     0x0000000000001454       0x87 drivers/libdrivers.a(drv_hash.o)
+ .debug_str     0x0000000000001460       0x87 drivers/libdrivers.a(drv_hash.o)
                                         0x25a (松开之前的大小)
- .debug_str     0x00000000000014db       0x79 drivers/libdrivers.a(drv_rsa.o)
+ .debug_str     0x00000000000014e7       0x79 drivers/libdrivers.a(drv_rsa.o)
                                         0x29c (松开之前的大小)
- .debug_str     0x0000000000001554       0x12 drivers/libdrivers.a(flash.o)
+ .debug_str     0x0000000000001560       0x12 drivers/libdrivers.a(flash.o)
                                         0x2a8 (松开之前的大小)
- .debug_str     0x0000000000001566       0x20 drivers/libdrivers.a(efuse.o)
+ .debug_str     0x0000000000001572       0x20 drivers/libdrivers.a(efuse.o)
                                         0x255 (松开之前的大小)
- .debug_str     0x0000000000001586       0x84 cpu/m0/libm0.a(cpu.o)
+ .debug_str     0x0000000000001592       0x84 cpu/m0/libm0.a(cpu.o)
                                         0x1f8 (松开之前的大小)
 
 .debug_frame    0x0000000000000000      0xaf0
diff --git a/Uboot/boot/prj/zx297520v3/bootrom2/dl_off/loader2.bin b/Uboot/boot/prj/zx297520v3/bootrom2/dl_off/loader2.bin
index 16a20a9..dc24875 100755
--- a/Uboot/boot/prj/zx297520v3/bootrom2/dl_off/loader2.bin
+++ b/Uboot/boot/prj/zx297520v3/bootrom2/dl_off/loader2.bin
Binary files differ
diff --git a/Uboot/boot/prj/zx297520v3/bootrom2/dl_off/z-load b/Uboot/boot/prj/zx297520v3/bootrom2/dl_off/z-load
index 0134c20..449447a 100755
--- a/Uboot/boot/prj/zx297520v3/bootrom2/dl_off/z-load
+++ b/Uboot/boot/prj/zx297520v3/bootrom2/dl_off/z-load
Binary files differ
diff --git a/Uboot/boot/prj/zx297520v3/bootrom2/dl_off/z-load.map b/Uboot/boot/prj/zx297520v3/bootrom2/dl_off/z-load.map
index 72c0ac3..71722dc 100755
--- a/Uboot/boot/prj/zx297520v3/bootrom2/dl_off/z-load.map
+++ b/Uboot/boot/prj/zx297520v3/bootrom2/dl_off/z-load.map
@@ -300,20 +300,20 @@
 .stabstr        0x0000000000000000       0x67
  .stabstr       0x0000000000000000       0x67 cpu/m0/start.o
 
-.debug_info     0x0000000000000000     0x34d5
- .debug_info    0x0000000000000000      0x70e lib/libarm.a(board.o)
- .debug_info    0x000000000000070e      0x22b lib/libarm.a(string.o)
- .debug_info    0x0000000000000939      0x329 drivers/libdrivers.a(ddr.o)
- .debug_info    0x0000000000000c62      0x2a0 drivers/libdrivers.a(uart.o)
- .debug_info    0x0000000000000f02      0x6d3 drivers/libdrivers.a(image.o)
- .debug_info    0x00000000000015d5      0x1c3 drivers/libdrivers.a(efuse.o)
- .debug_info    0x0000000000001798      0x62d drivers/libdrivers.a(secure_verify.o)
- .debug_info    0x0000000000001dc5      0xd5f drivers/libdrivers.a(nor.o)
- .debug_info    0x0000000000002b24      0x1e8 drivers/libdrivers.a(drv_hash.o)
- .debug_info    0x0000000000002d0c      0x3b4 drivers/libdrivers.a(drv_rsa.o)
- .debug_info    0x00000000000030c0      0x20f drivers/libdrivers.a(flash.o)
- .debug_info    0x00000000000032cf      0x17b cpu/m0/libm0.a(cpu.o)
- .debug_info    0x000000000000344a       0x8b cpu/m0/libm0.a(clk.o)
+.debug_info     0x0000000000000000     0x34e2
+ .debug_info    0x0000000000000000      0x71b lib/libarm.a(board.o)
+ .debug_info    0x000000000000071b      0x22b lib/libarm.a(string.o)
+ .debug_info    0x0000000000000946      0x329 drivers/libdrivers.a(ddr.o)
+ .debug_info    0x0000000000000c6f      0x2a0 drivers/libdrivers.a(uart.o)
+ .debug_info    0x0000000000000f0f      0x6d3 drivers/libdrivers.a(image.o)
+ .debug_info    0x00000000000015e2      0x1c3 drivers/libdrivers.a(efuse.o)
+ .debug_info    0x00000000000017a5      0x62d drivers/libdrivers.a(secure_verify.o)
+ .debug_info    0x0000000000001dd2      0xd5f drivers/libdrivers.a(nor.o)
+ .debug_info    0x0000000000002b31      0x1e8 drivers/libdrivers.a(drv_hash.o)
+ .debug_info    0x0000000000002d19      0x3b4 drivers/libdrivers.a(drv_rsa.o)
+ .debug_info    0x00000000000030cd      0x20f drivers/libdrivers.a(flash.o)
+ .debug_info    0x00000000000032dc      0x17b cpu/m0/libm0.a(cpu.o)
+ .debug_info    0x0000000000003457       0x8b cpu/m0/libm0.a(clk.o)
 
 .debug_abbrev   0x0000000000000000     0x12c2
  .debug_abbrev  0x0000000000000000      0x2b8 lib/libarm.a(board.o)
@@ -395,32 +395,32 @@
  .debug_line    0x000000000000132b       0xa7 cpu/m0/libm0.a(cpu.o)
  .debug_line    0x00000000000013d2       0x61 cpu/m0/libm0.a(clk.o)
 
-.debug_str      0x0000000000000000      0xebb
- .debug_str     0x0000000000000000      0x4d5 lib/libarm.a(board.o)
-                                        0x554 (松开之前的大小)
- .debug_str     0x00000000000004d5       0x4c lib/libarm.a(string.o)
+.debug_str      0x0000000000000000      0xec7
+ .debug_str     0x0000000000000000      0x4e1 lib/libarm.a(board.o)
+                                        0x560 (松开之前的大小)
+ .debug_str     0x00000000000004e1       0x4c lib/libarm.a(string.o)
                                         0x214 (松开之前的大小)
- .debug_str     0x0000000000000521       0xa1 drivers/libdrivers.a(ddr.o)
+ .debug_str     0x000000000000052d       0xa1 drivers/libdrivers.a(ddr.o)
                                         0x216 (松开之前的大小)
- .debug_str     0x00000000000005c2       0x8a drivers/libdrivers.a(uart.o)
+ .debug_str     0x00000000000005ce       0x8a drivers/libdrivers.a(uart.o)
                                         0x253 (松开之前的大小)
- .debug_str     0x000000000000064c      0x229 drivers/libdrivers.a(image.o)
+ .debug_str     0x0000000000000658      0x229 drivers/libdrivers.a(image.o)
                                         0x4a0 (松开之前的大小)
- .debug_str     0x0000000000000875       0x7b drivers/libdrivers.a(efuse.o)
+ .debug_str     0x0000000000000881       0x7b drivers/libdrivers.a(efuse.o)
                                         0x255 (松开之前的大小)
- .debug_str     0x00000000000008f0      0x177 drivers/libdrivers.a(secure_verify.o)
+ .debug_str     0x00000000000008fc      0x177 drivers/libdrivers.a(secure_verify.o)
                                         0x407 (松开之前的大小)
- .debug_str     0x0000000000000a67      0x2c3 drivers/libdrivers.a(nor.o)
+ .debug_str     0x0000000000000a73      0x2c3 drivers/libdrivers.a(nor.o)
                                         0x5f3 (松开之前的大小)
- .debug_str     0x0000000000000d2a       0x87 drivers/libdrivers.a(drv_hash.o)
+ .debug_str     0x0000000000000d36       0x87 drivers/libdrivers.a(drv_hash.o)
                                         0x25a (松开之前的大小)
- .debug_str     0x0000000000000db1       0x79 drivers/libdrivers.a(drv_rsa.o)
+ .debug_str     0x0000000000000dbd       0x79 drivers/libdrivers.a(drv_rsa.o)
                                         0x29c (松开之前的大小)
- .debug_str     0x0000000000000e2a       0x12 drivers/libdrivers.a(flash.o)
+ .debug_str     0x0000000000000e36       0x12 drivers/libdrivers.a(flash.o)
                                         0x2a8 (松开之前的大小)
- .debug_str     0x0000000000000e3c       0x79 cpu/m0/libm0.a(cpu.o)
+ .debug_str     0x0000000000000e48       0x79 cpu/m0/libm0.a(cpu.o)
                                         0x1f8 (松开之前的大小)
- .debug_str     0x0000000000000eb5        0x6 cpu/m0/libm0.a(clk.o)
+ .debug_str     0x0000000000000ec1        0x6 cpu/m0/libm0.a(clk.o)
                                         0x1bd (松开之前的大小)
 
 .debug_frame    0x0000000000000000      0x6a0
diff --git a/Uboot/boot/prj/zx297520v3/bootrom2/dl_off/z-load2 b/Uboot/boot/prj/zx297520v3/bootrom2/dl_off/z-load2
index cbc092e..44de20a 100755
--- a/Uboot/boot/prj/zx297520v3/bootrom2/dl_off/z-load2
+++ b/Uboot/boot/prj/zx297520v3/bootrom2/dl_off/z-load2
Binary files differ
diff --git a/Uboot/boot/prj/zx297520v3/bootrom2/dl_off/z-load2.map b/Uboot/boot/prj/zx297520v3/bootrom2/dl_off/z-load2.map
index 69d87e4..d4b4270 100755
--- a/Uboot/boot/prj/zx297520v3/bootrom2/dl_off/z-load2.map
+++ b/Uboot/boot/prj/zx297520v3/bootrom2/dl_off/z-load2.map
@@ -34,7 +34,7 @@
                 0x0000000000000000                . = 0x0
                 0x0000000000000000                . = ALIGN (0x4)
 
-.text           0x0000000020300000     0x4d44
+.text           0x0000000020300000     0x4e0c
  cpu/m0/start.o(.text)
  .text          0x0000000020300000      0x220 cpu/m0/start.o
                 0x00000000203001a4                _bss_start
@@ -44,7 +44,7 @@
                 0x00000000203001b8                _start
                 0x00000000203001fe                run_at
  *(.text)
- .text          0x0000000020300220      0x454 lib/libarm.a(board.o)
+ .text          0x0000000020300220      0x51c lib/libarm.a(board.o)
                 0x0000000020300220                print_info
                 0x0000000020300230                copy_to_iram1
                 0x0000000020300250                clear_iram
@@ -55,201 +55,201 @@
                 0x0000000020300338                pmu_read
                 0x0000000020300404                pmu_write
                 0x00000000203004d0                start_armboot
- .text          0x0000000020300674       0x80 lib/libarm.a(string.o)
-                0x0000000020300674                strlen
-                0x0000000020300684                memset
-                0x00000000203006c6                memcmp
-                0x00000000203006e2                memcpy
- .text          0x00000000203006f4      0x138 drivers/libdrivers.a(uart.o)
-                0x00000000203006f4                uart_init
-                0x0000000020300774                uart_putc
-                0x000000002030079c                uart_puts
-                0x00000000203007b0                uart_getc
-                0x00000000203007cc                uart_tstc
-                0x00000000203007dc                UART_Read
-                0x00000000203007f8                UART_Write
-                0x0000000020300814                UART_Check_Sync
- .text          0x000000002030082c      0x338 drivers/libdrivers.a(image.o)
-                0x0000000020300830                page_align
-                0x0000000020300848                find_partition_para
-                0x0000000020300878                read_image_part_offset
-                0x00000000203008cc                read_flags_image
-                0x00000000203009b4                read_uboot_image
-                0x0000000020300a94                nand_read_m0
-                0x0000000020300b00                read_zloader_image
- .text          0x0000000020300b64      0x2b0 drivers/libdrivers.a(secure_verify.o)
-                0x0000000020300b82                BIG2SMALL
-                0x0000000020300bb2                bin2hex
-                0x0000000020300bfc                secure_verify_zloader
-                0x0000000020300cf0                SecureVerify
- .text          0x0000000020300e14      0x648 drivers/libdrivers.a(spifc_loader2.o)
-                0x0000000020300f08                zDrvGpio_SetFunc
-                0x0000000020300f40                zDrvGpio_SetDirection
-                0x0000000020300f90                zDrvGpio_SetOutputValue
-                0x0000000020300fcc                spi_nand_cs
-                0x0000000020301008                spifc_clear_fifo
-                0x000000002030101c                spifc_clear_int
-                0x0000000020301178                spifc_read_oob
-                0x00000000203011bc                spifc_read_page_raw
-                0x00000000203011f8                spifc_read_page
-                0x0000000020301274                spifc_read
-                0x00000000203012b8                read_data
-                0x000000002030130c                read_id
-                0x0000000020301390                spifc_init
-                0x0000000020301414                zloader_flash_init
- .text          0x000000002030145c      0x1c0 drivers/libdrivers.a(bbt.o)
-                0x00000000203014bc                nand_creat_ram_bbt
-                0x0000000020301500                nand_search_bbt
-                0x000000002030158c                nand_creat_bbt
-                0x0000000020301608                nand_block_isbad
- .text          0x000000002030161c     0x2688 drivers/libdrivers.a(sha256.o)
-                0x0000000020303b3c                sha256_starts
-                0x0000000020303b84                sha256_update
-                0x0000000020303b90                sha256_finish
-                0x0000000020303c7c                sha256_csum_wd
- .text          0x0000000020303ca4      0x424 drivers/libdrivers.a(nor.o)
-                0x0000000020303ca4                spifc_enable
-                0x0000000020303cd4                spifc_disable
-                0x0000000020303cf8                spifc_setup_cmd
-                0x0000000020303d7c                spifc_wait_cmd_end
-                0x0000000020303da8                spifc_read_fifo
-                0x0000000020303de4                spifc_start
-                0x0000000020303df4                cmd_seek
-                0x0000000020303e14                nor_read_reg
-                0x0000000020303e74                nor_read_id
-                0x0000000020303edc                spi_nor_read
-                0x0000000020303f38                nor_read
-                0x0000000020303f8c                spi_nor_read_security_register
-                0x0000000020303fe8                nor_read_security_register
-                0x000000002030403c                nor_init
-                0x000000002030408c                board_flash_init
- .text          0x00000000203040c8      0x82c drivers/libdrivers.a(ddr.o)
-                0x00000000203040c8                nsdelay
-                0x00000000203040e2                ddr_clk_init
-                0x00000000203040f8                ddr_phy_init
-                0x00000000203041f4                ddr_ctrl_init
-                0x00000000203045b0                ddr_prio_init
-                0x00000000203046d4                ddr_init
- .text          0x00000000203048f4       0xa4 drivers/libdrivers.a(drv_hash.o)
-                0x00000000203048f4                Hash_Calculate
- .text          0x0000000020304998      0x174 drivers/libdrivers.a(drv_rsa.o)
-                0x00000000203049b2                Rsa_Calculate
- .text          0x0000000020304b0c       0x28 drivers/libdrivers.a(flash.o)
-                0x0000000020304b0c                get_boot_mode
- .text          0x0000000020304b34      0x1bc drivers/libdrivers.a(efuse.o)
-                0x0000000020304b34                efuse_init
-                0x0000000020304b58                get_ddr_flag
-                0x0000000020304c78                get_secure_verify_status
-                0x0000000020304cbc                get_otp_secure_verify_status
- .text          0x0000000020304cf0       0x54 cpu/m0/libm0.a(cpu.o)
-                0x0000000020304cf0                timer_init
-                0x0000000020304d08                usdelay
+ .text          0x000000002030073c       0x80 lib/libarm.a(string.o)
+                0x000000002030073c                strlen
+                0x000000002030074c                memset
+                0x000000002030078e                memcmp
+                0x00000000203007aa                memcpy
+ .text          0x00000000203007bc      0x138 drivers/libdrivers.a(uart.o)
+                0x00000000203007bc                uart_init
+                0x000000002030083c                uart_putc
+                0x0000000020300864                uart_puts
+                0x0000000020300878                uart_getc
+                0x0000000020300894                uart_tstc
+                0x00000000203008a4                UART_Read
+                0x00000000203008c0                UART_Write
+                0x00000000203008dc                UART_Check_Sync
+ .text          0x00000000203008f4      0x338 drivers/libdrivers.a(image.o)
+                0x00000000203008f8                page_align
+                0x0000000020300910                find_partition_para
+                0x0000000020300940                read_image_part_offset
+                0x0000000020300994                read_flags_image
+                0x0000000020300a7c                read_uboot_image
+                0x0000000020300b5c                nand_read_m0
+                0x0000000020300bc8                read_zloader_image
+ .text          0x0000000020300c2c      0x2b0 drivers/libdrivers.a(secure_verify.o)
+                0x0000000020300c4a                BIG2SMALL
+                0x0000000020300c7a                bin2hex
+                0x0000000020300cc4                secure_verify_zloader
+                0x0000000020300db8                SecureVerify
+ .text          0x0000000020300edc      0x648 drivers/libdrivers.a(spifc_loader2.o)
+                0x0000000020300fd0                zDrvGpio_SetFunc
+                0x0000000020301008                zDrvGpio_SetDirection
+                0x0000000020301058                zDrvGpio_SetOutputValue
+                0x0000000020301094                spi_nand_cs
+                0x00000000203010d0                spifc_clear_fifo
+                0x00000000203010e4                spifc_clear_int
+                0x0000000020301240                spifc_read_oob
+                0x0000000020301284                spifc_read_page_raw
+                0x00000000203012c0                spifc_read_page
+                0x000000002030133c                spifc_read
+                0x0000000020301380                read_data
+                0x00000000203013d4                read_id
+                0x0000000020301458                spifc_init
+                0x00000000203014dc                zloader_flash_init
+ .text          0x0000000020301524      0x1c0 drivers/libdrivers.a(bbt.o)
+                0x0000000020301584                nand_creat_ram_bbt
+                0x00000000203015c8                nand_search_bbt
+                0x0000000020301654                nand_creat_bbt
+                0x00000000203016d0                nand_block_isbad
+ .text          0x00000000203016e4     0x2688 drivers/libdrivers.a(sha256.o)
+                0x0000000020303c04                sha256_starts
+                0x0000000020303c4c                sha256_update
+                0x0000000020303c58                sha256_finish
+                0x0000000020303d44                sha256_csum_wd
+ .text          0x0000000020303d6c      0x424 drivers/libdrivers.a(nor.o)
+                0x0000000020303d6c                spifc_enable
+                0x0000000020303d9c                spifc_disable
+                0x0000000020303dc0                spifc_setup_cmd
+                0x0000000020303e44                spifc_wait_cmd_end
+                0x0000000020303e70                spifc_read_fifo
+                0x0000000020303eac                spifc_start
+                0x0000000020303ebc                cmd_seek
+                0x0000000020303edc                nor_read_reg
+                0x0000000020303f3c                nor_read_id
+                0x0000000020303fa4                spi_nor_read
+                0x0000000020304000                nor_read
+                0x0000000020304054                spi_nor_read_security_register
+                0x00000000203040b0                nor_read_security_register
+                0x0000000020304104                nor_init
+                0x0000000020304154                board_flash_init
+ .text          0x0000000020304190      0x82c drivers/libdrivers.a(ddr.o)
+                0x0000000020304190                nsdelay
+                0x00000000203041aa                ddr_clk_init
+                0x00000000203041c0                ddr_phy_init
+                0x00000000203042bc                ddr_ctrl_init
+                0x0000000020304678                ddr_prio_init
+                0x000000002030479c                ddr_init
+ .text          0x00000000203049bc       0xa4 drivers/libdrivers.a(drv_hash.o)
+                0x00000000203049bc                Hash_Calculate
+ .text          0x0000000020304a60      0x174 drivers/libdrivers.a(drv_rsa.o)
+                0x0000000020304a7a                Rsa_Calculate
+ .text          0x0000000020304bd4       0x28 drivers/libdrivers.a(flash.o)
+                0x0000000020304bd4                get_boot_mode
+ .text          0x0000000020304bfc      0x1bc drivers/libdrivers.a(efuse.o)
+                0x0000000020304bfc                efuse_init
+                0x0000000020304c20                get_ddr_flag
+                0x0000000020304d40                get_secure_verify_status
+                0x0000000020304d84                get_otp_secure_verify_status
+ .text          0x0000000020304db8       0x54 cpu/m0/libm0.a(cpu.o)
+                0x0000000020304db8                timer_init
+                0x0000000020304dd0                usdelay
 
-.glue_7         0x0000000020304d44        0x0
+.glue_7         0x0000000020304e0c        0x0
  .glue_7        0x0000000000000000        0x0 linker stubs
 
-.glue_7t        0x0000000020304d44        0x0
+.glue_7t        0x0000000020304e0c        0x0
  .glue_7t       0x0000000000000000        0x0 linker stubs
 
-.vfp11_veneer   0x0000000020304d44        0x0
+.vfp11_veneer   0x0000000020304e0c        0x0
  .vfp11_veneer  0x0000000000000000        0x0 linker stubs
 
-.v4_bx          0x0000000020304d44        0x0
+.v4_bx          0x0000000020304e0c        0x0
  .v4_bx         0x0000000000000000        0x0 linker stubs
 
-.iplt           0x0000000020304d44        0x0
+.iplt           0x0000000020304e0c        0x0
  .iplt          0x0000000000000000        0x0 cpu/m0/start.o
-                0x0000000020304d44                . = ALIGN (0x4)
+                0x0000000020304e0c                . = ALIGN (0x4)
 
-.rodata         0x0000000020304d44      0x3f0
+.rodata         0x0000000020304e0c      0x3f0
  *(.rodata)
- .rodata        0x0000000020304d44      0x270 drivers/libdrivers.a(spifc_loader2.o)
- .rodata        0x0000000020304fb4       0x13 drivers/libdrivers.a(sha256.o)
-                0x0000000020304fb4                sha256_der_prefix
- *fill*         0x0000000020304fc7        0x1 
- .rodata        0x0000000020304fc8      0x16c drivers/libdrivers.a(nor.o)
+ .rodata        0x0000000020304e0c      0x270 drivers/libdrivers.a(spifc_loader2.o)
+ .rodata        0x000000002030507c       0x13 drivers/libdrivers.a(sha256.o)
+                0x000000002030507c                sha256_der_prefix
+ *fill*         0x000000002030508f        0x1 
+ .rodata        0x0000000020305090      0x16c drivers/libdrivers.a(nor.o)
 
-.rodata.str1.1  0x0000000020305134      0x48d
+.rodata.str1.1  0x00000000203051fc      0x516
  .rodata.str1.1
-                0x0000000020305134      0x18a lib/libarm.a(board.o)
-                                        0x1a3 (松开之前的大小)
+                0x00000000203051fc      0x213 lib/libarm.a(board.o)
+                                        0x24e (松开之前的大小)
  .rodata.str1.1
-                0x00000000203052be       0xef drivers/libdrivers.a(image.o)
+                0x000000002030540f       0xef drivers/libdrivers.a(image.o)
                                         0x115 (松开之前的大小)
  .rodata.str1.1
-                0x00000000203053ad       0x5b drivers/libdrivers.a(secure_verify.o)
+                0x00000000203054fe       0x5b drivers/libdrivers.a(secure_verify.o)
                                          0x5d (松开之前的大小)
  .rodata.str1.1
-                0x0000000020305408       0x3d drivers/libdrivers.a(spifc_loader2.o)
+                0x0000000020305559       0x3d drivers/libdrivers.a(spifc_loader2.o)
                                          0x4a (松开之前的大小)
  .rodata.str1.1
-                0x0000000020305445        0x9 drivers/libdrivers.a(bbt.o)
+                0x0000000020305596        0x9 drivers/libdrivers.a(bbt.o)
  .rodata.str1.1
-                0x000000002030544e      0x15c drivers/libdrivers.a(nor.o)
+                0x000000002030559f      0x15c drivers/libdrivers.a(nor.o)
  .rodata.str1.1
-                0x00000000203055aa       0x17 drivers/libdrivers.a(efuse.o)
+                0x00000000203056fb       0x17 drivers/libdrivers.a(efuse.o)
 
-.rel.dyn        0x00000000203055c4        0x0
+.rel.dyn        0x0000000020305714        0x0
  .rel.iplt      0x0000000000000000        0x0 cpu/m0/start.o
-                0x00000000203055c4                . = ALIGN (0x4)
+                0x0000000020305714                . = ALIGN (0x4)
 
-.data           0x00000000203055c4       0xd0
+.data           0x0000000020305714       0xd0
  *(.data)
- .data          0x00000000203055c4        0x0 cpu/m0/start.o
- .data          0x00000000203055c4        0x0 lib/libarm.a(board.o)
- .data          0x00000000203055c4        0x0 lib/libarm.a(string.o)
- .data          0x00000000203055c4        0x0 drivers/libdrivers.a(uart.o)
- .data          0x00000000203055c4        0x0 drivers/libdrivers.a(image.o)
- .data          0x00000000203055c4        0x0 drivers/libdrivers.a(secure_verify.o)
- .data          0x00000000203055c4        0x0 drivers/libdrivers.a(spifc_loader2.o)
- .data          0x00000000203055c4       0x40 drivers/libdrivers.a(bbt.o)
- .data          0x0000000020305604       0x40 drivers/libdrivers.a(sha256.o)
- .data          0x0000000020305644       0x50 drivers/libdrivers.a(nor.o)
-                0x0000000020305644                nor_cmd_table
- .data          0x0000000020305694        0x0 drivers/libdrivers.a(ddr.o)
- .data          0x0000000020305694        0x0 drivers/libdrivers.a(drv_hash.o)
- .data          0x0000000020305694        0x0 drivers/libdrivers.a(drv_rsa.o)
- .data          0x0000000020305694        0x0 drivers/libdrivers.a(flash.o)
- .data          0x0000000020305694        0x0 drivers/libdrivers.a(efuse.o)
- .data          0x0000000020305694        0x0 cpu/m0/libm0.a(cpu.o)
+ .data          0x0000000020305714        0x0 cpu/m0/start.o
+ .data          0x0000000020305714        0x0 lib/libarm.a(board.o)
+ .data          0x0000000020305714        0x0 lib/libarm.a(string.o)
+ .data          0x0000000020305714        0x0 drivers/libdrivers.a(uart.o)
+ .data          0x0000000020305714        0x0 drivers/libdrivers.a(image.o)
+ .data          0x0000000020305714        0x0 drivers/libdrivers.a(secure_verify.o)
+ .data          0x0000000020305714        0x0 drivers/libdrivers.a(spifc_loader2.o)
+ .data          0x0000000020305714       0x40 drivers/libdrivers.a(bbt.o)
+ .data          0x0000000020305754       0x40 drivers/libdrivers.a(sha256.o)
+ .data          0x0000000020305794       0x50 drivers/libdrivers.a(nor.o)
+                0x0000000020305794                nor_cmd_table
+ .data          0x00000000203057e4        0x0 drivers/libdrivers.a(ddr.o)
+ .data          0x00000000203057e4        0x0 drivers/libdrivers.a(drv_hash.o)
+ .data          0x00000000203057e4        0x0 drivers/libdrivers.a(drv_rsa.o)
+ .data          0x00000000203057e4        0x0 drivers/libdrivers.a(flash.o)
+ .data          0x00000000203057e4        0x0 drivers/libdrivers.a(efuse.o)
+ .data          0x00000000203057e4        0x0 cpu/m0/libm0.a(cpu.o)
 
-.igot.plt       0x0000000020305694        0x0
+.igot.plt       0x00000000203057e4        0x0
  .igot.plt      0x0000000000000000        0x0 cpu/m0/start.o
-                0x0000000020305694                . = ALIGN (0x4)
+                0x00000000203057e4                . = ALIGN (0x4)
 
 .got
  *(.got)
-                0x0000000020305694                . = ALIGN (0x4)
-                0x0000000020305694                __bss_start = .
+                0x00000000203057e4                . = ALIGN (0x4)
+                0x00000000203057e4                __bss_start = .
 
-.bss            0x0000000020305694      0x1e8
+.bss            0x00000000203057e4      0x1e8
  *(.bss)
- .bss           0x0000000020305694        0x0 cpu/m0/start.o
- .bss           0x0000000020305694        0x4 lib/libarm.a(board.o)
-                0x0000000020305694                zloader_entry_point
- .bss           0x0000000020305698        0x0 lib/libarm.a(string.o)
- .bss           0x0000000020305698        0x0 drivers/libdrivers.a(uart.o)
- .bss           0x0000000020305698        0x0 drivers/libdrivers.a(image.o)
- .bss           0x0000000020305698      0x104 drivers/libdrivers.a(secure_verify.o)
-                0x0000000020305698                result
- .bss           0x000000002030579c        0x4 drivers/libdrivers.a(spifc_loader2.o)
- .bss           0x00000000203057a0       0x80 drivers/libdrivers.a(bbt.o)
- .bss           0x0000000020305820        0x0 drivers/libdrivers.a(sha256.o)
- .bss           0x0000000020305820       0x28 drivers/libdrivers.a(nor.o)
-                0x0000000020305820                spi_nor_flash
-                0x0000000020305824                otp_data
- .bss           0x0000000020305848        0x0 drivers/libdrivers.a(ddr.o)
- .bss           0x0000000020305848        0x0 drivers/libdrivers.a(drv_hash.o)
- .bss           0x0000000020305848        0x0 drivers/libdrivers.a(drv_rsa.o)
- .bss           0x0000000020305848       0x24 drivers/libdrivers.a(flash.o)
-                0x0000000020305848                flash
- .bss           0x000000002030586c        0x0 drivers/libdrivers.a(efuse.o)
- .bss           0x000000002030586c       0x10 cpu/m0/libm0.a(cpu.o)
-                0x000000002030586c                g_tick
-                0x000000002030587c                __bss_end = .
-                0x000000002030587c                . = ALIGN (0x4)
+ .bss           0x00000000203057e4        0x0 cpu/m0/start.o
+ .bss           0x00000000203057e4        0x4 lib/libarm.a(board.o)
+                0x00000000203057e4                zloader_entry_point
+ .bss           0x00000000203057e8        0x0 lib/libarm.a(string.o)
+ .bss           0x00000000203057e8        0x0 drivers/libdrivers.a(uart.o)
+ .bss           0x00000000203057e8        0x0 drivers/libdrivers.a(image.o)
+ .bss           0x00000000203057e8      0x104 drivers/libdrivers.a(secure_verify.o)
+                0x00000000203057e8                result
+ .bss           0x00000000203058ec        0x4 drivers/libdrivers.a(spifc_loader2.o)
+ .bss           0x00000000203058f0       0x80 drivers/libdrivers.a(bbt.o)
+ .bss           0x0000000020305970        0x0 drivers/libdrivers.a(sha256.o)
+ .bss           0x0000000020305970       0x28 drivers/libdrivers.a(nor.o)
+                0x0000000020305970                spi_nor_flash
+                0x0000000020305974                otp_data
+ .bss           0x0000000020305998        0x0 drivers/libdrivers.a(ddr.o)
+ .bss           0x0000000020305998        0x0 drivers/libdrivers.a(drv_hash.o)
+ .bss           0x0000000020305998        0x0 drivers/libdrivers.a(drv_rsa.o)
+ .bss           0x0000000020305998       0x24 drivers/libdrivers.a(flash.o)
+                0x0000000020305998                flash
+ .bss           0x00000000203059bc        0x0 drivers/libdrivers.a(efuse.o)
+ .bss           0x00000000203059bc       0x10 cpu/m0/libm0.a(cpu.o)
+                0x00000000203059bc                g_tick
+                0x00000000203059cc                __bss_end = .
+                0x00000000203059cc                . = ALIGN (0x4)
 
-.para           0x0000000082000000        0x0 加载地址 0x000000002030587c
+.para           0x0000000082000000        0x0 加载地址 0x00000000203059cc
                 0x0000000082000000                __para_start = .
  *(.para)
                 0x0000000082000000                __para_end = .
@@ -356,22 +356,22 @@
 .stabstr        0x0000000000000000       0x67
  .stabstr       0x0000000000000000       0x67 cpu/m0/start.o
 
-.debug_info     0x0000000000000000     0x6536
- .debug_info    0x0000000000000000      0x92d lib/libarm.a(board.o)
- .debug_info    0x000000000000092d      0x22b lib/libarm.a(string.o)
- .debug_info    0x0000000000000b58      0x2a0 drivers/libdrivers.a(uart.o)
- .debug_info    0x0000000000000df8      0xdd6 drivers/libdrivers.a(image.o)
- .debug_info    0x0000000000001bce      0xb01 drivers/libdrivers.a(secure_verify.o)
- .debug_info    0x00000000000026cf     0x1661 drivers/libdrivers.a(spifc_loader2.o)
- .debug_info    0x0000000000003d30      0x70f drivers/libdrivers.a(bbt.o)
- .debug_info    0x000000000000443f      0x586 drivers/libdrivers.a(sha256.o)
- .debug_info    0x00000000000049c5      0xd5f drivers/libdrivers.a(nor.o)
- .debug_info    0x0000000000005724      0x329 drivers/libdrivers.a(ddr.o)
- .debug_info    0x0000000000005a4d      0x1e8 drivers/libdrivers.a(drv_hash.o)
- .debug_info    0x0000000000005c35      0x3b4 drivers/libdrivers.a(drv_rsa.o)
- .debug_info    0x0000000000005fe9      0x20f drivers/libdrivers.a(flash.o)
- .debug_info    0x00000000000061f8      0x1c3 drivers/libdrivers.a(efuse.o)
- .debug_info    0x00000000000063bb      0x17b cpu/m0/libm0.a(cpu.o)
+.debug_info     0x0000000000000000     0x663a
+ .debug_info    0x0000000000000000      0xa31 lib/libarm.a(board.o)
+ .debug_info    0x0000000000000a31      0x22b lib/libarm.a(string.o)
+ .debug_info    0x0000000000000c5c      0x2a0 drivers/libdrivers.a(uart.o)
+ .debug_info    0x0000000000000efc      0xdd6 drivers/libdrivers.a(image.o)
+ .debug_info    0x0000000000001cd2      0xb01 drivers/libdrivers.a(secure_verify.o)
+ .debug_info    0x00000000000027d3     0x1661 drivers/libdrivers.a(spifc_loader2.o)
+ .debug_info    0x0000000000003e34      0x70f drivers/libdrivers.a(bbt.o)
+ .debug_info    0x0000000000004543      0x586 drivers/libdrivers.a(sha256.o)
+ .debug_info    0x0000000000004ac9      0xd5f drivers/libdrivers.a(nor.o)
+ .debug_info    0x0000000000005828      0x329 drivers/libdrivers.a(ddr.o)
+ .debug_info    0x0000000000005b51      0x1e8 drivers/libdrivers.a(drv_hash.o)
+ .debug_info    0x0000000000005d39      0x3b4 drivers/libdrivers.a(drv_rsa.o)
+ .debug_info    0x00000000000060ed      0x20f drivers/libdrivers.a(flash.o)
+ .debug_info    0x00000000000062fc      0x1c3 drivers/libdrivers.a(efuse.o)
+ .debug_info    0x00000000000064bf      0x17b cpu/m0/libm0.a(cpu.o)
 
 .debug_abbrev   0x0000000000000000     0x1c94
  .debug_abbrev  0x0000000000000000      0x304 lib/libarm.a(board.o)
@@ -390,22 +390,22 @@
  .debug_abbrev  0x0000000000001aaf      0x11d drivers/libdrivers.a(efuse.o)
  .debug_abbrev  0x0000000000001bcc       0xc8 cpu/m0/libm0.a(cpu.o)
 
-.debug_loc      0x0000000000000000     0x96e6
- .debug_loc     0x0000000000000000      0x2f4 lib/libarm.a(board.o)
- .debug_loc     0x00000000000002f4      0x29d lib/libarm.a(string.o)
- .debug_loc     0x0000000000000591      0x228 drivers/libdrivers.a(uart.o)
- .debug_loc     0x00000000000007b9      0x6a2 drivers/libdrivers.a(image.o)
- .debug_loc     0x0000000000000e5b      0x790 drivers/libdrivers.a(secure_verify.o)
- .debug_loc     0x00000000000015eb      0xef4 drivers/libdrivers.a(spifc_loader2.o)
- .debug_loc     0x00000000000024df      0x282 drivers/libdrivers.a(bbt.o)
- .debug_loc     0x0000000000002761     0x5f3f drivers/libdrivers.a(sha256.o)
- .debug_loc     0x00000000000086a0      0x80a drivers/libdrivers.a(nor.o)
- .debug_loc     0x0000000000008eaa      0x2d8 drivers/libdrivers.a(ddr.o)
- .debug_loc     0x0000000000009182      0x1b8 drivers/libdrivers.a(drv_hash.o)
- .debug_loc     0x000000000000933a      0x238 drivers/libdrivers.a(drv_rsa.o)
- .debug_loc     0x0000000000009572       0x1f drivers/libdrivers.a(flash.o)
- .debug_loc     0x0000000000009591       0xab drivers/libdrivers.a(efuse.o)
- .debug_loc     0x000000000000963c       0xaa cpu/m0/libm0.a(cpu.o)
+.debug_loc      0x0000000000000000     0x97b8
+ .debug_loc     0x0000000000000000      0x3c6 lib/libarm.a(board.o)
+ .debug_loc     0x00000000000003c6      0x29d lib/libarm.a(string.o)
+ .debug_loc     0x0000000000000663      0x228 drivers/libdrivers.a(uart.o)
+ .debug_loc     0x000000000000088b      0x6a2 drivers/libdrivers.a(image.o)
+ .debug_loc     0x0000000000000f2d      0x790 drivers/libdrivers.a(secure_verify.o)
+ .debug_loc     0x00000000000016bd      0xef4 drivers/libdrivers.a(spifc_loader2.o)
+ .debug_loc     0x00000000000025b1      0x282 drivers/libdrivers.a(bbt.o)
+ .debug_loc     0x0000000000002833     0x5f3f drivers/libdrivers.a(sha256.o)
+ .debug_loc     0x0000000000008772      0x80a drivers/libdrivers.a(nor.o)
+ .debug_loc     0x0000000000008f7c      0x2d8 drivers/libdrivers.a(ddr.o)
+ .debug_loc     0x0000000000009254      0x1b8 drivers/libdrivers.a(drv_hash.o)
+ .debug_loc     0x000000000000940c      0x238 drivers/libdrivers.a(drv_rsa.o)
+ .debug_loc     0x0000000000009644       0x1f drivers/libdrivers.a(flash.o)
+ .debug_loc     0x0000000000009663       0xab drivers/libdrivers.a(efuse.o)
+ .debug_loc     0x000000000000970e       0xaa cpu/m0/libm0.a(cpu.o)
 
 .debug_aranges  0x0000000000000000      0x1e0
  .debug_aranges
@@ -449,53 +449,53 @@
  .debug_ranges  0x00000000000001d8       0x28 drivers/libdrivers.a(drv_hash.o)
  .debug_ranges  0x0000000000000200       0x38 drivers/libdrivers.a(drv_rsa.o)
 
-.debug_line     0x0000000000000000     0x2022
- .debug_line    0x0000000000000000      0x387 lib/libarm.a(board.o)
- .debug_line    0x0000000000000387      0x152 lib/libarm.a(string.o)
- .debug_line    0x00000000000004d9      0x112 drivers/libdrivers.a(uart.o)
- .debug_line    0x00000000000005eb      0x3b8 drivers/libdrivers.a(image.o)
- .debug_line    0x00000000000009a3      0x38e drivers/libdrivers.a(secure_verify.o)
- .debug_line    0x0000000000000d31      0x442 drivers/libdrivers.a(spifc_loader2.o)
- .debug_line    0x0000000000001173      0x251 drivers/libdrivers.a(bbt.o)
- .debug_line    0x00000000000013c4      0x2bb drivers/libdrivers.a(sha256.o)
- .debug_line    0x000000000000167f      0x2a2 drivers/libdrivers.a(nor.o)
- .debug_line    0x0000000000001921      0x299 drivers/libdrivers.a(ddr.o)
- .debug_line    0x0000000000001bba       0x88 drivers/libdrivers.a(drv_hash.o)
- .debug_line    0x0000000000001c42      0x117 drivers/libdrivers.a(drv_rsa.o)
- .debug_line    0x0000000000001d59      0x10a drivers/libdrivers.a(flash.o)
- .debug_line    0x0000000000001e63      0x118 drivers/libdrivers.a(efuse.o)
- .debug_line    0x0000000000001f7b       0xa7 cpu/m0/libm0.a(cpu.o)
+.debug_line     0x0000000000000000     0x205d
+ .debug_line    0x0000000000000000      0x3c2 lib/libarm.a(board.o)
+ .debug_line    0x00000000000003c2      0x152 lib/libarm.a(string.o)
+ .debug_line    0x0000000000000514      0x112 drivers/libdrivers.a(uart.o)
+ .debug_line    0x0000000000000626      0x3b8 drivers/libdrivers.a(image.o)
+ .debug_line    0x00000000000009de      0x38e drivers/libdrivers.a(secure_verify.o)
+ .debug_line    0x0000000000000d6c      0x442 drivers/libdrivers.a(spifc_loader2.o)
+ .debug_line    0x00000000000011ae      0x251 drivers/libdrivers.a(bbt.o)
+ .debug_line    0x00000000000013ff      0x2bb drivers/libdrivers.a(sha256.o)
+ .debug_line    0x00000000000016ba      0x2a2 drivers/libdrivers.a(nor.o)
+ .debug_line    0x000000000000195c      0x299 drivers/libdrivers.a(ddr.o)
+ .debug_line    0x0000000000001bf5       0x88 drivers/libdrivers.a(drv_hash.o)
+ .debug_line    0x0000000000001c7d      0x117 drivers/libdrivers.a(drv_rsa.o)
+ .debug_line    0x0000000000001d94      0x10a drivers/libdrivers.a(flash.o)
+ .debug_line    0x0000000000001e9e      0x118 drivers/libdrivers.a(efuse.o)
+ .debug_line    0x0000000000001fb6       0xa7 cpu/m0/libm0.a(cpu.o)
 
-.debug_str      0x0000000000000000     0x160a
- .debug_str     0x0000000000000000      0x555 lib/libarm.a(board.o)
-                                        0x5cb (松开之前的大小)
- .debug_str     0x0000000000000555       0x3f lib/libarm.a(string.o)
+.debug_str      0x0000000000000000     0x1616
+ .debug_str     0x0000000000000000      0x561 lib/libarm.a(board.o)
+                                        0x5d7 (松开之前的大小)
+ .debug_str     0x0000000000000561       0x3f lib/libarm.a(string.o)
                                         0x214 (松开之前的大小)
- .debug_str     0x0000000000000594       0xe2 drivers/libdrivers.a(uart.o)
+ .debug_str     0x00000000000005a0       0xe2 drivers/libdrivers.a(uart.o)
                                         0x253 (松开之前的大小)
- .debug_str     0x0000000000000676      0x35b drivers/libdrivers.a(image.o)
+ .debug_str     0x0000000000000682      0x35b drivers/libdrivers.a(image.o)
                                         0x854 (松开之前的大小)
- .debug_str     0x00000000000009d1      0x2f9 drivers/libdrivers.a(secure_verify.o)
+ .debug_str     0x00000000000009dd      0x2f9 drivers/libdrivers.a(secure_verify.o)
                                         0x61f (松开之前的大小)
- .debug_str     0x0000000000000cca      0x3c3 drivers/libdrivers.a(spifc_loader2.o)
+ .debug_str     0x0000000000000cd6      0x3c3 drivers/libdrivers.a(spifc_loader2.o)
                                         0x6c1 (松开之前的大小)
- .debug_str     0x000000000000108d      0x103 drivers/libdrivers.a(bbt.o)
+ .debug_str     0x0000000000001099      0x103 drivers/libdrivers.a(bbt.o)
                                         0x3fe (松开之前的大小)
- .debug_str     0x0000000000001190       0xc3 drivers/libdrivers.a(sha256.o)
+ .debug_str     0x000000000000119c       0xc3 drivers/libdrivers.a(sha256.o)
                                         0x2b7 (松开之前的大小)
- .debug_str     0x0000000000001253      0x1ad drivers/libdrivers.a(nor.o)
+ .debug_str     0x000000000000125f      0x1ad drivers/libdrivers.a(nor.o)
                                         0x5f3 (松开之前的大小)
- .debug_str     0x0000000000001400       0x54 drivers/libdrivers.a(ddr.o)
+ .debug_str     0x000000000000140c       0x54 drivers/libdrivers.a(ddr.o)
                                         0x216 (松开之前的大小)
- .debug_str     0x0000000000001454       0x87 drivers/libdrivers.a(drv_hash.o)
+ .debug_str     0x0000000000001460       0x87 drivers/libdrivers.a(drv_hash.o)
                                         0x25a (松开之前的大小)
- .debug_str     0x00000000000014db       0x79 drivers/libdrivers.a(drv_rsa.o)
+ .debug_str     0x00000000000014e7       0x79 drivers/libdrivers.a(drv_rsa.o)
                                         0x29c (松开之前的大小)
- .debug_str     0x0000000000001554       0x12 drivers/libdrivers.a(flash.o)
+ .debug_str     0x0000000000001560       0x12 drivers/libdrivers.a(flash.o)
                                         0x2a8 (松开之前的大小)
- .debug_str     0x0000000000001566       0x20 drivers/libdrivers.a(efuse.o)
+ .debug_str     0x0000000000001572       0x20 drivers/libdrivers.a(efuse.o)
                                         0x255 (松开之前的大小)
- .debug_str     0x0000000000001586       0x84 cpu/m0/libm0.a(cpu.o)
+ .debug_str     0x0000000000001592       0x84 cpu/m0/libm0.a(cpu.o)
                                         0x1f8 (松开之前的大小)
 
 .debug_frame    0x0000000000000000      0xaf0
diff --git a/Uboot/boot/prj/zx297520v3/bootrom2/dl_on/loader2.bin b/Uboot/boot/prj/zx297520v3/bootrom2/dl_on/loader2.bin
index 0428da1..e7d499c 100755
--- a/Uboot/boot/prj/zx297520v3/bootrom2/dl_on/loader2.bin
+++ b/Uboot/boot/prj/zx297520v3/bootrom2/dl_on/loader2.bin
Binary files differ
diff --git a/Uboot/boot/prj/zx297520v3/bootrom2/dl_on/z-load b/Uboot/boot/prj/zx297520v3/bootrom2/dl_on/z-load
index c79fda1..176acbd 100755
--- a/Uboot/boot/prj/zx297520v3/bootrom2/dl_on/z-load
+++ b/Uboot/boot/prj/zx297520v3/bootrom2/dl_on/z-load
Binary files differ
diff --git a/Uboot/boot/prj/zx297520v3/bootrom2/dl_on/z-load.map b/Uboot/boot/prj/zx297520v3/bootrom2/dl_on/z-load.map
index 72c0ac3..71722dc 100755
--- a/Uboot/boot/prj/zx297520v3/bootrom2/dl_on/z-load.map
+++ b/Uboot/boot/prj/zx297520v3/bootrom2/dl_on/z-load.map
@@ -300,20 +300,20 @@
 .stabstr        0x0000000000000000       0x67
  .stabstr       0x0000000000000000       0x67 cpu/m0/start.o
 
-.debug_info     0x0000000000000000     0x34d5
- .debug_info    0x0000000000000000      0x70e lib/libarm.a(board.o)
- .debug_info    0x000000000000070e      0x22b lib/libarm.a(string.o)
- .debug_info    0x0000000000000939      0x329 drivers/libdrivers.a(ddr.o)
- .debug_info    0x0000000000000c62      0x2a0 drivers/libdrivers.a(uart.o)
- .debug_info    0x0000000000000f02      0x6d3 drivers/libdrivers.a(image.o)
- .debug_info    0x00000000000015d5      0x1c3 drivers/libdrivers.a(efuse.o)
- .debug_info    0x0000000000001798      0x62d drivers/libdrivers.a(secure_verify.o)
- .debug_info    0x0000000000001dc5      0xd5f drivers/libdrivers.a(nor.o)
- .debug_info    0x0000000000002b24      0x1e8 drivers/libdrivers.a(drv_hash.o)
- .debug_info    0x0000000000002d0c      0x3b4 drivers/libdrivers.a(drv_rsa.o)
- .debug_info    0x00000000000030c0      0x20f drivers/libdrivers.a(flash.o)
- .debug_info    0x00000000000032cf      0x17b cpu/m0/libm0.a(cpu.o)
- .debug_info    0x000000000000344a       0x8b cpu/m0/libm0.a(clk.o)
+.debug_info     0x0000000000000000     0x34e2
+ .debug_info    0x0000000000000000      0x71b lib/libarm.a(board.o)
+ .debug_info    0x000000000000071b      0x22b lib/libarm.a(string.o)
+ .debug_info    0x0000000000000946      0x329 drivers/libdrivers.a(ddr.o)
+ .debug_info    0x0000000000000c6f      0x2a0 drivers/libdrivers.a(uart.o)
+ .debug_info    0x0000000000000f0f      0x6d3 drivers/libdrivers.a(image.o)
+ .debug_info    0x00000000000015e2      0x1c3 drivers/libdrivers.a(efuse.o)
+ .debug_info    0x00000000000017a5      0x62d drivers/libdrivers.a(secure_verify.o)
+ .debug_info    0x0000000000001dd2      0xd5f drivers/libdrivers.a(nor.o)
+ .debug_info    0x0000000000002b31      0x1e8 drivers/libdrivers.a(drv_hash.o)
+ .debug_info    0x0000000000002d19      0x3b4 drivers/libdrivers.a(drv_rsa.o)
+ .debug_info    0x00000000000030cd      0x20f drivers/libdrivers.a(flash.o)
+ .debug_info    0x00000000000032dc      0x17b cpu/m0/libm0.a(cpu.o)
+ .debug_info    0x0000000000003457       0x8b cpu/m0/libm0.a(clk.o)
 
 .debug_abbrev   0x0000000000000000     0x12c2
  .debug_abbrev  0x0000000000000000      0x2b8 lib/libarm.a(board.o)
@@ -395,32 +395,32 @@
  .debug_line    0x000000000000132b       0xa7 cpu/m0/libm0.a(cpu.o)
  .debug_line    0x00000000000013d2       0x61 cpu/m0/libm0.a(clk.o)
 
-.debug_str      0x0000000000000000      0xebb
- .debug_str     0x0000000000000000      0x4d5 lib/libarm.a(board.o)
-                                        0x554 (松开之前的大小)
- .debug_str     0x00000000000004d5       0x4c lib/libarm.a(string.o)
+.debug_str      0x0000000000000000      0xec7
+ .debug_str     0x0000000000000000      0x4e1 lib/libarm.a(board.o)
+                                        0x560 (松开之前的大小)
+ .debug_str     0x00000000000004e1       0x4c lib/libarm.a(string.o)
                                         0x214 (松开之前的大小)
- .debug_str     0x0000000000000521       0xa1 drivers/libdrivers.a(ddr.o)
+ .debug_str     0x000000000000052d       0xa1 drivers/libdrivers.a(ddr.o)
                                         0x216 (松开之前的大小)
- .debug_str     0x00000000000005c2       0x8a drivers/libdrivers.a(uart.o)
+ .debug_str     0x00000000000005ce       0x8a drivers/libdrivers.a(uart.o)
                                         0x253 (松开之前的大小)
- .debug_str     0x000000000000064c      0x229 drivers/libdrivers.a(image.o)
+ .debug_str     0x0000000000000658      0x229 drivers/libdrivers.a(image.o)
                                         0x4a0 (松开之前的大小)
- .debug_str     0x0000000000000875       0x7b drivers/libdrivers.a(efuse.o)
+ .debug_str     0x0000000000000881       0x7b drivers/libdrivers.a(efuse.o)
                                         0x255 (松开之前的大小)
- .debug_str     0x00000000000008f0      0x177 drivers/libdrivers.a(secure_verify.o)
+ .debug_str     0x00000000000008fc      0x177 drivers/libdrivers.a(secure_verify.o)
                                         0x407 (松开之前的大小)
- .debug_str     0x0000000000000a67      0x2c3 drivers/libdrivers.a(nor.o)
+ .debug_str     0x0000000000000a73      0x2c3 drivers/libdrivers.a(nor.o)
                                         0x5f3 (松开之前的大小)
- .debug_str     0x0000000000000d2a       0x87 drivers/libdrivers.a(drv_hash.o)
+ .debug_str     0x0000000000000d36       0x87 drivers/libdrivers.a(drv_hash.o)
                                         0x25a (松开之前的大小)
- .debug_str     0x0000000000000db1       0x79 drivers/libdrivers.a(drv_rsa.o)
+ .debug_str     0x0000000000000dbd       0x79 drivers/libdrivers.a(drv_rsa.o)
                                         0x29c (松开之前的大小)
- .debug_str     0x0000000000000e2a       0x12 drivers/libdrivers.a(flash.o)
+ .debug_str     0x0000000000000e36       0x12 drivers/libdrivers.a(flash.o)
                                         0x2a8 (松开之前的大小)
- .debug_str     0x0000000000000e3c       0x79 cpu/m0/libm0.a(cpu.o)
+ .debug_str     0x0000000000000e48       0x79 cpu/m0/libm0.a(cpu.o)
                                         0x1f8 (松开之前的大小)
- .debug_str     0x0000000000000eb5        0x6 cpu/m0/libm0.a(clk.o)
+ .debug_str     0x0000000000000ec1        0x6 cpu/m0/libm0.a(clk.o)
                                         0x1bd (松开之前的大小)
 
 .debug_frame    0x0000000000000000      0x6a0
diff --git a/Uboot/boot/prj/zx297520v3/bootrom2/dl_on/z-load2 b/Uboot/boot/prj/zx297520v3/bootrom2/dl_on/z-load2
index 50274d5..1f69c86 100755
--- a/Uboot/boot/prj/zx297520v3/bootrom2/dl_on/z-load2
+++ b/Uboot/boot/prj/zx297520v3/bootrom2/dl_on/z-load2
Binary files differ
diff --git a/Uboot/boot/prj/zx297520v3/bootrom2/dl_on/z-load2.map b/Uboot/boot/prj/zx297520v3/bootrom2/dl_on/z-load2.map
index 69d87e4..d4b4270 100755
--- a/Uboot/boot/prj/zx297520v3/bootrom2/dl_on/z-load2.map
+++ b/Uboot/boot/prj/zx297520v3/bootrom2/dl_on/z-load2.map
@@ -34,7 +34,7 @@
                 0x0000000000000000                . = 0x0
                 0x0000000000000000                . = ALIGN (0x4)
 
-.text           0x0000000020300000     0x4d44
+.text           0x0000000020300000     0x4e0c
  cpu/m0/start.o(.text)
  .text          0x0000000020300000      0x220 cpu/m0/start.o
                 0x00000000203001a4                _bss_start
@@ -44,7 +44,7 @@
                 0x00000000203001b8                _start
                 0x00000000203001fe                run_at
  *(.text)
- .text          0x0000000020300220      0x454 lib/libarm.a(board.o)
+ .text          0x0000000020300220      0x51c lib/libarm.a(board.o)
                 0x0000000020300220                print_info
                 0x0000000020300230                copy_to_iram1
                 0x0000000020300250                clear_iram
@@ -55,201 +55,201 @@
                 0x0000000020300338                pmu_read
                 0x0000000020300404                pmu_write
                 0x00000000203004d0                start_armboot
- .text          0x0000000020300674       0x80 lib/libarm.a(string.o)
-                0x0000000020300674                strlen
-                0x0000000020300684                memset
-                0x00000000203006c6                memcmp
-                0x00000000203006e2                memcpy
- .text          0x00000000203006f4      0x138 drivers/libdrivers.a(uart.o)
-                0x00000000203006f4                uart_init
-                0x0000000020300774                uart_putc
-                0x000000002030079c                uart_puts
-                0x00000000203007b0                uart_getc
-                0x00000000203007cc                uart_tstc
-                0x00000000203007dc                UART_Read
-                0x00000000203007f8                UART_Write
-                0x0000000020300814                UART_Check_Sync
- .text          0x000000002030082c      0x338 drivers/libdrivers.a(image.o)
-                0x0000000020300830                page_align
-                0x0000000020300848                find_partition_para
-                0x0000000020300878                read_image_part_offset
-                0x00000000203008cc                read_flags_image
-                0x00000000203009b4                read_uboot_image
-                0x0000000020300a94                nand_read_m0
-                0x0000000020300b00                read_zloader_image
- .text          0x0000000020300b64      0x2b0 drivers/libdrivers.a(secure_verify.o)
-                0x0000000020300b82                BIG2SMALL
-                0x0000000020300bb2                bin2hex
-                0x0000000020300bfc                secure_verify_zloader
-                0x0000000020300cf0                SecureVerify
- .text          0x0000000020300e14      0x648 drivers/libdrivers.a(spifc_loader2.o)
-                0x0000000020300f08                zDrvGpio_SetFunc
-                0x0000000020300f40                zDrvGpio_SetDirection
-                0x0000000020300f90                zDrvGpio_SetOutputValue
-                0x0000000020300fcc                spi_nand_cs
-                0x0000000020301008                spifc_clear_fifo
-                0x000000002030101c                spifc_clear_int
-                0x0000000020301178                spifc_read_oob
-                0x00000000203011bc                spifc_read_page_raw
-                0x00000000203011f8                spifc_read_page
-                0x0000000020301274                spifc_read
-                0x00000000203012b8                read_data
-                0x000000002030130c                read_id
-                0x0000000020301390                spifc_init
-                0x0000000020301414                zloader_flash_init
- .text          0x000000002030145c      0x1c0 drivers/libdrivers.a(bbt.o)
-                0x00000000203014bc                nand_creat_ram_bbt
-                0x0000000020301500                nand_search_bbt
-                0x000000002030158c                nand_creat_bbt
-                0x0000000020301608                nand_block_isbad
- .text          0x000000002030161c     0x2688 drivers/libdrivers.a(sha256.o)
-                0x0000000020303b3c                sha256_starts
-                0x0000000020303b84                sha256_update
-                0x0000000020303b90                sha256_finish
-                0x0000000020303c7c                sha256_csum_wd
- .text          0x0000000020303ca4      0x424 drivers/libdrivers.a(nor.o)
-                0x0000000020303ca4                spifc_enable
-                0x0000000020303cd4                spifc_disable
-                0x0000000020303cf8                spifc_setup_cmd
-                0x0000000020303d7c                spifc_wait_cmd_end
-                0x0000000020303da8                spifc_read_fifo
-                0x0000000020303de4                spifc_start
-                0x0000000020303df4                cmd_seek
-                0x0000000020303e14                nor_read_reg
-                0x0000000020303e74                nor_read_id
-                0x0000000020303edc                spi_nor_read
-                0x0000000020303f38                nor_read
-                0x0000000020303f8c                spi_nor_read_security_register
-                0x0000000020303fe8                nor_read_security_register
-                0x000000002030403c                nor_init
-                0x000000002030408c                board_flash_init
- .text          0x00000000203040c8      0x82c drivers/libdrivers.a(ddr.o)
-                0x00000000203040c8                nsdelay
-                0x00000000203040e2                ddr_clk_init
-                0x00000000203040f8                ddr_phy_init
-                0x00000000203041f4                ddr_ctrl_init
-                0x00000000203045b0                ddr_prio_init
-                0x00000000203046d4                ddr_init
- .text          0x00000000203048f4       0xa4 drivers/libdrivers.a(drv_hash.o)
-                0x00000000203048f4                Hash_Calculate
- .text          0x0000000020304998      0x174 drivers/libdrivers.a(drv_rsa.o)
-                0x00000000203049b2                Rsa_Calculate
- .text          0x0000000020304b0c       0x28 drivers/libdrivers.a(flash.o)
-                0x0000000020304b0c                get_boot_mode
- .text          0x0000000020304b34      0x1bc drivers/libdrivers.a(efuse.o)
-                0x0000000020304b34                efuse_init
-                0x0000000020304b58                get_ddr_flag
-                0x0000000020304c78                get_secure_verify_status
-                0x0000000020304cbc                get_otp_secure_verify_status
- .text          0x0000000020304cf0       0x54 cpu/m0/libm0.a(cpu.o)
-                0x0000000020304cf0                timer_init
-                0x0000000020304d08                usdelay
+ .text          0x000000002030073c       0x80 lib/libarm.a(string.o)
+                0x000000002030073c                strlen
+                0x000000002030074c                memset
+                0x000000002030078e                memcmp
+                0x00000000203007aa                memcpy
+ .text          0x00000000203007bc      0x138 drivers/libdrivers.a(uart.o)
+                0x00000000203007bc                uart_init
+                0x000000002030083c                uart_putc
+                0x0000000020300864                uart_puts
+                0x0000000020300878                uart_getc
+                0x0000000020300894                uart_tstc
+                0x00000000203008a4                UART_Read
+                0x00000000203008c0                UART_Write
+                0x00000000203008dc                UART_Check_Sync
+ .text          0x00000000203008f4      0x338 drivers/libdrivers.a(image.o)
+                0x00000000203008f8                page_align
+                0x0000000020300910                find_partition_para
+                0x0000000020300940                read_image_part_offset
+                0x0000000020300994                read_flags_image
+                0x0000000020300a7c                read_uboot_image
+                0x0000000020300b5c                nand_read_m0
+                0x0000000020300bc8                read_zloader_image
+ .text          0x0000000020300c2c      0x2b0 drivers/libdrivers.a(secure_verify.o)
+                0x0000000020300c4a                BIG2SMALL
+                0x0000000020300c7a                bin2hex
+                0x0000000020300cc4                secure_verify_zloader
+                0x0000000020300db8                SecureVerify
+ .text          0x0000000020300edc      0x648 drivers/libdrivers.a(spifc_loader2.o)
+                0x0000000020300fd0                zDrvGpio_SetFunc
+                0x0000000020301008                zDrvGpio_SetDirection
+                0x0000000020301058                zDrvGpio_SetOutputValue
+                0x0000000020301094                spi_nand_cs
+                0x00000000203010d0                spifc_clear_fifo
+                0x00000000203010e4                spifc_clear_int
+                0x0000000020301240                spifc_read_oob
+                0x0000000020301284                spifc_read_page_raw
+                0x00000000203012c0                spifc_read_page
+                0x000000002030133c                spifc_read
+                0x0000000020301380                read_data
+                0x00000000203013d4                read_id
+                0x0000000020301458                spifc_init
+                0x00000000203014dc                zloader_flash_init
+ .text          0x0000000020301524      0x1c0 drivers/libdrivers.a(bbt.o)
+                0x0000000020301584                nand_creat_ram_bbt
+                0x00000000203015c8                nand_search_bbt
+                0x0000000020301654                nand_creat_bbt
+                0x00000000203016d0                nand_block_isbad
+ .text          0x00000000203016e4     0x2688 drivers/libdrivers.a(sha256.o)
+                0x0000000020303c04                sha256_starts
+                0x0000000020303c4c                sha256_update
+                0x0000000020303c58                sha256_finish
+                0x0000000020303d44                sha256_csum_wd
+ .text          0x0000000020303d6c      0x424 drivers/libdrivers.a(nor.o)
+                0x0000000020303d6c                spifc_enable
+                0x0000000020303d9c                spifc_disable
+                0x0000000020303dc0                spifc_setup_cmd
+                0x0000000020303e44                spifc_wait_cmd_end
+                0x0000000020303e70                spifc_read_fifo
+                0x0000000020303eac                spifc_start
+                0x0000000020303ebc                cmd_seek
+                0x0000000020303edc                nor_read_reg
+                0x0000000020303f3c                nor_read_id
+                0x0000000020303fa4                spi_nor_read
+                0x0000000020304000                nor_read
+                0x0000000020304054                spi_nor_read_security_register
+                0x00000000203040b0                nor_read_security_register
+                0x0000000020304104                nor_init
+                0x0000000020304154                board_flash_init
+ .text          0x0000000020304190      0x82c drivers/libdrivers.a(ddr.o)
+                0x0000000020304190                nsdelay
+                0x00000000203041aa                ddr_clk_init
+                0x00000000203041c0                ddr_phy_init
+                0x00000000203042bc                ddr_ctrl_init
+                0x0000000020304678                ddr_prio_init
+                0x000000002030479c                ddr_init
+ .text          0x00000000203049bc       0xa4 drivers/libdrivers.a(drv_hash.o)
+                0x00000000203049bc                Hash_Calculate
+ .text          0x0000000020304a60      0x174 drivers/libdrivers.a(drv_rsa.o)
+                0x0000000020304a7a                Rsa_Calculate
+ .text          0x0000000020304bd4       0x28 drivers/libdrivers.a(flash.o)
+                0x0000000020304bd4                get_boot_mode
+ .text          0x0000000020304bfc      0x1bc drivers/libdrivers.a(efuse.o)
+                0x0000000020304bfc                efuse_init
+                0x0000000020304c20                get_ddr_flag
+                0x0000000020304d40                get_secure_verify_status
+                0x0000000020304d84                get_otp_secure_verify_status
+ .text          0x0000000020304db8       0x54 cpu/m0/libm0.a(cpu.o)
+                0x0000000020304db8                timer_init
+                0x0000000020304dd0                usdelay
 
-.glue_7         0x0000000020304d44        0x0
+.glue_7         0x0000000020304e0c        0x0
  .glue_7        0x0000000000000000        0x0 linker stubs
 
-.glue_7t        0x0000000020304d44        0x0
+.glue_7t        0x0000000020304e0c        0x0
  .glue_7t       0x0000000000000000        0x0 linker stubs
 
-.vfp11_veneer   0x0000000020304d44        0x0
+.vfp11_veneer   0x0000000020304e0c        0x0
  .vfp11_veneer  0x0000000000000000        0x0 linker stubs
 
-.v4_bx          0x0000000020304d44        0x0
+.v4_bx          0x0000000020304e0c        0x0
  .v4_bx         0x0000000000000000        0x0 linker stubs
 
-.iplt           0x0000000020304d44        0x0
+.iplt           0x0000000020304e0c        0x0
  .iplt          0x0000000000000000        0x0 cpu/m0/start.o
-                0x0000000020304d44                . = ALIGN (0x4)
+                0x0000000020304e0c                . = ALIGN (0x4)
 
-.rodata         0x0000000020304d44      0x3f0
+.rodata         0x0000000020304e0c      0x3f0
  *(.rodata)
- .rodata        0x0000000020304d44      0x270 drivers/libdrivers.a(spifc_loader2.o)
- .rodata        0x0000000020304fb4       0x13 drivers/libdrivers.a(sha256.o)
-                0x0000000020304fb4                sha256_der_prefix
- *fill*         0x0000000020304fc7        0x1 
- .rodata        0x0000000020304fc8      0x16c drivers/libdrivers.a(nor.o)
+ .rodata        0x0000000020304e0c      0x270 drivers/libdrivers.a(spifc_loader2.o)
+ .rodata        0x000000002030507c       0x13 drivers/libdrivers.a(sha256.o)
+                0x000000002030507c                sha256_der_prefix
+ *fill*         0x000000002030508f        0x1 
+ .rodata        0x0000000020305090      0x16c drivers/libdrivers.a(nor.o)
 
-.rodata.str1.1  0x0000000020305134      0x48d
+.rodata.str1.1  0x00000000203051fc      0x516
  .rodata.str1.1
-                0x0000000020305134      0x18a lib/libarm.a(board.o)
-                                        0x1a3 (松开之前的大小)
+                0x00000000203051fc      0x213 lib/libarm.a(board.o)
+                                        0x24e (松开之前的大小)
  .rodata.str1.1
-                0x00000000203052be       0xef drivers/libdrivers.a(image.o)
+                0x000000002030540f       0xef drivers/libdrivers.a(image.o)
                                         0x115 (松开之前的大小)
  .rodata.str1.1
-                0x00000000203053ad       0x5b drivers/libdrivers.a(secure_verify.o)
+                0x00000000203054fe       0x5b drivers/libdrivers.a(secure_verify.o)
                                          0x5d (松开之前的大小)
  .rodata.str1.1
-                0x0000000020305408       0x3d drivers/libdrivers.a(spifc_loader2.o)
+                0x0000000020305559       0x3d drivers/libdrivers.a(spifc_loader2.o)
                                          0x4a (松开之前的大小)
  .rodata.str1.1
-                0x0000000020305445        0x9 drivers/libdrivers.a(bbt.o)
+                0x0000000020305596        0x9 drivers/libdrivers.a(bbt.o)
  .rodata.str1.1
-                0x000000002030544e      0x15c drivers/libdrivers.a(nor.o)
+                0x000000002030559f      0x15c drivers/libdrivers.a(nor.o)
  .rodata.str1.1
-                0x00000000203055aa       0x17 drivers/libdrivers.a(efuse.o)
+                0x00000000203056fb       0x17 drivers/libdrivers.a(efuse.o)
 
-.rel.dyn        0x00000000203055c4        0x0
+.rel.dyn        0x0000000020305714        0x0
  .rel.iplt      0x0000000000000000        0x0 cpu/m0/start.o
-                0x00000000203055c4                . = ALIGN (0x4)
+                0x0000000020305714                . = ALIGN (0x4)
 
-.data           0x00000000203055c4       0xd0
+.data           0x0000000020305714       0xd0
  *(.data)
- .data          0x00000000203055c4        0x0 cpu/m0/start.o
- .data          0x00000000203055c4        0x0 lib/libarm.a(board.o)
- .data          0x00000000203055c4        0x0 lib/libarm.a(string.o)
- .data          0x00000000203055c4        0x0 drivers/libdrivers.a(uart.o)
- .data          0x00000000203055c4        0x0 drivers/libdrivers.a(image.o)
- .data          0x00000000203055c4        0x0 drivers/libdrivers.a(secure_verify.o)
- .data          0x00000000203055c4        0x0 drivers/libdrivers.a(spifc_loader2.o)
- .data          0x00000000203055c4       0x40 drivers/libdrivers.a(bbt.o)
- .data          0x0000000020305604       0x40 drivers/libdrivers.a(sha256.o)
- .data          0x0000000020305644       0x50 drivers/libdrivers.a(nor.o)
-                0x0000000020305644                nor_cmd_table
- .data          0x0000000020305694        0x0 drivers/libdrivers.a(ddr.o)
- .data          0x0000000020305694        0x0 drivers/libdrivers.a(drv_hash.o)
- .data          0x0000000020305694        0x0 drivers/libdrivers.a(drv_rsa.o)
- .data          0x0000000020305694        0x0 drivers/libdrivers.a(flash.o)
- .data          0x0000000020305694        0x0 drivers/libdrivers.a(efuse.o)
- .data          0x0000000020305694        0x0 cpu/m0/libm0.a(cpu.o)
+ .data          0x0000000020305714        0x0 cpu/m0/start.o
+ .data          0x0000000020305714        0x0 lib/libarm.a(board.o)
+ .data          0x0000000020305714        0x0 lib/libarm.a(string.o)
+ .data          0x0000000020305714        0x0 drivers/libdrivers.a(uart.o)
+ .data          0x0000000020305714        0x0 drivers/libdrivers.a(image.o)
+ .data          0x0000000020305714        0x0 drivers/libdrivers.a(secure_verify.o)
+ .data          0x0000000020305714        0x0 drivers/libdrivers.a(spifc_loader2.o)
+ .data          0x0000000020305714       0x40 drivers/libdrivers.a(bbt.o)
+ .data          0x0000000020305754       0x40 drivers/libdrivers.a(sha256.o)
+ .data          0x0000000020305794       0x50 drivers/libdrivers.a(nor.o)
+                0x0000000020305794                nor_cmd_table
+ .data          0x00000000203057e4        0x0 drivers/libdrivers.a(ddr.o)
+ .data          0x00000000203057e4        0x0 drivers/libdrivers.a(drv_hash.o)
+ .data          0x00000000203057e4        0x0 drivers/libdrivers.a(drv_rsa.o)
+ .data          0x00000000203057e4        0x0 drivers/libdrivers.a(flash.o)
+ .data          0x00000000203057e4        0x0 drivers/libdrivers.a(efuse.o)
+ .data          0x00000000203057e4        0x0 cpu/m0/libm0.a(cpu.o)
 
-.igot.plt       0x0000000020305694        0x0
+.igot.plt       0x00000000203057e4        0x0
  .igot.plt      0x0000000000000000        0x0 cpu/m0/start.o
-                0x0000000020305694                . = ALIGN (0x4)
+                0x00000000203057e4                . = ALIGN (0x4)
 
 .got
  *(.got)
-                0x0000000020305694                . = ALIGN (0x4)
-                0x0000000020305694                __bss_start = .
+                0x00000000203057e4                . = ALIGN (0x4)
+                0x00000000203057e4                __bss_start = .
 
-.bss            0x0000000020305694      0x1e8
+.bss            0x00000000203057e4      0x1e8
  *(.bss)
- .bss           0x0000000020305694        0x0 cpu/m0/start.o
- .bss           0x0000000020305694        0x4 lib/libarm.a(board.o)
-                0x0000000020305694                zloader_entry_point
- .bss           0x0000000020305698        0x0 lib/libarm.a(string.o)
- .bss           0x0000000020305698        0x0 drivers/libdrivers.a(uart.o)
- .bss           0x0000000020305698        0x0 drivers/libdrivers.a(image.o)
- .bss           0x0000000020305698      0x104 drivers/libdrivers.a(secure_verify.o)
-                0x0000000020305698                result
- .bss           0x000000002030579c        0x4 drivers/libdrivers.a(spifc_loader2.o)
- .bss           0x00000000203057a0       0x80 drivers/libdrivers.a(bbt.o)
- .bss           0x0000000020305820        0x0 drivers/libdrivers.a(sha256.o)
- .bss           0x0000000020305820       0x28 drivers/libdrivers.a(nor.o)
-                0x0000000020305820                spi_nor_flash
-                0x0000000020305824                otp_data
- .bss           0x0000000020305848        0x0 drivers/libdrivers.a(ddr.o)
- .bss           0x0000000020305848        0x0 drivers/libdrivers.a(drv_hash.o)
- .bss           0x0000000020305848        0x0 drivers/libdrivers.a(drv_rsa.o)
- .bss           0x0000000020305848       0x24 drivers/libdrivers.a(flash.o)
-                0x0000000020305848                flash
- .bss           0x000000002030586c        0x0 drivers/libdrivers.a(efuse.o)
- .bss           0x000000002030586c       0x10 cpu/m0/libm0.a(cpu.o)
-                0x000000002030586c                g_tick
-                0x000000002030587c                __bss_end = .
-                0x000000002030587c                . = ALIGN (0x4)
+ .bss           0x00000000203057e4        0x0 cpu/m0/start.o
+ .bss           0x00000000203057e4        0x4 lib/libarm.a(board.o)
+                0x00000000203057e4                zloader_entry_point
+ .bss           0x00000000203057e8        0x0 lib/libarm.a(string.o)
+ .bss           0x00000000203057e8        0x0 drivers/libdrivers.a(uart.o)
+ .bss           0x00000000203057e8        0x0 drivers/libdrivers.a(image.o)
+ .bss           0x00000000203057e8      0x104 drivers/libdrivers.a(secure_verify.o)
+                0x00000000203057e8                result
+ .bss           0x00000000203058ec        0x4 drivers/libdrivers.a(spifc_loader2.o)
+ .bss           0x00000000203058f0       0x80 drivers/libdrivers.a(bbt.o)
+ .bss           0x0000000020305970        0x0 drivers/libdrivers.a(sha256.o)
+ .bss           0x0000000020305970       0x28 drivers/libdrivers.a(nor.o)
+                0x0000000020305970                spi_nor_flash
+                0x0000000020305974                otp_data
+ .bss           0x0000000020305998        0x0 drivers/libdrivers.a(ddr.o)
+ .bss           0x0000000020305998        0x0 drivers/libdrivers.a(drv_hash.o)
+ .bss           0x0000000020305998        0x0 drivers/libdrivers.a(drv_rsa.o)
+ .bss           0x0000000020305998       0x24 drivers/libdrivers.a(flash.o)
+                0x0000000020305998                flash
+ .bss           0x00000000203059bc        0x0 drivers/libdrivers.a(efuse.o)
+ .bss           0x00000000203059bc       0x10 cpu/m0/libm0.a(cpu.o)
+                0x00000000203059bc                g_tick
+                0x00000000203059cc                __bss_end = .
+                0x00000000203059cc                . = ALIGN (0x4)
 
-.para           0x0000000082000000        0x0 加载地址 0x000000002030587c
+.para           0x0000000082000000        0x0 加载地址 0x00000000203059cc
                 0x0000000082000000                __para_start = .
  *(.para)
                 0x0000000082000000                __para_end = .
@@ -356,22 +356,22 @@
 .stabstr        0x0000000000000000       0x67
  .stabstr       0x0000000000000000       0x67 cpu/m0/start.o
 
-.debug_info     0x0000000000000000     0x6536
- .debug_info    0x0000000000000000      0x92d lib/libarm.a(board.o)
- .debug_info    0x000000000000092d      0x22b lib/libarm.a(string.o)
- .debug_info    0x0000000000000b58      0x2a0 drivers/libdrivers.a(uart.o)
- .debug_info    0x0000000000000df8      0xdd6 drivers/libdrivers.a(image.o)
- .debug_info    0x0000000000001bce      0xb01 drivers/libdrivers.a(secure_verify.o)
- .debug_info    0x00000000000026cf     0x1661 drivers/libdrivers.a(spifc_loader2.o)
- .debug_info    0x0000000000003d30      0x70f drivers/libdrivers.a(bbt.o)
- .debug_info    0x000000000000443f      0x586 drivers/libdrivers.a(sha256.o)
- .debug_info    0x00000000000049c5      0xd5f drivers/libdrivers.a(nor.o)
- .debug_info    0x0000000000005724      0x329 drivers/libdrivers.a(ddr.o)
- .debug_info    0x0000000000005a4d      0x1e8 drivers/libdrivers.a(drv_hash.o)
- .debug_info    0x0000000000005c35      0x3b4 drivers/libdrivers.a(drv_rsa.o)
- .debug_info    0x0000000000005fe9      0x20f drivers/libdrivers.a(flash.o)
- .debug_info    0x00000000000061f8      0x1c3 drivers/libdrivers.a(efuse.o)
- .debug_info    0x00000000000063bb      0x17b cpu/m0/libm0.a(cpu.o)
+.debug_info     0x0000000000000000     0x663a
+ .debug_info    0x0000000000000000      0xa31 lib/libarm.a(board.o)
+ .debug_info    0x0000000000000a31      0x22b lib/libarm.a(string.o)
+ .debug_info    0x0000000000000c5c      0x2a0 drivers/libdrivers.a(uart.o)
+ .debug_info    0x0000000000000efc      0xdd6 drivers/libdrivers.a(image.o)
+ .debug_info    0x0000000000001cd2      0xb01 drivers/libdrivers.a(secure_verify.o)
+ .debug_info    0x00000000000027d3     0x1661 drivers/libdrivers.a(spifc_loader2.o)
+ .debug_info    0x0000000000003e34      0x70f drivers/libdrivers.a(bbt.o)
+ .debug_info    0x0000000000004543      0x586 drivers/libdrivers.a(sha256.o)
+ .debug_info    0x0000000000004ac9      0xd5f drivers/libdrivers.a(nor.o)
+ .debug_info    0x0000000000005828      0x329 drivers/libdrivers.a(ddr.o)
+ .debug_info    0x0000000000005b51      0x1e8 drivers/libdrivers.a(drv_hash.o)
+ .debug_info    0x0000000000005d39      0x3b4 drivers/libdrivers.a(drv_rsa.o)
+ .debug_info    0x00000000000060ed      0x20f drivers/libdrivers.a(flash.o)
+ .debug_info    0x00000000000062fc      0x1c3 drivers/libdrivers.a(efuse.o)
+ .debug_info    0x00000000000064bf      0x17b cpu/m0/libm0.a(cpu.o)
 
 .debug_abbrev   0x0000000000000000     0x1c94
  .debug_abbrev  0x0000000000000000      0x304 lib/libarm.a(board.o)
@@ -390,22 +390,22 @@
  .debug_abbrev  0x0000000000001aaf      0x11d drivers/libdrivers.a(efuse.o)
  .debug_abbrev  0x0000000000001bcc       0xc8 cpu/m0/libm0.a(cpu.o)
 
-.debug_loc      0x0000000000000000     0x96e6
- .debug_loc     0x0000000000000000      0x2f4 lib/libarm.a(board.o)
- .debug_loc     0x00000000000002f4      0x29d lib/libarm.a(string.o)
- .debug_loc     0x0000000000000591      0x228 drivers/libdrivers.a(uart.o)
- .debug_loc     0x00000000000007b9      0x6a2 drivers/libdrivers.a(image.o)
- .debug_loc     0x0000000000000e5b      0x790 drivers/libdrivers.a(secure_verify.o)
- .debug_loc     0x00000000000015eb      0xef4 drivers/libdrivers.a(spifc_loader2.o)
- .debug_loc     0x00000000000024df      0x282 drivers/libdrivers.a(bbt.o)
- .debug_loc     0x0000000000002761     0x5f3f drivers/libdrivers.a(sha256.o)
- .debug_loc     0x00000000000086a0      0x80a drivers/libdrivers.a(nor.o)
- .debug_loc     0x0000000000008eaa      0x2d8 drivers/libdrivers.a(ddr.o)
- .debug_loc     0x0000000000009182      0x1b8 drivers/libdrivers.a(drv_hash.o)
- .debug_loc     0x000000000000933a      0x238 drivers/libdrivers.a(drv_rsa.o)
- .debug_loc     0x0000000000009572       0x1f drivers/libdrivers.a(flash.o)
- .debug_loc     0x0000000000009591       0xab drivers/libdrivers.a(efuse.o)
- .debug_loc     0x000000000000963c       0xaa cpu/m0/libm0.a(cpu.o)
+.debug_loc      0x0000000000000000     0x97b8
+ .debug_loc     0x0000000000000000      0x3c6 lib/libarm.a(board.o)
+ .debug_loc     0x00000000000003c6      0x29d lib/libarm.a(string.o)
+ .debug_loc     0x0000000000000663      0x228 drivers/libdrivers.a(uart.o)
+ .debug_loc     0x000000000000088b      0x6a2 drivers/libdrivers.a(image.o)
+ .debug_loc     0x0000000000000f2d      0x790 drivers/libdrivers.a(secure_verify.o)
+ .debug_loc     0x00000000000016bd      0xef4 drivers/libdrivers.a(spifc_loader2.o)
+ .debug_loc     0x00000000000025b1      0x282 drivers/libdrivers.a(bbt.o)
+ .debug_loc     0x0000000000002833     0x5f3f drivers/libdrivers.a(sha256.o)
+ .debug_loc     0x0000000000008772      0x80a drivers/libdrivers.a(nor.o)
+ .debug_loc     0x0000000000008f7c      0x2d8 drivers/libdrivers.a(ddr.o)
+ .debug_loc     0x0000000000009254      0x1b8 drivers/libdrivers.a(drv_hash.o)
+ .debug_loc     0x000000000000940c      0x238 drivers/libdrivers.a(drv_rsa.o)
+ .debug_loc     0x0000000000009644       0x1f drivers/libdrivers.a(flash.o)
+ .debug_loc     0x0000000000009663       0xab drivers/libdrivers.a(efuse.o)
+ .debug_loc     0x000000000000970e       0xaa cpu/m0/libm0.a(cpu.o)
 
 .debug_aranges  0x0000000000000000      0x1e0
  .debug_aranges
@@ -449,53 +449,53 @@
  .debug_ranges  0x00000000000001d8       0x28 drivers/libdrivers.a(drv_hash.o)
  .debug_ranges  0x0000000000000200       0x38 drivers/libdrivers.a(drv_rsa.o)
 
-.debug_line     0x0000000000000000     0x2022
- .debug_line    0x0000000000000000      0x387 lib/libarm.a(board.o)
- .debug_line    0x0000000000000387      0x152 lib/libarm.a(string.o)
- .debug_line    0x00000000000004d9      0x112 drivers/libdrivers.a(uart.o)
- .debug_line    0x00000000000005eb      0x3b8 drivers/libdrivers.a(image.o)
- .debug_line    0x00000000000009a3      0x38e drivers/libdrivers.a(secure_verify.o)
- .debug_line    0x0000000000000d31      0x442 drivers/libdrivers.a(spifc_loader2.o)
- .debug_line    0x0000000000001173      0x251 drivers/libdrivers.a(bbt.o)
- .debug_line    0x00000000000013c4      0x2bb drivers/libdrivers.a(sha256.o)
- .debug_line    0x000000000000167f      0x2a2 drivers/libdrivers.a(nor.o)
- .debug_line    0x0000000000001921      0x299 drivers/libdrivers.a(ddr.o)
- .debug_line    0x0000000000001bba       0x88 drivers/libdrivers.a(drv_hash.o)
- .debug_line    0x0000000000001c42      0x117 drivers/libdrivers.a(drv_rsa.o)
- .debug_line    0x0000000000001d59      0x10a drivers/libdrivers.a(flash.o)
- .debug_line    0x0000000000001e63      0x118 drivers/libdrivers.a(efuse.o)
- .debug_line    0x0000000000001f7b       0xa7 cpu/m0/libm0.a(cpu.o)
+.debug_line     0x0000000000000000     0x205d
+ .debug_line    0x0000000000000000      0x3c2 lib/libarm.a(board.o)
+ .debug_line    0x00000000000003c2      0x152 lib/libarm.a(string.o)
+ .debug_line    0x0000000000000514      0x112 drivers/libdrivers.a(uart.o)
+ .debug_line    0x0000000000000626      0x3b8 drivers/libdrivers.a(image.o)
+ .debug_line    0x00000000000009de      0x38e drivers/libdrivers.a(secure_verify.o)
+ .debug_line    0x0000000000000d6c      0x442 drivers/libdrivers.a(spifc_loader2.o)
+ .debug_line    0x00000000000011ae      0x251 drivers/libdrivers.a(bbt.o)
+ .debug_line    0x00000000000013ff      0x2bb drivers/libdrivers.a(sha256.o)
+ .debug_line    0x00000000000016ba      0x2a2 drivers/libdrivers.a(nor.o)
+ .debug_line    0x000000000000195c      0x299 drivers/libdrivers.a(ddr.o)
+ .debug_line    0x0000000000001bf5       0x88 drivers/libdrivers.a(drv_hash.o)
+ .debug_line    0x0000000000001c7d      0x117 drivers/libdrivers.a(drv_rsa.o)
+ .debug_line    0x0000000000001d94      0x10a drivers/libdrivers.a(flash.o)
+ .debug_line    0x0000000000001e9e      0x118 drivers/libdrivers.a(efuse.o)
+ .debug_line    0x0000000000001fb6       0xa7 cpu/m0/libm0.a(cpu.o)
 
-.debug_str      0x0000000000000000     0x160a
- .debug_str     0x0000000000000000      0x555 lib/libarm.a(board.o)
-                                        0x5cb (松开之前的大小)
- .debug_str     0x0000000000000555       0x3f lib/libarm.a(string.o)
+.debug_str      0x0000000000000000     0x1616
+ .debug_str     0x0000000000000000      0x561 lib/libarm.a(board.o)
+                                        0x5d7 (松开之前的大小)
+ .debug_str     0x0000000000000561       0x3f lib/libarm.a(string.o)
                                         0x214 (松开之前的大小)
- .debug_str     0x0000000000000594       0xe2 drivers/libdrivers.a(uart.o)
+ .debug_str     0x00000000000005a0       0xe2 drivers/libdrivers.a(uart.o)
                                         0x253 (松开之前的大小)
- .debug_str     0x0000000000000676      0x35b drivers/libdrivers.a(image.o)
+ .debug_str     0x0000000000000682      0x35b drivers/libdrivers.a(image.o)
                                         0x854 (松开之前的大小)
- .debug_str     0x00000000000009d1      0x2f9 drivers/libdrivers.a(secure_verify.o)
+ .debug_str     0x00000000000009dd      0x2f9 drivers/libdrivers.a(secure_verify.o)
                                         0x61f (松开之前的大小)
- .debug_str     0x0000000000000cca      0x3c3 drivers/libdrivers.a(spifc_loader2.o)
+ .debug_str     0x0000000000000cd6      0x3c3 drivers/libdrivers.a(spifc_loader2.o)
                                         0x6c1 (松开之前的大小)
- .debug_str     0x000000000000108d      0x103 drivers/libdrivers.a(bbt.o)
+ .debug_str     0x0000000000001099      0x103 drivers/libdrivers.a(bbt.o)
                                         0x3fe (松开之前的大小)
- .debug_str     0x0000000000001190       0xc3 drivers/libdrivers.a(sha256.o)
+ .debug_str     0x000000000000119c       0xc3 drivers/libdrivers.a(sha256.o)
                                         0x2b7 (松开之前的大小)
- .debug_str     0x0000000000001253      0x1ad drivers/libdrivers.a(nor.o)
+ .debug_str     0x000000000000125f      0x1ad drivers/libdrivers.a(nor.o)
                                         0x5f3 (松开之前的大小)
- .debug_str     0x0000000000001400       0x54 drivers/libdrivers.a(ddr.o)
+ .debug_str     0x000000000000140c       0x54 drivers/libdrivers.a(ddr.o)
                                         0x216 (松开之前的大小)
- .debug_str     0x0000000000001454       0x87 drivers/libdrivers.a(drv_hash.o)
+ .debug_str     0x0000000000001460       0x87 drivers/libdrivers.a(drv_hash.o)
                                         0x25a (松开之前的大小)
- .debug_str     0x00000000000014db       0x79 drivers/libdrivers.a(drv_rsa.o)
+ .debug_str     0x00000000000014e7       0x79 drivers/libdrivers.a(drv_rsa.o)
                                         0x29c (松开之前的大小)
- .debug_str     0x0000000000001554       0x12 drivers/libdrivers.a(flash.o)
+ .debug_str     0x0000000000001560       0x12 drivers/libdrivers.a(flash.o)
                                         0x2a8 (松开之前的大小)
- .debug_str     0x0000000000001566       0x20 drivers/libdrivers.a(efuse.o)
+ .debug_str     0x0000000000001572       0x20 drivers/libdrivers.a(efuse.o)
                                         0x255 (松开之前的大小)
- .debug_str     0x0000000000001586       0x84 cpu/m0/libm0.a(cpu.o)
+ .debug_str     0x0000000000001592       0x84 cpu/m0/libm0.a(cpu.o)
                                         0x1f8 (松开之前的大小)
 
 .debug_frame    0x0000000000000000      0xaf0
diff --git a/Uboot/cp/ps/driver/inc/misc/drvs_voiceprocess.h b/Uboot/cp/ps/driver/inc/misc/drvs_voiceprocess.h
index 67cc84d..acceb20 100755
--- a/Uboot/cp/ps/driver/inc/misc/drvs_voiceprocess.h
+++ b/Uboot/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/Uboot/cp/ps/driver/src/chipsets/src/audio_base/audio_config/audioRef_cfg.c b/Uboot/cp/ps/driver/src/chipsets/src/audio_base/audio_config/audioRef_cfg.c
index 7489d52..20c1ddc 100755
--- a/Uboot/cp/ps/driver/src/chipsets/src/audio_base/audio_config/audioRef_cfg.c
+++ b/Uboot/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/Uboot/cp/ps/driver/src/chipsets/src/audio_base/audio_lib/amr/lib/armv7-a/GCC/amr.a b/Uboot/cp/ps/driver/src/chipsets/src/audio_base/audio_lib/amr/lib/armv7-a/GCC/amr.a
index 01399c1..187ec92 100755
--- a/Uboot/cp/ps/driver/src/chipsets/src/audio_base/audio_lib/amr/lib/armv7-a/GCC/amr.a
+++ b/Uboot/cp/ps/driver/src/chipsets/src/audio_base/audio_lib/amr/lib/armv7-a/GCC/amr.a
Binary files differ
diff --git a/Uboot/cp/ps/driver/src/chipsets/src/audio_base/audiointf/hal_audextintf.c b/Uboot/cp/ps/driver/src/chipsets/src/audio_base/audiointf/hal_audextintf.c
index dff7364..db57346 100755
--- a/Uboot/cp/ps/driver/src/chipsets/src/audio_base/audiointf/hal_audextintf.c
+++ b/Uboot/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/Uboot/cp/ps/driver/src/chipsets/src/audio_base/audiointf/voice_procintf.c b/Uboot/cp/ps/driver/src/chipsets/src/audio_base/audiointf/voice_procintf.c
index 2f0e803..5146753 100755
--- a/Uboot/cp/ps/driver/src/chipsets/src/audio_base/audiointf/voice_procintf.c
+++ b/Uboot/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/Uboot/cp/ps/driver/src/chipsets/src/audio_base/i2s/hal_i2s.c b/Uboot/cp/ps/driver/src/chipsets/src/audio_base/i2s/hal_i2s.c
index 983a92a..5ea7c1d 100755
--- a/Uboot/cp/ps/driver/src/chipsets/src/audio_base/i2s/hal_i2s.c
+++ b/Uboot/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/Uboot/cp/ps/driver/src/chipsets/src/audio_base/include/hal_voicebuffer.h b/Uboot/cp/ps/driver/src/chipsets/src/audio_base/include/hal_voicebuffer.h
new file mode 100755
index 0000000..a9fbd34
--- /dev/null
+++ b/Uboot/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/Uboot/cp/ps/driver/src/chipsets/src/audio_base/include/hal_voiceprocess.h b/Uboot/cp/ps/driver/src/chipsets/src/audio_base/include/hal_voiceprocess.h
index 371297d..810e12c 100755
--- a/Uboot/cp/ps/driver/src/chipsets/src/audio_base/include/hal_voiceprocess.h
+++ b/Uboot/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/Uboot/cp/ps/driver/src/chipsets/src/audio_base/nxp/hal_nxp.c b/Uboot/cp/ps/driver/src/chipsets/src/audio_base/nxp/hal_nxp.c
new file mode 100755
index 0000000..3dfed2e
--- /dev/null
+++ b/Uboot/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/Uboot/cp/ps/driver/src/chipsets/src/audio_base/nxp/hal_nxp.h b/Uboot/cp/ps/driver/src/chipsets/src/audio_base/nxp/hal_nxp.h
new file mode 100755
index 0000000..9547823
--- /dev/null
+++ b/Uboot/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/Uboot/cp/ps/driver/src/chipsets/src/audio_base/nxp/makefile b/Uboot/cp/ps/driver/src/chipsets/src/audio_base/nxp/makefile
new file mode 100755
index 0000000..b4f481e
--- /dev/null
+++ b/Uboot/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/Uboot/cp/ps/driver/src/chipsets/src/audio_base/nxp/testnxp_rxin2rxout.c b/Uboot/cp/ps/driver/src/chipsets/src/audio_base/nxp/testnxp_rxin2rxout.c
new file mode 100755
index 0000000..6a10dbc
--- /dev/null
+++ b/Uboot/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/Uboot/cp/ps/driver/src/chipsets/src/audio_base/nxp/tos/LVC_Types.h b/Uboot/cp/ps/driver/src/chipsets/src/audio_base/nxp/tos/LVC_Types.h
new file mode 100755
index 0000000..14efe8c
--- /dev/null
+++ b/Uboot/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/Uboot/cp/ps/driver/src/chipsets/src/audio_base/nxp/tos/LVVE.h b/Uboot/cp/ps/driver/src/chipsets/src/audio_base/nxp/tos/LVVE.h
new file mode 100755
index 0000000..9c48d8e
--- /dev/null
+++ b/Uboot/cp/ps/driver/src/chipsets/src/audio_base/nxp/tos/LVVE.h
@@ -0,0 +1,1371 @@
+/****************************************************************************************/

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

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

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

+/*                                                                                      */

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

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

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

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

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

+/*                                                                                      */

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

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

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

+/*  written  permission of NXP Software.                                                */

+/*                                                                                      */

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

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

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

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

+/*                                                                                      */

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

+/*              preferred for modification, or                                          */

+/*                                                                                      */

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

+/*              works, or                                                               */

+/*                                                                                      */

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

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

+/*                                                                                      */

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

+/*              under Intellectual Property Rights                                      */

+/*                                                                                      */

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

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

+/*                                                                                      */

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

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

+/*  prohibited.                                                                         */

+/*                                                                                      */

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

+

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

+/*                                                                                      */

+/*     $Author: nxp65285 $*/

+/*     $Revision: 56908 $*/

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

+/*                                                                                      */

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

+

+/**

+@file

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

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

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

+private.

+*/

+

+#ifndef __LVVE_H__

+#define __LVVE_H__

+

+#ifdef __cplusplus

+extern "C" {

+#endif /* __cplusplus */

+

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

+/*                                                                                      */

+/*  Includes                                                                            */

+/*                                                                                      */

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

+

+#include "LVVE_VID.h"

+

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

+/*                                                                                      */

+/*  Definitions                                                                         */

+/*                                                                                      */

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

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

+

+

+

+

+

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

+

+

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

+/**

+@def LVVE_RX_PRESET_LENGTH

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

+@see LVVE_Rx_SetPreset

+@ingroup LVVE_Rx

+*/

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

+

+/**

+@def LVVE_TX_PRESET_LENGTH

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

+@see LVVE_Tx_SetPreset

+@ingroup LVVE_Tx

+*/

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

+

+

+/* Deprecated Definitions */

+

+#define LVVE_MAX_BULK_DELAY             LVVE_TX_BULKDELAY_MAX

+#define LVVE_RX_MODE_DUMMY LVVE_RX_MODE_EN_DUMMY

+#define LVVE_TX_MODE_DUMMY LVVE_TX_MODE_EN_DUMMY

+

+#define LVVE_MAX_VOL_GAIN_DB            LVVE_TX_VOL_GAIN_MAX

+#define LVVE_MIN_VOL_GAIN_DB            LVVE_TX_VOL_GAIN_MIN

+

+#define LVVE_MAX_HPF_CORNER_HZ          LVVE_TX_MIC_HPF_CORNERFREQ_MAX

+#define LVVE_MIN_HPF_CORNER_HZ          LVVE_TX_MIC_HPF_CORNERFREQ_MIN

+

+#define LVVE_MAX_HPF_RX_CORNER_HZ       LVVE_RX_HPF_CORNERFREQ_MAX

+

+#define LVVE_MAX_NLPP_LIMIT_DB          LVNLPP_NLPP_LIMIT_MAX

+#define LVVE_MIN_NLPP_LIMIT_DB          LVNLPP_NLPP_LIMIT_MIN

+

+

+#define LVVE_MAX_DRC_LEVEL              LVDRC_COMPRESSORCURVEINPUTLEVELS_MAX

+#define LVVE_MIN_DRC_LEVEL              LVDRC_COMPRESSORCURVEINPUTLEVELS_MIN

+#define LVVE_MIN_DRC_NUMKNEES           LVDRC_NUMKNEES_MIN

+#define LVVE_MAX_DRC_NUMKNEES           LVDRC_NUMKNEES_MAX

+#define LVVE_MIN_DRC_ATTACKTIME         LVDRC_ATTACKTIME_MIN

+#define LVVE_MAX_DRC_ATTACKTIME         LVDRC_ATTACKTIME_MAX

+#define LVVE_MIN_DRC_RELEASETIME        LVDRC_RELEASETIME_MIN

+#define LVVE_MAX_DRC_RELEASETIME        LVDRC_RELEASETIME_MAX

+

+

+/* End deprecated defines*/

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

+/*                                                                                      */

+/*  Types                                                                               */

+/*                                                                                      */

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

+

+/**

+LVVE_Tx Instance Handle

+This handle is used by most of the LVVE APIs

+@see LVVE_Tx_GetInstanceHandle

+@ingroup LVVE_Tx

+*/

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

+/**

+This handle is used by most of the LVVE APIs

+@see LVVE_Rx_GetInstanceHandle

+@ingroup LVVE_Rx

+*/

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

+

+/**

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

+For the exact meaning see the individual function descriptions

+*/

+typedef enum

+{

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

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

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

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

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

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

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

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

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

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

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

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

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

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

+

+    LVVE_RETURNSTATUS_DUMMY                 = LVM_MAXENUM

+} LVVE_ReturnStatus_en;

+

+/**

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

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

+@see LVVE_Rx_SetPreset

+@ingroup LVVE_Rx

+*/

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

+

+/**

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

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

+@see LVVE_Tx_SetPreset

+@ingroup LVVE_Tx

+*/

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

+

+

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

+/*                                                                                      */

+/*  Structures                                                                          */

+/*                                                                                      */

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

+

+/**

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

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

+when the instance is created.

+@see LVVE_Rx_GetMemoryTable

+@see LVVE_Rx_GetInstanceHandle

+@see LVVE_Tx_GetMemoryTable

+@see LVVE_Tx_GetInstanceHandle

+*/

+/**

+EQ Module Instance Parameters Structure.

+@see LVEQ_InstanceParams_st

+*/

+typedef struct

+{

+/**

+Max Size of Equalizer

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

+It must be a multiple of 8.

+<table border>

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

+   <tr>

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

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

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

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

+   </tr>

+   <tr>

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

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

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

+       <td>\ref LVEQ_EQ_LENGTH_DEFAULT</td>

+   </tr>

+</table>

+*/

+    LVM_UINT16                    EQ_MaxLength;  ///< EQ Max Length

+} LVEQ_InstanceParams_st;

+

+/**

+Tx Instance Parameter Structure

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

+@ref LVVE_Tx_GetInstanceHandle

+@ingroup LVVE_Tx

+*/

+typedef struct

+{

+    LVM_Fs_en                   SampleRate;      ///< Sample rate

+/**

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

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

+<table border>

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

+   <tr>

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

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

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

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

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

+   </tr>

+   <tr>

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

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

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

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

+       <td>None</td>

+   </tr>

+</table>

+*/

+    LVM_UINT16                  MaxBulkDelay;     ///< Max bulk delay

+

+    LVEQ_InstanceParams_st      EQ_InstParams;  ///< EQ instance

+} LVVE_Tx_InstanceParams_st;

+

+/**

+Rx Instance Parameter Structure

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

+@ref LVVE_Rx_GetInstanceHandle

+@ingroup LVVE_Rx

+*/

+typedef struct

+{

+    LVM_Fs_en                   SampleRate;            ///< LVVE sample rate

+    LVEQ_InstanceParams_st      EQ_InstParams;///< EQ instance

+

+} LVVE_Rx_InstanceParams_st;

+

+/**

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

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

+*/

+typedef struct

+{

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

+} LVVE_VersionInfo;

+

+/**

+Used to reset LVVE_Rx module any time.

+@ref LVM_ResetType_en parameter determine the type of reset required

+@ingroup LVVE_Rx

+*/

+typedef struct

+{

+    LVM_ResetType_en ResetType;  ///< RX Reset Type

+} LVVE_Rx_ResetParams_st;

+

+/**

+Used to reset LVVE_Tx module any time.

+LVM_ResetType_en parameter determine the type of reset required

+@ingroup LVVE_Tx

+*/

+typedef struct

+{

+    LVM_ResetType_en ResetType;   ///< TX Reset Type

+} LVVE_Tx_ResetParams_st;

+

+/**

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

+

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

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

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

+

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

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

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

+    requirements are affected by these settings.

+

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

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

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

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

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

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

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

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

+

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

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

+

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

+will be NULL on return.

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

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

+initialisation.

+

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

+@return  LVVE_NULLADDRESS       when pMemoryTable was NULL

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

+                                is NULL.

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

+

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

+

+@ingroup LVVE_Tx

+

+LVVE_Tx_GetMemoryTable: Memory Allocation Example:

+

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

+\code

+    InstParams_Tx.SampleRate    = LVM_FS_8000;

+    // Include the other instance params here

+

+    LVVE_Status = LVVE_Tx_GetMemoryTable ( LVM_NULL,

+                                           &MemTab_Tx,

+                                           &InstParams_Tx );

+

+    if( LVVE_Status != LVVE_SUCCESS )

+    {

+        // Handle Errors

+    }

+

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

+    {

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

+        {

+            MemTab_Tx.Region[c1].pBaseAddress =

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

+        }

+    }

+\endcode

+

+LVVE_Tx_GetMemoryTable: Freeing Memory Example:

+

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

+

+\code

+    LVVE_Status = LVVE_Tx_GetMemoryTable( hInstance,

+                                              &MemTab_Tx,

+                                              LVM_NULL);

+

+        if (LVVE_Status != LVVE_SUCCESS)

+        {

+            // Handle errors

+        }

+

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

+        {

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

+            {

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

+            }

+        }

+\endcode

+

+*/

+

+LVVE_ReturnStatus_en LVVE_Tx_GetMemoryTable(LVVE_Tx_Handle_t               hInstance,

+                                            LVM_MemoryTable_st             *pMemoryTable,

+                                            LVVE_Tx_InstanceParams_st      *pInstanceParams);

+

+/**

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

+

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

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

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

+

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

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

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

+    requirements are affected by these settings.

+

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

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

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

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

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

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

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

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

+

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

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

+

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

+will be NULL on return.

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

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

+initialisation.

+

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

+@return  LVVE_NULLADDRESS       when pMemoryTable was NULL

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

+                                is NULL.

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

+

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

+

+@ingroup LVVE_Rx

+

+LVVE_Rx_GetMemoryTable: Memory Allocation Example:

+

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

+

+\code

+    InstParams_Rx.SampleRate    = LVM_FS_8000;

+    // Include the other instance params here

+

+    LVVE_Status = LVVE_Rx_GetMemoryTable ( LVM_NULL,

+                                           &MemTab_Rx,

+                                           &InstParams_Rx );

+

+    if( LVVE_Status != LVVE_SUCCESS )

+    {

+        // Handle Errors

+    }

+

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

+    {

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

+        {

+            MemTab_Rx.Region[c1].pBaseAddress =

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

+        }

+    }

+\endcode

+

+LVVE_Rx_GetMemoryTable: Freeing Memory Example:

+

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

+

+\code

+    LVVE_Status = LVVE_Rx_GetMemoryTable( hInstance,

+                                              &MemTab_Rx,

+                                              LVM_NULL);

+

+        if (LVVE_Status != LVVE_SUCCESS)

+        {

+            // Handle errors

+        }

+

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

+        {

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

+            {

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

+            }

+        }

+\endcode

+*/

+

+LVVE_ReturnStatus_en LVVE_Rx_GetMemoryTable(LVVE_Rx_Handle_t               hInstance,

+                                            LVM_MemoryTable_st             *pMemoryTable,

+                                            LVVE_Rx_InstanceParams_st      *pInstanceParams);

+

+

+/**

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

+

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

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

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

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

+used for memory allocation.

+

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

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

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

+to prior call to @ref LVVE_Tx_GetMemoryTable functions.

+

+

+@param  phInstance              Pointer to the instance handle.

+@param  pMemoryTable            Pointer to the memory definition table.

+@param  pInstanceParams         Pointer to the instance parameters.

+

+@return  LVVE_SUCCESS           when creation was successful

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

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

+                                given a NULL base address pointer.

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

+

+@ingroup LVVE_Tx

+

+ LVVE_Tx_GetInstanceHandle Example:

+

+The following example shows how to initialize LVVE_Tx_GetInstanceHandle.

+

+\code

+    hInstance_Tx = LVM_NULL;

+    LVVE_Status = LVVE_Tx_GetInstanceHandle( &hInstance_Tx,

+                                             &MemTab_Tx,

+                                             &InstParams_Tx );

+    if( LVVE_Status != LVVE_SUCCESS )

+    {

+         // Handle Errors

+    }

+\endcode

+

+*/

+

+LVVE_ReturnStatus_en LVVE_Tx_GetInstanceHandle(LVVE_Tx_Handle_t                *phInstance,

+                                               LVM_MemoryTable_st              *pMemoryTable,

+                                               LVVE_Tx_InstanceParams_st       *pInstanceParams);

+

+/**

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

+

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

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

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

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

+used for memory allocation.

+

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

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

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

+to prior call to @ref LVVE_Rx_GetMemoryTable functions.

+

+

+@param  phInstance              Pointer to the instance handle.

+@param  pMemoryTable            Pointer to the memory definition table.

+@param  pInstanceParams         Pointer to the instance parameters.

+

+@return  LVVE_SUCCESS           when creation was successful

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

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

+                                given a NULL base address pointer.

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

+

+@ingroup LVVE_Rx

+

+ LVVE_Rx_GetInstanceHandle Example:

+

+The following example shows how to initialize LVVE_Rx_GetInstanceHandle.

+

+\code

+    hInstance_Rx = LVM_NULL;

+    LVVE_Status = LVVE_Rx_GetInstanceHandle( &hInstance_Rx,

+                                             &MemTab_Rx,

+                                             &InstParams_Rx );

+    if( LVVE_Status != LVVE_SUCCESS )

+    {

+         // Handle Errors

+    }

+\endcode

+

+*/

+

+LVVE_ReturnStatus_en LVVE_Rx_GetInstanceHandle(LVVE_Rx_Handle_t                *phInstance,

+                                               LVM_MemoryTable_st              *pMemoryTable,

+                                               LVVE_Rx_InstanceParams_st       *pInstanceParams);

+

+/**

+@brief Retrieve the current LVVE_Tx control parameters.

+

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

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

+call to the LVVE_Tx_SetControlParameters function.

+

+@param hInstance              Instance handle

+@param pControlParams         Pointer to the control parameters

+

+@pre   hInstance should be valid handle.

+@pre   pControlParams should be allocated by caller.

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

+       the LVVE_Tx_SetControlParameters function. They are not necessarily the values

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

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

+

+@return LVVE_SUCCESS          Succeeded

+@return LVVE_NULLADDRESS      When hInstance or pControlParams is NULL

+

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

+

+@ingroup LVVE_Tx

+

+LVVE_Tx_GetControlParameters Example:

+

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

+

+\code

+    LVVE_Status = LVVE_Tx_GetControlParameters( &hInstance_Tx,

+                                                &ControlParams_Tx );

+

+    if( LVVE_Status != LVVE_SUCCESS )

+    {

+         // Handle Errors

+    }

+\endcode

+

+*/

+

+LVVE_ReturnStatus_en LVVE_Tx_GetControlParameters(   LVVE_Tx_Handle_t           hInstance,

+                                                     LVVE_Tx_ControlParams_st   *pControlParams);

+

+/**

+@brief Retrieve the current LVVE_Rx control parameters.

+

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

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

+call to the LVVE_Rx_SetControlParameters function.

+

+@param hInstance              Instance handle

+@param pControlParams         Pointer to the control parameters

+

+@pre   hInstance should be valid handle.

+@pre   pControlParams should be allocated by caller.

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

+       the LVVE_Rx_SetControlParameters function. They are not necessarily the values

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

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

+

+@return LVVE_SUCCESS          Succeeded

+@return LVVE_NULLADDRESS      When hInstance or pControlParams is NULL

+

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

+

+@ingroup LVVE_Rx

+

+LVVE_Rx_GetControlParameters Example:

+

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

+

+\code

+    LVVE_Status = LVVE_Rx_GetControlParameters( &hInstance_Rx,

+                                                &ControlParams_Rx );

+

+    if( LVVE_Status != LVVE_SUCCESS )

+    {

+         // Handle Errors

+    }

+\endcode

+

+*/

+

+LVVE_ReturnStatus_en LVVE_Rx_GetControlParameters(   LVVE_Rx_Handle_t           hInstance,

+                                                     LVVE_Rx_ControlParams_st   *pControlParams);

+

+/**

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

+

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

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

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

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

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

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

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

+

+@param hInstance               Instance Handle

+@param pNewParams              Pointer to a parameter structure

+

+@pre hInstance should be valid handle.

+

+@return LVVE_SUCCESS          Succeeded

+@return LVVE_NULLADDRESS      When hInstance or pNewParams is NULL

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

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

+                                               (e.g., NoiseVoid and HandsFree)

+

+

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

+

+@ingroup LVVE_Tx

+

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

+

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

+

+\code

+    LVVE_Status = LVVE_Tx_GetControlParameters( &hInstance_Tx,

+                                                &ControlParams_Tx );

+

+    if( LVVE_Status != LVVE_SUCCESS )

+    {

+        // Handle Errors

+    }

+

+     Change Parameters as required

+    ControlParams_Tx.VOL_Gain         = VOL_TABLE[i];

+    ControlParams_Tx.VC_ControlParams = VC_TABLE[i];

+

+    // Update instance with new parameters

+    LVVE_Status = LVVE_Tx_SetControlParameters( &hInstance_Tx,

+                                                &ControlParams_Tx );

+

+    if( LVVE_Status != LVVE_SUCCESS )

+    {

+        // Handle Errors

+    }

+\endcode

+

+*/

+

+LVVE_ReturnStatus_en LVVE_Tx_SetControlParameters(   LVVE_Tx_Handle_t           hInstance,

+                                        const LVVE_Tx_ControlParams_st * const pNewParams);

+

+/**

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

+

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

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

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

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

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

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

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

+

+@param hInstance               Instance Handle

+@param pNewParams              Pointer to a parameter structure

+

+@pre hInstance should be valid handle.

+

+@return LVVE_SUCCESS          Succeeded

+@return LVVE_NULLADDRESS      When hInstance or pNewParams is NULL

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

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

+                                               (e.g., NoiseVoid and HandsFree)

+

+

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

+

+@ingroup LVVE_Rx

+

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

+

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

+

+\code

+    LVVE_Status = LVVE_Rx_GetControlParameters( &hInstance_Rx,

+                                                &ControlParams_Rx );

+

+    if( LVVE_Status != LVVE_SUCCESS )

+    {

+        // Handle Errors

+    }

+

+     Change Parameters as required

+    ControlParams_Rx.VOL_Gain         = VOL_TABLE[i];

+    ControlParams_Rx.VC_ControlParams = VC_TABLE[i];

+

+    // Update instance with new parameters

+    LVVE_Status = LVVE_Rx_SetControlParameters( &hInstance_Rx,

+                                                &ControlParams_Rx );

+

+    if( LVVE_Status != LVVE_SUCCESS )

+    {

+        // Handle Errors

+    }

+\endcode

+

+*/

+LVVE_ReturnStatus_en LVVE_Rx_SetControlParameters(   LVVE_Rx_Handle_t           hInstance,

+                                        const LVVE_Rx_ControlParams_st * const pNewParams);

+

+/**

+@brief Retrieve the current LVVE_Tx status parameters.

+

+This function copies internal status variables into the supplied status

+parameter structures.

+

+@param hInstance      Instance handle

+@param pStatusParams  Pointer to the status parameters

+

+@pre   hInstance should be valid handle.

+@pre   pStatusParams should be allocated by caller.

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

+

+@return LVVE_SUCCESS          Succeeded

+@return LVVE_NULLADDRESS      When hInstance or pStatusParams is NULL

+

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

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

+

+

+@ingroup LVVE_Tx

+

+LVVE_Tx_GetStatusParameters: Get Internal Algorithm Status Attributes Example:

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

+

+\code

+    LVVE_Tx_StatusParams_st  Tx_Monitor;

+    Status=LVVE_Tx_GetStatusParameters(hInstance_Tx,&Tx_Monitor);

+    if (Status != LVVE_SUCCESS )

+    {

+       // Error Handling

+    }

+\endcode

+

+*/

+

+LVVE_ReturnStatus_en LVVE_Tx_GetStatusParameters(    LVVE_Tx_Handle_t           hInstance,

+                                                     LVVE_Tx_StatusParams_st    *pStatusParams);

+

+/**

+@brief Retrieve the current LVVE_Rx status parameters.

+

+This function copies internal status variables into the supplied status

+parameter structures.

+

+@param hInstance      Instance handle

+@param pStatusParams  Pointer to the status parameters

+

+@pre   hInstance should be valid handle.

+@pre   pStatusParams should be allocated by caller.

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

+

+@return LVVE_SUCCESS          Succeeded

+@return LVVE_NULLADDRESS      When hInstance or pStatusParams is NULL

+

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

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

+

+@ingroup LVVE_Rx

+

+LVVE_Rx_GetStatusParameters: Get Internal Algorithm Status Attributes Example:

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

+

+\code

+    LVVE_Rx_StatusParams_st  Rx_Monitor;

+    Status=LVVE_Rx_GetStatusParameters(hInstance_Rx,&Rx_Monitor);

+    if (Status != LVVE_SUCCESS )

+    {

+       // Error Handling

+    }

+\endcode

+

+*/

+

+LVVE_ReturnStatus_en LVVE_Rx_GetStatusParameters(    LVVE_Rx_Handle_t           hInstance,

+                                                     LVVE_Rx_StatusParams_st    *pStatusParams);

+

+/**

+@brief Resets the LVVE_Tx module.

+

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

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

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

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

+

+The LVVE_Tx_ResetInstance function should be called whenever there is a

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

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

+Examples are

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

+@li Buffer underrun or overflow in the audio driver

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

+of internal algorithms will occur.

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

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

+

+

+@param hInstance               Instance Handle

+@param pResetParams            Reset Type

+

+@pre hInstance should be valid handle.

+

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

+perform:

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

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

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

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

+in between calls in case instance was not freed.

+

+@return LVVE_SUCCESS          Succeeded

+@return LVVE_NULLADDRESS      When hInstance or pResetParams is NULL

+@return LVVE_OUTOFRANGE       When content of pResetParams is invalid

+

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

+

+@ingroup LVVE_Tx

+

+LVVE_Tx_ResetInstance Example:

+

+The following example shows how to use LVVE_Tx_ResetInstance.

+\code

+    LVVE_Status = LVVE_Tx_ResetInstance(hInstance, pResetParams);

+

+    if (LVVE_Status != LVVE_SUCCESS)

+    {

+        // Handle LVVE_Tx_ResetInstance errors

+    }

+\endcode

+

+*/

+LVVE_ReturnStatus_en LVVE_Tx_ResetInstance(  LVVE_Tx_Handle_t        hInstance,

+                                             LVVE_Tx_ResetParams_st *pResetParams  );

+

+/**

+@brief Resets the LVVE_Rx module.

+

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

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

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

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

+

+The LVVE_Rx_ResetInstance function should be called whenever there is a

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

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

+Examples are

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

+@li Buffer underrun or overflow in the audio driver

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

+of internal algorithms will occur.

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

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

+

+

+@param hInstance               Instance Handle

+@param pResetParams            Reset Type

+

+@pre hInstance should be valid handle.

+

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

+perform:

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

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

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

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

+in between calls in case instance was not freed.

+

+@return LVVE_SUCCESS          Succeeded

+@return LVVE_NULLADDRESS      When hInstance or pResetParams is NULL

+@return LVVE_OUTOFRANGE       When content of pResetParams is invalid

+

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

+

+@ingroup LVVE_Rx

+

+LVVE_Rx_ResetInstance Example:

+

+The following example shows how to use LVVE_Rx_ResetInstance.

+\code

+    LVVE_Status = LVVE_Rx_ResetInstance(hInstance, pResetParams);

+

+    if (LVVE_Status != LVVE_SUCCESS)

+    {

+        // Handle LVVE_Rx_ResetInstance errors

+    }

+\endcode

+

+*/

+LVVE_ReturnStatus_en LVVE_Rx_ResetInstance(  LVVE_Rx_Handle_t        hInstance,

+                                             LVVE_Rx_ResetParams_st *pResetParams  );

+

+/**

+@brief Processes a block of samples by the LVVE_Tx module.

+

+This function processes the block of samples as configured with the current

+parameter settings. If new parameters have been given since the last call to

+LVVE_Tx_Process then these will be applied at the beginning of this process call.

+

+@param hInstance      Instance Handle

+@param pInDataMic0    Pointer to the input speech sample buffer (pimary microphone).

+@param pInDataMic1    Pointer to the input speech sample buffer (secondary microphone).

+@param pRefData       Pointer to the input farend reference buffer.

+@param pNoiseData     Pointer to the output noise reference buffer.

+@param pOutData       Pointer to the output sample buffer.

+@param NumSamples     The number of samples to process should be integer multiple(n) of values in table.

+                      It is a frquency dependant paramter.

+<table border>

+   <tr>

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

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

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

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

+   </tr>

+   <tr>

+       <td><b>Samples</b></td>

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

+       <td>nx80 for 8kHz</td>

+       <td>80 for 8kHz</td>

+   </tr>

+   <tr>

+       <td></td>

+       <td></td>

+       <td>nx160 for 16kHz</td>

+       <td>160 for 16kHz</td>

+   </tr>

+   <tr>

+       <td></td>

+       <td></td>

+       <td>nx240 for 24kHz</td>

+       <td>240 for 24kHz</td>

+   </tr>

+   <tr>

+       <td></td>

+       <td></td>

+       <td>nx320 for 32kHz</td>

+       <td>320 for 32kHz</td>

+   </tr>

+   <tr>

+       <td></td>

+       <td></td>

+       <td>nx480 for 48kHz</td>

+       <td>480 for 48kHz</td>

+   </tr>

+</table>

+

+@pre hInstance should be valid handle.

+@pre LVVE_Tx_SetControlParameters should be called successfully once before.

+the first call to LVVE_Tx_Process

+@pre pInData is filled with the input samples to process.

+

+@post pOutData contains the processed samples.

+

+@return LVVE_SUCCESS          Succeeded

+@return LVVE_NULLADDRESS      When hInstance, pInData or pOutData is NULL

+@return LVVE_INVALIDNUMSAMPLES When the NumSamples is outside the allowed

+range

+@return LVVE_INVALID_STATE_CONFIGURATION When invalid state of the algorithm found

+

+@ingroup LVVE_Tx

+

+LVVE_Tx_Process Example:

+

+The following example shows how to use LVVE_Tx_Process function call

+

+\code

+    // Tx Processing

+    LVVE_STATUS = LVVE_Tx_Process( hInstance_Tx,

+                                   pInData_Tx0,

+                                   pInData_Tx1,

+                                   pInData_Ref,

+                                   pNoiseData,

+                                   pOutData_Tx,

+                                   NumSamples );

+    if (LVVE_STATUS != LVVE_SUCCESS )

+    {

+       // Error Handling

+    }

+\endcode

+

+*/

+LVVE_ReturnStatus_en LVVE_Tx_Process(   LVVE_Tx_Handle_t    hInstance,

+                                        const LVM_INT16     *pInDataMic0,

+                                        const LVM_INT16     *pInDataMic1,

+                                        const LVM_INT16     *pRefData,

+                                        LVM_INT16           *pNoiseData,

+                                        LVM_INT16           *pOutData,

+                                        const LVM_UINT16    NumSamples);

+

+/**

+@brief Processes a block of samples by the LVVE_Rx module.

+

+This function processes the block of samples as configured with the current

+parameter settings. If new parameters have been given since the last call to

+LVVE_Rx_Process then these will be applied at the beginning of this process call.

+

+@param hInstance      Instance Handle

+@param pInData        Pointer to the input sample buffer

+@param pNoiseData     Pointer to the input noise buffer (for LVVC only). Pointer to the input noise reference buffer.

+                      The size of this buffer depends on the number of samples to process: NoiseDataBufferSize = 2 (size of the input buffer in ms) / 10ms

+                        i.e. for 20 ms input buffer, the NoiseData buffer size should be 4.

+

+@param pOutData       Pointer to the output sample buffer

+@param NumSamples     The number of samples to process should be integer multiple(n) of values in table.

+                      It is a frquency dependant paramter.

+<table border>

+   <tr>

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

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

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

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

+   </tr>

+   <tr>

+       <td><b>Samples</b></td>

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

+       <td>nx80 for 8kHz</td>

+       <td>80 for 8kHz</td>

+   </tr>

+   <tr>

+       <td></td>

+       <td></td>

+       <td>nx160 for 16kHz</td>

+       <td>160 for 16kHz</td>

+   </tr>

+   <tr>

+       <td></td>

+       <td></td>

+       <td>nx240 for 24kHz</td>

+       <td>240 for 24kHz</td>

+   </tr>

+   <tr>

+       <td></td>

+       <td></td>

+       <td>nx320 for 32kHz</td>

+       <td>320 for 32kHz</td>

+   </tr>

+   <tr>

+       <td></td>

+       <td></td>

+       <td>nx480 for 48kHz</td>

+       <td>480 for 48kHz</td>

+   </tr>

+</table>

+

+@pre hInstance should be valid handle.

+@pre LVVE_Rx_SetControlParameters should be called successfully once before.

+the first call to LVVE_Rx_Process

+@pre pInData is filled with the input samples to process.

+

+@post pOutData contains the processed samples.

+

+@return LVVE_SUCCESS          Succeeded

+@return LVVE_NULLADDRESS      When hInstance, pInData or pOutData is NULL

+@return LVVE_INVALIDNUMSAMPLES When the NumSamples is outside the allowed

+range

+@return LVVE_INVALID_STATE_CONFIGURATION When invalid state of the algorithm found

+

+@ingroup LVVE_Rx

+

+LVVE_Rx_Process Example:

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

+

+\code

+    // Rx Processing

+    LVVE_STATUS = LVVE_Rx_Process( hInstance_Rx,

+                                   pInData_Rx,

+                                   pNoiseData,

+                                   pOutData_Rx,

+                                   NumSamples );

+

+    if (LVVE_STATUS != LVVE_SUCCESS )

+    {

+       // Error Handling

+    }

+\endcode

+

+*/

+

+LVVE_ReturnStatus_en LVVE_Rx_Process(   LVVE_Rx_Handle_t    hInstance,

+                                        const LVM_INT16     *pInData,

+                                        const LVM_INT16     *pNoiseData,

+                                        LVM_INT16           *pOutData,

+                                        const LVM_UINT16    NumSamples);

+

+

+/**

+\brief get the version number of current of LVVE library.

+

+This function returns, to host, current version of the LVVE library

+@param  pVersion                version info

+

+@return  LVVE_SUCCESS           Succeeded

+@return  LVVE_NULLADDRESS       When one of hInstance, pInData or pOutData is NULL

+

+LVVE_GetVersionInfot Example:

+

+\code

+    //Get the version information

+    LVVE_VersionInfo     VersionInfo;

+    LVVE_GetVersionInfo(&VersionInfo);

+\endcode

+

+*/

+LVVE_ReturnStatus_en LVVE_GetVersionInfo( LVVE_VersionInfo *pVersion );

+

+/**

+@brief Sets or changes the LVVE_Tx module parameters through a Preset Buffer.

+

+Sets or changes the LVVE_Tx module parameters through a Preset Buffer. To set parameters using \"C\" structure see

+@ref LVVE_Tx_SetControlParameters

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

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

+function. When no parameters are changed, no action is taken. This function can

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

+is running.

+The new parameters are supplied in the form a @ref LVVE_Tx_Preset_t (Byte array).

+The length of the byte array shall be a multiple of @ref LVVE_TX_PRESET_LENGTH.

+

+@param hInstance               Instance Handle

+@param pPreset                 Pointer to a Preset buffer

+@param PresetLength            Length in bytes of the Preset buffer

+@param VolumeIndex             Volume index to be selected from the Preset buffer

+

+@pre hInstance should be valid handle.

+

+@return @ref LVVE_SUCCESS          Succeeded

+@return @ref LVVE_NULLADDRESS      When hInstance or pPreset is NULL

+@return @ref LVVE_OUTOFRANGE       When PresetLength or any of the new parameters is out of range

+@return @ref LVVE_INVALID_ALGORITHM_CONFIGURATION When mutually exclusive algorithms are enabled in the parameters at the same time

+@return @ref LVVE_PRESET_INVALID_BUFFER_LENGTH When the length of the input buffer is smaller than LVVE_TX_PRESET_LENGTH

+@return @ref LVVE_PRESET_INVALID_VOLUME_INDEX When the volume index exceeds the buffer content

+@return @ref LVVE_PRESET_INVALID_BUFFER_VERSION When the version of the format of the preset buffer does not match the version of the library

+@return @ref LVVE_PRESET_INVALID_BASELINE_VERSION When the baseline version of the provided preset buffer and the baseline version of the library do not match. Is the preset generated for this library ?

+@return @ref LVVE_PRESET_INVALID_MASK When the algorithm mask of the provided preset buffer and the algorithm mask of the library do not match. Is the preset generated for this library ?

+@return @ref LVVE_PRESET_INVALID_SAMPLE_RATE When the sample rate @ref LVM_Fs_en of the preset does not match the sample rate of the hInstance

+@return @ref LVVE_PRESET_INVALID_LVWIREFORMAT_MESSAGEID  When the LVWireformat message id @ref LVVIDHeader_MessageID_en of the preset is not valid

+

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

+

+@ingroup LVVE_Tx

+LVVE_Tx_SetPreset: Setting Control Parameters using Preset Buffer Example:

+

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

+

+\code

+    LVM_CHAR LVVE_Tx_Preset_Buffer[LVVE_TX_PRESET_LENGTH];

+    LVVE_Tx_Preset_t const LVVE_Tx_Preset = LVVE_Tx_Preset_Buffer;

+

+    FILE *PRESETFILE_Tx;

+    LVM_INT32 ReadBytes = 0;

+

+    PRESETFILE_Tx=fopen(filename, "rb" );

+

+    // Read the preset buffer

+    ReadBytes = fread( LVVE_Tx_Preset_Buffer,

+                       sizeof(LVM_CHAR),

+                       (LVM_UINT32)LVVE_TX_PRESET_LENGTH,

+                       PRESETFILE_Tx );

+

+    fclose(PRESETFILE_Tx);

+

+     // Update instance with new preset buffer

+    LVVE_Status = LVVE_Tx_SetPreset( hInstance_Tx,

+                                     LVVE_Tx_Preset,

+                                     ReadBytes,

+                                     0);

+

+    if ( LVVE_Status != LVVE_SUCCESS )

+    {

+        // Handle Errors

+    }

+\endcode

+

+

+

+*/

+LVVE_ReturnStatus_en LVVE_Tx_SetPreset(LVVE_Tx_Handle_t hInstance,

+                                       const LVVE_Tx_Preset_t pPreset,

+                                       LVM_UINT32 PresetLength,

+                                       LVM_UINT16 VolumeIndex);

+

+/**

+@brief Sets or changes the LVVE_Rx module parameters through a Preset Buffer

+

+Sets or changes the LVVE_Rx module parameters through a Preset Buffer. To set parameters using \"C\" structure see

+@ref LVVE_Rx_SetControlParameters

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

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

+function. When no parameters are changed, no action is taken. This function can

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

+is running.

+The new parameters are supplied in the form a @ref LVVE_Rx_Preset_t (Byte array).

+The length of the byte array shall be a multiple of @ref LVVE_RX_PRESET_LENGTH.

+

+@param hInstance               Instance Handle

+@param pPreset                 Pointer to a Preset buffer

+@param PresetLength            Length in bytes of the Preset buffer

+@param VolumeIndex             Volume index to be selected from the Preset buffer

+

+@pre hInstance should be valid handle.

+

+@return @ref LVVE_SUCCESS          Succeeded

+@return @ref LVVE_NULLADDRESS      When hInstance or pPreset is NULL

+@return @ref LVVE_OUTOFRANGE       When PresetLength or any of the new parameters is out of range

+@return @ref LVVE_INVALID_ALGORITHM_CONFIGURATION When mutually exclusive algorithms are enabled in the parameters at the same time

+@return @ref LVVE_PRESET_INVALID_BUFFER_LENGTH When the length of the input buffer is smaller than LVVE_RX_PRESET_LENGTH

+@return @ref LVVE_PRESET_INVALID_VOLUME_INDEX When the volume index exceeds the buffer content

+@return @ref LVVE_PRESET_INVALID_BUFFER_VERSION When the version of the format of the preset buffer does not match the version of the library

+@return @ref LVVE_PRESET_INVALID_BASELINE_VERSION When the baseline version of the provided preset buffer and the baseline version of the library do not match. Is the preset generated for this library ?

+@return @ref LVVE_PRESET_INVALID_MASK When the algorithm mask of the provided preset buffer and the algorithm mask of the library do not match. Is the preset generated for this library ?

+@return @ref LVVE_PRESET_INVALID_SAMPLE_RATE When the sample rate @ref LVM_Fs_en of the preset does not match the sample rate of the hInstance

+@return @ref LVVE_PRESET_INVALID_LVWIREFORMAT_MESSAGEID  When the LVWireformat message id @ref LVVIDHeader_MessageID_en of the preset is not valid

+

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

+

+@ingroup LVVE_Rx

+

+LVVE_Rx_SetPreset: Setting Control Parameters using Preset Buffer Example:

+

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

+

+\code

+    #define NUM_VOLUMES (5)

+    LVM_CHAR LVVE_Rx_Preset_Buffer[NUM_VOLUMES*LVVE_RX_PRESET_LENGTH];

+    LVVE_Rx_Preset_t const LVVE_Rx_Preset = LVVE_Rx_Preset_Buffer;

+

+    FILE *PRESETFILE_Rx;

+    LVM_INT32 ReadBytes = 0;

+    LVM_UINT16 VolumeIndex = 3;

+

+    PRESETFILE_Rx=fopen(filename, "rb" );

+

+    // Read the preset buffer

+    ReadBytes = fread( LVVE_Rx_Preset_Buffer,

+                       sizeof(LVM_CHAR),

+                       (LVM_UINT32)(NUM_VOLUMES*LVVE_RX_PRESET_LENGTH),

+                       PRESETFILE_Rx );

+

+    fclose(PRESETFILE_Rx);

+

+     // Update instance with new preset buffer

+    LVVE_Status = LVVE_Rx_SetPreset( hInstance_Rx,

+                                     LVVE_Rx_Preset,

+                                     ReadBytes,

+                                     VolumeIndex);

+

+    if ( LVVE_Status != LVVE_SUCCESS )

+    {

+        // Handle Errors

+    }

+\endcode

+

+*/

+LVVE_ReturnStatus_en LVVE_Rx_SetPreset(LVVE_Rx_Handle_t hInstance,

+                                       const LVVE_Rx_Preset_t pPreset,

+                                       LVM_UINT32 PresetLength,

+                                       LVM_UINT16 VolumeIndex);

+

+

+#ifdef __cplusplus

+}

+#endif /* __cplusplus */

+

+#endif      /* __LVVE_H__ */

+

+/* End of file */

diff --git a/Uboot/cp/ps/driver/src/chipsets/src/audio_base/nxp/tos/LVVE_VID.h b/Uboot/cp/ps/driver/src/chipsets/src/audio_base/nxp/tos/LVVE_VID.h
new file mode 100755
index 0000000..98a1461
--- /dev/null
+++ b/Uboot/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/Uboot/cp/ps/driver/src/chipsets/src/audio_base/nxp/tos/PARAM_Default.h b/Uboot/cp/ps/driver/src/chipsets/src/audio_base/nxp/tos/PARAM_Default.h
new file mode 100755
index 0000000..857327b
--- /dev/null
+++ b/Uboot/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/Uboot/cp/ps/driver/src/chipsets/src/audio_base/nxp/tos/audio_process.a b/Uboot/cp/ps/driver/src/chipsets/src/audio_base/nxp/tos/audio_process.a
new file mode 100755
index 0000000..449febf
--- /dev/null
+++ b/Uboot/cp/ps/driver/src/chipsets/src/audio_base/nxp/tos/audio_process.a
Binary files differ
diff --git a/Uboot/cp/ps/driver/src/chipsets/src/audio_base/nxp/tos/nxp_DrvNvData.h b/Uboot/cp/ps/driver/src/chipsets/src/audio_base/nxp/tos/nxp_DrvNvData.h
new file mode 100755
index 0000000..418c259
--- /dev/null
+++ b/Uboot/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/Uboot/cp/ps/driver/src/chipsets/src/audio_base/nxp/uclinux/LVC_Types.h b/Uboot/cp/ps/driver/src/chipsets/src/audio_base/nxp/uclinux/LVC_Types.h
new file mode 100755
index 0000000..14efe8c
--- /dev/null
+++ b/Uboot/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/Uboot/cp/ps/driver/src/chipsets/src/audio_base/nxp/uclinux/LVVE.h b/Uboot/cp/ps/driver/src/chipsets/src/audio_base/nxp/uclinux/LVVE.h
new file mode 100755
index 0000000..9c48d8e
--- /dev/null
+++ b/Uboot/cp/ps/driver/src/chipsets/src/audio_base/nxp/uclinux/LVVE.h
@@ -0,0 +1,1371 @@
+/****************************************************************************************/

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

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

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

+/*                                                                                      */

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

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

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

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

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

+/*                                                                                      */

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

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

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

+/*  written  permission of NXP Software.                                                */

+/*                                                                                      */

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

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

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

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

+/*                                                                                      */

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

+/*              preferred for modification, or                                          */

+/*                                                                                      */

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

+/*              works, or                                                               */

+/*                                                                                      */

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

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

+/*                                                                                      */

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

+/*              under Intellectual Property Rights                                      */

+/*                                                                                      */

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

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

+/*                                                                                      */

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

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

+/*  prohibited.                                                                         */

+/*                                                                                      */

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

+

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

+/*                                                                                      */

+/*     $Author: nxp65285 $*/

+/*     $Revision: 56908 $*/

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

+/*                                                                                      */

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

+

+/**

+@file

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

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

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

+private.

+*/

+

+#ifndef __LVVE_H__

+#define __LVVE_H__

+

+#ifdef __cplusplus

+extern "C" {

+#endif /* __cplusplus */

+

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

+/*                                                                                      */

+/*  Includes                                                                            */

+/*                                                                                      */

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

+

+#include "LVVE_VID.h"

+

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

+/*                                                                                      */

+/*  Definitions                                                                         */

+/*                                                                                      */

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

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

+

+

+

+

+

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

+

+

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

+/**

+@def LVVE_RX_PRESET_LENGTH

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

+@see LVVE_Rx_SetPreset

+@ingroup LVVE_Rx

+*/

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

+

+/**

+@def LVVE_TX_PRESET_LENGTH

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

+@see LVVE_Tx_SetPreset

+@ingroup LVVE_Tx

+*/

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

+

+

+/* Deprecated Definitions */

+

+#define LVVE_MAX_BULK_DELAY             LVVE_TX_BULKDELAY_MAX

+#define LVVE_RX_MODE_DUMMY LVVE_RX_MODE_EN_DUMMY

+#define LVVE_TX_MODE_DUMMY LVVE_TX_MODE_EN_DUMMY

+

+#define LVVE_MAX_VOL_GAIN_DB            LVVE_TX_VOL_GAIN_MAX

+#define LVVE_MIN_VOL_GAIN_DB            LVVE_TX_VOL_GAIN_MIN

+

+#define LVVE_MAX_HPF_CORNER_HZ          LVVE_TX_MIC_HPF_CORNERFREQ_MAX

+#define LVVE_MIN_HPF_CORNER_HZ          LVVE_TX_MIC_HPF_CORNERFREQ_MIN

+

+#define LVVE_MAX_HPF_RX_CORNER_HZ       LVVE_RX_HPF_CORNERFREQ_MAX

+

+#define LVVE_MAX_NLPP_LIMIT_DB          LVNLPP_NLPP_LIMIT_MAX

+#define LVVE_MIN_NLPP_LIMIT_DB          LVNLPP_NLPP_LIMIT_MIN

+

+

+#define LVVE_MAX_DRC_LEVEL              LVDRC_COMPRESSORCURVEINPUTLEVELS_MAX

+#define LVVE_MIN_DRC_LEVEL              LVDRC_COMPRESSORCURVEINPUTLEVELS_MIN

+#define LVVE_MIN_DRC_NUMKNEES           LVDRC_NUMKNEES_MIN

+#define LVVE_MAX_DRC_NUMKNEES           LVDRC_NUMKNEES_MAX

+#define LVVE_MIN_DRC_ATTACKTIME         LVDRC_ATTACKTIME_MIN

+#define LVVE_MAX_DRC_ATTACKTIME         LVDRC_ATTACKTIME_MAX

+#define LVVE_MIN_DRC_RELEASETIME        LVDRC_RELEASETIME_MIN

+#define LVVE_MAX_DRC_RELEASETIME        LVDRC_RELEASETIME_MAX

+

+

+/* End deprecated defines*/

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

+/*                                                                                      */

+/*  Types                                                                               */

+/*                                                                                      */

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

+

+/**

+LVVE_Tx Instance Handle

+This handle is used by most of the LVVE APIs

+@see LVVE_Tx_GetInstanceHandle

+@ingroup LVVE_Tx

+*/

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

+/**

+This handle is used by most of the LVVE APIs

+@see LVVE_Rx_GetInstanceHandle

+@ingroup LVVE_Rx

+*/

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

+

+/**

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

+For the exact meaning see the individual function descriptions

+*/

+typedef enum

+{

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

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

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

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

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

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

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

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

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

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

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

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

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

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

+

+    LVVE_RETURNSTATUS_DUMMY                 = LVM_MAXENUM

+} LVVE_ReturnStatus_en;

+

+/**

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

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

+@see LVVE_Rx_SetPreset

+@ingroup LVVE_Rx

+*/

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

+

+/**

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

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

+@see LVVE_Tx_SetPreset

+@ingroup LVVE_Tx

+*/

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

+

+

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

+/*                                                                                      */

+/*  Structures                                                                          */

+/*                                                                                      */

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

+

+/**

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

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

+when the instance is created.

+@see LVVE_Rx_GetMemoryTable

+@see LVVE_Rx_GetInstanceHandle

+@see LVVE_Tx_GetMemoryTable

+@see LVVE_Tx_GetInstanceHandle

+*/

+/**

+EQ Module Instance Parameters Structure.

+@see LVEQ_InstanceParams_st

+*/

+typedef struct

+{

+/**

+Max Size of Equalizer

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

+It must be a multiple of 8.

+<table border>

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

+   <tr>

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

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

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

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

+   </tr>

+   <tr>

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

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

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

+       <td>\ref LVEQ_EQ_LENGTH_DEFAULT</td>

+   </tr>

+</table>

+*/

+    LVM_UINT16                    EQ_MaxLength;  ///< EQ Max Length

+} LVEQ_InstanceParams_st;

+

+/**

+Tx Instance Parameter Structure

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

+@ref LVVE_Tx_GetInstanceHandle

+@ingroup LVVE_Tx

+*/

+typedef struct

+{

+    LVM_Fs_en                   SampleRate;      ///< Sample rate

+/**

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

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

+<table border>

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

+   <tr>

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

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

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

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

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

+   </tr>

+   <tr>

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

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

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

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

+       <td>None</td>

+   </tr>

+</table>

+*/

+    LVM_UINT16                  MaxBulkDelay;     ///< Max bulk delay

+

+    LVEQ_InstanceParams_st      EQ_InstParams;  ///< EQ instance

+} LVVE_Tx_InstanceParams_st;

+

+/**

+Rx Instance Parameter Structure

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

+@ref LVVE_Rx_GetInstanceHandle

+@ingroup LVVE_Rx

+*/

+typedef struct

+{

+    LVM_Fs_en                   SampleRate;            ///< LVVE sample rate

+    LVEQ_InstanceParams_st      EQ_InstParams;///< EQ instance

+

+} LVVE_Rx_InstanceParams_st;

+

+/**

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

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

+*/

+typedef struct

+{

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

+} LVVE_VersionInfo;

+

+/**

+Used to reset LVVE_Rx module any time.

+@ref LVM_ResetType_en parameter determine the type of reset required

+@ingroup LVVE_Rx

+*/

+typedef struct

+{

+    LVM_ResetType_en ResetType;  ///< RX Reset Type

+} LVVE_Rx_ResetParams_st;

+

+/**

+Used to reset LVVE_Tx module any time.

+LVM_ResetType_en parameter determine the type of reset required

+@ingroup LVVE_Tx

+*/

+typedef struct

+{

+    LVM_ResetType_en ResetType;   ///< TX Reset Type

+} LVVE_Tx_ResetParams_st;

+

+/**

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

+

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

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

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

+

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

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

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

+    requirements are affected by these settings.

+

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

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

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

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

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

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

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

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

+

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

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

+

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

+will be NULL on return.

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

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

+initialisation.

+

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

+@return  LVVE_NULLADDRESS       when pMemoryTable was NULL

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

+                                is NULL.

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

+

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

+

+@ingroup LVVE_Tx

+

+LVVE_Tx_GetMemoryTable: Memory Allocation Example:

+

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

+\code

+    InstParams_Tx.SampleRate    = LVM_FS_8000;

+    // Include the other instance params here

+

+    LVVE_Status = LVVE_Tx_GetMemoryTable ( LVM_NULL,

+                                           &MemTab_Tx,

+                                           &InstParams_Tx );

+

+    if( LVVE_Status != LVVE_SUCCESS )

+    {

+        // Handle Errors

+    }

+

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

+    {

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

+        {

+            MemTab_Tx.Region[c1].pBaseAddress =

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

+        }

+    }

+\endcode

+

+LVVE_Tx_GetMemoryTable: Freeing Memory Example:

+

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

+

+\code

+    LVVE_Status = LVVE_Tx_GetMemoryTable( hInstance,

+                                              &MemTab_Tx,

+                                              LVM_NULL);

+

+        if (LVVE_Status != LVVE_SUCCESS)

+        {

+            // Handle errors

+        }

+

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

+        {

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

+            {

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

+            }

+        }

+\endcode

+

+*/

+

+LVVE_ReturnStatus_en LVVE_Tx_GetMemoryTable(LVVE_Tx_Handle_t               hInstance,

+                                            LVM_MemoryTable_st             *pMemoryTable,

+                                            LVVE_Tx_InstanceParams_st      *pInstanceParams);

+

+/**

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

+

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

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

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

+

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

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

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

+    requirements are affected by these settings.

+

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

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

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

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

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

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

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

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

+

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

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

+

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

+will be NULL on return.

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

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

+initialisation.

+

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

+@return  LVVE_NULLADDRESS       when pMemoryTable was NULL

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

+                                is NULL.

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

+

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

+

+@ingroup LVVE_Rx

+

+LVVE_Rx_GetMemoryTable: Memory Allocation Example:

+

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

+

+\code

+    InstParams_Rx.SampleRate    = LVM_FS_8000;

+    // Include the other instance params here

+

+    LVVE_Status = LVVE_Rx_GetMemoryTable ( LVM_NULL,

+                                           &MemTab_Rx,

+                                           &InstParams_Rx );

+

+    if( LVVE_Status != LVVE_SUCCESS )

+    {

+        // Handle Errors

+    }

+

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

+    {

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

+        {

+            MemTab_Rx.Region[c1].pBaseAddress =

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

+        }

+    }

+\endcode

+

+LVVE_Rx_GetMemoryTable: Freeing Memory Example:

+

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

+

+\code

+    LVVE_Status = LVVE_Rx_GetMemoryTable( hInstance,

+                                              &MemTab_Rx,

+                                              LVM_NULL);

+

+        if (LVVE_Status != LVVE_SUCCESS)

+        {

+            // Handle errors

+        }

+

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

+        {

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

+            {

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

+            }

+        }

+\endcode

+*/

+

+LVVE_ReturnStatus_en LVVE_Rx_GetMemoryTable(LVVE_Rx_Handle_t               hInstance,

+                                            LVM_MemoryTable_st             *pMemoryTable,

+                                            LVVE_Rx_InstanceParams_st      *pInstanceParams);

+

+

+/**

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

+

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

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

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

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

+used for memory allocation.

+

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

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

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

+to prior call to @ref LVVE_Tx_GetMemoryTable functions.

+

+

+@param  phInstance              Pointer to the instance handle.

+@param  pMemoryTable            Pointer to the memory definition table.

+@param  pInstanceParams         Pointer to the instance parameters.

+

+@return  LVVE_SUCCESS           when creation was successful

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

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

+                                given a NULL base address pointer.

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

+

+@ingroup LVVE_Tx

+

+ LVVE_Tx_GetInstanceHandle Example:

+

+The following example shows how to initialize LVVE_Tx_GetInstanceHandle.

+

+\code

+    hInstance_Tx = LVM_NULL;

+    LVVE_Status = LVVE_Tx_GetInstanceHandle( &hInstance_Tx,

+                                             &MemTab_Tx,

+                                             &InstParams_Tx );

+    if( LVVE_Status != LVVE_SUCCESS )

+    {

+         // Handle Errors

+    }

+\endcode

+

+*/

+

+LVVE_ReturnStatus_en LVVE_Tx_GetInstanceHandle(LVVE_Tx_Handle_t                *phInstance,

+                                               LVM_MemoryTable_st              *pMemoryTable,

+                                               LVVE_Tx_InstanceParams_st       *pInstanceParams);

+

+/**

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

+

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

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

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

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

+used for memory allocation.

+

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

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

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

+to prior call to @ref LVVE_Rx_GetMemoryTable functions.

+

+

+@param  phInstance              Pointer to the instance handle.

+@param  pMemoryTable            Pointer to the memory definition table.

+@param  pInstanceParams         Pointer to the instance parameters.

+

+@return  LVVE_SUCCESS           when creation was successful

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

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

+                                given a NULL base address pointer.

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

+

+@ingroup LVVE_Rx

+

+ LVVE_Rx_GetInstanceHandle Example:

+

+The following example shows how to initialize LVVE_Rx_GetInstanceHandle.

+

+\code

+    hInstance_Rx = LVM_NULL;

+    LVVE_Status = LVVE_Rx_GetInstanceHandle( &hInstance_Rx,

+                                             &MemTab_Rx,

+                                             &InstParams_Rx );

+    if( LVVE_Status != LVVE_SUCCESS )

+    {

+         // Handle Errors

+    }

+\endcode

+

+*/

+

+LVVE_ReturnStatus_en LVVE_Rx_GetInstanceHandle(LVVE_Rx_Handle_t                *phInstance,

+                                               LVM_MemoryTable_st              *pMemoryTable,

+                                               LVVE_Rx_InstanceParams_st       *pInstanceParams);

+

+/**

+@brief Retrieve the current LVVE_Tx control parameters.

+

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

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

+call to the LVVE_Tx_SetControlParameters function.

+

+@param hInstance              Instance handle

+@param pControlParams         Pointer to the control parameters

+

+@pre   hInstance should be valid handle.

+@pre   pControlParams should be allocated by caller.

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

+       the LVVE_Tx_SetControlParameters function. They are not necessarily the values

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

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

+

+@return LVVE_SUCCESS          Succeeded

+@return LVVE_NULLADDRESS      When hInstance or pControlParams is NULL

+

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

+

+@ingroup LVVE_Tx

+

+LVVE_Tx_GetControlParameters Example:

+

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

+

+\code

+    LVVE_Status = LVVE_Tx_GetControlParameters( &hInstance_Tx,

+                                                &ControlParams_Tx );

+

+    if( LVVE_Status != LVVE_SUCCESS )

+    {

+         // Handle Errors

+    }

+\endcode

+

+*/

+

+LVVE_ReturnStatus_en LVVE_Tx_GetControlParameters(   LVVE_Tx_Handle_t           hInstance,

+                                                     LVVE_Tx_ControlParams_st   *pControlParams);

+

+/**

+@brief Retrieve the current LVVE_Rx control parameters.

+

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

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

+call to the LVVE_Rx_SetControlParameters function.

+

+@param hInstance              Instance handle

+@param pControlParams         Pointer to the control parameters

+

+@pre   hInstance should be valid handle.

+@pre   pControlParams should be allocated by caller.

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

+       the LVVE_Rx_SetControlParameters function. They are not necessarily the values

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

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

+

+@return LVVE_SUCCESS          Succeeded

+@return LVVE_NULLADDRESS      When hInstance or pControlParams is NULL

+

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

+

+@ingroup LVVE_Rx

+

+LVVE_Rx_GetControlParameters Example:

+

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

+

+\code

+    LVVE_Status = LVVE_Rx_GetControlParameters( &hInstance_Rx,

+                                                &ControlParams_Rx );

+

+    if( LVVE_Status != LVVE_SUCCESS )

+    {

+         // Handle Errors

+    }

+\endcode

+

+*/

+

+LVVE_ReturnStatus_en LVVE_Rx_GetControlParameters(   LVVE_Rx_Handle_t           hInstance,

+                                                     LVVE_Rx_ControlParams_st   *pControlParams);

+

+/**

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

+

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

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

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

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

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

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

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

+

+@param hInstance               Instance Handle

+@param pNewParams              Pointer to a parameter structure

+

+@pre hInstance should be valid handle.

+

+@return LVVE_SUCCESS          Succeeded

+@return LVVE_NULLADDRESS      When hInstance or pNewParams is NULL

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

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

+                                               (e.g., NoiseVoid and HandsFree)

+

+

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

+

+@ingroup LVVE_Tx

+

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

+

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

+

+\code

+    LVVE_Status = LVVE_Tx_GetControlParameters( &hInstance_Tx,

+                                                &ControlParams_Tx );

+

+    if( LVVE_Status != LVVE_SUCCESS )

+    {

+        // Handle Errors

+    }

+

+     Change Parameters as required

+    ControlParams_Tx.VOL_Gain         = VOL_TABLE[i];

+    ControlParams_Tx.VC_ControlParams = VC_TABLE[i];

+

+    // Update instance with new parameters

+    LVVE_Status = LVVE_Tx_SetControlParameters( &hInstance_Tx,

+                                                &ControlParams_Tx );

+

+    if( LVVE_Status != LVVE_SUCCESS )

+    {

+        // Handle Errors

+    }

+\endcode

+

+*/

+

+LVVE_ReturnStatus_en LVVE_Tx_SetControlParameters(   LVVE_Tx_Handle_t           hInstance,

+                                        const LVVE_Tx_ControlParams_st * const pNewParams);

+

+/**

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

+

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

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

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

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

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

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

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

+

+@param hInstance               Instance Handle

+@param pNewParams              Pointer to a parameter structure

+

+@pre hInstance should be valid handle.

+

+@return LVVE_SUCCESS          Succeeded

+@return LVVE_NULLADDRESS      When hInstance or pNewParams is NULL

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

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

+                                               (e.g., NoiseVoid and HandsFree)

+

+

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

+

+@ingroup LVVE_Rx

+

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

+

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

+

+\code

+    LVVE_Status = LVVE_Rx_GetControlParameters( &hInstance_Rx,

+                                                &ControlParams_Rx );

+

+    if( LVVE_Status != LVVE_SUCCESS )

+    {

+        // Handle Errors

+    }

+

+     Change Parameters as required

+    ControlParams_Rx.VOL_Gain         = VOL_TABLE[i];

+    ControlParams_Rx.VC_ControlParams = VC_TABLE[i];

+

+    // Update instance with new parameters

+    LVVE_Status = LVVE_Rx_SetControlParameters( &hInstance_Rx,

+                                                &ControlParams_Rx );

+

+    if( LVVE_Status != LVVE_SUCCESS )

+    {

+        // Handle Errors

+    }

+\endcode

+

+*/

+LVVE_ReturnStatus_en LVVE_Rx_SetControlParameters(   LVVE_Rx_Handle_t           hInstance,

+                                        const LVVE_Rx_ControlParams_st * const pNewParams);

+

+/**

+@brief Retrieve the current LVVE_Tx status parameters.

+

+This function copies internal status variables into the supplied status

+parameter structures.

+

+@param hInstance      Instance handle

+@param pStatusParams  Pointer to the status parameters

+

+@pre   hInstance should be valid handle.

+@pre   pStatusParams should be allocated by caller.

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

+

+@return LVVE_SUCCESS          Succeeded

+@return LVVE_NULLADDRESS      When hInstance or pStatusParams is NULL

+

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

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

+

+

+@ingroup LVVE_Tx

+

+LVVE_Tx_GetStatusParameters: Get Internal Algorithm Status Attributes Example:

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

+

+\code

+    LVVE_Tx_StatusParams_st  Tx_Monitor;

+    Status=LVVE_Tx_GetStatusParameters(hInstance_Tx,&Tx_Monitor);

+    if (Status != LVVE_SUCCESS )

+    {

+       // Error Handling

+    }

+\endcode

+

+*/

+

+LVVE_ReturnStatus_en LVVE_Tx_GetStatusParameters(    LVVE_Tx_Handle_t           hInstance,

+                                                     LVVE_Tx_StatusParams_st    *pStatusParams);

+

+/**

+@brief Retrieve the current LVVE_Rx status parameters.

+

+This function copies internal status variables into the supplied status

+parameter structures.

+

+@param hInstance      Instance handle

+@param pStatusParams  Pointer to the status parameters

+

+@pre   hInstance should be valid handle.

+@pre   pStatusParams should be allocated by caller.

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

+

+@return LVVE_SUCCESS          Succeeded

+@return LVVE_NULLADDRESS      When hInstance or pStatusParams is NULL

+

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

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

+

+@ingroup LVVE_Rx

+

+LVVE_Rx_GetStatusParameters: Get Internal Algorithm Status Attributes Example:

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

+

+\code

+    LVVE_Rx_StatusParams_st  Rx_Monitor;

+    Status=LVVE_Rx_GetStatusParameters(hInstance_Rx,&Rx_Monitor);

+    if (Status != LVVE_SUCCESS )

+    {

+       // Error Handling

+    }

+\endcode

+

+*/

+

+LVVE_ReturnStatus_en LVVE_Rx_GetStatusParameters(    LVVE_Rx_Handle_t           hInstance,

+                                                     LVVE_Rx_StatusParams_st    *pStatusParams);

+

+/**

+@brief Resets the LVVE_Tx module.

+

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

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

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

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

+

+The LVVE_Tx_ResetInstance function should be called whenever there is a

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

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

+Examples are

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

+@li Buffer underrun or overflow in the audio driver

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

+of internal algorithms will occur.

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

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

+

+

+@param hInstance               Instance Handle

+@param pResetParams            Reset Type

+

+@pre hInstance should be valid handle.

+

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

+perform:

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

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

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

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

+in between calls in case instance was not freed.

+

+@return LVVE_SUCCESS          Succeeded

+@return LVVE_NULLADDRESS      When hInstance or pResetParams is NULL

+@return LVVE_OUTOFRANGE       When content of pResetParams is invalid

+

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

+

+@ingroup LVVE_Tx

+

+LVVE_Tx_ResetInstance Example:

+

+The following example shows how to use LVVE_Tx_ResetInstance.

+\code

+    LVVE_Status = LVVE_Tx_ResetInstance(hInstance, pResetParams);

+

+    if (LVVE_Status != LVVE_SUCCESS)

+    {

+        // Handle LVVE_Tx_ResetInstance errors

+    }

+\endcode

+

+*/

+LVVE_ReturnStatus_en LVVE_Tx_ResetInstance(  LVVE_Tx_Handle_t        hInstance,

+                                             LVVE_Tx_ResetParams_st *pResetParams  );

+

+/**

+@brief Resets the LVVE_Rx module.

+

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

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

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

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

+

+The LVVE_Rx_ResetInstance function should be called whenever there is a

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

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

+Examples are

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

+@li Buffer underrun or overflow in the audio driver

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

+of internal algorithms will occur.

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

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

+

+

+@param hInstance               Instance Handle

+@param pResetParams            Reset Type

+

+@pre hInstance should be valid handle.

+

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

+perform:

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

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

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

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

+in between calls in case instance was not freed.

+

+@return LVVE_SUCCESS          Succeeded

+@return LVVE_NULLADDRESS      When hInstance or pResetParams is NULL

+@return LVVE_OUTOFRANGE       When content of pResetParams is invalid

+

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

+

+@ingroup LVVE_Rx

+

+LVVE_Rx_ResetInstance Example:

+

+The following example shows how to use LVVE_Rx_ResetInstance.

+\code

+    LVVE_Status = LVVE_Rx_ResetInstance(hInstance, pResetParams);

+

+    if (LVVE_Status != LVVE_SUCCESS)

+    {

+        // Handle LVVE_Rx_ResetInstance errors

+    }

+\endcode

+

+*/

+LVVE_ReturnStatus_en LVVE_Rx_ResetInstance(  LVVE_Rx_Handle_t        hInstance,

+                                             LVVE_Rx_ResetParams_st *pResetParams  );

+

+/**

+@brief Processes a block of samples by the LVVE_Tx module.

+

+This function processes the block of samples as configured with the current

+parameter settings. If new parameters have been given since the last call to

+LVVE_Tx_Process then these will be applied at the beginning of this process call.

+

+@param hInstance      Instance Handle

+@param pInDataMic0    Pointer to the input speech sample buffer (pimary microphone).

+@param pInDataMic1    Pointer to the input speech sample buffer (secondary microphone).

+@param pRefData       Pointer to the input farend reference buffer.

+@param pNoiseData     Pointer to the output noise reference buffer.

+@param pOutData       Pointer to the output sample buffer.

+@param NumSamples     The number of samples to process should be integer multiple(n) of values in table.

+                      It is a frquency dependant paramter.

+<table border>

+   <tr>

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

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

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

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

+   </tr>

+   <tr>

+       <td><b>Samples</b></td>

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

+       <td>nx80 for 8kHz</td>

+       <td>80 for 8kHz</td>

+   </tr>

+   <tr>

+       <td></td>

+       <td></td>

+       <td>nx160 for 16kHz</td>

+       <td>160 for 16kHz</td>

+   </tr>

+   <tr>

+       <td></td>

+       <td></td>

+       <td>nx240 for 24kHz</td>

+       <td>240 for 24kHz</td>

+   </tr>

+   <tr>

+       <td></td>

+       <td></td>

+       <td>nx320 for 32kHz</td>

+       <td>320 for 32kHz</td>

+   </tr>

+   <tr>

+       <td></td>

+       <td></td>

+       <td>nx480 for 48kHz</td>

+       <td>480 for 48kHz</td>

+   </tr>

+</table>

+

+@pre hInstance should be valid handle.

+@pre LVVE_Tx_SetControlParameters should be called successfully once before.

+the first call to LVVE_Tx_Process

+@pre pInData is filled with the input samples to process.

+

+@post pOutData contains the processed samples.

+

+@return LVVE_SUCCESS          Succeeded

+@return LVVE_NULLADDRESS      When hInstance, pInData or pOutData is NULL

+@return LVVE_INVALIDNUMSAMPLES When the NumSamples is outside the allowed

+range

+@return LVVE_INVALID_STATE_CONFIGURATION When invalid state of the algorithm found

+

+@ingroup LVVE_Tx

+

+LVVE_Tx_Process Example:

+

+The following example shows how to use LVVE_Tx_Process function call

+

+\code

+    // Tx Processing

+    LVVE_STATUS = LVVE_Tx_Process( hInstance_Tx,

+                                   pInData_Tx0,

+                                   pInData_Tx1,

+                                   pInData_Ref,

+                                   pNoiseData,

+                                   pOutData_Tx,

+                                   NumSamples );

+    if (LVVE_STATUS != LVVE_SUCCESS )

+    {

+       // Error Handling

+    }

+\endcode

+

+*/

+LVVE_ReturnStatus_en LVVE_Tx_Process(   LVVE_Tx_Handle_t    hInstance,

+                                        const LVM_INT16     *pInDataMic0,

+                                        const LVM_INT16     *pInDataMic1,

+                                        const LVM_INT16     *pRefData,

+                                        LVM_INT16           *pNoiseData,

+                                        LVM_INT16           *pOutData,

+                                        const LVM_UINT16    NumSamples);

+

+/**

+@brief Processes a block of samples by the LVVE_Rx module.

+

+This function processes the block of samples as configured with the current

+parameter settings. If new parameters have been given since the last call to

+LVVE_Rx_Process then these will be applied at the beginning of this process call.

+

+@param hInstance      Instance Handle

+@param pInData        Pointer to the input sample buffer

+@param pNoiseData     Pointer to the input noise buffer (for LVVC only). Pointer to the input noise reference buffer.

+                      The size of this buffer depends on the number of samples to process: NoiseDataBufferSize = 2 (size of the input buffer in ms) / 10ms

+                        i.e. for 20 ms input buffer, the NoiseData buffer size should be 4.

+

+@param pOutData       Pointer to the output sample buffer

+@param NumSamples     The number of samples to process should be integer multiple(n) of values in table.

+                      It is a frquency dependant paramter.

+<table border>

+   <tr>

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

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

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

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

+   </tr>

+   <tr>

+       <td><b>Samples</b></td>

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

+       <td>nx80 for 8kHz</td>

+       <td>80 for 8kHz</td>

+   </tr>

+   <tr>

+       <td></td>

+       <td></td>

+       <td>nx160 for 16kHz</td>

+       <td>160 for 16kHz</td>

+   </tr>

+   <tr>

+       <td></td>

+       <td></td>

+       <td>nx240 for 24kHz</td>

+       <td>240 for 24kHz</td>

+   </tr>

+   <tr>

+       <td></td>

+       <td></td>

+       <td>nx320 for 32kHz</td>

+       <td>320 for 32kHz</td>

+   </tr>

+   <tr>

+       <td></td>

+       <td></td>

+       <td>nx480 for 48kHz</td>

+       <td>480 for 48kHz</td>

+   </tr>

+</table>

+

+@pre hInstance should be valid handle.

+@pre LVVE_Rx_SetControlParameters should be called successfully once before.

+the first call to LVVE_Rx_Process

+@pre pInData is filled with the input samples to process.

+

+@post pOutData contains the processed samples.

+

+@return LVVE_SUCCESS          Succeeded

+@return LVVE_NULLADDRESS      When hInstance, pInData or pOutData is NULL

+@return LVVE_INVALIDNUMSAMPLES When the NumSamples is outside the allowed

+range

+@return LVVE_INVALID_STATE_CONFIGURATION When invalid state of the algorithm found

+

+@ingroup LVVE_Rx

+

+LVVE_Rx_Process Example:

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

+

+\code

+    // Rx Processing

+    LVVE_STATUS = LVVE_Rx_Process( hInstance_Rx,

+                                   pInData_Rx,

+                                   pNoiseData,

+                                   pOutData_Rx,

+                                   NumSamples );

+

+    if (LVVE_STATUS != LVVE_SUCCESS )

+    {

+       // Error Handling

+    }

+\endcode

+

+*/

+

+LVVE_ReturnStatus_en LVVE_Rx_Process(   LVVE_Rx_Handle_t    hInstance,

+                                        const LVM_INT16     *pInData,

+                                        const LVM_INT16     *pNoiseData,

+                                        LVM_INT16           *pOutData,

+                                        const LVM_UINT16    NumSamples);

+

+

+/**

+\brief get the version number of current of LVVE library.

+

+This function returns, to host, current version of the LVVE library

+@param  pVersion                version info

+

+@return  LVVE_SUCCESS           Succeeded

+@return  LVVE_NULLADDRESS       When one of hInstance, pInData or pOutData is NULL

+

+LVVE_GetVersionInfot Example:

+

+\code

+    //Get the version information

+    LVVE_VersionInfo     VersionInfo;

+    LVVE_GetVersionInfo(&VersionInfo);

+\endcode

+

+*/

+LVVE_ReturnStatus_en LVVE_GetVersionInfo( LVVE_VersionInfo *pVersion );

+

+/**

+@brief Sets or changes the LVVE_Tx module parameters through a Preset Buffer.

+

+Sets or changes the LVVE_Tx module parameters through a Preset Buffer. To set parameters using \"C\" structure see

+@ref LVVE_Tx_SetControlParameters

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

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

+function. When no parameters are changed, no action is taken. This function can

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

+is running.

+The new parameters are supplied in the form a @ref LVVE_Tx_Preset_t (Byte array).

+The length of the byte array shall be a multiple of @ref LVVE_TX_PRESET_LENGTH.

+

+@param hInstance               Instance Handle

+@param pPreset                 Pointer to a Preset buffer

+@param PresetLength            Length in bytes of the Preset buffer

+@param VolumeIndex             Volume index to be selected from the Preset buffer

+

+@pre hInstance should be valid handle.

+

+@return @ref LVVE_SUCCESS          Succeeded

+@return @ref LVVE_NULLADDRESS      When hInstance or pPreset is NULL

+@return @ref LVVE_OUTOFRANGE       When PresetLength or any of the new parameters is out of range

+@return @ref LVVE_INVALID_ALGORITHM_CONFIGURATION When mutually exclusive algorithms are enabled in the parameters at the same time

+@return @ref LVVE_PRESET_INVALID_BUFFER_LENGTH When the length of the input buffer is smaller than LVVE_TX_PRESET_LENGTH

+@return @ref LVVE_PRESET_INVALID_VOLUME_INDEX When the volume index exceeds the buffer content

+@return @ref LVVE_PRESET_INVALID_BUFFER_VERSION When the version of the format of the preset buffer does not match the version of the library

+@return @ref LVVE_PRESET_INVALID_BASELINE_VERSION When the baseline version of the provided preset buffer and the baseline version of the library do not match. Is the preset generated for this library ?

+@return @ref LVVE_PRESET_INVALID_MASK When the algorithm mask of the provided preset buffer and the algorithm mask of the library do not match. Is the preset generated for this library ?

+@return @ref LVVE_PRESET_INVALID_SAMPLE_RATE When the sample rate @ref LVM_Fs_en of the preset does not match the sample rate of the hInstance

+@return @ref LVVE_PRESET_INVALID_LVWIREFORMAT_MESSAGEID  When the LVWireformat message id @ref LVVIDHeader_MessageID_en of the preset is not valid

+

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

+

+@ingroup LVVE_Tx

+LVVE_Tx_SetPreset: Setting Control Parameters using Preset Buffer Example:

+

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

+

+\code

+    LVM_CHAR LVVE_Tx_Preset_Buffer[LVVE_TX_PRESET_LENGTH];

+    LVVE_Tx_Preset_t const LVVE_Tx_Preset = LVVE_Tx_Preset_Buffer;

+

+    FILE *PRESETFILE_Tx;

+    LVM_INT32 ReadBytes = 0;

+

+    PRESETFILE_Tx=fopen(filename, "rb" );

+

+    // Read the preset buffer

+    ReadBytes = fread( LVVE_Tx_Preset_Buffer,

+                       sizeof(LVM_CHAR),

+                       (LVM_UINT32)LVVE_TX_PRESET_LENGTH,

+                       PRESETFILE_Tx );

+

+    fclose(PRESETFILE_Tx);

+

+     // Update instance with new preset buffer

+    LVVE_Status = LVVE_Tx_SetPreset( hInstance_Tx,

+                                     LVVE_Tx_Preset,

+                                     ReadBytes,

+                                     0);

+

+    if ( LVVE_Status != LVVE_SUCCESS )

+    {

+        // Handle Errors

+    }

+\endcode

+

+

+

+*/

+LVVE_ReturnStatus_en LVVE_Tx_SetPreset(LVVE_Tx_Handle_t hInstance,

+                                       const LVVE_Tx_Preset_t pPreset,

+                                       LVM_UINT32 PresetLength,

+                                       LVM_UINT16 VolumeIndex);

+

+/**

+@brief Sets or changes the LVVE_Rx module parameters through a Preset Buffer

+

+Sets or changes the LVVE_Rx module parameters through a Preset Buffer. To set parameters using \"C\" structure see

+@ref LVVE_Rx_SetControlParameters

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

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

+function. When no parameters are changed, no action is taken. This function can

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

+is running.

+The new parameters are supplied in the form a @ref LVVE_Rx_Preset_t (Byte array).

+The length of the byte array shall be a multiple of @ref LVVE_RX_PRESET_LENGTH.

+

+@param hInstance               Instance Handle

+@param pPreset                 Pointer to a Preset buffer

+@param PresetLength            Length in bytes of the Preset buffer

+@param VolumeIndex             Volume index to be selected from the Preset buffer

+

+@pre hInstance should be valid handle.

+

+@return @ref LVVE_SUCCESS          Succeeded

+@return @ref LVVE_NULLADDRESS      When hInstance or pPreset is NULL

+@return @ref LVVE_OUTOFRANGE       When PresetLength or any of the new parameters is out of range

+@return @ref LVVE_INVALID_ALGORITHM_CONFIGURATION When mutually exclusive algorithms are enabled in the parameters at the same time

+@return @ref LVVE_PRESET_INVALID_BUFFER_LENGTH When the length of the input buffer is smaller than LVVE_RX_PRESET_LENGTH

+@return @ref LVVE_PRESET_INVALID_VOLUME_INDEX When the volume index exceeds the buffer content

+@return @ref LVVE_PRESET_INVALID_BUFFER_VERSION When the version of the format of the preset buffer does not match the version of the library

+@return @ref LVVE_PRESET_INVALID_BASELINE_VERSION When the baseline version of the provided preset buffer and the baseline version of the library do not match. Is the preset generated for this library ?

+@return @ref LVVE_PRESET_INVALID_MASK When the algorithm mask of the provided preset buffer and the algorithm mask of the library do not match. Is the preset generated for this library ?

+@return @ref LVVE_PRESET_INVALID_SAMPLE_RATE When the sample rate @ref LVM_Fs_en of the preset does not match the sample rate of the hInstance

+@return @ref LVVE_PRESET_INVALID_LVWIREFORMAT_MESSAGEID  When the LVWireformat message id @ref LVVIDHeader_MessageID_en of the preset is not valid

+

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

+

+@ingroup LVVE_Rx

+

+LVVE_Rx_SetPreset: Setting Control Parameters using Preset Buffer Example:

+

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

+

+\code

+    #define NUM_VOLUMES (5)

+    LVM_CHAR LVVE_Rx_Preset_Buffer[NUM_VOLUMES*LVVE_RX_PRESET_LENGTH];

+    LVVE_Rx_Preset_t const LVVE_Rx_Preset = LVVE_Rx_Preset_Buffer;

+

+    FILE *PRESETFILE_Rx;

+    LVM_INT32 ReadBytes = 0;

+    LVM_UINT16 VolumeIndex = 3;

+

+    PRESETFILE_Rx=fopen(filename, "rb" );

+

+    // Read the preset buffer

+    ReadBytes = fread( LVVE_Rx_Preset_Buffer,

+                       sizeof(LVM_CHAR),

+                       (LVM_UINT32)(NUM_VOLUMES*LVVE_RX_PRESET_LENGTH),

+                       PRESETFILE_Rx );

+

+    fclose(PRESETFILE_Rx);

+

+     // Update instance with new preset buffer

+    LVVE_Status = LVVE_Rx_SetPreset( hInstance_Rx,

+                                     LVVE_Rx_Preset,

+                                     ReadBytes,

+                                     VolumeIndex);

+

+    if ( LVVE_Status != LVVE_SUCCESS )

+    {

+        // Handle Errors

+    }

+\endcode

+

+*/

+LVVE_ReturnStatus_en LVVE_Rx_SetPreset(LVVE_Rx_Handle_t hInstance,

+                                       const LVVE_Rx_Preset_t pPreset,

+                                       LVM_UINT32 PresetLength,

+                                       LVM_UINT16 VolumeIndex);

+

+

+#ifdef __cplusplus

+}

+#endif /* __cplusplus */

+

+#endif      /* __LVVE_H__ */

+

+/* End of file */

diff --git a/Uboot/cp/ps/driver/src/chipsets/src/audio_base/nxp/uclinux/LVVE_VID.h b/Uboot/cp/ps/driver/src/chipsets/src/audio_base/nxp/uclinux/LVVE_VID.h
new file mode 100755
index 0000000..79047a8
--- /dev/null
+++ b/Uboot/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/Uboot/cp/ps/driver/src/chipsets/src/audio_base/nxp/uclinux/PARAM_Default.h b/Uboot/cp/ps/driver/src/chipsets/src/audio_base/nxp/uclinux/PARAM_Default.h
new file mode 100755
index 0000000..0153e82
--- /dev/null
+++ b/Uboot/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/Uboot/cp/ps/driver/src/chipsets/src/audio_base/nxp/uclinux/audio_process.a b/Uboot/cp/ps/driver/src/chipsets/src/audio_base/nxp/uclinux/audio_process.a
new file mode 100755
index 0000000..449febf
--- /dev/null
+++ b/Uboot/cp/ps/driver/src/chipsets/src/audio_base/nxp/uclinux/audio_process.a
Binary files differ
diff --git a/Uboot/cp/ps/driver/src/chipsets/src/audio_base/nxp/uclinux/nxp_DrvNvData.h b/Uboot/cp/ps/driver/src/chipsets/src/audio_base/nxp/uclinux/nxp_DrvNvData.h
new file mode 100755
index 0000000..ce95a87
--- /dev/null
+++ b/Uboot/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/Uboot/cp/ps/driver/src/chipsets/src/audio_base/tdm/hal_tdm.c b/Uboot/cp/ps/driver/src/chipsets/src/audio_base/tdm/hal_tdm.c
index 322aea4..50e28da 100755
--- a/Uboot/cp/ps/driver/src/chipsets/src/audio_base/tdm/hal_tdm.c
+++ b/Uboot/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/Uboot/cp/ps/driver/src/chipsets/src/audio_base/voiceprocess/hal_voicebuffer.c b/Uboot/cp/ps/driver/src/chipsets/src/audio_base/voiceprocess/hal_voicebuffer.c
new file mode 100755
index 0000000..8d0e5f7
--- /dev/null
+++ b/Uboot/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/Uboot/cp/ps/driver/src/chipsets/src/audio_base/voiceprocess/hal_voiceprocess.c b/Uboot/cp/ps/driver/src/chipsets/src/audio_base/voiceprocess/hal_voiceprocess.c
index f34d0b7..3296dad 100755
--- a/Uboot/cp/ps/driver/src/chipsets/src/audio_base/voiceprocess/hal_voiceprocess.c
+++ b/Uboot/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/Uboot/cp/ps/modem/com/src/appstart/inc/version_number.h b/Uboot/cp/ps/modem/com/src/appstart/inc/version_number.h
index 072f131..a9ae08f 100755
--- a/Uboot/cp/ps/modem/com/src/appstart/inc/version_number.h
+++ b/Uboot/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.02P56U09"
 #endif
 #if defined _CHIP_ZX297520V2
-#define VERSION_NUMBER "7520V2SCV2.01.01.02P56U06"
+#define VERSION_NUMBER "7520V2SCV2.01.01.02P56U09"
 #endif
 #if defined _CHIP_ZX297520V3
-#define VERSION_NUMBER "7520V3SCV2.01.01.02P56U06"
+#define VERSION_NUMBER "7520V3SCV2.01.01.02P56U09"
 #endif
diff --git a/Uboot/cp/ps/modem/ps/inc/apuiccint.h b/Uboot/cp/ps/modem/ps/inc/apuiccint.h
index 57d364f..6d07534 100755
--- a/Uboot/cp/ps/modem/ps/inc/apuiccint.h
+++ b/Uboot/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/Uboot/cp/ps/modem/ps/inc/atipscom.h b/Uboot/cp/ps/modem/ps/inc/atipscom.h
index 72560ba..19bf907 100755
--- a/Uboot/cp/ps/modem/ps/inc/atipscom.h
+++ b/Uboot/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/Uboot/cp/ps/modem/ps/inc/atipsint.h b/Uboot/cp/ps/modem/ps/inc/atipsint.h
index 5a79eba..d037340 100755
--- a/Uboot/cp/ps/modem/ps/inc/atipsint.h
+++ b/Uboot/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

@@ -7674,7 +7690,12 @@
     BYTE                        bRxlev;          /*LTE Rsrp 0-97   GSM Rxlev 0-64  TD&W Rscp 0-91*/
     BYTE                        bBlerFlg;        /*ÊÇ·ñ´æÔÚBLERÖµÉϱ¨.bBlerFlg = 1±íʾÓÐÎóÂëÂÊÉϱ¨,bBlerFlg = 0±íʾÎÞÎóÂëÂÊÉϱ¨*/
     BYTE                        bBler;
-    BYTE                        abPadding[3];
+    BYTE                        bRsrq;/*LTE·þÎñÐ¡ÇøµÄRSRQ,ÎÞЧֵ0xff*/

+    BYTE                        bSinrInt;   /*LTE·þÎñÐ¡ÇøµÄSINRµÄÕûÊýÖµ,ȡֵ·¶Î§0~60; ÕæÊµÖµ»ù´¡ÉϼÓ20;ÕæÊµÖµÈ¡Öµ·¶Î§: -20~40*/

+    BYTE                        bSinrDec; /*LTE·þÎñÐ¡ÇøµÄSINRȡֵ·¶Î§ 0~9*/

+    BYTE                        bRssiInt;  /*LTE·þÎñÐ¡ÇøµÄRSSIµÄÕûÊýÖµ,ȡֵ·¶Î§0~133,0xffΪÎÞЧֵ; ÕæÊµÖµ»ù´¡ÉϼÓ129;ÕæÊµÖµÈ¡Öµ·¶Î§: -129~-4*/

+    BYTE                        bEcno;  /*W·þÎñÐ¡ÇøµÄECNOµÄ²âÁ¿Öµ,ȡֵ·¶Î§0~49,0xffΪÎÞЧֵ*/

+    BYTE                        abPadding[2];
 }T_zMmiaAs_RptRxlev_Ind;

 

 /*==============================================================================
@@ -7689,7 +7710,7 @@
     BYTE                                         bSrcIndex;  /* Ô´Ë÷Òý */
     BYTE                                         bDesIndex;  /* Ä¿µÄË÷Òý*/
     BYTE                                         bAction;       /*1:´ò¿ªÐ¡ÇøÐÅÏ¢Ö÷¶¯Éϱ¨£¬0:¹Ø±ÕÐ¡ÇøÐÅÏ¢Ö÷¶¯Éϱ¨*/
-    BYTE                                         bPadding;
+    BYTE                                         bAtType;
 }T_zMmiaAs_EM_CellInfo_Req;
 
 /*==============================================================================
@@ -9040,5 +9061,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/Uboot/cp/ps/modem/ps/inc/pstraceint.h b/Uboot/cp/ps/modem/ps/inc/pstraceint.h
index 5e1b179..35ced57 100755
--- a/Uboot/cp/ps/modem/ps/inc/pstraceint.h
+++ b/Uboot/cp/ps/modem/ps/inc/pstraceint.h
@@ -3445,9 +3445,10 @@
   WORD                        wDrx;     //DRXÖÜÆÚ£¬µ¥Î»ms

   WORD                        wTac;  

   WORD                        wT3412; //T3412¶¨Ê±Æ÷³¤¶È£¬µ¥Î»s

-  WORD                        wPadding;

+  BYTE                        bSinrInt;   /*·þÎñÐ¡ÇøµÄSINRµÄÕûÊýÖµ,ȡֵ·¶Î§0~60; ÕæÊµÖµ»ù´¡ÉϼÓ20;ÕæÊµÖµÈ¡Öµ·¶Î§: -20~40*/

+  BYTE                        bSinrDec; /*·þÎñÐ¡ÇøµÄSINRȡֵ·¶Î§ 0~9*/

   T_zEM_PlmnId                tPlmnId;    /*µ±Ç°×¤ÁôµÄplmnid*/  

-  BYTE                        bPadding;

+  BYTE                        bRssiInt;  /*·þÎñÐ¡ÇøµÄRSSIµÄÕûÊýÖµ,ȡֵ·¶Î§0~133,0xffΪÎÞЧֵ;ÕæÊµÖµ»ù´¡ÉϼÓ129;ÕæÊµÖµÈ¡Öµ·¶Î§: -129~-4*/

 }T_zEm_Lte_NasInfo;

 

 /* QoS Ïà¹ØÐÅÏ¢ */

@@ -4412,6 +4413,52 @@
     }uEmInfo;

 }T_zEM_EmInfo_Ind;

 

+typedef struct {

+    DWORD         dwCellId;

+    WORD           wLac;

+    BYTE            bBer;

+    BYTE            bPadding;

+    BYTE          bRssi;

+    T_zEM_PlmnId          tPlmn;

+}T_zAt_Gsm_SCellInfo;

+

+typedef struct {

+    BYTE                        bStateInd;

+    T_zEM_PlmnId                  tPlmn;

+    DWORD                       dwCellId;

+    WORD                          wLac;

+    WORD                     wPsc;

+    BYTE                     bRscp;

+    BYTE                     bEcNo;

+    BYTE                     abPadding[2];

+}T_zAt_W_SCellInfo;

+

+typedef struct {

+    DWORD                        dwEarfcn;

+    DWORD                       dwCellId;

+    WORD                        wPci;

+    WORD                        wTac; 

+    T_zEM_PlmnId                tPlmnId;

+    BYTE                        bScellRsrp; //·þÎñÐ¡Çø²âÁ¿½á¹û

+    BYTE                        bScellRsrq;

+    BYTE                           bSinrInt;   /*·þÎñÐ¡ÇøµÄSINRµÄÕûÊýÖµ,ȡֵ·¶Î§0~60; ÕæÊµÖµ»ù´¡ÉϼÓ20;ÕæÊµÖµÈ¡Öµ·¶Î§: -20~40*/

+    BYTE                           bSinrDec; /*·þÎñÐ¡ÇøµÄSINRȡֵ·¶Î§ 0~9*/

+    BYTE                           bRssiInt;  /*·þÎñÐ¡ÇøµÄRSSIµÄÕûÊýÖµ,ȡֵ·¶Î§0~133,0xffΪÎÞЧֵ;ÕæÊµÖµ»ù´¡ÉϼÓ129;ÕæÊµÖµÈ¡Öµ·¶Î§: -129~-4*/

+}T_zAt_Lte_SCellInfo;

+

+typedef struct {

+    BYTE                       bVersion;

+    BYTE                       bRatType;/* ÖÆÊ½Ö¸Ê¾£º0x04-GSM¡¢0x01-TDSCDMA¡¢0x02-WCDMA¡¢0x10-LTE¡¢0x20-NRÆäËûÖµ±£Áô*/

+    BYTE                       bSrcIndex;/*Ô­±¾Îªpaddingλ,ÏÖË÷ÒýÖµ·ÅÔÚ´Ë´¦±ÜÃâ¶ÔAP²àµÄʹÓòúÉúÓ°Ïì*/

+    BYTE                       bDesIndex;

+

+    union{

+        T_zAt_Gsm_SCellInfo    tGsmScellInfo;

+        T_zAt_W_SCellInfo    tWScellInfo;

+        T_zAt_Lte_SCellInfo    tLteScellInfo;

+    }uScellInfo;

+}T_zAt_CellInfo_Ind;

+

 

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

 *                         º¯ÊýÀàÐͶ¨Òå                                    *

diff --git a/Uboot/cp/ps/modem/ps/src/nas/ati/inc/zat_api.h b/Uboot/cp/ps/modem/ps/src/nas/ati/inc/zat_api.h
index 58bc12f..957fa25 100755
--- a/Uboot/cp/ps/modem/ps/src/nas/ati/inc/zat_api.h
+++ b/Uboot/cp/ps/modem/ps/src/nas/ati/inc/zat_api.h
@@ -114,6 +114,7 @@
     ZAT2_CFG_ZVREG,

     ZAT2_CFG_ZPOWSTAT,

     ZAT2_CFG_ZLOWPWR,

+    ZAT2_CFG_ZPSABNORMAL,

     ZAT2_CFG_END,

     

     /*-----------MMÄ£¿é-------------*/

@@ -406,6 +407,8 @@
     ZAT2_EM_CESQ,

     ZAT2_EM_ZEMLTEHO,

     ZAT2_EM_ZLOCKCELL,

+    ZAT2_EM_ZSCIQ,

+    ZAT2_EM_ZSCIND,

 

     /*-----------USATÄ£¿é--------------*/

     ZAT2_USAT_ZUEC,

diff --git a/Uboot/cp/ps/modem/ps/src/nas/ati/inc/zat_fnc.h b/Uboot/cp/ps/modem/ps/src/nas/ati/inc/zat_fnc.h
index 68e2b53..66c3225 100755
--- a/Uboot/cp/ps/modem/ps/src/nas/ati/inc/zat_fnc.h
+++ b/Uboot/cp/ps/modem/ps/src/nas/ati/inc/zat_fnc.h
@@ -1298,6 +1298,7 @@
 T_ZAt_ParseCmd2MsgRslt zAt_PsDecZpowstatQry(T_ZAt_DecCmdInfo * pDecCmdInfo);

 T_ZAt_ParseCmd2MsgRslt zAt_PsDecZlowPwrSetReq(T_ZAt_DecCmdInfo * pDecCmdInfo);

 T_ZAt_ParseCmd2MsgRslt zAt_PsDecZlowPwrQryReq(T_ZAt_DecCmdInfo * pDecCmdInfo);

+T_ZAt_ParseCmd2MsgRslt zAt_PsDecZpsabnormalQryReq(T_ZAt_DecCmdInfo * pDecCmdInfo);

 #ifdef DSDS_VSIM

 T_ZAt_ParseCmd2MsgRslt zAt_PsDecZcardSwitchReq(T_ZAt_DecCmdInfo *pDecCmdInfo);

 UINT16 zAt_PsEncCardSwitchReqCnf(T_ZAt_EncCmdInfo * pEncCmdInfo);

diff --git a/Uboot/cp/ps/modem/ps/src/nas/ati/inc/zati_com.h b/Uboot/cp/ps/modem/ps/src/nas/ati/inc/zati_com.h
index 4a047e7..5eb21d6 100755
--- a/Uboot/cp/ps/modem/ps/src/nas/ati/inc/zati_com.h
+++ b/Uboot/cp/ps/modem/ps/src/nas/ati/inc/zati_com.h
@@ -109,6 +109,9 @@
 /* ATIÔ´Ë÷Òý*/

 #define Z_ATI_SRCINDEX                                       (BYTE)0xff

 

+#define Z_ATI_PS_NORMAL                                      (BYTE)0

+#define Z_ATI_PS_ABNORMAL                                    (BYTE)1

+

 

 /* ÈÎÎñÄ£¿éID */

 #define Z_ATI_TASKID_MMIA                                    (BYTE)(SUBMDL_Z_ATI - SUBMDL_PSBASE)

@@ -1169,7 +1172,7 @@
     BYTE                                                     bSearchPlmnFg; /*¼Ç¼ÊÇ·ñ½øÐйýËÑÍø*/

     BYTE                                                     bZcwaFg; /*¼Ç¼ZCWAÉèÖõÄÖµ£¬0:ÊÕµ½waiting callʱֱ½Ó¾Ü¾ø²»Éϱ¨£¬1:Õý³£Éϱ¨*/

     BYTE                                                     bZemsciqIndex;/*¼Ç¼¹¤³Ìģʽ²éѯ¸ñʽ¶ÔÓ¦µÄË÷Òý*/

-    BYTE                                                     bZemPadding;

+    BYTE                                                     bZemsciType;/*Çø·Ö¹¤³ÌģʽÖ÷¶¯Éϱ¨ÃüÁîÀàÐÍ,0-ZEMSCI,1-ZSCIND*/

 #ifdef Z_DUALSTANDBY

     BYTE                                                    bZpsStat;    /*¼Ç¼PSÒµÎñ״̬*/

 #endif

@@ -1277,6 +1280,7 @@
 #ifdef DSDS_VSIM

     T_zAti_CardSitchStat                               tCardSwitch;

 #endif

+    BYTE                                               bPsAbnormal;

 } T_zAti_Data;

 

 typedef struct {

@@ -1788,7 +1792,7 @@
 BYTE zAti_GetRegState(VOID);

 

 extern BOOL zAti_IsHasValidFg(BYTE *pbFg, BYTE bLen);

-

+extern VOID zAt_PsAbnormalStatusInd(BYTE bStat);

 extern VOID zAti_SetS0Value(BYTE bS0Value);

 extern BYTE zAti_GetS0Value(VOID);

 BYTE zAt_IsBeepCallNum(T_z_CallNum *ptCheckedNum);

diff --git a/Uboot/cp/ps/modem/ps/src/nas/ati/inc/zati_int.h b/Uboot/cp/ps/modem/ps/src/nas/ati/inc/zati_int.h
index 73cd495..8db7567 100755
--- a/Uboot/cp/ps/modem/ps/src/nas/ati/inc/zati_int.h
+++ b/Uboot/cp/ps/modem/ps/src/nas/ati/inc/zati_int.h
@@ -1496,6 +1496,9 @@
 

 #define  AP_MMIA_ZEPCG_SET        (BYTE)0

 #define  AP_MMIA_ZEPCG_QRY        (BYTE)1

+

+#define  Z_AT_ZEMSCI_IND          (BYTE)0

+#define  Z_AT_ZSCIND              (BYTE)1

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

  *                                   ½Ó¿ÚÊý¾Ý½á¹¹¶¨Òå                               *                

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

@@ -8704,9 +8707,27 @@
                                                               */

     BYTE                                         bAct;

     BYTE                                         abPadding[3];

-}T_zApMmia_Rxlev_Cnf, T_zApMmia_ZRptRxlev_Ind; 

+}T_zApMmia_Rxlev_Cnf; 

 

-

+typedef struct {

+    BYTE                                         bSrcIndex;

+    BYTE                                         bDesIndex;

+    BYTE                                         bRxlev;      /* ÐźÅÇ¿¶È 

+                                                              *  TDDȡֵ£º100£­199 ÌØÊâÖµ 99

+                                                              *  GSMȡֵ£º0£­31  ÌØÊâÖµ 99

+                                                              */

+    BYTE                                         bBler;      /* ÐŵÀÎóÂëÂÊ 

+                                                              * TDDȡֵ£ºTDÇé¿öÏ´ËÖµÎÞЧ£¬Îª99

+                                                              * GSMȡֵ£ºbBler £º 0£­7  ÎÞЧֵ99

+                                                              */

+    BYTE                                         bAct;

+    BYTE                                         bRsrq;/*LTE·þÎñÐ¡ÇøµÄRSRQ,ÎÞЧֵ0xff*/

+    BYTE                                         bSinrInt;   /*LTE·þÎñÐ¡ÇøµÄSINRµÄÕûÊýÖµ,ȡֵ·¶Î§0~60; ÕæÊµÖµ»ù´¡ÉϼÓ20;ÕæÊµÖµÈ¡Öµ·¶Î§: -20~40*/

+    BYTE                                         bSinrDec; /*LTE·þÎñÐ¡ÇøµÄSINRȡֵ·¶Î§ 0~9*/

+    BYTE                                         bRssiInt;  /*LTE·þÎñÐ¡ÇøµÄRSSIµÄÕûÊýÖµ,ȡֵ·¶Î§0~133,0xffΪÎÞЧֵ; ÕæÊµÖµ»ù´¡ÉϼÓ129;ÕæÊµÖµÈ¡Öµ·¶Î§: -129~-4*/

+    BYTE                                         bEcno;  /*W·þÎñÐ¡ÇøµÄECNOµÄ²âÁ¿Öµ,ȡֵ·¶Î§0~49,0xffΪÎÞЧֵ*/

+    BYTE                                         abPadding[2];

+}T_zApMmia_ZRptRxlev_Ind;

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

   Ô­Óï:Z_APMMIA_ZRptRxlevQueryCnf_Ev(MMMIA->ATI)

   ¹¦ÄÜ:²éѯÊÇ·ñÉèÖÃÁËÖ÷¶¯Éϱ¨ÐźÅÇ¿¶ÈµÄ»Ø¸´

diff --git a/Uboot/cp/ps/modem/ps/src/nas/ati/inc/zati_othr.h b/Uboot/cp/ps/modem/ps/src/nas/ati/inc/zati_othr.h
index 62cb645..5b9dc6a 100755
--- a/Uboot/cp/ps/modem/ps/src/nas/ati/inc/zati_othr.h
+++ b/Uboot/cp/ps/modem/ps/src/nas/ati/inc/zati_othr.h
@@ -76,6 +76,7 @@
 VOID zAti_EM_CpyGrrCellInfo(T_z_CellInfo_Ind *ptApMmiaInd, T_zMmiaAs_EM_GCellInfo_Ind *ptMmiaAsInd);

 VOID zAti_EM_CpyUmcrCellInfo(T_z_CellInfo_Ind *ptApMmiaInd, T_zMmiaAs_EM_UCellInfo_Ind *ptMmiaAsInd);

 VOID zAti_EM_CpyEumcrCellInfo(T_z_CellInfo_Ind *ptApMmiaInd, T_zMmiaAs_EM_EUCellInfo_Ind *ptMmiaAsInd);

+VOID zAt_EM_CpyScellInfo(T_zEM_EmInfo_Ind *ptEmInfoInd, T_zAt_CellInfo_Ind *ptCellInfoInd);

 VOID zAti_ZulrtindTimerExpir(VOID);

 #endif

 

diff --git a/Uboot/cp/ps/modem/ps/src/nas/ati/src/zat_fnc.c b/Uboot/cp/ps/modem/ps/src/nas/ati/src/zat_fnc.c
index 0aca45e..bd32a78 100755
--- a/Uboot/cp/ps/modem/ps/src/nas/ati/src/zat_fnc.c
+++ b/Uboot/cp/ps/modem/ps/src/nas/ati/src/zat_fnc.c
@@ -13095,7 +13095,12 @@
     if(!zAt_PsDecNextParamDecimalNumByteNeed( &prsCmd2Msg, strSubBuf, &pDecCmdStr, &zemciSetReq.bAction, NULL)

         || (zemciSetReq.bAction > Z_ATI_EM_TIMER_MAXLEN))

     {

-        return zAt_GetParseRslt2(&prsCmd2Msg,ZAT2_CMD_PARAM_ERR);

+        return zAt_GetParseRslt2(&prsCmd2Msg, ZAT2_CMD_PARAM_ERR);

+    }

+

+    if(pDecCmdInfo->curCmdId == ZAT2_EM_ZSCIND)

+    {

+        zemciSetReq.bAtType = Z_AT_ZSCIND;

     }

 

     return zAt_PsDecFinishParse(&prsCmd2Msg, pDecCmdStr, &zemciSetReq, sizeof(T_zMmiaAs_EM_CellInfo_Req), TRUE); 

@@ -19458,7 +19463,9 @@
     T_zApMmia_ZRptRxlev_Ind *pZsqrInd = (T_zApMmia_ZRptRxlev_Ind*) pEncCmdInfo->pMsgBody;    

 

     /* +ZSQR: <rssi>[,<ber>] */

-    return (UINT16)sprintf((char *)pEncCmdInfo->pStrCmd, "%s+ZSQR: %d,%d,%d%s",  g_zAt_CRLF, pZsqrInd->bRssi, pZsqrInd->bBler, pZsqrInd->bAct, g_zAt_CRLF);

+    return (UINT16)sprintf((char *)pEncCmdInfo->pStrCmd, "%s+ZSQR: %d,%d,%d,%d,%d,%d,%d,%d%s",  g_zAt_CRLF, 

+        pZsqrInd->bRxlev, pZsqrInd->bBler, pZsqrInd->bAct, pZsqrInd->bEcno, pZsqrInd->bSinrInt, pZsqrInd->bSinrDec, 

+        pZsqrInd->bRssiInt, pZsqrInd->bRsrq, g_zAt_CRLF);

 }

 

 

@@ -25952,6 +25959,30 @@
     prsCmd2Msg.decRslt2nd = ZAT2_CMD_REPLY_DIRECT;

     return prsCmd2Msg;

 }

+

+T_ZAt_ParseCmd2MsgRslt zAt_PsDecZpsabnormalQryReq(T_ZAt_DecCmdInfo * pDecCmdInfo)

+{

+    T_ZAt_ParseCmd2MsgRslt    prsCmd2Msg = {0};

+

+    sprintf((char *)g_zAt_EncBuf, "%s+ZPSABNORMAL: %d%s%s", g_zAt_CRLF, g_zAti_ptData->bPsAbnormal, g_zAt_CRLF, g_zAt_OK);

+

+    prsCmd2Msg.decRslt2nd = ZAT2_CMD_REPLY_DIRECT;

+    return prsCmd2Msg;

+}

+

+VOID zAt_PsAbnormalStatusInd(BYTE bStat)

+{

+    UINT16  strLen=0;

+    CHAR abStr[30] = {0};

+

+    /*+ZPSABNORMAL: <status>*/

+    sprintf((char *)abStr, "%s+ZPSABNORMAL: %d%s", g_zAt_CRLF, bStat, g_zAt_CRLF);

+    strLen = (UINT16)strlen((const char *)abStr);

+

+    zAti_DeliverAllMsg(AP_MMIA_ZPSABNORMAL_IND_EV, abStr, strLen);

+

+    return;

+}

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

 * º¯ÊýÃû³Æ£º zAt_PsDecZtpmrReq

 * ¹¦ÄÜÃèÊö£º ¸ù¾ÝµÚ1²½½âÎö½á¹û£¬ÌîдÏûÏ¢¶ÔÓ¦µÄ½á¹¹Ìå

diff --git a/Uboot/cp/ps/modem/ps/src/nas/ati/src/zat_fnc_sup.c b/Uboot/cp/ps/modem/ps/src/nas/ati/src/zat_fnc_sup.c
index 4ac962d..7825509 100755
--- a/Uboot/cp/ps/modem/ps/src/nas/ati/src/zat_fnc_sup.c
+++ b/Uboot/cp/ps/modem/ps/src/nas/ati/src/zat_fnc_sup.c
@@ -5505,25 +5505,46 @@
 UINT16 __ps_static_func zAt_PsEncEmZemsciInd(T_ZAt_EncCmdInfo * pEncCmdInfo)

 {

     CHAR * pStrWalk = pEncCmdInfo->pStrCmd;

-    WORD wInfoLen = sizeof(T_zEM_EmInfo_Ind);

+    WORD wInfoLen = 0;

     WORD wLen = 0;

     T_zEM_EmInfo_Ind  *ptEmInfoInd = (T_zEM_EmInfo_Ind*)pEncCmdInfo->pMsgBody;

+    T_zAt_CellInfo_Ind  *ptAtCellInfo = ZOSS_NULL;

 

     /* ³¬³¤ÃüÁÐèÒª·ÖÅäZAT2_LONG_CMD_LEN * 2³¤¶È¿Õ¼ä */

     if (g_zAti_atDataEx[g_zAti_CurInstance].bCellInfSet != Z_APMMIA_EM_IND_DISABLE)

     {

         #ifndef BTRUNK_SUPPORT

-        zAti_RetUB((VOID**)&pEncCmdInfo->pStrCmd);

-        pEncCmdInfo->pStrCmd = (CHAR *)zAti_GetUB(sizeof(T_zEM_EmInfo_Ind) * 2 + 100);//100ÊÇΪÃüÁîÍ·ºÍÃüÁîβÁôµÄ

-        pStrWalk = pEncCmdInfo->pStrCmd;

-

-        pStrWalk += sprintf((char *)pStrWalk, "%s+ZEMSCI: ", g_zAt_CRLF);

-

-        for(wLen = 0; wLen < wInfoLen; wLen++)

+        if(g_zAti_atDataEx[g_zAti_CurInstance].bZemsciType == Z_AT_ZSCIND)

         {

-            pStrWalk += sprintf((char *)pStrWalk, "%02X", *((PBYTE)(ptEmInfoInd)+wLen));

-        }

+            wInfoLen = sizeof(T_zAt_CellInfo_Ind);

+            ptAtCellInfo = (T_zAt_CellInfo_Ind*)zAti_GetUB(wInfoLen);

 

+            zAt_EM_CpyScellInfo(ptEmInfoInd, ptAtCellInfo);

+

+            pStrWalk += sprintf((char *)pStrWalk, "%s+ZSCIND: ", g_zAt_CRLF);

+

+            for(wLen = 0; wLen < wInfoLen; wLen++)

+            {

+                pStrWalk += sprintf((char *)pStrWalk, "%02X", *((PBYTE)(ptAtCellInfo)+wLen));

+            }

+

+            zAti_RetUB((VOID**)&ptAtCellInfo);

+        }

+        else

+        {

+            zAti_RetUB((VOID**)&pEncCmdInfo->pStrCmd);

+            pEncCmdInfo->pStrCmd = (CHAR *)zAti_GetUB(sizeof(T_zEM_EmInfo_Ind) * 2 + 100);//100ÊÇΪÃüÁîÍ·ºÍÃüÁîβÁôµÄ

+            pStrWalk = pEncCmdInfo->pStrCmd;

+    

+            pStrWalk += sprintf((char *)pStrWalk, "%s+ZEMSCI: ", g_zAt_CRLF);

+

+            wInfoLen = sizeof(T_zEM_EmInfo_Ind);

+

+            for(wLen = 0; wLen < wInfoLen; wLen++)

+            {

+                pStrWalk += sprintf((char *)pStrWalk, "%02X", *((PBYTE)(ptEmInfoInd)+wLen));

+            }

+        }

         sprintf((char *)pStrWalk, "%s", g_zAt_CRLF);

         #else

         if(ptEmInfoInd->bRatType == Z_LTE_ACT)

@@ -5583,25 +5604,47 @@
 UINT16 zAt_PsEncZemsciQCnf(T_ZAt_EncCmdInfo * pEncCmdInfo)

 {

     CHAR * pStrWalk = pEncCmdInfo->pStrCmd;

-    WORD wInfoLen = sizeof(T_zEM_EmInfo_Ind);

+    WORD wInfoLen = 0;

     WORD wLen = 0;

     T_zEM_EmInfo_Ind  *ptAscellInfoCnf = (T_zEM_EmInfo_Ind*)pEncCmdInfo->pMsgBody;

+    T_zAt_CellInfo_Ind  *ptAtCellInfo = ZOSS_NULL;

 

     if(Z_NO_ACT == ptAscellInfoCnf->bRatType)

     {

         zAti_SendExpt2TraceAgt(ERR_InvalidPara,  TRACE_ERR_LEVEL_NORMAL,"");

         return zAt_EncErrorCode(pStrWalk, pEncCmdInfo->cmdId, ZAT2_CMEE_GETNOINFO_ERR);

     }

-    zAti_RetUB((VOID**)&pEncCmdInfo->pStrCmd);

-    pEncCmdInfo->pStrCmd = (CHAR *)zAti_GetUB(sizeof(T_zEM_EmInfo_Ind) * 2 + 100);//100ÊÇΪÃüÁîÍ·ºÍÃüÁîβÁôµÄ

-    pStrWalk = pEncCmdInfo->pStrCmd;

 

-    pStrWalk += sprintf((char *)pStrWalk, "%s+ZEMSCIQ: ", g_zAt_CRLF);

-    for(wLen = 0; wLen < wInfoLen; wLen++)

+    if(pEncCmdInfo->cmdId == ZAT2_EM_ZSCIQ)

     {

-        pStrWalk += sprintf((char *)pStrWalk, "%02X", *((PBYTE)ptAscellInfoCnf+wLen));

-    }

+        wInfoLen = sizeof(T_zAt_CellInfo_Ind);

+        ptAtCellInfo = (T_zAt_CellInfo_Ind*)zAti_GetUB(wInfoLen);

 

+        zAt_EM_CpyScellInfo(ptAscellInfoCnf, ptAtCellInfo);

+

+        pStrWalk += sprintf((char *)pStrWalk, "%s+ZSCIQ: ", g_zAt_CRLF);

+

+        for(wLen = 0; wLen < wInfoLen; wLen++)

+        {

+            pStrWalk += sprintf((char *)pStrWalk, "%02X", *((PBYTE)ptAtCellInfo+wLen));

+        }

+

+        zAti_RetUB((VOID**)&ptAtCellInfo);

+    }

+    else

+    {

+        zAti_RetUB((VOID**)&pEncCmdInfo->pStrCmd);

+        pEncCmdInfo->pStrCmd = (CHAR *)zAti_GetUB(sizeof(T_zEM_EmInfo_Ind) * 2 + 100);//100ÊÇΪÃüÁîÍ·ºÍÃüÁîβÁôµÄ

+        pStrWalk = pEncCmdInfo->pStrCmd;

+

+        wInfoLen = sizeof(T_zEM_EmInfo_Ind);

+

+        pStrWalk += sprintf((char *)pStrWalk, "%s+ZEMSCIQ: ", g_zAt_CRLF);

+        for(wLen = 0; wLen < wInfoLen; wLen++)

+        {

+            pStrWalk += sprintf((char *)pStrWalk, "%02X", *((PBYTE)ptAscellInfoCnf+wLen));

+        }

+    }

     sprintf((char *)pStrWalk, "%s%s", g_zAt_CRLF, g_zAt_OK);

 

     return (UINT16)strlen((const char *)pEncCmdInfo->pStrCmd);

diff --git a/Uboot/cp/ps/modem/ps/src/nas/ati/src/zat_var.c b/Uboot/cp/ps/modem/ps/src/nas/ati/src/zat_var.c
index 82ab961..3a6ce62 100755
--- a/Uboot/cp/ps/modem/ps/src/nas/ati/src/zat_var.c
+++ b/Uboot/cp/ps/modem/ps/src/nas/ati/src/zat_var.c
@@ -101,6 +101,7 @@
     {   "+ZULRTIND",       ZAT2_CFG_ZULRTIND,      ""       },

     {   "+ZPOWSTAT",       ZAT2_CFG_ZPOWSTAT,       "+ZPOWSTAT: (0-2)"        },

     {   "+ZLOWPWR",      ZAT2_CFG_ZLOWPWR,        "+ZLOWPWR: (0,1)"        },

+    {   "+ZPSABNORMAL",     ZAT2_CFG_ZPSABNORMAL,      ""        },

 

     /********************************* MMÄ£¿é ************************************/

     {   "+CREG",       ZAT2_MM_CREG,          "+CREG: (0-2)"                      },

@@ -391,6 +392,8 @@
 #if !defined (BTRUNK_SUPPORT) && (defined (_CHIP_ZX297520_LATER) || defined (_CHIP_ZX2804))

     {   "+ZEMSCI",    ZAT2_EM_ZEMSCI,        ""                                  },

     {   "+ZEMSCIQ",    ZAT2_EM_ZEMSCIQ,        ""                                  },

+    {   "+ZSCIQ",    ZAT2_EM_ZSCIQ,        ""                                   },

+    {   "+ZSCIND",    ZAT2_EM_ZSCIND,        ""                                   },

 #else

     {   "+ZEMCI",      ZAT2_EM_ZEMCI,         ""                                  },

     {   "+ZEMCIQ",      ZAT2_EM_ZEMCIQ,         ""                                  },

@@ -724,7 +727,11 @@
 

     /***********************************+ZLOWPWR*********************************************/

     { ZAT2_CFG_ZLOWPWR,    ZAT2_CO_SET_REQ,    ATI_DISTRIBUTE_FUNC_ZLOWPWR_REQ_EV,    zAt_PsDecZlowPwrSetReq },

-    { ZAT2_CFG_ZLOWPWR,    ZAT2_CO_QUERY_REQ,    0,    zAt_PsDecZlowPwrQryReq},

+    { ZAT2_CFG_ZLOWPWR,    ZAT2_CO_QUERY_REQ,    0,    zAt_PsDecZlowPwrQryReq },

+

+    /***********************************+ZPSABNORMAL************************************/

+    { ZAT2_CFG_ZPSABNORMAL,    ZAT2_CO_QUERY_REQ,    0,    zAt_PsDecZpsabnormalQryReq },

+

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

     MMÄ£¿é

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

@@ -1439,6 +1446,8 @@
     { ZAT2_EM_ZEMSCI,   ZAT2_CO_QUERY_REQ,  AP_MMIA_EM_CELL_INFO_QUERY_REQ_EV, zAt_PsDecCommonReq   },

     { ZAT2_EM_ZEMSCIQ,   ZAT2_CO_QUERY_REQ, ATI_DISTRIBUTE_FUNC_CELLINFO_QRY_REQ_EV, zAt_PsDecCommonReq},

     { ZAT2_EM_ZEMSCIQ,   ZAT2_CO_SET_REQ, ATI_DISTRIBUTE_FUNC_CELLQRY_REQ_EV, zAt_PsDecEmZemsciqByIndexReq},

+    { ZAT2_EM_ZSCIND,   ZAT2_CO_SET_REQ,    ATI_DISTRIBUTE_FUNC_EM_CELL_INFO_REQ_EV,    zAt_PsDecEmZemciSetReq},

+    { ZAT2_EM_ZSCIQ,   ZAT2_CO_QUERY_REQ,    ATI_DISTRIBUTE_FUNC_CELLINFO_QRY_REQ_EV,  zAt_PsDecCommonReq},

     #else

     /******************************************* +ZEMCI *******************************************/

     { ZAT2_EM_ZEMCI,   ZAT2_CO_SET_REQ,    ATI_DISTRIBUTE_FUNC_EM_CELL_INFO_REQ_EV,   zAt_PsDecEmZemciSetReq   },

diff --git a/Uboot/cp/ps/modem/ps/src/nas/ati/src/zati_distribute_fnc.c b/Uboot/cp/ps/modem/ps/src/nas/ati/src/zati_distribute_fnc.c
index 9a3235c..3fb3142 100755
--- a/Uboot/cp/ps/modem/ps/src/nas/ati/src/zati_distribute_fnc.c
+++ b/Uboot/cp/ps/modem/ps/src/nas/ati/src/zati_distribute_fnc.c
@@ -2458,6 +2458,8 @@
     else

     {

         g_zAti_atDataEx[g_zAti_CurInstance].bCellInfSet  = ptApMmiaReq->bAction;

+        g_zAti_atDataEx[g_zAti_CurInstance].bZemsciType = ptApMmiaReq->bAtType;

+

         sprintf((char *)g_zAt_EncBuf, "%s",  g_zAt_OK);

         return Z_APMMIA_NOERROR_ERR;

     }

@@ -2709,21 +2711,26 @@
 ·µ    »Ø£ºT_zApMmia_ZRptRxlev_Ind ½á¹¹Ö¸Õë

 

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

-T_zApMmia_ZRptRxlev_Ind* __ps_2g_func zAti_CreateZRptRxlevIndMsg(BYTE bSourceIndex, BYTE bDestIndex, BYTE bRssi, BYTE bBler, BYTE bAct)

+T_zApMmia_ZRptRxlev_Ind* __ps_2g_func zAti_CreateZRptRxlevIndMsg(BYTE bRxlev, BYTE bBler, BYTE bAct, T_zMmiaAs_RptRxlev_Ind *ptAsInd)

 {

     T_zApMmia_ZRptRxlev_Ind * ptApInd = (T_zApMmia_ZRptRxlev_Ind*)zAti_GetUB(sizeof(T_zApMmia_ZRptRxlev_Ind));

 

-    ptApInd->bSrcIndex   = bSourceIndex;

-    ptApInd->bDesIndex  = bDestIndex;

-    ptApInd->bRssi         = bRssi; 

+    ptApInd->bRxlev         = bRxlev; 

     ptApInd->bBler         = bBler;

     ptApInd->bAct          = bAct;

+    ptApInd->bRsrq          = ptAsInd->bRsrq;

+    ptApInd->bSinrInt         = ptAsInd->bSinrInt;

+    ptApInd->bSinrDec       = ptAsInd->bSinrDec;

+    ptApInd->bRssiInt        = ptAsInd->bRssiInt;

+    ptApInd->bEcno        = ptAsInd->bEcno;

 

     return ptApInd;

 }

 

 DWORD zAti_ZRptRxlevEnable (T_zApMmia_ZRptRxlev_Req *ptRxlevReq)

 {

+    T_zMmiaAs_RptRxlev_Ind  tRptInd = {0};

+    T_zApMmia_ZRptRxlev_Ind *ptApInd = ZOSS_NULL;

     BYTE bRegState = Z_APMMIA_REGSTATE_UNKNOWN;

     BYTE bInsNo = ((g_zAti_CurInstance == Z_ATI_INSNO_1)? Z_ATI_INSNO_1 : Z_ATI_INSNO_2);

 

@@ -2749,7 +2756,10 @@
 

     if (bRegState == Z_APMMIA_REGSTATE_REGDENIED || bRegState == Z_APMMIA_REGSTATE_UNKNOWN)

     {

-        T_zApMmia_ZRptRxlev_Ind *ptApInd = zAti_CreateZRptRxlevIndMsg(ptRxlevReq->bDesIndex, ptRxlevReq->bSrcIndex, 0, 99, Z_APMMIA_NOSERVE);

+        zOss_Memset(&tRptInd, 255, sizeof(T_zMmiaAs_RptRxlev_Ind));

+        ptApInd = zAti_CreateZRptRxlevIndMsg(0, 99, Z_APMMIA_NOSERVE, &tRptInd);

+        ptApInd->bDesIndex = ptRxlevReq->bSrcIndex;

+        ptApInd->bSrcIndex = ptRxlevReq->bDesIndex;

         zAti_MsgSend(AP_MMIA_ZRPT_RXLEVIND_EV,  (PBYTE)ptApInd, sizeof(T_zApMmia_ZRptRxlev_Ind), Z_ATI_TASKID_ATI);

     }

     return zAti_ZRptRxlevProc (ptRxlevReq);

@@ -4817,6 +4827,10 @@
     if (Z_FAIL == ptRfCtrl->bResult)                     /* ʧ°Ü */

     {

         g_zAti_atDataEx[g_zAti_CurInstance].tFun.bFunBak = Z_ATI_INVALID_BYTE;

+

+        g_zAti_ptData->bPsAbnormal = Z_ATI_PS_ABNORMAL;

+        zAt_PsAbnormalStatusInd(Z_ATI_PS_ABNORMAL);

+

         return Z_APMMIA_UNKNOWN_ERR;

     }

     else                                                   /* ³É¹¦ */

@@ -4825,6 +4839,8 @@
         g_zAti_atDataEx[g_zAti_CurInstance].tFun.bRfVal = g_zAti_atDataEx[g_zAti_CurInstance].tFun.bFunBak;

         g_zAti_atDataEx[g_zAti_CurInstance].tFun.bFunBak = Z_ATI_INVALID_BYTE;

 

+        g_zAti_ptData->bPsAbnormal = Z_ATI_PS_NORMAL;

+

         zDev_AtMemReadItem(Z_AtMem_ID_MmiaPrvtMem, 0, (PBYTE)&tAtData, g_zAti_CurInstance);

 

         if (Z_APMMIA_CFUNFUN_FULLFUN == g_zAti_atDataEx[g_zAti_CurInstance].tFun.bFunVal)

@@ -7435,6 +7451,11 @@
         ºÍµ±Ç°ÎÞפÁôÇÒδËÑÍøÊ±²Å±¨£¬*/

         if (Z_VALID == zAti_ZsqrInvalidRxlevProc(&ptAsInd->bRxlev, &bAct))

         {

+            ptAsInd->bEcno = 0xff;

+            ptAsInd->bRsrq = 0xff;

+            ptAsInd->bRssiInt = 0xff;

+            ptAsInd->bSinrInt = 0xff;

+            ptAsInd->bSinrDec = 0xff;

             g_zAti_atDataEx[g_zAti_CurInstance].bPreLevel = 0xff;

             bRssi = zAti_GetTdRssi(ptAsInd->bRxlev);

             bAct = Z_APMMIA_NOSERVE;

@@ -7446,16 +7467,26 @@
         if (tTaskId == zDev_GetTaskId(Z_ATI_TASKID_EUMCR, 0) ||tTaskId == zDev_GetTaskId(Z_ATI_TASKID_EUMCR, 1))

         {

             flag = zAti_IsLtePowerLevelChng(ptAsInd->bRxlev);

+            ptAsInd->bEcno = 0xff;

             bAct = Z_APMMIA_LTE;

         }

         else if(tTaskId == zDev_GetTaskId(Z_ATI_TASKID_WMCR, 0) ||tTaskId == zDev_GetTaskId(Z_ATI_TASKID_WMCR, 1))

         {

             flag = zAti_IsWPowerLevelChng(ptAsInd->bRxlev);

+            ptAsInd->bRsrq = 0xff;

+            ptAsInd->bRssiInt = 0xff;

+            ptAsInd->bSinrInt = 0xff;

+            ptAsInd->bSinrDec = 0xff;

             bAct = Z_APMMIA_WCDMA;

         }

         else //MCR

         {

             flag = zAti_IsTdPowerLevelChng(ptAsInd->bRxlev);

+            ptAsInd->bEcno = 0xff;

+            ptAsInd->bRsrq = 0xff;

+            ptAsInd->bRssiInt = 0xff;

+            ptAsInd->bSinrInt = 0xff;

+            ptAsInd->bSinrDec = 0xff;

             bAct = Z_APMMIA_TDSCDMA;

         }

     }

@@ -7463,7 +7494,9 @@
     if (flag == Z_VALID)

     {

         bBler = (ptAsInd->bBlerFlg == Z_VALID)? ptAsInd->bBler : 99;

-        ptApInd = zAti_CreateZRptRxlevIndMsg(0xfe, 0xff, bRssi, bBler, bAct);

+        ptApInd = zAti_CreateZRptRxlevIndMsg(bRssi, bBler, bAct, ptAsInd);

+        ptApInd->bDesIndex = 0xff;

+        ptApInd->bSrcIndex = 0xfe;

         zAti_RecvServerHandlerSlaver(AP_MMIA_ZRPT_RXLEVIND_EV, (UINT8 *)ptApInd, sizeof(T_zApMmia_ZRptRxlev_Ind));

     }

 }

@@ -7635,6 +7668,12 @@
         zAti_SendExpt2TraceAgt(ERR_InvalidPara,  TRACE_ERR_LEVEL_SEVERE,"");                       

         return ;

     }

+

+    ptAsInd->bRsrq = 0xff;

+    ptAsInd->bSinrInt = 0xff;

+    ptAsInd->bSinrDec = 0xff;

+    ptAsInd->bRssiInt = 0xff;

+    ptAsInd->bEcno = 0xff;

     /*ÎÞЧֵ99Ê±ÖÆÊ½Í³Ò»±¨NOSERVE*/

     if(ptAsInd->bRxlev == 99)

     {

@@ -7657,7 +7696,9 @@
     if (flag == Z_VALID)

     {

         bBler = (ptAsInd->bBlerFlg == Z_VALID)? ptAsInd->bBler : 99;

-        ptApInd = zAti_CreateZRptRxlevIndMsg(0xfe, 0xff, bRssi, bBler, bAct);

+        ptApInd = zAti_CreateZRptRxlevIndMsg(bRssi, bBler, bAct, ptAsInd);

+        ptApInd->bDesIndex = 0xff;

+        ptApInd->bSrcIndex = 0xfe;

         zAti_RecvServerHandlerSlaver(AP_MMIA_ZRPT_RXLEVIND_EV, (UINT8 *)ptApInd, sizeof(T_zApMmia_ZRptRxlev_Ind));

     }

 }

@@ -7784,11 +7825,13 @@
         g_zAti_atDataEx[g_zAti_CurInstance].bPreCsqAct = bAct;

     }

 

-    ptApRxlevCnf = (T_zApMmia_Rxlev_Cnf*)zAti_CreateZRptRxlevIndMsg(

-        ptAsRptRxlevInd->bSrcIndex,

-        ptAsRptRxlevInd->bDesIndex,

-        zAti_GetGsmRssi(ptAsRptRxlevInd->bRxlev), 

-         (BYTE)((ptAsRptRxlevInd->bBlerFlg == Z_VALID)? ptAsRptRxlevInd->bBler : 99),bAct);

+    ptApRxlevCnf = (T_zApMmia_Rxlev_Cnf*)zAti_GetUB(sizeof(T_zApMmia_Rxlev_Cnf));

+    

+    ptApRxlevCnf->bDesIndex = ptAsRptRxlevInd->bDesIndex;

+    ptApRxlevCnf->bSrcIndex = ptAsRptRxlevInd->bSrcIndex;

+    ptApRxlevCnf->bRssi = zAti_GetGsmRssi(ptAsRptRxlevInd->bRxlev);

+    ptApRxlevCnf->bBler = (ptAsRptRxlevInd->bBlerFlg == Z_VALID)? ptAsRptRxlevInd->bBler : 99;

+    ptApRxlevCnf->bAct = bAct;

 

     zAti_RecvServerHandlerSlaver(AP_MMIA_RXLEV_CNF_EV, (UINT8 *)ptApRxlevCnf, sizeof(T_zApMmia_Rxlev_Cnf));

 }

diff --git a/Uboot/cp/ps/modem/ps/src/nas/ati/src/zati_fnc.c b/Uboot/cp/ps/modem/ps/src/nas/ati/src/zati_fnc.c
index ab3a03f..55236e0 100755
--- a/Uboot/cp/ps/modem/ps/src/nas/ati/src/zati_fnc.c
+++ b/Uboot/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/Uboot/cp/ps/modem/ps/src/nas/ati/src/zati_main.c b/Uboot/cp/ps/modem/ps/src/nas/ati/src/zati_main.c
index 32f9fe7..ea68869 100755
--- a/Uboot/cp/ps/modem/ps/src/nas/ati/src/zati_main.c
+++ b/Uboot/cp/ps/modem/ps/src/nas/ati/src/zati_main.c
@@ -392,7 +392,8 @@
     g_zAti_atDataEx[bInstance].tFun.bRfVal = Z_APMMIA_CFUNFUN_MINIFUN;

     zAti_RetUB((VOID **)&g_zAti_atDataEx[bInstance].ptUrrcHoInd);

     zAti_RetUB((VOID **)&g_zAti_atDataEx[bInstance].ptGrrcHoInd);

-    g_zAti_atDataEx[bInstance].bCellInfSet       = 0; 

+    g_zAti_atDataEx[bInstance].bCellInfSet       = 0;

+    g_zAti_atDataEx[bInstance].bZemsciType       = 0;

     g_zAti_atDataEx[bInstance].bHoInfoSet        = 0;

     g_zAti_atDataEx[bInstance].bZsqrSet           = 0;

     g_zAti_atDataEx[bInstance].bRange        = 0;

@@ -475,6 +476,7 @@
     g_zAti_ptData->bEModeType = 0xff;

     g_zAti_ptData->bPowerIndFlag = FALSE;

     g_zAti_ptData->bSmOnlyL2PFlag = FALSE;

+    g_zAti_ptData->bPsAbnormal = Z_ATI_PS_NORMAL;

 #ifdef DSDS_VSIM

     g_zAti_ptData->tCardSwitch.bSim1Stat = Z_ATI_CARD_ACT;

     g_zAti_ptData->tCardSwitch.bSim2Stat = Z_ATI_CARD_DEACT;

@@ -622,7 +624,8 @@
     g_zAti_atDataEx[bInstance].tFun.bFunVal = Z_APMMIA_CFUNFUN_MINIFUN;

     zAti_RetUB((VOID **)&g_zAti_atDataEx[bInstance].ptUrrcHoInd);

     zAti_RetUB((VOID **)&g_zAti_atDataEx[bInstance].ptGrrcHoInd);

-    g_zAti_atDataEx[bInstance].bCellInfSet       = 0; 

+    g_zAti_atDataEx[bInstance].bCellInfSet       = 0;

+    g_zAti_atDataEx[bInstance].bZemsciType       = 0;

     g_zAti_atDataEx[bInstance].bHoInfoSet        = 0;

     g_zAti_atDataEx[bInstance].bZsqrSet           = 0;

     g_zAti_atDataEx[bInstance].bRange        = 0;

@@ -687,6 +690,7 @@
     zAti_RetUB((VOID **)&g_zAti_atDataEx[bInstance].ptUrrcHoInd);

     zAti_RetUB((VOID **)&g_zAti_atDataEx[bInstance].ptGrrcHoInd);

     g_zAti_atDataEx[bInstance].bCellInfSet       = 0;

+    g_zAti_atDataEx[bInstance].bZemsciType       = 0;

     g_zAti_atDataEx[bInstance].bHoInfoSet        = 0;

     g_zAti_atDataEx[bInstance].bZsqrSet           = 0;

     g_zAti_atDataEx[bInstance].bRange        = 0;

diff --git a/Uboot/cp/ps/modem/ps/src/nas/ati/src/zati_othr.c b/Uboot/cp/ps/modem/ps/src/nas/ati/src/zati_othr.c
index 6880eeb..a5009fd 100755
--- a/Uboot/cp/ps/modem/ps/src/nas/ati/src/zati_othr.c
+++ b/Uboot/cp/ps/modem/ps/src/nas/ati/src/zati_othr.c
@@ -1647,6 +1647,73 @@
     zAti_EM_CpyEumcrCellInfoLtePart(ptApMmiaInd, ptMmiaAsInd);

 }

 

+VOID zAt_EM_CpyScellInfo(T_zEM_EmInfo_Ind *ptEmInfoInd, T_zAt_CellInfo_Ind *ptCellInfoInd)

+{

+    T_zEm_W_DchMeasInfo *ptDchInfo = ZOSS_NULL;

+    T_zEm_W_NotDchMeasInfo *ptNotDchInfo = ZOSS_NULL;

+

+    if(ptEmInfoInd == ZOSS_NULL || ptCellInfoInd == ZOSS_NULL)

+    {

+        return;

+    }

+

+    ptCellInfoInd->bRatType = ptEmInfoInd->bRatType;

+    ptCellInfoInd->bVersion = ptEmInfoInd->bVersion;

+    ptCellInfoInd->bDesIndex = ptEmInfoInd->bDesIndex;

+    ptCellInfoInd->bSrcIndex = ptEmInfoInd->bSrcIndex;

+

+    if(ptEmInfoInd->bRatType == Z_LTE_ACT)

+    {

+        ptCellInfoInd->uScellInfo.tLteScellInfo.dwEarfcn = ptEmInfoInd->uEmInfo.tLteEmInfo.tScellPara.tScellInfo.dwEarfcn;

+        ptCellInfoInd->uScellInfo.tLteScellInfo.dwCellId = ptEmInfoInd->uEmInfo.tLteEmInfo.tScellPara.tScellInfo.dwCellId;

+        ptCellInfoInd->uScellInfo.tLteScellInfo.wPci = ptEmInfoInd->uEmInfo.tLteEmInfo.tScellPara.tScellInfo.wPci;

+        ptCellInfoInd->uScellInfo.tLteScellInfo.wTac = ptEmInfoInd->uEmInfo.tLteEmInfo.tScellPara.tNasInfo.wTac;

+        ptCellInfoInd->uScellInfo.tLteScellInfo.tPlmnId = ptEmInfoInd->uEmInfo.tLteEmInfo.tScellPara.tNasInfo.tPlmnId;

+        ptCellInfoInd->uScellInfo.tLteScellInfo.bScellRsrp = ptEmInfoInd->uEmInfo.tLteEmInfo.tMeasInfo.bScellRsrp;

+        ptCellInfoInd->uScellInfo.tLteScellInfo.bScellRsrq = ptEmInfoInd->uEmInfo.tLteEmInfo.tMeasInfo.bScellRsrq;

+        ptCellInfoInd->uScellInfo.tLteScellInfo.bSinrInt = ptEmInfoInd->uEmInfo.tLteEmInfo.tScellPara.tNasInfo.bSinrInt;

+        ptCellInfoInd->uScellInfo.tLteScellInfo.bSinrDec = ptEmInfoInd->uEmInfo.tLteEmInfo.tScellPara.tNasInfo.bSinrDec;

+        ptCellInfoInd->uScellInfo.tLteScellInfo.bRssiInt = ptEmInfoInd->uEmInfo.tLteEmInfo.tScellPara.tNasInfo.bRssiInt;

+    }

+    else if(ptEmInfoInd->bRatType == Z_W_ACT)

+    {

+        ptCellInfoInd->uScellInfo.tWScellInfo.bStateInd = ptEmInfoInd->uEmInfo.tWEmInfo.bStateInd;

+        ptCellInfoInd->uScellInfo.tWScellInfo.dwCellId = ptEmInfoInd->uEmInfo.tWEmInfo.tCampPara.dwCellId;

+        ptCellInfoInd->uScellInfo.tWScellInfo.tPlmn = ptEmInfoInd->uEmInfo.tWEmInfo.tCampPara.tNasInfo.tPlmn;

+        ptCellInfoInd->uScellInfo.tWScellInfo.wLac = ptEmInfoInd->uEmInfo.tWEmInfo.tCampPara.tNasInfo.wLac;

+

+        if(ptEmInfoInd->uEmInfo.tWEmInfo.bStateInd == 0)

+        {

+            ptDchInfo = &ptEmInfoInd->uEmInfo.tWEmInfo.uWcellMeasInfo.tDchInfo;

+

+            ptCellInfoInd->uScellInfo.tWScellInfo.bRscp = ptDchInfo->tFreqAsVasInfo.tUsedFreqAsInfo.atAsVasCell[0].bRscp;

+            ptCellInfoInd->uScellInfo.tWScellInfo.wPsc = ptDchInfo->tFreqAsVasInfo.tUsedFreqAsInfo.atAsVasCell[0].wPsc;

+            ptCellInfoInd->uScellInfo.tWScellInfo.bEcNo = ptDchInfo->tFreqAsVasInfo.tUsedFreqAsInfo.atAsVasCell[0].bEcNo;

+        }

+        else

+        {

+            ptNotDchInfo = &ptEmInfoInd->uEmInfo.tWEmInfo.uWcellMeasInfo.tNotDchInfo;

+

+            ptCellInfoInd->uScellInfo.tWScellInfo.bRscp = ptNotDchInfo->tFddSCellReselInfo.tScellInfo.bRscp;

+            ptCellInfoInd->uScellInfo.tWScellInfo.wPsc = ptNotDchInfo->tFddSCellReselInfo.tScellInfo.wPsc;

+            ptCellInfoInd->uScellInfo.tWScellInfo.bEcNo = ptNotDchInfo->tFddSCellReselInfo.tScellInfo.bEcNo;

+        }

+    }

+    else if(ptEmInfoInd->bRatType == Z_GSM_ACT)

+    {

+        ptCellInfoInd->uScellInfo.tGsmScellInfo.dwCellId = ptEmInfoInd->uEmInfo.tGsmEmInfo.tScellPara.tScellInfo.dwCellId;

+        ptCellInfoInd->uScellInfo.tGsmScellInfo.wLac = ptEmInfoInd->uEmInfo.tGsmEmInfo.tScellPara.tNasInfo.wLac;

+        ptCellInfoInd->uScellInfo.tGsmScellInfo.tPlmn = ptEmInfoInd->uEmInfo.tGsmEmInfo.tScellPara.tNasInfo.tPlmn;

+        ptCellInfoInd->uScellInfo.tGsmScellInfo.bRssi = ptEmInfoInd->uEmInfo.tGsmEmInfo.tMeasInfo.bRssi;

+        ptCellInfoInd->uScellInfo.tGsmScellInfo.bBer = ptEmInfoInd->uEmInfo.tGsmEmInfo.tScellInfo.bBER;

+

+        if(ptCellInfoInd->uScellInfo.tGsmScellInfo.bBer == 255)

+        {

+            ptCellInfoInd->uScellInfo.tGsmScellInfo.bBer = 99;//¸úCSQÎÞЧֵ±£³ÖÒ»ÖÂ

+        }

+    }

+}

+

 VOID zAti_ZulrtindTimerExpir(VOID)

 {

     DWORD dwAckCnt = 0;

diff --git a/Uboot/cp/ps/plat/inc/oss/oss_sup.h b/Uboot/cp/ps/plat/inc/oss/oss_sup.h
index 686c318..313ccd4 100755
--- a/Uboot/cp/ps/plat/inc/oss/oss_sup.h
+++ b/Uboot/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/Uboot/cp/ps/plat/src/oss/sup/src/sup_except.c b/Uboot/cp/ps/plat/src/oss/sup/src/sup_except.c
index fd355b2..8c87a48 100755
--- a/Uboot/cp/ps/plat/src/oss/sup/src/sup_except.c
+++ b/Uboot/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;

 }

diff --git a/Uboot/pub/include/infra/pub_debug_info.h b/Uboot/pub/include/infra/pub_debug_info.h
index 10357aa..95a480f 100755
--- a/Uboot/pub/include/infra/pub_debug_info.h
+++ b/Uboot/pub/include/infra/pub_debug_info.h
@@ -6,62 +6,43 @@
 #define DEBUG_INFO_DEV_PATH "/dev/debug_info"
 
 /* AP²àºÍCAP²àµÄPS\KERNEL\DRIVER\FS\APP  ÒÔSTART~ENDÎªÇø¼ä£¬¸÷²¿·ÖÔ¤ÁôÁË100¸öID */
-#define MODULE_ID_PS_START			(1)
-#define MODULE_ID_PS_NAS			(1)
-#define MODULE_ID_PS_RRC			(2)
-#define MODULE_ID_PS_L2				(3)
-#define MODULE_ID_PS_UICC			(99)
-#define MODULE_ID_PS_END			(100)
 
-#define MODULE_ID_AP_KERNEL_START	(101)
-#define MODULE_ID_AP_KERNEL_END		(200)
+#define MODULE_ID_PS_NAS             ("ps_nas")
+#define MODULE_ID_PS_RRC             ("ps_rrc")
+#define MODULE_ID_PS_L2              ("ps_l2")
+#define MODULE_ID_PS_UICC            ("ps_uicc")
+#define MODULE_ID_AP_USB		     ("ap_usb")
+#define MODULE_ID_AP_REBOOT	         ("ap_reboot")
+#define MODULE_ID_AP_TSC		     ("ap_tsc")
+#define MODULE_ID_AP_PSM		     ("ap_psm")
+#define MODULE_ID_AP_NAND			 ("ap_nand")
+#define MODULE_ID_AP_MMC			 ("ap_mmc")
+#define MODULE_ID_AP_WIFI			 ("ap_wifi")
 
-#define MODULE_ID_CAP_KERNEL_START	(201)
-#define MODULE_ID_CAP_KERNEL_END	(300)
 
-#define MODULE_ID_AP_DRIVES_START	(301)
-#define MODULE_ID_AP_USB			(301)
-#define MODULE_ID_AP_REBOOT			(302)
-#define MODULE_ID_AP_TSC			(303)
-#define MODULE_ID_AP_PSM			(304)
-#define MODULE_ID_AP_NAND			(305)
-#define MODULE_ID_AP_MMC			(306)
-#define MODULE_ID_AP_WIFI			(307)
-#define MODULE_ID_AP_DRIVES_END		(400)
+#define MODULE_ID_CAP_USB			 ("cap_usb")
+#define MODULE_ID_CAP_TSC			 ("cap_tsc")
+#define MODULE_ID_CAP_PSM			 ("cap_psm")
+#define MODULE_ID_CAP_NAND			 ("cap_nand")
+#define MODULE_ID_CAP_SPI			 ("cap_spi")
+#define MODULE_ID_CAP_MMC			 ("cap_mmc")
+#define MODULE_ID_CAP_UART			 ("cap_uart")
+#define MODULE_ID_CAP_PM			 ("cap_pm")
 
-#define MODULE_ID_CAP_DRIVES_START	(401)
-#define MODULE_ID_CAP_USB			(401)
-#define MODULE_ID_CAP_TSC			(402)
-#define MODULE_ID_CAP_PSM			(403)
-#define MODULE_ID_CAP_NAND			(404)
-#define MODULE_ID_CAP_SPI			(405)
-#define MODULE_ID_CAP_MMC			(406)
-#define MODULE_ID_CAP_UART			(407)
-#define MODULE_ID_CAP_DRIVES_END	(500)
 
-#define MODULE_ID_AP_FS_START		(501)
-#define MODULE_ID_AP_JFFS2			(501)
-#define MODULE_ID_AP_FS_END			(600)
+#define MODULE_ID_AP_JFFS2           ("ap_jffs2")
+#define MODULE_ID_AP_FOTA            ("ap_fota")
+#define MODULE_ID_AP_FS_CHECK        ("ap_fs_check")
 
-#define MODULE_ID_CAP_FS_START		(601)
-#define MODULE_ID_CAP_FS_END		(700)
-
-#define MODULE_ID_AP_APP_START		(701)
-#define MODULE_ID_AP_FOTA			(701)
-#define MODULE_ID_AP_FS_CHECK		(702)
-#define MODULE_ID_AP_APP_END		(800)
-
-#define MODULE_ID_CAP_APP_START		(801)
-#define MODULE_ID_CAP_FOTA			(801)
-#define MODULE_ID_CAP_FS_CHECK		(802)
-#define MODULE_ID_CAP_APP_END		(900)
-
-#if defined(_USE_ZXIC_DEBUG_INFO) && !defined(CONFIG_SYSTEM_RECOVERY)
-int sc_debug_info_vrecord(unsigned int id, const char *format, va_list args);
-int sc_debug_info_record(unsigned int id, const char *format, ...);
+#define MODULE_ID_CAP_FOTA			 ("cap_fota")
+#define MODULE_ID_CAP_FS_CHECK		 ("cap_fs_check")
+ 
+#if defined(_USE_ZXIC_DEBUG_INFO)
+int sc_debug_info_vrecord(char *id, const char *format, va_list args);
+int sc_debug_info_record(char *id, const char *format, ...);
 #else
-static inline int sc_debug_info_vrecord(unsigned int id, const char *format, va_list args) { return 0; }
-static inline int sc_debug_info_record(unsigned int id, const char *format, ...) { return 0; }
+static inline int sc_debug_info_vrecord(char *id, const char *format, va_list args) { return 0; }
+static inline int sc_debug_info_record(char *id, const char *format, ...) { return 0; }
 #endif
 
 #endif
\ No newline at end of file
diff --git a/Uboot/pub/include/ps_phy/atipsevent.h b/Uboot/pub/include/ps_phy/atipsevent.h
index 2bd5386..92e71e6 100755
--- a/Uboot/pub/include/ps_phy/atipsevent.h
+++ b/Uboot/pub/include/ps_phy/atipsevent.h
@@ -421,6 +421,7 @@
 #define AP_MMIA_ZCOPS_TEST_CNF_EV                (DWORD)(AP_MMIA_MM_RSP_EVENT + 25)

 #define AP_MMIA_TIMEZONE_IND_EV                  (DWORD)(AP_MMIA_MM_RSP_EVENT + 26)

 #define AP_MMIA_ZULRTIND_IND_EV                  (DWORD)(AP_MMIA_MM_RSP_EVENT + 27)

+#define AP_MMIA_ZPSABNORMAL_IND_EV               (DWORD)(AP_MMIA_MM_RSP_EVENT + 28)

 /* ========================================================================

    AP-MMIA CCÏà¹Ø²¿·ÖÏûÏ¢ºÅ

 ======================================================================== */

diff --git a/Uboot/pub/project/zx297520v3/include/drv/NvParam_drv.h b/Uboot/pub/project/zx297520v3/include/drv/NvParam_drv.h
index 66c6f6d..95c3158 100755
--- a/Uboot/pub/project/zx297520v3/include/drv/NvParam_drv.h
+++ b/Uboot/pub/project/zx297520v3/include/drv/NvParam_drv.h
@@ -214,8 +214,10 @@
 	UINT8			isUseTxDtmfDet;     

     UINT8			isUseRxMixData;

 	UINT8			isUseTxMixData;//12

-	UINT8			isUseEcall;

-    UINT8           reserved[19];//32-13

+	UINT8			isUseEcall; //13

+	UINT8 			isUseVoiceBuffer; //14  0 not use,1 use

+	UINT8 			selVoiceBufferType; //15 0 single core, 1 dual core	

+    UINT8           reserved[17];//32-15

 	

 }  T_Audio_NvFlag;

 

diff --git a/Uboot/pub/project/zx297520v3/include/infra/ram_base_config_7520v3.h b/Uboot/pub/project/zx297520v3/include/infra/ram_base_config_7520v3.h
index 6a1626d..edb3bfb 100755
--- a/Uboot/pub/project/zx297520v3/include/infra/ram_base_config_7520v3.h
+++ b/Uboot/pub/project/zx297520v3/include/infra/ram_base_config_7520v3.h
@@ -163,7 +163,7 @@
 #define DDR_BASE_OFF_CAP                (DDR_BASE_OFF_CAP_BUF + DDR_BASE_LEN_CAP_BUF)

 

 /* capºËµÄdtbµØÖ·¹©ubootºËcap kernelʹÓà */

-#define DDR_BASE_CAP_DTB_ADDR           (DDR_BASE_ADDR_CAP_BUF + (0x00100000UL>>CPU_SHIFT))

+#define DDR_BASE_CAP_DTB_ADDR           (DDR_BASE_ADDR_CAP_BUF + (0x00194000UL>>CPU_SHIFT))

 #else

 /* 42.75M£¬AP¹²ºË°æ±¾(´Ë´óСÊǰ´ÕÕº¬CAPºËµÄ64MÄÚ´æÅäÖö¨Ò壬¸Ãºê±ð´¦²»»á±»Ê¹ÓÃ) */

 #define DDR_BASE_ADDR_AP                (DDR_BASE_ADDR_RAMDUMP + DDR_BASE_LEN_RAMDUMP)

@@ -253,6 +253,13 @@
 #define TEE_SHARE_BUF_ADDR              (RAMDUMP_AP_TO_CAP_BUF_ADDR + RAMDUMP_AP_TO_CAP_BUF_LEN)

 #define TEE_SHARE_BUF_LEN               ((384 * 1024UL)>>CPU_SHIFT)

 

+/* psά²â¿Õ¼ä(Êý¾Ý + ¿ØÖÆ)¸´ÓÃAP_TO_CAPµÄramdump´æ´¢¿Õ¼ä */

+#define PS_DEBUG_INFO_LEN_ADDR          (RAMDUMP_AP_TO_CAP_BUF_ADDR + ((4 * 1024UL)>>CPU_SHIFT))

+#define PS_DEBUG_INFO_LEN_SIZE          ((4 * 1024UL)>>CPU_SHIFT)

+

+#define PS_DEBUG_INFO_ADDR              (PS_DEBUG_INFO_LEN_ADDR + PS_DEBUG_INFO_LEN_SIZE)

+#define PS_DEBUG_INFO_SIZE              ((64 * 1024UL)>>CPU_SHIFT)

+

 #define ICP_CAP_BUF_ADDR_PA             DDR_BASE_CAPBUF_ADDR_PA

 #define TOOL_CAP_BUF_ADDR_PA            (ICP_CAP_BUF_ADDR_PA + ICP_CAP_BUF_LEN)

 #define RINGBUF_CAP_TO_AP_ADDR_PA       (TOOL_CAP_BUF_ADDR_PA + TOOL_CAP_BUF_LEN)

@@ -262,6 +269,9 @@
 #define TOOL_ZSP_TO_CAP_LOG_ADDR_PA     (RINGBUF_AP_TO_CAP_ADDR_PA + RINGBUF_AP_TO_CAP_LEN)

 #define RAMDUMP_AP_TO_CAP_BUF_ADDR_PA   (TOOL_ZSP_TO_CAP_LOG_ADDR_PA + TOOL_ZSP_TO_CAP_LOG_LEN)

 #define TEE_SHARE_BUF_ADDR_PA           (RAMDUMP_AP_TO_CAP_BUF_ADDR_PA + RAMDUMP_AP_TO_CAP_BUF_LEN)

+

+#define PS_DEBUG_INFO_LEN_ADDR_PA       (RAMDUMP_AP_TO_CAP_BUF_ADDR_PA + ((4 * 1024UL)>>CPU_SHIFT))

+#define PS_DEBUG_INFO_ADDR_PA           (PS_DEBUG_INFO_LEN_ADDR_PA + PS_DEBUG_INFO_LEN_SIZE)

 #endif

 

 /* 7520V3оƬIRAM0ѹËõ£¬Ð­ÒéÕ»ÎïÀí²ã½»»¥¿Õ¼äÒÆ¶¯µ½DDR£¬¸´ÓÃRamdump¿Õ¼ä */

diff --git a/Uboot/rpm/project/zx297520v3/bin/tos/modem_7520v3/evb_cpurpm.elf b/Uboot/rpm/project/zx297520v3/bin/tos/modem_7520v3/evb_cpurpm.elf
index 25435d8..e955a1c 100755
--- a/Uboot/rpm/project/zx297520v3/bin/tos/modem_7520v3/evb_cpurpm.elf
+++ b/Uboot/rpm/project/zx297520v3/bin/tos/modem_7520v3/evb_cpurpm.elf
Binary files differ
diff --git a/Uboot/rpm/project/zx297520v3/bin/tos/modem_7520v3/evb_cpurpm.img b/Uboot/rpm/project/zx297520v3/bin/tos/modem_7520v3/evb_cpurpm.img
index c177ef6..23e491e 100755
--- a/Uboot/rpm/project/zx297520v3/bin/tos/modem_7520v3/evb_cpurpm.img
+++ b/Uboot/rpm/project/zx297520v3/bin/tos/modem_7520v3/evb_cpurpm.img
Binary files differ
diff --git a/Uboot/rpm/project/zx297520v3/bin/tos/modem_7520v3/evb_cpurpm.map b/Uboot/rpm/project/zx297520v3/bin/tos/modem_7520v3/evb_cpurpm.map
index 0bc39a0..191ab18 100755
--- a/Uboot/rpm/project/zx297520v3/bin/tos/modem_7520v3/evb_cpurpm.map
+++ b/Uboot/rpm/project/zx297520v3/bin/tos/modem_7520v3/evb_cpurpm.map
@@ -246,9 +246,9 @@
                 0x00000000       0xb8 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_spinlock.o)
  .text.zDrvSysSpinlock_SoftUnlock
                 0x00000000       0x80 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_spinlock.o)
- .rodata.__FUNCTION__.5142
+ .rodata.__FUNCTION__.5154
                 0x00000000       0x1c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_spinlock.o)
- .bss.lock_count.5134
+ .bss.lock_count.5146
                 0x00000000        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_spinlock.o)
  .text          0x00000000        0x0 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sys.o)
  .data          0x00000000        0x0 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sys.o)
@@ -429,22 +429,22 @@
                 0x00000000      0x168 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_i2c.o)
  .text.zDrvI2c_DevWrite_ByteStream
                 0x00000000      0x140 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_i2c.o)
- .rodata.__FUNCTION__.5357
+ .rodata.__FUNCTION__.5362
                 0x00000000       0x1c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_i2c.o)
- .rodata.__FUNCTION__.5298
+ .rodata.__FUNCTION__.5303
                 0x00000000       0x14 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_i2c.o)
- .rodata.__FUNCTION__.5376
+ .rodata.__FUNCTION__.5381
                 0x00000000       0x1c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_i2c.o)
- .rodata.__FUNCTION__.5318
+ .rodata.__FUNCTION__.5323
                 0x00000000       0x14 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_i2c.o)
- .rodata.__FUNCTION__.5278
+ .rodata.__FUNCTION__.5283
                 0x00000000       0x10 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_i2c.o)
  .text          0x00000000        0x0 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
  .data          0x00000000        0x0 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
  .bss           0x00000000        0x0 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
  .text.wdt_set_switch
-                0x00000000       0x4c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
- .rodata.__FUNCTION__.5281
+                0x00000000       0x50 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
+ .rodata.__FUNCTION__.5324
                 0x00000000       0x10 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
  .text          0x00000000        0x0 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sysclk.o)
  .data          0x00000000        0x0 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sysclk.o)
@@ -453,10 +453,10 @@
                 0x00000000       0x48 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sysclk.o)
  .text.zDrvSysClk_IsAutoGate
                 0x00000000       0x48 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sysclk.o)
- .rodata.__FUNCTION__.5162
-                0x00000000       0x14 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sysclk.o)
- .rodata.__FUNCTION__.5167
+ .rodata.__FUNCTION__.5172
                 0x00000000       0x18 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sysclk.o)
+ .rodata.__FUNCTION__.5167
+                0x00000000       0x14 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sysclk.o)
  .text          0x00000000        0x0 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_clkinfo.o)
  .data          0x00000000        0x0 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_clkinfo.o)
  .bss           0x00000000        0x0 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_clkinfo.o)
@@ -1449,7 +1449,7 @@
                 0x000001f0                hal_virtual_vector_table_end = (hal_virtual_vector_table + 0x100)
                 0x0000c000                hal_startup_stack = 0xc000
 
-.debug_aranges  0x00000000     0x1530
+.debug_aranges  0x00000000     0x1540
  *(.debug_aranges)
  .debug_aranges
                 0x00000000       0x20 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/vectors.o
@@ -1462,274 +1462,274 @@
  .debug_aranges
                 0x000000f8       0x20 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_init.o)
  .debug_aranges
-                0x00000118       0x68 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_spinlock.o)
+                0x00000118       0x70 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_spinlock.o)
  .debug_aranges
-                0x00000180       0x28 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sys.o)
+                0x00000188       0x28 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sys.o)
  .debug_aranges
-                0x000001a8       0xa0 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
+                0x000001b0       0xa0 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
  .debug_aranges
-                0x00000248       0x20 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_gpio.o)
+                0x00000250       0x28 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_gpio.o)
  .debug_aranges
-                0x00000268       0xa8 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_int.o)
+                0x00000278       0xa8 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_int.o)
  .debug_aranges
-                0x00000310       0x78 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_timer.o)
+                0x00000320       0x78 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_timer.o)
  .debug_aranges
-                0x00000388       0x60 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_dma.o)
+                0x00000398       0x60 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_dma.o)
  .debug_aranges
-                0x000003e8       0x70 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
+                0x000003f8       0x70 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
  .debug_aranges
-                0x00000458      0x150 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_ddr_syno_inno.o)
+                0x00000468      0x150 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_ddr_syno_inno.o)
  .debug_aranges
-                0x000005a8       0x40 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_debug.o)
+                0x000005b8       0x40 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_debug.o)
  .debug_aranges
-                0x000005e8       0xa8 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
+                0x000005f8       0xa8 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
  .debug_aranges
-                0x00000690       0x78 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_i2c.o)
+                0x000006a0       0x78 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_i2c.o)
  .debug_aranges
-                0x00000708       0xa8 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
+                0x00000718       0xa8 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
  .debug_aranges
-                0x000007b0       0x98 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sysclk.o)
+                0x000007c0       0x98 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sysclk.o)
  .debug_aranges
-                0x00000848       0x18 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_clkinfo.o)
+                0x00000858       0x18 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_clkinfo.o)
  .debug_aranges
-                0x00000860       0x18 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(int_cfg.o)
+                0x00000870       0x18 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(int_cfg.o)
  .debug_aranges
-                0x00000878       0x38 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_clk.o)
+                0x00000888       0x38 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_clk.o)
  .debug_aranges
-                0x000008b0       0xa8 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/peripheral.a(hal_pm.o)
+                0x000008c0       0xa8 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/peripheral.a(hal_pm.o)
  .debug_aranges
-                0x00000958       0x60 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/peripheral.a(hal_pmic_i2c.o)
+                0x00000968       0x60 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/peripheral.a(hal_pmic_i2c.o)
  .debug_aranges
-                0x000009b8       0x28 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/public.a(hal_assert.o)
+                0x000009c8       0x28 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/public.a(hal_assert.o)
  .debug_aranges
-                0x000009e0       0x40 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_osa_tos.a(tos_except_cortexm.o)
+                0x000009f0       0x40 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_osa_tos.a(tos_except_cortexm.o)
  .debug_aranges
-                0x00000a20       0xb8 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_osa_tos.a(tos_irq.o)
+                0x00000a30       0xb8 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_osa_tos.a(tos_irq.o)
  .debug_aranges
-                0x00000ad8       0x28 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_sup.a(sup_agent_logctrl.o)
+                0x00000ae8       0x28 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_sup.a(sup_agent_logctrl.o)
  .debug_aranges
-                0x00000b00       0x48 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_sup.a(sup_ramdump_client_lib.o)
+                0x00000b10       0x48 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_sup.a(sup_ramdump_client_lib.o)
  .debug_aranges
-                0x00000b48       0xb0 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_arch_hal_misc.o)
+                0x00000b58       0xb0 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_arch_hal_misc.o)
  .debug_aranges
-                0x00000bf8       0x48 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_tos_var_tos_misc.o)
+                0x00000c08       0x48 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_tos_var_tos_misc.o)
  .debug_aranges
-                0x00000c40       0x28 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_tos_tos_m0_tos_m0_misc.o)
+                0x00000c50       0x28 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_tos_tos_m0_tos_m0_misc.o)
  .debug_aranges
-                0x00000c68       0x30 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_common_hal_misc.o)
+                0x00000c78       0x30 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_common_hal_misc.o)
  .debug_aranges
-                0x00000c98       0x20 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(infra_startup.o)
+                0x00000ca8       0x20 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(infra_startup.o)
  .debug_aranges
-                0x00000cb8       0x38 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(infra_buffer.o)
+                0x00000cc8       0x38 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(infra_buffer.o)
  .debug_aranges
-                0x00000cf0      0x3c8 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_kapi.o)
+                0x00000d00      0x3c8 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_kapi.o)
  .debug_aranges
-                0x000010b8       0xe0 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_thread.o)
+                0x000010c8       0xe0 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_thread.o)
  .debug_aranges
-                0x00001198       0xd0 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_intr.o)
+                0x000011a8       0xd0 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_intr.o)
  .debug_aranges
-                0x00001268       0x90 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_bitmap.o)
+                0x00001278       0x90 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_bitmap.o)
  .debug_aranges
-                0x000012f8       0x58 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_sched.o)
+                0x00001308       0x58 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_sched.o)
  .debug_aranges
-                0x00001350       0x48 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_cnt_sem.o)
+                0x00001360       0x48 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_cnt_sem.o)
  .debug_aranges
-                0x00001398       0x98 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_mutex.o)
+                0x000013a8       0x98 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_mutex.o)
  .debug_aranges
-                0x00001430       0x20 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_arch_context.o)
+                0x00001440       0x20 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_arch_context.o)
  .debug_aranges
-                0x00001450       0xe0 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_clock.o)
+                0x00001460       0xe0 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_clock.o)
 
 .debug_pubnames
  *(.debug_pubnames)
 
-.debug_info     0x00000000    0x3172f
+.debug_info     0x00000000    0x31a2c
  *(.debug_info)
  .debug_info    0x00000000       0xbf K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/vectors.o
  .debug_info    0x000000bf      0x112 K:/rpm/project/zx297520v3/obj/tos/all/debug/appstart/SysEntry.o
  .debug_info    0x000001d1       0xbe K:/rpm/project/zx297520v3/obj/tos/all/debug/appstart/appstart.o
  .debug_info    0x0000028f      0x34f K:/rpm/project/zx297520v3/obj/tos/all/debug/os/tos/tos_irq.o
  .debug_info    0x000005de      0x23e K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_init.o)
- .debug_info    0x0000081c      0x934 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_spinlock.o)
- .debug_info    0x00001150      0x3a4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sys.o)
- .debug_info    0x000014f4     0x1bd4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
- .debug_info    0x000030c8      0x367 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_gpio.o)
- .debug_info    0x0000342f      0xe82 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_int.o)
- .debug_info    0x000042b1      0xf82 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_timer.o)
- .debug_info    0x00005233      0xf47 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_dma.o)
- .debug_info    0x0000617a     0x1cf6 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
- .debug_info    0x00007e70      0xb40 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_ddr_syno_inno.o)
- .debug_info    0x000089b0      0x8a8 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_debug.o)
- .debug_info    0x00009258     0x2343 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
- .debug_info    0x0000b59b     0x2286 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_i2c.o)
- .debug_info    0x0000d821     0x1825 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
- .debug_info    0x0000f046     0x1073 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sysclk.o)
- .debug_info    0x000100b9      0x486 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_clkinfo.o)
- .debug_info    0x0001053f       0xeb K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(int_cfg.o)
- .debug_info    0x0001062a      0xe0d K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_clk.o)
- .debug_info    0x00011437      0xf45 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/peripheral.a(hal_pm.o)
- .debug_info    0x0001237c      0x89f K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/peripheral.a(hal_pmic_i2c.o)
- .debug_info    0x00012c1b      0x34e K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/public.a(hal_assert.o)
- .debug_info    0x00012f69      0x368 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_osa_tos.a(tos_except_cortexm.o)
- .debug_info    0x000132d1      0xbba K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_osa_tos.a(tos_irq.o)
- .debug_info    0x00013e8b      0x4f4 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_sup.a(sup_agent_logctrl.o)
- .debug_info    0x0001437f      0xa45 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_sup.a(sup_ramdump_client_lib.o)
- .debug_info    0x00014dc4      0xc60 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_arch_hal_misc.o)
- .debug_info    0x00015a24      0x254 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_tos_var_tos_misc.o)
- .debug_info    0x00015c78      0x1b5 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_tos_tos_m0_tos_m0_misc.o)
- .debug_info    0x00015e2d      0x217 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_common_hal_misc.o)
- .debug_info    0x00016044       0xd7 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(infra_startup.o)
- .debug_info    0x0001611b     0x175d K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(infra_buffer.o)
- .debug_info    0x00017878     0x67a7 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_kapi.o)
- .debug_info    0x0001e01f     0x445c K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_thread.o)
- .debug_info    0x0002247b     0x2a7c K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_intr.o)
- .debug_info    0x00024ef7     0x1fa9 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_bitmap.o)
- .debug_info    0x00026ea0     0x25c5 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_sched.o)
- .debug_info    0x00029465     0x2232 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_cnt_sem.o)
- .debug_info    0x0002b697     0x387d K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_mutex.o)
- .debug_info    0x0002ef14       0xbf K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_arch_context.o)
- .debug_info    0x0002efd3     0x275c K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_clock.o)
+ .debug_info    0x0000081c      0xa3c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_spinlock.o)
+ .debug_info    0x00001258      0x3a4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sys.o)
+ .debug_info    0x000015fc     0x1bd4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
+ .debug_info    0x000031d0      0x3eb K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_gpio.o)
+ .debug_info    0x000035bb      0xe82 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_int.o)
+ .debug_info    0x0000443d      0xf82 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_timer.o)
+ .debug_info    0x000053bf      0xf4e K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_dma.o)
+ .debug_info    0x0000630d     0x1cf6 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
+ .debug_info    0x00008003      0xb40 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_ddr_syno_inno.o)
+ .debug_info    0x00008b43      0x8a8 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_debug.o)
+ .debug_info    0x000093eb     0x2343 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
+ .debug_info    0x0000b72e     0x228c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_i2c.o)
+ .debug_info    0x0000d9ba     0x1989 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
+ .debug_info    0x0000f343     0x1073 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sysclk.o)
+ .debug_info    0x000103b6      0x486 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_clkinfo.o)
+ .debug_info    0x0001083c       0xeb K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(int_cfg.o)
+ .debug_info    0x00010927      0xe0d K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_clk.o)
+ .debug_info    0x00011734      0xf45 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/peripheral.a(hal_pm.o)
+ .debug_info    0x00012679      0x89f K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/peripheral.a(hal_pmic_i2c.o)
+ .debug_info    0x00012f18      0x34e K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/public.a(hal_assert.o)
+ .debug_info    0x00013266      0x368 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_osa_tos.a(tos_except_cortexm.o)
+ .debug_info    0x000135ce      0xbba K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_osa_tos.a(tos_irq.o)
+ .debug_info    0x00014188      0x4f4 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_sup.a(sup_agent_logctrl.o)
+ .debug_info    0x0001467c      0xa45 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_sup.a(sup_ramdump_client_lib.o)
+ .debug_info    0x000150c1      0xc60 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_arch_hal_misc.o)
+ .debug_info    0x00015d21      0x254 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_tos_var_tos_misc.o)
+ .debug_info    0x00015f75      0x1b5 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_tos_tos_m0_tos_m0_misc.o)
+ .debug_info    0x0001612a      0x217 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_common_hal_misc.o)
+ .debug_info    0x00016341       0xd7 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(infra_startup.o)
+ .debug_info    0x00016418     0x175d K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(infra_buffer.o)
+ .debug_info    0x00017b75     0x67a7 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_kapi.o)
+ .debug_info    0x0001e31c     0x445c K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_thread.o)
+ .debug_info    0x00022778     0x2a7c K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_intr.o)
+ .debug_info    0x000251f4     0x1fa9 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_bitmap.o)
+ .debug_info    0x0002719d     0x25c5 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_sched.o)
+ .debug_info    0x00029762     0x2232 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_cnt_sem.o)
+ .debug_info    0x0002b994     0x387d K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_mutex.o)
+ .debug_info    0x0002f211       0xbf K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_arch_context.o)
+ .debug_info    0x0002f2d0     0x275c K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_clock.o)
 
-.debug_abbrev   0x00000000     0x80f5
+.debug_abbrev   0x00000000     0x8138
  *(.debug_abbrev)
  .debug_abbrev  0x00000000       0x14 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/vectors.o
  .debug_abbrev  0x00000014       0xab K:/rpm/project/zx297520v3/obj/tos/all/debug/appstart/SysEntry.o
  .debug_abbrev  0x000000bf       0x87 K:/rpm/project/zx297520v3/obj/tos/all/debug/appstart/appstart.o
  .debug_abbrev  0x00000146      0x187 K:/rpm/project/zx297520v3/obj/tos/all/debug/os/tos/tos_irq.o
  .debug_abbrev  0x000002cd       0xdd K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_init.o)
- .debug_abbrev  0x000003aa      0x278 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_spinlock.o)
- .debug_abbrev  0x00000622      0x109 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sys.o)
- .debug_abbrev  0x0000072b      0x3c2 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
- .debug_abbrev  0x00000aed       0xd0 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_gpio.o)
- .debug_abbrev  0x00000bbd      0x378 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_int.o)
- .debug_abbrev  0x00000f35      0x30c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_timer.o)
- .debug_abbrev  0x00001241      0x29b K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_dma.o)
- .debug_abbrev  0x000014dc      0x407 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
- .debug_abbrev  0x000018e3      0x2f0 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_ddr_syno_inno.o)
- .debug_abbrev  0x00001bd3      0x21c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_debug.o)
- .debug_abbrev  0x00001def      0x2fb K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
- .debug_abbrev  0x000020ea      0x33b K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_i2c.o)
- .debug_abbrev  0x00002425      0x304 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
- .debug_abbrev  0x00002729      0x216 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sysclk.o)
- .debug_abbrev  0x0000293f       0xc6 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_clkinfo.o)
- .debug_abbrev  0x00002a05       0x72 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(int_cfg.o)
- .debug_abbrev  0x00002a77      0x24c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_clk.o)
- .debug_abbrev  0x00002cc3      0x2b6 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/peripheral.a(hal_pm.o)
- .debug_abbrev  0x00002f79      0x1f3 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/peripheral.a(hal_pmic_i2c.o)
- .debug_abbrev  0x0000316c      0x148 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/public.a(hal_assert.o)
- .debug_abbrev  0x000032b4      0x1be K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_osa_tos.a(tos_except_cortexm.o)
- .debug_abbrev  0x00003472      0x26f K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_osa_tos.a(tos_irq.o)
- .debug_abbrev  0x000036e1      0x197 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_sup.a(sup_agent_logctrl.o)
- .debug_abbrev  0x00003878      0x314 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_sup.a(sup_ramdump_client_lib.o)
- .debug_abbrev  0x00003b8c      0x31c K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_arch_hal_misc.o)
- .debug_abbrev  0x00003ea8      0x14d K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_tos_var_tos_misc.o)
- .debug_abbrev  0x00003ff5      0x104 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_tos_tos_m0_tos_m0_misc.o)
- .debug_abbrev  0x000040f9      0x167 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_common_hal_misc.o)
- .debug_abbrev  0x00004260       0x9d K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(infra_startup.o)
- .debug_abbrev  0x000042fd      0x3d2 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(infra_buffer.o)
- .debug_abbrev  0x000046cf      0x985 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_kapi.o)
- .debug_abbrev  0x00005054      0x84e K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_thread.o)
- .debug_abbrev  0x000058a2      0x7cb K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_intr.o)
- .debug_abbrev  0x0000606d      0x5ba K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_bitmap.o)
- .debug_abbrev  0x00006627      0x735 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_sched.o)
- .debug_abbrev  0x00006d5c      0x5b6 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_cnt_sem.o)
- .debug_abbrev  0x00007312      0x62c K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_mutex.o)
- .debug_abbrev  0x0000793e       0x14 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_arch_context.o)
- .debug_abbrev  0x00007952      0x7a3 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_clock.o)
+ .debug_abbrev  0x000003aa      0x283 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_spinlock.o)
+ .debug_abbrev  0x0000062d      0x109 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sys.o)
+ .debug_abbrev  0x00000736      0x3c2 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
+ .debug_abbrev  0x00000af8      0x108 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_gpio.o)
+ .debug_abbrev  0x00000c00      0x378 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_int.o)
+ .debug_abbrev  0x00000f78      0x30c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_timer.o)
+ .debug_abbrev  0x00001284      0x29b K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_dma.o)
+ .debug_abbrev  0x0000151f      0x407 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
+ .debug_abbrev  0x00001926      0x2f0 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_ddr_syno_inno.o)
+ .debug_abbrev  0x00001c16      0x21c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_debug.o)
+ .debug_abbrev  0x00001e32      0x2fb K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
+ .debug_abbrev  0x0000212d      0x33b K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_i2c.o)
+ .debug_abbrev  0x00002468      0x304 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
+ .debug_abbrev  0x0000276c      0x216 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sysclk.o)
+ .debug_abbrev  0x00002982       0xc6 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_clkinfo.o)
+ .debug_abbrev  0x00002a48       0x72 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(int_cfg.o)
+ .debug_abbrev  0x00002aba      0x24c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_clk.o)
+ .debug_abbrev  0x00002d06      0x2b6 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/peripheral.a(hal_pm.o)
+ .debug_abbrev  0x00002fbc      0x1f3 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/peripheral.a(hal_pmic_i2c.o)
+ .debug_abbrev  0x000031af      0x148 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/public.a(hal_assert.o)
+ .debug_abbrev  0x000032f7      0x1be K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_osa_tos.a(tos_except_cortexm.o)
+ .debug_abbrev  0x000034b5      0x26f K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_osa_tos.a(tos_irq.o)
+ .debug_abbrev  0x00003724      0x197 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_sup.a(sup_agent_logctrl.o)
+ .debug_abbrev  0x000038bb      0x314 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_sup.a(sup_ramdump_client_lib.o)
+ .debug_abbrev  0x00003bcf      0x31c K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_arch_hal_misc.o)
+ .debug_abbrev  0x00003eeb      0x14d K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_tos_var_tos_misc.o)
+ .debug_abbrev  0x00004038      0x104 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_tos_tos_m0_tos_m0_misc.o)
+ .debug_abbrev  0x0000413c      0x167 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_common_hal_misc.o)
+ .debug_abbrev  0x000042a3       0x9d K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(infra_startup.o)
+ .debug_abbrev  0x00004340      0x3d2 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(infra_buffer.o)
+ .debug_abbrev  0x00004712      0x985 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_kapi.o)
+ .debug_abbrev  0x00005097      0x84e K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_thread.o)
+ .debug_abbrev  0x000058e5      0x7cb K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_intr.o)
+ .debug_abbrev  0x000060b0      0x5ba K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_bitmap.o)
+ .debug_abbrev  0x0000666a      0x735 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_sched.o)
+ .debug_abbrev  0x00006d9f      0x5b6 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_cnt_sem.o)
+ .debug_abbrev  0x00007355      0x62c K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_mutex.o)
+ .debug_abbrev  0x00007981       0x14 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_arch_context.o)
+ .debug_abbrev  0x00007995      0x7a3 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_clock.o)
 
-.debug_line     0x00000000     0x94e0
+.debug_line     0x00000000     0x957c
  *(.debug_line)
  .debug_line    0x00000000       0xf0 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/vectors.o
  .debug_line    0x000000f0       0x8e K:/rpm/project/zx297520v3/obj/tos/all/debug/appstart/SysEntry.o
  .debug_line    0x0000017e       0xb0 K:/rpm/project/zx297520v3/obj/tos/all/debug/appstart/appstart.o
  .debug_line    0x0000022e      0x178 K:/rpm/project/zx297520v3/obj/tos/all/debug/os/tos/tos_irq.o
  .debug_line    0x000003a6       0xa4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_init.o)
- .debug_line    0x0000044a      0x24f K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_spinlock.o)
- .debug_line    0x00000699       0xd8 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sys.o)
- .debug_line    0x00000771      0x493 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
- .debug_line    0x00000c04       0xac K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_gpio.o)
- .debug_line    0x00000cb0      0x345 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_int.o)
- .debug_line    0x00000ff5      0x2b3 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_timer.o)
- .debug_line    0x000012a8      0x288 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_dma.o)
- .debug_line    0x00001530      0x3c4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
- .debug_line    0x000018f4      0x568 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_ddr_syno_inno.o)
- .debug_line    0x00001e5c      0x147 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_debug.o)
- .debug_line    0x00001fa3      0x5ea K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
- .debug_line    0x0000258d      0x52c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_i2c.o)
- .debug_line    0x00002ab9      0x3b2 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
- .debug_line    0x00002e6b      0x2ff K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sysclk.o)
- .debug_line    0x0000316a       0x96 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_clkinfo.o)
- .debug_line    0x00003200       0x82 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(int_cfg.o)
- .debug_line    0x00003282      0x19b K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_clk.o)
- .debug_line    0x0000341d      0x319 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/peripheral.a(hal_pm.o)
- .debug_line    0x00003736      0x192 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/peripheral.a(hal_pmic_i2c.o)
- .debug_line    0x000038c8       0xda K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/public.a(hal_assert.o)
- .debug_line    0x000039a2      0x1d3 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_osa_tos.a(tos_except_cortexm.o)
- .debug_line    0x00003b75      0x32f K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_osa_tos.a(tos_irq.o)
- .debug_line    0x00003ea4      0x110 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_sup.a(sup_agent_logctrl.o)
- .debug_line    0x00003fb4      0x317 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_sup.a(sup_ramdump_client_lib.o)
- .debug_line    0x000042cb      0x486 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_arch_hal_misc.o)
- .debug_line    0x00004751      0x18c K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_tos_var_tos_misc.o)
- .debug_line    0x000048dd      0x16c K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_tos_tos_m0_tos_m0_misc.o)
- .debug_line    0x00004a49      0x156 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_common_hal_misc.o)
- .debug_line    0x00004b9f      0x126 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(infra_startup.o)
- .debug_line    0x00004cc5      0x1d2 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(infra_buffer.o)
- .debug_line    0x00004e97     0x1292 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_kapi.o)
- .debug_line    0x00006129      0xddd K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_thread.o)
- .debug_line    0x00006f06      0x593 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_intr.o)
- .debug_line    0x00007499      0x3eb K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_bitmap.o)
- .debug_line    0x00007884      0x526 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_sched.o)
- .debug_line    0x00007daa      0x4b7 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_cnt_sem.o)
- .debug_line    0x00008261      0xabe K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_mutex.o)
- .debug_line    0x00008d1f       0xb9 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_arch_context.o)
- .debug_line    0x00008dd8      0x708 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_clock.o)
+ .debug_line    0x0000044a      0x29f K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_spinlock.o)
+ .debug_line    0x000006e9       0xd8 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sys.o)
+ .debug_line    0x000007c1      0x493 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
+ .debug_line    0x00000c54       0xe2 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_gpio.o)
+ .debug_line    0x00000d36      0x345 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_int.o)
+ .debug_line    0x0000107b      0x2b3 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_timer.o)
+ .debug_line    0x0000132e      0x288 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_dma.o)
+ .debug_line    0x000015b6      0x3c4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
+ .debug_line    0x0000197a      0x568 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_ddr_syno_inno.o)
+ .debug_line    0x00001ee2      0x147 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_debug.o)
+ .debug_line    0x00002029      0x5ea K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
+ .debug_line    0x00002613      0x52c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_i2c.o)
+ .debug_line    0x00002b3f      0x3c8 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
+ .debug_line    0x00002f07      0x2ff K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sysclk.o)
+ .debug_line    0x00003206       0x96 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_clkinfo.o)
+ .debug_line    0x0000329c       0x82 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(int_cfg.o)
+ .debug_line    0x0000331e      0x19b K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_clk.o)
+ .debug_line    0x000034b9      0x319 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/peripheral.a(hal_pm.o)
+ .debug_line    0x000037d2      0x192 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/peripheral.a(hal_pmic_i2c.o)
+ .debug_line    0x00003964       0xda K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/public.a(hal_assert.o)
+ .debug_line    0x00003a3e      0x1d3 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_osa_tos.a(tos_except_cortexm.o)
+ .debug_line    0x00003c11      0x32f K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_osa_tos.a(tos_irq.o)
+ .debug_line    0x00003f40      0x110 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_sup.a(sup_agent_logctrl.o)
+ .debug_line    0x00004050      0x317 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_sup.a(sup_ramdump_client_lib.o)
+ .debug_line    0x00004367      0x486 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_arch_hal_misc.o)
+ .debug_line    0x000047ed      0x18c K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_tos_var_tos_misc.o)
+ .debug_line    0x00004979      0x16c K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_tos_tos_m0_tos_m0_misc.o)
+ .debug_line    0x00004ae5      0x156 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_common_hal_misc.o)
+ .debug_line    0x00004c3b      0x126 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(infra_startup.o)
+ .debug_line    0x00004d61      0x1d2 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(infra_buffer.o)
+ .debug_line    0x00004f33     0x1292 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_kapi.o)
+ .debug_line    0x000061c5      0xddd K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_thread.o)
+ .debug_line    0x00006fa2      0x593 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_intr.o)
+ .debug_line    0x00007535      0x3eb K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_bitmap.o)
+ .debug_line    0x00007920      0x526 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_sched.o)
+ .debug_line    0x00007e46      0x4b7 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_cnt_sem.o)
+ .debug_line    0x000082fd      0xabe K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_mutex.o)
+ .debug_line    0x00008dbb       0xb9 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_arch_context.o)
+ .debug_line    0x00008e74      0x708 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_clock.o)
 
-.debug_frame    0x00000000     0x37a8
+.debug_frame    0x00000000     0x37ec
  *(.debug_frame)
  .debug_frame   0x00000000       0x28 K:/rpm/project/zx297520v3/obj/tos/all/debug/appstart/SysEntry.o
  .debug_frame   0x00000028       0x38 K:/rpm/project/zx297520v3/obj/tos/all/debug/appstart/appstart.o
  .debug_frame   0x00000060      0x120 K:/rpm/project/zx297520v3/obj/tos/all/debug/os/tos/tos_irq.o
  .debug_frame   0x00000180       0x2c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_init.o)
- .debug_frame   0x000001ac      0x13c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_spinlock.o)
- .debug_frame   0x000002e8       0x40 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sys.o)
- .debug_frame   0x00000328      0x220 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
- .debug_frame   0x00000548       0x2c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_gpio.o)
- .debug_frame   0x00000574      0x194 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_int.o)
- .debug_frame   0x00000708      0x13c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_timer.o)
- .debug_frame   0x00000844      0x128 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_dma.o)
- .debug_frame   0x0000096c      0x128 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
- .debug_frame   0x00000a94      0x310 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_ddr_syno_inno.o)
- .debug_frame   0x00000da4       0x70 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_debug.o)
- .debug_frame   0x00000e14      0x1c4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
- .debug_frame   0x00000fd8      0x1a8 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_i2c.o)
- .debug_frame   0x00001180      0x1f8 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
- .debug_frame   0x00001378      0x1d0 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sysclk.o)
- .debug_frame   0x00001548       0x7c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_clk.o)
- .debug_frame   0x000015c4      0x1c0 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/peripheral.a(hal_pm.o)
- .debug_frame   0x00001784      0x118 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/peripheral.a(hal_pmic_i2c.o)
- .debug_frame   0x0000189c       0x44 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/public.a(hal_assert.o)
- .debug_frame   0x000018e0       0x7c K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_osa_tos.a(tos_except_cortexm.o)
- .debug_frame   0x0000195c      0x1f8 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_osa_tos.a(tos_irq.o)
- .debug_frame   0x00001b54       0x48 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_sup.a(sup_agent_logctrl.o)
- .debug_frame   0x00001b9c       0xb8 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_sup.a(sup_ramdump_client_lib.o)
- .debug_frame   0x00001c54      0x1d0 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_arch_hal_misc.o)
- .debug_frame   0x00001e24       0x98 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_tos_var_tos_misc.o)
- .debug_frame   0x00001ebc       0x38 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_tos_tos_m0_tos_m0_misc.o)
- .debug_frame   0x00001ef4       0x50 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_common_hal_misc.o)
- .debug_frame   0x00001f44       0x28 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(infra_startup.o)
- .debug_frame   0x00001f6c       0x6c K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(infra_buffer.o)
- .debug_frame   0x00001fd8      0xadc K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_kapi.o)
- .debug_frame   0x00002ab4      0x2e0 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_thread.o)
- .debug_frame   0x00002d94      0x24c K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_intr.o)
- .debug_frame   0x00002fe0      0x15c K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_bitmap.o)
- .debug_frame   0x0000313c       0xe8 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_sched.o)
- .debug_frame   0x00003224       0xcc K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_cnt_sem.o)
- .debug_frame   0x000032f0      0x214 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_mutex.o)
- .debug_frame   0x00003504      0x254 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_clock.o)
- .debug_frame   0x00003758       0x20 /cygdrive/k/build/compiler/gcc_arm/arm-eabi/bin/../lib/gcc/arm-eabi/4.7.1/thumb/libgcc.a(_udivsi3.o)
- .debug_frame   0x00003778       0x30 /cygdrive/k/build/compiler/gcc_arm/arm-eabi/bin/../lib/gcc/arm-eabi/4.7.1/thumb/libgcc.a(_muldi3.o)
+ .debug_frame   0x000001ac      0x168 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_spinlock.o)
+ .debug_frame   0x00000314       0x40 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sys.o)
+ .debug_frame   0x00000354      0x220 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
+ .debug_frame   0x00000574       0x44 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_gpio.o)
+ .debug_frame   0x000005b8      0x194 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_int.o)
+ .debug_frame   0x0000074c      0x13c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_timer.o)
+ .debug_frame   0x00000888      0x128 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_dma.o)
+ .debug_frame   0x000009b0      0x128 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
+ .debug_frame   0x00000ad8      0x310 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_ddr_syno_inno.o)
+ .debug_frame   0x00000de8       0x70 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_debug.o)
+ .debug_frame   0x00000e58      0x1c4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
+ .debug_frame   0x0000101c      0x1a8 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_i2c.o)
+ .debug_frame   0x000011c4      0x1f8 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
+ .debug_frame   0x000013bc      0x1d0 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sysclk.o)
+ .debug_frame   0x0000158c       0x7c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_clk.o)
+ .debug_frame   0x00001608      0x1c0 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/peripheral.a(hal_pm.o)
+ .debug_frame   0x000017c8      0x118 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/peripheral.a(hal_pmic_i2c.o)
+ .debug_frame   0x000018e0       0x44 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/public.a(hal_assert.o)
+ .debug_frame   0x00001924       0x7c K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_osa_tos.a(tos_except_cortexm.o)
+ .debug_frame   0x000019a0      0x1f8 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_osa_tos.a(tos_irq.o)
+ .debug_frame   0x00001b98       0x48 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_sup.a(sup_agent_logctrl.o)
+ .debug_frame   0x00001be0       0xb8 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_sup.a(sup_ramdump_client_lib.o)
+ .debug_frame   0x00001c98      0x1d0 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_arch_hal_misc.o)
+ .debug_frame   0x00001e68       0x98 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_tos_var_tos_misc.o)
+ .debug_frame   0x00001f00       0x38 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_tos_tos_m0_tos_m0_misc.o)
+ .debug_frame   0x00001f38       0x50 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_common_hal_misc.o)
+ .debug_frame   0x00001f88       0x28 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(infra_startup.o)
+ .debug_frame   0x00001fb0       0x6c K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(infra_buffer.o)
+ .debug_frame   0x0000201c      0xadc K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_kapi.o)
+ .debug_frame   0x00002af8      0x2e0 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_thread.o)
+ .debug_frame   0x00002dd8      0x24c K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_intr.o)
+ .debug_frame   0x00003024      0x15c K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_bitmap.o)
+ .debug_frame   0x00003180       0xe8 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_sched.o)
+ .debug_frame   0x00003268       0xcc K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_cnt_sem.o)
+ .debug_frame   0x00003334      0x214 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_mutex.o)
+ .debug_frame   0x00003548      0x254 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_clock.o)
+ .debug_frame   0x0000379c       0x20 /cygdrive/k/build/compiler/gcc_arm/arm-eabi/bin/../lib/gcc/arm-eabi/4.7.1/thumb/libgcc.a(_udivsi3.o)
+ .debug_frame   0x000037bc       0x30 /cygdrive/k/build/compiler/gcc_arm/arm-eabi/bin/../lib/gcc/arm-eabi/4.7.1/thumb/libgcc.a(_muldi3.o)
 
-.debug_str      0x00000000     0xb073
+.debug_str      0x00000000     0xb0f6
  *(.debug_str)
  .debug_str     0x00000000       0xec K:/rpm/project/zx297520v3/obj/tos/all/debug/appstart/SysEntry.o
                                 0x12c (size before relaxing)
@@ -1739,125 +1739,125 @@
                                 0x23b (size before relaxing)
  .debug_str     0x000002dd      0x3c6 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_init.o)
                                 0x491 (size before relaxing)
- .debug_str     0x000006a3      0x3e7 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_spinlock.o)
-                                0x809 (size before relaxing)
- .debug_str     0x00000a8a      0x2d3 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sys.o)
+ .debug_str     0x000006a3      0x42c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_spinlock.o)
+                                0x85a (size before relaxing)
+ .debug_str     0x00000acf      0x2d3 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sys.o)
                                 0x6e3 (size before relaxing)
- .debug_str     0x00000d5d      0x80e K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
+ .debug_str     0x00000da2      0x80e K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
                                 0xdd8 (size before relaxing)
- .debug_str     0x0000156b       0xb6 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_gpio.o)
-                                0x68e (size before relaxing)
- .debug_str     0x00001621      0x513 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_int.o)
+ .debug_str     0x000015b0       0xfc K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_gpio.o)
+                                0x6e1 (size before relaxing)
+ .debug_str     0x000016ac      0x513 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_int.o)
                                 0xc6c (size before relaxing)
- .debug_str     0x00001b34      0x4ae K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_timer.o)
+ .debug_str     0x00001bbf      0x4ae K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_timer.o)
                                 0xcdf (size before relaxing)
- .debug_str     0x00001fe2      0x8ba K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_dma.o)
-                                0xdc3 (size before relaxing)
- .debug_str     0x0000289c      0xb59 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
+ .debug_str     0x0000206d      0x8ba K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_dma.o)
+                                0xdce (size before relaxing)
+ .debug_str     0x00002927      0xb59 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
                                0x18df (size before relaxing)
- .debug_str     0x000033f5      0x434 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_ddr_syno_inno.o)
+ .debug_str     0x00003480      0x434 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_ddr_syno_inno.o)
                                 0x567 (size before relaxing)
- .debug_str     0x00003829      0x16a K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_debug.o)
+ .debug_str     0x000038b4      0x16a K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_debug.o)
                                 0x827 (size before relaxing)
- .debug_str     0x00003993      0xd33 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
+ .debug_str     0x00003a1e      0xd33 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
                                0x15c4 (size before relaxing)
- .debug_str     0x000046c6      0x5d2 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_i2c.o)
-                                0xf68 (size before relaxing)
- .debug_str     0x00004c98      0x33c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
-                                0xff2 (size before relaxing)
- .debug_str     0x00004fd4      0x236 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sysclk.o)
+ .debug_str     0x00004751      0x5ca K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_i2c.o)
+                                0xf77 (size before relaxing)
+ .debug_str     0x00004d1b      0x33c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
+                               0x11ea (size before relaxing)
+ .debug_str     0x00005057      0x236 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sysclk.o)
                                 0xbc6 (size before relaxing)
- .debug_str     0x0000520a       0x37 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_clkinfo.o)
+ .debug_str     0x0000528d       0x37 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_clkinfo.o)
                                 0x5fd (size before relaxing)
- .debug_str     0x00005241       0x33 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(int_cfg.o)
+ .debug_str     0x000052c4       0x33 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(int_cfg.o)
                                 0x127 (size before relaxing)
- .debug_str     0x00005274      0x17a K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_clk.o)
+ .debug_str     0x000052f7      0x17a K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_clk.o)
                                0x10a1 (size before relaxing)
- .debug_str     0x000053ee      0x8fc K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/peripheral.a(hal_pm.o)
+ .debug_str     0x00005471      0x8fc K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/peripheral.a(hal_pm.o)
                                 0xec6 (size before relaxing)
- .debug_str     0x00005cea       0xc7 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/peripheral.a(hal_pmic_i2c.o)
+ .debug_str     0x00005d6d       0xc7 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/peripheral.a(hal_pmic_i2c.o)
                                 0x777 (size before relaxing)
- .debug_str     0x00005db1       0xc6 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/public.a(hal_assert.o)
+ .debug_str     0x00005e34       0xc6 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/public.a(hal_assert.o)
                                 0x527 (size before relaxing)
- .debug_str     0x00005e77      0x1b6 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_osa_tos.a(tos_except_cortexm.o)
+ .debug_str     0x00005efa      0x1b6 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_osa_tos.a(tos_except_cortexm.o)
                                 0x2ba (size before relaxing)
- .debug_str     0x0000602d      0x653 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_osa_tos.a(tos_irq.o)
+ .debug_str     0x000060b0      0x653 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_osa_tos.a(tos_irq.o)
                                 0x84d (size before relaxing)
- .debug_str     0x00006680       0xac K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_sup.a(sup_agent_logctrl.o)
+ .debug_str     0x00006703       0xac K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_sup.a(sup_agent_logctrl.o)
                                 0x703 (size before relaxing)
- .debug_str     0x0000672c      0x260 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_sup.a(sup_ramdump_client_lib.o)
+ .debug_str     0x000067af      0x260 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_sup.a(sup_ramdump_client_lib.o)
                                 0x54c (size before relaxing)
- .debug_str     0x0000698c      0x3bb K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_arch_hal_misc.o)
+ .debug_str     0x00006a0f      0x3bb K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_arch_hal_misc.o)
                                 0x55f (size before relaxing)
- .debug_str     0x00006d47      0x132 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_tos_var_tos_misc.o)
+ .debug_str     0x00006dca      0x132 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_tos_var_tos_misc.o)
                                 0x280 (size before relaxing)
- .debug_str     0x00006e79       0xbb K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_tos_tos_m0_tos_m0_misc.o)
+ .debug_str     0x00006efc       0xbb K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_tos_tos_m0_tos_m0_misc.o)
                                 0x1de (size before relaxing)
- .debug_str     0x00006f34       0xda K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_common_hal_misc.o)
+ .debug_str     0x00006fb7       0xda K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_common_hal_misc.o)
                                 0x1fc (size before relaxing)
- .debug_str     0x0000700e       0xbc K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(infra_startup.o)
+ .debug_str     0x00007091       0xbc K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(infra_startup.o)
                                 0x16e (size before relaxing)
- .debug_str     0x000070ca     0x14c4 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(infra_buffer.o)
+ .debug_str     0x0000714d     0x14c4 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(infra_buffer.o)
                                0x194b (size before relaxing)
- .debug_str     0x0000858e     0x1b2a K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_kapi.o)
+ .debug_str     0x00008611     0x1b2a K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_kapi.o)
                                0x38f7 (size before relaxing)
- .debug_str     0x0000a0b8      0x774 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_thread.o)
+ .debug_str     0x0000a13b      0x774 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_thread.o)
                                0x2380 (size before relaxing)
- .debug_str     0x0000a82c      0x232 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_intr.o)
+ .debug_str     0x0000a8af      0x232 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_intr.o)
                                0x2365 (size before relaxing)
- .debug_str     0x0000aa5e       0xdb K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_bitmap.o)
+ .debug_str     0x0000aae1       0xdb K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_bitmap.o)
                                0x1f06 (size before relaxing)
- .debug_str     0x0000ab39      0x179 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_sched.o)
+ .debug_str     0x0000abbc      0x179 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_sched.o)
                                0x22c8 (size before relaxing)
- .debug_str     0x0000acb2       0xa4 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_cnt_sem.o)
+ .debug_str     0x0000ad35       0xa4 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_cnt_sem.o)
                                0x1c8c (size before relaxing)
- .debug_str     0x0000ad56       0xe5 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_mutex.o)
+ .debug_str     0x0000add9       0xe5 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_mutex.o)
                                0x1ec0 (size before relaxing)
- .debug_str     0x0000ae3b      0x238 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_clock.o)
+ .debug_str     0x0000aebe      0x238 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_clock.o)
                                0x14ca (size before relaxing)
 
-.debug_loc      0x00000000    0x147e4
+.debug_loc      0x00000000    0x14b33
  *(.debug_loc)
  .debug_loc     0x00000000       0x20 K:/rpm/project/zx297520v3/obj/tos/all/debug/appstart/SysEntry.o
  .debug_loc     0x00000020       0x20 K:/rpm/project/zx297520v3/obj/tos/all/debug/appstart/appstart.o
  .debug_loc     0x00000040      0x160 K:/rpm/project/zx297520v3/obj/tos/all/debug/os/tos/tos_irq.o
  .debug_loc     0x000001a0       0x47 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_init.o)
- .debug_loc     0x000001e7      0x552 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_spinlock.o)
- .debug_loc     0x00000739      0x165 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sys.o)
- .debug_loc     0x0000089e     0x1238 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
- .debug_loc     0x00001ad6       0x70 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_gpio.o)
- .debug_loc     0x00001b46      0x7cc K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_int.o)
- .debug_loc     0x00002312      0x60c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_timer.o)
- .debug_loc     0x0000291e      0xae3 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_dma.o)
- .debug_loc     0x00003401      0x711 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
- .debug_loc     0x00003b12      0x572 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_ddr_syno_inno.o)
- .debug_loc     0x00004084      0x116 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_debug.o)
- .debug_loc     0x0000419a     0x1686 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
- .debug_loc     0x00005820     0x1fed K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_i2c.o)
- .debug_loc     0x0000780d      0x90e K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
- .debug_loc     0x0000811b      0xe69 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sysclk.o)
- .debug_loc     0x00008f84      0x512 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_clk.o)
- .debug_loc     0x00009496      0xb9b K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/peripheral.a(hal_pm.o)
- .debug_loc     0x0000a031      0x6c6 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/peripheral.a(hal_pmic_i2c.o)
- .debug_loc     0x0000a6f7       0xdc K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/public.a(hal_assert.o)
- .debug_loc     0x0000a7d3      0x1b7 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_osa_tos.a(tos_except_cortexm.o)
- .debug_loc     0x0000a98a      0x658 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_osa_tos.a(tos_irq.o)
- .debug_loc     0x0000afe2      0x15b K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_sup.a(sup_agent_logctrl.o)
- .debug_loc     0x0000b13d      0xb70 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_sup.a(sup_ramdump_client_lib.o)
- .debug_loc     0x0000bcad      0x7e0 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_arch_hal_misc.o)
- .debug_loc     0x0000c48d      0x147 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_tos_var_tos_misc.o)
- .debug_loc     0x0000c5d4       0x20 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_tos_tos_m0_tos_m0_misc.o)
- .debug_loc     0x0000c5f4       0xed K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_common_hal_misc.o)
- .debug_loc     0x0000c6e1       0x20 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(infra_startup.o)
- .debug_loc     0x0000c701      0x146 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(infra_buffer.o)
- .debug_loc     0x0000c847     0x2a0e K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_kapi.o)
- .debug_loc     0x0000f255     0x1cf1 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_thread.o)
- .debug_loc     0x00010f46      0x87e K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_intr.o)
- .debug_loc     0x000117c4      0x58e K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_bitmap.o)
- .debug_loc     0x00011d52      0x6e8 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_sched.o)
- .debug_loc     0x0001243a      0x5c7 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_cnt_sem.o)
- .debug_loc     0x00012a01      0xfdc K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_mutex.o)
- .debug_loc     0x000139dd      0xe07 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_clock.o)
+ .debug_loc     0x000001e7      0x6bd K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_spinlock.o)
+ .debug_loc     0x000008a4      0x165 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sys.o)
+ .debug_loc     0x00000a09     0x1238 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
+ .debug_loc     0x00001c41      0x254 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_gpio.o)
+ .debug_loc     0x00001e95      0x7cc K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_int.o)
+ .debug_loc     0x00002661      0x60c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_timer.o)
+ .debug_loc     0x00002c6d      0xae3 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_dma.o)
+ .debug_loc     0x00003750      0x711 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
+ .debug_loc     0x00003e61      0x572 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_ddr_syno_inno.o)
+ .debug_loc     0x000043d3      0x116 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_debug.o)
+ .debug_loc     0x000044e9     0x1686 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
+ .debug_loc     0x00005b6f     0x1fed K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_i2c.o)
+ .debug_loc     0x00007b5c      0x90e K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
+ .debug_loc     0x0000846a      0xe69 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sysclk.o)
+ .debug_loc     0x000092d3      0x512 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_clk.o)
+ .debug_loc     0x000097e5      0xb9b K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/peripheral.a(hal_pm.o)
+ .debug_loc     0x0000a380      0x6c6 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/peripheral.a(hal_pmic_i2c.o)
+ .debug_loc     0x0000aa46       0xdc K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/public.a(hal_assert.o)
+ .debug_loc     0x0000ab22      0x1b7 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_osa_tos.a(tos_except_cortexm.o)
+ .debug_loc     0x0000acd9      0x658 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_osa_tos.a(tos_irq.o)
+ .debug_loc     0x0000b331      0x15b K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_sup.a(sup_agent_logctrl.o)
+ .debug_loc     0x0000b48c      0xb70 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_sup.a(sup_ramdump_client_lib.o)
+ .debug_loc     0x0000bffc      0x7e0 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_arch_hal_misc.o)
+ .debug_loc     0x0000c7dc      0x147 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_tos_var_tos_misc.o)
+ .debug_loc     0x0000c923       0x20 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_tos_tos_m0_tos_m0_misc.o)
+ .debug_loc     0x0000c943       0xed K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_common_hal_misc.o)
+ .debug_loc     0x0000ca30       0x20 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(infra_startup.o)
+ .debug_loc     0x0000ca50      0x146 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(infra_buffer.o)
+ .debug_loc     0x0000cb96     0x2a0e K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_kapi.o)
+ .debug_loc     0x0000f5a4     0x1cf1 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_thread.o)
+ .debug_loc     0x00011295      0x87e K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_intr.o)
+ .debug_loc     0x00011b13      0x58e K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_bitmap.o)
+ .debug_loc     0x000120a1      0x6e8 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_sched.o)
+ .debug_loc     0x00012789      0x5c7 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_cnt_sem.o)
+ .debug_loc     0x00012d50      0xfdc K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_mutex.o)
+ .debug_loc     0x00013d2c      0xe07 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_clock.o)
 
 .debug_macinfo
  *(.debug_macinfo)
@@ -1964,7 +1964,7 @@
                 0x000001f8                . = .
                 0x000001f8                __exidx_end = ABSOLUTE (.)
 
-.text           0x000001f8     0x6aec
+.text           0x000001f8     0x6c28
  *(.text*)
  .text          0x000001f8       0xc4 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/vectors.o
                 0x000001f8                _start
@@ -2011,693 +2011,699 @@
  .text.zDrvSysSpinlock_SoftLockPsm
                 0x000003b8       0x80 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_spinlock.o)
                 0x000003b8                zDrvSysSpinlock_SoftLockPsm
+ .text.zDrvSysSpinlock_SoftLockPsmTimeout
+                0x00000438       0xb0 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_spinlock.o)
+                0x00000438                zDrvSysSpinlock_SoftLockPsmTimeout
  .text.zDrvSysSpinlock_SoftUnlockPsm
-                0x00000438       0x84 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_spinlock.o)
-                0x00000438                zDrvSysSpinlock_SoftUnlockPsm
+                0x000004e8       0x80 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_spinlock.o)
+                0x000004e8                zDrvSysSpinlock_SoftUnlockPsm
  .text.zDrvSysSpinlock_RegLock
-                0x000004bc       0x3c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_spinlock.o)
-                0x000004bc                zDrvSysSpinlock_RegLock
+                0x00000568       0x3c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_spinlock.o)
+                0x00000568                zDrvSysSpinlock_RegLock
  .text.zDrvSysSpinlock_RegUnlock
-                0x000004f8       0x18 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_spinlock.o)
-                0x000004f8                zDrvSysSpinlock_RegUnlock
+                0x000005a4       0x18 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_spinlock.o)
+                0x000005a4                zDrvSysSpinlock_RegUnlock
  .text.zDrvSysSpinlock_Initiate
-                0x00000510       0x90 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_spinlock.o)
-                0x00000510                zDrvSysSpinlock_Initiate
+                0x000005bc       0x94 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_spinlock.o)
+                0x000005bc                zDrvSysSpinlock_Initiate
  .text.zDrvSys_Initiate
-                0x000005a0        0xc K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sys.o)
-                0x000005a0                zDrvSys_Initiate
- .text.mem_cpy  0x000005ac       0x20 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
+                0x00000650        0xc K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sys.o)
+                0x00000650                zDrvSys_Initiate
+ .text.mem_cpy  0x0000065c       0x20 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
  .text.Icp_IsRecvChEmpty
-                0x000005cc       0x18 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
+                0x0000067c       0x18 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
  .text.rpMsg_Write.part.2
-                0x000005e4       0xa0 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
+                0x00000694       0xa0 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
  .text.rpMsg_read.part.3
-                0x00000684       0x60 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
+                0x00000734       0x60 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
  .text.Icp_DispatchRpMsg
-                0x000006e4       0xe4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
+                0x00000794       0xe4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
  .text.Icp_AllIsr
-                0x000007c8       0xbc K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
-                0x000007c8                Icp_AllIsr
+                0x00000878       0xbc K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
+                0x00000878                Icp_AllIsr
  .text.Icp_PHYIsr
-                0x00000884        0xc K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
+                0x00000934        0xc K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
  .text.Icp_PSIsr
-                0x00000890        0xc K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
+                0x00000940        0xc K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
  .text.Icp_APIsr
-                0x0000089c        0xc K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
+                0x0000094c        0xc K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
  .text.zDrvRpMsg_UnMask
-                0x000008a8       0x74 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
-                0x000008a8                zDrvRpMsg_UnMask
+                0x00000958       0x74 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
+                0x00000958                zDrvRpMsg_UnMask
  .text.zDrvRpMsg_Write
-                0x0000091c      0x16c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
-                0x0000091c                zDrvRpMsg_Write
+                0x000009cc      0x16c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
+                0x000009cc                zDrvRpMsg_Write
  .text.zDrvRpMsg_CreateChannel
-                0x00000a88       0xec K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
-                0x00000a88                zDrvRpMsg_CreateChannel
+                0x00000b38       0xec K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
+                0x00000b38                zDrvRpMsg_CreateChannel
  .text.zDrvRpMsg_RegCallBack
-                0x00000b74       0x58 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
-                0x00000b74                zDrvRpMsg_RegCallBack
+                0x00000c24       0x58 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
+                0x00000c24                zDrvRpMsg_RegCallBack
  .text.zDrvRpMsg_Initiate
-                0x00000bcc       0xd0 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
-                0x00000bcc                zDrvRpMsg_Initiate
+                0x00000c7c       0xd0 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
+                0x00000c7c                zDrvRpMsg_Initiate
+ .text.zDrvGpio_SetValue
+                0x00000d4c       0x70 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_gpio.o)
+                0x00000d4c                zDrvGpio_SetValue
  .text.zDrvGpio_Initiate
-                0x00000c9c       0x4c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_gpio.o)
-                0x00000c9c                zDrvGpio_Initiate
+                0x00000dbc       0x4c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_gpio.o)
+                0x00000dbc                zDrvGpio_Initiate
  .text.__disable_irq
-                0x00000ce8        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_int.o)
-                0x00000ce8                __disable_irq
+                0x00000e08        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_int.o)
+                0x00000e08                __disable_irq
  .text.zDrvInt_MaskIrq
-                0x00000cec       0x18 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_int.o)
-                0x00000cec                zDrvInt_MaskIrq
+                0x00000e0c       0x18 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_int.o)
+                0x00000e0c                zDrvInt_MaskIrq
  .text.zDrvInt_UnmaskIrq
-                0x00000d04       0x2c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_int.o)
-                0x00000d04                zDrvInt_UnmaskIrq
+                0x00000e24       0x2c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_int.o)
+                0x00000e24                zDrvInt_UnmaskIrq
  .text.zDrvInt_PreInit
-                0x00000d30       0x48 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_int.o)
-                0x00000d30                zDrvInt_PreInit
+                0x00000e50       0x48 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_int.o)
+                0x00000e50                zDrvInt_PreInit
  .text.zDrvInt_InstallIsrDsr
-                0x00000d78       0xd4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_int.o)
-                0x00000d78                zDrvInt_InstallIsrDsr
+                0x00000e98       0xd4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_int.o)
+                0x00000e98                zDrvInt_InstallIsrDsr
  .text.zDrvInt_InstallIsr
-                0x00000e4c        0xc K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_int.o)
-                0x00000e4c                zDrvInt_InstallIsr
+                0x00000f6c        0xc K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_int.o)
+                0x00000f6c                zDrvInt_InstallIsr
  .text.zDrvInt_UninstallIsr
-                0x00000e58       0x48 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_int.o)
-                0x00000e58                zDrvInt_UninstallIsr
+                0x00000f78       0x48 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_int.o)
+                0x00000f78                zDrvInt_UninstallIsr
  .text.zDrvPcu_ClearInt
-                0x00000ea0       0x98 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_int.o)
-                0x00000ea0                zDrvPcu_ClearInt
+                0x00000fc0       0x98 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_int.o)
+                0x00000fc0                zDrvPcu_ClearInt
  .text.zDrvPcu_SetIntLevel
-                0x00000f38       0xf4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_int.o)
-                0x00000f38                zDrvPcu_SetIntLevel
+                0x00001058       0xf4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_int.o)
+                0x00001058                zDrvPcu_SetIntLevel
  .text.zDrvInt_IrqMaskSave
-                0x0000102c       0x18 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_int.o)
-                0x0000102c                zDrvInt_IrqMaskSave
+                0x0000114c       0x18 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_int.o)
+                0x0000114c                zDrvInt_IrqMaskSave
  .text.zDrvInt_IrqMaskAllIrq
-                0x00001044       0x1c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_int.o)
-                0x00001044                zDrvInt_IrqMaskAllIrq
+                0x00001164       0x1c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_int.o)
+                0x00001164                zDrvInt_IrqMaskAllIrq
  .text.zDrvInt_IrqMaskRestore
-                0x00001060       0x14 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_int.o)
-                0x00001060                zDrvInt_IrqMaskRestore
+                0x00001180       0x14 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_int.o)
+                0x00001180                zDrvInt_IrqMaskRestore
  .text.zDrvInt_DisSysTickInt
-                0x00001074       0x10 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_int.o)
-                0x00001074                zDrvInt_DisSysTickInt
+                0x00001194       0x10 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_int.o)
+                0x00001194                zDrvInt_DisSysTickInt
  .text.zDrvInt_EnableSysTickInt
-                0x00001084       0x10 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_int.o)
-                0x00001084                zDrvInt_EnableSysTickInt
+                0x000011a4       0x10 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_int.o)
+                0x000011a4                zDrvInt_EnableSysTickInt
  .text.zDrvTimer_Initiate
-                0x00001094        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_timer.o)
-                0x00001094                zDrvTimer_Initiate
+                0x000011b4        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_timer.o)
+                0x000011b4                zDrvTimer_Initiate
  .text.zDrvTimer_PreInit
-                0x00001098       0x94 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_timer.o)
-                0x00001098                zDrvTimer_PreInit
+                0x000011b8       0x94 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_timer.o)
+                0x000011b8                zDrvTimer_PreInit
  .text.dma_ResetChannel
-                0x0000112c       0x74 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_dma.o)
-                0x0000112c                dma_ResetChannel
+                0x0000124c       0x74 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_dma.o)
+                0x0000124c                dma_ResetChannel
  .text.zDrvDma_GetStatus
-                0x000011a0       0x84 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_dma.o)
-                0x000011a0                zDrvDma_GetStatus
+                0x000012c0       0x84 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_dma.o)
+                0x000012c0                zDrvDma_GetStatus
  .text.zDrvDma_Initiate
-                0x00001224       0x40 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_dma.o)
-                0x00001224                zDrvDma_Initiate
+                0x00001344       0x40 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_dma.o)
+                0x00001344                zDrvDma_Initiate
  .text.zDrvDma_AllocChannel
-                0x00001264       0x38 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_dma.o)
-                0x00001264                zDrvDma_AllocChannel
+                0x00001384       0x38 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_dma.o)
+                0x00001384                zDrvDma_AllocChannel
  .text.zDrvDma_ConfigChannel
-                0x0000129c      0x11c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_dma.o)
-                0x0000129c                zDrvDma_ConfigChannel
+                0x000013bc      0x11c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_dma.o)
+                0x000013bc                zDrvDma_ConfigChannel
  .text.zDrvDma_StartChannel
-                0x000013b8       0x60 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_dma.o)
-                0x000013b8                zDrvDma_StartChannel
+                0x000014d8       0x60 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_dma.o)
+                0x000014d8                zDrvDma_StartChannel
  .text.zDrvDma_DeAllocChannel
-                0x00001418       0x3c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_dma.o)
-                0x00001418                zDrvDma_DeAllocChannel
+                0x00001538       0x3c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_dma.o)
+                0x00001538                zDrvDma_DeAllocChannel
  .text.zDrvDma_M2mPsm
-                0x00001454      0x11c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_dma.o)
-                0x00001454                zDrvDma_M2mPsm
+                0x00001574      0x11c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_dma.o)
+                0x00001574                zDrvDma_M2mPsm
  .text.pow_SetVcoreOnOff.part.0
-                0x00001570       0x18 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
+                0x00001690       0x18 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
  .text.pow_Pcu2M0IntStatu
-                0x00001588       0x40 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
+                0x000016a8       0x40 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
  .text.pow_PsmCallBackRpMsg
-                0x000015c8       0x58 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
+                0x000016e8       0x58 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
  .text.pow_hwen_set.part.5
-                0x00001620       0x44 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
+                0x00001740       0x44 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
  .text.pow_PsmIdleThread
-                0x00001664       0x38 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
+                0x00001784       0x38 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
  .text.pow_hwen_set
-                0x0000169c       0x50 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
-                0x0000169c                pow_hwen_set
+                0x000017bc       0x50 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
+                0x000017bc                pow_hwen_set
  .text.pow_SaveRestoreDsr
-                0x000016ec      0x3c8 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
+                0x0000180c      0x3c8 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
  .text.pow_IcpInit
-                0x00001ab4       0x48 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
-                0x00001ab4                pow_IcpInit
+                0x00001bd4       0x48 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
+                0x00001bd4                pow_IcpInit
  .text.zDrvPow_CoreIsActive
-                0x00001afc       0x3c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
-                0x00001afc                zDrvPow_CoreIsActive
+                0x00001c1c       0x3c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
+                0x00001c1c                zDrvPow_CoreIsActive
  .text.zDrvPow_Init
-                0x00001b38      0x20c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
-                0x00001b38                zDrvPow_Init
+                0x00001c58      0x20c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
+                0x00001c58                zDrvPow_Init
  .text.pow_DdrGetSize
-                0x00001d44       0x40 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_ddr_syno_inno.o)
-                0x00001d44                pow_DdrGetSize
+                0x00001e64       0x40 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_ddr_syno_inno.o)
+                0x00001e64                pow_DdrGetSize
  .text.pow_DdrPhyConfig
-                0x00001d84      0x188 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_ddr_syno_inno.o)
-                0x00001d84                pow_DdrPhyConfig
+                0x00001ea4      0x188 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_ddr_syno_inno.o)
+                0x00001ea4                pow_DdrPhyConfig
  .text.pow_DdrCtrlConfig
-                0x00001f0c      0x234 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_ddr_syno_inno.o)
-                0x00001f0c                pow_DdrCtrlConfig
+                0x0000202c      0x234 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_ddr_syno_inno.o)
+                0x0000202c                pow_DdrCtrlConfig
  .text.pow_DdrPllDllLock
-                0x00002140       0x70 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_ddr_syno_inno.o)
-                0x00002140                pow_DdrPllDllLock
+                0x00002260       0x70 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_ddr_syno_inno.o)
+                0x00002260                pow_DdrPllDllLock
  .text.pow_DdrReinit
-                0x000021b0      0x194 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_ddr_syno_inno.o)
-                0x000021b0                pow_DdrReinit
+                0x000022d0      0x194 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_ddr_syno_inno.o)
+                0x000022d0                pow_DdrReinit
  .text.pow_DdrDfiInitCompleteEn
-                0x00002344       0x20 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_ddr_syno_inno.o)
-                0x00002344                pow_DdrDfiInitCompleteEn
+                0x00002464       0x20 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_ddr_syno_inno.o)
+                0x00002464                pow_DdrDfiInitCompleteEn
  .text.zDrvPow_DdrHwSrEnable
-                0x00002364       0x40 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_ddr_syno_inno.o)
-                0x00002364                zDrvPow_DdrHwSrEnable
+                0x00002484       0x40 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_ddr_syno_inno.o)
+                0x00002484                zDrvPow_DdrHwSrEnable
  .text.zDrvPow_DdrHwSrDisable
-                0x000023a4       0x44 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_ddr_syno_inno.o)
-                0x000023a4                zDrvPow_DdrHwSrDisable
+                0x000024c4       0x44 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_ddr_syno_inno.o)
+                0x000024c4                zDrvPow_DdrHwSrDisable
  .text.zDrvPow_DdrAutoLpEnable
-                0x000023e8       0x40 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_ddr_syno_inno.o)
-                0x000023e8                zDrvPow_DdrAutoLpEnable
+                0x00002508       0x40 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_ddr_syno_inno.o)
+                0x00002508                zDrvPow_DdrAutoLpEnable
  .text.pow_DdrInit
-                0x00002428       0x78 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_ddr_syno_inno.o)
-                0x00002428                pow_DdrInit
+                0x00002548       0x78 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_ddr_syno_inno.o)
+                0x00002548                pow_DdrInit
  .text.pow_DdrLpEnable
-                0x000024a0       0x1c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_ddr_syno_inno.o)
-                0x000024a0                pow_DdrLpEnable
+                0x000025c0       0x1c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_ddr_syno_inno.o)
+                0x000025c0                pow_DdrLpEnable
  .text.zDrvPow_DdrAutoLpDisable
-                0x000024bc       0x44 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_ddr_syno_inno.o)
-                0x000024bc                zDrvPow_DdrAutoLpDisable
+                0x000025dc       0x44 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_ddr_syno_inno.o)
+                0x000025dc                zDrvPow_DdrAutoLpDisable
  .text.pow_DdrLpDisable
-                0x00002500       0x20 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_ddr_syno_inno.o)
-                0x00002500                pow_DdrLpDisable
+                0x00002620       0x20 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_ddr_syno_inno.o)
+                0x00002620                pow_DdrLpDisable
  .text.zDrvPow_DdrLpEnterHandle
-                0x00002520      0x2f4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_ddr_syno_inno.o)
-                0x00002520                zDrvPow_DdrLpEnterHandle
+                0x00002640      0x2f4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_ddr_syno_inno.o)
+                0x00002640                zDrvPow_DdrLpEnterHandle
  .text.zDrvPow_DdrLpExitHandle
-                0x00002814       0xc4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_ddr_syno_inno.o)
-                0x00002814                zDrvPow_DdrLpExitHandle
+                0x00002934       0xc4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_ddr_syno_inno.o)
+                0x00002934                zDrvPow_DdrLpExitHandle
  .text.Pow_DebugIramInit
-                0x000028d8       0x50 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_debug.o)
-                0x000028d8                Pow_DebugIramInit
+                0x000029f8       0x50 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_debug.o)
+                0x000029f8                Pow_DebugIramInit
  .text.pow_LpTypeCheck
-                0x00002928       0x14 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_debug.o)
-                0x00002928                pow_LpTypeCheck
+                0x00002a48       0x14 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_debug.o)
+                0x00002a48                pow_LpTypeCheck
  .text.pow_SetLpModeCallback
-                0x0000293c      0x124 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_debug.o)
-                0x0000293c                pow_SetLpModeCallback
+                0x00002a5c      0x124 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_debug.o)
+                0x00002a5c                pow_SetLpModeCallback
  .text.pow_SpifcSave
-                0x00002a60       0x44 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
-                0x00002a60                pow_SpifcSave
+                0x00002b80       0x44 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
+                0x00002b80                pow_SpifcSave
  .text.pow_SpifcRestore
-                0x00002aa4       0x44 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
-                0x00002aa4                pow_SpifcRestore
+                0x00002bc4       0x44 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
+                0x00002bc4                pow_SpifcRestore
  .text.pow_IcpSave
-                0x00002ae8       0x48 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
-                0x00002ae8                pow_IcpSave
+                0x00002c08       0x48 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
+                0x00002c08                pow_IcpSave
  .text.pow_IcpRestore
-                0x00002b30       0x44 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
-                0x00002b30                pow_IcpRestore
+                0x00002c50       0x44 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
+                0x00002c50                pow_IcpRestore
  .text.pow_SpiSave
-                0x00002b74       0x68 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
-                0x00002b74                pow_SpiSave
+                0x00002c94       0x68 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
+                0x00002c94                pow_SpiSave
  .text.pow_SpiRestore
-                0x00002bdc       0x84 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
-                0x00002bdc                pow_SpiRestore
+                0x00002cfc       0x84 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
+                0x00002cfc                pow_SpiRestore
  .text.pow_VouSave
-                0x00002c60       0x64 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
-                0x00002c60                pow_VouSave
+                0x00002d80       0x64 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
+                0x00002d80                pow_VouSave
  .text.pow_VouRestore
-                0x00002cc4       0x40 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
-                0x00002cc4                pow_VouRestore
+                0x00002de4       0x40 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
+                0x00002de4                pow_VouRestore
  .text.pow_Iram0Save
-                0x00002d04       0x2c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
-                0x00002d04                pow_Iram0Save
+                0x00002e24       0x2c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
+                0x00002e24                pow_Iram0Save
  .text.pow_Iram0Restore
-                0x00002d30       0x30 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
-                0x00002d30                pow_Iram0Restore
+                0x00002e50       0x30 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
+                0x00002e50                pow_Iram0Restore
  .text.zDrvPow_PdcoreRegsSave
-                0x00002d60      0x66c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
-                0x00002d60                zDrvPow_PdcoreRegsSave
+                0x00002e80      0x66c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
+                0x00002e80                zDrvPow_PdcoreRegsSave
  .text.zDrvPow_PdcoreRegsRestore
-                0x000033cc      0x7ec K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
-                0x000033cc                zDrvPow_PdcoreRegsRestore
+                0x000034ec      0x7ec K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
+                0x000034ec                zDrvPow_PdcoreRegsRestore
  .text.i2c_WaitTransferOver.isra.0
-                0x00003bb8       0x68 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_i2c.o)
+                0x00003cd8       0x68 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_i2c.o)
  .text.i2c_SetMode.isra.1
-                0x00003c20       0x50 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_i2c.o)
+                0x00003d40       0x50 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_i2c.o)
  .text.i2c_SetSlaveAddress
-                0x00003c70       0x24 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_i2c.o)
+                0x00003d90       0x24 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_i2c.o)
  .text.zDrvI2c_DevWrite_PSM
-                0x00003c94      0x160 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_i2c.o)
-                0x00003c94                zDrvI2c_DevWrite_PSM
+                0x00003db4      0x160 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_i2c.o)
+                0x00003db4                zDrvI2c_DevWrite_PSM
  .text.zDrvI2c_Initiate
-                0x00003df4       0x98 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_i2c.o)
-                0x00003df4                zDrvI2c_Initiate
+                0x00003f14       0x98 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_i2c.o)
+                0x00003f14                zDrvI2c_Initiate
  .text.wdt_rpmsg_callback
-                0x00003e8c       0x38 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
+                0x00003fac       0x3c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
  .text.wdt_get_switch
-                0x00003ec4       0x40 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
-                0x00003ec4                wdt_get_switch
+                0x00003fe8       0x40 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
+                0x00003fe8                wdt_get_switch
  .text.wdt_get_time_out
-                0x00003f04       0x40 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
-                0x00003f04                wdt_get_time_out
+                0x00004028       0x40 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
+                0x00004028                wdt_get_time_out
  .text.wdt_set_time_out
-                0x00003f44       0x50 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
-                0x00003f44                wdt_set_time_out
+                0x00004068       0x4c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
+                0x00004068                wdt_set_time_out
  .text.wdt_set_value
-                0x00003f94       0x54 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
-                0x00003f94                wdt_set_value
+                0x000040b4       0x58 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
+                0x000040b4                wdt_set_value
  .text.wdt_set_int_value
-                0x00003fe8       0x58 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
-                0x00003fe8                wdt_set_int_value
+                0x0000410c       0x54 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
+                0x0000410c                wdt_set_int_value
  .text.wdt_start_config
-                0x00004040       0x50 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
-                0x00004040                wdt_start_config
+                0x00004160       0x50 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
+                0x00004160                wdt_start_config
  .text.wdt_refresh_config
-                0x00004090       0x44 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
-                0x00004090                wdt_refresh_config
+                0x000041b0       0x44 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
+                0x000041b0                wdt_refresh_config
  .text.wdt_set_clk_div
-                0x000040d4       0x54 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
-                0x000040d4                wdt_set_clk_div
+                0x000041f4       0x50 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
+                0x000041f4                wdt_set_clk_div
  .text.wdt_set_src_clk
-                0x00004128       0x50 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
-                0x00004128                wdt_set_src_clk
+                0x00004244       0x50 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
+                0x00004244                wdt_set_src_clk
  .text.wdt_reset_all_config
-                0x00004178       0x2c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
-                0x00004178                wdt_reset_all_config
+                0x00004294       0x2c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
+                0x00004294                wdt_reset_all_config
  .text.wdt_feed_dog
-                0x000041a4        0x8 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
-                0x000041a4                wdt_feed_dog
+                0x000042c0        0x8 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
+                0x000042c0                wdt_feed_dog
  .text.wdt_icp_wake_up
-                0x000041ac       0xec K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
-                0x000041ac                wdt_icp_wake_up
- .text.wdt_isr  0x00004298      0x12c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
-                0x00004298                wdt_isr
+                0x000042c8       0xec K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
+                0x000042c8                wdt_icp_wake_up
+ .text.wdt_isr  0x000043b4      0x14c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
+                0x000043b4                wdt_isr
  .text.wdt_IsWdtFuncOpen
-                0x000043c4       0x54 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
-                0x000043c4                wdt_IsWdtFuncOpen
+                0x00004500       0x54 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
+                0x00004500                wdt_IsWdtFuncOpen
  .text.zDrvWdt_RpmRebootRecord
-                0x00004418       0x3c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
-                0x00004418                zDrvWdt_RpmRebootRecord
+                0x00004554       0x3c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
+                0x00004554                zDrvWdt_RpmRebootRecord
  .text.zDrvWdt_Initiate
-                0x00004454       0xe0 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
-                0x00004454                zDrvWdt_Initiate
+                0x00004590       0xe0 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
+                0x00004590                zDrvWdt_Initiate
  .text.sysclk_CommSetFreq
-                0x00004534       0x9c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sysclk.o)
-                0x00004534                sysclk_CommSetFreq
+                0x00004670       0x9c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sysclk.o)
+                0x00004670                sysclk_CommSetFreq
  .text.sysclk_CommResetCtrl
-                0x000045d0       0x40 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sysclk.o)
-                0x000045d0                sysclk_CommResetCtrl
+                0x0000470c       0x40 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sysclk.o)
+                0x0000470c                sysclk_CommResetCtrl
  .text.sysclk_CommHwGateCtrl
-                0x00004610       0x7c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sysclk.o)
-                0x00004610                sysclk_CommHwGateCtrl
+                0x0000474c       0x7c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sysclk.o)
+                0x0000474c                sysclk_CommHwGateCtrl
  .text.sysclk_MatrixAxiHwGate
-                0x0000468c       0x24 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sysclk.o)
-                0x0000468c                sysclk_MatrixAxiHwGate
+                0x000047c8       0x24 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sysclk.o)
+                0x000047c8                sysclk_MatrixAxiHwGate
  .text.sysclk_CommSwGateCtrl
-                0x000046b0       0x7c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sysclk.o)
-                0x000046b0                sysclk_CommSwGateCtrl
+                0x000047ec       0x7c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sysclk.o)
+                0x000047ec                sysclk_CommSwGateCtrl
  .text.sysclk_SwGateCtrl0
-                0x0000472c       0x14 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sysclk.o)
-                0x0000472c                sysclk_SwGateCtrl0
+                0x00004868       0x14 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sysclk.o)
+                0x00004868                sysclk_SwGateCtrl0
  .text.sysclk_MatrixAxiSwGate
-                0x00004740       0x24 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sysclk.o)
-                0x00004740                sysclk_MatrixAxiSwGate
+                0x0000487c       0x24 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sysclk.o)
+                0x0000487c                sysclk_MatrixAxiSwGate
  .text.sysclk_DisableUnused
-                0x00004764       0x64 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sysclk.o)
-                0x00004764                sysclk_DisableUnused
+                0x000048a0       0x64 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sysclk.o)
+                0x000048a0                sysclk_DisableUnused
  .text.sysclk_AutoGateInit
-                0x000047c8       0x40 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sysclk.o)
-                0x000047c8                sysclk_AutoGateInit
+                0x00004904       0x40 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sysclk.o)
+                0x00004904                sysclk_AutoGateInit
  .text.zDrvSysClk_SetGate
-                0x00004808       0xac K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sysclk.o)
-                0x00004808                zDrvSysClk_SetGate
+                0x00004944       0xac K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sysclk.o)
+                0x00004944                zDrvSysClk_SetGate
  .text.zDrvSysClk_SetFreq
-                0x000048b4       0x5c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sysclk.o)
-                0x000048b4                zDrvSysClk_SetFreq
+                0x000049f0       0x5c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sysclk.o)
+                0x000049f0                zDrvSysClk_SetFreq
  .text.zDrvSysClk_Reset
-                0x00004910       0x50 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sysclk.o)
-                0x00004910                zDrvSysClk_Reset
+                0x00004a4c       0x50 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sysclk.o)
+                0x00004a4c                zDrvSysClk_Reset
  .text.zDrvSysClk_Release
-                0x00004960       0x50 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sysclk.o)
-                0x00004960                zDrvSysClk_Release
+                0x00004a9c       0x50 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sysclk.o)
+                0x00004a9c                zDrvSysClk_Release
  .text.sysclk_Initiate
-                0x000049b0       0x20 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sysclk.o)
-                0x000049b0                sysclk_Initiate
+                0x00004aec       0x20 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sysclk.o)
+                0x00004aec                sysclk_Initiate
  .text.pow_ClkGateInit
-                0x000049d0       0x24 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_clk.o)
-                0x000049d0                pow_ClkGateInit
+                0x00004b0c       0x24 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_clk.o)
+                0x00004b0c                pow_ClkGateInit
  .text.pow_AxiClk_Change
-                0x000049f4      0x240 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_clk.o)
-                0x000049f4                pow_AxiClk_Change
+                0x00004b30      0x240 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_clk.o)
+                0x00004b30                pow_AxiClk_Change
  .text.zDrvPow_AxiChangeClk
-                0x00004c34       0x5c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_clk.o)
-                0x00004c34                zDrvPow_AxiChangeClk
+                0x00004d70       0x5c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_clk.o)
+                0x00004d70                zDrvPow_AxiChangeClk
  .text.zDrvPmic_SetVcoreOnOffPSM
-                0x00004c90       0x28 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/peripheral.a(hal_pm.o)
-                0x00004c90                zDrvPmic_SetVcoreOnOffPSM
+                0x00004dcc       0x28 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/peripheral.a(hal_pm.o)
+                0x00004dcc                zDrvPmic_SetVcoreOnOffPSM
  .text.zDrvPmic_I2cWrite_PSM
-                0x00004cb8       0x2c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/peripheral.a(hal_pmic_i2c.o)
-                0x00004cb8                zDrvPmic_I2cWrite_PSM
+                0x00004df4       0x2c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/peripheral.a(hal_pmic_i2c.o)
+                0x00004df4                zDrvPmic_I2cWrite_PSM
  .text.zDrvExcep_Handler
-                0x00004ce4       0x40 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/public.a(hal_assert.o)
-                0x00004ce4                zDrvExcep_Handler
+                0x00004e20       0x40 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/public.a(hal_assert.o)
+                0x00004e20                zDrvExcep_Handler
  .text.tos_assert_failed
-                0x00004d24       0x30 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_osa_tos.a(tos_except_cortexm.o)
-                0x00004d24                tos_assert_failed
+                0x00004e60       0x30 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_osa_tos.a(tos_except_cortexm.o)
+                0x00004e60                tos_assert_failed
  .text.tos_idle_thread
-                0x00004d54        0x8 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_osa_tos.a(tos_except_cortexm.o)
-                0x00004d54                tos_idle_thread
+                0x00004e90        0x8 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_osa_tos.a(tos_except_cortexm.o)
+                0x00004e90                tos_idle_thread
  .text.tos_default_isr
-                0x00004d5c        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_osa_tos.a(tos_irq.o)
-                0x00004d5c                tos_default_isr
+                0x00004e98        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_osa_tos.a(tos_irq.o)
+                0x00004e98                tos_default_isr
  .text.tos_create_irq
-                0x00004d60       0x78 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_osa_tos.a(tos_irq.o)
-                0x00004d60                tos_create_irq
+                0x00004e9c       0x78 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_osa_tos.a(tos_irq.o)
+                0x00004e9c                tos_create_irq
  .text.tos_delete_irq
-                0x00004dd8       0x3c K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_osa_tos.a(tos_irq.o)
-                0x00004dd8                tos_delete_irq
+                0x00004f14       0x3c K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_osa_tos.a(tos_irq.o)
+                0x00004f14                tos_delete_irq
  .text.zLogCtrl_NotifyCapWakeUp
-                0x00004e14       0x4c K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_sup.a(sup_agent_logctrl.o)
+                0x00004f50       0x4c K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_sup.a(sup_agent_logctrl.o)
  .text.zOss_LogWakeUpInit
-                0x00004e60       0x54 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_sup.a(sup_agent_logctrl.o)
-                0x00004e60                zOss_LogWakeUpInit
- .text.memset   0x00004eb4       0x18 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_sup.a(sup_ramdump_client_lib.o)
-                0x00004eb4                memset
+                0x00004f9c       0x54 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_sup.a(sup_agent_logctrl.o)
+                0x00004f9c                zOss_LogWakeUpInit
+ .text.memset   0x00004ff0       0x18 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_sup.a(sup_ramdump_client_lib.o)
+                0x00004ff0                memset
  .text.zOss_RamdumpInit
-                0x00004ecc       0x20 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_sup.a(sup_ramdump_client_lib.o)
-                0x00004ecc                zOss_RamdumpInit
+                0x00005008       0x20 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_sup.a(sup_ramdump_client_lib.o)
+                0x00005008                zOss_RamdumpInit
  .text.zOss_RamdumpHandle
-                0x00004eec       0x48 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_sup.a(sup_ramdump_client_lib.o)
-                0x00004eec                zOss_RamdumpHandle
+                0x00005028       0x48 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_sup.a(sup_ramdump_client_lib.o)
+                0x00005028                zOss_RamdumpHandle
  .text.hal_reset_vsr
-                0x00004f34      0x130 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_arch_hal_misc.o)
-                0x00004f34                hal_reset_vsr
+                0x00005070      0x130 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_arch_hal_misc.o)
+                0x00005070                hal_reset_vsr
  .text.hal_deliver_exception
-                0x00005064       0x24 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_arch_hal_misc.o)
-                0x00005064                hal_deliver_exception
+                0x000051a0       0x24 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_arch_hal_misc.o)
+                0x000051a0                hal_deliver_exception
  .text.hal_interrupt_end
-                0x00005088       0x1c K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_arch_hal_misc.o)
-                0x00005088                hal_interrupt_end
+                0x000051c4       0x1c K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_arch_hal_misc.o)
+                0x000051c4                hal_interrupt_end
  .text.hal_interrupt_mask
-                0x000050a4       0x34 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_arch_hal_misc.o)
-                0x000050a4                hal_interrupt_mask
+                0x000051e0       0x34 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_arch_hal_misc.o)
+                0x000051e0                hal_interrupt_mask
  .text.hal_deliver_interrupt
-                0x000050d8       0x60 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_arch_hal_misc.o)
-                0x000050d8                hal_deliver_interrupt
+                0x00005214       0x60 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_arch_hal_misc.o)
+                0x00005214                hal_deliver_interrupt
  .text.hal_interrupt_unmask
-                0x00005138       0x40 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_arch_hal_misc.o)
-                0x00005138                hal_interrupt_unmask
+                0x00005274       0x40 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_arch_hal_misc.o)
+                0x00005274                hal_interrupt_unmask
  .text.hal_interrupt_unmask_safe
-                0x00005178        0x8 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_arch_hal_misc.o)
-                0x00005178                hal_interrupt_unmask_safe
+                0x000052b4        0x8 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_arch_hal_misc.o)
+                0x000052b4                hal_interrupt_unmask_safe
  .text.hal_interrupt_set_level
-                0x00005180        0x4 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_arch_hal_misc.o)
-                0x00005180                hal_interrupt_set_level
+                0x000052bc        0x4 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_arch_hal_misc.o)
+                0x000052bc                hal_interrupt_set_level
  .text.hal_interrupt_set_priority
-                0x00005184       0x6c K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_arch_hal_misc.o)
-                0x00005184                hal_interrupt_set_priority
+                0x000052c0       0x6c K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_arch_hal_misc.o)
+                0x000052c0                hal_interrupt_set_priority
  .text.hal_arch_default_isr
-                0x000051f0       0x24 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_arch_hal_misc.o)
-                0x000051f0                hal_arch_default_isr
+                0x0000532c       0x24 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_arch_hal_misc.o)
+                0x0000532c                hal_arch_default_isr
  .text.hal_lsbindex
-                0x00005214       0x20 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_arch_hal_misc.o)
-                0x00005214                hal_lsbindex
+                0x00005350       0x20 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_arch_hal_misc.o)
+                0x00005350                hal_lsbindex
  .text.hal_clock_initialize
-                0x00005234       0x14 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_tos_var_tos_misc.o)
-                0x00005234                hal_clock_initialize
+                0x00005370       0x14 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_tos_var_tos_misc.o)
+                0x00005370                hal_clock_initialize
  .text.hal_clock_isr
-                0x00005248        0x8 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_tos_var_tos_misc.o)
-                0x00005248                hal_clock_isr
+                0x00005384        0x8 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_tos_var_tos_misc.o)
+                0x00005384                hal_clock_isr
  .text.hal_variant_init
-                0x00005250       0x14 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_tos_var_tos_misc.o)
-                0x00005250                hal_variant_init
+                0x0000538c       0x14 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_tos_var_tos_misc.o)
+                0x0000538c                hal_variant_init
  .text.hal_system_init
-                0x00005264        0x4 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_tos_tos_m0_tos_m0_misc.o)
-                0x00005264                hal_system_init
+                0x000053a0        0x4 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_tos_tos_m0_tos_m0_misc.o)
+                0x000053a0                hal_system_init
  .text.hal_platform_init
-                0x00005268       0x4c K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_tos_tos_m0_tos_m0_misc.o)
-                0x00005268                hal_platform_init
+                0x000053a4       0x4c K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_tos_tos_m0_tos_m0_misc.o)
+                0x000053a4                hal_platform_init
  .text.hal_default_isr
-                0x000052b4       0x28 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_common_hal_misc.o)
-                0x000052b4                hal_default_isr
+                0x000053f0       0x28 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_common_hal_misc.o)
+                0x000053f0                hal_default_isr
  .text.cyg_start
-                0x000052dc        0xc K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(infra_startup.o)
-                0x000052dc                cyg_start
+                0x00005418        0xc K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(infra_startup.o)
+                0x00005418                cyg_start
  .text.cyg_assert_fail
-                0x000052e8       0x14 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(infra_buffer.o)
-                0x000052e8                cyg_assert_fail
+                0x00005424       0x14 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(infra_buffer.o)
+                0x00005424                cyg_assert_fail
  .text.cyg_check_data_ptr
-                0x000052fc       0x28 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(infra_buffer.o)
-                0x000052fc                cyg_check_data_ptr
+                0x00005438       0x28 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(infra_buffer.o)
+                0x00005438                cyg_check_data_ptr
  .text.unlikely._ZnwjPv.isra.2.part.3
-                0x00005324       0x14 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_kapi.o)
+                0x00005460       0x14 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_kapi.o)
  .text.cyg_thread_create
-                0x00005338       0x70 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_kapi.o)
-                0x00005338                cyg_thread_create
+                0x00005474       0x70 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_kapi.o)
+                0x00005474                cyg_thread_create
  .text.cyg_thread_resume
-                0x000053a8       0x18 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_kapi.o)
-                0x000053a8                cyg_thread_resume
+                0x000054e4       0x18 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_kapi.o)
+                0x000054e4                cyg_thread_resume
  .text.cyg_interrupt_create
-                0x000053c0       0x70 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_kapi.o)
-                0x000053c0                cyg_interrupt_create
+                0x000054fc       0x70 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_kapi.o)
+                0x000054fc                cyg_interrupt_create
  .text.cyg_interrupt_delete
-                0x00005430        0x8 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_kapi.o)
-                0x00005430                cyg_interrupt_delete
+                0x0000556c        0x8 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_kapi.o)
+                0x0000556c                cyg_interrupt_delete
  .text.cyg_interrupt_attach
-                0x00005438        0x8 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_kapi.o)
-                0x00005438                cyg_interrupt_attach
+                0x00005574        0x8 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_kapi.o)
+                0x00005574                cyg_interrupt_attach
  .text.cyg_interrupt_detach
-                0x00005440        0x8 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_kapi.o)
-                0x00005440                cyg_interrupt_detach
+                0x0000557c        0x8 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_kapi.o)
+                0x0000557c                cyg_interrupt_detach
  .text.cyg_interrupt_mask
-                0x00005448        0x8 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_kapi.o)
-                0x00005448                cyg_interrupt_mask
+                0x00005584        0x8 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_kapi.o)
+                0x00005584                cyg_interrupt_mask
  .text.cyg_interrupt_unmask
-                0x00005450        0x8 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_kapi.o)
-                0x00005450                cyg_interrupt_unmask
+                0x0000558c        0x8 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_kapi.o)
+                0x0000558c                cyg_interrupt_unmask
  .text.cyg_semaphore_init
-                0x00005458       0x28 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_kapi.o)
-                0x00005458                cyg_semaphore_init
+                0x00005594       0x28 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_kapi.o)
+                0x00005594                cyg_semaphore_init
  .text.cyg_semaphore_post
-                0x00005480        0x8 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_kapi.o)
-                0x00005480                cyg_semaphore_post
+                0x000055bc        0x8 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_kapi.o)
+                0x000055bc                cyg_semaphore_post
  .text.cyg_mutex_init
-                0x00005488       0x24 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_kapi.o)
-                0x00005488                cyg_mutex_init
+                0x000055c4       0x24 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_kapi.o)
+                0x000055c4                cyg_mutex_init
  .text.cyg_mutex_lock
-                0x000054ac        0x8 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_kapi.o)
-                0x000054ac                cyg_mutex_lock
+                0x000055e8        0x8 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_kapi.o)
+                0x000055e8                cyg_mutex_lock
  .text.cyg_mutex_unlock
-                0x000054b4        0x8 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_kapi.o)
-                0x000054b4                cyg_mutex_unlock
+                0x000055f0        0x8 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_kapi.o)
+                0x000055f0                cyg_mutex_unlock
  .text.startup._GLOBAL__sub_I_cyg_scheduler_start
-                0x000054bc        0xc K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_kapi.o)
+                0x000055f8        0xc K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_kapi.o)
  .text._Z16idle_thread_mainj
-                0x000054c8       0x40 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_thread.o)
-                0x000054c8                idle_thread_main(unsigned int)
+                0x00005604       0x40 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_thread.o)
+                0x00005604                idle_thread_main(unsigned int)
  .text._ZN10Cyg_ThreadC2EjPFvjEjPcjj
-                0x00005508      0x270 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_thread.o)
-                0x00005508                Cyg_Thread::Cyg_Thread(unsigned int, void (*)(unsigned int), unsigned int, char*, unsigned int, unsigned int)
-                0x00005508                Cyg_Thread::Cyg_Thread(unsigned int, void (*)(unsigned int), unsigned int, char*, unsigned int, unsigned int)
+                0x00005644      0x270 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_thread.o)
+                0x00005644                Cyg_Thread::Cyg_Thread(unsigned int, void (*)(unsigned int), unsigned int, char*, unsigned int, unsigned int)
+                0x00005644                Cyg_Thread::Cyg_Thread(unsigned int, void (*)(unsigned int), unsigned int, char*, unsigned int, unsigned int)
  .text._ZNK10Cyg_Thread10check_thisE21cyg_assert_class_zeal
-                0x00005778       0x40 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_thread.o)
-                0x00005778                Cyg_Thread::check_this(cyg_assert_class_zeal) const
+                0x000058b4       0x40 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_thread.o)
+                0x000058b4                Cyg_Thread::check_this(cyg_assert_class_zeal) const
  .text._ZN10Cyg_Thread12reinitializeEv
-                0x000057b8       0xc0 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_thread.o)
-                0x000057b8                Cyg_Thread::reinitialize()
+                0x000058f4       0xc0 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_thread.o)
+                0x000058f4                Cyg_Thread::reinitialize()
  .text._ZN10Cyg_Thread5sleepEv
-                0x00005878       0x90 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_thread.o)
-                0x00005878                Cyg_Thread::sleep()
+                0x000059b4       0x90 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_thread.o)
+                0x000059b4                Cyg_Thread::sleep()
  .text._ZN10Cyg_Thread4wakeEv
-                0x00005908       0x78 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_thread.o)
-                0x00005908                Cyg_Thread::wake()
+                0x00005a44       0x78 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_thread.o)
+                0x00005a44                Cyg_Thread::wake()
  .text._ZN15Cyg_ThreadTimer5alarmEP9Cyg_Alarmj
-                0x00005980       0x8c K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_thread.o)
-                0x00005980                Cyg_ThreadTimer::alarm(Cyg_Alarm*, unsigned int)
+                0x00005abc       0x8c K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_thread.o)
+                0x00005abc                Cyg_ThreadTimer::alarm(Cyg_Alarm*, unsigned int)
  .text._ZN10Cyg_Thread6resumeEv
-                0x00005a0c       0x94 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_thread.o)
-                0x00005a0c                Cyg_Thread::resume()
+                0x00005b48       0x94 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_thread.o)
+                0x00005b48                Cyg_Thread::resume()
  .text._ZN10Cyg_Thread4exitEv
-                0x00005aa0       0x3c K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_thread.o)
-                0x00005aa0                Cyg_Thread::exit()
+                0x00005bdc       0x3c K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_thread.o)
+                0x00005bdc                Cyg_Thread::exit()
  .text._ZN18Cyg_HardwareThread12thread_entryEP10Cyg_Thread
-                0x00005adc       0x1c K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_thread.o)
-                0x00005adc                Cyg_HardwareThread::thread_entry(Cyg_Thread*)
+                0x00005c18       0x1c K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_thread.o)
+                0x00005c18                Cyg_HardwareThread::thread_entry(Cyg_Thread*)
  .text._ZN14Cyg_IdleThreadC2Ev
-                0x00005af8       0x54 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_thread.o)
-                0x00005af8                Cyg_IdleThread::Cyg_IdleThread()
-                0x00005af8                Cyg_IdleThread::Cyg_IdleThread()
+                0x00005c34       0x54 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_thread.o)
+                0x00005c34                Cyg_IdleThread::Cyg_IdleThread()
+                0x00005c34                Cyg_IdleThread::Cyg_IdleThread()
  .text.startup._GLOBAL__sub_I.15000__ZN18Cyg_HardwareThread12thread_entryEP10Cyg_Thread
-                0x00005b4c       0x10 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_thread.o)
+                0x00005c88       0x10 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_thread.o)
  .text._ZN13Cyg_InterruptC2EjijPFjjjEPFvjjjE
-                0x00005b5c       0x10 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_intr.o)
-                0x00005b5c                Cyg_Interrupt::Cyg_Interrupt(unsigned int, int, unsigned int, unsigned int (*)(unsigned int, unsigned int), void (*)(unsigned int, unsigned int, unsigned int))
-                0x00005b5c                Cyg_Interrupt::Cyg_Interrupt(unsigned int, int, unsigned int, unsigned int (*)(unsigned int, unsigned int), void (*)(unsigned int, unsigned int, unsigned int))
+                0x00005c98       0x10 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_intr.o)
+                0x00005c98                Cyg_Interrupt::Cyg_Interrupt(unsigned int, int, unsigned int, unsigned int (*)(unsigned int, unsigned int), void (*)(unsigned int, unsigned int, unsigned int))
+                0x00005c98                Cyg_Interrupt::Cyg_Interrupt(unsigned int, int, unsigned int, unsigned int (*)(unsigned int, unsigned int), void (*)(unsigned int, unsigned int, unsigned int))
  .text._ZN13Cyg_Interrupt17call_pending_DSRsEv
-                0x00005b6c       0x38 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_intr.o)
-                0x00005b6c                Cyg_Interrupt::call_pending_DSRs()
+                0x00005ca8       0x38 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_intr.o)
+                0x00005ca8                Cyg_Interrupt::call_pending_DSRs()
  .text.cyg_interrupt_post_dsr
-                0x00005ba4       0x30 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_intr.o)
-                0x00005ba4                cyg_interrupt_post_dsr
+                0x00005ce0       0x30 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_intr.o)
+                0x00005ce0                cyg_interrupt_post_dsr
  .text.interrupt_end
-                0x00005bd4       0x74 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_intr.o)
-                0x00005bd4                interrupt_end
+                0x00005d10       0x74 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_intr.o)
+                0x00005d10                interrupt_end
  .text._ZN13Cyg_Interrupt6attachEv
-                0x00005c48       0x8c K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_intr.o)
-                0x00005c48                Cyg_Interrupt::attach()
+                0x00005d84       0x8c K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_intr.o)
+                0x00005d84                Cyg_Interrupt::attach()
  .text._ZN13Cyg_Interrupt6detachEv
-                0x00005cd4       0x60 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_intr.o)
-                0x00005cd4                Cyg_Interrupt::detach()
+                0x00005e10       0x60 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_intr.o)
+                0x00005e10                Cyg_Interrupt::detach()
  .text._ZN13Cyg_InterruptD2Ev
-                0x00005d34        0xc K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_intr.o)
-                0x00005d34                Cyg_Interrupt::~Cyg_Interrupt()
-                0x00005d34                Cyg_Interrupt::~Cyg_Interrupt()
+                0x00005e70        0xc K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_intr.o)
+                0x00005e70                Cyg_Interrupt::~Cyg_Interrupt()
+                0x00005e70                Cyg_Interrupt::~Cyg_Interrupt()
  .text._ZN13Cyg_Interrupt14mask_interruptEj
-                0x00005d40       0x38 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_intr.o)
-                0x00005d40                Cyg_Interrupt::mask_interrupt(unsigned int)
+                0x00005e7c       0x38 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_intr.o)
+                0x00005e7c                Cyg_Interrupt::mask_interrupt(unsigned int)
  .text._ZN13Cyg_Interrupt16unmask_interruptEj
-                0x00005d78       0x38 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_intr.o)
-                0x00005d78                Cyg_Interrupt::unmask_interrupt(unsigned int)
+                0x00005eb4       0x38 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_intr.o)
+                0x00005eb4                Cyg_Interrupt::unmask_interrupt(unsigned int)
  .text._ZN13Cyg_Interrupt23call_pending_DSRs_innerEv
-                0x00005db0       0x88 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_intr.o)
-                0x00005db0                Cyg_Interrupt::call_pending_DSRs_inner()
+                0x00005eec       0x88 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_intr.o)
+                0x00005eec                Cyg_Interrupt::call_pending_DSRs_inner()
  .text.cyg_interrupt_call_pending_DSRs
-                0x00005e38        0x8 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_intr.o)
-                0x00005e38                cyg_interrupt_call_pending_DSRs
+                0x00005f74        0x8 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_intr.o)
+                0x00005f74                cyg_interrupt_call_pending_DSRs
  .text.startup._GLOBAL__sub_I.12000__ZN13Cyg_Interrupt15disable_counterE
-                0x00005e40        0xc K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_intr.o)
+                0x00005f7c        0xc K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_intr.o)
  .text._ZN28Cyg_Scheduler_ImplementationC2Ev
-                0x00005e4c        0xc K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_bitmap.o)
-                0x00005e4c                Cyg_Scheduler_Implementation::Cyg_Scheduler_Implementation()
-                0x00005e4c                Cyg_Scheduler_Implementation::Cyg_Scheduler_Implementation()
+                0x00005f88        0xc K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_bitmap.o)
+                0x00005f88                Cyg_Scheduler_Implementation::Cyg_Scheduler_Implementation()
+                0x00005f88                Cyg_Scheduler_Implementation::Cyg_Scheduler_Implementation()
  .text._ZN28Cyg_Scheduler_Implementation8scheduleEv
-                0x00005e58       0x30 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_bitmap.o)
-                0x00005e58                Cyg_Scheduler_Implementation::schedule()
+                0x00005f94       0x30 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_bitmap.o)
+                0x00005f94                Cyg_Scheduler_Implementation::schedule()
  .text._ZN28Cyg_Scheduler_Implementation10add_threadEP10Cyg_Thread
-                0x00005e88       0x8c K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_bitmap.o)
-                0x00005e88                Cyg_Scheduler_Implementation::add_thread(Cyg_Thread*)
+                0x00005fc4       0x8c K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_bitmap.o)
+                0x00005fc4                Cyg_Scheduler_Implementation::add_thread(Cyg_Thread*)
  .text._ZN28Cyg_Scheduler_Implementation10rem_threadEP10Cyg_Thread
-                0x00005f14       0x68 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_bitmap.o)
-                0x00005f14                Cyg_Scheduler_Implementation::rem_thread(Cyg_Thread*)
+                0x00006050       0x68 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_bitmap.o)
+                0x00006050                Cyg_Scheduler_Implementation::rem_thread(Cyg_Thread*)
  .text._ZN28Cyg_Scheduler_Implementation15set_idle_threadEP10Cyg_Threadj
-                0x00005f7c       0x14 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_bitmap.o)
-                0x00005f7c                Cyg_Scheduler_Implementation::set_idle_thread(Cyg_Thread*, unsigned int)
+                0x000060b8       0x14 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_bitmap.o)
+                0x000060b8                Cyg_Scheduler_Implementation::set_idle_thread(Cyg_Thread*, unsigned int)
  .text._ZN28Cyg_Scheduler_Implementation15register_threadEP10Cyg_Thread
-                0x00005f90       0x38 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_bitmap.o)
-                0x00005f90                Cyg_Scheduler_Implementation::register_thread(Cyg_Thread*)
+                0x000060cc       0x38 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_bitmap.o)
+                0x000060cc                Cyg_Scheduler_Implementation::register_thread(Cyg_Thread*)
  .text._ZN28Cyg_Scheduler_Implementation17deregister_threadEP10Cyg_Thread
-                0x00005fc8       0x38 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_bitmap.o)
-                0x00005fc8                Cyg_Scheduler_Implementation::deregister_thread(Cyg_Thread*)
+                0x00006104       0x38 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_bitmap.o)
+                0x00006104                Cyg_Scheduler_Implementation::deregister_thread(Cyg_Thread*)
  .text._ZN28Cyg_Scheduler_Implementation6uniqueEi
-                0x00006000       0x30 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_bitmap.o)
-                0x00006000                Cyg_Scheduler_Implementation::unique(int)
+                0x0000613c       0x30 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_bitmap.o)
+                0x0000613c                Cyg_Scheduler_Implementation::unique(int)
  .text._ZN30Cyg_SchedThread_ImplementationC2Ej
-                0x00006030       0x24 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_bitmap.o)
-                0x00006030                Cyg_SchedThread_Implementation::Cyg_SchedThread_Implementation(unsigned int)
-                0x00006030                Cyg_SchedThread_Implementation::Cyg_SchedThread_Implementation(unsigned int)
+                0x0000616c       0x24 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_bitmap.o)
+                0x0000616c                Cyg_SchedThread_Implementation::Cyg_SchedThread_Implementation(unsigned int)
+                0x0000616c                Cyg_SchedThread_Implementation::Cyg_SchedThread_Implementation(unsigned int)
  .text._ZN30Cyg_ThreadQueue_ImplementationC2Ev
-                0x00006054        0x8 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_bitmap.o)
-                0x00006054                Cyg_ThreadQueue_Implementation::Cyg_ThreadQueue_Implementation()
-                0x00006054                Cyg_ThreadQueue_Implementation::Cyg_ThreadQueue_Implementation()
+                0x00006190        0x8 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_bitmap.o)
+                0x00006190                Cyg_ThreadQueue_Implementation::Cyg_ThreadQueue_Implementation()
+                0x00006190                Cyg_ThreadQueue_Implementation::Cyg_ThreadQueue_Implementation()
  .text._ZN30Cyg_ThreadQueue_Implementation7enqueueEP10Cyg_Thread
-                0x0000605c       0x10 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_bitmap.o)
-                0x0000605c                Cyg_ThreadQueue_Implementation::enqueue(Cyg_Thread*)
+                0x00006198       0x10 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_bitmap.o)
+                0x00006198                Cyg_ThreadQueue_Implementation::enqueue(Cyg_Thread*)
  .text._ZN30Cyg_ThreadQueue_Implementation7dequeueEv
-                0x0000606c       0x2c K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_bitmap.o)
-                0x0000606c                Cyg_ThreadQueue_Implementation::dequeue()
+                0x000061a8       0x2c K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_bitmap.o)
+                0x000061a8                Cyg_ThreadQueue_Implementation::dequeue()
  .text._ZN30Cyg_ThreadQueue_Implementation6removeEP10Cyg_Thread
-                0x00006098       0x14 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_bitmap.o)
-                0x00006098                Cyg_ThreadQueue_Implementation::remove(Cyg_Thread*)
+                0x000061d4       0x14 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_bitmap.o)
+                0x000061d4                Cyg_ThreadQueue_Implementation::remove(Cyg_Thread*)
  .text._ZN13Cyg_Scheduler12unlock_innerEj
-                0x000060ac      0x324 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_sched.o)
-                0x000060ac                Cyg_Scheduler::unlock_inner(unsigned int)
+                0x000061e8      0x324 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_sched.o)
+                0x000061e8                Cyg_Scheduler::unlock_inner(unsigned int)
  .text._ZN13Cyg_Scheduler12thread_entryEP10Cyg_Thread
-                0x000063d0       0x60 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_sched.o)
-                0x000063d0                Cyg_Scheduler::thread_entry(Cyg_Thread*)
+                0x0000650c       0x60 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_sched.o)
+                0x0000650c                Cyg_Scheduler::thread_entry(Cyg_Thread*)
  .text._ZN13Cyg_Scheduler9start_cpuEv
-                0x00006430       0x58 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_sched.o)
-                0x00006430                Cyg_Scheduler::start_cpu()
+                0x0000656c       0x58 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_sched.o)
+                0x0000656c                Cyg_Scheduler::start_cpu()
  .text._ZN13Cyg_Scheduler5startEv
-                0x00006488        0x8 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_sched.o)
-                0x00006488                Cyg_Scheduler::start()
+                0x000065c4        0x8 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_sched.o)
+                0x000065c4                Cyg_Scheduler::start()
  .text._ZN15Cyg_SchedThreadC2EP10Cyg_Threadj
-                0x00006490       0x14 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_sched.o)
-                0x00006490                Cyg_SchedThread::Cyg_SchedThread(Cyg_Thread*, unsigned int)
-                0x00006490                Cyg_SchedThread::Cyg_SchedThread(Cyg_Thread*, unsigned int)
+                0x000065cc       0x14 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_sched.o)
+                0x000065cc                Cyg_SchedThread::Cyg_SchedThread(Cyg_Thread*, unsigned int)
+                0x000065cc                Cyg_SchedThread::Cyg_SchedThread(Cyg_Thread*, unsigned int)
  .text.startup._GLOBAL__sub_I.11000_cyg_scheduler_sched_lock
-                0x000064a4       0x10 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_sched.o)
+                0x000065e0       0x10 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_sched.o)
  .text._ZN22Cyg_Counting_SemaphoreC2Ei
-                0x000064b4       0x14 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_cnt_sem.o)
-                0x000064b4                Cyg_Counting_Semaphore::Cyg_Counting_Semaphore(int)
-                0x000064b4                Cyg_Counting_Semaphore::Cyg_Counting_Semaphore(int)
+                0x000065f0       0x14 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_cnt_sem.o)
+                0x000065f0                Cyg_Counting_Semaphore::Cyg_Counting_Semaphore(int)
+                0x000065f0                Cyg_Counting_Semaphore::Cyg_Counting_Semaphore(int)
  .text._ZN22Cyg_Counting_Semaphore4postEv
-                0x000064c8       0x68 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_cnt_sem.o)
-                0x000064c8                Cyg_Counting_Semaphore::post()
+                0x00006604       0x68 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_cnt_sem.o)
+                0x00006604                Cyg_Counting_Semaphore::post()
  .text._ZN9Cyg_MutexC2Ev
-                0x00006530       0x14 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_mutex.o)
-                0x00006530                Cyg_Mutex::Cyg_Mutex()
-                0x00006530                Cyg_Mutex::Cyg_Mutex()
+                0x0000666c       0x14 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_mutex.o)
+                0x0000666c                Cyg_Mutex::Cyg_Mutex()
+                0x0000666c                Cyg_Mutex::Cyg_Mutex()
  .text._ZNK9Cyg_Mutex10check_thisE21cyg_assert_class_zeal
-                0x00006544       0x40 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_mutex.o)
-                0x00006544                Cyg_Mutex::check_this(cyg_assert_class_zeal) const
+                0x00006680       0x40 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_mutex.o)
+                0x00006680                Cyg_Mutex::check_this(cyg_assert_class_zeal) const
  .text._ZN9Cyg_Mutex4lockEv
-                0x00006584      0x16c K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_mutex.o)
-                0x00006584                Cyg_Mutex::lock()
+                0x000066c0      0x16c K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_mutex.o)
+                0x000066c0                Cyg_Mutex::lock()
  .text._ZN9Cyg_Mutex6unlockEv
-                0x000066f0      0x118 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_mutex.o)
-                0x000066f0                Cyg_Mutex::unlock()
- .text          0x00006808       0x52 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_arch_context.o)
-                0x00006808                hal_thread_switch_context
-                0x0000682e                hal_thread_load_context
-                0x0000684e                hal_setjmp
-                0x00006854                hal_longjmp
- *fill*         0x0000685a        0x2 
+                0x0000682c      0x118 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_mutex.o)
+                0x0000682c                Cyg_Mutex::unlock()
+ .text          0x00006944       0x52 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_arch_context.o)
+                0x00006944                hal_thread_switch_context
+                0x0000696a                hal_thread_load_context
+                0x0000698a                hal_setjmp
+                0x00006990                hal_longjmp
+ *fill*         0x00006996        0x2 
  .text._ZN17Cyg_RealTimeClock3isrEjj
-                0x0000685c        0xc K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_clock.o)
-                0x0000685c                Cyg_RealTimeClock::isr(unsigned int, unsigned int)
+                0x00006998        0xc K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_clock.o)
+                0x00006998                Cyg_RealTimeClock::isr(unsigned int, unsigned int)
  .text._ZN11Cyg_Counter9add_alarmEP9Cyg_Alarm
-                0x00006868       0xc4 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_clock.o)
-                0x00006868                Cyg_Counter::add_alarm(Cyg_Alarm*)
+                0x000069a4       0xc4 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_clock.o)
+                0x000069a4                Cyg_Counter::add_alarm(Cyg_Alarm*)
  .text._ZN11Cyg_Counter4tickEj
-                0x0000692c      0x140 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_clock.o)
-                0x0000692c                Cyg_Counter::tick(unsigned int)
+                0x00006a68      0x140 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_clock.o)
+                0x00006a68                Cyg_Counter::tick(unsigned int)
  .text._ZN17Cyg_RealTimeClock3dsrEjjj
-                0x00006a6c        0xc K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_clock.o)
-                0x00006a6c                Cyg_RealTimeClock::dsr(unsigned int, unsigned int, unsigned int)
+                0x00006ba8        0xc K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_clock.o)
+                0x00006ba8                Cyg_RealTimeClock::dsr(unsigned int, unsigned int, unsigned int)
  .text._ZN11Cyg_Counter9rem_alarmEP9Cyg_Alarm
-                0x00006a78       0x98 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_clock.o)
-                0x00006a78                Cyg_Counter::rem_alarm(Cyg_Alarm*)
+                0x00006bb4       0x98 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_clock.o)
+                0x00006bb4                Cyg_Counter::rem_alarm(Cyg_Alarm*)
  .text._ZN9Cyg_AlarmC2EP11Cyg_CounterPFvPS_jEj
-                0x00006b10       0x1c K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_clock.o)
-                0x00006b10                Cyg_Alarm::Cyg_Alarm(Cyg_Counter*, void (*)(Cyg_Alarm*, unsigned int), unsigned int)
-                0x00006b10                Cyg_Alarm::Cyg_Alarm(Cyg_Counter*, void (*)(Cyg_Alarm*, unsigned int), unsigned int)
+                0x00006c4c       0x1c K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_clock.o)
+                0x00006c4c                Cyg_Alarm::Cyg_Alarm(Cyg_Counter*, void (*)(Cyg_Alarm*, unsigned int), unsigned int)
+                0x00006c4c                Cyg_Alarm::Cyg_Alarm(Cyg_Counter*, void (*)(Cyg_Alarm*, unsigned int), unsigned int)
  .text._ZN9Cyg_Alarm7disableEv
-                0x00006b2c       0x54 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_clock.o)
-                0x00006b2c                Cyg_Alarm::disable()
+                0x00006c68       0x54 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_clock.o)
+                0x00006c68                Cyg_Alarm::disable()
  .text._ZN17Cyg_RealTimeClockC2Ev
-                0x00006b80       0x70 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_clock.o)
-                0x00006b80                Cyg_RealTimeClock::Cyg_RealTimeClock()
-                0x00006b80                Cyg_RealTimeClock::Cyg_RealTimeClock()
+                0x00006cbc       0x70 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_clock.o)
+                0x00006cbc                Cyg_RealTimeClock::Cyg_RealTimeClock()
+                0x00006cbc                Cyg_RealTimeClock::Cyg_RealTimeClock()
  .text.startup._GLOBAL__sub_I.14000__ZN9Cyg_Clock15real_time_clockE
-                0x00006bf0       0x10 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_clock.o)
- .text          0x00006c00       0x9c /cygdrive/k/build/compiler/gcc_arm/arm-eabi/bin/../lib/gcc/arm-eabi/4.7.1/thumb/libgcc.a(_udivsi3.o)
-                0x00006c00                __udivsi3
-                0x00006c00                __aeabi_uidiv
-                0x00006c88                __aeabi_uidivmod
- .text          0x00006c9c        0x4 /cygdrive/k/build/compiler/gcc_arm/arm-eabi/bin/../lib/gcc/arm-eabi/4.7.1/thumb/libgcc.a(_dvmd_tls.o)
-                0x00006c9c                __aeabi_ldiv0
-                0x00006c9c                __aeabi_idiv0
- .text          0x00006ca0       0x44 /cygdrive/k/build/compiler/gcc_arm/arm-eabi/bin/../lib/gcc/arm-eabi/4.7.1/thumb/libgcc.a(_muldi3.o)
-                0x00006ca0                __aeabi_lmul
-                0x00006ca0                __muldi3
+                0x00006d2c       0x10 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_clock.o)
+ .text          0x00006d3c       0x9c /cygdrive/k/build/compiler/gcc_arm/arm-eabi/bin/../lib/gcc/arm-eabi/4.7.1/thumb/libgcc.a(_udivsi3.o)
+                0x00006d3c                __udivsi3
+                0x00006d3c                __aeabi_uidiv
+                0x00006dc4                __aeabi_uidivmod
+ .text          0x00006dd8        0x4 /cygdrive/k/build/compiler/gcc_arm/arm-eabi/bin/../lib/gcc/arm-eabi/4.7.1/thumb/libgcc.a(_dvmd_tls.o)
+                0x00006dd8                __aeabi_ldiv0
+                0x00006dd8                __aeabi_idiv0
+ .text          0x00006ddc       0x44 /cygdrive/k/build/compiler/gcc_arm/arm-eabi/bin/../lib/gcc/arm-eabi/4.7.1/thumb/libgcc.a(_muldi3.o)
+                0x00006ddc                __aeabi_lmul
+                0x00006ddc                __muldi3
  *(.gnu.warning)
  *(.gnu.linkonce.t.*)
  *(.init)
@@ -2705,321 +2711,321 @@
  .glue_7        0x00000000        0x0 linker stubs
  *(.glue_7t)
  .glue_7t       0x00000000        0x0 linker stubs
-                0x00006ce4                __CTOR_LIST__ = ABSOLUTE (.)
+                0x00006e20                __CTOR_LIST__ = ABSOLUTE (.)
  *(SORT(.ctors*))
-                0x00006ce4                __CTOR_END__ = ABSOLUTE (.)
-                0x00006ce4                __DTOR_LIST__ = ABSOLUTE (.)
+                0x00006e20                __CTOR_END__ = ABSOLUTE (.)
+                0x00006e20                __DTOR_LIST__ = ABSOLUTE (.)
  *(SORT(.dtors*))
-                0x00006ce4                __DTOR_END__ = ABSOLUTE (.)
-                0x00006ce4                _etext = .
-                0x00006ce4                PROVIDE (__etext, .)
+                0x00006e20                __DTOR_END__ = ABSOLUTE (.)
+                0x00006e20                _etext = .
+                0x00006e20                PROVIDE (__etext, .)
 
-.vfp11_veneer   0x00006ce4        0x0
+.vfp11_veneer   0x00006e20        0x0
  .vfp11_veneer  0x00000000        0x0 linker stubs
 
-.v4_bx          0x00006ce4        0x0
+.v4_bx          0x00006e20        0x0
  .v4_bx         0x00000000        0x0 linker stubs
 
-.iplt           0x00006ce4        0x0
+.iplt           0x00006e20        0x0
  .iplt          0x00000000        0x0 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/vectors.o
 
-.fini           0x00006ce8        0x0
-                0x00006ce8                . = .
+.fini           0x00006e20        0x0
+                0x00006e20                . = .
  *(.fini)
 
-.rodata         0x00006ce8      0xa5c
-                0x00006ce8                . = .
+.rodata         0x00006e20      0xa5c
+                0x00006e20                . = .
  *(.rodata*)
  .rodata.gHal_DevRegisterTbl
-                0x00006ce8       0x28 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_init.o)
- .rodata.__FUNCTION__.5124
-                0x00006d10       0x10 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_spinlock.o)
+                0x00006e20       0x28 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_init.o)
+ .rodata.__FUNCTION__.5185
+                0x00006e48       0x1c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_spinlock.o)
  .rodata.hwlock_regs
-                0x00006d20       0x10 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_spinlock.o)
- .rodata.__FUNCTION__.5153
-                0x00006d30       0x20 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_spinlock.o)
+                0x00006e64       0x10 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_spinlock.o)
+ .rodata.__FUNCTION__.5136
+                0x00006e74       0x10 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_spinlock.o)
  .rodata.str1.4
-                0x00006d50       0x3c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_spinlock.o)
- .rodata.__FUNCTION__.5164
-                0x00006d8c       0x1c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_spinlock.o)
+                0x00006e84       0x3c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_spinlock.o)
+ .rodata.__FUNCTION__.5174
+                0x00006ec0       0x20 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_spinlock.o)
  .rodata.__FUNCTION__.5196
-                0x00006da8       0x14 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
+                0x00006ee0       0x14 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
  .rodata.__FUNCTION__.5220
-                0x00006dbc       0x18 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
+                0x00006ef4       0x18 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
  .rodata.__FUNCTION__.5155
-                0x00006dd4       0x14 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
+                0x00006f0c       0x14 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
  .rodata.str1.4
-                0x00006de8       0x35 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
+                0x00006f20       0x35 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
                                  0x3c (size before relaxing)
- *fill*         0x00006e1d        0x3 
+ *fill*         0x00006f55        0x3 
  .rodata.__FUNCTION__.5203
-                0x00006e20       0x10 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
+                0x00006f58       0x10 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
  .rodata.__FUNCTION__.5172
-                0x00006e30       0x14 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
+                0x00006f68       0x14 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
  .rodata.__FUNCTION__.5226
-                0x00006e44       0x18 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
+                0x00006f7c       0x18 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
  .rodata.__FUNCTION__.5095
-                0x00006e5c       0x14 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_int.o)
+                0x00006f94       0x14 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_int.o)
  .rodata.str1.4
-                0x00006e70       0x33 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_int.o)
+                0x00006fa8       0x33 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_int.o)
                                  0x38 (size before relaxing)
- *fill*         0x00006ea3        0x1 
- .rodata.__FUNCTION__.5167
-                0x00006ea4       0x18 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_dma.o)
- .rodata.__FUNCTION__.5142
-                0x00006ebc       0x14 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_dma.o)
- .rodata.__FUNCTION__.5129
-                0x00006ed0       0x14 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_dma.o)
+ *fill*         0x00006fdb        0x1 
+ .rodata.__FUNCTION__.5134
+                0x00006fdc       0x14 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_dma.o)
+ .rodata.__FUNCTION__.5172
+                0x00006ff0       0x18 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_dma.o)
+ .rodata.__FUNCTION__.5147
+                0x00007008       0x14 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_dma.o)
+ .rodata.__FUNCTION__.5179
+                0x0000701c       0x18 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_dma.o)
  .rodata.str1.4
-                0x00006ee4       0x33 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_dma.o)
+                0x00007034       0x33 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_dma.o)
                                  0x38 (size before relaxing)
- *fill*         0x00006f17        0x1 
- .rodata.__FUNCTION__.5174
-                0x00006f18       0x18 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_dma.o)
+ *fill*         0x00007067        0x1 
  .rodata.__FUNCTION__.6260
-                0x00006f30       0x14 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
+                0x00007068       0x14 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
  .rodata.str1.4
-                0x00006f44       0x5a K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
+                0x0000707c       0x5a K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
                                  0x60 (size before relaxing)
- *fill*         0x00006f9e        0x2 
+ *fill*         0x000070d6        0x2 
  .rodata.__FUNCTION__.6335
-                0x00006fa0       0x18 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
- .rodata        0x00006fb8       0x2c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
- .rodata.__FUNCTION__.5394
-                0x00006fe4        0xc K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_i2c.o)
+                0x000070d8       0x18 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
+ .rodata        0x000070f0       0x2c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
  .rodata.str1.4
-                0x00006ff0       0x33 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_i2c.o)
+                0x0000711c       0x33 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_i2c.o)
                                  0x38 (size before relaxing)
- *fill*         0x00007023        0x1 
- .rodata.__FUNCTION__.5385
-                0x00007024        0xc K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_i2c.o)
- .rodata.__FUNCTION__.5338
-                0x00007030       0x18 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_i2c.o)
- .rodata.__FUNCTION__.5351
-                0x00007048       0x14 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
- .rodata.__FUNCTION__.5298
-                0x0000705c       0x14 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
- .rodata.__FUNCTION__.5342
-                0x00007070        0x8 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
+ *fill*         0x0000714f        0x1 
+ .rodata.__FUNCTION__.5390
+                0x00007150        0xc K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_i2c.o)
+ .rodata.__FUNCTION__.5343
+                0x0000715c       0x18 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_i2c.o)
+ .rodata.__FUNCTION__.5399
+                0x00007174        0xc K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_i2c.o)
  .rodata.__FUNCTION__.5355
-                0x00007078       0x14 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
- .rodata.__FUNCTION__.5302
-                0x0000708c       0x14 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
- .rodata.__FUNCTION__.5312
-                0x000070a0       0x10 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
- .rodata.__FUNCTION__.5290
-                0x000070b0       0x14 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
- .rodata.__FUNCTION__.5331
-                0x000070c4       0x10 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
+                0x00007180       0x10 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
+ .rodata.__FUNCTION__.5385
+                0x00007190        0x8 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
+ .rodata.__FUNCTION__.5408
+                0x00007198       0x14 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
+ .rodata.__FUNCTION__.5345
+                0x000071ac       0x14 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
+ .rodata.__FUNCTION__.5374
+                0x000071c0       0x10 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
+ .rodata.__FUNCTION__.5328
+                0x000071d0       0x14 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
  .rodata.str1.4
-                0x000070d4       0x33 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
+                0x000071e4       0x33 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
                                  0x38 (size before relaxing)
- *fill*         0x00007107        0x1 
- .rodata.__FUNCTION__.5276
-                0x00007108       0x10 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
- .rodata.__FUNCTION__.5285
-                0x00007118       0x14 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
- .rodata.__FUNCTION__.5365
-                0x0000712c       0x14 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
- .rodata.__FUNCTION__.5294
-                0x00007140       0x10 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
- .rodata.__FUNCTION__.5188
-                0x00007150       0x14 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sysclk.o)
- .rodata.__FUNCTION__.5194
-                0x00007164       0x14 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sysclk.o)
- .rodata.__FUNCTION__.5200
-                0x00007178       0x14 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sysclk.o)
- .rodata.gClkOpsMatrixAxi
-                0x0000718c       0x10 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sysclk.o)
-                0x0000718c                gClkOpsMatrixAxi
- .rodata.str1.4
-                0x0000719c       0x36 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sysclk.o)
-                                 0x3c (size before relaxing)
- *fill*         0x000071d2        0x2 
- .rodata.gClkOpsSpecial0
-                0x000071d4       0x10 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sysclk.o)
-                0x000071d4                gClkOpsSpecial0
- .rodata.__FUNCTION__.5174
-                0x000071e4       0x14 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sysclk.o)
+ *fill*         0x00007217        0x1 
+ .rodata.__FUNCTION__.5319
+                0x00007218       0x10 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
+ .rodata.__FUNCTION__.5333
+                0x00007228       0x14 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
+ .rodata.__FUNCTION__.5394
+                0x0000723c       0x14 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
+ .rodata.__FUNCTION__.5398
+                0x00007250       0x14 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
+ .rodata.__FUNCTION__.5341
+                0x00007264       0x14 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
+ .rodata.__FUNCTION__.5337
+                0x00007278       0x10 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
  .rodata.gCommonClkOps
-                0x000071f8       0x10 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sysclk.o)
-                0x000071f8                gCommonClkOps
- .rodata.pow_AxiClk_Change
-                0x00007208       0x20 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_clk.o)
- .rodata.__FUNCTION__.5696
-                0x00007228       0x10 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_clk.o)
+                0x00007288       0x10 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sysclk.o)
+                0x00007288                gCommonClkOps
+ .rodata.__FUNCTION__.5193
+                0x00007298       0x14 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sysclk.o)
+ .rodata.gClkOpsMatrixAxi
+                0x000072ac       0x10 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sysclk.o)
+                0x000072ac                gClkOpsMatrixAxi
+ .rodata.__FUNCTION__.5205
+                0x000072bc       0x14 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sysclk.o)
  .rodata.str1.4
-                0x00007238       0x37 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_clk.o)
+                0x000072d0       0x36 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sysclk.o)
                                  0x3c (size before relaxing)
- *fill*         0x0000726f        0x1 
+ *fill*         0x00007306        0x2 
+ .rodata.__FUNCTION__.5199
+                0x00007308       0x14 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sysclk.o)
+ .rodata.gClkOpsSpecial0
+                0x0000731c       0x10 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sysclk.o)
+                0x0000731c                gClkOpsSpecial0
+ .rodata.__FUNCTION__.5179
+                0x0000732c       0x14 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sysclk.o)
+ .rodata.pow_AxiClk_Change
+                0x00007340       0x20 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_clk.o)
+ .rodata.__FUNCTION__.5696
+                0x00007360       0x10 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_clk.o)
+ .rodata.str1.4
+                0x00007370       0x37 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_clk.o)
+                                 0x3c (size before relaxing)
+ *fill*         0x000073a7        0x1 
  .rodata.s_pmicI2cDev0
-                0x00007270       0x14 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/peripheral.a(hal_pmic_i2c.o)
+                0x000073a8       0x14 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/peripheral.a(hal_pmic_i2c.o)
  .rodata.str1.4
-                0x00007284       0x33 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_osa_tos.a(tos_irq.o)
+                0x000073bc       0x33 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_osa_tos.a(tos_irq.o)
                                  0x34 (size before relaxing)
- *fill*         0x000072b7        0x1 
+ *fill*         0x000073ef        0x1 
  .rodata.str1.4
-                0x000072b8       0x5d K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_arch_hal_misc.o)
+                0x000073f0       0x5d K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_arch_hal_misc.o)
                                  0x60 (size before relaxing)
- *fill*         0x00007315        0x3 
+ *fill*         0x0000744d        0x3 
  .rodata.str1.4
-                0x00007318       0x66 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_tos_tos_m0_tos_m0_misc.o)
+                0x00007450       0x66 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_tos_tos_m0_tos_m0_misc.o)
                                  0x68 (size before relaxing)
- *fill*         0x0000737e        0x2 
+ *fill*         0x000074b6        0x2 
  .rodata.str1.4
-                0x00007380       0x57 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_common_hal_misc.o)
+                0x000074b8       0x57 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_common_hal_misc.o)
                                  0x58 (size before relaxing)
- *fill*         0x000073d7        0x1 
+ *fill*         0x0000750f        0x1 
  .rodata.str1.4
-                0x000073d8       0x9c K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_kapi.o)
+                0x00007510       0x9c K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_kapi.o)
  .rodata.str1.4
-                0x00007474       0xb4 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_thread.o)
+                0x000075ac       0xb4 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_thread.o)
                                  0xf8 (size before relaxing)
  .rodata.str1.4
-                0x00007528       0x56 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_intr.o)
+                0x00007660       0x56 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_intr.o)
                                  0x9c (size before relaxing)
- *fill*         0x0000757e        0x2 
+ *fill*         0x000076b6        0x2 
  .rodata.str1.4
-                0x00007580       0x59 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_bitmap.o)
+                0x000076b8       0x59 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_bitmap.o)
                                  0x5c (size before relaxing)
- *fill*         0x000075d9        0x3 
+ *fill*         0x00007711        0x3 
  .rodata.str1.4
-                0x000075dc       0x58 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_sched.o)
+                0x00007714       0x58 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_sched.o)
                                  0xe4 (size before relaxing)
  .rodata.str1.4
-                0x00007634       0x59 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_cnt_sem.o)
+                0x0000776c       0x59 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_cnt_sem.o)
                                  0xa0 (size before relaxing)
- *fill*         0x0000768d        0x3 
+ *fill*         0x000077c5        0x3 
  .rodata.str1.4
-                0x00007690       0x57 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_mutex.o)
+                0x000077c8       0x57 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_mutex.o)
                                  0x9c (size before relaxing)
- *fill*         0x000076e7        0x1 
+ *fill*         0x0000781f        0x1 
  .rodata.str1.4
-                0x000076e8       0x5c K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_clock.o)
+                0x00007820       0x5c K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_clock.o)
                                  0xa0 (size before relaxing)
  *(.gnu.linkonce.r.*)
 
-.rodata1        0x00007748        0x0
-                0x00007748                . = .
+.rodata1        0x00007880        0x0
+                0x00007880                . = .
  *(.rodata1)
 
-.fixup          0x00007748        0x0
-                0x00007748                . = .
+.fixup          0x00007880        0x0
+                0x00007880                . = .
  *(.fixup)
 
 .gcc_except_table
-                0x00007748        0x0
-                0x00007748                . = .
+                0x00007880        0x0
+                0x00007880                . = .
  *(.gcc_except_table)
  *(.gcc_except_table.*)
 
-.eh_frame       0x00007748        0x8
-                0x00007748                . = .
-                0x00007748                __EH_FRAME_BEGIN__ = .
+.eh_frame       0x00007880        0x8
+                0x00007880                . = .
+                0x00007880                __EH_FRAME_BEGIN__ = .
  *(.eh_frame)
-                0x00007748                __FRAME_END__ = .
-                0x00007750                . = (. + 0x8)
- *fill*         0x00007748        0x8 00000000
+                0x00007880                __FRAME_END__ = .
+                0x00007888                . = (. + 0x8)
+ *fill*         0x00007880        0x8 00000000
 
-.got            0x00007750        0x0
-                0x00007750                . = .
+.got            0x00007888        0x0
+                0x00007888                . = .
  *(.got.plt)
  *(.got)
-                0x00007750                _GOT1_START_ = ABSOLUTE (.)
+                0x00007888                _GOT1_START_ = ABSOLUTE (.)
  *(.got1)
-                0x00007750                _GOT1_END_ = ABSOLUTE (.)
-                0x00007750                _GOT2_START_ = ABSOLUTE (.)
+                0x00007888                _GOT1_END_ = ABSOLUTE (.)
+                0x00007888                _GOT2_START_ = ABSOLUTE (.)
  *(.got2)
-                0x00007750                _GOT2_END_ = ABSOLUTE (.)
+                0x00007888                _GOT2_END_ = ABSOLUTE (.)
 
-.data           0x00007750      0xc54
-                0x00007750                __ram_data_start = ABSOLUTE (.)
+.data           0x00007888      0xc54
+                0x00007888                __ram_data_start = ABSOLUTE (.)
  *(.data*)
  .data.s_IcpRpmsgResource2M0
-                0x00007750       0xc0 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
+                0x00007888       0xc0 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
  .data.s_IcpRpmsgResource
-                0x00007810        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
-                0x00007810                s_IcpRpmsgResource
+                0x00007948        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
+                0x00007948                s_IcpRpmsgResource
  .data.int_PCUTbl
-                0x00007814       0x54 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_int.o)
-                0x00007814                int_PCUTbl
+                0x0000794c       0x54 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_int.o)
+                0x0000794c                int_PCUTbl
  .data.gHalTimer_ptDev
-                0x00007868        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_timer.o)
+                0x000079a0        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_timer.o)
  .data.g_check_psmchannel_id
-                0x0000786c        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_dma.o)
-                0x0000786c                g_check_psmchannel_id
+                0x000079a4        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_dma.o)
+                0x000079a4                g_check_psmchannel_id
  .data.s_dma0ChConfig
-                0x00007870       0x98 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_dma.o)
+                0x000079a8       0x98 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_dma.o)
  .data.gHalPow_ptDev
-                0x00007908        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
-                0x00007908                gHalPow_ptDev
+                0x00007a40        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
+                0x00007a40                gHalPow_ptDev
  .data.g_dcdc1pwrmode
-                0x0000790c        0x1 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
- *fill*         0x0000790d        0x3 
+                0x00007a44        0x1 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
+ *fill*         0x00007a45        0x3 
  .data.g_wdt_dev
-                0x00007910       0x34 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
+                0x00007a48       0x34 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
  .data.gClkNumMax
-                0x00007944        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_clkinfo.o)
-                0x00007944                gClkNumMax
+                0x00007a7c        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_clkinfo.o)
+                0x00007a7c                gClkNumMax
  .data.gClockInfoTable
-                0x00007948      0x8e8 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_clkinfo.o)
-                0x00007948                gClockInfoTable
+                0x00007a80      0x8e8 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_clkinfo.o)
+                0x00007a80                gClockInfoTable
  .data.g_IntTable
-                0x00008230      0x144 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(int_cfg.o)
-                0x00008230                g_IntTable
+                0x00008368      0x144 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(int_cfg.o)
+                0x00008368                g_IntTable
  .data.g_zTos_Dgb_Level
-                0x00008374        0x4 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(infra_buffer.o)
-                0x00008374                g_zTos_Dgb_Level
+                0x000084ac        0x4 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(infra_buffer.o)
+                0x000084ac                g_zTos_Dgb_Level
  .data.etext_addr
-                0x00008378        0x4 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(infra_buffer.o)
-                0x00008378                etext_addr
+                0x000084b0        0x4 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(infra_buffer.o)
+                0x000084b0                etext_addr
  .data.stext_addr
-                0x0000837c        0x4 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(infra_buffer.o)
-                0x0000837c                stext_addr
+                0x000084b4        0x4 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(infra_buffer.o)
+                0x000084b4                stext_addr
  .data._ZL14next_unique_id
-                0x00008380        0x2 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_thread.o)
- *fill*         0x00008382        0x2 
+                0x000084b8        0x2 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_thread.o)
+ *fill*         0x000084ba        0x2 
  .data.cyg_scheduler_sched_lock
-                0x00008384        0x4 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_sched.o)
-                0x00008384                cyg_scheduler_sched_lock
+                0x000084bc        0x4 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_sched.o)
+                0x000084bc                cyg_scheduler_sched_lock
  .data.rtc_resolution
-                0x00008388        0x8 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_clock.o)
-                0x00008388                rtc_resolution
+                0x000084c0        0x8 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_clock.o)
+                0x000084c0                rtc_resolution
  *(.data1)
  *(.gnu.linkonce.d.*)
-                0x00008390                . = ALIGN (0x4)
+                0x000084c8                . = ALIGN (0x4)
  *(SORT(.ecos.table.*))
-                0x00008390                . = ALIGN (0x4)
-                0x00008390                __init_array_start__ = ABSOLUTE (.)
+                0x000084c8                . = ALIGN (0x4)
+                0x000084c8                __init_array_start__ = ABSOLUTE (.)
  *(SORT(.init_array.*))
  .init_array.11000
-                0x00008390        0x4 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_sched.o)
+                0x000084c8        0x4 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_sched.o)
  .init_array.12000
-                0x00008394        0x4 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_intr.o)
+                0x000084cc        0x4 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_intr.o)
  .init_array.14000
-                0x00008398        0x4 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_clock.o)
+                0x000084d0        0x4 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_clock.o)
  .init_array.15000
-                0x0000839c        0x4 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_thread.o)
+                0x000084d4        0x4 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_thread.o)
  *(SORT(.init_array))
- .init_array    0x000083a0        0x4 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_kapi.o)
-                0x000083a4                __init_array_end__ = ABSOLUTE (.)
+ .init_array    0x000084d8        0x4 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_kapi.o)
+                0x000084dc                __init_array_end__ = ABSOLUTE (.)
  *(.dynamic)
  *(.sdata*)
  *(.gnu.linkonce.s.*)
-                0x000083a4                . = ALIGN (0x4)
+                0x000084dc                . = ALIGN (0x4)
  *(.2ram.*)
-                0x00007750                __rom_data_start = LOADADDR (.data)
-                0x000083a4                __ram_data_end = .
-                0x000083a4                PROVIDE (__ram_data_end, .)
-                0x000083a4                _edata = .
-                0x000083a4                PROVIDE (edata, .)
-                0x000083a4                PROVIDE (__rom_data_end, (LOADADDR (.data) + SIZEOF (.data)))
+                0x00007888                __rom_data_start = LOADADDR (.data)
+                0x000084dc                __ram_data_end = .
+                0x000084dc                PROVIDE (__ram_data_end, .)
+                0x000084dc                _edata = .
+                0x000084dc                PROVIDE (edata, .)
+                0x000084dc                PROVIDE (__rom_data_end, (LOADADDR (.data) + SIZEOF (.data)))
 
-.igot.plt       0x000083a4        0x0
+.igot.plt       0x000084dc        0x0
  .igot.plt      0x00000000        0x0 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/vectors.o
 
-.bss            0x000083a8     0x27b4
-                0x000083a8                __bss_start = ABSOLUTE (.)
+.bss            0x000084e0     0x27b4
+                0x000084e0                __bss_start = ABSOLUTE (.)
  *(.scommon)
  *(.dynsbss)
  *(.sbss*)
@@ -3027,227 +3033,227 @@
  *(.dynbss)
  *(.bss*)
  .bss.softlock_desc
-                0x000083a8       0x80 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_spinlock.o)
+                0x000084e0       0x80 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_spinlock.o)
  .bss.s_hwSpinlockMsr
-                0x00008428        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_spinlock.o)
+                0x00008560        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_spinlock.o)
  .bss.dwSendPos
-                0x0000842c       0x78 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
+                0x00008564       0x78 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
  .bss.rpmsg_cache_buffer
-                0x000084a4      0x200 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
- .bss.IcpSem    0x000086a4       0xf0 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
-                0x000086a4                IcpSem
+                0x000085dc      0x200 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
+ .bss.IcpSem    0x000087dc       0xf0 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
+                0x000087dc                IcpSem
  .bss.s_RpMsgCallbackList
-                0x00008794       0x78 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
-                0x00008794                s_RpMsgCallbackList
+                0x000088cc       0x78 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
+                0x000088cc                s_RpMsgCallbackList
  .bss.RpMsg_ChMutex
-                0x0000880c       0x24 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
-                0x0000880c                RpMsg_ChMutex
- .bss.g_IntDev  0x00008830      0x108 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_int.o)
-                0x00008830                g_IntDev
+                0x00008944       0x24 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
+                0x00008944                RpMsg_ChMutex
+ .bss.g_IntDev  0x00008968      0x108 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_int.o)
+                0x00008968                g_IntDev
  .bss.interrupt
-                0x00008938      0x280 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_int.o)
+                0x00008a70      0x280 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_int.o)
  .bss.m0_intmask_save
-                0x00008bb8        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_int.o)
+                0x00008cf0        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_int.o)
  .bss.gHalTimerDev
-                0x00008bbc       0x6c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_timer.o)
+                0x00008cf4       0x6c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_timer.o)
  .bss.g_save_restore_flow
-                0x00008c28        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_dma.o)
-                0x00008c28                g_save_restore_flow
- .bss.gDmaDev   0x00008c2c       0x64 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_dma.o)
-                0x00008c2c                gDmaDev
+                0x00008d60        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_dma.o)
+                0x00008d60                g_save_restore_flow
+ .bss.gDmaDev   0x00008d64       0x64 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_dma.o)
+                0x00008d64                gDmaDev
  .bss.g_PsmIdleThreadStack
-                0x00008c90      0x800 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
+                0x00008dc8      0x800 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
  .bss.g_ChipSleepTime
-                0x00009490        0x8 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
+                0x000095c8        0x8 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
  .bss.g_ChipSleepMode
-                0x00009498        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
+                0x000095d0        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
  .bss.g_M0SleepFlag
-                0x0000949c        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
+                0x000095d4        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
  .bss.g_DdrSaveRestoreIram0
-                0x000094a0        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
-                0x000094a0                g_DdrSaveRestoreIram0
+                0x000095d8        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
+                0x000095d8                g_DdrSaveRestoreIram0
  .bss.g_ChipstandbyCnt
-                0x000094a4        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
-                0x000094a4                g_ChipstandbyCnt
+                0x000095dc        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
+                0x000095dc                g_ChipstandbyCnt
  .bss.g_FlashMode
-                0x000094a8        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
-                0x000094a8                g_FlashMode
- *fill*         0x000094ac        0x4 
+                0x000095e0        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
+                0x000095e0                g_FlashMode
+ *fill*         0x000095e4        0x4 
  .bss.g_PsmIdleThread
-                0x000094b0       0x68 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
+                0x000095e8       0x68 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
  .bss.g_PdcoreEn
-                0x00009518        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
-                0x00009518                g_PdcoreEn
+                0x00009650        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
+                0x00009650                g_PdcoreEn
  .bss.g_Iram0BaseAddr
-                0x0000951c        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
-                0x0000951c                g_Iram0BaseAddr
+                0x00009654        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
+                0x00009654                g_Iram0BaseAddr
  .bss.gHalPowDev
-                0x00009520       0x1c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
+                0x00009658       0x1c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
  .bss.g_ChipsleepCnt
-                0x0000953c        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
-                0x0000953c                g_ChipsleepCnt
+                0x00009674        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
+                0x00009674                g_ChipsleepCnt
  .bss.g_PsmIdleThreadHandle
-                0x00009540        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
+                0x00009678        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
  .bss.ddrRegInRam
-                0x00009544       0xdc K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_ddr_syno_inno.o)
+                0x0000967c       0xdc K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_ddr_syno_inno.o)
  .bss.g_DdrSize
-                0x00009620        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_ddr_syno_inno.o)
+                0x00009758        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_ddr_syno_inno.o)
  .bss.g_DdrAutoDis
-                0x00009624        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_debug.o)
-                0x00009624                g_DdrAutoDis
+                0x0000975c        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_debug.o)
+                0x0000975c                g_DdrAutoDis
  .bss.g_PdddrSdDis
-                0x00009628        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_debug.o)
-                0x00009628                g_PdddrSdDis
+                0x00009760        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_debug.o)
+                0x00009760                g_PdddrSdDis
  .bss.g_26mClkOffDis
-                0x0000962c        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_debug.o)
-                0x0000962c                g_26mClkOffDis
+                0x00009764        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_debug.o)
+                0x00009764                g_26mClkOffDis
  .bss.lspCrmRegInRam
-                0x00009630       0x64 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
+                0x00009768       0x64 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
  .bss.g_Clken_Pdcore
-                0x00009694       0x54 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
+                0x000097cc       0x54 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
  .bss.stdCrmRegInRam
-                0x000096e8      0x108 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
+                0x00009820      0x108 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
  .bss.pinMuxRegInRam
-                0x000097f0       0x38 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
+                0x00009928       0x38 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
  .bss.sdRegInRam
-                0x00009828       0x64 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
+                0x00009960       0x64 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
  .bss.timerRegInRam
-                0x0000988c       0x3c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
+                0x000099c4       0x3c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
  .bss.spifcRegInRam
-                0x000098c8       0x24 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
+                0x00009a00       0x24 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
  .bss.wdtRegInRam
-                0x000098ec       0x38 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
+                0x00009a24       0x38 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
  .bss.icpRegInRam
-                0x00009924       0xa0 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
+                0x00009a5c       0xa0 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
  .bss.i2CRegInRam
-                0x000099c4       0x28 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
+                0x00009afc       0x28 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
  .bss.uartRegInRam
-                0x000099ec       0x3c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
+                0x00009b24       0x3c K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
  .bss.spiRegInRam
-                0x00009a28       0x28 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
+                0x00009b60       0x28 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
  .bss.nandRegInRam
-                0x00009a50       0x68 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
+                0x00009b88       0x68 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
  .bss.vouRegInRam
-                0x00009ab8       0x10 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
+                0x00009bf0       0x10 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
  .bss.dmaRegInRam
-                0x00009ac8      0x2f8 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
- .bss.s_i2cBus  0x00009dc0       0x20 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_i2c.o)
- .bss.s_mutex_tmp.5386
-                0x00009de0        0xc K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_i2c.o)
- .bss.s_pmutex_tmp.5387
-                0x00009dec        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_i2c.o)
- .bss.s_pmutex_tmp.5396
-                0x00009df0        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_i2c.o)
- .bss.s_mutex_tmp.5395
-                0x00009df4        0xc K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_i2c.o)
- .bss.g_flag1   0x00009e00       0x10 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
-                0x00009e00                g_flag1
- .bss.g_flag2   0x00009e10        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
-                0x00009e10                g_flag2
- .bss.g_flag0   0x00009e14        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
-                0x00009e14                g_flag0
+                0x00009c00      0x2f8 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
+ .bss.s_i2cBus  0x00009ef8       0x20 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_i2c.o)
+ .bss.s_mutex_tmp.5391
+                0x00009f18        0xc K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_i2c.o)
+ .bss.s_pmutex_tmp.5392
+                0x00009f24        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_i2c.o)
+ .bss.s_mutex_tmp.5400
+                0x00009f28        0xc K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_i2c.o)
+ .bss.s_pmutex_tmp.5401
+                0x00009f34        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_i2c.o)
+ .bss.g_flag0   0x00009f38        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
+                0x00009f38                g_flag0
+ .bss.g_flag2   0x00009f3c        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
+                0x00009f3c                g_flag2
+ .bss.g_flag1   0x00009f40       0x10 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
+                0x00009f40                g_flag1
  .bss.global_wdt_count
-                0x00009e18        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
-                0x00009e18                global_wdt_count
+                0x00009f50        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
+                0x00009f50                global_wdt_count
  .bss.g_apVolExp
-                0x00009e1c        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_clk.o)
-                0x00009e1c                g_apVolExp
+                0x00009f54        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_clk.o)
+                0x00009f54                g_apVolExp
  .bss.g_psVolExp
-                0x00009e20        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_clk.o)
-                0x00009e20                g_psVolExp
+                0x00009f58        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_clk.o)
+                0x00009f58                g_psVolExp
  .bss.g_phyVolExp
-                0x00009e24        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_clk.o)
-                0x00009e24                g_phyVolExp
+                0x00009f5c        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_clk.o)
+                0x00009f5c                g_phyVolExp
  .bss.g_apAxiExp
-                0x00009e28        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_clk.o)
-                0x00009e28                g_apAxiExp
+                0x00009f60        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_clk.o)
+                0x00009f60                g_apAxiExp
  .bss.g_psAxiExp
-                0x00009e2c        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_clk.o)
-                0x00009e2c                g_psAxiExp
+                0x00009f64        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_clk.o)
+                0x00009f64                g_psAxiExp
  .bss.g_phyAxiExp
-                0x00009e30        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_clk.o)
-                0x00009e30                g_phyAxiExp
+                0x00009f68        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_clk.o)
+                0x00009f68                g_phyAxiExp
  .bss.g_zDrvAssertInfo
-                0x00009e34       0x14 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/public.a(hal_assert.o)
+                0x00009f6c       0x14 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/public.a(hal_assert.o)
  .bss.tos_except
-                0x00009e48       0x18 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_osa_tos.a(tos_except_cortexm.o)
+                0x00009f80       0x18 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_osa_tos.a(tos_except_cortexm.o)
  .bss.s_zLogCtrl_InitFlag
-                0x00009e60        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_sup.a(sup_agent_logctrl.o)
+                0x00009f98        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_sup.a(sup_agent_logctrl.o)
  .bss.ramdump_ret
-                0x00009e64        0x8 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_sup.a(sup_ramdump_client_lib.o)
+                0x00009f9c        0x8 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_sup.a(sup_ramdump_client_lib.o)
  .bss.ramdump_init_flag
-                0x00009e6c        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_sup.a(sup_ramdump_client_lib.o)
+                0x00009fa4        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_sup.a(sup_ramdump_client_lib.o)
  .bss.ramdump_count
-                0x00009e70        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_sup.a(sup_ramdump_client_lib.o)
+                0x00009fa8        0x4 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_sup.a(sup_ramdump_client_lib.o)
  .bss.tos_isr_level
-                0x00009e74        0x4 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_arch_hal_misc.o)
-                0x00009e74                tos_isr_level
- .bss._period   0x00009e78        0x4 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_tos_var_tos_misc.o)
+                0x00009fac        0x4 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_arch_hal_misc.o)
+                0x00009fac                tos_isr_level
+ .bss._period   0x00009fb0        0x4 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_tos_var_tos_misc.o)
  .bss._ZL30cyg_kapi_check_structure_sizes
-                0x00009e7c        0x4 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_kapi.o)
+                0x00009fb4        0x4 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_kapi.o)
  .bss._ZL17idle_thread_stack
-                0x00009e80      0x800 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_thread.o)
+                0x00009fb8      0x800 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_thread.o)
  .bss.idle_thread
-                0x0000a680       0x68 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_thread.o)
-                0x0000a680                idle_thread
+                0x0000a7b8       0x68 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_thread.o)
+                0x0000a7b8                idle_thread
  .bss._ZN10Cyg_Thread11thread_listE
-                0x0000a6e8        0x4 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_thread.o)
-                0x0000a6e8                Cyg_Thread::thread_list
+                0x0000a820        0x4 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_thread.o)
+                0x0000a820                Cyg_Thread::thread_list
  .bss.idle_thread_loops
-                0x0000a6ec        0x4 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_thread.o)
-                0x0000a6ec                idle_thread_loops
+                0x0000a824        0x4 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_thread.o)
+                0x0000a824                idle_thread_loops
  .bss._ZN13Cyg_Interrupt9dsr_tableE
-                0x0000a6f0      0x200 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_intr.o)
-                0x0000a6f0                Cyg_Interrupt::dsr_table
+                0x0000a828      0x200 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_intr.o)
+                0x0000a828                Cyg_Interrupt::dsr_table
  .bss._ZN13Cyg_Interrupt26interrupt_disable_spinlockE
-                0x0000a8f0        0x4 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_intr.o)
-                0x0000a8f0                Cyg_Interrupt::interrupt_disable_spinlock
+                0x0000aa28        0x4 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_intr.o)
+                0x0000aa28                Cyg_Interrupt::interrupt_disable_spinlock
  .bss._ZN13Cyg_Interrupt14dsr_table_tailE
-                0x0000a8f4        0x4 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_intr.o)
-                0x0000a8f4                Cyg_Interrupt::dsr_table_tail
+                0x0000aa2c        0x4 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_intr.o)
+                0x0000aa2c                Cyg_Interrupt::dsr_table_tail
  .bss._ZN13Cyg_Interrupt14dsr_table_headE
-                0x0000a8f8        0x4 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_intr.o)
-                0x0000a8f8                Cyg_Interrupt::dsr_table_head
+                0x0000aa30        0x4 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_intr.o)
+                0x0000aa30                Cyg_Interrupt::dsr_table_head
  .bss._ZN18Cyg_Scheduler_Base15need_rescheduleE
-                0x0000a8fc        0x4 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_sched.o)
-                0x0000a8fc                Cyg_Scheduler_Base::need_reschedule
+                0x0000aa34        0x4 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_sched.o)
+                0x0000aa34                Cyg_Scheduler_Base::need_reschedule
  .bss._ZN13Cyg_Scheduler9schedulerE
-                0x0000a900       0x84 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_sched.o)
-                0x0000a900                Cyg_Scheduler::scheduler
+                0x0000aa38       0x84 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_sched.o)
+                0x0000aa38                Cyg_Scheduler::scheduler
  .bss._ZN18Cyg_Scheduler_Base15thread_switchesE
-                0x0000a984        0x4 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_sched.o)
-                0x0000a984                Cyg_Scheduler_Base::thread_switches
+                0x0000aabc        0x4 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_sched.o)
+                0x0000aabc                Cyg_Scheduler_Base::thread_switches
  .bss._ZN18Cyg_Scheduler_Base14current_threadE
-                0x0000a988        0x4 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_sched.o)
-                0x0000a988                Cyg_Scheduler_Base::current_thread
+                0x0000aac0        0x4 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_sched.o)
+                0x0000aac0                Cyg_Scheduler_Base::current_thread
  .bss._ZN9Cyg_Clock15real_time_clockE
-                0x0000a98c        0x4 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_clock.o)
-                0x0000a98c                Cyg_Clock::real_time_clock
+                0x0000aac4        0x4 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_clock.o)
+                0x0000aac4                Cyg_Clock::real_time_clock
  .bss._ZN17Cyg_RealTimeClock3rtcE
-                0x0000a990       0x30 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_clock.o)
-                0x0000a990                Cyg_RealTimeClock::rtc
+                0x0000aac8       0x30 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_clock.o)
+                0x0000aac8                Cyg_RealTimeClock::rtc
  *(.gnu.linkonce.b.*)
  *(COMMON)
- COMMON         0x0000a9c0      0x198 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_arch_hal_misc.o)
-                0x0000a9c0                hal_interrupt_handlers
-                0x0000aa48                hal_interrupt_data
-                0x0000aad0                hal_interrupt_objects
- COMMON         0x0000ab58        0x4 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_tos_var_tos_misc.o)
-                0x0000ab58                hal_cortexm_systick_clock
-                0x0000ab5c                __bss_end = ABSOLUTE (.)
+ COMMON         0x0000aaf8      0x198 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_arch_hal_misc.o)
+                0x0000aaf8                hal_interrupt_handlers
+                0x0000ab80                hal_interrupt_data
+                0x0000ac08                hal_interrupt_objects
+ COMMON         0x0000ac90        0x4 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_tos_var_tos_misc.o)
+                0x0000ac90                hal_cortexm_systick_clock
+                0x0000ac94                __bss_end = ABSOLUTE (.)
 
-.sram           0x0000ab60        0x0
-                0x0000ab60                __sram_data_start = ABSOLUTE (.)
+.sram           0x0000ac98        0x0
+                0x0000ac98                __sram_data_start = ABSOLUTE (.)
  *(.sram*)
-                0x0000ab60                . = ALIGN (0x4)
-                0x0000ab60                __srom_data_start = LOADADDR (.sram)
-                0x0000ab60                __sram_data_end = .
-                0x0000ab60                PROVIDE (__sram_data_end, .)
-                0x0000ab60                PROVIDE (__srom_data_end, (LOADADDR (.sram) + SIZEOF (.sram)))
-                0x0000ab60                __heap1 = ALIGN (0x8)
-                0x0000ab60                . = ALIGN (0x4)
-                0x0000ab60                _end = .
-                0x0000ab60                PROVIDE (end, .)
+                0x0000ac98                . = ALIGN (0x4)
+                0x0000ac98                __srom_data_start = LOADADDR (.sram)
+                0x0000ac98                __sram_data_end = .
+                0x0000ac98                PROVIDE (__sram_data_end, .)
+                0x0000ac98                PROVIDE (__srom_data_end, (LOADADDR (.sram) + SIZEOF (.sram)))
+                0x0000ac98                __heap1 = ALIGN (0x8)
+                0x0000ac98                . = ALIGN (0x4)
+                0x0000ac98                _end = .
+                0x0000ac98                PROVIDE (end, .)
 OUTPUT(K:/rpm/project/zx297520v3/bin/tos/modem_7520v3/evb_cpurpm.elf elf32-littlearm)
 
 .ARM.attributes
@@ -3392,47 +3398,47 @@
  .comment       0x00000000       0x18 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_mutex.o)
  .comment       0x00000000       0x18 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_clock.o)
 
-.debug_ranges   0x00000000     0x4210
+.debug_ranges   0x00000000     0x4280
  .debug_ranges  0x00000000       0x10 K:/rpm/project/zx297520v3/obj/tos/all/debug/appstart/SysEntry.o
  .debug_ranges  0x00000010       0x18 K:/rpm/project/zx297520v3/obj/tos/all/debug/appstart/appstart.o
  .debug_ranges  0x00000028       0x80 K:/rpm/project/zx297520v3/obj/tos/all/debug/os/tos/tos_irq.o
  .debug_ranges  0x000000a8       0x10 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_init.o)
- .debug_ranges  0x000000b8       0xb8 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_spinlock.o)
- .debug_ranges  0x00000170       0x18 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sys.o)
- .debug_ranges  0x00000188      0x1d0 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
- .debug_ranges  0x00000358       0x10 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_gpio.o)
- .debug_ranges  0x00000368      0x108 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_int.o)
- .debug_ranges  0x00000470       0x68 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_timer.o)
- .debug_ranges  0x000004d8       0xb8 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_dma.o)
- .debug_ranges  0x00000590      0x138 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
- .debug_ranges  0x000006c8      0x170 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_ddr_syno_inno.o)
- .debug_ranges  0x00000838       0x30 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_debug.o)
- .debug_ranges  0x00000868       0xf8 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
- .debug_ranges  0x00000960      0x290 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_i2c.o)
- .debug_ranges  0x00000bf0       0x98 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
- .debug_ranges  0x00000c88       0x88 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sysclk.o)
- .debug_ranges  0x00000d10       0xc8 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_clk.o)
- .debug_ranges  0x00000dd8       0x98 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/peripheral.a(hal_pm.o)
- .debug_ranges  0x00000e70       0x50 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/peripheral.a(hal_pmic_i2c.o)
- .debug_ranges  0x00000ec0       0x18 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/public.a(hal_assert.o)
- .debug_ranges  0x00000ed8       0x30 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_osa_tos.a(tos_except_cortexm.o)
- .debug_ranges  0x00000f08       0xa8 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_osa_tos.a(tos_irq.o)
- .debug_ranges  0x00000fb0       0x18 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_sup.a(sup_agent_logctrl.o)
- .debug_ranges  0x00000fc8      0x1a8 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_sup.a(sup_ramdump_client_lib.o)
- .debug_ranges  0x00001170       0xd8 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_arch_hal_misc.o)
- .debug_ranges  0x00001248       0x38 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_tos_var_tos_misc.o)
- .debug_ranges  0x00001280       0x18 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_tos_tos_m0_tos_m0_misc.o)
- .debug_ranges  0x00001298       0x20 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_common_hal_misc.o)
- .debug_ranges  0x000012b8       0x10 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(infra_startup.o)
- .debug_ranges  0x000012c8       0x28 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(infra_buffer.o)
- .debug_ranges  0x000012f0      0xd78 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_kapi.o)
- .debug_ranges  0x00002068      0xae0 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_thread.o)
- .debug_ranges  0x00002b48      0x298 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_intr.o)
- .debug_ranges  0x00002de0      0x108 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_bitmap.o)
- .debug_ranges  0x00002ee8      0x2f0 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_sched.o)
- .debug_ranges  0x000031d8      0x320 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_cnt_sem.o)
- .debug_ranges  0x000034f8      0x7b0 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_mutex.o)
- .debug_ranges  0x00003ca8      0x568 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_clock.o)
+ .debug_ranges  0x000000b8      0x120 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_spinlock.o)
+ .debug_ranges  0x000001d8       0x18 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sys.o)
+ .debug_ranges  0x000001f0      0x1d0 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(icp_rpMsg.o)
+ .debug_ranges  0x000003c0       0x18 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_gpio.o)
+ .debug_ranges  0x000003d8      0x108 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_int.o)
+ .debug_ranges  0x000004e0       0x68 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_timer.o)
+ .debug_ranges  0x00000548       0xb8 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_dma.o)
+ .debug_ranges  0x00000600      0x138 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow.o)
+ .debug_ranges  0x00000738      0x170 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_ddr_syno_inno.o)
+ .debug_ranges  0x000008a8       0x30 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_debug.o)
+ .debug_ranges  0x000008d8       0xf8 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pd_context.o)
+ .debug_ranges  0x000009d0      0x290 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_i2c.o)
+ .debug_ranges  0x00000c60       0x98 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_wdt.o)
+ .debug_ranges  0x00000cf8       0x88 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_sysclk.o)
+ .debug_ranges  0x00000d80       0xc8 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a(hal_pow_clk.o)
+ .debug_ranges  0x00000e48       0x98 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/peripheral.a(hal_pm.o)
+ .debug_ranges  0x00000ee0       0x50 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/peripheral.a(hal_pmic_i2c.o)
+ .debug_ranges  0x00000f30       0x18 K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/public.a(hal_assert.o)
+ .debug_ranges  0x00000f48       0x30 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_osa_tos.a(tos_except_cortexm.o)
+ .debug_ranges  0x00000f78       0xa8 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_osa_tos.a(tos_irq.o)
+ .debug_ranges  0x00001020       0x18 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_sup.a(sup_agent_logctrl.o)
+ .debug_ranges  0x00001038      0x1a8 K:/rpm/project/zx297520v3/lib/tos/all/debug/plat/plat_sup.a(sup_ramdump_client_lib.o)
+ .debug_ranges  0x000011e0       0xd8 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_arch_hal_misc.o)
+ .debug_ranges  0x000012b8       0x38 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_tos_var_tos_misc.o)
+ .debug_ranges  0x000012f0       0x18 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_cortexm_tos_tos_m0_tos_m0_misc.o)
+ .debug_ranges  0x00001308       0x20 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(hal_common_hal_misc.o)
+ .debug_ranges  0x00001328       0x10 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(infra_startup.o)
+ .debug_ranges  0x00001338       0x28 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(infra_buffer.o)
+ .debug_ranges  0x00001360      0xd78 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_kapi.o)
+ .debug_ranges  0x000020d8      0xae0 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_thread.o)
+ .debug_ranges  0x00002bb8      0x298 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_intr.o)
+ .debug_ranges  0x00002e50      0x108 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_bitmap.o)
+ .debug_ranges  0x00002f58      0x2f0 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_sched.o)
+ .debug_ranges  0x00003248      0x320 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_cnt_sem.o)
+ .debug_ranges  0x00003568      0x7b0 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_mutex.o)
+ .debug_ranges  0x00003d18      0x568 K:/rpm/os/tos/lib/debug/armv6-m-gcc/thumb/libtarget.a(kernel_clock.o)
 
 link component sizes 
 
@@ -3444,10 +3450,10 @@
            0            0            0  K:/rpm/project/zx297520v3/obj/tos/all/debug/os/tos/tos_pool.o
           48            0            0  K:/rpm/project/zx297520v3/obj/tos/all/debug/os/tos/tos_irq.o
           72            0            0  hal_init.o
-         780            0          132  hal_spinlock.o
+         956            0          132  hal_spinlock.o
           12            0            0  hal_sys.o
         1953          196         1028  icp_rpMsg.o
-          76            0            0  hal_gpio.o
+         188            0            0  hal_gpio.o
         1011           84          908  hal_int.o
          152            4          108  hal_timer.o
         1231          156          104  hal_dma.o
@@ -3456,7 +3462,7 @@
          392            0           12  hal_pow_debug.o
         4484            0         1936  hal_pd_context.o
          823            0           64  hal_i2c.o
-        1967           52           28  hal_wdt.o
+        1995           52           28  hal_wdt.o
         1362            0            0  hal_sysclk.o
            0         2284            0  hal_clkinfo.o
            0          324            0  int_cfg.o
@@ -3499,7 +3505,7 @@
            0            0            0  _clzsi2.o
 
 ---------------------------------------------------------
-       20224         3105         6792  K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a
+       20540         3105         6792  K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/chip.a
          104            0            0  K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/peripheral.a
           64            0           20  K:/rpm/project/zx297520v3/lib/tos/all/debug/drv/public.a
            0            0            0  K:/rpm/project/zx297520v3/lib/tos/all/debug/appstart/appstart.a
@@ -3509,6 +3515,6 @@
          228            0            0  /cygdrive/k/build/compiler/gcc_arm/arm-eabi/bin/../lib/gcc/arm-eabi/4.7.1/thumb/libgcc.a
 
 ===============================================================
-Total text size :        30032 
+Total text size :        30348 
 Total data size :         3156 
 Total bss  size :        10172 
diff --git a/Uboot/tools/SignTool/SignImage b/Uboot/tools/SignTool/SignImage
index 552a4de..0b03078 100755
--- a/Uboot/tools/SignTool/SignImage
+++ b/Uboot/tools/SignTool/SignImage
Binary files differ
diff --git a/Uboot/tools/SignTool/SignImage.exe b/Uboot/tools/SignTool/SignImage.exe
index 6905638..7a58d11 100755
--- a/Uboot/tools/SignTool/SignImage.exe
+++ b/Uboot/tools/SignTool/SignImage.exe
Binary files differ
diff --git a/Uboot/tools/SignTool/private.k b/Uboot/tools/SignTool/private.k
new file mode 100755
index 0000000..9b72371
--- /dev/null
+++ b/Uboot/tools/SignTool/private.k
Binary files differ