Merge "Revert "[Feature][T106_eSDK]T106-V2.01.01.02P56U06.AP.15.11_CAP.15.11(SDK4.6)diff_16.08(SDK4.7)""
diff --git a/Uboot/boot/common/src/uboot/arch/arm/lib/Makefile b/Uboot/boot/common/src/uboot/arch/arm/lib/Makefile
deleted file mode 100755
index b5625a6..0000000
--- a/Uboot/boot/common/src/uboot/arch/arm/lib/Makefile
+++ /dev/null
@@ -1,91 +0,0 @@
-#
-# (C) Copyright 2002-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# See file CREDITS for list of people who contributed to this
-# project.
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License as
-# published by the Free Software Foundation; either version 2 of
-# the License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
-# MA 02111-1307 USA
-#
-
-include $(TOPDIR)/config.mk
-
-LIB	= $(obj)lib$(ARCH).o
-LIBGCC	= $(obj)libgcc.o
-
-ifndef CONFIG_SPL_BUILD
-GLSOBJS	+= _ashldi3.o
-GLSOBJS	+= _ashrdi3.o
-GLSOBJS	+= _divsi3.o
-GLSOBJS	+= _lshrdi3.o
-GLSOBJS	+= _modsi3.o
-GLSOBJS	+= _udivsi3.o
-GLSOBJS	+= _umodsi3.o
-
-GLCOBJS	+= div0.o
-
-COBJS-y	+= board.o
-
-COBJS-y	+= bootm.o
-COBJS-y	+= cache.o
-COBJS-y	+= cache-cp15.o
-COBJS-$(CONFIG_SYS_L2_PL310) += cache-pl310.o
-COBJS-y	+= interrupts.o
-COBJS-y	+= reset.o
-SOBJS-$(CONFIG_USE_ARCH_MEMSET) += memset.o
-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"
-CFLAGS += -DLYNQ_VERSION=\"$(LYNQ_CONFIG_VERSION)\"
-LYNQ_CONFIG_COMMITID = "c33b177c8b861ee957b6c8b0dea003278a3671d6"
-CFLAGS += -DLYNQ_COMMITID=\"$(LYNQ_CONFIG_COMMITID)\"
-#xf.li@2023.04.14 modify for ZXW-25 end
-SRCS	:= $(GLSOBJS:.o=.S) $(GLCOBJS:.o=.c) \
-	   $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c)
-OBJS	:= $(addprefix $(obj),$(SOBJS-y) $(COBJS-y))
-LGOBJS	:= $(addprefix $(obj),$(GLSOBJS)) \
-	   $(addprefix $(obj),$(GLCOBJS))
-
-# Always build libarm.o
-TARGETS	:= $(LIB)
-
-# Build private libgcc only when asked for
-ifdef USE_PRIVATE_LIBGCC
-TARGETS	+= $(LIBGCC)
-endif
-
-# For EABI conformant tool chains, provide eabi_compat()
-ifneq (,$(findstring -mabi=aapcs-linux,$(PLATFORM_CPPFLAGS)))
-TARGETS	+= $(obj)eabi_compat.o
-endif
-
-all:	$(TARGETS)
-
-$(LIB):	$(obj).depend $(OBJS)
-	$(call cmd_link_o_target, $(OBJS))
-
-$(LIBGCC): $(obj).depend $(LGOBJS)
-	$(call cmd_link_o_target, $(LGOBJS))
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/Uboot/boot/common/src/uboot/downloader/cmd_compat_write.c b/Uboot/boot/common/src/uboot/downloader/cmd_compat_write.c
deleted file mode 100755
index 4d5e339..0000000
--- a/Uboot/boot/common/src/uboot/downloader/cmd_compat_write.c
+++ /dev/null
@@ -1,169 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2016, ZIXC Corporation.
- *
- * File Name:cmd_compat_write.c
- * File Mark:
- * Description:
- * Others:
- * Version:       1.0
- * Author:        zangxiaofeng
- * Date:          2013-3-13
- * History 1:
- *     Date:
- *     Version:
- *     Author:
- *     Modification:
- * History 2:
-  ********************************************************************************/
-
-
-/****************************************************************************
-* 	                                     Include files
-****************************************************************************/
-#include <common.h>
-#include <command.h>
-#include <net.h>
-#include <jffs2/load_kernel.h>
-#include "downloader_config.h"
-#include "downloader_nand.h"
-#include "downloader_serial.h"
-#include "errno.h"
-#include <boot_mode.h>
-#include "pub_flags.h"
-
-/****************************************************************************
-*							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}};
-int flags_partiton_write = 0;
-
-extern int g_iftype;
-extern partition_table_t * g_partition_table_dl;
-/*******************************************************************************
- * Function:do_compat_write
- * Description:
- * Parameters:
- *	 Input:
- *
- *	 Output:
- *
- * Returns:
- *
- *
- * Others:
- ********************************************************************************/
- int do_compat_write(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
-{
-    partition_entry_t *part = NULL;
-    char *par = NULL;
-    char ack[64]={0};
-	unsigned int offset = 0;
-	unsigned int size = 0;
-	unsigned int ret = 0;
-	unsigned int i = 0;
-	flags_partiton_write = 1;
-	
-	if(argc<4)
-    {
-        return cmd_usage(cmdtp);
-    }
-
-	par = argv[1];
-    offset = (unsigned int)simple_strtoul (argv[2], NULL, 16);
-	size = (unsigned int)simple_strtoul (argv[3], NULL, 16);
-	part = downloader_get_part_dl(par);
-	if(part == NULL)
-	{
-		sprintf(ack,"FAIL INVALID PARTITION TYPE");
-        downloader_serial_write(ack, strlen(ack)+1);
-	    return -1;
-	}
-
-	/*record image size*/
-	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 defined (CONFIG_ZX297520V3E_VEHICLE_DC) || defined (CONFIG_ZX297520V3E_VEHICLE_DC_REF)
-	if(g_nor_flag == 1)
-	{
-        if(memcmp(par,"zloader",7) == 0)
-		{
-			g_iftype = IF_TYPE_NOR;
-			nand_init();
-			ret = do_nor_write(part, par, offset,size);	
-			/*Çл»³õʼ»¯spi_nand*/
-			g_iftype = IF_TYPE_SPI_NAND;
-			nand_init();
-			downloader_nand_erase(part,part->part_size);
-			memcpy((char *)(DOWNLOADER_BUFFER_BASE+0x8000),g_partition_table_dl,4096);
-	        ret = downloader_nand_write(part, 0, 0x9000,(unsigned char *)DOWNLOADER_BUFFER_BASE);
-			return ret;
-		}
-	}
-#endif
-
-	if((read_boot_flashtype() == IF_TYPE_NOR) 
-		&& (strcmp((const char *)part->part_type,"nand") == 0))
-	{
-        ret = do_nor_write(part, par, offset,size);
-		return ret;
-	}
-    
-	if(strcmp((const char *)part->part_type,"nand") == 0)
-	{
-	    ret = do_nand_write(part, par, offset, size);
-		return ret;
-	}
-	else if (strcmp((const char *)part->part_type,"fs") == 0)
-	{
-	    ret = do_yaffs_write(part, par, offset, size);
-		return ret;
-	}
-	else if (strcmp((const char *)part->part_type,"ddr") == 0)
-	{
-	    ret = do_ram_write(offset, size);
-		return ret;
-	}
-	else if (strcmp((const char *)part->part_type,"raw") == 0)
-	{
-	    ret = do_raw_write(offset, size);
-		return ret;
-	}
-	else
-	{
-	    sprintf(ack,"FAIL INVALID PARTITION TYPE");
-        downloader_serial_write(ack, strlen(ack)+1);
-	    return -1;
-	}
-}
-U_BOOT_CMD(
-	compat_write, CONFIG_SYS_MAXARGS, 0, do_compat_write,
-	"download: compat_write [partition][offset][size]",
-	""
-);
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Uboot/boot/common/src/uboot/include/partition_table.h b/Uboot/boot/common/src/uboot/include/partition_table.h
deleted file mode 100755
index 306a64c..0000000
--- a/Uboot/boot/common/src/uboot/include/partition_table.h
+++ /dev/null
@@ -1,380 +0,0 @@
-/*  
- * (C) Copyright 2016, ZIXC Corporation.
- *
- *   partitions.h
- */
-#ifndef _PARTITION_TABLE_H_
-#define _PARTITION_TABLE_H_
-
-
-
-/*
-    +--------------+
-    |     magic    |    uint32_t
-    +--------------+                            +--------------+
-    |    version   |    uint32_t         1      |    z-load    |
-    +--------------+                            +--------------+
-    |  entry nums  |    uint32_t         2      |    u-boot    |
-    +--------------+                            +--------------+
-    |     crc      |    uint32_t         3      |       m0     |
-    +==============+                            +--------------+
-    |    name[1]   |                     4      |     nv_r     |
-    +--------------+                            +--------------+
-    |    offset    |                     5      |     nv_w     |
-    +--------------+                            +--------------+
-    |     size     |                     6      |      ps      |
-    +==============+                            +--------------+
-    |              |                     7      |      phy     |
-    +==============+                            +--------------+        
-    |              |                     8      |      zsp     |
-    +==============+                            +--------------+
-                                         9      |     cdrom    | 
-                                                +--------------+
-                                        10      |       fs     |
-                                                +--------------+  
-                                                
-*/
-
-#define VIRTUAL_PART_NUM        2
-#define ARM_PS_IMAGE            "cpups"
-#define ARM_ZSP_IMAGE           "cpuphy"
-#define ARM_PHY_IMAGE           "proc-phy"
-#define ARM_ZSP_AMT_IMAGE       "cpuzspamt"    //[ZhouXin] Add for AMT.
-#define ARM_APP_IMAGE           "cpuap"//"proc-app" FPGA
-#define ARM_CAP_IMAGE           "cpucap"
-
-#define ARM_RAMDISK_IMAGE       "ramdisk" 
-#define ARM_USERDATA_IMAGE      "userdata"
-#define ARM_RECOVERY_USERDATA_IMAGE      "recovery"
-#define ARM_UBOOT_IMAGE         "uboot"
-//#ifdef CONFIG_ZX297520V3E_MDL_AB
-#if defined(CONFIG_ZX297520V3E_MDL_AB) || defined(CONFIG_ZX297520V3E_VEHICLE_DC) || defined(CONFIG_ZX297520V3E_VEHICLE_DC_REF)
-#define ARM_ROOTFS_IMAGE      "rootfs"
-#define ARM_ROOTFS2_IMAGE      "rootfs2"
-#endif
-
-#define ARM_FOTA_BACKUP_IMAGE   "fotabackup"
-#define ARM_FOTA_FLAG_IMAGE     "fotaflag"
-#define ARM_FOTA_UPDATE_IMAGE   "fotaupdate"
-#define ARM_FOTA_RECOVERY_IMAGE "recovery-kernel"
-
-#define ARM_NVRW_PARTITION      "nvrw"
-#define ARM_AMT_FLAG_OFFSET     0x0
-
-/*nvrw·ÖÇødrv_nvrw ÆðʼµØÖ· ºóÃæ¶ÔÓ¦peripheral(3K) ÆðʼµØÖ·£¬*/
-#define DRV_NVRW_ADDRESS	(0x00012000) //v3 0x32400 ,v2 0x68400
-#define ARM_DRV_PERIPHERAL_OFFSET (DRV_NVRW_ADDRESS+256+3*1024+3*1024+4*1024) /*drv_nvrw·ÖÇøOFFSET 0x2900*/
-
-
-#define ARM_FOTA_FLAG           "FOTA-UPDATE"
-#define ARM_LOCAL_UPDATE_FLAG   "LOCALUPDATE"
-#define ARM_RECOVERY_FLAG   	"FOTA-RECOVERY"
-#define ARM_FOTA_COPY_PS_FLAG   "FOTA-PS"      /*±íʾÐèÒª»¹Ô­ps°æ±¾*/
-#define ARM_FOTA_FLAG_LEN       32
-
-#define ARM_FOTA_UPDATE_SUCCESS_STRING "LOCAL-UP-SUCCESS"
-#define ARM_FOTA_UPDATE_FAILED_STRING "LOCAL-UP-FAIL"
-
-#define ARM_GMAC_INIT_FLAG      "GMAC"
-#define ARM_GMAC_INIT_FLAG_LEN        5
-#define ARM_GMAC_INIT_OVERTIME_LEN    4
-
-
-#define ARM_RECOVERY_RESTART_OFFSET   0x40000
-#define ARM_RECOVERY_RESTART_FLAG     "recovery reset" 
-#define ARM_LOCALUP_RESULT_OFFSET     0x80000
-#define SZ_128K				0x00020000
-#define SZ_256K				0x00040000
-#define SZ_512K				0x00080000
-#define SZ_1M				0x00100000
-
-#define PART_TYPE_NAND      "bin"
-#define PART_TYPE_ZFTL      "nv"
-#define PART_TYPE_DDR       "ddr"
-#define PART_TYPE_RAW       "raw"
-#define PART_TYPE_FS        "fs"
-
-#define PART1_NAME          "zloader"
-#define PART1_OFFSET        0x00000000
-#define PART1_SIZE          SZ_128K
-#define PART1_TYPE          PART_TYPE_NAND
-
-#define PART2_NAME          "uboot"
-#define PART2_OFFSET        (PART1_OFFSET + PART1_SIZE)
-#define PART2_SIZE          (SZ_1M + SZ_512K)
-#define PART2_TYPE          PART_TYPE_NAND
-
-#define PART3_NAME          "proc-lp"
-#define PART3_OFFSET        (PART2_OFFSET + PART2_SIZE)
-#define PART3_SIZE          (SZ_128K + SZ_256K)
-#define PART3_TYPE          PART_TYPE_NAND
-
-#define PART4_NAME          "nvr"
-#define PART4_OFFSET        (PART3_OFFSET + PART3_SIZE)
-#define PART4_SIZE          (SZ_1M * 2)
-#define PART4_TYPE          PART_TYPE_ZFTL
-
-#define PART5_NAME          "nvrw"
-#define PART5_OFFSET        (PART4_OFFSET + PART4_SIZE)
-#define PART5_SIZE          (SZ_1M * 8)
-#define PART5_TYPE          PART_TYPE_ZFTL
-
-#define PART6_NAME          "proc-ps"
-#define PART6_OFFSET        (PART5_OFFSET + PART5_SIZE)
-#define PART6_SIZE          (SZ_1M * 19)
-#define PART6_TYPE          PART_TYPE_NAND
-
-#define PART7_NAME          "proc-phy"
-#define PART7_OFFSET        (PART6_OFFSET + PART6_SIZE)
-#define PART7_SIZE          (SZ_1M * 19)
-#define PART7_TYPE          PART_TYPE_NAND
-
-#define PART8_NAME          "proc-zsp"
-#define PART8_OFFSET        (PART7_OFFSET + PART7_SIZE)
-#define PART8_SIZE          (SZ_1M * 1)
-#define PART8_TYPE          PART_TYPE_NAND
-
-#define PART9_NAME          "proc-app"
-#define PART9_OFFSET        (PART8_OFFSET + PART8_SIZE)
-#define PART9_SIZE          (SZ_1M * 10)
-#define PART9_TYPE          PART_TYPE_NAND
-
-#define PART10_NAME          "ramdisk"
-#define PART10_OFFSET        (PART9_OFFSET + PART9_SIZE)
-#define PART10_SIZE          (SZ_1M * 8)
-#define PART10_TYPE          PART_TYPE_NAND
-
-#define PART11_NAME          "cdrom"
-#define PART11_OFFSET        (PART10_OFFSET + PART10_SIZE)
-#define PART11_SIZE          (SZ_1M * 80)
-#define PART11_TYPE          PART_TYPE_NAND
-
-#define PART12_NAME          "fs-ffx"
-#define PART12_OFFSET        (PART11_OFFSET + PART11_SIZE)
-#define PART12_SIZE          (SZ_1M * 8)
-#define PART12_TYPE          PART_TYPE_FS
-
-#define PART13_NAME          "userdata"
-#define PART13_OFFSET        (PART12_OFFSET + PART12_SIZE)
-#define PART13_SIZE          (SZ_1M * 40)
-#define PART13_TYPE          PART_TYPE_FS
-
-#define PART14_NAME          "ddr"
-#define PART14_OFFSET        0x0
-#define PART14_SIZE          0xffffffff
-#define PART14_TYPE          PART_TYPE_DDR
-
-#define PART15_NAME          "raw"
-#define PART15_OFFSET        0x0
-#define PART15_SIZE          (SZ_1M * 256)
-#define PART15_TYPE          PART_TYPE_RAW
-
-#define  PART_END    0,0,0
-#define  PART1       PART1_NAME, PART1_TYPE, PART1_OFFSET, PART1_SIZE
-#define  PART2       PART2_NAME, PART2_TYPE, PART2_OFFSET, PART2_SIZE
-#define  PART3       PART3_NAME, PART3_TYPE, PART3_OFFSET, PART3_SIZE
-#define  PART4       PART4_NAME, PART4_TYPE, PART4_OFFSET, PART4_SIZE
-#define  PART5       PART5_NAME, PART5_TYPE, PART5_OFFSET, PART5_SIZE
-#define  PART6       PART6_NAME, PART6_TYPE, PART6_OFFSET, PART6_SIZE
-#define  PART7       PART7_NAME, PART7_TYPE, PART7_OFFSET, PART7_SIZE
-#define  PART8       PART8_NAME, PART8_TYPE, PART8_OFFSET, PART8_SIZE  
-#define  PART9       PART9_NAME, PART9_TYPE, PART9_OFFSET, PART9_SIZE 
-#define  PART10      PART10_NAME, PART10_TYPE, PART10_OFFSET, PART10_SIZE
-#define  PART11      PART11_NAME, PART11_TYPE, PART11_OFFSET, PART11_SIZE
-#define  PART12      PART12_NAME, PART12_TYPE, PART12_OFFSET, PART12_SIZE
-#define  PART13      PART13_NAME, PART13_TYPE, PART13_OFFSET, PART13_SIZE
-#define  PART14      PART14_NAME, PART14_TYPE, PART14_OFFSET, PART14_SIZE
-#define  PART15      PART15_NAME, PART15_TYPE, PART15_OFFSET, PART15_SIZE
-#define  PART16      PART_END
-#define  PART17      PART_END
-#define  PART18      PART_END
-#define  PART19      PART_END
-#define  PART20      PART_END
-#define  PART21      PART_END
-#define  PART22      PART_END
-#define  PART23      PART_END
-#define  PART24      PART_END
-#define  PART25      PART_END
-#define  PART26      PART_END
-#define  PART27      PART_END
-#define  PART28      PART_END
-#define  PART29      PART_END
-#define  PART30      PART_END
-
-
-
-#define MAX_ENTRYS                  30                     
-#define PARTITION_ENTRYS            15                      /* ʵ¼ÊʹÓõķÖÇø¸öÊý */
-#define PARTITION_MAGIC             0x31594876              /* ͬ²½ Z-LOAD */
-#define PARTITION_PLARTNANME        "WF7520"
-#define PARTITION_VERSION           0x00201304              /*  */
-#define PARTITION_CRC               0x12345678
-#define PARTITION_SIZE              0X1000                  /* ·ÖÇø±íµÄ´óС */
-
-#define IMG_NUM  5
-
-typedef struct partition_entry {
-    unsigned char	part_name[16]; 
-    unsigned char   part_type[16];
-    unsigned int    part_offset; 
-    unsigned int    part_size;            
-}partition_entry_t;
-
-typedef struct partition_table {
-    unsigned int       magic;
-    unsigned char      platform_name[16];
-    unsigned int       version;             /* ·ÖÇø°æ±¾ */
-    unsigned int       entrys;              /* ×ܵķÖÇø¸öÊý */
-    unsigned int       crc;
-    partition_entry_t  table[MAX_ENTRYS];   
-}partition_table_t;
-
-typedef struct image_bin_header {
-    unsigned char filename[64];       // ÎļþÃû,total 128
-    unsigned char partitonname[16];   // ·ÖÇøÃû
-    unsigned char partitontype[16];   // ·ÖÇøÀàÐÍ
-    unsigned int filelength;        // Îļþ³¤¶È
-    unsigned int partitonoffset;    // ÔÚ·ÖÇøÖеĵØÖ·
-    unsigned int fileaddr;          //ÎļþÔںϳÉÎļþÖеÄλÖÃ
-    unsigned char btUse[20];   
-}image_bin_header_t;
-typedef struct master_header
-{
-    unsigned char btFileId[16];          // ¶àBinºÏÒ»Îļþ±êʶ,total 208bytes
-    unsigned char btVersionIn[32];
-    unsigned char btVersionOut[32];
-    unsigned int dwFileNumber;
-    unsigned int dwDeviceType;
-    unsigned int dwNV;
-
-    unsigned int dwFileLengthTotal;    // Îļþ×ܳ¤¶È
-    unsigned int dwCheckSum;           // УÑé
-    unsigned int dwImageOffset;        // ¾µÏñÊý¾ÝÔÚ¶àBinºÏÒ»ÎļþÖÐÆ«ÒÆ
-    unsigned int dwTLoaderAdd;         // TLoaderÔÚ¶àBinºÏÒ»ÎļþÖÐµÄÆ«ÒÆ
-    unsigned int dwTLoaderLength;      // TLoader³¤¶È
-    unsigned int dwTBootAdd;           // TBootÔÚ¶àBinºÏÒ»ÎļþÖÐµÄÆ«ÒÆ
-    unsigned int dwTBootLength;        // TBoot³¤¶È
-    unsigned int dwPartitonAdd;        // PartitonÔÚ¶àBinºÏÒ»ÎļþÖÐµÄÆ«ÒÆ
-    unsigned int dwPartitionLength ;   // Partition³¤¶È
-    unsigned char btUse[80];
-
-	image_bin_header_t image[50]; 
-} master_header_t;
-
-#define FLAGS_PARTITION_ERROR          (0x1111) /*·ÖÇøÒì³£*/
-
-#if 0
-#if defined(CONFIG_ZX297520V3E_MDL_AB) || defined(CONFIG_ZX297520V3E_VEHICLE_DC)
-/*
-flags partition
-
-*/
-/*˫ϵͳÀàÐÍ*/
-#define FLAGS_BOOT_FOTA_OFFSET      (0X0UL)
-#define FLAGS_BOOT_FOTA_SIZE        (0X80000UL)
-#define FLAGS_BOOT_ENV_OFFSET       (FLAGS_BOOT_FOTA_OFFSET + FLAGS_BOOT_FOTA_SIZE)
-#define FLAGS_BOOT_ENV_SIZE         (0X80000UL)
-#define FLAGS_BACKUP_OFFSET         (FLAGS_BOOT_ENV_OFFSET + FLAGS_BOOT_ENV_SIZE)
-
-#define FLAGS_MAGIC                  (0X464C4147UL)
-
-#define DUALSYSTEM_STATUS_BOOTABLE     (0XB0AB) /*¿ÉÆô¶¯*/
-#define DUALSYSTEM_STATUS_SUCCESSFUL   (0X5CCF) /*Äܳɹ¦Æô¶¯*/
-#define DUALSYSTEM_STATUS_UNBOOTABLE   (0XBABE) /*²»¿ÉÆô¶¯*/
-#define FLAGS_PARTITION_ERROR          (0x1111) /*·ÖÇøÒì³£*/
-
-
-
-typedef struct
-{
-    int status;                /*bootable/successful/unbootable*/
-	int try_cnt;
-}T_DualSystem_Status;
-
-typedef enum
-{
-    DUAL_SYSTEM  = 0X875A,  /*µÚÒ»¸öϵͳ*/
-	DUAL_SYSTEM2 = 0X986B,  /*µÚ¶þ¸öϵͳ*/
-}T_BOOT_TARGET;
-
-/*˫ϵͳÀàÐÍ*/
-typedef enum
-{
-    DUALSYSTEM_RECOVERY = 0X7575,    /*normal-recovery˫ϵͳ*/
-	DUALSYSTEM_AA       = 0XAAAA,    /*AA˫ϵͳ*/
-	DUALSYSTEM_AB       = 0XABAB     /*AB˫ϵͳ*/
-}T_BOOT_DUALSYSTEM_TYPE;
-
-typedef struct
-{
-    uint32_t             magic;       /*Êý¾ÝÓÐЧÐÔħÊõ×Ö*/
-	T_BOOT_TARGET        boot_to;     /*µ±Ç°Æô¶¯ÏµÍ³±êÖ¾*/
-	uint32_t             fota_status; /*fota״̬*/
-	T_DualSystem_Status  system;      /*µÚÒ»¸öϵͳ״̬*/
-	T_DualSystem_Status  system2;     /*µÚ¶þ¸öϵͳ״̬*/
-}T_BOOT_FOTA_FLAG;
-
-typedef struct
-{
-    unsigned int             magic;        /*Êý¾ÝÓÐЧÐÔħÊõ×Ö*/
-	T_BOOT_DUALSYSTEM_TYPE   dualsys_type; /*˫ϵͳÀàÐÍ*/
-	char system_boot_env[128];
-	char system2_boot_env[128];
-}T_BOOT_ENV;
-
-typedef struct
-{
-    T_BOOT_FOTA_FLAG      boot_flag;
-	T_BOOT_ENV            boot_env;
-}T_FOTA_FLAG_INFO;
-#endif
-#endif
-
-#ifdef CREAT_PARTITION_TABLE
-partition_table_t g_partiton_table = 
-    {
-        PARTITION_MAGIC, \
-        PARTITION_PLARTNANME,\
-        PARTITION_VERSION,\
-        PARTITION_ENTRYS, \
-        PARTITION_CRC,\
-        {   { PART1 },\
-            { PART2 },\
-            { PART3 },\
-            { PART4 },\
-            { PART5 },\
-            { PART6 },\
-            { PART7 },\
-            { PART8 },\
-            { PART9 },\
-            { PART10 },\
-            { PART11 },\
-            { PART12 },\
-            { PART13 },\
-            { PART14 },\
-            { PART15 },\
-            { PART16 },\
-            { PART17 },\
-            { PART18 },\
-            { PART19 },\
-            { PART20 },\
-            { PART21 },\
-            { PART22 },\
-            { PART23 },\
-            { PART24 },\
-            { PART25 },\
-            { PART26 },\
-            { PART27 },\
-            { PART28 },\
-            { PART29 },\
-            { PART30 }}
-    };
-#endif
-
-#ifndef CREAT_PARTITION_TABLE
-int read_partition_and_check( void );
-partition_entry_t *find_partition_para( uchar * name );
-void add_partition_to_bootargs(void);
-#endif
-
-#endif /* _PARTITION_TABLE_H_ */
diff --git a/Uboot/cp/ps/driver/inc/misc/drvs_voiceprocess.h b/Uboot/cp/ps/driver/inc/misc/drvs_voiceprocess.h
deleted file mode 100755
index 67cc84d..0000000
--- a/Uboot/cp/ps/driver/inc/misc/drvs_voiceprocess.h
+++ /dev/null
@@ -1,342 +0,0 @@
-/*******************************************************************************

- * Copyright (C) 2007, ZTE Corporation.

- *

- * File Name:    Drvs_voiceprocess.h

- * File Mark:

- * Description:  Provide the interface of using vp

- * Others:

- * Version:       V0.5

- * Author:        lvwenhua

- * Date:          2012-06-13

- * History 1:

- *     Date:

- *     Version:

- *     Author:

- *     Modification:

- * History 2:

-  ********************************************************************************/

-#ifndef _DRVS_VP_H

-#define _DRVS_VP_H

-

-#include "drvs_i2s.h"

-#include "drvs_tdm.h"

-#include "drvs_volte.h"

-#include "drvs_rpmsg.h"

-#include "NvParam_drv.h"

-

-#define VOICE_TONE_MIXER_FUNCTION

-//#define TEST_WHITE_NOISE

-typedef enum

-{

-    VP_I2S_IDLE = 0,

-    VP_I2S_OPEN,

-    VP_I2S_INUSE,

-    VP_LOOP_ON

-} T_Vp_I2sStatus;

-

-/*  Voice process channel selection. */

-typedef enum

-{

-    VP_PATH_HANDSET    = 0,

-    VP_PATH_SPEAKER,

-    VP_PATH_HEADSET,

-    VP_PATH_BLUETOOTH,

-    VP_PATH_BLUETOOTH_NO_NR,

-    VP_PATH_HSANDSPK,

-

-    VP_PATH_OFF = 255,

-

-    MAX_VP_PATH = VP_PATH_OFF

-} T_ZDrv_VpPath;

-

-typedef enum

-{

-    VP_VOL_0    = 0,

-    VP_VOL_1,

-    VP_VOL_2,

-    VP_VOL_3,

-    VP_VOL_4,

-    VP_VOL_5,

-    VP_VOL_6,

-    VP_VOL_7,

-    VP_VOL_8,

-    VP_VOL_9,

-    VP_VOL_10,

-    VP_VOL_11,

-

-    MAX_VP_VOL

-} T_ZDrv_VpVol;

-

-typedef enum

-{

-    VP_FS_8000  = 0,              ///< 8k sampling rate

-    VP_FS_11025 = 1,              ///< 11.025k sampling rate

-    VP_FS_12000 = 2,              ///< 12k sampling rate

-    VP_FS_16000 = 3,              ///< 16k sampling rate

-    VP_FS_22050 = 4,              ///< 22.050k sampling rate

-    VP_FS_24000 = 5,              ///< 24k sampling rate

-    VP_FS_32000 = 6,              ///< 32k sampling rate

-    VP_FS_44100 = 7,              ///< 44.1k sampling rate

-    VP_FS_48000 = 8,              ///< 48k sampling rate

-    MAX_VP_FS = 9              ///< Max sampling rate count

-

-} T_ZDrv_VpFs;

-

-typedef enum

-{

-    VP_DTMF_KEY_0    = 0,

-    VP_DTMF_KEY_1,

-    VP_DTMF_KEY_2,

-    VP_DTMF_KEY_3,

-    VP_DTMF_KEY_4,

-    VP_DTMF_KEY_5,

-    VP_DTMF_KEY_6,

-    VP_DTMF_KEY_7,

-    VP_DTMF_KEY_8,

-    VP_DTMF_KEY_9,

-    VP_DTMF_KEY_10,    /*  *  */

-    VP_DTMF_KEY_11,    /*  # */

-

-    MAX_VP_DTMF_KEY

-} T_ZDrv_VpDtmfKey;

-

-

-//typedef   T_ZDrvVolte_Cfg  T_ZDrvVp_Cfg

-typedef struct

-{

-	char* pPresetRx;

-	unsigned long PresetLengthRx;

-	char* pPresetTx;

-	unsigned long PresetLengthTx;

-} zDrvVp_NxpParamsTool;

-

-typedef struct

-{

-	char* pPresetRx;

-	unsigned long PresetLengthRx;

-	char* pPresetTx;

-	unsigned long PresetLengthTx;

-} zDrvVp_ParamsTool;

-

-typedef enum

-{

-    VP_VOICE_SOURCE ,

-    VP_AUDIO_SOURCE ,

-    VP_FM_SOURCE ,

-    VP_EXTERN_AUDIO,

-    VP_SOURCE_MAX

-} T_ZDrvVp_SourceType;

-

-/* 0 lowpower;1 sms;2 call standard;3 alarm beep;*/

-typedef enum

-{

-    VP_LOWPOWER_TONE ,

-    VP_SMS_TONE ,

-    VP_CALLSTD_TONE ,

-    VP_ALARM_TONE,

-    VP_CALL_TIME_TONE,

-    VP_0_KEY_TONE,

-    VP_1_KEY_TONE,

-    VP_2_KEY_TONE,

-    VP_3_KEY_TONE,

-    VP_4_KEY_TONE,

-    VP_5_KEY_TONE,

-    VP_6_KEY_TONE,

-    VP_7_KEY_TONE,

-    VP_8_KEY_TONE,

-    VP_9_KEY_TONE,

-    VP_HASH_KEY_TONE,	    //#

-    VP_ASTERRIX_KEY_TONE,	    //*

-    VP_RESERVED1_TONE,

-    VP_RESERVED2_TONE,

-    VP_RESERVED3_TONE,

-    VP_RESERVED4_TONE,

-    VP_RESERVED5_TONE,

-    VP_RESERVED6_TONE,

-    VP_TONE_MAX

-} T_ZDrvVp_ToneNum;

-typedef struct _T_HalMixerToneInfo

-{

-	BOOL StartMixer;/*mixer flag TRUE  start, FALSE stop;*/

-	BOOL dataIsWb;/* TRUE  wb, FALSE nb, for voice mixer;*/

-	UINT32 cur_tone_fcount;/*tone data already processed count*/

-	UINT32 tone_total_size;/*tone data total size,unit 2byte*/

-	UINT32 inter_mixer_fcount;/*inter ,tone_size/data_mixer_oncesize*/

-	UINT32 rem_mixer_count;/*remainder ,  tone_size%data_mixer_oncesize*/

-	UINT16 *ptdata_mixer;/* tone data array pointer */

-	UINT32 data_mixer_oncesize;/*the size of a data processing, unit 2byte*/

-} T_HalMixerToneInfo;

-

-typedef struct _T_HalAudioLoopTestInfo

-{

-	BOOL startLoopTest;/*audo loop test flag TRUE  start, FALSE stop;*/

-	UINT32 fs;/*tone data real frequence*/

-	UINT32 sampFs;/*tone data sample frequence*/

-	UINT8 *ptdata;/* audo loop test data array pointer */

-	UINT32 totalSize;/*tone data total size,unit 2byte*/

-	T_ZDrv_VpVol outpathvol[4];

-

-} T_HalAudioLoopTestInfo;

-typedef struct _T_HalAudioLoopTestPra

-{

-	UINT8 *src;/*tone data frequence*/

-	UINT8 *dest;/*tone data sample frequence*/

-	UINT32 sampfs;

-

-} T_HalAudioLoopTestPra;

-

-typedef enum

-{

-    ECALL_ST_INIT = 0,

-	ECALL_ST_OPEN,//1				

-	ECALL_ST_START,//2			

-    ECALL_ST_IDLE,//3	

-    ECALL_ST_RX_IDLE,//4	

-    ECALL_ST_TX_IDLE,//5	

-    ECALL_ST_INUSE,//6	

-    ECALL_ST_RX_INUSE,//7	

-    ECALL_ST_TX_INUSE,//8	     

-	ECALL_ST_STOP,//9	

-	ECALL_ST_CLOSE,//10		

-    ECALL_ST_MAX

-} T_Ecall_State;

-

- 

-typedef struct

-{

-	T_DrvEcall_Opt	opt;

-	ZOSS_TIMER_ID timerId ;

-	ZOSS_SEMAPHORE_ID wrSemaphore; 

-	ZOSS_SEMAPHORE_ID rdSemaphore;

-	T_Ecall_State ecallSta;

-    T_Ecall_State ecallRxSta;//two state,idle/inuse

-	T_Ecall_State ecallTxSta;//two state,idle/inuse	

-	unsigned char* rxDataBuf;

-	unsigned char* txDataBuf;

-	int dataBufSize;

-

-} T_Hal_EcallData; 

-

-typedef struct

-{

-	//use for vp data process

-	UINT8* pVpTempRxInBuffer;   //pVpRxInBuffer

-	UINT8* pVpTempTxInBuffer;   //pVpTxInBuffer

-	UINT8* pVpTempRxOutPutBuffer;//pVpRxOutPutBuffer

-	UINT8* pVpTempTxOutPutBuffer;//pVpTxOutPutBuffer

-

-	T_ZDrvI2S_Cfg *pVpI2sCfg; //i2s cfg

-

-	T_ZDrvVp_Cfg vpCfgParam; //s_cfgParam

-

-	T_ZDrvI2s_Params i2sWriteParam; //s_VpI2sWriteParam

-	T_ZDrvI2s_Params i2sReadParam; //s_vpI2sReadParam

-

-	UINT32 frameCount; //s_vpFrameCount

-	UINT32 totalFrameBufSize; //s_vpTotalFrameBufSize

-	UINT32 inOutBufUseSize; //s_inOutBufUseSize

-	UINT32 rxSaveLen; //s_rxSaveLen

-	UINT32 txSaveLen; //s_txSaveLen

-	UINT32 saveLen; //save_len

-

-	UINT8 pcmSlotNum; //s_vpPcmSlotNum

-	UINT8 pcmWbSecDataPosition; //s_vpPcmWbSecDataPosition

-

-	UINT8 volteVpWriteStopFlag;//s_volteVpWriteStopFlag

-	UINT8 volteVpReadStopFlag;//s_volteVpReadStopFlag

-	UINT8 volteVpCfgEnFlag; // s_volteVpCfgEnFlag

-	BOOL firstWriteDataFlag;//s_firstWriteDataFlag

-	BOOL firstReadDataFlag;//s_firstReadDataFlag

-	BOOL i2sIsRstFlag;//s_i2sIsRstFlag

-} T_zDrvVp_SpeechState; // T_zDrvVp_SpeechState

-

-typedef struct

-{

-	UINT8 volteIsWb; //1 g_volteIsWb 

-	UINT8 isUseSlicCodec; //2 g_isUseSlicCodec 

-	UINT8 g_isUseTdm; //3

-//for voice data process

-	UINT8 voiceInGsmTdMode; //4 g_voiceInGsmTdMode 

-	UINT8 voiceInVolteMode; //5 g_voiceInVolteMode 

-

-	BOOL innerI2sIsMaster;//6 arm i2s2   g_innerI2sIsMaster 

-	BOOL innerI2sIsI2sMode; //7 g_innerI2sIsI2sMode 

-	BOOL vpLoopRuning; //8 g_vpLoopRuning 

-	BOOL muteEn; //9 g_vpMuteEn 

-	//BOOL nxpIsNormal; //10 g_vpNxpIsNormal  

-	BOOL vProcIsNormal; //11 voice processing is normal flag 

-	T_Vp_I2sStatus vpI2sStatus; //12 VpI2sStatus 

-

-	T_ZDrv_VpPath  vpPath;//13 VP_PATH_HEADSET;//VP_PATH_SPEAKER; //VP_PATH_HANDSET; g_vpPath

-	T_ZDrv_VpPath  vpLoopPath; //14 g_vpLoopPath 

-	T_ZDrv_VpVol vpVol; //15 g_vpVol

-	T_ZDrvVoice_MODE voiceMode; //16 g_vpVoiceMode

-	SINT8 vpInitGain; //17 s_vpInitGain

-	T_Audio_NvFlag	audio_ctrlFlag;//18 USE 32byte

-

-    UINT8 dtmfDirSel;//19

-    UINT32 sample_rate;//20

-    UINT8 useDtmfLoop;//21

-    SINT32 muteCount;//22 mute_count

-    BOOL vpLoopBkRunning;//23 

-	BOOL rxMuteEn; //24

-	BOOL firstRegZCATFlag; //25

-	T_Hal_EcallData	ecallData;//26

-    UINT8 voice_nv_update;//27

-} T_zDrvVoice_GbVar; //T_zDrvVoice_GbVar

-

-typedef struct

-{

-	//use for store memory address

-	UINT8* pVpRxInBuffer;  //s_pVpRxInBuffer

-	UINT8* pVpTxInBuffer; //s_pVpTxInBuffer

-	UINT8* pVpRxOutPutBuffer; //s_pVpRxOutPutBuffer

-	UINT8* pVpTxOutPutBuffer; //s_pVpTxOutPutBuffer

-

-	UINT32 inOutBufSize; //s_inOutBufSize

-

-	T_ZDrvI2S_Cfg *pVpInnerI2sCfg;  //s_pVpInnerI2sCfg

-	T_ZDrvI2S_Cfg *pVpExtI2sCfg;   //s_pVpExtI2sCfg

-	T_ZDrvI2S_Cfg *pVpExtI2sWbCfg; //s_pVpExtI2sWbCfg

-	T_ZDrvTdm_Cfg *s_pVpTdmCfg;

-	T_ZDrvTdm_Cfg *s_pVpTdmWbCfg;

-	T_ZDrvTdm_Cfg *pVpTdmCfg;

-

-	T_ZDrvRpMsg_Msg pMsg;

-	SINT32 pMsgBuf[2];

-	//SINT32 muteCount;//mute_count

-

-	ZOSS_THREAD_ID vpThread ; //s_VpThread

-	ZOSS_THREAD_ID rcvDtmfThread ; //s_rcvDtmfThread

-	ZOSS_SEMAPHORE_ID vpSemaphore; //s_VpSemaphore

-	ZOSS_SEMAPHORE_ID vpThreadQuitSema;

-

-	ZOSS_THREAD_ID vpLoopThread; //s_VpLoopThread

-	ZOSS_SEMAPHORE_ID vpLoopSemaphore; //s_VpLoopSemaphore

-

-	T_zDrvVp_SpeechState *vpState;

-//	T_zDrvVoice_GbVar wrapVpGbVar;

-} T_zDrvVp_State; //T_zDrvVp_State

-

-SINT32 zDrvVp_SetPath(T_ZDrv_VpPath path);

-SINT32 zDrvVp_SetVol(T_ZDrv_VpVol volume);

-SINT32 zDrvVp_SetGain(SINT32 vgain, UINT32 channel);

-/* 0 lowpower;1 sms;2 call standard;3 alarm beep;*/

-SINT32 zDrvVp_ToneMixerStart(T_ZDrvVp_ToneNum toneNum);

-SINT32 zDrvVp_SetMute(UINT32 enable, UINT32 channel);

-SINT32 zDrvVp_RcdOnOff(UINT32 on);

-SINT32 zDrvVp_DtmfTone(UINT32 Num);

-SINT32 zDrvVp_Loop(T_ZDrv_VpPath path);

-SINT32 zDrvVp_RingStart(VOID);

-SINT32 zDrvVp_RingStop(VOID);

-VOID zDrvVp_SetUseSlicFlag(BOOL useSlic);

-SINT32 zDrvVp_NxpSetParam(zDrvVp_NxpParamsTool *NxpParamsTool);

-SINT32 zDrvVp_NxpGetParam(zDrvVp_NxpParamsTool *NxpParamsTool);

-SINT32 zDrvVp_SetFmPath(T_ZDrv_VpPath path, BOOL enable);

-SINT32 zDrvVp_SetParam(zDrvVp_ParamsTool *paramsTool);

-SINT32 zDrvVp_GetParam(zDrvVp_ParamsTool *paramsTool);

-SINT32 zDrvVp_SetNvParam(zDrvVp_ParamsTool *paramsTool);

-SINT32 zDrvVp_GetNvParam(zDrvVp_ParamsTool *paramsTool);

-

-	

-#endif

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
deleted file mode 100755
index 7489d52..0000000
--- a/Uboot/cp/ps/driver/src/chipsets/src/audio_base/audio_config/audioRef_cfg.c
+++ /dev/null
@@ -1,1824 +0,0 @@
-/*******************************************************************************

- * Copyright (C) 2007, ZTE Corporation.

- *

- * File Name:audioRef_cfg.c

- * File Mark:

- * Description: Loop voice data from teak to arm.

-                    Settings: arm iis2->top iis1(connect to ap), arm iis1 loop to teak afe.

-

- * Others:

- * Version:

- * Author:        xxq

- * Date:          2014-03-10

- * History 1:

- *     Date:

- *     Version:

- *     Author:

- *     Modification:

- * History 2:

-  ********************************************************************************/

-

-/****************************************************************************

-* 	                                           Include files

-****************************************************************************/

-#include <linux/vmalloc.h>

-#include "drvs_general.h"

-#include "drvs_i2s.h"

-#include "drvs_voiceprocess.h"

-#include "drvs_voice_config.h"

-#include "drvs_i2c.h"

-#include "NvParam_drv.h"

-#include "drvs_codec.h"

-#include "aud_drv.h"           /* header file for this file */

-#include "hal_pcmdata.h"

-//#include "math.h"

-#include "drvs_ref_cfg.h"

-#include "drvs_tdm.h"

-

-#include <mach/iomap.h>

-

-/****************************************************************************

-*                                             Local Macros

-****************************************************************************/

-

-//Defines for settings

-#define AUD_I2S_Switch_Interface_off 0

-#define AUD_I2S_Switch_MMS_mode      1

-#define AUD_I2S_Switch_MMS_FB_mode  2

-#define AUD_I2S_Switch_external_mode 3

-#define AUD_I2S_Switch_DAI_mode      4

-

-#define AUD_I2S_CSEL_TXCLKSEL_FROM_Fractional_devider_0_MASTER 0

-#define AUD_I2S_CSEL_TXCLKSEL_FROM_CLK0_WA0_SLAVE 2

-#define AUD_I2S_CSEL_TXCLKSEL_FROM_CLK1_WA1_SLAVE 1

-#define AUD_I2S_CSEL_TXCLKSEL_FROM_Fractional_devider_1_MASTER 3

-#define AUD_I2S_CSEL_TXCLKSEL_Bitmask 0xFFFC

-

-#define AUD_I2S_CSEL_CLK0SEL_Fractional_devider_0 0

-#define AUD_I2S_CSEL_CLK0SEL_Fractional_devider_1 1<<2

-#define AUD_I2S_CSEL_CLK0SEL_external 2<<2

-#define AUD_I2S_CSEL_CLK0SEL_Bitmask 0xFFF3

-

-#define AUD_I2S_CSEL_RXCLKSEL_FROM_Fractional_devider_1_MASTER 0

-#define AUD_I2S_CSEL_RXCLKSEL_FROM_CLK0_WA0_SLAVE 1<<4

-#define AUD_I2S_CSEL_RXCLKSEL_FROM_CLK1_WA1_SLAVE 2<<4

-#define AUD_I2S_CSEL_RXCLKSEL_FROM_Fractional_devider_0_MASTER 3<<4

-#define AUD_I2S_CSEL_RXCLKSEL_Bitmask 0xFFCF

-

-#define AUD_I2S_CSEL_CLK1SEL_Fractional_devider_0 0

-#define AUD_I2S_CSEL_CLK1SEL_Fractional_devider_1 1<<6

-#define AUD_I2S_CSEL_CLK1SEL_external 2<<6

-#define AUD_I2S_CSEL_CLK1SEL_Bitmask 0xFF3F

-

-#define AUD_I2S_CONF_WIDTH_16 0

-#define AUD_I2S_CONF_WIDTH_18 4<<5

-#define AUD_I2S_CONF_WIDTH_20 5<<5

-#define AUD_I2S_CONF_WIDTH_24 6<<5

-#define AUD_I2S_CONF_WIDTH_32 7<<5

-

-#define AUD_I2S_CONF_EDGE_FALLING         0

-#define AUD_I2S_CONF_EDGE_RISING          1

-#define AUD_I2S_CONF_EDGE_Bitmask         1

-#define AUD_I2S_CONF_DEL_NO_DELAY         0

-#define AUD_I2S_CONF_DEL_1_bit_DELAY      1<<1

-#define AUD_I2S_CONF_POL_WA_HIGH_IS_RIGHT 0

-#define AUD_I2S_CONF_POL_WA_HIGH_IS_LEFT  1<<2

-#define AUD_I2S_CONF_PERIOD_64            0

-#define AUD_I2S_CONF_PERIOD_48            1<<3

-#define AUD_I2S_CONF_PERIOD_32            2<<3

-#define AUD_I2S_CONF_WIDTH_16             0

-#define AUD_I2S_CONF_WIDTH_18             4<<5

-#define AUD_I2S_CONF_WIDTH_20             5<<5

-#define AUD_I2S_CONF_WIDTH_24             6<<5

-#define AUD_I2S_CONF_WIDTH_32             7<<5

-#define AUD_I2S_CONF_ALIGN_LEFT           0

-#define AUD_I2S_CONF_ALIGN_RIGHT          1<<8

-

-#define AUD_I2S_CONF_RX_CLK1_OUT_IS_LOW   0

-#define AUD_I2S_CONF_RX_CLK1_OUT_IS_HIGH  1<<13

-#define AUD_I2S_CONF_RX_CLK1_CONT_STOPS   0

-#define AUD_I2S_CONF_RX_CLK1_CONT_RUNNING 1<<14

-#define AUD_I2S_CONF_RX_WA1_LEN_1_CYCLE   0

-#define AUD_I2S_CONF_RX_WA1_LEN_2_CYCLE   1<<15

-#define AUD_I2S_CONF_RX_WAx_LEN_Bitmask   1<<15

-

-

-#define AUD_I2S_CONF_TX_MUTE_L_ACTIVE     0

-#define AUD_I2S_CONF_TX_MUTE_L_MUTED      1<<11

-#define AUD_I2S_CONF_TX_MUTE_R_ACTIVE     0

-#define AUD_I2S_CONF_TX_MUTE_R_MUTED      1<<12

-#define AUD_I2S_CONF_TX_CLK0_OUT_IS_LOW   0

-#define AUD_I2S_CONF_TX_CLK0_OUT_IS_HIGH  1<<13

-#define AUD_I2S_CONF_TX_CLK0_CONT_STOPS   0

-#define AUD_I2S_CONF_TX_CLK0_CONT_RUNNING 1<<14

-#define AUD_I2S_CONF_TX_WA0_LEN_1_CYCLE   0

-#define AUD_I2S_CONF_TX_WA0_LEN_2_CYCLE   1<<15

-#define AUD_I2S_NUM_FREF_MODULE_CLOCK     0

-#define AUD_I2S_NUM_FREF_104MHz           1<<12

-

-#define AUD_I2S_TRANSFER_MODE_STEREO    0<<9

-#define AUD_I2S_TRANSFER_MODE_RIGHT         2<<9

-#define AUD_I2S_TRANSFER_MODE_LEFT       3<<9

-

-#define AUD_I2S_HW_MODE_BURST          0

-#define AUD_I2S_HW_MODE_NORMAL       1

-

-#define AUD_I2S_CHANNEL_MODE_MONO             0  // Mono

-#define AUD_I2S_CHANNEL_MODE_DUALMONOL   1 //  left channel is taken from I2S1 interface and copied to both L & R

-#define AUD_I2S_CHANNEL_MODE_DUALMONOR   2 //  Right channel is taken from I2S1 interface and copied to both L & R

-

-//#define ARM_I2S_LOOP_CFG	*((volatile UINT32 *)(0x00140000+0x60))

-#define ARM_I2S_LOOP_CFG	*((volatile UINT32 *)(SOC_SYS_REG_BASE+0x60))

-

-//#define AUDIO_USE_FIXED_ADDRESS

-

-#define VP_INOUT_BAK_BUFFER_SIZE 0x30000  // 0x60000

-#define VP_INOUT_NOBAK_BUFSIZE  640

-

-/**************************************************************************

- *                                  Types                                  *

- **************************************************************************/

-typedef struct

-{

-	UINT16 I2S_mode_enum;

-	UINT16 csel;

-	UINT16 den0;

-	UINT16 den1;

-	UINT16 num0;

-	UINT16 num1;

-	UINT16 rxconf;

-	UINT16 txconf;

-	UINT16 hwmode;

-	UINT16 channel_mode;

-	aud_I2S_samplerate_enum sample;

-} aud_dsp_dai_configuration_type;

-

-typedef struct

-{

-	DOUBLE freqValue;

-	DOUBLE freqAmp;

-

-} zDrvVp_Freqfft;

-

-/****************************************************************************

-*                                             Local Function Prototypes

-****************************************************************************/

-#ifdef _CONFIG_DC_USE_CODEC//dual_core version

-UINT32 audioGpioCodecEnHandle = 0;

-UINT32 audioGpioResetHandle = 0;

-UINT32 audioGpioClkHandle = 0;

-UINT32 audioGpio76Handle = 0;

-UINT32 audioGpio77Handle = 0;

-#endif

-

-#if defined(_USE_REF_AUDIO_ON_7520V3_MDL) || defined(_USE_REF_AUDIO_ON_7520V3_FWP)

-#define AON_WIFI_BT_CLK_CFG2       *((volatile UINT32 *)(0x0013b000 + 0x94))

-#endif

-

-#ifdef AUDIO_USE_FIXED_ADDRESS

-T_ZDrv_VpInOutBuffer vpInOutBuffer =

-{

-	(UINT8 *)(ZX_DDR_CAMERAVOICE_BASE),

-	(UINT8 *)(ZX_DDR_CAMERAVOICE_BASE + 0x60000),

-	(UINT8 *)(ZX_DDR_CAMERAVOICE_BASE + 0xC0000),

-	(UINT8 *)(ZX_DDR_CAMERAVOICE_BASE + 0x120000)

-};

-#else

-T_ZDrv_VpInOutBuffer vpInOutBuffer =

-{

-	NULL, NULL, NULL, NULL

-};

-#endif

-

-SINT32 halAudioConfig_Open(T_ZDrvVp_SourceType srctype);

-SINT32 halAudioConfig_Close(VOID);

-SINT32 halAudioConfig_Enable(VOID);

-SINT32 halAudioConfig_Disable(VOID);

-SINT32 halAudioConfig_SetFs(T_ZDrv_VpFs fs);

-SINT32 halAudioConfig_SetInputPath(T_ZDrv_VpPath path, BOOL enable);

-SINT32 halAudioConfig_SetOutputPath(T_ZDrv_VpPath path, BOOL enable);

-SINT32 halAudioConfig_SetMute(T_ZDrv_VpPath path, BOOL mute);

-SINT32 halAudioConfig_SetFmPath(T_ZDrv_VpPath path, BOOL enable);

-SINT32 halAudioConfig_SetLoopback(BOOL enable);

-SINT32 halAudioConfig_SetInputVol(T_ZDrv_VpVol vol);

-SINT32 halAudioConfig_SetOutputVol(T_ZDrv_VpVol vol);

-SINT32 halAudioConfig_SetUseProtocol(T_ZDrvCodec_UseProtocol useProtocol);

-SINT32 halAudioConfig_GetMixerToneInfo(T_ZDrvVp_ToneNum toneNum, T_HalMixerToneInfo *mixerToneInfo);

-SINT32 halAudioConfig_GetAudioLoopInfo(T_HalAudioLoopTestInfo *audioInfo);

-SINT32 halAudioConfig_GetAudioLoopResult(T_HalAudioLoopTestPra *audioPra);

-//SINT32 zDrvNand_Read(UINT32 dwStart, UINT32 dwLen, UINT8* to);//xiu

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

-SINT32 zDrvCodec_SetOut_Hpf(T_ZDrvCodec_Handle handle, T_ZDrvCodec_AudioSample fs, BOOL onoff);//xiu

-SINT32 cal_freq_fft( SINT16 *data,zDrvVp_Freqfft *freqfft,UINT16 n,UINT32 fs);//xiu

-SINT32 zDrvCodec_Read(UINT16 regPage,UINT16 regAddress,UINT16 *regValue);//xiu

-SINT32 zDrvCodec_Write(UINT16 regPage,UINT16 regAddress,UINT16 regValue,UINT16 regMask);//xiu

-SINT32 zDrvCodec_DumpReg(VOID);//xiu

-SINT32 vp_SetInnerI2sMode(BOOL i2smode);

-extern SINT32 zDrvAudio_Initiate(VOID);

-extern VOID vp_SetTopI2sConfig(VOID);

-extern VOID vp_SetTopTdmConfig(VOID);

-extern VOID vp_SetTopConfig(VOID);

-extern SINT32 zDrvI2S_Init(VOID);

-extern VOID udelay(UINT32  us);

-

-#ifdef _USE_EARPIECE_FUNCMOUDLE

-extern SINT32 zDrvEarp_Initiate(VOID);

-#endif

-static T_HalVpCfg_Opt s_vpCfgObjOpt =

-{

-	NULL,

-	NULL,

-	NULL,

-	halAudioConfig_Open,

-	halAudioConfig_Close,

-	halAudioConfig_Enable,

-	halAudioConfig_Disable,

-	halAudioConfig_SetFs,

-	halAudioConfig_SetInputPath,

-	halAudioConfig_SetOutputPath,

-	halAudioConfig_SetMute,

-	halAudioConfig_SetFmPath,

-	halAudioConfig_SetLoopback,

-	halAudioConfig_SetInputVol,

-	halAudioConfig_SetOutputVol,

-	halAudioConfig_SetUseProtocol,

-	halAudioConfig_GetMixerToneInfo,

-//	halAudioConfig_GetAudioLoopInfo,

-//	halAudioConfig_GetAudioLoopResult,

-};

-

-static aud_dsp_dai_configuration_type s_dspPcmMasterCfg =

-{

-	/* aud_I2Sx_mode1 master mode*/

-	aud_I2Sx_mode1,         /* mode allowed or not on platform */

-	AUD_I2S_CSEL_TXCLKSEL_FROM_Fractional_devider_0_MASTER | AUD_I2S_CSEL_CLK0SEL_Fractional_devider_0 | \

-	AUD_I2S_CSEL_RXCLKSEL_FROM_Fractional_devider_0_MASTER | AUD_I2S_CSEL_CLK1SEL_Fractional_devider_0, /* csel */

-	0x0cb2, /* den0 */

-	0x0cb2, /* den1 */

-	0x0011 | AUD_I2S_NUM_FREF_104MHz, /* num0 */

-	0x0011 | AUD_I2S_NUM_FREF_104MHz, /* num1 */

-	AUD_I2S_CONF_RX_CLK1_OUT_IS_LOW | AUD_I2S_CONF_RX_CLK1_CONT_STOPS | AUD_I2S_CONF_RX_WA1_LEN_1_CYCLE, /* rxconf */

-	AUD_I2S_CONF_TX_CLK0_OUT_IS_LOW | AUD_I2S_CONF_TX_CLK0_CONT_STOPS | AUD_I2S_CONF_TX_WA0_LEN_1_CYCLE, /* txconf */

-	AUD_I2S_HW_MODE_BURST,

-	AUD_I2S_CHANNEL_MODE_MONO,

-	aud_I2S_samplerate_08000

-};

-static aud_dsp_dai_configuration_type s_dspPcmSlaveCfg =

-{

-	/* aud_I2Sx_mode2 */

-	aud_I2Sx_mode2,         /* mode allowed or not on platform */

-	AUD_I2S_CSEL_TXCLKSEL_FROM_CLK0_WA0_SLAVE | AUD_I2S_CSEL_CLK0SEL_external | \

-	AUD_I2S_CSEL_RXCLKSEL_FROM_CLK0_WA0_SLAVE | AUD_I2S_CSEL_CLK1SEL_external, /* csel */

-	0x0659, /* den0 */

-	0x0659, /* den1 */

-	0x0010 | AUD_I2S_NUM_FREF_104MHz, /* num0 */

-	0x0010 | AUD_I2S_NUM_FREF_104MHz, /* num1 */

-	AUD_I2S_CONF_RX_CLK1_OUT_IS_LOW | AUD_I2S_CONF_RX_CLK1_CONT_STOPS | AUD_I2S_CONF_RX_WA1_LEN_1_CYCLE, /* rxconf */

-	AUD_I2S_CONF_TX_CLK0_OUT_IS_LOW | AUD_I2S_CONF_TX_CLK0_CONT_STOPS | AUD_I2S_CONF_TX_WA0_LEN_1_CYCLE, /* txconf */

-	AUD_I2S_HW_MODE_BURST,

-	AUD_I2S_CHANNEL_MODE_MONO,

-	aud_I2S_samplerate_08000

-};

-static aud_dsp_dai_configuration_type s_dspI2sMasterCfg =

-{

-	/* aud_I2Sx_mode3 16 bit 8 kHz Master, Normal Mode, Mono */

-	aud_I2Sx_mode3,         /* mode allowed or not on platform */

-	AUD_I2S_CSEL_TXCLKSEL_FROM_Fractional_devider_0_MASTER | AUD_I2S_CSEL_CLK0SEL_Fractional_devider_0 | \

-	AUD_I2S_CSEL_RXCLKSEL_FROM_Fractional_devider_0_MASTER | AUD_I2S_CSEL_CLK1SEL_Fractional_devider_1, /* csel */

-	0x0659, /* den0 */

-	0x0659, /* den1 */

-	0x0010 | AUD_I2S_NUM_FREF_104MHz, /* num0 */

-	0x0010 | AUD_I2S_NUM_FREF_104MHz, /* num1 */

-	AUD_I2S_CONF_EDGE_RISING | AUD_I2S_CONF_DEL_1_bit_DELAY | AUD_I2S_CONF_POL_WA_HIGH_IS_RIGHT \

-	| AUD_I2S_CONF_PERIOD_32 | AUD_I2S_CONF_WIDTH_16 | AUD_I2S_CONF_ALIGN_LEFT, /* rxconf */

-	AUD_I2S_CONF_EDGE_FALLING | AUD_I2S_CONF_DEL_1_bit_DELAY | AUD_I2S_CONF_POL_WA_HIGH_IS_RIGHT \

-	| AUD_I2S_CONF_PERIOD_32 | AUD_I2S_CONF_WIDTH_16 | AUD_I2S_CONF_ALIGN_LEFT \

-	| AUD_I2S_TRANSFER_MODE_RIGHT | AUD_I2S_CONF_TX_MUTE_L_MUTED | AUD_I2S_CONF_TX_MUTE_R_ACTIVE,/* txconf */

-	AUD_I2S_HW_MODE_NORMAL,

-	AUD_I2S_CHANNEL_MODE_DUALMONOR,

-	aud_I2S_samplerate_08000

-};

-static aud_dsp_dai_configuration_type s_dspI2sSlaveCfg =

-{

-	/* aud_I2Sx_mode4 16 bit 8 kHz Slave, Normal Mode, Mono */

-	aud_I2Sx_mode4,         /* mode allowed or not on platform */

-	AUD_I2S_CSEL_TXCLKSEL_FROM_CLK0_WA0_SLAVE | AUD_I2S_CSEL_CLK0SEL_external |

-	AUD_I2S_CSEL_RXCLKSEL_FROM_CLK0_WA0_SLAVE | AUD_I2S_CSEL_CLK1SEL_external, /* csel */

-	0x0002, /* den0 */

-	0x0002, /* den1 */

-	0x0001, /* num0 */

-	0x0001, /* num1 */

-	AUD_I2S_CONF_EDGE_RISING | AUD_I2S_CONF_DEL_1_bit_DELAY | AUD_I2S_CONF_POL_WA_HIGH_IS_RIGHT

-	| AUD_I2S_CONF_PERIOD_32 | AUD_I2S_CONF_WIDTH_16 | AUD_I2S_CONF_ALIGN_LEFT, /* rxconf */

-	AUD_I2S_CONF_EDGE_FALLING | AUD_I2S_CONF_DEL_1_bit_DELAY | AUD_I2S_CONF_POL_WA_HIGH_IS_RIGHT

-	| AUD_I2S_CONF_PERIOD_32 | AUD_I2S_CONF_WIDTH_16 | AUD_I2S_CONF_ALIGN_LEFT

-	| AUD_I2S_TRANSFER_MODE_RIGHT | AUD_I2S_CONF_TX_MUTE_L_MUTED | AUD_I2S_CONF_TX_MUTE_R_ACTIVE,/* txconf */

-	AUD_I2S_HW_MODE_NORMAL,

-	AUD_I2S_CHANNEL_MODE_DUALMONOR,

-	aud_I2S_samplerate_08000

-};

-

-

-extern T_ZDrvI2S_Cfg s_vpInnerI2sCfg ;//I2S MASTER

-

-

-extern T_ZDrvI2S_Cfg s_vpExtI2sNbCfg  ;//TEST FOR i2s

-

-extern T_ZDrvI2S_Cfg s_vpExtI2sWbCfg  ;//TEST FOR i2s

-extern T_ZDrvI2S_Cfg s_vpExtI2sNbCfg_slic  ;//TEST FOR i2s

-extern T_ZDrvI2S_Cfg s_vpExtI2sWbCfg_slic  ;//TEST FOR i2s

-

-//extern T_ZDrvI2S_Cfg s_vpAudioI2sCfg  ;//TEST FOR i2s

-//extern T_ZDrvI2S_Cfg s_vpFmI2sCfg  ;//TEST FOR i2s

-extern T_ZDrvTdm_Cfg s_vpTdmNbCfg  ;//TEST FOR tdm

-extern T_ZDrvTdm_Cfg s_vpTdmWbCfg ;//TEST FOR tdm

-extern T_ZDrvTdm_Cfg s_vpTdmWbCfg_codec ;//TEST FOR codec tdm

-

-

-static T_ZDrvCodec_Handle gCodecHandle = 0;//xiu

-

-#ifdef _CONFIG_USE_CODEC

-static T_ZDrvCodec_InDevice s_inDev = AUDIO_INPUT_HANDSET;

-static T_ZDrvCodec_OutDevice s_outDev = AUDIO_OUTPUT_RECEIVER;

-BOOL codecInitFlag = FALSE;

-static BOOL s_isClasskOpened = FALSE;

-#endif

-

-static BOOL s_isFmOpened = FALSE;

-static T_ZDrvCodec_UseProtocol s_useProtocal;

-static T_ZDrvCodec_SourceType codecSrcType = VOICE_SOURCE;

-static T_ZDrvCodec_AudioSample Sample_Fs = AUDIO_SAMPLE_8K;

-

-/****************************************************************************

-* 	                                          Global Function Prototypes

-****************************************************************************/

-extern SINT32 zDrvVp_SetExtAudioCfg(T_ZDrvI2S_Cfg *pI2sNbCfg,T_ZDrvI2S_Cfg *pI2sWbCfg, 

-                                  T_ZDrvTdm_Cfg *pTdmNbCfg,T_ZDrvTdm_Cfg *pTdmWbCfg);

-extern SINT32 zDrvVp_SetExtI2sCfg(T_ZDrvI2S_Cfg *pI2sNbCfg, T_ZDrvI2S_Cfg *pI2sWbCfg);

-extern SINT32 zDrvVp_SetInnerI2sCfg(T_ZDrvI2S_Cfg *pI2sCfg);

-extern VOID zDrvVpCfg_SetOperations(T_HalVpCfg_Opt* VpCfg_ObjPtr);

-extern SINT32 zDrvAud_DspCfgI2sMode(VOID *pI2sCfg);

-extern SINT32 zDrvAud_DspCfgPcmMode(VOID *pPcmCfg);

-extern SINT32 zDrvCodec_SetProt(T_ZDrvCodec_Handle handle, T_ZDrvCodec_UseProtocol useProtocal);

-//extern VOID zCtrm_InitAudioAt(VOID);

-extern UINT32 zCatAgt_Audio_Reg(UINT32 type, UINT32 size, UINT32 addr);

-extern SINT32 zDrvVp_GetVoiceState(VOID *pVoiceState);

-extern SINT32 zDrvAudio_SetI2sCfg(T_ZDrvI2S_Cfg *pI2sCfg);

-

-/****************************************************************************

-* 	                                          Function Definitions

-****************************************************************************/

-#ifdef _CONFIG_DC_USE_CODEC//dual_core version

-SINT32 vp_SetInnerI2sMode(BOOL i2smode)

-{

-	SINT32  ret = DRV_SUCCESS;

-#if defined _USE_REF_AUDIO_ON_7510

-	UINT32 AmrRegBit = 0;

-	AmrRegBit = ARM_I2S_LOOP_SET;

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_SetInnerI2sMode start  ARM_I2S_LOOP_SET=%x\n", ARM_I2S_LOOP_SET);

-

-	// inter loop

-	AmrRegBit &= 0xfff8fff8;

-	if (i2smode == TRUE)

-	{

-

-		AmrRegBit |= 0x00050002; //  teak afe--arm i2s2

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_SetInnerI2sMode i2s mode teak afe AmrRegBit=%x\n", AmrRegBit);

-

-	}

-	else

-	{

-		AmrRegBit |= 0x00030002; //  teak i2s1--arm i2s2

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_SetInnerI2sMode pcm mode  teak i2s1 AmrRegBit=%x\n", AmrRegBit);

-

-	}

-	ARM_I2S_LOOP_SET = AmrRegBit;

-#elif defined _USE_REF_AUDIO_ON_7520V3

-	UINT32 AmrRegBit = 0;

-	AmrRegBit = ARM_I2S_LOOP_CFG;

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_SetInnerI2sMode start  ARM_I2S_LOOP_CFG=%x\n", ARM_I2S_LOOP_CFG);

-

-	// inter loop

-	AmrRegBit &= 0xfffffe07;

-

-	if (i2smode == TRUE)

-	{

-

-		AmrRegBit |= 0x000000a8; //  teak afe i2s

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_SetInnerI2sMode i2s mode teak afe AmrRegBit=%x\n", AmrRegBit);

-

-	}

-	else

-	{

-		AmrRegBit |= 0x00000098; //  teak i2s1 pcm

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_SetInnerI2sMode pcm mode  teak i2s1 AmrRegBit=%x\n", AmrRegBit);

-

-	}

-

-	ARM_I2S_LOOP_CFG = AmrRegBit;

-

-

-#endif

-

-

-	return ret;

-}

-

-void halRcvAndEarpSwitch(T_ZDrv_VpPath path)

-{

-#ifdef _CONFIG_USE_CODEC

-	zDrvGpio_SetFunc(audioGpio76Handle, GPIO76_GPIO76);

-	zDrvGpio_SetDirection(audioGpio76Handle, GPIO_OUT);

-	if (VP_PATH_HANDSET == path)

-	{

-		zDrvGpio_SetOutputValue(audioGpio76Handle, GPIO_LOW);

-	}

-	else if (VP_PATH_HEADSET == path)

-	{

-		zDrvGpio_SetOutputValue(audioGpio76Handle, GPIO_HIGH);

-	}

-	else if (VP_PATH_SPEAKER == path)

-	{

-		zDrvGpio_SetOutputValue(audioGpio76Handle, GPIO_LOW);

-	}

-#endif

-}

-

-void halSpkPaSwitch(T_ZDrv_VpPath path)

-{

-#ifdef _CONFIG_USE_CODEC

-	SINT32 i = 0;

-	zDrvGpio_SetFunc(audioGpio77Handle, GPIO77_GPIO77);

-	zDrvGpio_SetDirection(audioGpio77Handle, GPIO_OUT);

-

-	if (VP_PATH_SPEAKER == path)

-	{

-		if (s_isClasskOpened == FALSE)

-		{

-			for (i = 0; i < 3; i++)

-			{

-				zDrvGpio_SetOutputValue(audioGpio77Handle, GPIO_HIGH);

-				udelay(1);

-

-				zDrvGpio_SetOutputValue(audioGpio77Handle, GPIO_LOW);

-				udelay(1);

-			}

-			zDrvGpio_SetOutputValue(audioGpio77Handle, GPIO_HIGH);

-			s_isClasskOpened = TRUE;

-		}

-	}

-	else

-	{

-		zDrvGpio_SetOutputValue(audioGpio77Handle, GPIO_LOW);

-		udelay(500);

-		s_isClasskOpened = FALSE;

-	}

-#endif

-

-}

-

-

-/******************************************************************************

- * Function: zDrvCodec_Initiate

- * Description: open codec, set parameters.

- * Parameters:

- *   Input:

- *

- *   Output:

- *

- * Returns:

- *   0 if success, not 0 if fail

- *

- * Others:

- ******************************************************************************/

-SINT32 zDrvCodec_Initiate(VOID)

-{

-    //UINT32 armRegBit = 0;//xiu

-#ifdef _CONFIG_USE_CODEC

-

-#if defined _USE_REF_AUDIO_ON_7520V3_PHONE

-

-	audioGpioCodecEnHandle = zDrvGpio_Request("codec_pa_en");

-	zDrvGpio_SetFunc(audioGpioCodecEnHandle, AUDIO_CODEC_EN_GPIO_FUNC_SEL);

-	zDrvGpio_SetDirection(audioGpioCodecEnHandle, GPIO_OUT);

-	zDrvGpio_SetOutputValue(audioGpioCodecEnHandle, GPIO_HIGH); //GPIO_LOW

-	zOss_Sleep(5);

-

-	audioGpioResetHandle = zDrvGpio_Request("codec_reset");

-	zDrvGpio_SetFunc(audioGpioResetHandle, AUDIO_CODEC_RESET_GPIO_FUNC_SEL);

-	zDrvGpio_SetDirection(audioGpioResetHandle, GPIO_OUT);

-	zDrvGpio_SetOutputValue(audioGpioResetHandle, GPIO_LOW);

-	zOss_Sleep(5);

-	zDrvGpio_SetOutputValue(audioGpioResetHandle, GPIO_HIGH);

-	zOss_Sleep(5);

-

-	audioGpioClkHandle = zDrvGpio_Request("codec_refclk");

-	zDrvGpio_SetFunc(audioGpioClkHandle, AUDIO_CODEC_CLK_GPIO_FUNC_SEL);//26MHZ GPIO15_CLK_OUT0

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S_setCodecClk 26M!\n");

-#elif defined _USE_REF_AUDIO_ON_7520V3_FWP

-	audioGpioResetHandle = zDrvGpio_Request("codec_reset");

-	zDrvGpio_SetFunc(audioGpioResetHandle, AUDIO_CODEC_RESET_GPIO_FUNC_SEL);

-	zDrvGpio_SetDirection(audioGpioResetHandle, GPIO_OUT);

-	zDrvGpio_SetOutputValue(audioGpioResetHandle, GPIO_LOW);

-	zOss_Sleep(5);

-	zDrvGpio_SetOutputValue(audioGpioResetHandle, GPIO_HIGH);

-	zOss_Sleep(5);

-

-	audioGpioClkHandle = zDrvGpio_Request("codec_refclk");

-	zDrvGpio_SetFunc(audioGpioClkHandle, AUDIO_CODEC_CLK_GPIO_FUNC_SEL);//26MHZ GPIO15_CLK_OUT2

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "[FWP]zDrvI2S_setCodecClk 26M!\n");

-#elif defined _USE_REF_AUDIO_ON_7520V3_MDL

-	audioGpioClkHandle = zDrvGpio_Request("codec_refclk");

-	zDrvGpio_SetFunc(audioGpioClkHandle, AUDIO_CODEC_CLK_GPIO_FUNC_SEL);//26MHZ GPIO17_CLK_OUT2

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S_setCodecClk 26M!\n");

-

-#elif defined _USE_REF_AUDIO_ON_7520V2

-

-	audioGpioCodecEnHandle = zDrvGpio_Request("codec_en");

-	zDrvGpio_SetFunc(audioGpioCodecEnHandle, AUDIO_CODEC_EN_GPIO_FUNC_SEL);

-	zDrvGpio_SetDirection(audioGpioCodecEnHandle, GPIO_OUT);

-	zOss_Sleep(5);

-	zDrvGpio_SetOutputValue(audioGpioCodecEnHandle, GPIO_HIGH);

-

-	audioGpioResetHandle = zDrvGpio_Request("codec_reset");

-	zDrvGpio_SetFunc(audioGpioResetHandle, AUDIO_CODEC_RESET_GPIO_FUNC_SEL);

-	zDrvGpio_SetDirection(audioGpioResetHandle, GPIO_OUT);

-	zDrvGpio_SetOutputValue(audioGpioResetHandle, GPIO_LOW);

-	zOss_Sleep(5);

-	zDrvGpio_SetOutputValue(audioGpioResetHandle, GPIO_HIGH);

-	zOss_Sleep(5);

-

-	audioGpioClkHandle = zDrvGpio_Request("codec_refclk");

-	zDrvGpio_SetFunc(audioGpioClkHandle, AUDIO_CODEC_CLK_GPIO_FUNC_SEL);//26MHZ

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S_setCodecClk 26M!\n");

-#ifdef _CONFIG_USE_CODEC_EARPIECE_DETECT

-//mp3_sw

-	audioGpio76Handle = zDrvGpio_Request("mp3_sw");

-	halRcvAndEarpSwitch(VP_PATH_HANDSET);

-//class k en

-	audioGpio77Handle = zDrvGpio_Request("audio_pa_en");

-	halSpkPaSwitch(VP_PATH_HANDSET);

-

-#endif

-

-#endif

-

-	codecInitFlag = TRUE;

-#endif

-	return DRV_SUCCESS;

-

-}

-#endif

-/*******************************************************************************

- * Function: zDrvVoiceConfig_Init

- * Description: This function is used to initiate voice process

- * Parameters:

- *   Input:None

- *   Output:None

- *

- * Returns: success or error code

- *

- *

- * Others:

- ********************************************************************************/

-extern	SINT32 zDrvVolte_LoopStart(VOID);

-

-SINT32 zDrvVoiceConfig_Init(VOID)

-{

-	SINT32  ret = DRV_SUCCESS;

-	T_Audio_NvFlag audionvflag = {0};

-	aud_dsp_dai_configuration_type *p_dspPcmCfg	= NULL;

-	aud_dsp_dai_configuration_type *p_dspI2sCfg = NULL;

-

-    zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, " zDrvVoiceConfig_Init audio nv addr=0x%x!\n", OS_FLASH_VOICE_DRV_RW_NONFAC_BASE_ADDR);

-

-	//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);

-	//hal_TestTopI2sConfig();

-

-	if (ret != DRV_SUCCESS)

-	{

-

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, " read the audionvflag failed!\n");

-		return DRV_ERROR;

-	}

-

-	if (audionvflag.isVpConfigInitOn == 1)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, " zDrvVoiceConfig_Init start!\n");

-

-		zDrvVpCfg_SetOperations(&s_vpCfgObjOpt);

-

-		if (s_vpInnerI2sCfg.bMaster == TRUE)

-		{

-			p_dspPcmCfg = &s_dspPcmSlaveCfg;

-			p_dspI2sCfg = &s_dspI2sSlaveCfg;

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "arm InnerI2s Master, dsp I2S Slave !\n");

-

-		}

-		else if (s_vpInnerI2sCfg.bMaster == FALSE)

-		{

-			p_dspPcmCfg = &s_dspPcmMasterCfg;

-			p_dspI2sCfg = &s_dspI2sMasterCfg;

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "arm InnerI2s Slave, dsp I2S Master!\n");

-

-		}

-		else

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, " s_vpInnerI2sCfg bMaster val err!\n");

-			return DRV_ERROR;

-

-		}

-#if PS_RAT_GSM

-		ret = zDrvAud_DspCfgI2sMode(p_dspI2sCfg);

-		if (ret != DRV_SUCCESS)

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvAud_DspCfgI2sMode  fail, ret=%d!\n", ret);

-

-			return DRV_ERROR;

-		}

-

-		ret = zDrvAud_DspCfgPcmMode(p_dspPcmCfg);

-		if (ret != DRV_SUCCESS)

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvAud_DspCfgPcmMode  fail, ret=%d!\n", ret);

-

-			return DRV_ERROR;

-		}

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, " zDrvVoiceConfig_Init s_vpInnerI2sCfg=%p,s_vpExtI2sNbCfg addr=0x%p,s_vpExtI2sWbCfg addr=0x%p!\n", &s_vpInnerI2sCfg, &s_vpExtI2sNbCfg, &s_vpExtI2sWbCfg);

-#endif

-		zDrvVp_SetInnerI2sCfg(&s_vpInnerI2sCfg);

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

-		/*if (ret != DRV_SUCCESS)

-		{

-			return DRV_ERROR;

-		}*/

-		if (audionvflag.isUseSlicCodec == 1)

-		{

-			zDrvVp_SetExtAudioCfg(&s_vpExtI2sNbCfg_slic, &s_vpExtI2sWbCfg_slic, &s_vpTdmNbCfg, &s_vpTdmWbCfg);

-		}

-		else

-		{

-			zDrvVp_SetExtAudioCfg(&s_vpExtI2sNbCfg,&s_vpExtI2sWbCfg,&s_vpTdmNbCfg,&s_vpTdmWbCfg_codec);

-			//zDrvVp_SetExtAudioCfg(&s_vpExtI2sNbCfg,&s_vpExtI2sWbCfg,&s_vpTdmNbCfg,&s_vpTdmWbCfg);

-		}

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

-		/*if (ret != DRV_SUCCESS)

-		{

-			return DRV_ERROR;

-		}*/

-		if (audionvflag.isCloseVpBufferBak != 1)

-		{

-#ifndef AUDIO_USE_FIXED_ADDRESS

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVoiceConfig_Init Open VpInoutData backup! \n");

-/*

-			vpInOutBuffer.p_voiceRxInBuffer = (UINT8*)zOss_Malloc(VP_INOUT_BAK_BUFFER_SIZE);

-			vpInOutBuffer.p_voiceTxInBuffer = (UINT8*)zOss_Malloc(VP_INOUT_BAK_BUFFER_SIZE);

-			vpInOutBuffer.p_voiceRxOutPutBuffer = (UINT8*)zOss_Malloc(VP_INOUT_BAK_BUFFER_SIZE);

-			vpInOutBuffer.p_voiceTxOutPutBuffer = (UINT8*)zOss_Malloc(VP_INOUT_BAK_BUFFER_SIZE);

-			if ((vpInOutBuffer.p_voiceRxInBuffer == NULL) || (vpInOutBuffer.p_voiceTxInBuffer == NULL) || \

-			        (vpInOutBuffer.p_voiceRxOutPutBuffer == NULL) || (vpInOutBuffer.p_voiceTxOutPutBuffer == NULL))

-			{

-				zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVoiceConfig_Init malloc audio buffer fail ! \n");

-				return DRV_ERROR;

-			}

-*/

-

-			vpInOutBuffer.p_voiceRxInBuffer = (UINT8*)vmalloc(VP_INOUT_BAK_BUFFER_SIZE);

-			vpInOutBuffer.p_voiceTxInBuffer = (UINT8*)vmalloc(VP_INOUT_BAK_BUFFER_SIZE);

-#ifdef _USE_VP_OUTPUT_RXOUT_DATA

-			vpInOutBuffer.p_voiceRxOutPutBuffer = (UINT8*)vmalloc(VP_INOUT_BAK_BUFFER_SIZE);

-#else

-			vpInOutBuffer.p_voiceRxOutPutBuffer = (UINT8*)vmalloc(VP_INOUT_NOBAK_BUFSIZE);

-#endif

-			vpInOutBuffer.p_voiceTxOutPutBuffer = (UINT8*)vmalloc(VP_INOUT_BAK_BUFFER_SIZE);

-			if ((vpInOutBuffer.p_voiceRxInBuffer == NULL) || (vpInOutBuffer.p_voiceTxInBuffer == NULL) || \

-			        (vpInOutBuffer.p_voiceRxOutPutBuffer == NULL) || (vpInOutBuffer.p_voiceTxOutPutBuffer == NULL))

-			{

-				zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVoiceConfig_Init malloc audio buffer fail ! \n");

-				return DRV_ERROR;

-			}

-						

-#endif

-			zDrvVp_SetInOutBufferAddSize(&vpInOutBuffer, VP_INOUT_BAK_BUFFER_SIZE);

-                     #if 0

-			if (ret != DRV_SUCCESS)

-			{

-				return DRV_ERROR;

-			}

-			#endif

-

-#if 0

-            ret = zCatAgt_Audio_Reg(10,VP_INOUT_BAK_BUFFER_SIZE,(UINT32)vpInOutBuffer.p_voiceRxInBuffer);

-            if(ret != DRV_SUCCESS){

-                zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVoiceConfig_Init RXIN register zCatAgt_Audio_Reg err\n");

-            }

-            

-			ret = zCatAgt_Audio_Reg(12,VP_INOUT_BAK_BUFFER_SIZE,(UINT32)vpInOutBuffer.p_voiceTxInBuffer);

-            if(ret != DRV_SUCCESS){

-                zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVoiceConfig_Init TXIN register zCatAgt_Audio_Reg err\n");

-            }

-            

-			ret = zCatAgt_Audio_Reg(13,VP_INOUT_BAK_BUFFER_SIZE,(UINT32)vpInOutBuffer.p_voiceTxOutPutBuffer);

-            if(ret != DRV_SUCCESS){

-                zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVoiceConfig_Init TXOUT register zCatAgt_Audio_Reg err\n");

-            }

-            

-#ifdef _USE_VP_OUTPUT_RXOUT_DATA

-			ret = zCatAgt_Audio_Reg(11, VP_INOUT_BAK_BUFFER_SIZE, (UINT32)vpInOutBuffer.p_voiceRxOutPutBuffer);

-            if(ret != DRV_SUCCESS){

-                zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVoiceConfig_Init RXOUT register zCatAgt_Audio_Reg err\n");

-            }

-

-#else

-			ret = zCatAgt_Audio_Reg(11,VP_INOUT_NOBAK_BUFSIZE,(UINT32)vpInOutBuffer.p_voiceRxOutPutBuffer);

-            if(ret != DRV_SUCCESS){

-                zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVoiceConfig_Init RXOUT register zCatAgt_Audio_Reg err\n");

-            }

-#endif

-#endif

-		}

-		else

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVoiceConfig_Init Close VpInoutData backup! \n");

-#ifndef AUDIO_USE_FIXED_ADDRESS

-			vpInOutBuffer.p_voiceRxInBuffer = (UINT8*)zOss_Malloc(VP_INOUT_NOBAK_BUFSIZE);

-			vpInOutBuffer.p_voiceTxInBuffer = (UINT8*)zOss_Malloc(VP_INOUT_NOBAK_BUFSIZE);

-			vpInOutBuffer.p_voiceRxOutPutBuffer = (UINT8*)zOss_Malloc(VP_INOUT_NOBAK_BUFSIZE);

-			vpInOutBuffer.p_voiceTxOutPutBuffer = (UINT8*)zOss_Malloc(VP_INOUT_NOBAK_BUFSIZE);

-			if ((vpInOutBuffer.p_voiceRxInBuffer == NULL) || (vpInOutBuffer.p_voiceTxInBuffer == NULL) || \

-			        (vpInOutBuffer.p_voiceRxOutPutBuffer == NULL) || (vpInOutBuffer.p_voiceTxOutPutBuffer == NULL))

-			{

-				zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVoiceConfig_Init malloc audio buffer fail ! \n");

-				return DRV_ERROR;

-			}

-#endif

-			zDrvVp_SetInOutBufferAddSize(&vpInOutBuffer, VP_INOUT_NOBAK_BUFSIZE);

-			#if 0

-			if (ret != DRV_SUCCESS)

-			{

-				return DRV_ERROR;

-			}

-			#endif

-		}

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "voiceRxInBuffer=0x%p\n", vpInOutBuffer.p_voiceRxInBuffer);

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "voiceTxInBuffer=0x%p\n", vpInOutBuffer.p_voiceTxInBuffer);

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "voiceRxOutBuffer=0x%p\n", vpInOutBuffer.p_voiceRxOutPutBuffer);

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "voiceTxOutBuffer=0x%p\n", vpInOutBuffer.p_voiceTxOutPutBuffer);

-

-		//normal version need enable

-		ret = zDrvVp_Init();

-		if (ret != DRV_SUCCESS)

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, " zDrvVoiceConfig_Init zDrvVp_Init err!\n");

-

-			return DRV_ERROR;

-		}

-

-		zDrvVp_SetInitGain(75);

-/*

-		ret += zDrvAudio_Initiate();

-		if (ret != DRV_SUCCESS)

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_Init error: zDrvAudio_Initiate failed ret=%d \n", ret);

-			return DRV_ERROR;

-		}

-		ret = zDrvAudio_SetI2sCfg(&s_vpAudioI2sCfg);

-		if (ret != DRV_SUCCESS)

-		{

-			return DRV_ERROR;

-		}		

-

-		zDrvCodec_Initiate();

-*/

-#ifdef _USE_EARPIECE_FUNCMOUDLE

-		ret = zDrvEarp_Initiate();

-		if (ret != DRV_SUCCESS)

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_Init error: zDrvEarp_Initiate failed ret=%d \n", ret);

-			return DRV_ERROR;

-		}

-#endif

-

-		//testnxp_init();

-

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, " zDrvVoiceConfig_Init start  END!\n");

-		//zDrvVolte_LoopStart();

-		//zDrvVp_LoopStart(VP_PATH_SPEAKER);

-		

-#if 1

-        if (audionvflag.isCloseVpBufferBak != 1)

-        {

-            ret = zCatAgt_Audio_Reg(10,VP_INOUT_BAK_BUFFER_SIZE,(UINT32)vpInOutBuffer.p_voiceRxInBuffer);

-            if(ret != DRV_SUCCESS){

-                zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVoiceConfig_Init RXIN register zCatAgt_Audio_Reg err\n");

-            }

-            

-            ret = zCatAgt_Audio_Reg(12,VP_INOUT_BAK_BUFFER_SIZE,(UINT32)vpInOutBuffer.p_voiceTxInBuffer);

-            if(ret != DRV_SUCCESS){

-                zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVoiceConfig_Init TXIN register zCatAgt_Audio_Reg err\n");

-            }

-            

-            ret = zCatAgt_Audio_Reg(13,VP_INOUT_BAK_BUFFER_SIZE,(UINT32)vpInOutBuffer.p_voiceTxOutPutBuffer);

-            if(ret != DRV_SUCCESS){

-                zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVoiceConfig_Init TXOUT register zCatAgt_Audio_Reg err\n");

-            }

-            

-#ifdef _USE_VP_OUTPUT_RXOUT_DATA

-            ret = zCatAgt_Audio_Reg(11, VP_INOUT_BAK_BUFFER_SIZE, (UINT32)vpInOutBuffer.p_voiceRxOutPutBuffer);

-            if(ret != DRV_SUCCESS){

-                zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVoiceConfig_Init RXOUT register zCatAgt_Audio_Reg err\n");

-            }

-

-#else

-            ret = zCatAgt_Audio_Reg(11,VP_INOUT_NOBAK_BUFSIZE,(UINT32)vpInOutBuffer.p_voiceRxOutPutBuffer);

-            if(ret != DRV_SUCCESS){

-                zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVoiceConfig_Init RXOUT register zCatAgt_Audio_Reg err\n");

-            }

-#endif

-#endif

-        }

-

-		return DRV_SUCCESS;

-	}

-	else

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, " nv close zDrvVoiceConfigInit  !\n");

-		return DRV_SUCCESS;

-	}

-

-}

-

-/*******************************************************************************

- * Function: zDrvAudioConfig_Init

- * Description: This function is mainly used to Initializing audio related configuration

- * Parameters:

- *   Input:None

- *   Output:None

- *

- * Returns: success or error code

- *

- *

- * Others:

- ********************************************************************************/

-#if 0

-SINT32 zDrvAudioConfig_Init(VOID)

-{

-	SINT32	ret = DRV_SUCCESS;

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvAudioConfig_Init \n");

-	zDrvVpCfg_SetOperations(&s_vpCfgObjOpt);

-

-	ret = zDrvI2S_Init();

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S__Init error.\n");

-		return DRV_ERROR;

-	}

-	vp_SetTopConfig();

-

-	//vp_SetTopI2sConfig();

-

-	zDrvCodec_Initiate();

-	ret = zDrvAudio_Initiate();

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_Init error: zDrvAudio_Initiate failed ret=%d \n", ret);

-		return DRV_ERROR;

-	}

-	ret = zDrvAudio_SetI2sCfg(&s_vpAudioI2sCfg);

-	if (ret != DRV_SUCCESS)

-	{

-		return DRV_ERROR;

-	}

-	return DRV_SUCCESS;

-

-}

-

-

-//output 26MHZ

-SINT32 zDrvI2S_setCodecClk(VOID)

-{

-    //UINT32 AmrRegBit = 0;

-#if defined(_USE_REF_AUDIO_ON_7520V3_PHONE)|| defined(_USE_REF_AUDIO_ON_7520V3_FWP)

-	audioGpioClkHandle = zDrvGpio_Request("codec_refclk");

-	zDrvGpio_SetFunc(audioGpioClkHandle, AUDIO_CODEC_CLK_GPIO_FUNC_SEL);//26MHZ GPIO15_CLK_OUT0

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S_setCodecClk 26M!\n");

-#endif

-

-	return DRV_SUCCESS;

-

-}

-#endif

-

-/*******************************************************************************

- * Function: halAudioConfig_OpenBegin

- * Description: This function is used to  voice config in the beginning voice open

- * Parameters:

- *   Input:None

- *   Output:None

- *

- * Returns: success or error code

- *

- *

- * Others:

- ********************************************************************************/

-

-SINT32 halAudioConfig_Open(T_ZDrvVp_SourceType srctype)

-{

-	SINT32  ret = DRV_SUCCESS;

-

-#ifdef _CONFIG_USE_CODEC

-	T_zDrvVoice_GbVar *p_voiceVar = NULL;

-	UINT32 armRegBit = 0;

-	T_ZDrvI2S_Cfg *p_vpExtI2sCfg = NULL;

-	s_useProtocal.audI2SChannel = AUDIO_I2S0;

-

-	if (srctype == VP_VOICE_SOURCE)

-	{

-		codecSrcType = VOICE_SOURCE;

-		//ext i2s NB and WB, always the same cfg

-		p_vpExtI2sCfg = &s_vpExtI2sNbCfg;

-	}

-	else if (srctype == VP_AUDIO_SOURCE)

-	{

-		codecSrcType = AUDIO_SOURCE;

-		p_vpExtI2sCfg = &s_vpAudioI2sCfg;

-	}

-	else if (srctype == VP_FM_SOURCE)

-	{

-		codecSrcType = EXTERN_AUDIO;

-		p_vpExtI2sCfg = &s_vpFmI2sCfg;

-	}

-	else

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, " halAudioConfig_Open srctype=%d not support  !\n", srctype);

-		return DRV_SUCCESS;

-	}

-

-	if (srctype == VP_VOICE_SOURCE)

-	{

-		if (s_vpInnerI2sCfg.tClkMode == I2S_TIME_MODE)

-		{

-			vp_SetInnerI2sMode(TRUE);

-		}

-		else

-		{

-			vp_SetInnerI2sMode(FALSE);

-		}

-	}

-

-	//ext i2s NB and WB, always the same cfg

-	if (p_vpExtI2sCfg->bMaster == TRUE)

-	{

-		s_useProtocal.masterSlave = I2S_SLAVE_MODE;

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, " halAudioConfig_Open cfg codec I2S_SLAVE_MODE!\n");

-

-	}

-	else

-	{

-		s_useProtocal.masterSlave = I2S_MASTER_MODE;

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, " halAudioConfig_Open cfg codec I2S_MASTER_MODE!\n");

-	}

-

-	if (p_vpExtI2sCfg->tClkMode == I2S_TIME_MODE)

-	{

-		s_useProtocal.busMode = CODEC_BUS_I2S;

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, " halAudioConfig_Open cfg codec CODEC_BUS_I2s!\n");

-	}

-	else if (p_vpExtI2sCfg->tClkMode == PCM_TIME_MODE)

-	{

-		s_useProtocal.busMode = CODEC_BUS_DSP;

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, " halAudioConfig_Open cfg codec CODEC_BUS_DSP!\n");

-	}

-	else

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, " halAudioConfig_Open tClkMode=%d not support!\n", p_vpExtI2sCfg->tClkMode);

-	}

-#if defined(_USE_REF_AUDIO_ON_7520V3_MDL) || defined(_USE_REF_AUDIO_ON_7520V3_FWP)

-

-	armRegBit = AON_WIFI_BT_CLK_CFG2;

-	armRegBit &= 0xfffffffe;

-	armRegBit |= 0x1;

-	AON_WIFI_BT_CLK_CFG2 = armRegBit;

-#endif

-	// open 26mhz CLK  for codec

-	ret = zDrvI2S_setCodecClk();

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "codec set refclk err ret=%d !\n", ret);

-	}

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "codec set refclk  !\n");

-

-	ret = zDrvCodec_Open(&gCodecHandle, codecSrcType);

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvCodec_Open err ret=0x%x !\n", ret);

-		//zDrvCodec_Close(&gCodecHandle);

-		goto err_exit;

-	}

-

-#if !defined(_USE_REF_AUDIO_ON_7520V2) || !defined(_CONFIG_USE_CODEC_EARPIECE_DETECT)  

-	ret = zDrvCodec_Reset(gCodecHandle);     // k315 not use

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvCodec_Reset err ret=%x !\n", ret);

-		zDrvCodec_Close(&gCodecHandle);

-		goto err_exit;

-	}

-#endif

-

-	zOss_Sleep(1);

-

-	ret = zDrvVp_GetVoiceState(&p_voiceVar);

-	if ((ret != DRV_SUCCESS) || (p_voiceVar == NULL))

-	{

-		zDrvCodec_Close(&gCodecHandle);

-		goto err_exit;

-	}

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "halAudioConfig_Open  p_voiceVar = 0x%x!\n", p_voiceVar);

-	p_voiceVar->muteEn = FALSE;

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "halAudioConfig_Open  clear mute flag !\n");

-

-	return DRV_SUCCESS;	

-err_exit:

-	#if defined(_USE_REF_AUDIO_ON_7520V3_MDL) || defined(_USE_REF_AUDIO_ON_7520V3_FWP)

-		armRegBit = AON_WIFI_BT_CLK_CFG2;

-		armRegBit &= 0xfffffffe;

-		armRegBit |= 0x0;

-		AON_WIFI_BT_CLK_CFG2 = armRegBit;

-	#endif

-#endif

-	return ret;

-}

-

-/*******************************************************************************

- * Function: zDrvVoiceConfig_Close

- * Description: This function is used to  voice config Close.

- * Parameters:

- *   Input:None

- *   Output:None

- *

- * Returns: success or error code

- *

- *

- * Others:

- ********************************************************************************/

-SINT32 halAudioConfig_Close(VOID)

-{

-	SINT32  ret = DRV_SUCCESS;

-

-#ifdef _CONFIG_USE_CODEC

-	T_zDrvVoice_GbVar *p_voiceVar = NULL;

-

-	UINT32 armRegBit = 0;

-

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "halAudioConfig_Close start!\n");

-#if !defined(_USE_REF_AUDIO_ON_7520V2) || !defined(_CONFIG_USE_CODEC_EARPIECE_DETECT)

-	ret = zDrvCodec_Reset(gCodecHandle);  // k315 not use

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "halAudioConfig_Close zDrvCodec_Reset err ret=%x !\n", ret);

-	}

-#endif

-

-	ret += zDrvCodec_Close(&gCodecHandle);

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "halAudioConfig_Close zDrvCodec_Close err ret=%x !\n", ret);

-	}

-

-	ret = zDrvVp_GetVoiceState(&p_voiceVar);

-	if ((ret != DRV_SUCCESS) || (p_voiceVar == NULL))

-	{

-		return DRV_ERROR;

-	}

-	if (p_voiceVar->muteEn == TRUE)

-	{

-		p_voiceVar->muteEn = FALSE;

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "halAudioConfig_Close  clear mute flag !\n");

-	}

-

-#if defined(_USE_REF_AUDIO_ON_7520V2) && defined(_CONFIG_USE_CODEC_EARPIECE_DETECT)

-	halRcvAndEarpSwitch(VP_PATH_HANDSET);

-	halSpkPaSwitch(VP_PATH_HANDSET);

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "halAudioConfig_Close s_isClasskOpened=0x%x !\n", s_isClasskOpened);

-#endif

-

-#ifdef _USE_REF_AUDIO_ON_7520V3_PHONE

-	zDrvGpio_SetFunc(audioGpioCodecEnHandle, AUDIO_CODEC_EN_GPIO_FUNC_SEL);

-	zDrvGpio_SetDirection(audioGpioCodecEnHandle, GPIO_OUT);

-	zDrvGpio_SetOutputValue(audioGpioCodecEnHandle, GPIO_HIGH); //GPIO_LOW

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "codec SetOutPath receiver PA close \n");

-#endif

-#if defined(_USE_REF_AUDIO_ON_7520V3_MDL) || defined(_USE_REF_AUDIO_ON_7520V3_FWP)

-

-	armRegBit = AON_WIFI_BT_CLK_CFG2;

-	armRegBit &= 0xfffffffe;

-	armRegBit |= 0x0;

-	AON_WIFI_BT_CLK_CFG2 = armRegBit;

-

-#endif

-

-	gCodecHandle = 0;

-

-#endif

-

-	return ret;

-

-}

-

-SINT32 halAudioConfig_SetOutputPath(T_ZDrv_VpPath path, BOOL enable)

-{

-	SINT32  ret = DRV_SUCCESS;

-#ifdef _CONFIG_USE_CODEC

-	//T_ZDrvCodec_OutDevice outdev = AUDIO_OUTPUT_HEADSET;

-

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "halAudioConfig_SetOutputPath path=%d !\n", path);

-

-

-	if (path == VP_PATH_HANDSET)

-	{

-		s_outDev = AUDIO_OUTPUT_RECEIVER;

-	}

-	else if (path == VP_PATH_SPEAKER)

-	{

-		s_outDev = AUDIO_OUTPUT_SPEAKER;

-	}

-	else if (path == VP_PATH_HEADSET)

-	{

-		s_outDev = AUDIO_OUTPUT_HEADSET;

-	}

-	else if (path == VP_PATH_HSANDSPK)

-	{

-		s_outDev = AUDIO_OUTPUT_HEADSET_SPEAKER;

-	}

-	else

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "halAudioConfig_SetOutputPath the path not support path=%d !\n", path);

-		return DRV_ERROR;

-	}

-

-

-	ret = zDrvCodec_SetOutPath(gCodecHandle, s_outDev, enable);

-	if (ret !=  DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvCodec_SetOutPath err ret=%d !\n", ret);

-

-		return DRV_ERROR;

-	}

-#if defined(_USE_REF_AUDIO_ON_7520V2) && defined(_CONFIG_USE_CODEC_EARPIECE_DETECT)

-	if (enable == TRUE)

-	{

-		halRcvAndEarpSwitch(path);

-		halSpkPaSwitch(path);

-	}

-#endif

-

-#ifdef _USE_REF_AUDIO_ON_7520V3_PHONE

-	if ((path == VP_PATH_HANDSET) && (enable == TRUE))

-	{

-		zDrvGpio_SetFunc(audioGpioCodecEnHandle, AUDIO_CODEC_EN_GPIO_FUNC_SEL);

-		zDrvGpio_SetDirection(audioGpioCodecEnHandle, GPIO_OUT);

-		zDrvGpio_SetOutputValue(audioGpioCodecEnHandle, GPIO_LOW); //GPIO_LOW

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "codec SetOutPath receiver PA open \n");

-	}

-	else

-	{

-		zDrvGpio_SetFunc(audioGpioCodecEnHandle, AUDIO_CODEC_EN_GPIO_FUNC_SEL);

-		zDrvGpio_SetDirection(audioGpioCodecEnHandle, GPIO_OUT);

-		zDrvGpio_SetOutputValue(audioGpioCodecEnHandle, GPIO_HIGH); //GPIO_HIGH

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "codec SetOutPath receiver PA close \n");

-	}

-#endif

-

-#endif

-	return DRV_SUCCESS;

-}

-

-/*******************************************************************************

- * Function: zDrvVoiceConfig_Enable

- * Description: This function is used to Enable voice config

- * Parameters:

- *   Input:None

- *   Output:None

- *

- * Returns: success or error code

- *

- *

- * Others:

- ********************************************************************************/

-SINT32 halAudioConfig_Enable(VOID)

-{

-	SINT32  ret = DRV_SUCCESS;

-#ifdef _CONFIG_USE_CODEC

-

-	ret = zDrvCodec_AudioEnable(gCodecHandle);

-

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "halAudioConfig_Enable zDrvCodec_AudioEnable error ret=%x!\n", ret);

-		zDrvCodec_Close(&gCodecHandle);

-		return DRV_ERROR;

-	}

-#endif

-	return ret;

-}

-/*******************************************************************************

- * Function: zDrvVoiceConfig_Disable

- * Description: This function is used to Disable voice config

- * Parameters:

- *   Input:None

- *   Output:None

- *

- * Returns: success or error code

- *

- *

- * Others:

- ********************************************************************************/

-SINT32 halAudioConfig_Disable(VOID)

-{

-	SINT32  ret = DRV_SUCCESS;

-#ifdef _CONFIG_USE_CODEC

-	ret = zDrvCodec_AudioDisable(gCodecHandle);

-

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "halAudioConfig_Disable zDrvCodec_AudioDisable error ret=%x!\n", ret);

-	}

-#if defined(_USE_REF_AUDIO_ON_7520V2) && defined(_CONFIG_USE_CODEC_EARPIECE_DETECT)

-

-	ret = zDrvCodec_SetInPath(gCodecHandle, s_inDev, FALSE);

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "halAudioConfig_Disable zDrvCodec_SetInPath error ret=%x!\n", ret);

-	}

-	ret += zDrvCodec_SetOutPath(gCodecHandle, s_outDev, FALSE);

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "halAudioConfig_Disable zDrvCodec_SetOutPath error ret=%x!\n", ret);

-	}

-#endif

-

-#endif

-

-	return ret;

-}

-

-/*******************************************************************************

- * Function: zDrvVoiceConfig_SetFs

- * Description: This function is used to  Set Fs.

- * Parameters:

- *   Input:None

- *   Output:None

- *

- * Returns: success or error code

- *

- *

- * Others:

- ********************************************************************************/

-

-SINT32 halAudioConfig_SetFs(T_ZDrv_VpFs fs)

-{

-

-	SINT32  ret = DRV_SUCCESS;

-

-#ifdef _CONFIG_USE_CODEC

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "halAudioConfig_SetFs fs=%d !\n", fs);

-	if (fs == VP_FS_8000)

-	{

-		Sample_Fs = AUDIO_SAMPLE_8K;

-	}

-	else if (fs == VP_FS_16000)

-	{

-		Sample_Fs = AUDIO_SAMPLE_16K;

-	}

-	else if (fs == VP_FS_32000)

-	{

-		Sample_Fs = AUDIO_SAMPLE_32K;

-	}

-	else if (fs == VP_FS_44100)

-	{

-		Sample_Fs = AUDIO_SAMPLE_44_1K;

-	}

-	else if (fs == VP_FS_48000)

-	{

-		Sample_Fs = AUDIO_SAMPLE_48K;

-	}

-	else

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "halAudioConfig_SetFs the fs not support  !\n");

-		zDrvCodec_Close(&gCodecHandle);

-		return DRV_ERROR;

-	}

-

-	ret = zDrvCodec_SetClock(gCodecHandle, Sample_Fs);

-

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvCodec_SetClock err ret=0x%x !\n", ret);

-		zDrvCodec_Close(&gCodecHandle);

-		return DRV_ERROR;

-	}

-

-	if (codecSrcType == AUDIO_SOURCE)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "halAudioConfig_SetFs zDrvCodec_SetOut_Hpf fs=%d !\n", fs);

-		ret = zDrvCodec_SetOut_Hpf(gCodecHandle, Sample_Fs, 1);

-		if (ret != DRV_SUCCESS)

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvCodec_SetOut_Hpf err ret=0x%x !\n", ret);

-			zDrvCodec_Close(&gCodecHandle);

-			return DRV_ERROR;

-		}

-	}

-

-	//ret += zDrvCodec_SetProtocal (gCodecHandle, AUDIO_I2S1, I2S_SLAVE_MODE);

-	if (codecSrcType == VOICE_SOURCE)

-	{

-		ret = zDrvCodec_SetProt(gCodecHandle, s_useProtocal);

-		if (ret != DRV_SUCCESS)

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvCodec_SetProtocal err ret=0x%x !\n", ret);

-			zDrvCodec_Close(&gCodecHandle);

-			return ret;

-		}

-	}

-

-#endif

-	return ret;

-}

-

-SINT32 halAudioConfig_SetInputPath(T_ZDrv_VpPath path, BOOL enable)

-{

-	SINT32  ret = DRV_SUCCESS;

-#ifdef _CONFIG_USE_CODEC

-	//T_ZDrvCodec_InDevice indev = AUDIO_INPUT_HEADSET;

-

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "halAudioConfig_SetInputPath path=%d !\n", path);

-

-	if (path == VP_PATH_HANDSET)

-	{

-		s_inDev = AUDIO_INPUT_HANDSET;

-	}

-	else if (path == VP_PATH_SPEAKER)

-	{

-		s_inDev = AUDIO_INPUT_SPEAKER;

-	}

-	else if (path == VP_PATH_HEADSET)

-	{

-		s_inDev = AUDIO_INPUT_HEADSET;

-	}

-	else

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "halAudioConfig_SetInputPath the path not support path=%d !\n", path);

-		return DRV_ERROR;

-	}

-

-	ret = zDrvCodec_SetInPath(gCodecHandle, s_inDev, enable);

-

-#if !defined(_USE_REF_AUDIO_ON_7520V2) || !defined(_CONFIG_USE_CODEC_EARPIECE_DETECT)

-	if (enable == TRUE)

-	{

-		ret += zDrvCodec_SetMicBias(gCodecHandle, MICBIAS_OUT_2_5V);    // k315 not use

-	}

-

-#endif

-

-	if (ret !=  DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvCodec_SetInPath err ret=%d !\n", ret);

-

-		return DRV_ERROR;

-	}

-#if 0

-	ret = zDrvCodec_Set_Inpath_Dig_Vol(gCodecHandle, CODEC_INPATH_DIG_GAIN_PLUS_15DB);

-	if (ret !=  DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvCodec_Set_Inpath_Dig_Vol err ret=%d !\n", ret);

-

-		return DRV_ERROR;

-	}

-#endif

-

-#endif

-	return DRV_SUCCESS;

-}

-

-SINT32 halAudioConfig_SetMute(T_ZDrv_VpPath path, BOOL mute)

-{

-	SINT32  ret = DRV_SUCCESS;

-#ifdef _CONFIG_USE_CODEC

-	ret = zDrvCodec_SetOutpathMute(gCodecHandle, mute);

-	if (ret !=	DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "halAudioConfig_SetMute err ret=%d !\n", ret);

-	}

-#endif

-

-	return ret;

-}

-

-SINT32 halAudioConfig_SetFmPath(T_ZDrv_VpPath path, BOOL enable)

-{

-	SINT32  ret = DRV_SUCCESS;

-

-#ifdef _CONFIG_USE_CODEC

-    //T_ZDrvCodec_SourceType codecSrcType = EXTERN_AUDIO;//xiu

-	T_ZDrvCodec_InDevice indev;

-	T_ZDrvCodec_OutDevice outdev ;

-

-	if (path == VP_PATH_HEADSET)

-	{

-		indev = AUDIO_INPUT_FM_ANATOANA;

-		outdev = AUDIO_OUTPUT_FM_ANATOANA_HEADSET;

-		//set codec  vspker ldo en

-

-	}

-	else if (path == VP_PATH_SPEAKER)

-	{

-		indev = AUDIO_INPUT_FM_ANATOANA;

-		outdev = AUDIO_OUTPUT_FM_ANATOANA_SPEAKER;

-		//set codec  vspker ldo en

-

-	}

-	else

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "halAudioConfig_SetFmPath the input path not support path=%d !\n", path);

-		return DRV_ERROR;

-	}

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, " halAudioConfig_SetFmPath  !\n");

-	if (enable == TRUE)

-	{

-

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "halAudioConfig_SetFmPath enable path=%d,enable=%d!\n", path, enable);

-		if (s_isFmOpened == FALSE)

-		{

-			ret = halAudioConfig_Open(VP_FM_SOURCE);

-			if (ret != DRV_SUCCESS)

-			{

-				zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvCodec_Open err ret=0x%x !\n", ret);

-				// zDrvCodec_Close(&gCodecHandle);

-

-				return ret;

-			}

-#if 0

-			ret += zDrvCodec_Reset(gCodecHandle);

-			if (ret != DRV_SUCCESS)

-			{

-				zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvCodec_Reset err ret=%x !\n", ret);

-				zDrvCodec_Close(&gCodecHandle);

-

-				return ret;

-			}

-#endif

-		}

-		

-#if defined(_USE_REF_AUDIO_ON_7520V2) && defined(_CONFIG_USE_CODEC_EARPIECE_DETECT)

-		halRcvAndEarpSwitch(path);

-		halSpkPaSwitch(path);

-#endif

-		ret = zDrvCodec_SetInPath(gCodecHandle, indev, enable);

-

-		if (ret !=	DRV_SUCCESS)

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "halAudioConfig_SetFmPath input path err ret=%d !\n", ret);

-			zDrvCodec_Close(&gCodecHandle);

-

-			return DRV_ERROR;

-		}

-		ret = zDrvCodec_SetOutPath(gCodecHandle, outdev, enable);

-		if (ret !=	DRV_SUCCESS)

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "halAudioConfig_SetFmPath output path err ret=%d !\n", ret);

-			zDrvCodec_Close(&gCodecHandle);

-

-			return DRV_ERROR;

-		}

-	}

-	else if (s_isFmOpened == TRUE)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "halAudioConfig_SetFmPath disable !\n");

-#if defined(_USE_REF_AUDIO_ON_7520V2) && defined(_CONFIG_USE_CODEC_EARPIECE_DETECT)

-		ret = zDrvCodec_SetInPath(gCodecHandle, indev, enable);

-

-		if (ret != DRV_SUCCESS)

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "halAudioConfig_Disable zDrvCodec_SetInPath error ret=%x!\n", ret);

-		}

-		ret = zDrvCodec_SetOutPath(gCodecHandle, outdev, enable);

-		if (ret != DRV_SUCCESS)

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "halAudioConfig_Disable zDrvCodec_SetOutPath error ret=%x!\n", ret);

-		}

-#endif

-

-		ret = halAudioConfig_Close();

-		if (ret != DRV_SUCCESS)

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "halAudioConfig_Close zDrvCodec_Close err ret=%x !\n", ret);

-		}

-

-	}

-

-	s_isFmOpened = enable;

-

-#endif

-

-	return DRV_SUCCESS;

-}

-SINT32 halAudioConfig_SetLoopback(BOOL enable)

-{

-	SINT32  ret = DRV_SUCCESS;

-#ifdef _CONFIG_USE_CODEC

-	ret = zDrvCodec_SetLoopBack(gCodecHandle, enable);

-	if (ret !=  DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "halAudioConfig_SetLoopback err ret=%d !\n", ret);

-

-		return DRV_ERROR;

-	}

-#endif

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

-    return ret;//xiu

-}

-SINT32 halAudioConfig_SetInputVol(T_ZDrv_VpVol vol)

-{

-	SINT32  ret = DRV_SUCCESS;

-

-#ifdef _CONFIG_USE_CODEC

-

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "halAudioConfig_SetInputVol vol=%d !\n", vol);

-

-	ret = zDrvCodec_Set_Inpath_Dig_Vol(gCodecHandle, vol);

-

-	if (ret !=  DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvCodec_Set_Inpath_Dig_Vol err ret=%d !\n", ret);

-		return DRV_ERROR;

-	}

-

-

-#endif

-	return DRV_SUCCESS;

-}

-

-

-SINT32 halAudioConfig_SetOutputVol(T_ZDrv_VpVol vol)

-{

-	SINT32  ret = DRV_SUCCESS;

-

-#ifdef _CONFIG_USE_CODEC

-

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "halAudioConfig_SetOutputVol vol=%d !\n", vol);

-

-	ret = zDrvCodec_Set_Outpath_Dig_Vol(gCodecHandle, vol);

-

-	if (ret !=  DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "halAudioConfig_SetOutputVol err ret=%d !\n", ret);

-		return DRV_ERROR;

-	}

-

-#endif

-

-	return DRV_SUCCESS;

-

-}

-

-SINT32 halAudioConfig_SetUseProtocol(T_ZDrvCodec_UseProtocol useProtocol)

-{

-    SINT32  ret = DRV_SUCCESS;

-

-#ifdef _CONFIG_USE_CODEC

-	useProtocol.audI2SChannel = AUDIO_I2S0;

-    s_useProtocal = useProtocol;

-

-	if (codecSrcType != VOICE_SOURCE)

-	{

-		ret = zDrvCodec_SetProt(gCodecHandle, s_useProtocal);

-		if (ret != DRV_SUCCESS)

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvCodec_SetProt err ret=0x%x !\n", ret);

-			zDrvCodec_Close(&gCodecHandle);

-			return ret;

-		}

-	}

-#endif

-

-	return ret;

-}

-

-SINT32 halAudioConfig_GetMixerToneInfo(T_ZDrvVp_ToneNum toneNum, T_HalMixerToneInfo *toneInfo)

-{

-	SINT32  ret = DRV_SUCCESS;

-	T_zDrvVoice_GbVar *p_voiceVar = NULL;

-	ret = zDrvVp_GetVoiceState(&p_voiceVar);

-

-	if (p_voiceVar == NULL) /*klocwork 3 INVARIANT_CONDITION.UNREACH  delete (ret!=DRV_SUCCESS)*/

-	{

-		return DRV_ERROR;

-	}

-

-	if ((p_voiceVar->voiceInVolteMode == 1) && (p_voiceVar->volteIsWb == 1))

-	{

-

-		toneInfo->dataIsWb = TRUE;

-

-	}

-	else

-	{

-		toneInfo->dataIsWb = FALSE;

-

-	}

-	if (toneInfo->dataIsWb == TRUE)

-	{

-		if (0 == toneNum)

-		{

-			toneInfo->ptdata_mixer = (UINT16 *)lowPowerPcm_16k;

-			//mixerToneInfo.tone_total_size=sizeof(lowPowerPcm)/sizeof(char);

-			toneInfo->tone_total_size = sizeof(lowPowerPcm_16k) / sizeof(UINT16);

-

-		}

-		else if (1 == toneNum)

-		{

-			toneInfo->ptdata_mixer = (UINT16 *)smsPcm_16k;

-			toneInfo->tone_total_size = sizeof(smsPcm_16k) / sizeof(UINT16);

-		}

-		else if (2 == toneNum)

-		{

-			toneInfo->ptdata_mixer = (UINT16 *)callStandardPcm_16k;

-			toneInfo->tone_total_size = sizeof(callStandardPcm_16k) / sizeof(UINT16);

-		}

-		else if (3 == toneNum)

-		{

-			toneInfo->ptdata_mixer = (UINT16 *)alarmBeepPcm_16k;

-			toneInfo->tone_total_size = sizeof(alarmBeepPcm_16k) / sizeof(UINT16);

-		}

-		else if (4 == toneNum)

-		{

-			toneInfo->ptdata_mixer = (UINT16 *)callTimePcm_16k;

-			toneInfo->tone_total_size = sizeof(callTimePcm_16k) / sizeof(UINT16);

-		}

-		else

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_ToneMixerStart para is error!");

-			return DRV_ERROR;

-		}

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "halAudioConfig_GetMixerToneInfo toneInfo->ptdata_mixer=%p,L(toneInfo->ptdata_mixer)=%d!\n", toneInfo->ptdata_mixer, sizeof(toneInfo->ptdata_mixer));

-

-

-	}

-	else

-	{

-		if (0 == toneNum)

-		{

-			toneInfo->ptdata_mixer = (UINT16 *)lowPowerPcm;

-			//mixerToneInfo.tone_total_size=sizeof(lowPowerPcm)/sizeof(char);

-			toneInfo->tone_total_size = sizeof(lowPowerPcm) / sizeof(UINT16);

-

-		}

-		else if (1 == toneNum)

-		{

-			toneInfo->ptdata_mixer = (UINT16 *)smsPcm;

-			toneInfo->tone_total_size = sizeof(smsPcm) / sizeof(UINT16);

-		}

-		else if (2 == toneNum)

-		{

-			toneInfo->ptdata_mixer = (UINT16 *)callStandardPcm;

-			toneInfo->tone_total_size = sizeof(callStandardPcm) / sizeof(UINT16);

-		}

-		else if (3 == toneNum)

-		{

-			toneInfo->ptdata_mixer = (UINT16 *)alarmBeepPcm;

-			toneInfo->tone_total_size = sizeof(alarmBeepPcm) / sizeof(UINT16);

-		}

-		else if (4 == toneNum)

-		{

-			toneInfo->ptdata_mixer = (UINT16 *)callTimePcm;

-			toneInfo->tone_total_size = sizeof(callTimePcm) / sizeof(UINT16);

-		}

-		else

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_ToneMixerStart para is error!");

-			return DRV_ERROR;

-		}

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "halAudioConfig_GetMixerToneInfo toneInfo->ptdata_mixer=%p,L(toneInfo->ptdata_mixer)=%d!\n", toneInfo->ptdata_mixer, sizeof(toneInfo->ptdata_mixer));

-	}

-

-

-	toneInfo->inter_mixer_fcount = toneInfo->tone_total_size / toneInfo->data_mixer_oncesize;

-	toneInfo->rem_mixer_count = toneInfo->tone_total_size % toneInfo->data_mixer_oncesize;

-

-	return DRV_SUCCESS;

-}

-

-

-

-#if 0

-SINT32 halAudioConfig_GetAudioLoopInfo(T_HalAudioLoopTestInfo *audioInfo)

-{

-	SINT32  ret = DRV_SUCCESS;

-	audioInfo->fs = 2000;

-	audioInfo->sampFs = 8000;

-	audioInfo->ptdata = (UINT8 *)buffer2k8000; //buffer1k//xiu

-	audioInfo->totalSize = 2250;

-	audioInfo->outpathvol[0] = VP_VOL_8;

-	audioInfo->outpathvol[1] = VP_VOL_9; //org : VP_VOL_8

-	audioInfo->outpathvol[2] = VP_VOL_11;

-	audioInfo->outpathvol[3] = VP_VOL_11;

-

-	return ret;

-}

-SINT32 halAudioConfig_GetAudioLoopResult(T_HalAudioLoopTestPra *audioPra)

-{

-	SINT32  ret = DRV_ERROR, i = 0;

-	UINT8 testCount = 0, testSucessCount = 0;

-	zDrvVp_Freqfft temp = {0};

-	DOUBLE freq[20] = {0};

-	DOUBLE freqAmp[20] = {0};

-	DOUBLE toneRealFreq = 2000;

-	testCount = 20;

-#ifdef _CONFIG_USE_CODEC

-	zDrvCodec_Set_Inpath_Ana_Vol(gCodecHandle, 0);

-	zDrvCodec_Set_Inpath_Dig_Vol(gCodecHandle, VP_VOL_3);

-#endif

-	while (testCount > 0)

-	{

-		//todo

-

-		zOss_Memcpy(audioPra->dest, audioPra->src, 2048); //2048byte

-

-		cal_freq_fft((SINT16 *)audioPra->dest,&temp,1024,audioPra->sampfs);//1024 point fft//xiu

-

-		freq[testCount - 1] = temp.freqValue;

-		freqAmp[testCount - 1] = temp.freqAmp;

-		if (((fabs(freq[testCount - 1] - toneRealFreq)) < 50) && (freqAmp[testCount - 1] > 300))

-		{

-			testSucessCount++;

-			if (testSucessCount >= 5)

-			{

-				zOss_Printf(SUBMDL_HAL, PRINT_LEVEL_NORMAL, "testSucessCount=%d!\n", testSucessCount);

-				ret = DRV_SUCCESS;

-				testCount--;

-				break;

-			}

-		}

-		testCount--;

-		zOss_Sleep(100);

-	}

-

-

-	for (i = 19; i >= testCount; i--)

-	{

-		zOss_Printf(SUBMDL_HAL, PRINT_LEVEL_NORMAL, "zDrvVp_TestAudioLoopPath freq[%d]=%f freqAmp =%f!\n", i, freq[i], freqAmp[i]);

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_TestAudioLoopPath freq[%d]=%f freqAmp =%f!\n", i, freq[i], freqAmp[i]);

-

-	}

-	return ret;

-}

-#endif

-

-#ifdef _CONFIG_DC_USE_CODEC//dual_core version

-

-SINT32 halAudioConfig_ReadReg(UINT16 regPage, UINT16 regAddress, UINT16 *regValue)

-{

-	SINT32  ret = DRV_SUCCESS;

-#ifdef _CONFIG_USE_CODEC

-	ret = zDrvCodec_Read(regPage, regAddress, regValue);

-	if (ret !=	DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "halAudioConfig_ReadReg err ret=%d !\n", ret);

-	}

-#endif

-	return ret;

-}

-

-SINT32 halAudioConfig_WriteReg(UINT16 regPage, UINT16 regAddress, UINT16 regValue, UINT16 regMask)

-{

-	SINT32  ret = DRV_SUCCESS;

-#ifdef _CONFIG_USE_CODEC

-	ret = zDrvCodec_Write(regPage, regAddress, regValue, regMask);

-	if (ret !=	DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "halAudioConfig_WriteReg err ret=%d !\n", ret);

-	}

-#endif

-	return ret;

-}

-

-SINT32 halAudioConfig_DumpReg(VOID)

-{

-	SINT32  ret = DRV_SUCCESS;

-#ifdef _CONFIG_USE_CODEC

-	ret = zDrvCodec_DumpReg();

-	if (ret !=	DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvCodec_DumpReg err ret=%d !\n", ret);

-	}

-#endif

-	return ret;

-}

-#endif

-

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
deleted file mode 100755
index 01399c1..0000000
--- a/Uboot/cp/ps/driver/src/chipsets/src/audio_base/audio_lib/amr/lib/armv7-a/GCC/amr.a
+++ /dev/null
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
deleted file mode 100755
index dff7364..0000000
--- a/Uboot/cp/ps/driver/src/chipsets/src/audio_base/audiointf/hal_audextintf.c
+++ /dev/null
@@ -1,1937 +0,0 @@
-/*******************************************************************************

- * Copyright (C) 2007, ZTE Corporation.

- *

- * File Name:hal_extintf.c

- * File Mark:

- * Description: Loop voice data from teak to arm.

-                    Settings: arm iis1->top iis1(connect to ap), arm iis2 loop to teak afe.

-

- * Others:

- * Version:

- * Author:        xuxinqiang

- * Date:          2015-8-29

- * History 1:

- *     Date:

- *     Version:

- *     Author:

- *     Modification:

- * History 2:

-  ********************************************************************************/

-

-/****************************************************************************

-* 	                                           Include files

-****************************************************************************/

-//#include "drv_pub.h"

-#include "drvs_i2s.h"

-#include "oss_api.h"

-#include "drvs_ramlog.h"

-//#include "drvs_volte.h"

-#include "drvs_voiceprocess.h"

-#include "hal_voiceprocess.h"

-#include "drvs_voice_config.h"

-//#include "voice_api.h"

-#include "hal_voice.h"

-//#include "hal_pcmmixer.h"

-#ifdef _USE_NXP_AUD

-#include "hal_nxp.h"

-#endif

-#include "hal_audiointf.h"

-#include "drvs_audiomanager.h"

-//#include "math.h"

-/****************************************************************************

-* 	                                           Local Macros

-****************************************************************************/

-

-/* each time receive 320 BYTES*/

-#define MIXER_DATA_SHIFT_BITS 2

-

-

-/****************************************************************************

-* 	                                           Local Types

-****************************************************************************/

-typedef struct

-{

-	DOUBLE freqValue;

-	DOUBLE freqAmp;

-

-}

-zDrvVp_Freqfft;

-

-/****************************************************************************

-* 	                                           Local Constants

-****************************************************************************/

-

-/****************************************************************************

-* 	                                           Local Function Prototypes

-****************************************************************************/

-SINT32 cal_freq_fft(SINT16 *data, zDrvVp_Freqfft *freqfft, UINT16 n, UINT32 fs);

-SINT32 halVpCfg_GetMixerToneInfo(T_ZDrvVp_ToneNum toneNum, T_HalMixerToneInfo *toneInfo); //xiu gai chu sheng ming

-SINT32 halVpCfg_SetOutputMute(BOOL onoff);//xiu gai chu

-/****************************************************************************

-* 	                                          Global Constants

-****************************************************************************/

-

-

-

-/****************************************************************************

-* 	                                          Global Variables

-****************************************************************************/

-T_HalMixerToneInfo mixerToneInfo =

-{

-	FALSE,

-	FALSE,

-	0,

-	0,

-	0,

-	0,

-	NULL,

-	0//xiu

-};

-

-

-

-extern T_HalVpCfg_Opt*  gHalVpCfg_ObjPtr ;

-extern T_zDrvVoice_GbVar g_voiceVar;

-

-//dtmf¼ì²â

-extern T_DrvDtmf_Detect_Opt gDrvDtmf_Detect_Obj;

-

-/****************************************************************************

-* 	                                          Global Function Prototypes

-****************************************************************************/

-extern SINT32 zDrvVp_LoopStart(T_ZDrv_VpPath path);

-extern SINT32 zDrvVp_LoopStop(VOID);//xiu gai chu tian jia void

-#ifdef _USE_AUDEXT_CODEC_PATH_INTF

-SINT32 halVpCfg_SetInputMute(BOOL onoff);//xiu gai chu sheng ming

-#endif

-SINT32 halVpCfg_GetAudioLoopInfo(T_HalAudioLoopTestInfo *audioInfo);//xiu gai chu sheng ming

-SINT32 halVpCfg_SetOutputVol(T_ZDrv_VpVol vol);//xiu gai chu sheng ming

-SINT32 halVpCfg_GetAudioLoopResult(T_HalAudioLoopTestPra *audioPra);//xiu gai chu sheng ming

-

-

-SINT32 zDrvVp_GetTxVol(VOID);

-SINT32 zDrvVp_SetTxVol(T_ZDrv_VpVol volume);

-SINT32 zDrvVp_SetRxMute(UINT32 enable, UINT32 channel);

-SINT32 zDrvVp_GetRxMute(UINT32 *enable, UINT32 channel);

-extern SINT32 zDrvVp_Soft_Dtmf_Loop(T_ZDrv_VpPath path);

-

-//ÉèÖÃÖ¸¶¨level¼¶±ðÒôÁ¿volumeµÄÔöÒæÖµgain

-SINT32 zDrvVp_SetVol_Gain(int gain);

-SINT32 zDrvVp_GetVol_Gain(VOID);

-SINT32 zDrvVp_SetVol_Gain_Wrap(int gain);

-SINT32 zDrvVp_GetVol_Gain_Wrap(VOID);

-SINT32 zDrvVp_SetTxVol_Gain(int gain);

-SINT32 zDrvVp_GetTxVol_Gain(VOID);

-SINT32 zDrvVp_SetTxVol_Gain_Wrap(int gain);

-SINT32 zDrvVp_GetTxVol_Gain_Wrap(VOID);

-/****************************************************************************

-* 	                                          Function Definitions

-****************************************************************************/

-SINT32 zDrv_Audio_Printf(VOID *pFormat, ...)

-{

-	char str[256] = {0};

-	va_list tArg;

-	va_start(tArg, pFormat);

-	vsprintf(str, pFormat, tArg);

-	va_end(tArg);

-	return zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, str);

-}

-

-SINT32 zDrvVp_GetVol_Wrap(VOID)

-{

-	return g_voiceVar.vpVol;

-}

-SINT32 zDrvVp_SetVol_Wrap(int volume)

-{

-	return zDrvVp_SetVol(volume);

-}

-

-SINT32 zDrvVp_SetVol_Gain_Wrap(int gain)

-{

-	return zDrvVp_SetVol_Gain(gain);

-}

-

-SINT32 zDrvVp_GetVol_Gain_Wrap(VOID)

-{

-	return zDrvVp_GetVol_Gain();

-}

-

-SINT32 zDrvVp_SetTxVol_Gain_Wrap(int gain)

-{

-	return zDrvVp_SetTxVol_Gain(gain);

-}

-

-SINT32 zDrvVp_GetTxVol_Gain_Wrap(VOID)

-{

-	return zDrvVp_GetTxVol_Gain();

-}

-

-SINT32 zDrvVp_GetTxVol_Wrap(VOID)

-{

-	return zDrvVp_GetTxVol();

-}

-SINT32 zDrvVp_SetTxVol_Wrap(int volume)

-{

-	return zDrvVp_SetTxVol(volume);

-}

-

-SINT32 zDrvVp_GetPath_Wrap(VOID)

-{

-	return g_voiceVar.vpPath;

-}

-SINT32 zDrvVp_SetPath_Wrap(int path)

-{

-	return zDrvVp_SetPath(path);

-}

-

-SINT32 zDrvVp_SetMute_Wrap(BOOL enable)

-{

-	return zDrvVp_SetMute(enable, VOICE_UPLINK);

-}

-

-BOOL zDrvVp_GetMute_Wrap(VOID)

-{

-	return g_voiceVar.muteEn;

-}

-SINT32 zDrvVp_SetRxMute_Wrap(int enable)

-{

-	return zDrvVp_SetRxMute(enable, VOICE_DOWNLINK);

-}

-

-int zDrvVp_GetRxMute_Wrap(VOID)

-{

-	return g_voiceVar.rxMuteEn;

-}

-

-SINT32 zDrvVp_SetTone_Wrap(T_ZDrvVp_ToneNum toneNum)

-{

-	return zDrvVp_ToneMixerStart(toneNum);

-}

-SINT32 zDrvVp_SetVpLoop_Wrap(int path)

-{

-	return zDrvVp_Loop(path);

-}

-SINT32 zDrvVp_GetVpLoop_Wrap(VOID)

-{

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "%s:vpLoopBkRunning=%d.\n", __func__, g_voiceVar.vpLoopBkRunning);

-    zOss_Printf(SUBMDL_HAL, PRINT_LEVEL_NORMAL,  "%s:vpLoopBkRunning=%d.\n", __func__, g_voiceVar.vpLoopBkRunning);

-	return g_voiceVar.vpLoopBkRunning;

-}

-

-SINT32 zDrvVp_GetSlicFlag(VOID)

-{

-

-	return g_voiceVar.isUseSlicCodec;

-

-}

-SINT32 zDrvVp_SetEchoDelay_Wrap(int val)

-{

-	SINT32  ret = DRV_SUCCESS;

-	ret = VoiceProc_SetEchoDelay(val);

-	return ret;

-}

-

-SINT32 zDrvVp_GetEchoDelay_Wrap(void)

-{

-

-	SINT32  ret = DRV_SUCCESS;

-	ret = VoiceProc_GetEchoDelay();

-	return ret;

-

-}

-

-SINT32 zDrvVp_SetTxNsMode_Wrap(int val)

-{

-	SINT32  ret = DRV_SUCCESS;

-	ret = VoiceProc_SetTxNsMode(val);

-	return ret;

-}

-

-SINT32 zDrvVp_GetTxNsMode_Wrap(void)

-{

-	SINT32  ret = DRV_SUCCESS;

-	ret = VoiceProc_GetTxNsMode();

-	return ret;

-

-}

-SINT32 zDrvVp_SetRxNsMode_Wrap(int val)

-{

-	SINT32  ret = DRV_SUCCESS;

-	ret = VoiceProc_SetRxNsMode(val);

-	return ret;

-}

-

-SINT32 zDrvVp_GetRxNsMode_Wrap(void)

-{

-	SINT32  ret = DRV_SUCCESS;

-	ret = VoiceProc_GetRxNsMode();

-	return ret;

-

-}

-

-

-SINT32 zDrvVp_SetModuleState_Wrap(int *mod, int count)

-

-{

-	SINT32  ret = DRV_SUCCESS;

-	ret = VoiceProc_SetModuleState(mod, count);

-

-	return ret;

-

-}

-

-SINT32 zDrvVp_GetModuleState_Wrap(int *mod, int count)

-

-{

-	SINT32  ret = DRV_SUCCESS;

-	ret = VoiceProc_GetModuleState(mod, count);

-	return ret;

-}

-

-

-

-SINT32 zDrvVp_SetPath(T_ZDrv_VpPath path)

-{

-

-	SINT32  ret = DRV_SUCCESS;

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_SetPath begin path=%d,vpI2sStatus=%d,vProcIsNormal=%d!", path, g_voiceVar.vpI2sStatus, g_voiceVar.vProcIsNormal);

-	if (path >= MAX_VP_PATH)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_SetPath path not support!\r\n");

-		return DRV_ERR_INVALID_PARAM;

-	}

-

-	if (g_voiceVar.vpI2sStatus == VP_I2S_IDLE)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_SetPath g_voiceVar.vpI2sStatus idle set path return!\r\n");

-		g_voiceVar.vpPath = path;

-		return DRV_SUCCESS;

-	}

-

-	if (g_voiceVar.vpI2sStatus == VP_LOOP_ON)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_SetPath vp_loop_on return !\r\n");

-		return DRV_SUCCESS;

-	}

-

-	//zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_SetPath path=%d,vProcIsNormal=%d!", path, g_voiceVar.vProcIsNormal);

-	if (g_voiceVar.vProcIsNormal == TRUE)

-	{

-#ifdef _USE_NXP_AUD

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_SetVol NXP set path!\r\n");

-		ret = Vp_NxpGetParam(g_voiceVar.voiceMode, path);

-		if (ret == DRV_SUCCESS)

-		{

-			ret = Vp_NxpSetParam(path, g_voiceVar.vpVol, FALSE);

-			if (ret != DRV_SUCCESS)

-			{

-				zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_SetPath Vp_NxpSetParam err ret=%x !\n", ret);

-				return DRV_ERROR;

-			}

-		}

-		else

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_SetPath Vp_NxpGetParam err ret=%x !\n", ret);

-			return DRV_ERROR;

-		}

-#elif defined _USE_WEBRTC_AUD

-		//zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "webrtc  set path!\r\n");

-

-		ret = Webrtc_GetParam(g_voiceVar.voiceMode,  path);

-		if (ret != DRV_SUCCESS)

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_SetPath Webrtc_GetParam err ret=%x !\n", ret);

-			return DRV_ERROR;

-

-		}

-		ret = Webrtc_SetParam(g_voiceVar.voiceMode,  path);

-		if (ret != DRV_SUCCESS)

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_SetPath Webrtc_SetParam err ret=%x !\n", ret);

-			return DRV_ERROR;

-

-		}

-

-#endif

-	}

-

-

-	if ((path == VP_PATH_HANDSET) || (path == VP_PATH_HEADSET) || (path == VP_PATH_SPEAKER))

-	{

-		ret = halVpCfg_SetInputPath(path, TRUE);

-		if (ret != DRV_SUCCESS)

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_SetPath halVpCfg_SetInputPath err ret=%x !\n", ret);

-			return DRV_ERROR;

-		}

-		ret = halVpCfg_SetOutputPath(path, TRUE);

-		if (ret != DRV_SUCCESS)

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_SetPath halVpCfg_SetOutputPath err ret=%d !\n", ret);

-			return DRV_ERROR;

-		}

-

-	}

-

-	g_voiceVar.vpPath = path;

-

-	return DRV_SUCCESS;

-}

-

-SINT32 zDrvVp_GetPath(T_ZDrv_VpPath *path)

-{

-

-	SINT32  ret = DRV_SUCCESS;

-	*path = g_voiceVar.vpPath;

-

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_SetPath begin *path=%d,vpI2sStatus=%d,vProcIsNormal=%d!", *path, g_voiceVar.vpI2sStatus, g_voiceVar.vProcIsNormal);

-

-	return DRV_SUCCESS;

-}

-

-

-

-#ifdef _USE_AUDEXT_CODEC_PATH_INTF

-

-SINT32 zDrvVp_SetRxPath(T_ZDrv_CodecOutputPath path, BOOL isenable)

-{

-	SINT32  ret = DRV_SUCCESS;

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_SetRxPath is=%d", path);

-	if (path >= MAX_CODEC_OUTPUT_PATH)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_SetRxPath path not support!\r\n");

-		return DRV_ERR_INVALID_PARAM;

-	}

-	T_ZDrv_VpPath temppath;

-	switch (path)

-	{

-	case CODEC_OUTPUT_RECEIVER:

-		temppath = VP_PATH_HANDSET;

-		break;

-	case  CODEC_OUTPUT_SPEAKER:

-		temppath = VP_PATH_SPEAKER;

-		break;

-	case CODEC_OUTPUT_HEADSET:

-		temppath = VP_PATH_HEADSET;

-		break;

-	case CODEC_OUTPUT_HSANDSPK:

-		temppath = VP_PATH_HSANDSPK;

-		break;

-	case CODEC_OUTPUT_BLUETOOTH:

-		temppath = VP_PATH_BLUETOOTH;

-		break;

-	default:

-		return DRV_ERR_INVALID_PARAM;

-

-	}

-	ret = halVpCfg_SetOutputPath(temppath, isenable);

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_SetRxPath  err ret=%d !\n", ret);

-		return DRV_ERROR;

-	}

-

-	return DRV_SUCCESS;

-}

-

-SINT32 zDrvVp_SetTxPath(T_ZDrv_CodecInputPath path, BOOL isenable)

-{

-	SINT32  ret = DRV_SUCCESS;

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_SetTxPath is=%d", path);

-	if (path >= MAX_CODEC_INPUT_PATH)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_SetTxPath path not support!\r\n");

-		return DRV_ERR_INVALID_PARAM;

-	}

-	T_ZDrv_VpPath temppath;

-	switch (path)

-	{

-	case CODEC_INPUT_MICPHONE:

-		temppath = VP_PATH_HANDSET;

-		break;

-	case  CODEC_INPUT_HEADSET:

-		temppath = VP_PATH_HEADSET;

-		break;

-	case CODEC_INPUT_HANDSFREE:

-		temppath = VP_PATH_SPEAKER;

-		break;

-	case CODEC_INPUT_BLUETOOTH:

-		temppath = VP_PATH_BLUETOOTH;

-		break;

-	default:

-		return DRV_ERR_INVALID_PARAM;

-	}

-	ret = halVpCfg_SetInputPath(temppath, isenable);

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_SetTxPath  err ret=%d !\n", ret);

-		return DRV_ERROR;

-	}

-

-	return DRV_SUCCESS;

-}

-#endif

-

-SINT32 zDrvVp_SetVol_Gain(int gain)

-{

-    SINT32  ret = DRV_SUCCESS;

-

-#ifdef  _USE_WEBRTC_AUD

-	ret = Webrtc_SetRxVol_Gain(gain);

-#endif

-    

-    return ret;

-}

-

-SINT32 zDrvVp_GetVol_Gain(VOID)

-{

-#ifdef  _USE_WEBRTC_AUD

-	return Webrtc_GetRxVol_Gain();

-#else

-	return 0;

-#endif

-}

-

-SINT32 zDrvVp_SetTxVol_Gain(int gain)

-{

-    SINT32  ret = DRV_SUCCESS;

-

-#ifdef  _USE_WEBRTC_AUD    

-	ret = Webrtc_SetTxVol_Gain(gain);

-#endif

-    

-    return ret;

-}

-

-SINT32 zDrvVp_GetTxVol_Gain(VOID)

-{

-#ifdef  _USE_WEBRTC_AUD

-        return Webrtc_GetTxVol_Gain();

-#else

-        return 0;

-#endif

-}

-

-SINT32 zDrvVp_SetVol(T_ZDrv_VpVol volume)

-{

-	SINT32  ret = DRV_SUCCESS;

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_SetVol begin volume=%d,g_voiceVar.vpI2sStatus=%d!", volume, g_voiceVar.vpI2sStatus);

-	if (volume >= MAX_VP_VOL)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_SetVol volume not support!\r\n");

-		return DRV_ERR_INVALID_PARAM;

-	}

-

-	if (g_voiceVar.vpI2sStatus == VP_I2S_IDLE)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_SetPath g_voiceVar.vpI2sStatus idle set volume return!\r\n");

-		g_voiceVar.vpVol = volume;

-		return DRV_SUCCESS;

-	}

-

-	if (g_voiceVar.vpI2sStatus == VP_LOOP_ON)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_SetVol vp_loop_on return !\r\n");

-		return DRV_SUCCESS;

-	}

-	if (volume >= VP_VOL_6)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_SetVol volume >=vol_6,set vol5 volume=%d!",volume);

-		volume = VP_VOL_5;

-	}

-	//zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_SetVol volume=%d,ret=%d!", volume, ret);

-

-	if (g_voiceVar.vProcIsNormal == TRUE) /*klocwork 3 INVARIANT_CONDITION.UNREACH  delete*/

-	{

-#ifdef _USE_NXP_AUD

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_SetVol NXP set volume!\r\n");

-		ret = Vp_NxpGetParam(g_voiceVar.voiceMode, g_voiceVar.vpPath);

-		ret += Vp_NxpSetParam(g_voiceVar.vpPath, volume, FALSE);

-		if (ret != DRV_SUCCESS)

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_SetVol Vp_NxpSetParam err ret=%d !\n", ret);

-			return DRV_ERROR;

-		}

-#elif defined _USE_WEBRTC_AUD

-		//zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_SetVol wetrtc vol=%d!\r\n", volume);

-

-		//ret =Webrtc_SetRxVol(volume);

-		ret = Webrtc_SetVol(g_voiceVar.voiceMode, g_voiceVar.vpPath, volume);

-		if (ret != DRV_SUCCESS)

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_SetVol Webrtc_SetRxVol err ret=%d !\n", ret);

-			return DRV_ERROR;

-		}

-#endif

-

-	}

-

-	g_voiceVar.vpVol = volume;

-

-	return DRV_SUCCESS;

-}

-

-SINT32 zDrvVp_GetVol(int *volume)

-{

-	SINT32  ret = DRV_SUCCESS;

-

-	

-

-	*volume = g_voiceVar.vpVol;

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_GetVol  *volume=%d,g_voiceVar.vpI2sStatus=%d!", *volume, g_voiceVar.vpI2sStatus);

-

-	return DRV_SUCCESS;

-}

-

-

-SINT32 zDrvVp_GetTxVol(VOID)

-{

-#ifdef  _USE_WEBRTC_AUD

-

-	return Webrtc_GetTxVol();

-#else

-	return 0;

-#endif

-}

-SINT32 zDrvVp_SetTxVol(T_ZDrv_VpVol volume)

-{

-	SINT32  ret = DRV_SUCCESS;

-#ifdef  _USE_WEBRTC_AUD

-	ret = Webrtc_SetTxVol(volume);

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_SetTxVol Webrtc_SetTxVol err ret=%d !\n", ret);

-		return DRV_ERROR;

-	}

-#endif

-	return DRV_SUCCESS;

-}

-

-SINT32 zDrvVp_EcallSetMute(UINT32 enable)

-{

-	SINT32  ret = DRV_SUCCESS;

-	static UINT32 pre_enable = 0;

-

-

-	if (enable == 1)

-	{

-		g_voiceVar.muteEn = TRUE;

-

-	}

-	else

-	{

-		g_voiceVar.muteEn = FALSE;

-	}

-

-	if(pre_enable != g_voiceVar.muteEn){

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_EcallSetMute mute change  g_voiceVar.muteEn=%d !\n",g_voiceVar.muteEn);

-		pre_enable = g_voiceVar.muteEn;		

-	}

-	return DRV_SUCCESS;

-

-}

-

-SINT32 zDrvVp_SetMute(UINT32 enable, UINT32 channel)

-{

-	SINT32  ret = DRV_SUCCESS;

-#if 0

-	T_ZDrvVoice_MuteInfo muteinfo;

-	muteinfo.enable = enable;

-	muteinfo.channel = channel;

-	ret = voice_SetMute(&muteinfo);

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_SetMute enable=%d,channel=%d,ret=%d!", enable, channel, ret);

-#endif

-

-	if (g_voiceVar.vpI2sStatus == VP_I2S_IDLE)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_SetMute g_voiceVar.vpI2sStatus idle not support set mute !\r\n");

-		return DRV_ERROR;

-	}

-	if (g_voiceVar.vpI2sStatus == VP_LOOP_ON)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_SetMute vp_loop_on return !\r\n");

-		return DRV_SUCCESS;

-	}

-

-	if (enable == 1)

-	{

-		g_voiceVar.muteEn = TRUE;

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_SetMute  set g_voiceVar.muteEn TRUE !\n");

-

-	}

-	else

-	{

-		g_voiceVar.muteEn = FALSE;

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_SetMute  set g_voiceVar.muteEn FASLE !\n");

-	}

-

-	if (g_voiceVar.vProcIsNormal == TRUE)

-	{

-#ifdef _USE_NXP_AUD

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_SetMute NXP set mute!\r\n");

-		ret = Vp_NxpGetParam(g_voiceVar.voiceMode, g_voiceVar.vpPath);

-		ret += Vp_NxpSetParam(g_voiceVar.vpPath, g_voiceVar.vpVol, FALSE);

-		if (ret != DRV_SUCCESS)

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_SetMute nxp set mute  err ret=%d !\n", ret);

-

-			if (enable == 1)

-			{

-				g_voiceVar.muteEn = FALSE;

-				zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_SetMute  NXP set mute fail,set g_voiceVar.muteEn FALSE !\n");

-

-			}

-			else

-			{

-				g_voiceVar.muteEn = TRUE;

-				zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_SetMute  NXP set mute fail,set g_voiceVar.muteEn TRUE !\n");

-

-			}

-			return DRV_ERROR;

-		}

-#elif defined _USE_WEBRTC_AUD

-

-		ret = Webrtc_SetMute(enable);

-		if (ret != DRV_SUCCESS)

-		{

-			return DRV_ERROR;

-		}

-

-#endif

-	}

-

-	return DRV_SUCCESS;

-

-}

-

-SINT32 zDrvVp_GetMute(UINT32 *enable, UINT32 channel)

-{

-	SINT32  ret = DRV_SUCCESS;

-

-

-	*enable = g_voiceVar.muteEn;

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_GetMute  Get g_voiceVar.muteEn=%d !\n",g_voiceVar.muteEn);

-

-

-

-	return DRV_SUCCESS;

-

-}

-

-SINT32 zDrvVp_SetRxMute(UINT32 enable, UINT32 channel)

-{

-	SINT32  ret = DRV_SUCCESS;

-#if 0

-	T_ZDrvVoice_MuteInfo muteinfo;

-	muteinfo.enable = enable;

-	muteinfo.channel = channel;

-	ret = voice_SetMute(&muteinfo);

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_SetMute enable=%d,channel=%d,ret=%d!", enable, channel, ret);

-#endif

-

-	if (g_voiceVar.vpI2sStatus == VP_I2S_IDLE)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_SetRxMute g_voiceVar.vpI2sStatus idle not support set mute !\r\n");

-		return DRV_ERROR;

-	}

-	if (g_voiceVar.vpI2sStatus == VP_LOOP_ON)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_SetRxMute vp_loop_on return !\r\n");

-		return DRV_SUCCESS;

-	}

-

-	if (enable == 1)

-	{

-		g_voiceVar.rxMuteEn = TRUE;

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_SetRxMute  set g_voiceVar.rxMuteEn TRUE !\n");

-

-	}

-	else

-	{

-		g_voiceVar.rxMuteEn = FALSE;

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_SetRxMute  set g_voiceVar.rxMuteEn FASLE !\n");

-	}

-

-	if (g_voiceVar.vProcIsNormal == TRUE)

-	{

-#ifdef _USE_NXP_AUD

-

-#elif defined _USE_WEBRTC_AUD

-

-		ret = Webrtc_SetRxMute(enable);

-		if (ret != DRV_SUCCESS)

-		{

-			if (enable == 1)

-			{

-				g_voiceVar.rxMuteEn = FALSE;

-				zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_SetRxMute  set rxMuteEn fail,set g_voiceVar.muteEn FALSE !\n");

-

-			}

-			else

-			{

-				g_voiceVar.rxMuteEn = TRUE;

-				zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_SetRxMute   set rxMuteEn fail,set g_voiceVar.muteEn TRUE !\n");

-

-			}

-			return DRV_ERROR;		

-		}

-

-#endif

-	}

-

-	return DRV_SUCCESS;

-

-}

-SINT32 zDrvVp_GetRxMute(UINT32 *enable, UINT32 channel)

-{

-	SINT32  ret = DRV_SUCCESS;

-

-

-	*enable = g_voiceVar.rxMuteEn;

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_GetRxMute  Get g_voiceVar.rxMuteEn=%d !\n",g_voiceVar.rxMuteEn);

-

-

-

-	return DRV_SUCCESS;

-

-}

-

-#if 0

-//dtmf¼ì²â-»Ø»·²âÊÔÓÃ

-T_DrvDtmf_Detect_Opt dtmf_looptest;

-void drv_dtmfrxloop_report(char *dtmf_string, unsigned char string_len)

-{

-    //printk("drv_dtmfrx_report, dtmf_string=%c, string_len=%d\n", *dtmf_string, string_len);

-    zOss_Printf(SUBMDL_HAL, PRINT_LEVEL_NORMAL, "drv_dtmfrxloop_report, dtmf_string=%c, string_len=%d\n", *dtmf_string, string_len);

-}

-void drv_dtmftxloop_report(char *dtmf_string, unsigned char string_len)

-{

-    //printk("drv_dtmftx_report, dtmf_string=%c, string_len=%d\n", *dtmf_string, string_len);

-    zOss_Printf(SUBMDL_HAL, PRINT_LEVEL_NORMAL, "drv_dtmftxloop_report, dtmf_string=%c, string_len=%d\n", *dtmf_string, string_len);

-}

-#endif

-SINT32 zDrvVp_Soft_Dtmf_Loop(T_ZDrv_VpPath path)

-{

-    zOss_Printf(SUBMDL_HAL, PRINT_LEVEL_NORMAL, "zDrvVp_Soft_Dtmf_Loop enter\n");

-    SINT32 ret = DRV_SUCCESS;

-    

-    if((path == VP_PATH_HANDSET) || (path == VP_PATH_HEADSET) || (path == VP_PATH_SPEAKER))

-    {

-        zOss_Printf(SUBMDL_HAL, PRINT_LEVEL_NORMAL, "zDrvVp_Soft_Dtmf_Loop g_voiceVar.useDtmfLoop = %d\n", g_voiceVar.useDtmfLoop);

-#if 0  

-        //dtmf¼ì²â-»Ø»·²âÊÔÓÃ

-        dtmf_looptest.drv_dtmfrx_report_cb = drv_dtmfrxloop_report;

-        dtmf_looptest.drv_dtmftx_report_cb = drv_dtmftxloop_report;

-        zDrvDtmf_Detect_RegCallbacks(dtmf_looptest);

-#endif        

-        //dtmf¼ì²â-»Ø»·Æô¶¯

-        zOss_Printf(SUBMDL_HAL, PRINT_LEVEL_NORMAL, "vp_LoopProcessThreadEntry zDrvVp_DtmfSoftwareStart enter\n");

-        ret = zDrvVp_DtmfSoftwareStart(1, 8000);

-        zOss_Printf(SUBMDL_HAL, PRINT_LEVEL_NORMAL, "vp_LoopProcessThreadEntry zDrvVp_DtmfSoftwareStart end, ret=%d\n", ret);  

-        if(ret == 0)

-            g_voiceVar.useDtmfLoop = 1;

-        zOss_Printf(SUBMDL_HAL, PRINT_LEVEL_NORMAL, "vp_LoopProcessThreadEntry zDrvVp_DtmfSoftwareStart end, ret=%d,useDtmfLoop=%d\n", ret,g_voiceVar.useDtmfLoop);  

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_LoopProcessThreadEntry zDrvVp_DtmfSoftwareStart end, ret=%d,useDtmfLoop=%d\n", ret,g_voiceVar.useDtmfLoop); 

-    }

-    else if(path == VP_PATH_OFF)

-    {

-        //dtmf¼ì²â-»Ø»·¹Ø±Õ

-        zOss_Printf(SUBMDL_HAL, PRINT_LEVEL_NORMAL, "zDrvVp_Soft_Dtmf_Loop g_voiceVar.useDtmfLoop = %d\n", g_voiceVar.useDtmfLoop);

-        ret = zDrvVp_DtmfSoftwareStop();

-        zOss_Printf(SUBMDL_HAL, PRINT_LEVEL_NORMAL, "vp_LoopProcessThreadEntry zDrvVp_DtmfSoftwareStop end, ret=%d\n", ret);  

-        if(ret == 0)

-            g_voiceVar.useDtmfLoop = 0;

-        zOss_Printf(SUBMDL_HAL, PRINT_LEVEL_NORMAL, "vp_LoopProcessThreadEntry zDrvVp_DtmfSoftwareStop end, ret=%d,useDtmfLoop=%d\n", ret,g_voiceVar.useDtmfLoop);  

-		

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_LoopProcessThreadEntry zDrvVp_DtmfSoftwareStop end, ret=%d,useDtmfLoop=%d\n", ret,g_voiceVar.useDtmfLoop); 

-    }

-    else 

-    {

-        zOss_Printf(SUBMDL_HAL, PRINT_LEVEL_NORMAL, "zDrvVp_Soft_Dtmf_Loop path is error!\n");

-        zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_Soft_Dtmf_Loop path is error,useDtmfLoop=%d!\n",g_voiceVar.useDtmfLoop);

-        return DRV_ERR_NOT_SUPPORTED;

-    }

-    

-    ret = zDrvVp_Loop(path);

-    zOss_Printf(SUBMDL_HAL, PRINT_LEVEL_NORMAL, "zDrvVp_Soft_Dtmf_Loop leave ret=%d\n",ret);

-

-    return ret;

-}

-

-SINT32 zDrvVp_Loop(T_ZDrv_VpPath path)

-{

-	SINT32 ret = DRV_SUCCESS;

-

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_Loop begin g_voiceVar.vpI2sStatus=%d,path=%d", g_voiceVar.vpI2sStatus, path);

-

-	if (path == VP_PATH_OFF)

-	{

-		if (g_voiceVar.vpI2sStatus == VP_LOOP_ON)

-		{

-			ret = zDrvVp_LoopStop();

-		}

-		else

-		{

-			return DRV_SUCCESS;

-		}

-	}

-	else if ((path == VP_PATH_HANDSET) || (path == VP_PATH_HEADSET) || (path == VP_PATH_SPEAKER))

-	{

-		if (g_voiceVar.vpI2sStatus == VP_LOOP_ON)

-		{

-			ret = halVpCfg_SetInputPath(path, TRUE);

-			if (ret != DRV_SUCCESS)

-			{

-				zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_LoopStartDo voice_SetPahtIn halVpCfg_SetInputPath err ret=%d !\n", ret);

-				return DRV_ERROR;

-			}

-			ret = halVpCfg_SetOutputPath(path, TRUE);

-			if (ret != DRV_SUCCESS)

-			{

-				zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_LoopStartDo voice_SetPahtOut halVpCfg_SetOutputPath err ret=%d !\n", ret);

-				return DRV_ERROR;

-			}

-			g_voiceVar.vpLoopPath = path;

-

-		}

-		else

-		{

-			ret = zDrvVp_LoopStart(path);

-		}

-

-	}

-	else

-	{

-		return DRV_ERR_NOT_SUPPORTED;

-	}

-

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_Loop end g_voiceVar.vpI2sStatus=%d,ret=%d", g_voiceVar.vpI2sStatus, ret);

-	return ret;

-}

-

-//added by zhanglixia

-SINT32 zDrvVp_NxpSetParam(zDrvVp_NxpParamsTool *NxpParamsTool)

-{

-	SINT32  ret = DRV_SUCCESS;

-#ifdef _USE_NXP_AUD

-//#ifdef _OS_TOS

-	/* if((g_voiceVar.vProcIsNormal!=TRUE))

-

-	  return DRV_ERR_INVALID_PARAM;	*/

-

-	BOOL  isLoop = false;

-	//UINT16 offset=0x19;

-	//UINT16 volumeindex = 0;

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_zDrvVp_SetParam begin path=%d,volume=%d,g_voiceVar.vpI2sStatus=%d!", g_voiceVar.vpPath, g_voiceVar.vpVol, g_voiceVar.vpI2sStatus);

-	if ((NxpParamsTool->pPresetRx == NULL) || (NxpParamsTool->PresetLengthRx <= 0))

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Param is NULL!\r\n");

-		return DRV_ERR_INVALID_PARAM;

-	}

-

-	/* if(g_voiceVar.vpI2sStatus == VP_I2S_IDLE)

-	 {

-	         return DRV_ERROR;

-	 }*/

-

-	if (g_voiceVar.vpI2sStatus == VP_LOOP_ON)

-	{

-		isLoop = TRUE;

-		return DRV_SUCCESS;

-	}

-	//ret = Vp_NxpOpen();

-	//zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "ret=%d vp Vp_NxpOpen",ret);

-	//g_voiceVar.vpPath = VP_PATH_HANDSET;

-	//g_voiceVar.vpVol = VP_VOL_3;

-

-	/*klocwork 3 INVARIANT_CONDITION.UNREACH UNREACH.GEN delete if...else...*/

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpSetParamTool!\r\n");

-	//volumeindex =* (NxpParamsTool->pPresetRx+offset);

-	ret = Vp_NxpSetParamTool(g_voiceVar.vpPath,  g_voiceVar.vpVol,  NxpParamsTool, isLoop, g_voiceVar.voiceInVolteMode);

-

-#endif

-	return ret;

-}

-SINT32 zDrvVp_NxpGetParam(zDrvVp_NxpParamsTool *NxpParamsTool)

-{

-	SINT32  ret = DRV_SUCCESS;

-#ifdef _USE_NXP_AUD

-//#ifdef _OS_TOS

-

-	/*if((g_voiceVar.vProcIsNormal!=TRUE))

-

-	  return DRV_ERR_INVALID_PARAM;	*/

-	BOOL   isLoop = false;

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_zDrvVp_GetParam begin path=%d,volume=%d,g_voiceVar.vpI2sStatus=%d!", g_voiceVar.vpPath, g_voiceVar.vpVol, g_voiceVar.vpI2sStatus);

-	if ((NxpParamsTool->pPresetRx == NULL) || (NxpParamsTool->PresetLengthRx <= 0))

-	{

-		return DRV_ERR_INVALID_PARAM;

-	}

-

-	/* if(g_voiceVar.vpI2sStatus == VP_I2S_IDLE)

-	 {

-	         return DRV_ERROR;

-	 }*/

-	if (g_voiceVar.vpI2sStatus == VP_LOOP_ON)

-	{

-		isLoop = TRUE;

-		return DRV_SUCCESS;

-	}

-

-	//ret = Vp_NxpOpen();

-	//zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "ret=%d vp Vp_NxpOpen",ret);

-	//g_voiceVar.vpPath = VP_PATH_HANDSET;

-	// g_voiceVar.vpVol = VP_VOL_3;

-

-	/*klocwork 3 INVARIANT_CONDITION.UNREACH UNREACH.GEN  delete if...else...*/

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_NxpGetParamTool!\r\n");

-	ret = Vp_NxpGetParamTool(g_voiceVar.vpPath,  g_voiceVar.vpVol,  NxpParamsTool, isLoop, g_voiceVar.voiceInVolteMode);

-

-#endif

-

-	return ret;

-}

-//end added by zhanglixia

-

-

-

-SINT32 zDrvVp_SetParam(zDrvVp_ParamsTool *paramsTool)

-{

-	SINT32  ret = DRV_SUCCESS;

-#ifdef _USE_WEBRTC_AUD

-

-

-	BOOL  isLoop = false;

-

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_SetParam begin path=%d,volume=%d,g_voiceVar.vpI2sStatus=%d!", g_voiceVar.vpPath, g_voiceVar.vpVol, g_voiceVar.vpI2sStatus);

-	if ((paramsTool->pPresetRx == NULL) || (paramsTool->PresetLengthRx <= 0))

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Param is NULL!\r\n");

-		return DRV_ERR_INVALID_PARAM;

-	}

-

-	if (g_voiceVar.vpI2sStatus == VP_LOOP_ON)

-	{

-		isLoop = TRUE;

-		return DRV_SUCCESS;

-	}

-

-

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_SetParamTool!\r\n");

-

-	ret = Webrtc_SetParamTool(g_voiceVar.vpPath,  g_voiceVar.vpVol,  paramsTool, isLoop, g_voiceVar.voiceInVolteMode);

-#endif

-	return ret;

-}

-

-SINT32 zDrvVp_GetParam(zDrvVp_ParamsTool *paramsTool)

-{

-	SINT32  ret = DRV_SUCCESS;

-#ifdef _USE_WEBRTC_AUD

-

-	BOOL   isLoop = false;

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_GetParam begin path=%d,volume=%d,g_voiceVar.vpI2sStatus=%d!", g_voiceVar.vpPath, g_voiceVar.vpVol, g_voiceVar.vpI2sStatus);

-	if ((paramsTool->pPresetRx == NULL) || (paramsTool->PresetLengthRx <= 0))

-	{

-		return DRV_ERR_INVALID_PARAM;

-	}

-

-

-	if (g_voiceVar.vpI2sStatus == VP_LOOP_ON)

-	{

-		isLoop = TRUE;

-		return DRV_SUCCESS;

-	}

-

-

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_GetParamTool!\r\n");

-	ret = Webrtc_GetParamTool(g_voiceVar.vpPath,  g_voiceVar.vpVol,  paramsTool, isLoop, g_voiceVar.voiceInVolteMode);

-

-#endif

-

-	return ret;

-}

-

-SINT32 zDrvVp_SetNvParam(zDrvVp_ParamsTool *paramsTool)

-{

-	SINT32  ret = DRV_SUCCESS;

-#ifdef _USE_WEBRTC_AUD

-

-

-	BOOL  isLoop = false;

-

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_SetNvParam begin path=%d,volume=%d,g_voiceVar.vpI2sStatus=%d!", g_voiceVar.vpPath, g_voiceVar.vpVol, g_voiceVar.vpI2sStatus);

-	if ((paramsTool->pPresetRx == NULL) || (paramsTool->PresetLengthRx <= 0))

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Param is NULL!\r\n");

-		return DRV_ERR_INVALID_PARAM;

-	}

-

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_SetNvParamTool!\r\n");

-	ret = Webrtc_SetNvParamTool(g_voiceVar.vpPath,  g_voiceVar.vpVol,  paramsTool, isLoop, g_voiceVar.voiceInVolteMode);

-#endif

-	return ret;

-}

-

-SINT32 zDrvVp_GetNvParam(zDrvVp_ParamsTool *paramsTool)

-{

-	SINT32  ret = DRV_SUCCESS;

-#ifdef _USE_WEBRTC_AUD

-

-	BOOL   isLoop = false;

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_GetNvParam begin path=%d,volume=%d,g_voiceVar.vpI2sStatus=%d!", g_voiceVar.vpPath, g_voiceVar.vpVol, g_voiceVar.vpI2sStatus);

-	if ((paramsTool->pPresetRx == NULL) || (paramsTool->PresetLengthRx <= 0))

-	{

-		return DRV_ERR_INVALID_PARAM;

-	}

-

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_GetNvParamTool!\r\n");

-	ret = Webrtc_GetNvParamTool(g_voiceVar.vpPath,  g_voiceVar.vpVol,  paramsTool, isLoop, g_voiceVar.voiceInVolteMode);

-

-#endif

-

-	return ret;

-}

-

-#ifdef VOICE_TONE_MIXER_FUNCTION

-

-

-/*******************************************************************************

- * Function: zDrvVp_ToneMixerStart

- * Description: This function is used to start mixer tone.

- * Parameters:

- *   Input:None

- *   Output:None

- *

- * Returns: success or error code

- *

- * Others:

- ********************************************************************************/

-

-

-SINT32 zDrvVp_ToneMixerStart(T_ZDrvVp_ToneNum toneNum)

-{

-	SINT32 ret = DRV_SUCCESS;

-

-	ret = zDrvAudioM_GetResource(AUDIO_MANAGER_RESOURCE_TONE_IN_SPEECH);

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, " zDrvVp_ToneMixerStart fail to get tone resource\n");

-		return ret;

-	}

-	mixerToneInfo.cur_tone_fcount = 0;

-	mixerToneInfo.StartMixer = TRUE;

-

-	if ((g_voiceVar.voiceInVolteMode == 1) && (g_voiceVar.volteIsWb == 1))

-	{

-		mixerToneInfo.data_mixer_oncesize = 320;

-		mixerToneInfo.dataIsWb = TRUE;

-

-	}

-	else

-	{

-		mixerToneInfo.data_mixer_oncesize = 160;

-		mixerToneInfo.dataIsWb = FALSE;

-

-	}

-	ret = halVpCfg_GetMixerToneInfo(toneNum, &mixerToneInfo);

-	/*

-

-	    if(0 == toneNum)

-	    {

-	        mixerToneInfo.ptdata_mixer=(UINT16 *)lowPowerPcm;

-	        //mixerToneInfo.tone_total_size=sizeof(lowPowerPcm)/sizeof(char);

-	        mixerToneInfo.tone_total_size=sizeof(lowPowerPcm)/sizeof(UINT16);

-

-	    }

-	    {

-	        mixerToneInfo.ptdata_mixer=(UINT16 *)smsPcm;

-	        mixerToneInfo.tone_total_size=sizeof(smsPcm)/sizeof(UINT16);

-	    }

-	    else if(2 == toneNum)

-	    {

-	        mixerToneInfo.ptdata_mixer=(UINT16 *)callStandardPcm;

-	        mixerToneInfo.tone_total_size=sizeof(callStandardPcm)/sizeof(UINT16);

-	    }

-	    else if(3 == toneNum)

-	    {

-	        mixerToneInfo.ptdata_mixer=(UINT16 *)alarmBeepPcm;

-	        mixerToneInfo.tone_total_size=sizeof(alarmBeepPcm)/sizeof(UINT16);

-	    }

-	    else if(4 == toneNum)

-	    {

-	        mixerToneInfo.ptdata_mixer=(UINT16 *)callTimePcm;

-	        mixerToneInfo.tone_total_size=sizeof(callTimePcm)/sizeof(UINT16);

-	    }

-	    else

-	    {

-	        zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_ToneMixerStart para is error!");

-	        return DRV_ERROR;

-	    }

-

-	    mixerToneInfo.inter_mixer_fcount=mixerToneInfo.tone_total_size/VOICE_MIXER_DATA_SIZE;

-	    mixerToneInfo.rem_mixer_count=mixerToneInfo.tone_total_size%VOICE_MIXER_DATA_SIZE;

-	*/

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_ToneMixerStart toneNum=%d,ret=%d!", toneNum, ret);

-

-	return ret;

-}

-SINT32 voice_ToneMixerStop(VOID)   /*add for 7502 Online Record*/

-{

-	SINT32 ret = DRV_SUCCESS;

-	mixerToneInfo.StartMixer = FALSE;

-	mixerToneInfo.cur_tone_fcount = 0;

-	mixerToneInfo.rem_mixer_count = 0;

-	mixerToneInfo.inter_mixer_fcount = 0;

-	//ptdata_mixer=toneArray;

-	zDrvAudioM_FreeResource(AUDIO_MANAGER_RESOURCE_TONE_IN_SPEECH);

-

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "voice_ToneMixerStop !");

-

-	return ret;

-

-}

-

-SINT32 zDrvVp_ToneMixerStop(VOID)

-{

-	SINT32 ret = DRV_SUCCESS;

-	ret = voice_ToneMixerStop();

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_ToneMixerStop ret!", ret);

-	return ret;

-}

-

-/*******************************************************************************

- * Function: voice_MixerData

- * Description: This function is used to mixer tone data.

- * Parameters:

- *   Input:None

- *   Output:None

- *

- * Returns: success or error code

- *

- * Others:

- ********************************************************************************/

-

-

-

-

-int voice_MixerData(SINT16* input1, SINT16* input2, SINT32 mix_count, SINT16* output)

-//static int voice_MixerData(SINT16* input1, SINT16* input2, SINT32 mix_count, SINT16* output)

-{

-	double f = 1;

-	SINT32 i = 0;

-

-	SINT32 const SINT16_MAX = (SINT32)(pow(2.0, 15) - 1);

-	SINT32 const SINT16_MIN = (SINT32)(-pow(2.0, 15));

-

-	//printf("SINT16_MAX: %d\n", SINT16_MAX);

-	//printf("SINT16_MIN: %d\n", SINT16_MIN);

-

-	if (input1 == NULL || input2 == NULL || output == NULL || mix_count < 0)

-	{

-		return DRV_ERR_INVALID_PARAM;

-	}

-

-	for (i = 0; i < mix_count; i++)

-	{

-		SINT32 temp = 0;

-

-		temp = *(input1 + i) + *(input2 + i);

-

-		temp = (SINT32)(temp * f);

-		if (temp > SINT16_MAX)

-		{

-			f = (double)SINT16_MAX / (double)(temp);

-			temp = SINT16_MAX;

-			//printf("MAX++\n");

-			//printf( "%d = %d + %d \n", temp, *(input1+i), *(input2+i));

-		}

-		if (temp < SINT16_MIN)

-		{

-			f = (double)SINT16_MIN / (double)(temp);

-			temp = SINT16_MIN;

-			//printf("MIN--\n", f);

-			//printf( "%d = %d + %d \n", temp, *(input1+i), *(input2+i));

-		}

-		if (f < 1.0)

-		{

-			f += ((double)1 - f) / (double)32;

-		}

-

-		*(output + i) = temp;

-	}

-	return DRV_SUCCESS;

-}

-/*******************************************************************************

- * Function: voice_ToneMixerData

- * Description: This function is used to deal with mixer  data.

- * Parameters:

- *   Input:None

- *   Output:None

- *

- * Returns: success or error code

- *

- * Others:

- ********************************************************************************/

-

-

-//UINT32 tone_size=sizeof(toneArray)/sizeof(UINT16);

-

-

-

-

-

-//cur_tone_fcount+=1;

-

-

-

-

-//mixerToneInfo.StartMixer= FALSE;

-

-

-

-

-SINT32 voice_ToneMixerData(UINT8 *pvdata, UINT32 size, UINT8 *pmixdata)

-{

-	SINT32 ret = 0;

-	UINT32 size16 = size / sizeof(SINT16);

-

-	//printf("mixerToneInfo.cur_tone_fcount = %d\n", mixerToneInfo.cur_tone_fcount);

-

-	if (mixerToneInfo.cur_tone_fcount < mixerToneInfo.inter_mixer_fcount)

-	{

-		ret = voice_MixerData((SINT16*)pvdata, (SINT16*)mixerToneInfo.ptdata_mixer, size16, (SINT16*)pmixdata);

-		if (ret != 0)

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "voice_MixerData failed");

-			return ret;

-		}

-		mixerToneInfo.ptdata_mixer += size16;

-		mixerToneInfo.cur_tone_fcount += 1;

-

-	}

-	else if (mixerToneInfo.cur_tone_fcount == mixerToneInfo.inter_mixer_fcount)

-	{

-		if (mixerToneInfo.rem_mixer_count > 0)

-		{

-			UINT32 msize = mixerToneInfo.rem_mixer_count;

-			ret = voice_MixerData((SINT16*)pvdata, (SINT16*)mixerToneInfo.ptdata_mixer, msize, (SINT16*)pmixdata);

-			if (ret != 0)

-			{

-				zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "voice_MixerData failed");

-				return ret;

-			}

-			zOss_Memcpy(pmixdata + msize, pvdata + msize, size16 - msize);

-		}

-

-		//printf("voice_ToneMixerStop\n");

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "voice_ToneMixerStop");

-		voice_ToneMixerStop();

-	}

-	return DRV_SUCCESS;

-}

-

-

-

-

-#endif

-

-#ifdef _USE_AUDEXT_CODEC_PATH_INTF

-SINT32 zDrvVp_SetFmPath(T_ZDrv_VpPath path, BOOL enable)

-{

-

-	SINT32  ret = DRV_SUCCESS;

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_SetFmPath begin path=%d,g_voiceVar.vpI2sStatus=%d!", path, g_voiceVar.vpI2sStatus);

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_SetFmPath begin enable=%d!", enable);

-	if (path >= MAX_VP_PATH)

-	{

-		return DRV_ERR_INVALID_PARAM;

-	}

-

-	if (enable)

-	{

-

-		ret = zDrvAudioM_GetResource(AUDIO_MANAGER_RESOURCE_FM);

-		if (ret != DRV_SUCCESS)

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, " zDrvVp_SetFmPath fail to get fm resource\n");

-			return ret;

-		}

-

-		ret = halVpCfg_SetFmPath(path, TRUE);

-		if (ret != DRV_SUCCESS)

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_SetFmPath  err ret=%x !\n", ret);

-			zDrvAudioM_FreeResource(AUDIO_MANAGER_RESOURCE_FM);

-		}

-	}

-	else

-	{

-		ret = halVpCfg_SetFmPath(path, FALSE);

-		if (ret != DRV_SUCCESS)

-		{

-

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_SetFmPath  err ret=%x !\n", ret);

-		}

-		else

-		{

-			zDrvAudioM_FreeResource(AUDIO_MANAGER_RESOURCE_FM);

-		}

-	}

-

-	return ret;

-}

-

-SINT32 zDrvVp_SetInputMute(BOOL onoff)

-{

-	SINT32 ret = DRV_SUCCESS;

-

-	ret = halVpCfg_SetInputMute(onoff);

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_SetInputMute  err ret=%d !\n", ret);

-		return DRV_ERROR;

-	}

-

-	return ret;

-

-}

-

-SINT32 zDrvVp_SetOutputMute(BOOL onoff)

-{

-	SINT32 ret = DRV_SUCCESS;

-

-	ret = halVpCfg_SetOutputMute(onoff);

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_SetOutputMute  err ret=%d !\n", ret);

-		return DRV_ERROR;

-	}

-

-	return ret;

-

-}

-#endif

-

-VOID zDrvDtmf_Detect_RegCallbacks(T_DrvDtmf_Detect_Opt dtmfObj)

-{

-    gDrvDtmf_Detect_Obj = dtmfObj;

-}

-

-#if 0

-static ZOSS_THREAD_ID s_audioPbLoopThread = NULL;

-static ZOSS_THREAD_ID s_audioCaLoopThread  = NULL;

-static ZOSS_SEMAPHORE_ID s_caputerDoneSemaphore = NULL;

-

-static T_ZDrvI2S_Id I2S_ID = I2S_1;

-BOOL readRuning = FALSE;

-BOOL writeRuning = FALSE;

-

-UINT8 *pAudioPbbuffer = NULL;

-UINT8 *pAudioCabuffer = NULL;

-static UINT32 pbCount = 0;

-const UINT32 caCount = 2250;

-static VOID audioPbLoopThread(SINT32 UNDEF)//xiu gai chu

-{

-	SINT32 ret = DRV_SUCCESS;

-

-	SINT32 count = 0;

-	UINT8 *bufptr = pAudioPbbuffer;

-	UINT32 aud_len = 320;

-	UINT8 *aud_buf = NULL;

-	UINT32 length = 0;

-	T_ZDrvI2s_Params parameter = {0};

-	T_ZDrvI2S_Cfg playI2sCfg;

-

-	length = (pbCount / aud_len) * aud_len;

-	parameter.channel = AUDIO_MONO_CHANNEL;

-	parameter.buffersize = aud_len;//10240  for file,112;  112 just  for data

-	parameter.p_cb = NULL;

-

-	playI2sCfg.bMaster = TRUE;

-	playI2sCfg.sample_rate = 8000;

-	playI2sCfg.tDataFmt = I2S_DATA_16BIT;//I2S_DATA_16BIT;

-	playI2sCfg.tTsWidth = I2S_TS_16CYCLE;//I2S_TS_16CYCLE;

-	playI2sCfg.tTrackFmt = LEFT_TRACK;//RIGHT_TRACK;//LEFT_TRACK

-	playI2sCfg.tTestMode = I2S_NORMAL_MODE;

-	playI2sCfg.tTimingType = TIMING_I2S_MONO_LEFT;

-	playI2sCfg.tPcmFsync = PCM_SHORT_FSYNC;

-	playI2sCfg.tTdmExtCycle = TDM_NO_EXTRA_CYCLE;

-	playI2sCfg.tClkMode = I2S_TIME_MODE;

-

-

-	playI2sCfg.tTransMode = DATA_ALIGN_STD_I2S;

-	playI2sCfg.tTansmit_edge = TRANS_NEGATIVE_POSITIVE;//for i2s mode;

-	ret = zDrvI2S_Write_Start(I2S_ID, &parameter, &playI2sCfg);

-

-	if (ret != DRV_SUCCESS)

-	{

-		return;

-	}

-	while (1)

-	{

-		//zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "enter audioPbLoopThread while before\n");

-		while (writeRuning == TRUE)

-		{

-			// zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "enter audioPbLoopThread while after\n");

-

-			ret += zDrvI2S_GetBuf(I2S_ID, &aud_buf, &aud_len);

-			zOss_Memcpy(aud_buf, bufptr, aud_len);

-

-			ret += zDrvI2S_Write(I2S_ID, aud_buf, aud_len);

-			bufptr += aud_len;

-			count += aud_len;

-			if (count >= length)

-			{

-				bufptr = pAudioPbbuffer;

-				count = 0;

-			}

-

-		}

-		//zOss_Sleep(20);

-	}

-}

-BOOL testAudioStart = FALSE;

-//static BOOL s_mutex_FirstUse = FALSE;//xiu gai chu

-//static ZOSS_MUTEX_ID s_autoAudioTestMutexID = NULL;//xiu gai chu

-static VOID audioCaLoopThread(SINT32 UNDEF)//xiu gai chu gai bian han sheng ming

-{

-	SINT32 ret = DRV_SUCCESS;

-	T_ZDrvI2S_Cfg playI2sCfg = {0};

-	T_ZDrvI2s_Params params = {0};

-	BOOL firstFull = FALSE;

-	UINT8 *read_buf = NULL;

-	UINT32 read_len = 320;

-	UINT32 count = 0;

-	UINT8 *RxBuffer = pAudioCabuffer;

-	UINT32 length = 0;

-	length = (caCount / read_len) * read_len;

-	params.channel = AUDIO_MONO_CHANNEL;

-	params.buffersize = 320;

-	params.p_cb = NULL;

-

-	playI2sCfg.bMaster = TRUE;

-	playI2sCfg.sample_rate = 8000;

-	playI2sCfg.tDataFmt = I2S_DATA_16BIT;//I2S_DATA_16BIT;

-	playI2sCfg.tTsWidth = I2S_TS_16CYCLE;//I2S_TS_16CYCLE;

-	playI2sCfg.tTrackFmt = LEFT_TRACK;//RIGHT_TRACK;//LEFT_TRACK

-	playI2sCfg.tTestMode = I2S_NORMAL_MODE;

-	playI2sCfg.tClkMode = I2S_TIME_MODE;

-

-	playI2sCfg.tTimingType = TIMING_I2S_MONO_LEFT;

-	playI2sCfg.tPcmFsync = PCM_SHORT_FSYNC;

-	playI2sCfg.tTdmExtCycle = TDM_NO_EXTRA_CYCLE;

-

-	playI2sCfg.tTransMode = DATA_ALIGN_STD_I2S;

-	playI2sCfg.tTansmit_edge = TRANS_NEGATIVE_POSITIVE;//for i2s mode;

-

-	ret += zDrvI2S_Read_Start(I2S_ID, &params, &playI2sCfg);

-	if (ret != DRV_SUCCESS)

-	{

-		return;

-	}

-	while (1)

-	{

-

-		while (readRuning == TRUE)

-		{

-

-			ret = zDrvI2S_Read(I2S_ID, &read_buf, &read_len);

-			//zOss_GetMutex(s_autoAudioTestMutexID, ZOSS_WAIT_FOREVER);

-

-			zOss_Memcpy(RxBuffer, read_buf, read_len);

-

-			RxBuffer += read_len;

-			count += read_len;

-			//zOss_PutMutex(s_autoAudioTestMutexID);

-

-			ret = zDrvI2S_FreeBuf(I2S_ID, read_buf);

-			if (count >= length)

-			{

-				if (firstFull == FALSE)

-				{

-					if (ZOSS_SUCCESS != zOss_PutSemaphore(s_caputerDoneSemaphore))

-					{

-						zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "audioCaLoopThread put sema error.\n");

-						continue;

-					}

-					firstFull = TRUE;

-				}

-				count = 0;

-				//recordFileFlag = 0;

-				RxBuffer = pAudioCabuffer;

-			}

-		}

-		//zOss_Sleep(20);

-

-	}

-}

-

-

-SINT32 zDrvVp_TestAudioLoopPath(T_ZDrv_VpPath path)

-{

-	SINT32 ret = DRV_SUCCESS;

-	SINT32 audioLoopRet = DRV_SUCCESS;

-	T_HalAudioLoopTestInfo info = {0};

-	T_ZDrv_VpVol outpathvol[4];

-

-	T_ZDrv_VpFs codecfs;

-	UINT32 sampfs = 0;

-	UINT8 *pbuffer = NULL;

-	T_HalAudioLoopTestPra audioPra = {0};

-	if (testAudioStart == TRUE) return DRV_ERR_BUSY;

-	testAudioStart = TRUE;

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_TestAudioLoopPath  open!\n");

-	readRuning = FALSE;

-	writeRuning = FALSE;

-	/*if (FALSE == s_mutex_FirstUse)

-	{

-	    s_autoAudioTestMutexID = zOss_CreateMutex("autoAudioTestMutex",  ZOSS_INHERIT);   //create mutex

-	    s_mutex_FirstUse=TRUE;

-	}*/

-

-	ret = halVpCfg_GetAudioLoopInfo(&info);

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_TestAudioLoopPath halVpCfg_GetAudioLoopInfo err ret=%d !\n", ret);

-		testAudioStart = FALSE;

-		return DRV_ERROR;

-	}

-

-	pAudioPbbuffer = info.ptdata;

-	pbCount = info.totalSize;

-	sampfs = info.sampFs;

-	outpathvol[0] = info.outpathvol[0];

-	outpathvol[1] = info.outpathvol[1];

-	outpathvol[2] = info.outpathvol[2];

-	outpathvol[3] = info.outpathvol[3];

-

-	zOss_Printf(SUBMDL_HAL, PRINT_LEVEL_NORMAL, "sampfs=%d!\n", sampfs);

-

-	if (sampfs == 8000)

-	{

-		codecfs = VP_FS_8000;

-	}

-	else if (sampfs == 16000)

-	{

-		codecfs = VP_FS_16000;

-

-	}

-	else

-	{

-		testAudioStart = FALSE;

-		return DRV_ERR_NOT_SUPPORTED;

-	}

-

-	//temp = cal_freq_fft( pAudioPbbuffer,1024,16000);

-	//zOss_Printf(SUBMDL_HAL, PRINT_LEVEL_NORMAL,"temp=%f!\n",temp);

-

-

-	ret = halVpCfg_Open(VP_VOICE_SOURCE);

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_TestAudioLoopPath halVpCfg_Open err ret=%d !\n", ret);

-		testAudioStart = FALSE;

-		return DRV_ERROR;

-

-	}

-

-	ret = halVpCfg_SetFs(codecfs);

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_TestAudioLoopPath halVpCfg_SetFs err ret=%d !\n", ret);

-		halVpCfg_Close();

-		testAudioStart = FALSE;

-

-		return DRV_ERROR;

-

-	}

-

-	ret = halVpCfg_SetInputPath(path, TRUE);

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_TestAudioLoopPath  halVpCfg_SetInputPath err ret=%d !\n", ret);

-		halVpCfg_Close();

-		testAudioStart = FALSE;

-

-		return DRV_ERROR;

-

-	}

-

-	ret = halVpCfg_SetOutputPath(path, TRUE);

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vzDrvVp_TestAudioLoopPath halVpCfg_SetOutputPath err ret=%d !\n", ret);

-		halVpCfg_Close();

-		testAudioStart = FALSE;

-

-		return DRV_ERROR;

-

-	}

-	if (path == VP_PATH_SPEAKER)

-	{

-		ret = halVpCfg_SetOutputVol(outpathvol[0]);

-

-	}

-	else if (path == VP_PATH_HANDSET)

-	{

-		ret = halVpCfg_SetOutputVol(outpathvol[1]);

-	}

-	else if (path == VP_PATH_HEADSET)

-	{

-		ret = halVpCfg_SetOutputVol(outpathvol[2]);

-	}

-	else

-	{

-		ret = halVpCfg_SetOutputVol(outpathvol[3]);

-	}

-

-	ret = zDrvI2S_Open(I2S_ID, TRANS_DMA_MODE);

-	if (ret != DRV_SUCCESS)

-	{

-		zOss_Printf(1, 1, "zDrvI2S_Open fail ret=%x\n", ret);

-		halVpCfg_Close();

-		testAudioStart = FALSE;

-

-		return DRV_ERROR;

-	}

-	pAudioCabuffer = (UINT8*)zOss_Malloc(caCount);

-	pbuffer = (UINT8*)zOss_Malloc(caCount);

-

-	ret = halVpCfg_Enable();

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_TestAudioLoopPath halVpCfg_Enable err ret=%x !\n", ret);

-		halVpCfg_Close();

-		zDrvI2S_Close(I2S_1);

-		testAudioStart = FALSE;

-

-		return DRV_ERROR;

-

-	}

-

-	s_caputerDoneSemaphore = zOss_CreateSemaphore("CaputerDoneSemaphore", 0);

-	s_audioPbLoopThread = zOss_CreateThread("audioPbLoopThread", audioPbLoopThread, 0, 1024 * 2, 20, 1, 1);

-	if (s_audioPbLoopThread == NULL)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "creat audioPbLoopThread fail\n");

-	}

-

-

-	s_audioCaLoopThread = zOss_CreateThread("audioCaLoopThread", audioCaLoopThread, 0, 1024 * 2, 20, 1, 1);

-

-	if (s_audioCaLoopThread == NULL)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "creat audioCaLoopThread fail\n");

-	}

-

-	readRuning = TRUE;

-	writeRuning = TRUE;

-

-	zOss_GetSemaphore(s_caputerDoneSemaphore, ZOSS_WAIT_FOREVER);

-

-	//zOss_GetMutex(s_autoAudioTestMutexID, ZOSS_WAIT_FOREVER);

-	audioPra.src = pAudioCabuffer;

-	audioPra.dest = pbuffer;

-	audioPra.sampfs = sampfs;

-	audioLoopRet = halVpCfg_GetAudioLoopResult(&audioPra);

-	//zOss_PutMutex(s_autoAudioTestMutexID);

-

-

-	readRuning = FALSE;

-	writeRuning = FALSE;

-	ret = zDrvI2S_Read_Stop(I2S_ID);

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_TestAudioLoopPath zDrvI2S_Read_Stop err ret=%d !\n", ret);

-

-	}

-	ret += zDrvI2S_Write_Stop(I2S_ID);

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_TestAudioLoopPath zDrvI2S_Write_Stop err ret=%d !\n", ret);

-

-	}

-

-	ret = halVpCfg_Close();

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_TestAudioLoopPath halVpCfg_Close err ret=%d !\n", ret);

-

-	}

-

-	zOss_DeleteThread(s_audioPbLoopThread);

-	s_audioPbLoopThread = NULL;

-

-	zOss_DeleteThread(s_audioCaLoopThread);

-	s_audioCaLoopThread = NULL;

-

-	zOss_DeleteSemaphore(s_caputerDoneSemaphore);

-	s_caputerDoneSemaphore = NULL;

-

-	ret = zDrvI2S_Close(I2S_1);

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_TestAudioLoopPath error: zDrvI2S_Close I2S1  ret=%d", ret);

-	}

-

-	zOss_Free(pAudioCabuffer);

-	pAudioCabuffer = NULL;

-

-	zOss_Free(pbuffer);

-	pbuffer = NULL;

-

-	//close process

-

-	testAudioStart = FALSE;

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_TestAudioLoopPath end!\n");

-

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_TestAudioLoopPath audioLoopRet=%d", audioLoopRet);

-	zOss_Printf(SUBMDL_HAL, PRINT_LEVEL_NORMAL, "audioLoopRet=%d!\n", audioLoopRet);

-

-	return audioLoopRet;

-

-}

-static void fft(SINT16 *data, DOUBLE *x, DOUBLE *y, UINT16 n, SINT16 sign)

-{

-	UINT16 i, j, k, l, m, n1, n2;

-	DOUBLE c, c1, e, s, s1, t, tr, ti;

-	//Calculate i = log2N

-	for (i = 0; i < n; i++)

-	{

-		x[i] = data[i];

-		//zOss_Printf(SUBMDL_HAL, PRINT_LEVEL_NORMAL,"cal_freq_fft x[%d]=%f,data=%d!\n",i,x[i],data[i]);

-

-	}

-	for (j = 1, i = 1; i < 20; i++)

-	{

-		m = i;

-		j = 2 * j;

-		if (j == n)

-			break;

-	}

-

-	//¼ÆËãµûÐÎͼµÄÊäÈëϱ꣨Âëλµ¹¶Á£©

-	n1 = n - 1;

-	for (j = 0, i = 0; i < n1; i++)

-	{

-		if (i < j)

-		{

-			tr = x[j];

-			ti = y[j];

-			x[j] = x[i];

-			y[j] = y[i];

-			x[i] = tr;

-			y[i] = ti;

-		}

-		k = n / 2;

-		while (k < (j + 1))

-		{

-			j = j - k;

-			k = k / 2;

-		}

-		j = j + k;

-	}

-	//¼ÆËãÿһ¼¶µÄÊä³ö£¬lΪijһ¼¶£¬iΪͬһ¼¶µÄ²»Í¬Èº£¬Ê¹ÓÃͬһÄڴ棨¼´Î»ÔËË㣩

-	n1 = 1;

-	for (l = 1; l <= m; l++)

-	{

-		n1 = 2 * n1;

-		n2 = n1 / 2;

-		e = 3.1415926 / n2;

-		c = 1.0;

-		s = 0.0;

-		c1 = cos(e);

-		s1 = -sign * sin(e);

-		for (j = 0; j < n2; j++)

-		{

-			for (i = j; i < n; i += n1)

-			{

-				k = i + n2;

-				tr = c * x[k] - s * y[k];

-				ti = c * y[k] + s * x[k];

-				x[k] = x[i] - tr;

-				y[k] = y[i] - ti;

-				x[i] = x[i] + tr;

-				y[i] = y[i] + ti;

-			}

-			t = c;

-			c = c * c1 - s * s1;

-			s = t * s1 + s * c1;

-		}

-	}

-	//Èç¹ûÊÇÇóIFFT£¬ÔÙ³ýÒÔN

-	if (sign == -1)

-	{

-		for (i = 0; i < n; i++)

-		{

-			x[i] /= n;

-			y[i] /= n;

-		}

-	}

-}

-static void max_fft(DOUBLE *a, UINT16 n, UINT16 *h)

-{

-	UINT16 i = 0;

-	*h = 5;

-	for (i = 5; i < n; i++)

-	{

-		if (a[i] > a[*h])

-			*h = i;

-	}

-

-}

-

-static void abs_fft(DOUBLE *x, DOUBLE *y, UINT16 n, DOUBLE *z)

-{

-	UINT16 i = 0;

-

-	for (i = 0; i < n; i++)

-	{

-		z[i] = sqrt(x[i] * x[i] + y[i] * y[i]);

-	}

-

-

-

-}

-SINT32 cal_freq_fft(SINT16 *data, zDrvVp_Freqfft *freqfft, UINT16 n, UINT32 fs)

-{

-	UINT16 h = 0;

-	DOUBLE *x, *xi, *xvalue;

-	if (data == NULL || freqfft == NULL || n < 0 || fs < 0)

-	{

-		return DRV_ERR_INVALID_PARAM;

-	}

-

-	x = (DOUBLE*)calloc(n, sizeof(DOUBLE));

-	xi = (DOUBLE*)calloc(n, sizeof(DOUBLE));

-	xvalue = (DOUBLE*)calloc(n, sizeof(DOUBLE));

-

-	fft(data, x, xi, n, 1);

-	/*for(i=0;i<1024;i++)

-	{

-		zOss_Printf(SUBMDL_HAL, PRINT_LEVEL_NORMAL,"cal_freq_fft x[%d]=%f,xi[%d]=%f!\n",i,x[i],i,xi[i]);

-	}*/

-

-	abs_fft(x, xi, n / 2, xvalue);

-	max_fft(xvalue, n / 2, &h);

-	//zOss_Printf(SUBMDL_HAL, PRINT_LEVEL_NORMAL,"h=%d!\n",h);

-	freqfft->freqValue = (h - 1) * fs / ((n) * 1.0);

-	freqfft->freqAmp = xvalue[h] / (n / 2);

-	//*freqValue = (h-1)*fs/((n)*1.0);

-	//zOss_Printf(SUBMDL_HAL, PRINT_LEVEL_NORMAL,"n=%d!\n",n);

-	// freq = freqfft->freqValue;

-	//zOss_Printf(SUBMDL_HAL, PRINT_LEVEL_NORMAL,"fs=%d!\n",fs);

-	//zOss_Printf(SUBMDL_HAL, PRINT_LEVEL_NORMAL,"freq=%f!\n",freq);

-	//zOss_Printf(SUBMDL_HAL, PRINT_LEVEL_NORMAL,"freqfft->freqAmp=%f!\n",freqfft->freqAmp);

-

-

-	free(x);

-	free(xi);

-	free(xvalue);

-	return DRV_SUCCESS;

-

-}

-

-#endif

-

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
deleted file mode 100755
index 2f0e803..0000000
--- a/Uboot/cp/ps/driver/src/chipsets/src/audio_base/audiointf/voice_procintf.c
+++ /dev/null
@@ -1,334 +0,0 @@
-/*
- *  Copyright (C) 2017 Sanechips Technology Co., Ltd.
-*
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-
-
-/****************************************************************************
-* 	                                           Include files
-****************************************************************************/
-#include "drvs_general.h"
-#include "drvs_ramlog.h"
-#include <oss_clib.h>
-#include <oss_kernel.h>
-#include "NvParam_drv.h"
-#include "RWNvConfig.h"
-#ifdef _USE_NXP_AUD
-#include "hal_nxp.h"
-#endif
-#ifdef _USE_WEBRTC_AUD
-#include "webrtc_intf.h"
-#endif
-/****************************************************************************
-* 	                                           Local Macros
-****************************************************************************/
-
-
-/****************************************************************************
-* 	                                          Global Constants
-****************************************************************************/
-
-
-/****************************************************************************
-* 	                                          Global Variables
-****************************************************************************/
-
-
-
-extern T_zDrvVoice_GbVar g_voiceVar;
-
-
-
-/****************************************************************************
-* 	                                          Global Function Prototypes
-****************************************************************************/
-
-
-
-
-/****************************************************************************
-* 	                                          Function Definitions
-****************************************************************************/
-SINT32 VoiceProc_InitNvParam(VOID)
-{
-	SINT32 ret = DRV_SUCCESS;
-
-	ret = zOss_NvItemRead(OS_FLASH_VOICE_DRV_RW_NONFAC_BASE_ADDR, ((UINT8 *)(&g_voiceVar.audio_ctrlFlag)),  sizeof(g_voiceVar.audio_ctrlFlag));
-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "VoiceProc_InitNvParam voice  flag baseAdd=0x%x, ret =%d ,isVpParamInNv= %d \n", (OS_FLASH_VOICE_DRV_RW_NONFAC_BASE_ADDR), \
-	                  ret, g_voiceVar.audio_ctrlFlag.isVpParamInNv);
-
-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "VoiceProc_InitNvParam voiceflag isVpParamInNv=%d,isUseSlicCodec=%d,isUseVoiceProc=%d,isUseCodecDsp=%d,isUseNvWrite=%d \n", \
-	                  g_voiceVar.audio_ctrlFlag.isVpParamInNv, g_voiceVar.audio_ctrlFlag.isUseSlicCodec, g_voiceVar.audio_ctrlFlag.isUseVoiceProc, \
-	                  g_voiceVar.audio_ctrlFlag.isUseCodecDsp, g_voiceVar.audio_ctrlFlag.isUseNvWrite);
-
-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "VoiceProc_InitNvParam the g_audioNvParam size=%d,audio_ctrlFlag size=%d \n", sizeof(g_voiceVar), sizeof(g_voiceVar.audio_ctrlFlag));
-
-
-	g_voiceVar.isUseSlicCodec = g_voiceVar.audio_ctrlFlag.isUseSlicCodec;
-	g_voiceVar.g_isUseTdm = g_voiceVar.audio_ctrlFlag.isUseTdm;
-
-	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);
-	if (g_voiceVar.audio_ctrlFlag.isUseVoiceProc == 1)
-	{
-#ifdef _USE_NXP_AUD
-
-	ret = Vp_NxpInitNvParam();
-
-	testnxp_init();
-#elif defined _USE_WEBRTC_AUD
-	ret = Webrtc_InitParam();
-#endif
-	}
-
-
-	return ret;
-}
-
-
-SINT32 VoiceProc_Open(UINT32 fs)
-{
-
-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "VoiceProc_Open isUseVoiceProc=%d \n", g_voiceVar.audio_ctrlFlag.isUseVoiceProc);
-
-	SINT32 ret = DRV_SUCCESS;
-	if (g_voiceVar.audio_ctrlFlag.isUseVoiceProc != 1)
-	{
-		return DRV_ERR_NOT_SUPPORTED;
-	}
-#ifdef _USE_NXP_AUD
-	ret = Vp_NxpOpen(fs);
-#elif defined _USE_WEBRTC_AUD
-	ret = Webrtc_Open(fs);
-
-#endif
-
-
-
-
-
-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "VoiceProc_Open end !\r\n");
-
-
-	return ret;
-}
-
-
-
-SINT32 VoiceProc_Close(VOID)
-{
-
-	SINT32 ret = DRV_SUCCESS;
-#ifdef _USE_NXP_AUD
-	ret = Vp_NxpClose();
-#elif defined _USE_WEBRTC_AUD
-	ret = Webrtc_Close();
-#endif
-	return ret;
-}
-SINT32 VoiceProc_GetParam(T_ZDrvVoice_MODE voiceMode, T_ZDrv_VpPath path)
-{
-
-
-	SINT32 ret = DRV_SUCCESS;
-#ifdef _USE_NXP_AUD
-	ret = Vp_NxpGetParam(voiceMode, path);
-
-#elif defined _USE_WEBRTC_AUD
-	ret = Webrtc_GetParam(voiceMode,path);
-
-#endif
-
-
-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "VoiceProc_GetParam end!\r\n");
-
-	return ret;
-}
-
-SINT32 VoiceProc_SetParam(T_ZDrvVoice_MODE voiceMode, T_ZDrv_VpPath path, T_ZDrv_VpVol volume, BOOL isLoop)
-{
-
-
-	SINT32 ret = DRV_SUCCESS;
-#ifdef _USE_NXP_AUD
-	ret = Vp_NxpSetParam(path, volume, isLoop);
-
-#elif defined _USE_WEBRTC_AUD
-	ret = Webrtc_SetParam(voiceMode, path);
-#endif
-
-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "VoiceProc_SetConfig end!\r\n");
-
-	return ret;
-}
-
-#if 0
-SINT32 VoiceProc_SetGain(SINT32 vgain, UINT32 channel)
-{
-	SINT32  ret = DRV_SUCCESS;
-
-#ifdef _USE_NXP_AUD
-
-	ret = Vp_NxpSetGain(vgain, channel, g_voiceVar.vpPath);
-
-#elif defined _USE_WEBRTC_AUD
-
-#endif
-
-	return ret;
-
-
-}
-#endif
-
-SINT32 VoiceProc_RxProcess(UINT8 **pinBuffer, UINT8 **poutBuffer, UINT16 sampleNums)
-{
-
-	SINT32 ret = DRV_SUCCESS;
-
-
-
-#ifdef _USE_NXP_AUD
-	ret = Vp_NxpRxProcess(pinBuffer, poutBuffer, sampleNums);
-
-#elif defined _USE_WEBRTC_AUD
-	ret = Webrtc_RxProcess(pinBuffer, poutBuffer, sampleNums);
-#endif
-
-
-
-	return ret;
-}
-
-SINT32 VoiceProc_TxProcess(UINT8 **pinBuffer_MAIN, UINT8 **pinBuffer_AUX, UINT8 **poutBuffer, UINT16 sampleNums)
-{
-	SINT32 ret = DRV_SUCCESS;
-
-#ifdef _USE_NXP_AUD
-	ret = Vp_NxpTxProcess(pinBuffer_MAIN, NULL, poutBuffer, sampleNums);
-
-#elif defined _USE_WEBRTC_AUD
-	ret = Webrtc_TxProcess(pinBuffer_MAIN, NULL, poutBuffer, sampleNums);
-
-#endif
-
-
-
-	return ret;
-}
-
-#if 0
-SINT32 VoiceProc_GetParam(void *apInst, T_ZDrvVoice_MODE voiceMode, T_ZDrv_VpPath path)
-{
-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "VoiceProc_GetParam  voiceMode=%d,path=%d \n", voiceMode, path);
-
-
-	return DRV_SUCCESS;
-
-}
-
-SINT32 VoiceProc_SetParam(void *apInst, T_ZDrv_VpPath path, T_ZDrv_VpVol volume, BOOL isLoop)
-{
-
-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "VoiceProc_SetParam  start!\n");
-
-	return DRV_SUCCESS;
-}
-
-SINT32 VoiceProc_SetParamTool(void *apInst, T_ZDrv_VpPath path, T_ZDrv_VpVol volume)
-{
-	return DRV_SUCCESS;
-}
-
-SINT32 VoiceProc_GetParamTool(void *apInst, T_ZDrv_VpPath path, T_ZDrv_VpVol volume)
-{
-	return DRV_SUCCESS;
-}
-
-SINT32 VoiceProc_SetGain(void *apInst, SINT32 gain, UINT32 channel, T_ZDrv_VpPath path)
-{
-
-	return DRV_SUCCESS;
-}
-#endif
-SINT32 VoiceProc_SetEchoDelay(int val)
-{
-	SINT32  ret = DRV_SUCCESS;
-#ifdef _USE_WEBRTC_AUD
-	ret = Webrtc_SetEchoDelay(val);
-#endif
-	return ret;
-}
-
-SINT32 VoiceProc_GetEchoDelay(void)
-{
-	SINT32  ret = DRV_SUCCESS;
-#ifdef _USE_WEBRTC_AUD
-	ret = Webrtc_GetEchoDelay();
-#endif
-	return ret;
-}
-
-SINT32 VoiceProc_SetTxNsMode(int val)
-{
-	SINT32  ret = DRV_SUCCESS;
-#ifdef _USE_WEBRTC_AUD
-	ret = Webrtc_SetTxNsMode(val);
-#endif
-	return ret;
-}
-
-SINT32 VoiceProc_GetTxNsMode(void)
-{
-	SINT32  ret = DRV_SUCCESS;
-#ifdef _USE_WEBRTC_AUD
-	ret = Webrtc_GetTxNsMode();
-#endif
-	return ret;
-
-}
-SINT32 VoiceProc_SetRxNsMode(int val)
-{
-	SINT32  ret = DRV_SUCCESS;
-#ifdef _USE_WEBRTC_AUD
-	ret = Webrtc_SetRxNsMode(val);
-#endif
-	return ret;
-}
-
-SINT32 VoiceProc_GetRxNsMode(void)
-{
-	SINT32  ret = DRV_SUCCESS;
-#ifdef _USE_WEBRTC_AUD
-	ret = Webrtc_GetRxNsMode();
-#endif
-	return ret;
-
-}
-
-
-SINT32 VoiceProc_SetModuleState(int *mod, int count)
-{
-	SINT32  ret = DRV_SUCCESS;
-#ifdef _USE_WEBRTC_AUD
-	ret = Webrtc_SetMoudleState(mod, count);
-#endif
-	return ret;
-}
-
-SINT32 VoiceProc_GetModuleState(int *mod, int count)
-{
-	SINT32  ret = DRV_SUCCESS;
-#ifdef _USE_WEBRTC_AUD
-	ret = Webrtc_GetMoudleState(mod, count);
-#endif
-	return ret;
-
-}
-
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
deleted file mode 100755
index 983a92a..0000000
--- a/Uboot/cp/ps/driver/src/chipsets/src/audio_base/i2s/hal_i2s.c
+++ /dev/null
@@ -1,4431 +0,0 @@
-/**

- * @file hal_i2s.c

- * @brief Implementation of Sanechips i2s  Function

- *

- * Copyright (C) 2017 Sanechips Technology Co., Ltd.

- * @author Author: Xinqiang Xu <xu.xinqiang@sanechips.com.cn>

- *

- * This program is free software; you can redistribute it and/or modify

- * it under the terms of the GNU General Public License version 2 as

- * published by the Free Software Foundation.

- *

- */

-

-/*******************************************************************************

- *                           Include header files                              *

- ******************************************************************************/

-#ifdef _OS_OSE

-#include "outfmt.h"

-#include "ose.h"

-#include "cpu.h"

-#include "dda_pci.h"

-#include "dda_utils.h"

-#include "dda_err.h"

-#include "dda_drm.h"

-#include "dda_strings.h"

-#include "device.sig"

-#include "inputdev.sig"

-#include "ramlog.h"

-#include "ose_syms.h"

-#endif

-

-#include "drvs_general.h"

-#include "drvs_i2s.h"

-#include "drvs_pow.h"

-//#include "dma_cfg.h"

-//#include "drvs_dma.h"

-#include "ThreadPriority.h"

-#include "drvs_chip_cfg.h"

-#include "drvs_sys.h"

-#include "drvs_voiceprocess.h"

-#include <linux/init.h>

-#include <linux/platform_device.h>

-//#include <cyg/hal/tos_cache.h>

-/*

-#include <linux/gpio.h>

-#include <mach/gpio.h>

-#include <mach/clk.h>

-#include <mach/gpio_def.h>

-#include <mach/gpio_cfg.h>

-#include <mach/gpio-names.h>

-#include <mach/board.h>

-#include <mach/clk.h>

-*/

-#include <linux/slab.h>

-#include <linux/dma-mapping.h>

-#include <linux/module.h>

-#include <linux/dmaengine.h>

-#include <mach/board.h>

-#include <mach/dma.h>

-#include <mach/iomap.h>

-#include <asm/io.h>

-

-/*******************************************************************************

- *                             Macro definitions                               *

-  *************************************************************************/

-#define I2S_DRIVER_NAME             "i2s"

-#define I2S_DRIVER_VERSION          1

-#define I2S_VERSION     				0x0102	/*I2S Version*/

-

-#define MALLOC_I2S_DMA_AREA

-

-#define TOP_I2S0_PIN_CONNECT

-

-#define ARM_I2S_LOOP_CFG	*((volatile UINT32 *)(SOC_SYS_REG_BASE+0x60))

-

-/* process control register */

-#define I2S_TX_OPEN     				(0x1<<0)	/*TX enable*/

-#define I2S_RX_OPEN     				(0x1<<1)	/*RX enable*/

-#define I2S_EN							(0x1<<2)

-

-/* Timing control register */

-#define I2S_MASTER_EN                   (0x1<<0)

-#define I2S_TEST_MODE                  	(0x1<<1)		/*test Mode*/

-#define I2S_CLK_EDGE_SEL                (0x1<<2)		/*I2S edge select*/

-#define I2S_TIMING_SEL                  (0x1<<3)		/*PCM Mode or I2S Mode*/

-#define I2S_LONG_FSYNC                	(0x1<<4)  /*1 long, 0 short*/

-#define I2S_EXTRA_CYCLE                	(0x1<<5)  /*1 have extra cycle, 0 no extra*/

-#define I2S_ALIGN_MODE(x)				(((x)&0x3)<<6) /*b00 std, b01 msb,b10 lsb,b11 normal*/

-

-#define I2S_CHN_NUM(x)					(((x)&0x7)<<8)  /*h0~3,h7 totally 1~8 chn per frame*/

-#define I2S_LANE_NUM(x)                	(((x)&0x3)<<11)  /*h0~2,h3  1~4 lane used to transfer data*/

-

-#define I2S_TS_CFG(x)                	(((x)&0x7)<<13)  /* i2s timing or tdm cfg*/

-#define I2S_TS_WIDTH(x)                	(((x)&0x1f)<<16)  /* h0~5 illeagal,hf~1f 16~32 per time slot*/

-#define I2S_DATA_SIZE(x)                	(((x)&0x1f)<<21)  /* h0~5 illeagal,hf~1f data size 16~32*/

-#define I2S_FMT_ERR						(0x1<<31)  /* 1 cfg illeagal,0 cfg correct*/

-

-/* fifo control register */

-#define I2S_TX_FIFO_RST                 (0x1<<0)

-#define I2S_RX_FIFO_RST                 (0x1<<1)

-#define I2S_TX_DMA_EN                   (0x1<<4)

-#define I2S_RX_DMA_EN0                  (0x1<<5)

-#define I2S_RX_DMA_EN1                  (0x1<<6)

-#define I2S_TFTH(x)                     (((x)&0x1f)<<8)	/* interrupt generate setting */

-#define I2S_RFTH(x)                     (((x)&0x1f)<<16)/* interrupt generate setting */

-

-/* fifo status register */

-#define I2S_TX_BEYOND_THRES				(0x1<<0)

-#define I2S_RX_BEYOND_THRES				(0x1<<1)

-

-#define I2S_TX_FIFO_EMPTY				(0x1<<4)

-#define I2S_RX_FIFO_FULL				(0x1<<5)

-

-#define  I2S_TXF_HW_FLAG				(0x1<<8)

-#define I2S_TX_FIFO_CNTR(x)				(((x)&(0x3f<<9))>>9)

-#define I2S_RXF_HW_FLAG					(0x1<<16)

-#define I2S_RX_FIFO_CNTR(x)				(((x)&(0x3f<<17))>>17)

-

-/* clock div register */

-#define I2S_DIV(x)                      (((x)&0x7f)<<0)

-

-/* interrupt status */

-#define I2S_TX_TRIG_INT                 (0x1<<0)

-#define I2S_RX_TRIG_INT                 (0x1<<1)

-#define I2S_TX_UNDER_INT                (0x1<<2)	/* tx error status */

-#define I2S_RX_OVER_INT                 (0x1<<3)	/* rx error status */

-

-/* interrupt enable register */

-#define I2S_TX_TRIG_INT_EN              (0x1<<0)

-#define I2S_RX_TRIG_INT_EN              (0x1<<1)

-#define I2S_TX_UNDER_INT_EN             (0x1<<2)

-#define I2S_RX_OVER_INT_EN              (0x1<<3)

-

-/* frame counter */

-#define I2S_FRAME_CNTR(x)				((x)&0x3fffffff)

-#define I2S_FRAME_CNTR_EN				(0x1<<30)

-#define I2S_FRAME_CNTR_RST				(0x1<<31)

-

-/* default rx/tx trigger threadhold */

-#define I2S_RXFL_VAL                    (0x10)

-#define I2S_TXFL_VAL                    (0x10)

-

-#define I2S_ENABLE_DELAY_TIME			(10)      /* us */

-

-#define I2S_OUT_BUF_NUM					3

-#define I2S_UPLINK_SEM_NUM          	3

-#define I2S_DOWNLINK_SEM_NUM        	0

-#define I2S_MAX_RX_BUF_SIZE         	2048

-#define I2S_MAX_TX_BUF_SIZE         	8192

-#define I2S_MAX_AUDIO_PLAY_MEM_SIZE		8192

-#define I2S_MAX_AUDIO_RECORD_MEM_SIZE	2048

-#define I2S_MAX_VOICE_GSM_MEM_SIZE		320

-#define I2S_MAX_VOICE_LTE_MEM_SIZE		640

-#define RAM_ADDR_FOR_I2S1				DMA_RAM_FOR_I2S_ADDR_BASE

-#define RAM_ADDR_FOR_I2S2				(DMA_RAM_FOR_I2S_ADDR_BASE + 30720)

-

-#define I2S_SEM_WAIT_TIME				2500

-

-#define I2S_QUEUE_SIZE					(I2S_OUT_BUF_NUM + 1)

-#define I2S_WAIT_TIME					100

-#define I2S_INTCTRL_TEST_MODE    		TRUE

-

-//#define I2S0_CRM_CLKSEL     			(ZX_LSP_CRPM_BASE+0x14)

-//#define I2S1_CRM_CLKSEL     			(ZX_LSP_CRPM_BASE+0x1C)

-

-#define I2S0_CRM_CLKSEL		(LSP_CRM_REG_BASE+0x14)

-#define I2S1_CRM_CLKSEL		(LSP_CRM_REG_BASE+0x1C)

-#if defined _USE_AUDIO_ON_7520V2

-#define I2S0_CLKDIV       *((volatile UINT32 *)(LSP_CRM_REG_BASE+0x18))

-#define I2S1_CLKDIV       *((volatile UINT32 *)(LSP_CRM_REG_BASE+0x20))

-#elif defined _USE_AUDIO_ON_7520V3

-#define I2S0_CLKDIV_1       (LSP_CRM_REG_BASE+0x58)

-#define I2S0_CLKDIV_2       (LSP_CRM_REG_BASE+0x5C)

-

-#define I2S1_CLKDIV_1       (LSP_CRM_REG_BASE+0x60)

-#define I2S1_CLKDIV_2       (LSP_CRM_REG_BASE+0x64)

-#endif

-

-/* lsp i2s0 work clk div */

-#define	 I2S0_FRA_DIV      0x00000008

-#define	 I2S0_FRA_BASE     0x00000808

-#define	 I2S0_INTEGER_NUM  0x00001008

-#define  I2S0_CLK_SEL_DIV  0x00001801

-#define	 I2S0_PWRDN        0x00001901

-#define	 I2S0_CLK_DIV      0x00001c04

-

-/* lsp i2s1 work clk div */

-#define	 I2S1_FRA_DIV      0x10000008

-#define	 I2S1_FRA_BASE     0x10000808

-#define	 I2S1_INTEGER_NUM  0x10001008

-#define  I2S1_CLK_SEL_DIV  0x10001801

-#define	 I2S1_PWRDN        0x10001901

-#define	 I2S1_CLK_DIV      0x10001c04

-

-/*******************************************************************************

- *                             Type definitions                                *

- ******************************************************************************/

-typedef enum {

-    BUFFER_NULL,

-    BUFFER_WRITE,

-    BUFFER_FULL,

-    BUFFER_READ,

-

-    MAX_BUFFER_STATUS

-} T_I2s_BufferStatus;

-

-typedef enum {

-    CLK_8000,

-    CLK_11025,

-    CLK_12000,

-    CLK_16000,

-    CLK_22050,

-    CLK_24000,

-    CLK_32000,

-    CLK_44100,

-    CLK_48000,

-    CLK_64000,

-    CLK_96000,

-

-    MAX_CLK

-} T_I2s_ClkConst;

-

-typedef enum {

-    TS_16CYCLE,

-    TS_17CYCLE,

-    TS_18CYCLE,

-    TS_19CYCLE,

-    TS_20CYCLE,

-    TS_21CYCLE,

-    TS_22CYCLE,

-    TS_23CYCLE,

-    TS_24CYCLE,

-    TS_25CYCLE,

-    TS_26CYCLE,

-    TS_27CYCLE,

-    TS_28CYCLE,

-    TS_29CYCLE,

-    TS_30CYCLE,

-    TS_31CYCLE,

-    TS_32CYCLE,

-

-    MAX_TS_WIDTH

-} T_I2s_tTsWidthConst;

-

-typedef struct {

-	volatile UINT32  i2sVersion;

-	volatile UINT32  processCtrl;

-	volatile UINT32  timingCtrl;

-	volatile UINT32  fifoCtrl;

-	volatile UINT32  fifoStatus;

-	volatile UINT32  intEn;

-	volatile UINT32  intStatus;

-	volatile UINT32  data;

-	volatile UINT32  frameCntr;

-	volatile UINT32  data2;

-

-} T_I2s_Reg;

-

-

-/**

- * @brief describe the i2s device info

- * @param regs		register pointer

- * @param intline	interrupt line

- * @param intprio 	interrupt priority

- * @param vector	Interrupt vector

- * @param eoiFunc	interrupt handler

- * @param eoiArg 	interrupt handler arguments

- * @param pid		the id of the process

- */

-typedef struct {

-	T_I2s_Reg          *regs;

-	UINT32             intline;

-	UINT32             intprio;

-	OSVECTOR           vector;

-#ifdef _OS_OSE

-	DdaEndOfInt        *eoiFunc;

-	DdaFuncHandle      eoiArg;

-#endif

-	PROCESS            pid;

-} T_I2s_Device;

-

-typedef struct {

-	T_I2s_Device                *ptDev;

-	T_ZDrvI2S_Cfg               tCfg;

-	T_I2s_Status                i2sStatus;

-	UINT16                      uiDmaRxChan;

-	UINT16                      uiDmaTxChan;

-//	zDrvDma_CallbackFunc        fDmaCbRx;

-//	zDrvDma_CallbackFunc        fDmaCbTx;

-	SINT32						DmaRxID;

-	SINT32						DmaTxID;

-	T_ZDrvI2s_TransMode         i2sTransMode;

-	ZOSS_MUTEX_ID				rxMutex;

-	ZOSS_MUTEX_ID				txMutex;

-} T_I2s_Instance;

-

-typedef struct {

-	UINT8 *buf;

-	T_I2s_BufferStatus i2sBufStatus;

-} T_I2s_BufInfo;

-

-typedef SINT32(*T_I2s_TxFunc)(T_ZDrvI2S_Id tId, const UINT16 *pBuf, UINT32 uiLen);

-

-typedef struct _T_I2s_QueueNode {

-	UINT16 *pBuf;

-	UINT32 len;

-} T_I2s_QueueNode;

-

-typedef  struct _T_I2s_Queue {

-	UINT8 readIndex;

-	UINT8 writeIndex;

-	T_I2s_QueueNode *data;

-} T_I2s_Queue;

-

-/**

- * @brief the data stream of transing

- * @param txBufferArray		tx buf array

- * @param txQueue			size of one buf,use in tx

- * @param txLen 			size of one buf,use in tx

- * @param txSem				for the buf management

- * @param Transing			use to check if datas is transing

- * @param pauseFlag 		pause flag

- * @param txTransmit		for the buf management

- * @param channel			audio channel

- * @param p_cb				audio playback callback function

- */

-typedef struct {

-	T_I2s_BufInfo         *txBufferArray;

-	T_I2s_Queue           txQueue;

-	UINT32                txLen;

-	ZOSS_SEMAPHORE_ID     txSem;

-	BOOL                  Transing;

-	BOOL                  pauseFlag;

-	T_I2s_TxFunc          txTransmit;

-	T_ZDrvAudio_Channel   channel;

-	T_ZDrvI2S_AUD_PLAY_CB p_cb;

-	UINT8                 txRdIdx;

-	UINT8                 txWrIdx;

-} T_I2s_TxStream;

-

-

-/**

- * @brief the data stream of receiving

- * @param txBufferArray		rx buf array

- * @param currentRxBuf		current rx buf

- * @param rxQueue			queue for rx

- * @param rxLen 			size of one buf,use in rx

- * @param rxIdx				idx of next rx buf

- * @param rxSem				for the buf management

- * @param rxTransmit 		trans function

- * @param channel			audio channel

- * @param p_cb				audio playback callback function

- *

- */

-typedef struct {

-	T_I2s_BufInfo         *rxBufferArray;

-	T_I2s_BufInfo         *currentRxBuf;

-	T_I2s_Queue           rxQueue;

-	UINT32                rxLen;

-	UINT8                 rxRdIdx;

-	UINT8                 rxWrIdx;

-	ZOSS_SEMAPHORE_ID     rxSem;

-	T_I2s_TxFunc          rxTransmit;

-	T_ZDrvAudio_Channel   channel;

-	T_ZDrvI2S_AUD_PLAY_CB p_cb;

-} T_I2s_RxStream;

-

-#if defined _USE_AUDIO_ON_7520V2

-typedef struct {

-	UINT32   INTEGERNUM;

-	UINT32   FRACADDNUM;

-	UINT32   FRACBASE;

-	UINT32   CLKSELDIV;

-	UINT32   PWRDN;

-	T_I2s_RefClkForI2s   refclk;

-	UINT32   clkRatio;

-}

-T_I2s_ClkDiv;

-#elif defined _USE_AUDIO_ON_7520V3

-typedef struct {

-	UINT32   FRACDIV1;

-	UINT32   FRACDIV2;

-	T_I2s_ClkConst i2sClockSet;

-	T_I2s_tTsWidthConst i2sTsWidthSet;

-	T_I2s_RefClkForI2s   refclk;

-} T_I2s_ClkDiv;

-#endif

-

-/*******************************************************************************

- *                        Local function declarations                          *

- ******************************************************************************/

-static SINT32 i2s_GetPcmDiv(T_ZDrvI2S_Cfg *ptCfg, T_I2s_ClkDiv *pDiv);

-static SINT32 i2s_GetI2sDiv(T_ZDrvI2S_Cfg *ptCfg, T_I2s_ClkDiv *pDiv);

-SINT32 i2s_SetPdiv(T_ZDrvI2S_Id tId, T_ZDrvI2S_Cfg *ptCfg);

-

-static SINT32 i2s_QueueInit(T_I2s_Queue *i2sQueue);

-static SINT32 i2s_QueuePut(T_I2s_Queue *i2sQueue, UINT16 *pBuf, UINT32 uiLen);

-static SINT32 i2s_QueueGet(T_I2s_Queue *i2sQueue, T_I2s_QueueNode **queueNode);

-static SINT32 i2s_QueueDestory(T_I2s_Queue *i2sQueue);

-

-static SINT32 i2s_SetupTxBuf(T_ZDrvI2S_Id tId);

-static SINT32 i2s_SetupRxBuf(T_ZDrvI2S_Id tId);

-static SINT32 i2s_Reset(T_ZDrvI2S_Id tId);

-

-static VOID i2s_IntIsr(T_ZDrvI2S_Id tId);

-static VOID i2s_IntTxWriteFifo(T_ZDrvI2S_Id tId, UINT32 chanlable);

-static VOID i2s_IntRxWriteBuf(T_ZDrvI2S_Id tId);

-static VOID i2s_IntTxChangeBuf(T_ZDrvI2S_Id tId);

-static VOID i2s_IntRxChangeBuf(T_ZDrvI2S_Id tId);

-

-static SINT32 i2s_TxCheckState(T_ZDrvI2S_Id tId, T_ZDrvI2S_Cfg *ptCfg);

-static SINT32 i2s_RxCheckState(T_ZDrvI2S_Id tId, T_ZDrvI2S_Cfg *ptCfg);

-

-static SINT32 i2s_TxComInit(T_ZDrvI2S_Id tId, T_ZDrvI2s_Params *params);

-static SINT32 i2s_RxComInit(T_ZDrvI2S_Id tId, T_ZDrvI2s_Params *params);

-

-static VOID isr_i2s1(VOID);

-static VOID isr_i2s2(VOID);

-

-static SINT32 i2s_IntRxInit(T_ZDrvI2S_Id tId);

-static SINT32 i2s_IntTxInit(T_ZDrvI2S_Id tId);

-static SINT32 i2s_DmaRxInit(T_ZDrvI2S_Id tId);

-static SINT32 i2s_DmaTxInit(T_ZDrvI2S_Id tId);

-static SINT32 i2s_DmaTx(T_ZDrvI2S_Id tId, const UINT16 *pBuf, UINT32 uiLen);

-static SINT32	i2s_DmaRx(T_ZDrvI2S_Id tId, T_I2s_Instance *ptInstance, UINT8 idx);

-

-static SINT32 i2s_CleanTxResource(T_ZDrvI2S_Id tId);

-static SINT32 i2s_CleanRxResource(T_ZDrvI2S_Id tId);

-

-static SINT32 i2s_IntTx(T_ZDrvI2S_Id tId, const UINT16 *pBuf, UINT32 uiLen);

-

-static VOID i2s_InitInt(VOID);

-static SINT32 i2s_SetClk(T_ZDrvI2S_Id tId, T_I2s_ClkDiv *pDiv);

-static SINT32 i2s_CloseClk(T_ZDrvI2S_Id i2sId);

-static SINT32 i2s_SetClkDiv(UINT32 divFunc, UINT32 div);

-

-#ifdef _USE_PSM

-extern SINT32 zDrvPow_SetDevActive(T_ZDrvPow_IdleFlag devId);

-extern SINT32 zDrvPow_SetDevIdle(T_ZDrvPow_IdleFlag devId);

-#endif

-

-SINT32 i2s_GetI2sTimingCfg(T_ZDrvI2S_TimingType tmType, T_ZDrvI2S_TimingCfg *pTmCfg);

-SINT32 i2s_SetTiming(T_I2s_Reg *ptReg, T_ZDrvI2S_Cfg *ptCfg);

-static VOID i2s_ClkInit(VOID);

-static VOID i2s_ClkDeinit(T_ZDrvI2S_Id tId);

-

-extern VOID Vp_ChangBufLen(VOID);

-#ifdef _USE_VP_I2S_SYNC

-extern VOID Vp_I2S1ReadChangeBufLen(VOID);

-extern VOID Vp_I2S1WriteChangeBufLen(VOID);

-extern VOID Vp_I2S2ReadChangeBufLen(VOID);

-extern VOID Vp_I2S2WriteChangeBufLen(VOID);

-#endif

-SINT32 i2s_rxsem_count_Init(T_ZDrvI2S_Id tId);

-SINT32 i2s_txsem_count_Init(T_ZDrvI2S_Id tId);

-void bsp_udelay(U32 us);//xiu

-/*******************************************************************************

- *                         Local variable definitions                          *

- ******************************************************************************/

-

-#ifdef MALLOC_I2S_DMA_AREA

-typedef struct {

-//    UINT32   txtotalbuffsize;

-//    UINT32   rxtotalbuffsize;

-//	UINT32   txsinglebuffsize;

-//    UINT32   rxsinglebuffsize;

-//	dma_addr_t dma_tx_phyaddr[I2S_OUT_BUF_NUM];

-//	void* dma_tx_viraddr;

-//	dma_addr_t dma_rx_phyaddr[I2S_OUT_BUF_NUM];

-//	void* dma_rx_viraddr;

-//	T_ZDrvDma_ChannelDef rxDmaChanDef;

-//	T_ZDrvDma_ChannelDef txDmaChanDef;

-	UINT32   totalbuffsize;

-	UINT32   singlebuffsize;

-	dma_addr_t dma_phyaddr;

-	void* dma_viraddr;

-//	T_ZDrvDma_ChannelDef dmaChanDef;

-	struct dma_chan *ch;

-	int channel;

-}

-T_I2s_DmaInfo;

-

-static T_I2s_DmaInfo i2sDmaState[MAX_I2S_ID][2] = {0};

-

-#endif

-

-static unsigned long long i2s_device_dma_mask = DMA_BIT_MASK(32);

-

-static struct platform_device i2s_device = {

-	.name = "v3-i2s",

-	.id	= -1,

-	.dev = {

-		.dma_mask		= &i2s_device_dma_mask,

-		.coherent_dma_mask	= DMA_BIT_MASK(32),

-		.platform_data = NULL,

-	},

-};

-

-

-static T_I2s_Instance s_i2sInstance[MAX_I2S_ID]  = {

-	0,

-};

-static T_I2s_TxStream s_i2sTxStream[MAX_I2S_ID] = {

-	NULL,

-};

-static T_I2s_RxStream s_i2sRxStream[MAX_I2S_ID] = {

-	NULL,

-};

-static const UINT16 *s_txBuf[MAX_I2S_ID] = {

-	NULL,

-};

-static UINT16 *s_rxBuf[MAX_I2S_ID] = {

-	NULL,

-};

-static UINT32 s_txLen[MAX_I2S_ID] = {

-	0

-};

-static UINT32 s_rxLen[MAX_I2S_ID] = {

-	0

-};

-static UINT8 *s_txBufArray[MAX_I2S_ID][I2S_OUT_BUF_NUM] = {

-	NULL,

-};

-static UINT8 *s_rxBufArray[MAX_I2S_ID][I2S_OUT_BUF_NUM] = {

-	NULL,

-};

-#if defined _USE_AUDIO_ON_7520V2

-static T_I2s_ClkDiv gPcm1SlotClkDiv[REF_CLK_MAX][MAX_CLK][MAX_PCM_MODE] = {

-	{

-		{{25, 199, 255, 0, 0, 0, 3}, {23, 203, 255, 1, 0, 0, 3}},

-		{{18, 216, 255, 0, 0, 0, 3}, {17, 174, 255, 0, 0, 0, 3}},

-		{{16, 218, 255, 1, 0, 0, 3}, {15, 220, 255, 1, 0, 0, 3}},

-		{{12, 100, 255, 1, 0, 0, 3}, {11, 229, 255, 1, 0, 0, 3}},

-		{{9, 108, 255, 0, 0, 0, 3}, {8, 87, 255, 1, 0, 0, 3}},

-		{{8, 236, 255, 0, 0, 0, 3}, {7, 238, 255, 1, 0, 0, 3}},

-		{{6, 177, 255, 0, 0, 0, 3}, {5, 242, 255, 1, 0, 0, 3}},

-		{{4, 54, 255, 1, 0, 0, 3}, {4, 171, 255, 0, 0, 0, 3}},

-		{{4, 118, 255, 0, 0, 0, 3}, {3, 246, 255, 1, 0, 0, 3}},

-		{{3, 89, 255, 0, 0, 0, 3}, {2, 248, 255, 1, 0, 0, 3}},

-		{{2, 59, 255, 0, 0, 0, 3}, {1, 251, 255, 1, 0, 0, 3}}

-	}

-};

-

-static T_I2s_ClkDiv gPcm2SlotClkDiv[REF_CLK_MAX][MAX_CLK][MAX_PCM_MODE] = {

-	{

-		{{12, 100, 255, 1, 0, 0, 3}, {0, 0, 0, 0, 0, 0, 0}},

-		{{0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}},

-		{{0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}},

-		{{0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}},

-		{{0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}},

-		{{0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}},

-		{{0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}},

-		{{0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}},

-		{{0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}},

-		{{0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}},

-		{{0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}}

-	}

-};

-

-static T_I2s_ClkDiv gPcm4SlotClkDiv[REF_CLK_MAX][MAX_CLK][MAX_PCM_MODE] = {

-	{

-		{{6, 177, 255, 0, 0, 0, 3}, {0, 0, 0, 0, 0, 0, 0}},

-		{{0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}},

-		{{0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}},

-		{{0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}},

-		{{0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}},

-		{{0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}},

-		{{0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}},

-		{{0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}},

-		{{0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}},

-		{{0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}},

-		{{0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}}

-	}

-};

-

-static T_I2s_ClkDiv gPcm8SlotClkDiv[REF_CLK_MAX][MAX_CLK][MAX_PCM_MODE] = {

-	{

-		{{3, 89, 255, 0, 0, 0, 3}, {0, 0, 0, 0, 0, 0, 0}},

-		{{0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}},

-		{{0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}},

-		{{0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}},

-		{{0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}},

-		{{0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}},

-		{{0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}},

-		{{0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}},

-		{{0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}},

-		{{0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}},

-		{{0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}}

-	}

-};

-

-static T_I2s_ClkDiv gPcm16SlotClkDiv[REF_CLK_MAX][MAX_CLK][MAX_PCM_MODE] = {

-	{

-		{{3, 89, 255, 0, 0, 0, 3}, {0, 0, 0, 0, 0, 0, 0}},

-		{{0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}},

-		{{0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}},

-		{{0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}},

-		{{0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}},

-		{{0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}},

-		{{0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}},

-		{{0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}},

-		{{0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}},

-		{{0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}},

-		{{0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}}

-	}

-};

-

-static T_I2s_ClkDiv gI2sClkDiv[REF_CLK_MAX][MAX_CLK][MAX_TS_WIDTH] = {

-	{

-		{{25, 199, 255, 0, 0, 0, 1}, {23, 203, 255, 1, 0, 0, 1}, {22, 35, 255, 1, 0, 0, 1}, {21, 195, 255, 0, 0, 0, 1}, {20, 159, 255, 0, 0, 0, 1}, {19, 176, 255, 0, 0, 0, 1}, {18, 238, 255, 0, 0, 0, 1}, {17, 83, 255, 1, 0, 0, 1}, {16, 218, 255, 1, 0, 0, 1}, {16, 128, 255, 0, 0, 0, 1}, {15, 64, 255, 1, 0, 0, 1}, {15, 24, 255, 0, 0, 0, 1}, {14, 5, 255, 1, 0, 0, 1}, {14, 4, 255, 0, 0, 0, 1}, {13, 21, 255, 1, 0, 0, 1}, {13, 53, 255, 0, 0, 0, 1}, {12, 100, 255, 1, 0, 0, 1}},

-		{{18, 216, 255, 0, 0, 0, 1}, {17, 174, 255, 0, 0, 0, 1}, {16, 192, 255, 0, 0, 0, 1}, {15, 8, 255, 1, 0, 0, 1}, {14, 122, 255, 1, 0, 0, 1}, {14, 19, 255, 0, 0, 0, 1}, {13, 204, 255, 0, 0, 0, 1}, {12, 162, 255, 1, 0, 0, 1}, {12, 144, 255, 0, 0, 0, 1}, {11, 149, 255, 1, 0, 0, 1}, {11, 172, 255, 0, 0, 0, 1}, {10, 213, 255, 1, 0, 0, 1}, {10, 14, 255, 1, 0, 0, 1}, {10, 84, 255, 0, 0, 0, 1}, {9, 166, 255, 1, 0, 0, 1}, {9, 5, 255, 1, 0, 0, 1}, {9, 108, 255, 0, 0, 0, 1}},

-		{{16, 218, 255, 1, 0, 0, 1}, {15, 220, 255, 1, 0, 0, 1}, {15, 24, 255, 0, 0, 0, 1}, {14, 130, 255, 0, 0, 0, 1}, {13, 21, 255, 1, 0, 0, 1}, {12, 202, 255, 1, 0, 0, 1}, {12, 158, 255, 0, 0, 0, 1}, {11, 140, 255, 1, 0, 0, 1}, {11, 145, 255, 0, 0, 0, 1}, {10, 170, 255, 1, 0, 0, 1}, {10, 213, 255, 0, 0, 0, 1}, {10, 16, 255, 0, 0, 0, 1}, {9, 88, 255, 1, 0, 0, 1}, {9, 173, 255, 0, 0, 0, 1}, {9, 14, 255, 0, 0, 0, 1}, {8, 121, 255, 1, 0, 0, 1}, {8, 236, 255, 0, 0, 0, 1}},

-		{{12, 100, 255, 1, 0, 0, 1}, {11, 229, 255, 1, 0, 0, 1}, {11, 145, 255, 0, 0, 0, 1}, {10, 97, 255, 1, 0, 0, 1}, {10, 80, 255, 0, 0, 0, 1}, {9, 88, 255, 1, 0, 0, 1}, {9, 119, 255, 0, 0, 0, 1}, {8, 169, 255, 1, 0, 0, 1}, {8, 236, 255, 0, 0, 0, 1}, {8, 64, 255, 0, 0, 0, 1}, {7, 159, 255, 1, 0, 0, 1}, {7, 12, 255, 1, 0, 0, 1}, {7, 130, 255, 0, 0, 0, 1}, {7, 2, 255, 0, 0, 0, 1}, {6, 138, 255, 1, 0, 0, 1}, {6, 27, 255, 1, 0, 0, 1}, {6, 177, 255, 0, 0, 0, 1}},

-		{{9, 108, 255, 0, 0, 0, 1}, {8, 87, 255, 1, 0, 0, 1}, {8, 96, 255, 0, 0, 0, 1}, {7, 131, 255, 1, 0, 0, 1}, {7, 189, 255, 0, 0, 0, 1}, {7, 10, 255, 0, 0, 0, 1}, {6, 102, 255, 1, 0, 0, 1}, {6, 208, 255, 0, 0, 0, 1}, {6, 72, 255, 0, 0, 0, 1}, {5, 202, 255, 1, 0, 0, 1}, {5, 86, 255, 1, 0, 0, 1}, {5, 234, 255, 0, 0, 0, 1}, {5, 135, 255, 0, 0, 0, 1}, {5, 42, 255, 0, 0, 0, 1}, {4, 211, 255, 1, 0, 0, 1}, {4, 130, 255, 1, 0, 0, 1}, {4, 54, 255, 1, 0, 0, 1}},

-		{{8, 236, 255, 0, 0, 0, 1}, {7, 238, 255, 1, 0, 0, 1}, {7, 12, 255, 1, 0, 0, 1}, {7, 65, 255, 0, 0, 0, 1}, {6, 138, 255, 1, 0, 0, 1}, {6, 229, 255, 0, 0, 0, 1}, {6, 79, 255, 0, 0, 0, 1}, {5, 198, 255, 1, 0, 0, 1}, {5, 73, 255, 1, 0, 0, 1}, {5, 213, 255, 0, 0, 0, 1}, {5, 106, 255, 0, 0, 0, 1}, {5, 8, 255, 0, 0, 0, 1}, {4, 172, 255, 1, 0, 0, 1}, {4, 86, 255, 1, 0, 0, 1}, {4, 7, 255, 1, 0, 0, 1}, {4, 188, 255, 0, 0, 0, 1}, {4, 118, 255, 0, 0, 0, 1}},

-		{{6, 177, 255, 0, 0, 0, 1}, {5, 242, 255, 1, 0, 0, 1}, {5, 73, 255, 1, 0, 0, 1}, {5, 176, 255, 0, 0, 0, 1}, {5, 40, 255, 0, 0, 0, 1}, {4, 172, 255, 1, 0, 0, 1}, {4, 59, 255, 1, 0, 0, 1}, {4, 212, 255, 0, 0, 0, 1}, {4, 118, 255, 0, 0, 0, 1}, {4, 32, 255, 0, 0, 0, 1}, {3, 207, 255, 1, 0, 0, 1}, {3, 133, 255, 1, 0, 0, 1}, {3, 65, 255, 1, 0, 0, 1}, {3, 1, 255, 1, 0, 0, 1}, {3, 197, 255, 0, 0, 0, 1}, {3, 141, 255, 0, 0, 0, 1}, {3, 89, 255, 0, 0, 0, 1}},

-		{{4, 54, 255, 1, 0, 0, 1}, {4, 171, 255, 0, 0, 0, 1}, {4, 48, 255, 0, 0, 0, 1}, {3, 193, 255, 1, 0, 0, 1}, {3, 94, 255, 1, 0, 0, 1}, {3, 5, 255, 1, 0, 0, 1}, {3, 178, 255, 0, 0, 0, 1}, {3, 104, 255, 0, 0, 0, 1}, {3, 36, 255, 0, 0, 0, 1}, {2, 228, 255, 1, 0, 0, 1}, {2, 171, 255, 1, 0, 0, 1}, {2, 117, 255, 1, 0, 0, 1}, {2, 67, 255, 1, 0, 0, 1}, {2, 21, 255, 1, 0, 0, 1}, {2, 233, 255, 0, 0, 0, 1}, {2, 192, 255, 0, 0, 0, 1}, {2, 155, 255, 0, 0, 0, 1}},

-		{{4, 118, 255, 0, 0, 0, 1}, {3, 246, 255, 1, 0, 0, 1}, {3, 133, 255, 1, 0, 0, 1}, {3, 32, 255, 1, 0, 0, 1}, {3, 197, 255, 0, 0, 0, 1}, {3, 114, 255, 0, 0, 0, 1}, {3, 40, 255, 0, 0, 0, 1}, {2, 226, 255, 1, 0, 0, 1}, {2, 164, 255, 1, 0, 0, 1}, {2, 106, 255, 1, 0, 0, 1}, {2, 53, 255, 1, 0, 0, 1}, {2, 4, 255, 1, 0, 0, 1}, {2, 213, 255, 0, 0, 0, 1}, {2, 171, 255, 0, 0, 0, 1}, {2, 131, 255, 0, 0, 0, 1}, {2, 94, 255, 0, 0, 0, 1}, {2, 59, 255, 0, 0, 0, 1}},

-		{{3, 89, 255, 0, 0, 0, 1}, {2, 248, 255, 1, 0, 0, 1}, {2, 164, 255, 1, 0, 0, 1}, {2, 88, 255, 1, 0, 0, 1}, {2, 20, 255, 1, 0, 0, 1}, {2, 213, 255, 0, 0, 0, 1}, {2, 157, 255, 0, 0, 0, 1}, {2, 106, 255, 0, 0, 0, 1}, {2, 59, 255, 0, 0, 0, 1}, {2, 16, 255, 0, 0, 0, 1}, {1, 231, 255, 1, 0, 0, 1}, {1, 194, 255, 1, 0, 0, 1}, {1, 160, 255, 1, 0, 0, 1}, {1, 128, 255, 1, 0, 0, 1}, {1, 98, 255, 1, 0, 0, 1}, {1, 70, 255, 1, 0, 0, 1}, {1, 44, 255, 1, 0, 0, 1}},

-		{{2, 59, 255, 0, 0, 0, 1}, {1, 251, 255, 1, 0, 0, 1}, {1, 194, 255, 1, 0, 0, 1}, {1, 144, 255, 1, 0, 0, 1}, {1, 98, 255, 1, 0, 0, 1}, {1, 57, 255, 1, 0, 0, 1}, {1, 20, 255, 1, 0, 0, 1}, {1, 241, 255, 0, 0, 0, 1}, {1, 209, 255, 0, 0, 0, 1}, {1, 181, 255, 0, 0, 0, 1}, {1, 154, 255, 0, 0, 0, 1}, {1, 129, 255, 0, 0, 0, 1}, {1, 107, 255, 0, 0, 0, 1}, {1, 85, 255, 0, 0, 0, 1}, {1, 66, 255, 0, 0, 0, 1}, {1, 47, 255, 0, 0, 0, 1}, {1, 30, 255, 0, 0, 0, 1}}

-	}

-};

-#elif defined _USE_AUDIO_ON_7520V3

-static T_I2s_ClkDiv gPcm1SlotClkDiv[REF_CLK_MAX][MAX_CLK][MAX_PCM_MODE] = {

-	{

-		{{25, 199, 0}, {23, 203, 0}},

-		{{25, 199, 0}, {23, 203, 0}},

-		{{25, 199, 0}, {23, 203, 0}},

-		{{25, 199, 0}, {23, 203, 0}},

-		{{25, 199, 0}, {23, 203, 0}},

-		{{25, 199, 0}, {23, 203, 0}},

-		{{25, 199, 0}, {23, 203, 0}},

-		{{25, 199, 0}, {23, 203, 0}},

-		{{25, 199, 0}, {23, 203, 0}},

-		{{25, 199, 0}, {23, 203, 0}},

-		{{25, 199, 0}, {23, 203, 0}}

-	},

-	{

-		{{25, 199, 1}, {23, 203, 1}},

-		{{25, 199, 1}, {23, 203, 1}},

-		{{25, 199, 1}, {23, 203, 1}},

-		{{25, 199, 1}, {23, 203, 1}},

-		{{25, 199, 1}, {23, 203, 1}},

-		{{25, 199, 1}, {23, 203, 1}},

-		{{25, 199, 1}, {23, 203, 1}},

-		{{25, 199, 1}, {23, 203, 1}},

-		{{25, 199, 1}, {23, 203, 1}},

-		{{25, 199, 1}, {23, 203, 1}},

-		{{25, 199, 1}, {23, 203, 1}}

-	},

-	{

-		{{25, 199, 2}, {23, 203, 2}},

-		{{25, 199, 2}, {23, 203, 2}},

-		{{25, 199, 2}, {23, 203, 2}},

-		{{25, 199, 2}, {23, 203, 2}},

-		{{25, 199, 2}, {23, 203, 2}},

-		{{25, 199, 2}, {23, 203, 2}},

-		{{25, 199, 2}, {23, 203, 2}},

-		{{25, 199, 2}, {23, 203, 2}},

-		{{25, 199, 2}, {23, 203, 2}},

-		{{25, 199, 2}, {23, 203, 2}},

-		{{25, 199, 2}, {23, 203, 2}}

-	},

-

-};

-

-static T_I2s_ClkDiv gPcm2SlotClkDiv[REF_CLK_MAX][MAX_CLK][MAX_PCM_MODE] = {

-	{

-		{{12, 100, 0}, {0, 0, 0}},

-		{{0, 0, 0}, {0, 0, 0}},

-		{{0, 0, 0}, {0, 0, 0}},

-		{{0, 0, 0}, {0, 0, 0}},

-		{{0, 0, 0}, {0, 0, 0}},

-		{{0, 0, 0}, {0, 0, 0}},

-		{{0, 0, 0}, {0, 0, 0}},

-		{{0, 0, 0}, {0, 0, 0}},

-		{{0, 0, 0}, {0, 0, 0}},

-		{{0, 0, 0}, {0, 0, 0}},

-		{{0, 0, 0}, {0, 0, 0}}

-	},

-	{

-		{{12, 100, 1}, {0, 0, 1}},

-		{{0, 0, 1}, {0, 0, 1}},

-		{{0, 0, 1}, {0, 0, 1}},

-		{{0, 0, 1}, {0, 0, 1}},

-		{{0, 0, 1}, {0, 0, 1}},

-		{{0, 0, 1}, {0, 0, 1}},

-		{{0, 0, 1}, {0, 0, 1}},

-		{{0, 0, 1}, {0, 0, 1}},

-		{{0, 0, 1}, {0, 0, 1}},

-		{{0, 0, 1}, {0, 0, 1}},

-		{{0, 0, 1}, {0, 0, 1}}

-	},

-	{

-		{{12, 100, 2}, {0, 0, 2}},

-		{{0, 0, 2}, {0, 0, 2}},

-		{{0, 0, 2}, {0, 0, 2}},

-		{{0, 0, 2}, {0, 0, 2}},

-		{{0, 0, 2}, {0, 0, 2}},

-		{{0, 0, 2}, {0, 0, 2}},

-		{{0, 0, 2}, {0, 0, 2}},

-		{{0, 0, 2}, {0, 0, 2}},

-		{{0, 0, 2}, {0, 0, 2}},

-		{{0, 0, 2}, {0, 0, 2}},

-		{{0, 0, 2}, {0, 0, 2}}

-	}

-};

-

-static T_I2s_ClkDiv gPcm4SlotClkDiv[REF_CLK_MAX][MAX_CLK][MAX_PCM_MODE] = {

-	{

-		{{12, 100, 0}, {0, 0, 0}},

-		{{0, 0, 0}, {0, 0, 0}},

-		{{0, 0, 0}, {0, 0, 0}},

-		{{0, 0, 0}, {0, 0, 0}},

-		{{0, 0, 0}, {0, 0, 0}},

-		{{0, 0, 0}, {0, 0, 0}},

-		{{0, 0, 0}, {0, 0, 0}},

-		{{0, 0, 0}, {0, 0, 0}},

-		{{0, 0, 0}, {0, 0, 0}},

-		{{0, 0, 0}, {0, 0, 0}},

-		{{0, 0, 0}, {0, 0, 0}}

-	},

-	{

-		{{12, 100, 1}, {0, 0, 1}},

-		{{0, 0, 1}, {0, 0, 1}},

-		{{0, 0, 1}, {0, 0, 1}},

-		{{0, 0, 1}, {0, 0, 1}},

-		{{0, 0, 1}, {0, 0, 1}},

-		{{0, 0, 1}, {0, 0, 1}},

-		{{0, 0, 1}, {0, 0, 1}},

-		{{0, 0, 1}, {0, 0, 1}},

-		{{0, 0, 1}, {0, 0, 1}},

-		{{0, 0, 1}, {0, 0, 1}},

-		{{0, 0, 1}, {0, 0, 1}}

-	},

-	{

-		{{12, 100, 2}, {0, 0, 2}},

-		{{0, 0, 2}, {0, 0, 2}},

-		{{0, 0, 2}, {0, 0, 2}},

-		{{0, 0, 2}, {0, 0, 2}},

-		{{0, 0, 2}, {0, 0, 2}},

-		{{0, 0, 2}, {0, 0, 2}},

-		{{0, 0, 2}, {0, 0, 2}},

-		{{0, 0, 2}, {0, 0, 2}},

-		{{0, 0, 2}, {0, 0, 2}},

-		{{0, 0, 2}, {0, 0, 2}},

-		{{0, 0, 2}, {0, 0, 2}}

-	}

-};

-

-static T_I2s_ClkDiv gPcm8SlotClkDiv[REF_CLK_MAX][MAX_CLK][MAX_PCM_MODE] = {

-	{

-		{{12, 100, 0}, {0, 0, 0}},

-		{{0, 0, 0}, {0, 0, 0}},

-		{{0, 0, 0}, {0, 0, 0}},

-		{{0, 0, 0}, {0, 0, 0}},

-		{{0, 0, 0}, {0, 0, 0}},

-		{{0, 0, 0}, {0, 0, 0}},

-		{{0, 0, 0}, {0, 0, 0}},

-		{{0, 0, 0}, {0, 0, 0}},

-		{{0, 0, 0}, {0, 0, 0}},

-		{{0, 0, 0}, {0, 0, 0}},

-		{{0, 0, 0}, {0, 0, 0}}

-	},

-	{

-		{{12, 100, 1}, {0, 0, 1}},

-		{{0, 0, 1}, {0, 0, 1}},

-		{{0, 0, 1}, {0, 0, 1}},

-		{{0, 0, 1}, {0, 0, 1}},

-		{{0, 0, 1}, {0, 0, 1}},

-		{{0, 0, 1}, {0, 0, 1}},

-		{{0, 0, 1}, {0, 0, 1}},

-		{{0, 0, 1}, {0, 0, 1}},

-		{{0, 0, 1}, {0, 0, 1}},

-		{{0, 0, 1}, {0, 0, 1}},

-		{{0, 0, 1}, {0, 0, 1}}

-	},

-	{

-		{{12, 100, 2}, {0, 0, 2}},

-		{{0, 0, 2}, {0, 0, 2}},

-		{{0, 0, 2}, {0, 0, 2}},

-		{{0, 0, 2}, {0, 0, 2}},

-		{{0, 0, 2}, {0, 0, 2}},

-		{{0, 0, 2}, {0, 0, 2}},

-		{{0, 0, 2}, {0, 0, 2}},

-		{{0, 0, 2}, {0, 0, 2}},

-		{{0, 0, 2}, {0, 0, 2}},

-		{{0, 0, 2}, {0, 0, 2}},

-		{{0, 0, 2}, {0, 0, 2}}

-	}

-};

-

-static T_I2s_ClkDiv gPcm16SlotClkDiv[REF_CLK_MAX][MAX_CLK][MAX_PCM_MODE] = {

-	{

-		{{12, 100, 0}, {0, 0, 0}},

-		{{0, 0, 0}, {0, 0, 0}},

-		{{0, 0, 0}, {0, 0, 0}},

-		{{0, 0, 0}, {0, 0, 0}},

-		{{0, 0, 0}, {0, 0, 0}},

-		{{0, 0, 0}, {0, 0, 0}},

-		{{0, 0, 0}, {0, 0, 0}},

-		{{0, 0, 0}, {0, 0, 0}},

-		{{0, 0, 0}, {0, 0, 0}},

-		{{0, 0, 0}, {0, 0, 0}},

-		{{0, 0, 0}, {0, 0, 0}}

-	},

-	{

-		{{12, 100, 1}, {0, 0, 1}},

-		{{0, 0, 1}, {0, 0, 1}},

-		{{0, 0, 1}, {0, 0, 1}},

-		{{0, 0, 1}, {0, 0, 1}},

-		{{0, 0, 1}, {0, 0, 1}},

-		{{0, 0, 1}, {0, 0, 1}},

-		{{0, 0, 1}, {0, 0, 1}},

-		{{0, 0, 1}, {0, 0, 1}},

-		{{0, 0, 1}, {0, 0, 1}},

-		{{0, 0, 1}, {0, 0, 1}},

-		{{0, 0, 1}, {0, 0, 1}}

-	},

-	{

-		{{12, 100, 2}, {0, 0, 2}},

-		{{0, 0, 2}, {0, 0, 2}},

-		{{0, 0, 2}, {0, 0, 2}},

-		{{0, 0, 2}, {0, 0, 2}},

-		{{0, 0, 2}, {0, 0, 2}},

-		{{0, 0, 2}, {0, 0, 2}},

-		{{0, 0, 2}, {0, 0, 2}},

-		{{0, 0, 2}, {0, 0, 2}},

-		{{0, 0, 2}, {0, 0, 2}},

-		{{0, 0, 2}, {0, 0, 2}},

-		{{0, 0, 2}, {0, 0, 2}}

-	}

-};

-

-static T_I2s_ClkDiv gI2sClkDiv[REF_CLK_MAX][MAX_CLK][MAX_TS_WIDTH] = {

-	{

-		{{0x00200019, 0x00032, CLK_8000, TS_16CYCLE, REF_CLK26M}, {0x00200019, 0x10032, CLK_8000, TS_17CYCLE, 0}, {0x00200019, 0x10032, CLK_8000, TS_18CYCLE, 0}, {0x00200019, 0x10032, CLK_8000, TS_19CYCLE, 0}, {0x00200019, 0x10032, CLK_8000, TS_20CYCLE, 0}, {0x00200019, 0x10032, CLK_8000, TS_21CYCLE, 0}, {0x00200019, 0x10032, CLK_8000, TS_22CYCLE, 0}, {0x00200019, 0x10032, CLK_8000, TS_23CYCLE, 0}, {0x00200019, 0x10032, CLK_8000, TS_24CYCLE, 0}, {0x00200019, 0x10032, CLK_8000, TS_16CYCLE, 0}, {0x00200019, 0x10032, CLK_8000, TS_16CYCLE, 0}, {0x00200019, 0x10032, CLK_8000, TS_16CYCLE, 0}, {0x00200019, 0x10032, CLK_8000, TS_16CYCLE, 0}, {0x00200019, 0x10032, CLK_8000, TS_16CYCLE, 0}, {0x00200019, 0x10032, CLK_8000, TS_16CYCLE, 0}, {0x00200019, 0x10032, CLK_8000, TS_16CYCLE, 0}, {0x00400019, 0x10019, CLK_8000, TS_32CYCLE, 0}},

-		{{0x01b90176, 0x10024, CLK_11025, TS_16CYCLE, 0}, {0x01b90176, 0x10024, CLK_11025, TS_17CYCLE, 0}, {0x01b90176, 0x10024, CLK_11025, TS_18CYCLE, 0}, {0x01b90176, 0x10024, CLK_11025, TS_19CYCLE, 0}, {0x01b90176, 0x10024, CLK_11025, TS_20CYCLE, 0}, {0x01b90176, 0x10024, CLK_11025, TS_21CYCLE, 0}, {0x01b90176, 0x10024, CLK_11025, TS_22CYCLE, 0}, {0x01b90176, 0x10024, CLK_11025, TS_23CYCLE, 0}, {0x01b90176, 0x10024, CLK_11025, TS_24CYCLE, 0}, {0x01b90176, 0x10024, CLK_11025, TS_16CYCLE, 0}, {0x01b90176, 0x10024, CLK_11025, TS_16CYCLE, 0}, {0x01b90176, 0x10024, CLK_11025, TS_16CYCLE, 0}, {0x01b90176, 0x10024, CLK_11025, TS_16CYCLE, 0}, {0x01b90176, 0x10024, CLK_11025, TS_16CYCLE, 0}, {0x01b90176, 0x10024, CLK_11025, TS_16CYCLE, 0}, {0x01b90176, 0x10024, CLK_11025, TS_16CYCLE, 0}, {0x01b900bb, 0x10012, CLK_11025, TS_32CYCLE, 0}},

-		{{0x00300029, 0x10021, CLK_12000, TS_16CYCLE, 0}, {0x00300029, 0x10021, CLK_12000, TS_17CYCLE, 0}, {0x00300029, 0x10021, CLK_12000, TS_18CYCLE, 0}, {0x00300029, 0x10021, CLK_12000, TS_19CYCLE, 0}, {0x00300029, 0x10021, CLK_12000, TS_20CYCLE, 0}, {0x00300029, 0x10021, CLK_12000, TS_21CYCLE, 0}, {0x00300029, 0x10021, CLK_12000, TS_22CYCLE, 0}, {0x00300029, 0x10021, CLK_12000, TS_23CYCLE, 0}, {0x00300029, 0x10021, CLK_12000, TS_24CYCLE, 0}, {0x00300029, 0x10021, CLK_12000, TS_16CYCLE, 0}, {0x00300029, 0x10021, CLK_12000, TS_16CYCLE, 0}, {0x00300029, 0x10021, CLK_12000, TS_16CYCLE, 0}, {0x00300029, 0x10021, CLK_12000, TS_16CYCLE, 0}, {0x00300029, 0x10021, CLK_12000, TS_16CYCLE, 0}, {0x00300029, 0x10021, CLK_12000, TS_16CYCLE, 0}, {0x00300029, 0x10021, CLK_12000, TS_16CYCLE, 0}, {0x00600059, 0x10010, CLK_12000, TS_32CYCLE, 0}},

-		{{0x00400019, 0x00019, CLK_16000, TS_16CYCLE, REF_CLK26M}, {0x00400019, 0x10019, CLK_12000, TS_17CYCLE, 0}, {0x00400019, 0x10019, CLK_12000, TS_18CYCLE, 0}, {0x00400019, 0x10019, CLK_12000, TS_19CYCLE, 0}, {0x00400019, 0x10019, CLK_12000, TS_20CYCLE, 0}, {0x00400019, 0x10019, CLK_12000, TS_21CYCLE, 0}, {0x00400019, 0x10019, CLK_12000, TS_22CYCLE, 0}, {0x00400019, 0x10019, CLK_12000, TS_23CYCLE, 0}, {0x00400019, 0x10019, CLK_12000, TS_24CYCLE, 0}, {0x00400019, 0x10019, CLK_12000, TS_16CYCLE, 0}, {0x00400019, 0x10019, CLK_12000, TS_16CYCLE, 0}, {0x00400019, 0x10019, CLK_12000, TS_16CYCLE, 0}, {0x00400019, 0x10019, CLK_12000, TS_16CYCLE, 0}, {0x00400019, 0x10019, CLK_12000, TS_16CYCLE, 0}, {0x00400019, 0x10019, CLK_12000, TS_16CYCLE, 0}, {0x00400019, 0x10019, CLK_12000, TS_16CYCLE, 0}, {0x00800059, 0x1000c, CLK_16000, TS_32CYCLE, 0}},

-		{{0x01b900bb, 0x10012, CLK_22050, TS_16CYCLE, 0}, {0x01b900bb, 0x10012, CLK_12000, TS_17CYCLE, 0}, {0x01b900bb, 0x10012, CLK_12000, TS_18CYCLE, 0}, {0x01b900bb, 0x10012, CLK_12000, TS_19CYCLE, 0}, {0x01b900bb, 0x10012, CLK_12000, TS_20CYCLE, 0}, {0x01b900bb, 0x10012, CLK_12000, TS_21CYCLE, 0}, {0x01b900bb, 0x10012, CLK_12000, TS_22CYCLE, 0}, {0x01b900bb, 0x10012, CLK_12000, TS_23CYCLE, 0}, {0x01b900bb, 0x10012, CLK_12000, TS_24CYCLE, 0}, {0x01b900bb, 0x10012, CLK_12000, TS_16CYCLE, 0}, {0x01b900bb, 0x10012, CLK_12000, TS_16CYCLE, 0}, {0x01b900bb, 0x10012, CLK_12000, TS_16CYCLE, 0}, {0x01b900bb, 0x10012, CLK_12000, TS_16CYCLE, 0}, {0x01b900bb, 0x10012, CLK_12000, TS_16CYCLE, 0}, {0x01b900bb, 0x10012, CLK_12000, TS_16CYCLE, 0}, {0x01b900bb, 0x10012, CLK_12000, TS_16CYCLE, 0}, {0x037200bb, 0x10009, CLK_22050, TS_32CYCLE, 0}},

-		{{0x00600059, 0x10010, CLK_24000, TS_16CYCLE, 0}, {0x00600059, 0x10010, CLK_12000, TS_17CYCLE, 0}, {0x00600059, 0x10010, CLK_12000, TS_18CYCLE, 0}, {0x00600059, 0x10010, CLK_12000, TS_19CYCLE, 0}, {0x00600059, 0x10010, CLK_12000, TS_20CYCLE, 0}, {0x00600059, 0x10010, CLK_12000, TS_21CYCLE, 0}, {0x00600059, 0x10010, CLK_12000, TS_22CYCLE, 0}, {0x00600059, 0x10010, CLK_12000, TS_23CYCLE, 0}, {0x00600059, 0x10010, CLK_12000, TS_24CYCLE, 0}, {0x00600059, 0x10010, CLK_12000, TS_16CYCLE, 0}, {0x00600059, 0x10010, CLK_12000, TS_16CYCLE, 0}, {0x00600059, 0x10010, CLK_12000, TS_16CYCLE, 0}, {0x00600059, 0x10010, CLK_12000, TS_16CYCLE, 0}, {0x00600059, 0x10010, CLK_12000, TS_16CYCLE, 0}, {0x00600059, 0x10010, CLK_12000, TS_16CYCLE, 0}, {0x00600059, 0x10010, CLK_12000, TS_16CYCLE, 0}, {0x00c00059, 0x10008, CLK_24000, TS_32CYCLE, 0}},

-		{{0x00800059, 0x1000c, CLK_32000, TS_16CYCLE, 0}, {0x00800059, 0x1000c, CLK_12000, TS_17CYCLE, 0}, {0x00800059, 0x1000c, CLK_12000, TS_18CYCLE, 0}, {0x00800059, 0x1000c, CLK_12000, TS_19CYCLE, 0}, {0x00800059, 0x1000c, CLK_12000, TS_20CYCLE, 0}, {0x00800059, 0x1000c, CLK_12000, TS_21CYCLE, 0}, {0x00800059, 0x1000c, CLK_12000, TS_22CYCLE, 0}, {0x00800059, 0x1000c, CLK_12000, TS_23CYCLE, 0}, {0x00800059, 0x1000c, CLK_12000, TS_24CYCLE, 0}, {0x00800059, 0x1000c, CLK_12000, TS_16CYCLE, 0}, {0x00800059, 0x1000c, CLK_12000, TS_16CYCLE, 0}, {0x00800059, 0x1000c, CLK_12000, TS_16CYCLE, 0}, {0x00800059, 0x1000c, CLK_12000, TS_16CYCLE, 0}, {0x00800059, 0x1000c, CLK_12000, TS_16CYCLE, 0}, {0x00800059, 0x1000c, CLK_12000, TS_16CYCLE, 0}, {0x00800059, 0x1000c, CLK_12000, TS_16CYCLE, 0}, {0x01000059, 0x10006, CLK_32000, TS_32CYCLE, 0}},

-		{{0x037200bb, 0x10009, CLK_44100, TS_16CYCLE, 0}, {0x037200bb, 0x10009, CLK_12000, TS_17CYCLE, 0}, {0x037200bb, 0x10009, CLK_12000, TS_18CYCLE, 0}, {0x037200bb, 0x10009, CLK_12000, TS_19CYCLE, 0}, {0x037200bb, 0x10009, CLK_12000, TS_20CYCLE, 0}, {0x037200bb, 0x10009, CLK_12000, TS_21CYCLE, 0}, {0x037200bb, 0x10009, CLK_12000, TS_22CYCLE, 0}, {0x037200bb, 0x10009, CLK_12000, TS_23CYCLE, 0}, {0x037200bb, 0x10009, CLK_12000, TS_24CYCLE, 0}, {0x037200bb, 0x10009, CLK_12000, TS_16CYCLE, 0}, {0x037200bb, 0x10009, CLK_12000, TS_16CYCLE, 0}, {0x037200bb, 0x10009, CLK_12000, TS_16CYCLE, 0}, {0x037200bb, 0x10009, CLK_12000, TS_16CYCLE, 0}, {0x037200bb, 0x10009, CLK_12000, TS_16CYCLE, 0}, {0x037200bb, 0x10009, CLK_12000, TS_16CYCLE, 0}, {0x037200bb, 0x10009, CLK_12000, TS_16CYCLE, 0}, {0x06e4042d, 0x10004, CLK_44100, TS_32CYCLE, 0}},

-		{{0x00c00059, 0x10008, CLK_48000, TS_16CYCLE, 0}, {0x00c00059, 0x10008, CLK_12000, TS_17CYCLE, 0}, {0x00c00059, 0x10008, CLK_12000, TS_18CYCLE, 0}, {0x00c00059, 0x10008, CLK_12000, TS_19CYCLE, 0}, {0x00c00059, 0x10008, CLK_12000, TS_20CYCLE, 0}, {0x00c00059, 0x10008, CLK_12000, TS_21CYCLE, 0}, {0x00c00059, 0x10008, CLK_12000, TS_22CYCLE, 0}, {0x00c00059, 0x10008, CLK_12000, TS_23CYCLE, 0}, {0x00c00059, 0x10008, CLK_12000, TS_24CYCLE, 0}, {0x00c00059, 0x10008, CLK_12000, TS_16CYCLE, 0}, {0x00c00059, 0x10008, CLK_12000, TS_16CYCLE, 0}, {0x00c00059, 0x10008, CLK_12000, TS_16CYCLE, 0}, {0x00c00059, 0x10008, CLK_12000, TS_16CYCLE, 0}, {0x00c00059, 0x10008, CLK_12000, TS_16CYCLE, 0}, {0x00c00059, 0x10008, CLK_12000, TS_16CYCLE, 0}, {0x00c00059, 0x10008, CLK_12000, TS_16CYCLE, 0}, {0x01800059, 0x10004, CLK_48000, TS_32CYCLE, 0}},

-		{{0x01000059, 0x10006, CLK_64000, TS_16CYCLE, 0}, {0x01000059, 0x10006, CLK_12000, TS_17CYCLE, 0}, {0x01000059, 0x10006, CLK_12000, TS_18CYCLE, 0}, {0x01000059, 0x10006, CLK_12000, TS_19CYCLE, 0}, {0x01000059, 0x10006, CLK_12000, TS_20CYCLE, 0}, {0x01000059, 0x10006, CLK_12000, TS_21CYCLE, 0}, {0x01000059, 0x10006, CLK_12000, TS_22CYCLE, 0}, {0x01000059, 0x10006, CLK_12000, TS_23CYCLE, 0}, {0x01000059, 0x10006, CLK_12000, TS_24CYCLE, 0}, {0x01000059, 0x10006, CLK_12000, TS_16CYCLE, 0}, {0x01000059, 0x10006, CLK_12000, TS_16CYCLE, 0}, {0x01000059, 0x10006, CLK_12000, TS_16CYCLE, 0}, {0x01000059, 0x10006, CLK_12000, TS_16CYCLE, 0}, {0x01000059, 0x10006, CLK_12000, TS_16CYCLE, 0}, {0x01000059, 0x10006, CLK_12000, TS_16CYCLE, 0}, {0x01000059, 0x10006, CLK_12000, TS_16CYCLE, 0}, {0x02000059, 0x10003, CLK_64000, TS_32CYCLE, 0}},

-		{{0x01800059, 0x10004, CLK_96000, TS_16CYCLE, 0}, {0x01800059, 0x10004, CLK_12000, TS_17CYCLE, 0}, {0x01800059, 0x10004, CLK_12000, TS_18CYCLE, 0}, {0x01800059, 0x10004, CLK_12000, TS_19CYCLE, 0}, {0x01800059, 0x10004, CLK_12000, TS_20CYCLE, 0}, {0x01800059, 0x10004, CLK_12000, TS_21CYCLE, 0}, {0x01800059, 0x10004, CLK_12000, TS_22CYCLE, 0}, {0x01800059, 0x10004, CLK_12000, TS_23CYCLE, 0}, {0x01800059, 0x10004, CLK_12000, TS_24CYCLE, 0}, {0x01800059, 0x10004, CLK_12000, TS_16CYCLE, 0}, {0x01800059, 0x10004, CLK_12000, TS_16CYCLE, 0}, {0x01800059, 0x10004, CLK_12000, TS_16CYCLE, 0}, {0x01800059, 0x10004, CLK_12000, TS_16CYCLE, 0}, {0x01800059, 0x10004, CLK_12000, TS_16CYCLE, 0}, {0x01800059, 0x10004, CLK_12000, TS_16CYCLE, 0}, {0x01800059, 0x10004, CLK_12000, TS_16CYCLE, 0}, {0x03000059, 0x10002, CLK_96000, TS_32CYCLE, 0}}

-	},

-	{

-		{{0x00200019, 0x10032, CLK_8000, TS_16CYCLE, REF_CLK104M}, {0x00200019, 0x10032, CLK_8000, TS_16CYCLE, 1}, {0x00200019, 0x10032, CLK_8000, TS_16CYCLE, 1}, {0x00200019, 0x10032, CLK_8000, TS_16CYCLE, 1}, {0x00200019, 0x10032, CLK_8000, TS_16CYCLE, 1}, {0x00200019, 0x10032, CLK_8000, TS_16CYCLE, 1}, {0x00200019, 0x10032, CLK_8000, TS_16CYCLE, 1}, {0x00200019, 0x10032, CLK_8000, TS_16CYCLE, 1}, {0x00200019, 0x10032, CLK_8000, TS_16CYCLE, 1}, {0x00200019, 0x10032, CLK_8000, TS_16CYCLE, 1}, {0x00200019, 0x10032, CLK_8000, TS_16CYCLE, 1}, {0x00200019, 0x10032, CLK_8000, TS_16CYCLE, 1}, {0x00200019, 0x10032, CLK_8000, TS_16CYCLE, 1}, {0x00200019, 0x10032, CLK_8000, TS_16CYCLE, 1}, {0x00200019, 0x10032, CLK_8000, TS_16CYCLE, 1}, {0x00200019, 0x10032, CLK_8000, TS_16CYCLE, 1}, {0x00400019, 0x10019, CLK_8000, TS_32CYCLE, 1}},

-		{{0x01b90176, 0x10024, CLK_11025, TS_16CYCLE, 1}, {0x01b90176, 0x10024, CLK_11025, TS_16CYCLE, 1}, {0x01b90176, 0x10024, CLK_11025, TS_16CYCLE, 1}, {0x01b90176, 0x10024, CLK_11025, TS_16CYCLE, 1}, {0x01b90176, 0x10024, CLK_11025, TS_16CYCLE, 1}, {0x01b90176, 0x10024, CLK_11025, TS_16CYCLE, 1}, {0x01b90176, 0x10024, CLK_11025, TS_16CYCLE, 1}, {0x01b90176, 0x10024, CLK_11025, TS_16CYCLE, 1}, {0x01b90176, 0x10024, CLK_11025, TS_16CYCLE, 1}, {0x01b90176, 0x10024, CLK_11025, TS_16CYCLE, 1}, {0x01b90176, 0x10024, CLK_11025, TS_16CYCLE, 1}, {0x01b90176, 0x10024, CLK_11025, TS_16CYCLE, 1}, {0x01b90176, 0x10024, CLK_11025, TS_16CYCLE, 1}, {0x01b90176, 0x10024, CLK_11025, TS_16CYCLE, 1}, {0x01b90176, 0x10024, CLK_11025, TS_16CYCLE, 1}, {0x01b90176, 0x10024, CLK_11025, TS_16CYCLE, 1}, {0x01b900bb, 0x10012, CLK_11025, TS_32CYCLE, 1}},

-		{{0x00300029, 0x10021, CLK_12000, TS_16CYCLE, 1}, {0x00300029, 0x10021, CLK_12000, TS_16CYCLE, 1}, {0x00300029, 0x10021, CLK_12000, TS_16CYCLE, 1}, {0x00300029, 0x10021, CLK_12000, TS_16CYCLE, 1}, {0x00300029, 0x10021, CLK_12000, TS_16CYCLE, 1}, {0x00300029, 0x10021, CLK_12000, TS_16CYCLE, 1}, {0x00300029, 0x10021, CLK_12000, TS_16CYCLE, 1}, {0x00300029, 0x10021, CLK_12000, TS_16CYCLE, 1}, {0x00300029, 0x10021, CLK_12000, TS_16CYCLE, 1}, {0x00300029, 0x10021, CLK_12000, TS_16CYCLE, 1}, {0x00300029, 0x10021, CLK_12000, TS_16CYCLE, 1}, {0x00300029, 0x10021, CLK_12000, TS_16CYCLE, 1}, {0x00300029, 0x10021, CLK_12000, TS_16CYCLE, 1}, {0x00300029, 0x10021, CLK_12000, TS_16CYCLE, 1}, {0x00300029, 0x10021, CLK_12000, TS_16CYCLE, 1}, {0x00300029, 0x10021, CLK_12000, TS_16CYCLE, 1}, {0x00600059, 0x10010, CLK_12000, TS_32CYCLE, 1}},

-		{{0x00400019, 0x10019, CLK_16000, TS_16CYCLE, REF_CLK104M}, {0x00400019, 0x10019, CLK_12000, TS_16CYCLE, 1}, {0x00400019, 0x10019, CLK_12000, TS_16CYCLE, 1}, {0x00400019, 0x10019, CLK_12000, TS_16CYCLE, 1}, {0x00400019, 0x10019, CLK_12000, TS_16CYCLE, 1}, {0x00400019, 0x10019, CLK_12000, TS_16CYCLE, 1}, {0x00400019, 0x10019, CLK_12000, TS_16CYCLE, 1}, {0x00400019, 0x10019, CLK_12000, TS_16CYCLE, 1}, {0x00400019, 0x10019, CLK_12000, TS_16CYCLE, 1}, {0x00400019, 0x10019, CLK_12000, TS_16CYCLE, 1}, {0x00400019, 0x10019, CLK_12000, TS_16CYCLE, 1}, {0x00400019, 0x10019, CLK_12000, TS_16CYCLE, 1}, {0x00400019, 0x10019, CLK_12000, TS_16CYCLE, 1}, {0x00400019, 0x10019, CLK_12000, TS_16CYCLE, 1}, {0x00400019, 0x10019, CLK_12000, TS_16CYCLE, 1}, {0x00400019, 0x10019, CLK_12000, TS_16CYCLE, 1}, {0x00800059, 0x1000c, CLK_16000, TS_32CYCLE, 1}},

-		{{0x01b900bb, 0x10012, CLK_22050, TS_16CYCLE, 1}, {0x01b900bb, 0x10012, CLK_12000, TS_16CYCLE, 1}, {0x01b900bb, 0x10012, CLK_12000, TS_16CYCLE, 1}, {0x01b900bb, 0x10012, CLK_12000, TS_16CYCLE, 1}, {0x01b900bb, 0x10012, CLK_12000, TS_16CYCLE, 1}, {0x01b900bb, 0x10012, CLK_12000, TS_16CYCLE, 1}, {0x01b900bb, 0x10012, CLK_12000, TS_16CYCLE, 1}, {0x01b900bb, 0x10012, CLK_12000, TS_16CYCLE, 1}, {0x01b900bb, 0x10012, CLK_12000, TS_16CYCLE, 1}, {0x01b900bb, 0x10012, CLK_12000, TS_16CYCLE, 1}, {0x01b900bb, 0x10012, CLK_12000, TS_16CYCLE, 1}, {0x01b900bb, 0x10012, CLK_12000, TS_16CYCLE, 1}, {0x01b900bb, 0x10012, CLK_12000, TS_16CYCLE, 1}, {0x01b900bb, 0x10012, CLK_12000, TS_16CYCLE, 1}, {0x01b900bb, 0x10012, CLK_12000, TS_16CYCLE, 1}, {0x01b900bb, 0x10012, CLK_12000, TS_16CYCLE, 1}, {0x037200bb, 0x10009, CLK_22050, TS_32CYCLE, 1}},

-		{{0x00600059, 0x10010, CLK_24000, TS_16CYCLE, 1}, {0x00600059, 0x10010, CLK_12000, TS_16CYCLE, 1}, {0x00600059, 0x10010, CLK_12000, TS_16CYCLE, 1}, {0x00600059, 0x10010, CLK_12000, TS_16CYCLE, 1}, {0x00600059, 0x10010, CLK_12000, TS_16CYCLE, 1}, {0x00600059, 0x10010, CLK_12000, TS_16CYCLE, 1}, {0x00600059, 0x10010, CLK_12000, TS_16CYCLE, 1}, {0x00600059, 0x10010, CLK_12000, TS_16CYCLE, 1}, {0x00600059, 0x10010, CLK_12000, TS_16CYCLE, 1}, {0x00600059, 0x10010, CLK_12000, TS_16CYCLE, 1}, {0x00600059, 0x10010, CLK_12000, TS_16CYCLE, 1}, {0x00600059, 0x10010, CLK_12000, TS_16CYCLE, 1}, {0x00600059, 0x10010, CLK_12000, TS_16CYCLE, 1}, {0x00600059, 0x10010, CLK_12000, TS_16CYCLE, 1}, {0x00600059, 0x10010, CLK_12000, TS_16CYCLE, 1}, {0x00600059, 0x10010, CLK_12000, TS_16CYCLE, 1}, {0x00c00059, 0x10008, CLK_24000, TS_32CYCLE, 1}},

-		{{0x00800059, 0x1000c, CLK_32000, TS_16CYCLE, 1}, {0x00800059, 0x1000c, CLK_12000, TS_16CYCLE, 1}, {0x00800059, 0x1000c, CLK_12000, TS_16CYCLE, 1}, {0x00800059, 0x1000c, CLK_12000, TS_16CYCLE, 1}, {0x00800059, 0x1000c, CLK_12000, TS_16CYCLE, 1}, {0x00800059, 0x1000c, CLK_12000, TS_16CYCLE, 1}, {0x00800059, 0x1000c, CLK_12000, TS_16CYCLE, 1}, {0x00800059, 0x1000c, CLK_12000, TS_16CYCLE, 1}, {0x00800059, 0x1000c, CLK_12000, TS_16CYCLE, 1}, {0x00800059, 0x1000c, CLK_12000, TS_16CYCLE, 1}, {0x00800059, 0x1000c, CLK_12000, TS_16CYCLE, 1}, {0x00800059, 0x1000c, CLK_12000, TS_16CYCLE, 1}, {0x00800059, 0x1000c, CLK_12000, TS_16CYCLE, 1}, {0x00800059, 0x1000c, CLK_12000, TS_16CYCLE, 1}, {0x00800059, 0x1000c, CLK_12000, TS_16CYCLE, 1}, {0x00800059, 0x1000c, CLK_12000, TS_16CYCLE, 1}, {0x01000059, 0x10006, CLK_32000, TS_32CYCLE, 1}},

-		{{0x037200bb, 0x10009, CLK_44100, TS_16CYCLE, 1}, {0x037200bb, 0x10009, CLK_12000, TS_16CYCLE, 1}, {0x037200bb, 0x10009, CLK_12000, TS_16CYCLE, 1}, {0x037200bb, 0x10009, CLK_12000, TS_16CYCLE, 1}, {0x037200bb, 0x10009, CLK_12000, TS_16CYCLE, 1}, {0x037200bb, 0x10009, CLK_12000, TS_16CYCLE, 1}, {0x037200bb, 0x10009, CLK_12000, TS_16CYCLE, 1}, {0x037200bb, 0x10009, CLK_12000, TS_16CYCLE, 1}, {0x037200bb, 0x10009, CLK_12000, TS_16CYCLE, 1}, {0x037200bb, 0x10009, CLK_12000, TS_16CYCLE, 1}, {0x037200bb, 0x10009, CLK_12000, TS_16CYCLE, 1}, {0x037200bb, 0x10009, CLK_12000, TS_16CYCLE, 1}, {0x037200bb, 0x10009, CLK_12000, TS_16CYCLE, 1}, {0x037200bb, 0x10009, CLK_12000, TS_16CYCLE, 1}, {0x037200bb, 0x10009, CLK_12000, TS_16CYCLE, 1}, {0x037200bb, 0x10009, CLK_12000, TS_16CYCLE, 1}, {0x06e4042d, 0x10004, CLK_44100, TS_32CYCLE, 1}},

-		{{0x00c00059, 0x10008, CLK_48000, TS_16CYCLE, 1}, {0x00c00059, 0x10008, CLK_12000, TS_16CYCLE, 1}, {0x00c00059, 0x10008, CLK_12000, TS_16CYCLE, 1}, {0x00c00059, 0x10008, CLK_12000, TS_16CYCLE, 1}, {0x00c00059, 0x10008, CLK_12000, TS_16CYCLE, 1}, {0x00c00059, 0x10008, CLK_12000, TS_16CYCLE, 1}, {0x00c00059, 0x10008, CLK_12000, TS_16CYCLE, 1}, {0x00c00059, 0x10008, CLK_12000, TS_16CYCLE, 1}, {0x00c00059, 0x10008, CLK_12000, TS_16CYCLE, 1}, {0x00c00059, 0x10008, CLK_12000, TS_16CYCLE, 1}, {0x00c00059, 0x10008, CLK_12000, TS_16CYCLE, 1}, {0x00c00059, 0x10008, CLK_12000, TS_16CYCLE, 1}, {0x00c00059, 0x10008, CLK_12000, TS_16CYCLE, 1}, {0x00c00059, 0x10008, CLK_12000, TS_16CYCLE, 1}, {0x00c00059, 0x10008, CLK_12000, TS_16CYCLE, 1}, {0x00c00059, 0x10008, CLK_12000, TS_16CYCLE, 1}, {0x01800059, 0x10004, CLK_48000, TS_32CYCLE, 1}},

-		{{0x01000059, 0x10006, CLK_64000, TS_16CYCLE, 1}, {0x01000059, 0x10006, CLK_12000, TS_16CYCLE, 1}, {0x01000059, 0x10006, CLK_12000, TS_16CYCLE, 1}, {0x01000059, 0x10006, CLK_12000, TS_16CYCLE, 1}, {0x01000059, 0x10006, CLK_12000, TS_16CYCLE, 1}, {0x01000059, 0x10006, CLK_12000, TS_16CYCLE, 1}, {0x01000059, 0x10006, CLK_12000, TS_16CYCLE, 1}, {0x01000059, 0x10006, CLK_12000, TS_16CYCLE, 1}, {0x01000059, 0x10006, CLK_12000, TS_16CYCLE, 1}, {0x01000059, 0x10006, CLK_12000, TS_16CYCLE, 1}, {0x01000059, 0x10006, CLK_12000, TS_16CYCLE, 1}, {0x01000059, 0x10006, CLK_12000, TS_16CYCLE, 1}, {0x01000059, 0x10006, CLK_12000, TS_16CYCLE, 1}, {0x01000059, 0x10006, CLK_12000, TS_16CYCLE, 1}, {0x01000059, 0x10006, CLK_12000, TS_16CYCLE, 1}, {0x01000059, 0x10006, CLK_12000, TS_16CYCLE, 1}, {0x02000059, 0x10003, CLK_64000, TS_32CYCLE, 1}},

-		{{0x01800059, 0x10004, CLK_96000, TS_16CYCLE, 1}, {0x01800059, 0x10004, CLK_12000, TS_16CYCLE, 1}, {0x01800059, 0x10004, CLK_12000, TS_16CYCLE, 1}, {0x01800059, 0x10004, CLK_12000, TS_16CYCLE, 1}, {0x01800059, 0x10004, CLK_12000, TS_16CYCLE, 1}, {0x01800059, 0x10004, CLK_12000, TS_16CYCLE, 1}, {0x01800059, 0x10004, CLK_12000, TS_16CYCLE, 1}, {0x01800059, 0x10004, CLK_12000, TS_16CYCLE, 1}, {0x01800059, 0x10004, CLK_12000, TS_16CYCLE, 1}, {0x01800059, 0x10004, CLK_12000, TS_16CYCLE, 1}, {0x01800059, 0x10004, CLK_12000, TS_16CYCLE, 1}, {0x01800059, 0x10004, CLK_12000, TS_16CYCLE, 1}, {0x01800059, 0x10004, CLK_12000, TS_16CYCLE, 1}, {0x01800059, 0x10004, CLK_12000, TS_16CYCLE, 1}, {0x01800059, 0x10004, CLK_12000, TS_16CYCLE, 1}, {0x01800059, 0x10004, CLK_12000, TS_16CYCLE, 1}, {0x03000059, 0x10002, CLK_96000, TS_32CYCLE, 1}}

-	},

-	{

-		{{0xffff0000, 0x10078, CLK_8000, TS_16CYCLE, REF_CLK122M88}, {0x00200019, 0x10032, CLK_8000, TS_16CYCLE, 2}, {0x00200019, 0x10032, CLK_8000, TS_16CYCLE, 2}, {0x00200019, 0x10032, CLK_8000, TS_16CYCLE, 2}, {0x00200019, 0x10032, CLK_8000, TS_16CYCLE, 2}, {0x00200019, 0x10032, CLK_8000, TS_16CYCLE, 2}, {0x00200019, 0x10032, CLK_8000, TS_16CYCLE, 2}, {0x00200019, 0x10032, CLK_8000, TS_16CYCLE, 2}, {0x00200019, 0x10032, CLK_8000, TS_16CYCLE, 2}, {0x00200019, 0x10032, CLK_8000, TS_16CYCLE, 2}, {0x00200019, 0x10032, CLK_8000, TS_16CYCLE, 2}, {0x00200019, 0x10032, CLK_8000, TS_16CYCLE, 2}, {0x00200019, 0x10032, CLK_8000, TS_16CYCLE, 2}, {0x00200019, 0x10032, CLK_8000, TS_16CYCLE, 2}, {0x00200019, 0x10032, CLK_8000, TS_16CYCLE, 2}, {0x00200019, 0x10032, CLK_8000, TS_16CYCLE, 2}, {0xffff0000, 0x10078, CLK_8000, TS_32CYCLE, 2}},

-		{{0xffff0000, 0x10078, CLK_11025, TS_16CYCLE, 2}, {0x01b90176, 0x10024, CLK_11025, TS_16CYCLE, 2}, {0x01b90176, 0x10024, CLK_11025, TS_16CYCLE, 2}, {0x01b90176, 0x10024, CLK_11025, TS_16CYCLE, 2}, {0x01b90176, 0x10024, CLK_11025, TS_16CYCLE, 2}, {0x01b90176, 0x10024, CLK_11025, TS_16CYCLE, 2}, {0x01b90176, 0x10024, CLK_11025, TS_16CYCLE, 2}, {0x01b90176, 0x10024, CLK_11025, TS_16CYCLE, 2}, {0x01b90176, 0x10024, CLK_11025, TS_16CYCLE, 2}, {0x01b90176, 0x10024, CLK_11025, TS_16CYCLE, 2}, {0x01b90176, 0x10024, CLK_11025, TS_16CYCLE, 2}, {0x01b90176, 0x10024, CLK_11025, TS_16CYCLE, 2}, {0x01b90176, 0x10024, CLK_11025, TS_16CYCLE, 2}, {0x01b90176, 0x10024, CLK_11025, TS_16CYCLE, 2}, {0x01b90176, 0x10024, CLK_11025, TS_16CYCLE, 2}, {0x01b90176, 0x10024, CLK_11025, TS_16CYCLE, 2}, {0xffff0000, 0x10078, CLK_11025, TS_32CYCLE, 2}},

-		{{0xffff0000, 0x10078, CLK_12000, TS_16CYCLE, 2}, {0x00300029, 0x10021, CLK_12000, TS_16CYCLE, 2}, {0x00300029, 0x10021, CLK_12000, TS_16CYCLE, 2}, {0x00300029, 0x10021, CLK_12000, TS_16CYCLE, 2}, {0x00300029, 0x10021, CLK_12000, TS_16CYCLE, 2}, {0x00300029, 0x10021, CLK_12000, TS_16CYCLE, 2}, {0x00300029, 0x10021, CLK_12000, TS_16CYCLE, 2}, {0x00300029, 0x10021, CLK_12000, TS_16CYCLE, 2}, {0x00300029, 0x10021, CLK_12000, TS_16CYCLE, 2}, {0x00300029, 0x10021, CLK_12000, TS_16CYCLE, 2}, {0x00300029, 0x10021, CLK_12000, TS_16CYCLE, 2}, {0x00300029, 0x10021, CLK_12000, TS_16CYCLE, 2}, {0x00300029, 0x10021, CLK_12000, TS_16CYCLE, 2}, {0x00300029, 0x10021, CLK_12000, TS_16CYCLE, 2}, {0x00300029, 0x10021, CLK_12000, TS_16CYCLE, 2}, {0x00300029, 0x10021, CLK_12000, TS_16CYCLE, 2}, {0xffff0000, 0x10078, CLK_12000, TS_32CYCLE, 2}},

-		{{0xffff0000, 0x10078, CLK_16000, TS_16CYCLE, REF_CLK122M88}, {0x00400019, 0x10019, CLK_12000, TS_16CYCLE, 2}, {0x00400019, 0x10019, CLK_12000, TS_16CYCLE, 2}, {0x00400019, 0x10019, CLK_12000, TS_16CYCLE, 2}, {0x00400019, 0x10019, CLK_12000, TS_16CYCLE, 2}, {0x00400019, 0x10019, CLK_12000, TS_16CYCLE, 2}, {0x00400019, 0x10019, CLK_12000, TS_16CYCLE, 2}, {0x00400019, 0x10019, CLK_12000, TS_16CYCLE, 2}, {0x00400019, 0x10019, CLK_12000, TS_16CYCLE, 2}, {0x00400019, 0x10019, CLK_12000, TS_16CYCLE, 2}, {0x00400019, 0x10019, CLK_12000, TS_16CYCLE, 2}, {0x00400019, 0x10019, CLK_12000, TS_16CYCLE, 2}, {0x00400019, 0x10019, CLK_12000, TS_16CYCLE, 2}, {0x00400019, 0x10019, CLK_12000, TS_16CYCLE, 2}, {0x00400019, 0x10019, CLK_12000, TS_16CYCLE, 2}, {0x00400019, 0x10019, CLK_12000, TS_16CYCLE, 2}, {0xffff0000, 0x10078, CLK_16000, TS_32CYCLE, 2}},

-		{{0xffff0000, 0x10078, CLK_22050, TS_16CYCLE, 2}, {0x01b900bb, 0x10012, CLK_12000, TS_16CYCLE, 2}, {0x01b900bb, 0x10012, CLK_12000, TS_16CYCLE, 2}, {0x01b900bb, 0x10012, CLK_12000, TS_16CYCLE, 2}, {0x01b900bb, 0x10012, CLK_12000, TS_16CYCLE, 2}, {0x01b900bb, 0x10012, CLK_12000, TS_16CYCLE, 2}, {0x01b900bb, 0x10012, CLK_12000, TS_16CYCLE, 2}, {0x01b900bb, 0x10012, CLK_12000, TS_16CYCLE, 2}, {0x01b900bb, 0x10012, CLK_12000, TS_16CYCLE, 2}, {0x01b900bb, 0x10012, CLK_12000, TS_16CYCLE, 2}, {0x01b900bb, 0x10012, CLK_12000, TS_16CYCLE, 2}, {0x01b900bb, 0x10012, CLK_12000, TS_16CYCLE, 2}, {0x01b900bb, 0x10012, CLK_12000, TS_16CYCLE, 2}, {0x01b900bb, 0x10012, CLK_12000, TS_16CYCLE, 2}, {0x01b900bb, 0x10012, CLK_12000, TS_16CYCLE, 2}, {0x01b900bb, 0x10012, CLK_12000, TS_16CYCLE, 2}, {0xffff0000, 0x10078, CLK_22050, TS_32CYCLE, 2}},

-		{{0xffff0000, 0x10078, CLK_24000, TS_16CYCLE, 2}, {0x00600059, 0x10010, CLK_12000, TS_16CYCLE, 2}, {0x00600059, 0x10010, CLK_12000, TS_16CYCLE, 2}, {0x00600059, 0x10010, CLK_12000, TS_16CYCLE, 2}, {0x00600059, 0x10010, CLK_12000, TS_16CYCLE, 2}, {0x00600059, 0x10010, CLK_12000, TS_16CYCLE, 2}, {0x00600059, 0x10010, CLK_12000, TS_16CYCLE, 2}, {0x00600059, 0x10010, CLK_12000, TS_16CYCLE, 2}, {0x00600059, 0x10010, CLK_12000, TS_16CYCLE, 2}, {0x00600059, 0x10010, CLK_12000, TS_16CYCLE, 2}, {0x00600059, 0x10010, CLK_12000, TS_16CYCLE, 2}, {0x00600059, 0x10010, CLK_12000, TS_16CYCLE, 2}, {0x00600059, 0x10010, CLK_12000, TS_16CYCLE, 2}, {0x00600059, 0x10010, CLK_12000, TS_16CYCLE, 2}, {0x00600059, 0x10010, CLK_12000, TS_16CYCLE, 2}, {0x00600059, 0x10010, CLK_12000, TS_16CYCLE, 2}, {0xffff0000, 0x10078, CLK_24000, TS_32CYCLE, 2}},

-		{{0xffff0000, 0x10078, CLK_32000, TS_16CYCLE, 2}, {0x00800059, 0x1000c, CLK_12000, TS_16CYCLE, 2}, {0x00800059, 0x1000c, CLK_12000, TS_16CYCLE, 2}, {0x00800059, 0x1000c, CLK_12000, TS_16CYCLE, 2}, {0x00800059, 0x1000c, CLK_12000, TS_16CYCLE, 2}, {0x00800059, 0x1000c, CLK_12000, TS_16CYCLE, 2}, {0x00800059, 0x1000c, CLK_12000, TS_16CYCLE, 2}, {0x00800059, 0x1000c, CLK_12000, TS_16CYCLE, 2}, {0x00800059, 0x1000c, CLK_12000, TS_16CYCLE, 2}, {0x00800059, 0x1000c, CLK_12000, TS_16CYCLE, 2}, {0x00800059, 0x1000c, CLK_12000, TS_16CYCLE, 2}, {0x00800059, 0x1000c, CLK_12000, TS_16CYCLE, 2}, {0x00800059, 0x1000c, CLK_12000, TS_16CYCLE, 2}, {0x00800059, 0x1000c, CLK_12000, TS_16CYCLE, 2}, {0x00800059, 0x1000c, CLK_12000, TS_16CYCLE, 2}, {0x00800059, 0x1000c, CLK_12000, TS_16CYCLE, 2}, {0xffff0000, 0x10078, CLK_32000, TS_32CYCLE, 2}},

-		{{0xffff0000, 0x10078, CLK_44100, TS_16CYCLE, 2}, {0x037200bb, 0x10009, CLK_12000, TS_16CYCLE, 2}, {0x037200bb, 0x10009, CLK_12000, TS_16CYCLE, 2}, {0x037200bb, 0x10009, CLK_12000, TS_16CYCLE, 2}, {0x037200bb, 0x10009, CLK_12000, TS_16CYCLE, 2}, {0x037200bb, 0x10009, CLK_12000, TS_16CYCLE, 2}, {0x037200bb, 0x10009, CLK_12000, TS_16CYCLE, 2}, {0x037200bb, 0x10009, CLK_12000, TS_16CYCLE, 2}, {0x037200bb, 0x10009, CLK_12000, TS_16CYCLE, 2}, {0x037200bb, 0x10009, CLK_12000, TS_16CYCLE, 2}, {0x037200bb, 0x10009, CLK_12000, TS_16CYCLE, 2}, {0x037200bb, 0x10009, CLK_12000, TS_16CYCLE, 2}, {0x037200bb, 0x10009, CLK_12000, TS_16CYCLE, 2}, {0x037200bb, 0x10009, CLK_12000, TS_16CYCLE, 2}, {0x037200bb, 0x10009, CLK_12000, TS_16CYCLE, 2}, {0x037200bb, 0x10009, CLK_12000, TS_16CYCLE, 2}, {0xffff0000, 0x10078, CLK_44100, TS_32CYCLE, 2}},

-		{{0xffff0000, 0x10078, CLK_48000, TS_16CYCLE, 2}, {0x00c00059, 0x10008, CLK_12000, TS_16CYCLE, 2}, {0x00c00059, 0x10008, CLK_12000, TS_16CYCLE, 2}, {0x00c00059, 0x10008, CLK_12000, TS_16CYCLE, 2}, {0x00c00059, 0x10008, CLK_12000, TS_16CYCLE, 2}, {0x00c00059, 0x10008, CLK_12000, TS_16CYCLE, 2}, {0x00c00059, 0x10008, CLK_12000, TS_16CYCLE, 2}, {0x00c00059, 0x10008, CLK_12000, TS_16CYCLE, 2}, {0x00c00059, 0x10008, CLK_12000, TS_16CYCLE, 2}, {0x00c00059, 0x10008, CLK_12000, TS_16CYCLE, 2}, {0x00c00059, 0x10008, CLK_12000, TS_16CYCLE, 2}, {0x00c00059, 0x10008, CLK_12000, TS_16CYCLE, 2}, {0x00c00059, 0x10008, CLK_12000, TS_16CYCLE, 2}, {0x00c00059, 0x10008, CLK_12000, TS_16CYCLE, 2}, {0x00c00059, 0x10008, CLK_12000, TS_16CYCLE, 2}, {0x00c00059, 0x10008, CLK_12000, TS_16CYCLE, 2}, {0xffff0000, 0x10078, CLK_48000, TS_32CYCLE, 2}},

-		{{0xffff0000, 0x10078, CLK_64000, TS_16CYCLE, 2}, {0x01000059, 0x10006, CLK_12000, TS_16CYCLE, 2}, {0x01000059, 0x10006, CLK_12000, TS_16CYCLE, 2}, {0x01000059, 0x10006, CLK_12000, TS_16CYCLE, 2}, {0x01000059, 0x10006, CLK_12000, TS_16CYCLE, 2}, {0x01000059, 0x10006, CLK_12000, TS_16CYCLE, 2}, {0x01000059, 0x10006, CLK_12000, TS_16CYCLE, 2}, {0x01000059, 0x10006, CLK_12000, TS_16CYCLE, 2}, {0x01000059, 0x10006, CLK_12000, TS_16CYCLE, 2}, {0x01000059, 0x10006, CLK_12000, TS_16CYCLE, 2}, {0x01000059, 0x10006, CLK_12000, TS_16CYCLE, 2}, {0x01000059, 0x10006, CLK_12000, TS_16CYCLE, 2}, {0x01000059, 0x10006, CLK_12000, TS_16CYCLE, 2}, {0x01000059, 0x10006, CLK_12000, TS_16CYCLE, 2}, {0x01000059, 0x10006, CLK_12000, TS_16CYCLE, 2}, {0x01000059, 0x10006, CLK_12000, TS_16CYCLE, 2}, {0xffff0000, 0x10078, CLK_64000, TS_32CYCLE, 2}},

-		{{0xffff0000, 0x10078, CLK_96000, TS_16CYCLE, 2}, {0x01800059, 0x10004, CLK_12000, TS_16CYCLE, 2}, {0x01800059, 0x10004, CLK_12000, TS_16CYCLE, 2}, {0x01800059, 0x10004, CLK_12000, TS_16CYCLE, 2}, {0x01800059, 0x10004, CLK_12000, TS_16CYCLE, 2}, {0x01800059, 0x10004, CLK_12000, TS_16CYCLE, 2}, {0x01800059, 0x10004, CLK_12000, TS_16CYCLE, 2}, {0x01800059, 0x10004, CLK_12000, TS_16CYCLE, 2}, {0x01800059, 0x10004, CLK_12000, TS_16CYCLE, 2}, {0x01800059, 0x10004, CLK_12000, TS_16CYCLE, 2}, {0x01800059, 0x10004, CLK_12000, TS_16CYCLE, 2}, {0x01800059, 0x10004, CLK_12000, TS_16CYCLE, 2}, {0x01800059, 0x10004, CLK_12000, TS_16CYCLE, 2}, {0x01800059, 0x10004, CLK_12000, TS_16CYCLE, 2}, {0x01800059, 0x10004, CLK_12000, TS_16CYCLE, 2}, {0x01800059, 0x10004, CLK_12000, TS_16CYCLE, 2}, {0xffff0000, 0x10078, CLK_96000, TS_32CYCLE, 2}}

-	}

-};

-#endif

-

-

-

-static T_ZDrvI2S_TimingCfg gI2S_TimingCfg[] = {

-	{TIMING_I2S_MONO_RIGHT, I2S_TIME_MODE, 0, 0, 1},

-	{TIMING_I2S_MONO_LEFT, I2S_TIME_MODE, 0, 0, 2},

-	{TIMING_I2S_ST_2CHN_1LANE, I2S_TIME_MODE, 1, 0, 3},

-	{TIMING_I2S_ST_4CHN_2LANE, I2S_TIME_MODE, 3, 1, 3},

-	{TIMING_I2S_ST_6CHN_3LANE, I2S_TIME_MODE, 5, 2, 3},

-	{TIMING_I2S_ST_8CHN_4LANE, I2S_TIME_MODE, 7, 3, 3},

-	{TIMING_TDM_1CHN_1LANE_1TS, PCM_TIME_MODE, 0, 0, 0},

-	{TIMING_TDM_2CHN_1LANE_2TS, PCM_TIME_MODE, 1, 0, 1}

-};

-

-static UINT32 g_i2sClkDivRegs[2] = {

-	LSP_CRM_REG_BASE + 0x18,

-	LSP_CRM_REG_BASE + 0x20,

-};

-

-static BOOL s_bI2sInitInt = FALSE;

-static BOOL s_bI2sClkInit = FALSE;

-

-static UINT32 audioGpioWsHandle = 0;

-static UINT32 audioGpioClkHandle = 0;

-static UINT32 audioGpioDinHandle = 0;

-static UINT32 audioGpioDoutHandle = 0;

-

-/*

-static T_ZDrvDma_ChannelDef s_i2s1Tx_DmaChlDef[6] = {0};

-static T_ZDrvDma_ChannelDef s_i2s2Tx_DmaChlDef[6] = {0};

-static T_ZDrvDma_ChannelDef s_i2s1Rx_DmaChlDef[6] = {0};

-static T_ZDrvDma_ChannelDef s_i2s2Rx_DmaChlDef[6] = {0};

-*/

-/*******************************************************************************

- *                        Global variable definitions                          *

- ******************************************************************************/

-

-

-/* add by lvwenhua for i2s sync */

-SINT32 gI2sDmaReadIntTime[MAX_I2S_ID] = {0};

-SINT32 gI2sDmaWriteIntTime[MAX_I2S_ID] = {0};

-SINT32 gI2sTimes = 0;

-SINT32 gI2sCntChangeTx[MAX_I2S_ID] = {0};

-SINT32 gI2sCntChangeRx[MAX_I2S_ID] = {0};

-//SINT32 gI2sTimeDiff = 3000;

-

-UINT32 i2swrite_tid = 0;

-UINT32 i2swrite_pbuf = 0;

-UINT32 i2swrite_uilen = 0;

-

-UINT32 freebufferadd = 0;

-UINT32 freebuffertid = 0;

-extern T_zDrvVoice_GbVar g_voiceVar;

-

-/*******************************************************************************

- *                      Inline function implementations                        *

- ******************************************************************************/

-/**

-* @brief	check if the queue is empty.

-*

-* @param	i2sQueue		queue pointer

-* @return	0-DRV_SUCCESS, other-error

-*/

-__inline BOOL i2s_IsQueueEmpty(T_I2s_Queue *i2sQueue)

-{

-	if (NULL == i2sQueue) { //klocwork 3 INVARIANT_CONDITION.UNREACH  °ÑassertÒÆµ½ifÀïÃæ

-		zDrv_ASSERT(0);

-		return DRV_ERR_INVALID_PARAM;

-	}

-

-	return (i2sQueue->writeIndex == i2sQueue->readIndex);

-}

-

-/**

-* @brief	check if the queue is full.

-*

-* @param	i2sQueue		queue pointer

-* @return	0-DRV_SUCCESS, other-error

-*/

-__inline BOOL i2s_IsQueueFull(T_I2s_Queue *i2sQueue)

-{

-	if (NULL == i2sQueue) {	//klocwork 3 INVARIANT_CONDITION.UNREACH  °ÑassertÒÆµ½ifÀïÃæ

-		zDrv_ASSERT(0);

-		return DRV_ERR_INVALID_PARAM;

-	}

-

-	return ((i2sQueue->writeIndex + 1) % I2S_QUEUE_SIZE == i2sQueue->readIndex);

-}

-

-/*******************************************************************************

- *                      Local function implementations                         *

- ******************************************************************************/

-/**

-* @brief	use to manage tx buffer status ,update one buffer status.

-*

-* @param	tId 		i2s select i2s0 or i2s1

-* @param	bufAddr 	buffer pointer

-* @param	bufferStatus 	buffer status

-* @return	0-DRV_SUCCESS, other-error

-*/

-static SINT32 i2s_UpdateTxBufferStatus(T_ZDrvI2S_Id tId, UINT16 *bufAddr, T_I2s_BufferStatus bufferStatus)

-{

-	T_I2s_TxStream *i2sStream = &s_i2sTxStream[tId];

-	UINT8 bufIndex = 0;

-

-	if (NULL == bufAddr) { //klocwork 3 INVARIANT_CONDITION.UNREACH  °ÑassertÒÆµ½ifÀïÃæ

-		zDrv_ASSERT(0);

-		return DRV_ERR_INVALID_PARAM;

-	}

-	if (i2sStream->txBufferArray == NULL) {

-		return DRV_ERROR;

-	}

-	for (; bufIndex < I2S_OUT_BUF_NUM; bufIndex++) {

-		if (i2sStream->txBufferArray[bufIndex].buf == (UINT8 *)bufAddr) {

-			i2sStream->txBufferArray[bufIndex].i2sBufStatus = bufferStatus;

-			break;

-		}

-	}

-

-	if (bufIndex == I2S_OUT_BUF_NUM) {

-		return DRV_ERROR;

-	}

-

-	return DRV_SUCCESS;

-}

-

-/**

-* @brief	use to manage rx buffer status ,update one buffer status.

-*

-* @param	tId 		i2s select i2s0 or i2s1

-* @param	bufAddr 	buffer pointer

-* @param	bufferStatus	buffer status

-* @return	0-DRV_SUCCESS, other-error

-*/

-static SINT32 i2s_UpdateRxBufferStatus(T_ZDrvI2S_Id tId, UINT16 *bufAddr, T_I2s_BufferStatus bufferStatus)

-{

-	T_I2s_RxStream *i2sStream = &s_i2sRxStream[tId];

-	UINT8 bufIndex = 0;

-

-	if (NULL == bufAddr) { //klocwork 3 INVARIANT_CONDITION.UNREACH  °ÑassertÒÆµ½ifÀïÃæ

-		zDrv_ASSERT(0);

-		return DRV_ERR_INVALID_PARAM;

-	}

-	if (i2sStream->rxBufferArray == NULL) {

-		return DRV_ERROR;

-	}

-	for (; bufIndex < I2S_OUT_BUF_NUM; bufIndex++) {

-		if (i2sStream->rxBufferArray[bufIndex].buf == (UINT8 *)bufAddr) {

-			i2sStream->rxBufferArray[bufIndex].i2sBufStatus = bufferStatus;

-			break;

-		}

-	}

-

-	if (bufIndex == I2S_OUT_BUF_NUM) {

-		return DRV_ERROR;

-	}

-

-	return DRV_SUCCESS;

-}

-

-/**

-* @brief	use to manage Tx buffer status ,update one buffer status. if one buf status is one,change to new status.

-*

-* @param	tId 		i2s select i2s0 or i2s1

-* @param	oldStatus 	buffer status

-* @param	newStatus	buffer status

-* @return	0-DRV_SUCCESS, other-error

-*/

-static SINT32 i2s_ChangeTxBufferStatus(T_ZDrvI2S_Id tId, T_I2s_BufferStatus oldStatus, T_I2s_BufferStatus newStatus)

-{

-	T_I2s_TxStream *i2sStream = &s_i2sTxStream[tId];

-	UINT8 bufIndex = 0;

-

-	for (; bufIndex < I2S_OUT_BUF_NUM; bufIndex++) {

-		if (i2sStream->txBufferArray[bufIndex].i2sBufStatus == oldStatus) {

-			i2sStream->txBufferArray[bufIndex].i2sBufStatus = newStatus;

-			break;

-		}

-	}

-

-	if (bufIndex == I2S_OUT_BUF_NUM) {

-		return DRV_ERR_INVALID_PARAM;

-	}

-

-	return DRV_SUCCESS;

-}

-

-/**

-* @brief	this function is use to init the buffer queue.

-*

-* @param	i2sQueue 		queue pointer

-* @return	0-DRV_SUCCESS, other-error

-*/

-static SINT32 i2s_QueueInit(T_I2s_Queue *i2sQueue)

-{

-	SINT32 ret = 0;

-

-	if (NULL == i2sQueue) { //klocwork 3 INVARIANT_CONDITION.UNREACH  °ÑassertÒÆµ½ifÀïÃæ

-		zDrv_ASSERT(0);

-		return DRV_ERR_INVALID_PARAM;

-	}

-

-	i2sQueue->data = (T_I2s_QueueNode *)zOss_Malloc(sizeof(T_I2s_QueueNode) * I2S_QUEUE_SIZE);

-	if (NULL == i2sQueue->data) {

-		return DRV_ERR_MEM_ALLOC;

-	}

-

-	for (ret = 0; ret < I2S_QUEUE_SIZE; ret++) {

-		i2sQueue->data[ret].pBuf = NULL;

-		i2sQueue->data[ret].len = 0;

-	}

-

-	i2sQueue->readIndex = 0;

-	i2sQueue->writeIndex = 0;

-

-	return DRV_SUCCESS;

-}

-

-/**

-* @brief	insert the queue to queue tail.

-*

-* @param	*pBuf		buffer pointer

-* @param	uiLen		buffer length

-* @return	0-DRV_SUCCESS, other-error

-*/

-static SINT32 i2s_QueuePut(T_I2s_Queue *i2sQueue, UINT16 *pBuf, UINT32 uiLen)

-{

-	BOOL isFull = FALSE;

-

-	if (NULL == i2sQueue || NULL == pBuf || 0 == uiLen) { //klocwork 3 INVARIANT_CONDITION.UNREACH  °ÑassertÒÆµ½ifÀïÃæ

-		zDrv_ASSERT(0);

-		return DRV_ERR_INVALID_PARAM;

-	}

-

-	isFull = i2s_IsQueueFull(i2sQueue);

-	if (TRUE == isFull) { //klocwork 3 INVARIANT_CONDITION.UNREACH  °ÑassertÒÆµ½ifÀïÃæ

-		zDrv_ASSERT(0);

-		return DRV_ERROR;

-	}

-	if (i2sQueue->data == NULL) {

-		return DRV_ERROR;

-	}

-	i2sQueue->data[i2sQueue->writeIndex].pBuf = pBuf;

-	i2sQueue->data[i2sQueue->writeIndex].len = uiLen;

-	i2sQueue->writeIndex = (i2sQueue->writeIndex + 1) % I2S_QUEUE_SIZE;

-

-	return DRV_SUCCESS;

-}

-

-/**

-* @brief	Fetch the queue node from queue head .

-*

-* @param	i2sQueue		queue pointer

-* @param	**queueNode		queue node  pointer

-* @return	0-DRV_SUCCESS, other-error

-*/

-static SINT32 i2s_QueueGet(T_I2s_Queue *i2sQueue, T_I2s_QueueNode **queueNode)

-{

-	BOOL isEmpty = FALSE;

-

-	if (NULL == i2sQueue || NULL == queueNode) { //klocwork 3 INVARIANT_CONDITION.UNREACH  °ÑassertÒÆµ½ifÀïÃæ

-		zDrv_ASSERT(0);

-		return DRV_ERR_INVALID_PARAM;

-	}

-

-	isEmpty = i2s_IsQueueEmpty(i2sQueue);

-

-	if (TRUE == isEmpty) {

-		*queueNode = NULL;

-		return DRV_ERROR;

-	} else {

-		*queueNode = &i2sQueue->data[i2sQueue->readIndex];

-		i2sQueue->readIndex = (i2sQueue->readIndex + 1) % I2S_QUEUE_SIZE;

-	}

-

-	return DRV_SUCCESS;

-}

-

-/**

-* @brief	destroy the queue.

-*

-* @param	i2sQueue		queue pointer

-* @return	0-DRV_SUCCESS, other-error

-*/

-static SINT32 i2s_QueueDestory(T_I2s_Queue *i2sQueue)

-{

-	if (NULL == i2sQueue) { //klocwork 3 INVARIANT_CONDITION.UNREACH  °ÑassertÒÆµ½ifÀïÃæ

-		zDrv_ASSERT(0);

-		return DRV_ERR_INVALID_PARAM;

-	}

-

-	if (i2sQueue->data != NULL) {

-		zOss_Free(i2sQueue->data);

-	}

-

-	i2sQueue->data = NULL;

-	i2sQueue->readIndex = 0;

-	i2sQueue->writeIndex = 0;

-

-	return DRV_SUCCESS;

-}

-

-/**

-* @brief	Get pcm division coeff.

-*

-* @param	ptCfg		config parameter

-* @param	pDiv		pcm division coeff

-* @return	0-DRV_SUCCESS, other-error

-*/

-static SINT32 i2s_GetPcmDiv(T_ZDrvI2S_Cfg *ptCfg, T_I2s_ClkDiv *pDiv)

-{

-	T_I2s_ClkConst i2sClockSet = MAX_CLK;

-

-	if (NULL == pDiv || NULL == ptCfg || ptCfg->refclk >= REF_CLK_MAX || ptCfg->tPcmMode >= MAX_PCM_MODE) {

-		return DRV_ERR_INVALID_PARAM;

-	}

-

-	switch (ptCfg->sample_rate) {

-	case 8000:

-		i2sClockSet = CLK_8000;

-		break;

-	case 11025:

-		i2sClockSet = CLK_11025;

-		break;

-	case 12000:

-		i2sClockSet = CLK_12000;

-		break;

-	case 16000:

-		i2sClockSet = CLK_16000;

-		break;

-	case 22050:

-		i2sClockSet = CLK_22050;

-		break;

-	case 24000:

-		i2sClockSet = CLK_24000;

-		break;

-	case 32000:

-		i2sClockSet = CLK_32000;

-		break;

-	case 44100:

-		i2sClockSet = CLK_44100;

-		break;

-	case 48000:

-		i2sClockSet = CLK_48000;

-		break;

-	case 64000:

-		i2sClockSet = CLK_64000;

-		break;

-	case 96000:

-		i2sClockSet = CLK_96000;

-		break;

-	default:

-		i2sClockSet = CLK_44100;

-		break;

-	}

-

-	if (ptCfg->tPcmSlotNum == PCM_1TIME_SLOT) {

-		*pDiv = gPcm1SlotClkDiv[ptCfg->refclk][i2sClockSet][ptCfg->tPcmMode];

-	} else if (ptCfg->tPcmSlotNum == PCM_2TIME_SLOT) {

-		*pDiv = gPcm2SlotClkDiv[ptCfg->refclk][i2sClockSet][ptCfg->tPcmMode];

-	} else if (ptCfg->tPcmSlotNum == PCM_4TIME_SLOT) {

-		*pDiv = gPcm4SlotClkDiv[ptCfg->refclk][i2sClockSet][ptCfg->tPcmMode];

-	} else if (ptCfg->tPcmSlotNum == PCM_8TIME_SLOT) {

-		*pDiv = gPcm8SlotClkDiv[ptCfg->refclk][i2sClockSet][ptCfg->tPcmMode];;

-	} else if (ptCfg->tPcmSlotNum == PCM_16TIME_SLOT) {

-		*pDiv = gPcm16SlotClkDiv[ptCfg->refclk][i2sClockSet][ptCfg->tPcmMode];

-	} else {

-		return DRV_ERR_INVALID_PARAM;

-	}

-

-	return DRV_SUCCESS;

-}

-

-/**

-* @brief	Get i2s division coeff.

-*

-* @param	ptCfg		config parameter

-* @param	pDiv		pcm division coeff

-* @return	0-DRV_SUCCESS, other-error

-*/

-static SINT32 i2s_GetI2sDiv(T_ZDrvI2S_Cfg *ptCfg, T_I2s_ClkDiv *pDiv)

-{

-	T_I2s_ClkConst i2sClockSet = MAX_CLK;

-	T_I2s_tTsWidthConst i2sTsWidthSet = MAX_TS_WIDTH;

-

-	if (NULL == pDiv || NULL == ptCfg || ptCfg->refclk >= REF_CLK_MAX) {

-		return DRV_ERR_INVALID_PARAM;

-	}

-

-	switch (ptCfg->sample_rate) {

-	case 8000:

-		i2sClockSet = CLK_8000;

-		break;

-	case 11025:

-		i2sClockSet = CLK_11025;

-		break;

-	case 12000:

-		i2sClockSet = CLK_12000;

-		break;

-	case 16000:

-		i2sClockSet = CLK_16000;

-		break;

-	case 22050:

-		i2sClockSet = CLK_22050;

-		break;

-	case 24000:

-		i2sClockSet = CLK_24000;

-		break;

-	case 32000:

-		i2sClockSet = CLK_32000;

-		break;

-	case 44100:

-		i2sClockSet = CLK_44100;

-		break;

-	case 48000:

-		i2sClockSet = CLK_48000;

-		break;

-	case 64000:

-		i2sClockSet = CLK_64000;

-		break;

-	case 96000:

-		i2sClockSet = CLK_96000;

-		break;

-	default:

-		i2sClockSet = CLK_44100;

-		break;

-	}

-

-	switch (ptCfg->tTsWidth) {

-	case I2S_TS_16CYCLE:

-		i2sTsWidthSet = TS_16CYCLE;

-		break;

-	case I2S_TS_17CYCLE:

-		i2sTsWidthSet = TS_17CYCLE;

-		break;

-	case I2S_TS_18CYCLE:

-		i2sTsWidthSet = TS_18CYCLE;

-		break;

-	case I2S_TS_19CYCLE:

-		i2sTsWidthSet = TS_19CYCLE;

-		break;

-	case I2S_TS_20CYCLE:

-		i2sTsWidthSet = TS_20CYCLE;

-		break;

-	case I2S_TS_21CYCLE:

-		i2sTsWidthSet = TS_21CYCLE;

-		break;

-	case I2S_TS_22CYCLE:

-		i2sTsWidthSet = TS_22CYCLE;

-		break;

-	case I2S_TS_23CYCLE:

-		i2sTsWidthSet = TS_23CYCLE;

-		break;

-	case I2S_TS_24CYCLE:

-		i2sTsWidthSet = TS_24CYCLE;

-		break;

-	case I2S_TS_25CYCLE:

-		i2sTsWidthSet = TS_25CYCLE;

-		break;

-	case I2S_TS_26CYCLE:

-		i2sTsWidthSet = TS_26CYCLE;

-		break;

-	case I2S_TS_27CYCLE:

-		i2sTsWidthSet = TS_27CYCLE;

-		break;

-	case I2S_TS_28CYCLE:

-		i2sTsWidthSet = TS_28CYCLE;

-		break;

-	case I2S_TS_29CYCLE:

-		i2sTsWidthSet = TS_29CYCLE;

-		break;

-	case I2S_TS_30CYCLE:

-		i2sTsWidthSet = TS_30CYCLE;

-		break;

-	case I2S_TS_31CYCLE:

-		i2sTsWidthSet = TS_31CYCLE;

-		break;

-	case I2S_TS_32CYCLE:

-		i2sTsWidthSet = TS_32CYCLE;

-		break;

-	default:

-		i2sTsWidthSet = TS_16CYCLE;

-		break;

-	}

-

-	*pDiv = gI2sClkDiv[ptCfg->refclk][i2sClockSet][i2sTsWidthSet];

-

-	return DRV_SUCCESS;

-}

-

-/**

-* @brief	this function is use to close i2s divide frequency.

-*

-* @param	tId		i2s select the i2s0 or i2s1

-* @return	0-DRV_SUCCESS, other-error

-*/

-static SINT32 i2s_CloseClk(T_ZDrvI2S_Id i2sId)

-{

-	if (i2sId == I2S_1)

-		i2s_SetClkDiv(I2S0_PWRDN, 1);

-	else if (i2sId == I2S_2)

-		i2s_SetClkDiv(I2S1_PWRDN, 1);

-	return DRV_SUCCESS;

-}

-

-/**

-* @brief	this function is use to init i2s clock.

-*

-* @param	VOID

-* @return	0-DRV_SUCCESS, other-error

-*/

-

-static VOID i2s_ClkInit(VOID)

-{

-

-	unsigned int val;

-	if (s_bI2sClkInit) {

-		return;

-	}

-	if (g_voiceVar.isUseSlicCodec != 1) {

-		val = readl(I2S0_CRM_CLKSEL);

-		val &= ~(3 << 8);

-		writel(val, I2S0_CRM_CLKSEL);

-

-		val = readl(I2S0_CRM_CLKSEL);

-		val |= (3 << 8);

-		writel(val, I2S0_CRM_CLKSEL);

-

-		val = readl(I2S1_CRM_CLKSEL);

-		val &= ~(3 << 8);

-		writel(val, I2S1_CRM_CLKSEL);

-

-		val = readl(I2S1_CRM_CLKSEL);

-		val |= (3 << 8);

-		writel(val, I2S1_CRM_CLKSEL);

-		zOss_Sleep(1);

-	}

-

-	val = readl(I2S0_CRM_CLKSEL);

-	val |= ((3 << 0) | (3 << 10));

-	writel(val, I2S0_CRM_CLKSEL);

-

-	val = readl(I2S1_CRM_CLKSEL);

-	val |= ((3 << 0) | (3 << 10));

-	writel(val, I2S1_CRM_CLKSEL);

-

-	s_bI2sClkInit = TRUE;

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "i2s_ClkInit end s_bI2sClkInit=%d\r\n", s_bI2sClkInit);

-

-}

-#if 1

-/**

-* @brief	this function is use to disable i2s clock.

-*

-* @param	tId	   i2s select i2s0 or i2s1

-* @return	0-DRV_SUCCESS, other-error

-*/

-static VOID i2s_ClkDeinit(T_ZDrvI2S_Id tId)

-{

-

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "i2s_ClkDeinit %d", tId);

-	unsigned int val;

-	if (tId == I2S_1) {

-#ifndef CONFIG_SND_SOC_ES8312

-

-		val = readl(I2S0_CRM_CLKSEL);

-		val &= ~((3 << 0) | (3 << 10));

-		writel(val, I2S0_CRM_CLKSEL);

-

-		val = readl(I2S0_CRM_CLKSEL);

-		val &= ~(3 << 8);

-		writel(val, I2S0_CRM_CLKSEL);

-

-		val = readl(I2S0_CRM_CLKSEL);

-		val |= (3 << 8);

-		writel(val, I2S0_CRM_CLKSEL);

-#endif

-

-	} else {

-		val = readl(I2S1_CRM_CLKSEL);

-		val &= ~((3 << 0) | (3 << 10));

-		writel(val, I2S1_CRM_CLKSEL);

-

-		val = readl(I2S1_CRM_CLKSEL);

-		val &= ~(3 << 8);

-		writel(val, I2S1_CRM_CLKSEL);

-

-		val = readl(I2S1_CRM_CLKSEL);

-		val |= (3 << 8);

-		writel(val, I2S1_CRM_CLKSEL);

-	}

-

-	s_bI2sClkInit = FALSE;

-

-}

-

-/**

-* @brief	this function is use to disable i2s clock.

-*

-* @param	tId	   i2s select i2s0 or i2s1

-* @param	pDiv   pointer to T_I2s_ClkDiv

-* @return	0-DRV_SUCCESS, other-error

-*/

-static SINT32 i2s_SetClk(T_ZDrvI2S_Id tId, T_I2s_ClkDiv *pDiv)

-{

-

-	UINT32  AmrRegBit_ClkSel;

-	unsigned int val;

-

-#ifdef _USE_AUDIO_ON_7520V2

-	UINT32  AmrRegBit_ClkDiv;

-#endif

-

-	if (MAX_I2S_ID <= tId || NULL == pDiv) {

-		return DRV_ERR_INVALID_PARAM;

-	}

-

-	if (tId == I2S_1) {

-#if defined _USE_AUDIO_ON_7520V2

-

-		val = readl(I2S0_CRM_CLKSEL);

-		val &= 0xFFFFFFEF;

-		if (pDiv->refclk == REF_CLK26M) {

-			val |= 0x00000000;

-		} else { /*sel 104M or 26M clk for i2s ref clk*/

-			val |= 0x00000010;

-		}

-		writel(val, I2S0_CRM_CLKSEL);

-

-		AmrRegBit_ClkDiv = I2S0_CLKDIV;

-		AmrRegBit_ClkDiv &= 0x0FFFFFFF;

-		AmrRegBit_ClkDiv |= (pDiv->clkRatio) << 28;

-		I2S0_CLKDIV = AmrRegBit_ClkDiv;

-

-		i2s_SetClkDiv(I2S0_INTEGER_NUM, pDiv->INTEGERNUM);

-		i2s_SetClkDiv(I2S0_FRA_DIV, pDiv->FRACADDNUM);

-		i2s_SetClkDiv(I2S0_FRA_BASE, pDiv->FRACBASE);

-		i2s_SetClkDiv(I2S0_CLK_SEL_DIV, pDiv->CLKSELDIV);

-		i2s_SetClkDiv(I2S0_PWRDN, pDiv->PWRDN);

-

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "i2s_SetClk tId=%d,pDiv=%x! \r\n", tId, pDiv);

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "i2s_SetClk tId=%d,I2S0_CRM =%x! \r\n", tId, I2S0_CRM_CLKSEL);

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "i2s_SetClk tId=%d,I2S0_DIV =%x! \r\n", tId, I2S0_CLKDIV);

-#elif defined _USE_AUDIO_ON_7520V3

-

-		val = readl(I2S0_CRM_CLKSEL);

-		if ((pDiv->refclk == REF_CLK122M88) && (pDiv->i2sClockSet == CLK_8000)) {

-			val |= (3 << 16);

-		} else {

-			val |= (1 << 16);

-		}

-		if (pDiv->refclk == REF_CLK26M) {

-			val |= (0 << 4);

-		} else if (pDiv->refclk == REF_CLK122M88) {

-			val |= (1 << 4);

-		} else if (pDiv->refclk == REF_CLK104M) {

-			val |= (2 << 4);

-		}

-		writel(val, I2S0_CRM_CLKSEL);

-

-		val = readl(I2S0_CLKDIV_2);

-		val &= (~(0x1 << 16));

-		writel(val, I2S0_CLKDIV_2);

-

-		val = pDiv->FRACDIV1;

-		writel(val, I2S0_CLKDIV_1);

-		val = pDiv->FRACDIV2;

-		val |= (0x1 << 16);

-		writel(val, I2S0_CLKDIV_2);

-

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "[XK]i2s_SetClk i2s0 DIV(0x%x, 0x%x, 0x%x)LSP(0x%x, 0x%x, 0x%x)!\r\n", \

-		                  pDiv->refclk, pDiv->i2sClockSet, pDiv->i2sTsWidthSet, readl(I2S0_CRM_CLKSEL), readl(I2S0_CLKDIV_1), readl(I2S0_CLKDIV_2));

-#endif

-	} else { //klocwork 3 INVARIANT_CONDITION.GEN  (tId == I2S_2)

-#if defined _USE_AUDIO_ON_7520V2

-

-		val = readl(I2S1_CRM_CLKSEL);

-		val &= 0xFFFFFFEF;

-		if (pDiv->refclk == REF_CLK26M) {

-			val |= 0x00000000;

-		} else { /*sel 104M or 26M clk for i2s ref clk*/

-			val |= 0x00000010;

-		}

-		writel(val, I2S1_CRM_CLKSEL);

-

-		AmrRegBit_ClkDiv = I2S1_CLKDIV;

-		AmrRegBit_ClkDiv &= 0x0FFFFFFF;

-		AmrRegBit_ClkDiv |= (pDiv->clkRatio) << 28;

-		I2S1_CLKDIV = AmrRegBit_ClkDiv;

-

-		i2s_SetClkDiv(I2S1_INTEGER_NUM, pDiv->INTEGERNUM);

-		i2s_SetClkDiv(I2S1_FRA_DIV, pDiv->FRACADDNUM);

-		i2s_SetClkDiv(I2S1_FRA_BASE, pDiv->FRACBASE);

-		i2s_SetClkDiv(I2S1_CLK_SEL_DIV, pDiv->CLKSELDIV);

-		i2s_SetClkDiv(I2S1_PWRDN, pDiv->PWRDN);

-#elif defined _USE_AUDIO_ON_7520V3

-

-		val = readl(I2S1_CRM_CLKSEL);

-		if ((pDiv->refclk == REF_CLK122M88) && (pDiv->i2sClockSet == CLK_8000)) {

-			val |= (3 << 16);

-		} else {

-			val |= (1 << 16);

-		}

-		if (pDiv->refclk == REF_CLK26M) {

-			val |= (0 << 4);

-		} else if (pDiv->refclk == REF_CLK122M88) {

-			val |= (1 << 4);

-		} else if (pDiv->refclk == REF_CLK104M) {

-			val |= (2 << 4);

-		}

-		writel(val, I2S1_CRM_CLKSEL);

-

-		val = readl(I2S1_CLKDIV_2);

-		val &= (~(0x1 << 16));

-		writel(val, I2S1_CLKDIV_2);

-

-		val = pDiv->FRACDIV1;

-		writel(val, I2S1_CLKDIV_1);

-		val = pDiv->FRACDIV2;

-		val |= (0x1 << 16);

-		writel(val, I2S1_CLKDIV_2);

-

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "[XK]i2s_SetClk i2s1 DIV(0x%x, 0x%x, 0x%x)LSP(0x%x, 0x%x, 0x%x)!\r\n", \

-		                  pDiv->refclk, pDiv->i2sClockSet, pDiv->i2sTsWidthSet, readl(I2S1_CRM_CLKSEL), readl(I2S1_CLKDIV_1), readl(I2S1_CLKDIV_2));

-

-#endif

-

-	}

-	return DRV_SUCCESS;

-}

-#endif

-/**

-* @brief	this function is use to reset all device,contain i2s fifo and dma.

-*

-* @param	tId	   i2s select i2s0 or i2s1

-* @return	0-DRV_SUCCESS, other-error

-*/

-static SINT32 i2s_Reset(T_ZDrvI2S_Id tId)

-{

-	T_I2s_Reg *ptReg = NULL;

-

-	if (MAX_I2S_ID <= tId || NULL == s_i2sInstance[tId].ptDev) { //klocwork 3  INVARIANT_CONDITION.GEN  °ÑassertÒÆµ½ifÀïÃæ

-		zDrv_ASSERT(0);

-		return DRV_ERROR;

-	}

-

-	ptReg = s_i2sInstance[tId].ptDev->regs;

-

-	/* disable i2s; disable rx/tx; as slave: clock from external */

-	ptReg->timingCtrl = 0x0;

-

-	/* disable dma */

-	ptReg->fifoCtrl &= ~(I2S_TX_DMA_EN | I2S_RX_DMA_EN0);

-#ifdef _USE_AUDIO_ON_7520V2

-	/* reset tx/rx fifo */

-	ptReg->fifoCtrl = I2S_TX_FIFO_RST | I2S_RX_FIFO_RST;

-#endif

-	/* clear interrupt */

-	ptReg->intStatus = 0xffff;

-

-	/* disable interrupt */

-	ptReg->intEn = 0x0;

-

-	/* disable i2s; disable rx/tx; */

-	ptReg->processCtrl = 0x0;

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "i2s_Reset id=%d", tId);

-

-	return DRV_SUCCESS;

-}

-

-

-/**

-* @brief	this function is use to setup the tx buffer.

-*

-* @param	tId	   i2s select i2s0 or i2s1

-* @return	0-DRV_SUCCESS, other-error

-*/

-static SINT32 i2s_SetupTxBuf(T_ZDrvI2S_Id tId)

-{

-	SINT32 index = 0;

-	T_I2s_TxStream *i2sStrem = &s_i2sTxStream[tId];

-	if (MAX_I2S_ID <= tId) { //klocwork 3  INVARIANT_CONDITION.GEN  °ÑassertÒÆµ½ifÀïÃæ

-		zDrv_ASSERT(0);

-		return DRV_ERR_INVALID_PARAM;

-	}

-

-	i2sStrem->txBufferArray = (T_I2s_BufInfo *)zOss_Malloc(I2S_OUT_BUF_NUM * sizeof(T_I2s_BufInfo));

-	if (NULL == i2sStrem->txBufferArray) {

-		return DRV_ERR_MEM_ALLOC;

-	}

-

-	for (index = 0; index < I2S_OUT_BUF_NUM; index++) {

-		i2sStrem->txBufferArray[index].buf = s_txBufArray[tId][index];

-		i2sStrem->txBufferArray[index].i2sBufStatus = BUFFER_NULL;

-		//zOss_Memset(i2sStrem->txBufferArray[index].buf, 0, I2S_MAX_TX_BUF_SIZE);

-	}

-

-	return DRV_SUCCESS;

-}

-

-/**

-* @brief	this function is use to setup the rx buffer.

-*

-* @param	tId	   i2s select i2s0 or i2s1

-* @return	0-DRV_SUCCESS, other-error

-*/

-static SINT32 i2s_SetupRxBuf(T_ZDrvI2S_Id tId)

-{

-	SINT32 index = 0;

-	T_I2s_RxStream *i2sStrem = &s_i2sRxStream[tId];

-

-	if (MAX_I2S_ID <= tId) { //klocwork 3  INVARIANT_CONDITION.UNREACH  °ÑassertÒÆµ½ifÀïÃæ

-		zDrv_ASSERT(0) ;

-		return DRV_ERR_INVALID_PARAM;

-	}

-

-	i2sStrem->rxBufferArray = (T_I2s_BufInfo *)zOss_Malloc(I2S_OUT_BUF_NUM * sizeof(T_I2s_BufInfo));

-	if (NULL == i2sStrem->rxBufferArray) {

-		return DRV_ERR_MEM_ALLOC;

-	}

-

-	for (index = 0; index < I2S_OUT_BUF_NUM; index++) {

-		i2sStrem->rxBufferArray[index].buf = s_rxBufArray[tId][index];

-		i2sStrem->rxBufferArray[index].i2sBufStatus = BUFFER_NULL;

-		//zOss_Memset(i2sStrem->rxBufferArray[index].buf, 0, I2S_MAX_RX_BUF_SIZE);

-	}

-

-	i2sStrem->currentRxBuf = NULL;

-

-	return DRV_SUCCESS;

-}

-

-/**

-* @brief	config i2s.

-*

-* @param	tId	   	i2s select i2s0 or i2s1

-* @param	ptCfg	   pointer to i2s config param

-* @return	0-DRV_SUCCESS, other-error

-*/

-static SINT32 i2s_Configure(T_ZDrvI2S_Id tId, T_ZDrvI2S_Cfg *ptCfg)

-{

-	T_I2s_Instance *ptInstance = NULL;

-	T_I2s_Reg *ptReg = NULL;

-	SINT32 ret = DRV_SUCCESS;

-

-	if (MAX_I2S_ID <= tId || NULL == ptCfg) { //klocwork 3  INVARIANT_CONDITION.UNREACH  °ÑassertÒÆµ½ifÀïÃæ

-		zDrv_ASSERT(0);

-		return DRV_ERR_INVALID_PARAM;

-	}

-

-	ptInstance = &s_i2sInstance[tId];

-	ptReg = ptInstance->ptDev->regs;

-

-	ret = i2s_SetTiming(ptReg, ptCfg);

-	if (ret != DRV_SUCCESS) {

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "i2s_Configure  i2s_SetTiming ret=0x%x", ret);

-		return DRV_ERROR;

-	}

-

-	if (ptCfg->bMaster) {

-		ret = i2s_SetPdiv(tId, ptCfg);

-		if (ret != DRV_SUCCESS) {

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "i2s_Configure  i2s_SetPdiverr ret=0x%x", ret);

-			return DRV_ERROR;

-		}

-		ptReg->timingCtrl |= I2S_MASTER_EN;   /* as master */

-	} else {

-		ptReg->timingCtrl &= ~I2S_MASTER_EN;  /* as slave */

-	}

-

-	/*transmit data at negative edge or at positive edge*/

-	if (ptCfg->tTansmit_edge == TRANS_POSITIVE_NEGATIVE) {

-		ptReg->timingCtrl |= I2S_CLK_EDGE_SEL;   /*transmit data at negative edge,so recieve data at positive edge*/

-	} else if (ptCfg->tTansmit_edge == TRANS_NEGATIVE_POSITIVE) {

-		ptReg->timingCtrl &= ~I2S_CLK_EDGE_SEL;

-	}

-	/*test mode*/

-	if (ptCfg->tTestMode == I2S_NORMAL_MODE) {

-		ptReg->timingCtrl &= ~I2S_TEST_MODE;

-	} else if (ptCfg->tTestMode == I2S_LOOPBACK_MODE) {

-		ptReg->timingCtrl |= I2S_TEST_MODE;

-	}

-

-	/*data align mode*/

-	if (ptCfg->tTransMode < MAX_DATA_ALIGN_MODE) {

-		ptReg->timingCtrl &= ~ I2S_ALIGN_MODE(3);  /*clear 0*/

-		ptReg->timingCtrl |=  I2S_ALIGN_MODE(ptCfg->tTransMode);

-	} else {

-		return DRV_ERR_INVALID_PARAM;

-	}

-

-	if (MAX_I2S_DATA_FMT <= ptCfg->tDataFmt) { //klocwork 3  INVARIANT_CONDITION.UNREACH  °ÑassertÒÆµ½ifÀïÃæ

-		zDrv_ASSERT(0);

-		return DRV_ERR_INVALID_PARAM;

-	} else {

-		ptReg->timingCtrl &= ~ I2S_DATA_SIZE(0x1f);

-		ptReg->timingCtrl |= I2S_DATA_SIZE(ptCfg->tDataFmt);

-	}

-

-	if (MAX_I2S_TS_WIDTH <= ptCfg->tTsWidth) { //klocwork 3  INVARIANT_CONDITION.UNREACH  °ÑassertÒÆµ½ifÀïÃæ

-		zDrv_ASSERT(0);

-		return DRV_ERR_INVALID_PARAM;

-	} else {

-		ptReg->timingCtrl &= ~ I2S_TS_WIDTH(0x1f);

-		ptReg->timingCtrl |= I2S_TS_WIDTH(ptCfg->tTsWidth);  /*I2S_TS_WIDTH*/

-	}

-

-	if (ptCfg->tPcmFsync == PCM_SHORT_FSYNC) {

-		ptReg->timingCtrl &= ~I2S_LONG_FSYNC;

-		ptCfg->tPcmFsynLen = PCM_FSYNC_LENGTH_1CLK;

-	} else if (ptCfg->tPcmFsync ==  PCM_LONG_FSYNC) {

-		ptReg->timingCtrl |= I2S_LONG_FSYNC;

-		ptCfg->tPcmFsynLen = MAX_PCM_FSYNC; /*no meaning,for compatible	;7520 1ts*/

-	} else { //klocwork 3  INVARIANT_CONDITION.UNREACH  °ÑassertÒÆµ½ifÀïÃæ

-		zDrv_ASSERT(0);

-		return DRV_ERR_INVALID_PARAM;

-	}

-

-	if (ptCfg->tTdmExtCycle == TDM_NO_EXTRA_CYCLE) {

-		ptReg->timingCtrl &= ~I2S_EXTRA_CYCLE;

-

-	} else if (ptCfg->tTdmExtCycle == TDM_TEAK_EXTRA_CYCLE) {

-		ptReg->timingCtrl |= I2S_EXTRA_CYCLE;

-	} else { //klocwork 3  INVARIANT_CONDITION.UNREACH  °ÑassertÒÆµ½ifÀïÃæ

-		zDrv_ASSERT(0);

-		return DRV_ERR_INVALID_PARAM;

-	}

-

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "i2s_Configure  success");

-	return DRV_SUCCESS;

-}

-

-/**

-* @brief	clean Tx Resource.

-*

-* @param	tId		i2s select i2s0 or i2s1

-* @return	0-DRV_SUCCESS, other-error

-*/

-static SINT32 i2s_CleanTxResource(T_ZDrvI2S_Id tId)

-{

-	SINT32 ret = DRV_SUCCESS;

-

-	ret = i2s_QueueDestory(&s_i2sTxStream[tId].txQueue);

-	if (s_i2sTxStream[tId].txBufferArray != NULL) {

-		zOss_Free(s_i2sTxStream[tId].txBufferArray);

-		s_i2sTxStream[tId].txBufferArray = NULL;

-	}

-

-	return ret;

-}

-

-/**

-* @brief	clean Rx Resource.

-*

-* @param	tId		i2s select i2s0 or i2s1

-* @return	0-DRV_SUCCESS, other-error

-*/

-static SINT32 i2s_CleanRxResource(T_ZDrvI2S_Id tId)

-{

-	SINT32 ret = DRV_SUCCESS;

-

-	ret = i2s_QueueDestory(&s_i2sRxStream[tId].rxQueue);

-	if (s_i2sRxStream[tId].rxBufferArray != NULL) {

-		zOss_Free(s_i2sRxStream[tId].rxBufferArray);

-		s_i2sRxStream[tId].rxBufferArray = NULL;

-	}

-

-	return ret;

-}

-

-/**

-* @brief	Tx Check i2s parameter config.

-*

-* @param	tId	 	i2s select i2s0 or i2s1

-* @param	ptCfg	pointer to i2s config

-* @return	0-DRV_SUCCESS, other-error

-*/

-

-static SINT32 i2s_TxCheckState(T_ZDrvI2S_Id tId, T_ZDrvI2S_Cfg *ptCfg)

-{

-	SINT32 ret = DRV_SUCCESS;

-	T_I2s_Instance *ptInstance = &s_i2sInstance[tId];

-

-	if (MAX_I2S_ID <= tId || NULL == ptCfg) { //klocwork 3  INVARIANT_CONDITION.UNREACH  °ÑassertÒÆµ½ifÀïÃæ

-		zDrv_ASSERT(0);

-		return DRV_ERR_INVALID_PARAM;

-	}

-

-	if ((ptInstance->i2sStatus != I2S_OPEN) && (ptInstance->i2sStatus != I2S_RECORD_INUSE)) {

-		return DRV_ERR_NOT_OPENED;

-	}

-

-	if (ptInstance->i2sStatus != I2S_RECORD_INUSE) {

-		ptInstance->tCfg = *ptCfg;

-		ret = i2s_Configure(tId, ptCfg);

-		if (ret != DRV_SUCCESS) {

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "i2s_TxCheckState i2s_Configure err ret=0x%x", ret);

-			return DRV_ERROR;

-		}

-	} else {

-		if ((ptCfg->bMaster != ptInstance->tCfg.bMaster) || (ptCfg->sample_rate != ptInstance->tCfg.sample_rate) || (ptCfg->tClkMode != ptInstance->tCfg.tClkMode) ||

-		    (ptCfg->tTansmit_edge != ptInstance->tCfg.tTansmit_edge) || (ptCfg->tTestMode != ptInstance->tCfg.tTestMode) || (ptCfg->tTransMode != ptInstance->tCfg.tTransMode)) {

-			return DRV_ERR_INVALID_PARAM;

-		}

-

-		if (ptCfg->tClkMode == I2S_TIME_MODE) {

-			if ((ptCfg->tDataFmt != ptInstance->tCfg.tDataFmt) || (ptCfg->tTsWidth != ptInstance->tCfg.tTsWidth) ||

-			    (ptCfg->tTrackFmt != ptInstance->tCfg.tTrackFmt)) {

-				return DRV_ERR_INVALID_PARAM;

-			}

-		}

-		if (ptCfg->tClkMode == PCM_TIME_MODE) {

-			if ((ptCfg ->tPcmFirstBit != ptInstance ->tCfg.tPcmFirstBit) || (ptCfg ->tPcmFsynLen != ptInstance ->tCfg.tPcmFsynLen) ||

-			    (ptCfg ->tPcmMode != ptInstance ->tCfg.tPcmMode) || (ptCfg ->tPcmSlotNum != ptInstance ->tCfg.tPcmSlotNum)) {

-				return DRV_ERR_INVALID_PARAM;

-			}

-		}

-	}

-

-	return DRV_SUCCESS;

-}

-

-/**

-* @brief	Rx Check i2s parameter config.

-*

-* @param	tId	 	i2s select i2s0 or i2s1

-* @param	ptCfg	pointer to i2s config

-* @return	0-DRV_SUCCESS, other-error

-*/

-

-static SINT32 i2s_RxCheckState(T_ZDrvI2S_Id tId, T_ZDrvI2S_Cfg *ptCfg)

-{

-	SINT32 ret = DRV_SUCCESS;

-	T_I2s_Instance *ptInstance = &s_i2sInstance[tId];

-

-	if (MAX_I2S_ID <= tId || NULL == ptCfg) { //klocwork 3  INVARIANT_CONDITION.UNREACH  °ÑassertÒÆµ½ifÀïÃæ

-		zDrv_ASSERT(0);

-		return DRV_ERR_INVALID_PARAM;

-	}

-	/* clear interrupt. must disable interrupt or i2s at first */

-	if ((ptInstance->i2sStatus != I2S_OPEN) && (ptInstance->i2sStatus != I2S_PLAY_INUSE)) {

-		return DRV_ERR_NOT_OPENED;

-	}

-

-	if (ptInstance->i2sStatus != I2S_PLAY_INUSE) {

-		ptInstance->tCfg = *ptCfg;

-		ret = i2s_Configure(tId, ptCfg);

-		if (ret != DRV_SUCCESS) {

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "i2s_RxCheckState  failed ret is %d \r\n", ret);

-			return DRV_ERROR;

-		}

-	} else {

-		if ((ptCfg->bMaster != ptInstance->tCfg.bMaster) || (ptCfg->sample_rate != ptInstance->tCfg.sample_rate) ||

-		    (ptCfg->tClkMode != ptInstance->tCfg.tClkMode) || (ptCfg->tTansmit_edge != ptInstance->tCfg.tTansmit_edge) ||

-		    (ptCfg->tTestMode != ptInstance->tCfg.tTestMode) || (ptCfg->tTransMode != ptInstance->tCfg.tTransMode)) {

-			return DRV_ERR_INVALID_PARAM;

-		}

-

-		if (ptCfg->tClkMode == I2S_TIME_MODE) {

-			if ((ptCfg->tDataFmt != ptInstance->tCfg.tDataFmt) || (ptCfg->tTsWidth != ptInstance->tCfg.tTsWidth) ||

-			    (ptCfg->tTrackFmt != ptInstance->tCfg.tTrackFmt)) {

-				return DRV_ERR_INVALID_PARAM;

-			}

-		}

-

-		if (ptCfg->tClkMode == PCM_TIME_MODE) {

-			if ((ptCfg ->tPcmFirstBit != ptInstance ->tCfg.tPcmFirstBit) || (ptCfg ->tPcmFsynLen != ptInstance ->tCfg.tPcmFsynLen) ||

-			    (ptCfg ->tPcmMode != ptInstance ->tCfg.tPcmMode) || (ptCfg ->tPcmSlotNum != ptInstance ->tCfg.tPcmSlotNum)) {

-				return DRV_ERR_INVALID_PARAM;

-			}

-		}

-	}

-

-	return DRV_SUCCESS;

-}

-

-/**

-* @brief	Initial the tx common parameter.

-*

-* @param	tId	 	i2s select i2s0 or i2s1

-* @param	params	pointer to i2s params

-* @return	0-DRV_SUCCESS, other-error

-*/

-static SINT32 i2s_TxComInit(T_ZDrvI2S_Id tId, T_ZDrvI2s_Params *params)

-{

-	T_I2s_TxStream *txStream = &s_i2sTxStream[tId];

-	T_I2s_Instance *ptInstance = &s_i2sInstance[tId];

-	T_I2s_Reg *ptReg = NULL;

-	SINT32 ret = DRV_SUCCESS;

-	UINT32 reg_val;

-

-	if ((MAX_I2S_ID <= tId) || (NULL == params)) { //klocwork 3  INVARIANT_CONDITION.UNREACH  °ÑassertÒÆµ½ifÀïÃæ

-		zDrv_ASSERT(0);

-		return DRV_ERR_INVALID_PARAM;

-	}

-

-	ptReg = ptInstance->ptDev->regs;

-	txStream->Transing = FALSE;

-	txStream->pauseFlag = FALSE;

-	txStream->txTransmit = NULL;

-	txStream->channel = params->channel;

-	txStream->txLen = params->buffersize;

-	txStream->p_cb = params->p_cb;

-

-	txStream->txRdIdx = 0;

-	txStream->txWrIdx = 0;

-

-	s_txBufArray[tId][0] = (UINT8 *)(i2sDmaState[tId][I2S_TX].dma_viraddr);

-	s_txBufArray[tId][1] = s_txBufArray[tId][0] + txStream->txLen;

-	s_txBufArray[tId][2] = s_txBufArray[tId][1] + txStream->txLen;

-

-#ifdef _USE_AUDIO_ON_7520V2

-	ptReg->fifoCtrl |= I2S_TX_FIFO_RST;

-#endif

-	//ptReg->fifoCtrl |= I2S_TFTH(30);    /*DMA MODE is also necessry*/

-	reg_val = ptReg->fifoCtrl;

-	reg_val &= 0xffffe0ff;

-	reg_val |= I2S_TFTH(15);

-	ptReg->fifoCtrl = reg_val;

-

-	//ptReg->fifoCtrl |= I2S_TFTH(16);    /*DMA MODE is also necessry*/

-

-	ret = i2s_SetupTxBuf(tId);

-	ret += i2s_QueueInit(&(txStream->txQueue));

-	if (ret != DRV_SUCCESS) {

-		i2s_CleanTxResource(tId);

-		return DRV_ERROR;

-	}

-

-	i2s_txsem_count_Init(tId);

-	return DRV_SUCCESS;

-}

-

-/**

-* @brief	Initial the rx common parameter.

-*

-* @param	tId	 	i2s select i2s0 or i2s1

-* @param	params	pointer to i2s params

-* @return	0-DRV_SUCCESS, other-error

-*/

-

-static SINT32 i2s_RxComInit(T_ZDrvI2S_Id tId, T_ZDrvI2s_Params *params)

-{

-	T_I2s_RxStream *rxStream = &s_i2sRxStream[tId];

-	T_I2s_Instance *ptInstance = &s_i2sInstance[tId];

-	T_I2s_Reg *ptReg = NULL;

-	SINT32 ret = DRV_SUCCESS;

-	UINT32 reg_val;

-

-	if (MAX_I2S_ID <= tId || NULL == params) { //klocwork 3  INVARIANT_CONDITION.UNREACH  °ÑassertÒÆµ½ifÀïÃæ

-		zDrv_ASSERT(0);

-		return DRV_ERR_INVALID_PARAM;

-	}

-

-	rxStream->rxLen = params->buffersize;

-

-	s_rxBufArray[tId][0] = (UINT8 *)(i2sDmaState[tId][I2S_RX].dma_viraddr);

-	s_rxBufArray[tId][1] = s_rxBufArray[tId][0] + rxStream->rxLen;

-	s_rxBufArray[tId][2] = s_rxBufArray[tId][1] + rxStream->rxLen;

-

-	ptReg = ptInstance->ptDev->regs;

-

-	reg_val = ptReg->fifoCtrl;

-	reg_val &= 0xffe0ffff;

-	reg_val |= I2S_RFTH(7);

-	ptReg->fifoCtrl = reg_val;

-

-	ret = i2s_SetupRxBuf(tId);

-	ret += i2s_QueueInit(&(rxStream->rxQueue));

-	if (ret != DRV_SUCCESS) {

-		i2s_CleanRxResource(tId);

-		return DRV_ERROR;

-	}

-

-	i2s_rxsem_count_Init(tId);

-	//rxStream->rxIdx = 0;

-	rxStream->rxRdIdx = 0;

-	rxStream->rxWrIdx = 0;

-

-//	rxStream->rxBufferArray[rxStream->rxIdx].i2sBufStatus = BUFFER_WRITE;

-//	rxStream->currentRxBuf = &rxStream->rxBufferArray[rxStream->rxIdx];

-

-	return DRV_SUCCESS;

-}

-

-/**

-* @brief	Initial the tx interrupt common parameter.

-*

-* @param	tId	 	i2s select i2s0 or i2s1

-* @return	0-DRV_SUCCESS, other-error

-*/

-static SINT32 i2s_IntTxInit(T_ZDrvI2S_Id tId)

-{

-	T_I2s_Instance *ptInstance = &s_i2sInstance[tId];

-	T_I2s_TxStream *txStream = &s_i2sTxStream[tId];

-	T_I2s_Reg *ptReg = NULL;

-

-	if (MAX_I2S_ID <= tId) { //klocwork 3  INVARIANT_CONDITION.UNREACH  °ÑassertÒÆµ½ifÀïÃæ

-		zDrv_ASSERT(0);

-		return DRV_ERR_INVALID_PARAM;

-	}

-

-	ptReg = ptInstance->ptDev->regs;

-	txStream->txTransmit = i2s_IntTx;

-	ptReg->intEn &= ~(I2S_TX_TRIG_INT_EN | I2S_TX_UNDER_INT_EN);  /* disable tx interrupt */

-	ptReg->intStatus |= (I2S_TX_TRIG_INT | I2S_TX_UNDER_INT);    /* clear interrupt. must disable interrupt or i2s at first */

-

-	return DRV_SUCCESS;

-}

-

-/**

-* @brief	Initial the rx interrupt common parameter.

-*

-* @param	tId	 	i2s select i2s0 or i2s1

-* @return	0-DRV_SUCCESS, other-error

-*/

-static SINT32 i2s_IntRxInit(T_ZDrvI2S_Id tId)

-{

-#if 0

-	T_I2s_Instance *ptInstance = &s_i2sInstance[tId];

-	T_I2s_RxStream *rxStream = &s_i2sRxStream[tId];

-	T_I2s_Reg *ptReg = NULL;

-

-	zDrv_ASSERT(tId < MAX_I2S_ID);

-	if (MAX_I2S_ID <= tId) {

-		return DRV_ERR_INVALID_PARAM;

-	}

-

-	ptReg = ptInstance->ptDev->regs;

-

-	ptReg->intStatus |= (I2S_RX_TRIG_INT | I2S_RX_OVER_INT);          /* clear interrupt */

-	ptReg->intEn &= ~(I2S_RX_TRIG_INT_EN | I2S_RX_OVER_INT_EN);        /* disable rx interrupt */

-

-	s_rxBuf[tId] = (UINT16 *)rxStream->currentRxBuf->buf;

-	s_rxLen[tId] = rxStream->rxLen / sizeof(UINT16);

-

-	rxStream->rxIdx++;

-	/* enable rx interrupt */

-	ptReg->intEn |= I2S_RX_TRIG_INT_EN;       /* enable rx interrupt */

-

-	if (I2S_INTCTRL_TEST_MODE == TRUE) {

-		ptReg->intEn |= I2S_RX_OVER_INT_EN; /* enable rx over interrupt */

-	}

-#endif

-	return DRV_SUCCESS;

-}

-

-/**

-* @brief	interrupt handle while in int mode.

-*

-* @param	tId	 	i2s select i2s0 or i2s1

-* @return	0-DRV_SUCCESS, other-error

-*/

-

-static VOID i2s_IntIsr(T_ZDrvI2S_Id tId)

-{

-	T_I2s_Reg *ptReg = NULL;

-	T_I2s_TxStream *i2sTxStream = NULL;

-	//const UINT32 uiIntStatus = 0;

-	UINT32 channLable = 0;

-

-	if (MAX_I2S_ID <= tId) { //klocwork 3  INVARIANT_CONDITION.UNREACH  delete assert

-		//zDrv_ASSERT(0);

-		return;

-	}

-	ptReg = s_i2sInstance[tId].ptDev->regs;

-	i2sTxStream = &s_i2sTxStream[tId];

-	const UINT32 uiIntStatus = ptReg->intStatus;

-

-	if (I2S_INTCTRL_TEST_MODE) { //klocwork 3  INVARIANT_CONDITION.GEN

-		if (uiIntStatus & I2S_TX_UNDER_INT) {       /* tx err */

-			ptReg->intStatus |= I2S_TX_UNDER_INT;   /* clear interrupt */

-		}

-		if (uiIntStatus & I2S_RX_OVER_INT) {         /* rx err */

-			ptReg->intStatus |= I2S_RX_OVER_INT;     /* clear interrupt */

-		}

-	}

-

-	if (uiIntStatus & I2S_TX_TRIG_INT) {        /* playing */

-		ptReg->intEn &= ~I2S_TX_TRIG_INT_EN;  /* disable tx interrupt */

-		ptReg->intStatus |= I2S_TX_TRIG_INT;    /* clear interrupt. must disable interrupt or i2s at first */

-		channLable = (i2sTxStream->channel == AUDIO_DUAL_CHANNEL) ? 2 : 1;

-		i2s_IntTxWriteFifo(tId, channLable);

-		if (0 == s_txLen[tId]) {

-			i2s_IntTxChangeBuf(tId);

-			return;                  /* while no data trans,then return and not enable the interrupt,so the interrupt will not generate*/

-		}

-		ptReg->intEn |= I2S_TX_TRIG_INT_EN ; /* enable tx interrupt */

-		if (I2S_INTCTRL_TEST_MODE) { //klocwork 3  INVARIANT_CONDITION.GEN

-			ptReg->intEn |= I2S_TX_UNDER_INT_EN; /* enable tx interrupt */

-		}

-	}

-

-	if (uiIntStatus & I2S_RX_TRIG_INT) {              /* recording */

-		ptReg->intEn &= ~I2S_RX_TRIG_INT_EN;        /* disable rx interrupt */

-		ptReg->intStatus |= I2S_RX_TRIG_INT;          /* clear interrupt */

-		i2s_IntRxWriteBuf(tId);

-

-		if (0 == s_rxLen[tId]) {

-			i2s_IntRxChangeBuf(tId);

-		}

-		ptReg->intEn |= I2S_RX_TRIG_INT_EN;        /* enable rx interrupt */

-		if (I2S_INTCTRL_TEST_MODE) { //klocwork 3  INVARIANT_CONDITION.GEN

-			ptReg->intEn |= I2S_RX_OVER_INT_EN; /* enable tx interrupt */

-		}

-	}

-

-	if (uiIntStatus & I2S_TX_UNDER_INT) {       /* tx err */

-		ptReg->intStatus |= I2S_TX_UNDER_INT;   /* clear interrupt */

-#ifdef _USE_AUDIO_ON_7520V2

-		ptReg->fifoCtrl |= I2S_TX_FIFO_RST;          /* reset tx fifo */

-#endif

-	}

-

-	if (uiIntStatus & I2S_RX_OVER_INT) {         /* rx err */

-		ptReg->intStatus |= I2S_RX_OVER_INT;     /* clear interrupt */

-#ifdef _USE_AUDIO_ON_7520V2

-		ptReg->fifoCtrl |= I2S_RX_FIFO_RST;           /* reset rx fifo */

-#endif

-	}

-}

-

-/**

-* @brief	Tx Write fifo while in int mode.

-*

-* @param	tId	 	i2s select i2s0 or i2s1

-* @param	chanlab	 	chanlab

-* @return	0-DRV_SUCCESS, other-error

-*/

-static VOID i2s_IntTxWriteFifo(T_ZDrvI2S_Id tId, UINT32 chanlab)

-{

-	UINT32 uiHdledLen = I2S_TXFL_VAL;

-	T_I2s_Reg *ptReg = NULL;

-	UINT32 chanlable = 0;

-

-	if (MAX_I2S_ID <= tId) { //klocwork 3  INVARIANT_CONDITION.UNREACH  delete assert

-		//	zDrv_ASSERT(0);

-		return;/* while no data trans,then return and not enable the interrupt,so the interrupt will not generate*/

-	}

-	ptReg = s_i2sInstance[tId].ptDev->regs;

-	chanlable = 2;

-

-	if (s_txLen[tId] > I2S_TXFL_VAL * chanlable) {

-		s_txLen[tId] -= uiHdledLen * chanlable;

-		while (0 < uiHdledLen) {

-			ptReg->data = *(s_txBuf[tId] + (chanlable - 1)) | *s_txBuf[tId] << 16;

-			s_txBuf[tId] += chanlable;

-			uiHdledLen--;

-		}

-	} else {

-		while (0 < s_txLen[tId]) {

-			ptReg->data = *(s_txBuf[tId] + (chanlable - 1)) | *s_txBuf[tId] << 16;

-			s_txBuf[tId] += chanlable;

-			s_txLen[tId] -= chanlable;

-		}

-	}

-}

-

-/**

-* @brief	Rx Write Buffer while in int mode.

-*

-* @param	tId	 	i2s select i2s0 or i2s1

-* @return	0-DRV_SUCCESS, other-error

-*/

-static VOID i2s_IntRxWriteBuf(T_ZDrvI2S_Id tId)

-{

-	T_I2s_Reg *ptReg = NULL;

-	UINT32 uiRxledLen = I2S_RXFL_VAL;

-	UINT32 data = 0;

-

-	if (MAX_I2S_ID <= tId) { //klocwork 3  INVARIANT_CONDITION.UNREACH  delete assert

-		//	zDrv_ASSERT(0);

-		return;

-	}

-	ptReg = s_i2sInstance[tId].ptDev->regs;

-

-	if (s_rxLen[tId] > uiRxledLen * 2) {

-		s_rxLen[tId] -= uiRxledLen * 2;

-		while (0 < uiRxledLen) {

-			data = ptReg->data;

-			*(s_rxBuf[tId] + 1) = data & 0xffff;

-			*s_rxBuf[tId] = (data >> 16) & 0xffff;

-			s_rxBuf[tId] += 2;

-			uiRxledLen--;

-		}

-	} else {

-		while (0 < s_rxLen[tId]) {

-			data = ptReg->data;

-			*(s_rxBuf[tId] + 1) = data & 0xffff;

-			*s_rxBuf[tId] = (data >> 16) & 0xffff;

-			s_rxBuf[tId] += 2;

-			s_rxLen[tId] -= 2;

-		}

-	}

-}

-

-/**

-* @brief	Rx write Buffer while in int mode.

-*

-* @param	tId	 	i2s select i2s0 or i2s1

-* @return	0-DRV_SUCCESS, other-error

-*/

-static VOID i2s_IntTxChangeBuf(T_ZDrvI2S_Id tId)

-{

-	T_I2s_TxStream *i2sTxStream = NULL;

-	T_I2s_QueueNode *queueNode = NULL;

-	UINT32 sem_cnt = 0;

-	SINT32 ret = DRV_SUCCESS;

-

-	if (MAX_I2S_ID <= tId) { //klocwork 3  INVARIANT_CONDITION.UNREACH  delete assert

-		//	zDrv_ASSERT(0);

-		return;

-	}

-	i2sTxStream = &s_i2sTxStream[tId];

-

-	if (DRV_SUCCESS == i2s_ChangeTxBufferStatus(tId, BUFFER_READ, BUFFER_NULL)) { /*change the BUF state from READ to FULL after the data of the buf is read over,then release the sem*/

-		zOss_PutSemaphore(i2sTxStream->txSem);

-	}

-

-	if (!(i2s_IsQueueEmpty(&i2sTxStream->txQueue))) {

-		if (i2sTxStream->pauseFlag == FALSE) {

-			ret = i2s_QueueGet(&i2sTxStream->txQueue, &queueNode);

-			if (queueNode != NULL) {

-				ret += i2s_UpdateTxBufferStatus(tId, queueNode->pBuf, BUFFER_READ);

-			}

-			//		ret += i2sTxStream->txTransmit(tId, queueNode->pBuf, queueNode->len);

-			if (ret != DRV_SUCCESS) {

-				return;

-			}

-			i2sTxStream->Transing = TRUE;

-		} else {

-			i2sTxStream->Transing = FALSE;

-			return;

-		}

-	} else {

-		i2sTxStream->Transing = FALSE;

-		sem_cnt = zOss_GetSemaphoreCount(i2sTxStream->txSem);

-		if (sem_cnt == I2S_OUT_BUF_NUM) {

-			if (i2sTxStream->p_cb != NULL) {

-				i2sTxStream->p_cb();

-			}

-		}

-	}

-}

-

-/**

-* @brief	Rx change Buffer while in int mode.

-*

-* @param	tId	 	i2s select i2s0 or i2s1

-* @return	0-DRV_SUCCESS, other-error

-*/

-static VOID i2s_IntRxChangeBuf(T_ZDrvI2S_Id tId)

-{

-#if 0

-	T_I2s_RxStream *i2sRxStream = &s_i2sRxStream[tId];

-

-	zDrv_ASSERT(tId < MAX_I2S_ID);

-	if (MAX_I2S_ID <= tId) {

-		return;

-	}

-

-	if (i2sRxStream->rxBufferArray[i2sRxStream->rxIdx].i2sBufStatus == BUFFER_NULL) {

-		i2s_QueuePut(&(i2sRxStream->rxQueue), (UINT16 *)i2sRxStream->currentRxBuf->buf, (i2sRxStream->rxLen / sizeof(UINT16)));   /*ÉÏ´ÎÊÕµ½µÄÊý¾Ý*/

-		i2s_UpdateRxBufferStatus(tId, (UINT16*)i2sRxStream->currentRxBuf->buf, BUFFER_FULL);

-		zOss_PutSemaphore(i2sRxStream->rxSem);

-		i2sRxStream->rxBufferArray[i2sRxStream->rxIdx].i2sBufStatus = BUFFER_WRITE;

-		i2sRxStream->currentRxBuf = &i2sRxStream->rxBufferArray[i2sRxStream->rxIdx];

-		s_rxBuf[tId] = (UINT16 *)i2sRxStream->currentRxBuf->buf;

-		s_rxLen[tId] = i2sRxStream->rxLen / sizeof(UINT16);

-		i2sRxStream->rxIdx = (i2sRxStream->rxIdx + 1) % I2S_OUT_BUF_NUM;         /* use the buf in turn*/

-	} else {                   /*if the next buf is bing used£tthen rewrite the buf*/

-		s_rxBuf[tId] = (UINT16 *)i2sRxStream->currentRxBuf->buf;

-		s_rxLen[tId] = i2sRxStream->rxLen / sizeof(UINT16);

-	}

-#endif

-}

-

-/**

-* @brief	i2s1 isr.

-*

-* @param	VOID

-* @return	0-DRV_SUCCESS, other-error

-*/

-static VOID isr_i2s1(VOID)

-{

-	i2s_IntIsr(I2S_1);

-}

-

-/**

-* @brief	i2s2 isr.

-*

-* @param	VOID

-* @return	0-DRV_SUCCESS, other-error

-*/

-static VOID isr_i2s2(VOID)

-{

-	i2s_IntIsr(I2S_2);

-}

-

-/**

-* @brief	i2s interrupt enable.

-*

-* @param	tid		i2s select

-* @param	pBuf	buffer pointer

-* @param	uiLen	buffer length

-* @return	0-DRV_SUCCESS, other-error

-*/

-static SINT32 i2s_IntTx(T_ZDrvI2S_Id tId, const UINT16 *pBuf, UINT32 uiLen)

-{

-	T_I2s_Instance *ptInstance = NULL;

-	T_I2s_Reg *ptReg = NULL;

-

-	/*klocwork 3  INVARIANT_CONDITION.UNREACH  °ÑassertÒÆµ½ifÀïÃæ*/

-	if (MAX_I2S_ID <= tId || NULL == pBuf || 0 == uiLen || I2S_MAX_TX_BUF_SIZE < uiLen) {

-		zDrv_ASSERT(0);

-		return DRV_ERR_INVALID_PARAM;

-	}

-

-	ptInstance = &s_i2sInstance[tId];

-	if ((ptInstance->i2sStatus != I2S_PLAY_INUSE) && (ptInstance->i2sStatus != I2S_BOTH_INUSE)) {

-		return DRV_ERR_NOT_STARTED;

-	}

-

-	s_txBuf[tId] = pBuf;

-	s_txLen[tId] = uiLen;

-

-	ptReg = ptInstance->ptDev->regs;

-

-	ptReg->fifoCtrl |= I2S_TFTH(16);    /*DMA MODE is also necessry*/

-	/* clear tx interrupt */

-	ptReg->intStatus |= (I2S_TX_TRIG_INT | I2S_TX_UNDER_INT);    /* clear interrupt. must disable interrupt or i2s at first */

-	ptReg->intEn |= I2S_TX_TRIG_INT_EN;        /* enable tx interrupt */

-	if (I2S_INTCTRL_TEST_MODE) { //klocwork 3  INVARIANT_CONDITION.GEN

-		ptReg->intEn |=  I2S_TX_UNDER_INT_EN; /* enable tx under interrupt */

-	}

-

-	return DRV_SUCCESS;

-}

-

-/**

-* @brief	Dma tx interrupt callback function while playing.

-*

-* @param	tid			i2s select

-* @param	tIntStatus	pointer to T_ZDrvDma_IntStatus

-* @return	0-DRV_SUCCESS, other-error

-*/

-static VOID i2s_DmaTxIntCb(T_ZDrvI2S_Id tId)

-{

-

-	T_I2s_Reg *ptReg = NULL;

-	//const UINT32 uiIntStatus = 0;

-	UINT8 bufIndex = 0;

-	T_I2s_TxStream *i2sTxStream = NULL;

-

-	if (tId >= MAX_I2S_ID) { /*klocwork 3  INVARIANT_CONDITION.UNREACH  delete assert*/

-		//	zDrv_ASSERT(0) ;

-		return;

-	}

-	ptReg = s_i2sInstance[tId].ptDev->regs;

-	const UINT32 uiIntStatus  = ptReg->intStatus;

-

-	i2sTxStream = &s_i2sTxStream[tId];

-	for (; bufIndex < I2S_OUT_BUF_NUM; bufIndex++) {

-		if (i2sTxStream->txBufferArray[bufIndex].i2sBufStatus == BUFFER_FULL) {

-			break;

-		}

-	}

-

-	if (bufIndex == I2S_OUT_BUF_NUM)

-		zDrvI2S_Write_Stop(tId);

-

-	i2s_UpdateTxBufferStatus(tId, (UINT16 *)(i2sTxStream->txBufferArray[i2sTxStream->txRdIdx].buf), BUFFER_NULL);       /*ÉϲãÍù*pBufдÍêÊý¾Ýºó£¬¸Ä±äBUF״̬ΪFULL*/

-	i2sTxStream->txRdIdx = (i2sTxStream->txRdIdx + 1) % I2S_OUT_BUF_NUM;

-	zOss_PutSemaphore(i2sTxStream->txSem);

-

-//	i2s_IntTxChangeBuf(tId);

-	if (uiIntStatus & I2S_TX_UNDER_INT) {       /* tx err */

-		ptReg->intStatus |= I2S_TX_UNDER_INT;   /* clear interrupt */

-	}

-

-}

-

-/**

-* @brief	Dma rx interrupt callback function while playing.

-*

-* @param	tid			i2s select

-* @param	ptInstance	pointer to T_I2s_Instance

-* @param	tIntStatus	pointer to T_ZDrvDma_IntStatus

-* @return	0-DRV_SUCCESS, other-error

-*/

-static VOID i2s_DmaRxIntCb(T_ZDrvI2S_Id tId)

-{

-	T_I2s_RxStream *i2sStream = NULL;

-	UINT8 rxIndex = 0;

-	T_I2s_Reg *ptReg = NULL;

-	//const UINT32 uiIntStatus = 0;

-

-	if (tId >= MAX_I2S_ID) {	/*klocwork 3  INVARIANT_CONDITION.UNREACH  delete assert*/

-		//	zDrv_ASSERT(0);

-		return;

-	}

-

-	i2sStream = &s_i2sRxStream[tId];

-	ptReg = s_i2sInstance[tId].ptDev->regs;

-	const UINT32 uiIntStatus = ptReg->intStatus;

-#if 0

-	if (i2sStream->rxBufferArray[i2sStream->rxIdx].i2sBufStatus == BUFFER_NULL) {

-		i2s_QueuePut(&i2sStream->rxQueue, (UINT16 *)i2sStream->currentRxBuf->buf, (i2sStream->rxLen / sizeof(UINT16)));   /*put the full buf to the queue*/

-		i2s_UpdateRxBufferStatus(tId, (UINT16*)i2sStream->currentRxBuf->buf, BUFFER_FULL);

-		zOss_PutSemaphore(i2sStream->rxSem);          /*if the next buf status is null,then release the sem so the uplayer can get the buf to read*/

-		//i2s_DmaRx(tId, ptInstance, i2sStream->rxIdx);

-	} else {

-		/*Èç¹û¾ÉÊý¾ÝÉϲãÕýÔÚ¿½±´£¬ÐÂÌîÂúµÄbufÖØÐÂÌîд*/

-		for (rxIndex = 0; rxIndex < I2S_OUT_BUF_NUM; rxIndex++) {                    /*if the next buf is bing used£tthen rewrite the buf**/

-			if (i2sStream->rxBufferArray[rxIndex].i2sBufStatus == BUFFER_WRITE) {      /*it is necessary to find the index*/

-				if (uiIntStatus & I2S_RX_OVER_INT) {         /* rx err */

-					ptReg->intStatus |= I2S_RX_OVER_INT;     /* clear interrupt */

-#ifdef _USE_AUDIO_ON_7520V2

-					ptReg->fifoCtrl |= I2S_RX_FIFO_RST;           /* reset rx fifo */

-#endif

-				}

-				break;

-			}

-			if (rxIndex == 2) {

-				break;

-			}

-		}

-		i2sStream->rxIdx = rxIndex;

-		//i2s_DmaRx(tId, ptInstance, rxIndex);

-	}

-

-

-	if (uiIntStatus & I2S_RX_OVER_INT) {         /* rx err */

-		ptReg->intStatus |= I2S_RX_OVER_INT;     /* clear interrupt */

-#ifdef _USE_AUDIO_ON_7520V2

-		ptReg->fifoCtrl |= I2S_RX_FIFO_RST;           /* reset rx fifo */

-#endif

-

-	}

-#endif

-}

-

-/**

-* @brief	i2s1 rx interrupt callback function.

-*

-* @param	tIntStatus	pointer to T_ZDrvDma_IntStatus

-* @return	0-DRV_SUCCESS, other-error

-*/

-static VOID dmacb_i2s1_rx(void *data)

-{

-	//i2s_DmaRxIntCb(I2S_1);

-	UINT32 sem_cnt = 0;

-	T_I2s_RxStream *i2sStream = &s_i2sRxStream[I2S_1];

-	/*

-		UINT8 bufIndex = 0;

-

-		for(; bufIndex < I2S_OUT_BUF_NUM; bufIndex++) {

-			if(i2sStream->rxBufferArray[bufIndex].i2sBufStatus == BUFFER_FULL) {

-				break;

-			}

-		}

-		if (bufIndex == I2S_OUT_BUF_NUM)

-			zDrvI2S_Read_Stop(I2S_1);

-	*/

-

-    if(i2sStream->rxBufferArray == NULL){

-        return;

-    }

-    

-	i2s_UpdateRxBufferStatus(I2S_1, (UINT16 *)(i2sStream->rxBufferArray[i2sStream->rxWrIdx].buf), BUFFER_FULL);

-	i2sStream->rxWrIdx = (i2sStream->rxWrIdx + 1) % I2S_OUT_BUF_NUM;

-

-	sem_cnt = zOss_GetSemaphoreCount(i2sStream->rxSem);

-	if (sem_cnt < I2S_OUT_BUF_NUM) {

-		zOss_PutSemaphore(i2sStream->rxSem);

-	} else {

-		i2sStream->rxRdIdx = (i2sStream->rxRdIdx + 1) % I2S_OUT_BUF_NUM;

-	}

-}

-

-/**

-* @brief	i2s2 rx interrupt callback function.

-*

-* @param	tIntStatus	pointer to T_ZDrvDma_IntStatus

-* @return	0-DRV_SUCCESS, other-error

-*/

-static VOID dmacb_i2s2_rx(void *data)

-{

-	//i2s_DmaRxIntCb(I2S_2);

-	UINT32 sem_cnt = 0;

-	T_I2s_RxStream *i2sStream = &s_i2sRxStream[I2S_2];

-	/*

-		UINT8 bufIndex = 0;

-

-		for(; bufIndex < I2S_OUT_BUF_NUM; bufIndex++) {

-			if(i2sStream->rxBufferArray[bufIndex].i2sBufStatus == BUFFER_FULL) {

-				break;

-			}

-		}

-		if (bufIndex == I2S_OUT_BUF_NUM)

-			zDrvI2S_Read_Stop(I2S_2);

-	*/

-

-    if(i2sStream->rxBufferArray == NULL){

-        return;

-    }

-    

-	i2s_UpdateRxBufferStatus(I2S_2, (UINT16 *)(i2sStream->rxBufferArray[i2sStream->rxWrIdx].buf), BUFFER_FULL);

-	i2sStream->rxWrIdx = (i2sStream->rxWrIdx + 1) % I2S_OUT_BUF_NUM;

-	sem_cnt = zOss_GetSemaphoreCount(i2sStream->rxSem);

-	if (sem_cnt < I2S_OUT_BUF_NUM) {

-		zOss_PutSemaphore(i2sStream->rxSem);

-	} else {

-		i2sStream->rxRdIdx = (i2sStream->rxRdIdx + 1) % I2S_OUT_BUF_NUM;

-	}

-}

-

-/**

-* @brief	i2s1 tx interrupt callback function.

-*

-* @param	tid			i2s select

-* @param	ptInstance	pointer to T_I2s_Instance

-* @param	tIntStatus	pointer to T_ZDrvDma_IntStatus

-* @return	0-DRV_SUCCESS, other-error

-*/

-static VOID dmacb_i2s1_tx(void *data)

-{

-	//i2s_DmaTxIntCb(I2S_1);

-	UINT32 sem_cnt = 0;

-	T_I2s_TxStream *i2sTxStream = &s_i2sTxStream[I2S_1];

-	/*

-		UINT8 bufIndex = 0;

-

-		for(; bufIndex < I2S_OUT_BUF_NUM; bufIndex++) {

-			if(i2sTxStream->txBufferArray[bufIndex].i2sBufStatus == BUFFER_NULL) {

-				break;

-			}

-		}

-		if (bufIndex == I2S_OUT_BUF_NUM)

-			zDrvI2S_Write_Stop(I2S_1);

-	*/

-

-    if(i2sTxStream->txBufferArray == NULL){

-        return;

-    }

-    

-	i2s_UpdateTxBufferStatus(I2S_1, (UINT16 *)(i2sTxStream->txBufferArray[i2sTxStream->txRdIdx].buf), BUFFER_NULL);       /*ÉϲãÍù*pBufдÍêÊý¾Ýºó£¬¸Ä±äBUF״̬ΪFULL*/

-	i2sTxStream->txRdIdx = (i2sTxStream->txRdIdx + 1) % I2S_OUT_BUF_NUM;

-	sem_cnt = zOss_GetSemaphoreCount(i2sTxStream->txSem);

-	if (sem_cnt < I2S_OUT_BUF_NUM) {

-		zOss_PutSemaphore(i2sTxStream->txSem);

-	} else {

-		i2sTxStream->txWrIdx = (i2sTxStream->txWrIdx + 1) % I2S_OUT_BUF_NUM;

-	}

-

-}

-

-/**

-* @brief	i2s2 tx interrupt callback function.

-*

-* @param	tid			i2s select

-* @param	ptInstance	pointer to T_I2s_Instance

-* @param	tIntStatus	pointer to T_ZDrvDma_IntStatus

-* @return	0-DRV_SUCCESS, other-error

-*/

-static VOID dmacb_i2s2_tx(void *data)

-{

-	//i2s_DmaTxIntCb(I2S_2);

-	UINT32 sem_cnt = 0;

-	T_I2s_TxStream *i2sTxStream = &s_i2sTxStream[I2S_2];

-	/*

-		UINT8 bufIndex = 0;

-

-		for(; bufIndex < I2S_OUT_BUF_NUM; bufIndex++) {

-			if(i2sTxStream->txBufferArray[bufIndex].i2sBufStatus == BUFFER_NULL) {

-				break;

-			}

-		}

-		if (bufIndex == I2S_OUT_BUF_NUM)

-			zDrvI2S_Write_Stop(I2S_2);

-	*/

-

-    if(i2sTxStream->txBufferArray == NULL){

-        return;

-    }

-    

-	i2s_UpdateTxBufferStatus(I2S_2, (UINT16 *)(i2sTxStream->txBufferArray[i2sTxStream->txRdIdx].buf), BUFFER_NULL);       /*ÉϲãÍù*pBufдÍêÊý¾Ýºó£¬¸Ä±äBUF״̬ΪFULL*/

-	i2sTxStream->txRdIdx = (i2sTxStream->txRdIdx + 1) % I2S_OUT_BUF_NUM;

-	sem_cnt = zOss_GetSemaphoreCount(i2sTxStream->txSem);

-	if (sem_cnt < I2S_OUT_BUF_NUM) {

-		zOss_PutSemaphore(i2sTxStream->txSem);

-	} else {

-		i2sTxStream->txWrIdx = (i2sTxStream->txWrIdx + 1) % I2S_OUT_BUF_NUM;

-	}

-}

-

-#if 0

-/**

-* @brief	config and start i2s dma rx .

-*

-* @param	tid			i2s select

-* @param	ptInstance	pointer to T_I2s_Instance

-* @param	idx	pointer idx

-* @return	0-DRV_SUCCESS, other-error

-*/

-static SINT32 i2s_DmaRx(T_ZDrvI2S_Id tId, T_I2s_Instance *ptInstance, UINT8 idx)

-{

-	SINT32 ret = DRV_SUCCESS;

-	T_I2s_RxStream *i2sStream = &s_i2sRxStream[tId];

-	T_ZDrvDma_ChannelDef tChanDef = {0};

-

-	zDrv_ASSERT((tId < MAX_I2S_ID) && (ptInstance != NULL) && (idx < I2S_OUT_BUF_NUM));

-	if ((MAX_I2S_ID <= tId) || (NULL == ptInstance) || (idx >= I2S_OUT_BUF_NUM)) {

-		return DRV_ERR_INVALID_PARAM;

-	}

-

-	i2sStream->rxBufferArray[idx].i2sBufStatus = BUFFER_WRITE ;

-	i2sStream->currentRxBuf = &i2sStream->rxBufferArray[idx];

-

-	if (tId == I2S_1) {

-		i2sDmaState[tId].rxDmaChanDef.SrcAddr = ZX297520V3_I2S0_PHYS + 0x1c;

-	} else if (tId == I2S_2) {

-		i2sDmaState[tId].rxDmaChanDef.SrcAddr = ZX297520V3_I2S1_PHYS + 0x1c;

-	}

-//	tChanDef.DestAddr = MODEM_VA_2_PA((UINT32)i2sStream->currentRxBuf->buf);

-	i2sDmaState[tId].rxDmaChanDef.DestAddr = i2sDmaState[tId].dma_rx_phyaddr[0] + idx * (i2sDmaState[tId].rxsinglebuffsize);

-	if (gI2sCntChangeRx[tId] >= -80) {

-		i2sDmaState[tId].rxDmaChanDef.Count = ((UINT16)i2sStream->rxLen) + gI2sCntChangeRx[tId] * 2; //*sizeof(UINT32);//uiLen*sizeof(UINT16)

-		gI2sCntChangeRx[tId] = 0;//add by lvwenhua for i2s sync  2013.12.7

-	} else {

-		i2sDmaState[tId].rxDmaChanDef.Count = ((UINT16)i2sStream->rxLen) - 80 * 2; //*sizeof(UINT32);//uiLen*sizeof(UINT16)

-		gI2sCntChangeRx[tId] = gI2sCntChangeRx[tId] + 80; //add by lvwenhua for i2s sync  2013.12.7

-	}

-

-

-	/*modified by miaolin 20130801*/

-	ret = zDrvDma_ConfigChannel(ptInstance->DmaRxID, i2sDmaState[tId].rxDmaChanDef);

-	if (ret != DRV_SUCCESS) {

-		zDrvDma_DeAllocChannel(ptInstance->DmaRxID);

-		return ret;

-	}

-#ifdef MALLOC_I2S_DMA_AREA

-	//TOS_DCACHE_INVALIDATE_RANGE((UINT32)i2sStream->currentRxBuf->buf,(UINT16)i2sStream->rxLen);

-	dma_sync_single_for_cpu(&i2s_device.dev, i2sDmaState[tId].rxDmaChanDef.DestAddr, i2sDmaState[tId].rxDmaChanDef.Count, DMA_FROM_DEVICE);

-#endif

-

-	return ret;

-}

-#endif

-

-/**

-* @brief	dma rx init.

-*

-* @param	tid			i2s select i2s0 or i2s1

-* @return	0-DRV_SUCCESS, other-error

-*/

-static SINT32 i2s_DmaRxInit(T_ZDrvI2S_Id tId)

-{

-	T_I2s_Instance  *ptInstance = NULL;

-	T_I2s_RxStream *i2sStream = NULL;

-

-	if (MAX_I2S_ID <= tId) { /*klocwork 3  INVARIANT_CONDITION.UNREACH  °ÑassertÒÆµ½ifÀïÃæ*/

-		zDrv_ASSERT(0);

-		return DRV_ERR_INVALID_PARAM;

-	}

-

-	i2sStream = &s_i2sRxStream[tId];

-	ptInstance = &s_i2sInstance[tId];

-

-	struct dma_async_tx_descriptor *desc = NULL;

-	dma_cap_mask_t mask;

-

-	dma_cap_zero(mask);

-	dma_cap_set(DMA_CYCLIC, mask);

-

-	dma_channel_def temp[3];

-	int 	i;

-	memset(temp, 0, sizeof(temp));

-	i2sDmaState[tId][I2S_RX].channel = (tId == I2S_1) ? (DMA_CH_I2S0_RX0) : (DMA_CH_I2S1_RX0);

-	i2sDmaState[tId][I2S_RX].ch = dma_request_channel(mask, zx29_dma_filter_fn, (void*)(i2sDmaState[tId][I2S_RX].channel));

-

-    if(i2sDmaState[tId][I2S_RX].ch == NULL){

-        for(i = 0; i <= 5; i++){

-            zOss_Sleep(1);

-            i2sDmaState[tId][I2S_RX].ch = dma_request_channel(mask, zx29_dma_filter_fn, (void*)(i2sDmaState[tId][I2S_RX].channel));

-            

-            if(i2sDmaState[tId][I2S_RX].ch != NULL){

-                break;

-            }

-            else if(i == 5){

-                zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "i2s_DmaRxInit error, i2sDmaState[%d][%d].ch is NULL\n", tId, I2S_RX);

-                return DRV_ERROR;

-            }

-        }

-    }

-

-	for (i = 0; i < I2S_OUT_BUF_NUM; i++) {

-		temp[i].dest_addr 	= i2sDmaState[tId][I2S_RX].dma_phyaddr  + (i2sStream->rxLen) * i;

-		temp[i].src_addr	= (tId == I2S_1) ? (ZX29_I2S0_PHYS + 0x1c) : (ZX29_I2S1_PHYS + 0x1c);

-		temp[i].dma_control.tran_mode = TRAN_PERI_TO_MEM;

-		temp[i].dma_control.src_burst_len 	= DMA_BURST_LEN_8;

-		temp[i].count		= i2sStream->rxLen;

-		//		temp[i].callback	= (dma_callback_func)dma_cb;

-		/*

-			temp[i].dma_control.tran_mode 		= (substream->stream == SNDRV_PCM_STREAM_PLAYBACK

-													? TRAN_MEM_TO_PERI : TRAN_PERI_TO_MEM);

-			temp[i].dma_control.src_burst_len 	= (substream->stream == SNDRV_PCM_STREAM_PLAYBACK

-													? DMA_BURST_LEN_16 : DMA_BURST_LEN_8);

-		*/

-		temp[i].dma_control.src_burst_size 	= DMA_BURST_SIZE_32BIT;

-		temp[i].dma_control.dest_burst_size = DMA_BURST_SIZE_32BIT;

-		temp[i].dma_control.dest_burst_len 	= DMA_BURST_LEN_8;

-		temp[i].dma_control.irq_mode 		= DMA_ALL_IRQ_ENABLE;

-		temp[i].link_addr 		= 1;

-	}

-

-	temp[I2S_OUT_BUF_NUM - 1].link_addr 	= 0;

-

-	dmaengine_slave_config(i2sDmaState[tId][I2S_RX].ch, (struct dma_slave_config*)&temp);

-

-	desc = i2sDmaState[tId][I2S_RX].ch->device->device_prep_dma_cyclic(

-	           i2sDmaState[tId][I2S_RX].ch,

-	           i2sDmaState[tId][I2S_RX].dma_phyaddr, i2sStream->rxLen * 3,

-	           i2sStream->rxLen,

-	           DMA_DEV_TO_MEM,

-	           NULL);

-

-	desc->callback = (tId == I2S_1) ? ((dma_async_tx_callback)dmacb_i2s1_rx) : ((dma_async_tx_callback)dmacb_i2s2_rx);

-	desc->callback_param = NULL;

-

-	dmaengine_submit(desc);

-

-	dma_async_issue_pending(i2sDmaState[tId][I2S_RX].ch);

-

-	return DRV_SUCCESS;

-}

-

-/**

-* @brief	dma tx init.

-*

-* @param	tid			i2s select i2s0 or i2s1

-* @return	0-DRV_SUCCESS, other-error

-*/

-static SINT32 i2s_DmaTxInit(T_ZDrvI2S_Id tId)

-{

-	T_I2s_Instance  *ptInstance = NULL;

-	T_I2s_TxStream *txStream = NULL;

-	struct dma_async_tx_descriptor *desc = NULL;

-	dma_cap_mask_t mask;

-

-	if (MAX_I2S_ID <= tId) { /*klocwork 3  INVARIANT_CONDITION.UNREACH  °ÑassertÒÆµ½ifÀïÃæ*/

-		zDrv_ASSERT(0);

-		return DRV_ERR_INVALID_PARAM;

-	}

-

-	txStream = &s_i2sTxStream[tId];

-	dma_cap_zero(mask);

-	dma_cap_set(DMA_CYCLIC, mask);

-

-	ptInstance = &s_i2sInstance[tId];

-	dma_channel_def temp[3];

-	int 	i;

-	memset(temp, 0, sizeof(temp));

-	i2sDmaState[tId][I2S_TX].channel = (tId == I2S_1) ? (DMA_CH_I2S0_TX) : (DMA_CH_I2S1_TX);

-	i2sDmaState[tId][I2S_TX].ch = dma_request_channel(mask, zx29_dma_filter_fn, (void*)(i2sDmaState[tId][I2S_TX].channel));

-

-    if(i2sDmaState[tId][I2S_TX].ch == NULL){

-        for(i = 0; i <= 5; i++){

-            zOss_Sleep(1);

-            i2sDmaState[tId][I2S_TX].ch = dma_request_channel(mask, zx29_dma_filter_fn, (void*)(i2sDmaState[tId][I2S_TX].channel));

-            

-            if(i2sDmaState[tId][I2S_TX].ch != NULL){

-                break;

-            }

-            else if(i == 5){

-                zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "i2s_DmaTxInit error, i2sDmaState[%d][%d].ch is NULL\n", tId, I2S_TX);

-                return DRV_ERROR;

-            }

-        }

-    }

-

-	for (i = 0; i < I2S_OUT_BUF_NUM; i++) {

-		temp[i].src_addr 	= i2sDmaState[tId][I2S_TX].dma_phyaddr + (txStream->txLen) * i;

-		temp[i].dest_addr	= (tId == I2S_1) ? (ZX29_I2S0_PHYS + 0x1c) : (ZX29_I2S1_PHYS + 0x1c);

-		temp[i].dma_control.tran_mode = TRAN_MEM_TO_PERI;

-		temp[i].dma_control.src_burst_len 	= DMA_BURST_LEN_16;

-		temp[i].count		= txStream->txLen;

-		//		temp[i].callback	= (dma_callback_func)dma_cb;

-		/*

-			temp[i].dma_control.tran_mode 		= (substream->stream == SNDRV_PCM_STREAM_PLAYBACK

-													? TRAN_MEM_TO_PERI : TRAN_PERI_TO_MEM);

-			temp[i].dma_control.src_burst_len 	= (substream->stream == SNDRV_PCM_STREAM_PLAYBACK

-													? DMA_BURST_LEN_16 : DMA_BURST_LEN_8);

-		*/

-		temp[i].dma_control.src_burst_size 	= DMA_BURST_SIZE_32BIT;

-		temp[i].dma_control.dest_burst_size = DMA_BURST_SIZE_32BIT;

-		temp[i].dma_control.dest_burst_len 	= DMA_BURST_LEN_16;

-		temp[i].dma_control.irq_mode 		= DMA_ALL_IRQ_ENABLE;

-		temp[i].link_addr 		= 1;

-	}

-

-	temp[I2S_OUT_BUF_NUM - 1].link_addr 	= 0;

-

-	dmaengine_slave_config(i2sDmaState[tId][I2S_TX].ch, (struct dma_slave_config*)&temp);

-

-	desc = i2sDmaState[tId][I2S_TX].ch->device->device_prep_dma_cyclic(

-	           i2sDmaState[tId][I2S_TX].ch,

-	           i2sDmaState[tId][I2S_TX].dma_phyaddr, txStream->txLen * 3,

-	           txStream->txLen,

-	           DMA_MEM_TO_DEV,

-	           NULL);

-

-	desc->callback = (tId == I2S_1) ? ((dma_async_tx_callback)dmacb_i2s1_tx) : ((dma_async_tx_callback)dmacb_i2s2_tx);

-	desc->callback_param = NULL;

-

-	dmaengine_submit(desc);

-

-	return DRV_SUCCESS;

-}

-

-#if 0

-/**

-* @brief	config and start i2s dma tx .

-*

-* @param	tid			i2s select

-* @param	pBuf	pointer to  i2s buffer

-* @param	uiLen	pointer idx

-* @return	0-DRV_SUCCESS, other-error

-*/

-static SINT32 i2s_DmaTx(T_ZDrvI2S_Id tId, const UINT16 *pBuf, UINT32 uiLen)

-{

-	SINT32 ret = DRV_SUCCESS;

-	//SINT32 channel_id=0;

-	T_I2s_Instance  *ptInstance = &s_i2sInstance[tId];

-	T_I2s_TxStream  *txStream = &s_i2sTxStream[tId];

-//    T_ZDrvDma_ChannelDef tChanDef = {0};

-

-	zDrv_ASSERT((tId < MAX_I2S_ID) && (pBuf != NULL) && (uiLen != 0) && (uiLen <= I2S_MAX_TX_BUF_SIZE));

-	if (MAX_I2S_ID <= tId || NULL == pBuf || 0 == uiLen || I2S_MAX_TX_BUF_SIZE < uiLen) {

-		return DRV_ERR_INVALID_PARAM;

-	}

-

-	if (pBuf == s_txBufArray[tId][0]) {

-		i2sDmaState[tId].txDmaChanDef.SrcAddr = i2sDmaState[tId].dma_tx_phyaddr[0];

-	} else if (pBuf == s_txBufArray[tId][1]) {

-		i2sDmaState[tId].txDmaChanDef.SrcAddr = i2sDmaState[tId].dma_tx_phyaddr[1];

-	} else if (pBuf == s_txBufArray[tId][2]) {

-		i2sDmaState[tId].txDmaChanDef.SrcAddr = i2sDmaState[tId].dma_tx_phyaddr[2];

-	}

-

-	if (tId == I2S_1) {

-		i2sDmaState[tId].txDmaChanDef.DestAddr = ZX297520V3_I2S0_PHYS + 0x1c;

-	} else if (tId == I2S_2) {

-		i2sDmaState[tId].txDmaChanDef.DestAddr = ZX297520V3_I2S1_PHYS + 0x1c;

-	}

-

-	if (gI2sCntChangeTx[tId] >= -80) {

-		i2sDmaState[tId].txDmaChanDef.Count = uiLen * sizeof(UINT16) + gI2sCntChangeTx[tId] * 2; //´«ÊäµÄ×Ö½Ú´óС

-		gI2sCntChangeTx[tId] = 0;//add by lvwenhua for i2s sync  2013.12.7

-	} else {

-		i2sDmaState[tId].txDmaChanDef.Count = uiLen * sizeof(UINT16) - 80 * 2; //*sizeof(UINT32);//uiLen*sizeof(UINT16)

-		gI2sCntChangeTx[tId] = gI2sCntChangeTx[tId] + 80; //add by lvwenhua for i2s sync  2013.12.7

-	}

-

-	ret = zDrvDma_ConfigChannel(ptInstance->DmaTxID, i2sDmaState[tId].txDmaChanDef);

-	if (ret != DRV_SUCCESS) {

-		zDrvDma_DeAllocChannel(ptInstance->DmaTxID);

-		return ret;

-	}

-

-	//ret=zDrvDma_StartChannel(channel_id, NULL, TRUE);

-	ret = zDrvDma_StartChannel(ptInstance->DmaTxID, ptInstance->fDmaCbTx, FALSE);

-	if (ret != DRV_SUCCESS) {

-		zDrvDma_DeAllocChannel(ptInstance->DmaTxID);

-		return ret;

-	}

-

-	return DRV_SUCCESS;

-}

-

-#endif

-

-/**

-* @brief	init the i2s interrupt .

-*

-* @param	VOID			i2s select

-* @return	0-DRV_SUCCESS, other-error

-*/

-static VOID i2s_InitInt(VOID)

-{

-	static T_I2s_Device s_I2sDev[MAX_I2S_ID];

-

-	if (s_bI2sInitInt) {

-		return;

-	}

-	memset(&s_I2sDev, 0, sizeof(s_I2sDev));

-	s_I2sDev[I2S_1].intline = I2S0_INT;

-	s_I2sDev[I2S_1].intprio = 15;

-	s_I2sDev[I2S_1].regs = (T_I2s_Reg*)I2S0_REG_BASE;

-	s_i2sInstance[I2S_1].ptDev = &s_I2sDev[I2S_1];

-

-	s_I2sDev[I2S_2].intline = I2S1_INT;

-	s_I2sDev[I2S_2].intprio = 15;

-	s_I2sDev[I2S_2].regs = (T_I2s_Reg*)I2S1_REG_BASE;

-	s_i2sInstance[I2S_2].ptDev = &s_I2sDev[I2S_2];

-

-

-	s_i2sInstance[I2S_1].txMutex = zOss_CreateMutex("i2s1TxMutex", 1);

-	zOss_ASSERT(s_i2sInstance[I2S_1].txMutex != ZOSS_NULL);

-

-	s_i2sInstance[I2S_1].rxMutex = zOss_CreateMutex("i2s1RxMutex", 1);

-	zOss_ASSERT(s_i2sInstance[I2S_1].rxMutex != ZOSS_NULL);

-

-	s_i2sInstance[I2S_2].txMutex = zOss_CreateMutex("i2s2TxMutex", 1);

-	zOss_ASSERT(s_i2sInstance[I2S_2].txMutex != ZOSS_NULL);

-

-	s_i2sInstance[I2S_2].rxMutex = zOss_CreateMutex("i2s2RxMutex", 1);

-	zOss_ASSERT(s_i2sInstance[I2S_2].rxMutex != ZOSS_NULL);

-	s_bI2sInitInt = TRUE;

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "i2s_InitInt \r\n");

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "(i2s_InitInt(I2S0_REG_BASE) = %x\n", I2S0_REG_BASE);

-}

-

-/**

-* @brief	set clock division coeff.

-*

-* @param	divFunc	 the value with the divFunc

-* @param	div	 	 div value

-* @return	0-DRV_SUCCESS, other-error

-*/

-static SINT32 i2s_SetClkDiv(UINT32 divFunc, UINT32 div)

-{

-	UINT32 bitWidth = divFunc & 0xff;

-	UINT32 maxDiv = (0x1 << bitWidth) - 1;

-	UINT32 bitIndex = (divFunc >> 8) & 0xff;

-	UINT32 bitMask = 0;

-	UINT32 devNum = 0;

-	UINT32 regBase = 0;

-	UINT32 tmp = 0;

-

-	if (div > maxDiv)

-		div = maxDiv;

-

-	if (bitIndex == 28) { /*ÕûÊý·ÖƵÆ÷Ö»Ö§³ÖżÊý·ÖƵ*/

-		div &= 0xfe;

-		div++;

-	}

-

-	bitMask = ((0x1 << bitWidth) - 1) << bitIndex;

-	devNum = (divFunc >> 28) & 0xf;

-	regBase = g_i2sClkDivRegs[devNum];

-	tmp = reg32(regBase);

-	tmp &= ~bitMask;

-	tmp |= div << bitIndex;

-	reg32(regBase) = tmp;

-

-	return DRV_SUCCESS;

-}

-

-/*******************************************************************************

- *                      Global function implementations                        *

- ******************************************************************************/

-/**

-* @brief	i2s init.

-*

-* @param	VOID

-* @return	0-DRV_SUCCESS, other-error

-*/

-SINT32 zDrvI2S_Init(VOID)

-{

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S__Init \n");

-

-	s_i2sRxStream[I2S_1].rxSem = zOss_CreateSemaphore("iis1_rx_sem", 0);

-	if (NULL == s_i2sRxStream[I2S_1].rxSem) {

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "create iis1_rx_sem err \n");

-		return DRV_ERROR;

-	}

-

-	s_i2sRxStream[I2S_2].rxSem  = zOss_CreateSemaphore("iis2_rx_sem", 0);

-	if (NULL == s_i2sRxStream[I2S_2].rxSem) {

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "create iis2_rx_sem err \n");

-		return DRV_ERROR;

-	}

-

-	s_i2sTxStream[I2S_1].txSem = zOss_CreateSemaphore("iis1_tx_sem", 0);

-	if (NULL == s_i2sTxStream[I2S_1].txSem) {

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "create iis1_tx_sem err \n");

-		return DRV_ERROR;

-	}

-

-	s_i2sTxStream[I2S_2].txSem = zOss_CreateSemaphore("iis2_tx_sem", 0);

-	if (NULL == s_i2sTxStream[I2S_2].txSem) {

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "create iis2_tx_sem err \n");

-		return DRV_ERROR;

-	}

-

-	return DRV_SUCCESS;

-}

-

-/**

-* @brief	i2s resem count init.

-*

-* @param	tId	i2s select i2s0 or i2s1

-* @return	0-DRV_SUCCESS, other-error

-*/

-SINT32 i2s_rxsem_count_Init(T_ZDrvI2S_Id tId)

-{

-	UINT32 i = 0;

-	UINT32 semCount = 0;

-	SINT32 Count = 0;

-

-	T_I2s_RxStream *rxStream = &s_i2sRxStream[tId];

-	semCount = zOss_GetSemaphoreCount(rxStream->rxSem);

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "i2s%d rxStream->rxSem count=%d \r\n", tId, semCount);

-

-	Count = semCount;

-	if (Count > 0) {

-		for (i = 0; i < Count; i++) {

-			zOss_GetSemaphore(rxStream->rxSem, ZOSS_NO_WAIT);

-		}

-	}

-

-	return DRV_SUCCESS;

-}

-

-/**

-* @brief	i2s txsem count init.

-*

-* @param	tId	i2s select i2s0 or i2s1

-* @return	0-DRV_SUCCESS, other-error

-*/

-SINT32 i2s_txsem_count_Init(T_ZDrvI2S_Id tId)

-{

-	UINT32 i = 0;

-	UINT32 semCount = 0;

-	SINT32 Count = 0;

-

-	T_I2s_TxStream *txStream = &s_i2sTxStream[tId];

-

-	semCount = zOss_GetSemaphoreCount(txStream->txSem);

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "i2s%d txStream->txSem count=%d \r\n", tId, semCount);

-

-	Count = I2S_UPLINK_SEM_NUM - semCount;

-	if (Count > 0) {

-		for (i = 0; i < Count; i++) {

-			zOss_PutSemaphore(txStream->txSem);

-		}

-	} else if (Count < 0) {

-		Count = 0 - Count;

-		for (i = 0; i < Count; i++) {

-			zOss_GetSemaphore(txStream->txSem, ZOSS_NO_WAIT);

-		}

-	}

-

-	return DRV_SUCCESS;

-}

-

-/**

-* @brief	Set i2s clock coeff.

-*

-* @param	tId		select the i2s0 or i2s1

-* @param	ptCfg		pcm division coeff

-* @return	0-DRV_SUCCESS, other-error

-*/

-SINT32 i2s_SetPdiv(T_ZDrvI2S_Id tId, T_ZDrvI2S_Cfg *ptCfg)

-{

-	SINT32 ret = DRV_SUCCESS;

-	T_I2s_ClkDiv div = {0};

-

-	if (MAX_I2S_ID <= tId || NULL == ptCfg) {

-		return DRV_ERR_INVALID_PARAM;

-	}

-

-	switch (ptCfg->tClkMode) {

-	case I2S_TIME_MODE:

-		ret = i2s_GetI2sDiv(ptCfg, &div);

-		break;

-	case PCM_TIME_MODE:

-		ret = i2s_GetPcmDiv(ptCfg, &div);

-		break;

-	default:

-		return DRV_ERROR;

-	}

-

-	if (ret != DRV_SUCCESS) {

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, " i2s_SetPdiv err ret=0x%x", ret);

-		return DRV_ERROR;

-	}

-

-	ret = i2s_SetClk(tId, &div);

-	if (ret != DRV_SUCCESS) {

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, " i2s_SetPdiv i2s_SetClk err ret=0x%x", ret);

-		return DRV_ERROR;

-	}

-

-	return DRV_SUCCESS;

-}

-

-/**

-* @brief	this function is use to close i2s divide frequency.

-*

-* @param	tmType		pointer to T_ZDrvI2S_TimingType

-* @param	pTmCfg		pointer to T_ZDrvI2S_TimingCfg

-* @return	0-DRV_SUCCESS, other-error

-*/

-SINT32 i2s_GetI2sTimingCfg(T_ZDrvI2S_TimingType tmType, T_ZDrvI2S_TimingCfg *pTmCfg)

-{

-	UINT8 i = 0;

-	UINT8 arraySize = sizeof(gI2S_TimingCfg) / sizeof(gI2S_TimingCfg[0]);

-

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "i2s_GetI2sTimingCfg   arraySize=0x%x,tmType = 0x%x\n", arraySize, tmType);

-

-	for (i = 0; i < arraySize; i++) {

-		if (gI2S_TimingCfg[i].tTimingTp == tmType) {

-			*pTmCfg = gI2S_TimingCfg[i];

-			break;

-		}

-	}

-

-	return DRV_SUCCESS;

-}

-

-/**

-* @brief	this function is set i2s timing.

-*

-* @param	ptReg	   pointer to T_I2s_Reg

-* @param	ptCfg	   pointer to T_ZDrvI2S_Cfg

-* @return	0-DRV_SUCCESS, other-error

-*/

-SINT32 i2s_SetTiming(T_I2s_Reg *ptReg, T_ZDrvI2S_Cfg *ptCfg)

-{

-	SINT32 ret = DRV_SUCCESS;

-	T_ZDrvI2S_TimingCfg tmCfg = {0};

-

-	i2s_GetI2sTimingCfg(ptCfg->tTimingType, &tmCfg);

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

-

-	if (tmCfg.tTimingSel == I2S_TIME_MODE) {

-		ptCfg->tClkMode = I2S_TIME_MODE;

-		ptReg->timingCtrl &= ~ I2S_TIMING_SEL;

-	} else if (tmCfg.tTimingSel == PCM_TIME_MODE) {

-		ptCfg->tClkMode = PCM_TIME_MODE;

-		ptReg->timingCtrl |= I2S_TIMING_SEL;

-	} else {

-		return DRV_ERR_INVALID_PARAM;

-	}

-

-	if (tmCfg.tChnNum < 8) {

-		ptReg->timingCtrl &= ~ I2S_CHN_NUM(7);

-		ptReg->timingCtrl |= I2S_CHN_NUM(tmCfg.tChnNum);

-	} else {

-		return DRV_ERR_INVALID_PARAM;

-	}

-

-	if (tmCfg.tLaneNum < 4) {

-		ptReg->timingCtrl &= ~ I2S_LANE_NUM(7);

-		ptReg->timingCtrl |= I2S_LANE_NUM(tmCfg.tLaneNum);

-	} else {

-		return DRV_ERR_INVALID_PARAM;

-	}

-

-	if ((tmCfg.tTimingSel == PCM_TIME_MODE) && (tmCfg.tTsCfg < 8)) {

-		ptCfg->tPcmSlotNum = tmCfg.tTsCfg;

-		ptReg->timingCtrl &= ~ I2S_TS_CFG(7);

-		ptReg->timingCtrl |=  I2S_TS_CFG(tmCfg.tTsCfg);

-	} else if ((tmCfg.tTimingSel == I2S_TIME_MODE) && (tmCfg.tTsCfg < 4)) {

-		ptReg->timingCtrl &= ~ I2S_TS_CFG(7);

-		ptReg->timingCtrl |= I2S_TS_CFG(tmCfg.tTsCfg);

-		if (tmCfg.tTsCfg == 1) {

-			ptCfg->tTrackFmt = RIGHT_TRACK;

-		} else if (tmCfg.tTsCfg == 2) {

-			ptCfg->tTrackFmt = LEFT_TRACK;

-		} else if (tmCfg.tTsCfg == 3) {

-			ptCfg->tTrackFmt = DOUBLE_TRACK;

-		} else {

-			return DRV_ERR_INVALID_PARAM;

-		}

-	} else {

-		return DRV_ERR_INVALID_PARAM;

-	}

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "i2s_SetTiming  success");

-

-	return DRV_SUCCESS;

-}

-

-/**

-* @brief	open i2s device.

-*

-* @param	tId	 i2s selete struct

-* @param	i2sTransMode	 T_ZDrvI2s_TransMode

-*

-* @return	0-DRV_SUCCESS, other-error

-*/

-SINT32 zDrvI2S_Open(T_ZDrvI2S_Id tId, T_ZDrvI2s_TransMode i2sTransMode)

-{

-	T_I2s_Instance *ptInstance = NULL;

-	T_I2s_Device *ptDev = NULL;

-	SINT32 ret = DRV_SUCCESS;

-	SINT32 returnValue = 0;

-#ifdef MALLOC_I2S_DMA_AREA

-	UINT32 bufSize;

-	UINT32 txBufSize;

-	UINT32 rxBufSize;

-#endif

-	if (MAX_I2S_ID <= tId || i2sTransMode >= MAX_TRANS_FUNC) { /*klocwork 3  INVARIANT_CONDITION.UNREACH  °ÑassertÒÆµ½ifÀïÃæ*/

-		zDrv_ASSERT(0);

-		return DRV_ERR_INVALID_PARAM;

-	}

-

-	ptInstance = &s_i2sInstance[tId];

-	if (ptInstance->i2sStatus == I2S_OPEN || ptInstance->i2sStatus == I2S_PLAY_INUSE || ptInstance->i2sStatus == I2S_RECORD_INUSE || ptInstance->i2sStatus == I2S_BOTH_INUSE) {

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "howard zDrvI2S_Open err i2sStatus=%d \n", ptInstance->i2sStatus);

-		return DRV_ERR_BUSY;

-	}

-

-	i2s_InitInt();

-	i2s_ClkInit();

-

-	ptDev = ptInstance->ptDev;

-	ptInstance->i2sTransMode = i2sTransMode;

-

-	i2s_Reset(tId);

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

-	/*if(ret != DRV_SUCCESS) {

-		return DRV_ERROR;

-	}*/

-

-	/* value of control register is 0 after reseted */

-	ptInstance->tCfg.bMaster  = FALSE;

-	ptInstance->tCfg.tDataFmt = MAX_I2S_DATA_FMT;

-	if (ptInstance->i2sTransMode == TRANS_INT_MODE) {

-		if (I2S_1 == tId) {

-			returnValue = zDrvInt_InstallIsr(ptDev->intline, (VOID *)isr_i2s1, "iis1", INT_HIGHLEVEL);

-		} else { /*klocwork 3  INVARIANT_CONDITION.GEN  (I2S_2==tId)*/

-			returnValue = zDrvInt_InstallIsr(ptDev->intline, (VOID *)isr_i2s2, "iis2", INT_HIGHLEVEL);

-		}

-

-		if (returnValue < 0) {

-			return DRV_ERROR;

-		}

-		ptDev->pid = (PROCESS)returnValue;

-	}

-

-#ifdef MALLOC_I2S_DMA_AREA

-	if ((g_voiceVar.voiceMode == VOICE_GSM_MODE) || (g_voiceVar.voiceMode == VOICE_LTE_MODE) || \

-	    (g_voiceVar.voiceMode == VOICE_WCDMA_MODE) || (g_voiceVar.voiceMode == VOICE_TD_MODE)) {

-		i2sDmaState[tId][I2S_TX].totalbuffsize = I2S_MAX_VOICE_LTE_MEM_SIZE * 3;

-		i2sDmaState[tId][I2S_RX].totalbuffsize = I2S_MAX_VOICE_LTE_MEM_SIZE * 3;

-		txBufSize = I2S_MAX_VOICE_LTE_MEM_SIZE;

-		rxBufSize = I2S_MAX_VOICE_LTE_MEM_SIZE;

-		i2sDmaState[tId][I2S_TX].singlebuffsize = I2S_MAX_VOICE_LTE_MEM_SIZE;

-		i2sDmaState[tId][I2S_RX].singlebuffsize = I2S_MAX_VOICE_LTE_MEM_SIZE;

-	} else {

-		i2sDmaState[tId][I2S_TX].totalbuffsize = I2S_MAX_AUDIO_PLAY_MEM_SIZE * 3;

-		i2sDmaState[tId][I2S_RX].totalbuffsize = I2S_MAX_AUDIO_RECORD_MEM_SIZE * 3;

-		txBufSize = I2S_MAX_AUDIO_PLAY_MEM_SIZE;

-		rxBufSize = I2S_MAX_AUDIO_RECORD_MEM_SIZE;

-		i2sDmaState[tId][I2S_TX].singlebuffsize = I2S_MAX_AUDIO_PLAY_MEM_SIZE;

-		i2sDmaState[tId][I2S_RX].singlebuffsize = I2S_MAX_AUDIO_RECORD_MEM_SIZE;

-	}

-

-	i2sDmaState[tId][I2S_TX].dma_viraddr = dma_alloc_writecombine(&i2s_device.dev, i2sDmaState[tId][I2S_TX].totalbuffsize,

-	                                       &(i2sDmaState[tId][I2S_TX].dma_phyaddr), GFP_KERNEL);

-

-	i2sDmaState[tId][I2S_RX].dma_viraddr = dma_alloc_writecombine(&i2s_device.dev, i2sDmaState[tId][I2S_RX].totalbuffsize,

-	                                       &(i2sDmaState[tId][I2S_RX].dma_phyaddr), GFP_KERNEL);

-

-	if ((NULL == i2sDmaState[tId][I2S_TX].dma_viraddr) || (NULL == i2sDmaState[tId][I2S_RX].dma_viraddr)) {

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "[XK]BUF_NUM Malloc Failed! %p,%p,%x,%x\n", i2sDmaState[tId][I2S_TX].dma_viraddr, i2sDmaState[tId][I2S_RX].dma_viraddr, \

-		                  i2sDmaState[tId][I2S_TX].dma_phyaddr, i2sDmaState[tId][I2S_RX].dma_phyaddr);

-		return DRV_ERR_MEM_ALLOC;

-	} else {

-		/*		s_txBufArray[tId][0] = (UINT8 *)(i2sDmaState[tId][I2S_TX].dma_viraddr);

-				s_txBufArray[tId][1] = s_txBufArray[tId][0] + txBufSize;

-				s_txBufArray[tId][2] = s_txBufArray[tId][1] + txBufSize;

-				s_rxBufArray[tId][0] = (UINT8 *)(i2sDmaState[tId][I2S_RX].dma_viraddr);

-				s_rxBufArray[tId][1] = s_rxBufArray[tId][0] + rxBufSize;

-				s_rxBufArray[tId][2] = s_rxBufArray[tId][1] + rxBufSize;

-

-				i2sDmaState[tId].dma_tx_phyaddr[1] = i2sDmaState[tId].dma_tx_phyaddr[0] + txBufSize;

-				i2sDmaState[tId].dma_tx_phyaddr[2] = i2sDmaState[tId].dma_tx_phyaddr[1] + txBufSize;

-				i2sDmaState[tId].dma_rx_phyaddr[1] = i2sDmaState[tId].dma_rx_phyaddr[0] + rxBufSize;

-				i2sDmaState[tId].dma_rx_phyaddr[2] = i2sDmaState[tId].dma_rx_phyaddr[1] + rxBufSize;

-		*/

-	}

-#endif

-

-	ptInstance->i2sStatus = I2S_OPEN;

-#ifdef _USE_PSM

-	zDrvPow_SetDevActive((UINT32) IDLE_FLAG_I2S);

-#endif

-	return DRV_SUCCESS;

-}

-

-/**

-* @brief	reset i2s device.

-*

-* @param	tId	 i2s select i2s0 or i2s1

-*

-* @return	0-DRV_SUCCESS, other-error

-*/

-SINT32 zDrvI2S_Reset(T_ZDrvI2S_Id tId)

-{

-	SINT32 ret = DRV_SUCCESS;

-	ret = i2s_Reset(tId);

-	return ret;

-}

-

-

-/**

-* @brief	close i2s device.

-*

-* @param	tId	 i2s selete struct

-* @return	0-DRV_SUCCESS, other-error

-*/

-SINT32 zDrvI2S_Close(T_ZDrvI2S_Id tId)

-{

-	T_I2s_Instance *ptInstance = NULL;

-	SINT32 ret = DRV_SUCCESS;

-

-	if (MAX_I2S_ID <= tId) { /*klocwork 3  INVARIANT_CONDITION.UNREACH  °ÑassertÒÆµ½ifÀïÃæ*/

-		zDrv_ASSERT(0);

-		return DRV_ERR_INVALID_PARAM;

-	}

-

-	ptInstance = &s_i2sInstance[tId];

-

-	if (ptInstance->i2sStatus != I2S_OPEN) {

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S_Close I2S%d, i2sStatus=%d != I2S_OPEN", tId, s_i2sInstance[tId].i2sStatus);

-		return DRV_ERR_NOT_OPENED;

-	}

-

-	if (ptInstance->i2sTransMode == TRANS_INT_MODE)

-		/* reset tx/rx fifo to ensure there're no data of last transfer in fifo */

-		/* set the FIFO int threshold */

-	{

-		zDrvInt_UninstallIsr(ptInstance->ptDev->intline);

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

-	}

-

-#ifdef MALLOC_I2S_DMA_AREA

-	if (i2sDmaState[tId][I2S_TX].dma_viraddr != NULL) {

-		dma_free_writecombine(&i2s_device.dev, i2sDmaState[tId][I2S_TX].totalbuffsize,

-		                      i2sDmaState[tId][I2S_TX].dma_viraddr, i2sDmaState[tId][I2S_TX].dma_phyaddr);

-		i2sDmaState[tId][I2S_TX].dma_viraddr = NULL;

-	}

-	if (i2sDmaState[tId][I2S_RX].dma_viraddr != NULL) {

-		dma_free_writecombine(&i2s_device.dev, i2sDmaState[tId][I2S_RX].totalbuffsize,

-		                      i2sDmaState[tId][I2S_RX].dma_viraddr, i2sDmaState[tId][I2S_RX].dma_phyaddr);

-		i2sDmaState[tId][I2S_RX].dma_viraddr = NULL;

-	}

-#endif

-

-#ifdef CONFIG_SND_SOC_ES8312

-	if (tId == I2S_2) {

-		i2s_Reset(tId);

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

-		/*if(ret != DRV_SUCCESS) {

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S_Close i2s_Reset failed!!!\n");

-		}*/

-	}

-#else

-	i2s_Reset(tId);

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

-	/*if(ret != DRV_SUCCESS) {

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S_Close i2s_Reset failed!!!\n");

-	}*/

-

-#endif

-#ifdef _USE_AUDIO_ON_7520V2

-	i2s_CloseClk(tId);

-#endif

-

-	i2s_ClkDeinit(tId);

-

-	ptInstance->i2sStatus = I2S_IDLE;

-

-#ifdef _USE_PSM

-	if ((s_i2sInstance[I2S_1].i2sStatus == I2S_IDLE) && (s_i2sInstance[I2S_2].i2sStatus == I2S_IDLE)) {

-		zDrvPow_SetDevIdle((UINT32)IDLE_FLAG_I2S);

-	}

-#endif

-

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S_Close I2S%d, i2sStatus=%d", tId, s_i2sInstance[tId].i2sStatus);

-

-	return ret;

-}

-

-#if 0

-/**

-* @brief	start to trans data,use in playing.

-*

-* @param	tId	 i2s selete struct

-* @param	params	 T_ZDrvI2s_Params

-* @param	ptCfg	 config param

-* @return	0-DRV_SUCCESS, other-error

-*/

-SINT32 zDrvI2S_Vousb_Start(T_ZDrvI2S_Id tId, T_ZDrvI2s_Params *params, T_ZDrvI2S_Cfg *ptCfg)

-{

-	T_I2s_Instance *ptInstance = &s_i2sInstance[tId];

-	T_I2s_TxStream *i2sTxream = &s_i2sTxStream[tId];

-	UINT32 ret = DRV_SUCCESS;

-	T_I2s_Reg *ptReg = NULL;

-	//SINT32 waitTime = 0;//xiu

-

-	zDrv_ASSERT((tId < MAX_I2S_ID) && (ptCfg != NULL) && (params != NULL));

-	if (MAX_I2S_ID <= tId || NULL == ptCfg || NULL == params) {

-		return DRV_ERR_INVALID_PARAM;

-	}

-

-	if (ptInstance->i2sStatus != I2S_OPEN) {

-		return DRV_ERR_NOT_OPENED;

-	}

-

-	ptReg = ptInstance->ptDev->regs;

-	ret = i2s_TxComInit(tId, params);

-	ret += i2s_RxComInit(tId, params);

-

-	if (ptInstance->i2sTransMode == TRANS_INT_MODE) {

-		ret += i2s_IntTxInit(tId);

-		ret += i2s_IntRxInit(tId);

-		if (ret != DRV_SUCCESS) {

-			i2s_CleanTxResource(tId);

-			i2s_CleanRxResource(tId);

-			return DRV_ERROR;

-		}

-	} else if (ptInstance->i2sTransMode == TRANS_DMA_MODE) {

-		//	i2sTxream->txTransmit = i2s_DmaTx;

-		ret += i2s_DmaTxInit(tId);

-		ret += i2s_DmaRxInit(tId);

-		if (ret != DRV_SUCCESS) {

-			i2s_CleanTxResource(tId);

-			return DRV_ERROR;

-		}

-#ifdef _USE_AUDIO_ON_7520V2

-		ptReg->fifoCtrl = I2S_TX_FIFO_RST | I2S_RX_FIFO_RST;

-#endif

-		ptReg->fifoCtrl |= I2S_RFTH(30) | I2S_TFTH(30);

-		ptReg->fifoCtrl |= (I2S_TX_DMA_EN | I2S_RX_DMA_EN0);             /* enable dma transfer */

-	}

-

-	ptReg->processCtrl |= (I2S_EN | I2S_TX_OPEN | I2S_RX_OPEN);                /* enable i2s; enable tx only */

-	ptInstance->i2sStatus = ((ptInstance->i2sStatus) == I2S_RECORD_INUSE) ?  I2S_BOTH_INUSE : I2S_PLAY_INUSE;

-

-	return DRV_SUCCESS;

-}

-#endif

-

-/**

-* @brief	i2s write prepare.

-*

-* @param	tId	 i2s selete struct

-* @param	ptCfg	 config param

-* @return	0-DRV_SUCCESS, other-error

-*/

-SINT32 zDrvI2S_Write_Prepare(T_ZDrvI2S_Id tId, T_ZDrvI2S_Cfg *ptCfg)

-{

-	T_I2s_Instance *ptInstance = NULL;

-	T_I2s_Reg *ptReg = NULL;

-	SINT32 ret = DRV_SUCCESS;

-

-	if (MAX_I2S_ID <= tId || NULL == ptCfg) { /*klocwork 3  INVARIANT_CONDITION.UNREACH  °ÑassertÒÆµ½ifÀïÃæ*/

-		zDrv_ASSERT(0);

-		return DRV_ERR_INVALID_PARAM;

-	}

-	ptInstance = &s_i2sInstance[tId];

-

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S_Write_Prepare! \r\n");

-	ptReg = ptInstance->ptDev->regs;

-	ret = i2s_TxCheckState(tId, ptCfg);

-	if (ret != DRV_SUCCESS) {

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S_Write_Prepare:  i2s_TxCheckState err ret=%d\r\n", ret);

-		return DRV_ERROR;

-	}

-

-	ptReg->processCtrl |= I2S_EN;

-

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "(zDrvI2S_Write_Prepare(i2s(%d) timing ctrl) = %x", tId, (s_i2sInstance[tId].ptDev)->regs->timingCtrl);

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "(zDrvI2S_Write_Prepare(i2s(%d) fifo ctrl) = %x", tId, (s_i2sInstance[tId].ptDev)->regs->fifoCtrl);

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "(zDrvI2S_Write_Prepare(i2s(%d) frame ctrl) = %x", tId, (s_i2sInstance[tId].ptDev)->regs->frameCntr);

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "(zDrvI2S_Write_Prepare(i2s(%d) fifostatus) = %x", tId, (s_i2sInstance[tId].ptDev)->regs->fifoStatus);

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "(zDrvI2S_Write_Prepare(i2s(%d) process ctrl) = %x", tId, (s_i2sInstance[tId].ptDev)->regs->processCtrl);

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S_Write_Prepare(i2s(%d) reg intEn) = %x", tId, (s_i2sInstance[tId].ptDev)->regs->intEn);

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S_Write_Prepare(i2s(%d) reg intStatus) = %x\n", tId, (s_i2sInstance[tId].ptDev)->regs->intStatus);

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S_Write_Prepare(i2s(%d) reg data) = %x\n", tId, (s_i2sInstance[tId].ptDev)->regs->data);

-

-	return DRV_SUCCESS;

-}

-

-/**

-* @brief	i2s write start Do.

-*

-* @param	tId	 i2s selete struct

-* @param	params	 T_ZDrvI2s_Params

-* @return	0-DRV_SUCCESS, other-error

-*/

-SINT32 zDrvI2S_Write_Start_Do(T_ZDrvI2S_Id tId, T_ZDrvI2s_Params *params)

-{

-

-	T_I2s_Instance *ptInstance = NULL;

-	T_I2s_TxStream *txStream = NULL;

-	T_I2s_Reg *ptReg = NULL;

-	SINT32 ret = DRV_SUCCESS;

-	SINT32 waitTime = 0;

-

-	if (MAX_I2S_ID <= tId || NULL == params) { /*klocwork 3  INVARIANT_CONDITION.UNREACH  °ÑassertÒÆµ½ifÀïÃæ*/

-		zDrv_ASSERT(0);

-		return DRV_ERR_INVALID_PARAM;

-	}

-

-	ptInstance = &s_i2sInstance[tId];

-	txStream = &s_i2sTxStream[tId];

-

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S_Write_Start_Do \r\n");

-	ptReg = ptInstance->ptDev->regs;

-	txStream->channel = params->channel;

-

-	ret += i2s_TxComInit(tId, params);

-

-	if (ptInstance->i2sTransMode == TRANS_INT_MODE) {

-		txStream->txTransmit = i2s_IntTx;              /*init the transter function ,it will be called in Write() function*/

-		ret += i2s_IntTxInit(tId);

-		if (ret != DRV_SUCCESS) {

-			i2s_CleanTxResource(tId);

-			return DRV_ERROR;

-		}

-	} else if (ptInstance->i2sTransMode == TRANS_DMA_MODE) {

-		//txStream->txTransmit = i2s_DmaTx;

-		ret += i2s_DmaTxInit(tId);

-		if (ret != DRV_SUCCESS) {

-			i2s_CleanTxResource(tId);

-			return DRV_ERROR;

-		}

-		ptReg->fifoCtrl |= I2S_TX_DMA_EN;            /* enable dma transfer */

-	}

-

-	ptReg->processCtrl |= I2S_TX_OPEN;

-

-	if (ptInstance->tCfg.bMaster == TRUE) {                /* wait */

-		{

-			bsp_udelay(I2S_ENABLE_DELAY_TIME);

-			waitTime += I2S_ENABLE_DELAY_TIME;

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

-		}

-	}

-

-	ptInstance->i2sStatus = ((ptInstance->i2sStatus) == I2S_RECORD_INUSE) ? I2S_BOTH_INUSE : I2S_PLAY_INUSE;

-

-	gI2sDmaWriteIntTime[tId] = 0;

-	gI2sCntChangeTx[tId] = 0;

-

-	return DRV_SUCCESS;

-}

-

-/**

-* @brief	i2s write start .

-*

-* @param	tId	 i2s selete struct

-* @param	params	 pointer to struct T_ZDrvI2s_Params

-* @param	ptCfg	 pointer to struct T_ZDrvI2S_Cfg

-* @return	0-DRV_SUCCESS, other-error

-*/

-SINT32 zDrvI2S_Write_Start(T_ZDrvI2S_Id tId, T_ZDrvI2s_Params *params, T_ZDrvI2S_Cfg *ptCfg)

-{

-	SINT32 ret = DRV_SUCCESS;

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S_Write_Start\r\n");

-

-	ret = zDrvI2S_Write_Prepare(tId, ptCfg);

-	if (ret != DRV_SUCCESS) {

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S_Write_Start  zDrvI2S_Write_Prepare error ret=%d \r\n", ret);

-		return ret;

-	}

-

-	ret = zDrvI2S_Write_Start_Do(tId, params);

-	if (ret != DRV_SUCCESS) {

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S_Write_Start  zDrvI2S_Write_Start_Do error ret=%d \r\n", ret);

-		return ret;

-	}

-

-	return DRV_SUCCESS;

-}

-

-/**

-* @brief	i2s read prepare.

-*

-* @param	tId	 i2s selete struct

-* @param	ptCfg	 pointer to config param

-* @return	0-DRV_SUCCESS, other-error

-*/

-SINT32 zDrvI2S_Read_Prepare(T_ZDrvI2S_Id tId, T_ZDrvI2S_Cfg *ptCfg)

-{

-	SINT32 ret = DRV_SUCCESS;

-	T_I2s_Reg *ptReg = NULL;

-	T_I2s_Instance *ptInstance = NULL;

-

-	if (MAX_I2S_ID <= tId || NULL == ptCfg) { /*klocwork 3  INVARIANT_CONDITION.UNREACH  °ÑassertÒÆµ½ifÀïÃæ*/

-		zDrv_ASSERT(0);

-		return DRV_ERR_INVALID_PARAM;

-	}

-

-	ptInstance = &s_i2sInstance[tId];

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S_Read_Prepare \r\n");

-	ptReg = ptInstance->ptDev->regs;

-

-	ret = i2s_RxCheckState(tId, ptCfg);

-	if (ret != DRV_SUCCESS) {

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S_Read_Prepare:  i2s_RxCheckState err ret=%d\r\n", ret);

-		return DRV_ERROR;

-	}

-

-	ptReg->processCtrl |= I2S_EN;

-

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "(zDrvI2S_Read_Prepare(i2s(%d) timing ctrl) = 0x%8x", tId, (s_i2sInstance[tId].ptDev)->regs->timingCtrl);

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "(zDrvI2S_Read_Prepare(i2s(%d) fifo ctrl) = 0x%8x", tId, (s_i2sInstance[tId].ptDev)->regs->fifoCtrl);

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "(zDrvI2S_Read_Prepare(i2s(%d) frame ctrl) = 0x%8x", tId, (s_i2sInstance[tId].ptDev)->regs->frameCntr);

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "(zDrvI2S_Read_Prepare(i2s(%d) fifostatus) = 0x%8x", tId, (s_i2sInstance[tId].ptDev)->regs->fifoStatus);

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "(zDrvI2S_Read_Prepare(i2s(%d) process ctrl) = 0x%8x", tId, (s_i2sInstance[tId].ptDev)->regs->processCtrl);

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S_Read_Prepare(i2s(%d) reg intEn) = 0x%8x", tId, (s_i2sInstance[tId].ptDev)->regs->intEn);

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S_Read_Prepare(i2s(%d) reg intStatus) = 0x%8x\n", tId, (s_i2sInstance[tId].ptDev)->regs->intStatus);

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S_Read_Prepare(i2s(%d) reg data) = 0x%8x\n", tId, (s_i2sInstance[tId].ptDev)->regs->data);

-

-	return DRV_SUCCESS;

-}

-

-/**

-* @brief	i2s read start do.

-*

-* @param	tId	 i2s selete struct

-* @param	params	 pointer to T_ZDrvI2s_Params

-* @return	0-DRV_SUCCESS, other-error

-*/

-SINT32 zDrvI2S_Read_Start_Do(T_ZDrvI2S_Id tId, T_ZDrvI2s_Params *params)

-{

-	SINT32 ret = DRV_SUCCESS;

-	T_I2s_Reg *ptReg = NULL;

-	SINT32 waitTime = 0;

-	T_I2s_Instance *ptInstance = NULL;

-

-	if (MAX_I2S_ID <= tId || NULL == params) { /*klocwork 3  INVARIANT_CONDITION.UNREACH  °ÑassertÒÆµ½ifÀïÃæ*/

-		zDrv_ASSERT(0);

-		return DRV_ERR_INVALID_PARAM;

-	}

-

-	ptInstance = &s_i2sInstance[tId];

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S_Read_Start_Do \r\n");

-	ptReg = ptInstance->ptDev->regs;

-

-	ret += i2s_RxComInit(tId, params);

-

-	if (ptInstance->i2sTransMode == TRANS_INT_MODE) {

-		ret += i2s_IntRxInit(tId);                  /*will enable the RX interrupt*/

-		if (ret != DRV_SUCCESS) {

-			i2s_CleanRxResource(tId);

-			return DRV_ERROR;

-		}

-	} else if (ptInstance->i2sTransMode == TRANS_DMA_MODE) {

-		ret += i2s_DmaRxInit(tId);

-		if (ret != DRV_SUCCESS) {

-			i2s_CleanRxResource(tId);

-			return DRV_ERROR;

-		}

-		ptReg->fifoCtrl |= I2S_RX_DMA_EN0;                          /* enable dma transfer */

-	}

-

-	ptReg->processCtrl |= I2S_RX_OPEN;

-	if (ptInstance->tCfg.bMaster == TRUE) {                       /* wait */

-		bsp_udelay(I2S_ENABLE_DELAY_TIME);

-		waitTime += I2S_ENABLE_DELAY_TIME;

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

-	}

-

-	ptInstance->i2sStatus = ((ptInstance->i2sStatus) == I2S_PLAY_INUSE) ? I2S_BOTH_INUSE : I2S_RECORD_INUSE;

-

-	gI2sTimes = 0;

-	gI2sDmaReadIntTime[tId] = 0;

-	gI2sCntChangeRx[tId] = 0;

-

-	return DRV_SUCCESS;

-}

-

-/**

-* @brief	i2s read start.

-*

-* @param	tId	 i2s selete struct

-* @param	params	 pointer to T_ZDrvI2s_Params

-* @param	ptCfg	 pointer to T_ZDrvI2S_Cfg

-* @return	0-DRV_SUCCESS, other-error

-*/

-SINT32 zDrvI2S_Read_Start(T_ZDrvI2S_Id tId, T_ZDrvI2s_Params *params, T_ZDrvI2S_Cfg *ptCfg)

-{

-	SINT32 ret = DRV_SUCCESS;

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S_Read_Start \r\n");

-

-	ret = zDrvI2S_Read_Prepare(tId, ptCfg);

-	if (ret != DRV_SUCCESS) {

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S_Read_Start  zDrvI2S_Read_Prepare error ret=%d \r\n", ret);

-		return ret;

-	}

-

-	ret = zDrvI2S_Read_Start_Do(tId, params);

-	if (ret != DRV_SUCCESS) {

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S_Read_Start  zDrvI2S_Read_Start_Do error ret=%d \r\n", ret);

-		return ret;

-	}

-

-	return DRV_SUCCESS;

-}

-

-/**

-* @brief	i2s trans data to fifo from ram while playing.

-*

-* @param	tId	 i2s selete struct

-* @param	pBuf	 one buffer is how many bytes

-* @param	uiLen	 buffer length

-*

-* @return	0-DRV_SUCCESS, other-error

-*/

-SINT32 zDrvI2S_Write(T_ZDrvI2S_Id tId, const UINT8 *pBuf, UINT32 uiLen)

-{

-	T_I2s_Instance *ptInstance = NULL;

-	SINT32 ret = DRV_SUCCESS;

-	UINT16 bufLen = 0 ;

-	T_I2s_QueueNode *queueNode = NULL;

-	UINT16 *buf = NULL;

-	T_I2s_TxStream *i2sStream = NULL;

-

-	if (MAX_I2S_ID <= tId || NULL == pBuf || 0 == uiLen || I2S_MAX_TX_BUF_SIZE < uiLen) {

-		i2swrite_tid = tId;

-		i2swrite_pbuf = (UINT32)pBuf;//xiu

-		i2swrite_uilen = uiLen;

-	}

-

-	i2sStream = &s_i2sTxStream[tId];

-	/*klocwork 3  INVARIANT_CONDITION.UNREACH  °ÑassertÒÆµ½ifÀïÃæ*/

-	if (MAX_I2S_ID <= tId || NULL == pBuf || 0 == uiLen || I2S_MAX_TX_BUF_SIZE < uiLen) {

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S_Write invalid para tId=%d,pBuf=0x%p,uiLen=%d \n", tId, pBuf, uiLen);

-		zDrv_ASSERT(0);

-		return DRV_ERR_INVALID_PARAM;

-	}

-

-	ptInstance = &s_i2sInstance[tId];

-	if ((ptInstance->i2sStatus != I2S_PLAY_INUSE) && (ptInstance->i2sStatus != I2S_BOTH_INUSE)) {

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S_Write i2sStatus not support =%d \n", ptInstance->i2sStatus);

-		return DRV_ERR_NOT_STARTED;

-	}

-

-	zOss_GetMutex(ptInstance->txMutex, ZOSS_WAIT_FOREVER);

-	ret = i2s_UpdateTxBufferStatus(tId, (UINT16 *)pBuf, BUFFER_FULL);      /*ÉϲãÍù*pBufдÍêÊý¾Ýºó£¬¸Ä±äBUF״̬ΪFULL*/

-	if (ret != DRV_SUCCESS) {

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S_Write i2s_UpdateTxBufferStatus err ret=%d \n", ret);

-		ret =  DRV_ERROR;

-		goto exit;

-	}

-	i2sStream->txWrIdx = (i2sStream->txWrIdx + 1) % I2S_OUT_BUF_NUM;

-

-	if ((s_i2sTxStream[tId].pauseFlag == FALSE) && (s_i2sTxStream[tId].Transing == FALSE)) {

-		i2sStream->Transing = TRUE;

-		dma_async_issue_pending(i2sDmaState[tId][I2S_TX].ch);

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

-	}

-

-exit:

-	zOss_PutMutex(ptInstance->txMutex);

-	return ret;

-}

-

-/**

-* @brief	This function is used to read data by i2s.

-*

-* @param	tId	 i2s select i2s0 or i2s1

-* @param	pBuf	 one buffer is how many bytes

-* @param	uiLen	 buffer length

-*

-* @return	0-DRV_SUCCESS, other-error

-*/

-SINT32 zDrvI2S_Read(T_ZDrvI2S_Id tId, UINT8 **pBuf, UINT32 *uiLen)

-{

-	T_I2s_Instance *ptInstance = NULL;

-	SINT32 ret = DRV_SUCCESS;

-	T_I2s_QueueNode *queueNode = NULL;

-	T_I2s_RxStream *i2sStream = NULL;

-

-	/*klocwork 3  INVARIANT_CONDITION.UNREACH  °ÑassertÒÆµ½ifÀïÃæ*/

-	if (MAX_I2S_ID <= tId || NULL == pBuf || NULL == uiLen) {

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S_Read invalid para tId=%d,pBuf=0x%p,uiLen=%p \n", tId, pBuf, uiLen);

-		zDrv_ASSERT(0);

-		return DRV_ERR_INVALID_PARAM;

-	}

-	i2sStream = &s_i2sRxStream[tId];

-	ptInstance = &s_i2sInstance[tId];

-	if ((ptInstance->i2sStatus != I2S_RECORD_INUSE) && (ptInstance->i2sStatus != I2S_BOTH_INUSE)) {

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S_Read i2sStatus not support =%d \n", ptInstance->i2sStatus);

-		return DRV_ERR_NOT_STARTED;

-	}

-

-	if (ZOSS_SUCCESS != zOss_GetSemaphore(s_i2sRxStream[tId].rxSem, ZOSS_WAIT_FOREVER)) {

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S_Read zOss_GetSemaphore error");

-		return DRV_ERROR;

-	}

-

-	zOss_GetMutex(ptInstance->rxMutex, ZOSS_WAIT_FOREVER);

-

-	*pBuf = i2sStream->rxBufferArray[i2sStream->rxRdIdx].buf;

-	*uiLen = i2sStream->rxLen;

-	i2s_UpdateRxBufferStatus(tId, (UINT16 *)i2sStream->rxBufferArray[i2sStream->rxRdIdx].buf, BUFFER_READ);

-

-#if 0

-	ret = i2s_QueueGet(&(s_i2sRxStream[tId].rxQueue), &queueNode);

-	if (ret != DRV_SUCCESS) {

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S_Read i2s_QueueGet error");

-		ret = DRV_ERROR;

-		goto exit;

-	}

-

-	if (NULL != queueNode) {

-		*pBuf = (UINT8 *)queueNode->pBuf;

-		*uiLen = queueNode->len * sizeof(UINT16);

-		ret = i2s_UpdateRxBufferStatus(tId, queueNode->pBuf, BUFFER_READ);

-		if (ret != DRV_SUCCESS) {

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S_Read i2s_UpdateRxBufferStatus error");

-			ret = DRV_ERROR;

-			goto exit;

-		}

-	} else {

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S_Read queueNode==NULL error");

-		ret = DRV_ERROR;

-		goto exit;

-	}

-#endif

-exit:

-	zOss_PutMutex(ptInstance->rxMutex);

-	return ret;

-

-}

-

-/**

-* @brief 	i2s write stop ,use to stop playing or recording.

-*

-* @param	tId	 i2s select i2s0 or i2s1

-*

-* @return	0-DRV_SUCCESS, other-error

-*/

-SINT32 zDrvI2S_Write_Stop(T_ZDrvI2S_Id tId)

-{

-	T_I2s_Instance *ptInstance = NULL;

-	T_I2s_Reg *ptReg = NULL;

-	SINT32 ret = DRV_SUCCESS;

-	UINT32 regVal = 0, count = 9;

-	T_I2s_TxStream *txStream = NULL;

-

-	if (MAX_I2S_ID <= tId) { /*klocwork 3  INVARIANT_CONDITION.UNREACH  °ÑassertÒÆµ½ifÀïÃæ*/

-		zDrv_ASSERT(0);

-		return DRV_ERR_INVALID_PARAM;

-	}

-

-	txStream = &s_i2sTxStream[tId];

-	ptInstance = &s_i2sInstance[tId];

-	ptReg = ptInstance->ptDev->regs;

-

-	if ((ptInstance->i2sStatus != I2S_PLAY_INUSE) && (ptInstance->i2sStatus != I2S_BOTH_INUSE)) {

-		return DRV_ERR_NOT_STARTED;

-	}

-

-	if (g_voiceVar.isUseSlicCodec == 1) {

-		while (count--) {

-			regVal = ptReg->fifoStatus;

-			if (((regVal >> 8) & 0x7f) == 0x20)

-				break;

-			zOss_Sleep(1);

-		}

-	}

-

-	ptReg->processCtrl &= ~I2S_TX_OPEN;                /*disable tx only */

-	if (ptInstance->i2sTransMode == TRANS_DMA_MODE) {

-		ptReg->fifoCtrl &= ~I2S_TX_DMA_EN;

-		dma_release_channel(i2sDmaState[tId][I2S_TX].ch);

-	}

-#ifdef _USE_AUDIO_ON_7520V2

-	/* reset tx fifo */

-	ptReg->fifoCtrl |= I2S_TX_FIFO_RST;

-#endif

-	ptReg->intStatus |= I2S_TX_TRIG_INT;

-	ptReg->intEn &= ~I2S_TX_TRIG_INT_EN;       /* disable tx interrupt */

-

-	zOss_GetMutex(ptInstance->txMutex, ZOSS_WAIT_FOREVER);

-

-	i2s_CleanTxResource(tId);

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

-	/*if(ret != DRV_SUCCESS) {

-		ret = DRV_ERROR;

-	}*/

-	zOss_PutMutex(ptInstance->txMutex);

-

-	txStream->txTransmit = NULL;

-	txStream->channel = AUDIO_MONO_CHANNEL;

-	txStream->txLen = 0;

-	txStream->p_cb = NULL;

-

-	if (ptInstance->i2sStatus != I2S_BOTH_INUSE) {

-		ptInstance->i2sStatus = I2S_OPEN;

-	} else {

-		ptInstance->i2sStatus = I2S_RECORD_INUSE;

-	}

-

-	return ret;

-}

-

-/**

-* @brief i2s read stop ,use to stop playing or recording.

-*

-* @param	tId	 i2s select i2s0 or i2s1

-*

-* @return	0-DRV_SUCCESS, other-error

-*/

-SINT32 zDrvI2S_Read_Stop(T_ZDrvI2S_Id tId)

-{

-	T_I2s_Instance *ptInstance = NULL;

-	T_I2s_Reg *ptReg = NULL;

-	SINT32 ret = DRV_SUCCESS;

-

-	if (MAX_I2S_ID <= tId) { /*klocwork 3  INVARIANT_CONDITION.UNREACH  °ÑassertÒÆµ½ifÀïÃæ*/

-		zDrv_ASSERT(0);

-		return DRV_ERR_INVALID_PARAM;

-	}

-	ptInstance = &s_i2sInstance[tId];

-	ptReg = ptInstance->ptDev->regs;

-	if ((ptInstance->i2sStatus != I2S_RECORD_INUSE) && (ptInstance->i2sStatus != I2S_BOTH_INUSE)) {

-		return DRV_ERR_NOT_STARTED;

-	}

-

-	ptReg->processCtrl &= ~I2S_RX_OPEN;                /*disable tx only */

-

-	if (ptInstance->i2sTransMode == TRANS_DMA_MODE) {

-		ptReg->fifoCtrl &= ~I2S_RX_DMA_EN0;

-		dma_release_channel(i2sDmaState[tId][I2S_RX].ch);

-	}

-#ifdef _USE_AUDIO_ON_7520V2

-	ptReg->fifoCtrl |= I2S_RX_FIFO_RST;    /* reset tx/rx fifo */

-#endif

-	ptReg->intStatus |= I2S_RX_TRIG_INT;

-	ptReg->intEn &= ~I2S_RX_TRIG_INT_EN;       /* disable tx interrupt */

-

-	zOss_GetMutex(ptInstance->rxMutex, ZOSS_WAIT_FOREVER);

-

-	ret = i2s_CleanRxResource(tId);

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

-	/*

-	if(ret != DRV_SUCCESS) {

-		ret = DRV_ERROR;

-	}*/

-	zOss_PutMutex(ptInstance->rxMutex);

-

-	if (ptInstance->i2sStatus != I2S_BOTH_INUSE) {

-		ptInstance->i2sStatus = I2S_OPEN;

-	} else {

-		ptInstance->i2sStatus = I2S_PLAY_INUSE;

-	}

-

-	return ret;

-}

-

-/**

-* @brief  	i2s get buffer ,get buffer to write playing data.

-*

-* @param	tId	 i2s select i2s0 or i2s1

-* @param	pBuf	 playing data buffer

-* @param	uiLen	 buffer length

-* @return	0-DRV_SUCCESS, other-error

-*/

-SINT32 zDrvI2S_GetBuf(T_ZDrvI2S_Id tId, UINT8 **pBuf, UINT32 *uiLen)

-{

-	UINT8 txIndex = 0;

-	T_I2s_Instance *ptInstance = NULL;

-	T_I2s_TxStream *i2sStream = NULL;

-

-	SINT32 ret = DRV_SUCCESS;

-

-	/*klocwork 3  INVARIANT_CONDITION.UNREACH  °ÑassertÒÆµ½ifÀïÃæ*/

-	if ((NULL == pBuf) || (NULL == uiLen) || (tId >= MAX_I2S_ID)) {

-		zDrv_ASSERT(0);

-		return DRV_ERR_INVALID_PARAM;

-	}

-

-	i2sStream = &s_i2sTxStream[tId];

-	ptInstance = &s_i2sInstance[tId];

-

-	if ((ptInstance->i2sStatus != I2S_PLAY_INUSE) && (ptInstance->i2sStatus != I2S_BOTH_INUSE)) {

-		return DRV_ERR_NOT_STARTED;

-	}

-

-	if (ZOSS_SUCCESS != zOss_GetSemaphore(i2sStream->txSem, I2S_SEM_WAIT_TIME)) {  /*changed by dangpeixia[2010.9.20]*/

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S_GetBuf zOss_GetSemaphore err!\n");

-		return DRV_ERROR;

-	}

-

-	zOss_GetMutex(ptInstance->txMutex, ZOSS_WAIT_FOREVER);

-	if (i2sStream->txBufferArray == NULL) {

-		ret = DRV_ERROR;/*  ½â¾öPSµ÷ÁËSTOPºóLTE¼ÌÐøÐ´Êý¾Ý·ÃÎÊ¿ÕÖ¸ÕëËÀ»ú */

-		goto exit;

-	}

-

-	txIndex = i2sStream->txWrIdx;

-

-	*pBuf = i2sStream->txBufferArray[txIndex].buf;

-	*uiLen = i2sStream->txLen;

-	i2sStream->txBufferArray[txIndex].i2sBufStatus = BUFFER_WRITE;

-

-exit:

-	zOss_PutMutex(ptInstance->txMutex);

-	return ret;

-}

-

-#if 0

-/**

-* @brief 	i2s both stop ,gif copying record data end, free buffer to continue record.

-*

-* @param	tId	 i2s select i2s0 or i2s1

-* @return	0-DRV_SUCCESS, other-error

-*/

-SINT32 zDrvI2S_Both_Stop(T_ZDrvI2S_Id tId)

-{

-	T_I2s_Instance *ptInstance = NULL;

-	T_I2s_Reg *ptReg = NULL;

-	SINT32 ret = DRV_SUCCESS;

-

-	zDrv_ASSERT(tId < MAX_I2S_ID);

-	if (MAX_I2S_ID <= tId) {

-		return DRV_ERR_INVALID_PARAM;

-	}

-

-	ptInstance = &s_i2sInstance[tId];

-	ptReg = ptInstance->ptDev->regs;

-	if ((ptInstance->i2sStatus != I2S_RECORD_INUSE) && (ptInstance->i2sStatus != I2S_BOTH_INUSE) && (ptInstance->i2sStatus != I2S_PLAY_INUSE)) {

-		return DRV_ERR_NOT_STARTED;

-	}

-	ptReg->processCtrl &= ~(I2S_TX_OPEN | I2S_RX_OPEN);                 /*disable I2S ,Tx ,RX */

-	if (ptInstance->i2sTransMode == TRANS_DMA_MODE) {

-		ptReg->fifoCtrl &= ~(I2S_RX_DMA_EN0 | I2S_TX_DMA_EN);

-	}

-#ifdef _USE_AUDIO_ON_7520V2

-	ptReg->fifoCtrl |= I2S_RX_FIFO_RST | I2S_TX_FIFO_RST;  /* reset tx/rx fifo */

-#endif

-	ptReg->intStatus |= I2S_RX_TRIG_INT | I2S_TX_TRIG_INT;

-	ptReg->intEn &= ~(I2S_RX_TRIG_INT_EN | I2S_TX_TRIG_INT_EN);      /* disable tx interrupt */

-	ptReg->processCtrl &= ~I2S_EN;                /*disable I2S ,Tx ,RX */

-

-	ret = i2s_CleanRxResource(tId);

-	ret += i2s_CleanTxResource(tId);

-

-	ptInstance->i2sStatus = I2S_OPEN;

-

-	return ret;

-}

-#endif

-

-/**

-* @brief 	i2s free buffer ,get buffer to write playing data.

-*

-* @param	tId  i2s select i2s0 or i2s1

-* @param	pBuf	 data buffer

-* @return	0-DRV_SUCCESS, other-error

-*/

-SINT32 zDrvI2S_FreeBuf(T_ZDrvI2S_Id tId, UINT8 *pBuf)

-{

-	SINT32 i = 0;

-	T_I2s_Instance *ptInstance = NULL;

-	T_I2s_RxStream *i2sStream = NULL;

-	SINT32 ret = DRV_SUCCESS;

-

-	if ((UINT8 *)NULL == pBuf || tId >= MAX_I2S_ID) { //xiu

-		freebufferadd = (UINT32)pBuf;//xiu

-		freebuffertid = tId;

-	}

-

-	if (NULL == pBuf || tId >= MAX_I2S_ID) { /*klocwork 3  INVARIANT_CONDITION.UNREACH  °ÑassertÒÆµ½ifÀïÃæ*/

-		zDrv_ASSERT(0);

-		return DRV_ERR_INVALID_PARAM;

-	}

-

-	i2sStream = &s_i2sRxStream[tId];

-	ptInstance = &s_i2sInstance[tId];

-

-	if (ptInstance->i2sStatus != I2S_RECORD_INUSE && ptInstance->i2sStatus != I2S_BOTH_INUSE) {

-		return DRV_ERR_NOT_STARTED;

-	}

-

-

-	zOss_GetMutex(ptInstance->rxMutex, ZOSS_WAIT_FOREVER);

-	i2s_UpdateRxBufferStatus(tId, (UINT16 *)i2sStream->rxBufferArray[i2sStream->rxRdIdx].buf, BUFFER_NULL);

-	i2sStream->rxRdIdx = (i2sStream->rxRdIdx + 1) % I2S_OUT_BUF_NUM ;

-

-#if 0

-	if (i2sStream->rxBufferArray == NULL) {

-		ret = DRV_ERROR;

-		goto exit;

-	}

-	while (i < I2S_OUT_BUF_NUM) {

-		if (i2sStream->rxBufferArray[i].buf == pBuf) {

-			i2sStream->rxBufferArray[i].i2sBufStatus = BUFFER_NULL;

-			break;

-		}

-		i++;

-	}

-

-	if (i == I2S_OUT_BUF_NUM) {

-		ret = DRV_ERROR;

-		goto exit;

-	}

-#endif

-exit:

-	zOss_PutMutex(ptInstance->rxMutex);

-

-	return ret;

-}

-

-#if 0

-/**

-* @brief	i2s free buffer ,get buffer to write playing data.

-*

-* @param	tId  i2s select i2s0 or i2s1

-* @param	pBuf	 data buffer

-* @return	0-DRV_SUCCESS, other-error

-*/

-SINT32 zDrvI2S_GetRemained(T_ZDrvI2S_Id tId, UINT32 *len)

-{

-	T_I2s_Queue *i2sQueue = &(s_i2sTxStream[tId].txQueue);

-	UINT8 index = 0;

-	UINT32 uiLen = 0;

-	T_I2s_Instance *ptInstance = NULL;

-

-	zDrv_ASSERT((len != NULL) && (tId < MAX_I2S_ID));

-	if ((NULL == len) || (tId >= MAX_I2S_ID)) {

-		return DRV_ERR_INVALID_PARAM;

-	}

-	ptInstance = &s_i2sInstance[tId];

-	if ((ptInstance->i2sStatus != I2S_PLAY_INUSE) && (ptInstance->i2sStatus != I2S_BOTH_INUSE)) {

-		return DRV_ERR_NOT_STARTED;

-	}

-

-	index = i2sQueue->readIndex;

-	while (index != i2sQueue->writeIndex) {

-		uiLen += i2sQueue->data[index].len;

-		index = (index + 1) % I2S_QUEUE_SIZE;

-	}

-

-	*len = uiLen * sizeof(UINT16);

-

-	return DRV_SUCCESS;

-}

-

-/**

-* @brief	pause while playing.

-*

-* @param	tId	 i2s select i2s0 or i2s1

-* @return	0-DRV_SUCCESS, other-error

-*/

-VOID zDrvI2S_Pause(T_ZDrvI2S_Id tId)

-{

-	T_I2s_Instance *ptInstance = NULL;

-	zDrv_ASSERT(tId < MAX_I2S_ID);

-	if (tId >= MAX_I2S_ID) {

-		return;

-	}

-

-	ptInstance = &s_i2sInstance[tId];

-	if ((ptInstance->i2sStatus != I2S_PLAY_INUSE) && (ptInstance->i2sStatus != I2S_BOTH_INUSE)) {

-		return;

-	}

-

-	s_i2sTxStream[tId].pauseFlag = TRUE;

-}

-

-/**

-* @brief	resume playing if pause.

-*

-* @param	tId	 i2s select i2s0 or i2s1

-* @return	0-DRV_SUCCESS, other-error

-*/

-VOID zDrvI2S_Resume(T_ZDrvI2S_Id tId)

-{

-	T_I2s_Instance *ptInstance = NULL;

-	T_I2s_TxStream *i2sStream = &s_i2sTxStream[tId];

-	T_I2s_QueueNode *queueNode = NULL;

-	SINT32 ret = DRV_SUCCESS;

-

-	zDrv_ASSERT(tId < MAX_I2S_ID);

-	if (tId >= MAX_I2S_ID) {

-		return;

-	}

-

-	ptInstance = &s_i2sInstance[tId];

-	if ((ptInstance->i2sStatus != I2S_PLAY_INUSE) && (ptInstance->i2sStatus != I2S_BOTH_INUSE)) {

-		return;

-	}

-

-	ret = i2s_QueueGet(&(i2sStream->txQueue), &queueNode);

-	if (ret != DRV_SUCCESS) {

-		return;

-	}

-

-	if (queueNode != NULL) {

-		i2sStream->Transing = TRUE;

-		i2s_UpdateTxBufferStatus(tId, queueNode->pBuf, BUFFER_READ);

-		ret = i2sStream->txTransmit(tId, queueNode->pBuf, queueNode->len);

-	}

-

-	if (ret != DRV_SUCCESS) {

-		return;

-	}

-

-	i2sStream->pauseFlag = FALSE;

-

-	return;

-}

-#endif

-

-/**

-* @brief	Release the rx semaphore before stop.

-*

-* @param	tId			i2s select i2s0 or i2s1

-* @return	0-DRV_SUCCESS, other-error

-*/

-VOID zDrvI2s_RxRlsSemaBeforeStop(T_ZDrvI2S_Id tId)

-{

-	T_I2s_RxStream *i2sRxStream = &s_i2sRxStream[tId];

-	zOss_PutSemaphore(i2sRxStream->rxSem);

-}

-

-/**

-* @brief	Release the tx semaphore before stop.

-*

-* @param	tId			i2s select i2s0 or i2s1

-* @return	0-DRV_SUCCESS, other-error

-*/

-VOID zDrvI2s_TxRlsSemaBeforeStop(T_ZDrvI2S_Id tId)

-{

-	T_I2s_TxStream *i2sTxStream = &s_i2sTxStream[tId];

-	zOss_PutSemaphore(i2sTxStream->txSem);

-}

-

-/**

-* @brief	set top i2s config.

-*

-* @param	VOID

-* @return	0-DRV_SUCCESS, other-error

-*/

-VOID vp_SetTopI2sConfig(VOID)

-{

-#if 0

-	UINT32 AmrRegBit = 0;

-	int ret;

-#if defined _USE_AUDIO_ON_7520V2

-#ifdef TOP_I2S0_PIN_CONNECT

-	/*i2s0 pin cfg*/

-	audioGpioWsHandle = zDrvGpio_Request("i2s0_ws");

-	zDrvGpio_SetFunc(audioGpioWsHandle, GPIO38_I2S0_WS);

-	audioGpioClkHandle = zDrvGpio_Request("i2s0_clk");

-	zDrvGpio_SetFunc(audioGpioClkHandle, GPIO39_I2S0_CLK);

-	audioGpioDinHandle = zDrvGpio_Request("i2s0_din");

-	zDrvGpio_SetFunc(audioGpioDinHandle, GPIO40_I2S0_DIN);

-	audioGpioDoutHandle = zDrvGpio_Request("i2s0_dout");

-	zDrvGpio_SetFunc(audioGpioDoutHandle, GPIO41_I2S0_DOUT);

-#else

-	/*i2s1 pin cfg*/

-	audioGpioWsHandle = zDrvGpio_Request("i2s1_ws");

-	zDrvGpio_SetFunc(audioGpioWsHandle, GPIO42_I2S1_WS);

-	audioGpioClkHandle = zDrvGpio_Request("i2s1_clk");

-	zDrvGpio_SetFunc(audioGpioClkHandle, GPIO43_I2S1_CLK);

-	audioGpioDinHandle = zDrvGpio_Request("i2s1_din");

-	zDrvGpio_SetFunc(audioGpioDinHandle, GPIO44_I2S1_DIN);

-	audioGpioDoutHandle = zDrvGpio_Request("i2s1_dout");

-	zDrvGpio_SetFunc(audioGpioDoutHandle, GPIO45_I2S1_DOUT);

-#endif

-#elif defined _USE_AUDIO_ON_7520V3

-	ret = gpio_request(PIN_I2S0_WS, "i2s0_ws");

-	if (ret < 0)

-		BUG();

-	ret = gpio_request(PIN_I2S0_CLK, "i2s0_clk");

-	if (ret < 0)

-		BUG();

-	ret = gpio_request(PIN_I2S0_DIN, "i2s0_din");

-	if (ret < 0)

-		BUG();

-	ret = gpio_request(PIN_I2S0_DOUT, "i2s0_dout");

-	if (ret < 0)

-		BUG();

-	zx29_gpio_config(PIN_I2S0_WS, FUN_I2S0_WS);

-	zx29_gpio_config(PIN_I2S0_CLK, FUN_I2S0_CLK);

-	zx29_gpio_config(PIN_I2S0_DIN, FUN_I2S0_DIN);

-	zx29_gpio_config(PIN_I2S0_DOUT, FUN_I2S0_DOUT);

-

-	ret = gpio_request(PIN_I2S1_WS, "i2s1_ws");

-	if (ret < 0)

-		BUG();

-	ret = gpio_request(PIN_I2S1_CLK, "i2s1_clk");

-	if (ret < 0)

-		BUG();

-	ret = gpio_request(PIN_I2S1_DIN, "i2s1_din");

-	if (ret < 0)

-		BUG();

-	ret = gpio_request(PIN_I2S1_DOUT, "i2s1_dout");

-	if (ret < 0)

-		BUG();

-	zx29_gpio_config(PIN_I2S1_WS, FUN_I2S1_WS);

-	zx29_gpio_config(PIN_I2S1_CLK, FUN_I2S1_CLK);

-	zx29_gpio_config(PIN_I2S1_DIN, FUN_I2S1_DIN);

-	zx29_gpio_config(PIN_I2S1_DOUT, FUN_I2S1_DOUT);

-#endif

-

-	/* top i2s1(no i2s2)cfg */

-	AmrRegBit = ARM_I2S_LOOP_CFG;

-#ifdef TOP_I2S0_PIN_CONNECT

-	/*i2s0 pin cfg*/

-	AmrRegBit &= 0xfffffff8;

-	AmrRegBit |= 0x00000001; /* inter arm_i2s1--top i2s1 */

-#else

-	/*i2s1 pin cfg*/

-	AmrRegBit &= 0xfff8ffff;

-	AmrRegBit |= 0x00010000; /* inter arm_i2s1--top i2s2 */

-#endif

-	/* inter loop */

-	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

-}

-

-/**

-* @brief	get i2s status.

-*

-* @param	tId	 i2s select i2s0 or i2s1

-* @return	0-DRV_SUCCESS, other-error

-*/

-T_I2s_Status zDrvI2s_GetI2sStatus(T_ZDrvI2S_Id tId)

-{

-	return (s_i2sInstance[tId].i2sStatus);

-}

-static int __init i2s_init(void)

-{

-//	printk("i2s_init register\n");

-	return platform_device_register(&i2s_device);

-}

-

-static void __exit i2s_exit(void)

-{

-//	printk("i2s_exit unregister\n");

-	platform_device_unregister(&i2s_device);

-}

-

-module_init(i2s_init);

-module_exit(i2s_exit);

-

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
deleted file mode 100755
index 371297d..0000000
--- a/Uboot/cp/ps/driver/src/chipsets/src/audio_base/include/hal_voiceprocess.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/*********************************************************************

- Copyright 2007 by  ZTE Corporation.

- *

- * FileName::    hal_voiceprocess.h

- * File Mark:

-* Description:  This file contains the hardware interface for touch screen driver

-* Others:

-* Version:  	

-* Author:  	xuxinqiang

-* Date:  	2015-08-29

-

-* History 1:

-*     Date:

-*     Version:

-*     Author:

-*     Modification:

-* History 2:

-**********************************************************************/

-#ifndef _HAL_VOICEPROCESS_H

-#define _HAL_VOICEPROCESS_H

-

-/**************************************************************************

- *                                                 Include files                                	    *

- **************************************************************************/

-

-/**************************************************************************

- *                                                 Macro                                    	            *

- **************************************************************************/

-#if 0

-#define VOICE_TONE_MIXER_FUNCTION 

-//#define TEST_WHITE_NOISE

-

-

-

-/****************************************************************************

-* 	                                        Global Constants                                        *

-****************************************************************************/

-

-

-

-

-/****************************************************************************

-* 	                                         Global Variables                                        *

-****************************************************************************/

-

-

-/****************************************************************************

-* 	                                         Function Prototypes                                    *

-****************************************************************************/

-typedef enum

-{

-    VP_I2S_IDLE = 0,

-    VP_I2S_OPEN,

-    VP_I2S_INUSE,

-    VP_LOOP_ON

-}

-T_Vp_I2sStatus;

-

-#endif

-/**************************************************************************

- *                              Function Prototypes                                    *

- **************************************************************************/

-

-

-

-

-

-

-

-

-#endif /*_HAL_VOICEPROCESS_H*/

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
deleted file mode 100755
index 322aea4..0000000
--- a/Uboot/cp/ps/driver/src/chipsets/src/audio_base/tdm/hal_tdm.c
+++ /dev/null
@@ -1,3846 +0,0 @@
-/***********************************************************************

-* Copyright (C) 2016, ZTE Corporation.

-*

-* File Name:    hal_tdm.c

-* File Mark:

-* Description:  tdm realization.

-* Others:

-* Version:  v1.0

-* Author:   daixunkang

-* Date:      2018-02-26

-*

-

-**********************************************************************/

-#ifdef _OS_OSE

-#include "outfmt.h"

-#include "ose.h"

-#include "cpu.h"

-#include "dda_pci.h"

-#include "dda_utils.h"

-#include "dda_err.h"

-#include "dda_drm.h"

-#include "dda_strings.h"

-#include "device.sig"

-#include "inputdev.sig"

-#include "ramlog.h"

-#include "ose_syms.h"

-#endif

-

-#include "drvs_general.h"

-#include "drvs_tdm.h"

-#include "drvs_pow.h"

-//#include "dma_cfg.h"

-//#include "drvs_dma.h"

-#include "ThreadPriority.h"

-#include "drvs_chip_cfg.h"

-#include "drvs_sys.h"

-#include "drvs_voiceprocess.h"

-#include <linux/init.h>

-#include <linux/platform_device.h>

-//#include <cyg/hal/tos_cache.h>

-#include <linux/slab.h>

-#include <linux/dma-mapping.h>

-#include <linux/module.h>

-#include <linux/dmaengine.h>

-#include <mach/board.h>

-#include <mach/dma.h>

-#include <mach/iomap.h>

-#include <asm/io.h>

-/*************************************************************************

-  *                                  Macro                                *

-  *************************************************************************/

-/*version and the driver name*/

-#define TDM_DRIVER_NAME             "tdm"

-#define TDM_DRIVER_VERSION          1

-

-//#define ARM_TDM_LOOP_SET	*((volatile unsigned int *)(ZX_SOC_SYS_BASE + 0x60))

-

-/* version register */

-#define TDM_VERSION     				0x0104	/*TDM Version V1.4*/

-

-/* Timing control register */

-

-#define TDM_FS_POS                   (0x1<<0)  /*TDM FSYNC positive edge select*/

-#define TDM_TX_POS                   (0x1<<1)  /*TDM TX positive edge select*/

-#define TDM_RX_POS                   (0x1<<2)  /*TDM RX positive edge select*/

-#define TDM_TS_WIDTH(x)              (((x)&0x3)<<5)  /* TDM timeslot width, 

-                                                         00---8 clk/slot, 

-                                                         01---16 clk/slot, 

-                                                         10---32 clk/slot  */

-#define TDM_TS_NUM(x)                (((x)&0x7F)<<7)  /*TDM timeslot NUM(+1) of one frame*/

-#define TDM_FS_WIDTH(x)              (((x)&0x1F)<<14)  /*TDM FSYNC width NUM(+1)*/

-#define TDM_FS_ACTIVE(x)             (((x)&0x1)<<19)         /*TDM FSYNC active low*/

-#define TDM_LSB_FIRST(x)             (((x)&0x1)<<20)         /*TDM LSB first*/

-#define TDM_MASTER_EN                (0x1<<21)         /*TDM master mode*/

-#define TDM_TEST_MODE                (0x1<<22)		   /*test Mode*/

-

-/* Offset register */

-#define TDM_TX_OFFSET(x)             (((x)&0xFFF)<<0)  /*TDM bit offset number of TX DATA*/

-#define TDM_RX_OFFSET(x)             (((x)&0xFFF)<<16) /*TDM bit offset number of RX DATA*/

-

-

-/* TX fifo control register */

-#define TDM_TX_FIFO_RST               (0x1<<0)   /*reset tx fifo */

-#define TDM_TX_DMA_EN                 (0x1<<1)   /*Transmit DMA enable*/

-#define TDM_TX_FIFO_THRESHOLD(x)      (((x)&0xf)<<2)	/*Transmit FIFO interrupt/DMA trigger threshold*/

-

-/* RX fifo control register */

-#define TDM_RX_FIFO_RST               (0x1<<0)   /*reset rx fifo */

-#define TDM_RX_DMA_EN                 (0x1<<1)   /*Receive DMA enable*/

-#define TDM_RX_FIFO_THRESHOLD(x)      (((x)&0xf)<<2)	/*Receive FIFO interrupt/DMA trigger threshold*/

-

-/* tx fifo status register */

-#define TDM_TX_FIFO_THRESHOLD_INT     (0x1<<0) /*TX FIFO reach threshold*/

-#define TDM_TX_FIFO_EMPTY             (0x1<<2) /*TX FIFO empty*/

-#define TDM_TX_FIFO_CNTR           

-

-/* rx fifo status register */

-#define TDM_RX_FIFO_THRESHOLD_INT     (0x1<<0) /*RX FIFO reach threshold*/

-#define TDM_RX_FIFO_FULL             (0x1<<2) /*RX FIFO full*/

-#define TDM_RX_FIFO_CNTR           

-

-/* interrupt enable register */

-#define TDM_INT_EN_TX_THRESHOLD       (0x1<<0) /*TX FIFO threshold interrup enable*/

-#define TDM_INT_EN_RX_THRESHOLD       (0x1<<1) /*RX FIFO threshold interrup enable*/

-#define TDM_INT_EN_TX_UNDERRUN        (0x1<<2) /*Transmit underflow interrup enable*/

-#define TDM_INT_EN_RX_OVERRUN         (0x1<<3) /*receive overflow interrup enable*/

-#define TDM_INT_EN_RD_CNT             (0x1<<4) /*read counter threshold interrup enable*/

-#define TDM_INT_EN_WR_CNT             (0x1<<5) /*write counter threshold interrup enable*/

-#define TDM_INT_EN_SYNC_FAIL          (0x1<<6) /*FS sync fail interrup enable*/

-

-/* interrupt status */

-#define TDM_INT_TX_THRESHOLD          (0x1<<0) 

-#define TDM_INT_RX_THRESHOLD          (0x1<<1) 

-#define TDM_INT_TX_UNDERRUN           (0x1<<2) 

-#define TDM_INT_RX_OVERRUN            (0x1<<3) 

-#define TDM_INT_RD_CNT                (0x1<<4) 

-#define TDM_INT_WR_CNT                (0x1<<5) 

-#define TDM_INT_SYNC_FAIL             (0x1<<6) 

-

-/* frame counter */

-#define TDM_FRAME_CNTR(x)              ((x)&0x3fffffff)

-#define TDM_FRAME_CNTR_EN              (0x1<<30)

-#define TDM_FRAME_CNTR_RST             (0x1<<31)

-

-/* write control counter */

-#define TDM_WR_CNTR_THRESHOLD(x)       ((x)&0x3fffffff)

-#define TDM_WR_CNTR_EN                 (0x1<<30)

-#define TDM_WR_CNTR_RST                (0x1<<31)

-

-/* write counter */

-#define TDM_WR_CNTR(x)                 ((x)&0x3fffffff)

-

-/* write counter2 */

-#define TDM_WR_CNTR2(x)                ((x)&0x3fffffff)

-#define TDM_WR_CNTR2_EN                (0x1<<30)

-#define TDM_WR_CNTR2_RST               (0x1<<31)

-

-/* read control counter */

-#define TDM_RD_CNTR_THRESHOLD(x)       ((x)&0x3fffffff)

-#define TDM_RD_CNTR_EN                 (0x1<<30)

-#define TDM_RD_CNTR_RST                (0x1<<31)

-

-/* read counter */

-#define TDM_RD_CNTR(x)                 ((x)&0x3fffffff)

-

-/* read counter2 */

-#define TDM_RD_CNTR2(x)                ((x)&0x3fffffff)

-#define TDM_RD_CNTR2_EN                (0x1<<30)

-#define TDM_RD_CNTR2_RST               (0x1<<31)

-

-/* Timeslot mask 0 */

-#define TS_MAKS0_TS1                   (0x1<<0)  /*time slot 1 enable*/

-

-/* Timeslot mask 1 */

-#define TS_MAKS0_TS2                   (0x1<<2)|(0x1<<0)  /*time slot 1/3 enable*/

-

-/* process control register */

-#define TDM_TX_OPEN     				(0x1<<0)	/*TX enable*/

-#define TDM_RX_OPEN     				(0x1<<1)	/*RX enable*/

-#define TDM_EN							(0x1<<2)

-

-/* default rx/tx trigger threadhold */

-#define TDM_RXFL_VAL                    (0x8)

-#define TDM_TXFL_VAL                    (0x8)

-

-#define TDM_ENABLE_DELAY_TIME       (10)      /* us */  //10

-

-#define TDM_OUT_BUF_NUM             3

-#define TDM_UPLINK_SEM_NUM          3

-#define TDM_DOWNLINK_SEM_NUM        0

-#define TDM_MAX_VOICE_GSM_MEM_SIZE	320

-#define TDM_MAX_VOICE_LTE_MEM_SIZE	640

-#define TDM_MAX_RX_BUF_SIZE         2048            /*2kBytes*/

-#define TDM_MAX_TX_BUF_SIZE         8192           /*8kBytes*/

-

-#define TDM_SEM_WAIT_TIME           2500

-

-#define TDM_QUEUE_SIZE              (TDM_OUT_BUF_NUM + 1)

-#define TDM_WAIT_TIME               100

-#define TDM_INTCTRL_TEST_MODE    TRUE

-

-#if defined (_USE_AUDIO_ON_7520V3)

-

-#define TDM_CRM_CLKSEL       LSP_CRM_REG_BASE+0x50

-

-#define TDM_CLKDIV1       LSP_CRM_REG_BASE+0x68

-

-#define TDM_CLKDIV2       LSP_CRM_REG_BASE+0x6c

-#elif defined (_USE_AUDIO_ON_7520V2)

-#define TDM_CLKDIV       ((volatile UINT32 *)(LSP_CRM_REG_BASE+0x54))

-#define TDM_FRA_DIV      0x00000008    /* bit 0-7 is fra div */

-#define TDM_FRA_BASE     0x00000808    /* bit 8-15 is fra base */

-#define TDM_INTEGER_NUM  0x00001008    /* bit 16-23 is integer num */

-#define TDM_CLK_SEL_DIV  0x00001801    /* bit 24 is fra clk sel */

-#define TDM_PWRDN        0x00001901    /* bit 25 is pwr dn */

-#endif

-

-

-

-

-

-

-

-

-/**************************************************************************

- *                                  Types                                  *

- **************************************************************************/

-typedef enum

-{

-    TDM_REF_CLK26M,

-    TDM_REF_CLK104M,

-

-    TDM_REF_CLK_MAX

-} T_Tdm_RefClkForTdm;

-

-typedef enum

-{

-    BUFFER_NULL,

-    BUFFER_WRITE,

-    BUFFER_FULL,

-    BUFFER_READ,

-

-    MAX_BUFFER_STATUS

-} T_Tdm_BufferStatus;

-

-typedef enum

-{

-    TDM_IDLE,

-    TDM_OPEN,

-    TDM_PLAY_INUSE,

-    TDM_RECORD_INUSE,

-    TDM_BOTH_INUSE,

-

-    MAX_TDM_STATUS

-} T_Tdm_Status;

-

-typedef struct

-{

-    volatile UINT32  tdmVersion;

-    volatile UINT32  timingCtrl;

-    volatile UINT32  offset;

-    volatile UINT32  txFifoCtrl;

-    volatile UINT32  rxFifoCtrl;

-    volatile UINT32  txFifoStatus;

-    volatile UINT32  rxFifoStatus;	

-    volatile UINT32  intEn;

-    volatile UINT32  intStatus;

-    volatile UINT32  data;

-    volatile UINT32  frameCntr;

-	volatile UINT32  writeCntCtrl;

-	volatile UINT32  writeCntr;

-	volatile UINT32  writeCntr2;

-	volatile UINT32  readCntCtrl;	

-	volatile UINT32  readCntr;

-	volatile UINT32  readCntr2;

-	volatile UINT32  tsMask0;

-	volatile UINT32  tsMask1;

-	volatile UINT32  tsMask2;

-	volatile UINT32  tsMask3;

-	volatile UINT32  processCtrl;

-

-} T_Tdm_Reg;

-

-typedef struct

-{

-    T_Tdm_Reg          *regs;                      /* register pointer */

-    UINT32             intline;                    /* interrupt line */

-    UINT32             intprio;                   /* interrupt priority */

-    OSVECTOR           vector;                   /* Interrupt vector */

-#ifdef _OS_OSE

-    DdaEndOfInt        *eoiFunc;               /* interrupt handler */

-    DdaFuncHandle      eoiArg;                 /* interrupt handler arguments */

-#endif

-    PROCESS            pid;                         /* the id of the process */

-} T_Tdm_Device;

-

-typedef struct

-{

-    T_Tdm_Device                 *ptDev;

-    T_ZDrvTdm_Cfg                tCfg;

-    T_Tdm_Status                 tdmStatus;

-    UINT16                       uiDmaRxChan;

-    UINT16                       uiDmaTxChan;

-//	zDrvDma_CallbackFunc        fDmaCbRx;

-//	zDrvDma_CallbackFunc        fDmaCbTx;

-    SINT32						 DmaRxID;	

-    SINT32						 DmaTxID;	

-    T_ZDrvI2s_TransMode          tdmTransMode;        

-} T_Tdm_Instance;

-

-typedef struct

-{

-    UINT8              *buf;

-    T_Tdm_BufferStatus tdmBufStatus;

-} T_Tdm_BufInfo;

-

-typedef SINT32(*T_Tdm_TxFunc)(const UINT16 *pBuf, UINT32 uiLen);

-

-typedef struct _T_Tdm_QueueNode

-{

-    UINT16 *pBuf;

-    UINT32 len;

-} T_Tdm_QueueNode;

-

-typedef  struct _T_Tdm_Queue

-{

-    UINT8 readIndex;

-    UINT8 writeIndex;

-    T_Tdm_QueueNode *data;

-} T_Tdm_Queue;

-

-typedef struct

-{

-    T_Tdm_BufInfo         *txBufferArray;   /* tx buf array */

-    T_Tdm_Queue           txQueue;          /* queue for tx */

-    UINT32                txLen;            /* size of one buf,use in tx */

-    ZOSS_SEMAPHORE_ID     txSem;            /* for the buf management */

-    BOOL                  Transing;         /* use to check if datas is transing */

-    BOOL                  pauseFlag;        /*  pause flag */

-    T_Tdm_TxFunc          txTransmit;       /* trans function */

-    T_ZDrvAudio_Channel   channel;

-    T_ZDrvTdm_AUD_PLAY_CB p_cb;

-	UINT8                 txRdIdx;

-	UINT8                 txWrIdx;

-} T_Tdm_TxStream;           /*the data stream of transing*/

-

-typedef struct

-{

-    T_Tdm_BufInfo         *rxBufferArray;    /* rx buf array */

-    T_Tdm_BufInfo         *currentRxBuf;     /* current rx buf */

-    T_Tdm_Queue           rxQueue;           /* queue for rx */

-    UINT32                rxLen;             /* size of one buf,use in rx */

-	UINT8                 rxRdIdx; 

-	UINT8                 rxWrIdx; 

-    ZOSS_SEMAPHORE_ID     rxSem;             /* for the buf management */

-    T_Tdm_TxFunc          rxTransmit;        /* trans function */

-    T_ZDrvAudio_Channel   channel;

-    T_ZDrvTdm_AUD_PLAY_CB p_cb;

-} T_Tdm_RxStream;

-

-#if defined (_USE_AUDIO_ON_7520V2)

-typedef struct

-{

-    UINT32   INTEGERNUM;

-    UINT32   FRACADDNUM;

-    UINT32   FRACBASE;

-    UINT32   CLKSELDIV;

-    UINT32   PWRDN;

-    T_Tdm_RefClkForTdm   refclk;

-    UINT32   clkRatio;

-}T_Tdm_ClkDiv;

-#elif defined (_USE_AUDIO_ON_7520V3)

-typedef struct {

-	UINT32   FRACDIV1;

-	UINT32   FRACDIV2;

-	//T_Tdm_RefClkForTdm   refclk;

-}T_Tdm_ClkDiv;

-#endif

-

-typedef struct

-{

-//    UINT32   txtotalbuffsize;

-//    UINT32   rxtotalbuffsize;

-//	UINT32   txsinglebuffsize;

-//    UINT32   rxsinglebuffsize;

-//	dma_addr_t dma_tx_phyaddr[TDM_OUT_BUF_NUM];

-//	void* dma_tx_viraddr;

-//	dma_addr_t dma_rx_phyaddr[TDM_OUT_BUF_NUM];

-//	void* dma_rx_viraddr;

-//	T_ZDrvDma_ChannelDef rxDmaChanDef;

-//	T_ZDrvDma_ChannelDef txDmaChanDef;

-    UINT32   totalbuffsize;

-	UINT32   singlebuffsize;

-	dma_addr_t dma_phyaddr;

-	void* dma_viraddr;

-//	T_ZDrvDma_ChannelDef dmaChanDef;

-	struct dma_chan *ch;

-	int channel;

-}

-T_Tdm_DmaInfo;

-

-typedef enum {

-    TDM_TX = 0,

-    TDM_RX = 1

-} T_ZDrvTDM_TransDirection;

-

-/**************************************************************************

- *                           Global  Variable                              *

- **************************************************************************/

-

-

-static T_Tdm_DmaInfo tdmDmaState[2] = {0}; 

-

-static unsigned long long tdm_device_dma_mask = DMA_BIT_MASK(32);

-

-static struct platform_device tdm_device = {

-	.name = "v3-tdm",

-	.id	= -1,

-	.dev = {

-		.dma_mask		= &tdm_device_dma_mask,

-		.coherent_dma_mask	= DMA_BIT_MASK(32),

-		.platform_data = NULL,

-	 },

-};

-

-static T_Tdm_Instance  s_tdmInstance;

-static T_Tdm_TxStream  s_tdmTxStream;

-static T_Tdm_RxStream  s_tdmRxStream;

-static const UINT16 *tdm_txBuf = NULL; /* use for playing (int mode) */

-static UINT16       *tdm_rxBuf = NULL; /* use for recording (int mode) */

-static UINT32       tdm_txLen;        /* use for playing (int mode) */

-static UINT32       tdm_rxLen;        /* use for recording (int mode) */

-static UINT8        *tdm_txBufArray[TDM_OUT_BUF_NUM] =

-{

-    NULL,

-};

-static UINT8        *tdm_rxBufArray[TDM_OUT_BUF_NUM] =

-{

-    NULL,

-};

-// 26M-->8.192M   {1,44,255,1,0,0,1}

-// 26M-->4.096M   {3,89,255,0,0,0,1}

-// 26M-->2.048M   {6,177,255,0,0,0,1}

-// 26M-->1.024M   {12,100,255,1,0,0,1}

-// 26M-->512k     {25,199,255,0,0,0,1}

-// 26M-->256k     {50,143,255,1,0,0,1}

-// 26M-->128k     {101,32,255,1,0,0,1}

-// 26M-->64k      {203,64,255,0,0,0,1}

-#if defined (_USE_AUDIO_ON_7520V3)

-static T_Tdm_ClkDiv gTdmClkDiv[TDM_MAX_CLK][MAX_TDM_SLOTNUM][MAX_TDM_TS_WIDTH] =

-{

-	{

-		{{0x80001, 0xcb},{0x100009,0x65},{0x200019, 0x32}},

-		{{0x100009,0x65},{0x200019,0x32},{0x400019, 0x19}},

-		{{0x180011,0x43},{0x300029,0x21},{0x600059, 0x10}},

-		{{0x200019,0x32},{0x400019,0x19},{0x800059, 0xc}},

-		{{0x80005, 0x28},{0x100005,0x14},{0x200005, 0xa}},

-

-		{{0x300029,0x21},{0x600059,0x10},{0xc00059, 0x8}},

-		{{0x380001,0x1d},{0x700039,0xe}, {0xe00039, 0x7}},

-		{{0x400019,0x19},{0x800059,0xc}, {0x1000059,0x6}},

-		{{0x480029,0x16},{0x900029,0xb}, {0x12000b9,0x5}},

-		{{0x100005,0x14},{0x200005,0xa}, {0x400005, 0x5}},

-

-		{{0x800059, 0xc},{0x1000059,0x6},{0x2000059,0x3}},

-		{{0x1000059,0x6},{0x2000059,0x3},{0x4000259,0x1}},

-		{{0x2000059,0x3},{0x4000259,0x1},{0x8000659,0x0}}

-	},

-	{

-		{{0x100009, 0x65},{0x200019,0x32},{0x400019, 0x19}},

-		{{0x200019,0x32},{0x400019,0x19},{0x800059, 0xc}},

-		{{0x300029,0x21},{0x600059,0x10},{0xc00059, 0x8}},

-		{{0x400019,0x19},{0x800059,0xc},{0x1000059, 0x6}},

-		{{0x100005, 0x14},{0x200005,0xa},{0x400005, 0x5}},

-

-		{{0x600059,0x10},{0xc00059,0x8},{0x1800059, 0x4}},

-		{{0x700039,0xe},{0xe00039,0x7}, {0x1c00119, 0x3}},

-		{{0x800059,0xc},{0x1000059,0x6}, {0x2000059,0x3}},

-		{{0x900029,0xb},{0x12000b9,0x5}, {0x24001d9,0x2}},

-		{{0x200005,0xa},{0x400005,0x5}, {0x800045, 0x2}},

-

-		{{0x1000059, 0x6},{0x2000059,0x3},{0x4000259,0x1}},

-		{{0x2000059,0x3},{0x4000259,0x1},{0x8000659,0x0}},

-		{{0x4000259,0x1},{0x8000659,0x0},{0x10000659,0x0}}

-	}

-};

-#elif defined (_USE_AUDIO_ON_7520V2)

-static T_Tdm_ClkDiv gTdmClkDiv[TDM_MAX_CLK][MAX_TDM_SLOTNUM][MAX_TDM_TS_WIDTH]=

-{

-	{

-		{{203,64,255,0,0,0,1},{101,32,255,1,0,0,1},{50,143,255,1,0,0,1}},

-	    {{101,32,255,1,0,0,1},{50,143,255,1,0,0,1},{25,199,255,0,0,0,1}},

-	    {{0,0,0,0,0,0,0},{0,0,0,0,0,0,0},{0,0,0,0,0,0,0}},

-	    {{50,143,255,1,0,0,1},{25,199,255,0,0,0,1},{12,100,255,1,0,0,1}},

-	    {{0,0,0,0,0,0,0},{0,0,0,0,0,0,0},{0,0,0,0,0,0,0}},

-	    {{0,0,0,0,0,0,0},{0,0,0,0,0,0,0},{0,0,0,0,0,0,0}},

-	    {{0,0,0,0,0,0,0},{0,0,0,0,0,0,0},{0,0,0,0,0,0,0}},

-	    {{25,199,255,0,0,0,1},{12,100,255,1,0,0,1},{6,177,255,0,0,0,1}},

-	    {{0,0,0,0,0,0,0},{0,0,0,0,0,0,0},{0,0,0,0,0,0,0}},

-	    {{0,0,0,0,0,0,0},{0,0,0,0,0,0,0},{0,0,0,0,0,0,0}},

-	    {{12,100,255,1,0,0,1},{6,177,255,0,0,0,1},{3,89,255,0,0,0,1}},

-	    {{6,177,255,0,0,0,1},{3,89,255,0,0,0,1},{1,44,255,1,0,0,1}},

-	    {{3,89,255,0,0,0,1},{1,44,255,1,0,0,1},{0,0,0,0,0,0,0}}

-	},

-	{

-

-	}

-};

-#endif

-

-static UINT32 audioTdmWsHandle = 0;

-static UINT32 audioTdmClkHandle = 0;

-static UINT32 audioTdmDinHandle = 0;

-static UINT32 audioTdmDoutHandle = 0;

-

-SINT32 gTdmCntChangeTx = 0;

-SINT32 gTdmCntChangeRx = 0;

-

-static UINT32 g_tdmClkDivRegs = LSP_CRM_REG_BASE+0x54;

-static BOOL s_bTdmClkInit = FALSE;

-

-UINT32 tdmwrite_pbuf=0;

-UINT32 tdmwrite_uilen=0;

-

-static BOOL s_bTdmInitInt = FALSE;

-

-/**************************************************************************

- *                           Function Prototypes                           *

- **************************************************************************/

-static SINT32 tdm_GetTdmDiv(T_ZDrvTdm_Cfg *ptCfg, T_Tdm_ClkDiv *pDiv);

-static SINT32 tdm_SetPdiv(T_ZDrvTdm_Cfg *ptCfg);

-

-static SINT32 tdm_QueueInit(T_Tdm_Queue *tdmQueue);

-static SINT32 tdm_QueuePut(T_Tdm_Queue *tdmQueue, UINT16 *pBuf, UINT32 uiLen);

-static SINT32 tdm_QueueGet(T_Tdm_Queue *tdmQueue, T_Tdm_QueueNode **queueNode);

-static SINT32 tdm_QueueDestory(T_Tdm_Queue *tdmQueue);

-

-static SINT32 tdm_SetupTxBuf();

-static SINT32 tdm_SetupRxBuf();

-static SINT32 tdm_Reset();

-

-static VOID tdm_IntIsr();

-static VOID tdm_IntTxWriteFifo(UINT32 chanlable);

-static VOID tdm_IntRxWriteBuf();

-static VOID tdm_IntTxChangeBuf();

-static VOID tdm_IntRxChangeBuf();

-

-static SINT32 tdm_TxCheckState(T_ZDrvTdm_Cfg *ptCfg);

-static SINT32 tdm_RxCheckState(T_ZDrvTdm_Cfg *ptCfg);

-

-static SINT32 tdm_TxComInit(T_ZDrvTdm_Params *params);

-static SINT32 tdm_RxComInit(T_ZDrvTdm_Params *params);

-

-static SINT32 tdm_IntRxInit();

-static SINT32 tdm_IntTxInit();

-static SINT32 tdm_DmaRxInit();

-static SINT32 tdm_DmaTxInit();

-static SINT32 tdm_DmaTx(const UINT16 *pBuf, UINT32  uiLen);

-static SINT32 tdm_DmaRx(T_Tdm_Instance *ptInstance, UINT8 idx);

-

-static SINT32 tdm_CleanTxResource();

-static SINT32 tdm_CleanRxResource();

-

-static SINT32 tdm_IntTx(const UINT16 *pBuf, UINT32 uiLen);

-

-static VOID tdm_InitInt(VOID);

-static SINT32 tdm_SetClk(T_Tdm_ClkDiv *pDiv);

-

-static SINT32 tdm_CloseClk();

-static SINT32 tdm_SetClkDiv(UINT32 divFunc, UINT32 div);

-

-#ifdef _USE_PSM

-extern SINT32 zDrvPow_SetDevActive(T_ZDrvPow_IdleFlag devId);

-extern SINT32 zDrvPow_SetDevIdle(T_ZDrvPow_IdleFlag devId);

-#endif

-

-SINT32 tdm_SetTiming(T_Tdm_Reg   *ptReg, T_ZDrvTdm_Cfg *ptCfg);

-static VOID tdm_ClkInit();

-static VOID tdm_ClkDeinit();

-static VOID isr_tdm(VOID);

-SINT32 tdm_rxsem_count_Init();

-SINT32 tdm_txsem_count_Init();

-

-

-extern T_zDrvVoice_GbVar g_voiceVar; 

-/**************************************************************************

- *                           Function Defines                              *

- **************************************************************************/

-/****************************************************************************

-* Function:  tdm_IsQueueEmpty

-* Description: check if the queue is empty

-* Parameters:

-*   Input:

-*             tdmQueue :queue pointer

-*   Output:

-*             None

-*

-* Returns:

-*             DRV_ERR_INVALID_PARAM : NULL pointer

-*

-* Others:

-****************************************************************************/

-__inline BOOL tdm_IsQueueEmpty(T_Tdm_Queue *tdmQueue)

-{

-    if (NULL == tdmQueue) /*klocwork 3  INVARIANT_CONDITION.UNREACH  assertÒÆµ½ifÀï*/

-    {

-        zDrv_ASSERT(0);

-        return DRV_ERR_INVALID_PARAM;

-    }

-

-    return (tdmQueue->writeIndex == tdmQueue->readIndex);

-}

-

-/****************************************************************************

-* Function:  tdm_IsQueueFull

-* Description: check if the queue is full

-* Parameters:

-*   Input:

-*          tdmQueue : queue pointer

-*   Output:

-*          None

-*

-* Returns:

-*          DRV_ERR_INVALID_PARAM : NULL pointer

-*

-* Others:

-****************************************************************************/

-__inline BOOL tdm_IsQueueFull(T_Tdm_Queue *tdmQueue)

-{

-    if (NULL == tdmQueue) /*klocwork 3  INVARIANT_CONDITION.UNREACH  assertÒÆµ½ifÀï*/

-    {

-        zDrv_ASSERT(0);

-        return DRV_ERR_INVALID_PARAM;

-    }

-

-    return ((tdmQueue->writeIndex + 1) % TDM_QUEUE_SIZE == tdmQueue->readIndex);

-}

-

-/****************************************************************************

-* Function:  tdm_UpdateTxBufferStatus

-* Description: use to manage buffer status ,update one buffer status

-* Parameters:

-*   Input:

-*            bufAddr : buffer pointer

-*            bufferStatus : buffer status

-*   Output:

-*             None

-*

-* Returns: DRV_SUCCESS: operate success

-*              DRV_ERR_INVALID_PARAM:param error

-*

-* Others:

-****************************************************************************/

-static SINT32 tdm_UpdateTxBufferStatus(UINT16 * bufAddr , T_Tdm_BufferStatus bufferStatus)

-{

-    T_Tdm_TxStream *tdmStream = &s_tdmTxStream;

-    UINT8 bufIndex = 0;

-

-    if (NULL == bufAddr) /*klocwork 3  INVARIANT_CONDITION.UNREACH  assertÒÆµ½ifÀï*/

-    {

-        zDrv_ASSERT(0);

-        return DRV_ERR_INVALID_PARAM;

-    }

-

-    if(tdmStream->txBufferArray == NULL) {

-         zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "tdm_UpdateTxBufferStatus tdmStream->txBufferArray NULL return ");	

-	  return DRV_ERROR;

-    }

-

-    for (; bufIndex < TDM_OUT_BUF_NUM; bufIndex++)

-    {

-        if (tdmStream->txBufferArray[bufIndex].buf == (UINT8 *)bufAddr)

-        {

-            tdmStream->txBufferArray[bufIndex].tdmBufStatus = bufferStatus;

-            break;

-        }

-    }

-

-    if (bufIndex == TDM_OUT_BUF_NUM)

-    {

-        return DRV_ERROR;

-    }

-

-    return DRV_SUCCESS;

-}

-

-/****************************************************************************

-* Function:  tdm_UpdateBufferStatus

-* Description: use to manage buffer status ,update one buffer status

-* Parameters:

-*   Input:

-*            bufAddr : buffer pointer

-*            bufferStatus : buffer status

-*   Output:

-*             None

-*

-* Returns: DRV_SUCCESS: operate success

-*              DRV_ERR_INVALID_PARAM:param error

-*

-* Others:

-****************************************************************************/

-static SINT32 tdm_UpdateRxBufferStatus(UINT16 * bufAddr , T_Tdm_BufferStatus bufferStatus)

-{

-    T_Tdm_RxStream *tdmStream = &s_tdmRxStream;

-    UINT8 bufIndex = 0 ;

-

-    if (NULL == bufAddr) /*klocwork 3  INVARIANT_CONDITION.UNREACH  assertÒÆµ½ifÀï*/

-    {

-        zDrv_ASSERT(0);

-        return DRV_ERR_INVALID_PARAM;

-    }

-    if(tdmStream->rxBufferArray == NULL) {

-         zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "tdm_UpdateRxBufferStatus tdmStream->rxBufferArray NULL return ");	

-	  return DRV_ERROR;

-    }

-    for (; bufIndex < TDM_OUT_BUF_NUM; bufIndex++)

-    {

-        if (tdmStream->rxBufferArray[bufIndex].buf == (UINT8 *)bufAddr)

-        {

-            tdmStream->rxBufferArray[bufIndex].tdmBufStatus = bufferStatus;

-            break;

-        }

-    }

-

-    if (bufIndex == TDM_OUT_BUF_NUM)

-    {

-        return DRV_ERROR;

-    }

-

-    return DRV_SUCCESS;

-}

-

-/****************************************************************************

-* Function:  tdm_ChangeTxBufferStatus

-* Description: use to manage buffer status ,update one buffer status. if one buf status is one ,change to new status

-* Parameters:

-*   Input:

-*            oldStatus : buffer status

-*            bufferStatus : buffer status

-*   Output:

-*             None

-*

-* Returns: DRV_SUCCESS: operate success

-*              DRV_ERR_INVALID_PARAM:param error

-*

-* Others:

-****************************************************************************/

-static SINT32 tdm_ChangeTxBufferStatus(T_Tdm_BufferStatus oldStatus , T_Tdm_BufferStatus newStatus)

-{

-    T_Tdm_TxStream *tdmStream = &s_tdmTxStream;

-    UINT8 bufIndex = 0;

-

-    for (; bufIndex < TDM_OUT_BUF_NUM; bufIndex++)

-    {

-        if (tdmStream->txBufferArray[bufIndex].tdmBufStatus == oldStatus)

-        {

-            tdmStream->txBufferArray[bufIndex].tdmBufStatus = newStatus;

-            break;

-        }

-    }

-

-    if (bufIndex == TDM_OUT_BUF_NUM)

-    {

-        return DRV_ERR_INVALID_PARAM;

-    }

-

-    return DRV_SUCCESS;

-}

-/****************************************************************************

-* Function:  tdm_QueueInit

-* Description: this function is use to init the buffer queue

-* Parameters:

-*   Input:

-*           tdmQueue :queue pointer

-*   Output:

-*           None

-* Returns:

-*                 DRV_ERR_INVALID_PARAM : null pointer

-*                 DRV_ERR_MEM_ALLOC : alloc fail

-*

-* Others:

-****************************************************************************/

-static SINT32 tdm_QueueInit(T_Tdm_Queue *tdmQueue)

-{

-    SINT32 ret = 0;

-

-    if (NULL == tdmQueue) /*klocwork 3  INVARIANT_CONDITION.UNREACH  assertÒÆµ½ifÀï*/

-    {

-        zDrv_ASSERT(0);

-        return DRV_ERR_INVALID_PARAM;

-    }

-

-    tdmQueue->data = (T_Tdm_QueueNode *)zOss_Malloc(sizeof(T_Tdm_QueueNode) * TDM_QUEUE_SIZE);

-    if (NULL == tdmQueue->data)

-    {

-        return DRV_ERR_MEM_ALLOC;

-    }

-

-    for (ret = 0; ret < TDM_QUEUE_SIZE; ret++)

-    {

-        tdmQueue->data[ret].pBuf = NULL;

-        tdmQueue->data[ret].len = 0;

-    }

-

-    tdmQueue->readIndex = tdmQueue->writeIndex = 0;

-

-    return DRV_SUCCESS;

-}

-

-

-

-/****************************************************************************

-* Function:  tdm_QueuePut

-* Description:½«»º³åÖ¸Õë²åÈë¶Óβ

-* Parameters:

-*   Input:

-*           tdmQueue: queue pointer

-*           *pBuf : buffer pointer

-*           uiLen : buffer length

-*   Output:

-*           None

-* Returns:

-*           DRV_ERR_INVALID_PARAM: error param

-*           DRV_ERROR : operate error

-*           DRV_SUCCESS : operate success

-* Others:

-****************************************************************************/

-static SINT32 tdm_QueuePut(T_Tdm_Queue *tdmQueue, UINT16 *pBuf, UINT32 uiLen)

-{

-    BOOL isFull = FALSE;

-

-    if (NULL == tdmQueue || NULL == pBuf || 0 == uiLen) /*klocwork 3  INVARIANT_CONDITION.UNREACH  assertÒÆµ½ifÀï*/

-    {

-        zDrv_ASSERT(0);

-        return DRV_ERR_INVALID_PARAM;

-    }

-    isFull = tdm_IsQueueFull(tdmQueue);

-

-    if (TRUE == isFull) /*klocwork 3  INVARIANT_CONDITION.UNREACH  assertÒÆµ½ifÀï*/

-    {

-        zDrv_ASSERT(0);

-        return DRV_ERROR;

-    }

-

-    tdmQueue->data[tdmQueue->writeIndex].pBuf = pBuf;

-    tdmQueue->data[tdmQueue->writeIndex].len = uiLen;

-    tdmQueue->writeIndex = (tdmQueue->writeIndex + 1) % TDM_QUEUE_SIZE;

-

-    return DRV_SUCCESS;

-}

-

-/****************************************************************************

-* Function:  tdm_QueueGet

-* Description:´Ó¶ÓÊ×È¡

-* Parameters:

-*   Input:

-*           tdmQueue: queue pointer

-*           *queueNode : queue node  pointer

-*   Output:

-*           None

-* Returns:

-*           DRV_ERR_INVALID_PARAM: error param

-*           DRV_ERROR : operate error

-*           DRV_SUCCESS : operate success

-* Others:

-****************************************************************************/

-static SINT32 tdm_QueueGet(T_Tdm_Queue *tdmQueue, T_Tdm_QueueNode **queueNode)

-{

-    BOOL isEmpty = FALSE;

-

-    if (NULL == tdmQueue || NULL == queueNode) /*klocwork 3  INVARIANT_CONDITION.UNREACH  assertÒÆµ½ifÀï*/

-    {

-        zDrv_ASSERT(0);

-        return DRV_ERR_INVALID_PARAM;

-    }

-

-    isEmpty = tdm_IsQueueEmpty(tdmQueue);

-

-    if (TRUE == isEmpty)

-    {

-        *queueNode = NULL;

-    }

-    else

-    {

-        *queueNode = &tdmQueue->data[tdmQueue->readIndex];

-        tdmQueue->readIndex = (tdmQueue->readIndex + 1) % TDM_QUEUE_SIZE;

-    }

-

-    return DRV_SUCCESS;

-}

-

-/****************************************************************************

-* Function:  tdm_QueueDestory

-* Description: destory the queue

-* Parameters:

-*   Input:

-*           tdmQueue: queue pointer

-*   Output:

-*           None

-* Returns:

-*           DRV_ERR_INVALID_PARAM: error param

-*           DRV_ERROR : operate error

-*           DRV_SUCCESS : operate success

-* Others:

-****************************************************************************/

-static SINT32 tdm_QueueDestory(T_Tdm_Queue *tdmQueue)

-{

-    if (NULL == tdmQueue) /*klocwork 3  INVARIANT_CONDITION.UNREACH  assertÒÆµ½ifÀï*/

-    {

-        zDrv_ASSERT(0);

-        return DRV_ERR_INVALID_PARAM;

-    }

-

-    if (tdmQueue->data != NULL)

-    {

-        zOss_Free(tdmQueue->data);

-    }

-

-    tdmQueue->data = NULL;

-    tdmQueue->readIndex = 0;

-	tdmQueue->writeIndex = 0;

-

-    return DRV_SUCCESS;

-}

-

-static SINT32 tdm_GetTdmDiv(T_ZDrvTdm_Cfg *ptCfg, T_Tdm_ClkDiv *pDiv)

-{

-    T_ZDrvTdm_SlotNum tdmSlotNum = MAX_TDM_SLOTNUM;

-    T_ZDrvTdm_TsWidth tdmTsWidth = MAX_TDM_TS_WIDTH;

-	T_ZDrvTdm_Clk tdmClockSet = TDM_MAX_CLK;

-

-    if (NULL == pDiv||NULL == ptCfg || ptCfg->tSlotNum>=MAX_TDM_SLOTNUM|| ptCfg->tTsWidth >= MAX_TDM_TS_WIDTH )

-    {

-        return DRV_ERR_INVALID_PARAM;

-    }

-

-	switch(ptCfg->sample_rate) {

-	case 8000:

-		tdmClockSet = TDM_CLK_8000;

-		break;

-	case 16000:

-		tdmClockSet = TDM_CLK_16000;

-		break;

-	default:

-		tdmClockSet = TDM_CLK_8000;

-		break;

-	}

-

-	tdmSlotNum = ptCfg->tSlotNum;

-	tdmTsWidth = ptCfg->tTsWidth;

-	

-    zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "tdm_GetTdmDiv gTdmClkDiv[%d][%d][%d]\n",tdmClockSet,tdmSlotNum,tdmTsWidth);

-    *pDiv = gTdmClkDiv[tdmClockSet][tdmSlotNum][tdmTsWidth];

-

-    return DRV_SUCCESS;

-}

-

-static SINT32 tdm_SetPdiv(T_ZDrvTdm_Cfg *ptCfg)

-{

-    SINT32 ret = DRV_SUCCESS;

-    T_Tdm_ClkDiv div = {0};

-

-    if (NULL == ptCfg)

-    {

-        return DRV_ERR_INVALID_PARAM;

-    }

-

-    ret = tdm_GetTdmDiv(ptCfg, &div);

-

-    if (ret != DRV_SUCCESS)

-    {

-        zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, " tdm_SetPdiv err ret=0x%x",ret);

-        return DRV_ERROR;

-    }

-

-    ret = tdm_SetClk(&div);

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

-	/*

-    if (ret != DRV_SUCCESS)

-    {

-        zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, " tdm_SetPdiv tdm_SetClk err ret=0x%x",ret);

-

-        return DRV_ERROR;

-    }*/

-

-    return DRV_SUCCESS;

-}

-

-/****************************************************************************

- * Function:  tdm_CloseClk

- * Description: this function is use to close tdm divide frequency

-* Parameters:

-*   Input:

-*   Output:

-*           None

-* Returns:

-*           DRV_ERR_INVALID_PARAM: error param

-*           DRV_ERROR : operate error

-*           DRV_SUCCESS : operate success

- * Others:

- ****************************************************************************/

-static SINT32 tdm_CloseClk()

-{

-#if defined (_CHIP_ZX297520V2)

-    tdm_SetClkDiv(TDM_PWRDN, 1);

-#endif

-	return DRV_SUCCESS;

-}

-

-static SINT32 tdm_SetClkDiv(UINT32 divFunc, UINT32 div)

-{

-    UINT32 bitWidth = divFunc & 0xff;

-    UINT32 maxDiv = (0x1<<bitWidth)-1;

-    UINT32 bitIndex = (divFunc>>8) & 0xff;

-    UINT32 bitMask  = 0;

-    UINT32 regBase = 0;

-    UINT32 tmp= 0;

-

-    if(div > maxDiv)

-        div = maxDiv;

-

-    if(bitIndex == 28)  /*ÕûÊý·ÖƵÆ÷Ö»Ö§³ÖżÊý·ÖƵ*/

-    {

-        div &=0xfe;

-        div++;

-    }

-

-    bitMask  = ((0x1<<bitWidth)-1)<<bitIndex;

-    regBase = g_tdmClkDivRegs;

-    tmp= reg32(regBase);

-    tmp &= ~bitMask;

-    tmp |= div<<bitIndex;

-    reg32(regBase) = tmp;

-

-    return DRV_SUCCESS;

-}

-

-static VOID tdm_ClkInit(VOID)

-{

-	unsigned int val;

-

-    if (s_bTdmClkInit)

-        return;

-

-

-    if (g_voiceVar.isUseSlicCodec != 1)

-    {

-		val = readl(TDM_CRM_CLKSEL);

-		val &= ~(3 << 8);

-		writel(val, TDM_CRM_CLKSEL);

-		

-		val = readl(TDM_CRM_CLKSEL);

-		val |= (3 << 8);

-		writel(val, TDM_CRM_CLKSEL);

-

-		zOss_Sleep(1);

-    }

-

-	val = readl(TDM_CRM_CLKSEL);

-	val |= ((3 << 0) | (3 << 10));

-	writel(val, TDM_CRM_CLKSEL);

-

-    s_bTdmClkInit = TRUE;

-}

-

-static VOID tdm_ClkDeinit()

-{

-	unsigned int val;

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "tdm_ClkDeinit");

-

-    if (!s_bTdmClkInit)

-    {

-        return;

-    }

-

-

-	val = readl(TDM_CRM_CLKSEL);

-	val &= ~((3 << 0) | (3 << 10));

-	writel(val, TDM_CRM_CLKSEL);

-	

-	val = readl(TDM_CRM_CLKSEL);

-	val &= ~(3 << 8);

-	writel(val, TDM_CRM_CLKSEL);

-	

-	val = readl(TDM_CRM_CLKSEL);

-	val |= (3 << 8);

-	writel(val, TDM_CRM_CLKSEL);

-

-    s_bTdmClkInit = FALSE;

-}

-

-static SINT32 tdm_SetClk(T_Tdm_ClkDiv *pDiv)

-{

-   unsigned int val = 0;

-    unsigned int div1 = 0,div2 = 0;

-    if (NULL == pDiv)

-    {

-        return DRV_ERR_INVALID_PARAM;

-    }

-	

-#if defined (_USE_AUDIO_ON_7520V3)

-

-	//TDM_CLKDIV2 &= (~(0x1 << 16));

-	//TDM_CLKDIV1 = pDiv->FRACDIV1;

-	//TDM_CLKDIV2 = pDiv->FRACDIV2;

-	//TDM_CLKDIV2 |= (0x1 << 16);

-	val = readl(TDM_CLKDIV2);

-	val &= ~(0x1 << 16);

-	writel(val, TDM_CLKDIV2);

-

-	writel(pDiv->FRACDIV1, TDM_CLKDIV1);

-	writel( pDiv->FRACDIV2, TDM_CLKDIV2);

-

-	val = readl(TDM_CLKDIV2);

-	val |= (0x1 << 16);

-	writel(val, TDM_CLKDIV2);

-	

-	div1 = readl(TDM_CLKDIV1);

-	div2 = readl(TDM_CLKDIV2);

-	

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "tdm_SetClk,TDM_CLKDIV1=0x%x, TDM_CLKDIV2=0x%x\n",div1,div2);

-

-#elif defined (_USE_AUDIO_ON_7520V2)

-

-    tdm_SetClkDiv(TDM_INTEGER_NUM, pDiv->INTEGERNUM);

-    tdm_SetClkDiv(TDM_FRA_DIV, pDiv->FRACADDNUM);

-    tdm_SetClkDiv(TDM_FRA_BASE, pDiv->FRACBASE);

-    tdm_SetClkDiv(TDM_CLK_SEL_DIV, pDiv->CLKSELDIV);

-    tdm_SetClkDiv(TDM_PWRDN, pDiv->PWRDN);

-    

-#endif

-

-    return DRV_SUCCESS;

-}

-

-/****************************************************************************

- * Function:  tdm_Reset

- * Description: this function is use to reset all device,contain tdm fifo and dma

-* Parameters:

-*   Input:

-*   Output:

-*           None

-* Returns:

-*           DRV_ERR_INVALID_PARAM: error param

-*           DRV_ERROR : operate error

-*           DRV_SUCCESS : operate success

- * Others:

- ****************************************************************************/

-static SINT32 tdm_Reset()

-{

-    T_Tdm_Reg  *ptReg = NULL;

-

-    if (NULL == s_tdmInstance.ptDev) 	/*klocwork 3  INVARIANT_CONDITION.UNREACH  assertÒÆµ½ifÀï*/

-    {

-    	zDrv_ASSERT(0);

-        return DRV_ERROR;

-    }

-

-    ptReg = s_tdmInstance.ptDev->regs;

-

-    ptReg->timingCtrl = 0x0;

-

-    /* disable dma */

-    ptReg->txFifoCtrl &= ~TDM_TX_DMA_EN;

-    ptReg->rxFifoCtrl &= ~TDM_RX_DMA_EN;

-

-    /* reset tx/rx fifo */

-    ptReg->txFifoCtrl |= TDM_TX_FIFO_RST;

-    ptReg->rxFifoCtrl |= TDM_RX_FIFO_RST;

-

-    /* clear interrupt */

-    ptReg->intStatus = 0xffff;

-

-    /* disable interrupt */

-    ptReg->intEn = 0x0;

-

-    /* disable tdm; disable rx/tx; */

-    ptReg->processCtrl = 0x0;

-

-    /* reset offset */

-    ptReg->offset = 0;  

-

-    /* reset tsMask */

-    ptReg->tsMask0 = 0;

-

-    return DRV_SUCCESS;

-}

-

-/****************************************************************************

-* Function:  tdm_SetupBuf

-* Description: init buffer

-* Parameters:

-*   Input:

-*           tdmStrem: tdm stream struct

-*   Output:

-*           None

-* Returns:

-*           DRV_ERR_INVALID_PARAM: error param

-*           DRV_ERROR : operate error

-*           DRV_SUCCESS : operate success

- * Others:

- ****************************************************************************/

-static SINT32 tdm_SetupTxBuf()

-{

-    SINT32 index = 0;

-    T_Tdm_TxStream *tdmStream = &s_tdmTxStream;

-

-    tdmStream->txBufferArray = (T_Tdm_BufInfo *)zOss_Malloc(TDM_OUT_BUF_NUM * sizeof(T_Tdm_BufInfo));

-    if (NULL == tdmStream->txBufferArray)

-    {

-        return DRV_ERR_MEM_ALLOC;

-    }

-

-    for (index = 0; index < TDM_OUT_BUF_NUM; index++)

-    {

-        tdmStream->txBufferArray[index].buf = tdm_txBufArray[index];

-        tdmStream->txBufferArray[index].tdmBufStatus = BUFFER_NULL;

-       // zOss_Memset(tdmStream->txBufferArray[index].buf, 0, TDM_MAX_TX_BUF_SIZE);

-    }

-

-    return DRV_SUCCESS;

-}

-

-/****************************************************************************

-* Function:  tdm_SetupBuf

-* Description: init buffer

-* Parameters:

-*   Input:

-*           tdmStrem: tdm stream struct

-*   Output:

-* Returns:

-*           DRV_ERR_INVALID_PARAM: error param

-*           DRV_ERROR : operate error

-*           DRV_SUCCESS : operate success

- * Others:

- ****************************************************************************/

-static SINT32 tdm_SetupRxBuf()

-{

-    SINT32 index = 0;

-    T_Tdm_RxStream *tdmStream = &s_tdmRxStream;

-

-    tdmStream->rxBufferArray = (T_Tdm_BufInfo *)zOss_Malloc(TDM_OUT_BUF_NUM * sizeof(T_Tdm_BufInfo));

-    if (NULL == tdmStream->rxBufferArray)

-    {

-        return DRV_ERR_MEM_ALLOC;

-    }

-

-    for (index = 0; index < TDM_OUT_BUF_NUM; index++)

-    {

-        tdmStream->rxBufferArray[index].buf = tdm_rxBufArray[index];

-        tdmStream->rxBufferArray[index].tdmBufStatus = BUFFER_NULL ;

-       // zOss_Memset(tdmStream->rxBufferArray[index].buf, 0, TDM_MAX_RX_BUF_SIZE);

-    }

-	

-    tdmStream->currentRxBuf = NULL;

-

-    return DRV_SUCCESS;

-}

-

-/****************************************************************************

-* Function:  tdm_Configure

-* Description: config tdm

-* Parameters:

-*   Input:

-*           ptCfg : tdm config param

-*   Output:

-*           None

-* Returns:

-*           DRV_ERR_INVALID_PARAM: error param

-*           DRV_ERROR : operate error

-*           DRV_SUCCESS : operate success

-*

-* Others:

- ****************************************************************************/

-SINT32 tdm_clkConfigure(T_ZDrvTdm_Cfg *ptCfg)

-{

-    SINT32 ret = DRV_SUCCESS;

-

-    if (NULL == ptCfg) /*klocwork 3  INVARIANT_CONDITION.UNREACH  assertÒÆµ½ifÀï*/

-    {

-        zDrv_ASSERT(0);

-        return DRV_ERR_INVALID_PARAM;

-    }

-

-    if (ptCfg->bMaster)

-    {

-        ret = tdm_SetPdiv(ptCfg);

-        if (ret != DRV_SUCCESS)

-        {

-            zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "tdm_Configure  tdm_SetPdiverr ret=0x%x",ret);

-            return DRV_ERROR;

-        }

-    }

-

-	return DRV_SUCCESS;

-}

-

-

-static SINT32 tdm_Configure(T_ZDrvTdm_Cfg *ptCfg)

-{

-    T_Tdm_Instance  *ptInstance = NULL;

-    T_Tdm_Reg    *ptReg = NULL;

-

-    SINT32 ret = DRV_SUCCESS;

-

-    if (NULL == ptCfg) /*klocwork 3  INVARIANT_CONDITION.UNREACH  assertÒÆµ½ifÀï*/

-    {

-        zDrv_ASSERT(0);

-        return DRV_ERR_INVALID_PARAM;

-    }

-

-    ptInstance = &s_tdmInstance;

-    ptReg = ptInstance->ptDev->regs;

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

-    /*if (ret != DRV_SUCCESS)

-    {

-        zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "tdm_Configure  tdm_SetTiming ret=0x%x",ret);

-        return DRV_ERROR;

-    }*/

-

-    if (ptCfg->bMaster)

-    {

-        ret = tdm_SetPdiv(ptCfg);

-        if (ret != DRV_SUCCESS)

-        {

-            zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "tdm_Configure  tdm_SetPdiverr ret=0x%x",ret);

-            return DRV_ERROR;

-        }

-        ptReg->timingCtrl|= TDM_MASTER_EN;   /* as master */  //test for setting master mode before gpi0/tdm

-    }

-    else

-    {

-        ptReg->timingCtrl &= ~TDM_MASTER_EN;  /* as slave */

-    }

-

-    /*transmit data at negative edge or at positive edge*/

-    if (ptCfg->fsClkSel == TDM_FS_CLK_NEG)

-    {

-        ptReg->timingCtrl &= ~TDM_FS_POS;   

-    }

-    else if (ptCfg->fsClkSel == TDM_FS_CLK_POS)

-    {

-        ptReg->timingCtrl |= TDM_FS_POS;  /*transmit at rising edge*/

-    }

-    if (ptCfg->txClkSel == TDM_TX_CLK_NEG)

-    {

-        ptReg->timingCtrl &= ~TDM_TX_POS;   

-    }

-    else if (ptCfg->txClkSel == TDM_TX_CLK_POS)

-    {

-        ptReg->timingCtrl |= TDM_TX_POS;    /*transmit at rising edge*/

-    }

-    if (ptCfg->rxClkSel == TDM_RX_CLK_NEG)

-    {

-        ptReg->timingCtrl &= ~TDM_RX_POS;   /*receive at falling edge*/

-    }

-    else if (ptCfg->rxClkSel == TDM_RX_CLK_POS)

-    {

-        ptReg->timingCtrl |= TDM_RX_POS;

-    }

-

-    /* timeslot width */

-    if (MAX_TDM_TS_WIDTH <= ptCfg->tTsWidth) /*klocwork 3  INVARIANT_CONDITION.UNREACH  assertÒÆµ½ifÀï*/

-    {

-        zDrv_ASSERT(0);

-        return DRV_ERR_INVALID_PARAM;

-    }

-    else

-    {

-        ptReg->timingCtrl &= ~ 	TDM_TS_WIDTH(0x3);

-        ptReg->timingCtrl |= TDM_TS_WIDTH(ptCfg->tTsWidth);/*TDM_TS_WIDTH*/

-    }

-

-    /* timeslot number */

-    if (MAX_TDM_SLOTNUM <= ptCfg->tSlotNum) /*klocwork 3  INVARIANT_CONDITION.UNREACH  assertÒÆµ½ifÀï*/

-    {

-        zDrv_ASSERT(0);

-        return DRV_ERR_INVALID_PARAM;

-    }

-    else

-    {

-        ptReg->timingCtrl &= ~ TDM_TS_NUM(0x7f);

-        if(ptCfg->tSlotNum <= TDM_10_SLOT)

-            ptReg->timingCtrl |= TDM_TS_NUM(ptCfg->tSlotNum);/*TDM_TS_NUM*/

-        else if(ptCfg->tSlotNum == TDM_16_SLOT)

-            ptReg->timingCtrl |= TDM_TS_NUM(0xf);/*TDM_TS_NUM*/

-        else if(ptCfg->tSlotNum == TDM_32_SLOT)

-            ptReg->timingCtrl |= TDM_TS_NUM(0x1f);/*TDM_TS_NUM*/

-        else /*klocwork 3  INVARIANT_CONDITION.UNREACH (ptCfg->tSlotNum == TDM_64_SLOT)*/

-            ptReg->timingCtrl |= TDM_TS_NUM(0x3f);/*TDM_TS_NUM*/

-    }

-

-    /* fsync width */

-    if (MAX_FS_WIDTH <= ptCfg->tFsWidth) /*klocwork 3  INVARIANT_CONDITION.UNREACH  assertÒÆµ½ifÀï*/

-    {

-        zDrv_ASSERT(0);

-        return DRV_ERR_INVALID_PARAM;

-    }

-    else

-    {

-        ptReg->timingCtrl &= ~ TDM_FS_WIDTH(0x1F);

-        ptReg->timingCtrl |= TDM_FS_WIDTH(ptCfg->tFsWidth);/*TDM_TS_NUM*/

-    }

-

-    /* fsync active */

-    if (MAX_FS_ACTIVE <= ptCfg->tFsActive) /*klocwork 3  INVARIANT_CONDITION.UNREACH  assertÒÆµ½ifÀï*/ 

-    {

-        zDrv_ASSERT(0);

-        return DRV_ERR_INVALID_PARAM;

-    }

-    else

-    {

-        ptReg->timingCtrl |= TDM_FS_ACTIVE(ptCfg->tFsActive);/*TDM_TS_NUM*/

-    }

-	

-    /* LSB first */

-    if (MAX_FIRSTBIT <= ptCfg->tTdmFstBit) /*klocwork 3  INVARIANT_CONDITION.UNREACH  assertÒÆµ½ifÀï*/

-    {

-        zDrv_ASSERT(0);

-        return DRV_ERR_INVALID_PARAM;

-    }

-    else

-    {

-        ptReg->timingCtrl |= TDM_LSB_FIRST(ptCfg->tTdmFstBit); /*TDM_TS_NUM*/

-    }

-	

-    /*test mode*/

-    if(ptCfg->tTestMode == TDM_NORMAL_MODE)

-    {

-        ptReg->timingCtrl &= ~ TDM_TEST_MODE;

-    }

-    else if(ptCfg->tTestMode == TDM_LOOPBACK_MODE)

-    {

-        ptReg->timingCtrl |= TDM_TEST_MODE;

-    }

-

-	/* offset */

-    ptReg->offset = 0;   //reset offset

-	ptReg->offset |= TDM_RX_OFFSET(ptCfg->tRxOffset);

-	ptReg->offset |= TDM_TX_OFFSET(ptCfg->tTxOffset);

-    

-	

-    /*time slot mask*/

-    ptReg->tsMask0 = 0;   //reset tsMask

-    if(ptCfg->tTsEnable == TDM_1TS_ENABLE)

-    {

-        ptReg->tsMask0 |= TS_MAKS0_TS1;

-    }

-    else if(ptCfg->tTsEnable == TDM_2TS_ENABLE)

-    {

-       ptReg->tsMask0 |= TS_MAKS0_TS2;

-    }

-

-    /*enable frame counter */

-    ptReg->frameCntr |= TDM_FRAME_CNTR_EN;

-    

-    /*enable write counter */

-    ptReg->writeCntCtrl |= TDM_WR_CNTR_EN;

-    ptReg->writeCntr2 |= TDM_WR_CNTR2_EN;

-

-    /*enable read counter */

-    ptReg->readCntCtrl |= TDM_RD_CNTR_EN;

-    ptReg->readCntr2 |= TDM_RD_CNTR2_EN;

-            

-    zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "tdm_Configure success");

-    return DRV_SUCCESS;

-}

-

-/****************************************************************************

-* Function:  tdm_CleanResource

-* Description: clean resource

-* Parameters:

-*   Input:

-*           NONE

-*   Output:

-*           NONE

-* Returns:

-*           DRV_ERROR : operate error

-*           DRV_SUCCESS : operate success

-*

-* Others:

- ****************************************************************************/

-static SINT32 tdm_CleanTxResource()

-{

-    SINT32 ret = DRV_SUCCESS;

-

-    ret = tdm_QueueDestory(&s_tdmTxStream.txQueue);

-    if (s_tdmTxStream.txBufferArray != NULL)

-    {

-        zOss_Free(s_tdmTxStream.txBufferArray);

-        s_tdmTxStream.txBufferArray = NULL;

-    }

-

-    return ret;

-}

-

-/****************************************************************************

-* Function:  tdm_CleanRxResource

-* Description: clean resource

-* Parameters:

-*   Input:

-*           NONE

-* Returns:

-*           DRV_ERROR : operate error

-*           DRV_SUCCESS : operate success

-*

-* Others:

- ****************************************************************************/

-static SINT32 tdm_CleanRxResource()

-{

-    SINT32 ret = DRV_SUCCESS;

-

-    ret = tdm_QueueDestory(&s_tdmRxStream.rxQueue);

-    if (s_tdmRxStream.rxBufferArray != NULL)

-    {

-        zOss_Free(s_tdmRxStream.rxBufferArray);

-        s_tdmRxStream.rxBufferArray = NULL;

-    }

-

-    return ret;

-}

-

-/**************************************************************************

-* Function:  tdm_IntIsr

-* Description: interrupt handle while in int mode

-* Parameters:

-*   Input:

-*           ptInstance : tdm instance

-*   Output:

-*           None

-* Returns:

-*           None

-* Others:

-****************************************************************************/

-static SINT32 tdm_TxCheckState(T_ZDrvTdm_Cfg *ptCfg)

-{

-    SINT32          ret = DRV_SUCCESS;

-    T_Tdm_Instance  *ptInstance = &s_tdmInstance;

-

-    if (NULL == ptCfg)

-    {

-        return DRV_ERR_INVALID_PARAM;

-    }

-	

-    if ((ptInstance->tdmStatus != TDM_OPEN)&&(ptInstance->tdmStatus != TDM_RECORD_INUSE))

-    {

-        return DRV_ERR_NOT_OPENED;

-    }

-	

-    if (ptInstance->tdmStatus != TDM_RECORD_INUSE)

-    {

-        ptInstance->tCfg = *ptCfg;

-        ret = tdm_Configure(ptCfg);

-        if (ret != DRV_SUCCESS)

-        {

-            zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "tdm_TxCheckState tdm_Configure err ret=0x%x",ret);

-            return DRV_ERROR;

-        }

-    }

-    else

-    {

-        if ((ptCfg->bMaster!= ptInstance->tCfg.bMaster)||

-            (ptCfg->tTestMode != ptInstance->tCfg.tTestMode))

-        {

-            return DRV_ERR_INVALID_PARAM;

-        }

-    }

-	

-    return DRV_SUCCESS;

-}

-

-/**************************************************************************

-* Function:  tdm_IntIsr

-* Description: interrupt handle while in int mode

-* Parameters:

-*   Input:

-*           ptInstance : tdm instance

-*   Output:

-*           None

-* Returns:

-*           None

-* Others:

-****************************************************************************/

-static SINT32 tdm_RxCheckState(T_ZDrvTdm_Cfg *ptCfg)

-{

-    SINT32          ret = DRV_SUCCESS;

-    T_Tdm_Instance  *ptInstance = &s_tdmInstance;

-

-    if (NULL == ptCfg) /*klocwork 3  INVARIANT_CONDITION.UNREACH  assertÒÆµ½ifÀï*/

-    {

-        zDrv_ASSERT(0);

-        return DRV_ERR_INVALID_PARAM;

-    }

-    /* clear interrupt. must disable interrupt or tdm at first */

-

-    if ((ptInstance->tdmStatus != TDM_OPEN)&&(ptInstance->tdmStatus != TDM_PLAY_INUSE))

-    {

-        return DRV_ERR_NOT_OPENED;

-    }

-    if (ptInstance->tdmStatus != TDM_PLAY_INUSE)

-    {

-        ptInstance->tCfg = *ptCfg;

-        ret = tdm_Configure(ptCfg);

-        if (ret != DRV_SUCCESS)

-        {

-            zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "tdm_RxCheckState  failed ret is %d/r/n",ret);

-            return DRV_ERROR;

-        }

-    }

-    else

-    {

-        if((ptCfg->bMaster!= ptInstance->tCfg.bMaster)||

-           (ptCfg->tTestMode != ptInstance->tCfg.tTestMode))

-        {

-            return DRV_ERR_INVALID_PARAM;

-        }

-    }

-    return DRV_SUCCESS;

-}

-

-/**************************************************************************

-* Function:  tdm_IntIsr

-* Description: interrupt handle while in int mode

-* Parameters:

-*   Input:

-*           ptInstance : tdm instance

-*   Output:

-*           None

-* Returns:

-*           None

-* Others:

-****************************************************************************/

-static SINT32 tdm_TxComInit(T_ZDrvTdm_Params *params)

-{

-    T_Tdm_TxStream  *txStream = &s_tdmTxStream;

-    T_Tdm_Instance  *ptInstance = &s_tdmInstance;

-    T_Tdm_Reg       *ptReg = NULL;

-    SINT32          ret = DRV_SUCCESS;

-

-    if (NULL == params) /*klocwork 3  INVARIANT_CONDITION.UNREACH  assertÒÆµ½ifÀï*/

-    {

-        zDrv_ASSERT(0);

-        return DRV_ERR_INVALID_PARAM;

-    }

-

-    ptReg = ptInstance->ptDev->regs;

-    txStream->Transing = FALSE;

-    txStream->pauseFlag = FALSE;

-    txStream->txTransmit = NULL;

-    txStream->channel = params->channel;

-    txStream->txLen = params->buffersize;

-    txStream->p_cb = params->p_cb;

-

-	txStream->txRdIdx = 0;

-	txStream->txWrIdx = 0;

-

-	tdm_txBufArray[0] = (UINT8 *)(tdmDmaState[TDM_TX].dma_viraddr);

-	tdm_txBufArray[1] = tdm_txBufArray[0] + txStream->txLen;

-	tdm_txBufArray[2] = tdm_txBufArray[1] + txStream->txLen;

-    

-    /* reset tx fifo to ensure there're no data of last transfer in fifo */

-    ptReg->txFifoCtrl |= TDM_TX_FIFO_RST;

-    /* 8 bits available for TX FIFO would generate DMA TX interrupt*/

-    ptReg->txFifoCtrl |= TDM_TX_FIFO_THRESHOLD(7);  

-

-    ret = tdm_SetupTxBuf();

-    ret += tdm_QueueInit(&(txStream->txQueue));

-    if (ret != DRV_SUCCESS)

-    {

-        tdm_CleanTxResource();

-        return DRV_ERROR;

-    }

-    tdm_txsem_count_Init();

-    return DRV_SUCCESS;

-}

-

-/**************************************************************************

-* Function:  tdm_IntIsr

-* Description: interrupt handle while in int mode

-* Parameters:

-*   Input:

-*           ptInstance : tdm instance

-*   Output:

-*           None

-* Returns:

-*           None

-* Others:

-****************************************************************************/

-static SINT32 tdm_RxComInit(T_ZDrvTdm_Params *params)

-{

-    T_Tdm_RxStream  *rxStream = &s_tdmRxStream;

-    T_Tdm_Instance  *ptInstance = &s_tdmInstance;

-    T_Tdm_Reg       *ptReg = NULL;

-    SINT32          ret = DRV_SUCCESS;

-

-    if (NULL == params) /*klocwork 3  INVARIANT_CONDITION.UNREACH  assertÒÆµ½ifÀï*/

-    {

-        zDrv_ASSERT(0);

-        return DRV_ERR_INVALID_PARAM;

-    }

-	rxStream->rxLen = params->buffersize;

-

-	tdm_rxBufArray[0] = (UINT8 *)(tdmDmaState[TDM_RX].dma_viraddr);

-	tdm_rxBufArray[1] = tdm_rxBufArray[0] + rxStream->rxLen;

-	tdm_rxBufArray[2] = tdm_rxBufArray[1] + rxStream->rxLen;

-    ptReg = ptInstance->ptDev->regs;

-    

-    /* reset rx fifo to ensure there're no data of last transfer in fifo */

-    ptReg->rxFifoCtrl |= TDM_RX_FIFO_RST;         

-    /* 8 bits available for RX FIFO would generate DMA RX interrupt*/

-    ptReg->rxFifoCtrl |= TDM_RX_FIFO_THRESHOLD(7); 

-

-    ret = tdm_SetupRxBuf();

-    ret += tdm_QueueInit(&(rxStream->rxQueue));

-    if (ret != DRV_SUCCESS)

-    {

-        tdm_CleanRxResource();

-        return DRV_ERROR;

-    }

-	

-    tdm_rxsem_count_Init();

-    rxStream->rxLen = params->buffersize;

-//    rxStream->rxIdx = 0;

-

-	rxStream->rxRdIdx = 0;

-	rxStream->rxWrIdx = 0;

-//    rxStream->rxBufferArray[rxStream->rxIdx].tdmBufStatus = BUFFER_WRITE;

-//    rxStream->currentRxBuf = &rxStream->rxBufferArray[rxStream->rxIdx];

-

-	return DRV_SUCCESS;

-}

-

-/**************************************************************************

-* Function:  tdm_IntIsr

-* Description: interrupt handle while in int mode

-* Parameters:

-*   Input:

-*   Output:

-*           None

-* Returns:

-*           None

-* Others:

-****************************************************************************/

-static SINT32 tdm_IntTxInit()

-{

-    T_Tdm_Instance  *ptInstance = &s_tdmInstance;

-    T_Tdm_TxStream  *txStream = &s_tdmTxStream;

-    T_Tdm_Device    *ptDev = NULL;

-    T_Tdm_Reg       *ptReg = NULL;

-

-    ptDev = ptInstance->ptDev;

-    ptReg = ptDev->regs;

-    txStream->txTransmit = tdm_IntTx;

-    ptReg->intEn &= ~(TDM_INT_EN_TX_THRESHOLD | TDM_INT_EN_TX_UNDERRUN);  /* disable tx interrupt */

-    ptReg->intStatus |= (TDM_INT_TX_THRESHOLD | TDM_INT_TX_UNDERRUN);    /* clear interrupt. must disable interrupt or tdm at first */

-

-    return DRV_SUCCESS;

-}

-

-/**************************************************************************

-* Function:  tdm_IntIsr

-* Description: interrupt handle while in int mode

-* Parameters:

-*   Input:

-*           ptInstance : tdm instance

-*   Output:

-*           None

-* Returns:

-*           None

-* Others:

-****************************************************************************/

-static SINT32 tdm_IntRxInit()

-{

-#if 0

-    T_Tdm_Instance  *ptInstance = &s_tdmInstance;

-    T_Tdm_RxStream  *rxStream = &s_tdmRxStream;

-    T_Tdm_Device    *ptDev = NULL;

-    T_Tdm_Reg       *ptReg = NULL;

-

-    ptDev = ptInstance->ptDev;

-    ptReg = ptDev->regs;

-

-    ptReg->intStatus |= (TDM_INT_RX_THRESHOLD | TDM_INT_RX_OVERRUN);     /* clear interrupt */

-    ptReg->intEn &= ~(TDM_INT_EN_RX_THRESHOLD | TDM_INT_EN_RX_OVERRUN);   /* disable rx interrupt */

-

-    tdm_rxBuf = (UINT16 *)rxStream->currentRxBuf->buf;

-    tdm_rxLen = rxStream->rxLen/ sizeof(UINT16);

-

-    rxStream->rxIdx++;

-    ptReg->intEn |= TDM_INT_EN_RX_THRESHOLD;       /* enable rx interrupt */

-

-    if(TDM_INTCTRL_TEST_MODE == TRUE)

-    {

-        ptReg->intEn |=  TDM_INT_EN_RX_OVERRUN; /* enable rx over interrupt */

-    }

-#endif

-    return DRV_SUCCESS;

-}

-

-/**************************************************************************

-* Function:  tdm_IntIsr

-* Description: interrupt handle while in int mode

-* Parameters:

-*   Input:

-*   Output:

-*           None

-* Returns:

-*           None

-* Others:

-****************************************************************************/

-static VOID tdm_IntIsr()

-{

-    T_Tdm_Reg    *ptReg = s_tdmInstance.ptDev->regs;

-    T_Tdm_TxStream *tdmTxStream = &s_tdmTxStream;

-    const UINT32     uiIntStatus = ptReg->intStatus;

-    UINT32 channLable = 0;

-

-    if(TDM_INTCTRL_TEST_MODE) //klocwork 3  INVARIANT_CONDITION.GEN

-    {

-        if (uiIntStatus & TDM_INT_TX_UNDERRUN)         /* tx err */

-        {

-            ptReg->intStatus |= TDM_INT_TX_UNDERRUN;   /* clear interrupt */

-        }

-        if (uiIntStatus & TDM_INT_RX_OVERRUN)           /* rx err */

-        {

-            ptReg->intStatus |= TDM_INT_RX_OVERRUN;     /* clear interrupt */

-        }

-    }

-	

-    if (uiIntStatus & TDM_INT_TX_THRESHOLD)          /* playing */

-    {

-        ptReg->intEn &= ~TDM_INT_EN_TX_THRESHOLD;  /* disable tx interrupt */

-        ptReg->intStatus |= TDM_INT_TX_THRESHOLD;    /* clear interrupt. must disable interrupt or tdm at first */

-

-        channLable = (tdmTxStream->channel == AUDIO_DUAL_CHANNEL) ? 2 : 1;

-        tdm_IntTxWriteFifo(channLable);

-        if (0 == tdm_txLen)

-        {

-            tdm_IntTxChangeBuf();

-            return;                  /* while no data trans,then return and not enable the interrupt,so the interrupt will not generate*/

-        }

-        ptReg->intEn |= TDM_INT_EN_TX_THRESHOLD; /* enable tx interrupt */

-        if(TDM_INTCTRL_TEST_MODE) //klocwork 3  INVARIANT_CONDITION.GEN

-        {

-            ptReg->intEn |=  TDM_INT_EN_TX_UNDERRUN; /* enable tx interrupt */

-        }

-    }

-	

-    if (uiIntStatus & TDM_INT_RX_THRESHOLD)                /* recording */

-    {

-        ptReg->intEn &= ~TDM_INT_EN_RX_THRESHOLD;        /* disable rx interrupt */

-        ptReg->intStatus |= TDM_INT_RX_THRESHOLD;        /* clear interrupt */

-

-        tdm_IntRxWriteBuf();

-

-        if (0 == tdm_rxLen)

-        {

-            tdm_IntRxChangeBuf();

-        }

-        ptReg->intEn |= TDM_INT_EN_RX_THRESHOLD ;        /* enable rx interrupt */

-        if(TDM_INTCTRL_TEST_MODE) //klocwork 3  INVARIANT_CONDITION.GEN

-        {

-            ptReg->intEn |=  TDM_INT_EN_RX_OVERRUN; /* enable tx interrupt */

-        }

-    }

-

-    if (uiIntStatus & TDM_INT_TX_UNDERRUN)         /* tx err */

-    {

-        ptReg->intStatus |= TDM_INT_TX_UNDERRUN;   /* clear interrupt */

-        ptReg->txFifoCtrl |= TDM_TX_FIFO_RST;          /* reset tx fifo */

-    }

-

-    if (uiIntStatus & TDM_INT_RX_OVERRUN)           /* rx err */

-    {

-        ptReg->intStatus |= TDM_INT_RX_OVERRUN;     /* clear interrupt */

-        ptReg->rxFifoCtrl |= TDM_RX_FIFO_RST;           /* reset rx fifo */

-    }

-}

-

-/****************************************************************************

-* Function:  tdm_IntTxDataTrans

-* Description: config interrupt handle

-* Parameters:

-*   Input:

-*           None

-*   Output:

-*           None

-* Returns:

-*           None

-* Others:

-****************************************************************************/

-static VOID tdm_IntTxWriteFifo(UINT32 chanlab)

-{

-    UINT32     uiHdledLen = TDM_TXFL_VAL;

-    T_Tdm_Reg  *ptReg = s_tdmInstance.ptDev->regs;

-    UINT32 chanlable = 1;

-    

-    chanlable = 2;

-

-    if (tdm_txLen > TDM_TXFL_VAL*chanlable)

-    {

-        tdm_txLen -= uiHdledLen*chanlable;

-        while (0 < uiHdledLen)

-        {

-            ptReg->data = *(tdm_txBuf+(chanlable-1)) |  *tdm_txBuf<<16;

-            tdm_txBuf += chanlable;

-            uiHdledLen--;

-        }

-    }

-    else

-    {

-        while (0 < tdm_txLen)

-        {

-            ptReg->data = *(tdm_txBuf+(chanlable-1)) |  *tdm_txBuf<<16;

-            tdm_txBuf += chanlable;

-            tdm_txLen -= chanlable;

-        }

-    }

-}

-

-/****************************************************************************

-* Function:  tdm_IntTxDataTrans

-* Description: config interrupt handle

-* Parameters:

-*   Input:

-*           None

-*   Output:

-*           None

-* Returns:

-*           None

-* Others:

-****************************************************************************/

-static VOID tdm_IntRxWriteBuf()

-{

-    T_Tdm_Reg   *ptReg = s_tdmInstance.ptDev->regs;

-    UINT32      uiRxledLen = TDM_RXFL_VAL;

-    UINT32      data = 0;

-

-    if (tdm_rxLen > uiRxledLen*2)

-    {

-        tdm_rxLen -= uiRxledLen*2;

-        while (0 < uiRxledLen)

-        {

-            data = ptReg->data;

-

-            *(tdm_rxBuf + 1) = data & 0xffff;

-            *tdm_rxBuf = (data>>16) & 0xffff;

-            tdm_rxBuf += 2;

-            uiRxledLen--;

-        }

-    }

-    else

-    {

-        while (0 < tdm_rxLen)

-        {

-            data = ptReg->data;

-

-            *(tdm_rxBuf + 1) = data & 0xffff;

-            *tdm_rxBuf = (data>>16) & 0xffff;

-            tdm_rxBuf += 2;

-            tdm_rxLen -= 2;

-        }

-    }

-}

-

-/****************************************************************************

-* Function:  tdm_IntTxBufChange

-* Description: config interrupt handle

-* Parameters:

-*   Input:

-*           None

-*   Output:

-*           None

-* Returns:

-*           None

-* Others:

-****************************************************************************/

-static VOID tdm_IntTxChangeBuf()

-{

-    T_Tdm_TxStream *tdmTxStream = &s_tdmTxStream;

-    T_Tdm_QueueNode *queueNode = NULL;

-    UINT32 sem_cnt = 0;

-    SINT32 ret = DRV_SUCCESS;

-    if (DRV_SUCCESS == tdm_ChangeTxBufferStatus(BUFFER_READ ,BUFFER_NULL)) /*change the BUF state from READ to FULL after the data of the buf is read over,then release the sem*/

-    {

-        zOss_PutSemaphore(tdmTxStream->txSem);

-    }

-	

-    if (!(tdm_IsQueueEmpty(&tdmTxStream->txQueue)))

-    {

-        if (tdmTxStream->pauseFlag == FALSE)

-        {

-            ret = tdm_QueueGet(&tdmTxStream->txQueue, &queueNode);

-	     if(queueNode != NULL)

-	     {

-            ret += tdm_UpdateTxBufferStatus(queueNode->pBuf, BUFFER_READ);

-            ret += tdmTxStream->txTransmit(queueNode->pBuf, queueNode->len);

-	     }

-            if (ret != DRV_SUCCESS)

-            {

-                return;

-            }

-            tdmTxStream->Transing = TRUE;

-        }

-        else

-        {

-            tdmTxStream->Transing = FALSE;

-            return;

-        }

-    }

-    else

-    {

-        tdmTxStream->Transing = FALSE;

-        sem_cnt = zOss_GetSemaphoreCount(tdmTxStream->txSem);

-        if (sem_cnt == TDM_OUT_BUF_NUM)

-        {

-            if (tdmTxStream->p_cb != NULL)

-            {

-                tdmTxStream->p_cb();

-            }

-        }

-

-    }

-}

-

-/****************************************************************************

-* Function:  tdm_IntRxBufChange

-* Description: config interrupt handle

-* Parameters:

-*   Input:

-*           None

-*   Output:

-*           None

-* Returns:

-*           None

-* Others:

-****************************************************************************/

-static VOID tdm_IntRxChangeBuf()

-{

-#if 0

-    T_Tdm_RxStream *tdmRxStream = &s_tdmRxStream;

-

-    if (tdmRxStream->rxBufferArray[tdmRxStream->rxIdx].tdmBufStatus == BUFFER_NULL)

-    {

-        tdm_QueuePut(&(tdmRxStream->rxQueue), (UINT16 *)tdmRxStream->currentRxBuf->buf, (tdmRxStream->rxLen / sizeof(UINT16))); /*ÉÏ´ÎÊÕµ½µÄÊý¾Ý*/

-        tdm_UpdateRxBufferStatus((UINT16*)tdmRxStream->currentRxBuf->buf ,BUFFER_FULL);

-

-        zOss_PutSemaphore(tdmRxStream->rxSem);

-        tdmRxStream->rxBufferArray[tdmRxStream->rxIdx].tdmBufStatus = BUFFER_WRITE;

-        tdmRxStream->currentRxBuf = &tdmRxStream->rxBufferArray[tdmRxStream->rxIdx];

-        tdm_rxBuf = (UINT16 *)tdmRxStream->currentRxBuf->buf;

-        tdm_rxLen = tdmRxStream->rxLen / sizeof(UINT16);

-        tdmRxStream->rxIdx = (tdmRxStream->rxIdx +1) % TDM_OUT_BUF_NUM;          /*use the buf in turn*/

-    }

-    else                       /*if the next buf is bing used£tthen rewrite the buf*/

-    {

-        /* for (rxIndex = 0; rxIndex < TDM_OUT_BUF_NUM ; rxIndex ++)

-         {

-             if (tdmRxStream->rxBufferArray[rxIndex].tdmBufStatus == BUFFER_WRITE)

-             {

-                 break;

-             }

-         }

-         tdmRxStream->rxIdx = rxIndex;

-         tdmRxStream->currentRxBuf = &tdmRxStream->rxBufferArray[tdmRxStream->rxIdx];*/

-        tdm_rxBuf = (UINT16 *)tdmRxStream->currentRxBuf->buf;

-        tdm_rxLen = tdmRxStream->rxLen/ sizeof(UINT16);

-    }

-#endif

-}

-

-/****************************************************************************

-* Function:  isr_tdm

-* Description: config interrupt handle

-* Parameters:

-*   Input:

-*           None

-*   Output:

-*           None

-* Returns:

-*           None

-* Others:

-****************************************************************************/

-static VOID isr_tdm(VOID)

-{

-    tdm_IntIsr();

-}

-

-/**************************************************************************

-* Function:  tdm_IntTx

-* Description: trans data from ram to fifo  while in int mode

-* Parameters:

-*   Input:

-*           pBuf : buffer pointer

-*           uiLen : buffer length

-*   Output:

-*           None

-* Returns:

-*           DRV_ERR_INVALID_PARAM: error param

-*           DRV_ERROR : operate error

-*           DRV_SUCCESS : operate success

-* Others:

-****************************************************************************/

-static SINT32 tdm_IntTx(const UINT16 *pBuf, UINT32 uiLen)

-{

-    T_Tdm_Instance  *ptInstance = NULL;

-    T_Tdm_Device    *ptDev = NULL;

-    T_Tdm_Reg       *ptReg = NULL;

-

-

-	/*klocwork 3  INVARIANT_CONDITION.UNREACH  assertÒÆµ½ifÀï*/

-    if (NULL == pBuf || 0 == uiLen || TDM_MAX_TX_BUF_SIZE < uiLen) 

-    {

-        zDrv_ASSERT(0);

-        return DRV_ERR_INVALID_PARAM;

-    }

-

-    ptInstance = &s_tdmInstance;

-    if (ptInstance->tdmStatus != TDM_PLAY_INUSE && ptInstance->tdmStatus != TDM_BOTH_INUSE)

-    {

-        return DRV_ERR_NOT_STARTED;

-    }

-

-    tdm_txBuf = pBuf;

-    tdm_txLen = uiLen;

-

-    ptDev = ptInstance->ptDev;

-    ptReg = ptDev->regs;

-    ptReg->txFifoCtrl |= TDM_RX_FIFO_THRESHOLD(7);    /*DMA MODE is also necessry*/

-    /* clear tx interrupt */

-    ptReg->intStatus |= (TDM_INT_TX_THRESHOLD | TDM_INT_TX_UNDERRUN);    /* clear interrupt. must disable interrupt or tdm at first */

-    ptReg->intEn |= TDM_INT_EN_RX_THRESHOLD;        /* enable tx interrupt */

-    if(TDM_INTCTRL_TEST_MODE) //klocwork 3  INVARIANT_CONDITION.GEN

-    {

-        ptReg->intEn |=  TDM_INT_EN_TX_UNDERRUN; /* enable tx under interrupt */

-    }

-

-    return DRV_SUCCESS;

-}

-

-/**************************************************************************

-* Function:  tdm_DmaTxIntCb

-* Description: callback function while playing

-* Parameters:

-*   Input:

-*           tIntStatus : dma status

-*   Output:

-*           None

-* Returns:

-*           DRV_ERR_INVALID_PARAM: error param

-*           DRV_ERROR : operate error

-*           DRV_SUCCESS : operate success

-* Others:

-****************************************************************************/

-#if 0

-static VOID tdm_DmaTxIntCb(VOID)  //(T_ZDrvDma_IntStatus tIntStatus)

-{

-

-    T_Tdm_Reg    *ptReg = s_tdmInstance.ptDev->regs;

-    const UINT32     uiIntStatus = ptReg->intStatus;

-

-    zDrv_ASSERT(tIntStatus < MAX_DMA_INT);

-    if (tIntStatus >=  MAX_DMA_INT)

-    {

-        return;

-    }

-	

-    switch (tIntStatus)

-    {

-        case DMA_INT_END:

-        {

-            tdm_IntTxChangeBuf();

-            if (uiIntStatus & TDM_INT_TX_UNDERRUN)         /* tx err */

-            {

-                ptReg->intStatus |= TDM_INT_TX_UNDERRUN;   /* clear interrupt */

-                ptReg->txFifoCtrl |= TDM_TX_FIFO_RST;          /* reset tx fifo */

-            }

-            break;

-        }

-

-        case DMA_INT_ERR:

-            break;

-

-        default:

-            break;

-    }

-

-}

-#endif

-/**************************************************************************

-* Function:  tdm_DmaRxIntCb

-* Description: record callback function in dma mode,while one buffer is full, call this function

-* Parameters:

-*   Input:

-*           ptInstance : tdm instance

-*           tIntStatus : dma status

-*   Output:

-*           None

-* Returns:

-*           None

-* Others:

-****************************************************************************/

-#if 0

-static VOID tdm_DmaRxIntCb(T_Tdm_Instance *ptInstance)

-{

-

-    T_Tdm_RxStream *tdmStream = &s_tdmRxStream;

-    UINT8 rxIndex = 0;

-

-    T_Tdm_Reg    *ptReg = s_tdmInstance.ptDev->regs;

-    const UINT32     uiIntStatus = ptReg->intStatus;

-    zDrv_ASSERT((ptInstance != NULL) && (tIntStatus < MAX_DMA_INT));

-    if ((NULL == ptInstance) || (tIntStatus >=  MAX_DMA_INT))

-    {

-        return;

-    }

-

-    switch (tIntStatus)

-    {

-        case DMA_INT_END:

-        {			

-			TOS_DCACHE_INVALIDATE_RANGE((UINT32)tdmStream->currentRxBuf->buf, (UINT16)tdmStream->rxLen);

-			

-            if (tdmStream->rxBufferArray[tdmStream->rxIdx].tdmBufStatus == BUFFER_NULL)

-            {

-                tdm_QueuePut(&tdmStream->rxQueue, (UINT16 *)tdmStream->currentRxBuf->buf, (tdmStream->rxLen / sizeof(UINT16))); /*put the full buf to the queue*/

-                tdm_UpdateRxBufferStatus((UINT16*)tdmStream->currentRxBuf->buf, BUFFER_FULL);

-

-                zOss_PutSemaphore(tdmStream->rxSem);          /*if the next buf status is null,then release the sem so the uplayer can get the buf to read*/

-                tdm_DmaRx(ptInstance, tdmStream->rxIdx);

-            }

-            else

-            {

-                /*Èç¹û¾ÉÊý¾ÝÉϲãÕýÔÚ¿½±´£¬ÐÂÌîÂúµÄbufÖØÐÂÌîд*/

-                for (rxIndex = 0; rxIndex < TDM_OUT_BUF_NUM; rxIndex++)                      /*if the next buf is bing used£tthen rewrite the buf**/

-                {

-                    if (tdmStream->rxBufferArray[rxIndex].tdmBufStatus == BUFFER_WRITE)        /*it is necessary to find the index*/

-                    {

-                        if (uiIntStatus & TDM_INT_RX_OVERRUN)           /* rx err */

-                        {

-                            ptReg->intStatus |= TDM_INT_RX_OVERRUN;     /* clear interrupt */

-                            ptReg->rxFifoCtrl |= TDM_RX_FIFO_RST;           /* reset rx fifo */

-                            zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "tdm_DmaRxIntCb rxerr1 uiIntStatus=0x%x",uiIntStatus);

-                        }

-                        break;

-                    }

-                }

-                tdmStream->rxIdx = rxIndex;

-                tdm_DmaRx(ptInstance, rxIndex);

-            }

-            tdmStream->rxIdx = (tdmStream->rxIdx +1) % TDM_OUT_BUF_NUM;

-

-            if (uiIntStatus & TDM_INT_RX_OVERRUN)           /* rx err */

-            {

-                ptReg->intStatus |= TDM_INT_RX_OVERRUN;     /* clear interrupt */

-                ptReg->rxFifoCtrl |= TDM_RX_FIFO_RST;           /* reset rx fifo */

-                zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "tdm_DmaRxIntCb rxerr2 uiIntStatus=0x%x",uiIntStatus);

-            }

-            break;

-        }

-        case DMA_INT_ERR:

-            break;

-        default:

-            break;

-    }

-

-}

-#endif

-/**************************************************************************

-* Function:  dmacb_tdm_rx

-* Description: set call back function

-* Parameters:

-*   Input:

-*           tIntStatus : tdm instance

-*   Output:

-*           None

-* Returns:

-*           None

-* Others:

-****************************************************************************/

-static VOID dmacb_tdm_rx(void *data)

-{

-	UINT32 sem_cnt = 0;

-	T_Tdm_RxStream *tdmRxStream = &s_tdmRxStream;

-

-    if(tdmRxStream->rxBufferArray == NULL){

-        return;

-    }

-

-	tdm_UpdateRxBufferStatus((UINT16 *)(tdmRxStream->rxBufferArray[tdmRxStream->rxWrIdx].buf), BUFFER_FULL); 

-	tdmRxStream->rxWrIdx = (tdmRxStream->rxWrIdx + 1) % TDM_OUT_BUF_NUM;

-	sem_cnt = zOss_GetSemaphoreCount(tdmRxStream->rxSem);

-	if(sem_cnt < TDM_OUT_BUF_NUM) {

-		zOss_PutSemaphore(tdmRxStream->rxSem); 

-	} else {

-		tdmRxStream->rxRdIdx = (tdmRxStream->rxRdIdx + 1) % TDM_OUT_BUF_NUM;

-	}

-

-   // tdm_DmaRxIntCb(&s_tdmInstance, tIntStatus);

-}

-

-/****************************************************************************

-* Function:  dmacb_tdm_tx

-* Description: config interrupt callback

-* Parameters:

-*   Input:

-*           None

-*   Output:

-*           None

-* Returns:

-*           None

-* Others:

-****************************************************************************/

-static VOID dmacb_tdm_tx(void *data)

-{

-	UINT32 sem_cnt = 0;

-	T_Tdm_TxStream *tdmTxStream = &s_tdmTxStream;

-

-    if(tdmTxStream->txBufferArray == NULL){

-        return;

-    }

-    

-	tdm_UpdateTxBufferStatus((UINT16 *)(tdmTxStream->txBufferArray[tdmTxStream->txRdIdx].buf), BUFFER_NULL);       /*ÉϲãÍù*pBufдÍêÊý¾Ýºó£¬¸Ä±äBUF״̬ΪFULL*/

-	tdmTxStream->txRdIdx = (tdmTxStream->txRdIdx + 1)%TDM_OUT_BUF_NUM;

-	sem_cnt = zOss_GetSemaphoreCount(tdmTxStream->txSem);

-	if(sem_cnt < TDM_OUT_BUF_NUM) {

-		zOss_PutSemaphore(tdmTxStream->txSem);

-	} else {

-		tdmTxStream->txWrIdx = (tdmTxStream->txWrIdx + 1) % TDM_OUT_BUF_NUM;

-	}

-

-  //  tdm_DmaTxIntCb(tIntStatus);

-}

-#if 0

-/**************************************************************************

-* Function:  tdm_DmaRx

-* Description: use buffer idx to record data

-* Parameters:

-*   Input:

-*           tIntStatus : tdm instance

-*           idx : buffer index

-*   Output:

-*           None

-* Returns:

-*           None

-* Others:

-****************************************************************************/

-static SINT32 tdm_DmaRx(T_Tdm_Instance *ptInstance, UINT8 idx)

-{

-    SINT32 ret = DRV_SUCCESS;

-    T_Tdm_RxStream *tdmStream = &s_tdmRxStream;

-    T_ZDrvDma_ChannelDef tChanDef = {0};

-    //zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO,"tdm_DmaRx \n");

-

-    zDrv_ASSERT((ptInstance != NULL) && (idx < TDM_OUT_BUF_NUM));

-    if (NULL == ptInstance || idx >= TDM_OUT_BUF_NUM)

-    {

-        return DRV_ERR_INVALID_PARAM;

-    }

-    

-    tdmStream->rxBufferArray[idx].tdmBufStatus = BUFFER_WRITE ;

-    tdmStream->currentRxBuf = &tdmStream->rxBufferArray[idx];

-

-	TOS_DCACHE_INVALIDATE_RANGE((UINT32)tdmStream->currentRxBuf->buf, (UINT16)tdmStream->rxLen);

-    //dwCnt СÓÚ64kÇé¿ö

-    tChanDef.SrcAddr = (UINT32)&(ptInstance->ptDev->regs->data);

-    tChanDef.DestAddr = (UINT32)tdmStream->currentRxBuf->buf;

-    if(gTdmCntChangeRx>= -80)

-    {

-        tChanDef.Count = ((UINT16)tdmStream->rxLen) + gTdmCntChangeRx*2;//*sizeof(UINT32);//uiLen*sizeof(UINT16)

-        gTdmCntChangeRx = 0;

-    }

-    else

-    {

-        tChanDef.Count = ((UINT16)tdmStream->rxLen) - 80*2;//*sizeof(UINT32);//uiLen*sizeof(UINT16)

-        gTdmCntChangeRx = gTdmCntChangeRx+80;

-    }

-

-    tChanDef.LLI = NULL;

-

-    tChanDef.CONTROL.BurstReqMod = DMA_PERIPHERAL_REQ;

-    tChanDef.CONTROL.SrcMod = DMA_ADDRMOD_FIFO;

-    tChanDef.CONTROL.DestMod = DMA_ADDRMOD_RAM;

-    tChanDef.CONTROL.IrqMod = DMA_ALL_IRQ_ENABLE;

-    tChanDef.CONTROL.SrcBurstSize = DMA_BURST_SIZE_32BIT;

-    tChanDef.CONTROL.SrcBurstLen = DMA_BURST_LEN_8;

-    tChanDef.CONTROL.DestBurstSize = DMA_BURST_SIZE_32BIT;

-    tChanDef.CONTROL.IntSel = DMA_INT_TO_PS;

-	

-    ret = zDrvDma_ConfigChannel(ptInstance->DmaRxID, tChanDef);

-    if (ret != DRV_SUCCESS)

-    {

-        zDrvDma_DeAllocChannel(ptInstance->DmaRxID);

-        return ret;

-    }

-    //zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO,"tdm_DmaRx zDrvDma_ConfigChannel ret %d\n", ret);

-

-    ret = zDrvDma_StartChannel(ptInstance->DmaRxID, ptInstance->fDmaCbRx, FALSE);

-    if (ret != DRV_SUCCESS)

-    {

-        zDrvDma_DeAllocChannel(ptInstance->DmaRxID);

-        return ret;

-    }

-    //zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO,"tdm_DmaRx zDrvDma_StartChannel ret %d\n", ret);

-    return ret;

-}

-#endif

-/**************************************************************************

-* Function:  tdm_DmaRxInit

-* Description: dma  init while recording

-* Parameters:

-*   Input:

-*   Output:

-*           None

-* Returns:

-*           DRV_ERR_INVALID_PARAM: error param

-*           DRV_ERROR : operate error

-*           DRV_SUCCESS : operate success

-* Others:

-****************************************************************************/

-static SINT32 tdm_DmaRxInit()

-{

-    T_Tdm_Instance  *ptInstance = NULL;

-    T_Tdm_RxStream *tdmStream = &s_tdmRxStream;

-    ptInstance = &s_tdmInstance;

-

-	struct dma_async_tx_descriptor *desc = NULL;

-	dma_cap_mask_t mask;

-	

-	dma_cap_zero(mask);

-	dma_cap_set(DMA_CYCLIC, mask);

-	

-	dma_channel_def temp[3];

-	int 	i;

-	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));

-	

-	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;

-		temp[i].dma_control.tran_mode = TRAN_PERI_TO_MEM;

-		temp[i].dma_control.src_burst_len 	= DMA_BURST_LEN_8;

-		temp[i].count		= tdmStream->rxLen;

-		//		temp[i].callback	= (dma_callback_func)dma_cb;

-		/*

-			temp[i].dma_control.tran_mode 		= (substream->stream == SNDRV_PCM_STREAM_PLAYBACK

-													? TRAN_MEM_TO_PERI : TRAN_PERI_TO_MEM);

-			temp[i].dma_control.src_burst_len 	= (substream->stream == SNDRV_PCM_STREAM_PLAYBACK

-													? DMA_BURST_LEN_16 : DMA_BURST_LEN_8);

-		*/

-		temp[i].dma_control.src_burst_size 	= DMA_BURST_SIZE_32BIT;

-		temp[i].dma_control.dest_burst_size = DMA_BURST_SIZE_32BIT;

-		temp[i].dma_control.dest_burst_len 	= DMA_BURST_LEN_8;

-		temp[i].dma_control.irq_mode 		= DMA_ALL_IRQ_ENABLE;

-		temp[i].link_addr 		= 1;

-	}

-

-	temp[TDM_OUT_BUF_NUM - 1].link_addr 	= 0;

-

-	dmaengine_slave_config(tdmDmaState[TDM_RX].ch, (struct dma_slave_config*)&temp);

-

-	desc = tdmDmaState[TDM_RX].ch->device->device_prep_dma_cyclic(

-           tdmDmaState[TDM_RX].ch,

-           tdmDmaState[TDM_RX].dma_phyaddr, tdmStream->rxLen * 3,

-           tdmStream->rxLen,

-           DMA_DEV_TO_MEM,

-           NULL);

-

-	desc->callback = (dma_async_tx_callback)dmacb_tdm_rx;

-	desc->callback_param = NULL;

-

-	dmaengine_submit(desc);  

-

-   	dma_async_issue_pending(tdmDmaState[TDM_RX].ch);

-    return DRV_SUCCESS;

-}

-

-/**************************************************************************

-* Function:  tdm_DmaTxInit

-* Description: init dma trans

-* Parameters:

-*   Input:

-*   Output:

-*           None

-* Returns:

-*           DRV_ERR_INVALID_PARAM: error param

-*           DRV_ERROR : operate error

-*           DRV_SUCCESS : operate success

-* Others:

-****************************************************************************/

-static SINT32 tdm_DmaTxInit()

-{

-    T_Tdm_Instance  *ptInstance = NULL;

-    ptInstance = &s_tdmInstance;

-    T_Tdm_TxStream *txStream = &s_tdmTxStream;

-

-	struct dma_async_tx_descriptor *desc = NULL;

-	dma_cap_mask_t mask;	

-	dma_cap_zero(mask);

-	dma_cap_set(DMA_CYCLIC, mask);	

-	dma_channel_def temp[3];

-	int 	i;

-	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));

-	

-	for (i = 0; i < TDM_OUT_BUF_NUM; i++) {

-		temp[i].src_addr 	= tdmDmaState[TDM_TX].dma_phyaddr + (txStream->txLen) * i;

-		temp[i].dest_addr	= ZX29_TDM_PHYS + 0x24;

-		temp[i].dma_control.tran_mode = TRAN_MEM_TO_PERI;

-		temp[i].dma_control.src_burst_len 	= DMA_BURST_LEN_8;

-		temp[i].count		= txStream->txLen;

-		//		temp[i].callback	= (dma_callback_func)dma_cb;

-		/*

-			temp[i].dma_control.tran_mode 		= (substream->stream == SNDRV_PCM_STREAM_PLAYBACK

-													? TRAN_MEM_TO_PERI : TRAN_PERI_TO_MEM);

-			temp[i].dma_control.src_burst_len 	= (substream->stream == SNDRV_PCM_STREAM_PLAYBACK

-													? DMA_BURST_LEN_16 : DMA_BURST_LEN_8);

-		*/

-		temp[i].dma_control.src_burst_size 	= DMA_BURST_SIZE_32BIT;

-		temp[i].dma_control.dest_burst_size = DMA_BURST_SIZE_32BIT;

-		temp[i].dma_control.dest_burst_len 	= DMA_BURST_LEN_8;

-		temp[i].dma_control.irq_mode 		= DMA_ALL_IRQ_ENABLE;

-		temp[i].link_addr 		= 1;

-	}

-

-	temp[TDM_OUT_BUF_NUM - 1].link_addr 	= 0;

-

-	dmaengine_slave_config(tdmDmaState[TDM_TX].ch, (struct dma_slave_config*)&temp);

-

-	desc = tdmDmaState[TDM_TX].ch->device->device_prep_dma_cyclic(

-           tdmDmaState[TDM_TX].ch,

-           tdmDmaState[TDM_TX].dma_phyaddr, txStream->txLen * 3,

-           txStream->txLen,

-           DMA_MEM_TO_DEV,

-           NULL);

-

-	desc->callback = (dma_async_tx_callback)dmacb_tdm_tx;

-	desc->callback_param = NULL;

-

-	dmaengine_submit(desc);   

-    return DRV_SUCCESS;

-}

-#if 0

-/**************************************************************************

-* Function:  tdm_DmaRx

-* Description: playing dual audio data dma setting

-* Parameters:

-*   Input:

-*           pBuf : buffer index

-*           uiLen : buffer size

-*   Output:

-*           None

-* Returns:

-*           DRV_SUCCESS:operate success

-* Others:

-****************************************************************************/

-static SINT32 tdm_DmaTx(const UINT16 *pBuf, UINT32  uiLen)

-{

-    SINT32 ret = DRV_SUCCESS;

-    T_Tdm_Instance  *ptInstance = &s_tdmInstance;

-    T_Tdm_TxStream  *txStream = &s_tdmTxStream;

-    T_ZDrvDma_ChannelDef tChanDef = {0};

-

-    zDrv_ASSERT((pBuf != NULL) && (uiLen != 0) && (uiLen <= TDM_MAX_TX_BUF_SIZE));

-    if (NULL == pBuf || 0 == uiLen || TDM_MAX_TX_BUF_SIZE < uiLen)

-    {

-        return DRV_ERR_INVALID_PARAM;

-    }

-	//zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "tdm_DmaTx buf 0x%x! \r\n", *pBuf);

-	TOS_CACHE_CLEAN_RANGE((unsigned long)pBuf, uiLen * sizeof(UINT16));//xiu

-	

-    tChanDef.SrcAddr = (UINT32)(pBuf);

-    tChanDef.DestAddr = (UINT32)&(ptInstance->ptDev->regs->data);

-

-    if(gTdmCntChangeTx >= -80)

-    {

-        tChanDef.Count = uiLen*sizeof(UINT16) + gTdmCntChangeTx * 2;//´«ÊäµÄ×Ö½Ú´óС

-        gTdmCntChangeTx = 0;

-    }

-    else

-    {

-        tChanDef.Count = uiLen*sizeof(UINT16) - 80 * 2;//*sizeof(UINT32);//uiLen*sizeof(UINT16)

-        gTdmCntChangeTx = gTdmCntChangeTx + 80;

-    }

-

-    tChanDef.LLI = NULL;

-

-    tChanDef.CONTROL.BurstReqMod = DMA_PERIPHERAL_REQ;

-    tChanDef.CONTROL.SrcMod = DMA_ADDRMOD_RAM;

-    tChanDef.CONTROL.DestMod = DMA_ADDRMOD_FIFO;

-    tChanDef.CONTROL.IrqMod = DMA_ALL_IRQ_ENABLE;

-    tChanDef.CONTROL.SrcBurstSize = DMA_BURST_SIZE_32BIT;

-    tChanDef.CONTROL.SrcBurstLen = DMA_BURST_LEN_8;   

-    tChanDef.CONTROL.DestBurstSize = DMA_BURST_SIZE_32BIT;

-    tChanDef.CONTROL.IntSel = DMA_INT_TO_PS;

-

-    ret = zDrvDma_ConfigChannel(ptInstance->DmaTxID, tChanDef);

-    if (ret != DRV_SUCCESS)

-    {

-        zDrvDma_DeAllocChannel(ptInstance->DmaTxID);

-        return ret;

-    }

-

-    ret = zDrvDma_StartChannel(ptInstance->DmaTxID, ptInstance->fDmaCbTx, FALSE);

-    if (ret != DRV_SUCCESS)

-    {

-        zDrvDma_DeAllocChannel(ptInstance->DmaTxID);

-        return ret;

-    }

-

-    return DRV_SUCCESS;

-}

-#endif

-static VOID tdm_InitInt()

-{

-    static T_Tdm_Device s_TdmDev;

-

-    if (s_bTdmInitInt)

-        return;

-	

-    memset(&s_TdmDev, 0, sizeof(s_TdmDev));

-    s_TdmDev.intline = TDM_INT;

-    s_TdmDev.intprio = 15;

-    s_TdmDev.regs = (T_Tdm_Reg*)TDM_REG_BASE;            

-    s_tdmInstance.ptDev = &s_TdmDev;

-    s_bTdmInitInt = TRUE;

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "(tdm_InitInt(TDM_REG_BASE) = %x",TDM_REG_BASE); 

-}

-

-SINT32 zDrvTDM_Init(VOID)

-{

-    zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO,"zDrvTDM__Init \n");

-

-    s_tdmRxStream.rxSem = zOss_CreateSemaphore("tdm_rx_sem", 0); 

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

-	/*

-    if(NULL == s_tdmRxStream.rxSem)

-    {

-        zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "create tdm_rx_sem err \n");

-        return DRV_ERROR;

-    }*/

-

-    s_tdmTxStream.txSem = zOss_CreateSemaphore("tdm_tx_sem", 0);

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

-	/*

-	if(NULL == s_tdmTxStream.txSem)

-    {

-        zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "create tdm_tx_sem err \n");

-        return DRV_ERROR;

-    }*/

-	

-    return DRV_SUCCESS;

-}

-

-SINT32 tdm_rxsem_count_Init()

-{

-    UINT32 i = 0;

-    UINT32 semCount = 0;

-    SINT32 Count = 0;

-

-    T_Tdm_RxStream  *rxStream = &s_tdmRxStream;

-//rx sem count 0

-    semCount = zOss_GetSemaphoreCount(rxStream->rxSem);

-    zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "tdm rxStream->rxSem count=%d \r\n",semCount);

-

-    Count = semCount;

-    if (Count > 0)

-    {

-        for (i = 0; i < Count; i++)

-        {

-            zOss_GetSemaphore(rxStream->rxSem, ZOSS_NO_WAIT);

-        }

-    }

-	

-    return DRV_SUCCESS;

-}

-

-SINT32 tdm_txsem_count_Init()

-{

-    UINT32 i = 0;

-    UINT32 semCount = 0;

-    SINT32 Count = 0;

-

-    T_Tdm_TxStream  *txStream = &s_tdmTxStream;

-    //tx sem count 3

-

-    semCount = zOss_GetSemaphoreCount(txStream->txSem);

-    zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "tdm txStream->txSem count=%d ",semCount);

-

-    Count=TDM_UPLINK_SEM_NUM-semCount;

-    if (Count > 0)

-    {

-        for (i = 0; i < Count; i++)

-        {

-            zOss_PutSemaphore(txStream->txSem);

-        }

-    }

-    else if (Count < 0)

-    {

-        Count = 0 - Count;

-        for (i = 0; i < Count; i++)

-        {

-            zOss_GetSemaphore(txStream->txSem, ZOSS_NO_WAIT);

-        }

-    }

-    return DRV_SUCCESS;

-

-}

-

-/****************************************************************************

-* Function:  zDrvTDM_Open

-* Description:open tdm device

-* Parameters:

-*   Input:

-*           tdmTransFunc : callback function pointer

-*   Output:

-*           None

-* Returns:

-*           DRV_ERR_INVALID_PARAM: error param

-*           DRV_ERROR : operate error

-*           DRV_SUCCESS : operate success

-* Others:

- ****************************************************************************/

-SINT32 zDrvTDM_Open(T_ZDrvI2s_TransMode tdmTransMode)

-{

-    T_Tdm_Instance  *ptInstance = NULL;

-    T_Tdm_Device    *ptDev = NULL;

-    SINT32 ret = DRV_SUCCESS;

-    SINT32	returnValue = 0;

-	UINT32 bufSize;

-	UINT32 txBufSize;

-	UINT32 rxBufSize;

-    ptInstance = &s_tdmInstance;

-    if (ptInstance->tdmStatus == TDM_OPEN || ptInstance->tdmStatus == TDM_PLAY_INUSE || ptInstance->tdmStatus == TDM_RECORD_INUSE || ptInstance->tdmStatus == TDM_BOTH_INUSE)

-    {

-        zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "howard zDrvTDM_Open err tdmStatus=%d",ptInstance->tdmStatus);

-		zDrv_ASSERT(0);

-        return DRV_ERR_OPEN_TIMES;

-    }

-

-    #ifdef _USE_PSM

-    zDrvPow_SetDevActive((UINT32)IDLE_FLAG_TDM);

-    zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvTDM_Open Active(IDLE_FLAG_TDM)\n");

-    #endif

-

-    tdm_InitInt();

-

-    tdm_ClkInit();

-

-    ptDev = ptInstance->ptDev;

-    ptInstance->tdmTransMode = tdmTransMode;

-    

-	if((g_voiceVar.voiceMode == VOICE_GSM_MODE)||(g_voiceVar.voiceMode == VOICE_LTE_MODE)|| \

-		(g_voiceVar.voiceMode == VOICE_WCDMA_MODE)||(g_voiceVar.voiceMode == VOICE_TD_MODE)) {

-		bufSize = TDM_MAX_VOICE_LTE_MEM_SIZE * 6;

-		txBufSize = TDM_MAX_VOICE_LTE_MEM_SIZE;

-		rxBufSize = TDM_MAX_VOICE_LTE_MEM_SIZE;

-	} else {

-		bufSize = (TDM_MAX_TX_BUF_SIZE + TDM_MAX_RX_BUF_SIZE) * 3;

-		txBufSize = TDM_MAX_TX_BUF_SIZE;

-		rxBufSize = TDM_MAX_RX_BUF_SIZE;

-	}

-

-	if((g_voiceVar.voiceMode == VOICE_GSM_MODE)||(g_voiceVar.voiceMode == VOICE_LTE_MODE)|| \

-		(g_voiceVar.voiceMode == VOICE_WCDMA_MODE)||(g_voiceVar.voiceMode == VOICE_TD_MODE))

-	{

-		tdmDmaState[TDM_TX].totalbuffsize = TDM_MAX_VOICE_LTE_MEM_SIZE * 3;	

-		tdmDmaState[TDM_RX].totalbuffsize = TDM_MAX_VOICE_LTE_MEM_SIZE * 3;		

-		txBufSize = TDM_MAX_VOICE_LTE_MEM_SIZE;

-		rxBufSize = TDM_MAX_VOICE_LTE_MEM_SIZE;

-		tdmDmaState[TDM_TX].singlebuffsize = TDM_MAX_VOICE_LTE_MEM_SIZE;

-		tdmDmaState[TDM_RX].singlebuffsize = TDM_MAX_VOICE_LTE_MEM_SIZE;

-	}

-	else

-	{

-		tdmDmaState[TDM_TX].totalbuffsize = TDM_MAX_TX_BUF_SIZE * 3;	

-		tdmDmaState[TDM_RX].totalbuffsize = TDM_MAX_RX_BUF_SIZE * 3;

-		txBufSize = TDM_MAX_TX_BUF_SIZE;

-		rxBufSize = TDM_MAX_RX_BUF_SIZE;

-		tdmDmaState[TDM_TX].singlebuffsize = TDM_MAX_TX_BUF_SIZE;

-		tdmDmaState[TDM_RX].singlebuffsize = TDM_MAX_RX_BUF_SIZE;

-	}

-

-	tdmDmaState[TDM_TX].dma_viraddr = dma_alloc_writecombine(&tdm_device.dev, tdmDmaState[TDM_TX].totalbuffsize,

-	                                   &(tdmDmaState[TDM_TX].dma_phyaddr), GFP_KERNEL); 

-	

-	tdmDmaState[TDM_RX].dma_viraddr = dma_alloc_writecombine(&tdm_device.dev, tdmDmaState[TDM_RX].totalbuffsize,

-	                                   &(tdmDmaState[TDM_RX].dma_phyaddr), GFP_KERNEL); 

-	

-	if ((NULL == tdmDmaState[TDM_TX].dma_viraddr)||(NULL == tdmDmaState[TDM_RX].dma_viraddr))

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "[XK]BUF_NUM Malloc Failed! %p,%p,%x,%x\n", tdmDmaState[TDM_TX].dma_viraddr, tdmDmaState[TDM_RX].dma_viraddr, \

-								tdmDmaState[TDM_TX].dma_phyaddr, tdmDmaState[TDM_RX].dma_phyaddr);

-		return DRV_ERR_MEM_ALLOC;

-	}

-	else		

-	{	

-/*		tdm_txBufArray[tId][0] = (UINT8 *)(tdmDmaState[tId][TDM_TX].dma_viraddr);

-		tdm_txBufArray[tId][1] = tdm_txBufArray[tId][0] + txBufSize;

-		tdm_txBufArray[tId][2] = tdm_txBufArray[tId][1] + txBufSize;

-		tdm_rxBufArray[tId][0] = (UINT8 *)(tdmDmaState[tId][TDM_RX].dma_viraddr);

-		tdm_rxBufArray[tId][1] = tdm_rxBufArray[tId][0] + rxBufSize;

-		tdm_rxBufArray[tId][2] = tdm_rxBufArray[tId][1] + rxBufSize;

-

-		tdmDmaState[tId].dma_tx_phyaddr[1] = tdmDmaState[tId].dma_tx_phyaddr[0] + txBufSize;

-		tdmDmaState[tId].dma_tx_phyaddr[2] = tdmDmaState[tId].dma_tx_phyaddr[1] + txBufSize;

-		tdmDmaState[tId].dma_rx_phyaddr[1] = tdmDmaState[tId].dma_rx_phyaddr[0] + rxBufSize;

-		tdmDmaState[tId].dma_rx_phyaddr[2] = tdmDmaState[tId].dma_rx_phyaddr[1] + rxBufSize;

-*/

-	}

-

-    ret = tdm_Reset();

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

-    /*

-    if (ret != DRV_SUCCESS)

-    {

-        #ifdef _USE_PSM

-        if (s_tdmInstance.tdmStatus == TDM_IDLE)

-        {

-            zDrvPow_SetDevIdle((UINT32)IDLE_FLAG_TDM);

-        }

-        #endif

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "[TDM]tdm_ResetFailed!!!!\n");

-		zDrv_ASSERT(0);

-        return DRV_ERROR;

-    }*/

-    /* value of control register is 0 after reseted */

-    ptInstance->tCfg.bMaster  = FALSE;

-    if (ptInstance->tdmTransMode == TRANS_INT_MODE)

-    {

-        returnValue = zDrvInt_InstallIsr(ptDev->intline, (VOID *)isr_tdm, "tdm",INT_HIGHLEVEL);

-

-        if (returnValue < 0)

-        {

-            #ifdef _USE_PSM

-            if (s_tdmInstance.tdmStatus == TDM_IDLE)

-            {

-                zDrvPow_SetDevIdle((UINT32)IDLE_FLAG_TDM);

-                zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvTDM_Open DevIdle(IDLE_FLAG_TDM)\n");

-            }

-            #endif

-            return DRV_ERROR;

-        }

-        ptDev->pid = (PROCESS)returnValue;

-    }

-	

-#ifdef _USE_PSM

-	zDrvPow_SetDevActive((UINT32) IDLE_FLAG_TDM);

-    zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvTDM_Open DevActive(IDLE_FLAG_TDM)\n");

-#endif

-

-    ptInstance->tdmStatus = TDM_OPEN;

-    return DRV_SUCCESS;

-}

-

-SINT32 zDrvTDM_Reset()

-{

-	SINT32 ret = DRV_SUCCESS;

-

-	ret = tdm_Reset();

-	

-	return ret;

-}

-

-/****************************************************************************

-* Function:  zDrvTDM_Close

-* Description:close  tdm device

-* Parameters:

-*   Input:

-*   Output:

-*           None

-* Returns:

-*           DRV_ERR_INVALID_PARAM: error param

-*           DRV_ERROR : operate error

-*           DRV_SUCCESS : operate success

-* Others:

- ****************************************************************************/

-SINT32 zDrvTDM_Close()

-{

-    T_Tdm_Instance  *ptInstance = NULL;

-    SINT32 ret = DRV_SUCCESS;

-	

-    ptInstance = &s_tdmInstance;

-    if (ptInstance->tdmStatus != TDM_OPEN)

-    {

-    	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvTDM_Close TDM, tdmStatus=%d != TDM_OPEN",s_tdmInstance.tdmStatus);

-        return DRV_ERR_NOT_OPENED;

-    }

-	

-    if (ptInstance->tdmTransMode == TRANS_INT_MODE)

-        /* reset tx/rx fifo to ensure there're no data of last transfer in fifo */

-        /* set the FIFO int threshold */

-    {

-        ret += zDrvInt_UninstallIsr(ptInstance->ptDev->intline);

-        /* enable tdm; enable tx */

-

-    }

-

-	if (tdmDmaState[TDM_TX].dma_viraddr != NULL) {

-	dma_free_writecombine(&tdm_device.dev, tdmDmaState[TDM_TX].totalbuffsize,

-		                      tdmDmaState[TDM_TX].dma_viraddr, tdmDmaState[TDM_TX].dma_phyaddr);

-	tdmDmaState[TDM_TX].dma_viraddr = NULL;

-	}

-	if (tdmDmaState[TDM_RX].dma_viraddr != NULL) {

-		dma_free_writecombine(&tdm_device.dev, tdmDmaState[TDM_RX].totalbuffsize,

-			                      tdmDmaState[TDM_RX].dma_viraddr, tdmDmaState[TDM_RX].dma_phyaddr);

-		tdmDmaState[TDM_RX].dma_viraddr = NULL;

-	}

-

-    ret = tdm_Reset();

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

-	/*

-    if (ret != DRV_SUCCESS)

-    {

-        return DRV_ERROR;

-    }

-	*/

-    tdm_CloseClk();

-    tdm_ClkDeinit();

-    ptInstance->tdmStatus = TDM_IDLE;

-

-	/*klocwork 3  INVARIANT_CONDITION.UNREACH ɾ³ýifÇÒµ÷Õû˳Ðò*/

-#ifdef _USE_PSM

-    zDrvPow_SetDevIdle((UINT32)IDLE_FLAG_TDM);

-    zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvTDM_Open DevIdle(IDLE_FLAG_TDM)\n");

-#endif

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvTDM_Close, tdmStatus=%d", s_tdmInstance.tdmStatus);

-

-    return DRV_SUCCESS;

-}

-

-/****************************************************************************

-* Function:  zDrvTDM_Write_Start

-* Description: start to trans data,use in playing

-* Parameters:

-*   Input:

-*           buf_size : one buffer is how many bytes

-*           ptCfg : config param

-*   Output:

-*           None

-* Returns:

-*           DRV_ERR_INVALID_PARAM: error param

-*           DRV_ERROR : operate error

-*           DRV_SUCCESS : operate success

-* Others:

- ****************************************************************************/

-SINT32 zDrvTDM_Write_Prepare(T_ZDrvTdm_Cfg * ptCfg)

-{

-    T_Tdm_Instance  *ptInstance = &s_tdmInstance;

-    T_Tdm_Reg       *ptReg = NULL;

-    SINT32           ret = DRV_SUCCESS;

-    zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvTDM_Write_Prepare,ptCfg=%p! \r\n",ptCfg);

-

-    if (NULL == ptCfg)

-    {

-        return DRV_ERR_INVALID_PARAM;

-    }

-

-    zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "[TDM]zDrvTDM_Write_Prepare! \r\n");

-    ptReg = ptInstance->ptDev->regs;

-    ret = tdm_TxCheckState(ptCfg);

-    if (ret != DRV_SUCCESS)

-    {

-        zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvTDM_Write_Prepare:  tdm_TxCheckState err ret=%d\r\n",ret);

-        return DRV_ERROR;

-    }

-

-    ptReg->processCtrl |= TDM_EN;

-

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "(zDrvTDM_Write_Prepare timing ctrl) = %x",  (s_tdmInstance.ptDev)->regs->timingCtrl);

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "(zDrvTDM_Write_Prepare txFifoCtrl) = %x", (s_tdmInstance.ptDev)->regs->txFifoCtrl);

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "(zDrvTDM_Write_Prepare frame ctrl) = %x",(s_tdmInstance.ptDev)->regs->frameCntr);

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "(zDrvTDM_Write_Prepare txFifoCtrl) = %x", (s_tdmInstance.ptDev)->regs->txFifoCtrl);

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "(zDrvTDM_Write_Prepare process ctrl) = %x", (s_tdmInstance.ptDev)->regs->processCtrl);

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "(zDrvTDM_Write_Prepare reg intEn) = %x",  (s_tdmInstance.ptDev)->regs->intEn);

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "(zDrvTDM_Write_Prepare reg intStatus) = %x\n", (s_tdmInstance.ptDev)->regs->intStatus);

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "(zDrvTDM_Write_Prepare reg writeCntCtrl) = %x\n",  (s_tdmInstance.ptDev)->regs->writeCntCtrl);

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "(zDrvTDM_Write_Prepare reg writeCntr) = %x\n",  (s_tdmInstance.ptDev)->regs->writeCntr);

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "(zDrvTDM_Write_Prepare reg writeCntr2) = %x\n",  (s_tdmInstance.ptDev)->regs->writeCntr2);

-    return DRV_SUCCESS;

-}

-

-SINT32 zDrvTDM_Write_Start_Do(T_ZDrvTdm_Params *params)

-{

-    T_Tdm_Instance  *ptInstance = &s_tdmInstance;

-    T_Tdm_TxStream  *txStream = &s_tdmTxStream;

-    T_Tdm_Reg       *ptReg = NULL;

-    SINT32           ret = DRV_SUCCESS;

-    SINT32           waitTime = 0;

-	/*klocwork 3  INVARIANT_CONDITION.UNREACH assertÒÆµ½ifÀï*/

-    if (NULL == params)

-    {

-        zDrv_ASSERT(0);

-        return DRV_ERR_INVALID_PARAM;

-    }

-

-    zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvTDM_Write_Start/r/n");

-    ptReg = ptInstance->ptDev->regs;

-    txStream->channel = params->channel;

-	

-    ret += tdm_TxComInit(params);

-    if (ptInstance->tdmTransMode == TRANS_INT_MODE)

-    {

-        txStream->txTransmit = tdm_IntTx;              /*init the transter function ,it will be called in Write() function*/

-        ret += tdm_IntTxInit();

-        if (ret != DRV_SUCCESS)

-        {

-            tdm_CleanTxResource();

-            return DRV_ERROR;

-        }

-    }

-    else if (ptInstance->tdmTransMode == TRANS_DMA_MODE)

-    {

-   //     txStream->txTransmit = tdm_DmaTx;

-        ret += tdm_DmaTxInit();

-        if (ret != DRV_SUCCESS)

-        {

-            tdm_CleanTxResource();

-            return DRV_ERROR;

-        }

-        ptReg->txFifoCtrl |= TDM_TX_DMA_EN;            /* enable dma transfer */

-    }

-    ptReg->processCtrl |=  TDM_TX_OPEN ;

-

-    if (ptInstance->tCfg.bMaster == TRUE)                  /* wait */

-    {

-        //   while (0 == (ptReg->commonCtrl & TDM_EN_BACK)|| 0 == (ptReg->commonCtrl & TDM_TX_OPEN_BACK))  /* ensure tdm is enabled */   /* ensure tx is opened */

-        {

-            zOss_Sleep(TDM_ENABLE_DELAY_TIME);

-

-            waitTime += TDM_ENABLE_DELAY_TIME;

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

-			/*

-            if (waitTime == 1000)

-            {

-                zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "waitTime error");

-                return DRV_ERROR;

-            }*/

-        }

-    }

-

-    ptInstance->tdmStatus = ((ptInstance->tdmStatus) == TDM_RECORD_INUSE)? TDM_BOTH_INUSE : TDM_PLAY_INUSE;

-

-    gTdmCntChangeTx = 0;

-    return DRV_SUCCESS;

-}

-

-SINT32 zDrvTDM_Write_Start(T_ZDrvTdm_Params *params, T_ZDrvTdm_Cfg *ptCfg)

-{

-    SINT32          ret = DRV_SUCCESS;

-    zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvTDM_Write_Start\r\n");

-

-    ret = zDrvTDM_Write_Prepare(ptCfg);

-    if (ret != DRV_SUCCESS)

-    {

-        zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvTDM_Read_Start  zDrvTDM_Write_Prepare error ret=%d \r\n",ret);

-        return ret;

-    }

-	

-    ret = zDrvTDM_Write_Start_Do(params);

-    if (ret != DRV_SUCCESS)

-    {

-        zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvTDM_Read_Start  zDrvTDM_Write_Start_Do error ret=%d \r\n",ret);

-        return ret;

-    }

-	

-    return DRV_SUCCESS;

-}

-

-/****************************************************************************

-* Function:  zDrvTDM_Read_Start

-* Description: start to trans data,use in recording

-* Parameters:

-*   Input:

-*           buf_size : one buffer is how many bytes

-*           ptCfg : config param

-*   Output:

-*           None

-* Returns:

-*           DRV_ERR_INVALID_PARAM: error param

-*           DRV_ERROR : operate error

-*           DRV_SUCCESS : operate success

-* Others:

- ****************************************************************************/

-SINT32 zDrvTDM_Read_Prepare(T_ZDrvTdm_Cfg *ptCfg)

-{

-    SINT32          ret = DRV_SUCCESS;

-    T_Tdm_Reg       *ptReg = NULL;

-    T_Tdm_Instance  *ptInstance = &s_tdmInstance;

-	/*klocwork 3  INVARIANT_CONDITION.UNREACH assertÒÆµ½ifÀï*/

-    if (NULL == ptCfg )

-    {

-        zDrv_ASSERT(0);

-        return DRV_ERR_INVALID_PARAM;

-    }

-    zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "[TDM]zDrvTDM_Read_Prepare \r\n");

-    ptReg = ptInstance->ptDev->regs;

-    ret = tdm_RxCheckState(ptCfg);

-    if (ret != DRV_SUCCESS)

-    {

-        zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvTDM_Read_Prepare:  tdm_RxCheckState err ret=%d\r\n",ret);

-        return DRV_ERROR;

-    }

-    ptReg->processCtrl |= TDM_EN;

-

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "(zDrvTDM_Read_Prepare timing ctrl) = %x",  (s_tdmInstance.ptDev)->regs->timingCtrl);

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "(zDrvTDM_Read_Prepare rxFifoCtrl) = %x", (s_tdmInstance.ptDev)->regs->rxFifoCtrl);

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "(zDrvTDM_Read_Prepare frame ctrl) = %x",(s_tdmInstance.ptDev)->regs->frameCntr);

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "(zDrvTDM_Read_Prepare rxFifoCtrl) = %x", (s_tdmInstance.ptDev)->regs->rxFifoCtrl);

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "(zDrvTDM_Read_Prepare process ctrl) = %x", (s_tdmInstance.ptDev)->regs->processCtrl);

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "(zDrvTDM_Read_Prepare reg intEn) = %x",  (s_tdmInstance.ptDev)->regs->intEn);

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "(zDrvTDM_Read_Prepare reg intStatus) = %x\n", (s_tdmInstance.ptDev)->regs->intStatus);

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "(zDrvTDM_Read_Prepare reg readCntCtrl) = %x\n",  (s_tdmInstance.ptDev)->regs->readCntCtrl);

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "(zDrvTDM_Read_Prepare reg readCntr) = %x\n",  (s_tdmInstance.ptDev)->regs->readCntr);

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "(zDrvTDM_Read_Prepare reg readCntr2) = %x\n",  (s_tdmInstance.ptDev)->regs->readCntr2);

-    return DRV_SUCCESS;

-}

-

-SINT32 zDrvTDM_Read_Start_Do(T_ZDrvTdm_Params *params)

-{

-

-    SINT32          ret = DRV_SUCCESS;

-    T_Tdm_Reg       *ptReg = NULL;

-    T_Tdm_Instance  *ptInstance = &s_tdmInstance;

-    SINT32           waitTime = 0;

-	/*klocwork 3  INVARIANT_CONDITION.UNREACH assertÒÆµ½ifÀï*/

-    if (NULL == params)

-    {

-        zDrv_ASSERT(0);

-        return DRV_ERR_INVALID_PARAM;

-    }

-    zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvTDM_Read_Start/r/n");

-    ptReg = ptInstance->ptDev->regs;

-    ret = tdm_RxComInit(params);

-    if (ptInstance->tdmTransMode == TRANS_INT_MODE)

-    {

-        ret += tdm_IntRxInit();                  /*will enable the RX interrupt*/

-        if (ret != DRV_SUCCESS)

-        {

-            tdm_CleanRxResource();

-            return DRV_ERROR;

-        }

-    }

-    else if (ptInstance->tdmTransMode == TRANS_DMA_MODE)

-    {

-        ret += tdm_DmaRxInit();

-        if (ret != DRV_SUCCESS)

-        {

-            tdm_CleanRxResource();

-            return DRV_ERROR;

-        }

-        ptReg->rxFifoCtrl |= TDM_RX_DMA_EN;                          /* enable dma transfer */

-    }

-    ptReg->processCtrl |= TDM_RX_OPEN;

-

-    if (ptInstance->tCfg.bMaster == TRUE)                         /* wait */

-    {

-        zOss_Sleep(TDM_ENABLE_DELAY_TIME);

-        waitTime += TDM_ENABLE_DELAY_TIME;

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

-		/*

-        if (waitTime == 1000)

-        {

-            zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "waitTime error");

-            return DRV_ERROR;

-        }*/

-    }

-

-    ptInstance->tdmStatus = ((ptInstance->tdmStatus) == TDM_PLAY_INUSE)?TDM_BOTH_INUSE : TDM_RECORD_INUSE;

-

-    /* add by lvwenhua for tdm sync   */

-    gTdmCntChangeRx = 0;

-

-    return DRV_SUCCESS;

-}

-

-SINT32 zDrvTDM_Read_Start(T_ZDrvTdm_Params *params, T_ZDrvTdm_Cfg *ptCfg)

-{

-    SINT32          ret = DRV_SUCCESS;

-    zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvTDM_Read_Start");

-

-    ret = zDrvTDM_Read_Prepare(ptCfg);

-    if (ret != DRV_SUCCESS)

-    {

-        zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvTDM_Read_Start  zDrvTDM_Read_Prepare error ret=%d\r\n",ret);

-        return ret;

-    }

-	

-    ret = zDrvTDM_Read_Start_Do(params);

-    if (ret != DRV_SUCCESS)

-    {

-        zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvTDM_Read_Start  zDrvTDM_Read_Start_Do error ret=%d\r\n",ret);

-        return ret;

-    }

-	

-    return DRV_SUCCESS;

-}

-

-/****************************************************************************

-* Function:  zDrvTDM_Write

-* Description: trans data to fifo from ram while playing

-* Parameters:

-*   Input:

-*           buf_size : one buffer is how many bytes

-*           uiLen : buffer length

-*   Output:

-*           None

-* Returns:

-*           DRV_ERR_INVALID_PARAM: error param

-*           DRV_ERROR : operate error

-*           DRV_SUCCESS : operate success

- * Others:

- ****************************************************************************/

-SINT32 zDrvTDM_Write(const UINT8 *pBuf, UINT32 uiLen)

-{

-    T_Tdm_Instance  *ptInstance = NULL;

-    SINT32 ret = DRV_SUCCESS;

-    UINT16 bufLen = 0 ;

-    T_Tdm_QueueNode *queueNode = NULL;

-    UINT16 *buf = NULL;

-	T_Tdm_TxStream *tdmStream = &s_tdmTxStream;

-

-	//zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvTDM_Write pBuf 0x%x! \r\n", *pBuf);

-

-    if ( NULL == pBuf || 0 == uiLen || TDM_MAX_TX_BUF_SIZE < uiLen)

-    {

-        tdmwrite_pbuf=pBuf;

-        tdmwrite_uilen=uiLen;

-    }

-

-	/*klocwork 3  INVARIANT_CONDITION.UNREACH assertÒÆµ½ifÀï*/

-    if ( NULL == pBuf || 0 == uiLen || TDM_MAX_TX_BUF_SIZE < uiLen)

-    {

-   		zDrv_ASSERT(0);

-		return DRV_ERR_INVALID_PARAM;

-    }

-    ptInstance = &s_tdmInstance;

-    if (ptInstance->tdmStatus != TDM_PLAY_INUSE && ptInstance->tdmStatus != TDM_BOTH_INUSE)

-    {

-        return DRV_ERR_NOT_STARTED;

-    }

-    ret = tdm_UpdateTxBufferStatus((UINT16 *)pBuf , BUFFER_FULL);       /*ÉϲãÍù*pBufдÍêÊý¾Ýºó£¬¸Ä±äBUF״̬ΪFULL*/

-    if (ret != DRV_SUCCESS)

-    {

-        return DRV_ERROR;

-    }

-	

-	tdmStream->txWrIdx = (tdmStream->txWrIdx + 1)%TDM_OUT_BUF_NUM;

-

-	if((s_tdmTxStream.pauseFlag == FALSE) && (s_tdmTxStream.Transing == FALSE)) {

-		tdmStream->Transing = TRUE;

-			dma_async_issue_pending(tdmDmaState[TDM_TX].ch);

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

-			/*

-			if(ret != DRV_SUCCESS) {

-				zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvTDM_Write updateTxBufSta or txTransmit err ret=%d \n", ret);

-				return DRV_ERROR;

-			}*/

-	}

-	

-    return DRV_SUCCESS;

-}

-

-/****************************************************************************

-* Function:  zDrvTDM_Read

-* Description: get recod data

-* Parameters:

-*   Input:

-*           pBuf : record buffer pointer

-*           uiLen : buffer length

-*   Output:

-*           None

-* Returns:

-*           DRV_ERR_INVALID_PARAM: error param

-*           DRV_ERROR : operate error

-*           DRV_SUCCESS : operate success

- * Others:

- ****************************************************************************/

-SINT32 zDrvTDM_Read(UINT8 **pBuf, UINT32 *uiLen)

-{

-    T_Tdm_Instance  *ptInstance = NULL;

-    SINT32 ret = DRV_SUCCESS;

-    T_Tdm_QueueNode *queueNode = NULL;

-	T_Tdm_RxStream *tdmStream = &s_tdmRxStream;

-	

-	/*klocwork 3  INVARIANT_CONDITION.UNREACH assertÒÆµ½ifÀï*/

-    if ( NULL == pBuf || NULL == uiLen)

-    {

-        zDrv_ASSERT(0);

-        return DRV_ERR_INVALID_PARAM;

-    }

-

-    ptInstance = &s_tdmInstance;

-    if (ptInstance->tdmStatus != TDM_RECORD_INUSE && ptInstance->tdmStatus != TDM_BOTH_INUSE)

-    {

-        return DRV_ERR_NOT_STARTED;

-    }

-    //zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvTDM_Read before test zOss_GetSemaphore");

-    if (ZOSS_SUCCESS != zOss_GetSemaphore(s_tdmRxStream.rxSem, ZOSS_WAIT_FOREVER))

-    {

-        zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvTDM_Read zOss_GetSemaphore error");

-        return DRV_ERROR;

-    }

-    //zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvTDM_Read zOss_GetSemaphore done");

-

-	*pBuf = tdmStream->rxBufferArray[tdmStream->rxRdIdx].buf;

-	*uiLen = tdmStream->rxLen;

-	tdm_UpdateRxBufferStatus((UINT16 *)tdmStream->rxBufferArray[tdmStream->rxRdIdx].buf, BUFFER_READ);

-

-	#if 0

-    ret = tdm_QueueGet(&(s_tdmRxStream.rxQueue), &queueNode);

-    if (ret != DRV_SUCCESS)

-    {

-        zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvTDM_Read tdm_QueueGet error");

-        return DRV_ERROR;

-    }

-

-    if (NULL != queueNode)

-    {

-        *pBuf = (UINT8 *)queueNode->pBuf;

-        *uiLen = queueNode->len * sizeof(UINT16);

-        ret = tdm_UpdateRxBufferStatus(queueNode->pBuf, BUFFER_READ);

-        if (ret != DRV_SUCCESS)

-        {

-            zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvTDM_Read tdm_UpdateRxBufferStatus error");

-            return DRV_ERROR;

-        }

-    }

-    else

-    {

-        zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvTDM_Read queueNode==NULL error");

-        return DRV_ERROR;

-    }

-	#endif

-	

-    return DRV_SUCCESS;

-}

-

-/****************************************************************************

- * Function:  zDrvTDM_Stop

-* Description: use to stop playing or recording

-* Parameters:

-*   Input:

-*   Output:

-*           None

-* Returns:

-*           DRV_ERR_INVALID_PARAM: error param

-*           DRV_ERROR : operate error

-*           DRV_SUCCESS : operate success

- * Others:

- ****************************************************************************/

-SINT32 zDrvTDM_Write_Stop()

-{

-    T_Tdm_Instance  *ptInstance = NULL;

-    T_Tdm_Reg       *ptReg = NULL;

-    SINT32 ret = DRV_SUCCESS;

-    T_Tdm_TxStream  *txStream = &s_tdmTxStream;

-

-    ptInstance = &s_tdmInstance;

-    ptReg = s_tdmInstance.ptDev->regs;

-    if (ptInstance->tdmStatus != TDM_PLAY_INUSE && ptInstance->tdmStatus != TDM_BOTH_INUSE)

-    {

-        return DRV_ERR_NOT_STARTED;

-    }

-    ptReg->processCtrl &= ~TDM_TX_OPEN;                /*disable tx only */

-    if (ptInstance->tdmTransMode == TRANS_DMA_MODE)

-    {

-        ptReg->txFifoCtrl &= ~TDM_TX_DMA_EN;

-		dma_release_channel(tdmDmaState[TDM_TX].ch);

-    }

-    /* reset tx fifo */

-    ptReg->txFifoCtrl |= TDM_TX_FIFO_RST;

-    ptReg->intStatus |= TDM_INT_TX_THRESHOLD;

-    ptReg->intEn &= ~TDM_INT_EN_TX_THRESHOLD;       /* disable tx interrupt */

-

-    ret = tdm_CleanTxResource();

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

-	/*

-    if (ret != DRV_SUCCESS)

-    {

-        return DRV_ERROR;

-    }*/

-    txStream->txTransmit = NULL;

-    txStream->channel = AUDIO_MONO_CHANNEL;

-    txStream->txLen = 0;

-    txStream->p_cb = NULL;

-	

-    if (ptInstance->tdmStatus != TDM_BOTH_INUSE)

-    {

-        ptInstance->tdmStatus = TDM_OPEN;

-    }

-    else

-    {

-        ptInstance->tdmStatus = TDM_RECORD_INUSE;

-    }

-	

-    return DRV_SUCCESS;

-}

-

-/****************************************************************************

- * Function:  zDrvTDM_Stop

-* Description: use to stop playing or recording

-* Parameters:

-*   Input:

-* Returns:

-*           DRV_ERR_INVALID_PARAM: error param

-*           DRV_ERROR : operate error

-*           DRV_SUCCESS : operate success

- * Others:

- ****************************************************************************/

-SINT32 zDrvTDM_Read_Stop()

-{

-    T_Tdm_Instance  *ptInstance = NULL;

-    T_Tdm_Reg       *ptReg = NULL;

-

-    SINT32 ret = DRV_SUCCESS;

-

-    ptInstance = &s_tdmInstance;

-    ptReg = s_tdmInstance.ptDev->regs;

-    if (ptInstance->tdmStatus != TDM_RECORD_INUSE && ptInstance->tdmStatus != TDM_BOTH_INUSE)

-    {

-        return DRV_ERR_NOT_STARTED;

-    }

-    ptReg->processCtrl &= ~TDM_RX_OPEN;                /*disable tx only */

-    if (ptInstance->tdmTransMode == TRANS_DMA_MODE)

-    {

-        ptReg->rxFifoCtrl &= ~TDM_RX_DMA_EN;

-		dma_release_channel(tdmDmaState[TDM_RX].ch);

-    }

-    ptReg->rxFifoCtrl |= TDM_RX_FIFO_RST;    /* reset tx/rx fifo */

-    ptReg->intStatus |= TDM_INT_RX_THRESHOLD;

-    ptReg->intEn &= ~TDM_INT_EN_RX_THRESHOLD;       /* disable tx interrupt */

-

-    ret = tdm_CleanRxResource();

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

-	/*

-    if (ret != DRV_SUCCESS)

-    {

-        return DRV_ERROR;

-    }*/

-

-    if (ptInstance->tdmStatus != TDM_BOTH_INUSE)

-    {

-        ptInstance->tdmStatus = TDM_OPEN;

-    }

-    else

-    {

-        ptInstance->tdmStatus = TDM_PLAY_INUSE;

-    }

-

-    return DRV_SUCCESS;

-}

-

-/****************************************************************************

- * Function:  zDrvTDM_GetBuf

-* Description: get buffer to write playing data

-* Parameters:

-*   Input:

-*           pBuf: playing data buffer

-*           uiLen : buffer length

-*   Output:

-*           None

-* Returns:

-*           DRV_ERR_INVALID_PARAM: error param

-*           DRV_ERROR : operate error

-*           DRV_SUCCESS : operate success

- *

- * Others:

- ****************************************************************************/

-SINT32 zDrvTDM_GetBuf(UINT8 **pBuf, UINT32 *uiLen)

-{

-    T_Tdm_TxStream *tdmStream = &s_tdmTxStream;

-    UINT8 txIndex = 0 ;

-    T_Tdm_Instance  *ptInstance = NULL;

-

-    //zDrv_ASSERT((pBuf != NULL) && (uiLen != NULL));

-    if ((NULL == pBuf) || (NULL == uiLen))

-    {

-        zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvTDM_GetBuf  err return pBuf=%p,uiLen=%p \n",pBuf,uiLen);	

-        return DRV_ERR_INVALID_PARAM;

-    }

-    ptInstance = &s_tdmInstance;

-    if (ptInstance->tdmStatus != TDM_PLAY_INUSE && ptInstance->tdmStatus != TDM_BOTH_INUSE)

-    {

-        zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvTDM_GetBuf state err  return ptInstance->tdmStatus=%d \n ",ptInstance->tdmStatus);	

-        return DRV_ERR_NOT_STARTED;

-    }

-    if (ZOSS_SUCCESS != zOss_GetSemaphore(tdmStream->txSem, TDM_SEM_WAIT_TIME))   /*changed by dangpeixia[2010.9.20]*/

-    {

-        zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvTDM_GetBuf zOss_GetSemaphore err \n ");	

-        return DRV_ERROR;

-    }

-

-

-	if(tdmStream->txBufferArray == NULL) {

-        zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvTDM_GetBuf tdmStream->txBufferArray == NULL  \n ");	

-		return DRV_ERROR;/*  ½â¾öPSµ÷ÁËSTOPºóLTE¼ÌÐøÐ´Êý¾Ý·ÃÎÊ¿ÕÖ¸ÕëËÀ»ú */

-	}

-

-	txIndex = tdmStream->txWrIdx;

-

-    *pBuf = tdmStream->txBufferArray[txIndex].buf;

-    *uiLen = tdmStream->txLen;

-     tdmStream->txBufferArray[txIndex].tdmBufStatus = BUFFER_WRITE;

-

-#if 0

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "(zDrvTDM_GetBuf timing ctrl) = %x",  (s_tdmInstance.ptDev)->regs->timingCtrl);

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "(zDrvTDM_GetBuf txFifoCtrl) = %x", (s_tdmInstance.ptDev)->regs->txFifoCtrl);

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "(zDrvTDM_GetBuf frame ctrl) = %x",(s_tdmInstance.ptDev)->regs->frameCntr);

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "(zDrvTDM_GetBuf txFifoCtrl) = %x", (s_tdmInstance.ptDev)->regs->txFifoCtrl);

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "(zDrvTDM_GetBuf process ctrl) = %x", (s_tdmInstance.ptDev)->regs->processCtrl);

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "(zDrvTDM_GetBuf reg intEn) = %x",  (s_tdmInstance.ptDev)->regs->intEn);

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "(zDrvTDM_GetBuf reg intStatus) = %x\n", (s_tdmInstance.ptDev)->regs->intStatus);

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "(zDrvTDM_GetBuf reg writeCntCtrl) = %x\n",  (s_tdmInstance.ptDev)->regs->writeCntCtrl);

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "(zDrvTDM_GetBuf reg writeCntr) = %x\n",  (s_tdmInstance.ptDev)->regs->writeCntr);

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "(zDrvTDM_GetBuf reg writeCntr2) = %x\n",  (s_tdmInstance.ptDev)->regs->writeCntr2);

-	

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "(zDrvTDM_GetBuf rxFifoCtrl) = %x", (s_tdmInstance.ptDev)->regs->rxFifoCtrl);

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "(zDrvTDM_GetBuf rxFifoCtrl) = %x", (s_tdmInstance.ptDev)->regs->rxFifoCtrl);

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "(zDrvTDM_GetBuf reg readCntCtrl) = %x\n",  (s_tdmInstance.ptDev)->regs->readCntCtrl);

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "(zDrvTDM_GetBuf reg readCntr) = %x\n",  (s_tdmInstance.ptDev)->regs->readCntr);

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "(zDrvTDM_GetBuf reg readCntr2) = %x\n",  (s_tdmInstance.ptDev)->regs->readCntr2);

-#endif

-    return DRV_SUCCESS;

-}

-

-#if 0

-/****************************************************************************

- * Function:  zDrvTDM_FreeBuf

-* Description: if copying record data end, free buffer to continue record

- * Others:

- ****************************************************************************/

-SINT32 zDrvTDM_Both_Stop()

-{

-    T_Tdm_Instance  *ptInstance = NULL;

-    T_Tdm_Reg       *ptReg = NULL;

-

-    SINT32 ret = DRV_SUCCESS;

-

-    ptInstance = &s_tdmInstance;

-    ptReg = s_tdmInstance.ptDev->regs;

-    if (ptInstance->tdmStatus != TDM_RECORD_INUSE && ptInstance->tdmStatus != TDM_BOTH_INUSE && ptInstance->tdmStatus != TDM_PLAY_INUSE)

-    {

-        return DRV_ERR_NOT_STARTED;

-    }

-    ptReg->processCtrl &= ~ (TDM_TX_OPEN | TDM_RX_OPEN);     /*disable TDM ,Tx ,RX */

-    if (ptInstance->tdmTransMode == TRANS_DMA_MODE)

-    {

-        ptReg->txFifoCtrl &= ~TDM_TX_DMA_EN;

-        ptReg->rxFifoCtrl &= ~TDM_RX_DMA_EN;

-    }

-    ptReg->txFifoCtrl |= TDM_TX_FIFO_RST;  /* reset tx fifo */

-    ptReg->rxFifoCtrl |= TDM_RX_FIFO_RST;  /* reset rx fifo */

-    ptReg->intStatus |= TDM_INT_TX_THRESHOLD | TDM_INT_RX_THRESHOLD;

-    ptReg->intEn &= ~(TDM_INT_EN_TX_THRESHOLD |TDM_INT_EN_RX_THRESHOLD);   /* disable tx interrupt */

-    ptReg->processCtrl &= ~TDM_EN;                /*disable TDM ,Tx ,RX */

-

-    ret = tdm_CleanRxResource();

-    ret += tdm_CleanTxResource();

-

-    if (ret != DRV_SUCCESS)

-    {

-        return DRV_ERROR;

-    }

-

-    ptInstance->tdmStatus = TDM_OPEN;

-

-    return DRV_SUCCESS;

-}

-#endif

-

-/****************************************************************************

- * Function:  zDrvTDM_FreeBuf

-* Description: if copying record data end, free buffer to continue record

-* Parameters:

-*   Input:

-*           pBuf : record buffer pointer

-*   Output:

-*           None

-* Returns:

-*           DRV_ERR_INVALID_PARAM: error param

-*           DRV_ERROR : operate error

-*           DRV_SUCCESS : operate success

- *

- * Others:

- ****************************************************************************/

-SINT32 zDrvTDM_FreeBuf(UINT8 *pBuf)

-{

-    T_Tdm_RxStream *tdmStream = &s_tdmRxStream;

-    SINT32 i = 0;

-    T_Tdm_Instance  *ptInstance = NULL;

-	

-	/*klocwork 3  INVARIANT_CONDITION.UNREACH assertÒÆµ½ifÀï*/

-    if (NULL == pBuf)

-    {

-        zDrv_ASSERT(0);

-        return DRV_ERR_INVALID_PARAM;

-    }

-

-    ptInstance = &s_tdmInstance;

-    if (ptInstance->tdmStatus != TDM_RECORD_INUSE && ptInstance->tdmStatus != TDM_BOTH_INUSE)

-    {

-        return DRV_ERR_NOT_STARTED;

-    }

-

-	tdm_UpdateRxBufferStatus((UINT16 *)tdmStream->rxBufferArray[tdmStream->rxRdIdx].buf, BUFFER_NULL);

-	tdmStream->rxRdIdx = (tdmStream->rxRdIdx +1) % TDM_OUT_BUF_NUM ;

-

-#if 0

-    while (i < TDM_OUT_BUF_NUM)

-    {

-        if (tdmStream->rxBufferArray[i].buf == pBuf)

-        {

-            tdmStream->rxBufferArray[i].tdmBufStatus = BUFFER_NULL;

-            break;

-        }

-        i++;

-    }

-

-    if (i == TDM_OUT_BUF_NUM)

-    {

-        return DRV_ERROR;

-    }

-#endif

-    return DRV_SUCCESS;

-}

-

-#if 0

-/****************************************************************************

-* Function:  zDrvTDM_GetRemained

-* Description: get how many data in buffer while playing

-* Parameters:

-*   Input:

-*           len : buffer length

-*   Output:

-*           None

-* Returns:

-*           DRV_ERR_INVALID_PARAM: error param

-*           DRV_ERROR : operate error

-*           DRV_SUCCESS : operate success

-* Others:

-****************************************************************************/

-SINT32 zDrvTDM_GetRemained(UINT32 *len)

-{

-    T_Tdm_Queue *tdmQueue = &(s_tdmTxStream.txQueue);

-    UINT8 index = 0;

-    UINT32 uiLen = 0;

-    T_Tdm_Instance  *ptInstance = NULL;

-

-    zDrv_ASSERT(len != NULL);

-    if (NULL == len)

-    {

-        return DRV_ERR_INVALID_PARAM;

-    }

-    ptInstance = &s_tdmInstance;

-    if (ptInstance->tdmStatus != TDM_PLAY_INUSE && ptInstance->tdmStatus != TDM_BOTH_INUSE)

-    {

-        return DRV_ERR_NOT_STARTED;

-    }

-

-    index = tdmQueue->readIndex;

-    while (index != tdmQueue->writeIndex)

-    {

-        uiLen += tdmQueue->data[index].len;

-        index = (index + 1) % TDM_QUEUE_SIZE;

-    }

-    *len = uiLen * sizeof(UINT16);

-

-    return DRV_SUCCESS;

-}

-

-/****************************************************************************

- * Function:  zDrvTDM_Pause

-* Description: pause while playing

-* Parameters:

-*   Input:

-*           None

-*   Output:

-*           None

-* Returns:

-*           None

- * Others:

- ****************************************************************************/

-VOID zDrvTDM_Pause()

-{

-    T_Tdm_Instance  *ptInstance = NULL;

-	

-    ptInstance = &s_tdmInstance;

-    if (ptInstance->tdmStatus != TDM_PLAY_INUSE && ptInstance->tdmStatus != TDM_BOTH_INUSE)

-    {

-        return;

-    }

-

-    s_tdmTxStream.pauseFlag = TRUE;

-}

-

-/****************************************************************************

-* Function:  zDrvTDM_Resume

-* Description: resume playing if pause

-* Parameters:

-*   Input:

-*           None

-*   Output:

-*           None

-* Returns:

-*          None

-* Others:

-****************************************************************************/

-VOID zDrvTDM_Resume()

-{

-    T_Tdm_Instance  *ptInstance = NULL;

-    T_Tdm_TxStream *tdmStream = &s_tdmTxStream;

-    T_Tdm_QueueNode *queueNode = NULL;

-    SINT32 ret = DRV_SUCCESS;

-

-    ptInstance = &s_tdmInstance;

-    if (ptInstance->tdmStatus != TDM_PLAY_INUSE && ptInstance->tdmStatus != TDM_BOTH_INUSE)

-    {

-        return;

-    }

-

-    ret = tdm_QueueGet(&(tdmStream->txQueue), &queueNode);

-    if (ret != DRV_SUCCESS)

-    {

-        return;

-    }

-

-    if (queueNode != NULL)

-    {

-        tdmStream->Transing = TRUE;

-        tdm_UpdateTxBufferStatus(queueNode->pBuf, BUFFER_READ);

-        ret = tdmStream->txTransmit(queueNode->pBuf, queueNode->len);

-    }

-    if (ret != DRV_SUCCESS)

-    {

-        return;

-    }

-    tdmStream->pauseFlag = FALSE;

-

-    return;

-}

-#endif

-

-/**************************************************************************

-* Function:  tdm_RlsRxSem

-* Description: deal with read deadlock problem

-* Parameters:

-*   Input:

-*   Output:

-*           None

-* Returns:

-*           None

-* Others:

-****************************************************************************/

-

-VOID zDrvTdm_RxRlsSemaBeforeStop()

-{

-    T_Tdm_RxStream *tdmRxStream = &s_tdmRxStream;

-

-    zOss_PutSemaphore(tdmRxStream->rxSem);

-}

-

-VOID zDrvTdm_TxRlsSemaBeforeStop()

-{

-    T_Tdm_TxStream *tdmTxStream = &s_tdmTxStream;

-

-    zOss_PutSemaphore(tdmTxStream->txSem);

-}

-

-VOID vp_SetTopTdmConfig(VOID)

-{

-#if 0

-    UINT32 AmrRegBit = 0;

-	int ret = 0;

-	

-	//tdm pin cfg

-#if defined (_CHIP_ZX297520V3)

-/*

-	ret = gpio_request(PIN_TDM_FS, "i2s0_ws");

-	if (ret < 0)

-		BUG();

-	ret = gpio_request(PIN_TDM_CLK, "i2s0_clk");

-	if (ret < 0)

-		BUG();

-	ret = gpio_request(PIN_TDM_DIN, "i2s0_din");

-	if (ret < 0)

-		BUG();

-	ret = gpio_request(PIN_TDM_DOUT, "i2s0_dout");

-	if (ret < 0)

-		BUG();

-	zx29_gpio_config(PIN_TDM_FS, FUN_TDM_FS);

-	zx29_gpio_config(PIN_TDM_CLK, FUN_TDM_CLK);

-	zx29_gpio_config(PIN_TDM_DIN, FUN_TDM_DIN);

-	zx29_gpio_config(PIN_TDM_DOUT, FUN_TDM_DOUT);

-*/

-	audioTdmWsHandle = zDrvGpio_Request("i2s0_ws");

-	zDrvGpio_SetFunc(audioTdmWsHandle, GPIO35_TDM_FS);

-	audioTdmClkHandle = zDrvGpio_Request("i2s0_clk");

-	zDrvGpio_SetFunc(audioTdmClkHandle, GPIO36_TDM_CLK);

-	audioTdmDinHandle = zDrvGpio_Request("i2s0_din");

-	zDrvGpio_SetFunc(audioTdmDinHandle, GPIO37_TDM_DATA_IN);

-	audioTdmDoutHandle = zDrvGpio_Request("i2s0_dout");

-	zDrvGpio_SetFunc(audioTdmDoutHandle, GPIO38_TDM_DATA_OUT);

-

-#elif defined (_CHIP_ZX297520V2)

-	audioTdmWsHandle = zDrvGpio_Request("i2s0_ws");

-	zDrvGpio_SetFunc(audioTdmWsHandle, GPIO38_TDM_FS);

-	audioTdmClkHandle = zDrvGpio_Request("i2s0_clk");

-	zDrvGpio_SetFunc(audioTdmClkHandle, GPIO39_TDM_CLK);

-	audioTdmDinHandle = zDrvGpio_Request("i2s0_din");

-	zDrvGpio_SetFunc(audioTdmDinHandle, GPIO40_TDM_DATA_IN);

-	audioTdmDoutHandle = zDrvGpio_Request("i2s0_dout");

-	zDrvGpio_SetFunc(audioTdmDoutHandle, GPIO41_TDM_DATA_OUT);

-#endif

-

-    //top tdm cfg

-    AmrRegBit  = ARM_TDM_LOOP_SET;

-    AmrRegBit &= 0xfffffff8;

-    AmrRegBit |= 0x00000001; //  inter arm tdm1--top tdm1

-    AmrRegBit &= 0xfffFfe07;

-    AmrRegBit |= 0x000000a8; //   loop dsp afe(loop tdm1)--arm tdm2(loop tdm2)

-    //AmrRegBit |= 0x00000150; //   loop dsp arm(loop tdm1)--afe tdm2(loop tdm2)

-    ARM_TDM_LOOP_SET = AmrRegBit;

-    zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO,"vp_SetTopTdmConfig set top TDM,ARM_TDM_LOOP_SET=0x%x\n",ARM_TDM_LOOP_SET);

-

-    AmrRegBit = TDM_MOD_CLK_SEL;

-    AmrRegBit &= 0xfcffffff;   //set mod_clk_sel bit 25:24 to select the tdm wclk

-#if defined (_CHIP_ZX297520V3)

-    AmrRegBit |= 0x0000000;

-#elif defined (_CHIP_ZX297520V2)

-	AmrRegBit |= 0x1000000; //0x1000000(26M )0x0000000(81.92M)

-#endif

-    TDM_MOD_CLK_SEL = AmrRegBit;

-    zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO,"vp_SetTopTdmConfig set top TDM,MOD_CLK_SEL=0x%x\n",TDM_MOD_CLK_SEL);

-

-    AmrRegBit = DMA_SEL_CFG;

-#if defined (_CHIP_ZX297520V3)

-    AmrRegBit &= 0xffffffe7;  

-	AmrRegBit |= 0x18;		   //set dma_sel_cfg bit 3 4 to 1, to use tdm mode

-#elif defined (_CHIP_ZX297520V2)

-    AmrRegBit &= 0xfffffffb;   

-	AmrRegBit |= 0x4;		   //set dma_sel_cfg bit 2 to 1, to use tdm mode

-#endif

-    DMA_SEL_CFG = AmrRegBit;

-    zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO,"vp_SetTopTdmConfig set top TDM,DMA_SEL_CFG=0x%x\n",DMA_SEL_CFG);

-  #endif

-}

-

-

-

-static int __init tdm_init(void)

-{

-//	printk("i2s_init register\n");

-	return platform_device_register(&tdm_device);

-}

-

-static void __exit tdm_exit(void)

-{

-//	printk("i2s_exit unregister\n");

-	platform_device_unregister(&tdm_device);

-}

-

-module_init(tdm_init);

-module_exit(tdm_exit);

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
deleted file mode 100755
index f34d0b7..0000000
--- a/Uboot/cp/ps/driver/src/chipsets/src/audio_base/voiceprocess/hal_voiceprocess.c
+++ /dev/null
@@ -1,5761 +0,0 @@
-/*******************************************************************************

- * Copyright (C) 2007, ZTE Corporation.

- *

- * File Name:hal_voiceprocess.c

- * File Mark:

- * Description: Loop voice data from teak to arm.

-                    Settings: arm iis1->top iis1(connect to ap), arm iis2 loop to teak afe.

-

- * Others:

- * Version:

- * Author:        lvwenhua

- * Date:          2011-8-3

- * History 1:

- *     Date: 2016-2-16

- *     Version:

- *     Author:xuxinqiang

- *     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>

-/****************************************************************************

-* 	                                           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

-****************************************************************************/

-

-/****************************************************************************

-* 	                                           Local Function Prototypes

-****************************************************************************/

-SINT32 voice_ToneMixerStop(VOID);//xiu gai chu sheng ming

-SINT32 zDrvI2S_Read_Start_Do(T_ZDrvI2S_Id tId, T_ZDrvI2s_Params *params);//xiu gai chu sheng ming

-SINT32 zDrvI2S_Write_Start_Do(T_ZDrvI2S_Id tId, T_ZDrvI2s_Params *params);//xiu gai chu sheng ming

-#ifdef ECALL_SUPPORT

-SINT32 drv_Get_Ecall_State(VOID);	

-SINT32 drv_Ecall_Read(UINT8 *pBuf,UINT32 *inSize);

-SINT32 drv_Ecall_Write(UINT8 *pBuf,UINT32 inSize);	   

-#endif

-/****************************************************************************

-* 	                                          Global Constants

-****************************************************************************/

-

-

-/****************************************************************************

-* 	                                          Global Variables

-****************************************************************************/

-//static T_zDrvVp_SpeechState *s_pSpeechState = NULL;

-static T_zDrvVp_SpeechState s_speechState = {0};  //104 bytes

-

-T_zDrvVoice_GbVar g_voiceVar =

-{

-	0,//volteIsWb 1

-	0,//isUseSlicCodec 2

-	0,//g_isUseTdm 3

-	0,//voiceInGsmTdMode 4

-	0,//voiceInVolteMode  5

-	FALSE, //innerI2sIsMaster 6

-	TRUE,//innerI2sIsI2sMode 7

-	FALSE,//vpLoopRuning 8

-	FALSE,//muteEn 9

-	FALSE,//vProcIsNormal 10

-	VP_I2S_IDLE,//vpI2sStatus 11

-	VP_PATH_HANDSET,//vpPath 12 

-	VP_PATH_HANDSET,//vpLoopPath 13

-	VP_VOL_3, //vpVol 14

-	MAX_VOICE_MODE,//voiceMode 15 

-	-1,//vpInitGain 16

-	{0},//audio_ctrlFlag 17

-    DTMF_IDLE,// 18

-    0,//dtmfDirSel 19

-    0, //sample_rate 20 

-	0, //useDtmfLoop; 21

-	0, //muteCount;//mute_count 22	

-    FALSE, //23 vpLoopBkRunning

-	FALSE, //24 rxMuteEn

-	FALSE, //25 firstRegZCATFlag

-#ifdef ECALL_SUPPORT	

-	{0}, //26 ecallData

-#endif

-    0 //27 voice_nv_update

-};

-

-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

-//	{0}

-};

-

-//for test whiteNoise

-#ifdef TEST_WHITE_NOISE

-UINT32 tempCount = 0;

-UINT8 *pVoiceTempBuf = NULL;

-#endif

-

-static T_ZDrvTdm_Params s_vpTdmReadParam = {AUDIO_MONO_CHANNEL, VP_I2S_BUFFER_SIZE, NULL};

-static T_ZDrvTdm_Params s_VpTdmWriteParam = {AUDIO_MONO_CHANNEL, VP_I2S_BUFFER_SIZE, NULL};

-#ifdef VOICE_TONE_MIXER_FUNCTION

-extern T_HalMixerToneInfo mixerToneInfo;

-#endif

-/*

-#ifdef VP_GET_TX_ALL_DATA

-UINT8 *pVpTxInAllDataBuffer = NULL;

-static UINT32 s_TxAllDataSaveLen = 0;

-#endif

-*/

-#ifdef ECALL_SUPPORT

-//extern T_DrvEcall_Opt  gDrvEcall_Obj; 

-T_DrvEcall_Opt t_ecallObj ={

-	drv_Get_Ecall_State,		  

-	drv_Ecall_Read,		   

-	drv_Ecall_Write,  

-

-};

-#endif

-

-extern T_ZDrv_VpInOutBuffer vpInOutBuffer;

-

-/****************************************************************************

-* 	                                          Global Function Prototypes

-****************************************************************************/

-#ifdef CONFIG_CP_USE_SOFT_DTMF_DETECT

-extern void slic_tw_dtmf_detect_open(void);

-extern int  slic_tw_dtmf_detect(short *pcm, unsigned int length, unsigned int fs);

-extern void slic_tw_dtmf_detect_close(void);

-#endif

-extern SINT32 voice_CreateRcdSemAndThread(VOID);

-extern SINT32 voice_InitCodec(VOID);

-//extern SINT32 zDrv_DtmfToneStart(UINT32 toneNum);

-extern UINT32 zDrvTimer_Stamp(VOID);

-extern SINT32 zDrvI2S_Init(VOID);

-extern int nand_mtd_erase(UINT32 dwAddr);

-//aduvoice config code

-extern SINT32 halVpCfg_Open(T_ZDrvVp_SourceType srctype);

-extern SINT32 halVpCfg_Close(VOID);

-extern SINT32 halVpCfg_Enable(VOID);

-extern SINT32 halVpCfg_Disable(VOID);

-extern SINT32 halVpCfg_SetFs(T_ZDrv_VpFs fs);

-extern SINT32 halVpCfg_SetInputPath(T_ZDrv_VpPath path, BOOL enable);

-extern SINT32 halVpCfg_SetInputPath(T_ZDrv_VpPath path, BOOL enable);

-extern SINT32 halVpCfg_SetMute(T_ZDrv_VpPath path, BOOL mute);

-extern VOID vp_SetTopI2sConfig(VOID);

-//extern SINT32 zDrvAudio_Initiate(VOID);

-

-static VOID  vp_LoopProcessThreadEntry(SINT32 argu);

-SINT32 vp_WriteDataToCodec(UINT8 *pBuf, UINT32 count);

-SINT32 vp_ReadDataFromCodec(UINT8 *pBuf, UINT32 count);

-SINT32 vp_VoiceI2sStart(VOID);

-SINT32 zDrvVp_LoopStartDo(VOID);

-extern SINT32 zDrvAud_DspSetAudSetting(BOOL useAfeI2s);

-extern SINT32 zDrvI2S_Reset(T_ZDrvI2S_Id tId);

-SINT32 vp_TdmCfgParam(T_ZDrvVp_Cfg *cfgParam);

-SINT32 vp_I2sCfgParam(T_ZDrvVp_Cfg *cfgParam);

-extern SINT32 zDrvTDM_Init(VOID);

-extern SINT32 zDrvTDM_Open(T_ZDrvI2s_TransMode tdmTransMode);

-extern SINT32 zDrvTDM_Reset();

-extern SINT32 zDrvTDM_Close();

-extern SINT32 zDrvTDM_Write_Prepare(T_ZDrvTdm_Cfg * ptCfg);

-extern SINT32 zDrvTDM_Write_Start(T_ZDrvTdm_Params *params, T_ZDrvTdm_Cfg * ptCfg);

-extern SINT32 zDrvTDM_Read_Prepare(T_ZDrvTdm_Cfg *ptCfg);

-extern SINT32 zDrvTDM_Read_Start(T_ZDrvTdm_Params *params, T_ZDrvTdm_Cfg *ptCfg);

-extern SINT32 zDrvTDM_Write(const UINT8 *pBuf, UINT32 uiLen);

-extern SINT32 zDrvTDM_Read(UINT8 ** pBuf, UINT32 * uiLen);

-extern SINT32 zDrvTDM_Write_Stop();

-extern SINT32 zDrvTDM_Read_Stop();

-extern SINT32 zDrvTDM_GetBuf(UINT8 **pBuf, UINT32 *uiLen);

-extern SINT32 zDrvTDM_Both_Stop();

-extern SINT32 zDrvTDM_FreeBuf(UINT8 *pBuf);

-extern VOID vp_SetTopTdmConfig(VOID);

-extern SINT32 zDrvVp_EcallSetMute(UINT32 enable);

-

-

-

-#ifdef VOICE_TONE_MIXER_FUNCTION

-SINT32 voice_ToneMixerData2(UINT8 *pvdata, UINT32 size, UINT8 *pmixdata);

-#endif

-

-SINT32 halVpCfg_SetOutputPath(T_ZDrv_VpPath path, BOOL enable); //xiu gai chu sheng ming

-SINT32 zDrvI2S_Write_Stop(T_ZDrvI2S_Id tId);//xiu gai chu sheng ming

-SINT32 voice_ToneMixerData(UINT8 *pvdata, UINT32 size, UINT8 *pmixdata);//xiu gai chu sheng ming

-SINT32 zDrvI2S_Read_Prepare(T_ZDrvI2S_Id tId, T_ZDrvI2S_Cfg *ptCfg);//xiu gai chu sheng ming

-SINT32 zDrvI2S_Write_Prepare(T_ZDrvI2S_Id tId, T_ZDrvI2S_Cfg *ptCfg);//xiu gai chu sheng ming

-SINT32 zDrvVolte_Initiate(VOID);//xiu gai chu sheng ming

-//SINT32 VoiceProc_SetGain(SINT32 gain, UINT32 channel, T_ZDrv_VpPath path);//xiu gai chu sheng ming

-SINT32 voice_RcdStop(VOID);//xiu gai chu sheng ming

-SINT32 voice_RcdStart(T_ZDrvRcd_InfoParam *pParam);//xiu gai chu sheng ming

-SINT32 zDrvI2S_Read_Start(T_ZDrvI2S_Id tId, T_ZDrvI2s_Params *params, T_ZDrvI2S_Cfg *ptCfg);//xiu gai chu sheng ming

-SINT32 zDrvI2S_Write_Start(T_ZDrvI2S_Id tId, T_ZDrvI2s_Params *params, T_ZDrvI2S_Cfg *ptCfg);//xiu gai chu sheng ming

-SINT32 zDrvExtAudio_GetBuf(UINT8 **pBuf, UINT32 *uiLen);

-

-/****************************************************************************

-* 	                                          Function Definitions

-****************************************************************************/

-#ifdef CONFIG_VOICE_BUFFER_DRV  

-#ifdef _VBUFF_IN_MULTI_CORE

-#define RPMSG_CAP_ID 1

-

-ZOSS_TIMER_ID s_voiceTimerId ;

-ZOSS_SEMAPHORE_ID s_voiceRdSema;

-ZOSS_SEMAPHORE_ID s_voiceWrSema;

-

-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;

-

-

-void voiceTimerCallBack(SINT32 para)

-{

-	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); 

-	zDrvRpMsg_Write_Cap(&icp_pMsg); 

-	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

-	

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

-

-

-

-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;

-}

-

-

-#else

-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;

-void voiceTimerCallBack(SINT32 para)

-{

-//	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);

-}

-

-

-

-#endif

-

-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;

-}

-

-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;

-}

-

-#endif

-

-

-#ifdef ECALL_SUPPORT

-int eWrErr = 0;

-UINT8 e_reg_flag = 0;

-

-UINT32 e_startCount = 0;

-UINT32 e_stopCount = 0;

-UINT32 e_wrCount = 0;

-UINT32 e_rdCount = 0;

-T_Ecall_State preEcallRxSta = 0;

-T_Ecall_State preEcallTxSta = 0;	

-

-//tx

-SINT32 rdsem_count_Init(T_Sem_Owner owner)

-{

-	UINT32 i = 0;

-	UINT32 semCount = 0;

-	SINT32 Count = 0;

-    ZOSS_SEMAPHORE_ID rdSem;	

-    if(owner == ECALL_SEM){

-	    rdSem = g_voiceVar.ecallData.rdSemaphore;		

-		semCount = zOss_GetSemaphoreCount(rdSem);

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "rdsem_count_Init owner=%d, rxSem count=%d\n",owner,semCount);

-#if 1

-		Count = 1 - semCount;	

-		if(Count > 0) {

-			for(i = 0; i < Count; i++) {

-				zOss_PutSemaphore(rdSem);

-			}

-		} else if(Count < 0) {

-			Count = 0 - Count;

-			for(i = 0; i < Count; i++) {

-				zOss_GetSemaphore(rdSem, ZOSS_NO_WAIT);

-			}

-		}

-		

-#else

-

-		Count = semCount;

-		if(Count > 0)  {

-			for(i = 0; i < Count; i++) {

-				zOss_GetSemaphore(rdSem, ZOSS_NO_WAIT);

-			}

-		}

-#endif		

-    }

-

-	return DRV_SUCCESS;

-}

-//rx

-SINT32 wrsem_count_Init(T_Sem_Owner owner)

-{

-	UINT32 i = 0;

-	UINT32 semCount = 0;

-	SINT32 Count = 0;

-

-    ZOSS_SEMAPHORE_ID wrSem;	

-    if(owner == ECALL_SEM){

-		wrSem = g_voiceVar.ecallData.wrSemaphore;

-

-		semCount = zOss_GetSemaphoreCount(wrSem);

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "wrsem_count_Init owner=%d, txSem count=%d \n",owner,semCount);

-

-#if 1

-		Count = 1 - semCount;	

-		if(Count > 0) {

-			for(i = 0; i < Count; i++) {

-				zOss_PutSemaphore(wrSem);

-			}

-		} else if(Count < 0) {

-			Count = 0 - Count;

-			for(i = 0; i < Count; i++) {

-				zOss_GetSemaphore(wrSem, ZOSS_NO_WAIT);

-			}

-		}

-

-#else

-

-		Count = semCount;

-		if(Count > 0)  {

-			for(i = 0; i < Count; i++) {

-				zOss_GetSemaphore(wrSem, ZOSS_NO_WAIT);

-			}

-		}

-

-#endif	

-    }

-

-    eWrErr = 0;

-	return DRV_SUCCESS;

-}

-void ecallTimerCallBack(SINT32 para)

-{

-//	complete_all(&s_voice_completion);

-	zOss_PutSemaphore(g_voiceVar.ecallData.wrSemaphore);

-	zOss_PutSemaphore(g_voiceVar.ecallData.rdSemaphore);

-//	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "ecallTimerCallBack timer=%u\n", cpu_clock(0)>>10);

-}

-SINT32 ecall_Init(VOID)

-{

-

-	g_voiceVar.ecallData.rdSemaphore = zOss_CreateSemaphore("ecall_rd_sem", 0);

-	if(NULL == g_voiceVar.ecallData.rdSemaphore) {

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "create ecall_rd_sem err \n");

-		return DRV_ERROR;

-	}

-

-	g_voiceVar.ecallData.wrSemaphore  = zOss_CreateSemaphore("ecall_wr_sem", 0);

-	if(NULL == g_voiceVar.ecallData.wrSemaphore) {

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "create ecall_wr_sem err \n");

-	    zOss_DeleteSemaphore(g_voiceVar.ecallData.rdSemaphore);

-    	g_voiceVar.ecallData.rdSemaphore = ZOSS_NULL;		

-		return DRV_ERROR;

-	}

-	

-	 g_voiceVar.ecallData.timerId  = zOss_CreateTimer("ecall_frameTimer", ecallTimerCallBack, 0, TRUE);

-	 zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "ecall TimerId=%p\n", g_voiceVar.ecallData.timerId);

-	if(!g_voiceVar.ecallData.timerId)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "ecall_frameTimer  failed\n");

-	    zOss_DeleteSemaphore(g_voiceVar.ecallData.rdSemaphore);

-    	g_voiceVar.ecallData.rdSemaphore = ZOSS_NULL;	

-	    zOss_DeleteSemaphore(g_voiceVar.ecallData.wrSemaphore);

-    	g_voiceVar.ecallData.wrSemaphore = ZOSS_NULL;			

-		return DRV_ERROR;

-	}

-	g_voiceVar.ecallData.ecallSta = ECALL_ST_INIT;	

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "ecall_Init success. \r\n");

-	

-	return DRV_SUCCESS;	

-}

-#define ECALL_NB_MEM_SIZE		320

-#define ECALL_WB_MEM_SIZE		640

-

-SINT32 ecall_Open(UINT32 fs)

-{

-	SINT32 ret = DRV_SUCCESS;

-	int bufsize;

-	

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "ecall_Open  start \n" );

-

-	if ((g_voiceVar.ecallData.ecallSta !=  ECALL_ST_CLOSE)&&(g_voiceVar.ecallData.ecallSta !=  ECALL_ST_INIT))

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "ecall_Open error: ecallSta =%d\n", g_voiceVar.ecallData.ecallSta);

-		return DRV_ERR_OPEN_TIMES;

-	}

-

-	if(fs == 8000)

-	{

-		bufsize = ECALL_NB_MEM_SIZE;

-

-	}

-	else if(fs == 16000)

-	{

-		bufsize = ECALL_WB_MEM_SIZE;

-

-	}

-	else

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "ecall_Open error: fs =%d\n", fs);

-		return DRV_ERR_INVALID_PARAM;

-	}

-

-

-	g_voiceVar.ecallData.rxDataBuf = zOss_Malloc(bufsize);

-	if (g_voiceVar.ecallData.rxDataBuf == NULL)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "ecall Failed to allocate rxDataBuf\n");

-		return DRV_ERROR;

-	}

-	g_voiceVar.ecallData.txDataBuf = zOss_Malloc(bufsize);

-	if (g_voiceVar.ecallData.txDataBuf == NULL)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "ecall Failed to allocate txDataBuf\n");

-	    zOss_Free(g_voiceVar.ecallData.rxDataBuf);		

-		return DRV_ERROR;

-	}

-	g_voiceVar.ecallData.dataBufSize = bufsize;

-

-	g_voiceVar.ecallData.ecallSta = ECALL_ST_OPEN;

-	g_voiceVar.ecallData.ecallRxSta = ECALL_ST_RX_IDLE;

-	g_voiceVar.ecallData.ecallTxSta = ECALL_ST_TX_IDLE;

-

-	e_startCount = 0;

-    e_stopCount = 0;

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "ecall_Open  end!\n");

-

-	return DRV_SUCCESS;

-

-}

-

-

-SINT32 ecall_Close(VOID)

-{

-	SINT32 ret = DRV_SUCCESS;

-

-	if (g_voiceVar.ecallData.ecallSta ==  ECALL_ST_CLOSE)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "ecall_Close repeat: ecallSta =%d\n", g_voiceVar.ecallData.ecallSta);

-		return DRV_ERR_NOT_OPENED;

-	}

-

-	if ((g_voiceVar.ecallData.txDataBuf == NULL)||(g_voiceVar.ecallData.txDataBuf == NULL) || (g_voiceVar.ecallData.dataBufSize  == 0)) 

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "ecall_Close buf para is null !\n");

-		return DRV_ERROR;

-	}

-

-	zOss_Free(g_voiceVar.ecallData.rxDataBuf);

-	zOss_Free(g_voiceVar.ecallData.txDataBuf);

-

-

-	g_voiceVar.ecallData.dataBufSize = 0;

-	g_voiceVar.ecallData.rxDataBuf = NULL;

-	g_voiceVar.ecallData.txDataBuf = NULL;

-	g_voiceVar.ecallData.ecallSta = ECALL_ST_CLOSE;

-	g_voiceVar.ecallData.ecallRxSta = ECALL_ST_RX_IDLE;

-	g_voiceVar.ecallData.ecallTxSta = ECALL_ST_TX_IDLE;

-	preEcallRxSta = ECALL_ST_RX_IDLE;	    

-	preEcallTxSta = ECALL_ST_TX_IDLE;

-

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "%s e_startCount=%d e_stopCount=%d \n",__FUNCTION__,e_startCount,e_stopCount);

-	

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "ecall_Close  end!\n");

-

-	return DRV_SUCCESS;

-

-

-

-}

-

-

-

-SINT32 ecall_Start(VOID)

-{

-	SINT32 ret = DRV_SUCCESS;

-

-	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);

-		return DRV_ERR_OPEN_TIMES;

-	}	

-	if((g_voiceVar.ecallData.ecallSta != ECALL_ST_OPEN)&&(g_voiceVar.ecallData.ecallSta != ECALL_ST_STOP))

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "ecall_Start not support ecallSta=%d\n",g_voiceVar.ecallData.ecallSta);

-		return DRV_ERR_START_TIMES;

-	}

-

-

-	zOss_StartTimer(g_voiceVar.ecallData.timerId, 20, ecallTimerCallBack, 0);

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "ecall_Start zOss_StartTimer start\n");

-	g_voiceVar.ecallData.ecallSta = ECALL_ST_START;	

-	e_startCount++;

-	e_wrCount = 0;

-	e_rdCount = 0;	

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO,  "ecall_Start end \n");

-

-	return DRV_SUCCESS;

-}

-

-SINT32 ecall_Stop(VOID)

-{

-	SINT32  ret = DRV_SUCCESS;

-	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))

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "ecall_Stop repeat ecallSta=%d\n",g_voiceVar.ecallData.ecallSta);

-		return DRV_ERR_START_TIMES;

-	}  

-

-	zOss_PutSemaphore(g_voiceVar.ecallData.rdSemaphore);

-	zOss_PutSemaphore(g_voiceVar.ecallData.wrSemaphore);

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "ecall_Stop put rd wr sem\n");	

-	zOss_StopTimer(g_voiceVar.ecallData.timerId);

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "ecall_Stop zOss_StopTimer\n");

-

-	g_voiceVar.ecallData.ecallSta = ECALL_ST_STOP;	

-    e_stopCount ++;

-

-	

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "%s: e_rdCount=%d e_wrCount=%d \n",__FUNCTION__,e_rdCount,e_wrCount);

-

-

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "ecall_Stop end\n");

-	return ret;

-}

-

-SINT32 update_ecall_state(T_Data_Dir_Type dir)

-{

-	int ret = DRV_SUCCESS;

-

-	

-	if(g_voiceVar.ecallData.opt.drv_Get_Ecall_State == NULL)

-	{	

-	

-	    zOss_Printf(SUBMDL_HAL, PRINT_LEVEL_NORMAL, "update_ecall_state get__ecall_state fun not register!\n");

-		return DRV_ERR_NOT_SUPPORTED;

-	}

-	if((dir != DIR_TX)&&(dir != DIR_RX))

-	{

-				

-		ret = DRV_ERR_INVALID_PARAM;	

-		

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "update_ecall_state  dir not support return, dir = %d ret=%d\n",dir,ret);

-	}	

-

-	if(g_voiceVar.ecallData.opt.drv_Get_Ecall_State() == 1)	

-	{						

-		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);

-			

-		}

-		else if(dir == DIR_TX)

-		{

-

-			preEcallTxSta = g_voiceVar.ecallData.ecallTxSta;			

-			g_voiceVar.ecallData.ecallTxSta = ECALL_ST_TX_INUSE;	

-			//zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "update_ecall_state tx state change to ecallTxSta = %d\n", g_voiceVar.ecallData.ecallTxSta);

-			

-		}

-	

-		

-		zDrvVp_EcallSetMute(1);

-

-	}

-	else

-	{

-	    if(dir == DIR_RX)

-		{

-			preEcallRxSta = g_voiceVar.ecallData.ecallRxSta;		

-			g_voiceVar.ecallData.ecallRxSta = ECALL_ST_RX_IDLE;	

-		

-	    }

-		else if(dir == DIR_TX)

-		{

-			preEcallTxSta = g_voiceVar.ecallData.ecallTxSta;		

-			g_voiceVar.ecallData.ecallTxSta = ECALL_ST_TX_IDLE;

-

-		}

-		

-		zDrvVp_EcallSetMute(0);

-

-	}	

-	

-	if((dir == DIR_TX)&&( preEcallTxSta == ECALL_ST_TX_IDLE)&&(g_voiceVar.ecallData.ecallTxSta == ECALL_ST_TX_INUSE))

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "%s:dir=%d ecallSta=%d ecallRxSta=%d ecallTxSta=%d preEcallRxSta=%d preEcallTxSta=%d \n",__FUNCTION__,dir,g_voiceVar.ecallData.ecallSta, \

-			g_voiceVar.ecallData.ecallRxSta,g_voiceVar.ecallData.ecallTxSta,preEcallRxSta,preEcallTxSta);

-		rdsem_count_Init(ECALL_SEM);

-

-	}

-		

-	return ret;

-}

-

-

-SINT32 ecall_GetRxBuf(UINT8 **pBuf, UINT32 *uiLen)

-{

-

-	SINT32 ret = DRV_SUCCESS;

-

-	if ((NULL == pBuf) || (NULL == uiLen))

-	{

-

-	    zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "ecall_GetRxBuf error, ipara is null \n");

-		//zDrv_ASSERT(0);		

-		return DRV_ERR_INVALID_PARAM;

-	}

-

-	if ((g_voiceVar.ecallData.ecallSta == ECALL_ST_INIT)||(g_voiceVar.ecallData.ecallSta == ECALL_ST_CLOSE)) 

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "ecall_GetRxBuf error, invalid ecallSta = %d\n", g_voiceVar.ecallData.ecallSta);

-	

-		return DRV_ERR_NOT_OPENED;

-	}

-	

-	if ((g_voiceVar.ecallData.rxDataBuf == NULL) || (g_voiceVar.ecallData.dataBufSize == 0)) 

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "ecall_GetRxBuf error, return para is null !\n");

-		return DRV_ERROR;

-	}

-

-

-	*pBuf = g_voiceVar.ecallData.rxDataBuf;

-	*uiLen = g_voiceVar.ecallData.dataBufSize;

-	

-

-	return ret;

-}

-

-SINT32 ecall_GetTxBuf(UINT8 **pBuf, UINT32 *uiLen)

-{

-

-	SINT32 ret = DRV_SUCCESS;

-

-	if ((NULL == pBuf) || (NULL == uiLen) )

-	{

-		//zDrv_ASSERT(0);

-	    zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "ecall_GetTxBuf error, ipara is null \n");

-		//zDrv_ASSERT(0);				

-		return DRV_ERR_INVALID_PARAM;

-	}

-

-	if ((g_voiceVar.ecallData.ecallSta == ECALL_ST_INIT)||(g_voiceVar.ecallData.ecallSta == ECALL_ST_CLOSE) ) 

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "ecall_GetTxBuf error, invalid ecallSta = %d\n", g_voiceVar.ecallData.ecallSta);

-	

-		return DRV_ERR_NOT_OPENED;

-	}

-	if ((g_voiceVar.ecallData.txDataBuf == NULL)||(g_voiceVar.ecallData.txDataBuf == NULL) || (g_voiceVar.ecallData.dataBufSize  == 0)) 

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "ecall_GetTxBuf error, return para is null !\n");

-		return DRV_ERROR;

-	}

-

-

-	*pBuf = g_voiceVar.ecallData.txDataBuf;

-	*uiLen = g_voiceVar.ecallData.dataBufSize;

-

-	return ret;

-}

-#endif

-

-SINT32 zDrv_Init(VOID)

-{

-	if (g_voiceVar.g_isUseTdm != 1)

-	{

-		zDrvI2S_Init();

-	}

-	else if (g_voiceVar.g_isUseTdm == 1)

-	{

-		zDrvI2S_Init();

-		zDrvTDM_Init();

-	}

-	return DRV_SUCCESS;

-}

-

-SINT32 zDrvExtAudio_Open(T_ZDrvI2s_TransMode i2sTransMode)

-{

-	int ret = 0;

-#ifdef CONFIG_VOICE_BUFFER_DRV  

-#else

-	if (g_voiceVar.g_isUseTdm != 1)

-	{

-		ret = zDrvI2S_Open(I2S_1, i2sTransMode);

-	}

-	else if (g_voiceVar.g_isUseTdm == 1)

-	{

-		ret = zDrvTDM_Open(i2sTransMode);

-	}

-#endif	

-	return ret;

-}

-

-SINT32 zDrvExtAudio_Reset()

-{

-	int ret = 0;

-#ifdef CONFIG_VOICE_BUFFER_DRV  

-#else	

-	if (g_voiceVar.g_isUseTdm != 1)

-	{

-		ret = zDrvI2S_Reset(I2S_1);

-	}

-	else if (g_voiceVar.g_isUseTdm == 1)

-	{

-		ret = zDrvTDM_Reset();

-	}

-#endif	

-	return ret;

-}

-SINT32 zDrvExtAudio_Close()

-{

-	int ret = 0;

-#ifdef CONFIG_VOICE_BUFFER_DRV  

-#else	

-	if (g_voiceVar.g_isUseTdm != 1)

-	{

-		ret = zDrvI2S_Close(I2S_1);

-	}

-	else if (g_voiceVar.g_isUseTdm == 1)

-	{

-		ret = zDrvTDM_Close();

-	}

-#endif	

-	return ret;

-}

-

-SINT32 zDrvExtAudio_Write_Prepare(T_ZDrvI2S_Cfg *i2sCfg, T_ZDrvTdm_Cfg *tdmCfg)

-{

-	int ret = 0;

-#ifdef CONFIG_VOICE_BUFFER_DRV  

-#else	

-	if (g_voiceVar.g_isUseTdm != 1)

-	{

-		ret = zDrvI2S_Write_Prepare(I2S_1, i2sCfg);

-	}

-	else if (g_voiceVar.g_isUseTdm == 1)

-	{

-		ret = zDrvTDM_Write_Prepare(tdmCfg);

-	}

-#endif	

-	return ret;

-}

-

-SINT32 zDrvExtAudio_Write_Start(T_ZDrvI2s_Params *i2sParams, T_ZDrvI2S_Cfg *i2sCfg,

-                                T_ZDrvTdm_Params *tdmParams, T_ZDrvTdm_Cfg *tdmCfg)

-{

-	int ret = 0;

-#ifdef CONFIG_VOICE_BUFFER_DRV  

-#else	

-	if (g_voiceVar.g_isUseTdm != 1)

-	{

-		ret = zDrvI2S_Write_Start(I2S_1, i2sParams, i2sCfg);

-	}

-	else if (g_voiceVar.g_isUseTdm == 1)

-	{

-		ret = zDrvTDM_Write_Start(tdmParams, tdmCfg);

-	}

-#endif	

-	return ret;

-}

-SINT32 zDrvExtAudio_Write_Start_Do(T_ZDrvI2s_Params *i2sParams, T_ZDrvI2S_Cfg *i2sCfg,

-                                   T_ZDrvTdm_Params *tdmParams, T_ZDrvTdm_Cfg *tdmCfg)

-{

-	int ret = 0;

-#ifdef CONFIG_VOICE_BUFFER_DRV  

-#else	

-	if (g_voiceVar.g_isUseTdm != 1)

-	{

-		ret = zDrvI2S_Write_Start_Do(I2S_1, i2sParams);

-	}

-	else if (g_voiceVar.g_isUseTdm == 1)

-	{

-		ret = zDrvTDM_Write_Start_Do(tdmParams);

-	}

-#endif	

-	return ret;

-}

-SINT32 zDrvExtAudio_Read_Prepare(T_ZDrvI2S_Cfg *i2sCfg, T_ZDrvTdm_Cfg *tdmCfg)

-{

-	int ret = 0;

-#ifdef CONFIG_VOICE_BUFFER_DRV  

-#else	

-	if (g_voiceVar.g_isUseTdm != 1)

-	{

-		ret = zDrvI2S_Read_Prepare(I2S_1, i2sCfg);

-	}

-	else if (g_voiceVar.g_isUseTdm == 1)

-	{

-		ret = zDrvTDM_Read_Prepare(tdmCfg);

-	}

-#endif	

-	return ret;

-}

-

-SINT32 zDrvExtAudio_Read_Start(T_ZDrvI2s_Params *i2sParams, T_ZDrvI2S_Cfg *i2sCfg,

-                               T_ZDrvTdm_Params *tdmParams, T_ZDrvTdm_Cfg *tdmCfg)

-{

-	int ret = 0;

-#ifdef CONFIG_VOICE_BUFFER_DRV  

-#else	

-	if (g_voiceVar.g_isUseTdm != 1)

-	{

-		ret = zDrvI2S_Read_Start(I2S_1, i2sParams, i2sCfg);

-	}

-	else if (g_voiceVar.g_isUseTdm == 1)

-	{

-		ret = zDrvTDM_Read_Start(tdmParams, tdmCfg);

-	}

-#endif	

-	return ret;

-}

-SINT32 zDrvExtAudio_Read_Start_Do(T_ZDrvI2s_Params *i2sParams, T_ZDrvI2S_Cfg *i2sCfg,

-                                  T_ZDrvTdm_Params *tdmParams, T_ZDrvTdm_Cfg *tdmCfg)

-{

-	int ret = 0;

-#ifdef CONFIG_VOICE_BUFFER_DRV  

-#else	

-	if (g_voiceVar.g_isUseTdm != 1)

-	{

-		ret = zDrvI2S_Read_Start_Do(I2S_1, i2sParams);

-	}

-	else if (g_voiceVar.g_isUseTdm == 1)

-	{

-		ret = zDrvTDM_Read_Start_Do(tdmParams);

-	}

-#endif

-	return ret;

-}

-SINT32 zDrvExtAudio_Write(const UINT8 *pBuf, UINT32 uiLen)

-{

-	int ret = 0;

-#ifdef CONFIG_VOICE_BUFFER_DRV  

-#else

-	if (g_voiceVar.g_isUseTdm != 1)

-	{

-		ret = zDrvI2S_Write(I2S_1, pBuf, uiLen);

-	}

-	else if (g_voiceVar.g_isUseTdm == 1)

-	{

-		ret = zDrvTDM_Write(pBuf, uiLen);

-	}

-#endif	

-	return ret;

-}

-

-SINT32 zDrvExtAudio_Read(const UINT8 **pBuf, UINT32 *uiLen)

-{

-	int ret = 0;

-#ifdef CONFIG_VOICE_BUFFER_DRV  	

-#else	

-	if (g_voiceVar.g_isUseTdm != 1)

-	{

-		ret = zDrvI2S_Read(I2S_1, pBuf, uiLen);

-	}

-	else if (g_voiceVar.g_isUseTdm == 1)

-	{

-		ret = zDrvTDM_Read(pBuf, uiLen);

-	}

-#endif	

-	return ret;

-}

-#ifdef ECALL_SUPPORT

-SINT32 ecall_Write(const UINT8 *pBuf, UINT32 uiLen)

-{

-	int ret = 0;

-	if(g_voiceVar.ecallData.opt.drv_Ecall_Write == NULL)

-	{	

-		return DRV_ERR_NOT_SUPPORTED;

-	}

-

-	ret = zOss_GetSemaphore(g_voiceVar.ecallData.wrSemaphore, 20);

-	if(ret == ZOSS_SUCCESS){

-		ret = g_voiceVar.ecallData.opt.drv_Ecall_Write(pBuf, uiLen);

-		e_wrCount++;

-	}

-	else{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "%s: get sem timeout ret=%d \n",__FUNCTION__,ret);

-		

-	}

-

-	return ret;

-}

-

-SINT32 ecall_Read(const UINT8 **pBuf, UINT32 *uiLen)

-{

-	int ret = 0;

-

-	if(g_voiceVar.ecallData.opt.drv_Ecall_Read == NULL)

-	{	

-		return DRV_ERR_NOT_SUPPORTED;

-	}

-	if( g_voiceVar.ecallData.ecallTxSta == ECALL_ST_TX_INUSE)

-	{

-	    ret = zOss_GetSemaphore(g_voiceVar.ecallData.rdSemaphore,  20);

-		if(ret == ZOSS_SUCCESS){

-			ret = g_voiceVar.ecallData.opt.drv_Ecall_Read(*pBuf, uiLen);

-			e_rdCount++;

-		}

-		else{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "%s: get sem timeout ret=%d \n",__FUNCTION__,ret);

-			

-		}		

-	}

-

-	return ret;

-}

-#endif

-SINT32 zDrvExtAudio_Write_Stop()

-{

-	int ret = 0;

-#ifdef CONFIG_VOICE_BUFFER_DRV  

-#else	

-	if (g_voiceVar.g_isUseTdm != 1)

-	{

-		ret = zDrvI2S_Write_Stop(I2S_1);

-	}

-	else if (g_voiceVar.g_isUseTdm == 1)

-	{

-		ret = zDrvTDM_Write_Stop();

-	}

-#endif	

-	return ret;

-}

-

-SINT32 zDrvExtAudio_Read_Stop()

-{

-	int ret = 0;

-#ifdef CONFIG_VOICE_BUFFER_DRV  

-#else	

-	if (g_voiceVar.g_isUseTdm != 1)

-	{

-		ret = zDrvI2S_Read_Stop(I2S_1);

-	}

-	else if (g_voiceVar.g_isUseTdm == 1)

-	{

-		ret = zDrvTDM_Read_Stop();

-	}

-#endif	

-	return ret;

-}

-

-SINT32 zDrvExtAudio_GetBuf(UINT8 **pBuf, UINT32 *uiLen)

-{

-	int ret = 0;

-#ifdef CONFIG_VOICE_BUFFER_DRV  	

-#else

-	if (g_voiceVar.g_isUseTdm != 1)

-	{

-		ret = zDrvI2S_GetBuf(I2S_1, pBuf, uiLen);

-	}

-	else if (g_voiceVar.g_isUseTdm == 1)

-	{

-		ret = zDrvTDM_GetBuf(pBuf, uiLen);

-	}

-#endif

-	return ret;

-}

-#if 0

-SINT32 zDrvExtAudio_Both_Stop()

-{

-	int ret = 0;

-	if (g_voiceVar.g_isUseTdm != 1)

-	{

-		ret = zDrvI2S_Both_Stop(I2S_1);

-	}

-	else if (g_voiceVar.g_isUseTdm == 1)

-	{

-		ret = zDrvTDM_Both_Stop();

-	}

-	return ret;

-}

-#endif

-SINT32 zDrvExtAudio_FreeBuf(UINT8 *pBuf)

-{

-	int ret = 0;

-#ifdef CONFIG_VOICE_BUFFER_DRV  

-#else		

-	if (g_voiceVar.g_isUseTdm != 1)

-	{

-		ret = zDrvI2S_FreeBuf(I2S_1, pBuf);

-	}

-	else if (g_voiceVar.g_isUseTdm == 1)

-	{

-		ret = zDrvTDM_FreeBuf(pBuf);

-	}

-#endif	

-	return ret;

-}

-

-void zDrvExtAudio_RlsAllSemaBeforeStop(void)

-{

-#ifdef CONFIG_VOICE_BUFFER_DRV  

-#else		

-	if (g_voiceVar.g_isUseTdm == 1)

-	{

-		zDrvTdm_RxRlsSemaBeforeStop();

-		zDrvTdm_TxRlsSemaBeforeStop();

-	}

-	else

-	{

-		zDrvI2s_RxRlsSemaBeforeStop(I2S_1);

-		zDrvI2s_TxRlsSemaBeforeStop(I2S_1);

-	}

-#endif	

-}

-

-void zDrvExtAudio_RxRlsSemaBeforeStop(void)

-{

-#ifdef CONFIG_VOICE_BUFFER_DRV  

-#else		

-	if (g_voiceVar.g_isUseTdm == 1)

-	{

-		zDrvTdm_RxRlsSemaBeforeStop();

-	}

-	else

-	{

-		zDrvI2s_RxRlsSemaBeforeStop(I2S_1);

-	}

-#endif	

-}

-

-void zDrvExtAudio_TxRlsSemaBeforeStop(void)

-{

-#ifdef CONFIG_VOICE_BUFFER_DRV  

-#else		

-	if (g_voiceVar.g_isUseTdm == 1)

-	{

-		zDrvTdm_TxRlsSemaBeforeStop();

-	}

-	else

-	{

-		zDrvI2s_TxRlsSemaBeforeStop(I2S_1);

-	}

-#endif	

-}

-

-VOID vp_SetTopConfig(VOID)

-{

-	if (g_voiceVar.g_isUseTdm != 1)

-	{

-		vp_SetTopI2sConfig();

-	}

-	else if (g_voiceVar.g_isUseTdm == 1)

-	{

-		vp_SetTopTdmConfig();

-	}

-}

-#if 0

-//dtmf检测-测试用

-T_DrvDtmf_Detect_Opt dtmf_test;

-void drv_dtmfrx_report(char *dtmf_string, unsigned char string_len)

-{

-    //printk("cp drv_dtmfrx_report, dtmf_string=%c, string_len=%d\n", *dtmf_string, string_len);

-    zOss_Printf(SUBMDL_HAL, PRINT_LEVEL_NORMAL, "cp drv_dtmfrx_report, dtmf_string=%c, string_len=%d\n", *dtmf_string, string_len);

-}

-void drv_dtmftx_report(char *dtmf_string, unsigned char string_len)

-{

-    //printk("cp drv_dtmftx_report, dtmf_string=%c, string_len=%d\n", *dtmf_string, string_len);

-    zOss_Printf(SUBMDL_HAL, PRINT_LEVEL_NORMAL, "cp drv_dtmftx_report, dtmf_string=%c, string_len=%d\n", *dtmf_string, string_len);

-}

-#endif

-

-UINT32 ext_aRdCount = 0;

-UINT32 ext_aRdFBufCount = 0;

-

-SINT32 vp_Open(T_ZDrvVoice_MODE voiceMode)

-{

-	SINT32 ret = DRV_SUCCESS;

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_Open  start voiceMode = %d\n", voiceMode);

-

-	if (g_voiceVar.vpI2sStatus !=  VP_I2S_IDLE)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_Open error: vpI2sStatus ! =  VP_I2S_IDLE vpI2sStatus=%d\n", g_voiceVar.vpI2sStatus);

-		return DRV_ERR_OPEN_TIMES;

-	}

-

-	if (g_voiceVar.vpLoopRuning == TRUE)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_Open Err, vpLoop is Runing \n");

-		return DRV_ERROR;

-	}

-

-	g_voiceVar.voiceInGsmTdMode = 0;

-	g_voiceVar.voiceInVolteMode = 0;

-

-	if (voiceMode == VOICE_GSM_MODE)

-	{

-		g_voiceVar.voiceInGsmTdMode = 1;

-	}

-	else if ((voiceMode == VOICE_LTE_MODE) || (voiceMode == VOICE_WCDMA_MODE) || (voiceMode == VOICE_TD_MODE))

-	{

-		g_voiceVar.voiceInVolteMode = 1;

-		s_speechState.volteVpWriteStopFlag = 0;//together control vp vpstate

-		s_speechState.volteVpReadStopFlag = 0;//together control vp vpstate

-

-	}

-	else

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_Open voicemode not support !\n");

-		return DRV_ERROR;

-	}

-

-	if ((NULL != s_vpState.pVpRxInBuffer) && (NULL != s_vpState.pVpTxInBuffer) && (NULL != s_vpState.pVpRxOutPutBuffer) && (NULL != s_vpState.pVpTxOutPutBuffer))

-	{

-		zOss_Memset(s_vpState.pVpRxInBuffer, 0, s_vpState.inOutBufSize);

-		zOss_Memset(s_vpState.pVpTxInBuffer, 0, s_vpState.inOutBufSize);

-		zOss_Memset(s_vpState.pVpTxOutPutBuffer, 0, s_vpState.inOutBufSize);

-#ifdef _USE_VP_OUTPUT_RXOUT_DATA

-        zOss_Memset(s_vpState.pVpRxOutPutBuffer, 0, s_vpState.inOutBufSize);

-#else

-		zOss_Memset(s_vpState.pVpRxOutPutBuffer, 0, 640);

-#endif

-

-		s_speechState.pVpTempRxInBuffer = s_vpState.pVpRxInBuffer;

-		s_speechState.pVpTempTxInBuffer = s_vpState.pVpTxInBuffer;

-		s_speechState.pVpTempRxOutPutBuffer = s_vpState.pVpRxOutPutBuffer;

-		s_speechState.pVpTempTxOutPutBuffer = s_vpState.pVpTxOutPutBuffer;

-

-	}

-	else

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_Open s_voiceBuffer is NULL");

-		return DRV_ERROR;

-

-	}

-

-	ret = halVpCfg_Open(VP_VOICE_SOURCE);

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_Open halVpCfg_Open err ret=%d !\n", ret);

-		return DRV_ERROR;

-	}

-

-

-	if (g_voiceVar.isUseSlicCodec != 1)

-	{

-		ret = zDrvExtAudio_Open(TRANS_DMA_MODE);

-		if (ret != DRV_SUCCESS)

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_Open zDrvI2S_Open(TRANS_DMA_MODE) err ret=%d ", ret);

-			ret = halVpCfg_Close();

-			if (ret != DRV_SUCCESS)

-			{

-				zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_Open hal_VpCfg_Close err ret=%d", ret);

-			}

-

-			return DRV_ERROR;

-		}

-

-	}

-	if (voiceMode == VOICE_GSM_MODE)

-	{

-		ret = zDrvI2S_Open(I2S_2, TRANS_DMA_MODE);

-		if (ret != DRV_SUCCESS)

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_Open zDrvI2S_Open(I2S_2,TRANS_DMA_MODE) err ret=%d ", ret);

-			if (g_voiceVar.isUseSlicCodec != 1)

-			{

-				ret = zDrvExtAudio_Close();

-				if (ret != DRV_SUCCESS)

-				{

-					zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_Open zDrvI2S_Close i2s1 err ret=%d", ret);

-				}

-			}

-

-			ret = halVpCfg_Close();

-			if (ret != DRV_SUCCESS)

-			{

-				zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_Open hal_VpCfg_Close err ret=%d", ret);

-			}

-

-			return DRV_ERROR;

-		}

-	}

-	/*

-	#ifdef VP_GET_TX_ALL_DATA

-	    pVpTxInAllDataBuffer=(UINT8 *)0x25500000;

-	    zOss_Memset(pVpTxInAllDataBuffer,0,0x100000);

-	    s_TxAllDataSaveLen=0;

-	#endif

-	*/

-#ifdef TEST_WHITE_NOISE

-	pVoiceTempBuf = s_voiceTempBuffer;//for test

-	tempCount = 0;

-#endif

-#ifdef CONFIG_CP_USE_SOFT_DTMF_DETECT

-	slic_tw_dtmf_detect_open();

-#endif

-#ifdef CONFIG_VOICE_BUFFER_DRV  

-#ifdef _VBUFF_IN_MULTI_CORE

-

-

-	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);

-

-#else

-//	INIT_COMPLETION(s_voice_copletion);

-	vp_rxsem_count_Init();

-	vp_txsem_count_Init();

-#endif

-#endif

-

-	g_voiceVar.muteCount = 0;

-	s_speechState.txSaveLen = 0;

-	s_speechState.rxSaveLen = 0;

-	s_speechState.saveLen = 0;

-	s_speechState.volteVpCfgEnFlag = 0;

-	s_speechState.i2sIsRstFlag = FALSE;

-	s_speechState.firstWriteDataFlag = FALSE;

-	s_speechState.firstReadDataFlag = FALSE;

-

-	g_voiceVar.voiceMode = voiceMode;

-	g_voiceVar.muteEn = FALSE;

-	g_voiceVar.rxMuteEn = FALSE;

-	g_voiceVar.vpI2sStatus = VP_I2S_OPEN;

-	g_voiceVar.vProcIsNormal = FALSE;

-    g_voiceVar.dtmfDirSel = DTMF_IDLE;

-

-    if (FALSE == g_voiceVar.firstRegZCATFlag) {

-        ret = zCatAgt_Audio_Reg(10,VP_INOUT_BAK_BUFFER_SIZE,(UINT32)vpInOutBuffer.p_voiceRxInBuffer);

-        if(ret != DRV_SUCCESS){

-            zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_Open RXIN register zCatAgt_Audio_Reg err\n");

-        }

-        

-        ret = zCatAgt_Audio_Reg(12,VP_INOUT_BAK_BUFFER_SIZE,(UINT32)vpInOutBuffer.p_voiceTxInBuffer);

-        if(ret != DRV_SUCCESS){

-            zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_Open TXIN register zCatAgt_Audio_Reg err\n");

-        }

-            

-		ret = zCatAgt_Audio_Reg(13,VP_INOUT_BAK_BUFFER_SIZE,(UINT32)vpInOutBuffer.p_voiceTxOutPutBuffer);

-        if(ret != DRV_SUCCESS){

-            zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_Open TXOUT register zCatAgt_Audio_Reg err\n");

-        }

-

-#ifdef _USE_VP_OUTPUT_RXOUT_DATA

-		ret = zCatAgt_Audio_Reg(11, VP_INOUT_BAK_BUFFER_SIZE, (UINT32)vpInOutBuffer.p_voiceRxOutPutBuffer);

-        if(ret != DRV_SUCCESS){

-            zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_Open RXOUT register zCatAgt_Audio_Reg err\n");

-        }

-

-#else

-		ret = zCatAgt_Audio_Reg(11,VP_INOUT_NOBAK_BUFSIZE,(UINT32)vpInOutBuffer.p_voiceRxOutPutBuffer);

-        if(ret != DRV_SUCCESS){

-            zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_Open RXOUT register zCatAgt_Audio_Reg err\n");

-        }

-#endif

-

-        g_voiceVar.firstRegZCATFlag = TRUE;   

-    }

-   

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_Open  end!\n");

-#if 0

-    //dtmf检测-测试用

-    dtmf_test.drv_dtmfrx_report_cb = drv_dtmfrx_report;

-    dtmf_test.drv_dtmftx_report_cb = drv_dtmftx_report;

-    zDrvDtmf_Detect_RegCallbacks(dtmf_test);

-#endif

-#if defined(CONFIG_VOICE_BUFFER_DRV) && defined(_VBUFF_IN_MULTI_CORE)

-

-	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  init voice buffer val!\n");

-#endif

-#ifdef ECALL_SUPPORT

-		

-	

-	if(g_voiceVar.audio_ctrlFlag.isUseEcall == 1)

-	{

-		//zDrvEcall_SetCallbacks(t_ecallObj);//for test

-

-		if((g_voiceVar.ecallData.opt.drv_Get_Ecall_State != NULL)&&(g_voiceVar.voiceMode != VOICE_LTE_MODE))

-		{

-			e_reg_flag = 1;

-			rdsem_count_Init(ECALL_SEM);

-			wrsem_count_Init(ECALL_SEM);			

-		}

-		else

-		{

-			e_reg_flag = 0;

-

-		}

-

-	

-

-	}

-	else

-	{

-		e_reg_flag = 0;

-	

-	}

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "%s:ecall check, voiceMode=%d,e_reg_flag=%d \n",__FUNCTION__,voiceMode,e_reg_flag);

-	

-		

-#endif		

-

-	ext_aRdCount = 0;

-	ext_aRdFBufCount = 0;

-

-

-	return DRV_SUCCESS;

-

-}

-

-SINT32 vp_CfgParam(T_ZDrvVp_Cfg *cfgParam)

-{

-	int ret = 0;

-	if (g_voiceVar.g_isUseTdm != 1)

-	{

-		ret = vp_I2sCfgParam(cfgParam);

-	}

-	else if (g_voiceVar.g_isUseTdm == 1)

-	{

-		ret = vp_TdmCfgParam(cfgParam);

-	}

-    g_voiceVar.sample_rate = s_speechState.vpCfgParam.clock_rate;

-

-    //dtmf检测启动

-    if((g_voiceVar.audio_ctrlFlag.isUseRxDtmfDet == 1) || (g_voiceVar.audio_ctrlFlag.isUseTxDtmfDet == 1))

-	{

-        if((g_voiceVar.audio_ctrlFlag.isUseRxDtmfDet == 1) && (g_voiceVar.audio_ctrlFlag.isUseTxDtmfDet == 1))

-        {

-            g_voiceVar.dtmfDirSel = DTMF_TXRX;

-        }

-        else if(g_voiceVar.audio_ctrlFlag.isUseRxDtmfDet == 1)

-        {

-            g_voiceVar.dtmfDirSel = DTMF_RX;

-        }

-        else

-        {

-            g_voiceVar.dtmfDirSel = DTMF_TX;

-        }

-

-        ret = zDrvVp_DtmfSoftwareStart(g_voiceVar.dtmfDirSel , s_speechState.vpCfgParam.clock_rate);

-        if (ret != DRV_SUCCESS)

-        {

-            zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_CfgParam zDrvVp_DtmfSoftwareStart err, ret=%d\n", ret);

-        }

-        zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_CfgParam zDrvVp_DtmfSoftwareStart end\n");

-    }

-#ifdef ECALL_SUPPORT	

-	if((g_voiceVar.audio_ctrlFlag.isUseEcall == 1)&&(e_reg_flag == 1))

-	{

-

-	   if(g_voiceVar.volteIsWb == 1)

-	   {

-	   	   ret = ecall_Open(16000);

-	   }

-	   else

-	   {

-		   ret = ecall_Open(8000);

-

-	   }

-	   if (ret != DRV_SUCCESS)

-	   {

-		   zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "ecall_Open error,ret=%d", ret);

-

-		   e_reg_flag = 0;

-	   }

-	   else

-	   {

-

-			ret = ecall_Start();

-			if (ret != DRV_SUCCESS)

-			{

-				zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "%s: ecall_Start err,ret=%d\n",ret);

-			}

-		

-	   }

-

-	   

-	

-	}

-#endif	

-	return ret;

-}

-

-VOID zDrvVp_Status(UINT32 *sample_rate, UINT32 *voice_status)

-{

-    if(NULL != sample_rate)

-        *sample_rate = g_voiceVar.sample_rate;

-

-    if(NULL != voice_status)

-        *voice_status = g_voiceVar.vpI2sStatus;

-}

-

-VOID zDrvVp_UpdateVoiceNv(UINT8 *voice_nv_update)

-{

-    if(NULL != voice_nv_update)

-        *voice_nv_update = g_voiceVar.voice_nv_update;

-

-    //g_voiceVar.voice_nv_update = 0;

-    

-    zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_UpdateVoiceNv start!\n");

-}

-

-SINT32 vp_TdmCfgParam(T_ZDrvVp_Cfg *cfgParam)

-{

-	SINT32 ret = DRV_SUCCESS;

-	T_ZDrv_VpFs fs = VP_FS_8000;

-

-

-	if ((cfgParam == NULL) || (cfgParam->channel_count != 1) || (cfgParam->bits_per_sample != 16))

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_CfgParam err \r\n");

-		ret = DRV_ERR_INVALID_PARAM;

-		goto err_exit;

-	}

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_TdmCfgParam start,cfgParam->rate = %d", cfgParam->clock_rate);

-	if (((cfgParam->clock_rate == 8000) && (cfgParam->samples_per_frame != 160)) || ((cfgParam->clock_rate == 16000) && (cfgParam->samples_per_frame != 320)))

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_CfgParam  samples_per_frame err, cfgParam->clock_rate=%d,cfgParam->samples_per_frame=%d! \r\n", cfgParam->clock_rate, cfgParam->samples_per_frame);

-		ret = DRV_ERR_INVALID_PARAM;

-		goto err_exit;

-	}

-	s_speechState.vpCfgParam = *cfgParam;

-

-	if ((s_vpState.s_pVpTdmCfg == NULL) || (s_vpState.s_pVpTdmWbCfg == NULL))

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_CfgParam error s_pVpExtI2sCfg not init! \r\n");

-		ret = DRV_ERROR;

-		goto err_exit;

-	}

-	else

-	{

-		if (cfgParam->clock_rate == 16000)

-		{

-			s_vpState.pVpTdmCfg = s_vpState.s_pVpTdmWbCfg;

-			g_voiceVar.volteIsWb = 1;

-			s_speechState.frameCount = cfgParam->samples_per_frame;

-			s_speechState.pVpI2sCfg = s_vpState.pVpExtI2sWbCfg;

-		}

-		else if (cfgParam->clock_rate == 8000)

-		{

-			s_vpState.pVpTdmCfg = s_vpState.s_pVpTdmCfg;

-			g_voiceVar.volteIsWb = 0;

-			s_speechState.frameCount = cfgParam->samples_per_frame;

-			s_speechState.pVpI2sCfg = s_vpState.pVpExtI2sCfg;

-		}

-		else

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_CfgParam the fs not support! \r\n");

-			ret = DRV_ERR_INVALID_PARAM;

-			goto err_exit;

-		}

-

-		if (s_vpState.pVpTdmCfg->tTsEnable == TDM_2TS_ENABLE)

-		{

-			s_vpTdmReadParam.channel = AUDIO_DUAL_CHANNEL;

-			s_VpTdmWriteParam.channel = AUDIO_DUAL_CHANNEL;

-		}

-

-		s_speechState.totalFrameBufSize = (s_speechState.frameCount * 2);

-

-		s_VpTdmWriteParam.buffersize = s_speechState.totalFrameBufSize;

-		s_vpTdmReadParam.buffersize = s_speechState.totalFrameBufSize;

-		s_speechState.inOutBufUseSize = s_vpState.inOutBufSize - s_speechState.totalFrameBufSize;

-

-		if (s_vpState.pVpInnerI2sCfg->tClkMode == I2S_TIME_MODE)

-		{

-			if (s_vpState.pVpInnerI2sCfg->tTrackFmt == DOUBLE_TRACK)

-			{

-				s_speechState.totalFrameBufSize = (s_speechState.frameCount * 2);

-				(s_speechState.i2sWriteParam).channel = AUDIO_DUAL_CHANNEL;

-				(s_speechState.i2sReadParam).channel = AUDIO_DUAL_CHANNEL;

-			}

-

-			else if ((s_vpState.pVpInnerI2sCfg->tTrackFmt == LEFT_TRACK) || (s_vpState.pVpInnerI2sCfg->tTrackFmt == RIGHT_TRACK))

-			{

-				s_speechState.totalFrameBufSize = (s_speechState.frameCount * 2);

-				(s_speechState.i2sWriteParam).channel = AUDIO_MONO_CHANNEL;

-				(s_speechState.i2sReadParam).channel = AUDIO_MONO_CHANNEL;

-			}

-			else

-			{

-				zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_CfgParam tTrackFmt not support! \r\n");

-				ret = DRV_ERR_INVALID_PARAM;

-				goto err_exit;

-			}

-

-			s_speechState.i2sWriteParam.buffersize = s_speechState.totalFrameBufSize;

-			s_speechState.i2sReadParam.buffersize = s_speechState.totalFrameBufSize;

-		}

-

-

-		s_speechState.i2sWriteParam.p_cb = NULL;

-		s_speechState.i2sReadParam.p_cb = NULL;

-

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_CfgParam Tdm read/write buffersize=%d\n", s_speechState.i2sWriteParam.buffersize);

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_CfgParam  VpI2sStatus=%d,s_inOutBufUseSize=%d\n", g_voiceVar.vpI2sStatus, s_speechState.inOutBufUseSize);

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_CfgParam set totalFrameBufSize=%d,s_vpFrameCount=%d\n", s_speechState.totalFrameBufSize, s_speechState.frameCount);

-	}

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_CfgParam set read /wirte Param end! \r\n");

-

-

-	if (cfgParam->clock_rate == 8000)

-	{

-		fs = VP_FS_8000;

-	}

-	else if (cfgParam->clock_rate == 16000)

-	{

-		fs = VP_FS_16000;

-

-	}

-	else

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_CfgParam the fs not support ,only support 8k,16k !\n");

-		ret = DRV_ERROR;

-		goto err_exit;

-	}

-

-	ret = halVpCfg_SetFs(fs);

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_CfgParam halVpCfg_SetFs err ret=%d !\n", ret);

-		ret = DRV_ERROR;

-		goto err_exit;

-	}

-

-	if ((g_voiceVar.vpPath == VP_PATH_HANDSET) || (g_voiceVar.vpPath == VP_PATH_HEADSET) || (g_voiceVar.vpPath == VP_PATH_SPEAKER))

-	{

-		ret = halVpCfg_SetInputPath(g_voiceVar.vpPath, TRUE);

-		if (ret != DRV_SUCCESS)

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_CfgParam voice_SetPahtIn halVpCfg_SetInputPath err ret=%d !\n", ret);

-			ret = DRV_ERROR;

-			goto err_exit;

-		}

-		ret = halVpCfg_SetOutputPath(g_voiceVar.vpPath, TRUE);

-		if (ret != DRV_SUCCESS)

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_CfgParam voice_SetPahtOut halVpCfg_SetOutputPath err ret=%d !\n", ret);

-			ret = DRV_ERROR;

-			goto err_exit;

-		}

-	}

-	else

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_CfgParam voice_SetPahtOut the path not support !\n");

-		ret = DRV_ERROR;

-		goto err_exit;

-	}

-

-

-	if (cfgParam->clock_rate == 16000)

-	{

-		ret = VoiceProc_Open(16000);

-	}

-	else if (cfgParam->clock_rate == 8000)

-	{

-		ret = VoiceProc_Open(8000);

-

-	}

-	else

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_CfgParam VoiceProc_Open fs not support\n");

-		ret = DRV_ERR_INVALID_PARAM;

-	}

-

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_CfgParam VoiceProc_Open s_voiceMode=%d, ret=%d \n", g_voiceVar.voiceMode, ret);

-

-	if (ret == DRV_SUCCESS)

-	{

-		ret = VoiceProc_GetParam(g_voiceVar.voiceMode, g_voiceVar.vpPath);

-		if (ret == DRV_SUCCESS)

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, " vp_CfgParam VoiceProc_GetParam OK!\r\n");

-			g_voiceVar.vProcIsNormal = TRUE;

-			ret = VoiceProc_SetParam(g_voiceVar.voiceMode, g_voiceVar.vpPath, g_voiceVar.vpVol, FALSE);

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_CfgParam VoiceProc_SetParam ret=%d \n", ret);

-			if (ret != DRV_SUCCESS)

-			{

-				g_voiceVar.vProcIsNormal = FALSE;

-				zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_CfgParam VoiceProc_SetParam ret=%d ,voice process don't use! \n", ret);

-				VoiceProc_Close();

-			}

-		}

-		else

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_CfgParam VoiceProc_GetParam error ret=%d ! \r\n", ret);

-			g_voiceVar.vProcIsNormal = FALSE;

-			VoiceProc_Close();

-

-		}

-	}

-	else

-	{

-		g_voiceVar.vProcIsNormal = FALSE;

-	}

-

-	return DRV_SUCCESS;

-err_exit:

-	if (g_voiceVar.voiceMode == VOICE_GSM_MODE)

-	{

-		zDrvI2S_Close(I2S_2);

-	}

-	if (g_voiceVar.isUseSlicCodec != 1)

-	{

-		zDrvExtAudio_Close();

-	}

-	return ret;

-}

-

-

-SINT32 vp_I2sCfgParam(T_ZDrvVp_Cfg *cfgParam)

-{

-	SINT32 ret = DRV_SUCCESS;

-	T_ZDrv_VpFs fs = VP_FS_8000;

-

-	if ((cfgParam == NULL) || (cfgParam->channel_count != 1) || (cfgParam->bits_per_sample != 16))

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_CfgParam err \r\n");

-

-		ret = DRV_ERR_INVALID_PARAM;

-		goto err_exit;

-	}

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_CfgParam  start,cfgParam->rate = %d", cfgParam->clock_rate);

-	if (((cfgParam->clock_rate == 8000) && (cfgParam->samples_per_frame != 160)) || ((cfgParam->clock_rate == 16000) && (cfgParam->samples_per_frame != 320)))

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_CfgParam  samples_per_frame err, cfgParam->clock_rate=%d,cfgParam->samples_per_frame=%d! \r\n", cfgParam->clock_rate, cfgParam->samples_per_frame);

-

-		ret = DRV_ERR_INVALID_PARAM;

-		goto err_exit;

-	}

-	s_speechState.vpCfgParam = *cfgParam;

-

-	if ((s_vpState.pVpExtI2sCfg == NULL) || (s_vpState.pVpExtI2sWbCfg == NULL))

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_CfgParam error s_vpState.pVpExtI2sCfg not init! \r\n");

-		ret = DRV_ERROR;

-		goto err_exit;

-

-	}

-	else

-	{

-		if (cfgParam->clock_rate == 16000)

-		{

-			s_speechState.pVpI2sCfg = s_vpState.pVpExtI2sWbCfg;

-			g_voiceVar.volteIsWb = 1;

-			s_speechState.frameCount = cfgParam->samples_per_frame;

-			s_vpState.pVpTdmCfg = s_vpState.s_pVpTdmWbCfg;

-

-		}

-		else if (cfgParam->clock_rate == 8000)

-		{

-

-			s_speechState.pVpI2sCfg = s_vpState.pVpExtI2sCfg;

-

-			g_voiceVar.volteIsWb = 0;

-			s_speechState.frameCount = cfgParam->samples_per_frame;

-			s_vpState.pVpTdmCfg = s_vpState.s_pVpTdmCfg;

-

-		}

-		else

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_CfgParam the fs not support! \r\n");

-			ret = DRV_ERR_INVALID_PARAM;

-			goto err_exit;

-		}

-

-		/*

-		        if((s_speechState.pVpI2sCfg->tClkMode == I2S_TIME_MODE)&&(s_speechState.pVpI2sCfg->tTrackFmt == DOUBLE_TRACK))

-		        {

-		            (s_speechState.i2sReadParam).channel = AUDIO_DUAL_CHANNEL;

-		            (s_speechState.i2sWriteParam).channel = AUDIO_DUAL_CHANNEL;

-

-		        }

-		*/

-		if (s_speechState.pVpI2sCfg->tClkMode == I2S_TIME_MODE)

-		{

-			if (s_speechState.pVpI2sCfg->tTrackFmt == DOUBLE_TRACK)

-			{

-				s_speechState.totalFrameBufSize = (s_speechState.frameCount * 2);

-				(s_speechState.i2sWriteParam).channel = AUDIO_DUAL_CHANNEL;

-				(s_speechState.i2sReadParam).channel = AUDIO_DUAL_CHANNEL;

-			}

-

-			else if ((s_speechState.pVpI2sCfg->tTrackFmt == LEFT_TRACK) || (s_speechState.pVpI2sCfg->tTrackFmt == RIGHT_TRACK))

-			{

-				s_speechState.totalFrameBufSize = (s_speechState.frameCount * 2);

-				(s_speechState.i2sWriteParam).channel = AUDIO_MONO_CHANNEL;

-				(s_speechState.i2sReadParam).channel = AUDIO_MONO_CHANNEL;

-			}

-			else

-			{

-				zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_CfgParam tTrackFmt not support! \r\n");

-

-				ret = DRV_ERR_INVALID_PARAM;

-				goto err_exit;

-

-			}

-			s_speechState.i2sWriteParam.buffersize = s_speechState.totalFrameBufSize;

-			s_speechState.i2sReadParam.buffersize = s_speechState.totalFrameBufSize;

-

-		}

-		else if ((s_speechState.pVpI2sCfg->tClkMode == PCM_TIME_MODE) && (s_speechState.pVpI2sCfg->tPcmSlotNum == PCM_1TIME_SLOT))

-		{

-			s_speechState.totalFrameBufSize = (s_speechState.frameCount * 2);

-			s_speechState.i2sWriteParam.buffersize = s_speechState.totalFrameBufSize;

-			s_speechState.i2sReadParam.buffersize = s_speechState.totalFrameBufSize;

-

-		}

-		else if ((s_speechState.pVpI2sCfg->tClkMode == PCM_TIME_MODE) && (s_speechState.pVpI2sCfg->tPcmSlotNum != PCM_1TIME_SLOT))

-		{

-			s_speechState.pcmSlotNum = s_speechState.pVpI2sCfg->tPcmSlotNum + 1;

-

-			if (s_speechState.pVpI2sCfg->tPcmSlotNum == PCM_16TIME_SLOT)

-			{

-				s_speechState.pcmWbSecDataPosition = 16;

-			}

-			else if (s_speechState.pVpI2sCfg->tPcmSlotNum == PCM_4TIME_SLOT)

-			{

-				s_speechState.pcmWbSecDataPosition = 4;

-			}

-			else

-			{

-				zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_CfgParam s_speechState.pVpI2sCfg->tPcmSlotNum=%d,not support !\n", s_speechState.pVpI2sCfg->tPcmSlotNum);

-				ret = DRV_ERROR;

-				goto err_exit;

-

-			}

-			s_speechState.totalFrameBufSize = s_speechState.frameCount * 2;

-			s_speechState.i2sWriteParam.buffersize = s_speechState.pcmSlotNum * s_speechState.totalFrameBufSize;

-			s_speechState.i2sReadParam.buffersize = s_speechState.pcmSlotNum * s_speechState.totalFrameBufSize;

-		}

-		else

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_CfgParam s_speechState.pVpI2sCfg->tClkMode=%d,not support !\n", s_speechState.pVpI2sCfg->tClkMode);

-			ret = DRV_ERROR;

-			goto err_exit;

-		}

-		s_speechState.i2sWriteParam.p_cb = NULL;

-		s_speechState.i2sReadParam.p_cb = NULL;

-

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_CfgParam I2S zDrvI2S_Write_Start buffersize=%d\n", s_speechState.i2sWriteParam.buffersize);

-		s_speechState.inOutBufUseSize = s_vpState.inOutBufSize - s_speechState.totalFrameBufSize;

-

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_CfgParam  g_voiceVar.vpI2sStatus=%d,s_speechState.inOutBufUseSize=%d\n", g_voiceVar.vpI2sStatus, s_speechState.inOutBufUseSize);

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_CfgParam set totalFrameBufSize=%d,s_speechState.frameCount=%d\n", s_speechState.totalFrameBufSize, s_speechState.frameCount);

-

-

-	}

-#if 0

-	if (g_voiceVar.isUseSlicCodec != 1)

-	{

-		if (s_speechState.pVpI2sCfg->sample_rate != cfgParam->clock_rate)

-		{

-			s_speechState.pVpI2sCfg->sample_rate = cfgParam->clock_rate;

-		}

-	}

-#endif

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_CfgParam set read /wirte Param end! \r\n");

-

-

-	if (cfgParam->clock_rate == 8000)

-	{

-		fs = VP_FS_8000;

-	}

-	else if (cfgParam->clock_rate == 16000)

-	{

-		fs = VP_FS_16000;

-

-	}

-	else

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_CfgParam the fs not support ,only support 8k,16k !\n");

-		ret = DRV_ERROR;

-		goto err_exit;

-	}

-

-	ret = halVpCfg_SetFs(fs);

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_CfgParam halVpCfg_SetFs err ret=%d !\n", ret);

-		ret = DRV_ERROR;

-		goto err_exit;

-

-	}

-

-	if ((g_voiceVar.vpPath == VP_PATH_HANDSET) || (g_voiceVar.vpPath == VP_PATH_HEADSET) || (g_voiceVar.vpPath == VP_PATH_SPEAKER))

-	{

-		ret = halVpCfg_SetInputPath(g_voiceVar.vpPath, TRUE);

-		if (ret != DRV_SUCCESS)

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_CfgParam voice_SetPahtIn halVpCfg_SetInputPath err ret=%d !\n", ret);

-			ret = DRV_ERROR;

-			goto err_exit;

-		}

-		ret = halVpCfg_SetOutputPath(g_voiceVar.vpPath, TRUE);

-		if (ret != DRV_SUCCESS)

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_CfgParam voice_SetPahtOut halVpCfg_SetOutputPath err ret=%d !\n", ret);

-			ret = DRV_ERROR;

-			goto err_exit;

-		}

-	}

-	else

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_CfgParam voice_SetPahtOut the path not support !\n");

-		ret = DRV_ERROR;

-		goto err_exit;

-	}

-

-	if (cfgParam->clock_rate == 16000)

-	{

-		ret = VoiceProc_Open(16000);

-	}

-	else if (cfgParam->clock_rate == 8000)

-	{

-		ret = VoiceProc_Open(8000);

-	}

-	else

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_CfgParam VoiceProc_Open fs not support\n");

-		ret = DRV_ERR_NOT_SUPPORTED;

-	}

-

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_CfgParam VoiceProc_Open g_voiceVar.voiceMode=%d, ret=%d \n", g_voiceVar.voiceMode, ret);

-	//g_voiceVar.vpPath = VP_PATH_HANDSET;

-	//g_voiceVar.vpVol = VP_VOL_3;

-	if (ret == DRV_SUCCESS)

-	{

-		//g_voiceVar.vpPath = VP_PATH_HEADSET;

-		//g_voiceVar.vpVol = VP_VOL_3;

-		ret = VoiceProc_GetParam(g_voiceVar.voiceMode, g_voiceVar.vpPath);

-		if (ret == DRV_SUCCESS)

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, " vp_CfgParam VoiceProc_GetParam OK!\r\n");

-			g_voiceVar.vProcIsNormal = TRUE;

-			ret = VoiceProc_SetParam(g_voiceVar.voiceMode, g_voiceVar.vpPath, g_voiceVar.vpVol, FALSE);

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_CfgParam VoiceProc_SetParam ret=%d \n", ret);

-			if (ret != DRV_SUCCESS)

-			{

-				g_voiceVar.vProcIsNormal = FALSE;

-				zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_CfgParam VoiceProc_SetParam ret=%d ,voiceprocess don't use! \n", ret);

-				VoiceProc_Close();

-			}

-		}

-		else

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_CfgParam VoiceProc_GetParam error ret=%d ! \r\n", ret);

-			g_voiceVar.vProcIsNormal = FALSE;

-			VoiceProc_Close();

-		}

-	}

-	else

-	{

-		g_voiceVar.vProcIsNormal = FALSE;

-	}

-

-	return DRV_SUCCESS;

-err_exit:

-	if (g_voiceVar.voiceMode == VOICE_GSM_MODE)

-	{

-		zDrvI2S_Close(I2S_2);

-	}

-	if (g_voiceVar.isUseSlicCodec != 1)

-	{

-		zDrvExtAudio_Close();

-	}

-	return ret;

-}

-

-SINT32 vp_Close(T_ZDrvVoice_MODE voiceMode)

-{

-	SINT32 ret = DRV_SUCCESS;

-

-	if (g_voiceVar.vpI2sStatus != VP_I2S_OPEN)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_Close error: g_voiceVar.vpI2sStatus != VP_I2S_OPEN g_voiceVar.vpI2sStatus=%d\n", g_voiceVar.vpI2sStatus);

-		return DRV_ERROR;

-	}

-

-	if (g_voiceVar.vpI2sStatus == VP_I2S_IDLE)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_Close: vp is closed already");

-		return DRV_SUCCESS;

-	}

-

-	g_voiceVar.vpPath = VP_PATH_HANDSET;

-

-#ifdef CONFIG_CP_USE_SOFT_DTMF_DETECT

-	slic_tw_dtmf_detect_close();

-#endif

-	if ((voiceMode == VOICE_LTE_MODE) || (voiceMode == VOICE_WCDMA_MODE) || (voiceMode == VOICE_TD_MODE))

-	{

-#if 1//move from stop. lvwenhua 20150910

-		ret = zDrvExtAudio_Read_Stop();

-		if (ret != DRV_SUCCESS)

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_ReadStop I2S1 Stop wrong  ret=%d \n", ret);

-		}

-#endif

-

-#if 1//move from stop. lvwenhua 20150910

-#ifdef VOICE_TONE_MIXER_FUNCTION

-		voice_ToneMixerStop();

-#endif

-

-		ret = zDrvExtAudio_Write_Stop();

-		if (ret != DRV_SUCCESS)

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_WriteStop I2S1 Stop wrong  ret=%d \n", ret);

-		}

-

-#endif

-

-		if (g_voiceVar.isUseSlicCodec != 1)

-		{

-

-			ret = zDrvExtAudio_Close();

-			if (ret != DRV_SUCCESS)

-			{

-				zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "ret=%d zDrvExtAudio_Close() \n", ret);

-			}

-

-			ret = halVpCfg_Close();

-			if (ret != DRV_SUCCESS)

-			{

-				zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp hal_VpCfg_Close err ret=%d", ret);

-			}

-

-

-		}

-		zOss_Printf(SUBMDL_HAL, PRINT_LEVEL_NORMAL, "volte I2S Close end!\n");

-

-		if (g_voiceVar.vProcIsNormal == TRUE)

-		{

-			ret = VoiceProc_Close();

-

-			if (ret != DRV_SUCCESS)

-			{

-				zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_Close VoiceProc_Close wrong  ret=%d \n", ret);

-			}

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_Close VoiceProc_Close   ret=%d \n", ret);

-

-			g_voiceVar.vProcIsNormal = FALSE;

-		}

-

-		g_voiceVar.voiceInVolteMode = 0;

-		g_voiceVar.volteIsWb = 0;

-

-	}

-	else if (voiceMode == VOICE_GSM_MODE)

-	{

-		g_voiceVar.voiceInGsmTdMode = 0;

-		ret = halVpCfg_Close();

-		if (ret != DRV_SUCCESS)

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp hal_VpCfg_Close err ret=%d", ret);

-		}

-

-		if (s_vpState.vpThreadQuitSema != NULL)

-		{

-			zOss_GetSemaphore(s_vpState.vpThreadQuitSema, VOICE_SYNC_TIMEOUT_TIME);

-			zOss_DeleteSemaphore(s_vpState.vpThreadQuitSema);

-			s_vpState.vpThreadQuitSema = NULL;

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_Close,zOss_DeleteSemaphore tick=%d\n", zOss_GetTickCount());

-		}

-

-	}

-

-    //dtmf检测关闭

-    if(g_voiceVar.dtmfDirSel != DTMF_IDLE)

-    {

-        ret = zDrvVp_DtmfSoftwareStop();

-        if (ret != DRV_SUCCESS)

-    	{

-    		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_Close zDrvVp_DtmfSoftwareStop err, ret=%d\n", ret);

-    	}

-        

-        g_voiceVar.dtmfDirSel = DTMF_IDLE;

-        zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_Close zDrvVp_DtmfSoftwareStop end\n");

-    }

-#ifdef ECALL_SUPPORT

-	if((g_voiceVar.audio_ctrlFlag.isUseEcall == 1)&&(e_reg_flag == 1))

-	{

-    	ret = ecall_Stop();	

-		if (ret != DRV_SUCCESS)

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "update_ecall_state ecall_Stop err,ret=%d\n",ret);

-		}	

-		ret = ecall_Close();

-		if (ret != DRV_SUCCESS)

-		{

-		   zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "ecall_Open error,ret=%d", ret);

-		}	

-		e_reg_flag = 0;

-	}

-#endif	

-	g_voiceVar.vpI2sStatus = VP_I2S_IDLE;

-	g_voiceVar.voiceMode = MAX_VOICE_MODE;

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_Close,g_voiceVar.vpI2sStatus=%d\n", g_voiceVar.vpI2sStatus);

-

-	s_speechState.i2sIsRstFlag = FALSE;

-

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_Close end voiceMode = %d\n", voiceMode);

-

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_Close,s_vpState.pVpRxInBuffer=%p\n", s_vpState.pVpRxInBuffer);

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_Close,s_vpState.pVpTxInBuffer=%p\n", s_vpState.pVpTxInBuffer);

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_Close,s_vpState.pVpRxOutPutBuffer=%p\n", s_vpState.pVpRxOutPutBuffer);

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_Close,s_vpState.pVpTxOutPutBuffer=%p\n", s_vpState.pVpTxOutPutBuffer);

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_Close,s_vpState.inOutBufSize=%x\n", s_vpState.inOutBufSize);

-#if defined(CONFIG_VOICE_BUFFER_DRV) && defined(_VBUFF_IN_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);

-#endif

-

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "%s: ext_aRdCount %d,ext_aRdFBufCount %d!\n",__FUNCTION__,ext_aRdCount,ext_aRdFBufCount);

-

-

-

-	return DRV_SUCCESS;

-}

-

-

-

-

-SINT32 vp_VoiceI2sStart(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, "vp_VoiceI2sStart start.\n");

-

-	if (((s_speechState.pVpI2sCfg == NULL) && (s_vpState.pVpTdmCfg == NULL)) || (s_vpState.pVpInnerI2sCfg == NULL))

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VoiceI2sStart NULL err s_speechState.pVpI2sCfg=%p,s_vpState.pVpInnerI2sCfg=%p ! \n", s_speechState.pVpI2sCfg, s_vpState.pVpInnerI2sCfg);

-		return DRV_ERROR;

-	}

-

-//	if (s_speechState.pVpI2sCfg->tTestMode == I2S_LOOPBACK_MODE)

-//	{

-//		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "is the i2s loopback mode");

-//	}

-#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_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);

-	}

-#ifdef _VBUFF_IN_MULTI_CORE

-	voice_buffer_write(s_speechState.pVpTempRxOutPutBuffer, s_speechState.totalFrameBufSize);

-

-#else

-	voicebuffer_dlqueue_write(s_speechState.pVpTempRxOutPutBuffer, s_speechState.totalFrameBufSize);

-#endif

-#else	

-	if (g_voiceVar.isUseSlicCodec == 1)

-	{

-

-		if (s_speechState.i2sIsRstFlag == FALSE)

-		{

-			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;

-		}

-

-	}

-

-	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);

-

-	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);

-

-	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_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);

-

-	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 += 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);

-	}

-

-#endif

-#ifdef ECALL_SUPPORT

-	if((g_voiceVar.audio_ctrlFlag.isUseEcall == 1)&&(e_reg_flag == 1))

-	{

-

-		rdsem_count_Init(ECALL_SEM);

-		wrsem_count_Init(ECALL_SEM);

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "%s: ecall sem init \n",__FUNCTION__);

-		

-    }

-#endif

-	

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VoiceI2sStart end.\n");

-	return ret;

-}

-VOID vp_VoiceI2sStop(VOID)

-{

-	SINT32 ret = DRV_SUCCESS;

-

-	ret = zDrvExtAudio_Read_Stop();

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VoiceI2sStop error: zDrvI2S_Read_Stop I2S1 wrong  ret=%d", ret);

-	}

-	ret = zDrvExtAudio_Write_Stop();

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VoiceI2sStop error: zDrvI2S_Write_Stop I2S1 wrong  ret=%d", ret);

-	}

-

-	ret = zDrvI2S_Read_Stop(I2S_2);

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VoiceI2sStop error: zDrvI2S_Read_Stop I2S2 wrong  ret=%d", ret);

-	}

-

-	ret = zDrvI2S_Write_Stop(I2S_2);

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VoiceI2sStop error: zDrvI2S_Write_Stop I2S2 wrong  ret=%d", ret);

-	}

-

-	if (g_voiceVar.vProcIsNormal == TRUE)

-	{

-		ret = VoiceProc_Close();

-		if (ret != DRV_SUCCESS)

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VoiceI2sStop error: VoiceProc_Close wrong  ret=%d", ret);

-		}

-		g_voiceVar.vProcIsNormal = FALSE;

-	}

-	if (g_voiceVar.isUseSlicCodec != 1)

-	{

-		ret = zDrvExtAudio_Close();

-		if (ret != DRV_SUCCESS)

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VoiceI2sStop error: zDrvI2S_Close I2S1  ret=%d", ret);

-		}

-	}

-	ret = zDrvI2S_Close(I2S_2);

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VoiceI2sStop error: zDrvI2S_Write_Stop I2S2  ret=%d", ret);

-	}

-

-	if (s_vpState.vpThreadQuitSema != NULL)

-	{

-		zOss_PutSemaphore(s_vpState.vpThreadQuitSema);

-	}

-}

-

-SINT32 vp_VoiceWorkStart(VOID)

-{

-	SINT32 ret = DRV_SUCCESS;

-	//T_ZDrvI2s_Params parameter = {0};//xiu gai chu

-

-	//UINT8 *write_buf = NULL;//xiu gai chu

-	//UINT32 write_len = 0;//xiu gai chu

-	//UINT8 *read_buf = NULL;//xiu gai chu

-	//UINT32 read_len = 0;//xiu gai chu

-

-

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VoiceWorkStart start\n");

-

-	if (g_voiceVar.vpI2sStatus != VP_I2S_OPEN)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VoiceWorkStart error: g_voiceVar.vpI2sStatus != VP_I2S_OPEN g_voiceVar.vpI2sStatus=%d\n", g_voiceVar.vpI2sStatus);

-		vp_VoiceI2sStop();

-		return DRV_ERROR;

-	}

-

-	ret = halVpCfg_Enable();

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "voice_enable halVpCfg_Enable err ret=%x !\n", ret);

-		vp_VoiceI2sStop();

-		return DRV_ERROR;

-	}

-

-	if (s_vpState.vpThreadQuitSema == NULL)

-	{

-		s_vpState.vpThreadQuitSema = zOss_CreateSemaphore("VpDataThreadQuitSemaphore", 0);

-		if (NULL == s_vpState.vpThreadQuitSema)

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "create s_vpState.vpThreadQuitSema err \r\n");

-			return DRV_ERROR;

-		}

-	}

-

-	g_voiceVar.vpI2sStatus = VP_I2S_INUSE;

-

-	if (ZOSS_SUCCESS != zOss_PutSemaphore(s_vpState.vpSemaphore))

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VoiceWorkStart put sema error.\n");

-		g_voiceVar.vpI2sStatus = VP_I2S_OPEN;

-		return DRV_ERROR;

-	}

-#ifdef ECALL_SUPPORT

-

-	if((g_voiceVar.audio_ctrlFlag.isUseEcall == 1)&&(e_reg_flag == 1))

-	{

-

-		rdsem_count_Init(ECALL_SEM);

-		wrsem_count_Init(ECALL_SEM);

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "%s: ecall sem init \n",__FUNCTION__);

-		

-    }

-#endif

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VoiceWorkStart end,and put sema success.\n");

-

-	return DRV_SUCCESS;

-}

-

-SINT32 zDrvVp_VoiceWorkStop(VOID)

-{

-	SINT32  ret = DRV_SUCCESS;

-

-	if (g_voiceVar.vpI2sStatus != VP_I2S_INUSE)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_VoiceWorkStop error: g_voiceVar.vpI2sStatus != VP_I2S_INUSE g_voiceVar.vpI2sStatus=%d\n", g_voiceVar.vpI2sStatus);

-		//return DRV_ERROR;

-	}

-

-

-

-#ifdef VOICE_TONE_MIXER_FUNCTION

-	voice_ToneMixerStop();

-#endif

-	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

-	

-	zDrvI2s_RxRlsSemaBeforeStop(I2S_2);

-	zDrvI2s_TxRlsSemaBeforeStop(I2S_2);

-

-	ret = halVpCfg_Disable();

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "voice_disable halVpCfg_Disable err ret=%x !\n", ret);

-	}

-

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_VoiceWorkStop success");

-	return DRV_SUCCESS;

-}

-

-

-SINT32 vp_VolteReadStart(VOID)

-{

-	SINT32 ret = DRV_SUCCESS;

-

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VolteReadStart start\n");

-

-	g_voiceVar.vpI2sStatus = VP_I2S_OPEN;

-

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "I2S_1 vp_VolteReadStart buffersize=%d\n", s_speechState.i2sReadParam.buffersize);

-	if (g_voiceVar.isUseSlicCodec == 1)

-	{

-		if (s_speechState.i2sIsRstFlag == FALSE)

-		{

-			ret = zDrvExtAudio_Reset();

-			if (ret != DRV_SUCCESS)

-			{

-				zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VolteReadStart zDrvI2S_Reset() err ret=%d ", ret);

-				return DRV_ERROR;

-			}

-			s_speechState.i2sIsRstFlag = TRUE;

-		}

-

-	}

-	if ((s_speechState.pVpI2sCfg == NULL) && (s_vpState.pVpTdmCfg == NULL))

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VolteReadStart  s_speechState.pVpI2sCfg is NULL! \r\n");

-		return DRV_ERROR;

-	}

-

-	if (s_speechState.volteVpCfgEnFlag == 0)

-	{

-		ret = halVpCfg_Enable();

-		if (ret != DRV_SUCCESS)

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VolteReadStart halVpCfg_Enable err ret=%x !\n", ret);

-			return DRV_ERROR;

-		}

-		else

-		{

-			s_speechState.volteVpCfgEnFlag = 1;

-		}

-	}

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "I2S_1 vp_VolteReadStart\n");

-

-	ret = zDrvExtAudio_Read_Start(&s_speechState.i2sReadParam, s_speechState.pVpI2sCfg, &s_vpTdmReadParam, s_vpState.pVpTdmCfg);

-

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VolteReadStart failed ret is %d .\n", ret);

-		return DRV_ERROR;

-	}

-

-	g_voiceVar.vpI2sStatus = VP_I2S_INUSE;

-#ifdef  CONFIG_VOICE_BUFFER_DRV

-	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;

-}

-

-SINT32 vp_VolteReadStop(VOID)

-{

-	SINT32  ret = DRV_SUCCESS;

-#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, "vp_VolteReadStart halVpCfg_Enable err ret=%x !\n", 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;

-#ifdef  CONFIG_VOICE_BUFFER_DRV  	

-		zOss_StopTimer(s_voiceTimerId);

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VolteReadStop zOss_StopTimer\n");

-#endif

-	}

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVolte_ReadStop\n");

-	return ret;

-}

-

-SINT32 vp_VolteWriteStart(VOID)

-{

-	SINT32 ret = DRV_SUCCESS;

-	UINT8 *write_buf = NULL;

-	UINT32 write_len = 0;

-

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VolteWriteStart start\n");

-

-	g_voiceVar.vpI2sStatus = VP_I2S_OPEN;

-

-	if (g_voiceVar.isUseSlicCodec == 1)

-	{

-		if (s_speechState.i2sIsRstFlag == FALSE)

-		{

-			ret = zDrvExtAudio_Reset();

-			if (ret != DRV_SUCCESS)

-			{

-				zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VolteReadStart zDrvI2S_Reset(I2S_1) err ret=%d ", ret);

-				return DRV_ERROR;

-			}

-			s_speechState.i2sIsRstFlag = TRUE;

-

-		}

-	}

-

-	if ((s_speechState.pVpI2sCfg == NULL) && (s_vpState.pVpTdmCfg == NULL))

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VolteWriteStart  s_speechState.pVpI2sCfg is NULL! \r\n");

-		return DRV_ERROR;

-	}

-

-	if (s_speechState.volteVpCfgEnFlag == 0)

-	{

-		ret = halVpCfg_Enable();

-		if (ret != DRV_SUCCESS)

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VolteReadStart halVpCfg_Enable err ret=%x !\n", ret);

-			return DRV_ERROR;

-		}

-		else

-		{

-			s_speechState.volteVpCfgEnFlag = 1;

-		}

-	}

-

-	ret = zDrvExtAudio_Write_Start(&s_speechState.i2sWriteParam, s_speechState.pVpI2sCfg, &s_VpTdmWriteParam, s_vpState.pVpTdmCfg);

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "I2S_1 vp_VolteWriteStart ret=%d\n", ret);

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VolteWriteStart failed ret is %d .\n", ret);

-		return DRV_ERROR;

-	}

-

-	g_voiceVar.vpI2sStatus = VP_I2S_INUSE;

-#ifdef  CONFIG_VOICE_BUFFER_DRV  

-#ifdef _VBUFF_IN_MULTI_CORE

-	voice_buffer_write(s_speechState.pVpTempRxOutPutBuffer, s_speechState.totalFrameBufSize);

-

-#else

-	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;

-	}

-#endif

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO,  "vp_VolteWriteStart \n");

-

-	return DRV_SUCCESS;

-}

-

-SINT32 vp_VolteWriteStop(VOID)

-{

-	SINT32  ret = DRV_SUCCESS;

-

-#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_VolteReadStart 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;

-#ifdef  CONFIG_VOICE_BUFFER_DRV 

-		zOss_StopTimer(s_voiceTimerId);

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VolteWriteStop zOss_StopTimer\n");

-#endif

-	}

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VolteWriteStop \n");

-	return ret;

-}

-

-

-/*******************************************************************************

- * For union version

- * Others:

- ********************************************************************************/

-SINT32 vp_WriteDataToCodec(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 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 get__ecall_state fun not register or invalid para,e_ret=%d !\n",e_ret);

-	

-		}	

-	}	

-	#endif

-

-#ifdef  CONFIG_VOICE_BUFFER_DRV  	

-

-	#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

-	voice_buffer_write(s_speechState.pVpTempRxOutPutBuffer, s_speechState.totalFrameBufSize);

-

-	#else

-	voicebuffer_dlqueue_write(s_speechState.pVpTempRxOutPutBuffer, s_speechState.totalFrameBufSize);

-	#endif

-	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

-	}

-

-#else //not defined CONFIG_VOICE_BUFFER_DRV

-

-	#ifdef ECALL_SUPPORT

-

-	if (e_reg_flag == 1)

-	{

-	

-		e_ret = ecall_GetRxBuf(&e_write_buf,&e_write_len);

-		if ((e_ret == DRV_SUCCESS) && (e_write_buf != NULL) && (e_write_len == s_speechState.i2sWriteParam.buffersize))

-		{

-

-			zOss_Memcpy(e_write_buf, pBuf, s_speechState.totalFrameBufSize);

-

-		}

-	

-

-	}

-

-	#endif	

-

-	ret = zDrvExtAudio_GetBuf(&write_buf, &write_len);	

-	if ((ret == DRV_SUCCESS) && (write_buf != NULL) && (write_len == s_speechState.i2sWriteParam.buffersize))

-	{

-		if (pBuf !=  s_speechState.pVpTempRxInBuffer)

-		{

-			zOss_Memcpy(s_speechState.pVpTempRxInBuffer, pBuf, s_speechState.totalFrameBufSize);

-		}

-		#if 0

-		#ifdef TEST_WHITE_NOISE

-		zOss_Memcpy(s_speechState.pVpTempRxInBuffer, pVoiceTempBuf, VP_I2S_BUFFER_SIZE);

-

-		pVoiceTempBuf += VP_I2S_BUFFER_SIZE;

-		tempCount += VP_I2S_BUFFER_SIZE;

-		if (tempCount >= 0x4E200)   //307200

-		{

-			pVoiceTempBuf = s_voiceTempBuffer;

-			tempCount = 0;

-		}

-		#endif

-		#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

-

-        //dtmf检测下行写入

-        if((g_voiceVar.dtmfDirSel == DTMF_RX) || (g_voiceVar.dtmfDirSel == DTMF_TXRX))

-        {

-            dtmfRx_RingWrite(s_speechState.pVpTempRxInBuffer);

-        }

-

-        #if 0

-        //+++mixdata??????,?????

-        if(g_voiceVar.audio_ctrlFlag.isUseRxMixData == 1)

-        {

-            if((g_voiceVar.voiceInVolteMode == 1) && (g_voiceVar.volteIsWb == 1)) 

-    		{

-    			voice_MixerDataRx(s_speechState.pVpTempRxInBuffer, 640,  s_speechState.pVpTempRxInBuffer);

-    		} 

-    		else 

-    		{

-    			voice_MixerDataRx(s_speechState.pVpTempRxInBuffer, 320,  s_speechState.pVpTempRxInBuffer);

-    		}

-        }

-        #endif

-

-		#ifdef ECALL_SUPPORT

-        if ((g_voiceVar.vProcIsNormal == TRUE)&&((e_reg_flag != 1)||((e_reg_flag == 1)&&(g_voiceVar.ecallData.ecallRxSta == ECALL_ST_RX_IDLE))))

-		#else        

-		if (g_voiceVar.vProcIsNormal == TRUE)

-		#endif		

-		{

-

-			ret = VoiceProc_RxProcess(&s_speechState.pVpTempRxInBuffer, &s_speechState.pVpTempRxOutPutBuffer, s_speechState.frameCount);

-			if (ret != DRV_SUCCESS)

-			{

-				zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "write to cdec VoiceProc_RxProcess err ret=%d !\n", ret);

-

-			}

-			//zOss_Memcpy(write_buf, s_speechState.pVpTempRxOutPutBuffer,write_len);

-			//pvpRxMidBuffer= s_speechState.pVpTempRxOutPutBuffer;

-		}

-		else

-		{

-			//zOss_Memcpy(write_buf, s_speechState.pVpTempRxInBuffer,write_len);

-			//pVpRxMidBuffer= s_speechState.pVpTempRxInBuffer;

-			zOss_Memcpy((VOID *)(s_speechState.pVpTempRxOutPutBuffer), (VOID *) s_speechState.pVpTempRxInBuffer, s_speechState.totalFrameBufSize);

-

-		}

-

-

-		if ((s_speechState.pVpI2sCfg->tClkMode == PCM_TIME_MODE) && (s_speechState.pVpI2sCfg->tPcmSlotNum != PCM_1TIME_SLOT))

-		{

-			zOss_Memset(write_buf, 0, write_len);

-			//for(i=0;i<VP_FRAME_BUFFER_SIZE;)

-			for (i = 0; i < s_speechState.totalFrameBufSize;)

-			{

-

-				* (write_buf + j * s_speechState.pcmSlotNum) = * (s_speechState.pVpTempRxOutPutBuffer + i);

-				* (write_buf + j * s_speechState.pcmSlotNum + 1) = (* (s_speechState.pVpTempRxOutPutBuffer + i + 1));

-				//i+=2;

-#if 1

-

-				if (s_speechState.vpCfgParam.clock_rate == 16000)

-				{

-

-					* (write_buf + j * s_speechState.pcmSlotNum + s_speechState.pcmWbSecDataPosition) = * (s_speechState.pVpTempRxOutPutBuffer + i + 2);

-					* (write_buf + j * s_speechState.pcmSlotNum + s_speechState.pcmWbSecDataPosition + 1) = (* (s_speechState.pVpTempRxOutPutBuffer + i + 3));

-					i += 2;

-					// j+=1;

-

-

-				}

-#endif

-				j += 2;

-				i += 2;

-

-			}

-		}

-		else

-		{

-			zOss_Memcpy(write_buf, s_speechState.pVpTempRxOutPutBuffer, s_speechState.totalFrameBufSize);

-		}

-

-

-		if (g_voiceVar.voiceInVolteMode == 1)

-		{

-			// s_speechState.rxSaveLen += VP_FRAME_BUFFER_SIZE;

-			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

-

-		}

-

-	}

-	else

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_WriteDataToCodec zDrvI2S_GetBuf:I2S1:ret=%d,write_buf = %p,write_len = %d.\n", ret, write_buf, write_len);

-		return DRV_ERROR;

-	}

-	#ifdef ECALL_SUPPORT

-

-	

-	if(e_reg_flag == 1)

-	{	

-

-		e_ret = ecall_Write(e_write_buf, e_write_len);

-		if (e_ret != DRV_SUCCESS)

-		{

-            eWrErr++;

-			if(eWrErr == 1)

-				zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "ecall_Write err ret=%d !\n", e_ret);

-

-		}	

-

-		

-		if( g_voiceVar.ecallData.ecallRxSta == ECALL_ST_RX_INUSE)

-		{

-		    zOss_Memset(write_buf, 0, write_len);//need  mute rx		

-		}

-	}	

-	#endif		

-	ret = zDrvExtAudio_Write(write_buf, write_len);

-

-

-

-

-

-

-#endif

-

-	if (s_speechState.firstWriteDataFlag == FALSE)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_WriteDataToCodec first write ret=%d,tick=%d.\n", ret, zOss_GetTickCount());

-		s_speechState.firstWriteDataFlag = TRUE;

-	}

-

-	return ret;

-}

-

-

-

-SINT32 vp_ReadDataFromCodec(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, "vp_ReadDataFromCodec read data length err,count=%d,readbuffersize=%d \n", 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_ReadDataFromCodec get__ecall_state fun not register,ret=%d !\n",ret);

-	

-		}	

-	}	

-#endif

-	

-#ifdef  CONFIG_VOICE_BUFFER_DRV  

-

-//	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

-	voicebuffer_ulqueue_read(s_speechState.pVpTempTxInBuffer,  s_speechState.totalFrameBufSize);

-	#endif

-	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;

-	}

-	

-#else //not define CONFIG_VOICE_BUFFER_DRV  

-	#ifdef ECALL_SUPPORT

-	if ((e_reg_flag == 1)&&(g_voiceVar.ecallData.ecallTxSta == ECALL_ST_TX_INUSE))		

-	{	

-		ret = ecall_GetTxBuf(&read_buf,&read_len);

-		if(ret != DRV_SUCCESS)

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp vp_ReadDataFromCodec ecall_GetRxBuf err ret=%d\n", ret);

-			return DRV_ERROR;

-		}

-		

-		ret = ecall_Read(&read_buf, &read_len);

-		//ret = zDrvExtAudio_Read(&read_buf, &read_len);

-

-	}

-	else

-	{

-		ret = zDrvExtAudio_Read(&read_buf, &read_len);

-		ext_aRdCount ++;

-	

-	}	

-	#else//no ECALL_SUPPORT

-    ret = zDrvExtAudio_Read(&read_buf, &read_len);

-	ext_aRdCount ++;	

-	#endif	

-	if ((ret == DRV_SUCCESS) && (read_buf != NULL) && (read_len == s_speechState.i2sReadParam.buffersize))

-	{

-		if ((s_speechState.pVpI2sCfg->tClkMode == PCM_TIME_MODE) && (s_speechState.pVpI2sCfg->tPcmSlotNum != PCM_1TIME_SLOT))

-		{

-

-

-			//for(i=0;i<VP_FRAME_BUFFER_SIZE;)

-			for (i = 0; i < s_speechState.totalFrameBufSize;)

-			{

-				* (s_speechState.pVpTempTxInBuffer + i) = * (read_buf + j * s_speechState.pcmSlotNum);

-				* (s_speechState.pVpTempTxInBuffer + i + 1) = * (read_buf + j * s_speechState.pcmSlotNum + 1);

-				// i += 2;

-#if 1

-				if (s_speechState.vpCfgParam.clock_rate == 16000)

-				{

-

-					* (s_speechState.pVpTempTxInBuffer + i + 2) = * (read_buf + j * s_speechState.pcmSlotNum + s_speechState.pcmWbSecDataPosition);

-					* (s_speechState.pVpTempTxInBuffer + i + 3) = * (read_buf + j * s_speechState.pcmSlotNum + s_speechState.pcmWbSecDataPosition + 1);

-

-					i += 2;

-					//j+= 1;

-				}

-#endif

-				j += 2; //one slot ,two byte

-				i += 2;

-

-			}

-			//zOss_Memcpy( s_speechState.pVpTempTxInBuffer,read_buf,read_len);

-		}

-		else

-		{

-			zOss_Memcpy(s_speechState.pVpTempTxInBuffer, read_buf, s_speechState.totalFrameBufSize);

-		}

-		/*

-		#ifdef VP_GET_TX_ALL_DATA

-		        zOss_Memcpy(pVpTxInAllDataBuffer,read_buf,read_len);

-		        if (read_len !=  s_speechState.i2sReadParam.buffersize)

-		        {

-		            zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "volte vp_ReadDataFromCodec read_len =%d\n",read_len);

-

-		        }

-		        s_TxAllDataSaveLen+=read_len;

-

-		        //if(s_TxAllDataSaveLen>=0x100000)

-		        if (s_TxAllDataSaveLen >= 0xFA000)

-		        {

-		            s_TxAllDataSaveLen = 0;

-

-		        }

-

-		        pVpTxInAllDataBuffer=(UINT8 *)0x25500000+s_TxAllDataSaveLen;

-		#endif

-		*/

-		#ifdef ECALL_SUPPORT

-

-		if ((e_reg_flag != 1)||((e_reg_flag == 1)&&(g_voiceVar.ecallData.ecallTxSta == ECALL_ST_TX_IDLE)))

-		{

-			ret = zDrvExtAudio_FreeBuf(read_buf);

-			if (ret  != DRV_SUCCESS)

-			{

-				zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp vp_ReadDataFromCodec err ret=%d\n", ret);

-				return DRV_ERROR;

-			}

-			ext_aRdFBufCount ++;				

-		}		

-      

-		#else //not ECALL_SUPPORT

-		ret = zDrvExtAudio_FreeBuf(read_buf);

-		if (ret  != DRV_SUCCESS)

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp vp_ReadDataFromCodec err ret=%d\n", ret);

-			return DRV_ERROR;

-		}

-		ext_aRdFBufCount ++;	

-		#endif

-		

-		#ifdef CONFIG_CP_USE_SOFT_DTMF_DETECT

-		for (i = 0; i < (s_speechState.vpCfgParam.samples_per_frame / 80); )

-		{

-			SINT32 dtmf_ret = DRV_SUCCESS;

-			dtmf_ret = slic_tw_dtmf_detect((SINT16 *)(s_speechState.pVpTempTxInBuffer + i * 160), 80, s_speechState.vpCfgParam.clock_rate);

-			i++;

-			if (dtmf_ret == 0x0010) {

-				g_voiceVar.muteCount = 20;

-				//zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp slic_tw_dtmf_detect 1 ret=%d\n", ret);

-			}

-			else if (dtmf_ret == 0x0000) {

-				g_voiceVar.muteCount = 1;

-				//zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp slic_tw_dtmf_detect 2  ret=%d\n", ret);

-			}

-		}

-		#endif

-		

-		//le9643

-		#if 0

-		//#ifdef CONFIG_ARCH_ZX297520V3_CPE_SWITCH

-

-

-		if (g_voiceVar.audio_ctrlFlag.isUseTdm == 1)

-		{

-			ptemp8bit = s_speechState.pVpTempTxInBuffer;

-			for (i = 0; i < s_speechState.totalFrameBufSize;)

-			{

-				temp8bit = *(ptemp8bit + i);

-				*(ptemp8bit + i) = *(ptemp8bit + i + 1);

-				*(ptemp8bit + i + 1) = temp8bit;

-				i += 2;

-			}

-		}

-		#endif

-        

-        //dtmf检测上行写入

-        if((g_voiceVar.dtmfDirSel == DTMF_TX) || (g_voiceVar.dtmfDirSel == DTMF_TXRX))

-        {          

-            dtmfTx_RingWrite(s_speechState.pVpTempTxInBuffer);

-        }

-        

-        //+++mixdata??????

-        if((g_voiceVar.audio_ctrlFlag.isUseTxMixData == 1) && (g_voiceVar.voiceInVolteMode == 1))

-        {

-            if(g_voiceVar.sample_rate == 16000)//volteIsWb????????+++++

-    		{

-    			voice_MixerDataTx(s_speechState.pVpTempTxInBuffer, 640,  s_speechState.pVpTempTxInBuffer);//640 ??

-    		} 

-    		else if(g_voiceVar.sample_rate == 8000)

-    		{

-    			voice_MixerDataTx(s_speechState.pVpTempTxInBuffer, 320,  s_speechState.pVpTempTxInBuffer);

-    		}

-        }

-		#ifdef ECALL_SUPPORT

-        if ((g_voiceVar.vProcIsNormal == TRUE)&&((e_reg_flag != 1)||((e_reg_flag == 1)&&(g_voiceVar.ecallData.ecallTxSta == ECALL_ST_TX_IDLE))))

-		#else    

-		if (g_voiceVar.vProcIsNormal == TRUE)

-		#endif		

-		{

-			ret = VoiceProc_TxProcess(&s_speechState.pVpTempTxInBuffer, NULL, &s_speechState.pVpTempTxOutPutBuffer, s_speechState.frameCount);

-			if (ret != DRV_SUCCESS)

-			{

-				zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "read from cdec VoiceProc_TxProcess err ret=%d !\n", ret);

-

-			}

-			// zOss_Memcpy(pBuf, s_speechState.pVpTempTxOutPutBuffer,VP_FRAME_BUFFER_SIZE);

-			//zOss_Memcpy(pBuf, s_speechState.pVpTempTxOutPutBuffer,s_speechState.totalFrameBufSize);

-		}

-		else

-		{

-			//zOss_Memcpy(pBuf, s_speechState.pVpTempTxInBuffer,VP_FRAME_BUFFER_SIZE);

-			//zOss_Memcpy(pBuf, s_speechState.pVpTempTxInBuffer,s_speechState.totalFrameBufSize);

-			zOss_Memcpy((VOID *)(s_speechState.pVpTempTxOutPutBuffer), (VOID *) s_speechState.pVpTempTxInBuffer, s_speechState.totalFrameBufSize);

-

-

-		}

-

-		if (g_voiceVar.isUseSlicCodec == 1)

-		{

-			if (g_voiceVar.muteCount > 0)

-			{

-				memset(s_speechState.pVpTempTxOutPutBuffer, 0, count);

-				g_voiceVar.muteCount--;

-			}

-		}

-		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;

-		}

-

-	}

-	else

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, " vp vp_ReadDataFromCodec zDrvI2S_Read:I2S1:ret=%d,read_buf = %p,read_len = %d.\n", ret, read_buf, read_len);

-		return DRV_ERROR;

-	}

-

-#endif

-	

-	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;

-}

-

-

-static VOID  vp_DataProcessThreadEntry(SINT32 argu)

-{

-	SINT32 ret = DRV_SUCCESS;

-

-	UINT8 *read_buf = NULL;

-	UINT8 *write_buf = NULL;

-	UINT32 read_len = 0;

-	UINT32 write_len = 0;

-

-	//UINT8 * s_speechState.pVpTempRxInBuffer = NULL;

-	//UINT8 * s_speechState.pVpTempTxInBuffer = NULL;

-

-	//UINT8 * s_speechState.pVpTempRxOutPutBuffer = NULL;

-	//UINT8 * s_speechState.pVpTempTxOutPutBuffer = NULL;

-

-

-	//UINT32 i = 0;//xiu gai chu

-

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_DataProcessThreadEntry \n");

-

-	while (1)

-	{

-		g_voiceVar.vpLoopRuning = FALSE;

-

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_DataProcessThreadEntry wait s_vpState.vpSemaphore!\n");

-

-		zOss_GetSemaphore(s_vpState.vpSemaphore, ZOSS_WAIT_FOREVER);

-		g_voiceVar.vpLoopRuning = TRUE;

-		// s_speechState.pVpTempRxInBuffer = s_vpState.pVpRxInBuffer;

-		// s_speechState.pVpTempTxInBuffer = s_vpState.pVpTxInBuffer;

-

-		// s_speechState.pVpTempRxOutPutBuffer = s_vpState.pVpRxOutPutBuffer;

-		// s_speechState.pVpTempTxOutPutBuffer = s_vpState.pVpTxOutPutBuffer;

-

-		//#ifdef TEST_WHITE_NOISE

-		//pVoiceTempBuf = s_voiceTempBuffer;//for test

-		//#endif

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_DataProcessThreadEntry g_voiceVar.vpI2sStatus %d!\n", g_voiceVar.vpI2sStatus);

-

-		if (g_voiceVar.vpI2sStatus != VP_I2S_INUSE)

-		{

-			vp_VoiceI2sStop();

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_DataProcessThreadEntry  g_voiceVar.vpI2sStatus != VP_I2S_INUSE!\n");

-			continue;

-		}

-

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_DataProcessThreadEntry start vp_VoiceI2sStart!\n");

-

-		ret = vp_VoiceI2sStart();

-		if (ret != DRV_SUCCESS)

-		{

-			vp_VoiceI2sStop();

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_DataProcessThreadEntry error: vp_VoiceI2sStart!\n");

-			continue;

-		}

-

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_DataProcessThreadEntry data process start!\n");

-		zOss_Printf(SUBMDL_HAL, PRINT_LEVEL_NORMAL, "voice vp_DataProcessThreadEntry work start!\n");

-

-		while (g_voiceVar.vpI2sStatus == VP_I2S_INUSE)

-		{

-			/*downlink:read from teak*/

-			//zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "downlink:i2s2 read from teak\n");

-			ret = zDrvI2S_Read(I2S_2, &read_buf, &read_len);

-

-			//zOss_ASSERT(read_buf != NULL);

-			//zOss_ASSERT(read_len != 0);

-#if 0

-			if (s_speechState.saveLen == 3200)

-			{

-				zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S_Read:I2S2:ret=%d,read_buf = %x,read_len = %d.\n", ret, read_buf, read_len);

-			}

-#endif

-			//if(ret == DRV_SUCCESS)

-			if ((ret == DRV_SUCCESS) && (read_buf != NULL) && (read_len != 0))

-			{

-				zOss_Memcpy(s_speechState.pVpTempRxInBuffer, read_buf, s_speechState.totalFrameBufSize);

-

-			}

-			else

-			{

-				zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S_Read:I2S2:ret=%d,read_buf = %p,read_len = %d.\n", ret, read_buf, read_len);

-				break;

-			}

-			ret = zDrvI2S_FreeBuf(I2S_2, read_buf);

-			if (ret != DRV_SUCCESS)

-			{	/*coverity medium PRINTF_ARGS 把%x换成%p*/

-				zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S_FreeBuf:I2S_2:ret=%d,read_buf = %p.\n", ret, read_buf);

-				break;

-			}

-

-			if (g_voiceVar.vpI2sStatus != VP_I2S_INUSE)

-			{

-				break;

-			}

-

-			/*downlink:voice process*/

-			vp_WriteDataToCodec(s_speechState.pVpTempRxInBuffer, s_speechState.i2sWriteParam.buffersize);

-#if 0

-			if (g_voiceVar.vProcIsNormal == TRUE)

-				ret = VoiceProc_RxProcess(& s_speechState.pVpTempRxInBuffer, & s_speechState.pVpTempRxOutPutBuffer);

-			if (ret != DRV_SUCCESS)

-			{

-				zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_DataProcessThreadEntry error:VoiceProc_RxProcess :ret=%d.\n", ret);

-				break;

-			}

-			//zOss_Memcpy((VOID *)( s_speechState.pVpTempRxOutPutBuffer), (VOID *) s_speechState.pVpTempRxInBuffer, VP_I2S_BUFFER_SIZE);

-    		else

-    		{

-    			zOss_Memcpy((VOID *)(s_speechState.pVpTempRxOutPutBuffer), (VOID *) s_speechState.pVpTempRxInBuffer, 320);

-    		}

-

-    		if (g_voiceVar.vpI2sStatus != VP_I2S_INUSE)

-    		{

-    			break;

-    		}

-

-#if 1

-    		//zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "downlink:i2s1 write to codec\n");

-    		/*downlink:write to codec*/

-    		ret = zDrvExtAudio_GetBuf(&write_buf, &write_len);

-

-    		//zOss_ASSERT(write_buf != NULL);

-    		//zOss_ASSERT(write_len != 0);

-#if 0

-    		if (s_speechState.saveLen == 3200)

-    		{

-    			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S_GetBuf:I2S1:ret=%d,write_buf = %x,write_len = %d.\n", ret, write_buf, write_len);

-    		}

-#endif

-    		//if(ret == DRV_SUCCESS)

-    		if ((ret == DRV_SUCCESS) && (write_buf != NULL) && (write_len != 0))

-    		{

-

-    			if ((s_vpState.pVpExtI2sCfg->tClkMode == PCM_TIME_MODE) && (s_vpState.pVpExtI2sCfg->tPcmSlotNum != PCM_1TIME_SLOT))

-    			{

-    				//It is used for xinke to set teak voice gain when open  lvwenhua 20150709

-    				zOss_Memset(write_buf, 0, write_len);

-    				for (i = 0; i < VP_I2S_BUFFER_SIZE;)

-    				{

-    					* (write_buf + i * (s_vpState.pVpExtI2sCfg->tPcmSlotNum + 1)) = * (s_speechState.pVpTempRxOutPutBuffer + i);

-    					* (write_buf + i * (s_vpState.pVpExtI2sCfg->tPcmSlotNum + 1) + 1) = * (s_speechState.pVpTempRxOutPutBuffer + i + 1);

-    					i += 2;

-    				}

-    			}

-    			else

-

-    			{

-    				zOss_Memcpy(write_buf, s_speechState.pVpTempRxOutPutBuffer, VP_I2S_BUFFER_SIZE);

-    				//zOss_Memcpy(write_buf, s_speechState.pVpTempRxInBuffer,320);

-    			}

-    		}

-    		else

-    		{

-    			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "write else zDrvI2S_GetBuf:I2S1:ret=%d,write_buf = %x,write_len = %d.\n", ret, write_buf, write_len);

-    			break;

-    		}

-    		ret = zDrvExtAudio_Write(write_buf, write_len);

-    		if (ret != DRV_SUCCESS)

-    		{

-    			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S_Write:I2S_1:ret=%d,write_buf = %x,write_len = %d.\n", ret, write_buf, write_len);

-    			break;

-    		}

-

-#endif

-#endif

-    		if (g_voiceVar.vpI2sStatus != VP_I2S_INUSE)

-    		{

-    			break;

-    		}

-

-    		/*uplink:read from codec*/

-    		// zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "downlink:i2s1 read from codec\n");

-    		vp_ReadDataFromCodec(s_speechState.pVpTempTxOutPutBuffer, s_speechState.i2sReadParam.buffersize);

-#if 0

-    		ret = zDrvExtAudio_Read(&read_buf, &read_len);

-

-    		//zOss_ASSERT(read_buf != NULL);

-    		//zOss_ASSERT(read_len != 0);

-#if 0

-

-    		if (s_speechState.saveLen == 3200)

-    		{

-    			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S_GetBuf:I2S1:ret=%d,read_buf = %x,read_len = %d.\n", ret, read_buf, read_len);

-    		}

-#endif

-    		//if(ret == DRV_SUCCESS)

-    		if ((ret == DRV_SUCCESS) && (read_buf != NULL) && (read_len != 0))

-    		{

-    			if ((s_vpState.pVpExtI2sCfg->tClkMode == PCM_TIME_MODE) && (s_vpState.pVpExtI2sCfg->tPcmSlotNum != PCM_1TIME_SLOT))

-    			{

-    				//It is used for xinke to set teak voice gain when open  lvwenhua 20150709

-    				for (i = 0; i < VP_I2S_BUFFER_SIZE;)

-    				{

-    					* (s_speechState.pVpTempTxInBuffer + i) = * (read_buf + i * (s_vpState.pVpExtI2sCfg->tPcmSlotNum + 1));

-    					* (s_speechState.pVpTempTxInBuffer + i + 1) = * (read_buf + i * (s_vpState.pVpExtI2sCfg->tPcmSlotNum + 1) + 1);

-    					i += 2;

-    				}

-    			}

-    			else

-    			{

-    				zOss_Memcpy(s_speechState.pVpTempTxInBuffer, read_buf, VP_I2S_BUFFER_SIZE);

-    			}

-    		}

-    		else

-    		{

-    			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S_Read:I2S1:ret=%d,read_buf = %p,read_len = %d.\n", ret, read_buf, read_len);

-    			break;

-    		}

-    		ret = zDrvExtAudio_FreeBuf(read_buf);

-    		if (ret != DRV_SUCCESS)

-    		{

-    			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S_FreeBuf:I2S1:ret=%d,read_buf = %x.\n", ret, read_buf);

-    			break;

-    		}

-

-    		if (g_voiceVar.vpI2sStatus != VP_I2S_INUSE)

-    		{

-    			break;

-    		}

-

-    		/*uplink:voice process*/

-    		if (g_voiceVar.vProcIsNormal == TRUE)

-    			ret = VoiceProc_TxProcess(& s_speechState.pVpTempTxInBuffer, NULL, & s_speechState.pVpTempTxOutPutBuffer);

-    		if (ret != DRV_SUCCESS)

-    		{

-    			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_DataProcessThreadEntry error:VoiceProc_TxProcess :ret=%d.\n", ret);

-    			break;

-    		}

-    		//zOss_Memcpy((VOID *)( s_speechState.pVpTempTxOutPutBuffer), (VOID *) s_speechState.pVpTempTxInBuffer, VP_I2S_BUFFER_SIZE);

-        	else

-        	{

-

-        		//no nxp lib lwenhua 20150317

-        		//VoiceProc_TxProcess(& s_speechState.pVpTempTxInBuffer, NULL, & s_speechState.pVpTempTxOutPutBuffer);

-        		zOss_Memcpy((VOID *)(s_speechState.pVpTempTxOutPutBuffer), (VOID *) s_speechState.pVpTempTxInBuffer, 320);

-        	}

-#endif

-

-

-        	if (g_voiceVar.vpI2sStatus != VP_I2S_INUSE)

-        	{

-        		break;

-        	}

-

-        	/*uplink:write to teak*/

-        	//zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "downlink:i2s2 write to teak\n");

-        	ret = zDrvI2S_GetBuf(I2S_2, &write_buf, &write_len);

-

-        	//zOss_ASSERT(write_buf != NULL);

-        	//zOss_ASSERT(write_len != 0);

-#if 0

-

-        	if (s_speechState.saveLen == 3200)

-        	{

-        		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S_GetBuf:I2S2:ret=%d,write_buf = %x,write_len = %d.\n", ret, write_buf, write_len);

-        	}

-#endif

-        	//if(ret == DRV_SUCCESS)

-        	if ((ret == DRV_SUCCESS) && (write_buf != NULL) && (write_len != 0))

-        	{

-        		zOss_Memcpy(write_buf, s_speechState.pVpTempTxOutPutBuffer, s_speechState.totalFrameBufSize);

-        		//zOss_Memcpy(write_buf, s_speechState.pVpTempTxInBuffer,320);

-        	}

-        	else

-        	{

-        		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S_GetBuf:I2S2:ret=%d,write_buf = %p,write_len = %d.\n", ret, write_buf, write_len);

-        		break;

-        	}

-        	ret = zDrvI2S_Write(I2S_2, write_buf, write_len);

-        	if (ret != DRV_SUCCESS)

-        	{

-        		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S_Write:I2S2:ret=%d,write_buf = %p,write_len = %d.\n", ret, write_buf, write_len);

-        		break;

-        	}

-#if 0

-        	if (s_speechState.saveLen == 3200)

-        	{

-        		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_DataProcessThreadEntry:  s_speechState.saveLen = %d.\n",  s_speechState.saveLen);

-        	}

-#endif

-        	//if( s_speechState.saveLen < VP_BUF_LENGTH)

-        	{

-        		s_speechState.saveLen += s_speechState.totalFrameBufSize;

-        		if (s_speechState.saveLen >= s_speechState.inOutBufUseSize)

-        		{

-        			s_speechState.saveLen = 0;

-        		}

-        		s_speechState.pVpTempRxInBuffer = s_vpState.pVpRxInBuffer + s_speechState.saveLen;

-        		s_speechState.pVpTempTxInBuffer = s_vpState.pVpTxInBuffer + s_speechState.saveLen;

-        		s_speechState.pVpTempTxOutPutBuffer = s_vpState.pVpTxOutPutBuffer +  s_speechState.saveLen;

-#ifdef _USE_VP_OUTPUT_RXOUT_DATA

-        		s_speechState.pVpTempRxOutPutBuffer = s_vpState.pVpRxOutPutBuffer +  s_speechState.saveLen;

-#else

-        		s_speechState.pVpTempRxOutPutBuffer = s_vpState.pVpRxOutPutBuffer;

-#endif

-	        }

-        }

-

-        vp_VoiceI2sStop();

-

-        zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_DataProcessThreadEntry work end.\n");

-        zOss_Printf(SUBMDL_HAL, PRINT_LEVEL_NORMAL, "voice vp_DataProcessThreadEntry work end!\n");

-

-    }

-}

-

-#ifdef  _OS_TOS

-static void vp_rcvDtmfThread(SINT32 argu)

-{

-	int ret = 0;

-

-	s_vpState.pMsg.actorID = ICP_MSG_ACTOR_A9;

-	s_vpState.pMsg.chID = DTMF;

-	s_vpState.pMsg.flag &= ~RPMSG_READ_POLL;

-	s_vpState.pMsg.buf = s_vpState.pMsgBuf;

-	s_vpState.pMsg.len = 8;

-

-	ret = zDrvRpMsg_CreateChannel(ICP_MSG_ACTOR_A9, DTMF, 0x10);

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvRpMsg_CreateChannel ret %d", ret);

-	while (1)

-	{

-		ret = zDrvRpMsg_Read(&s_vpState.pMsg);

-		if (g_voiceVar.vpI2sStatus == VP_I2S_INUSE)

-		{

-			g_voiceVar.muteCount = 20;

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "mute");

-		}

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvRpMsg_Read ret %d", ret);

-	}

-}

-#endif

-

-#ifdef _OS_LINUX

-VOID  zDrvVp_SetDtmfMute_Wrap(VOID)

-{

-	if (g_voiceVar.vpI2sStatus == VP_I2S_INUSE)

-	{

-		g_voiceVar.muteCount = 20;

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "dtmf mute\n");

-	}

-}

-#endif

-

-SINT32 vp_CreateThreadSemaph(VOID)

-{

-	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);

-#endif

-

-#ifdef  _OS_TOS

-

-

-	if (g_voiceVar.isUseSlicCodec == 1)

-	{

-		s_vpState.rcvDtmfThread = zOss_CreateThread("vp_rcvDtmfThread", vp_rcvDtmfThread, 0, 1024, 10, 0, 1);

-		if (NULL == s_vpState.rcvDtmfThread)

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "create vp Thread s_vpState.rcvDtmfThread err \r\n");

-			return DRV_ERROR;

-		}

-	}

-#endif

-

-	if ((NULL == s_vpState.vpThread) || (NULL == s_vpState.vpSemaphore))

-	{

-		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);

-	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;

-	}

-#ifdef _VBUFF_IN_MULTI_CORE

-		SINT32 ret = 0;

-

-		//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;

-		}

-		

-		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

-#endif

-	

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_CreateThreadSemaph success. \r\n");

-	return DRV_SUCCESS;

-}

-

-SINT32 vp_CreateLoopThreadSemaph(VOID)

-{

-	s_vpState.vpLoopSemaphore = zOss_CreateSemaphore("VpLoopSemaphore", 0);

-#ifdef _USE_WEBRTC_AUD//该宏控制VoiceProc_TxProcess函数调用webrtc的云后处理,此时创建线程时应设为8K,否则栈溢出

-	s_vpState.vpLoopThread = zOss_CreateThread("VpLoopThread", vp_LoopProcessThreadEntry, 0, 8192, 16, 0, 1);

-#else

-    s_vpState.vpLoopThread = zOss_CreateThread("VpLoopThread", vp_LoopProcessThreadEntry, 0, 1024, 16, 0, 1);

-#endif

-

-	if ((NULL == s_vpState.vpLoopThread) || (NULL == s_vpState.vpLoopSemaphore))

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "create vp Loop Thread sem err \r\n");

-		return DRV_ERROR;

-	}

-

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_CreateLoopThreadSemaph success. \r\n");

-	return DRV_SUCCESS;

-}

-

-SINT32 zDrvVp_Init(VOID)

-{

-	SINT32  ret = DRV_SUCCESS;

-

-    g_voiceVar.voice_nv_update = 1;

-    

-	ret = VoiceProc_InitNvParam();

-	if (ret != DRV_SUCCESS)

-	{

-		return ZOSS_ERROR;

-	}

-

-	ret = vp_CreateThreadSemaph();

-	if (ret != DRV_SUCCESS)

-	{

-		return ZOSS_ERROR;

-	}

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_Init create success.\n");

-#ifdef ECALL_SUPPORT	

-	if(g_voiceVar.audio_ctrlFlag.isUseEcall == 1)

-	{

-    	ret = ecall_Init();	

-		if (ret != DRV_SUCCESS)

-		{

-			return ZOSS_ERROR;

-		}

-	}

-#endif

-	voice_InitCodec();

-

-	ret = voice_CreateRcdSemAndThread();

-

-	if (ret != DRV_SUCCESS)

-	{

-		return ZOSS_ERROR;

-	}

-

-	ret = vp_CreateLoopThreadSemaph();

-	if (ret != DRV_SUCCESS)

-	{

-		return ZOSS_ERROR;

-	}

-	ret = zDrv_Init();

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S__Init error.\n");

-		return ZOSS_ERROR;

-	}

-

-	vp_SetTopConfig();

-	//vp_SetTopI2sConfig();

-

-	if (g_voiceVar.isUseSlicCodec == 1)

-	{

-		//added by zhanglixia

-		ret = zDrvExtAudio_Open(TRANS_DMA_MODE);

-		if (ret != DRV_SUCCESS)

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_Init ret=%d zDrvI2S_Open(I2S_1,TRANS_DMA_MODE) \n", ret);

-			return DRV_ERROR;

-		}

-

-#if 0

-		if (s_vpState.pVpExtI2sCfg == NULL)

-		{

-			s_vpState.pVpExtI2sCfg = &s_VpExtI2sCfg;

-		}

-

-		if (s_pVpI2s1Cfg->tClkMode == PCM_TIME_MODE)

-		{

-			s_VpExtI2sparameter.buffersize = (s_pVpI2s1Cfg->tPcmSlotNum + 1) * VP_I2S_BUFFER_SIZE;

-		}

-#endif

-

-		if (s_vpState.pVpExtI2sCfg != NULL || s_vpState.s_pVpTdmCfg != NULL)

-		{

-			//ret += tdm_clkConfigure(s_vpState.s_pVpTdmCfg);

-			ret += zDrvExtAudio_Read_Prepare(s_vpState.pVpExtI2sCfg , s_vpState.s_pVpTdmCfg);

-			if (ret != DRV_SUCCESS)

-			{

-				// zDrvI2S_Read_Stop(I2S_2);

-				zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_Init zDrvI2S_Read_Prepare err \n");

-				return DRV_ERROR;

-			}

-			ret += zDrvExtAudio_Write_Prepare(s_vpState.pVpExtI2sCfg , s_vpState.s_pVpTdmCfg);

-			if (ret != DRV_SUCCESS)

-			{

-				// zDrvI2S_Read_Stop(I2S_2);

-				zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_Init zDrvI2S_Write_Prepare err \n");

-				return DRV_ERROR;

-			}

-		}

-		else

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_Init s_vpState.pVpExtI2sCfg is NULL \n");

-			return DRV_ERROR;

-		}

-

-	}

-#ifndef _USE_AUDIO_ON_7510

-	ret = zDrvVoice_Initiate();

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_Init zDrvVoice_Initiate  fail ret=%d!\n", ret);

-		return DRV_ERROR;

-	}

-#endif

-	ret = zDrvVolte_Initiate();

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_Init  zDrvVolte_Initiate fail ret=%d!\n", ret);

-		return DRV_ERROR;

-	}

-

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_Init zDrvVolte_Initiate end \n");

-

-	return ZOSS_SUCCESS;

-}

-

-

-/*******************************************************************************

- * Function: zDrvVp_SetExtI2sCfg

- * Description: This function is used to set voice process buffers.

- * Parameters:

- *   Input:None

- *   Output:None

- *

- * Returns: success or error code

- *

- *

- * Others:

- ********************************************************************************/

-SINT32 zDrvVp_SetExtAudioCfg(T_ZDrvI2S_Cfg *pI2sNbCfg, T_ZDrvI2S_Cfg *pI2sWbCfg,

-                             T_ZDrvTdm_Cfg *pTdmNbCfg, T_ZDrvTdm_Cfg *pTdmWbCfg)

-{

-	SINT32  ret = DRV_SUCCESS;

-

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_SetExtCfg!");

-	//if(g_voiceVar.g_isUseTdm != 1)

-	{

-		s_vpState.pVpExtI2sCfg  = pI2sNbCfg;

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_SetExtCfg  s_vpState.pVpExtI2sCfg =0x%p!\r\n", s_vpState.pVpExtI2sCfg);

-		s_vpState.pVpExtI2sWbCfg = pI2sWbCfg;

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_SetExtCfg  s_vpState.pVpExtI2sWbCfg = 0x%p!\r\n", s_vpState.pVpExtI2sWbCfg);

-	}

-	//else if(g_voiceVar.g_isUseTdm == 1)

-	{

-		s_vpState.s_pVpTdmCfg = pTdmNbCfg;

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_SetExtCfg  s_pVpTdmCfg =0x%p!\r\n", s_vpState.s_pVpTdmCfg);

-		s_vpState.s_pVpTdmWbCfg = pTdmWbCfg;

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_SetExtCfg  s_pVpTdmWbCfg = 0x%p!\r\n", s_vpState.s_pVpTdmWbCfg);

-	}

-	return ret;

-}

-SINT32 zDrvVp_SetExtI2sCfg(T_ZDrvI2S_Cfg *pI2sNbCfg, T_ZDrvI2S_Cfg *pI2sWbCfg)

-{

-	SINT32  ret = DRV_SUCCESS;

-

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_SetExtI2sCfg!");

-

-	s_vpState.pVpExtI2sCfg = pI2sNbCfg;

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_SetExtI2sCfg  s_vpState.pVpExtI2sCfg =0x%p! \r\n", s_vpState.pVpExtI2sCfg);

-	s_vpState.pVpExtI2sWbCfg = pI2sWbCfg;

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_SetExtI2sCfg  s_vpState.pVpExtI2sWbCfg  = 0x%p! \r\n", s_vpState.pVpExtI2sWbCfg);

-

-	return ret;

-}

-#if 0

-//obsolete

-SINT32 zDrvVolte_SetI2sCfg(T_ZDrvI2S_Cfg *pI2sCfg)

-{

-	zDrvVp_SetExtI2sCfg(pI2sCfg, NULL);

-	return 0;//xiu gai chu tian jia return 0

-}

-//obsolete

-SINT32 zDrvVp_SetI2sCfg(T_ZDrvI2S_Cfg *pI2sCfg)

-{

-	zDrvVp_SetExtI2sCfg(pI2sCfg, NULL);

-	return 0;//xiu gai chu tian jia return 0

-}

-#endif

-//connect to teaklit

-SINT32 zDrvVp_SetInnerI2sCfg(T_ZDrvI2S_Cfg *pI2sCfg)

-{

-	SINT32  ret = DRV_SUCCESS;

-

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_SetInnerI2sCfg!\n");

-	if (pI2sCfg == NULL)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_SetInnerI2sCfg error: pI2sCfg == NULL\n");

-		return DRV_ERR_INVALID_PARAM;

-	}

-	s_vpState.pVpInnerI2sCfg = pI2sCfg;

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_SetInnerI2sCfg  s_vpState.pVpInnerI2sCfg =%p! \r\n", s_vpState.pVpInnerI2sCfg);

-	if (s_vpState.pVpInnerI2sCfg->bMaster == TRUE)

-	{

-		g_voiceVar.innerI2sIsMaster = TRUE;

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_SetInnerI2sCfg InnerArmI2s is mater\n");

-	}

-	else

-	{

-		g_voiceVar.innerI2sIsMaster = FALSE;

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_SetInnerI2sCfg InnerArmI2s is slave\n");

-

-	}

-

-	if (s_vpState.pVpInnerI2sCfg->tClkMode == I2S_TIME_MODE)

-	{

-		g_voiceVar.innerI2sIsI2sMode = TRUE;

-#if PS_RAT_GSM

-		zDrvAud_DspSetAudSetting(TRUE);

-#endif

-	}

-	else

-	{

-		g_voiceVar.innerI2sIsI2sMode = FALSE;

-#if PS_RAT_GSM

-		zDrvAud_DspSetAudSetting(FALSE);

-#endif

-	}

-

-	return ret;

-

-}

-

-

-

-/*******************************************************************************

- * Function: zDrvVoiceConfig_SetVpBuffer

- * Description: This function is used to set voice process buffers.

- * Parameters:

- *   Input:None

- *   Output:None

- *

- * Returns: success or error code

- *

- *

- * Others:

- ********************************************************************************/

-

-SINT32 zDrvVp_SetInOutBufferAddSize(T_ZDrv_VpInOutBuffer *pInOutBuffer, UINT32  bufSize)

-{

-	//SINT32  ret = DRV_SUCCESS;//xiu gai chu

-

-	if (pInOutBuffer == NULL)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVoiceConfig_SetVpBuffer error: pInOutBuffer== NULL");

-		return DRV_ERR_INVALID_PARAM;

-	}

-

-	if ((pInOutBuffer->p_voiceRxInBuffer == NULL) || (pInOutBuffer->p_voiceRxOutPutBuffer == NULL) || (pInOutBuffer->p_voiceTxInBuffer == NULL) || (pInOutBuffer->p_voiceTxOutPutBuffer == NULL))

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVoiceConfig_SetVpBuffer error: Buffer== NULL");

-		return DRV_ERR_MEM_ALLOC;

-	}

-

-	s_vpState.pVpRxInBuffer = pInOutBuffer->p_voiceRxInBuffer;//size >=0.5M

-	s_vpState.pVpTxInBuffer = pInOutBuffer->p_voiceTxInBuffer ;//size >=0.5M

-	s_vpState.pVpRxOutPutBuffer = pInOutBuffer->p_voiceRxOutPutBuffer;//size =640

-	s_vpState.pVpTxOutPutBuffer = pInOutBuffer->p_voiceTxOutPutBuffer ;//size >=0.5M

-	s_vpState.inOutBufSize = bufSize;

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVoiceConfig_SetVpBuffer success!");

-

-	return DRV_SUCCESS;

-

-}

-

-#if 0

-//obsolete

-SINT32 zDrvVp_SetInOutBuffer(T_ZDrv_VpInOutBuffer *pInOutBuffer)

-{

-	zDrvVp_SetInOutBufferAddSize(pInOutBuffer, 524288);

-	return 0;//xiu gai chu tian jia return 0

-}

-//obsolete

-SINT32 zDrvVolte_SetInOutBuffer(T_ZDrv_VpInOutBuffer *pInOutBuffer)

-{

-	zDrvVp_SetInOutBufferAddSize(pInOutBuffer, 524288);

-//It is used for xinke to set teak voice gain when open  lvwenhua 20150709

-	return 0;//xiu gai chu tian jia return 0

-}

-SINT32 zDrvVp_SetGain(SINT32 vgain, UINT32 channel)

-{

-	SINT32  ret = DRV_SUCCESS;

-

-	if ((vgain < -25) || (vgain > 10))

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_SetGain vgain invalid ,vgain=%d!\n", vgain);

-		return DRV_ERR_INVALID_PARAM;

-	}

-	if ((channel < 0) || (channel > 1))

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_SetGain channel invalid ,channel=%d!\n", channel);

-		return DRV_ERR_INVALID_PARAM;

-

-	}

-

-	if (g_voiceVar.vpI2sStatus == VP_I2S_IDLE)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_SetGain: vpstatus not support to set gain  !\n");

-		return DRV_ERROR;

-	}

-	else

-	{

-		ret = VoiceProc_SetGain(vgain, channel, g_voiceVar.vpPath);

-	}

-	return ret;

-

-

-}

-#endif

-

-SINT32 zDrvVp_SetInitGain(UINT8 value)

-{

-	if (value > 100)

-	{

-		return DRV_ERR_INVALID_PARAM;

-	}

-

-	g_voiceVar.vpInitGain = value;

-	return ZOSS_SUCCESS;

-}

-

-#ifdef _USE_VOICE_RCD

-SINT32 zDrvVp_RcdOnOff(UINT32 on)

-{

-	SINT32  ret = DRV_SUCCESS;

-	T_ZDrvRcd_InfoParam Param = {RECORD_DATA_FORMAT_AMR, 32, VOICE_RECORD_UPLINK_AND_DOWNLINK};

-

-	if (0 == on)

-	{

-		ret = voice_RcdStop();

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "voice_RcdStop ret=%d!\n", ret);

-	}

-	else if (1 == on)

-	{

-		ret = voice_RcdStart(&Param);

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "voice_RcdStart ret=%d!\n", ret);

-	}

-	else

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_RcdOnOff para error!\n");

-		return DRV_ERROR;

-

-	}

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_RcdOnOff on=%d,ret=%d!", on, ret);

-	return ret;

-

-}

-#endif

-#ifdef _USE_DTMF_TONE

-

-SINT32 zDrvVp_DtmfTone(UINT32 Num)

-{

-	SINT32  ret = DRV_SUCCESS;

-	if ((Num > 11) || (Num < 0))

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_DtmfTone invalid Num=%d!\n", Num);

-		return DRV_ERR_INVALID_PARAM;

-	}

-	if (g_voiceVar.vpI2sStatus != VP_I2S_INUSE)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_DtmfTone cannot call!\n");

-		return 	DRV_ERR_NOT_SUPPORTED;

-	}

-

-	// ret = zDrv_DtmfToneStart( Num);

-

-	return ret;

-}

-#endif

-static VOID  vp_LoopProcessThreadEntry(SINT32 argu)

-{

-	SINT32 ret = DRV_SUCCESS;

-

-	UINT8 *read_buf = NULL;

-	UINT8 *write_buf = NULL;

-	UINT32 read_len = 0;

-	UINT32 write_len = 0;

-

-	//UINT32 loop_point = 0;//xiu gai chu

-	UINT32 loopCount = s_vpState.inOutBufSize - 320;

-

-#ifdef TEST_WHITE_NOISE

-	UINT32 tempLoopCount = 0;

-	UINT8 *pVoiceLoopTempBuf = NULL;

-

-#endif

-	UINT32 i = 0;

-

-	zOss_Memset(s_vpState.pVpRxInBuffer, 0, s_vpState.inOutBufSize);

-	zOss_Memset(s_vpState.pVpTxInBuffer, 0, s_vpState.inOutBufSize);

-	zOss_Memset(s_vpState.pVpTxOutPutBuffer, 0, s_vpState.inOutBufSize);

-#ifdef _USE_VP_OUTPUT_RXOUT_DATA

-        zOss_Memset(s_vpState.pVpRxOutPutBuffer, 0, s_vpState.inOutBufSize);

-#else

-		zOss_Memset(s_vpState.pVpRxOutPutBuffer, 0, 640);

-#endif

-

-	/*

-	     s_speechState.pVpTempRxInBuffer = s_vpState.pVpRxInBuffer;

-	     s_speechState.pVpTempTxInBuffer = s_vpState.pVpTxInBuffer;

-	     s_speechState.pVpTempRxOutPutBuffer = s_vpState.pVpRxOutPutBuffer;

-	     s_speechState.pVpTempTxOutPutBuffer = s_vpState.pVpTxOutPutBuffer;

-	*/

-

-	while (1)

-	{

-	    zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO,  "%s: wait vpLoopSemaphore!\n",__FUNCTION__);

-		zOss_GetSemaphore(s_vpState.vpLoopSemaphore, ZOSS_WAIT_FOREVER);

-	    zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO,  "%s: get vpLoopSemaphore, start loop!\n",__FUNCTION__);

-		s_speechState.pVpTempRxInBuffer = s_vpState.pVpRxInBuffer;

-		s_speechState.pVpTempTxInBuffer = s_vpState.pVpTxInBuffer;

-		s_speechState.pVpTempRxOutPutBuffer = s_vpState.pVpRxOutPutBuffer;

-		s_speechState.pVpTempTxOutPutBuffer = s_vpState.pVpTxOutPutBuffer;

-		zOss_Memset(s_speechState.pVpTempRxOutPutBuffer, 0, 640);

-

-		s_speechState.saveLen = 0;

-#ifdef TEST_WHITE_NOISE

-		pVoiceLoopTempBuf = s_voiceTempBuffer;//for test

-		//    pVoiceLoopInSaveBuffer =  s_speechState.pVpTempTxOutPutBuffer;

-		//  pVoiceLoopOutSaveBuffer =  s_speechState.pVpTempRxInBuffer;

-#endif

-#if 0

-        if (FALSE == g_voiceVar.firstRegZCATFlag) {

-            ret = zCatAgt_Audio_Reg(10,VP_INOUT_BAK_BUFFER_SIZE,(UINT32)vpInOutBuffer.p_voiceRxInBuffer);

-            if(ret != DRV_SUCCESS){

-                zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_LoopProcessThreadEntry RXIN register zCatAgt_Audio_Reg err\n");

-            }

-            

-            ret = zCatAgt_Audio_Reg(12,VP_INOUT_BAK_BUFFER_SIZE,(UINT32)vpInOutBuffer.p_voiceTxInBuffer);

-            if(ret != DRV_SUCCESS){

-                zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_LoopProcessThreadEntry TXIN register zCatAgt_Audio_Reg err\n");

-            }

-                

-    		ret = zCatAgt_Audio_Reg(13,VP_INOUT_BAK_BUFFER_SIZE,(UINT32)vpInOutBuffer.p_voiceTxOutPutBuffer);

-            if(ret != DRV_SUCCESS){

-                zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_LoopProcessThreadEntry TXOUT register zCatAgt_Audio_Reg err\n");

-            }

-

-#ifdef _USE_VP_OUTPUT_RXOUT_DATA

-    		ret = zCatAgt_Audio_Reg(11, VP_INOUT_BAK_BUFFER_SIZE, (UINT32)vpInOutBuffer.p_voiceRxOutPutBuffer);

-            if(ret != DRV_SUCCESS){

-                zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_LoopProcessThreadEntry RXOUT register zCatAgt_Audio_Reg err\n");

-            }

-

-#else

-    		ret = zCatAgt_Audio_Reg(11,VP_INOUT_NOBAK_BUFSIZE,(UINT32)vpInOutBuffer.p_voiceRxOutPutBuffer);

-            if(ret != DRV_SUCCESS){

-                zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_LoopProcessThreadEntry RXOUT register zCatAgt_Audio_Reg err\n");

-            }

-#endif

-

-            g_voiceVar.firstRegZCATFlag = TRUE;   

-        }

-#endif        

-		zOss_Sleep(500);

-		ret = zDrvVp_LoopStartDo();

-		if (ret != DRV_SUCCESS)

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_LoopStartDo err! \r\n");

-			continue;

-		}

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_Loop thread start! \r\n");

-		g_voiceVar.vpLoopBkRunning = TRUE;			

-

-		while (g_voiceVar.vpI2sStatus == VP_LOOP_ON)

-		{

-			ret = zDrvExtAudio_Read(&read_buf, &read_len);

-			if ((ret == DRV_SUCCESS) && (read_buf != NULL) && (read_len != 0))

-			{

-				if ((s_speechState.pVpI2sCfg->tClkMode == PCM_TIME_MODE) && (s_speechState.pVpI2sCfg->tPcmSlotNum != PCM_1TIME_SLOT))

-				{

-					for (i = 0; i < VP_I2S_BUFFER_SIZE;)

-					{

-						* (s_speechState.pVpTempTxInBuffer + i) = * (read_buf + i * (s_speechState.pVpI2sCfg->tPcmSlotNum + 1));

-						* (s_speechState.pVpTempTxInBuffer + i + 1) = * (read_buf + i * (s_speechState.pVpI2sCfg->tPcmSlotNum + 1) + 1);

-						i += 2;

-					}

-				}

-				else

-				{

-					zOss_Memcpy(s_speechState.pVpTempTxInBuffer, read_buf, VP_I2S_BUFFER_SIZE);

-				}

-

-

-			}

-			else

-			{

-				zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S_Read:I2S1:ret=%d,read_buf = %p,read_len = %d.\n", ret, read_buf, read_len);

-				break;

-			}

-			ret = zDrvExtAudio_FreeBuf(read_buf);

-

-            //dtmf检测-回环上行写入

-            if(g_voiceVar.useDtmfLoop == 1)

-            {

-                ret = dtmfTx_RingWrite(s_speechState.pVpTempTxInBuffer);

-                //zOss_Printf(SUBMDL_HAL, PRINT_LEVEL_NORMAL, "vp_LoopProcessThreadEntry dtmfTx_RingWrite end, ret=%d\n", ret);

-                

-                zOss_Memcpy((VOID *)(s_speechState.pVpTempTxOutPutBuffer), (VOID *) s_speechState.pVpTempTxInBuffer, VP_I2S_BUFFER_SIZE);

-				s_speechState.saveLen += VP_I2S_BUFFER_SIZE;

-				//			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_loopProcessThreadEntry  s_speechState.saveLen = %d\n", s_speechState.saveLen);

-				if (s_speechState.saveLen >= loopCount)

-				{

-					s_speechState.saveLen = 0;

-				}

-				s_speechState.pVpTempTxInBuffer = s_vpState.pVpTxInBuffer + s_speechState.saveLen;

-				s_speechState.pVpTempTxOutPutBuffer = s_vpState.pVpTxOutPutBuffer + s_speechState.saveLen;

-

-                

-            }

-            else 

-			/*voice process*/

-			{

-

-				if (g_voiceVar.vProcIsNormal == TRUE)

-				{

-

-					VoiceProc_TxProcess(& s_speechState.pVpTempTxInBuffer, NULL, & s_speechState.pVpTempTxOutPutBuffer, s_speechState.frameCount);

-

-					// zOss_Memcpy(pBuf, s_speechState.pVpTempTxOutPutBuffer,VP_FRAME_BUFFER_SIZE);

-					//zOss_Memcpy(pBuf, s_speechState.pVpTempTxOutPutBuffer,s_speechState.totalFrameBufSize);

-				}

-				else

-				{

-					//zOss_Memcpy(pBuf, s_speechState.pVpTempTxInBuffer,VP_FRAME_BUFFER_SIZE);

-					//zOss_Memcpy(pBuf, s_speechState.pVpTempTxInBuffer,s_speechState.totalFrameBufSize);

-					zOss_Memcpy((VOID *)(s_speechState.pVpTempTxOutPutBuffer), (VOID *) s_speechState.pVpTempTxInBuffer, VP_I2S_BUFFER_SIZE);

-

-

-				}

-

-				//no nxp lib lwenhua 20150317

-

-				//   zOss_Memcpy((VOID *)( s_speechState.pVpTempRxOutPutBuffer), (VOID *) s_speechState.pVpTempTxInBuffer, 320);

-			}

-            if(g_voiceVar.useDtmfLoop == 1)

-            {

-                continue;

-            }

-

-			zOss_Memcpy((VOID *)(s_speechState.pVpTempRxInBuffer), (VOID *) s_speechState.pVpTempTxOutPutBuffer, VP_I2S_BUFFER_SIZE);

-

-#ifdef TEST_WHITE_NOISE

-			zOss_Memcpy(s_speechState.pVpTempRxInBuffer, pVoiceLoopTempBuf, VP_I2S_BUFFER_SIZE);

-			pVoiceLoopTempBuf += VP_I2S_BUFFER_SIZE;

-			tempLoopCount += VP_I2S_BUFFER_SIZE;

-			if (tempLoopCount >= 0x4E200)

-			{

-				//307200

-				pVoiceLoopTempBuf = s_voiceTempBuffer;

-				tempLoopCount = 0;

-			}

-

-#endif

-

-			ret = zDrvExtAudio_GetBuf(&write_buf, &write_len);

-			if ((ret == DRV_SUCCESS) && (write_buf != NULL) && (write_len != 0))

-			{

-#if 0

-				if (s_speechState.saveLen + 320 < 8000)

-				{

-					loop_point =  s_speechState.saveLen + 320;

-				}

-				else

-				{

-					loop_point = 0;

-				}

-

-				pvoiceInterBuffer =  s_speechState.pVpTempRxOutPutBuffer + loop_point;

-#endif

-				if (g_voiceVar.vProcIsNormal == TRUE)

-				{

-

-					//VoiceProc_RxProcess(&pvoiceInterBuffer, &write_buf, s_speechState.frameCount);

-					VoiceProc_RxProcess(& s_speechState.pVpTempRxInBuffer, & s_speechState.pVpTempRxOutPutBuffer, s_speechState.frameCount);

-

-					//zOss_Memcpy(write_buf, s_speechState.pVpTempRxOutPutBuffer,write_len);

-					//pvpRxMidBuffer= s_speechState.pVpTempRxOutPutBuffer;

-				}

-				else

-				{

-					//zOss_Memcpy(write_buf, s_speechState.pVpTempRxInBuffer,write_len);

-					//pVpRxMidBuffer= s_speechState.pVpTempRxInBuffer;

-					zOss_Memcpy((VOID *)(s_speechState.pVpTempRxOutPutBuffer), (VOID *) s_speechState.pVpTempRxInBuffer, 320);

-

-				}

-

-

-				//no nxp lib lwenhua 20150317

-

-				// zOss_Memcpy((VOID *)(write_buf), (VOID *)pvoiceInterBuffer, 320);

-			}

-			else

-			{

-				zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S_GetBuf:I2S1:ret=%d,write_buf = %p,write_len = %d.\n", ret, write_buf, write_len);

-				break;

-			}

-

-

-

-			if ((s_speechState.pVpI2sCfg->tClkMode == PCM_TIME_MODE) && (s_speechState.pVpI2sCfg->tPcmSlotNum != PCM_1TIME_SLOT))

-			{

-				for (i = 0; i < VP_I2S_BUFFER_SIZE;)

-				{

-					* (write_buf + i * (s_speechState.pVpI2sCfg->tPcmSlotNum + 1)) = * (s_speechState.pVpTempRxInBuffer + i);

-					* (write_buf + i * (s_speechState.pVpI2sCfg->tPcmSlotNum + 1) + 1) = * (s_speechState.pVpTempRxInBuffer + i + 1);

-					i += 2;

-				}

-			}

-			else

-			{

-				zOss_Memcpy(write_buf, s_speechState.pVpTempRxOutPutBuffer, VP_I2S_BUFFER_SIZE);

-			}

-

-			ret = zDrvExtAudio_Write(write_buf, write_len);

-

-			/*

-			            if( s_speechState.saveLen == 32000)

-			            {

-			                zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "loop 3200\n");

-			            }

-			*/

-

-			{

-				s_speechState.saveLen += VP_I2S_BUFFER_SIZE;

-				//			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_loopProcessThreadEntry  s_speechState.saveLen = %d\n", s_speechState.saveLen);

-				if (s_speechState.saveLen >= loopCount)

-				{

-					s_speechState.saveLen = 0;

-				}

-				s_speechState.pVpTempTxInBuffer = s_vpState.pVpTxInBuffer + s_speechState.saveLen;

-				s_speechState.pVpTempTxOutPutBuffer = s_vpState.pVpTxOutPutBuffer + s_speechState.saveLen;

-				s_speechState.pVpTempRxInBuffer = s_vpState.pVpRxInBuffer +  s_speechState.saveLen;

-				s_speechState.pVpTempRxOutPutBuffer = s_vpState.pVpRxOutPutBuffer;

-			}

-		}

-

-		ret = zDrvExtAudio_Read_Stop();

-		if (ret != DRV_SUCCESS)

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S_Read_Stop I2S1 Stop wrong  ret=%d\n", ret);

-		}

-		ret = zDrvExtAudio_Write_Stop();

-		if (ret != DRV_SUCCESS)

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S_Write_Stop I2S1 Stop wrong  ret=%d\n", ret);

-		}

-

-		//no nxp lib lwenhua 20150317

-//        ret += Vp_NxpClose();

-		if (g_voiceVar.isUseSlicCodec != 1)

-		{

-			ret = zDrvExtAudio_Close();

-		}

-

-		if (ret != DRV_SUCCESS)

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S_Close I2S1 Stop wrong  ret=%d", ret);

-		}

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_LoopProcessThreadEntry work end.\n");

-		g_voiceVar.vpLoopBkRunning = FALSE;	

-	}

-}

-

-SINT32 vp_StateInitUseI2s(T_ZDrvVp_Cfg cfgParam)

-{

-

-	if (cfgParam.clock_rate == 16000)

-	{

-

-		s_speechState.pVpI2sCfg = s_vpState.pVpExtI2sWbCfg;

-		g_voiceVar.volteIsWb = 1;

-		s_speechState.frameCount = 160;

-

-	}

-	else if (cfgParam.clock_rate == 8000)

-	{

-

-		s_speechState.pVpI2sCfg = s_vpState.pVpExtI2sCfg;

-		g_voiceVar.volteIsWb = 0;

-		s_speechState.frameCount = 160;

-

-	}

-	else

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_StateInitUseI2s the fs not support! \r\n");

-		return DRV_ERR_INVALID_PARAM;

-	}

-	/*

-	        if((s_speechState.pVpI2sCfg->tClkMode == I2S_TIME_MODE)&&(s_speechState.pVpI2sCfg->tTrackFmt == DOUBLE_TRACK))

-	        {

-	            s_speechState.i2sReadParam.channel = AUDIO_DUAL_CHANNEL;

-	            s_speechState.i2sWriteParam.channel = AUDIO_DUAL_CHANNEL;

-

-	        }

-	*/

-	if (s_speechState.pVpI2sCfg == NULL)

-	{

-		return DRV_ERROR;

-	}

-

-	if (s_speechState.pVpI2sCfg->tClkMode == I2S_TIME_MODE)

-	{

-		if (s_speechState.pVpI2sCfg->tTrackFmt == DOUBLE_TRACK)

-		{

-			s_speechState.totalFrameBufSize = (s_speechState.frameCount * 2) * 2;

-			s_speechState.i2sReadParam.channel = AUDIO_DUAL_CHANNEL;

-			s_speechState.i2sWriteParam.channel = AUDIO_DUAL_CHANNEL;

-		}

-		else if ((s_speechState.pVpI2sCfg->tTrackFmt == LEFT_TRACK) || (s_speechState.pVpI2sCfg->tTrackFmt == RIGHT_TRACK))

-		{

-			s_speechState.totalFrameBufSize = (s_speechState.frameCount * 2);

-			s_speechState.i2sReadParam.channel = AUDIO_MONO_CHANNEL;

-			s_speechState.i2sWriteParam.channel = AUDIO_MONO_CHANNEL;

-		}

-		else

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_StateInitUseI2s tTrackFmt not support! \r\n");

-

-			return DRV_ERR_INVALID_PARAM;

-

-		}

-		s_speechState.i2sWriteParam.buffersize = s_speechState.totalFrameBufSize;

-		s_speechState.i2sReadParam.buffersize = s_speechState.totalFrameBufSize;

-

-	}

-	else if ((s_speechState.pVpI2sCfg->tClkMode == PCM_TIME_MODE) && (s_speechState.pVpI2sCfg->tPcmSlotNum == PCM_1TIME_SLOT))

-	{

-		s_speechState.totalFrameBufSize = (s_speechState.frameCount * 2);

-		s_speechState.i2sWriteParam.buffersize = s_speechState.totalFrameBufSize;

-		s_speechState.i2sReadParam.buffersize = s_speechState.totalFrameBufSize;

-

-	}

-	else if ((s_speechState.pVpI2sCfg->tClkMode == PCM_TIME_MODE) && (s_speechState.pVpI2sCfg->tPcmSlotNum != PCM_1TIME_SLOT))

-	{

-		s_speechState.pcmSlotNum = s_speechState.pVpI2sCfg->tPcmSlotNum + 1;

-

-		if (s_speechState.pVpI2sCfg->tPcmSlotNum == PCM_16TIME_SLOT)

-		{

-			s_speechState.pcmWbSecDataPosition = 16;

-		}

-		else if (s_speechState.pVpI2sCfg->tPcmSlotNum == PCM_4TIME_SLOT)

-		{

-			s_speechState.pcmWbSecDataPosition = 4;

-		}

-		else

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_StateInitUseI2s s_speechState.pVpI2sCfg->tPcmSlotNum=%d,not support !\n", s_speechState.pVpI2sCfg->tPcmSlotNum);

-			return DRV_ERROR;

-

-		}

-

-		s_speechState.totalFrameBufSize = s_speechState.frameCount * 2;

-		s_speechState.i2sWriteParam.buffersize = s_speechState.pcmSlotNum * s_speechState.totalFrameBufSize;

-		s_speechState.i2sReadParam.buffersize = s_speechState.pcmSlotNum * s_speechState.totalFrameBufSize;

-	}

-	else

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_StateInitUseI2s s_speechState.pVpI2sCfg->tClkMode=%d,not support !\n", s_speechState.pVpI2sCfg->tClkMode);

-		return DRV_ERROR;

-

-	}

-

-	s_speechState.i2sWriteParam.p_cb = NULL;

-	s_speechState.i2sReadParam.p_cb = NULL;

-

-	

-	return DRV_SUCCESS;

-}

-

-VOID vp_StateInitUseTdm(VOID)

-{

-	s_vpState.pVpTdmCfg = s_vpState.s_pVpTdmCfg;

-	s_speechState.pVpI2sCfg = s_vpState.pVpExtI2sCfg;

-

-	if (s_vpState.pVpTdmCfg->tTsEnable == TDM_2TS_ENABLE)

-	{

-		s_vpTdmReadParam.channel = AUDIO_DUAL_CHANNEL;

-		s_VpTdmWriteParam.channel = AUDIO_DUAL_CHANNEL;

-	}

-

-	g_voiceVar.volteIsWb = 0;

-	s_speechState.frameCount = 160;

-	s_speechState.totalFrameBufSize = (s_speechState.frameCount * 2);

-	s_VpTdmWriteParam.buffersize = s_speechState.totalFrameBufSize;

-	s_vpTdmReadParam.buffersize = s_speechState.totalFrameBufSize;

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_StateInitUseTdm buffersize=%d\n", s_VpTdmWriteParam.buffersize);

-

-}

-

-

-

-SINT32 zDrvVp_LoopStartDo(VOID)

-{

-	SINT32 ret = DRV_SUCCESS;

-	UINT8 *write_buf = NULL;

-	UINT32 write_len = 0;

-	//UINT8 *read_buf = NULL;//xiu gai chu

-	//UINT32 read_len = 0;//ciu gai chu

-	T_ZDrvVp_Cfg loopCfgParam;

-	T_ZDrv_VpFs fs = VP_FS_8000;

-	loopCfgParam.clock_rate = 8000; //16000; //

-	loopCfgParam.bits_per_sample = 16;

-	loopCfgParam.channel_count = 1;

-	loopCfgParam.samples_per_frame = 160;

-

-	if (((s_vpState.pVpExtI2sCfg  == NULL) || (s_vpState.pVpExtI2sWbCfg == NULL)) && ((s_vpState.s_pVpTdmCfg == NULL)))

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_LoopStartDo error s_vpState.pVpExtI2sCfg not init! \r\n");

-		return DRV_ERROR;

-

-	}

-	else

-	{

-		if (g_voiceVar.g_isUseTdm != 1)

-		{

-            ret = vp_StateInitUseI2s(loopCfgParam);

-			if (ret != DRV_SUCCESS)

-			{

-				zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_StateInitUseI2s error  ret=%d!\n", ret);

-				return ret;

-			}

-		

-#if 0

-			if (loopCfgParam.clock_rate == 16000)

-			{

-

-				s_speechState.pVpI2sCfg = s_vpState.pVpExtI2sWbCfg;

-				g_voiceVar.volteIsWb = 1;

-				s_speechState.frameCount = 320;

-

-			}

-			else if (loopCfgParam.clock_rate == 8000)

-			{

-

-				s_speechState.pVpI2sCfg = s_vpState.pVpExtI2sCfg;

-				g_voiceVar.volteIsWb = 0;

-				s_speechState.frameCount = 160;

-

-			}

-			else

-			{

-				zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_LoopStartDo the fs not support! \r\n");

-				return DRV_ERR_INVALID_PARAM;

-			}

-			/*

-			        if((s_speechState.pVpI2sCfg->tClkMode == I2S_TIME_MODE)&&(s_speechState.pVpI2sCfg->tTrackFmt == DOUBLE_TRACK))

-			        {

-			            s_speechState.i2sReadParam.channel = AUDIO_DUAL_CHANNEL;

-			            s_speechState.i2sWriteParam.channel = AUDIO_DUAL_CHANNEL;

-

-			        }

-			*/

-			if (s_speechState.pVpI2sCfg == NULL)

-			{

-				return DRV_ERROR;

-			}

-

-			if (s_speechState.pVpI2sCfg->tClkMode == I2S_TIME_MODE)

-			{

-				if (s_speechState.pVpI2sCfg->tTrackFmt == DOUBLE_TRACK)

-				{

-					s_speechState.totalFrameBufSize = (s_speechState.frameCount * 2) * 2;

-					s_speechState.i2sReadParam.channel = AUDIO_DUAL_CHANNEL;

-					s_speechState.i2sWriteParam.channel = AUDIO_DUAL_CHANNEL;

-				}

-				else if ((s_speechState.pVpI2sCfg->tTrackFmt == LEFT_TRACK) || (s_speechState.pVpI2sCfg->tTrackFmt == RIGHT_TRACK))

-				{

-					s_speechState.totalFrameBufSize = (s_speechState.frameCount * 2);

-					s_speechState.i2sReadParam.channel = AUDIO_MONO_CHANNEL;

-					s_speechState.i2sWriteParam.channel = AUDIO_MONO_CHANNEL;

-				}

-				else

-				{

-					zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_LoopStartDo tTrackFmt not support! \r\n");

-

-					return DRV_ERR_INVALID_PARAM;

-

-				}

-				s_speechState.i2sWriteParam.buffersize = s_speechState.totalFrameBufSize;

-				s_speechState.i2sReadParam.buffersize = s_speechState.totalFrameBufSize;

-

-			}

-			else if ((s_speechState.pVpI2sCfg->tClkMode == PCM_TIME_MODE) && (s_speechState.pVpI2sCfg->tPcmSlotNum == PCM_1TIME_SLOT))

-			{

-				s_speechState.totalFrameBufSize = (s_speechState.frameCount * 2);

-				s_speechState.i2sWriteParam.buffersize = s_speechState.totalFrameBufSize;

-				s_speechState.i2sReadParam.buffersize = s_speechState.totalFrameBufSize;

-

-			}

-			else if ((s_speechState.pVpI2sCfg->tClkMode == PCM_TIME_MODE) && (s_speechState.pVpI2sCfg->tPcmSlotNum != PCM_1TIME_SLOT))

-			{

-				s_speechState.pcmSlotNum = s_speechState.pVpI2sCfg->tPcmSlotNum + 1;

-

-				if (s_speechState.pVpI2sCfg->tPcmSlotNum == PCM_16TIME_SLOT)

-				{

-					s_speechState.pcmWbSecDataPosition = 16;

-				}

-				else if (s_speechState.pVpI2sCfg->tPcmSlotNum == PCM_4TIME_SLOT)

-				{

-					s_speechState.pcmWbSecDataPosition = 4;

-				}

-				else

-				{

-					zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_CfgParam s_speechState.pVpI2sCfg->tPcmSlotNum=%d,not support !\n", s_speechState.pVpI2sCfg->tPcmSlotNum);

-					return DRV_ERROR;

-

-				}

-

-				s_speechState.totalFrameBufSize = s_speechState.frameCount * 2;

-				s_speechState.i2sWriteParam.buffersize = s_speechState.pcmSlotNum * s_speechState.totalFrameBufSize;

-				s_speechState.i2sReadParam.buffersize = s_speechState.pcmSlotNum * s_speechState.totalFrameBufSize;

-			}

-			else

-			{

-				zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_LoopStartDo s_speechState.pVpI2sCfg->tClkMode=%d,not support !\n", s_speechState.pVpI2sCfg->tClkMode);

-				return DRV_ERROR;

-

-			}

-

-			s_speechState.i2sWriteParam.p_cb = NULL;

-			s_speechState.i2sReadParam.p_cb = NULL;

-#endif		

-		}

-		else if (g_voiceVar.g_isUseTdm == 1)

-		{

-			vp_StateInitUseTdm();	

-#if 0

-			s_vpState.pVpTdmCfg = s_vpState.s_pVpTdmCfg;

-			s_speechState.pVpI2sCfg = s_vpState.pVpExtI2sCfg;

-

-			if (s_vpState.pVpTdmCfg->tTsEnable == TDM_2TS_ENABLE)

-			{

-				s_vpTdmReadParam.channel = AUDIO_DUAL_CHANNEL;

-				s_VpTdmWriteParam.channel = AUDIO_DUAL_CHANNEL;

-			}

-

-			g_voiceVar.volteIsWb = 0;

-			s_speechState.frameCount = 160;

-			s_speechState.totalFrameBufSize = (s_speechState.frameCount * 2);

-			s_VpTdmWriteParam.buffersize = s_speechState.totalFrameBufSize;

-			s_vpTdmReadParam.buffersize = s_speechState.totalFrameBufSize;

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_LoopStartDo Tdm zDrvTdm_Write_Start buffersize=%d\n", s_VpTdmWriteParam.buffersize);

-#endif

-		}

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_LoopStartDo I2S zDrvI2S_Write_Start buffersize=%d\n", s_speechState.i2sWriteParam.buffersize);

-		s_speechState.inOutBufUseSize = s_vpState.inOutBufSize - s_speechState.totalFrameBufSize;

-

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_LoopStartDo  g_voiceVar.vpI2sStatus=%d,s_speechState.inOutBufUseSize=%d\n", g_voiceVar.vpI2sStatus, s_speechState.inOutBufUseSize);

-

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_LoopStartDo set totalFrameBufSize=%d,s_speechState.frameCount=%d\n", s_speechState.totalFrameBufSize, s_speechState.frameCount);

-

-

-	}

-

-	if (g_voiceVar.isUseSlicCodec != 1)

-	{

-		ret = zDrvExtAudio_Open(TRANS_DMA_MODE);

-		if (ret != DRV_SUCCESS)

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "ret=%d zDrvI2S_Open(I2S_1,TRANS_DMA_MODE)\n", ret);

-			return DRV_ERROR;

-		}

-	}

-

-	ret = halVpCfg_Open(VP_VOICE_SOURCE);

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_LoopStartDo halVpCfg_Open err ret=%d !\n", ret);

-		return DRV_ERROR;

-	}

-	ret = halVpCfg_SetFs(fs);

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_LoopStartDo halVpCfg_SetFs err ret=%d !\n", ret);

-		return DRV_ERROR;

-	}

-

-	if ((g_voiceVar.vpLoopPath == VP_PATH_HANDSET) || (g_voiceVar.vpLoopPath == VP_PATH_HEADSET) || (g_voiceVar.vpLoopPath == VP_PATH_SPEAKER))

-	{

-		ret = halVpCfg_SetInputPath(g_voiceVar.vpLoopPath, TRUE);

-		if (ret != DRV_SUCCESS)

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_LoopStartDo voice_SetPahtIn halVpCfg_SetInputPath err ret=%d !\n", ret);

-			return DRV_ERROR;

-

-		}

-		ret = halVpCfg_SetOutputPath(g_voiceVar.vpLoopPath, TRUE);

-		if (ret != DRV_SUCCESS)

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_LoopStartDo voice_SetPahtOut halVpCfg_SetOutputPath err ret=%d !\n", ret);

-			return DRV_ERROR;

-

-		}

-

-	}

-	else

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_LoopStartDo path not support  g_voiceVar.vpLoopPath=%d !\n", g_voiceVar.vpLoopPath);

-		return DRV_ERROR;

-

-	}

-

-	ret = halVpCfg_Enable();

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_LoopStartDo halVpCfg_Enable err ret=%x !\n", ret);

-		return DRV_ERROR;

-	}

-

-#ifndef TEST_WHITE_NOISE

-

-	if (loopCfgParam.clock_rate == 16000)

-	{

-		ret = VoiceProc_Open(16000);

-	}

-	else if (loopCfgParam.clock_rate == 8000)

-	{

-		ret = VoiceProc_Open(8000);

-

-	}

-	else

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_LoopStartDo VoiceProc_Open fs not support\n");

-

-

-	}

-

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_LoopStartDo VoiceProc_Open g_voiceVar.voiceMode=%d, ret=%d \n", g_voiceVar.voiceMode, ret);

-	//g_voiceVar.vpPath = VP_PATH_HANDSET;

-	// g_voiceVar.vpVol = VP_VOL_3;

-	if (ret == DRV_SUCCESS)

-	{

-		//g_voiceVar.vpPath = VP_PATH_HEADSET;

-		g_voiceVar.vpVol = VP_VOL_5;

-		g_voiceVar.voiceInGsmTdMode = 1;

-		g_voiceVar.voiceMode = VOICE_GSM_MODE;

-		ret = VoiceProc_GetParam(g_voiceVar.voiceMode, g_voiceVar.vpLoopPath);

-		if (ret == DRV_SUCCESS)

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, " zDrvVp_LoopStartDo VoiceProc_GetParam OK!\r\n");

-			g_voiceVar.vProcIsNormal = TRUE;

-			ret = VoiceProc_SetParam(g_voiceVar.voiceMode, g_voiceVar.vpLoopPath, g_voiceVar.vpVol, FALSE);

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_LoopStartDo VoiceProc_SetParam ret=%d \n", ret);

-			if (ret != DRV_SUCCESS)

-			{

-				g_voiceVar.vProcIsNormal = FALSE;

-				zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_LoopStartDo VoiceProc_SetParam ret=%d ,voice process don't use! \n", ret);

-				VoiceProc_Close();

-			}

-		}

-		else

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_LoopStartDo VoiceProc_GetParam error ret=%d ! \r\n", ret);

-			g_voiceVar.vProcIsNormal = FALSE;

-			VoiceProc_Close();

-

-		}

-	}

-	else

-	{

-		g_voiceVar.vProcIsNormal = FALSE;

-	}

-#else

-

-	g_voiceVar.vProcIsNormal = FALSE;

-

-#endif

-

-	//no nxp lib lwenhua 20150317

-#if 0

-	//	ret = VoiceProc_Open();

-	//	ret += VoiceProc_SetParam(s_vpPath, VP_VOL_5,TRUE);

-

-	if (ret != DRV_SUCCESS)

-	{

-		ret += zDrvExtAudio_Close();

-		return DRV_ERROR;

-	}

-#endif

-	if (g_voiceVar.isUseSlicCodec == 1) 

-	{

-		ret = zDrvExtAudio_Reset();

-		if (ret != DRV_SUCCESS)

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_LoopStartDo zDrvExtAudio_Reset err ret=%d ", ret);

-			return DRV_ERROR;

-		}

-	}

-	ret = zDrvExtAudio_Read_Start(&s_speechState.i2sReadParam,s_speechState.pVpI2sCfg,&s_vpTdmReadParam,s_vpState.pVpTdmCfg);

-    ret += zDrvExtAudio_Write_Start(&s_speechState.i2sWriteParam,s_speechState.pVpI2sCfg,&s_VpTdmWriteParam,s_vpState.pVpTdmCfg);

-#if 0

-	if (g_voiceVar.isUseSlicCodec != 1)

-	{

-		ret = zDrvExtAudio_Read_Start(&s_speechState.i2sReadParam, s_speechState.pVpI2sCfg, &s_vpTdmReadParam, s_vpState.pVpTdmCfg);

-		ret += zDrvExtAudio_Write_Start(&s_speechState.i2sWriteParam, s_speechState.pVpI2sCfg, &s_VpTdmWriteParam, s_vpState.pVpTdmCfg);

-	}

-	else if (g_voiceVar.g_isUseTdm == 1)

-	{

-		ret = zDrvTDM_Read_Start_Do(&s_vpTdmReadParam);

-		ret += zDrvTDM_Write_Start_Do(&s_VpTdmWriteParam);

-	}

-	else if (g_voiceVar.g_isUseTdm != 1)

-	{

-		ret = zDrvI2S_Read_Start_Do(I2S_1, &s_speechState.i2sReadParam);

-		ret += zDrvI2S_Write_Start_Do(I2S_1, &s_speechState.i2sWriteParam);

-	}

-#endif

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "ret=%d zDrvI2S_Read_Start zDrvI2S_Write_Start(I2S_1)", ret);

-		return DRV_ERROR;

-	}

-	ret = zDrvExtAudio_GetBuf(&write_buf, &write_len);

-	zOss_Memset(write_buf, 0, write_len);

-	ret += zDrvExtAudio_Write(write_buf, write_len);

-	ret += zDrvExtAudio_GetBuf(&write_buf, &write_len);

-	zOss_Memset(write_buf, 0, write_len);

-	ret += zDrvExtAudio_Write(write_buf, write_len);

-	ret += zDrvExtAudio_GetBuf(&write_buf, &write_len);

-	zOss_Memset(write_buf, 0, write_len);

-	ret += zDrvExtAudio_Write(write_buf, write_len);

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "ret=%d zDrvVp_LoopStartDo   zDrvI2S_GetBuf  zDrvI2S_Write(I2S_1)", ret);

-		return DRV_ERROR;

-	}

-

-	return ret;

-}

-

-SINT32 zDrvVp_LoopStart(T_ZDrv_VpPath path)

-{

-	SINT32 ret = DRV_SUCCESS;

-

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO,  "zDrvVp_LoopStart begin g_voiceVar.vpI2sStatus =%d\n", g_voiceVar.vpI2sStatus);

-	//vp_SetTopI2sConfig();

-

-	if (g_voiceVar.vpI2sStatus != VP_I2S_IDLE)

-	{

-		return DRV_ERROR;

-	}

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_LoopStart  start\n");

-#if 0

-	if (s_speechState.pVpI2sCfg == NULL)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_LoopStart error: i2s parameter is not setted");

-		return DRV_ERROR;

-	}

-#endif

-

-	g_voiceVar.vpLoopPath = path;

-

-	g_voiceVar.vpI2sStatus = VP_LOOP_ON;

-	if (s_vpState.vpLoopSemaphore != NULL)

-	{

-		zOss_PutSemaphore(s_vpState.vpLoopSemaphore);

-	}

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO,  "zDrvVp_LoopStart g_voiceVar.vpI2sStatus =%d\n", g_voiceVar.vpI2sStatus);

-

-	return ret;

-}

-

-SINT32 zDrvVp_LoopStop(void)//xiu gai chu tian jia void

-{

-	SINT32  ret = DRV_SUCCESS;

-

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_LoopStop begin g_voiceVar.vpI2sStatus=%d", g_voiceVar.vpI2sStatus);

-

-	if (g_voiceVar.vpI2sStatus != VP_LOOP_ON)

-	{

-		return DRV_ERROR;

-	}

-

-	g_voiceVar.vpI2sStatus = VP_I2S_IDLE;

-

-	//zDrvI2s_RxRlsSemaBeforeStop(I2S_1);

-	//zDrvI2s_TxRlsSemaBeforeStop(I2S_1);

-	zDrvExtAudio_RlsAllSemaBeforeStop();

-

-	ret = halVpCfg_Disable();

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_LoopStop halVpCfg_Enable err ret=%x !\n", ret);

-	}

-

-	ret = halVpCfg_Close();

-	if (ret != DRV_SUCCESS)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_LoopStop hal_VpCfg_Close err ret=%d", ret);

-		return DRV_ERROR;

-	}

-

-	if (g_voiceVar.vProcIsNormal == TRUE)

-	{

-		ret = VoiceProc_Close();

-

-		if (ret != DRV_SUCCESS)

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_Close VoiceProc_Close wrong  ret=%d \n", ret);

-		}

-		g_voiceVar.vProcIsNormal = FALSE;

-	}

-

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_LoopStop success! \n");

-	return DRV_SUCCESS;

-}

-

-

-

-#ifdef _USE_HAL_HDTTST

-SINT32 voiceGetPcmData(UINT32 *Uplinkdata, UINT32 *Downlinkdata)

-{

-	(UINT8 *) *Uplinkdata =   s_speechState.pVpTempTxInBuffer;

-	(UINT8 *) *Downlinkdata =  s_speechState.pVpTempRxInBuffer;

-	return 0 ;

-}

-#endif

-

-#ifdef USE_AUDIO_RING

-static ZOSS_THREAD_ID s_ringPlayThread = NULL;

-static ZOSS_SEMAPHORE_ID s_ringPlaySemaphore = NULL;

-static ZOSS_SEMAPHORE_ID s_ringPlayEndSemaphore = NULL;

-static BOOL s_firstStart = TRUE;

-

-static T_ZDrvCodec_Handle s_codecRingHandle = NULL;

-static T_ZDrvI2S_Cfg s_ringI2s1Cfg =  {TRUE, I2S_DATA_16BIT, I2S_TS_16CYCLE, 8000,     \

-                                       I2S_TIME_MODE, TRANS_POSITIVE_NEGATIVE, \

-                                       LEFT_TRACK, I2S_NORMAL_MODE, FIRST_DATA_ALIGN_TO_FIRST_CYCLE, \

-                                       PCM_NORMAL_MODE, PCM_MSB_FIRST, PCM_FSYNC_LENGTH_1CLK, PCM_1TIME_SLOT, TIMING_I2S_MONO_LEFT, PCM_SHORT_FSYNC, \

-                                       TDM_NO_EXTRA_CYCLE, DATA_ALIGN_STD_I2S, REF_CLK26M

-                                      };//TEST FOR i2s

-static  BOOL s_ringStop = TRUE;

-#endif

-

-#ifdef USE_AUDIO_RING

-static VOID ringPlayEntry(SINT32 para)

-{

-	UINT32 ret = DRV_SUCCESS;

-	T_ZDrv_VpFs fs = VP_FS_8000;

-	T_ZDrvI2S_Cfg ptCfg = {0};

-	UINT8 *write_buf = NULL;

-	UINT32 write_len = 0;

-

-

-	UINT32 arraySize = 0;

-

-	UINT32 count = 0;

-	UINT8 *bufptr = NULL;

-	bufptr = callRingPcm;

-	arraySize = sizeof(callRingPcm) / sizeof(UINT8);

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, " ringPlayEntry arraySize=%x\n", arraySize);

-	while (1)

-	{

-

-		zOss_GetSemaphore(s_ringPlaySemaphore, ZOSS_WAIT_FOREVER);

-

-

-		ret = halVpCfg_Open(VP_VOICE_SOURCE);

-		if (ret != DRV_SUCCESS)

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_RingStop halVpCfg_Open err ret=%d !\n", ret);

-			return DRV_ERROR;

-		}

-		ret = halVpCfg_SetFs(fs);

-		if (ret != DRV_SUCCESS)

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_RingStop halVpCfg_SetFs err ret=%d !\n", ret);

-			return DRV_ERROR;

-

-		}

-

-		if ((g_voiceVar.vpPath == VP_PATH_HANDSET) || (g_voiceVar.vpPath == VP_PATH_HEADSET) || (g_voiceVar.vpPath == VP_PATH_SPEAKER))

-		{

-			ret = halVpCfg_SetInputPath(g_voiceVar.vpPath, TRUE);

-			if (ret != DRV_SUCCESS)

-			{

-				zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_RingStop voice_SetPahtIn halVpCfg_SetInputPath err ret=%d !\n", ret);

-				return DRV_ERROR;

-

-			}

-			ret = halVpCfg_SetOutputPath(g_voiceVar.vpPath, TRUE);

-			if (ret != DRV_SUCCESS)

-			{

-				zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_RingStop voice_SetPahtOut halVpCfg_SetOutputPath err ret=%d !\n", ret);

-				return DRV_ERROR;

-

-			}

-		}

-		else

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_RingStop voice_SetPahtOut the path not support !\n");

-			return DRV_ERROR;

-

-		}

-		ret = halVpCfg_Enable();

-		if (ret != DRV_SUCCESS)

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_RingStop halVpCfg_Enable err ret=%x !\n", ret);

-			return DRV_ERROR;

-		}

-

-

-

-

-		ptCfg = s_ringI2s1Cfg;

-

-		//ret = zDrvI2S_Init();

-		if (g_voiceVar.isUseSlicCodec != 1)

-		{

-			ret += zDrvExtAudio_Open(TRANS_DMA_MODE);

-

-		}

-

-

-		T_ZDrvI2s_Params parameter = {0};

-		parameter.channel = AUDIO_MONO_CHANNEL;

-		parameter.buffersize = 320;

-		parameter.p_cb = NULL;

-

-		ret += zDrvI2S_Write_Start(I2S_1, &parameter, &ptCfg);

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "I2S_1 zDrvI2S_Write_Start ret=%d!\n", ret);

-		if (ret != DRV_SUCCESS)

-		{

-			zOss_Printf(1, 1, "zDrvI2S_Write_Start fail ret=%x\n", ret);

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, " ringPlayEntry I2S CFG end ret=%d!\n", ret);

-			continue;

-		}

-

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, " ringPlayEntry I2S CFG end!\n");

-

-

-		while (s_ringStop == FALSE)

-		{

-

-			ret = zDrvI2S_GetBuf(I2S_1, &write_buf, &write_len);

-			//zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S_GetBuf write_buf=0x%x,write_len=%d!\n",write_buf,write_len);

-			///zOss_Printf(1,1,"zDrvI2S_GetBuf write_buf=0x%x,write_len=%d!\n",write_buf,write_len);

-

-			//write_len = 160;

-			zOss_Memcpy((VOID *)(write_buf), bufptr, write_len);

-			ret = zDrvI2S_Write(I2S_1, write_buf, write_len);

-

-

-

-			bufptr += write_len;

-			count += write_len;

-

-			if (count >= arraySize)

-			{

-				count = 0;

-				//recordFileFlag = 0;

-				bufptr = callRingPcm;

-			}

-

-		}

-

-		zOss_PutSemaphore(s_ringPlayEndSemaphore);

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, " ringPlayEntry end !\n");

-

-	}

-

-}

-

-

-

-SINT32 zDrvVp_RingStart(VOID)

-{

-	SINT32  ret = DRV_SUCCESS;

-

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_RingStart!\n");

-

-	if (g_voiceVar.vpI2sStatus != VP_I2S_IDLE)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_RingStart err, voice active!\n");

-		return DRV_ERR_BUSY;

-	}

-

-

-	if (s_ringStop == FALSE)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_RingStart err, latest ring not stop!\n");

-

-		return DRV_ERR_START_TIMES;

-	}

-

-	if (s_firstStart)

-	{

-		s_ringPlaySemaphore = zOss_CreateSemaphore("VpRingPlaySemaphore", 0);

-		s_ringPlayThread = zOss_CreateThread("VpRingPlay", ringPlayEntry, 0, 1024 * 9, 25, 0, 1);

-		s_ringPlayEndSemaphore = zOss_CreateSemaphore("VpRingPlayEndSemaphore", 0);

-

-		if ((NULL == s_ringPlaySemaphore) || (NULL == s_ringPlayThread) || (NULL == s_ringPlayEndSemaphore))

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "create RingPlay Thread sem err! \r\n");

-			return DRV_ERROR;

-		}

-

-

-		s_firstStart = FALSE;

-	}

-	s_ringStop = FALSE;

-

-	//vp_SetTopI2sConfig();

-	zOss_PutSemaphore(s_ringPlaySemaphore);

-

-	return ret;

-}

-SINT32 zDrvVp_RingStop(VOID)

-{

-	SINT32  ret = DRV_SUCCESS;

-

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, " zDrvVp_RingStop  start!\n");

-

-	if (s_ringStop == TRUE)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_RingStop err, stop flag already is true!\n");

-		return DRV_ERR_DEV_CLOSED;

-	}

-

-	s_ringStop = TRUE;

-

-	if (g_voiceVar.vpI2sStatus == VP_I2S_IDLE)

-	{

-		zOss_GetSemaphore(s_ringPlayEndSemaphore, ZOSS_WAIT_FOREVER);

-

-		if (g_voiceVar.vpI2sStatus != VP_I2S_IDLE)   return DRV_ERR_BUSY;

-

-

-		ret = zDrvExtAudio_Write_Stop();

-		if (ret != DRV_SUCCESS)

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_RingStop zDrvI2S_Write_Stop err, ret=%d\n", ret);

-		}

-

-		ret = zDrvExtAudio_Close();

-		if (ret != DRV_SUCCESS)

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_RingStop zDrvI2S_Close err,  ret=%d\n", ret);

-

-		}

-

-		ret = halVpCfg_Disable();

-		if (ret != DRV_SUCCESS)

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_RingStop halVpCfg_Enable err ret=%x !\n", ret);

-		}

-

-		ret = halVpCfg_SetInputPath(g_voiceVar.vpPath, FALSE);

-		if (ret != DRV_SUCCESS)

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_RingStop voice_SetPahtIn halVpCfg_SetInputPath err ret=%d !\n", ret);

-

-		}

-		ret = halVpCfg_SetOutputPath(g_voiceVar.vpPath, FALSE);

-		if (ret != DRV_SUCCESS)

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_RingStop voice_SetPahtOut halVpCfg_SetOutputPath err ret=%d !\n", ret);

-

-		}

-

-		ret = halVpCfg_Close();

-		if (ret != DRV_SUCCESS)

-		{

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_RingStop hal_VpCfg_Close err ret=%d", ret);

-			return DRV_ERROR;

-		}

-

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, " ringstop  close dev end!\n");

-

-	}

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVp_RingStop end\n");

-

-	return ret;

-}

-

-

-#endif

-

-#ifdef _USE_VP_I2S_SYNC

-

-extern SINT32 gI2sDmaReadIntTime[MAX_I2S_ID];

-extern SINT32 gI2sDmaWriteIntTime[MAX_I2S_ID];

-extern SINT32 gI2sTimes;

-extern SINT32 gI2sCntChangeTx[MAX_I2S_ID];

-extern SINT32 gI2sCntChangeRx[MAX_I2S_ID];

-VOID Vp_I2S1ReadChangeBufLen(VOID)

-{

-#if 0 //latest use

-	SINT32 currentTimeDiff = 0;

-

-	gI2sTimes++;

-	if (gI2sTimes <= 2)

-	{

-		gI2sDmaReadIntTime[I2S_1] = zDrvTimer_Stamp();

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_I2S1ReadChangeBufLen gI2sDmaReadIntTime[I2S_1] =%d.\n", gI2sDmaReadIntTime[I2S_1]);

-		if (gI2sTimes == 2)

-		{

-			currentTimeDiff = gI2sDmaReadIntTime[I2S_1] - 20000 - gI2sDmaWriteIntTime[I2S_1];

-			gI2sCntChangeTx[I2S_1] = (currentTimeDiff - 1000) / 125 / 2 * 2;

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_I2S1ReadChangeBufLen gI2sCntChangeTx[I2S_1] =%d.\n", gI2sCntChangeTx[I2S_1]);

-

-			currentTimeDiff = gI2sDmaReadIntTime[I2S_1] - 20000 - gI2sDmaReadIntTime[I2S_2];

-			gI2sCntChangeRx[I2S_2] = (currentTimeDiff - 2000) / 125 / 2 * 2;

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_I2S1ReadChangeBufLen gI2sCntChangeRx[I2S_2] =%d.\n", gI2sCntChangeRx[I2S_2]);

-

-			currentTimeDiff = gI2sDmaReadIntTime[I2S_1] - 20000 - gI2sDmaWriteIntTime[I2S_2];

-			gI2sCntChangeTx[I2S_2] = (currentTimeDiff - 3000) / 125 / 2 * 2;

-			zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_I2S1ReadChangeBufLen gI2sCntChangeTx[I2S_2] =%d.\n", gI2sCntChangeTx[I2S_2]);

-		}

-	}

-#endif

-

-#if 0

-	if (gI2sTimes == 10)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "gI2sTimes == 10 gI2sDmaReadIntTime[I2S_1]=%d.\n", zDrvTimer_Stamp());

-	}

-

-	if (gI2sTimes == 20)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "gI2sTimes == 20 gI2sDmaReadIntTime[I2S_1]=%d.\n", zDrvTimer_Stamp());

-	}

-

-	if (gI2sTimes == 500)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "gI2sTimes == 500 gI2sDmaReadIntTime[I2S_1]=%d.\n", zDrvTimer_Stamp());

-	}

-

-	if (gI2sTimes == 1000)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "gI2sTimes == 1000 gI2sDmaReadIntTime[I2S_1]=%d.\n", zDrvTimer_Stamp());

-	}

-

-	if (gI2sTimes == 1500)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "gI2sTimes == 1500 gI2sDmaReadIntTime[I2S_1]=%d.\n", zDrvTimer_Stamp());

-	}

-

-	if (gI2sTimes == 3000)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "gI2sTimes == 3000 gI2sDmaReadIntTime[I2S_1]=%d.\n", zDrvTimer_Stamp());

-	}

-#endif

-

-	gI2sDmaReadIntTime[I2S_1] += 1;

-}

-

-VOID Vp_I2S1WriteChangeBufLen(VOID)

-{

-#if 0 //latest use

-	if (gI2sDmaWriteIntTime[I2S_1] == 0)

-	{

-		gI2sDmaWriteIntTime[I2S_1] = zDrvTimer_Stamp();

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_I2S2WriteChangeBufLen gI2sDmaWriteIntTime[I2S_1] =%d.\n", gI2sDmaWriteIntTime[I2S_1]);

-	}

-#endif

-

-#if 0

-	if (gI2sTimes == 10)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, " gI2sTimes == 10 gI2sDmaWriteIntTime[I2S_1]=%d.\n", zDrvTimer_Stamp());

-	}

-

-	if (gI2sTimes == 20)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, " gI2sTimes == 20 gI2sDmaWriteIntTime[I2S_1]=%d.\n", zDrvTimer_Stamp());

-	}

-

-	if (gI2sTimes == 500)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, " gI2sTimes == 500 gI2sDmaWriteIntTime[I2S_1]=%d.\n", zDrvTimer_Stamp());

-	}

-

-	if (gI2sTimes == 1000)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, " gI2sTimes == 1000 gI2sDmaWriteIntTime[I2S_1]=%d.\n", zDrvTimer_Stamp());

-	}

-

-	if (gI2sTimes == 1500)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, " gI2sTimes == 1500 gI2sDmaWriteIntTime[I2S_1]=%d.\n", zDrvTimer_Stamp());

-	}

-

-	if (gI2sTimes == 3000)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, " gI2sTimes == 3000 gI2sDmaWriteIntTime[I2S_1]=%d.\n", zDrvTimer_Stamp());

-	}

-#endif

-

-}

-

-VOID Vp_I2S2ReadChangeBufLen(VOID)

-{

-#if 0 //latest use

-	if (gI2sDmaReadIntTime[I2S_2] == 0)

-	{

-		gI2sDmaReadIntTime[I2S_2] = zDrvTimer_Stamp();

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_I2S2ReadChangeBufLen gI2sDmaReadIntTime[I2S_2] =%d.\n", gI2sDmaReadIntTime[I2S_2]);

-	}

-#endif

-#if 0

-	if (gI2sTimes == 10)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, " gI2sTimes == 10 gI2sDmaReadIntTime[I2S_2]=%d.\n", zDrvTimer_Stamp());

-	}

-

-	if (gI2sTimes == 20)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, " gI2sTimes == 20 gI2sDmaReadIntTime[I2S_2]=%d.\n", zDrvTimer_Stamp());

-	}

-

-	if (gI2sTimes == 500)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, " gI2sTimes == 500 gI2sDmaReadIntTime[I2S_2]=%d.\n", zDrvTimer_Stamp());

-	}

-

-	if (gI2sTimes == 1000)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, " gI2sTimes == 1000 gI2sDmaReadIntTime[I2S_2]=%d.\n", zDrvTimer_Stamp());

-	}

-

-	if (gI2sTimes == 1500)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, " gI2sTimes == 1500 gI2sDmaReadIntTime[I2S_2]=%d.\n", zDrvTimer_Stamp());

-	}

-

-	if (gI2sTimes == 3000)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, " gI2sTimes == 3000 gI2sDmaReadIntTime[I2S_2]=%d.\n", zDrvTimer_Stamp());

-	}

-#endif

-	gI2sDmaReadIntTime[I2S_2] += 1;

-

-	if (!(gI2sDmaReadIntTime[I2S_2] % 50))

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "[I2S_1]=%d;[I2S_2]=%d.\n", gI2sDmaReadIntTime[I2S_1], gI2sDmaReadIntTime[I2S_2]);

-	}

-}

-

-VOID Vp_I2S2WriteChangeBufLen(VOID)

-{

-#if 0 //latest use

-	if (gI2sDmaWriteIntTime[I2S_2] == 0)

-	{

-		gI2sDmaWriteIntTime[I2S_2] = zDrvTimer_Stamp();

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "Vp_I2S2WriteChangeBufLen gI2sDmaWriteIntTime[I2S_2] =%d.\n", gI2sDmaWriteIntTime[I2S_2]);

-	}

-#endif

-#if 0

-	if (gI2sTimes == 10)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, " gI2sTimes == 10 gI2sDmaWriteIntTime[I2S_2]=%d.\n", zDrvTimer_Stamp());

-	}

-

-	if (gI2sTimes == 20)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, " gI2sTimes == 20 gI2sDmaWriteIntTime[I2S_2]=%d.\n", zDrvTimer_Stamp());

-	}

-

-	if (gI2sTimes == 500)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, " gI2sTimes == 500 gI2sDmaWriteIntTime[I2S_2]=%d.\n", zDrvTimer_Stamp());

-	}

-

-	if (gI2sTimes == 1000)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, " gI2sTimes == 1000 gI2sDmaWriteIntTime[I2S_2]=%d.\n", zDrvTimer_Stamp());

-	}

-

-	if (gI2sTimes == 1500)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, " gI2sTimes == 1500 gI2sDmaWriteIntTime[I2S_2]=%d.\n", zDrvTimer_Stamp());

-	}

-

-	if (gI2sTimes == 3000)

-	{

-		zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, " gI2sTimes == 3000 gI2sDmaWriteIntTime[I2S_2]=%d.\n", zDrvTimer_Stamp());

-	}

-#endif

-

-}

-

-#endif

-SINT32 zDrvVp_GetVoiceState(VOID **pVoiceState)

-{

-	//SINT32 ret = DRV_SUCCESS;//xiu gai chu

-	*pVoiceState = &g_voiceVar;

-	zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, " zDrvVp_GetVoiceState pVoiceState=%p.\n", *pVoiceState);

-	return DRV_SUCCESS;

-}

-

-/*******************************************************************************

-* Function: zDrvEcall_SetOperations

-* Description: This function is used to set the ecall callback function.

-* Parameters: 

-*   Input:

-*           VoiceObjPtr:The pointer to ecall callback function type. 

-*   Output:None

-*

-* Returns: none

-*

-* Others: 

-********************************************************************************/

-VOID zDrvEcall_SetCallbacks(T_DrvEcall_Opt ecallObj)

-{

-    g_voiceVar.ecallData.opt = ecallObj;

-}

-

-

-SINT32 drv_Get_Ecall_State(VOID)	

-{

-	SINT32 ret = DRV_SUCCESS;

-	//zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, " zDrvVp_GetVoiceState pVoiceState=%p.\n", *pVoiceState);

-	return 1;

-}

-

-SINT32 drv_Ecall_Read(UINT8 *pBuf,UINT32 *inSize)

-{

-	SINT32 ret = DRV_SUCCESS;

-	//zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, " drv_Ecall_Read\n");

-	return DRV_SUCCESS;

-}

-

-SINT32 drv_Ecall_Write(UINT8 *pBuf,UINT32 inSize)	   

-{

-	SINT32 ret = DRV_SUCCESS;

-	//zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "drv_Ecall_Write\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
deleted file mode 100755
index 072f131..0000000
--- a/Uboot/cp/ps/modem/com/src/appstart/inc/version_number.h
+++ /dev/null
@@ -1,9 +0,0 @@
-#if defined _CHIP_ZX297520
-#define VERSION_NUMBER "7520SCV2.01.01.02P56U06"
-#endif
-#if defined _CHIP_ZX297520V2
-#define VERSION_NUMBER "7520V2SCV2.01.01.02P56U06"
-#endif
-#if defined _CHIP_ZX297520V3
-#define VERSION_NUMBER "7520V3SCV2.01.01.02P56U06"
-#endif
diff --git a/Uboot/cp/ps/modem/ps/inc/apuiccint.h b/Uboot/cp/ps/modem/ps/inc/apuiccint.h
deleted file mode 100755
index 57d364f..0000000
--- a/Uboot/cp/ps/modem/ps/inc/apuiccint.h
+++ /dev/null
@@ -1,6286 +0,0 @@
-/*****************************************************************************

-*°æ±¾ËùÓÐ (C)2007ÖÐÐËͨѶ¹É·ÝÓÐÏÞ¹«Ë¾

-*  Ä£¿éÃû  £º

-*  ÎļþÃû  £ºapUiccInt.h

-*  Îļþ±êʶ£º

-*  Ïà¹ØÎļþ£º

-*  ʵÏÖ¹¦ÄÜ£ºUICC¶ÔÍâÌṩµÄ½Ó¿ÚÊý¾Ý½á¹¹¶¨Òå

-*  ×÷Õß    £º

-*  °æ±¾    £º1.0.0

-*  Íê³ÉÈÕÆÚ£º2007.10.1

-*  ÆäËü˵Ã÷£º

-*

-*  Ð޸ļǼ1£º

-*    ÈÕ  ÆÚ£º2008.7.24

-*    ÐÞ¸ÄÈË£ºluhuan

-*    ÐÞ¸ÄÄÚÈÝ£¨×¢:°üÀ¨Ð޸ĵÄÔ­Òò¼°º¯Êý£©£º

-*       1)Efecc Efad EfsstµÈ½á¹¹ÒÔÂú×ã2G3G½á¹¹µÄºÏ²¢

-*       2)ÐÞ¸ÄÁËkeyid

-*       3)½«Ô­¶¨ÒåÔÚ±à½âÂë³öµÄ2GÎļþ½á¹¹ÌáÈ¡³ö²¢·ÅÈëapUiccInit.hÖÐ

-

-*  Ð޸ļǼ2£º

-*    ÈÕ  ÆÚ£º2008.9.4

-*    ÐÞ¸ÄÈË£ºluhuan

-*    ÐÞ¸ÄÄÚÈÝ£¨×¢:°üÀ¨Ð޸ĵÄÔ­Òò¼°º¯Êý£©£º

-*       1)Ϊ×ñÑ­½á¹¹4×Ö½Ú¶ÔÆë£¬¶ÔÏÂÁнṹÔö¼ÓÌî³ä×Ö½Ú£º

-            T_zPS_UICC_ACMmax¡¢T_zPS_UICC_GID1¡¢T_zPS_UICC_GID2¡¢T_zPS_UICC_CBMI¡¢

-            T_zPS_UICC_Cbmid¡¢T_zPS_UICC_Ext2¡¢T_zPS_UICC_Ext3¡¢T_zPS_UICC_Sll

-        2)ÏÂÁÐ½á¹¹ÒÆÈëpsCom.h£º

-            T_zPS_UICC_HpPlmnSrhPrd£½¡·T_zPS_UiccId_HpPlmnSrhPrd

-            T_zPS_UICC_ACC£½¡·T_zPS_UiccId_ACC

-            T_zPS_UICC_Aaem£½¡·T_zPS_UiccId_Aaem

-

-*  Ð޸ļǼ3£º

-*    ÈÕ  ÆÚ£º2008.10.15

-*    ÐÞ¸ÄÈË£ºluhuan

-*    ÐÞ¸ÄÄÚÈÝ£º

-*       1)Ϊ֧³Ö¿¨ÖÐRFU×ֶα䳤´¦Àí£¬½á¹¹T_zPS_UICC_SmssÖÐÔö¼ÓbRfuNum²ÎÊý¡£

-

-*  Ð޸ļǼ4£º

-*    ÈÕ  ÆÚ£º2008.10.27

-*    ÐÞ¸ÄÈË£ºluhuan

-*    ÐÞ¸ÄÄÚÈÝ£º

-*       1)ust½á¹¹Ð޸쬽«Ô­ÏÈûÓж¨ÒåµÄextensionÎļþ±ê¼Ç붨Òå½øÈ¥

-*       2)Ôö¼ÓCBMIDÊý×éÉÏÏÞ

-*       3ÐÞ¸ÄEFplmnsel½á¹¹£¬Ð޸ķ½Ê½·ÂÔìFPLMN

-

-*  Ð޸ļǼ5£º

-*    ÈÕ  ÆÚ£º2008.12.15

-*    ÐÞ¸ÄÈË£ºyangyun

-*    ÐÞ¸ÄÄÚÈÝ£º

-*       1)T_zPS_ApUicc_Auth_Cnf½á¹¹Ð޸ģ¬Ôö¼ÓbResLen²ÎÊý£¬ÒÔָʾʵ¼ÊRESÓÐЧ¸öÊý

-

-*  Ð޸ļǼ6£º

-*    ÈÕ  ÆÚ£º2009.01.13

-*    ÐÞ¸ÄÈË£ºluhuan

-*    ÐÞ¸ÄÄÚÈÝ£º

-*       1)Ð޸ĽṹÌåVgcs Vbs Cpbcch½á¹¹ÒÔ±ÜÃâWORD´óС¶ËÎÊÌâ

-

-*  Ð޸ļǼ7£º

-*    ÈÕ  ÆÚ£º2009.02.16

-*    ÐÞ¸ÄÈË£ºluhuan

-*    ÐÞ¸ÄÄÚÈÝ£º

-*       1)Ô­°Î¿¨ÏûÏ¢£¬ÏÔʽʹÓÃNoCardIndÏûϢ֪ͨЭÒéÕ»ºÍMMI¡£ÏÖMMIÒªÇó²å¡¢°Î¿¨ºÏÓÃÒ»ÌõÏûÏ¢¡£

-          ÔòNoCardInd½öÓÃÓÚЭÒéÕ»£¬¹Êɾ³ýÔ­½á¹¹ÖÐbSrcIndex¡¢bDestIndex£¬¸Ä±äΪ¿ÕÏûÏ¢¡£

-

-*  Ð޸ļǼ8£º

-*    ÈÕ  ÆÚ£º2009.02.23

-*    ÐÞ¸ÄÈË£ºjiangzhaochun

-*    ÐÞ¸ÄÄÚÈÝ£º

-*       1)T_zPS_UICC_SimPlmnsel½á¹¹±»Òƶ¯µ½psCom.hÖУ¬´Ë½á¹¹±»É¾³ý¡£

-

- *  Ð޸ļǼ9£º

- *    ÈÕ  ÆÚ£º2008.02.24

- *    ÐÞ¸ÄÈË: luhuan

- *    ÐÞ¸ÄÄÚÈÝ£º

- *      1)Ö§³ÖUSAT¹¦ÄÜ

- *      2)ɾ³ýÈßÓàµÄRFU¶¨Òå×ֶΣºT_zPS_UICC_Ad¡¢T_zPS_UICC_SimCCP

- 

-  *  Ð޸ļǼ9£º

- *    ÈÕ  ÆÚ£º2009.03.18

- *    ÐÞ¸ÄÈË: wangxiaojin

- *    ÐÞ¸ÄÄÚÈÝ£º

- *      1)Ð޸ĺêÖµZPS_APUICC_USAT_MAX_REMADDR_LEN,ZPS_APUICC_USAT_MAX_ITEM_NUM£»

- *      2)ɾ³ý½á¹¹T_zPS_ApUicc_USAT_SmsDownCnfµÄbComRlt£»

- *      3)ÔڽṹT_zPS_ApUicc_USAT_EnvelopCmd_CnfÖÐÔö¼Ó´íÎóÂ룻

- *      4)ɾ³ý½á¹¹T_zPS_ApUicc_USAT_CallCtrlActµÄbStructFg, ÓÉbUnion±íʾ´æÔÚÐÔ;

- *      5)ɾ³ý½á¹¹T_zPS_ApUicc_USAT_CallCtrlµÄCtrStrFg,ÓÉ bUnion±íʾ´æÔÚÐÔ;

- *      6)Ôö¼Óusat½á¹¹ÖÐunionȡֵ±êʶλµÄ×¢ÊÍ£»

- *      7)½«USATÃüÁî½á¹¹ÖеÄÔ´Ä¿µÄË÷Òýɾ³ý£¬²¢×Ö½Ú¶ÔÆë£»

-

- *  Ð޸ļǼ10£º

- *    ÈÕ  ÆÚ£º2009.03.30

- *    ÐÞ¸ÄÈË: luhuan

- *    ÐÞ¸ÄÄÚÈÝ£º

- *      1)Ð޸ĺêÖµZPS_UICC_LEN_FPLMN´Ó6µ½85,°´¿¨ÖÐÎļþ×î´ó³¤¶È¶¨Òå

- 

-  *  Ð޸ļǼ11£º

- *    ÈÕ  ÆÚ£º2009.04.08

- *    ÐÞ¸ÄÈË: luhuan

- *    ÐÞ¸ÄÄÚÈÝ£º

- *      1)ΪÁ˱ÜÃâÓëpsCom.hÖнṹ¶¨Òå³åÍ»£¬ÌØÒƳýÒÔϽṹ£º

-          Efad  EFkeys EFkeysps  EFkc EFkcgprs Efhplmn EFuplmn Efoplmn  Efstart   Efthreshold

-

- *  Ð޸ļǼ12£º

- *    ÈÕ  ÆÚ£º2009.04.21

- *    ÐÞ¸ÄÈË: luhuan

- *    ÐÞ¸ÄÄÚÈÝ£ºÐ޸ĽṹT_zPS_UICC_CBMI£¬T_zPS_UICC_Cbmir

- 

-  *  Ð޸ļǼ13£º

- *    ÈÕ  ÆÚ£º2009.4.28

- *    ÐÞ¸ÄÈË£ºluhuan

- *    ÐÞ¸ÄÄÚÈÝ£¨×¢:°üÀ¨Ð޸ĵÄÔ­Òò¼°º¯Êý£©£º

- *   Ϊʹ¶ÁÈ¡¸üгɹ¦£¬ ÔÝʱÔö´ó²¿·ÖºêÖµ£¬

-  *  ZPS_UICC_LEN_LIDATA , ZPS_UICC_LEN_FDN , ZPS_UICC_LEN_SDN, 

-  ZPS_UICC_LEN_ICI,  ZPS_UICC_LEN_OCI ,  ZPS_UICC_LEN_CCP2,   ZPS_UICC_LEN_BDN  , 

-  ZPS_UICC_LEN_EST,    ZPS_UICC_LEN_ACL,  ZPS_UICC_LEN_NIA,  ZPS_UICC_LEN_IAP,

-  ZPS_UICC_LEN_ADN,   ZPS_UICC_LEN_AAS ,   ZPS_UICC_LEN_GAS,  ZPS_UICC_LEN_SNE  ,

-  ZPS_UICC_LEN_CCP1,  ZPS_UICC_LEN_EMAIL, ZPS_UICC_SIM_LP ,  ZPS_UICC_SIM_LND  

-  

-   *  Ð޸ļǼ14£º

- *    ÈÕ  ÆÚ£º2009.07.02

- *    ÐÞ¸ÄÈË: luhuan

- *    ÐÞ¸ÄÄÚÈÝ£ºÔö¼Ó½á¹¹ 

-       T_zPS_ApUicc_PinEnableQuery_Req

-       T_zPS_ApUicc_PinEnableQuery_Cnf

-       T_zPS_ApUicc_PinStatQurey_Req

-       T_zPS_ApUicc_PinStatQurey_Cnf

-       T_zPS_ApUicc_CardMode_Req

-       T_zPS_ApUicc_CardMode_Cnf

-       Ð޸Ľṹ: T_zPS_ApUicc_NoCard_Ind

-       Ôö¼Óºê: 

-       ZPS_ApUicc_SET_OK

-       ZPS_ApUicc_PIN_READY

-       ZPS_ApUicc_PIN_SIMPIN

-       ZPS_ApUicc_PIN_SIMPUK

-       ZPS_ApUicc_PIN_SIMPIN2

-       ZPS_ApUicc_PIN_SIMPUK2

-       ZPS_ApUicc_PIN_NOTACTIVE

-       ZPS_ApUicc_PIN_ACTIVE

-       ZPS_ApUicc_CARD_STAUTS_INVALID

-       ZPS_ApUicc_CARD_STAUTS_NOCARD

-       ZPS_ApUicc_CARD_STAUTS_PINERROR

-       ZPS_ApUicc_CARD_STAUTS_NEEDUNBLPIN

-       ZPS_ApUicc_CARD_STAUTS_EVULSION

-       ZPS_ApUicc_CARD_TYPE_UICC   

-       ZPS_ApUicc_CARD_TYPE_SIM    

-       ZPS_ApUicc_CARD_TYPE_NULL               

-       

- *  Ð޸ļǼ15£º

- *    ÈÕ  ÆÚ£º2009.07.16

- *    ÐÞ¸ÄÈË: luhuan

- *    ÐÞ¸ÄÄÚÈÝ£ºÐ޸Ľṹ 

-       T_zPS_ApUicc_PinStatQurey_Cnf

-      T_zPS_ApUicc_PinEnableQuery_Cnf

-      ½«¿¨×´Ì¬ºêÖµÒÆÈëpsCom.hÖÐ

-      

-  *  Ð޸ļǼ16£º

- *    ÈÕ  ÆÚ£º2009.07.21

- *    ÐÞ¸ÄÈË: luhuan

- *    ÐÞ¸ÄÄÚÈÝ£ºÐÞ¸Ä SMSÎļþ½á¹¹

- 

-   *  Ð޸ļǼ17£º

- *    ÈÕ  ÆÚ£º2009.07.27

- *    ÐÞ¸ÄÈË: luhuan

- *    ÐÞ¸ÄÄÚÈÝ£ºÐ޸ij¤¶ÈÎÞ±êʾÇé¿ö£¬Ð޸ĽṹÈçÏÂ

-      T_zPS_UICC_SimLND

-      T_zPS_UICC_Dir

-      T_zPS_UICC_Fdn

-      T_zPS_UICC_Msisdn

-      T_zPS_UICC_Sdn

-      T_zPS_UICC_Ici

-      T_zPS_UICC_Oci

-      T_zPS_UICC_Bdn

-      T_zPS_UICC_Cmi

-      T_zPS_UICC_Mbdn

-      T_zPS_UICC_Adn

-      T_zPS_UICC_Sne

-      T_zPS_UICC_Aas

-      T_zPS_UICC_Gas

-      T_zPS_UICC_Email

-      T_zPS_UICC_ApPbEntry

-      T_zPS_UICC_ApEmail;T_zPS_UICC_ApSne

-      

- *  Ð޸ļǼ17£º

- *    ÈÕ  ÆÚ£º2009.11.17

- *    ÐÞ¸ÄÈË: ³ÂÎÄ

- *    ÐÞ¸ÄÄÚÈÝ£ºÐ޸ij¤¶ÈÎÞ±êʾÇé¿ö£¬Ð޸ĽṹÈçÏ£¬É¾³ýÁËbAlphaIdLen²ÎÊý

-      T_zPS_UICC_SimLND

-      T_zPS_UICC_Dir

-      T_zPS_UICC_Fdn

-      T_zPS_UICC_Msisdn

-      T_zPS_UICC_Sdn

-      T_zPS_UICC_Ici

-      T_zPS_UICC_Oci

-      T_zPS_UICC_Bdn

-      T_zPS_UICC_Cmi

-      T_zPS_UICC_Mbdn

-      T_zPS_UICC_Adn

-      T_zPS_UICC_Sne

-      T_zPS_UICC_Aas

-      T_zPS_UICC_Gas

-      T_zPS_UICC_Email

-      T_zPS_UICC_ApPbEntry

-      T_zPS_UICC_ApEmail;T_zPS_UICC_ApSne

-      

-      ÐÞ¸ÄÁËT_zPS_UICC_SPNµÄ½á¹¹

-

-      

- *  Ð޸ļǼ19£º

- *    ÈÕ  ÆÚ£º2009.12.03 

- *    ÐÞ¸ÄÈË: chenwen

- *    ÐÞ¸ÄÄÚÈÝ£ºÔö¼Ó AT ÃüÁî CRSM Ëù¶ÔÓ¦µÄÏûÏ¢½á¹¹Ìå

-                Ôö¼Ó T_zPS_ApUicc_Common_Cnf ÏûÏ¢

-                µ÷Õû ZPS_ApUicc_MAX_DATA_VAL ´óСΪ2028£¬Ê¹½á¹¹Ìå×ܳ¤²»³¬¹ý2048

-

- *  Ð޸ļǼ20£º

- *    ÈÕ  ÆÚ£º2010.01.05 

- *    ÐÞ¸ÄÈË: chenwen

- *    ÐÞ¸ÄÄÚÈÝ£ºÐÞ¸ÄZPS_UICC_LEN_MSISDN µÄºêÖµ

- *                                ÐÞ¸Ä IMG  µÄ½á¹¹Ìå

-                                   Ôö¼Ó IMGÏà¹ØµÄID

-

- *  Ð޸ļǼ21£º

- *    ÈÕ  ÆÚ£º2010.04.15 

- *    ÐÞ¸ÄÈË: luhuan

- *    ÐÞ¸ÄÄÚÈÝ£ºÔö¼ÓLTEÖ§³Ö

- 

-*  Ð޸ļǼ22£º

- *    ÈÕ  ÆÚ£º2010.04.27 

- *    ÐÞ¸ÄÈË: chenwen

- *    ÐÞ¸ÄÄÚÈÝ£ºµ÷Õû½Ó¿Ú×¢ÊÍ£¬Ôö¼ÓNoCard´íÎóÂëָʾ£¬Éæ¼°½Ó¿ÚÓÐ

-                            T_zPS_ApUicc_UiccOk_Ind

-                            T_zPS_ApUicc_Pin_Cnf

-                            T_zPS_ApUicc_Read_Cnf

-                            T_zPS_ApUicc_PinRemainNum_Cnf

-                            T_zPS_ApUicc_Update_Cnf

-                            T_zPS_ApUicc_GetInfo_Cnf

-

- *  Ð޸ļǼ23£º

- *    ÈÕ  ÆÚ£º2010.05.14 

- *    ÐÞ¸ÄÈË: wangxiaojin

- *    ÐÞ¸ÄÄÚÈÝ£ºÐÞ¸ÄUSATÏà¹Ø½Ó¿Ú£¬¼ÆÈëcmdDetails

-        T_zPS_ApUicc_USAT_GetInkeyCmd,T_zPS_ApUicc_USAT_MTimeCmd,T_zPS_ApUicc_USAT_PlayToneCmd,

-        T_zPS_ApUicc_USAT_PollCmd,T_zPS_ApUicc_USAT_SndSsCmd,T_zPS_ApUicc_USAT_SndUssdCmd,

-        T_zPS_ApUicc_USAT_PollOffCmd,T_zPS_ApUicc_USAT_SetUpEvtListCmd,T_zPS_ApUicc_USAT_PerformCardApduCmd,

-        T_zPS_ApUicc_USAT_PwrOffCardCmd,T_zPS_ApUicc_USAT_PwrOnCardCmd,T_zPS_ApUicc_USAT_SetIdleModTxtCmd,

-        T_zPS_ApUicc_USAT_RunATCmd,T_zPS_ApUicc_USAT_RsvDataCmd,T_zPS_ApUicc_USAT_GetChnlStatusCmd,

-        T_zPS_ApUicc_USAT_SrvSearchCmd,T_zPS_ApUicc_USAT_GetSrvInfoCmd

-

-*  Ð޸ļǼ24£º

- *    ÈÕ  ÆÚ£º2010.05.22 

- *    ÐÞ¸ÄÈË: chenwen

- *    ÐÞ¸ÄÄÚÈÝ£ºÔö¼ÓT_zPS_ApUicc_ActiveOrDeactiveFile_Req/T_zPS_ApUicc_ActiveOrDeactiveFile_Cnf

-

- *  Ð޸ļǼ25£º

- *    ÈÕ  ÆÚ£º2010.06.08 

- *    ÐÞ¸ÄÈË: wangxiaojin

- *    ÐÞ¸ÄÄÚÈÝ: ΪusatÃüÁîÔÚ90 00ʱÔö¼ÓÖ÷¶¯Éϱ¨ÏûÏ¢T_zPS_ApUicc_USAT_NoprocNotify_Ind

-      ΪÏÂÁнӿڵ÷Õû´íÎóÂë:

-      T_zPS_ApUicc_Pin_Cnf,T_zPS_ApUicc_PinEnableQuery_Cnf,T_zPS_ApUicc_PinStatQurey_Cnf

-      ,T_zPS_ApUicc_Read_Cnf,T_zPS_ApUicc_PinRemainNum_Cnf,T_zPS_ApUicc_Update_Cnf

-      T_zPS_ApUicc_GetInfo_Cnf,T_zPS_ApUicc_PinApplSet_Cnf,

-      

-*  Ð޸ļǼ26£º

- *    ÈÕ  ÆÚ£º2010.07.9

- *    ÐÞ¸ÄÈË: wangxiaojin

- *    ÐÞ¸ÄÄÚÈÝ£ºÊµÏÖÐÂ3Gµç»°±¾·½°¸£¬ÐÞ¸ÄÈçϽṹ

-        T_zPS_UICC_PbrBasic,T_zPS_UICC_Pbr_Type,T_zPS_UICC_Pbr,T_zPS_ApUicc_Read_Req,T_zPS_ApUicc_Read_Cnf

-        ,T_zPS_ApUicc_Update_Req,T_zPS_ApUicc_Update_Cnf,T_zPS_ApUicc_GetInfo_Req,T_zPS_ApUicc_GetInfo_Cnf

-      Ôö¼Ó½á¹¹:

-        T_zPS_ApUicc_USAT_NoprocNotify_Ind, T_zPS_ApUicc_EfStatusQuery_Req,T_zPS_ApUicc_EfStatusQuery_Cnf,

-        T_zPS_ApUicc_EfStatusModify_Req,T_zPS_ApUicc_EfStatusModify_Cnf

-      ɾ³ýÈçϽṹ:

-        T_zPS_UICC_ApPbEntry,T_zPS_UICC_ApEmail,T_zPS_UICC_ApSne,T_zPS_UICC_ApAnr

-      Ôö¼ÓÈçϺ궨Òå:

-        ZPS_ApUicc_USIM_PB_BASE           ZPS_ApUicc_KEYID_PB_ENTRY     

-        ZPS_ApUicc_KEYID_PBELEM_BASE       ZPS_ApUicc_KEYID_PB_ADN       

-        ZPS_ApUicc_KEYID_PB_IAP            ZPS_ApUicc_KEYID_PB_EXT1      

-        ZPS_ApUicc_KEYID_PB_SNE            ZPS_ApUicc_KEYID_PB_ANRA      

-        ZPS_ApUicc_KEYID_PB_PBC            ZPS_ApUicc_KEYID_PB_GRP       

-        ZPS_ApUicc_KEYID_PB_AAS            ZPS_ApUicc_KEYID_PB_GAS       

-        ZPS_ApUicc_KEYID_PB_UID            ZPS_ApUicc_KEYID_PB_EMAIL            

-        ZPS_ApUicc_KEYID_PB_CCP1           ZPS_ApUicc_KEYID_PB_ANRB      

-        ZPS_ApUicc_KEYID_PB_ANRC           ZPS_ApUicc_KEYID_PBELEM_END   

-        ZPS_ApUicc_KEYID_PB_END      

-        ZPS_ApUicc_USIM_PB_BASE            ZPS_ApUicc_KEYID_PB_EXT1         

-         ZPS_ApUicc_KEYID_PB_AAS           ZPS_ApUicc_KEYID_PB_GAS          

-         ZPS_ApUicc_KEYID_PB_CCP1          ZPS_ApUicc_KEYID_PB_ADN_1        

-         ZPS_ApUicc_KEYID_PB_ADN_2         ZPS_ApUicc_KEYID_PB_ADN_3        

-         ZPS_ApUicc_KEYID_PB_IAP_1         ZPS_ApUicc_KEYID_PB_IAP_2        

-         ZPS_ApUicc_KEYID_PB_IAP_3        

-         ZPS_ApUicc_KEYID_PB_SNE_1         ZPS_ApUicc_KEYID_PB_SNE_2        

-         ZPS_ApUicc_KEYID_PB_SNE_3         ZPS_ApUicc_KEYID_PB_PBC_1        

-         ZPS_ApUicc_KEYID_PB_PBC_2         ZPS_ApUicc_KEYID_PB_PBC_3        

-         ZPS_ApUicc_KEYID_PB_GRP_1         ZPS_ApUicc_KEYID_PB_GRP_2        

-         ZPS_ApUicc_KEYID_PB_GRP_3         ZPS_ApUicc_KEYID_PB_UID_1        

-         ZPS_ApUicc_KEYID_PB_UID_2         ZPS_ApUicc_KEYID_PB_UID_3        

-         ZPS_ApUicc_KEYID_PB_EMAIL_1       ZPS_ApUicc_KEYID_PB_EMAIL_2      

-         ZPS_ApUicc_KEYID_PB_EMAIL_3       ZPS_ApUicc_KEYID_PB_ANRA_1       

-         ZPS_ApUicc_KEYID_PB_ANRA_2        ZPS_ApUicc_KEYID_PB_ANRA_3       

-         ZPS_ApUicc_KEYID_PB_ANRB_1        ZPS_ApUicc_KEYID_PB_ANRB_2       

-         ZPS_ApUicc_KEYID_PB_ANRB_3        ZPS_ApUicc_KEYID_PB_ANRC_1       

-         ZPS_ApUicc_KEYID_PB_ANRC_2        ZPS_ApUicc_KEYID_PB_ANRC_3       

-         ZPS_ApUicc_KEYID_PB_END  

- *  Ð޸ļǼ26£º

- *    ÈÕ  ÆÚ£º2010.09.25

- *    ÐÞ¸ÄÈË: wangxiaojin

-      ÐÞ¸ÄÄÚÈÝ: ½â¾ö֪ͨstmËø¿¨ºÍ½âËøÔö¼ÓT_zPS_ApUicc_CardlockStatus_Ind

-        ZPS_ApUicc_CardStatus_Lock,ZPS_ApUicc_CardStatus_Unlock

-

- *  Ð޸ļǼ26£º

- *    ÈÕ  ÆÚ£º2010.09.25

- *    ÐÞ¸ÄÈË: wangxiaojin

-      ÐÞ¸ÄÄÚÈÝ: Ôö¼ÓT_zPS_ApUicc_WriteItem_Ind,T_zPS_ApUicc_ItemData,

-      T_zPS_ApUicc_UpdateItem_Req,T_zPS_ApUicc_UpdateItem_Cnf

-

- *  Ð޸ļǼ27£º

- *    ÈÕ  ÆÚ£º2010.12.31

- *    ÐÞ¸ÄÈË: wangxiaojin

-      ÐÞ¸ÄÄÚÈÝ: 1)ΪlteÎļþ°æ±¾Éý¼¶ÐÞ¸Äkeyidºê

-      2)Ôö¼Ósearch¹¦ÄÜ£¬Ôö¼Ó½á¹¹T_zPS_ApUicc_PrePersnRecSrch_Req£¬T_zPS_ApUicc_PrePersnRecSrch_Cnf

-

- *  Ð޸ļǼ28£º

- *    ÈÕ  ÆÚ£º2011.2.11

- *    ÐÞ¸ÄÈË: wangxiaojin

-      ÐÞ¸ÄÄÚÈÝ: pin2ÑéÖ¤£¬Ôö¼Ó T_zPS_ApUicc_VerifyPin2_Req£¬T_zPS_ApUicc_VerifyPin2_Cnf

-      

- * Ð޸ļǼ29:

- * ÈÕÆÚ 2011.03.01

- * ÐÞ¸ÄÈË: ÕÔÕñ»Ô

- * ÐÞ¸ÄÄÚÈÝ: Ôö¼Ó½á¹¹T_zPS_ApUicc_Zpuk_Req

-

- *  Ð޸ļǼ30£º

- *    ÈÕ  ÆÚ£º2011.3.2

- *    ÐÞ¸ÄÈË: wangxiaojin

-      ÐÞ¸ÄÄÚÈÝ:Ôö¼Ó¼Æ·Ñ¹¦ÄÜ

-          Ôö¼Ó½á¹¹T_zPS_ApUicc_Increase_Req£¬T_zPS_ApUicc_ResetAcm_Req

-          Ð޸ĽṹT_zPS_UICC_Acm£¬T_zPS_UICC_ACMmax  

-

- * Ð޸ļǼ31:

- * ÈÕÆÚ 2011.03.23

- * ÐÞ¸ÄÈË: ÍõС½ø

- * ÐÞ¸ÄÄÚÈÝ: Ð޸ĺêÖµZPS_APUICC_USAT_MAX_TXTSTR_LEN

-    Ϊli/PL ÐÞ¸Ä ZPS_UICC_LEN_PLCODE£¬ZPS_UICC_LEN_LIDATA£¬ ½á¹¹ T_zPS_ApUicc_Init_Cnf

-

- * Ð޸ļǼ32:

- * ÈÕÆÚ 2011.04.26

- * ÐÞ¸ÄÈË: ÍõС½ø

- * ÐÞ¸ÄÄÚÈÝ: Ð޸ĺêÖµZPS_UICC_LEN_CBMIR, ZPS_UICC_LEN_CBMI

-

-  * Ð޸ļǼ33:

- * ÈÕÆÚ 2011.05.24

- * ÐÞ¸ÄÈË: ÍõС½ø

-   ÐÞ¸ÄÄÚÈÝ: uiccÓÅ»¯

-   Ôö¼Ó½á¹¹ T_zApUicc_PbSearch_Req£¬ T_zApUicc_PbSearch_Cnf

-   ɾ³ý½á¹¹ T_zPS_ApUicc_ActiveOrDeactiveFile_Req,T_zPS_ApUicc_ActiveOrDeactiveFile_Cnf

-

- *  Ð޸ļǼ34£º

- *  ÈÕÆÚ£º2011.08.02

- *  ÐÞ¸ÄÈË£ºÓȺ£Ó¢

- *  ÐÞ¸ÄÄÚÈÝ£ºÔö¼Ó¼øÈ¨´íÎóÂëZPS_ApUicc_AUTH_OTHERFAIL

-

- 

-  *  Ð޸ļǼ35£º

- *  ÈÕÆÚ£º2011.08.29

- *  ÐÞ¸ÄÈË£ºÓȺ£Ó¢

- *  ÐÞ¸ÄÄÚÈÝ£ºrefreshÐÞ¸Ä

-

- *  Ð޸ļǼ36£º

- *  ÈÕÆÚ£º2011.11.8

- *  ÐÞ¸ÄÈË£ºÓȺ£Ó¢

- *  ÐÞ¸ÄÄÚÈÝ£º¼ÓÃÜ¿¨Éè¼ÆÐ޸ĽṹT_zApUicc_USAT_TermnlProfil_Req

-                                Ôö¼Ó½á¹¹ÌåT_zApUicc_ToReadCard_Req

-

- *  Ð޸ļǼ37£º

- *  ÈÕÆÚ£º2011.12.27

- *  ÐÞ¸ÄÈË£ºÓȺ£Ó¢

- *  ÐÞ¸ÄÄÚÈÝ£ºEC617001233782 Ôö¼ÓZPS_ApUicc_MSGTYPE_SMSCTR_CNFµÈºêÖµ,

-                                envelopÓÐÏìÓ¦Êý¾Ýʱ·µ»ØµÄmsgtype

-								

- *  Ð޸ļǼ38£º

- *  ÈÕÆÚ£º2012.3.29

- *  ÐÞ¸ÄÈË£ºÓȺ£Ó¢

- *  ÐÞ¸ÄÄÚÈÝ£ºEC617001394014 Ôö¼ÓSimReader¹¦ÄÜÏà¹Ø½á¹¹ÌåºÍºêÖµ

-

- *  Ð޸ļǼ39£º

- *  ÈÕÆÚ£º2012.7.13

- *  ÐÞ¸ÄÈË£ºÓȺ£Ó¢

- *  ÐÞ¸ÄÄÚÈÝ£º617001591416 ¡¾ÖÇÄÜ»úÐèÇó¡¿- ÖÇÄÜ»úÐèÇóV3°æ±¾Í¬²½ÊµÏÖ-cfun=5

-    Ôö¼Ó T_zApUicc_ApPwrOff_Req

-

- *  Ð޸ļǼ40£º

- *  ÈÕÆÚ£º2012.8.2

- *  ÐÞ¸ÄÈË£ºÍõС½ø

- *  ÐÞ¸ÄÄÚÈÝ£º617001662142 ¡¾ÖÇÄÜ»úÐèÇó¡¿¡¾uicc v3¡¿CSIM,CRSM,CCHOµÈÏà¹ØATʵÏÖ

-    Ôö¼Ó½Ó¿Ú: T_zApUicc_USAT_Fetch_Ind;T_zApUicc_Crsm_Cnf;T_zApUicc_Crsm_Req;

-    T_zApUicc_CGla_Cnf;T_zApUicc_CGla_Req;T_zApUicc_Cchc_Req;T_zApUicc_Ccho_Cnf;

-

- *  Ð޸ļǼ41£º

- *  ÈÕÆÚ£º2012.10.30

- *  ÐÞ¸ÄÈË£ºÍõС½ø

- *  ÐÞ¸ÄÄÚÈÝ£º617001814347 CRSMÕûºÏ´æ´¢¹ÜÀí

- 

- *  Ð޸ļǼ42£º

- *  ÈÕÆÚ£º2012.10.31

- *  ÐÞ¸ÄÈË£ºÐí³¬

- *  ÐÞ¸ÄÄÚÈÝ£º617001820140 +ZRAPÃüÁîÐÞ¸Ä

-

- *  Ð޸ļǼ43£º

- *  ÈÕÆÚ£º2013.3.26

- *  ÐÞ¸ÄÈË£ºÀîÑÒ

- *  ÐÞ¸ÄÄÚÈÝ£º617002071273 +ZUTRÃüÁî½âÂëProtoId×ֶΣ¬ÀàÐÍÓÉBYTE¸ÄΪWORD

-

- *  Ð޸ļǼ44£º

- *  ÈÕÆÚ£º2013.10.30

- *  ÐÞ¸ÄÈË£ºÍõС½ø

- *  ÐÞ¸ÄÄÚÈÝ£º617002467311 ÓÅ»¯Ð޸ģ¬ÕûÀíkeyid¡¢½á¹¹

-*****************************************************************************/

-

-#ifndef ZPS_AP_UICC_INTERFACE_H

-#define   ZPS_AP_UICC_INTERFACE_H

-

-/**************************************************************************

-*                        Í·Îļþ°üº¬                                      *

-**************************************************************************/

-#include "ps.h"

-

-/**************************************************************************

-*                         ³£Á¿¶¨Òå                                           *

-**************************************************************************/

-

-/**************************************************************************

-*                         È«¾Öºê¶¨Òå                                         *

-**************************************************************************/

-

-/*============================================================

-keyid»®·Ö˵Ã÷£º

-    simרÓÐ

-                simרÓÐkeyid

-                ±¸ÓÃÖµ

-    simרÓнáÊø

-    usim£¬sim¹²ÓÐ

-                usim sim¹²ÓÐ

-                ±¸ÓÃÖµ

-    usim£¬sim¹²ÓнáÊø

-    usimרÓÐ        

-                usimרÓÐ     

-    usimרÓнáÊø

-=============================================================*/

-

-#define   Z_APUICC_KEYID_BASE        (WORD)(0)         

-#define   Z_APUICC_KEYID_SIM_BASE    (WORD)(Z_APUICC_KEYID_BASE)         

-

-//½öSIMÓµÓÐ

-#define   Z_APUICC_KEYID_CCP         (WORD)(Z_APUICC_KEYID_SIM_BASE + 0)         

-#define   Z_APUICC_KEYID_LP          (WORD)(Z_APUICC_KEYID_SIM_BASE + 1)         

-#define   Z_APUICC_KEYID_PLMNSEL     (WORD)(Z_APUICC_KEYID_SIM_BASE + 2)         

-#define   Z_APUICC_KEYID_SST         (WORD)(Z_APUICC_KEYID_SIM_BASE + 3)         

-#define   Z_APUICC_KEYID_BCCH        (WORD)(Z_APUICC_KEYID_SIM_BASE + 4)         

-#define   Z_APUICC_KEYID_PHASE       (WORD)(Z_APUICC_KEYID_SIM_BASE + 5)         

-#define   Z_APUICC_KEYID_SIMADN      (WORD)(Z_APUICC_KEYID_SIM_BASE + 6)         

-#define   Z_APUICC_KEYID_SIMEXT1     (WORD)(Z_APUICC_KEYID_SIM_BASE + 7) 

-#define   Z_APUICC_KEYID_ECCP        (WORD)(Z_APUICC_KEYID_SIM_BASE + 8)    

-#define   Z_APUICC_KEYID_SIM_END     (WORD)(Z_APUICC_KEYID_ECCP)         

-

-//SIMºÍUSIM¹²ÓÃ

-#define   Z_APUICC_KEYID_COM_BASE    (WORD)(Z_APUICC_KEYID_SIM_END + 5)         

-#define   Z_APUICC_KEYID_USIM_BASE   (WORD)(Z_APUICC_KEYID_COM_BASE)  

-

-#define   Z_APUICC_KEYID_LND         (WORD)(Z_APUICC_KEYID_COM_BASE + 0)    

-#define   Z_APUICC_KEYID_SUME        (WORD)(Z_APUICC_KEYID_COM_BASE + 1)        

-#define   Z_APUICC_KEYID_SAI         (WORD)(Z_APUICC_KEYID_COM_BASE + 2)

-#define   Z_APUICC_KEYID_SLL         (WORD)(Z_APUICC_KEYID_COM_BASE + 3)

-#define   Z_APUICC_KEYID_ORPK        (WORD)(Z_APUICC_KEYID_COM_BASE + 4)

-#define   Z_APUICC_KEYID_ARPK        (WORD)(Z_APUICC_KEYID_COM_BASE + 5)

-#define   Z_APUICC_KEYID_TPRK        (WORD)(Z_APUICC_KEYID_COM_BASE + 6)

-#define   Z_APUICC_KEYID_CPBCCH      (WORD)(Z_APUICC_KEYID_COM_BASE + 7)

-#define   Z_APUICC_KEYID_INVSCAN     (WORD)(Z_APUICC_KEYID_COM_BASE + 8) 

-#define   Z_APUICC_KEYID_DCK         (WORD)(Z_APUICC_KEYID_COM_BASE + 9)

-#define   Z_APUICC_KEYID_CNL         (WORD)(Z_APUICC_KEYID_COM_BASE + 10)

-#define   Z_APUICC_KEYID_ACMMAX      (WORD)(Z_APUICC_KEYID_COM_BASE + 11)

-#define   Z_APUICC_KEYID_FDN         (WORD)(Z_APUICC_KEYID_COM_BASE + 12)

-#define   Z_APUICC_KEYID_SMS         (WORD)(Z_APUICC_KEYID_COM_BASE + 13)

-#define   Z_APUICC_KEYID_GID1        (WORD)(Z_APUICC_KEYID_COM_BASE + 14)

-#define   Z_APUICC_KEYID_GID2        (WORD)(Z_APUICC_KEYID_COM_BASE + 15)

-#define   Z_APUICC_KEYID_MSISDN      (WORD)(Z_APUICC_KEYID_COM_BASE + 16)

-#define   Z_APUICC_KEYID_PUCT        (WORD)(Z_APUICC_KEYID_COM_BASE + 17)

-#define   Z_APUICC_KEYID_SMSP        (WORD)(Z_APUICC_KEYID_COM_BASE + 18)

-#define   Z_APUICC_KEYID_SMSS        (WORD)(Z_APUICC_KEYID_COM_BASE + 19)

-#define   Z_APUICC_KEYID_CBMI        (WORD)(Z_APUICC_KEYID_COM_BASE + 20)

-#define   Z_APUICC_KEYID_SPN         (WORD)(Z_APUICC_KEYID_COM_BASE + 21)

-#define   Z_APUICC_KEYID_SMSR        (WORD)(Z_APUICC_KEYID_COM_BASE + 22)

-#define   Z_APUICC_KEYID_SDN         (WORD)(Z_APUICC_KEYID_COM_BASE + 23)

-#define   Z_APUICC_KEYID_EXT2        (WORD)(Z_APUICC_KEYID_COM_BASE + 24)

-#define   Z_APUICC_KEYID_EXT3        (WORD)(Z_APUICC_KEYID_COM_BASE + 25)

-#define   Z_APUICC_KEYID_BDN         (WORD)(Z_APUICC_KEYID_COM_BASE + 26)

-#define   Z_APUICC_KEYID_CBMIR       (WORD)(Z_APUICC_KEYID_COM_BASE + 27)

-#define   Z_APUICC_KEYID_EXT4        (WORD)(Z_APUICC_KEYID_COM_BASE + 28)

-#define   Z_APUICC_KEYID_CMI         (WORD)(Z_APUICC_KEYID_COM_BASE + 29)

-#define   Z_APUICC_KEYID_EMLPP       (WORD)(Z_APUICC_KEYID_COM_BASE + 30)

-#define   Z_APUICC_KEYID_AAEM        (WORD)(Z_APUICC_KEYID_COM_BASE + 31)

-#define   Z_APUICC_KEYID_MBDN        (WORD)(Z_APUICC_KEYID_COM_BASE + 32)

-#define   Z_APUICC_KEYID_EXT6        (WORD)(Z_APUICC_KEYID_COM_BASE + 33)

-#define   Z_APUICC_KEYID_MBI         (WORD)(Z_APUICC_KEYID_COM_BASE + 34)

-#define   Z_APUICC_KEYID_MWIS        (WORD)(Z_APUICC_KEYID_COM_BASE + 35)

-#define   Z_APUICC_KEYID_CFIS        (WORD)(Z_APUICC_KEYID_COM_BASE + 36)

-#define   Z_APUICC_KEYID_EXT7        (WORD)(Z_APUICC_KEYID_COM_BASE + 37)

-#define   Z_APUICC_KEYID_MMSN        (WORD)(Z_APUICC_KEYID_COM_BASE + 38)

-#define   Z_APUICC_KEYID_EXT8        (WORD)(Z_APUICC_KEYID_COM_BASE + 39)

-#define   Z_APUICC_KEYID_MMSICP      (WORD)(Z_APUICC_KEYID_COM_BASE + 40)

-#define   Z_APUICC_KEYID_MMSUP       (WORD)(Z_APUICC_KEYID_COM_BASE + 41)

-#define   Z_APUICC_KEYID_MMSUCP      (WORD)(Z_APUICC_KEYID_COM_BASE + 42)

-#define   Z_APUICC_KEYID_NIA         (WORD)(Z_APUICC_KEYID_COM_BASE + 43)

-#define   Z_APUICC_KEYID_VGCS        (WORD)(Z_APUICC_KEYID_COM_BASE + 44)

-#define   Z_APUICC_KEYID_VGCSS       (WORD)(Z_APUICC_KEYID_COM_BASE + 45)

-#define   Z_APUICC_KEYID_VBS         (WORD)(Z_APUICC_KEYID_COM_BASE + 46)

-#define   Z_APUICC_KEYID_VBSS        (WORD)(Z_APUICC_KEYID_COM_BASE + 47)

-#define   Z_APUICC_KEYID_IMG         (WORD)(Z_APUICC_KEYID_COM_BASE + 48)

-#define   Z_APUICC_KEYID_IMGINST_1   (WORD)(Z_APUICC_KEYID_COM_BASE + 49)

-#define   Z_APUICC_KEYID_IMGINST_2   (WORD)(Z_APUICC_KEYID_COM_BASE + 50)  

-#define   Z_APUICC_KEYID_IMGINST_3   (WORD)(Z_APUICC_KEYID_COM_BASE + 51)  

-#define   Z_APUICC_KEYID_IMGINST_4   (WORD)(Z_APUICC_KEYID_COM_BASE + 52)  

-#define   Z_APUICC_KEYID_IMGINST_5   (WORD)(Z_APUICC_KEYID_COM_BASE + 53)  

-#define   Z_APUICC_KEYID_IMGINST_6   (WORD)(Z_APUICC_KEYID_COM_BASE + 54)  

-#define   Z_APUICC_KEYID_IMGINST_7   (WORD)(Z_APUICC_KEYID_COM_BASE + 55)  

-#define   Z_APUICC_KEYID_IMGINST_8   (WORD)(Z_APUICC_KEYID_COM_BASE + 56)  

-#define   Z_APUICC_KEYID_IMGINST_9   (WORD)(Z_APUICC_KEYID_COM_BASE + 57) 

-#define   Z_APUICC_KEYID_IMGINST_10  (WORD)(Z_APUICC_KEYID_COM_BASE + 58)   

-#define   Z_APUICC_KEYID_IMGINST_11  (WORD)(Z_APUICC_KEYID_COM_BASE + 59)    

-#define   Z_APUICC_KEYID_IMGINST_12  (WORD)(Z_APUICC_KEYID_COM_BASE + 60)   

-#define   Z_APUICC_KEYID_IMGINST_13  (WORD)(Z_APUICC_KEYID_COM_BASE + 61)   

-#define   Z_APUICC_KEYID_IMGINST_14  (WORD)(Z_APUICC_KEYID_COM_BASE + 62)   

-#define   Z_APUICC_KEYID_IMGINST_15  (WORD)(Z_APUICC_KEYID_COM_BASE + 63)   

-#define   Z_APUICC_KEYID_IMGINST_16  (WORD)(Z_APUICC_KEYID_COM_BASE + 64)   

-#define   Z_APUICC_KEYID_IMGINST_17  (WORD)(Z_APUICC_KEYID_COM_BASE + 65)   

-#define   Z_APUICC_KEYID_IMGINST_18  (WORD)(Z_APUICC_KEYID_COM_BASE + 66)   

-#define   Z_APUICC_KEYID_IMGINST_19  (WORD)(Z_APUICC_KEYID_COM_BASE + 67)   

-#define   Z_APUICC_KEYID_IMGINST_20  (WORD)(Z_APUICC_KEYID_COM_BASE + 68)   

-#define   Z_APUICC_KEYID_IMGINST_21  (WORD)(Z_APUICC_KEYID_COM_BASE + 69)   

-#define   Z_APUICC_KEYID_IMGINST_22  (WORD)(Z_APUICC_KEYID_COM_BASE + 70)  

-#define   Z_APUICC_KEYID_IMGINST_23  (WORD)(Z_APUICC_KEYID_COM_BASE + 71)  

-#define   Z_APUICC_KEYID_IMGINST_24  (WORD)(Z_APUICC_KEYID_COM_BASE + 72)  

-#define   Z_APUICC_KEYID_IMGINST_25  (WORD)(Z_APUICC_KEYID_COM_BASE + 73)  

-#define   Z_APUICC_KEYID_IMGINST_26  (WORD)(Z_APUICC_KEYID_COM_BASE + 74)  

-#define   Z_APUICC_KEYID_IMGINST_27  (WORD)(Z_APUICC_KEYID_COM_BASE + 75)  

-#define   Z_APUICC_KEYID_IMGINST_28  (WORD)(Z_APUICC_KEYID_COM_BASE + 76)  

-#define   Z_APUICC_KEYID_MEXEST      (WORD)(Z_APUICC_KEYID_COM_BASE + 77)   

-#define   Z_APUICC_KEYID_ICCID       (WORD)(Z_APUICC_KEYID_COM_BASE + 78)   

-#define   Z_APUICC_KEYID_PL          (WORD)(Z_APUICC_KEYID_COM_BASE + 79)   

-#define   Z_APUICC_KEYID_ECC         (WORD)(Z_APUICC_KEYID_COM_BASE + 80)

-#define   Z_APUICC_KEYID_AD          (WORD)(Z_APUICC_KEYID_COM_BASE + 81)   

-#define   Z_APUICC_KEYID_IMSI        (WORD)(Z_APUICC_KEYID_COM_BASE + 82)   

-#define   Z_APUICC_KEYID_PLMNWACT    (WORD)(Z_APUICC_KEYID_COM_BASE + 83)    

-#define   Z_APUICC_KEYID_PSLOCI      (WORD)(Z_APUICC_KEYID_COM_BASE + 84)   

-#define   Z_APUICC_KEYID_LOCI        (WORD)(Z_APUICC_KEYID_COM_BASE + 85)   

-#define   Z_APUICC_KEYID_FPLMN       (WORD)(Z_APUICC_KEYID_COM_BASE + 86)   

-#define   Z_APUICC_KEYID_CBMID       (WORD)(Z_APUICC_KEYID_COM_BASE + 87)   

-#define   Z_APUICC_KEYID_OPLMNWACT   (WORD)(Z_APUICC_KEYID_COM_BASE + 88)     

-#define   Z_APUICC_KEYID_HPPLMN      (WORD)(Z_APUICC_KEYID_COM_BASE + 89)   

-#define   Z_APUICC_KEYID_HPLMNWACT   (WORD)(Z_APUICC_KEYID_COM_BASE + 90)     

-#define   Z_APUICC_KEYID_PNN         (WORD)(Z_APUICC_KEYID_COM_BASE + 91)   

-#define   Z_APUICC_KEYID_OPL         (WORD)(Z_APUICC_KEYID_COM_BASE + 92)   

-#define   Z_APUICC_KEYID_SPDI        (WORD)(Z_APUICC_KEYID_COM_BASE + 93)   

-#define   Z_APUICC_KEYID_ACM         (WORD)(Z_APUICC_KEYID_COM_BASE + 94)   

-#define   Z_APUICC_KEYID_KC          (WORD)(Z_APUICC_KEYID_COM_BASE + 95)   

-#define   Z_APUICC_KEYID_KCGPRS      (WORD)(Z_APUICC_KEYID_COM_BASE + 96)   

-#define   Z_APUICC_KEYID_ACC         (WORD)(Z_APUICC_KEYID_COM_BASE + 97)   

-#define   Z_APUICC_KEYID_COM_END     (WORD)(Z_APUICC_KEYID_ACC)  

-

-//ÐÂÔöרÓÃÓÚusimÓ¦ÓÃʱ²éѯgsmĿ¼ÏµÄspn

-#define   Z_APUICC_KEYID_GSM_SPN         (WORD)(Z_APUICC_KEYID_COM_END + 1)

-#define   Z_APUICC_KEYID_GSM_SPDI        (WORD)(Z_APUICC_KEYID_COM_END + 2)   

-

-//½öUSIM

-#define   Z_APUICC_KEYID_USIMONLY_BASE    (WORD)(Z_APUICC_KEYID_COM_END + 10)  

-#define   Z_APUICC_KEYID_LI          (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 0)            

-#define   Z_APUICC_KEYID_UST         (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 1)  

-#define   Z_APUICC_KEYID_EST         (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 2) 

-#define   Z_APUICC_KEYID_KEYS        (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 3) 

-#define   Z_APUICC_KEYID_KEYSPS      (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 4) 

-#define   Z_APUICC_KEYID_STARTHFN    (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 5) 

-#define   Z_APUICC_KEYID_THRESHOLD   (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 6) 

-#define   Z_APUICC_KEYID_ICI         (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 7) 

-#define   Z_APUICC_KEYID_OCI         (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 8)  

-#define   Z_APUICC_KEYID_CCP2        (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 9) 

-#define   Z_APUICC_KEYID_USIMARR     (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 10) 

-#define   Z_APUICC_KEYID_EPSLOCI     (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 11) 

-#define   Z_APUICC_KEYID_EPSNSC      (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 12) 

-#define   Z_APUICC_KEYID_ACSGL       (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 13) 

-#define   Z_APUICC_KEYID_CSGT        (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 14) 

-#define   Z_APUICC_KEYID_HNBN        (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 15) 

-#define   Z_APUICC_KEYID_DIR         (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 16) 

-#define   Z_APUICC_KEYID_MFARR       (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 17) 

-#define   Z_APUICC_KEYID_OCSGL       (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 18) 

-#define   Z_APUICC_KEYID_OCSGT       (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 19) 

-#define   Z_APUICC_KEYID_OHNBN       (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 20) 

-#define   Z_APUICC_KEYID_EHPLMN      (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 21) 

-#define   Z_APUICC_KEYID_EXT5        (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 22) 

-#define   Z_APUICC_KEYID_ACL         (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 23) 

-#define   Z_APUICC_KEYID_ICT         (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 24) 

-#define   Z_APUICC_KEYID_OCT         (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 25) 

-#define   Z_APUICC_KEYID_HIDDENKEY   (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 26) 

-#define   Z_APUICC_KEYID_NETPAR      (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 27) 

-#define   Z_APUICC_KEYID_TELEARR     (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 28) 

-#define   Z_APUICC_KEYID_PSISMSC     (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 29) 

-#define   Z_APUICC_KEYID_LRPLMNSI    (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 30) 

-#define   Z_APUICC_KEYID_RMA         (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 31) 

-#define   Z_APUICC_KEYID_ICEDN       (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 32) 

-#define   Z_APUICC_KEYID_ICEFF       (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 33) 

-#define   Z_APUICC_KEYID_PSEUDO      (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 34) 

-#define   Z_APUICC_KEYID_UPLMNWLAN   (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 35) 

-#define   Z_APUICC_KEYID_OPLMNWLAN   (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 36) 

-#define   Z_APUICC_KEYID_UWSIDL      (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 37) 

-#define   Z_APUICC_KEYID_OWSIDL      (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 38) 

-#define   Z_APUICC_KEYID_WRI         (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 39) 

-#define   Z_APUICC_KEYID_HWSIDL      (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 40) 

-#define   Z_APUICC_KEYID_WEHPLMNPI   (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 41) 

-#define   Z_APUICC_KEYID_WHPI        (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 42) 

-#define   Z_APUICC_KEYID_WLRPLMN     (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 43) 

-#define   Z_APUICC_KEYID_HPLMNDAI    (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 44) 

-#define   Z_APUICC_KEYID_MML         (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 45)

-#define   Z_APUICC_KEYID_MMDF        (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 46)

-#define   Z_APUICC_KEYID_MFADN       (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 47)

-#define   Z_APUICC_KEYID_MFEXT1      (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 48)

-#define   Z_APUICC_KEYID_MFFDN       (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 49)

-#define   Z_APUICC_KEYID_MFSMS       (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 50)

-#define   Z_APUICC_KEYID_MFMSISDN    (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 51)

-#define   Z_APUICC_KEYID_MFSMSP      (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 52)

-#define   Z_APUICC_KEYID_MFSMSS      (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 53)

-#define   Z_APUICC_KEYID_MFSMSR      (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 54)

-#define   Z_APUICC_KEYID_MFSDN       (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 55)

-#define   Z_APUICC_KEYID_MFEXT2      (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 56)

-#define   Z_APUICC_KEYID_MFEXT3      (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 57)

-#define   Z_APUICC_KEYID_MFBDN       (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 58)

-#define   Z_APUICC_KEYID_MFEXT4      (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 59)

-#define   Z_APUICC_KEYID_VGCSCA      (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 60)

-#define   Z_APUICC_KEYID_VBCSCA      (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 61)

-#define   Z_APUICC_KEYID_GBABP       (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 62)

-#define   Z_APUICC_KEYID_MSK         (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 63)

-#define   Z_APUICC_KEYID_MUK         (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 64)

-#define   Z_APUICC_KEYID_GBANL       (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 65)

-#define   Z_APUICC_KEYID_EHPLMNPI    (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 66)

-#define   Z_APUICC_KEYID_NAFKCA      (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 67)

-#define   Z_APUICC_KEYID_SPNI        (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 68)

-#define   Z_APUICC_KEYID_PNNI        (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 69)

-#define   Z_APUICC_KEYID_NCPIP       (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 70)

-#define   Z_APUICC_KEYID_ICEG        (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 71)

-#define   Z_APUICC_KEYID_TKCDF_1     (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 72)   /* EFTKCDF¿ÉÒÔÓжà¸ö£¬½«À´¸ù¾ÝÐèÇó¿ÉÀ©³ä */

-#define   Z_APUICC_KEYID_TKCDF_2     (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 73)

-#define   Z_APUICC_KEYID_TKCDF_3     (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 74)

-#define   Z_APUICC_KEYID_LSADF_1     (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 75)   /* LSA Descriptor files¿ÉÒÔÓжà¸ö£¬½«À´¸ù¾ÝÐèÇó¿ÉÀ©³ä */

-#define   Z_APUICC_KEYID_LSADF_2     (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 76)

-#define   Z_APUICC_KEYID_LSADF_3     (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 77)

-#define   Z_APUICC_KEYID_FDNURI      (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 78)

-#define   Z_APUICC_KEYID_SDNURI      (WORD)(Z_APUICC_KEYID_USIMONLY_BASE + 79)

-

-#define   Z_APUICC_KEYID_SM_BASE     (WORD)(Z_APUICC_KEYID_SDNURI + 1)  

-

-#define   Z_APUICC_KEYID_SM_PSC      (WORD)(Z_APUICC_KEYID_SM_BASE + 0)  

-#define   Z_APUICC_KEYID_SM_CC       (WORD)(Z_APUICC_KEYID_SM_BASE + 1)   

-#define   Z_APUICC_KEYID_SM_PUID     (WORD)(Z_APUICC_KEYID_SM_BASE + 2)   

-#define   Z_APUICC_KEYID_SM_PBR      (WORD)(Z_APUICC_KEYID_SM_BASE + 3)   

-#define   Z_APUICC_KEYID_SM_EXT1     (WORD)(Z_APUICC_KEYID_SM_BASE + 4)   

-#define   Z_APUICC_KEYID_SM_AAS      (WORD)(Z_APUICC_KEYID_SM_BASE + 5)  

-#define   Z_APUICC_KEYID_SM_GAS      (WORD)(Z_APUICC_KEYID_SM_BASE + 6)  

-#define   Z_APUICC_KEYID_SM_CCP1     (WORD)(Z_APUICC_KEYID_SM_BASE + 7)  

-#define   Z_APUICC_KEYID_SM_ADN_1    (WORD)(Z_APUICC_KEYID_SM_BASE + 8)  

-#define   Z_APUICC_KEYID_SM_ADN_2    (WORD)(Z_APUICC_KEYID_SM_BASE + 9)  

-#define   Z_APUICC_KEYID_SM_ADN_3    (WORD)(Z_APUICC_KEYID_SM_BASE + 10) 

-#define   Z_APUICC_KEYID_SM_IAP_1    (WORD)(Z_APUICC_KEYID_SM_BASE + 11) 

-#define   Z_APUICC_KEYID_SM_IAP_2    (WORD)(Z_APUICC_KEYID_SM_BASE + 12) 

-#define   Z_APUICC_KEYID_SM_IAP_3    (WORD)(Z_APUICC_KEYID_SM_BASE + 13) 

-#define   Z_APUICC_KEYID_SM_PBC_1    (WORD)(Z_APUICC_KEYID_SM_BASE + 14) 

-#define   Z_APUICC_KEYID_SM_PBC_2    (WORD)(Z_APUICC_KEYID_SM_BASE + 15) 

-#define   Z_APUICC_KEYID_SM_PBC_3    (WORD)(Z_APUICC_KEYID_SM_BASE + 16) 

-#define   Z_APUICC_KEYID_SM_GRP_1    (WORD)(Z_APUICC_KEYID_SM_BASE + 17) 

-#define   Z_APUICC_KEYID_SM_GRP_2    (WORD)(Z_APUICC_KEYID_SM_BASE + 18) 

-#define   Z_APUICC_KEYID_SM_GRP_3    (WORD)(Z_APUICC_KEYID_SM_BASE + 19) 

-#define   Z_APUICC_KEYID_SM_UID_1    (WORD)(Z_APUICC_KEYID_SM_BASE + 20) 

-#define   Z_APUICC_KEYID_SM_UID_2    (WORD)(Z_APUICC_KEYID_SM_BASE + 21) 

-#define   Z_APUICC_KEYID_SM_UID_3    (WORD)(Z_APUICC_KEYID_SM_BASE + 22) 

-#define   Z_APUICC_KEYID_SM_SNE_1    (WORD)(Z_APUICC_KEYID_SM_BASE + 23)

-#define   Z_APUICC_KEYID_SM_SNE_2    (WORD)(Z_APUICC_KEYID_SM_BASE + 24)

-#define   Z_APUICC_KEYID_SM_SNE_3    (WORD)(Z_APUICC_KEYID_SM_BASE + 25)

-#define   Z_APUICC_KEYID_SM_EMAIL_1  (WORD)(Z_APUICC_KEYID_SM_BASE + 26)

-#define   Z_APUICC_KEYID_SM_EMAIL_2  (WORD)(Z_APUICC_KEYID_SM_BASE + 27)

-#define   Z_APUICC_KEYID_SM_EMAIL_3  (WORD)(Z_APUICC_KEYID_SM_BASE + 28)

-#define   Z_APUICC_KEYID_SM_ANR_1   (WORD)(Z_APUICC_KEYID_SM_BASE + 29)

-#define   Z_APUICC_KEYID_SM_ANR_2   (WORD)(Z_APUICC_KEYID_SM_BASE + 30)

-#define   Z_APUICC_KEYID_SM_ANR_3   (WORD)(Z_APUICC_KEYID_SM_BASE + 31)

-#define   Z_APUICC_KEYID_SM_ANR_4   (WORD)(Z_APUICC_KEYID_SM_BASE + 32)

-#define   Z_APUICC_KEYID_SM_ANR_5   (WORD)(Z_APUICC_KEYID_SM_BASE + 33)

-#define   Z_APUICC_KEYID_SM_ANR_6   (WORD)(Z_APUICC_KEYID_SM_BASE + 34)

-#define   Z_APUICC_KEYID_SM_ANR_7   (WORD)(Z_APUICC_KEYID_SM_BASE + 35)

-#define   Z_APUICC_KEYID_SM_ANR_8   (WORD)(Z_APUICC_KEYID_SM_BASE + 36)

-#define   Z_APUICC_KEYID_SM_ANR_9   (WORD)(Z_APUICC_KEYID_SM_BASE + 37)

-#define   Z_APUICC_KEYID_SM_END      (WORD)(Z_APUICC_KEYID_SM_ANR_9)  

-

-#define   Z_APUICC_KEYID_AP_BASE     (WORD)(Z_APUICC_KEYID_SM_END + 1)  

-

-#define   Z_APUICC_KEYID_AP_PSC      (WORD)(Z_APUICC_KEYID_AP_BASE + 0)  

-#define   Z_APUICC_KEYID_AP_CC       (WORD)(Z_APUICC_KEYID_AP_BASE + 1)  

-#define   Z_APUICC_KEYID_AP_PUID     (WORD)(Z_APUICC_KEYID_AP_BASE + 2)   

-#define   Z_APUICC_KEYID_AP_PBR      (WORD)(Z_APUICC_KEYID_AP_BASE + 3)   

-#define   Z_APUICC_KEYID_AP_EXT1     (WORD)(Z_APUICC_KEYID_AP_BASE + 4)   

-#define   Z_APUICC_KEYID_AP_AAS      (WORD)(Z_APUICC_KEYID_AP_BASE + 5)  

-#define   Z_APUICC_KEYID_AP_GAS      (WORD)(Z_APUICC_KEYID_AP_BASE + 6)  

-#define   Z_APUICC_KEYID_AP_CCP1     (WORD)(Z_APUICC_KEYID_AP_BASE + 7)  

-#define   Z_APUICC_KEYID_AP_ADN_1    (WORD)(Z_APUICC_KEYID_AP_BASE + 8)  

-#define   Z_APUICC_KEYID_AP_ADN_2    (WORD)(Z_APUICC_KEYID_AP_BASE + 9)  

-#define   Z_APUICC_KEYID_AP_ADN_3    (WORD)(Z_APUICC_KEYID_AP_BASE + 10) 

-#define   Z_APUICC_KEYID_AP_IAP_1    (WORD)(Z_APUICC_KEYID_AP_BASE + 11) 

-#define   Z_APUICC_KEYID_AP_IAP_2    (WORD)(Z_APUICC_KEYID_AP_BASE + 12) 

-#define   Z_APUICC_KEYID_AP_IAP_3    (WORD)(Z_APUICC_KEYID_AP_BASE + 13) 

-#define   Z_APUICC_KEYID_AP_PBC_1    (WORD)(Z_APUICC_KEYID_AP_BASE + 14) 

-#define   Z_APUICC_KEYID_AP_PBC_2    (WORD)(Z_APUICC_KEYID_AP_BASE + 15) 

-#define   Z_APUICC_KEYID_AP_PBC_3    (WORD)(Z_APUICC_KEYID_AP_BASE + 16) 

-#define   Z_APUICC_KEYID_AP_GRP_1    (WORD)(Z_APUICC_KEYID_AP_BASE + 17) 

-#define   Z_APUICC_KEYID_AP_GRP_2    (WORD)(Z_APUICC_KEYID_AP_BASE + 18) 

-#define   Z_APUICC_KEYID_AP_GRP_3    (WORD)(Z_APUICC_KEYID_AP_BASE + 19) 

-#define   Z_APUICC_KEYID_AP_UID_1    (WORD)(Z_APUICC_KEYID_AP_BASE + 20) 

-#define   Z_APUICC_KEYID_AP_UID_2    (WORD)(Z_APUICC_KEYID_AP_BASE + 21) 

-#define   Z_APUICC_KEYID_AP_UID_3    (WORD)(Z_APUICC_KEYID_AP_BASE + 22) 

-#define   Z_APUICC_KEYID_AP_SNE_1    (WORD)(Z_APUICC_KEYID_AP_BASE + 23) 

-#define   Z_APUICC_KEYID_AP_SNE_2    (WORD)(Z_APUICC_KEYID_AP_BASE + 24) 

-#define   Z_APUICC_KEYID_AP_SNE_3    (WORD)(Z_APUICC_KEYID_AP_BASE + 25) 

-#define   Z_APUICC_KEYID_AP_EMAIL_1  (WORD)(Z_APUICC_KEYID_AP_BASE + 26) 

-#define   Z_APUICC_KEYID_AP_EMAIL_2  (WORD)(Z_APUICC_KEYID_AP_BASE + 27) 

-#define   Z_APUICC_KEYID_AP_EMAIL_3  (WORD)(Z_APUICC_KEYID_AP_BASE + 28) 

-#define   Z_APUICC_KEYID_AP_ANR_1    (WORD)(Z_APUICC_KEYID_AP_BASE + 29) 

-#define   Z_APUICC_KEYID_AP_ANR_2    (WORD)(Z_APUICC_KEYID_AP_BASE + 30) 

-#define   Z_APUICC_KEYID_AP_ANR_3    (WORD)(Z_APUICC_KEYID_AP_BASE + 31) 

-#define   Z_APUICC_KEYID_AP_ANR_4    (WORD)(Z_APUICC_KEYID_AP_BASE + 32) 

-#define   Z_APUICC_KEYID_AP_ANR_5    (WORD)(Z_APUICC_KEYID_AP_BASE + 33) 

-#define   Z_APUICC_KEYID_AP_ANR_6    (WORD)(Z_APUICC_KEYID_AP_BASE + 34) 

-#define   Z_APUICC_KEYID_AP_ANR_7    (WORD)(Z_APUICC_KEYID_AP_BASE + 35) 

-#define   Z_APUICC_KEYID_AP_ANR_8    (WORD)(Z_APUICC_KEYID_AP_BASE + 36) 

-#define   Z_APUICC_KEYID_AP_ANR_9    (WORD)(Z_APUICC_KEYID_AP_BASE + 37) 

-#define   Z_APUICC_KEYID_AP_END      (WORD)(Z_APUICC_KEYID_AP_ANR_9) 

-

-/* ±íʾSM¡¢APĿ¼µÄËùÓÐÎļþ */

-#define   Z_APUICC_KEYID_SMPB        (WORD)(Z_APUICC_KEYID_AP_END + 1)  

-#define   Z_APUICC_KEYID_APPB        (WORD)(Z_APUICC_KEYID_AP_END + 2)  

-

-/*ISIMרÓÐÎļþ*/

-#define   Z_APUICC_ISIM_KEYID_BASE     (WORD)(Z_APUICC_KEYID_APPB + 1)         

-#define   Z_APUICC_ISIM_KEYID_IST      (WORD)(Z_APUICC_ISIM_KEYID_BASE + 0)

-#define   Z_APUICC_ISIM_KEYID_IMPI     (WORD)(Z_APUICC_ISIM_KEYID_BASE + 1)

-#define   Z_APUICC_ISIM_KEYID_IMPU     (WORD)(Z_APUICC_ISIM_KEYID_BASE + 2)

-#define   Z_APUICC_ISIM_KEYID_DOMAIN   (WORD)(Z_APUICC_ISIM_KEYID_BASE + 3)

-#define   Z_APUICC_ISIM_KEYID_PCSCF    (WORD)(Z_APUICC_ISIM_KEYID_BASE + 4)

-#define   Z_APUICC_ISIM_KEYID_GBABP    (WORD)(Z_APUICC_ISIM_KEYID_BASE + 5)

-#define   Z_APUICC_ISIM_KEYID_GBANL    (WORD)(Z_APUICC_ISIM_KEYID_BASE + 6)

-#define   Z_APUICC_ISIM_KEYID_AD       (WORD)(Z_APUICC_ISIM_KEYID_BASE + 7)

-#define   Z_APUICC_ISIM_KEYID_ARR      (WORD)(Z_APUICC_ISIM_KEYID_BASE + 8)

-#define   Z_APUICC_ISIM_KEYID_NAFKCA   (WORD)(Z_APUICC_ISIM_KEYID_BASE + 9)

-#define   Z_APUICC_ISIM_KEYID_SMS      (WORD)(Z_APUICC_ISIM_KEYID_BASE + 10)

-#define   Z_APUICC_ISIM_KEYID_SMSR     (WORD)(Z_APUICC_ISIM_KEYID_BASE + 11)

-#define   Z_APUICC_ISIM_KEYID_SMSP     (WORD)(Z_APUICC_ISIM_KEYID_BASE + 12)

-#define   Z_APUICC_ISIM_KEYID_SMSS     (WORD)(Z_APUICC_ISIM_KEYID_BASE + 13)

-#define   Z_APUICC_ISIM_KEYID_UICCIARI (WORD)(Z_APUICC_ISIM_KEYID_BASE + 14)

-#define   Z_APUICC_ISIM_KEYID_DIR      (WORD)(Z_APUICC_ISIM_KEYID_BASE + 15)

-#define   Z_APUICC_ISIM_KEYID_PSISMSC  (WORD)(Z_APUICC_ISIM_KEYID_BASE + 16)

-#define   Z_APUICC_ISIM_KEYID_END      (WORD)(Z_APUICC_ISIM_KEYID_PSISMSC)   

-#define   Z_APUICC_KEYID_END           (WORD)(Z_APUICC_ISIM_KEYID_END)  

-

-

-

-/**************************************************************************

-*                          PIN TYPE ºê¶¨Òå                               *

-**************************************************************************/

-/*USIM PIN1*/

-#define  ZPS_ApUicc_PIN1_BASE                  (BYTE)0x01  

-#define  Z_APUICC_PIN1_BASE           ZPS_ApUicc_PIN1_BASE                  

-

-#define  ZPS_ApUicc_KEYREF_PIN11               (BYTE)(ZPS_ApUicc_PIN1_BASE + 0)  

-#define  Z_APUICC_KEYREF_PIN11          ZPS_ApUicc_KEYREF_PIN11               

-#define  ZPS_ApUicc_KEYREF_PIN12               (BYTE)(ZPS_ApUicc_PIN1_BASE + 1)  

-#define  Z_APUICC_KEYREF_PIN12          ZPS_ApUicc_KEYREF_PIN12               

-#define  ZPS_ApUicc_KEYREF_PIN13               (BYTE)(ZPS_ApUicc_PIN1_BASE + 2)   

-#define  Z_APUICC_KEYREF_PIN13          ZPS_ApUicc_KEYREF_PIN13               

-#define  ZPS_ApUicc_KEYREF_PIN14               (BYTE)(ZPS_ApUicc_PIN1_BASE + 3)  

-#define  Z_APUICC_KEYREF_PIN14          ZPS_ApUicc_KEYREF_PIN14               

-#define  ZPS_ApUicc_KEYREF_PIN15               (BYTE)(ZPS_ApUicc_PIN1_BASE + 4)  

-#define  Z_APUICC_KEYREF_PIN15          ZPS_ApUicc_KEYREF_PIN15               

-#define  ZPS_ApUicc_KEYREF_PIN16               (BYTE)(ZPS_ApUicc_PIN1_BASE + 5)  

-#define  Z_APUICC_KEYREF_PIN16          ZPS_ApUicc_KEYREF_PIN16               

-#define  ZPS_ApUicc_KEYREF_PIN17               (BYTE)(ZPS_ApUicc_PIN1_BASE + 6)  

-#define  Z_APUICC_KEYREF_PIN17          ZPS_ApUicc_KEYREF_PIN17               

-#define  ZPS_ApUicc_KEYREF_PIN18               (BYTE)(ZPS_ApUicc_PIN1_BASE + 7)  

-#define  Z_APUICC_KEYREF_PIN18          ZPS_ApUicc_KEYREF_PIN18               

-

-#define  ZPS_ApUicc_PIN1_END                   (BYTE)ZPS_ApUicc_KEYREF_PIN18  

-#define  Z_APUICC_PIN1_END              ZPS_ApUicc_PIN1_END    

-/*USIM universal PIN*/

-#define  ZPS_ApUicc_KEYREF_UNVSL_PIN           (BYTE)0x11  

-#define  Z_APUICC_KEYREF_UNVSL_PIN      ZPS_ApUicc_KEYREF_UNVSL_PIN           

-

-/*USIM PIN2*/

-#define  ZPS_ApUicc_PIN2_BASE                  (BYTE)0x81  

-#define  Z_APUICC_PIN2_BASE             ZPS_ApUicc_PIN2_BASE                       	

-#define  ZPS_ApUicc_KEYREF_PIN21               (BYTE)(ZPS_ApUicc_PIN2_BASE + 0)    

-#define  Z_APUICC_KEYREF_PIN21          ZPS_ApUicc_KEYREF_PIN21               

-#define  ZPS_ApUicc_KEYREF_PIN22               (BYTE)(ZPS_ApUicc_PIN2_BASE + 1)     

-#define  Z_APUICC_KEYREF_PIN22          ZPS_ApUicc_KEYREF_PIN22               

-#define  ZPS_ApUicc_KEYREF_PIN23               (BYTE)(ZPS_ApUicc_PIN2_BASE + 2)   

-#define  Z_APUICC_KEYREF_PIN23          ZPS_ApUicc_KEYREF_PIN23               

-#define  ZPS_ApUicc_KEYREF_PIN24               (BYTE)(ZPS_ApUicc_PIN2_BASE + 3)     

-#define  Z_APUICC_KEYREF_PIN24          ZPS_ApUicc_KEYREF_PIN24               

-#define  ZPS_ApUicc_KEYREF_PIN25               (BYTE)(ZPS_ApUicc_PIN2_BASE + 4)     

-#define  Z_APUICC_KEYREF_PIN25          ZPS_ApUicc_KEYREF_PIN25               

-#define  ZPS_ApUicc_KEYREF_PIN26               (BYTE)(ZPS_ApUicc_PIN2_BASE + 5)     

-#define  Z_APUICC_KEYREF_PIN26          ZPS_ApUicc_KEYREF_PIN26               

-#define  ZPS_ApUicc_KEYREF_PIN27               (BYTE)(ZPS_ApUicc_PIN2_BASE + 6)     

-#define  Z_APUICC_KEYREF_PIN27          ZPS_ApUicc_KEYREF_PIN27               

-#define  ZPS_ApUicc_KEYREF_PIN28               (BYTE)(ZPS_ApUicc_PIN2_BASE + 7)  

-#define  Z_APUICC_KEYREF_PIN28          ZPS_ApUicc_KEYREF_PIN28               

-

-#define  ZPS_ApUicc_PIN2_END                   (BYTE)ZPS_ApUicc_KEYREF_PIN28  

-#define  Z_APUICC_PIN2_END              ZPS_ApUicc_PIN2_END                   

-/*SIM PIN*/

-#define  ZPS_ApUicc_SIM_CMD_CHV1               (BYTE)0x01  

-#define  Z_APUICC_SIM_CMD_CHV1          ZPS_ApUicc_SIM_CMD_CHV1               

-#define  ZPS_ApUicc_SIM_CMD_CHV2               (BYTE)0x02  

-#define  Z_APUICC_SIM_CMD_CHV2          ZPS_ApUicc_SIM_CMD_CHV2               

-

-

-

-

-/**************************************************************************

-*                          EFÖг£Á¿ºê¶¨Òå                               *

-**************************************************************************/

-#define    ZPS_UICC_LEN_PLCODE                                  (BYTE)127  

-#define    Z_UICC_LEN_PLCODE            ZPS_UICC_LEN_PLCODE                                  

-#define    ZPS_UICC_LEN_LIDATA                                  (BYTE)127  /*ԭֵΪ5*/  

-#define    Z_UICC_LEN_LIDATA            ZPS_UICC_LEN_LIDATA                                  

-#define    ZPS_UICC_LEN_UST                                     (BYTE)8   

-#define    Z_UICC_LEN_UST               ZPS_UICC_LEN_UST                                     

-#define    ZPS_UICC_LEN_GID1                                    (BYTE)3  

-#define    Z_UICC_LEN_GID1              ZPS_UICC_LEN_GID1                                    

-#define    ZPS_UICC_LEN_GID2                                    (BYTE)3   

-#define    Z_UICC_LEN_GID2              ZPS_UICC_LEN_GID2                                    

-#define    ZPS_UICC_LEN_CBMI                                    (BYTE)255  

-#define    Z_UICC_LEN_CBMI              ZPS_UICC_LEN_CBMI                                    

-//#define    ZPS_UICC_LEN_FPLMN                                   (BYTE)85  

-//#define    Z_UICC_LEN_FPLMN             ZPS_UICC_LEN_FPLMN                                   

-#define    ZPS_UICC_LEN_AD                                      (BYTE)1  

-#define    Z_UICC_LEN_AD                ZPS_UICC_LEN_AD                                      

-#define    ZPS_UICC_LEN_CBMID                                   (BYTE)20  

-#define    Z_UICC_LEN_CBMID             ZPS_UICC_LEN_CBMID                                   

-#define    ZPS_UICC_LEN_CBMIR                                   (BYTE)255  

-#define    Z_UICC_LEN_CBMIR             ZPS_UICC_LEN_CBMIR                                   

-#define    ZPS_UICC_LEN_FDN                                     (BYTE)250   /*Ô­ÏÈΪ14*/  

-#define    Z_UICC_LEN_FDN               ZPS_UICC_LEN_FDN                                     

-#define    ZPS_UICC_LEN_MSISDN                                  (BYTE)250   /*Ô­ÏÈΪ14*/  

-#define    Z_UICC_LEN_MSISDN            ZPS_UICC_LEN_MSISDN                                  

-#define    ZPS_UICC_LEN_SDN                                     (BYTE)252   /*Ô­ÏÈΪ8*/   

-#define    Z_UICC_LEN_SDN               ZPS_UICC_LEN_SDN                                     

-#define    ZPS_UICC_LEN_ICI                                     (BYTE)250   /*Ô­ÏÈΪ14*/  

-#define    Z_UICC_LEN_ICI               ZPS_UICC_LEN_ICI                                     

-#define    ZPS_UICC_LEN_OCI                                     (BYTE)250   /*Ô­ÏÈΪ14*/  

-#define    Z_UICC_LEN_OCI               ZPS_UICC_LEN_OCI                                     

-#define    ZPS_UICC_LEN_CCP2                                    (BYTE)252   /*Ô­ÏÈΪ20*/   

-#define    Z_UICC_LEN_CCP2              ZPS_UICC_LEN_CCP2                                    

-#define    ZPS_UICC_LEN_BDN                                     (BYTE)250   /*Ô­ÏÈΪ14*/    

-#define    Z_UICC_LEN_BDN               ZPS_UICC_LEN_BDN                                     

-#define    ZPS_UICC_LEN_CMI                                     (BYTE)14         

-#define    Z_UICC_LEN_CMI               ZPS_UICC_LEN_CMI                                       

-#define    ZPS_UICC_LEN_EST                                     (BYTE)252   /*Ô­ÏÈΪ8*/   

-#define    Z_UICC_LEN_EST               ZPS_UICC_LEN_EST                                     

-#define    ZPS_UICC_LEN_ACL                                     (BYTE)10   /*Ô­ÏÈΪ8*/   

-#define    Z_UICC_LEN_ACL               ZPS_UICC_LEN_ACL                                     

-#define    ZPS_UICC_LEN_CNL                                     (BYTE)8                  

-#define    Z_UICC_LEN_CNL               ZPS_UICC_LEN_CNL                                     

-#define    ZPS_UICC_LEN_NBDN                                    (BYTE)14                 

-#define    Z_UICC_LEN_NBDN              ZPS_UICC_LEN_NBDN                                    

-#define    ZPS_UICC_LEN_SPDI                                    (BYTE)16                  

-#define    Z_UICC_LEN_SPDI              ZPS_UICC_LEN_SPDI                                    

-#define    ZPS_UICC_LEN_MMSN                                    (BYTE)50                   

-#define    Z_UICC_LEN_MMSN              ZPS_UICC_LEN_MMSN                                    

-#define    ZPS_UICC_LEN_EXT8                                    (BYTE)11                    

-#define    Z_UICC_LEN_EXT8              ZPS_UICC_LEN_EXT8                                    

-#define    ZPS_UICC_LEN_NIA                                     (BYTE)249   /*Ô­ÏÈΪ25*/   

-#define    Z_UICC_LEN_NIA               ZPS_UICC_LEN_NIA                                     

-#define    ZPS_UICC_LEN_VGCS                                    (BYTE)50  

-#define    Z_UICC_LEN_VGCS              ZPS_UICC_LEN_VGCS                                    

-#define    ZPS_UICC_LEN_VBS                                     (BYTE)50  

-#define    Z_UICC_LEN_VBS               ZPS_UICC_LEN_VBS                                     

-#define    ZPS_UICC_LEN_SAI                                     (BYTE)64             

-#define    Z_UICC_LEN_SAI               ZPS_UICC_LEN_SAI                                     

-#define    ZPS_UICC_LEN_SLL                                     (BYTE)32                

-#define    Z_UICC_LEN_SLL               ZPS_UICC_LEN_SLL                                     

-#define    ZPS_UICC_LEN_LSA_DESCR                               (BYTE)64  

-#define    Z_UICC_LEN_LSA_DESCR         ZPS_UICC_LEN_LSA_DESCR                                  

-#define    ZPS_UICC_LEN_IAP                                     (BYTE)252   /*Ô­ÏÈΪ8*/      

-#define    Z_UICC_LEN_IAP               ZPS_UICC_LEN_IAP                                           

-#define    ZPS_UICC_LEN_ADN                                     (BYTE)250   /*Ô­ÏÈΪ14*/             /*ÖÐÒÆ¹æ·¶½¨ÒéÖµ*/  

-#define    Z_UICC_LEN_ADN               ZPS_UICC_LEN_ADN                                     

-#define    ZPS_UICC_LEN_AAS                                     (BYTE)250   /*Ô­ÏÈΪ14*/       

-#define    Z_UICC_LEN_AAS               ZPS_UICC_LEN_AAS                                                

-#define    ZPS_UICC_LEN_GAS                                     (BYTE)250   /*Ô­ÏÈΪ14*/      

-#define    Z_UICC_LEN_GAS               ZPS_UICC_LEN_GAS                                     

-#define    ZPS_UICC_LEN_SNE                                     (BYTE)250   /*Ô­ÏÈΪ14*/    

-#define    Z_UICC_LEN_SNE               ZPS_UICC_LEN_SNE                                      

-#define    ZPS_UICC_LEN_CCP1                                    (BYTE)251   /*Ô­ÏÈΪ15*/      

-#define    Z_UICC_LEN_CCP1              ZPS_UICC_LEN_CCP1                                    

-#define    ZPS_UICC_LEN_EMAIL                                   (BYTE)250   /*Ô­ÏÈΪ50*/       

-#define    Z_UICC_LEN_EMAIL             ZPS_UICC_LEN_EMAIL                                   

-#define    ZPS_UICC_LEN_CPBCCH                                  (BYTE)16         

-#define    Z_UICC_LEN_CPBCCH            ZPS_UICC_LEN_CPBCCH                                           

-#define    ZPS_UICC_LEN_MEXEST                                  (BYTE)9  

-#define    Z_UICC_LEN_MEXEST            ZPS_UICC_LEN_MEXEST                                  

-#define    ZPS_UICC_LEN_SST                                     (BYTE)15  

-#define    Z_UICC_LEN_SST               ZPS_UICC_LEN_SST                                     

-#define    ZPS_UICC_LEN_ORPK                                    (BYTE)64         

-#define    Z_UICC_LEN_ORPK              ZPS_UICC_LEN_ORPK                                                                                  

-#define    ZPS_UICC_LEN_TPRPK_ID                                (BYTE)32          

-#define    Z_UICC_LEN_TPRPK_ID          ZPS_UICC_LEN_TPRPK_ID                                           

-#define    ZPS_UICC_LEN_TPRPK_CERT                              (BYTE)32      

-#define    Z_UICC_LEN_TPRPK_CERT        ZPS_UICC_LEN_TPRPK_CERT                                                

-#define    ZPS_UICC_LEN_TKCDF                                   (BYTE)32       

-#define    Z_UICC_LEN_TKCDF             ZPS_UICC_LEN_TKCDF                                               

-#define    ZPS_UICC_LEN_SUME_ICON                               (BYTE)50        

-#define    Z_UICC_LEN_SUME_ICON         ZPS_UICC_LEN_SUME_ICON                                               

-#define    ZPS_UICC_LEN_IMG                                     (BYTE)20        

-#define    Z_UICC_LEN_IMG               ZPS_UICC_LEN_IMG                                               

-#define    ZPS_UICC_LEN_IMGINST                                 (BYTE)50        

-#define    Z_UICC_LEN_IMGINST           ZPS_UICC_LEN_IMGINST                                                 

-#define    ZPS_UICC_LEN_MMSICP                                  (BYTE)8        

-#define    Z_UICC_LEN_MMSICP            ZPS_UICC_LEN_MMSICP                                                    

-#define    ZPS_UICC_LEN_MMSUCP                                  (BYTE)8       

-#define    Z_UICC_LEN_MMSUCP            ZPS_UICC_LEN_MMSUCP                                                    

-#define    ZPS_UICC_LEN_ARPK                                    (BYTE)64         

-#define    Z_UICC_LEN_ARPK              ZPS_UICC_LEN_ARPK                                                  

-#define    ZPS_UICC_LEN_PNN_FULL                                (BYTE)24       

-#define    Z_UICC_LEN_PNN_FULL          ZPS_UICC_LEN_PNN_FULL                                                   

-#define    ZPS_UICC_LEN_PNN_SHORT                               (BYTE)24     

-#define    Z_UICC_LEN_PNN_SHORT         ZPS_UICC_LEN_PNN_SHORT                                                     

-#define    ZPS_UICC_LEN_MMSUP_NAME                              (BYTE)24   

-#define    Z_UICC_LEN_MMSUP_NAME        ZPS_UICC_LEN_MMSUP_NAME                                                    

-#define    ZPS_UICC_LEN_MMSUP_INFORM                            (BYTE)64    

-#define    Z_UICC_LEN_MMSUP_INFORM      ZPS_UICC_LEN_MMSUP_INFORM                                                    

-#define    ZPS_UICC_LEN_MMSICP_VAL                              (BYTE)6    

-#define    Z_UICC_LEN_MMSICP_VAL        ZPS_UICC_LEN_MMSICP_VAL                                                    

-#define    ZPS_UICC_LEN_MMSICP_SERVER                           (BYTE)6      

-#define    Z_UICC_LEN_MMSICP_SERVER     ZPS_UICC_LEN_MMSICP_SERVER                                                   

-#define    ZPS_UICC_LEN_MMSICP_INTER                            (BYTE)4     

-#define    Z_UICC_LEN_MMSICP_INTER      ZPS_UICC_LEN_MMSICP_INTER                                                     

-#define    ZPS_UICC_LEN_MMSICP_GATEWAY                          (BYTE)6    

-#define    Z_UICC_LEN_MMSICP_GATEWAY    ZPS_UICC_LEN_MMSICP_GATEWAY                                                   

-#define    ZPS_UICC_LEN_ARR                                     (BYTE)4  

-#define    Z_UICC_LEN_ARR               ZPS_UICC_LEN_ARR                                     

-#define    ZPS_UICC_SIM_ECC                                     (BYTE)5  

-#define    Z_UICC_SIM_ECC               ZPS_UICC_SIM_ECC                                     

-#define    ZPS_UICC_SIM_LP                                      (BYTE)253   /*Ô­ÏÈÊÇ5*/  

-#define    Z_UICC_SIM_LP                ZPS_UICC_SIM_LP                                      

-#define    ZPS_UICC_SIM_AD                                      (BYTE)1  

-#define    Z_UICC_SIM_AD                ZPS_UICC_SIM_AD                                      

-#define    ZPS_UICC_SIM_PLMNSEL                                 (BYTE)16  

-#define    Z_UICC_SIM_PLMNSEL           ZPS_UICC_SIM_PLMNSEL                                  

-#define    ZPS_UICC_SIM_ECCP                                    (BYTE)32  

-#define    Z_UICC_SIM_ECCP              ZPS_UICC_SIM_ECCP                                    

-#define    ZPS_UICC_SIM_LND                                     (BYTE)250   /*Ô­ÏÈΪ14*/    

-#define    Z_UICC_SIM_LND               ZPS_UICC_SIM_LND                                      

-#define    ZPS_UICC_LEN_GROUPID                                 (BYTE)4 /*GroupIdÊý×鳤¶È*/  

-#define    Z_UICC_LEN_GROUPID           ZPS_UICC_LEN_GROUPID                                 

-#define    ZPS_ApUicc_MAX_IMG_DSCRP_NUM                         (BYTE)28  

-#define    Z_APUICC_MAX_IMG_DSCRP_NUM   ZPS_ApUicc_MAX_IMG_DSCRP_NUM                                  

-#define    ZPS_UICC_PBR_MAX_PBRTYPENUM                          (BYTE)3  

-#define    Z_UICC_PBR_MAX_PBRTYPENUM    ZPS_UICC_PBR_MAX_PBRTYPENUM                                  

-#define    ZPS_UICC_PBR_MAX_KEYIDNUM                            (BYTE)10  

-#define    Z_UICC_PBR_MAX_KEYIDNUM      ZPS_UICC_PBR_MAX_KEYIDNUM                                  

-#define    ZPS_UICC_PBR_MAX_LEN                                 (BYTE)255  

-#define    Z_UICC_PBR_MAX_LEN           ZPS_UICC_PBR_MAX_LEN                

-#define    ZPS_UICC_LEN_APN                                     (BYTE)101    

-#define    Z_UICC_LEN_APN               ZPS_UICC_LEN_APN

-#define    ZPS_UICC_LEN_FDNURI                                  (BYTE)255

-#define    Z_UICC_LEN_FDNURI            ZPS_UICC_LEN_FDNURI   

-#define    ZPS_UICC_LEN_SDNURI                                  (BYTE)255

-#define    Z_UICC_LEN_SDNURI            ZPS_UICC_LEN_SDNURI 

-/**************************************************************************

-*                          UiccManagerºÍAp½Ó¿ÚÖк궨Òå                               *

-**************************************************************************/

-/*=======================  ¿¨²Û ====================================================*/

-#define   ZPS_ApUicc_SLOT0                     (BYTE)0  

-#define   Z_APUICC_SLOT0                ZPS_ApUicc_SLOT0                     

-#define   ZPS_ApUicc_SLOT1                     (BYTE)1  

-#define   Z_APUICC_SLOT1                ZPS_ApUicc_SLOT1                     

-#define   ZPS_ApUicc_SLOT2                     (BYTE)2  

-#define   Z_APUICC_SLOT2                ZPS_ApUicc_SLOT2                     

-

-#define   ZPS_ApUicc_MAX_CARD_NUM              (BYTE)3       

-#define   Z_APUICC_MAX_CARD_NUM         ZPS_ApUicc_MAX_CARD_NUM              

-/*==================== the macro of card type ======================================*/

-#define     ZPS_ApUicc_CARDMODE_UICC              (BYTE)2

-#define   Z_APUICC_CARDMODE_UICC          ZPS_ApUicc_CARDMODE_UICC              

-#define     ZPS_ApUicc_CARDMODE_SIM               (BYTE)1

-#define   Z_APUICC_CARDMODE_SIM           ZPS_ApUicc_CARDMODE_SIM               

-#define     ZPS_ApUicc_CARDMOE_UNKNOWN            (BYTE)0  /*δ³õʼ»¯Ç°Éϱ¨¸Ã״̬*/

-#define   Z_APUICC_CARDMOE_UNKNOWN        ZPS_ApUicc_CARDMOE_UNKNOWN            

-

-/*======================  Ïֽ׶οÉÓõÄÓ¦ÓõÄÖÆÊ½ ==================================*/

-#define   ZPS_ApUicc_APPMODE_NULL               (BYTE)0  

-#define   Z_APUICC_APPMODE_NULL             ZPS_ApUicc_APPMODE_NULL               

-#define   ZPS_ApUicc_APPMODE_USIM               (BYTE)1  

-#define   Z_APUICC_APPMODE_USIM             ZPS_ApUicc_APPMODE_USIM               

-#define   ZPS_ApUicc_APPMODE_SIM                (BYTE)2  

-#define   Z_APUICC_APPMODE_SIM              ZPS_ApUicc_APPMODE_SIM    

-#define   ZPS_ApUicc_APPMODE_ISIM                (BYTE)3  

-#define   Z_APUICC_APPMODE_ISIM              ZPS_ApUicc_APPMODE_ISIM 

-#define   ZPS_ApUicc_MAX_INITAPPMODEVAL         (BYTE)ZPS_ApUicc_APPMODE_ISIM

-#define   Z_APUICC_MAX_INITAPPMODEVAL       ZPS_ApUicc_MAX_INITAPPMODEVAL         

-

-

-/*======================  sim¿¨µÄ°æ±¾ºÅ ============================================*/

-#define   ZPS_ApUicc_SIM_NO_PHASE                (BYTE)4    

-#define   Z_APUICC_SIM_NO_PHASE             ZPS_ApUicc_SIM_NO_PHASE                

-#define   ZPS_ApUicc_SIM_PHASE1                  (BYTE)0  

-#define   Z_APUICC_SIM_PHASE1               ZPS_ApUicc_SIM_PHASE1                  

-#define   ZPS_ApUicc_SIM_PHASE2                  (BYTE)2  

-#define   Z_APUICC_SIM_PHASE2               ZPS_ApUicc_SIM_PHASE2                  

-#define   ZPS_ApUicc_SIM_PHASE2_SPECIAL          (BYTE)3  

-#define   Z_APUICC_SIM_PHASE2_SPECIAL       ZPS_ApUicc_SIM_PHASE2_SPECIAL          

-

-/*==================== the card action==============================================*/

-#define    ZPS_ApUicc_EVULSION_CARD              (BYTE)0

-#define    Z_APUICC_EVULSION_CARD           ZPS_ApUicc_EVULSION_CARD

-#define    ZPS_ApUicc_INSERT_CARD                (BYTE)1

-#define    Z_APUICC_INSERT_CARD             ZPS_ApUicc_INSERT_CARD

-

-/*==================== the card action cause========================================*/

-#define    ZPS_ApUicc_CARD_PHY_OPER              (BYTE)0

-#define    Z_APUICC_CARD_PHY_OPER           ZPS_ApUicc_CARD_PHY_OPER

-#define    ZPS_ApUicc_CARD_OTHER_OPER            (BYTE)1

-#define    Z_APUICC_CARD_OTHER_OPER         ZPS_ApUicc_CARD_OTHER_OPER

-

-/*==================== the macro of Authenticate=====================================*/

-/*Authenticate length*/

-#define     ZPS_ApUicc_MAX_LEN_RAND            (BYTE)16  

-#define     Z_APUICC_MAX_LEN_RAND           ZPS_ApUicc_MAX_LEN_RAND            

-#define     ZPS_ApUicc_MAX_LEN_AUTN            (BYTE)16  

-#define     Z_APUICC_MAX_LEN_AUTN           ZPS_ApUicc_MAX_LEN_AUTN            

-#define     ZPS_ApUicc_MAX_LEN_KC              (BYTE)8  

-#define     Z_APUICC_MAX_LEN_KC             ZPS_ApUicc_MAX_LEN_KC              

-#define     ZPS_ApUicc_MAX_LEN_RES             (BYTE)16  

-#define     Z_APUICC_MAX_LEN_RES            ZPS_ApUicc_MAX_LEN_RES             

-#define     ZPS_ApUicc_MAX_LEN_AUTS            (BYTE)14  

-#define     Z_APUICC_MAX_LEN_AUTS           ZPS_ApUicc_MAX_LEN_AUTS            

-/*the flag of Authenticate context*/

-#define     ZPS_ApUicc_AUTH_GSM                (BYTE)0        /*GSM auth*/  

-#define     Z_APUICC_AUTH_GSM               ZPS_ApUicc_AUTH_GSM                

-#define     ZPS_ApUicc_AUTH_UMTS               (BYTE)1        /*UMTS auth*/  

-#define     Z_APUICC_AUTH_UMTS              ZPS_ApUicc_AUTH_UMTS               

-

-/*Authenticate err*/

-#define     ZPS_ApUicc_AUTH_MACFAIL            (BYTE)20    /*MAC failure*/  

-#define     Z_APUICC_AUTH_MACFAIL           ZPS_ApUicc_AUTH_MACFAIL            

-#define     ZPS_ApUicc_AUTH_SYNCFAIL           (BYTE)21    /*Sync failure*/  

-#define     Z_APUICC_AUTH_SYNCFAIL          ZPS_ApUicc_AUTH_SYNCFAIL           

-#define     ZPS_ApUicc_AUTH_GSMAUTHUNACCPT     (BYTE)23    /*Gsm auth unaccept*/  

-#define     Z_APUICC_AUTH_GSMAUTHUNACCPT    ZPS_ApUicc_AUTH_GSMAUTHUNACCPT     

-#define    ZPS_ApUicc_AUTH_OTHERFAIL         (BYTE) 0xFF

-#define     Z_APUICC_AUTH_OTHERFAIL           ZPS_ApUicc_AUTH_OTHERFAIL

-

-/*==================== the macro of others ==========================================*/

-#define    ZPS_ApUicc_MAX_DIR_NUM             (BYTE)4  

-#define    Z_APUICC_MAX_DIR_NUM             ZPS_ApUicc_MAX_DIR_NUM             

-#define    ZPS_ApUicc_MAX_APPL_NUM            (BYTE)8  

-#define    Z_APUICC_MAX_APPL_NUM            ZPS_ApUicc_MAX_APPL_NUM            

-#define    ZPS_ApUicc_MAX_PIN_NUM             (BYTE)8  

-#define    Z_APUICC_MAX_PIN_NUM             ZPS_ApUicc_MAX_PIN_NUM             

-#define    ZPS_ApUicc_MAX_DATA_VAL            (WORD)2028  

-#define    Z_APUICC_MAX_DATA_VAL            ZPS_ApUicc_MAX_DATA_VAL            

-#define    ZPS_ApUicc_MAX_RD_KEYID_NUM        (BYTE)10  

-#define    Z_APUICC_MAX_RD_KEYID_NUM        ZPS_ApUicc_MAX_RD_KEYID_NUM        

-#define    ZPS_ApUicc_MAX_UPDATE_KEYID_NUM    (BYTE)10  

-#define    Z_APUICC_MAX_UPDATE_KEYID_NUM    ZPS_ApUicc_MAX_UPDATE_KEYID_NUM    

-#define    ZPS_ApUicc_MAX_LGCLCHNL_NUM        (BYTE)3  

-#define    Z_APUICC_MAX_LGCLCHNL_NUM        ZPS_ApUicc_MAX_LGCLCHNL_NUM        

-

-/*====================USATÏà¹Øºê==================*/

-/*9.1        BER-TLV tags in terminal to UICC direction */

-#define ZPS_ApUicc_USAT_BER_PROACMD_TAG         (BYTE)0xD0  /*Proactive UICC command tag */  

-#define Z_APUICC_USAT_BER_PROACMD_TAG       ZPS_ApUicc_USAT_BER_PROACMD_TAG         

-#define ZPS_ApUicc_USAT_BER_SMSPP_TAG           (BYTE)0xD1  /*Reserved for as_gsm/3G/3GPP2 (SMS-PP download tag) */    

-#define Z_APUICC_USAT_BER_SMSPP_TAG         ZPS_ApUicc_USAT_BER_SMSPP_TAG           

-#define ZPS_ApUicc_USAT_BER_CBSDOWN_TAG         (BYTE)0xD2  /*Reserved for as_gsm/3G/3GPP2 (Cell Broadcast download tag) */    

-#define Z_APUICC_USAT_BER_CBSDOWN_TAG       ZPS_ApUicc_USAT_BER_CBSDOWN_TAG         

-#define ZPS_ApUicc_USAT_BER_MENUSEL_TAG         (BYTE)0xD3  /*Menu Selection tag */    

-#define Z_APUICC_USAT_BER_MENUSEL_TAG       ZPS_ApUicc_USAT_BER_MENUSEL_TAG         

-#define ZPS_ApUicc_USAT_BER_CALLCTRL_TAG        (BYTE)0xD4  /*Call control tag */    

-#define Z_APUICC_USAT_BER_CALLCTRL_TAG      ZPS_ApUicc_USAT_BER_CALLCTRL_TAG        

-#define ZPS_ApUicc_USAT_BER_SMSCTRL_TAG         (BYTE)0xD5  /*Reserved for as_gsm/3G (MO Short message control tag) */    

-#define Z_APUICC_USAT_BER_SMSCTRL_TAG       ZPS_ApUicc_USAT_BER_SMSCTRL_TAG         

-#define ZPS_ApUicc_USAT_BER_EVTDOWN_TAG         (BYTE)0xD6  /*Event download tag */    

-#define Z_APUICC_USAT_BER_EVTDOWN_TAG       ZPS_ApUicc_USAT_BER_EVTDOWN_TAG         

-#define ZPS_ApUicc_USAT_BER_TIMEXPIR_TAG        (BYTE)0xD7  /*Timer expiration */  

-#define Z_APUICC_USAT_BER_TIMEXPIR_TAG      ZPS_ApUicc_USAT_BER_TIMEXPIR_TAG        

-

-

-/*====USATÃüÁîÀàÐÍÏà¹Øºê¶¨Òå====*/

-/*Execution of usat command +ZEUC ÃüÁîÖеÄÃüÁîÀàÐÍ*/

-/*Ö÷¶¯Ê½ÃüÁî*/  

-#define ZPS_ApUicc_USAT_PRO_MSGTYPE_REFRESH  (WORD)0x01    /*102223 6.6.13    REFRESH  */  

-#define Z_APUICC_USAT_PRO_MSGTYPE_REFRESH   ZPS_ApUicc_USAT_PRO_MSGTYPE_REFRESH  

-#define ZPS_ApUicc_USAT_PRO_MSGTYPE_MORETIME (WORD)0x02    /*102223 6.6.4     MORE TIME  */  

-#define Z_APUICC_USAT_PRO_MSGTYPE_MORETIME  ZPS_ApUicc_USAT_PRO_MSGTYPE_MORETIME 

-#define ZPS_ApUicc_USAT_PRO_MSGTYPE_POLINTVL (WORD)0x03    /*102223 6.6.6     POLL INTERVAL */  

-#define Z_APUICC_USAT_PRO_MSGTYPE_POLINTVL  ZPS_ApUicc_USAT_PRO_MSGTYPE_POLINTVL 

-#define ZPS_ApUicc_USAT_PRO_MSGTYPE_POLLOFF  (WORD)0x04    /*102223 6.6.14    POLLING OFF  */  

-#define Z_APUICC_USAT_PRO_MSGTYPE_POLLOFF   ZPS_ApUicc_USAT_PRO_MSGTYPE_POLLOFF  

-#define ZPS_ApUicc_USAT_PRO_MSGTYPE_STUPEVNT (WORD)0x05    /*102223 6.6.16    SET UP EVENT LIST */  

-#define Z_APUICC_USAT_PRO_MSGTYPE_STUPEVNT  ZPS_ApUicc_USAT_PRO_MSGTYPE_STUPEVNT 

-#define ZPS_ApUicc_USAT_PRO_MSGTYPE_STUPCALL (WORD)0x10    /*102223 6.6.12    SET UP CALL */  

-#define Z_APUICC_USAT_PRO_MSGTYPE_STUPCALL  ZPS_ApUicc_USAT_PRO_MSGTYPE_STUPCALL 

-#define ZPS_ApUicc_USAT_PRO_MSGTYPE_SENDSS   (WORD)0x11    /*31111  6.4.11    SEND SS*/  

-#define Z_APUICC_USAT_PRO_MSGTYPE_SENDSS    ZPS_ApUicc_USAT_PRO_MSGTYPE_SENDSS   

-#define ZPS_ApUicc_USAT_PRO_MSGTYPE_SENDUSSD (WORD)0x12    /*31111  6.4.12    SEND USSD*/  

-#define Z_APUICC_USAT_PRO_MSGTYPE_SENDUSSD  ZPS_ApUicc_USAT_PRO_MSGTYPE_SENDUSSD 

-#define ZPS_ApUicc_USAT_PRO_MSGTYPE_SENDSMS  (WORD)0x13    /*102223 6.6.9     SEND SHORT MESSAGE */  

-#define Z_APUICC_USAT_PRO_MSGTYPE_SENDSMS   ZPS_ApUicc_USAT_PRO_MSGTYPE_SENDSMS  

-#define ZPS_ApUicc_USAT_PRO_MSGTYPE_SENDDTMF (WORD)0x14    /*102223 6.6.24    SEND DTMF COMMAND */  

-#define Z_APUICC_USAT_PRO_MSGTYPE_SENDDTMF  ZPS_ApUicc_USAT_PRO_MSGTYPE_SENDDTMF 

-#define ZPS_ApUicc_USAT_PRO_MSGTYPE_LCHBRWSR (WORD)0x15    /*102223 6.6.26    LAUNCH BROWSER */  

-#define Z_APUICC_USAT_PRO_MSGTYPE_LCHBRWSR  ZPS_ApUicc_USAT_PRO_MSGTYPE_LCHBRWSR 

-#define ZPS_ApUicc_USAT_PRO_MSGTYPE_PLAYTONE (WORD)0x20    /*102223 6.6.5     PLAY TONE */  

-#define Z_APUICC_USAT_PRO_MSGTYPE_PLAYTONE  ZPS_ApUicc_USAT_PRO_MSGTYPE_PLAYTONE 

-#define ZPS_ApUicc_USAT_PRO_MSGTYPE_DISPTEXT (WORD)0x21    /*102223 6.6.1     DISPLAY TEXT */  

-#define Z_APUICC_USAT_PRO_MSGTYPE_DISPTEXT  ZPS_ApUicc_USAT_PRO_MSGTYPE_DISPTEXT 

-#define ZPS_ApUicc_USAT_PRO_MSGTYPE_GETINKEY (WORD)0x22    /*102223 6.6.2     GET INKEY */  

-#define Z_APUICC_USAT_PRO_MSGTYPE_GETINKEY  ZPS_ApUicc_USAT_PRO_MSGTYPE_GETINKEY 

-#define ZPS_ApUicc_USAT_PRO_MSGTYPE_GETINPUT (WORD)0x23    /*102223 6.6.3     GET INPUT */  

-#define Z_APUICC_USAT_PRO_MSGTYPE_GETINPUT  ZPS_ApUicc_USAT_PRO_MSGTYPE_GETINPUT 

-#define ZPS_ApUicc_USAT_PRO_MSGTYPE_SELEITEM (WORD)0x24    /*102223 6.6.8     SELECT ITEM */  

-#define Z_APUICC_USAT_PRO_MSGTYPE_SELEITEM  ZPS_ApUicc_USAT_PRO_MSGTYPE_SELEITEM 

-#define ZPS_ApUicc_USAT_PRO_MSGTYPE_STUPMENU (WORD)0x25    /*102223 6.6.7     SET-UP MENU */  

-#define Z_APUICC_USAT_PRO_MSGTYPE_STUPMENU  ZPS_ApUicc_USAT_PRO_MSGTYPE_STUPMENU 

-#define ZPS_ApUicc_USAT_PRO_MSGTYPE_PLOCINFO (WORD)0x26    /*102223 6.6.15    PROVIDE LOCAL INFORMATION */  

-#define Z_APUICC_USAT_PRO_MSGTYPE_PLOCINFO  ZPS_ApUicc_USAT_PRO_MSGTYPE_PLOCINFO 

-#define ZPS_ApUicc_USAT_PRO_MSGTYPE_TIMERMNG (WORD)0x27    /*102223 6.6.21    TIMER MANAGEMENT */  

-#define Z_APUICC_USAT_PRO_MSGTYPE_TIMERMNG  ZPS_ApUicc_USAT_PRO_MSGTYPE_TIMERMNG 

-#define ZPS_ApUicc_USAT_PRO_MSGTYPE_STIDLTXT (WORD)0x28    /*102223 6.6.22    SET UP IDLE MODE TEXT */  

-#define Z_APUICC_USAT_PRO_MSGTYPE_STIDLTXT  ZPS_ApUicc_USAT_PRO_MSGTYPE_STIDLTXT 

-#define ZPS_ApUicc_USAT_PRO_MSGTYPE_PRCDAPDU (WORD)0x30    /*102223 6.6.17    PERFORM CARD APDU */  

-#define Z_APUICC_USAT_PRO_MSGTYPE_PRCDAPDU  ZPS_ApUicc_USAT_PRO_MSGTYPE_PRCDAPDU 

-#define ZPS_ApUicc_USAT_PRO_MSGTYPE_PONCARD  (WORD)0x31    /*102223 6.6.19    POWER ON CARD */  

-#define Z_APUICC_USAT_PRO_MSGTYPE_PONCARD   ZPS_ApUicc_USAT_PRO_MSGTYPE_PONCARD  

-#define ZPS_ApUicc_USAT_PRO_MSGTYPE_POFFCARD (WORD)0x32    /*102223 6.6.18    POWER OFF CARD */  

-#define Z_APUICC_USAT_PRO_MSGTYPE_POFFCARD  ZPS_ApUicc_USAT_PRO_MSGTYPE_POFFCARD 

-#define ZPS_ApUicc_USAT_PRO_MSGTYPE_GTRDRSTA (WORD)0x33    /*102223 6.6.20    GET READER STATUS */  

-#define Z_APUICC_USAT_PRO_MSGTYPE_GTRDRSTA  ZPS_ApUicc_USAT_PRO_MSGTYPE_GTRDRSTA 

-#define ZPS_ApUicc_USAT_PRO_MSGTYPE_RUNATCMD (WORD)0x34    /*102223 6.6.23    RUN AT COMMAND */  

-#define Z_APUICC_USAT_PRO_MSGTYPE_RUNATCMD  ZPS_ApUicc_USAT_PRO_MSGTYPE_RUNATCMD 

-#define ZPS_ApUicc_USAT_PRO_MSGTYPE_LNGNOTFY (WORD)0x35    /*102223 6.6.25    LANGUAGE NOTIFICATION */  

-#define Z_APUICC_USAT_PRO_MSGTYPE_LNGNOTFY  ZPS_ApUicc_USAT_PRO_MSGTYPE_LNGNOTFY 

-#define ZPS_ApUicc_USAT_PRO_MSGTYPE_OPENCHNL (WORD)0x40    /*102223 6.6.27    OPEN CHANNEL */  

-#define Z_APUICC_USAT_PRO_MSGTYPE_OPENCHNL  ZPS_ApUicc_USAT_PRO_MSGTYPE_OPENCHNL 

-#define ZPS_ApUicc_USAT_PRO_MSGTYPE_CLOSCHNL (WORD)0x41    /*102223 6.6.28    CLOSE CHANNEL */  

-#define Z_APUICC_USAT_PRO_MSGTYPE_CLOSCHNL  ZPS_ApUicc_USAT_PRO_MSGTYPE_CLOSCHNL 

-#define ZPS_ApUicc_USAT_PRO_MSGTYPE_RECVDATA (WORD)0x42    /*102223 6.6.29    RECEIVE DATA */  

-#define Z_APUICC_USAT_PRO_MSGTYPE_RECVDATA  ZPS_ApUicc_USAT_PRO_MSGTYPE_RECVDATA 

-#define ZPS_ApUicc_USAT_PRO_MSGTYPE_SENDDATA (WORD)0x43    /*102223 6.6.30    SEND DATA */  

-#define Z_APUICC_USAT_PRO_MSGTYPE_SENDDATA  ZPS_ApUicc_USAT_PRO_MSGTYPE_SENDDATA 

-#define ZPS_ApUicc_USAT_PRO_MSGTYPE_GTCHSTAT (WORD)0x44    /*102223 6.6.31    GET CHANNEL STATUS */  

-#define Z_APUICC_USAT_PRO_MSGTYPE_GTCHSTAT  ZPS_ApUicc_USAT_PRO_MSGTYPE_GTCHSTAT 

-#define ZPS_ApUicc_USAT_PRO_MSGTYPE_SERVSRCH (WORD)0x45    /*102223 6.6.32    SERVICE SEARCH */  

-#define Z_APUICC_USAT_PRO_MSGTYPE_SERVSRCH  ZPS_ApUicc_USAT_PRO_MSGTYPE_SERVSRCH 

-#define ZPS_ApUicc_USAT_PRO_MSGTYPE_GTSERINF (WORD)0x46    /*102223 6.6.33    GET SERVICE INFORMATION */  

-#define Z_APUICC_USAT_PRO_MSGTYPE_GTSERINF  ZPS_ApUicc_USAT_PRO_MSGTYPE_GTSERINF 

-#define ZPS_ApUicc_USAT_PRO_MSGTYPE_DECLSERV (WORD)0x47    /*102223 6.6.34    DECLARE SERVICE */  

-#define Z_APUICC_USAT_PRO_MSGTYPE_DECLSERV  ZPS_ApUicc_USAT_PRO_MSGTYPE_DECLSERV 

-#define ZPS_ApUicc_USAT_PRO_MSGTYPE_SETFRAMES (WORD)0x50    /*102223 6.6.35    SET FRAMES */  

-#define Z_APUICC_USAT_PRO_MSGTYPE_SETFRAMES  ZPS_ApUicc_USAT_PRO_MSGTYPE_SETFRAMES 

-#define ZPS_ApUicc_USAT_PRO_MSGTYPE_SETFRAMESSTATUS (WORD)0x51    /*102223 6.6.36    SET FRAMES STATUS*/  

-#define Z_APUICC_USAT_PRO_MSGTYPE_SETFRAMESSTATUS  ZPS_ApUicc_USAT_PRO_MSGTYPE_SETFRAMESSTATUS 

-#define ZPS_ApUicc_USAT_PRO_MSGTYPE_RETMULTMSG (WORD)0x60    /*102223 6.6.37    RETREIVE MULTIMEDIA MESSAGE*/  

-#define Z_APUICC_USAT_PRO_MSGTYPE_RETMULTMSG  ZPS_ApUicc_USAT_PRO_MSGTYPE_RETMULTMSG 

-#define ZPS_ApUicc_USAT_PRO_MSGTYPE_SUBMULTMSG (WORD)0x61    /*102223 6.6.38    SUBMIT MULTIMEDIA MESSAGE*/  

-#define Z_APUICC_USAT_PRO_MSGTYPE_SUBMULTMSG  ZPS_ApUicc_USAT_PRO_MSGTYPE_SUBMULTMSG 

-#define ZPS_ApUicc_USAT_PRO_MSGTYPE_DISMULTMSG (WORD)0x62    /*102223 6.6.39    DISPLAY MULTIMEDIA MESSAGE*/  

-#define Z_APUICC_USAT_PRO_MSGTYPE_DISMULTMSG  ZPS_ApUicc_USAT_PRO_MSGTYPE_DISMULTMSG 

-#define ZPS_ApUicc_USAT_PRO_MSGTYPE_ACTIVE (WORD)0x70    /*102223 6.6.40    ACTIVE */  

-#define Z_APUICC_USAT_PRO_MSGTYPE_ACTIVE  ZPS_ApUicc_USAT_PRO_MSGTYPE_ACTIVE 

-#define ZPS_ApUicc_USAT_PRO_MSGTYPE_CONTSTATCHANGE (WORD)0x71    /*102223 6.6.41    CONTACTLESS STATE CHANGED */  

-#define Z_APUICC_USAT_PRO_MSGTYPE_CONTSTATCHANGE  ZPS_ApUicc_USAT_PRO_MSGTYPE_CONTSTATCHANGE 

-#define ZPS_ApUicc_USAT_PRO_MSGTYPE_CMDCONT (WORD)0x72    /*102223 6.6.42    COMMAND CONTAINER */  

-#define Z_APUICC_USAT_PRO_MSGTYPE_CCMDCONT  ZPS_ApUicc_USAT_PRO_MSGTYPE_CMDCONT

-#define ZPS_ApUicc_USAT_PRO_MSGTYPE_ENCSESSCONT (WORD)0x73    /*102223 6.6.43    ENCAPSULATED SESSION CONTROL */  

-#define Z_APUICC_USAT_PRO_MSGTYPE_ENCSESSCONT   ZPS_ApUicc_USAT_PRO_MSGTYPE_ENCSESSCONT 

-

-/*evelopÃüÁî*/

-#define ZPS_ApUicc_USAT_EVELP_MSGTYPE_SMSDOWN  (WORD)0x01    /*31111 7.1.1.2    SMS-PP DOWNLOAD*/  

-#define Z_APUICC_USAT_EVELP_MSGTYPE_SMSDOWN     ZPS_ApUicc_USAT_EVELP_MSGTYPE_SMSDOWN  

-#define ZPS_ApUicc_USAT_EVELP_MSGTYPE_CBSDOWN  (WORD)0x02    /*31111 7.1.2.2    CELL BROADCAST DOWNLOAD*/  

-#define Z_APUICC_USAT_EVELP_MSGTYPE_CBSDOWN     ZPS_ApUicc_USAT_EVELP_MSGTYPE_CBSDOWN  

-#define ZPS_ApUicc_USAT_EVELP_MSGTYPE_MENUSEL  (WORD)0x03    /*102223 7.2       Menu selection */  

-#define Z_APUICC_USAT_EVELP_MSGTYPE_MENUSEL     ZPS_ApUicc_USAT_EVELP_MSGTYPE_MENUSEL  

-#define ZPS_ApUicc_USAT_EVELP_MSGTYPE_CALLCTRL (WORD)0x04    /*102223 7.3       Call Control by NAA */  

-#define Z_APUICC_USAT_EVELP_MSGTYPE_CALLCTRL    ZPS_ApUicc_USAT_EVELP_MSGTYPE_CALLCTRL 

-#define ZPS_ApUicc_USAT_EVELP_MSGTYPE_SMSCTR   (WORD)0x05    /*31111  7.3.1.6   CALL CONTROL*/  

-#define Z_APUICC_USAT_EVELP_MSGTYPE_SMSCTR      ZPS_ApUicc_USAT_EVELP_MSGTYPE_SMSCTR   

-#define ZPS_ApUicc_USAT_EVELP_MSGTYPE_TIMREXP  (WORD)0x06    /*102223 7.4       Timer expiration */  

-#define Z_APUICC_USAT_EVELP_MSGTYPE_TIMREXP     ZPS_ApUicc_USAT_EVELP_MSGTYPE_TIMREXP  

-#define ZPS_ApUicc_USAT_EVELP_MSGTYPE_ET_MTCAL (WORD)0x07    /*102223 7.5.1     MT call event */  

-#define Z_APUICC_USAT_EVELP_MSGTYPE_ET_MTCAL    ZPS_ApUicc_USAT_EVELP_MSGTYPE_ET_MTCAL 

-#define ZPS_ApUicc_USAT_EVELP_MSGTYPE_ET_CCONT (WORD)0x08    /*102223 7.5.2     Call connected event */  

-#define Z_APUICC_USAT_EVELP_MSGTYPE_ET_CCONT    ZPS_ApUicc_USAT_EVELP_MSGTYPE_ET_CCONT 

-#define ZPS_ApUicc_USAT_EVELP_MSGTYPE_ET_DCONT (WORD)0x09    /*102223 7.5.3     Call disconnected event */  

-#define Z_APUICC_USAT_EVELP_MSGTYPE_ET_DCONT    ZPS_ApUicc_USAT_EVELP_MSGTYPE_ET_DCONT 

-#define ZPS_ApUicc_USAT_EVELP_MSGTYPE_ET_LOCST (WORD)0x0A    /*102223 7.5.4     Location status event */  

-#define Z_APUICC_USAT_EVELP_MSGTYPE_ET_LOCST    ZPS_ApUicc_USAT_EVELP_MSGTYPE_ET_LOCST 

-#define ZPS_ApUicc_USAT_EVELP_MSGTYPE_ET_USRAC (WORD)0x0B    /*102223 7.5.5     User activity event */  

-#define Z_APUICC_USAT_EVELP_MSGTYPE_ET_USRAC    ZPS_ApUicc_USAT_EVELP_MSGTYPE_ET_USRAC 

-#define ZPS_ApUicc_USAT_EVELP_MSGTYPE_ET_SCNAV (WORD)0x0C    /*102223 7.5.6     Idle screen available event */  

-#define Z_APUICC_USAT_EVELP_MSGTYPE_ET_SCNAV    ZPS_ApUicc_USAT_EVELP_MSGTYPE_ET_SCNAV 

-#define ZPS_ApUicc_USAT_EVELP_MSGTYPE_ET_CRSTA (WORD)0x0D    /*102223 7.5.7     Card reader status event */  

-#define Z_APUICC_USAT_EVELP_MSGTYPE_ET_CRSTA    ZPS_ApUicc_USAT_EVELP_MSGTYPE_ET_CRSTA 

-#define ZPS_ApUicc_USAT_EVELP_MSGTYPE_ET_LNGSL (WORD)0x0E    /*102223 7.5.8     Language selection event */  

-#define Z_APUICC_USAT_EVELP_MSGTYPE_ET_LNGSL    ZPS_ApUicc_USAT_EVELP_MSGTYPE_ET_LNGSL 

-#define ZPS_ApUicc_USAT_EVELP_MSGTYPE_ET_BRSTR (WORD)0x0F    /*102223 7.5.9     Browser termination event */  

-#define Z_APUICC_USAT_EVELP_MSGTYPE_ET_BRSTR    ZPS_ApUicc_USAT_EVELP_MSGTYPE_ET_BRSTR 

-#define ZPS_ApUicc_USAT_EVELP_MSGTYPE_ET_DATAV (WORD)0x10    /*102223 7.5.10    Data available event */  

-#define Z_APUICC_USAT_EVELP_MSGTYPE_ET_DATAV    ZPS_ApUicc_USAT_EVELP_MSGTYPE_ET_DATAV 

-#define ZPS_ApUicc_USAT_EVELP_MSGTYPE_ET_CHSTA (WORD)0x11    /*102223 7.5.11    Channel status event */  

-#define Z_APUICC_USAT_EVELP_MSGTYPE_ET_CHSTA    ZPS_ApUicc_USAT_EVELP_MSGTYPE_ET_CHSTA 

-#define ZPS_ApUicc_USAT_EVELP_MSGTYPE_ET_ACTCH (WORD)0x12    /*102223 7.5.12    Access technology change event */  

-#define Z_APUICC_USAT_EVELP_MSGTYPE_ET_ACTCH    ZPS_ApUicc_USAT_EVELP_MSGTYPE_ET_ACTCH 

-#define ZPS_ApUicc_USAT_EVELP_MSGTYPE_ET_PARCH (WORD)0x13    /*102223 7.5.13    Display parameters changed event */  

-#define Z_APUICC_USAT_EVELP_MSGTYPE_ET_PARCH    ZPS_ApUicc_USAT_EVELP_MSGTYPE_ET_PARCH 

-#define ZPS_ApUicc_USAT_EVELP_MSGTYPE_ET_LOCNT (WORD)0x14    /*102223 7.5.14    Local connection event */  

-#define Z_APUICC_USAT_EVELP_MSGTYPE_ET_LOCNT    ZPS_ApUicc_USAT_EVELP_MSGTYPE_ET_LOCNT 

-#define ZPS_ApUicc_USAT_EVELP_MSGTYPE_ET_NWREJ (WORD)0x15    /*102223 7.5.17    Network Reject event */  

-#define Z_APUICC_USAT_EVELP_MSGTYPE_ET_NWREJ    ZPS_ApUicc_USAT_EVELP_MSGTYPE_ET_NWREJ 

-

-/*envelop»Ø¸´ÏûÏ¢ÖеÄÃüÁîÀàÐÍ*/

-#define ZPS_ApUicc_MSGTYPE_SMSCTR_CNF           (WORD)0x01 

-#define Z_APUICC_MSGTYPE_SMSCTR_CNF             ZPS_ApUicc_MSGTYPE_SMSCTR_CNF

-#define ZPS_ApUicc_MSGTYPE_CALCTR_CNF           (WORD)0x02 

-#define Z_APUICC_MSGTYPE_CALCTR_CNF           ZPS_ApUicc_MSGTYPE_CALCTR_CNF

-#define ZPS_ApUicc_MSGTYPE_SMSDOW_CNF           (WORD)0x03 

-#define Z_APUICC_MSGTYPE_SMSDOW_CNF           ZPS_ApUicc_MSGTYPE_SMSDOW_CNF

-

-/*Terminal response*/

-#define ZPS_ApUicc_USAT_TERMRSP_MSGTYPE_TERMLRSP     (WORD)0x3D    /*102223 6.8  Structure of TERMINAL RESPONSE */  

-#define Z_APUICC_USAT_TERMRSP_MSGTYPE_TERMLRSP  ZPS_ApUicc_USAT_TERMRSP_MSGTYPE_TERMLRSP     

-

-/*Terminal profile*/

-#define ZPS_ApUicc_USAT_TERMPRFL_MSGTYPE_TERMLPRO    (WORD)0x3E    /*102223 5.2  Structure and coding of TERMINAL PROFILE */  

-#define Z_APUICC_USAT_TERMPRFL_MSGTYPE_TERMLPRO ZPS_ApUicc_USAT_TERMPRFL_MSGTYPE_TERMLPRO    

-

-

-/*102223 8.52 Bearer description (bearer type)*/

-#define ZPS_ApUicc_USAT_BEARTYPE_CSD             (BYTE)0x01     /*reserved for as_gsm/3GPP CSD*/  

-#define Z_APUICC_USAT_BEARTYPE_CSD              ZPS_ApUicc_USAT_BEARTYPE_CSD             

-#define ZPS_ApUicc_USAT_BEARTYPE_3GGPRS          (BYTE)0x02     /*reserved for as_gsm/3GPP packet data service*/  

-#define Z_APUICC_USAT_BEARTYPE_3GGPRS           ZPS_ApUicc_USAT_BEARTYPE_3GGPRS          

-#define ZPS_ApUicc_USAT_BEARTYPE_DEFAUT          (BYTE)0x03     /*default bearer for requested transport layer*/  

-#define Z_APUICC_USAT_BEARTYPE_DEFAUT           ZPS_ApUicc_USAT_BEARTYPE_DEFAUT          

-#define ZPS_ApUicc_USAT_BEARTYPE_LOCALINK        (BYTE)0x04     /*local link technology independent*/  

-#define Z_APUICC_USAT_BEARTYPE_LOCALINK         ZPS_ApUicc_USAT_BEARTYPE_LOCALINK        

-#define ZPS_ApUicc_USAT_BEARTYPE_BLUTOOTH        (BYTE)0x05     /*Bluetooth*/  

-#define Z_APUICC_USAT_BEARTYPE_BLUTOOTH         ZPS_ApUicc_USAT_BEARTYPE_BLUTOOTH        

-#define ZPS_ApUicc_USAT_BEARTYPE_IRDA            (BYTE)0x06     /*IrDA*/  

-#define Z_APUICC_USAT_BEARTYPE_IRDA             ZPS_ApUicc_USAT_BEARTYPE_IRDA            

-#define ZPS_ApUicc_USAT_BEARTYPE_RS232           (BYTE)0x07     /*RS232*/  

-#define Z_APUICC_USAT_BEARTYPE_RS232            ZPS_ApUicc_USAT_BEARTYPE_RS232           

-#define ZPS_ApUicc_USAT_BEARTYPE_TIAGPRS         (BYTE)0x08     /*TIA/IS-820-A packet data service*/  

-#define Z_APUICC_USAT_BEARTYPE_TIAGPRS          ZPS_ApUicc_USAT_BEARTYPE_TIAGPRS         

-#define ZPS_ApUicc_USAT_BEARTYPE_EMUPDS             (BYTE)0x0B     /*E-UTRAN/Mapped UTRAN packet data service*/  

-#define Z_APUICC_USAT_BEARTYPE_EMUPDS              ZPS_ApUicc_USAT_BEARTYPE_EMUPDS  

-#define ZPS_ApUicc_USAT_BEARTYPE_USB             (BYTE)0x10     /*USB*/  

-#define Z_APUICC_USAT_BEARTYPE_USB              ZPS_ApUicc_USAT_BEARTYPE_USB             

-

-/*31111 8.6 ±¾µØÐÅϢѡÏî*/

-#define ZPS_ApUicc_USAT_LOCINF_LOCAT             (BYTE)0x00     /*Location Information (MCC, MNC, LAC, Cell Identity and Extended Cell Identity)*/  

-#define Z_APUICC_USAT_LOCINF_LOCAT              ZPS_ApUicc_USAT_LOCINF_LOCAT             

-#define ZPS_ApUicc_USAT_LOCINF_IMEI              (BYTE)0x01     /*IMEI of the terminal*/  

-#define Z_APUICC_USAT_LOCINF_IMEI               ZPS_ApUicc_USAT_LOCINF_IMEI              

-#define ZPS_ApUicc_USAT_LOCINF_NMR               (BYTE)0x02     /*Network Measurement results£¬°üÀ¨BCCH*/  

-#define Z_APUICC_USAT_LOCINF_NMR                ZPS_ApUicc_USAT_LOCINF_NMR               

-#define ZPS_ApUicc_USAT_LOCINF_DTZ               (BYTE)0x03     /*Date, time and time zone*/  

-#define Z_APUICC_USAT_LOCINF_DTZ                ZPS_ApUicc_USAT_LOCINF_DTZ               

-#define ZPS_ApUicc_USAT_LOCINF_LANG              (BYTE)0x04     /*Language setting*/  

-#define Z_APUICC_USAT_LOCINF_LANG               ZPS_ApUicc_USAT_LOCINF_LANG              

-#define ZPS_ApUicc_USAT_LOCINF_TIMADV            (BYTE)0x05     /*Timing Advance*/  

-#define Z_APUICC_USAT_LOCINF_TIMADV             ZPS_ApUicc_USAT_LOCINF_TIMADV            

-#define ZPS_ApUicc_USAT_LOCINF_ACT               (BYTE)0x06     /*Access Technology*/  

-#define Z_APUICC_USAT_LOCINF_ACT                ZPS_ApUicc_USAT_LOCINF_ACT               

-#define ZPS_ApUicc_USAT_LOCINF_IMEISV               (BYTE)0x08     /*ImeiSv*/  

-#define Z_APUICC_USAT_LOCINF_IMEISV           ZPS_ApUicc_USAT_LOCINF_IMEISV          

-

-/*Êý¾Ý×î´óÖµ*/

-#define ZPS_APUICC_USAT_MAX_BCDNUM_LEN           (BYTE)40   /*ap-mmia½Ó¿Ú£¬ºêZPS_APMMIA_MAX_BCDNUM_LEN*/     

-#define Z_APUICC_USAT_MAX_BCDNUM_LEN        ZPS_APUICC_USAT_MAX_BCDNUM_LEN           

-#define ZPS_APUICC_USAT_MAX_ALPHA_LEN            (BYTE)241  /*ÖÐÒÆ¹æ·¶6.4.5.2*/    

-#define Z_APUICC_USAT_MAX_ALPHA_LEN         ZPS_APUICC_USAT_MAX_ALPHA_LEN            

-#define ZPS_APUICC_USAT_MAX_SUBADR_LEN           (BYTE)21   /*ƽ̨Ìṩ*/    

-#define Z_APUICC_USAT_MAX_SUBADR_LEN        ZPS_APUICC_USAT_MAX_SUBADR_LEN           

-#define ZPS_APUICC_USAT_MAX_BC_LEN               (BYTE)16   /*²ã3½á¹¹£¬T_zPS_L3_Bc(l3cc.h)*/    

-#define Z_APUICC_USAT_MAX_BC_LEN            ZPS_APUICC_USAT_MAX_BC_LEN               

-#define ZPS_APUICC_USAT_MAX_TXTATTR_LEN          (BYTE)4    /*102223 8.72*/         

-#define Z_APUICC_USAT_MAX_TXTATTR_LEN       ZPS_APUICC_USAT_MAX_TXTATTR_LEN          

-#define ZPS_APUICC_USAT_MAX_SSSTR_LEN            (BYTE)80   /*ƽ̨Ìṩ¾­ÑéÖµ*/   

-#define Z_APUICC_USAT_MAX_SSSTR_LEN         ZPS_APUICC_USAT_MAX_SSSTR_LEN            

-#define ZPS_APUICC_USAT_MAX_USSDSTR_LEN          (BYTE)80   /*ƽ̨Ìṩ¾­ÑéÖµ*/   

-#define Z_APUICC_USAT_MAX_USSDSTR_LEN       ZPS_APUICC_USAT_MAX_USSDSTR_LEN          

-#define ZPS_APUICC_USAT_MAX_TXTSTR_LEN           (BYTE)244  /*°´ÕÕ×îС¼¯£¬¼ÆËãµÄ×î´óÖµ*/   

-#define Z_APUICC_USAT_MAX_TXTSTR_LEN        ZPS_APUICC_USAT_MAX_TXTSTR_LEN           

-#define ZPS_APUICC_USAT_MAX_FILELST_LEN          (BYTE)64    /*ƽ̨Ìṩ¾­ÑéÖµ*/   

-#define Z_APUICC_USAT_MAX_FILELST_LEN       ZPS_APUICC_USAT_MAX_FILELST_LEN          

-#define ZPS_APUICC_USAT_MAX_EVNTLST_LEN          (BYTE)28   /*102223 8.25*/    

-#define Z_APUICC_USAT_MAX_EVNTLST_LEN       ZPS_APUICC_USAT_MAX_EVNTLST_LEN          

-#define ZPS_APUICC_USAT_MAX_CREADRID_LEN         (BYTE)255  /*Ôݶ¨*/    

-#define Z_APUICC_USAT_MAX_CREADRID_LEN      ZPS_APUICC_USAT_MAX_CREADRID_LEN         

-#define ZPS_APUICC_USAT_MAX_CARDATR_LEN          (BYTE)255  /*Ôݶ¨*/    

-#define Z_APUICC_USAT_MAX_CARDATR_LEN       ZPS_APUICC_USAT_MAX_CARDATR_LEN          

-#define ZPS_APUICC_USAT_MAX_RPDUDATA_LEN         (BYTE)237  /*102223 8.36*/    

-#define Z_APUICC_USAT_MAX_RPDUDATA_LEN      ZPS_APUICC_USAT_MAX_RPDUDATA_LEN         

-#define ZPS_APUICC_USAT_MAX_ATRSP_LEN            (BYTE)255  /*Ôݶ¨*/    

-#define Z_APUICC_USAT_MAX_ATRSP_LEN         ZPS_APUICC_USAT_MAX_ATRSP_LEN            

-#define ZPS_APUICC_USAT_MAX_BEARPRAM_LEN         (BYTE)13   /*ƽ̨Ìṩ¾­ÑéÖµ*/   

-#define Z_APUICC_USAT_MAX_BEARPRAM_LEN      ZPS_APUICC_USAT_MAX_BEARPRAM_LEN         

-#define ZPS_APUICC_USAT_MAX_CHNLDATA_LEN         (BYTE)255  /*Ôݶ¨*/    

-#define Z_APUICC_USAT_MAX_CHNLDATA_LEN      ZPS_APUICC_USAT_MAX_CHNLDATA_LEN         

-#define ZPS_APUICC_USAT_MAX_OTHRADDR_LEN         (BYTE)16   /*102223 8.58*/    

-#define Z_APUICC_USAT_MAX_OTHRADDR_LEN      ZPS_APUICC_USAT_MAX_OTHRADDR_LEN         

-#define ZPS_APUICC_USAT_MAX_AID_LEN              (BYTE)16   /*UICCMNG¾­ÑéÖµEFaid*/    

-#define Z_APUICC_USAT_MAX_AID_LEN           ZPS_APUICC_USAT_MAX_AID_LEN              

-#define ZPS_APUICC_USAT_MAX_SRVRCRD_LEN          (BYTE)255  /*Ôݶ¨*/   

-#define Z_APUICC_USAT_MAX_SRVRCRD_LEN       ZPS_APUICC_USAT_MAX_SRVRCRD_LEN          

-#define ZPS_APUICC_USAT_MAX_DVCFLTR_LEN          (BYTE)255   /*Ôݶ¨*/   

-#define Z_APUICC_USAT_MAX_DVCFLTR_LEN       ZPS_APUICC_USAT_MAX_DVCFLTR_LEN          

-#define ZPS_APUICC_USAT_MAX_SRVSRCH_LEN          (BYTE)255  /*Ôݶ¨*/   

-#define Z_APUICC_USAT_MAX_SRVSRCH_LEN       ZPS_APUICC_USAT_MAX_SRVSRCH_LEN          

-#define ZPS_APUICC_USAT_MAX_ATTRINF_LEN          (BYTE)255  /*Ôݶ¨*/   

-#define Z_APUICC_USAT_MAX_ATTRINF_LEN       ZPS_APUICC_USAT_MAX_ATTRINF_LEN          

-#define ZPS_APUICC_USAT_MAX_SRVLST_LEN           (BYTE)255  /*Ôݶ¨*/   

-#define Z_APUICC_USAT_MAX_SRVLST_LEN        ZPS_APUICC_USAT_MAX_SRVLST_LEN           

-#define ZPS_APUICC_USAT_MAX_REMADDR_LEN          (BYTE)6   /*ƽ̨Ìṩ¾­ÑéÖµ*/   

-#define Z_APUICC_USAT_MAX_REMADDR_LEN       ZPS_APUICC_USAT_MAX_REMADDR_LEN          

-#define ZPS_APUICC_USAT_MAX_NETNAME_LEN          (BYTE)100  /*ƽ̨Ìṩ¾­ÑéÖµ*/   

-#define Z_APUICC_USAT_MAX_NETNAME_LEN       ZPS_APUICC_USAT_MAX_NETNAME_LEN          

-#define ZPS_APUICC_USAT_MAX_IMEI_LEN             (BYTE)8    /* T_zPS_IMEI(psCom.h)*/    

-#define Z_APUICC_USAT_MAX_IMEI_LEN          ZPS_APUICC_USAT_MAX_IMEI_LEN   

-#define ZPS_APUICC_USAT_MAX_IMEISV_LEN             (BYTE)8    /* T_zPS_IMEI(psCom.h)*/    

-#define Z_APUICC_USAT_MAX_IMEISV_LEN          ZPS_APUICC_USAT_MAX_IMEISV_LEN   

-#define ZPS_APUICC_USAT_MAX_MNRRLT_LEN           (BYTE)16   /*31.111 8.22*/    

-#define Z_APUICC_USAT_MAX_MNRRLT_LEN        ZPS_APUICC_USAT_MAX_MNRRLT_LEN           

-#define ZPS_APUICC_USAT_MAX_BCCHLST_LEN          (BYTE)255  /*ƽ̨Ìṩ¾­ÑéÖµ*/   

-#define Z_APUICC_USAT_MAX_BCCHLST_LEN       ZPS_APUICC_USAT_MAX_BCCHLST_LEN          

-#define ZPS_APUICC_USAT_MAX_ATSTR_LEN            (BYTE)255  /*Ôݶ¨*/   

-#define Z_APUICC_USAT_MAX_ATSTR_LEN         ZPS_APUICC_USAT_MAX_ATSTR_LEN            

-#define ZPS_APUICC_USAT_MAX_URL_LEN              (BYTE)226  /*ƽ̨Ìṩ¾­ÑéÖµ*/   

-#define Z_APUICC_USAT_MAX_URL_LEN           ZPS_APUICC_USAT_MAX_URL_LEN              

-#define ZPS_APUICC_USAT_MAX_PROFILE_LEN          (BYTE)60   /*°´ÕÕ×îС¼¯£¬¼ÆËãµÄ×î´óÖµ*/    

-#define Z_APUICC_USAT_MAX_PROFILE_LEN       ZPS_APUICC_USAT_MAX_PROFILE_LEN          

-#define ZPS_APUICC_USAT_MAX_BEARLST_LEN          (BYTE)5    /*ƽ̨Ìṩ¾­ÑéÖµ*/   

-#define Z_APUICC_USAT_MAX_BEARLST_LEN       ZPS_APUICC_USAT_MAX_BEARLST_LEN          

-#define ZPS_APUICC_USAT_MAX_DISCCAUS_LEN         (BYTE)30   /*102223 8.26*/    

-#define Z_APUICC_USAT_MAX_DISCCAUS_LEN      ZPS_APUICC_USAT_MAX_DISCCAUS_LEN         

-#define ZPS_APUICC_USAT_MAX_TPDU_LEN             (BYTE)164  /*mmia-sms½Ó¿Ú£¬ZPS_MMIASMS_MAX_TPDU_LEN(mmiasmsInt.h)*/    

-#define Z_APUICC_USAT_MAX_TPDU_LEN          ZPS_APUICC_USAT_MAX_TPDU_LEN             

-#define ZPS_APUICC_USAT_MAX_TPUD_LEN             (BYTE)128  /*31.111 7.1.1.2*/    

-#define Z_APUICC_USAT_MAX_TPUD_LEN          ZPS_APUICC_USAT_MAX_TPUD_LEN             

-#define ZPS_APUICC_USAT_MAX_CBSPAG_LEN           (BYTE)88   /*31.111 8.5*/    

-#define Z_APUICC_USAT_MAX_CBSPAG_LEN        ZPS_APUICC_USAT_MAX_CBSPAG_LEN           

-#define ZPS_APUICC_USAT_MAX_CAPDUDAT_LEN         (BYTE)236  /*102223 8.35*/  

-#define Z_APUICC_USAT_MAX_CAPDUDAT_LEN      ZPS_APUICC_USAT_MAX_CAPDUDAT_LEN         

-#define ZPS_APUICC_USAT_MAX_ITEM_NUM             (BYTE)30   /*°´ÕÕ×îС¼¯£¬¼ÆËãµÄ×î´óÖµ*/  

-#define Z_APUICC_USAT_MAX_ITEM_NUM          ZPS_APUICC_USAT_MAX_ITEM_NUM             

-#define ZPS_APUICC_USAT_MAX_ADDINFO_LEN          (BYTE)5    /*Ôݶ¨*/  

-#define Z_APUICC_USAT_MAX_ADDINFO_LEN       ZPS_APUICC_USAT_MAX_ADDINFO_LEN          

-#define ZPS_ApUicc_USAT_PdpAddr                  (BYTE)20    /*²ÎÕÕ²ã3*/  

-#define Z_APUICC_USAT_PdpAddr               ZPS_ApUicc_USAT_PdpAddr                  

-#define ZPS_ApUicc_USAT_Apn                      (BYTE)100   /*²ÎÕÕ²ã3*/  

-#define Z_APUICC_USAT_Apn                   ZPS_ApUicc_USAT_Apn                      

-#define ZPS_ApUicc_USAT_ProtoID                  (BYTE)50    /*²ÎÕÕ²ã3*/  

-#define Z_APUICC_USAT_ProtoID               ZPS_ApUicc_USAT_ProtoID    

-#define Z_APUICC_USAT_BIP_CHANNEL_NUM               (BYTE)7    

-

-#define Z_APUICC_CMD_SUCC                    0

-#define Z_APUICC_CMD_FAIL                    1

-

-#define ZPS_ApUicc_CMD_SUCC                    Z_APUICC_CMD_SUCC

-#define ZPS_ApUicc_CMD_FAIL                    Z_APUICC_CMD_FAIL

-

-

-

-/*=====the macro  of err, define in the 27.007=====*/

-#define     ZPS_ApUicc_NO_CARD                (DWORD)10                        /*SIM not inserted*/  

-#define     Z_APUICC_NO_CARD                ZPS_ApUicc_NO_CARD                

-#define     ZPS_ApUicc_NEED_PIN               (DWORD)11                        /*SIM PIN required*/  

-#define     Z_APUICC_NEED_PIN               ZPS_ApUicc_NEED_PIN               

-#define     ZPS_ApUicc_NEED_UNBLPIN           (DWORD)12                        /*SIM PUK required*/  

-#define     Z_APUICC_NEED_UNBLPIN           ZPS_ApUicc_NEED_UNBLPIN           

-#define     ZPS_ApUicc_CARD_FAILED            (DWORD)13                        /*SIM faliure*/  

-#define     Z_APUICC_CARD_FAILED            ZPS_ApUicc_CARD_FAILED            

-#define     ZPS_ApUicc_CARD_BUSY              (DWORD)14                        /*SIM busy*/  

-#define     Z_APUICC_CARD_BUSY              ZPS_ApUicc_CARD_BUSY              

-#define     ZPS_ApUicc_CARD_WRONG             (DWORD)15                        /*SIM wrong*/  

-#define     Z_APUICC_CARD_WRONG             ZPS_ApUicc_CARD_WRONG             

-#define     ZPS_ApUicc_PIN_INCORRECT          (DWORD)16                        /*incorrect password*/  

-#define     Z_APUICC_PIN_INCORRECT          ZPS_ApUicc_PIN_INCORRECT          

-#define     ZPS_ApUicc_NEED_PIN2              (DWORD)17                        /*SIM PIN2 required*/  

-#define     Z_APUICC_NEED_PIN2              ZPS_ApUicc_NEED_PIN2              

-#define     ZPS_ApUicc_NEED_UNBLPIN2          (DWORD)18                        /*SIM PUK2 required*/  

-#define     Z_APUICC_NEED_UNBLPIN2          ZPS_ApUicc_NEED_UNBLPIN2          

-#define     ZPS_ApUicc_OPER_NOT_ALLOWED       (DWORD)3  

-#define     Z_APUICC_OPER_NOT_ALLOWED       ZPS_ApUicc_OPER_NOT_ALLOWED       

-

-/*UiccMngÐèÒªÀ©Õ¹µÄ´íÎóÂë*/

-#define     ZPS_ApUicc_APPL_FAIL              (DWORD)ZPS_ApUicc_CARD_FAILED   /*the unblock pin of the application is blocked

-                                                                               *ÓëÆ½Ì¨Ïà¹ØÈËÔ±ÌÖÂÛºó£¬ÔÝÓëCardFailÖµÏàͬ*/

-#define     Z_APUICC_APPL_FAIL              ZPS_ApUicc_APPL_FAIL              

-                                                                               

-/*USAT½âÂë´íÎóÂë*/

-#define ZPS_ApUicc_USAT_DE_MSGSHORT_ERR        (DWORD)262     /*TLV½á¹¹²»È«*/  

-#define Z_APUICC_USAT_DE_MSGSHORT_ERR       ZPS_ApUicc_USAT_DE_MSGSHORT_ERR        

-#define ZPS_ApUicc_USAT_DE_MISSOINFO_ERR       (DWORD)263     /*ÔªËØ²»È«£¬µ«ÓÐ×îС¼¯*/  

-#define Z_APUICC_USAT_DE_MISSOINFO_ERR      ZPS_ApUicc_USAT_DE_MISSOINFO_ERR       

-#define ZPS_ApUicc_USAT_DE_MISSMINFO_ERR       (DWORD)264     /*ȱÉÙ×îС¼¯*/  

-#define Z_APUICC_USAT_DE_MISSMINFO_ERR      ZPS_ApUicc_USAT_DE_MISSMINFO_ERR       

-#define ZPS_ApUicc_USAT_DE_UNKNOW_ERR          (DWORD)265     /*²»¿ÉÀí½â*/  

-#define Z_APUICC_USAT_DE_UNKNOW_ERR         ZPS_ApUicc_USAT_DE_UNKNOW_ERR          

-#define ZPS_ApUicc_USAT_DE_PATIAL_ERR          (DWORD)266     /*²¿·ÖÀí½â*/  

-#define Z_APUICC_USAT_DE_PATIAL_ERR         ZPS_ApUicc_USAT_DE_PATIAL_ERR          

-#define ZPS_ApUicc_USAT_DE_LENTH_ERR           (DWORD)267     /*³¤¶ÈÓÐÎó**/  

-#define Z_APUICC_USAT_DE_LENTH_ERR          ZPS_ApUicc_USAT_DE_LENTH_ERR           

-

-/*USAT±àÂë´íÎóÂë*/

-#define ZPS_ApUicc_USAT_EN_MSGWRONG_ERR        (DWORD)268     /*ÉϲãÄ£¿é·¢ÏµÄÏûÏ¢ÄÚÈݲ»¶Ô£¬²»ÄܱàÂë*/  

-#define Z_APUICC_USAT_EN_MSGWRONG_ERR       ZPS_ApUicc_USAT_EN_MSGWRONG_ERR        

-#define ZPS_ApUicc_USAT_EN_UKNOW_ERR           (DWORD)269     /*±àÂëδ֪´íÎó*/  

-#define Z_APUICC_USAT_EN_UKNOW_ERR          ZPS_ApUicc_USAT_EN_UKNOW_ERR           

-

-/*USATÔö¼Ó´íÎóÂë*/

-#define     ZPS_ApUicc_USAT_ENDFETCH             (DWORD)270     /*SW = 91XX*/  

-#define     Z_APUICC_USAT_ENDFETCH          ZPS_ApUicc_USAT_ENDFETCH             

-#define     ZPS_ApUicc_USAT_BUSY                 (DWORD)271     /*SW = 9300*/  

-#define     Z_APUICC_USAT_BUSY              ZPS_ApUicc_USAT_BUSY                 

-#define     ZPS_ApUicc_USAT_NVUCHNG              (DWORD)272     /*SW = 62 00*/  

-#define     Z_APUICC_USAT_NVUCHNG           ZPS_ApUicc_USAT_NVUCHNG              

-#define     ZPS_ApUicc_USAT_DATACRPT             (DWORD)273     /*SW =62 81*/  

-#define     Z_APUICC_USAT_DATACRPT          ZPS_ApUicc_USAT_DATACRPT             

-#define     ZPS_ApUicc_USAT_ENDREACH             (DWORD)274     /*SW =62 82*/  

-#define     Z_APUICC_USAT_ENDREACH          ZPS_ApUicc_USAT_ENDREACH             

-#define     ZPS_ApUicc_USAT_FILEINVALID          (DWORD)275     /*SW = 62 83*/  

-#define     Z_APUICC_USAT_FILEINVALID       ZPS_ApUicc_USAT_FILEINVALID          

-#define     ZPS_ApUicc_USAT_SUCCRETRY            (DWORD)276     /*SW = 63 XX*/  

-#define     Z_APUICC_USAT_SUCCRETRY         ZPS_ApUicc_USAT_SUCCRETRY            

-

-#define     ZPS_ApUicc_USAT_NAANOTACT_ERR   (DWORD)277

-#define     Z_APUICC_USAT_NAANOTACT_ERR     ZPS_ApUicc_USAT_NAANOTACT_ERR

-#define     ZPS_ApUicc_USAT_NEEDINITUSIM_ERR  (DWORD)278

-#define     Z_APUICC_USAT_NEEDINITUSIM_ERR  ZPS_ApUicc_USAT_NEEDINITUSIM_ERR

-

-#define     ZPS_ApUicc_USAT_DE_OK             (DWORD)30 

-#define     Z_APUICC_USAT_DE_OK             ZPS_ApUicc_USAT_DE_OK

-

-/*====the macro of success code====*/

-#define       ZPS_ApUicc_CMD_OK                 (DWORD)30      

-#define       Z_APUICC_CMD_OK               ZPS_ApUicc_CMD_OK                 

-#define       ZPS_ApUicc_ELEMENTARY_INIT_OK     (DWORD)31

-#define       Z_APUICC_ELEMENTARY_INIT_OK   ZPS_ApUicc_ELEMENTARY_INIT_OK     

-

-/*µç»°±¾Îļþ³¤¶È¶¨Òå*/

-#define     ZPS_ApUicc_EMAIL_LEN              (BYTE)50  

-#define     Z_APUICC_EMAIL_LEN              ZPS_ApUicc_EMAIL_LEN              

-#define     ZPS_ApUicc_SNE_LEN                (BYTE)14  

-#define     Z_APUICC_SNE_LEN                ZPS_ApUicc_SNE_LEN                

-

-/*¿¨ÉÏPIN״̬,²Î¼û27007*/

-#define     ZPS_ApUicc_PIN_READY               (BYTE)0  /*²»ÐèÒªÑéÖ¤PIN*/  

-#define     Z_APUICC_PIN_READY              ZPS_ApUicc_PIN_READY               

-#define     ZPS_ApUicc_PIN_SIMPIN              (BYTE)1  /*universal PIN¼°PIN1ÐèÒªÑé֤ʹÓÃ*/  

-#define     Z_APUICC_PIN_SIMPIN             ZPS_ApUicc_PIN_SIMPIN              

-#define     ZPS_ApUicc_PIN_SIMPUK              (BYTE)2  /*universal PIN¼°PIN1ÐèÒª½âËøÊ¹ÓÃ*/  

-#define     Z_APUICC_PIN_SIMPUK             ZPS_ApUicc_PIN_SIMPUK              

-#define     ZPS_ApUicc_PIN_SIMPIN2             (BYTE)3  /*PIN2ÐèÒªÑé֤ʹÓÃ*/  

-#define     Z_APUICC_PIN_SIMPIN2            ZPS_ApUicc_PIN_SIMPIN2             

-#define     ZPS_ApUicc_PIN_SIMPUK2             (BYTE)4  /*PIN2ÐèÒª½âËøÊ¹ÓÃ*/  

-#define     Z_APUICC_PIN_SIMPUK2            ZPS_ApUicc_PIN_SIMPUK2             

-

-/*¿¨ÉÏPINÊÇ·ñ±»¼¤»î(ÊÇ·ñEnable»òDisable),²Î¼û27007*/

-#define     ZPS_ApUicc_PIN_NOTACTIVE           (BYTE)0 /*mmiaת»¯ÎªZPS_APMMIA_CLCK_NOTACTIVE*/  

-#define     Z_APUICC_PIN_NOTACTIVE          ZPS_ApUicc_PIN_NOTACTIVE           

-#define     ZPS_ApUicc_PIN_ACTIVE              (BYTE)1 /*mmiaת»¯ÎªZPS_APMMIA_CLCK_ACTIVE*/  

-#define     Z_APUICC_PIN_ACTIVE             ZPS_ApUicc_PIN_ACTIVE              

- 

-/*PINReqÖÐPINtype,½öÔÚCPWDÖÐʹÓÃ,ÓÃÓÚChangePIN*/

-#define     ZPS_ApUicc_PIN1TYPE                (BYTE)0   

-#define     Z_APUICC_PIN1TYPE               ZPS_ApUicc_PIN1TYPE                

-#define     ZPS_ApUicc_PIN2TYPE                (BYTE)1   

-#define     Z_APUICC_PIN2TYPE               ZPS_ApUicc_PIN2TYPE                

-

-/*AT command CRSM*/

-#define    ZPS_ApUicc_MAX_CRSMREQDATA_LEN            (BYTE)255

-#define    Z_APUICC_MAX_CRSMREQDATA_LEN        ZPS_ApUicc_MAX_CRSMREQDATA_LEN

-#define    ZPS_ApUicc_MAX_CRSMCNFDATA_LEN            (WORD)256  

-#define    Z_APUICC_MAX_CRSMCNFDATA_LEN        ZPS_ApUicc_MAX_CRSMCNFDATA_LEN            

-#define    ZPS_ApUicc_MAX_PATH_LEN                (BYTE)8  

-#define    Z_APUICC_MAX_PATH_LEN            ZPS_ApUicc_MAX_PATH_LEN                

-

-

-#define    ZPS_UICC_PBR_TYPE1                   (BYTE)0   

-#define    Z_UICC_PBR_TYPE1                 ZPS_UICC_PBR_TYPE1                   

-#define    ZPS_UICC_PBR_TYPE2                   (BYTE)1   

-#define    Z_UICC_PBR_TYPE2                 ZPS_UICC_PBR_TYPE2                   

-#define    ZPS_UICC_PBR_TYPE3                   (BYTE)2   

-#define    Z_UICC_PBR_TYPE3                 ZPS_UICC_PBR_TYPE3                   

-/*AT command CRSM*/

-#define    ZPS_ApUicc_ActiveFile                    (BYTE)0  

-#define    Z_APUICC_ACTIVEFILE              ZPS_ApUicc_ActiveFile                    

-#define    ZPS_ApUicc_DeactiveFile                  (BYTE)1  

-#define    Z_APUICC_DEACTIVEFILE            ZPS_ApUicc_DeactiveFile                  

-

-/* EF status */

-#define     ZPS_ApUicc_EfStatus_INVALID    (BYTE)0  

-#define     Z_APUICC_EFSTATUS_INVALID           ZPS_ApUicc_EfStatus_INVALID    

-#define     ZPS_ApUicc_EfStatus_REHAB      (BYTE)1  

-#define     Z_APUICC_EFSTATUS_REHAB             ZPS_ApUicc_EfStatus_REHAB      

-#define     ZPS_ApUicc_EfStatus_ERROR      (BYTE)2  

-#define     Z_APUICC_EFSTATUS_ERROR             ZPS_ApUicc_EfStatus_ERROR      

-

-/* modify״̬ */

-#define     ZPS_ApUicc_EfStatusModify_INVALID    (BYTE)0  

-#define     Z_APUICC_EFSTATUSMODIFY_INVALID     ZPS_ApUicc_EfStatusModify_INVALID    

-#define     ZPS_ApUicc_EfStatusModify_REHAB      (BYTE)1  

-#define     Z_APUICC_EFSTATUSMODIFY_REHAB       ZPS_ApUicc_EfStatusModify_REHAB      

-

-/* ¿¨Ëø×´Ì¬ */

-#define     ZPS_ApUicc_CardStatus_Lock           (BYTE)0  

-#define     Z_APUICC_CARDSTATUS_LOCK            ZPS_ApUicc_CardStatus_Lock           

-#define     ZPS_ApUicc_CardStatus_Unlock         (BYTE)1  

-#define     Z_APUICC_CARDSTATUS_UNLOCK          ZPS_ApUicc_CardStatus_Unlock         

-#define     ZPS_ApUicc_MAX_DIRAID_LEN           (BYTE)16

-#define     Z_APUICC_MAX_DIRAID_LEN             ZPS_ApUicc_MAX_DIRAID_LEN      

-#define     ZPS_ApUicc_MAX_INITAPPMODE_NUM      (BYTE)3

-#define     Z_APUICC_MAX_INITAPPMODE_NUM        ZPS_ApUicc_MAX_INITAPPMODE_NUM      

-#define      ZPS_ApUicc_MAX_FREEREC_NUM          (BYTE)255

-#define     Z_APUICC_MAX_FREEREC_NUM            ZPS_ApUicc_MAX_FREEREC_NUM    

-#define      ZPS_ApUicc_MAX_PATTERN_NUM          (BYTE)255    /* SEARCH²Ù×÷µÄpattern×î´ó³¤¶È */

-#define     Z_APUICC_MAX_PATTERN_NUM            ZPS_ApUicc_MAX_PATTERN_NUM     

-#define      ZPS_ApUicc_MAX_ACCORDREC_NUM        (BYTE)255    /* SEARCH²Ù×÷µÄ½á¹û¼Ç¼Êý×î´ó¸öÊý */

-#define     Z_APUICC_MAX_ACCORDREC_NUM          ZPS_ApUicc_MAX_ACCORDREC_NUM    

-#define     ZPS_ApUicc_MAX_ITEM_NUM              (BYTE)2

-#define     Z_APUICC_MAX_ITEM_NUM               ZPS_ApUicc_MAX_ITEM_NUM    

-

-

-/* mode value in T_zPS_ApUicc_FacilityPin_Req */

-#define     ZPS_ApUicc_FACILITYPIN_DIS          (BYTE)0

-#define     Z_APUICC_FACILITYPIN_DIS            ZPS_ApUicc_FACILITYPIN_DIS               

-#define     ZPS_ApUicc_FACILITYPIN_EN           (BYTE)1

-#define     Z_APUICC_FACILITYPIN_EN             ZPS_ApUicc_FACILITYPIN_EN                

-

-/* Refresh Ïà¹Øºê*/

-#define     ZPS_ApUicc_NAAInit_FullFileChng       (BYTE)0

-#define     Z_APUICC_NAAINIT_FULLFILECHNG          ZPS_ApUicc_NAAInit_FullFileChng

-#define     ZPS_ApUicc_FileChng                   (BYTE)1

-#define     Z_APUICC_FILECHNG                      ZPS_ApUicc_FileChng

-#define     ZPS_ApUicc_NAAInit_FileChng           (BYTE)2

-#define     Z_APUICC_NAAINIT_FILECHNG              ZPS_ApUicc_NAAInit_FileChng

-#define     ZPS_ApUicc_NAAInit                    (BYTE)3

-#define     Z_APUICC_NAAINIT                       ZPS_ApUicc_NAAInit

-#define     ZPS_ApUicc_UICC_Reset                 (BYTE)4

-#define     Z_APUICC_UICC_RESET                    ZPS_ApUicc_UICC_Reset

-#define     ZPS_ApUicc_NAA_AppReset               (BYTE)5

-#define     Z_APUICC_NAA_APPRESET                  ZPS_ApUicc_NAA_AppReset

-#define     ZPS_ApUicc_NAA_SessionReset          (BYTE)6

-#define     Z_APUICC_NAA_SESSIONRESET             ZPS_ApUicc_NAA_SessionReset

-

-#define     ZPS_ApUicc_MAX_FILE_NUM              (BYTE)128

-#define     Z_APUICC_MAX_FILE_NUM                ZPS_ApUicc_MAX_FILE_NUM

-#define     ZPS_ApUicc_MAX_SMPB_NUM              (BYTE)36

-#define     Z_APUICC_MAX_SMPB_NUM                ZPS_ApUicc_MAX_SMPB_NUM

-#define     ZPS_ApUicc_MAX_APPB_NUM              (BYTE)36

-#define     Z_APUICC_MAX_APPB_NUM                ZPS_ApUicc_MAX_APPB_NUM

-

-#define     ZPS_ApUicc_ATR_MAXLEN               (BYTE)34

-#define     Z_APUICC_ATR_MAXLEN                 ZPS_ApUicc_ATR_MAXLEN               

-#define     ZPS_ApUicc_APDU_REQ_MAXLEN         (WORD)262

-#define     Z_APUICC_APDU_REQ_MAXLEN            ZPS_ApUicc_APDU_REQ_MAXLEN         

-#define     ZPS_ApUicc_APDU_CNF_MAXLEN         (WORD)258

-#define     Z_APUICC_APDU_CNF_MAZLEN            ZPS_ApUicc_APDU_CNF_MAXLEN 

-

-#define     Z_VCARD_AIR_AUTH_RSP_LEN        (BYTE)63

-#define     Z_VCARD_AIR_AUTH_REQ_LEN        (BYTE)34

-

-#define     Z_APUICC_SEARCH_FROM_CARD       (BYTE)0

-#define     Z_APUICC_SEARCH_FROM_CACHE    (BYTE)1

-

-#define     Z_APUICC_ATCMD_CSIM            (BYTE)0

-#define     Z_APUICC_ATCMD_ZSIM            (BYTE)1

-

-/*ÎÞ¿¨ÏûÏ¢ÀàÐÍ*/

-#define     Z_APUICC_NOCARD_TYPE_NORMAL                 (BYTE)0  /*Õý³£ÎÞ¿¨*/

-#define     Z_APUICC_NOCARD_TYPE_RESET_REFRESH    (BYTE)1  /*UICC RESET ÀàÐ͵ÄREFRESH ÒýÆðµÄÎÞ¿¨*/

-

-#define Z_USAT_LOCATION_UPDATE_NORMAL           (BYTE)0x00  //-'00' = "Normal Location Updating" in the case of a Location Updating Request message;

-#define Z_USAT_LOCATION_UPDATE_PERIODIC         (BYTE)0x01  //-'01' = "Periodic Updating" in the case of a Location Updating Request message;

-#define Z_USAT_LOCATION_UPDATE_IMSI                 (BYTE)0x02  //-'02' = "IMSI Attach" in the case of a Location Updating Request message;

-#define Z_USAT_GPRS_ATTACH_GPRS_ATTACH          (BYTE)0x03  //-'03' = "GPRS Attach" in the case of a GPRS Attach Request message;

-#define Z_USAT_GPRS_ATTACH_COMB_GPRS_IMSI    (BYTE)0x04  //-'04' = "Combined GPRS/IMSI Attach" in the case of a GPRS Attach Request message;

-#define Z_USAT_RAU_RA_UPDATE                              (BYTE)0x05  //-'05' = "RA Updating" in the case of a Routing Area Update Request message;

-#define Z_USAT_RAU_COMB_RA_LA                           (BYTE)0x06  //-'06' = "Combined RA/LA Updating" in the case of a Routing Area Update Request message;

-#define Z_USAT_RAU_COMB_RA_LA_IMSI                 (BYTE)0x07  //-'07' = "Combined RA/LA Updating with IMSI Attach" in the case of a Routing Area Update Request message;

-#define Z_USAT_RAU_PERIODIC_UPDATE                  (BYTE)0x08  //-'08' = "Periodic Updating" in the case of a Routing Area Update Request message

-#define Z_USAT_EMM_ATTACH_EPS_ATTACH            (BYTE)0x09  //-'09' = "EPS Attach" in the case of an EMM ATTACH REQUEST message

-#define Z_USAT_EMM_ATTACH_COMB_EPS_IMSI       (BYTE)0x0A  //-'0A' = "Combined EPS/IMSI Attach" in the case of an EMM ATTACH REQUEST message

-#define Z_USAT_EMM_TAU_TA_UPDATE                    (BYTE)0x0B  //-'0B' = "TA updating " in the case of an EMM TRACKING AREA UPDATE REQUEST message

-#define Z_USAT_EMM_TAU_COMB_TA_LA		      (BYTE)0x0C  //-'0C' = "Combined TA/LA updating" in the case of an EMM TRACKING AREA UPDATE REQUEST message

-#define Z_USAT_EMM_TAU_COMB_TA_LA_IMSI         (BYTE)0x0D  //-'0D' = "Combined TA/LA updating with IMSI attach" in the case of an EMM TRACKING AREA UPDATE REQUEST message

-#define Z_USAT_EMM_TAU_PERIODIC_UPDATE         (BYTE)0x0E  //-'0E' = "Periodic updating" in the case of an EMM TRACKING AREA UPDATE REQUEST message

-

-#define    Z_APUICC_EID_LEN            (BYTE)10  

-

-/**************************************************************************

-*                         È«¾ÖÊý¾ÝÀàÐͶ¨Òå                                *

-**************************************************************************/

-/**************************************************************************

-*                         UICCÖÐEF½á¹¹¶¨Òå                                *

-**************************************************************************/

-/*4.1.1 EFDir  */

-typedef struct {  

-    BYTE                                bAidLen;              /*1...16*/

-    BYTE                                bAppLabelFg;

-    BYTE                                bAppLabelMaxLen;     /*µ±Ç°¿¨ÖÐalpha×î´ó³¤¶È*/

-

-    BYTE                                abAidVal[ZPS_ApUicc_MAX_DIRAID_LEN];

-

-    BYTE                                abAppLabelVal[32];

-}T_zPS_UICC_Dir,

-T_z_UICC_Dir;

-

-

-/*4.1.2 EFICCID */

-typedef struct {

-  BYTE                                abId[10];           /*Identification number*/ 

-    BYTE                                abPadding[2];

-}T_zPS_UICC_Iccid,

-T_z_UICC_Iccid;

-

-

-

-/*4.1.3 EFPL   */

-typedef struct{                       

-  BYTE                                 bNum;                         /*ÓïÑÔ±àÂëÖÖÊý*/

-  BYTE                                 bPadding;

-

-  WORD                                 awLangCode[ZPS_UICC_LEN_PLCODE];      /*language Code*/ 

-}T_zPS_UICC_PL,

-T_z_UICC_PL;

-

-

-/* 4.1.4 EFarr  4.2.55ºÍ4.5.5Ò²Óô˽ṹ*/

-typedef struct {

-  BYTE                                    bAccCondVal;

-

-  BYTE                                    bScdoTag;

-  BYTE                                    bScdoNum;       /* ¸øÖµ0.2.4 ¼ÆÊýÆ÷*/ 

-

-  BYTE                                    bKeyRef1Val;

-  BYTE                                    bUsage1Val;

-

-  BYTE                                    bKeyRef2Val;

-  BYTE                                    bUsage2Val;

-

-  BYTE                                    bPadding;

-}T_zPS_UICC_ArrAcc,

-T_z_UICC_ArrAcc;

-

-

-typedef struct {

-  BYTE                                    bAccNum;

-  BYTE                                    abPadding[3];

-

-  T_zPS_UICC_ArrAcc                       atArrAcc[ZPS_UICC_LEN_ARR];

-}T_zPS_UICC_Arr,

-T_z_UICC_Arr;

-

-

-/*4.2.1 EFLI */

-typedef struct {                        

-  BYTE                                    bNum;                               /*ÓïÑÔ±àÂëÖÖÊý*/

-  BYTE                                    bPadding;

-

-  WORD                                    awLangCode[ZPS_UICC_LEN_LIDATA];         /*language Code*/     

-}T_zPS_UICC_Li,

-T_z_UICC_Li;

-

-

-/*4.2.2 EFIMSI Ö±½ÓÒýÓÃT_zPS_IMSI*/

-

-/*4.2.3 EFKEYS; 4.2.4 EFKEYSPS  ²Î¼ûT_zPS_UiccId_UmtsSecKey*/

-

-/*4.2.5 EFPLMNWACT £¬ ²Î¼ûT_zPS_UiccId_UPlmnInfo*/

-

-/*4.2.7  EFACMmax */

-typedef DWORD   T_zPS_UICC_ACMmax,

-T_z_UICC_ACMmax;

-

-/*4.2.8  EFUST */

-typedef struct {

-    BITS                                    bLocalPbFg:1;   /* Service n¡ã1:  Local Phone Book */

-    BITS                                    bFdnFg:1;       /* Service n¡ã2:  Fixed Dialling Numbers (FDN) */

-    BITS                                    bExtension2:1;  /* Service n¡ã3:  Extension 2 */

-    BITS                                    bSdnFg:1;       /* Service n¡ã4:  Service Dialling Numbers (SDN) */

-    BITS                                    bExtension3:1;  /* Service n¡ã5:  Extension3 */

-    BITS                                    bBdnFg:1;       /* Service n¡ã6:  Barred Dialling Numbers (BDN) */

-    BITS                                    bExtension4:1;  /* Service n¡ã7:  Extension4 */

-    BITS                                    bOciFg:1;       /* Service n¡ã8:  Outgoing Call Information (OCI and OCT) */

-

-    BITS                                    bIciFg:1;       /* Service n¡ã9:  Incoming Call Information (ICI and ICT) */

-    BITS                                    bSmsFg:1;       /* Service n¡ã10: Short Message Storage (SMS) */

-    BITS                                    bSmsrFg:1;      /* Service n¡ã11: Short Message Status Reports (SMSR) */

-    BITS                                    bSmspFg:1;      /* Service n¡ã12: Short Message Service Parameters (SMSP) */

-    BITS                                    bAocFg:1;       /* Service n¡ã13: Advice of Charge (AoC) */

-    BITS                                    bCcpFg:1;       /* Service n¡ã14: Capability Configuration Parameters (CCP) */

-    BITS                                    bCbmiFg:1;      /* Service n¡ã15: Cell Broadcast Message Identifier  */

-    BITS                                    bCbmirFg:1;     /* Service n¡ã16: Cell Broadcast Message Identifier Ranges  */

-

-    BITS                                    bGrpIdL1Fg:1;   /* Service n¡ã17: Group Identifier Level 1 */

-    BITS                                    bGrpIdL2Fg:1;   /* Service n¡ã18: Group Identifier Level 2 */

-    BITS                                    bBspnFg:1;      /* Service n¡ã19: Service Provider Name */

-    BITS                                    bUPlmnFg:1;     /* Service n¡ã20: User controlled PLMN selector with Access Technology */

-    BITS                                    bMsisdnFg:1;    /* Service n¡ã21: MSISDN */

-    BITS                                    bImgFg:1;       /* Service n¡ã22: Image (IMG) */

-    BITS                                    bSolsaFg:1;     /* Service n¡ã23: Support of Localised Service Areas (SoLSA)  */

-    BITS                                    bEmlppFg:1;     /* Service n¡ã24: Enhanced Multi Level Precedence and Pre emption Service  */

-

-    BITS                                    bAaemlppFg:1;   /* Service n¡ã25: Automatic Answer for eMLPP */

-    BITS                                    :1;             /* Service n¡ã26: RFU */

-    BITS                                    bGsmAccFg:1;    /* Service n¡ã27: GSM Access */

-    BITS                                    bDdvSmsPpFg:1;  /* Service n¡ã28: Data download via SMS-PP */

-    BITS                                    bDdvSmsCbFg:1;  /* Service n¡ã29: Data download via SMS CB */

-    BITS                                    bCcByUsimFg:1;  /* Service n¡ã30: Call Control by USIM */

-    BITS                                    bMosmsByUsimFg:1;/* Service n¡ã31:  MO-SMS Control by USIM */

-    BITS                                    bRunAtcmdFg:1;  /* Service n¡ã32: RUN AT COMMAND command */

-

-    BITS                                    :1;                 /* Service n¡ã33: shall be set to '1' */

-    BITS                                    bEstFg:1;           /* Service n¡ã34: Enabled Services Table */

-    BITS                                    bAclFg:1;           /* Service n¡ã35: APN Control List (ACL) */

-    BITS                                    bDckFg:1;           /* Service n¡ã36: Depersonalisation Control Keys */

-    BITS                                    bCoopNetListFg:1;   /* Service n¡ã37: Co-operative Network List */

-    BITS                                    bGsmSecFg:1;        /* Service n¡ã38: GSM security context  */

-    BITS                                    bCpbcchInfoFg:1;    /* Service n¡ã39: CPBCCH Information */

-    BITS                                    bIsFg:1;            /* Service n¡ã40: Investigation Scan */

-

-    BITS                                    bMexeFg:1;          /* Service n¡ã41: MExE */

-    BITS                                    bOPlmnFg:1;         /* Service n¡ã42: Operator controlled PLMN selector with Access Technology */

-    BITS                                    bHPlmnFg:1;         /* Service n¡ã43: HPLMN selector with Access Technology */

-    BITS                                    bExtension5:1;      /* Service n¡ã44: Extension 5 */

-    BITS                                    bPlmnNetNameFg:1;   /* Service n¡ã45: PLMN Network Name */

-    BITS                                    bOPlmnListFg:1;     /* Service n¡ã46: Operator PLMN List */

-    BITS                                    bMdnFg:1;           /* Service n¡ã47: Mailbox Dialling Numbers  */

-    BITS                                    bMwiStaFg:1;        /* Service n¡ã48: Message Waiting Indication Status */

-

-    BITS                                    bCfiStaFg:1;        /* Service n¡ã49: Call Forwarding Indication Status */

-    BITS                                    :1;                 /* Service n¡ã50: Reserved and shall be ignored */

-    BITS                                    bSpdInfoFg:1;       /* Service n¡ã51: Service Provider Display Information */

-    BITS                                    bMmsFg:1;           /* Service n¡ã52  Multimedia Messaging Service (MMS) */

-    BITS                                    bExtension8:1;      /* Service n¡ã53  Extension 8 */

-    BITS                                    bCcOnGprsUsimFg:1;  /* Service n¡ã54  Call control on GPRS by USIM */

-    BITS                                    bMmsUcpFg:1;        /* Service n¡ã55  MMS User Connectivity Parameters */

-    BITS                                    bNiaFg:1;           /* Service n¡ã56  Network's indication of alerting in the MS (NIA) */

-

-    BITS                                    bVgcsFg:1;          /* Service n¡ã57  VGCS Group Identifier List (EFVGCS and EFVGCSS) */

-    BITS                                    bVbsFg:1;           /* Service n¡ã58  VBS Group Identifier List (EFVBS and EFVBSS) */

-

-    BITS                                    bPseudonymFg:1;     /* Service n¡ã59  Pseudonym */

-    BITS                                    bUPlmnForIWlanFg:1; /* Service n¡ã60    User Controlled PLMN selector for I-WLAN access */

-    BITS                                    bOPlmnForIWlanFg:1; /* Service n¡ã61    Operator Controlled PLMN selector for I-WLAN access */

-    BITS                                    bUWsidListFg:1;     /* Service n¡ã62    User controlled WSID list */

-    BITS                                    bOWsidListFg:1;     /* Service n¡ã63    Operator controlled WSID list */

-    BITS                                    bVgcsSecurityFg:1;  /* Service n¡ã64    VGCS security */

-    

-    BITS                                    bVbsSecurityFg:1;   /* Service n¡ã65    VBS security */

-    BITS                                    bWlanReAuthIdFg:1;  /* Service n¡ã66    WLAN Reauthentication Identity */

-    BITS                                    bMultiMediaMsgStoFg:1;  /* Service n¡ã67    Multimedia Messages Storage */

-    BITS                                    bGbaFg:1;               /* Service n¡ã68    Generic Bootstrapping Architecture (GBA) */

-    BITS                                    bMbmsSecurityFg:1;      /* Service n¡ã69    MBMS security */

-    BITS                                    bDataDlViaUssdAndUssdAppFg:1;  /* Service n¡ã70 Data download via USSD and USSD application mode */

-    BITS                                    bEHplmnFg:1;                   /* Service n¡ã71 Equivalent HPLMN */

-    BITS                                    bAdTermProfAfterUiccActFg:1;   /* Service n¡ã72 Additional TERMINAL PROFILE after UICC activation */

-    

-    BITS                                    bEHplmnPresentIndFg:1;         /* Service n¡ã73 Equivalent HPLMN Presentation Indication */

-    BITS                                    bLastRplmnSelIndFg:1;          /* Service n¡ã74 Last RPLMN Selection Indication */

-    BITS                                    bOmaBcastSmartCardProfFg:1;    /* Service n¡ã75 OMA BCAST Smart Card Profile */

-    BITS                                    bGbaBasedLocalKeyFg:1;         /* Service n¡ã76 GBA-based Local Key Establishment Mechanism */

-    BITS                                    bTermAppFg:1;                  /* Service n¡ã77 Terminal Applications */

-    BITS                                    bSpnIconFg:1;                  /* Service n¡ã78 Service Provider Name Icon */

-    BITS                                    bPlmnNameIconFg:1;             /* Service n¡ã79 PLMN Network Name Icon */

-    BITS                                    bParaForUsimIpConnecFg:1;      /* Service n¡ã80 Connectivity Parameters for USIM IP connections */

-    

-    BITS                                    bHomeIWlanSpecIdListFg:1;      /* Service n¡ã81 Home I-WLAN Specific Identifier List */

-    BITS                                    bIWlanEHplmnPresentIndFg:1;    /* Service n¡ã82 I-WLAN Equivalent HPLMN Presentation Indication */

-    BITS                                    bIWlanHplmnPriorityIndFg:1;    /* Service n¡ã83 I-WLAN HPLMN Priority Indication */

-    BITS                                    bIWlanLastRplmnFg:1;           /* Service n¡ã84 I-WLAN Last Registered PLMN */

-    BITS                                    bEmmInfoFg:1;                  /* Service n¡ã85 EPS Mobility Management Information */

-    BITS                                    bAllowedCsgListAndIndFg:1;     /* Service n¡ã86 Allowed CSG Lists and corresponding indications */

-    BITS                                    bCallCtrlOnEPdnConnectFg:1;    /* Service n¡ã87 Call control on EPS PDN connection by USIM */

-    BITS                                    bHplmnDirectAccessFg:1;        /* Service n¡ã88 HPLMN Direct Access */

-    

-    BITS                                    bECallDataFg:1;                /* Service n¡ã89 eCall Data */

-    BITS                                    bOperatorCsgListAndIndFg:1;    /* Service n¡ã90 Operator CSG Lists and corresponding indications */

-    BITS                                    bSuppSmOverIpFg:1;             /* Service n¡ã91 Support for SM-over-IP */

-    BITS                                    :5;

-

-    BITS                                    :2;

-    BITS                                    bUriSupByUiccFg:1;             /* Service n¡ã99 URI support by UICC */

-    BITS                                    :5;

-

-    BITS                                    :7;

-    BITS                                    bECallDataOverImsFg:1;         /* Service n¡ã112 eCall Data over IMS*/

-

-    BYTE                                    bPadding[3];

-}T_zPS_UICC_Ust,

-T_z_UICC_Ust;

-

-

-/*4.2.9 EFACM */

-typedef     DWORD   T_zPS_UICC_Acm,

-T_z_UICC_Acm;

-

-

-

-/*4.2.10 EFGID1 */

-typedef struct {

-  BYTE                                     abUsimGID1[ZPS_UICC_LEN_GID1];

-  BYTE                                     bLen;                      /*1...255*/

-}T_zPS_UICC_GID1,

-T_z_UICC_GID1;

-

-

-

-/*4.2.11 EFGID2  */

-typedef struct {

-  BYTE                                     abUsimGID2[ZPS_UICC_LEN_GID2];

-  BYTE                                     bLen;                        /*1...255*/

-}T_zPS_UICC_GID2,

-T_z_UICC_GID2;

-

-

-/*4.2.12  EFSPN */

-typedef struct {

-    BITS                                     bDcRPLMN:1;

-    BITS                                     bDcSPN:1;                           

-    BITS                                     :6; 

-    BYTE                                     abPadding[3];

-    BYTE                                     abProvName[16]; 

-}T_zPS_UICC_SPN,

-T_z_UICC_SPN;

-

-

-/*4.2.13 EFPUCT */

-typedef struct {

-  BYTE                                      abCurrencyCode[3]; 

-    BYTE                                      bPadding1;

-

-  BYTE                                      abPricePerUnit[2];

-    BYTE                                      abPadding2[2];

-}T_zPS_UICC_PUCT,

-T_z_UICC_PUCT;

-

-

-

-/*4.2.14 EFCBMI */

-typedef struct

-{

-    BYTE                                      bMaxLen;   /*ÂëÁ÷ÖÐCBMI¸öÊý*/

-    BYTE                                      bNum;      /*ÂëÁ÷ÖÐʵ¼ÊÓÐЧµÄCBMI¸öÊý*/

-    BYTE                                      abPadding[2];

-

-    WORD                                      awCBMessIden[ZPS_UICC_LEN_CBMI];       /*CB Message Identifier*/

-}T_zPS_UICC_CBMI,

-T_z_UICC_CBMI;

-

-

-/*4.2.16  EFFPLMN */

-/*

-typedef struct {

-    BYTE                                        bMaxNum;

-    BYTE                                          bNum;                             

-    BYTE                                          abPadding[2];

-    T_zPS_PlmnId                                atFPlmn[ZPS_UICC_LEN_FPLMN];

-    BYTE                                          abPadding1;

-}T_zPS_UICC_FPlmnList,

-T_z_UICC_FPlmnList;*/

-

-

-/*4.2.17  EFLOCI , ¼ûT_zPS_Loci*/

-

-/*4.2.18 EFAD  ²Î¼ûT_zPS_UiccId_Ad */

-

-/*4.2.20 EFCBMID */

-typedef struct {

-    BYTE                                      bNum;               /*ÂëÁ÷ÖÐʵ¼ÊÓÐЧ¸öÊý*/

-    BYTE                                        abPadding[3];

-

-    WORD                                        awCbmid[ZPS_UICC_LEN_CBMID];

-}T_zPS_UICC_Cbmid,

-T_z_UICC_Cbmid;

-

-

-/*4.2.21 EFecc , ¼ûT_zPS_Ecc */

-

-

-/*4.2.22  EFCBMIR */

-typedef struct

-{

-    BYTE                                        bMaxLen;    /*ÂëÁ÷ÖÐCBMIR¸öÊý*/

-    BYTE                                        bNum;       /*ÂëÁ÷ÖÐʵ¼ÊÓÐЧµÄCBMIR¸öÊý*/

-    BYTE                                        abPadding[2];

-

-    DWORD                                         adwCBMIR[ZPS_UICC_LEN_CBMIR];        /*CB message identifier range*/   

-}T_zPS_UICC_Cbmir,

-T_z_UICC_Cbmir;

-

-/*4.2.23 EFPSLOCI, ¼ûT_zPS_PsLoci*/

-

-/* 4.2.24 EFFDN */

-typedef struct

-{

-  BYTE                                           bMaxAlphaIdLen;          /*±íÃ÷µ±Ç°¿¨Ö§³ÖµÄAlphaId×î´ó³¤¶È*/

-  BYTE                                           bBcdSscLen;

-  BYTE                                           bTonNpi;

-  

-  BYTE                                           bCpbCfg2Id; 

-  BYTE                                           bExt2RecId; 

-  BYTE                                           abPadding1[2];

-

-  BYTE                                           abAlphaId[ZPS_UICC_LEN_FDN];

-  BYTE                                           abPadding2[2];

-

-  BYTE                                           abDialNumSsc[10];

-  BYTE                                           abPadding3[2];

-}T_zPS_UICC_Fdn,

-T_z_UICC_Fdn;

-

-

-/*4.2.25  EFSms */

-typedef struct

-{

-  BYTE                                            bStatus;

-  BYTE                                            bLen;  /*abRemainder ¼Ç¼abRemainderÖÐÓÐЧ³¤¶È*/

-  BYTE                                            abPadding[2];

-

-  BYTE                                            abRemainder[175];/*ÎÞЧλÌîд0xFF*/

-  BYTE                                            bPadding2;

-}T_zPS_UICC_Sms,

-T_z_UICC_Sms;

-

-

-/*4.2.26 EFMSISDN */

-typedef struct

-{

-  BYTE                                           bMaxAlphaIdLen;          /*±íÃ÷µ±Ç°¿¨Ö§³ÖµÄAlphaId×î´ó³¤¶È*/

-  BYTE                                           bBcdSscLen;

-  BYTE                                           bTonNpi;

-  

-  BYTE                                           bCpbCfg2Id; 

-  BYTE                                           bExt5RecId; 

-  BYTE                                           abPadding1[2];

-

-  BYTE                                           abAlphaId[ZPS_UICC_LEN_MSISDN];

-  BYTE                                           abPadding2[2];

-

-  BYTE                                           abDialNumSsc[10];

-  BYTE                                           abPadding3[2];

-}T_zPS_UICC_Msisdn,

-T_z_UICC_Msisdn;

-

-/*4.2.27 EFSMSP , ¼ûT_zPS_Smsp */

-

-/*4.2.28 EFSMSS */

-typedef struct

-{

-  BYTE                                          bLastUsedTpmr;

-  BYTE                                          bMcef; 

-  BYTE                                          bRfuNum; /*¼Ç¼RFUµÄ×Ö½ÚÊý*/

-  BYTE                                          bPadding;

-}T_zPS_UICC_Smss,

-T_z_UICC_Smss;

-

-/*4.2.29  EFSDN */

-typedef struct

-{

-  BYTE                                           bMaxAlphaIdLen;          /*±íÃ÷µ±Ç°¿¨Ö§³ÖµÄAlphaId×î´ó³¤¶È*/

-  BYTE                                           bBcdSscLen;

-  BYTE                                           bTonNpi;

-  

-  BYTE                                           bCpbCfgId; 

-  BYTE                                           bExt3RecId;

-  BYTE                                           abPadding1[2];

-

-  BYTE                                           abAlphaId[ZPS_UICC_LEN_SDN];

-

-  BYTE                                           abDialNumSsc[10];

-  BYTE                                           abPadding3[2];

-}T_zPS_UICC_Sdn,

-T_z_UICC_Sdn;

-

-

-/*4.2.30 EFEXT2 */

-typedef struct

-{

-  BYTE                                            bRecType;

-  BYTE                                            bIdent;

-  BYTE                                            abPadding1[2];

-

-  BYTE                                            abExtData[11];

-  BYTE                                            bPadding2;

-}T_zPS_UICC_Ext2,

-T_z_UICC_Ext2;

-

-

-/*4.2.31 EFEXT3 */

-typedef struct

-{

-  BYTE                                            bRecType;

-  BYTE                                            bIdent;

-  BYTE                                            abPadding1[2];

-

-  BYTE                                            abExtData[11];

-  BYTE                                            bPadding2;

-}T_zPS_UICC_Ext3,

-T_z_UICC_Ext3;

-

-

-/*4.2.32  EFSmsr */

-typedef struct

-{

-  BYTE                                             bRecId;

-  BYTE                                             abPadding1[3];

-

-  BYTE                                             abStatusReport[29];

-  BYTE                                             abPadding2[3];

-}T_zPS_UICC_Smsr,

-T_z_UICC_Smsr;

-

-

-

-/*4.2.33 EFICI */

-typedef struct

-{

-    BYTE                                           bMaxAlphaIdLen;          /*±íÃ÷µ±Ç°¿¨Ö§³ÖµÄAlphaId×î´ó³¤¶È*/

-    BYTE                                           bBcdSscLen;                                                                      

-    BYTE                                           bTonNpi;                           

-    

-    BYTE                                           bCpbCfg2Id;                                                                    

-    BYTE                                           bExt5RecId;                                                                   

-    BYTE                                           bIncomCallStatus;

-    BYTE                                           bPbRef;                       /*µç»°±¾Î»Öãº

-                                                                                  *0£ºGlobal Phone Book

-                                                                                  *1£ºLocal Phone Book

-                                                                                  *FF:ÎÞЧλ*/

-    WORD                                           wRecNum;                      /*½âÂëʱ£¬¸ß×Ö½ÚΪ¿¨Äڵ绰±¾ÐòÁкţ¬µÍ×Ö½ÚΪ¿¨Äڵ绰±¾ÖмǼºÅ£»

-                                                                                   UiccMng·¢Ë͸øAPʱ£¬ÆäֵΪת»»ºóµÄ¼Í¼ºÅ*/

-    BYTE                                           abPadding1[2];

-

-    BYTE                                           abAlphaId[ZPS_UICC_LEN_ICI];

-    BYTE                                           abPadding2[2];

-

-    BYTE                                           abIncomCallNum[10];         

-    BYTE                                           abPadding3[2];

-        

-    BYTE                                           abIncomCallDateTime[7];    

-    BYTE                                           bPadding4;

-                                                     

-    BYTE                                           abIncomCallDura[3];  

-    BYTE                                           bPadding5;       

-}T_zPS_UICC_Ici,

-T_z_UICC_Ici;

-

-

-

-/*4.2.34 EFOCI */

-typedef struct

-{

-    BYTE                                           bMaxAlphaIdLen;          /*±íÃ÷µ±Ç°¿¨Ö§³ÖµÄAlphaId×î´ó³¤¶È*/

-    BYTE                                           bBcdSscLen;                                                                      

-    BYTE                                           bTonNpi;                           

-    

-    BYTE                                           bCpbCfg2Id;                                                                    

-    BYTE                                           bExt5RecId;                                                                   

-    BYTE                                           bPbRef;                       /*µç»°±¾Î»Öãº

-                                                                                  *0£ºGlobal Phone Book

-                                                                                  *1£ºLocal Phone Book

-                                                                                  *FF:ÎÞЧλ*/

-    BYTE                                           bPadding1;

-    

-    WORD                                           wRecNum;                      /*½âÂëʱ£¬¸ß×Ö½ÚΪ¿¨Äڵ绰±¾ÐòÁкţ¬µÍ×Ö½ÚΪ¿¨Äڵ绰±¾ÖмǼºÅ£»

-                                                                                   UiccMng·¢Ë͸øAPʱ£¬ÆäֵΪת»»ºóµÄ¼Í¼ºÅ*/

-    BYTE                                           abPadding2[2];

-

-    BYTE                                           abAlphaId[ZPS_UICC_LEN_OCI];

-    BYTE                                           abPadding3[2];

-

-    BYTE                                           abOutgoingCallNum[10];             

-    BYTE                                           abPadding4[2];

-

-    BYTE                                           abOutgoingCallDateTime[7];                                                     

-    BYTE                                           bPadding5;

-

-    BYTE                                           abOutgoingCallDuration[3];          

-    BYTE                                           bPadding6;

-}T_zPS_UICC_Oci,

-T_z_UICC_Oci;

-

-

-/*4.2.35 EFIct , 4.2.36 T_zPS_UICC_Oct*/

-typedef struct

-{

-  BYTE                                            abAccumCallTimer[3];

-    BYTE                                            bPadding;

-}T_zPS_UICC_Ict, T_zPS_UICC_Oct,

-T_z_UICC_Ict, T_z_UICC_Oct;

-

-/*4.2.37 EFEXT5 */

-typedef struct

-{

-  BYTE                                             bRecType;

-  BYTE                                             bIdent;

-    BYTE                                             abPadding1[2];

-

-  BYTE                                             abExtData[11];

-    BYTE                                             bPadding2;

-}T_zPS_UICC_Ext5,

-T_z_UICC_Ext5;

-

-

-

-/*4.2.39 EFEmlpp, ¼ûT_zPS_UiccId_Emlpp */

-

-/*4.2.42   EFHiddenkey */

-typedef struct

-{

-  BYTE                                              abHiddenKey[4];

-}T_zPS_UICC_HiddenKey,

-T_z_UICC_HiddenKey;

-

-

-/*4.2.44 EFBDN */

-typedef struct

-{

-  BYTE                                           bMaxAlphaIdLen;          /*±íÃ÷µ±Ç°¿¨Ö§³ÖµÄAlphaId×î´ó³¤¶È*/

-  BYTE                                           bBcdSscLen;

-  BYTE                                           bTonNpi;

-  

-  BYTE                                           bCpbCfgId; 

-  BYTE                                           bExt4RecId;

-  BYTE                                           bComparMethodPtr;

-    BYTE                                           bPadding1;

-

-  BYTE                                           abAlphaId[ZPS_UICC_LEN_BDN];

-    BYTE                                           abPadding2[2];

-

-  BYTE                                           abDialNumSsc[10];

-    BYTE                                           abPadding3[2];

-}T_zPS_UICC_Bdn,

-T_z_UICC_Bdn;

-

-

-/*4.2.45 EFExt4   */

-typedef struct

-{

-  BYTE                                            bRecType;

-  BYTE                                            bRecId;

-    BYTE                                            abPadding1[2];

-

-  BYTE                                            abExtData[11];

-    BYTE                                            bPadding2;

-}T_zPS_UICC_Ext4,

-T_z_UICC_Ext4;

-

-

-/*4.2.46   EFCmi*/

-typedef struct

-{

-  BYTE                                           bComparMethId;

-  BYTE                                           bMaxAlphaIdLen;          /*±íÃ÷µ±Ç°¿¨Ö§³ÖµÄAlphaId×î´ó³¤¶È*/

-  BYTE                                           bPadding1;

-

-  BYTE                                           abAlphaId[ZPS_UICC_LEN_CMI];

-    BYTE                                           abPadding2[2];

-}T_zPS_UICC_Cmi,

-T_z_UICC_Cmi;

-

-

-/*4.2.47  EFEST */

-typedef struct

-{

-  BITS                                         bFdn:1;

-  BITS                                         bBdn:1;

-  BITS                                         bAcl:1;

-  BITS                                         :5;

-  BYTE                                         bNum;                       

-  BYTE                                         abPadding[2];

-  BYTE                                         abService[ZPS_UICC_LEN_EST];

-}T_zPS_UICC_Est,

-T_z_UICC_Est;

-/*31103  4.2.7  EFIST */

-typedef struct

-{

-    BITS                                    bPcscf_addrFg:1;      /* Service n¡ã1: P-CSCF address */

-    BITS                                    bGbaFg:1;             /* Service n¡ã2:  Generic Bootstrapping Architecture (GBA)*/

-    BITS                                    bHttpDigstFg:1;       /* Service n¡ã3:  HTTP Digest */

-    BITS                                    bGbaLkemFg:1;         /* Service n¡ã4:  GBA-based Local Key Establishment Mechanism */

-    BITS                                    bSupportPcssfFg:1;    /* Service n¡ã5:  Support of P-CSCF discovery for IMS Local Break Out */

-    BITS                                    bSmsFg:1;             /* Service n¡ã6:  Short Message Storage (SMS) */

-    BITS                                    bSmsrFg:1;            /* Service n¡ã7:  Short Message Status Reports (SMSR) */

-    BITS                                    bSoipFg:1;            /* Service n¡ã8:Support for SM-over-IP including data download via SMS-PP */

-

-    BITS                                    bComContlFg:1;        /* Service n¡ã9:  Communication Control for IMS by ISIM */

-    BITS                                    bUiccAccImsFg:1;      /* Service n¡ã10: Support of UICC access to IMS  */

-

-    BITS                                    :6;                   /* Service n¡ã: RFU */

-    BYTE                                    abPadding[2];

-}T_zPS_UICC_Ist,

-T_z_UICC_Ist;

-

-typedef struct

-{

-  BYTE bTag;

-  BYTE bLen;

-  BYTE abPadding[2];

-  BYTE abVal[Z_UICC_LEN_APN];

-}T_zPS_UICC_ApnTlv,

-T_z_UICC_ApnTlv;

-

-typedef struct

-{

-  CHAR abApn[Z_UICC_LEN_APN];

-  BYTE abPadding[3];

-}T_zPS_UICC_Apn,

-T_z_UICC_Apn;

-

-/*4.2.48 EFAcl */

-typedef struct

-{

-  BYTE                                             bApnNum;

-  BYTE                                             abPadding[3];

-

-  T_z_UICC_Apn                                atApns[Z_UICC_LEN_ACL];       /*Tag:'DD' length:0*/

-}T_zPS_UICC_Acl,

-T_z_UICC_Acl;

-

-/*4.2.49  EFDck */

-typedef struct

-{

-  BYTE                                             abNetDepersonCk[4];

-

-  BYTE                                             abNetSubDepersonCk[4];

-

-  BYTE                                             abServDepersonCk[4];

-

-  BYTE                                             abCorporDepersonCk[4];

-}T_zPS_UICC_Dck,

-T_z_UICC_Dck;

-

-

-

-/*4.2.50 EFCnl   */

-typedef struct

-{

-  BYTE                                             abCooperaNetList[6];

-  BYTE                                             abPadding[2];

-}T_zPS_UICC_CnlRec,

-T_z_UICC_CnlRec;

-

-

-

-typedef struct

-{

-  BYTE                                      bNum;

-  BYTE                                      abPadding[3];

-

-  T_zPS_UICC_CnlRec                        atCoOperaNetList[ZPS_UICC_LEN_CNL];  /*1...255*/

-}T_zPS_UICC_Cnl,

-T_z_UICC_Cnl;

-

-

-/*4.2.51 EFStartHfn  ²Î¼ûT_zPS_UiccId_StartHfn*/

-

-/*4.2.52  EFThreShold  ²Î¼ûT_zPS_UiccId_Threshold*/

-

-/*4.2.53 EFoplmnwact  ²Î¼ûT_zPS_UiccId_PlmnInfo */

-

-/*4.2.54   EFHplmnwact   ²Î¼ûT_zPS_UiccId_PlmnInfo*/

-

-/*4.2.57  EFNetpar , ¼ûT_zPS_UiccId_CellInfo */

-

-/*4.2.58 EFPnn  */

-typedef struct

-{

-    BYTE                                    bFullNameIei;                        

-    BYTE                                    bFullNameLen;          /*3...255*/            

-    BYTE                                    bShortNameFg;                   /*IEI Flag*/

-    BYTE                                    bShortNameIei;    

-                   

-    BYTE                                    bShortNameLen;                    /*3...255*/ 

-    BYTE                                    abPadding[3];

-

-    BYTE                                    abFullNameCont[ZPS_UICC_LEN_PNN_FULL];  

-  

-    BYTE                                    abShortNameCont[ZPS_UICC_LEN_PNN_SHORT];                                            

-}T_zPS_UICC_Pnn,

-T_z_UICC_Pnn;

-

-

-

-

-/*4.2.59 EFOpl  */

-typedef struct

-{

-  BYTE                                               abLocaAreaId[7];

-  BYTE                                               bPLMNNetNameRecId;

-}T_zPS_UICC_Opl,

-T_z_UICC_Opl;

-

-

-

-/*4.2.60 EFMBDN */

-typedef struct

-{

-  BYTE                                           bMaxAlphaIdLen;          /*±íÃ÷µ±Ç°¿¨Ö§³ÖµÄAlphaId×î´ó³¤¶È*/

-  BYTE                                           bBcdSscLen;

-  BYTE                                           bTonNpi;

-  

-  BYTE                                           bCpbCfgId; 

-  BYTE                                           bExt6RecId;

-  BYTE                                           abPadding1[2];

-

-  BYTE                                           abAlphaId[ZPS_UICC_LEN_NBDN];

-  BYTE                                           abPadding2[2];

-

-  BYTE                                           abDialNumSsc[10];

-  BYTE                                           abPadding3[2];

-}T_zPS_UICC_Mbdn,

-T_z_UICC_Mbdn;

-

-

-/*4.2.61 EFEXT6  */

-typedef struct

-{

-  BYTE                                            bRecType;

-  BYTE                                            bIdent;

-  BYTE                                            abPadding1[2];

-

-  BYTE                                            abExtData[11];

-  BYTE                                            bPadding2;

-}T_zPS_UICC_Ext6,

-T_z_UICC_Ext6;

-

-

-/*4.2.62  EFMBI */

-typedef struct

-{

-  BYTE                                            bVoicemailMbi;

-  BYTE                                            bFaxMbi;

-  BYTE                                            bEMailMbi;

-  BYTE                                            bOtherMbi;

-}T_zPS_UICC_Mbi,

-T_z_UICC_Mbi;

-

-

-/*4.2.63  EFMWIS  */

-typedef struct

-{

-  BYTE                                             bMsgWaitIndStatus;

-    BYTE                                             abPadding[3];

-

-    BYTE                                             bVoicemailMsgWaitNum;

-    BYTE                                             bFaxMsgWaitNum;

-    BYTE                                             bEleMailMsgWaitNum;

-    BYTE                                             bOtherMsgWaitNum;

-}T_zPS_UICC_Mwis,

-T_z_UICC_Mwis;

-

-

-/*4.2.64  EFCFIS */

-typedef struct

-{

-    BYTE                                              bMspNum;

-    BYTE                                              bCfuIndStatus;

-    BYTE                                              bBcdSscLen;                       

-    BYTE                                              bTonNpi; 

-                             

-    BYTE                                              bCpbCfg2Id;                       

-    BYTE                                              bExt7RecId;

-    BYTE                                              abPadding1[2];                                                                    

-

-    BYTE                                              abDiallNum[10];                   

-    BYTE                                              abPadding2[2];

-}T_zPS_UICC_Cfis,

-T_z_UICC_Cfis;

-

-

-/*4.2.65   EFEXT7  */

-typedef struct

-{

-  BYTE                                            bRecType;

-  BYTE                                            bIdent;

-  BYTE                                            abPadding1[2];

-

-  BYTE                                            abExtData[11];

-  BYTE                                            bPadding2;

-}T_zPS_UICC_Ext7,

-T_z_UICC_Ext7;

-

-

-

-/*4.2.66  EFSpdi  */

-typedef struct

-{    

-    BYTE                                            bNum;

-    BYTE                                            abPadding[3];

-    T_zPS_PlmnId                               atPlmn[ZPS_UICC_LEN_SPDI];  /*1...255*/

-}T_zPS_UICC_Spdi,

-T_z_UICC_Spdi;

-

-

-/*4.2.67 EFMmsn  */

-typedef struct

-{

-    BYTE                                              bMmsImple;

-    BYTE                                              bMmsNotiLen;

-    BYTE                                              bExtFileRecNum;

-    BYTE                                              bPadding1;

-

-    BYTE                                              abMmsStatus[2];

-    BYTE                                              abPadding2[2];

-

-    BYTE                                              abMmsNoti[ZPS_UICC_LEN_MMSN];

-    BYTE                                              abPadding3[2];

-}T_zPS_UICC_Mmsn,

-T_z_UICC_Mmsn;

-

-

-

-/*4.2.68  EFExt8 */

-typedef struct

-{

-    BYTE                                              bRecType;

-    BYTE                                              bLen;

-    BYTE                                              bRecId;

-    BYTE                                              bPadding1;

-

-    BYTE                                              abExtData[ZPS_UICC_LEN_EXT8];

-    BYTE                                              bPadding2;

-}T_zPS_UICC_Ext8,

-T_z_UICC_Ext8;

-

-

-/*4.2.69  EFMMSICP  */

-typedef struct

-{

-    BYTE                                         bCnBearerLen;

-    BYTE                                         abPadding1[3];

-

-    BYTE                                         abInterCnBearer[ZPS_UICC_LEN_MMSICP_VAL];

-    BYTE                                         abPadding2[2];

-}T_zPS_UICC_InterCnBearer,

-T_z_UICC_InterCnBearer;

-

-typedef struct

-{ 

-    BYTE                                         bMmsImple;

-    BYTE                                         bRelayServerLen;

-    BYTE                                         bUsimInterNum;

-    BYTE                                         bGatewayFg;

-

-    BYTE                                         bGatewayLen;

-    BYTE                                         abPadding1[3];

-

-    BYTE                                         abRelayServerAddr[ZPS_UICC_LEN_MMSICP_SERVER];

-    BYTE                                         abPadding2[2];

-  

-    T_zPS_UICC_InterCnBearer                      atUsimInter[ZPS_UICC_LEN_MMSICP_INTER];

-  

-    BYTE                                         abGatewayInfor[ZPS_UICC_LEN_MMSICP_GATEWAY];

-    BYTE                                         abPadding3[2];

-}T_zPS_UICC_MmsicpTlv,

-T_z_UICC_MmsicpTlv;

-

-

-

-

-typedef struct

-{

-   BYTE                                           bNum; 

-   BYTE                                           abPadding[3];

-

-   T_zPS_UICC_MmsicpTlv                           atMmsicpTlvObj[ZPS_UICC_LEN_MMSICP]; 

-}T_zPS_UICC_Mmsicp,

-T_z_UICC_Mmsicp;

-

-

-/*4.2.70  EFMMSUP */

-typedef struct

-{

-    BYTE                                          bMmsImplemInfor;

-    BYTE                                          bNameLen;

-    BYTE                                          bInformLen;

-    BYTE                                          bPadding;

-

-    BYTE                                          abMNameVal[ZPS_UICC_LEN_MMSUP_NAME];

-

-    BYTE                                          abInformVal[ZPS_UICC_LEN_MMSUP_INFORM];

-}T_zPS_UICC_Mmsup,

-T_z_UICC_Mmsup;

-

-

-

-/*4.2.71 EFMMSUCP  */

-typedef struct

-{

-    BYTE                                            bLen; 

-    BYTE                                            abPadding[3];

-

-    T_zPS_UICC_MmsicpTlv                            atTlvObj[ZPS_UICC_LEN_MMSUCP]; 

-}T_zPS_UICC_Mmsucp,

-T_z_UICC_Mmsucp;

-

-

-/*4.2.72 EFNIA  */

-typedef struct

-{

-    BYTE                                              bAlertCateg;

-    BYTE                                              bInforTextLen;

-    BYTE                                              abPadding1[2];

-

-    BYTE                                              abInforText[ZPS_UICC_LEN_NIA];

-    BYTE                                              abPadding2[3];

-}T_zPS_UICC_Nia,

-T_z_UICC_Nia;

-

-/* GroupId, BCDÂë¸ñʽ£¬Êý×é0ÔªËØµÍ4bitΪDigit1£¬¸ß4bitΪDigit2£¬ÒÀ´ËÀàÍÆ*/

-typedef BYTE                                        T_zPS_UICC_GroupId[ZPS_UICC_LEN_GROUPID],

-T_z_UICC_GroupId[Z_UICC_LEN_GROUPID];

-

-/*4.2.73  EFVGCS   */

-typedef struct

-{

-    BYTE                                            bNum;                        /*1...50*/

-    BYTE                                            abPadding[3];

-

-    T_zPS_UICC_GroupId                              atVgcs[ZPS_UICC_LEN_VGCS];

-}T_zPS_UICC_Vgcs,

-T_z_UICC_Vgcs;

-

-

-/*4.2.74 EFVGCSS, 4.2.76 EFVBSS */

-typedef struct

-{

-    BYTE                                            abDeActFlags[7];                                      

-    BYTE                                            bPadding;

-}T_zPS_UICC_Vgcss, T_zPS_UICC_Vbss,

-T_z_UICC_Vgcss, T_z_UICC_Vbss;

-

-/*4.2.75  EFVBS  */

-typedef struct

-{

-    BYTE                                            bNum;                        /*1...50*/

-    BYTE                                            abPadding[3];

-

-    T_zPS_UICC_GroupId                              atVbs[ZPS_UICC_LEN_VBS];

-}T_zPS_UICC_Vbs,

-T_z_UICC_Vbs;

-

-/* 4.2.97 EFFDNURI */

-typedef struct

-{

-    BYTE                                           bUriAddrLen;

-    BYTE                                           bMaxAlphaIdLen;          /*±íÃ÷µ±Ç°¿¨Ö§³ÖµÄAlphaId×î´ó³¤¶È*/

-    BYTE                                           abUriAddr[ZPS_UICC_LEN_FDNURI];

-    BYTE                                           abAlphaId[ZPS_UICC_LEN_FDNURI];

-}T_z_UICC_FdnUri;

-

-/* 4.2.99 EFSDNURI */

-typedef struct

-{

-    BYTE                                           bUriAddrLen;

-    BYTE                                           bMaxAlphaIdLen;          /*±íÃ÷µ±Ç°¿¨Ö§³ÖµÄAlphaId×î´ó³¤¶È*/

-    BYTE                                           abUriAddr[ZPS_UICC_LEN_SDNURI];

-    BYTE                                           abAlphaId[ZPS_UICC_LEN_SDNURI];

-}T_z_UICC_SdnUri;

-

-/*4.4.1.1   EFSai */

-typedef struct

-{

-    BYTE                                            bLSAAccInd;

-    BYTE                                            bNum;

-    BYTE                                            abPadding[2];

-

-    BYTE                                            abLSAAccIndText[ZPS_UICC_LEN_SAI];

-}T_zPS_UICC_Sai,

-T_z_UICC_Sai;

-

-

-/*4.4.1.2  EFSLL */

-typedef struct

-{

-    BYTE                                                 bConfigParam;

-    BYTE                                                 bIconIdent;

-    BYTE                                                 bSllPriority;

-    BYTE                                                 bLSADescRecIdent;

-

-    BYTE                                                 bLSANameLen;

-    BYTE                                                 abPadding1[3];

-

-    BYTE                                                 abLSAName[ZPS_UICC_LEN_SLL];

-

-    BYTE                                                 abLSADescFileId[2];

-    BYTE                                                 abPadding2[2];

-

-    T_zPS_PlmnId                                         tPLMNCode;

-    BYTE                                                 bPadding3;

-}T_zPS_UICC_Sll,

-T_z_UICC_Sll;

-

-

-

-/*4.4.1.3  LSA Descriptor files  */

-typedef struct

-{

-    BYTE                                                  bLSADescTypeNum;

-    BYTE                                                  bRecIdent;

-    BYTE                                                  bNum;

-    BYTE                                                  bPadding;

-

-  DWORD                                                 adwLSADescriptor[ZPS_UICC_LEN_LSA_DESCR];

-}T_zPS_UICC_LSA_Descr,

-T_z_UICC_LSA_Descr;

-

-

-/*4.4.2.1  EFpbr   */

-typedef struct

-{ 

-  BYTE                bBasicLen; /* ÂëÁ÷³¤¶È */

-  BYTE                abPadding[3];

-

-  BYTE                abPbrValue[ZPS_UICC_PBR_MAX_LEN];

-}T_zPS_UICC_PbrBasic,

-T_z_UICC_PbrBasic;

-

-

-typedef struct

-{ 

-  BYTE       bPbrTag; /*¸ÃPbr¶ÔÓ¦µÄTypeÀàÐÍ£¬ÆäÖÐZPS_UICC_PBR_TYPE1(0) ±íʾType1£»

-                                                 ZPS_UICC_PBR_TYPE2(1) ±íʾType2£» 

-                                                 ZPS_UICC_PBR_TYPE3(2) ±íʾType3 

-                                                 */        

-  BYTE       bPbrKeyidListNum;            /* abKeyidListÓÐЧ¸öÊý*/

-  BYTE       abPadding[2];

-

-  WORD       awKeyidList[ZPS_UICC_PBR_MAX_KEYIDNUM]; /* ¸ÃTypeϰüº¬µÄÎļþkeyidÁбí*/

-}T_zPS_UICC_Pbr_Type,

-T_z_UICC_Pbr_Type;

-

-typedef struct

-{ 

-  BYTE                bPbrTypeNum; /* T_zPS_UICC_Pbr½á¹¹ÖÐatPbrTypeList¸öÊý */

-  BYTE                abPadding[3];

-

- T_zPS_UICC_Pbr_Type  atPbrTypeList[ZPS_UICC_PBR_MAX_PBRTYPENUM]; /* PBRÖÐType List £¬

-                                                                  ÿһ¸öLISTÖбíʾ¸ÃList¶ÔÓ¦µÃÎļþTypeÀàÐÍ

-                                                                  ÒÔ¼°°üº¬µÄÎļþkeyid*/

-}T_zPS_UICC_Pbr,

-T_z_UICC_Pbr;

-

-

-/*4.4.2.2   EFIap */

-typedef struct

-{

-  BYTE                                           bNum;

-  BYTE                                           abPadding[3];

-

-  BYTE                                           abIndRecNum[ZPS_UICC_LEN_IAP]; 

-}T_zPS_UICC_Iap,

-T_z_UICC_Iap;

-

-

-

-/*4.4.2.3 EFAdn */

-typedef struct 

-{

-    BYTE                                           bMaxAlphaIdLen;          /*±íÃ÷µ±Ç°¿¨Ö§³ÖµÄAlphaId×î´ó³¤¶È*/

-    BYTE                                           bBcdSscLen;                        

-    BYTE                                           bTonNpi;                           

-    

-    BYTE                                           bCpbCfg1Id;                        

-    BYTE                                           bExt1Record;                        

-    BYTE                                           abPadding1[2];

-

-    BYTE                                           abAlphaId[ZPS_UICC_LEN_ADN];

-    BYTE                                           abPadding2[2];

-

-    BYTE                                           abDiallSsc[10]; 

-    BYTE                                           abPadding3[2];                                                                 

-}T_zPS_UICC_Adn,

-T_z_UICC_Adn;

-

-

-/*4.4.2.4   EFExt1 */

-typedef struct

-{

-    BYTE                                            bRecType;

-    BYTE                                            bIdent;

-    BYTE                                            abPadding1[2];

-

-    BYTE                                            abExtData[11];

-    BYTE                                            bPadding2;

-}T_zPS_UICC_Ext1,

-T_z_UICC_Ext1;

-

-

-/*4.4.2.5    EFPBC  */

-typedef struct 

-{

-    BYTE                                            bEntryCtlInfor;                        

-    BYTE                                            bHiddenInfor;   

-    BYTE                                            abPadding[2];                       

-}T_zPS_UICC_Pbc,

-T_z_UICC_Pbc;

-

-

-/*4.4.2.6  EFGRP */

-typedef struct 

-{

-    BYTE                                            bNum;                    /*1...10*/

-    BYTE                                            abPadding1[3];                       

-

-    BYTE                                            abGroupId[10];                                                

-    BYTE                                            abPadding2[2];                       

-}T_zPS_UICC_Grp,

-T_z_UICC_Grp;

-

-

-

-/*4.4.2.7  EFAas  */

-typedef struct 

-{

-    BYTE                                            bMaxAlphaLen;          /*±íÃ÷µ±Ç°¿¨Ö§³ÖµÄAlphaTextStr×î´ó³¤¶È*/

-    BYTE                                            abPadding1[2];                       

-

-    BYTE                                            abAlphaTextStr[ZPS_UICC_LEN_AAS];

-    BYTE                                            abPadding2[2];                       

-}T_zPS_UICC_Aas,

-T_z_UICC_Aas;

-

-

-/*4.4.2.8  EFGas */

-typedef struct 

-{

-    BYTE                                            bMaxAlphaLen;          /*±íÃ÷µ±Ç°¿¨Ö§³ÖµÄAlphaId×î´ó³¤¶È*/

-    BYTE                                            abPadding1[2];                       

-

-    BYTE                                            abAlphaId[ZPS_UICC_LEN_GAS];

-    BYTE                                            abPadding2[2];                       

-}T_zPS_UICC_Gas,

-T_z_UICC_Gas;

-

-

-/*4.4.2.11   EFCCP1 */

-/*4.2.38 EFCCP2  */

-typedef struct 

-{

-    BITS                            bExt:1;

-    BITS                            bRadReq:2;

-    BITS                            bCodeStd:1;

-    BITS                            bTranMode:1;

-    BITS                            bTranCapa:3;

-

-    BITS                            bExt1:1;

-    BITS                            bCTM:1;

-    BITS                            bSpchVersInd:4;

-    BITS                            :2;

-

-    BYTE                           bSpchIndLen;

-    BYTE                           abSpchInd[1];

-

-    BYTE                            bpresentfg1;        

-    BITS                            bCmprss:1;

-    BITS                            bStru:2;

-    BITS                            bDuplMode:1;

-    BITS                            bCfg:1;

-    BITS                            bNIRR:1;

-    BITS                            bEst:1;

-    BITS                            :1;

-

-    BYTE                            bpresentfg2;        

-    BITS                            bExt4:1;

-    BITS                            bRateAdap:2;

-    BITS                            bSignalAP:3;

-    BITS                            :2;

-

-    BITS                            bExt5:1;

-    BITS                            bOtherITC:2;

-    BITS                            bOtherAdapt:2;

-    BITS                            :3;

-

-    BITS                            bHdrNoHdr:1;

-    BITS                            bMultiFrm:1;

-    BITS                            bMode:1;

-    BITS                            bLLI:1;

-    BITS                            bAssignore:1;

-    BITS                            bInbNeg:1;

-    BITS                            :2;

-

-    BYTE                            bpresentfg3;        

-    BITS                            bExt7:1;

-    BITS                            bUserInfoLay1:4;

-    BITS                            bSyncAsync:1;

-    BITS                            :2;

-

-    BITS                            bExt8:1;

-    BITS                            bNumStopBit:1;

-    BITS                            bNego:1;

-    BITS                            bNumDataBit:1;

-    BITS                            bUserRate:4;

-

-

-    BITS                            bExt9:1;

-    BITS                            bIntermRate:2;

-    BITS                            bNIConTX:1;

-    BITS                            bNIConRX:1;

-    BITS                            bParity:3;

-     

-

-    BITS                            bExt10:1;

-    BITS                            bConnElem:2;

-    BITS                            bModemType:5;

-     

-

-    BITS                            bExt11:1;

-    BITS                            bOthermodTyp:2;

-    BITS                            bFixNetSerrat:5;

-

-    BITS                            bExt12:1;

-    BITS                            bAccptCode:4;

-    BITS                            bMaxNum:3;

-

-    BITS                            bExt13:1;

-    BITS                            bUIMI:3;

-    BITS                            bWantuserrat:4;

-

-    BITS                            bAcptChanCod:3;

-    BITS                            bAsyInd:2;

-    BITS                            :3;

-

-    BYTE                            bpresentfg4;        

-    BITS                            bUserInfoLay2:5;

-    BITS                            :3;

-}T_zPS_UICC_Ccp1,T_zPS_UICC_Ccp2,

-T_z_UICC_Ccp1,T_z_UICC_Ccp2;

-

-

-/*4.4.2.12.1  EFUID */

-typedef struct 

-{

-    BYTE                                             abPhoneBookUid[2];  

-    BYTE                                             abPadding[2];                                                               

-}T_zPS_UICC_Uid,

-T_z_UICC_Uid;

-

-

-/*4.4.2.12.2  EFPSC */

-typedef struct 

-{

-  BYTE                                             abPSC[4];                                                                   

-}T_zPS_UICC_Psc,

-T_z_UICC_Psc;

-

-

-/*4.4.2.12.3  EFCC */

-typedef struct 

-{

-    BYTE                                             abPhoneBookCC[2];                                                                   

-    BYTE                                             abPadding[2];                                                               

-}T_zPS_UICC_Cc,

-T_z_UICC_Cc;

-

-

-/*4.4.2.12.4   EFPUID  */

-typedef struct 

-{

-    BYTE                                             abPhoneBookPUID[2];                                                                   

-    BYTE                                             abPadding[2];                                                               

-}T_zPS_UICC_Puid,

-T_z_UICC_Puid;

-

-

-/*4.4.2.13   EFEMAIL */

-typedef struct 

-{

-  BYTE                                            bAdnFg;       /*1£ºbAdnKeyidºÍ bAdnRecIndx,0: bAdnKeyidºÍ bAdnRecNumÎÞЧ */

-  BYTE                                            bAdnRecId;    /*bAdnFg Ϊ1ʱÓÐЧ  */ 

-  WORD                                            wAdnKeyid;    /*bAdnFg Ϊ1ʱÓÐЧ  */                       

-  

-  BYTE                                            bMaxEmailAddressLen;          /*±íÃ÷µ±Ç°¿¨Ö§³ÖµÄEmailAddress×î´ó³¤¶È*/

-  BYTE                                            abPadding1[3];

-  BYTE                                              abEmailAddress[ZPS_UICC_LEN_EMAIL];

-  BYTE                                              abPadding2[2];

-}T_zPS_ApUicc_Email,

-T_zApUicc_Email;

-

-/*4.4.2.9   EFAnr */

-typedef struct 

-{

-  BYTE                                            bAdnFg;       /*1£ºbAdnKeyidºÍ bAdnRecIndx,0: bAdnKeyidºÍ bAdnRecNumÎÞЧ */

-  BYTE                                            bAdnRecId;    /*bAdnFg Ϊ1ʱÓÐЧ  */ 

-  WORD                                            wAdnKeyid;    /*bAdnFg Ϊ1ʱÓÐЧ  */                       

-    

-    BYTE                                            bAnrId;       

-    BYTE                                            bBcdSscLen;                                                                       

-    BYTE                                            bTonNpi;                           

-    BYTE                                            bCpbCfg1Id; 

-    

-    BYTE                                            bExt1RecId;  

-    BYTE                                            abPadding1[3];

-        

-    BYTE                                            abAdnSsc[10];                      

-    BYTE                                            abPadding2[2];

-}T_zPS_ApUicc_Anr,

-T_zApUicc_Anr;

-

-/*4.4.2.10  EFSne  */

-typedef struct 

-{

-  BYTE                                            bAdnFg;       /*1£ºbAdnKeyidºÍ bAdnRecIndx,0: bAdnKeyidºÍ bAdnRecNumÎÞЧ */

-  BYTE                                            bAdnRecId;    /*bAdnFg Ϊ1ʱÓÐЧ  */ 

-  WORD                                            wAdnKeyid;    /*bAdnFg Ϊ1ʱÓÐЧ  */                       

-

-  BYTE                                            bMaxAlphaLen;          /*±íÃ÷µ±Ç°¿¨Ö§³ÖµÄAlphaId×î´ó³¤¶È*/

-  BYTE                                            abPadding1[3];

-  BYTE                                            abAlphaId[ZPS_UICC_LEN_SNE];

-  BYTE                                            abPadding2[2];

-}T_zPS_ApUicc_Sne,

-T_zApUicc_Sne;

-

-

-/*4.4.3.1   EFKC; 4.4.3.2   EFKcGPRS  ²Î¼ûT_zPS_UiccId_GsmSecKey*/

-

-/*4.4.3.4   EFCPBCCH  */

-typedef struct 

-{

-    BYTE                                              bEmptyInd;    /*¸Ã¼Ç¼ÊÇ·ñΪ¿Õ¡£1:¿Õ£¬¼´¼Ç¼ÎÞЧ£»0:·Ç¿Õ*/

-    BYTE                                              bBandInd;     /*1:PCS1900, 0:DCS1800»òÆäËû*/

-    WORD                                              wARFCN;  

-}T_zPS_UICC_CPBCCHRec,

-T_z_UICC_CPBCCHRec;

-

-typedef struct 

-{

-    BYTE                                              bNum;

-    BYTE                                              abPadding[3];

-

-    T_zPS_UICC_CPBCCHRec                              atCPBCCH[ZPS_UICC_LEN_CPBCCH];

-}T_zPS_UICC_CPBCCH,

-T_z_UICC_CPBCCH;

-

-

-

-/*4.4.3.5  EFInvScan */

-typedef struct 

-{

-    BYTE                                              bInvestScanFlag;

-    BYTE                                              abPadding[3];

-}T_zPS_UICC_InvScan,

-T_z_UICC_InvScan;

-

-

-/*4.4.4.1  EFMExE-ST */

-typedef struct 

-{

-  BYTE                                              bNum;                 /*1...9*/

-  BYTE                                              abPadding1[3];

-

-  BYTE                                              abMexestServ[ZPS_UICC_LEN_MEXEST];

-  BYTE                                              abPAdding2[3];

-}T_zPS_UICC_USIM_MExEST,T_zPS_UICC_SIM_MExEST,

-T_z_UICC_USIM_MExEST,T_z_UICC_SIM_MExEST;

-

-typedef struct  

-{

-    BYTE     bMExEFlag;                       /*3G½á¹¹È¡1£¬2G½á¹¹È¡2*/

-    BYTE     abPadding[3];

-    union

-    {

-        T_zPS_UICC_USIM_MExEST   tUsimMExEST;

-        T_zPS_UICC_SIM_MExEST    tSimMExEST;

-    }Value;

-}T_zPS_UICC_MExEST,

-T_z_UICC_MExEST;

-

-/*4.4.4.1  EFSST */

-typedef struct{

-

-    BITS        bCHVDisFunFg:2;

-    BITS        bADNFg:2;

-    BITS        bFDNFg:2;

-    BITS        bSMSFg:2;

-    

-    BITS        bAoCFg:2;

-    BITS        bCCPFg:2;

-    BITS        bPLMNSelectorFg:2;

-    BITS        :2;

-    

-    BITS        bMSISDNFg:2;

-    BITS        bExten1Fg:2;

-    BITS        bExten2Fg:2;

-    BITS        bSMSPFg:2;

-

-    BITS        bLNDFg:2;

-    BITS        bCBMIFg:2;

-    BITS        bGIDLev1Fg:2;

-    BITS        bGIDLev2Fg:2;

-

-    BITS        bSPNFg:2;

-    BITS        bSDNFg:2;

-    BITS        bExten3Fg:2;

-    BITS        :2;

-

-    BITS        bVGCSGrpIdListFg:2;

-    BITS        bVBSGrpIdListFg:2;

-    BITS        bMulLevPPServFg:2;

-    BITS        bAAforeMLPPFg:2;

-

-    BITS        bSMSCBFg:2;

-    BITS        bSMSPPFg:2;

-    BITS        bMenuSeleFg:2;

-    BITS        bCallCtrolFg:2;

-

-    BITS        bProactiveSIMFg:2;

-    BITS        bCBMIdRangFg:2;

-    BITS        bBDNFg:2;

-    BITS        bExten4Fg:2;

-

-    BITS        bDePersonCntrlkeyFg:2;

-    BITS        bCoNetWorkListFg:2;

-    BITS        bSMSRFg:2;

-    BITS        bNetIndicFg:2;

-

-    BITS        bMOSMFg:2;

-    BITS        bGPRSFg:2;

-    BITS        bIMGFg:2;

-    BITS        bSoLSAFg:2;

-

-    BITS        bUSSDFg:2;

-    BITS        bRunATFg:2;

-    BITS        bUPlmnAccTechFg:2;

-    BITS        bOPlmnAccTechFg:2;

-

-    BITS        bHPlmnAccTechFg:2;

-    BITS        bCPBCCHFg:2;

-    BITS        bInvesScanFg:2;

-    BITS        bExtenCCPFg:2;

-    

-    BITS        bMExEFg:2;

-    BITS        :2;

-    BITS        bPLMNNetNameFg:2;

-    BITS        bOPLMNListFg:2;

-

-    BITS        bMDNFg:2;

-    BITS        bMWISFg:2;

-    BITS        bCFISFg:2;

-    BITS        bSPDIFg:2;

-

-    BITS        bMMSFg:2;

-    BITS        bExten8Fg:2;

-    BITS        bMMSUCPFg:2;

-    BITS        :2;

- 

-}T_zPS_UICC_SST,

-T_z_UICC_SST;

-

-

-/*4.4.4.2 EFORPK */

-typedef struct 

-{

-    BYTE                                               bParaInd;

-    BYTE                                               bFlags;

-    BYTE                                               bCertType;

-    BYTE                                               bKeyIdLen;                      //M

-

-    BYTE                                               abKeyCerteId[2];

-    BYTE                                               abPadding1[2];

-

-    BYTE                                               abKeyCertOffset[2];

-    BYTE                                               abPadding2[2];

-

-    BYTE                                               abKeyCertLen[2];

-    BYTE                                               abPadding3[2];

-

-    BYTE                                               abKeyId[ZPS_UICC_LEN_ORPK];          //M

-}T_zPS_UICC_ORPK,

-T_z_UICC_ORPK;

-

-

-

-/*4.4.4.3  EFARPK */

-typedef struct

-{

-    BYTE                                               bParaInd;

-    BYTE                                               bFlags;

-    BYTE                                               bCertType;

-    BYTE                                               bKeyIdLen;

-

-    BYTE                                               abKeyCertId[2];

-    BYTE                                               abPadding1[2];

-

-    BYTE                                               abKeyCertOffset[2];

-    BYTE                                               abPadding2[2];

-

-    BYTE                                               abKeyCertLen[2];

-    BYTE                                               abPadding3[2];

-

-    BYTE                                               abKeyId[ZPS_UICC_LEN_ARPK];    

-}T_zPS_UICC_ARPK,

-T_z_UICC_ARPK;

-

-

-

-/*4.4.4.4   EFTPRPK */

-typedef struct

-{

-    BYTE                                                bParaInd;

-    BYTE                                                bFlags;

-    BYTE                                                bCertType;

-    BYTE                                                bKeyIdLen;                       //M

-

-    BYTE                                                bCertIdLen;                       //M

-    BYTE                                                abPadding1[3];

-

-    BYTE                                                abKeyCertId[2];

-    BYTE                                                abPadding2[2];

-

-    BYTE                                                abKeyCertOffset[2];

-    BYTE                                                abPadding3[2];

-

-    BYTE                                                abKetyCertLen[2];

-    BYTE                                                abPadding4[2];

-

-    BYTE                                                abKeyId[ZPS_UICC_LEN_TPRPK_ID];

-

-    BYTE                                                abCertId[ZPS_UICC_LEN_TPRPK_CERT];

-}T_zPS_UICC_TPRPK,

-T_z_UICC_TPRPK;

-

-

-

-/*4.4.4.5 EFTKCDF */

-typedef struct

-{

-    BYTE                                                 bNum;

-    BYTE                                                 abPadding[3];

-

-    BYTE                                                 abKeyCertData[ZPS_UICC_LEN_TKCDF];

-}T_zPS_UICC_TKCDF,

-T_z_UICC_TKCDF;

-

-

-

-/*4.5.4 EFSUME*/

-typedef struct

-{

-    BYTE                                    abAlphaId[20];

-    

-    BYTE                                    abIconId[ZPS_UICC_LEN_SUME_ICON];

-    BYTE                                    bIconIdLen;

-    BYTE                                    bPadding;

-}T_zPS_UICC_Sume,

-T_z_UICC_Sume;

-

-

-/*4.6.1.2 Image Instance Data Files  */

-typedef struct

-{

-    BYTE                                        abImgInst[ZPS_UICC_LEN_IMGINST];

-    BYTE                                        bLen;

-    BYTE                                        bPadding;

-}T_zPS_UICC_ImgInst,

-T_z_UICC_ImgInst;

-

-

-/*4.6.1.1 EFIMG (Image) */

-typedef struct {

-    BYTE                                         bWidth;

-    BYTE                                         bHeigh;

-    BYTE                                         bCodeScheme;

-    BYTE                                         bPadding;

-    

-    WORD                                       wInstncFid;

-    WORD                                       wOffsetIntoInstnc;

-    WORD                                       wInstncDataLen;

-    BYTE                                         abPadding[2];

-} T_zPS_UICC_ImgDscrp,

-T_z_UICC_ImgDscrp;

-

-

-typedef struct {

-    BYTE                  bImgNum;

-    BYTE                  abPadding[3];

-    T_zPS_UICC_ImgDscrp    tImgDscrp[ZPS_ApUicc_MAX_IMG_DSCRP_NUM];

-} T_zPS_UICC_Img,

-T_z_UICC_Img;

-

-

-/*4.6.1.1 EFIMG (Image) */

-typedef struct {

-    WORD                                         wInstncKeyId;

-    BYTE                                         bWidth;

-    BYTE                                         bHeigh;

-    

-    BYTE                                         bCodeScheme;

-    BYTE                                         abPadding[3];

-    WORD                                       wOffsetIntoInstnc;

-    WORD                                       wInstncDataLen;

-} T_zPS_ApUicc_ImgDscrp,

-T_zApUicc_ImgDscrp;

-

-typedef struct {

-    BYTE                   bImgNum;

-    BYTE                   abPadding[3];

-    T_zPS_ApUicc_ImgDscrp  tImgDscrp[ZPS_ApUicc_MAX_IMG_DSCRP_NUM];

-} T_zPS_ApUicc_Img,

-T_zApUicc_Img;

-

-

-

-

-/**************************************************************************

-*                         ×Ô¶¨ÒåEF½á¹¹¶¨Òå                                *

-**************************************************************************/

-/*7-23Ôö¼Ó2G½á¹¹*/

-/* sim_Phase */

-typedef struct {

-    BYTE                             bPhase;

-    BYTE                             abPadding[3];

-}T_zPS_Uicc_SimPhase,

-T_z_UICC_SimPhase;

-

-

-

-/* sim_BCCH */

-typedef struct {

-    BYTE                             abBcch[16];

-}T_zPS_Uicc_SimBcch,

-T_z_UICC_SimBcch;

-

-

-/* sim_LP */

-typedef struct {

-    BYTE                                 bNum;                         /*ÓïÑÔ±àÂëÖÖÊý*/

-    BYTE                                 abPadding1[3];

-

-    BYTE                                 abLangPrefer[ZPS_UICC_SIM_LP];      /*language Code*/ 

-    BYTE                                 abPadding2[3];

-}T_zPS_Uicc_SimLp,

-T_z_UICC_SimLp;

-

-

-/*SimCCP */

-typedef struct {

-    BYTE                                        abBCIE[10]; 

-    BYTE                                        abPadding[2];

-}T_zPS_UICC_SimCCP,

-T_z_UICC_SimCCP;

-

-

-/*SimECCP */

-typedef struct {

-    BYTE                                        bNum;     /* bNum >= 15  Unused bytes 

-                                                             are filled with 'FF'.*/

-    BYTE                                        abPadding[3];

-    BYTE                                        abBCIE[ZPS_UICC_SIM_ECCP];

-}T_zPS_UICC_SimECCP,

-T_z_UICC_SimECCP;

-

-

-/*SimLND */

-typedef struct 

-{

-    BYTE                                           bAlphaIdMaxLen;    /*µ±Ç°¿¨alphaËùÖ§³ÖµÄ×î´ó³¤¶È*/

-    BYTE                                           bBcdSscLen;                        

-    BYTE                                           bTonNpi;                           

-    BYTE                                           bCpbCfg1Id;                        

-    

-    BYTE                                           bExt1Record; 

-    BYTE                                           abPadding1[3];

-

-    BYTE                                           abDiallSsc[10];  

-    BYTE                                           abPadding2[2];

-    

-    BYTE                                           abAlphaId[ZPS_UICC_SIM_LND];

-    BYTE                                           abPadding3[2];

-}T_zPS_UICC_SimLND,

-T_z_UICC_SimLND;

-

-/*UstSst */

-typedef struct 

-{

-    BYTE bFlag; /* 0 ΪÎÞЧ,1ΪUST, 2ΪSST*/

-    union

-    {

-        T_zPS_UICC_Ust tUst;

-        T_zPS_UICC_SST tSst;

-    } val;

-}T_zPS_UICC_UstSst,

-T_z_UICC_UstSst;

-

-

-/*==============USATÏà¹Ø½á¹¹=================*/

-/*102221 8.1        Address */

-typedef struct  {    

-    BITS                                           bTon:3;                           

-    BITS                                           bNPI:4; 

-    BITS                                           :1;

-                                                

-    BYTE                                           bCallNumLen;   /*µØÖ·ºÅÂëµÄ×Ö½ÚÊý£¬·¶Î§>=0£¬<=40*/

-    BYTE                                           abPadding[2];

-    BYTE                                           abCallNum[ZPS_APUICC_USAT_MAX_BCDNUM_LEN];

-}T_zPS_ApUicc_USAT_Addr,

-T_zApUicc_USAT_Addr;

-

-

-/*8.2        Alpha identifier */

-typedef struct  {    

-    BYTE                                           abAlpha[ZPS_APUICC_USAT_MAX_ALPHA_LEN];

-    BYTE                                           bAlphaLen;    

-    BYTE                                           abPadding[2];

-}T_zPS_ApUicc_USAT_Alpha,

-T_zApUicc_USAT_Alpha;

-

-

-/*8.3        Subaddress */

-typedef struct  {    

-    BYTE                                            abSubAddr[ZPS_APUICC_USAT_MAX_SUBADR_LEN];

-    BYTE                                            bLen;  

-    BYTE                                            abPadding[2];

-}T_zPS_ApUicc_USAT_SubAddr,

-T_zApUicc_USAT_SubAddr;

-

-

-/*8.4        Capability configuration parameters */

-typedef struct  {    

-    BYTE                                            abCapa[ZPS_APUICC_USAT_MAX_BC_LEN];

-  

-    BYTE                                            bCpaLen;

-    BYTE                                            abPadding[3];  

-}T_zPS_ApUicc_USAT_Capa,

-T_zApUicc_USAT_Capa;

-

-

-/*8.6        Command details */

-typedef struct  {    

-    BYTE                                            bCmdNum;      /*ÃüÁîÂ룬ȡֵ0-ff*/                                 

-    BYTE                                            bCmdQual;     /*ÃüÁîÏÞ¶¨·û£¬Ö¸¶¨¸÷Ö÷¶¯Ê½ÃüÁîÏÞ¶¨²Ù×÷£¬²ÎÕÕ122.223 8.6*/

-    BYTE                                            abPadding[2];

-}T_zPS_ApUicc_USAT_CmdDtls,

-T_zApUicc_USAT_CmdDtls;

-

-/*8.7        Device identities */

-typedef struct  {    

-    BYTE                                            bSDvcId;

-    BYTE                                            bDDvcId;

-    BYTE                                            abPadding[2];

-}T_zPS_ApUicc_USAT_DvcId,

-T_zApUicc_USAT_DvcId;

-

-/*8.8        Duration */

-typedef struct  {    

-    BYTE                                            bTimeUnit;

-    BYTE                                            bTimeFreq;

-    BYTE                                            abPadding[2];

-}T_zPS_ApUicc_USAT_Dura,

-T_zApUicc_USAT_Dura;

-

-/*102.223

-  8.9      Item 

-  8.24     Items next action indicator 

-  8.32     Item icon identifier list 

-  8.73     Item text attribute list*/

-typedef struct {

-    BYTE                                            bItemID;

-    BYTE                                            bItemNAI; 

-    BYTE                                            bItemIconID; 

-    BYTE                                            bPadding;

-    BYTE                                            abTxtAtr[ZPS_APUICC_USAT_MAX_TXTATTR_LEN]; 

-    

-    T_zPS_ApUicc_USAT_Alpha                         tTxtStr; 

-}T_zPS_ApUicc_USAT_ItemInfo,

-T_zApUicc_USAT_ItemInfo;

-

-

-/*8.11     Response length */

-typedef struct  {    

-    BYTE                                            bMinLen;

-    BYTE                                            bMaxLen;

-    BYTE                                            abPadding[2];

-}T_zPS_ApUicc_USAT_RspLen,

-T_zApUicc_USAT_RspLen;

-

-/*8.12     Result */

-typedef struct  {       

-    BYTE                                            abAddRlt[ZPS_APUICC_USAT_MAX_ADDINFO_LEN];

-    BYTE                                            bComRlt;

-    BYTE                                            bAddRltLen;

-    BYTE                                            bPadding;                 

-}T_zPS_ApUicc_USAT_Result,

-T_zApUicc_USAT_Result;

-

-/*31111 8.14  SS string*/

-typedef struct  {    

-    BITS                                            bTon:3;                           

-    BITS                                            bNPI:4; 

-    BITS                                            :1;

-                                                       

-    BYTE                                            bLen;

-    BYTE                                            abPadding[2];

-     

-    BYTE                                            abSsStr[ZPS_APUICC_USAT_MAX_SSSTR_LEN];

-    BYTE                                            bPadding;

-}T_zPS_ApUicc_USAT_SsStr,

-T_zApUicc_USAT_SsStr;

-

-/*31111  8.15 Text string

-  102221 8.23 Default Text */

-typedef struct  { 

-    BYTE                                            abTxt[ZPS_APUICC_USAT_MAX_TXTSTR_LEN];

-    BYTE                                            bCodeMode;

-    BYTE                                            bTxtLen;

-    BYTE                                            bPadding;      

-}T_zPS_ApUicc_USAT_TxtStr,T_zPS_ApUicc_USAT_DefTxt,

-T_zApUicc_USAT_TxtStr,T_zApUicc_USAT_DefTxt;

-

-/*31111 8.17  USSD string*/

-typedef struct  {    

-    BYTE                                            bDcs;

-    BYTE                                            bLen;

-    BYTE                                            abPadding[2];

-                                       

-    BYTE                                            abUssdStr[ZPS_APUICC_USAT_MAX_USSDSTR_LEN];

-    BYTE                                            bPadding;    

-}T_zPS_ApUicc_USAT_UssdStr,

-T_zApUicc_USAT_UssdStr;

-

-/*8.18     File list */

-typedef struct {

-    BYTE                                            bFileNum;

-    BYTE                                            bFidNum ;   /*WORDµÄ¸öÊý£¬Èç3F00£¬3FµÄ¸öÊý¼´ÎªÎļþ¸öÊý*/

-    BYTE                                            abPadding[2];

-    WORD                                            awFid[ZPS_APUICC_USAT_MAX_FILELST_LEN];

-} T_zPS_ApUicc_USAT_FileList,

-T_zApUicc_USAT_FileList;

-

-/*8.19     Location information */

-typedef struct {

-    BITS                                            bMCC1     :4;

-    BITS                                            bMCC2     :4;

-    BITS                                            bMCC3     :4;

-    BITS                                            bMNC3     :4;     

-    BITS                                            bMNC1     :4;

-    BITS                                            bMNC2     :4;

-    BYTE                                            aPadding;

-                                      

-    BYTE                                            abLac[2];

-    BYTE                                            abPadding[2];    

-}T_zPS_ApUicc_USAT_LAI,

-T_zApUicc_USAT_LAI;

-

-

-/*8.19     Location information */

-typedef struct {

-    BITS                                            bExtCellFg:1;

-    BITS                                            :7;

-    BYTE                                            abPadding[3];

-                               

-    BYTE                                            abCellId[2];

-    BYTE                                            abExtCellId[2];

-    T_zPS_ApUicc_USAT_LAI                           tCurLai;                                             

-} T_zPS_ApUicc_USAT_Location,

-T_zApUicc_USAT_Location;

-

-/*8.25     Event list */

-typedef struct  {    

-    BYTE                                            abEvtLst [ZPS_APUICC_USAT_MAX_EVNTLST_LEN];

-    BYTE                                            bLen;

-    BYTE                                            bPadding;  

-}T_zPS_ApUicc_USAT_EvtLst,

-T_zApUicc_USAT_EvtLst;

-

-/*8.31     Icon identifier */

-typedef struct  { 

-    BITS                                            bIconWithDesc:1;

-    BITS                                            :7;

-    BYTE                                            bIconId;

-    BYTE                                            abPadding[2];

-}T_zPS_ApUicc_USAT_Icon,

-T_zApUicc_USAT_Icon;

-

-/*8.33     Card reader status 

-  8.57     Card reader identifier */

-typedef struct  {  

-    BITS                                            bStatFg:1;

-    BITS                                            :7;

-                  

-    BYTE                                            bRCardStatus;

-    BYTE                                            bRCardIdLen;

-    BYTE                                            bPadding1;

-                                   

-    BYTE                                            abRCardId[ZPS_APUICC_USAT_MAX_CREADRID_LEN];

-    BYTE                                            bPadding2;                  

-}T_zPS_ApUicc_USAT_RdCardStatus,

-T_zApUicc_USAT_RdCardStatus;

-

-/*8.34     Card ATR*/

-typedef struct  {   

-    BYTE                                            abRCardAtr[ZPS_APUICC_USAT_MAX_CARDATR_LEN];

-    BYTE                                            bCardAtrLen;    

-}T_zPS_ApUicc_USAT_CardAtr,

-T_zApUicc_USAT_CardAtr;

-

-/*8.35     C-APDU*/

-typedef struct  {   

-    BYTE                                            bCla;

-    BYTE                                            bIns;

-    BYTE                                            bP1;

-    BYTE                                            bP2;

-      

-    BITS                                            bLcFg:1;

-    BITS                                            bLeFg:1;

-    BITS                                            :6;

-                                             

-    BYTE                                            bLc;

-    BYTE                                            bLe;

-    BYTE                                            bPadding;

-                                    

-    BYTE                                            abData[236];                                           

-}T_zPS_ApUicc_USAT_CApdu,

-T_zApUicc_USAT_CApdu;

-

-

-/*8.36     R-APDU*/

-typedef struct  {       

-    BYTE                                            abRApdu[ZPS_APUICC_USAT_MAX_RPDUDATA_LEN];

-    BYTE                                            bLen;

-    BYTE                                            bSW1;

-    BYTE                                            bSW2;                 

-}T_zPS_ApUicc_USAT_RApdu,

-T_zApUicc_USAT_RApdu;

-

-

-/*8.37     Timer identifier 

-  8.38     Timer value */

-typedef struct  {  

-    BITS                                            bValFg:1;  /*ÖµÊÇ·ñ´æÔÚ*/

-    BITS                                            :7;

-    BYTE                                            bTimerId;             /*ȡֵ0-8, ÎÞЧֵΪ0xff*/

-    BYTE                                            abPadding[2];

-    

-    BYTE                                            abTimerVal[3];

-    BYTE                                            bPadding; 

-}T_zPS_ApUicc_USAT_TimerInfo,

-T_zApUicc_USAT_TimerInfo;

-

-

-/*8.39     Date-time and time zone */

-typedef struct{                                  

-    BYTE                                            bYear;        

-    BYTE                                            bMonth;        

-    BYTE                                            bDay;        

-    BYTE                                            bHour; 

-    

-    BYTE                                            bMinute;        

-    BYTE                                            bSecond;        

-    BYTE                                            bTmZone;        

-    BYTE                                            bPadding;

-}T_zPS_ApUicc_USAT_TZAndTime,

-T_zApUicc_USAT_TZAndTime;  

-

-

-/*8.41     AT response */

-typedef struct  {   

-    BYTE                                            abAtRsp[ZPS_APUICC_USAT_MAX_ATRSP_LEN];

-    BYTE                                            bAtRspLen;  

-}T_zPS_ApUicc_USAT_AtRsp,

-T_zApUicc_USAT_AtRsp;

-

-/*31111  8.46 Timing Advance*/

-typedef struct {

-    BYTE                                            bMeStat;

-    BYTE                                            bTimeAdv;

-    BYTE                                            abPadding[2];

-} T_zPS_ApUicc_USAT_TimeAdv,

-T_zApUicc_USAT_TimeAdv;

-

-

-

-/*8.50     Provisioning file reference */

-typedef struct {

-    BYTE                                            bFidNum ;

-    BYTE                                            abPadding[3];

-    WORD                                            awFid[ZPS_APUICC_USAT_MAX_FILELST_LEN];

-} T_zPS_ApUicc_USAT_ProFileRef,

-T_zApUicc_USAT_ProFileRef;

-

-/*8.52     Bearer description */

-typedef struct  {  

-    BYTE                                            abParam[ZPS_APUICC_USAT_MAX_BEARPRAM_LEN];

-    BYTE                                            bBearType;

-    BYTE                                            bParamLen;

-    BYTE                                            bPadding;  

-}T_zPS_ApUicc_USAT_BDescp,

-T_zApUicc_USAT_BDescp;

-

-/*8.53     Channel data */

-typedef struct  { 

-    BYTE                                            abData[ZPS_APUICC_USAT_MAX_CHNLDATA_LEN];

-    BYTE                                            bDataLen; 

-}T_zPS_ApUicc_USAT_ChnlData,

-T_zApUicc_USAT_ChnlData;

-

-/*8.56     Channel Status */

-typedef struct  { 

-    BITS                                            bChnlID:3;

-    BITS                                            bConStatLen:2; /*bConnt Õ¼Óü¸¸öbit λ£¬È¡Öµ1,2*/

-    BITS                                            :1;

-    BITS                                            bConnt:2;

-    BYTE                                            bInfo;

-    BYTE                                            abPadding[2];

-}T_zPS_ApUicc_USAT_ChnlStat,

-T_zApUicc_USAT_ChnlStat;

-

-typedef struct  { 

-    BITS                                            bChanNum:3;       /*MEÖ§³ÖµÄCHANNEL ¸öÊý*/

-    BITS                                            :5;

-    BYTE                                            abPadding[3];

-    T_zApUicc_USAT_ChnlStat             atChanStat[Z_APUICC_USAT_BIP_CHANNEL_NUM];

-}T_zPS_ApUicc_USAT_ChnlStat_Tr,

-T_zApUicc_USAT_ChnlStat_Tr;

-

-/*8.58     Other address  */

-typedef struct {

-    BYTE                                            bAddrType;                           

-    BYTE                                            abPadding[3];

-        

-    BYTE                                            abAddr[ZPS_APUICC_USAT_MAX_OTHRADDR_LEN];     

-} T_zPS_ApUicc_USAT_OthrAddr,

-T_zApUicc_USAT_OthrAddr;

-

-/*8.59     UICC/terminal interface transport level */

-typedef struct  {    

-    WORD                                            wPortNum;

-    BYTE                                            bTranProType;

-    BYTE                                            bPadding;

-}T_zPS_ApUicc_USAT_IntfcTnsptLv,

-T_zApUicc_USAT_IntfcTnsptLv;

-

-

-

-/*8.60     AID */

-typedef struct {

-    BYTE                                            bLen ;

-    BYTE                                            abPadding[3];

-    BYTE                                            abAid[ZPS_APUICC_USAT_MAX_AID_LEN] ;

-} T_zPS_ApUicc_USAT_Aid,

-T_zApUicc_USAT_Aid;

-

-

-/*8.62     Display parameters */

-typedef struct  {  

-    BYTE                                            bScrHeight;

-    BYTE                                            bScrWidth;

-    BYTE                                            bScrEff;

-    BYTE                                            bPadding;

-}T_zPS_ApUicc_USAT_DisplyParam,

-T_zApUicc_USAT_DisplyParam;

-

-/*8.63     Service record */

-typedef struct  {    

-    BYTE                                            bBearType;

-    BYTE                                            bSrvID;

-    BYTE                                            bRecLen;

-    BYTE                                            bPadding1;

-    BYTE                                            abRecord[ZPS_APUICC_USAT_MAX_SRVRCRD_LEN];

-    BYTE                                            bPadding2;    

-}T_zPS_ApUicc_USAT_SrvRec,

-T_zApUicc_USAT_SrvRec;

-

-/*8.64     Device filter */

-typedef struct  {    

-    BYTE                                            bLBType;

-    BYTE                                            bFilterLen;

-    BYTE                                            abPadding[2];

-                                        

-    BYTE                                            abFiler[ZPS_APUICC_USAT_MAX_DVCFLTR_LEN]; 

-}T_zPS_ApUicc_USAT_DvcFilter,

-T_zApUicc_USAT_DvcFilter;

-

-/*8.65     Service search */

-typedef struct  {    

-    BYTE                                            bBearId;

-    BYTE                                            bLen;

-    BYTE                                            abPadding[2];

-    

-    BYTE                                            abSrvSrch[ZPS_APUICC_USAT_MAX_SRVSRCH_LEN];

-    BYTE                                            bPadding;

-}T_zPS_ApUicc_USAT_SrvSrch,

-T_zApUicc_USAT_SrvSrch;

-

-/*8.66     Attribute information */

-typedef struct  {    

-    BYTE                                            bBearType;

-    BYTE                                            bAtrLen;

-    BYTE                                            abPadding[2];

-    

-    BYTE                                            abAtrInfo[ZPS_APUICC_USAT_MAX_ATTRINF_LEN];

-    BYTE                                            bPadding;

-}T_zPS_ApUicc_USAT_AtrInfo,

-T_zApUicc_USAT_AtrInfo;

-

-

-/*8.67     Service availability */

-typedef struct  {  

-    BYTE                                            abSrvList[ZPS_APUICC_USAT_MAX_SRVLST_LEN]; 

-    BYTE                                            bLen;  

-}T_zPS_ApUicc_USAT_SrvAvail,

-T_zApUicc_USAT_SrvAvail;

-

-/*8.68     Remote entity address */

-typedef struct {

-    BYTE                                            bCodeType;

-    BYTE                                            bLen;

-    BYTE                                            abPadding[2];

-    

-    BYTE                                            abRmtAddr[ZPS_APUICC_USAT_MAX_REMADDR_LEN];

-} T_zPS_ApUicc_USAT_RmtAddr,

-T_zApUicc_USAT_RmtAddr;

-

-

-/*8.70     Network access name */

-typedef struct {

-    BYTE                                            abNetName[ZPS_APUICC_USAT_MAX_NETNAME_LEN] ;

-    BYTE                                            bLen ;     

-    BYTE                                            abPadding[3];

-} T_zPS_ApUicc_USAT_NetName,

-T_zApUicc_USAT_NetName;

-

-/*24008 10.5.6.5 Quality of service */

-typedef struct{

-    BITS                                            bDlyClss:3;

-    BITS                                            bReliabClss:3;

-    BITS                                            :2;

-  

-    BITS                                            bPeakPut:4;

-    BITS                                            bPrecClss:3;

-    BITS                                            :1;

-

-    BITS                                            bMeanPut:5;

-    BITS                                            :3;

-                                  

-    BYTE                                            bpresentfg1;

-                                      

-    BITS                                            bTraffClss:3;

-    BITS                                            bDelivOrd:2;

-    BITS                                            bDelivErrSDU:3;

-                                      

-    BYTE                                            bpresentfg2;

-    BYTE                                            bMaxSDUsiz; 

-    BYTE                                            bpresentfg3;    

-    BYTE                                            bMaxBitUp; 

-    BYTE                                            bpresentfg4;    

-    BYTE                                            bMaxBitDown;        

-    BYTE                                            bpresentfg5;        

-    BITS                                            bResiBER:4;

-    BITS                                            bSDUerrRat:4;

-  

-    BYTE                                            bpresentfg6;        

-    BITS                                            bTranLay:6;

-    BITS                                            bTrafHand:2;

-  

-    BYTE                                            bpresentfg7;

-    BYTE                                            bGuarBitUp; 

-    BYTE                                            bpresentfg8;    

-    BYTE                                            bGuarBitDown;        

-    BYTE                                            bpresentfg9;  

-                                      

-    BITS                                            bSignInd:1;

-    BITS                                            bSourDescr:4; 

-    BITS                                            :3;

-                 

-    BYTE                                            bpresentfg10;

-    BYTE                                            bMaxBitExt; 

-    BYTE                                            bpresentfg11;    

-    BYTE                                            bGuarBitExt;        

-}T_zPS_ApUicc_USAT_Qos,

-T_zApUicc_USAT_Qos;

-

-/*24008  10.5.6.4 Packet data protocol address*/

-typedef struct{

-    BYTE                                              bPdpType;

-    BYTE                                            bPdpTypeNum;        

-    BYTE                                            bAddrInfoLen;

-    BYTE                                            bPadding;

-    

-    BYTE                                            abAddrInfo[ZPS_ApUicc_USAT_PdpAddr];

-}T_zPS_ApUicc_USAT_PdpAddr,

-T_zApUicc_USAT_PdpAddr;

-

-/* 24008 10.5.6.1 Access Point Name*/

-typedef struct{

-    BYTE                                            bApnValLen;

-    BYTE                                            abPadding[3];

-

-    BYTE                                            abApnVal[ZPS_ApUicc_USAT_Apn];

-}T_zPS_ApUicc_USAT_Apn,

-T_zApUicc_USAT_Apn;

-

-/* 24008 10.5.6.3 Protocol configuration options*/

-typedef struct{

-    WORD                                            wProtoId;        

-    BYTE                                            bProtoIdContLen;

-    BYTE                                            bPadding;

-                    

-    BYTE                                            abProtoIdCont[10];

-}T_zPS_ApUicc_USAT_ProtoID,

-T_zApUicc_USAT_ProtoID;                

-

-/*24008 10.5.6.3 Protocol configuration options*/

-typedef struct{

-    BYTE                            bCfgProto;

-    BYTE                                             bProtoIDLen;

-    BYTE                                             abPadding[2];

-

-    T_zPS_ApUicc_USAT_ProtoID                        atProtoID[ZPS_ApUicc_USAT_ProtoID];

-}T_zPS_ApUicc_USAT_ProtCfgOpt,

-T_zApUicc_USAT_ProtCfgOpt;

-

-/* 31.111 8.72  PDP context Activation parameters / 24008 9.5.1*/

-typedef struct{

-    BITS                                             bPd:4;

-    BITS                                             bTi:4;

-    BYTE                                             bMsgType;

-               

-    BYTE                                bProtCfgFg;

-    BYTE                                bApnFg;

-                 

-    BYTE                                             bNsapi;

-

-    BYTE                                             bLlcSapi;

-    BYTE                                abPadding[2];

-

-    T_zPS_ApUicc_USAT_Qos                            tReqQoS;

-    T_zPS_ApUicc_USAT_PdpAddr                        tReqPdpAddr;

-    T_zPS_ApUicc_USAT_Apn                            tApn;

-    T_zPS_ApUicc_USAT_ProtCfgOpt                     tProtCfg;

-}T_zPS_ApUicc_USAT_PdpActParam,

-T_zApUicc_USAT_PdpActParam;

-

-/*8.30     Call control requested action */

-typedef struct  {   

-    BYTE                                bBcRepFg;

-    BYTE                                             bBcReptr;

-    BYTE                                             bUnion;/*±íʾuionµÄÓÐЧÏî

-                                                            0x00: Address

-                                                            0x01: ss string

-                                                            0x02: ussd string

-                                                            0x03: pdp

-                                                            0xff: uionÎÞЧ*/

-    BYTE                                             bPadding;

-    union {

-         T_zPS_ApUicc_USAT_Addr                      tAdr;

-         T_zPS_ApUicc_USAT_SsStr                     tSsStr;

-         T_zPS_ApUicc_USAT_UssdStr                   tUssd;

-         T_zPS_ApUicc_USAT_PdpActParam               tPdp;

-    }uStruct;

-    

-    T_zPS_ApUicc_USAT_Capa                           tCapa1 ;

-    T_zPS_ApUicc_USAT_Capa                           tCapa2 ;

-    T_zPS_ApUicc_USAT_SubAddr                        tSubAdr;

-    T_zPS_ApUicc_USAT_Alpha                          tAlpha ;

-}T_zPS_ApUicc_USAT_CallCtrlAct,

-T_zApUicc_USAT_CallCtrlAct;

-

-/*6.8.7      Local information */

-typedef struct  {   

-    BYTE                                             bInfoType;

-    BYTE                                             bNmrLen;

-    BYTE                                             abPadding[2];

-    

-    BYTE                                             abImei[ZPS_APUICC_USAT_MAX_IMEI_LEN];

-    

-    BYTE                                             abMesRlt[ZPS_APUICC_USAT_MAX_MNRRLT_LEN];

-    

-    BYTE                                             bBcchLen;

-    BYTE                                             abBcchList[ZPS_APUICC_USAT_MAX_BCCHLST_LEN];

-    

-    BYTE                                             abLang[2];

-    BYTE                                             bAct;

-    BYTE                                             bPadding;

-  

-    T_zPS_ApUicc_USAT_TimeAdv                        tTimeAdv;

-    T_zPS_ApUicc_USAT_TZAndTime                      tCurTime;

-    T_zPS_ApUicc_USAT_Location                       tLocation;

-}T_zPS_ApUicc_USAT_LocInfo,

-T_zApUicc_USAT_LocInfo;

-

-/*6.8 TERMINAL RESPONSE / SET UP CALL*/

-typedef struct {

-    BITS                                             bActFg:1;

-    BITS                                             bRltFg:1;

-    BITS                                             bTxtFg:1;

-    BITS                                             :5;

-    BYTE                                             abPadding[3];

-                        

-    T_zPS_ApUicc_USAT_CallCtrlAct                    tCallCtrlAct ;

-    T_zPS_ApUicc_USAT_Result                         tRlt2;

-    T_zPS_ApUicc_USAT_TxtStr                         tText2 ;

-}T_zPS_ApUicc_USAT_CallCtrl_Tr,

-T_zApUicc_USAT_CallCtrl_Tr;

-

-/*6.8 TERMINAL RESPONSE / GET INKEY*/

-typedef struct {

-    BITS                                             bTxtFg:1;

-    BITS                                             bDuraFg:1;

-    BITS                                             :6;

-    BYTE                                             abPadding[3];

-    T_zPS_ApUicc_USAT_TxtStr                         tText;

-    T_zPS_ApUicc_USAT_Dura                           tDispDura;

-}T_zPS_ApUicc_USAT_Inkey_Tr,

-T_zApUicc_USAT_Inkey_Tr;

-

-/*6.8 TERMINAL RESPONSE / RECEIVE DATA or SEND DATA*/

-typedef struct {

-    BITS                                             bLenFg:1;

-    BITS                                             bDataFg:1;

-    BITS                                             :6;

-    BYTE                                             bDataLenth;

-    BYTE                                             abPadding[2];

-    T_zPS_ApUicc_USAT_ChnlData                       tChnlData;

-}T_zPS_ApUicc_USAT_Chdata_Tr,

-T_zApUicc_USAT_Chdata_Tr;

-

-/*6.8 TERMINAL RESPONSE / OPEN CHANNEL*/

-typedef struct {

-    BITS                                              bSizeFg:1;

-    BITS                                              bDescFg:1;

-    BITS                                              bStatFg:1;

-    BITS                                              bAdrFg:1;

-    BITS                                              :4;

-    BYTE                                              bPadding;

-    WORD                                              wBufSize ;

-    T_zPS_ApUicc_USAT_BDescp                          tBDesc;

-    T_zPS_ApUicc_USAT_OthrAddr                        tOthrAdr;

-    T_zPS_ApUicc_USAT_ChnlStat                        tChnlStat;

-}T_zPS_ApUicc_USAT_Opchl_Tr,

-T_zApUicc_USAT_Opchl_Tr;

-

-/*6.8 TERMINAL RESPONSE / SEND USSD*/

-typedef struct {

-    BITS                                              bActFg:1;

-    BITS                                              bRltFg:1;

-    BITS                                              bTxtFg:1;

-    BITS                                              bTxt2Fg:1;

-    BITS                                              :4;

-    BYTE                                              abPadding[3];

-    

-    T_zPS_ApUicc_USAT_CallCtrlAct                     tCallCtrlAct ;

-    T_zPS_ApUicc_USAT_Result                          tRlt2;

-    T_zPS_ApUicc_USAT_TxtStr                          tText;

-    T_zPS_ApUicc_USAT_TxtStr                          tText2 ;

-}T_zPS_ApUicc_USAT_Ussdctr_Tr,

-T_zApUicc_USAT_Ussdctr_Tr;

-

-/************************************************************************/

-/* ÒÔÏÂÊÇÃüÁî½á¹¹                                                       */

-/************************************************************************/

-

-/*6.6.1      DISPLAY TEXT */

-typedef struct {

-

-    BITS                                              bIconFg:1;

-    BITS                                              bDuraFg:1;

-    BITS                                              bImtRspFg:1;

-    BITS                                              bTxtAtrFg:1;

-    BITS                                              :4;

-    BYTE                                              abPadding[3];

-    

-    T_zPS_ApUicc_USAT_CmdDtls                         tCmd;

-    T_zPS_ApUicc_USAT_TxtStr                          tTxtStr;

-    T_zPS_ApUicc_USAT_Icon                            tIcon;

-    T_zPS_ApUicc_USAT_Dura                            tDura;

-    BYTE                                              abTxtAtr[ZPS_APUICC_USAT_MAX_TXTATTR_LEN];  

-}T_zPS_ApUicc_USAT_DisPlayTxtCmd,

-T_zApUicc_USAT_DisPlayTxtCmd;

-

-

-/*6.6.2      GET INKEY */

-typedef struct {

-    BITS                                              bIconFg:1;

-    BITS                                              bDuraFg:1;

-    BITS                                              bTxtAtrFg:1;

-    BITS                                              :5;

-    BYTE                                              abPadding[3];

-

-    T_zPS_ApUicc_USAT_CmdDtls                         tCmd;

-    T_zPS_ApUicc_USAT_TxtStr                          tTxtStr;

-                          

-    T_zPS_ApUicc_USAT_Icon                            tIcon;

-    T_zPS_ApUicc_USAT_Dura                            tDura;

-    BYTE                                              abTxtAtr[ZPS_APUICC_USAT_MAX_TXTATTR_LEN];

-}T_zPS_ApUicc_USAT_GetInkeyCmd,

-T_zApUicc_USAT_GetInkeyCmd;

-

-

-/*6.6.3      GET INPUT */

-typedef struct {

-

-    BITS                                              bIconFg:1;

-    BITS                                              bTxtAtrFg:1;

-    BITS                                              bDefTxtFg:1;

-    BITS                                              :5;

-    BYTE                                              abPadding[3];

-

-    T_zPS_ApUicc_USAT_CmdDtls                         tCmd;

-    T_zPS_ApUicc_USAT_TxtStr                          tTxtStr;

-    T_zPS_ApUicc_USAT_RspLen                          tRspLen;

-    T_zPS_ApUicc_USAT_DefTxt                          tDefTxt;

-    T_zPS_ApUicc_USAT_Icon                            tIcon;

-    BYTE                                              abTxtAtr[ZPS_APUICC_USAT_MAX_TXTATTR_LEN];

-                      

-}T_zPS_ApUicc_USAT_GetInputCmd,

-T_zApUicc_USAT_GetInputCmd;

-

-/*6.6.4      MORE TIME */

-typedef struct {

-    T_zPS_ApUicc_USAT_CmdDtls                         tCmd; 

-}T_zPS_ApUicc_USAT_MTimeCmd,

-T_zApUicc_USAT_MTimeCmd;

-

-/*6.6.5      PLAY TONE */

-typedef struct {

-

-    BITS                                              bToneFg:1;

-    BITS                                              bDuraFg:1;

-    BITS                                              bIconFg:1;

-    BITS                                              bTxtAtrFg:1;

-    BITS                                              :4;

-  

-    BYTE                                              bTone;

-    BYTE                                              abPadding[2];

-    T_zPS_ApUicc_USAT_CmdDtls                         tCmd;    

-    T_zPS_ApUicc_USAT_DvcId                           tDevId;

-    T_zPS_ApUicc_USAT_Alpha                           tAlpha;

-    T_zPS_ApUicc_USAT_Dura                            tDura;

-    T_zPS_ApUicc_USAT_Icon                            tIcon;

-    BYTE                                              abTxtAtr[ZPS_APUICC_USAT_MAX_TXTATTR_LEN];

-}T_zPS_ApUicc_USAT_PlayToneCmd,

-T_zApUicc_USAT_PlayToneCmd;

-

-

-/*6.6.6      POLL INTERVAL */

-typedef struct {

-    T_zPS_ApUicc_USAT_CmdDtls                         tCmd;

-    T_zPS_ApUicc_USAT_Dura                            tDura;

-}T_zPS_ApUicc_USAT_PollCmd,

-T_zApUicc_USAT_PollCmd;

-

-/*6.6.7      SET-UP MENU */

-typedef struct {

-

-    BYTE                                              bItemNum;

-    

-    BITS                                              bIconFg:1;

-    BITS                                              bTxtAtrFg:1;

-    BITS                                              :6;

-                       

-    

-    BYTE                                              bItemLstQuf ;

-    

-    BITS                                              bInfoNAIFg:1;

-    BITS                                              bInfoIconFg:1;

-    BITS                                              bInfoTxtAtrFg:1;

-    BITS                                              :5;

-                       

-    BYTE                                              abTxtAtr[ZPS_APUICC_USAT_MAX_TXTATTR_LEN]; 

-

-    T_zPS_ApUicc_USAT_CmdDtls                         tCmd;

-    T_zPS_ApUicc_USAT_Alpha                           tAlpha;

-    T_zPS_ApUicc_USAT_Icon                            tIcon; 

-    T_zPS_ApUicc_USAT_ItemInfo                        atItmInfo[ZPS_APUICC_USAT_MAX_ITEM_NUM] ;

-}T_zPS_ApUicc_USAT_SetUpMenuCmd,

-T_zApUicc_USAT_SetUpMenuCmd;

-

-

-/*6.6.8      SELECT ITEM */

-typedef struct {

-

-    BYTE                                              bItemNum;

-    

-    BITS                                              bItemIdFg:1;

-    BITS                                              bIconFg:1;

-    BITS                                              bTxtAtrFg:1;

-    BITS                                              :5;

-                       

-    BYTE                                              bItemId; 

-    BYTE                                              bItemLstQuf ;

-    

-    BITS                                              bInfoNAIFg:1;

-    BITS                                              bInfoIconFg:1;

-    BITS                                              bInfoTxtAtrFg:1;

-    BITS                                              :5;                       

-    BYTE                                              abPadding[3];

-    

-    BYTE                                              abTxtAtr[ZPS_APUICC_USAT_MAX_TXTATTR_LEN]; 

-    T_zPS_ApUicc_USAT_CmdDtls                         tCmd;

-    T_zPS_ApUicc_USAT_Alpha                           tAlpha; 

-    T_zPS_ApUicc_USAT_Icon                            tIcon;  

-    T_zPS_ApUicc_USAT_ItemInfo                        atItmInfo[ZPS_APUICC_USAT_MAX_ITEM_NUM] ;

-

-}T_zPS_ApUicc_USAT_SelectItemCmd,

-T_zApUicc_USAT_SelectItemCmd;

-

-

-/*6.6.9      SEND SHORT MESSAGE */

-typedef struct  {    

-    

-    BITS                                              bIconFg:1;

-    BITS                                              bTxtAtrFg:1;

-    BITS                                              bAdrFg:1;

-    BITS                                              :5;

-                 

-    BYTE                                              bTPduLength;  

-    BYTE                                              abPadding[2];    

-    

-    BYTE                                              abTPduBuffer[ZPS_APUICC_USAT_MAX_TPDU_LEN]; 

-    BYTE                                              abTxtAtr[ZPS_APUICC_USAT_MAX_TXTATTR_LEN]; 

-    

-    T_zPS_ApUicc_USAT_CmdDtls                         tCmd;

-    T_zPS_ApUicc_USAT_Alpha                           tAlphaId; 

-    T_zPS_ApUicc_USAT_Addr                            tAdr; 

-    T_zPS_ApUicc_USAT_Icon                            tIcon; 

-                 

-}T_zPS_ApUicc_USAT_SndSmsCmd,

-T_zApUicc_USAT_SndSmsCmd;

-

-

-/*31111 6.6.10  SEND SS*/

-typedef struct  { 

-    

-    BITS                                              bIconFg:1;

-    BITS                                              bTxtAtrFg:1;

-    BITS                                              :7;

-    BYTE                                              abPadding[3];

-    T_zPS_ApUicc_USAT_CmdDtls                         tCmd;    

-    T_zPS_ApUicc_USAT_SsStr                           tSs;

-    T_zPS_ApUicc_USAT_Alpha                           tAlpha;

-    T_zPS_ApUicc_USAT_Icon                            tIcon;

-    BYTE                                              abTxtAtr[ZPS_APUICC_USAT_MAX_TXTATTR_LEN]; 

-             

-}T_zPS_ApUicc_USAT_SndSsCmd,

-T_zApUicc_USAT_SndSsCmd;

-

-

-/*3111 6.6.11 SEND USSD*/

-typedef struct  { 

-    

-    BITS                                              bIconFg:1;

-    BITS                                              bTxtAtrFg:1;

-    BITS                                              :6;

-    BYTE                                              abPadding[3];

-    T_zPS_ApUicc_USAT_CmdDtls                         tCmd;   

-    T_zPS_ApUicc_USAT_UssdStr                         tUssd;

-    T_zPS_ApUicc_USAT_Alpha                           tAlpha;

-    T_zPS_ApUicc_USAT_Icon                            tIcon;

-    BYTE                                              abTxtAtr[ZPS_APUICC_USAT_MAX_TXTATTR_LEN];

-             

-}T_zPS_ApUicc_USAT_SndUssdCmd,

-T_zApUicc_USAT_SndUssdCmd;

-

-

-/*6.6.12    SET UP CALL */

-typedef struct  { 

-    BITS                                              bIconCnfFg:1;

-    BITS                                              bDuraFg:1;

-    BITS                                              bIconStupFg:1;

-    BITS                                              bTxtAtrCnfFg:1;

-    BITS                                              bTxtAtrStupFg:1;

-    BITS                                              :3;

-    BYTE                                              abPadding[3];

-    

-    T_zPS_ApUicc_USAT_CmdDtls                         tCmd;

-    T_zPS_ApUicc_USAT_Alpha                           tAlphaCnf; /*³¤¶È¿É×÷Ϊ´æÔÚ±ê¼Ç*/

-    T_zPS_ApUicc_USAT_Addr                            tAdr;

-    T_zPS_ApUicc_USAT_SubAddr                         tSubAdr;  /*³¤¶È¿É×÷Ϊ´æÔÚ±ê¼Ç*/

-    T_zPS_ApUicc_USAT_Capa                            tCapa;

-    T_zPS_ApUicc_USAT_Dura                            tDura;

-    T_zPS_ApUicc_USAT_Icon                            tIconCnf;

-    T_zPS_ApUicc_USAT_Alpha                           tAlphaStup;

-    T_zPS_ApUicc_USAT_Icon                            tIconStup;

-    BYTE                                              abTxtAtrCnf[ZPS_APUICC_USAT_MAX_TXTATTR_LEN];

-    BYTE                                              abTxtAtrStup[ZPS_APUICC_USAT_MAX_TXTATTR_LEN];

-}T_zPS_ApUicc_USAT_SetupCallCmd,

-T_zApUicc_USAT_SetupCallCmd;

-

-/*6.6.13    REFRESH */

-typedef struct  { 

-    T_zPS_ApUicc_USAT_CmdDtls                         tCmd;

-    T_zPS_ApUicc_USAT_FileList                        tFileList;

-    T_zPS_ApUicc_USAT_Aid                             tAid;

-}T_zPS_ApUicc_USAT_RefreshCmd,

-T_zApUicc_USAT_RefreshCmd;

-

-/*6.6.14    POLL OFF */

-typedef struct  { 

-    T_zPS_ApUicc_USAT_CmdDtls                         tCmd;    

-} T_zPS_ApUicc_USAT_PollOffCmd,

-T_zApUicc_USAT_PollOffCmd;

-

-/*6.6.15    PROVIDE LOCAL INFORMATION */

-typedef struct  { 

-    BYTE bMeasureQualFg;

-    BYTE bMeasureRptQual;

-    T_zPS_ApUicc_USAT_CmdDtls                         tCmd;

-} T_zPS_ApUicc_USAT_LocInfoCmd,

-T_zApUicc_USAT_LocInfoCmd;

-

-

-

-/*6.6.16    SET UP EVENT LIST */

-typedef struct  { 

-    T_zPS_ApUicc_USAT_CmdDtls                         tCmd;

-    T_zPS_ApUicc_USAT_EvtLst                          tEvtList;

-}T_zPS_ApUicc_USAT_SetUpEvtListCmd,

-T_zApUicc_USAT_SetUpEvtListCmd;

-

-/*6.6.17    PERFORM CARD APDU */

-typedef struct  { 

-    T_zPS_ApUicc_USAT_CmdDtls                         tCmd;

-    T_zPS_ApUicc_USAT_DvcId                           tDvcId;

-    T_zPS_ApUicc_USAT_CApdu                           tCApdu;

-}T_zPS_ApUicc_USAT_PerformCardApduCmd,

-T_zApUicc_USAT_PerformCardApduCmd;

-

-

-/*6.6.18    POWER OFF CARD */

-typedef struct  { 

-    T_zPS_ApUicc_USAT_CmdDtls                         tCmd;

-    T_zPS_ApUicc_USAT_DvcId                           tDvcId;

-}T_zPS_ApUicc_USAT_PwrOffCardCmd,

-T_zApUicc_USAT_PwrOffCardCmd;

-

-/*6.6.19    POWER ON CARD */

-typedef struct  { 

-    T_zPS_ApUicc_USAT_CmdDtls                         tCmd;

-    T_zPS_ApUicc_USAT_DvcId                           tDvcId;

-} T_zPS_ApUicc_USAT_PwrOnCardCmd,

-T_zApUicc_USAT_PwrOnCardCmd;

-

-/*6.6.20    GET READER STATUS */

-typedef struct  { 

-

-    T_zPS_ApUicc_USAT_CmdDtls                         tCmd;

-    T_zPS_ApUicc_USAT_DvcId                           tDvcId;

-}T_zPS_ApUicc_USAT_GetReaderStatusCmd,

-T_zApUicc_USAT_GetReaderStatusCmd;

-

-/*6.6.21    TIMER MANAGEMENT */

-typedef struct  { 

-    T_zPS_ApUicc_USAT_CmdDtls                         tCmd;

-    T_zPS_ApUicc_USAT_TimerInfo                       tTimeInfo;

-}T_zPS_ApUicc_USAT_TimrMngCmd,

-T_zApUicc_USAT_TimrMngCmd;

-

-

-/*6.6.22    SET UP IDLE MODE TEXT */

-typedef struct  { 

-

-    BITS                                              bIconFg:1;

-    BITS                                              bTxtAtrFg:1;

-    BITS                                              :6;

-    BYTE                                              abPadding[3];

-    T_zPS_ApUicc_USAT_CmdDtls                         tCmd;

-    T_zPS_ApUicc_USAT_DvcId                           tDvcId;

-    T_zPS_ApUicc_USAT_TxtStr                          tTxtStr;

-    T_zPS_ApUicc_USAT_Icon                            tIcon;

-    BYTE                                              abTxtAtr[ZPS_APUICC_USAT_MAX_TXTATTR_LEN];

-}T_zPS_ApUicc_USAT_SetIdleModTxtCmd,

-T_zApUicc_USAT_SetIdleModTxtCmd;

-

-

-/*6.6.23    RUN AT COMMAND */

-typedef struct  {

-    BYTE                                              bAtStrLen;

-    

-    BITS                                              bIconFg:1;

-    BITS                                              bTxtAtrFg:1;

-    BITS                                              :6;

-    BYTE                                              abPadding[2];

-    

-    BYTE                                              abAtStr[ZPS_APUICC_USAT_MAX_ATSTR_LEN];

-    T_zPS_ApUicc_USAT_CmdDtls                         tCmd;

-    T_zPS_ApUicc_USAT_Alpha                           tAlpha;

-    T_zPS_ApUicc_USAT_Icon                            tIcon;

-    T_zPS_ApUicc_USAT_DvcId                           tDvcId;

-    

-    BYTE                                              abTxtAtr[ZPS_APUICC_USAT_MAX_TXTATTR_LEN];

-} T_zPS_ApUicc_USAT_RunATCmd,

-T_zApUicc_USAT_RunATCmd;

-

-/*6.6.25    LANGUAGE NOTIFICATION  */

-typedef struct  { 

-    BITS                                              bLgFg:1;

-    BITS                                              :7;

-    BYTE                                              abPadding[3];

-

-    T_zPS_ApUicc_USAT_CmdDtls                         tCmd;

-    T_zPS_ApUicc_USAT_DvcId                           tDvcId;

-    BYTE                                              abLg[2];

-}T_zPS_ApUicc_USAT_LgNoticeCmd,

-T_zApUicc_USAT_LgNoticeCmd;

-

-

-/*6.6.26    LAUNCH BROWSER */

-typedef struct  { 

-    

-    BITS                                              bBrowIdFg:1;

-    BITS                                              bTxtStrFg:1;

-    BITS                                              bIconFg:1;

-    BITS                                              bTxtAtrFg:1;

-    BITS                                              :4;

-                            

-    BYTE                                              bBrowerId; 

-    BYTE                                              abPadding[2];

-                                        

-    BYTE                                              abUrl[ZPS_APUICC_USAT_MAX_URL_LEN];

-    BYTE                                              bUrlLen;

-    BYTE                                              bPadding1;

-    

-    BYTE                                              abBearLst[ZPS_APUICC_USAT_MAX_BEARLST_LEN]; 

-    BYTE                                              bBearLen;

-    BYTE                                              bFileNum; 

-    BYTE                                              bPadding2;

-    

-    T_zPS_ApUicc_USAT_ProFileRef                      atProvFile[ZPS_APUICC_USAT_MAX_PROFILE_LEN];   

-    T_zPS_ApUicc_USAT_TxtStr                          tTxtStr; 

-    T_zPS_ApUicc_USAT_Alpha                           tAlpha; 

-    T_zPS_ApUicc_USAT_Icon                            tIcon; 

-    

-    T_zPS_ApUicc_USAT_CmdDtls                         tCmd;

-    T_zPS_ApUicc_USAT_DvcId                           tDvcId;

-                            

-    BYTE                                              abTxtAtr[ZPS_APUICC_USAT_MAX_TXTATTR_LEN]; 

-                            

-}T_zPS_ApUicc_USAT_LaunchBrowserCmd,

-T_zApUicc_USAT_LaunchBrowserCmd;

-

-/*6.6.27    OPEN CHANNEL */

-typedef struct {

-  

-    BITS                                              bIconFg:1;

-    BITS                                              bDura1Fg:1;

-    BITS                                              bDura2Fg:1;

-    BITS                                              bOAdrFg:1;

-    BITS                                              bLogFg:1;

-    BITS                                              bPswdFg:1;

-    BITS                                              bTrLvFg:1;

-    BITS                                              bDataAdrFg:1;

-  

-    BITS                                              bAdrFg:1;         //cs type Çé¿öÏ´æÔÚ

-    BITS                                              bRemAdrFg:1;

-    BITS                                              bTxtAtrFg:1;

-    BITS                                              :5;

-                                                       

-    WORD                                              wBufSize ;

-             

-    BYTE                                              abTxtAtr[ZPS_APUICC_USAT_MAX_TXTATTR_LEN];

-    

-    T_zPS_ApUicc_USAT_CmdDtls                         tCmd;

-    T_zPS_ApUicc_USAT_Alpha                           tAlpha;

-    T_zPS_ApUicc_USAT_Icon                            tIcon;

-    T_zPS_ApUicc_USAT_Addr                            tAdr;

-    T_zPS_ApUicc_USAT_SubAddr                         tSubAdr;

-    T_zPS_ApUicc_USAT_Dura                            tDura1;

-    T_zPS_ApUicc_USAT_Dura                            tDura2;

-    T_zPS_ApUicc_USAT_BDescp                          tBdesc;

-    T_zPS_ApUicc_USAT_IntfcTnsptLv                    tTrLv;

-    T_zPS_ApUicc_USAT_OthrAddr                        tOadr;

-    T_zPS_ApUicc_USAT_OthrAddr                        tDataAdr;

-    T_zPS_ApUicc_USAT_TxtStr                          tLogin;

-    T_zPS_ApUicc_USAT_TxtStr                          tPswd;

-    T_zPS_ApUicc_USAT_NetName                         tNetName;

-    T_zPS_ApUicc_USAT_RmtAddr                         tRemAdr;

-}T_zPS_ApUicc_USAT_OpenChnlCmd,

-T_zApUicc_USAT_OpenChnlCmd;

-

-/*6.6.28    CLOSE CHANNEL */

-typedef struct {

-    

-    BITS                                              bIconFg:1;

-    BITS                                              bTxtAtrFg:1;

-    BITS                                              :6;

-    BYTE                                              abPadding[2];

-    T_zPS_ApUicc_USAT_CmdDtls                         tCmd;

-    T_zPS_ApUicc_USAT_DvcId                           tDvcId;                           

-    T_zPS_ApUicc_USAT_Alpha                           tAlpha; 

-    T_zPS_ApUicc_USAT_Icon                            tIcon;

-    BYTE                                              abTxtAtr[ZPS_APUICC_USAT_MAX_TXTATTR_LEN];

-}T_zPS_ApUicc_USAT_CloseChnlCmd,

-T_zApUicc_USAT_CloseChnlCmd;

-

-/*6.6.29    RECEIVE DATA */

-typedef struct  { 

-    BYTE                                              bDesDevID;

-    BYTE                                              bDataLen;

-  

-    BITS                                              bTxtAtrFg:1;

-    BITS                                              bIconFg:1;

-    BITS                                              :6;

-    BYTE                                              bPadding;

-    T_zPS_ApUicc_USAT_CmdDtls                         tCmd;  

-    T_zPS_ApUicc_USAT_Alpha                           tAlpha;

-    T_zPS_ApUicc_USAT_Icon                            tIcon;

-    BYTE                                              abTxtAtr[ZPS_APUICC_USAT_MAX_TXTATTR_LEN];

-}T_zPS_ApUicc_USAT_RsvDataCmd,

-T_zApUicc_USAT_RsvDataCmd;

-

-/*6.6.30    SEND DATA */

-typedef struct  { 

-    BYTE                                              bDesDevID;

-  

-    BITS                                              bIconFg:1;

-    BITS                                              bTxtAtrFg:1;

-    BITS                                              :6;

-    BYTE                                              abPadding[2];

-              

-    T_zPS_ApUicc_USAT_CmdDtls                         tCmd;

-    T_zPS_ApUicc_USAT_Alpha                           tAlpha;

-    T_zPS_ApUicc_USAT_Icon                            tIcon;

-    T_zPS_ApUicc_USAT_ChnlData                        tChnlData;

-    BYTE                                              abTxtAtr[ZPS_APUICC_USAT_MAX_TXTATTR_LEN];

-}T_zPS_ApUicc_USAT_SndDataCmd,

-T_zApUicc_USAT_SndDataCmd;

-

-

-/*6.6.31    GET CHANNEL STATUS */

-typedef struct  { 

-    T_zPS_ApUicc_USAT_CmdDtls                         tCmd;

-    T_zPS_ApUicc_USAT_DvcId                           tDvcId;

-}T_zPS_ApUicc_USAT_GetChnlStatusCmd,

-T_zApUicc_USAT_GetChnlStatusCmd;

-

-/*6.6.32    SERVICE SEARCH */

-typedef struct  { 

-    

-    BITS                                              bIconFg:1;

-    BITS                                              bDvcFiltFg:1;

-    BITS                                              bTxtAtr:1;

-    BITS                                              :5;

-    BYTE                                              abPadding[3];

-    T_zPS_ApUicc_USAT_CmdDtls                         tCmd;

-    T_zPS_ApUicc_USAT_DvcId                           tDvcId;

-    T_zPS_ApUicc_USAT_Alpha                           tAlpha;

-    T_zPS_ApUicc_USAT_Icon                            tIcon;

-    T_zPS_ApUicc_USAT_DvcFilter                       tDvcFilter;

-    T_zPS_ApUicc_USAT_SrvSrch                         tSrvSrch;

-    BYTE                                              abTxtAtr[ZPS_APUICC_USAT_MAX_TXTATTR_LEN];

-}T_zPS_ApUicc_USAT_SrvSearchCmd,

-T_zApUicc_USAT_SrvSearchCmd;

-

-/*6.6.33    GET SERVICE INFORMATION */

-typedef struct  { 

-    

-    BITS                                              bIconFg:1;

-    BITS                                              bTxtAtr:1;

-    BITS                                              :6;

-    BYTE                                              abPadding[3];

-    T_zPS_ApUicc_USAT_CmdDtls                         tCmd;

-    T_zPS_ApUicc_USAT_Alpha                           tAlpha;

-    T_zPS_ApUicc_USAT_Icon                            tIcon;

-    T_zPS_ApUicc_USAT_AtrInfo                         tAtrInfo;

-    BYTE                                              abTxtAtr[ZPS_APUICC_USAT_MAX_TXTATTR_LEN];

-}T_zPS_ApUicc_USAT_GetSrvInfoCmd,

-T_zApUicc_USAT_GetSrvInfoCmd;

-

-/*6.6.34    DECLARE SERVICE */

-typedef struct  { 

-    BITS                                              bItfTrLvFg:1;

-    BITS                                              :7;

-    BYTE                                              abPadding[3];

-  

-    T_zPS_ApUicc_USAT_CmdDtls                         tCmd;

-    T_zPS_ApUicc_USAT_DvcId                           tDvcId;

-    T_zPS_ApUicc_USAT_SrvRec                          tSrvRec ;

-    T_zPS_ApUicc_USAT_IntfcTnsptLv                    tItfTrLv;

-}T_zPS_ApUicc_USAT_DeclearSrvCmd,

-T_zApUicc_USAT_DeclearSrvCmd;

-

-/************************************************************************/

-/* evnelop                                                                     */

-/************************************************************************/

-/*7.5.1      MT call event */

-typedef struct  

-{

-    BYTE                                              bTi;

-    BITS                                              bAdrFg:1;

-    BITS                                              :7;

-    BYTE                                              abPadding[2];

-                                                       

-    T_zPS_ApUicc_USAT_Addr                            tAdr; 

-    T_zPS_ApUicc_USAT_SubAddr                         tSubAdr; 

-}T_zPS_ApUicc_USAT_CallMtEvt,

-T_zApUicc_USAT_CallMtEvt;

-

-/*7.5.2      Call connected event */

-typedef struct  

-{

-

-    BYTE                                              bTi;

-    BYTE                                              abPadding[3];

-

-    T_zPS_ApUicc_USAT_DvcId                           tDvcId;

-}T_zPS_ApUicc_USAT_CallConEvt,

-T_zApUicc_USAT_CallConEvt;

-

-

-

-/*7.5.3      Call disconnected event */

-typedef struct  

-{    

-    BYTE                                              abCause[ZPS_APUICC_USAT_MAX_DISCCAUS_LEN];   

-    BYTE                                              bLen;

-

-    BYTE                                              bTi;

-

-    T_zPS_ApUicc_USAT_DvcId                           tDvcId;

-}T_zPS_ApUicc_USAT_CallDiscEvt,

-T_zApUicc_USAT_CallDiscEvt;

-

-

-/*7.5.4      Location status event */

-typedef struct  

-{

-                                        

-    BYTE                                              bStatus;

-    BITS                                              bLocFg:1;

-    BITS                                              :7;

-    BYTE                                              abPadding[2];

-                     

-    T_zPS_ApUicc_USAT_Location                        tLocation; 

-}T_zPS_ApUicc_USAT_LocEvt,

-T_zApUicc_USAT_LocEvt;

-

-/*31.111 7.5.2      Network Rejection event */

-typedef struct  

-{

-    BYTE  bAct;  

-    BYTE  bUpdataAttachType; 

-    BYTE  bRejCause;

-    BYTE  bExtRejCauseFlg;

-    BYTE  bExtRejCause;

-    union

-    {

-        T_zPS_TAI  tTai;

-        T_zPS_RAI  tRai;

-        T_zApUicc_USAT_Location tLocation;

-    }uVal;

-}T_zPS_ApUicc_USAT_NwRejEvt,

-T_zApUicc_USAT_NwRejEvt;

-

-

-/*7.5.7      Card reader status event */

-typedef struct  

-{

-    BYTE                                              bStatus;

-    BYTE                                              abPadding[3];

-

-}T_zPS_ApUicc_USAT_RdCardStateEvt,

-T_zApUicc_USAT_RdCardStateEvt;

-

-/*7.5.8      Language selection event */

-typedef struct  

-{

-    BYTE                                              abLauguage[2];

-    BYTE                                              abPadding[2];

-

-}T_zPS_ApUicc_USAT_LauguageEvt,

-T_zApUicc_USAT_LauguageEvt;

-

-/*7.5.9      Browser termination event */

-typedef struct  

-{

-    BYTE                                              bCause;

-    BYTE                                              abPadding[3];

-}T_zPS_ApUicc_USAT_BrowseStopEvt,

-T_zApUicc_USAT_BrowseStopEvt;

-

-/*7.5.10    Data available event */

-typedef struct  

-{

-    BYTE                                              bDataLen;

-    BYTE                                              abPadding[3];

-    

-    T_zPS_ApUicc_USAT_ChnlStat                        tChnlStat;

-} T_zPS_ApUicc_USAT_DataAvlEvt,

-T_zApUicc_USAT_DataAvlEvt;

-

-/*7.5.11    Channel status event */

-typedef struct  

-{

-

-    T_zPS_ApUicc_USAT_ChnlStat                        tChnlStat;

-}T_zPS_ApUicc_USAT_ChnlStateEvt,

-T_zApUicc_USAT_ChnlStateEvt;

-

-/*7.5.12    Access technology change event */

-typedef struct  {

-

-    BYTE                                              bAct;

-    BYTE                                              abPadding[3];

-}T_zPS_ApUicc_USAT_ActChgEvt,

-T_zApUicc_USAT_ActChgEvt;

-

-/*7.5.13    Display parameters changed event */

-typedef struct  

-{

-    BYTE                                              abParam[3];

-    BYTE                                              bPadding;

-}T_zPS_ApUicc_USAT_DisPlayChgEvt,

-T_zApUicc_USAT_DisPlayChgEvt;

-

-/*7.5.14    Local connection event */

-typedef struct  

-{

-    

-    BITS                                              bRemAdrFg:1;

-    BITS                                              bItfTrLFg:1;

-    BITS                                              bTrLvAdrFg:1;

-    BITS                                              :5;

-    BYTE                                              abPadding[3];

-    

-    

-    T_zPS_ApUicc_USAT_SrvRec                          tSrvRec ;

-    T_zPS_ApUicc_USAT_RmtAddr                         tRemAdr;  

-    T_zPS_ApUicc_USAT_IntfcTnsptLv                    tItfTrLv; 

-    T_zPS_ApUicc_USAT_OthrAddr                        tTrLvAdr; 

-}T_zPS_ApUicc_USAT_LocalConnctEvt,

-T_zApUicc_USAT_LocalConnctEvt;

-

-/*7.2        Menu selection */

-typedef struct  {    

-

-    BYTE                                              bItemId;

-    BITS                                              bHelpReq:1; 

-    BITS                                              :7;

-    BYTE                                              abPadding[2];

-

-}T_zPS_ApUicc_USAT_MenuSel,

-T_zApUicc_USAT_MenuSel;

-

-/*7.3.2 MO Short Message Control by USIM*/

-typedef struct  {    

-

-    T_zPS_ApUicc_USAT_Addr                            tRpDa;

-    T_zPS_ApUicc_USAT_Addr                            tTpDa;

-    T_zPS_ApUicc_USAT_Location                        tLocation;

-    

-}T_zPS_ApUicc_USAT_SmsCtrl,

-T_zApUicc_USAT_SmsCtrl;

-

-/*7.3.2 MO Short Message Control by USIM*/

-typedef struct  {    

-    BYTE                                              bCtrRlt;      

-    

-    BITS                                              bRpdaFg:1;

-    BITS                                              bTpdaFg:1;

-    BITS                                              :6;

-    BYTE                                              abPadding[2];

-    

-    T_zPS_ApUicc_USAT_Addr                            tRpDa; 

-    T_zPS_ApUicc_USAT_Addr                            tTpDa; 

-    T_zPS_ApUicc_USAT_Alpha                           tAlpha; 

-}T_zPS_ApUicc_USAT_SmsCtrlCnf,

-T_zApUicc_USAT_SmsCtrlCnf;

-

-/*7.3        Call Control by NAA */

-typedef struct  

-{

- 

-    BYTE                                              bUnionFg;/*±íʾuionµÄÓÐЧÏî

-                                                                  0x00: Address

-                                                                  0x01: ss string

-                                                                  0x02: ussd string

-                                                                  0x03: pdp*/

-    BYTE                                              abPadding[3];

-    T_zPS_ApUicc_USAT_Capa                            tCapa1;     

-    T_zPS_ApUicc_USAT_Capa                            tCapa2;    

-    T_zPS_ApUicc_USAT_SubAddr                         tSubAdr;

-    T_zPS_ApUicc_USAT_Location                        tLocation;

-    union {

-        T_zPS_ApUicc_USAT_Addr                        tAddr;

-        T_zPS_ApUicc_USAT_SsStr                       tSsStr;

-        T_zPS_ApUicc_USAT_UssdStr                     tUssdStr;

-        T_zPS_ApUicc_USAT_PdpActParam                 tPdp;

-    } uCtrStr;                                   

-} T_zPS_ApUicc_USAT_CallCtrl,

-T_zApUicc_USAT_CallCtrl;

-

-

-/*7.3        Call Control by NAA */

-typedef struct  

-{

- 

-    BYTE                                              bCtrlRlt;

-    

-    BITS                                              bBcRepFg:1;

-    BITS                                              :7 ;

-                                               

-    BYTE                                              bBcReptr; 

-    BYTE                                              bUnionFg;/*±íʾuionµÄÓÐЧÏî

-                                                                  0x00: Address

-                                                                  0x01: ss string

-                                                                  0x02: ussd string

-                                                                  0x03: pdp

-                                                                  0xff: uionÎÞЧ*/

-    union {

-        T_zPS_ApUicc_USAT_Addr                        tAddr;

-        T_zPS_ApUicc_USAT_SsStr                       tSsStr;

-        T_zPS_ApUicc_USAT_UssdStr                     tUssdStr;

-        T_zPS_ApUicc_USAT_PdpActParam                 tPdp;

-    } uCtrStr; 

-    T_zPS_ApUicc_USAT_SubAddr                         tSubAdr;

-    T_zPS_ApUicc_USAT_Capa                            tCapa1; 

-    T_zPS_ApUicc_USAT_Alpha                           tAlpha; 

-    T_zPS_ApUicc_USAT_Capa                            tCapa2; 

-} T_zPS_ApUicc_USAT_CallCtrlCnf,

-T_zApUicc_USAT_CallCtrlCnf;

-

-/*7.4        Timer expiration */

-typedef struct  

-{

-    T_zPS_ApUicc_USAT_TimerInfo                       tTimerInfo;

-}T_zPS_ApUicc_USAT_TimeExpire,

-T_zApUicc_USAT_TimeExpire;

-

-

-/*31111 7.1.1 SMS-PP data download*/

-typedef struct  

-{

-    

-    BITS                                              bScaFg:1;

-    BITS                                              :7;

-                        

-    BYTE                                              bTpduLen;

-    BYTE                                              abPadding[2];

-                           

-    BYTE                                              abTpdu[ZPS_APUICC_USAT_MAX_TPDU_LEN];

-                               

-    T_zPS_ApUicc_USAT_Addr                            tSca; 

-} T_zPS_ApUicc_USAT_SmsDown,

-T_zApUicc_USAT_SmsDown;

-

-/*31111 7.1.1 SMS-PP data download »Ø¸´*/

-typedef struct  

-{

-    

-    BYTE                                              abTpud[ZPS_APUICC_USAT_MAX_TPUD_LEN]; 

-    BYTE                                              bTpduLen;

-

-} T_zPS_ApUicc_USAT_SmsDownCnf,

-T_zApUicc_USAT_SmsDownCnf;

-

-/*7.1.2 Cell Broadcast data download*/

-typedef struct  

-{

-   

-    BYTE                                              abCbsPage[ZPS_APUICC_USAT_MAX_CBSPAG_LEN];

-} T_zPS_ApUicc_USAT_CbsDown,

-T_zApUicc_USAT_CbsDown;

-

-/**************************************************************************

-*                  UiccManagerºÍAP½Ó¿ÚÏûÏ¢½á¹¹¶¨Òå                                *

-**************************************************************************/

-/*==============================================================================

- Ô­ÓApUicc_InitReq_Ev(MMI->UiccManager)

- ˵Ã÷: ¸æÖª¿¨½øÐгõʼ»¯

-==============================================================================*/

-typedef struct {

-    BYTE                                    bSrcIndex;                            /*ÏûÏ¢Ô´Ë÷Òý*/

-    BYTE                                    bDesIndex;                            /*ÏûϢĿµÄË÷Òý*/

-    BYTE                                    bSlot;                                 /*

-                                                                                *Slot Number

-                                                                                *ZPS_ApUicc_SLOT0

-                                                                                *ZPS_ApUicc_SLOT1

-                                                                                *ZPS_ApUicc_SLOT2        

-                                                                                */

-    BYTE                                    bPadding1;

-

-    BYTE                                    abAppMode[ZPS_ApUicc_MAX_INITAPPMODE_NUM];                          

-                                                                               /*

-                                                                                *Uicc Manager will init the applmode listed in the array 

-                                                                                * 0: ZPS_ApUicc_APPMODE_NULL

-                                                                                * 1: ZPS_ApUicc_APPMODE_USIM                                                                    

-                                                                                * 2: ZPS_ApUicc_APPMODE_SIM 

-                                                                                */

-    BYTE                                    bPadding2;

-}T_zPS_ApUicc_Init_Req,

-T_zApUicc_Init_Req;

-

-/*==============================================================================

- Ô­ÓApUicc_InitCnf_Ev(UiccManager->MMI)

- ˵Ã÷: ApUicc_Init_ReqµÄÏìÓ¦

-==============================================================================*/

-typedef struct {

-    BYTE                                bSrcIndex;                            /*ÏûÏ¢Ô´Ë÷Òý*/

-    BYTE                                bDesIndex;                            /*ÏûϢĿµÄË÷Òý*/

-    BYTE                                bAppMode;                             /*

-                                                                                *current operation application mode

-                                                                                *1: ZPS_ApUicc_APPMODE_USIM

-                                                                                *2: ZPS_ApUicc_APPMODE_SIM 

-                                                                                */

-    BYTE                                bPhase;                                /*

-                                                                                *ZPS_ApUicc_SIM_PHASE1        

-                                                                                *ZPS_ApUicc_SIM_PHASE2 

-                                                                                *ZPS_ApUicc_SIM_PHASE2_SPECIAL:

-                                                                                *  phase 2 and 

-                                                                                *  PROFILE DOWNLOAD required (see 3GPP TS 51.014 [27]).

-                                                                                *ZPS_ApUicc_SIM_NO_PHASE

-                                                                                */

-

-    DWORD                               dwUiccState;                          /*  

-                                                                               *card init stat:

-                                                                               *ZPS_ApUicc_NO_CARD

-                                                                               *ZPS_ApUicc_MODE_SELE_OK

-                                                                               *ZPS_ApUicc_CARD_WRONG

-                                                                               *ZPS_ApUicc_NEED_UNBLPIN

-                                                                               *ZPS_ApUicc_NEED_PIN

-                                                                               *ZPS_ApUicc_NEED_UNVSLPIN

-                                                                               *ZPS_ApUicc_NEED_UNBL_UNVSLPIN

-                                                                               *ZPS_ApUicc_APPL_FAIL

-                                                                               */

-

-    BYTE                                abIccId[10];                           /*EF iccid*/

-    BYTE                                bLiFg;

-    BYTE                                bPlFg;

-    BYTE                                bChId;

-    BYTE                                abPadding[3];

-    T_zPS_UICC_PL                       tPl;

-    T_zPS_UICC_Li                       tLi;

-}T_zPS_ApUicc_Init_Cnf,

-T_zApUicc_Init_Cnf;

-

-/*==============================================================================

- Ô­ÓApUicc_UiccOkInd_Ev(UiccManager->MMI)

- ˵Ã÷: ³õʼ»¯½áÊøÏûÏ¢

-==============================================================================*/

-typedef struct {

-    BYTE                                bSrcIndex;                            /*ÏûÏ¢Ô´Ë÷Òý*/

-    BYTE                                bDesIndex;                            /*ÏûϢĿµÄË÷Òý*/

-    BYTE                                bApplMode;                             

-    BYTE                                bChId;

-

-    DWORD                               dwInitResult;                          /*

-                                                                                *the init result

-                                                                                *ZPS_ApUicc_INIT_OK

-                                                                                *ZPS_ApUicc_ELEMENTARY_INIT_OK

-                                                                                *ZPS_ApUicc_CARD_WRONG

-                                                                                *ZPS_ApUicc_NO_CARD   

-                                                                                */

-}T_zPS_ApUicc_UiccOk_Ind,

-T_zApUicc_UiccOk_Ind;

-

-/*==============================================================================

- Ô­ÓApUicc_CardInd_Ev(UiccManager->MMI)

- ˵Ã÷:   ²å¿¨°Î¿¨Éϱ¨ÏûÏ¢,¶ÔMMIÎÞÂ۲忨»òÊǰ喝¼Îª¸ÃÏûÏ¢

- ==============================================================================*/

-typedef struct {

-  BYTE                                bSrcIndex;                            /*ÏûÏ¢Ô´Ë÷Òý*/

-  BYTE                                bDesIndex;                            /*ÏûϢĿµÄË÷Òý*/

-  BYTE                                bSlot;                                /*slot*/

-  BYTE                                bSlotState;                           /*card status 0-ZPS_ApUicc_EVULSION_CARD, 1-ZPS_ApUicc_INSERT_CARD*/

-  BYTE                                bCause;                               /*²å°ÎÔ­Òò 0-ÎïÀí²å°Î Z_APUICC_CARD_PHY_OPER 1-ÆäËûÔ­Òò Z_APUICC_CARD_OTHER_OPER*/

-  BYTE                                abPadding[3];

-}T_zPS_ApUicc_Card_Ind,

-T_zApUicc_Card_Ind;

-

-/*==============================================================================

- Ô­ÓAP_UICC_NOCARD_IND_EV

- ˵Ã÷:  ÎÞ¿¨Ê±Í¨ÖªÆäËûÄ£¿éµÄind ÏûÏ¢

- ==============================================================================*/

-typedef struct {

-    BYTE                                bSrcIndex;            /*ÏûÏ¢Ô´Ë÷Òý*/

-    BYTE                                bDesIndex;           /*ÏûϢĿµÄË÷Òý*/

-    BYTE                                bNocardType;       /*±íʾÎÞ¿¨ÏûÏ¢ÀàÐÍ£¬Ä¿Ç°Ö§³ÖÁ½ÖÖÀàÐÍ:

-                                                                            Z_APUICC_NOCARD_TYPE_NORMAL                (BYTE)0  

-                                                                            Z_APUICC_NOCARD_TYPE_RESET_REFRESH    (BYTE)1  */

-    BYTE                                bPadding;

-}T_zPS_ApUicc_NoCard_Ind,

-T_zApUicc_NoCard_Ind;    

-

-/*==============================================================================

- Ô­ÓZPS_ApUicc_VerifyReq_Ev(MMIA->UICCMng)

- ˵Ã÷:  ÓÉMMIAÏ·¢pinÑéÖ¤ÇëÇó

- ==============================================================================*/

-typedef struct {

-    BYTE   bSrcIndex;                            

-    BYTE   bDesIndex; 

-    BYTE   bChId;

-    BYTE   bPadding;

-    BYTE   abKey[8];                             

-}T_zPS_ApUicc_Verify_Req,

-T_zApUicc_Verify_Req;

-

-/*==============================================================================

- Ô­ÓZPS_ApUicc_UnblockReq_Ev(MMIA->UICCMng)

- ˵Ã÷:  ÓÉMMIAÏ·¢pinËøÇëÇó

- ==============================================================================*/

-typedef struct {

-    BYTE   bSrcIndex;                            

-    BYTE   bDesIndex;  

-    BYTE   bChId;

-    BYTE   bPadding;

-    BYTE   abUnblockKey[8];      

-    BYTE   abNewVerifyKey[8];

-}T_zPS_ApUicc_Unblock_Req,

-T_zApUicc_Unblock_Req;

-

-/*==============================================================================

- Ô­ÓZPS_ApUicc_ChangeReq_Ev(MMIA->UICCMng)

- ˵Ã÷:  ÓÉMMIAÏ·¢pinÐÞ¸ÄÇëÇó

- ==============================================================================*/

-typedef struct {

-    BYTE   bSrcIndex;                            

-    BYTE   bDesIndex; 

-    BYTE   bFac;        /*ZPS_ApUicc_PIN1TYPE

-                           ZPS_ApUicc_PIN2TYPE */

-    BYTE   bChId;

-    BYTE   abOldKey[8];    

-    BYTE   abNewKey[8];                            

-}T_zPS_ApUicc_Change_Req,

-T_zApUicc_Change_Req;

-

-

-/*==============================================================================

- Ô­ÓZPS_ApUicc_FacilityPinReq_Ev(MMIA->UICCMng)

- ˵Ã÷:  ÓÉMMIAÏ·¢pin¼¤»îÈ¥»îÇëÇó

- ==============================================================================*/

-typedef struct {

-    BYTE   bSrcIndex;                            

-    BYTE   bDesIndex;   

-    BYTE   bMode;       /*ZPS_ApUicc_FACILITYPIN_DIS

-                          ZPS_ApUicc_FACILITYPIN_EN   */

-    BYTE   bChId;

-    BYTE   abKey[8];                             

-}T_zPS_ApUicc_FacilityPin_Req,

-T_zApUicc_FacilityPin_Req;

-

-/*==============================================================================

- Ô­ÓApUicc_PinEnableQueryReq_Ev(MMI->UiccManager)

- ˵Ã÷: ²éѯµ±Ç°PIN1ÊÇ·ñ±»¼¤»î

-==============================================================================*/

-typedef struct {

-    BYTE                                bSrcIndex;                            /*ÏûÏ¢Ô´Ë÷Òý*/

-    BYTE                                bDesIndex;                            /*ÏûϢĿµÄË÷Òý*/

-    BYTE                                bChId;

-    BYTE                                bPadding;                         

-}T_zPS_ApUicc_PinEnableQuery_Req,

-T_zApUicc_PinEnableQuery_Req;

-

-/*==============================================================================

- Ô­ÓApUicc_PinEnableQueryCnf_Ev(UiccManager-->MMI)

- ˵Ã÷: ²éѯµ±Ç°PIN1ÊÇ·ñ±»¼¤»î

-       ´íÎóʱʹÓÃCommonCnf»Ø¸´

-==============================================================================*/

-typedef struct {

-    BYTE                                bSrcIndex;                            /*ÏûÏ¢Ô´Ë÷Òý*/

-    BYTE                                bDesIndex;                            /*ÏûϢĿµÄË÷Òý*/

-    BYTE                                bPin1Status;                          /*PIN1ÊÇ·ñ±»¼¤»î,bPinEnableQueryStat == ZPS_ApUicc_READ_OKʱÓÐЧ

-                                                                                ZPS_ApUicc_PIN_NOTACTIVE

-                                                                                ZPS_ApUicc_PIN_ACTIVE*/

-    BYTE                                bChId;                         

-}T_zPS_ApUicc_PinEnableQuery_Cnf,

-T_zApUicc_PinEnableQuery_Cnf;

-

-/*==============================================================================

- Ô­ÓApUicc_PinStatQureyReq_Ev(MMI->UiccManager)

- ˵Ã÷: ²éѯµ±Ç°¿¨ÉÏÊÇ·ñÐèÒªÑéÖ¤PIN

-==============================================================================*/

-typedef struct

-{

-    BYTE                        bSrcIndex;      /* Ô´Ë÷Òý */

-    BYTE                        bDesIndex;      /* Ä¿µÄË÷Òý */

-    BYTE                        bChId;

-    BYTE                        bPadding;

-}T_zPS_ApUicc_PinStatQurey_Req,

-T_zApUicc_PinStatQurey_Req;

-/*==============================================================================

- Ô­ÓApUicc_PinStatQureyCnf_Ev(MMI->UiccManager)

- ˵Ã÷: ²éѯµ±Ç°¿¨ÉÏÊÇ·ñÐèÒªÑéÖ¤PIN

-       ´íÎóʱʹÓÃCommonCnf»Ø¸´

-==============================================================================*/

-typedef struct

-{

-    BYTE                                bSrcIndex;                            /*ÏûÏ¢Ô´Ë÷Òý*/

-    BYTE                                bDesIndex;                            /*ÏûϢĿµÄË÷Òý*/

-        BYTE                            bPinStatus;                           /*µ±Ç°¿¨ÉÏÊÇ·ñÐèÒªÑéÖ¤PIN, bPinStatQureyStat == ZPS_ApUicc_READ_OKʱÓÐЧ

-                                                                              ZPS_ApUicc_PIN_READY    

-                                                                              ZPS_ApUicc_PIN_SIMPIN   

-                                                                              ZPS_ApUicc_PIN_SIMPUK   

-                                                                              ZPS_ApUicc_PIN_SIMPIN2  

-                                                                              ZPS_ApUicc_PIN_SIMPUK2  */

-    BYTE                                bChId;

-}T_zPS_ApUicc_PinStatQurey_Cnf,

-T_zApUicc_PinStatQurey_Cnf;

-

-/*==============================================================================

- Ô­ÓApUicc_InitInd_Ev(UiccManager->UMM/MMI)

- ˵Ã÷: ³õʼ»¯Ïà¹ØÐÅÏ¢µÄÖ÷¶¯Éϱ¨

-==============================================================================*/

-typedef struct {

-    BYTE                        bSrcIndex;                              /*ÏûÏ¢Ô´Ë÷Òý*/

-    BYTE                        bDesIndex;                              /*ÏûϢĿµÄË÷Òý*/

-    BYTE                        bAppMode;                               /*the application mode*/

-    BYTE                        bUstFlag;

-    BYTE                        bEstFlag;

-    BYTE                        bSstFlag;

-

-    T_zPS_UICC_Ust              tUst;

-    T_zPS_UICC_Est              tEst;

-    T_zPS_UICC_SST              tSst;   

-}T_zPS_ApUicc_Init_Ind,

-T_zApUicc_Init_Ind;

-

-/*****************************************************************************

- Ô­ÓZPS_ApUicc_CardModeReq_Ev

- ˵Ã÷: AT^CARDMODE  SIM/USIM¿¨Ä£Ê½Ê¶±ð

-*****************************************************************************/

-typedef struct {

-    BYTE                                         bSrcIndex;       /*ÏûÏ¢Ô´Ë÷Òý*/

-    BYTE                                         bDesIndex;       /*ÏûϢĿµÄË÷Òý*/

-    

-    BYTE                                         abPadding[2];

-

-}T_zPS_ApUicc_CardMode_Req,

-T_zApUicc_CardMode_Req;

-

-/*****************************************************************************

- Ô­ÓZPS_ApUicc_CardModeCnf_Ev(MMIA->ATI)

- ˵Ã÷: AT^CARDMODE  SIM/USIM¿¨Ä£Ê½Ê¶±ð,µ±Ç°¿¨Î´³õʼ»¯»òµÈ´ý¹Ø»úʱÉϱ¨ZPS_ApUicc_CARD_TYPE_UNKNOWN

- ¼´,ÔÚÈκÎ״̬϶¼ÐèÒª½ÓÊܸÃÏûÏ¢

-*****************************************************************************/

-typedef struct {

-    BYTE                                         bSrcIndex;       /*ÏûÏ¢Ô´Ë÷Òý*/

-    BYTE                                         bDesIndex;       /*ÏûϢĿµÄË÷Òý*/

-    BYTE                                         bCardMode;       /*¿¨ÀàÐÍ

-                                                                     ZPS_ApUicc_CARD_TYPE_UICC       

-                                                                     ZPS_ApUicc_CARD_TYPE_SIM        

-                                                                     ZPS_ApUicc_CARD_TYPE_UNKNOWN    */

-    BYTE                                         bPadding;

-

-}T_zPS_ApUicc_CardMode_Cnf,

-T_zApUicc_CardMode_Cnf;

-

-/*==============================================================================

- Ô­ÓApUicc_ReadReq_Ev(UMM/MMI->UiccManager)

- ˵Ã÷: UMM»òMMIÇëÇó¶ÁÈ¡¿¨ÖеÄÎļþ

-==============================================================================*/

-typedef struct{

-    BYTE    bSrcIndex;                            

-    BYTE    bDesIndex;                            

-    WORD    wKeyId;

-    

-    BYTE    bApplMode;                            

-    BYTE    bRecId;

-    BYTE    abPadding[2];

-}T_zPS_ApUicc_Read_Req,

-T_zApUicc_Read_Req;

-

-

-/*==============================================================================

- Ô­ÓApUicc_ReadCnf_Ev(UiccManager->UMM/MMI)

- ˵Ã÷: ¶ÁÇëÇóµÄÏìÓ¦

-==============================================================================*/

-typedef struct{

-    BYTE   bSrcIndex;                           

-    BYTE   bDesIndex;                           

-    WORD   wKeyId;

-    

-    DWORD  dwExecuteStatus;  

-

-    BYTE   bApplMode; 

-    BYTE   bRecId;

-    WORD   wValLen;

-    

-    BYTE    abVal[ZPS_ApUicc_MAX_DATA_VAL];        

-}T_zPS_ApUicc_Read_Cnf,

-T_zApUicc_Read_Cnf;

-

-

-/*==============================================================================

- Ô­ÓApUicc_UpdateReq_Ev(UMM/MMI->UiccManager)

- ˵Ã÷: UMM»òMMIÇëÇó¸üп¨ÖеÄÎļþ

-==============================================================================*/

-typedef struct{

-    BYTE   bSrcIndex;                            

-    BYTE   bDesIndex;                            

-    WORD   wKeyId;

-    

-    BYTE   bApplMode;                            

-    BYTE   bRecId;

-    WORD   wValLen;

-    

-    BYTE   abVal[ZPS_ApUicc_MAX_DATA_VAL];       

-}T_zPS_ApUicc_Update_Req,

-T_zApUicc_Update_Req;

-

-

-/*==============================================================================

- Ô­ÓZPS_ApUicc_PinRemainNumReq_Ev(MMI->UiccManager)

- ˵Ã÷: MMIÇëÇó²éѯPINÊ£Óà´ÎÊý

-==============================================================================*/

-typedef struct {

-    BYTE                                bSrcIndex;                            /*ÏûÏ¢Ô´Ë÷Òý*/

-    BYTE                                bDesIndex;                            /*ÏûϢĿµÄË÷Òý*/

-    BYTE                                bChId;

-    BYTE                                bPadding;

-}T_zPS_ApUicc_PinRemainNum_Req,

-T_zApUicc_PinRemainNum_Req;

-

-/*==============================================================================

- Ô­ÓZPS_ApUicc_PinRemainNumCnf_Ev(UiccManager->MMI)

- ˵Ã÷: UiccManager·µ»ØPINÊ£Óà´ÎÊý

-       Ò쳣ʱʹÓÃCommonCnf»Ø¸´

-==============================================================================*/

-typedef struct {

-    BYTE                                bSrcIndex;                            /*ÏûÏ¢Ô´Ë÷Òý*/

-    BYTE                                bDesIndex;                            /*ÏûϢĿµÄË÷Òý*/

-    BYTE                                bChId;

-    BYTE                                bPadding;

-    BYTE                                bPin1Remain;                          /*Pin1µÄÊ£ÓàÑéÖ¤´ÎÊý*/

-    BYTE                                bPin2Remain;                          /*Pin2µÄÊ£ÓàÑéÖ¤´ÎÊý,Èçδ»ñÈ¡PIN2Ïà¹ØÊý¾Ý£¬ÔòΪ0xFF*/

-    BYTE                                bUnblPin1Remain;                      /*Unblock Pin1µÄÊ£ÓàÑéÖ¤´ÎÊý*/               

-    BYTE                                bUnblPin2Remain;                      /*Unblock Pin2µÄÊ£ÓàÑéÖ¤´ÎÊý,Èçδ»ñÈ¡PIN2Ïà¹ØÊý¾Ý£¬ÔòΪ0xFF*/

-}T_zPS_ApUicc_PinRemainNum_Cnf,

-T_zApUicc_PinRemainNum_Cnf;

-

-/*==============================================================================

- Ô­ÓApUicc_UpdateCnf_Ev(UiccManager->UMM/MMI)

- ˵Ã÷: UMM»òMMIÇëÇó¸üп¨ÖеÄÎļþ

-==============================================================================*/

-typedef struct{

-    BYTE   bSrcIndex;                           

-    BYTE   bDesIndex;                           

-    WORD   wKeyId; 

-    

-    BYTE   bApplMode;                           

-    BYTE   bRecId;

-    BYTE   abPadding[2];    

-    DWORD  dwExecuteStatus;                  

-}T_zPS_ApUicc_Update_Cnf,

-T_zApUicc_Update_Cnf;

-

-

-    

-

-

-/*==============================================================================

- Ô­ÓApUicc_AuthReq_Ev(MM/GMM->UiccManager)

- ˵Ã÷: ·¢ËͼøÈ¨µ½UiccManager£¬MM/GMM¹²ÓÃ

-==============================================================================*/

-typedef struct {

-    BYTE                                bSrcIndex;

-    BYTE                                bDesIndex;

-    BYTE                                bDomainId;                                /* cnÓò±êʾ£¬È¡Öµ¼ûºê¶¨Òå */

-    BYTE                                bAuthType;                                /* ¼øÈ¨ÀàÐÍ£¬²Î¼ûºê¶¨Òå */            

-    BYTE                                bSeq;

-    BYTE                                bPadding;

-    BYTE                                abPadding[2];

-

-    BYTE                                abRand[ZPS_ApUicc_MAX_LEN_RAND];            /* The auth.parameter  RAND */

-

-    BYTE                                abAutn[ZPS_ApUicc_MAX_LEN_AUTN];            /* The auth.parameter  AUTN */

-}T_zPS_ApUicc_Auth_Req,

-T_zApUicc_Auth_Req;                                    

- 

-

-/*==============================================================================

- Ô­ÓApUicc_AuthRsp_Ev(UiccManager->MM/GMM)

- ˵Ã÷: ¼øÈ¨ÏìÓ¦µ½GMM/MM

-==============================================================================*/

-typedef struct {

-    BYTE                                bSrcIndex;

-    BYTE                                bDesIndex;

-    BYTE                                bDomainId;                                 /* cnÓò±êʾ£¬È¡Öµ¼ûºê¶¨Òå */

-    BYTE                                bAuthType;                                 /* ¼øÈ¨ÀàÐÍ£¬²Î¼ûºê¶¨Òå */

-    BYTE                                bResLen;                                   /* RESµÄ³¤¶È£¬GSM¼øÈ¨Ê±¹Ì¶¨È¡Öµ4,UMTS¼øÈ¨È¡Öµ4-16 */

-    BYTE                                bSeq;

-    BYTE                                abPadding[2];

-

-    T_zPS_CK                            tCk;

-

-    T_zPS_IK                            tIk;

-

-    BYTE                                abKc[ZPS_ApUicc_MAX_LEN_KC];               /* The ciphering Key Kc,  in GSM */ 

-

-    BYTE                                abRes[ZPS_ApUicc_MAX_LEN_RES];             /* The response of authentication, 

-                                                                                    * when GSM authentication : SRES  

-                                                                                    * when UMTS authentication: RES */

-}T_zPS_ApUicc_Auth_Cnf,

-T_zApUicc_Auth_Cnf;                                  

-

-/*==============================================================================

- Ô­ÓApUicc_AuthFailInd_Ev(UiccManager->MM/GMM)

- ˵Ã÷: ¼øÈ¨Ê§°Üµ½GMM/MM

-==============================================================================*/

-typedef struct {

-    BYTE                            bSrcIndex;

-    BYTE                            bDesIndex;

-    BYTE                            bDomainId;                               /*DomainId, UiccManager do not ues it */

-    BYTE                            bFailCause;                              /* 

-                                                                              *Authenticate failure cause

-                                                                              *MacFail            

-                                                                              *SyncFail        

-                                                                              *GsmAuthUnAccpt

-                                                                              */

-    BYTE                            bSeq;

-    BYTE                            abPadding1[3];

-            

-    BYTE                            abAuts[ZPS_ApUicc_MAX_LEN_AUTS];           /* The Synch failure  parameter AUTS*/

-    BYTE                            abPadding2[2];

-}T_zPS_ApUicc_AuthFail_Cnf,

-T_zApUicc_AuthFail_Cnf;

-

-/**************************************************************************** 

-  Ô­Óï:ZPS_ApUicc_PinApplSetReq_Ev

-  ¹¦ÄÜ:ÉèÖÃPINÏà¹ØÓ¦Óã¬ÆäºóËùÓеÄPIN²Ù×÷¶¼Îª¸ÃÓ¦ÓÃϽøÐÐ

-  ¶ÔÓ¦ATÃüÁî:

- ****************************************************************************/

- typedef struct

-{

-    BYTE                        bSrcIndex;    /* Ô´Ë÷Òý */

-    BYTE                        bDesIndex;    /* Ä¿µÄË÷Òý */    

-    BYTE                        bAppMode;     /*ÉèÖõ±Ç°Ó¦Óã¬ÆäºóÓëPINÏà¹ØµÄÃüÁî¶¼½«ÔËÐÐÔÚ¸ÃÓ¦ÓÃÏ£¬

-                                                                                                                       µ±¿ª»úδÉèÖÃÖ÷Ó¦ÓÃʱ£¬UiccMng½«Ä¬ÈÏʹÓÃÖ÷Ó¦Óã¬

-                                                    µ±¸ÃÉèÖÃʧ°Üʱ£¬ºóÐøµÄPINÁ÷³Ì¶¼½«ÈÏΪ´íÎó*/

-    BYTE                        bPadding;     

-}T_zPS_ApUicc_PinApplSet_Req,

-T_zApUicc_PinApplSet_Req;

-/**************************************************************************** 

-  Ô­Óï:ZPS_ApUicc_PinApplSetCnf_Ev

-  ¹¦ÄÜ:ZPS_APMMIA_PinApplSetReq_EvÏìÓ¦ÏûÏ¢

-  ¶ÔÓ¦ATÃüÁî:

- ****************************************************************************/

-typedef struct

-{

-    BYTE                        bSrcIndex;      /* Ô´Ë÷Òý */

-    BYTE                        bDesIndex;      /* Ä¿µÄË÷Òý */    

-    DWORD                       dwSetStatus;    /*ÉèÖýá¹û£¬

-                                                ZPS_ApUicc_CARD_WRONG

-                                                ZPS_ApUicc_SET_OK */

-    BYTE                        abPadding[2];     

-}T_zPS_ApUicc_PinApplSet_Cnf,

-T_zApUicc_PinApplSet_Cnf;

-

-/**************************************************************************** 

-  Ô­Óï:ZPS_ApUicc_PinApplReadCnf_Ev

-  ¹¦ÄÜ:¶ÁÈ¡µ±Ç°PINÏà¹ØÓ¦ÓÃÉèÖÃ״̬

-  ¶ÔÓ¦ATÃüÁî:

- ****************************************************************************/

- typedef struct

-{

-    BYTE                        bSrcIndex;    /* Ô´Ë÷Òý */

-    BYTE                        bDesIndex;    /* Ä¿µÄË÷Òý */  

-    BYTE                        abPadding[2];     

-}T_zPS_ApUicc_PinApplRead_Req,

-T_zApUicc_PinApplRead_Req;

-/**************************************************************************** 

-  Ô­Óï:ZPS_ApUicc_PinApplReadCnf_Ev

-  ¹¦ÄÜ:ZPS_APMMIA_PinApplReadReq_EvµÄÏìÓ¦£¬µ±ÉèÖÃʧ°Üʱ£¬·µ»Ø0xFF

-  ¶ÔÓ¦ATÃüÁî:

- ****************************************************************************/

-typedef struct

-{

-    BYTE                        bSrcIndex;      /* Ô´Ë÷Òý */

-    BYTE                        bDesIndex;      /* Ä¿µÄË÷Òý */    

-    BYTE                        bAppMode;       /*PINÏà¹ØÓ¦ÓÃÉèÖýá¹û£¬µ±ÉèÖÃʧ°Üʱ£¬·µ»Ø0xFF*/

-    BYTE                        bPadding;         

-}T_zPS_ApUicc_PinApplRead_Cnf,

-T_zApUicc_PinApplRead_Cnf;

-

-/**************************************************************************

-*                  UiccManagerÖÐUSATÏà¹Ø¹¦ÄܺÍAP½Ó¿ÚÏûÏ¢½á¹¹¶¨Òå                                *

-**************************************************************************/

-/*==============================================================================

-½á¹¹£ºT_zPS_ApUicc_USAT_TerminalRsp_Req(MMIA-->UiccManager)

-ʼþºÅ:

- ˵Ã÷:USATÖжÔResult+ReasonÀàÐÍÏûÏ¢»Ø¸´Ê¹ÓÃÕâÌõÏûÏ¢

-==============================================================================*/

-typedef struct {

-    BYTE                                         bSrcIndex;

-    BYTE                                         bDesIndex;

-    BYTE                                         bResult;

-    BYTE                                         bPadding;

-

-    DWORD                                        dwReason;

-}T_zPS_ApUicc_USAT_Common_Cnf,

-T_zApUicc_USAT_Common_Cnf;

-/*==============================================================================

-½á¹¹£ºT_zPS_ApUicc_USAT_TerminalRsp_Req(MMIA-->UiccManager)

-ʼþºÅ:

- ˵Ã÷: USATÖеÄTerminal Response,¸ÃÏûÏ¢¶ÔÓ¦µÄ»Ø¸´ÏûϢʹÓÃT_zPS_ApUicc_USAT_Common_Cnf

-==============================================================================*/

-/*6.8        Structure of TERMINAL RESPONSE */

-typedef struct  {    

-    BYTE                                         bSrcIndex;                           

-    BYTE                                         bDesIndex; 

-    WORD                                         wProCmdType; /*Ö÷¶¯Ê½ÃüÁîµÄÃüÁîÀàÐÍ(»¹¿ÉÒÔÈ¡ÆäËüÃüÁîµÄÀàÐÍÖµ)£º

-                                                                0x03: poll interval

-                                                                0x10: set up call

-                                                                0x22: get inkey

-                                                                0x23: get input                                        

-                                                                0x24: select item 

-                                                                0x26: provide local information

-                                                                0x27: timer management

-                                                                0x30: perform card apdu                                        

-                                                                0x31: power on card

-                                                                0x33: get reader status                                        

-                                                                0x34: run at command

-                                                                0x40: open channel

-                                                                0x42: receive data

-                                                                0x43: send data

-                                                                0x44: get channel status                                        

-                                                                0x45: service search

-                                                                0x46: get service information

-                                                                È¡ÒÔÉÏÖµµÄʱºò²»ÄÜ˵Ã÷unionÒ»¶¨´æÔÚ*/

-    

-    BYTE                                         bUnionFg;    /*±íʾunionÊÇ·ñ´æÔÚ*/

-    BYTE                                         abPadding[3];

-    

-    

-    T_zPS_ApUicc_USAT_CmdDtls                    tCmd;

-    T_zPS_ApUicc_USAT_Result                     tRlt;

-    union {

-        T_zPS_ApUicc_USAT_Dura                   tDura;            //poll interval

-        T_zPS_ApUicc_USAT_TxtStr                 tTxtStr;          //get input

-        T_zPS_ApUicc_USAT_Inkey_Tr               tInkey;           //get inkey

-        BYTE                                     bItemId;          //select item         

-        T_zPS_ApUicc_USAT_LocInfo                tLocInfo;         //provide local information

-        T_zPS_ApUicc_USAT_CallCtrl_Tr            tCallCtrlAct;     // set up call

-        T_zPS_ApUicc_USAT_Ussdctr_Tr             tUssdctr ;

-        T_zPS_ApUicc_USAT_RdCardStatus           tRCardStatus;     //get reader status

-        T_zPS_ApUicc_USAT_CardAtr                tCardAtr;         //power on card

-        T_zPS_ApUicc_USAT_RApdu                  tRApdu;           //perform card apdu

-        T_zPS_ApUicc_USAT_TimerInfo              tTimerInfo;       //timer management

-        T_zPS_ApUicc_USAT_AtRsp                  tAtRsp;           //run at command

-        T_zPS_ApUicc_USAT_Chdata_Tr              tChdata;          //receive data or send data

-        T_zPS_ApUicc_USAT_ChnlStat_Tr          tChnlStat;        //get channel status

-        T_zPS_ApUicc_USAT_Opchl_Tr               tOpChl;           //open channel

-        T_zPS_ApUicc_USAT_SrvAvail               tSrvAvl ;         //service search

-        T_zPS_ApUicc_USAT_SrvRec                 tSrvRec ;         //get service information

-    }uStruct; 

-}T_zPS_ApUicc_USAT_TerminalRsp_Req,

-T_zApUicc_USAT_TerminalRsp_Req;

-/*==============================================================================

-½á¹¹£ºT_zPS_ApUicc_USAT_TermnlProfil_Req(MMIA-->UiccManager)

-ʼþºÅ:

- ˵Ã÷: USATÖеÄTERMINAL PROFILE,¸ÃÏûÏ¢¶ÔÓ¦µÄ»Ø¸´ÏûϢʹÓÃT_zPS_ApUicc_USAT_Common_Cnf

-==============================================================================*/

-/*5.2        Structure and coding of TERMINAL PROFILE */

-typedef struct  

-{

-    BYTE                                          bSrcIndex;                           

-    BYTE                                          bDesIndex; 

-    BYTE                                          bDownload ;

-    BYTE                                          bOther ;

-    

-    BYTE                                          bProDispTxt ;

-    BYTE                                          bProSelItem ;

-    BYTE                                          bEnvtInfo ;

-    BYTE                                          bEnvtExtn ;

-    

-    BYTE                                          bMultCard ;

-    BYTE                                          bProTimer ;

-    BYTE                                          bProLocInf;

-    BYTE                                          bSoftKeySppt ;

-    

-    BYTE                                          bSoftKeyInfo ;

-    BYTE                                          bProOChnnl ;

-    BYTE                                          bProLocBear;

-    BYTE                                          bScrnHeight;

-    

-    BYTE                                          bScrnWidth ;

-    BYTE                                          bScrnEffect ;

-    BYTE                                          bTransProtocl;

-    BYTE                                          bProTimout;

-    

-    BYTE                                          bTxtAttrib1;

-    BYTE                                          bTxtAttrib2;

-    BYTE                                          bFactCode;

-    BYTE                                          bPadding;

-

-    BYTE                                          abRand[8]; 

-}T_zPS_ApUicc_USAT_TermnlProfil_Req,

-T_zApUicc_USAT_TermnlProfil_Req;

-

-/*******************************************************************************

- Ô­Óï: ZPS_ApUicc_ToReadCardReq_Ev(MMIA--->UiccManager)

- ¹¦ÄÜ: MMI֪ͨUICC¿É¼ÌÐø¶ÁÈ¡¿¨Êý¾Ý¡£¸ÃÏûÏ¢¶ÔÓ¦µÄ»Ø¸´ÏûϢʹÓÃT_zPS_ApUicc_Common_Cnf

- ¶ÔÓ¦µÄATÃüÁ+ZTRC(º¬Ò壺To Read Card)£¬ÄÚÈÝΪ¿Õ£¬·µ»Ø½á¹ûΪ£ºOK/CME ERROR

-

- Ô­Óï: AP_UICC_AP_PWROFF_REQ_EV(MMIA--->UiccManager)

- ¹¦ÄÜ: MMIA֪ͨ¹Ø¿¨

- ATÃüÁî: +cfun=5

-

-*******************************************************************************/

-typedef struct  

-{

-    BYTE                                          bSrcIndex;                           

-    BYTE                                          bDesIndex; 

-    BYTE                                          abPadding[2];

-}T_zPS_ApUicc_ToReadCard_Req, T_zPS_ApUicc_ApPwrOff_Req,

-T_zApUicc_ToReadCard_Req, T_zApUicc_ApPwrOff_Req;

-

-/*==============================================================================

-½á¹¹£ºTZPS_ApMmia_ProcmdInd_Ev(UiccManager--->MMIA)

-ʼþºÅ:

- ˵Ã÷: USATÖеÄTERMINAL PROFILE,¸ÃÏûÏ¢¶ÔÓ¦µÄ»Ø¸´ÏûϢʹÓÃT_zPS_ApUicc_USAT_Common_Cnf

-==============================================================================*/

-typedef struct {

-    BYTE                                          bSrcIndex;                           

-    BYTE                                          bDesIndex;     

-    WORD                                          wMsgType;      /*ÃüÁîÀàÐÍ,ºêÖµ¶¨ÒåÏê¼ûUSATÃüÁîÀàÐÍÏà¹Øºê¶¨Òå*/  

-    DWORD                                         dwErrCode;     /*½âÂëÖ´Ðнá¹û*/

-    PBYTE                                         pBuffer;       /*Ö÷¶¯Ê½ÃüÁî½á¹¹ÄÚÈÝ,¾ßÌå½á¹¹ÓÉwMsgType¾ö¶¨*/

-}T_zPS_ApUicc_USAT_Procmd_Ind,

-T_zApUicc_USAT_Procmd_Ind;

-

-/*==============================================================================

- T_zPS_ApMmia_EnvelopCmd_Req(MMIA--->UiccManager)

- ʼþºÅ:

- ˵Ã÷: USATÖеÄEnvelopeÃüÁî

-==============================================================================*/

-typedef struct {

-    BYTE                                           bSrcIndex;                           

-    BYTE                                           bDesIndex; 

-    WORD                                           wMsgType; /*ÃüÁîÀàÐÍ,ºêÖµ¶¨ÒåÏê¼ûUSATÃüÁîÀàÐÍÏà¹Øºê¶¨Òå*/  

-    PBYTE                                          pBuffer;  /*EnvelopeÃüÁîÄÚÈÝ,¾ßÌå½á¹¹ÓÉwMsgType¾ö¶¨*/

-}T_zPS_ApUicc_USAT_EnvelopCmd_Req,

-T_zApUicc_USAT_EnvelopCmd_Req;

- 

- /*==============================================================================

-  ʼþºÅ:ZPS_ApUicc_NoprocNotifyInd_Ev(UiccManager--->MMIA)

- ˵Ã÷: USATÃüÁîÖ´Ðнá¹ûΪ9000ʱ£¬¾ùÉϱ¨´ËÏûÏ¢

-==============================================================================*/

-typedef struct {

-    BYTE                                        bSrcIndex;                           

-    BYTE                                        bDesIndex; 

-    BYTE                                        bIsBackToTopMenu; 

-    BYTE                                        bPadding;

-}T_zPS_ApUicc_USAT_NoprocNotify_Ind,

-T_zApUicc_USAT_NoprocNotify_Ind;

-

-

- /*==============================================================================

- T_zPS_ApMmia_EnvelopCmd_Cnf(UiccManager--->MMIA)

- ʼþºÅ:

- ˵Ã÷: USATÖеÄEnvelopeÃüÁîµÄ»Ø¸´,ÆäÖÐÎÞЧӦÊý¾ÝÒÔÏûÏ¢T_zPS_ApUicc_USAT_Common_Cnf»Ø¸´

-==============================================================================*/

-typedef struct {

-    BYTE                                        bSrcIndex;                           

-    BYTE                                        bDesIndex; 

-    WORD                                        wMsgType;  /*ÃüÁîÀàÐÍ,ºêÖµ¶¨ÒåÏê¼ûUSATÃüÁîÀàÐÍÏà¹Øºê¶¨Òå*/  

-    DWORD                                       dwErrCode;  

-    PBYTE                                       pBuffer;   /*EnvelopeÃüÁî»Ø¸´ÄÚÈÝ,¾ßÌå½á¹¹ÓÉwMsgType¾ö¶¨*/

-}T_zPS_ApUicc_USAT_EnvelopCmd_Cnf,

-T_zApUicc_USAT_EnvelopCmd_Cnf;

-

-/**************************************************************************** 

-  Ô­Óï:T_zPS_ApUicc_Common_Cnf (UICC->MMIA)

-  ¹¦ÄÜ:UICC ¶Ô²»´¦ÀíµÄÏûÏ¢µÄͳһ»Ø¸´

- ****************************************************************************/

-typedef struct

-{

-    BYTE                                         bSrcIndex;          /* The source index  */

-    BYTE                                         bDesIndex;          /* The destination index*/

-    BYTE                                         bResult;            /* */

-    BYTE                                         bChId;           /* The logic channel id */

-                                                 

-    DWORD                                        dwCause;            /* ¶ÔÓ¦27007´íÎóÂ룬²ÎÕÕZ_APUICC_NO_CARDµÈ½á¹ûÂë */

-}T_zPS_ApUicc_Common_Cnf,

-T_zApUicc_Common_Cnf;

-

-/*==============================================================================

- Ô­ÓZPS_ApUicc_CardlockStatusInd_Ev

- ˵Ã÷: ָʾ¿¨±»Ëø»ò±»½âËø

-==============================================================================*/

-typedef struct {

-    BYTE                                         bSrcIndex;  /* 0xff */      

-    BYTE                                         bDesIndex;  /* 0xff */           

-    BYTE                                         bStatus;    /* ȡֵ:

-                                                                ZPS_ApUicc_CardStatus_Lock 

-                                                                ZPS_ApUicc_CardStatus_Unlock

-                                                              */

-    

-    BYTE                                         bPadding;

-} T_zPS_ApUicc_CardlockStatus_Ind,

-T_zApUicc_CardlockStatus_Ind;

-

-/*==============================================================================

- Ô­ÓT_zPS_ApUicc_RefreshHappen_Ind

- ˵Ã÷: ָʾÓпÉÄܵ¼ÖÂIMSI µÈ±ØÑ¡Îļþ±ä»¯µÄREFRESH ÃüÁîÉϱ¨

-==============================================================================*/

-typedef struct {

-    BYTE                                         bSrcIndex;  /* 0xff */      

-    BYTE                                         bDesIndex;  /* 0xff */           

-    BYTE                                         abPadding[2];

-} T_zPS_ApUicc_RefreshHappen_Ind,

-T_zApUicc_RefreshHappen_Ind;

-

-/*==============================================================================

- Ô­ÓT_zPS_ApUicc_AirAuth_Ind

- ˵Ã÷:  °Ù¹ÈÍõ¶¨ÖÆÐèÇ󣬿ÕÖмøÈ¨Ö÷¶¯ÃüÁîÉϱ¨¡£UICCMNG to ATI

-==============================================================================*/

-typedef struct {

-    BYTE                                         bSrcIndex;  /* 0xff */      

-    BYTE                                         bDesIndex;  /* 0xff */      

-    BYTE                                         bAuthParmLen;  /*GSM ¼øÈ¨³¤¶ÈΪ16£¬USIM¼øÈ¨³¤¶È34*/

-    BYTE                                         bPadding;  

-    BYTE                                         abAuthParm[Z_VCARD_AIR_AUTH_REQ_LEN];

-    BYTE                                         abPadding2[2]; 

-} T_zPS_ApUicc_AirAuth_Ind,

-T_zApUicc_AirAuth_Ind;

-

-/*==============================================================================

- Ô­ÓT_zPS_ApUicc_AirAuthRsp_Ind

- ˵Ã÷:  °Ù¹ÈÍõ¶¨ÖÆÐèÇ󣬿ÕÖмøÈ¨½á¹ûÏìÓ¦  ¡£ATI to UICCMNG

-==============================================================================*/

-typedef struct {

-    BYTE                                         bSrcIndex; 

-    BYTE                                         bDesIndex;  

-    BYTE                                         bAuthRspLen;  /*¿ÕÖмøÈ¨½á¹ûapduÂëÁ÷³¤¶È*/

-    BYTE                                         bPadding;  

-    BYTE                                         abAuthRsp[Z_VCARD_AIR_AUTH_RSP_LEN];/*¿ÕÖмøÈ¨½á¹ûapduÂëÁ÷*/

-} T_zPS_ApUicc_AirAuthRsp_Ind,

-T_ApUicc_AirAuthRsp_Ind;

-

-typedef struct {

-    BYTE                                         bSrcIndex;  /* 0xff */      

-    BYTE                                         bDesIndex;  /* 0xff */           

-    BYTE                                         bDevKeyId;

-    BYTE                                         bMsgCount;

-    PBYTE                                       pbRstAddr;

-} T_zPS_ApUicc_OprtPsdev_Ind,

-T_zApUicc_OprtPsdev_Ind;

-

-typedef struct {

-    BYTE                                         bSrcIndex;  /* 0xff */      

-    BYTE                                         bDesIndex;  /* 0xff */           

-    BYTE                                         bDevKeyId;

-    BYTE                                         bStartRec;

-    BYTE                                         bEndRec;

-    BYTE                                         bMsgCount;

-    BYTE                                         abPadding[2];

-    PBYTE                                       pbRstAddr;

-} T_zPS_ApUicc_ReadDirectDev_Ind,

-T_zApUicc_ReadDirectDev_Ind;

-

-/*==============================================================================

- Ô­ÓZPS_ApUicc_WriteItemInd_Ev

- ˵Ã÷: ͨ¹ýpsDev×é×°ÏûÏ¢£¬Í¨ÖªuiccMng½øÐÐÊý¾Ý¸üÐÂ

-==============================================================================*/

-typedef struct  {     

-    BYTE                                         bUiccKeyId;    /*¸üÐÂuiccÎļþid£¬È¡ÖµÏêΪpsCom.h*/

-    BYTE                                         bRecNum;       /*¸üÐÂÎļþ¼Ç¼ºÅ£¬µ±ÇÒ½öµ±¸üÐÂÎļþΪ¼Ç¼ÐÍʱÓÐЧ¡£*/

-    BYTE                                         abPadding[2];   

- 

-    PBYTE                                        pData;         /*´ý¸üÐÂÎļþÄÚÈÝ£¬Îļþ½á¹¹Í¨¹ýbUiccKeyIdÇø·Ö£¬¾ßÌåȡֵΪʵ¼ÊʹÓõĸ÷id½á¹¹Ìå*/

-}T_zPS_ApUicc_WriteItem_Ind, T_zPS_ApUicc_ItemData,

-T_zApUicc_WriteItem_Ind, T_zApUicc_ItemData;

-

-

-/*==============================================================================

- Ô­ÓZPS_ApUicc_UpdateItemReq_Ev

- ˵Ã÷: ¸üÐÂÎļþÇëÇó

-==============================================================================*/

-typedef struct  {

-    BYTE                                bSrcIndex;

-    BYTE                                bDesIndex;

-    BYTE                                         bUiccIdNum;   /*´ý¸üÐÂidÊýÄ¿*/

-    BYTE                                         bPadding;

-    T_zPS_ApUicc_ItemData                        tItemData[ZPS_ApUicc_MAX_ITEM_NUM];

-}T_zPS_ApUicc_UpdateItem_Req,

-T_zApUicc_UpdateItem_Req;

-

-

-/*==============================================================================

- Ô­ÓZPS_ApUicc_UpdateItemCnf_Ev

- ˵Ã÷: ¸üÐÂÎļþÏìÓ¦

-==============================================================================*/

-typedef struct  { 

-    BYTE                                bSrcIndex;

-    BYTE                                bDesIndex;

-    BYTE                                         bUiccIdNum;  /*´ý¸üÐÂidÊýÄ¿*/

-    BYTE                                         bPadding;

-    DWORD                                        dwWriteResult[ZPS_ApUicc_MAX_ITEM_NUM];  

-                                                            /*Ö´Ðнá¹û£¬È¡Öµ²Î¼ûuicc½á¹ûÂ붨Òå

-                                                                ZPS_ApUicc_UPDATE_OKµÈ*/

-}T_zPS_ApUicc_UpdateItem_Cnf,

-T_zApUicc_UpdateItem_Cnf;

-

-

-/*==============================================================================

- Ô­ÓZPS_ApUicc_VerifyPin2Req_Ev

- ˵Ã÷: ÇëÇóÑéÖ¤pin2,¿ÉÖ±½Óͨ¹ý±¾ÏûÏ¢ÑéÖ¤pin2

-==============================================================================*/

-typedef struct {

-    BYTE                                bSrcIndex;

-    BYTE                                bDesIndex;

-    BYTE                                abPadding[2];

-    BYTE        abPin[8];           /* PIN2Â룬ҪÇóÎÞЧ×Ö½ÚÌî³äΪ0xff */

-}T_zPS_ApUicc_VerifyPin2_Req,

-T_zApUicc_VerifyPin2_Req;

-

-/*==============================================================================

- Ô­ÓZPS_ApUicc_VerifyPin2Cnf_Ev

- ˵Ã÷: ÑéÖ¤pin2µÄ»Ø¸´ÏûÏ¢

-==============================================================================*/

-typedef struct {

-    BYTE                                bSrcIndex;

-    BYTE                                bDesIndex;

-    BYTE                                abPadding[2];

-    DWORD                                        dwResult;  /* ȡֵ

-                                                                ZPS_ApUicc_PIN_PASS

-                                                                ZPS_ApUicc_PIN_INCORRECT

-                                                                ZPS_ApUicc_NEED_UNBLPIN2

-                                                                ZPS_ApUicc_CARD_WRONG

-                                                                ZPS_ApUicc_NO_CARD

-                                                                */

-}T_zPS_ApUicc_VerifyPin2_Cnf,

-T_zApUicc_VerifyPin2_Cnf;

-

-

-/*==============================================================================

- Ô­ÓZPS_ApUicc_IncreaseReq_Ev (PSDEV->UICC)

- ˵Ã÷: psdev ÇëÇóincrease²Ù×÷

-==============================================================================*/

-typedef struct {

-    BYTE                                         bUiccKeyId;  /* psdevµÄkeyid£¬Ä¿Ç°½öÖ§³ÖACM */

-    BYTE                                         abPading[3];

-    DWORD                                        dwAccuCount; /* ¼Æ·ÑÔöÁ¿ */

-} T_zPS_ApUicc_Increase_Req,

-T_zApUicc_Increase_Req;

-

-

-/*==============================================================================

- Ô­ÓZPS_ApUicc_IncreaseAcmFailInd_Ev (UICC->CC)

- ˵Ã÷: increase acmʧ°ÜÉϱ¨¸øCC

-==============================================================================*/

-/*¿Õ½á¹¹*/

-

-/*==============================================================================

- Ô­ÓZPS_ApUicc_ResetAcmReq_Ev (MMIA->UICC)(T_zPS_ApUicc_Common_Cnf »Ø¸´)

- ˵Ã÷: Óû§ÇëÇóÇå¿Õacm

-==============================================================================*/

-typedef struct {

-    BYTE                                         bSrcIndex;  

-    BYTE                                         bDesIndex;      

-    BYTE                                         bUiccKeyId;  /* psdevµÄkeyid£¬Ä¿Ç°½öÖ§³ÖACM */

-    BYTE                                         bPadding;

-} T_zPS_ApUicc_ResetAcm_Req,

-T_zApUicc_ResetAcm_Req;

-

-/*==============================================================================

- Ô­ÓZPS_ApUicc_ZpukReq_Ev(MMIA->UICCMng)

- ˵Ã÷:  PUKÑéÖ¤¹¦ÄÜ

-==============================================================================*/

-typedef struct {

-    BYTE                                         bSrcIndex;   

-    BYTE                                         bDesIndex;   

-    BYTE                                         bFac;    /*

-                                                                                                  * ZPS_ApUicc_PIN1TYPE:SIM PUK; 

-                                                                                                  * ZPS_ApUicc_PIN2TYPE:SIM PUK2

-                                                                                                  */   

-    BYTE                                         bChId;

-

-    BYTE                                         abPuk[ZPS_ApUicc_MAX_PIN_NUM];

-    BYTE                                         abPin[ZPS_ApUicc_MAX_PIN_NUM];

-}T_zPS_ApUicc_Zpuk_Req,

-T_zApUicc_Zpuk_Req;

-/*==============================================================================

- Ô­ÓAP_UICC_ATR_IND_EV(UICCMng->MMIA)

- ˵Ã÷:  Éϱ¨ATRÐÅÏ¢

-==============================================================================*/

-typedef struct  

-{

-    BYTE                                    bSrcIndex;                            

-    BYTE                                    bDesIndex;  

-

-    BYTE                                    bLength;  

-    BYTE                                    bPadding;

-    

-    BYTE                                    abAtr[Z_APUICC_ATR_MAXLEN];                           

-    BYTE                                    abPadding[2];

-}T_zPS_ApUicc_Atr_Ind,

-T_zApUicc_Atr_Ind;

-

-/*==============================================================================

- Ô­ÓAP_UICC_CSIM_REQ_EV(MMIA->UICCMng)

- ˵Ã÷:  +csim/+ZSIMÇëÇóÏûÏ¢

-==============================================================================*/

-typedef struct  

-{

-    BYTE                                    bSrcIndex;                            

-    BYTE                                    bDesIndex;   

-                         

-    BYTE                                    bSeq;                           

-    BYTE                                    bSeqFg;

-

-    DWORD                                   dwLength;

-    BYTE                                    abApdu[Z_APUICC_APDU_REQ_MAXLEN]; 

-    BYTE                                    bAtType;//0-Z_APUICC_ATCMD_CSIM,1-Z_APUICC_ATCMD_ZSIM

-    BYTE                                    bPadding;

-} T_zPS_ApUicc_Csim_Req,

-T_zApUicc_Csim_Req;

-

-/*==============================================================================

- Ô­ÓAP_UICC_CSIM_CNF_EV(UICCMng->MMIA)

- ˵Ã÷:  +csim/+ZSIM»Ø¸´ÏûÏ¢

-==============================================================================*/

-typedef struct  

-{

-    BYTE                                    bSrcIndex;                            

-    BYTE                                    bDesIndex;      

-                    

-    BYTE                                    bSeq;                       

-    BYTE                                    bSeqFg; 

-    

-    DWORD                                   dwLength;   

-    BYTE                                    abApdu[Z_APUICC_APDU_CNF_MAZLEN];    

-    BYTE                                    abPadding[2];                       

-} T_zPS_ApUicc_Csim_Cnf,

-T_zApUicc_Csim_Cnf;

-/*==============================================================================

- Ô­ÓZPS_ApUicc_RefreshReq_Ev(MMIA->UICCMng)(T_zPS_ApUicc_Common_Cnf »Ø¸´)

- ˵Ã÷:    Refresh ¹¦ÄÜ

-==============================================================================*/

-typedef struct{

-   BYTE                                           bSrcIndex;

-   BYTE                                           bDesIndex;

-   BYTE                                           abPadding[2];

-   T_zApUicc_USAT_RefreshCmd         tRefresh;

-}T_zPS_ApUicc_Refresh_Req,

-T_zApUicc_Refresh_Req;

-

-/*==============================================================================

- Ô­ÓZPS_ApUicc_FileChange_Ind_EV(UICCMng->STM)

- ˵Ã÷:    ֪ͨSTMÎļþ¸üÐÂÁбí

-==============================================================================*/

-typedef struct{

-   BYTE                                           bFullChangeFg;

-   BYTE                                           bKeyIdNum;

-   BYTE                                           bPadding1[2];

-   WORD                                           awKeyIdList[Z_APUICC_MAX_FILE_NUM];

-   BYTE                                           bSmPbKeyIdNum;

-   BYTE                                           bApPbKeyIdNum;

-   BYTE                                           bPadding2[2];

-   WORD                                           awSmPbKeyIdList[Z_APUICC_MAX_SMPB_NUM];

-   WORD                                           awApPbKeyIdList[Z_APUICC_MAX_APPB_NUM];

-}T_zPS_ApUicc_FileChange_Ind,

-T_zApUicc_FileChange_Ind;

-

-/*==============================================================================

- Ô­Ó  AP_UICC_CCHO_REQ_EV   (ATI->UICCMNG)

- ˵Ã÷:   +CCHO ´ò¿ªÂß¼­Í¨µÀ

-==============================================================================*/

-typedef struct{

-   BYTE                                           bSrcIndex;

-   BYTE                                           bDesIndex;

-   BYTE                                           bAidLen;

-   BYTE                                           bPadding;

-

-   BYTE                                           abAid[Z_APUICC_MAX_DIRAID_LEN];

-}T_zPS_ApUicc_Ccho_Req,

-T_zApUicc_Ccho_Req;

-

-/*==============================================================================

- Ô­Ó  AP_UICC_CCHO_CNF_EV   (UICCMNG->ATI)

- ˵Ã÷:   »Ø¸´Âß¼­Í¨µÀºÅ

-==============================================================================*/

-typedef struct{

-   BYTE                                           bSrcIndex;

-   BYTE                                           bDesIndex;

-   BYTE                                           bSessionID;   /* ¶ÔÓ¦ÓÚÓ¦ÓõÄÂß¼­Í¨µÀºÅ */

-   BYTE                                           bPadding;

-}T_zPS_ApUicc_Ccho_Cnf,

-T_zApUicc_Ccho_Cnf;

-

-/*==============================================================================

- Ô­Ó  AP_UICC_CCHC_REQ_EV   (ATI->UICCMNG) (T_zPS_ApUicc_Common_Cnf »Ø¸´)

- ˵Ã÷:   ¹Ø±ÕÂß¼­Í¨µÀ

-==============================================================================*/

-typedef struct{

-   BYTE                                           bSrcIndex;

-   BYTE                                           bDesIndex;

-   BYTE                                           bSessionID;   /* ¶ÔÓ¦ÓÚÓ¦ÓõÄÂß¼­Í¨µÀºÅ */

-   BYTE                                           bPadding;

-}T_zPS_ApUicc_Cchc_Req,

-T_zApUicc_Cchc_Req;

-

-/*==============================================================================

- Ô­Ó  AP_UICC_CCHC_CNF_EV   (UICCMNG->ATI)

- ˵Ã÷:   »Ø¸´¹Ø±ÕÂß¼­Í¨µÀºÅ

-==============================================================================*/

-typedef struct{

-   BYTE                                           bSrcIndex;

-   BYTE                                           bDesIndex;

-   BYTE                                           abPadding[2];

-}T_zApUicc_Cchc_Cnf;

-

-/*==============================================================================

- Ô­Ó  AP_UICC_CGLA_REQ_EV   (ATI->UICCMNG)

- ˵Ã÷:   Ö´Ðп¨ÃüÁî

-==============================================================================*/

-typedef struct{

-   BYTE                                           bSrcIndex;

-   BYTE                                           bDesIndex;

-   BYTE                                           bSessionID;

-   BYTE                                           bPadding;

-

-   DWORD                                          dwLength;

-   BYTE                                           abApdu[Z_APUICC_APDU_REQ_MAXLEN]; 

-   BYTE                                           abPadding[2];

-}T_zPS_ApUicc_CGla_Req,

-T_zApUicc_CGla_Req;

-

-/*==============================================================================

- Ô­Ó  AP_UICC_CGLA_CNF_EV   (UICCMNG->ATI)

- ˵Ã÷:   Ö´Ðп¨ÃüÁîÏìÓ¦

-==============================================================================*/

-typedef struct  

-{

-    BYTE                                    bSrcIndex;                            

-    BYTE                                    bDesIndex;      

-    BYTE                                    abPadding1[2]; 

-    

-    DWORD                                   dwLength;   

-    BYTE                                    abApdu[Z_APUICC_APDU_CNF_MAZLEN];    

-    BYTE                                    abPadding2[2];                       

-} T_zPS_ApUicc_CGla_Cnf,

-T_zApUicc_CGla_Cnf;

-

-/*==============================================================================

- Ô­ÓZPS_ApUicc_Crsm_Req_EV(ATI->UICCMng)

- ˵Ã÷:  +CRSMÇëÇóÏûÏ¢

-==============================================================================*/

-typedef struct {  

-    BYTE                                    bSrcIndex; 

-    BYTE                                    bDesIndex;

-    BYTE                                    bFidFg;       

-    BYTE                                    bParamFg;     

-    

-    BYTE                                    bCmd;        

-    BYTE                                    bP1;        

-    BYTE                                    abFid[2];  

-    

-    BYTE                                    bP2;            

-    BYTE                                    bP3;        

-    BYTE                                    bDataLen;      

-    BYTE                                    bPathLen;

-

-    BYTE                                    abData[ZPS_ApUicc_MAX_CRSMREQDATA_LEN]; /* The terminal may send from 1 to 255 bytes of command data */

-    BYTE                                    bChId;

-    

-    BYTE                                    abPath[ZPS_ApUicc_MAX_PATH_LEN];  

-} T_zPS_ApUicc_Crsm_Req,

-T_zApUicc_Crsm_Req;

-

-/*==============================================================================

- Ô­ÓZPS_ApUicc_Crsm_Cnf_EV(UICCMng->MMIA)

- ˵Ã÷:  +CRSM»Ø¸´ÏûÏ¢

-==============================================================================*/

-typedef struct {  

-    BYTE                                    bSrcIndex; 

-    BYTE                                    bDesIndex;

-    BYTE                                    bSw1;           

-    BYTE                                    bSw2;      

-    

-    BYTE                                    abRsp[ZPS_ApUicc_MAX_CRSMCNFDATA_LEN]; /* The UICC may return any number of bytes in the range 1 to 256. */

-

-    WORD                                    wRspLen;

-    BYTE                                    bChId;

-    BYTE                                    bPadding;     

-} T_zPS_ApUicc_Crsm_Cnf,

-T_zApUicc_Crsm_Cnf;

-

-/*==============================================================================

- Ô­ÓZPS_ApUicc_USAT_Fetch_Ind_EV(UICCMng->MMIA)

- ˵Ã÷:  +CRSM»Ø¸´ÏûÏ¢

-==============================================================================*/

-typedef struct {  

-       

-    BYTE                                    bSrcIndex;                            

-    BYTE                                    bDesIndex;     

-    BYTE                                    abPadding1[2];                     

-

-    DWORD                                   dwLength;   

-    BYTE                                    abApdu[ZPS_ApUicc_APDU_CNF_MAXLEN];    

-    BYTE                                    abPadding2[2];    

-} T_zPS_ApUicc_USAT_Fetch_Ind,

-T_zApUicc_USAT_Fetch_Ind;

-

-/**************************************************************************

-*                         º¯Êý½Ó¿Ú                                        *

-**************************************************************************/

-

-/*==================================================================

- º¯ÊýÃû³Æ: zApUicc_GetEfInfoProc

- º¯Êý¹¦ÄÜ: »ñÈ¡Îļþ³¤¶È¡¢¼Ç¼ÊýÐÅÏ¢

- Êä  Èë:    

-        bPsIdx  ЭÒéÕ»ºÅ£¬È¡Öµ0,1

-        wKeyid  Îļþ¶ÔÓ¦µÄkeyid

- Êä  ³ö: 

-        pbRecNum Îļþ¼Ç¼Êý£¬Ö¸Õë²»¿ÉΪ¿Õ£¬µ÷ÓÃÕßÉêÇëÄÚ´æ

-        pwRecLen ¼Ç¼³¤¶È£¬Ö¸Õë²»¿ÉΪ¿Õ£¬µ÷ÓÃÕßÉêÇëÄÚ´æ

- ·µ  »Ø: 

-        ¶¯×÷½á¹û£¬È¡Öµ²ÎÕպ궨ÒåZ_APUICC_CMD_OKµÈ

-==================================================================*/

-DWORD zApUicc_GetEfInfoProc(BYTE bPsIdx, WORD wKeyid, PBYTE pbRecNum, PWORD pwRecLen);

-

-/*==================================================================

- º¯ÊýÃû³Æ: zApUicc_ReadFileProc

- º¯Êý¹¦ÄÜ: ͨ¹ýkeyid¶ÁÈ¡Îļþ£¬¶þ½øÖÆÎļþ£¬»òÕ߼ǼÐÍÎļþ¼Ç¼

- Êä  Èë: 

-        bPsIdx  ЭÒéÕ»ºÅ£¬È¡Öµ0,1

-        wKeyid  Îļþ¶ÔÓ¦µÄkeyid

-        bRecId  ÒªÇó¶ÁÈ¡µÄ¼Ç¼ÐòºÅ

-        pwValLen ÉêÇëpValÄÚ´æµÄ´óС£¬×Ö½ÚÊý

- Êä  ³ö: 

-        pwValLen ¶ÁÈ¡ÄÚÈݵÄ×Ö½Ú³¤¶È£¬Ö¸Õë²»¿ÉΪ¿Õ£¬µ÷ÓÃÕßÉêÇëÄÚ´æ

-        pVal     ¶ÁÈ¡ÄÚÈÝ£¬ÒԽṹÌå´æÔÚ£¬Ö¸Õë²»¿ÉΪ¿Õ£¬µ÷ÓÃÕßÉêÇëÄÚ´æ

-        

- ·µ  »Ø: 

-        ¶¯×÷½á¹û£¬È¡Öµ²ÎÕպ궨ÒåZ_APUICC_CMD_OKµÈ

-        µ±·µ»ØÖµÎªOKʱ£¬Êä³öÓÐЧ.

-==================================================================*/

-DWORD zApUicc_ReadFileProc(BYTE bPsIdx, WORD wKeyid, BYTE bRecId, PWORD pwValLen, PBYTE pVal);

-

-/*==================================================================

- º¯ÊýÃû³Æ: zApUicc_UpdateFileProc

- º¯Êý¹¦ÄÜ: ͨ¹ýkeyid¸üÐÂÎļþ£¬¶þ½øÖÆÎļþ£¬»òÕ߼ǼÐÍÎļþ¼Ç¼

- Êä  Èë: 

-        bPsIdx  ЭÒéÕ»ºÅ£¬È¡Öµ0,1

-        wKeyid  Îļþ¶ÔÓ¦µÄkeyid

-        bRecId  ÒªÇó¶ÁÈ¡µÄ¼Ç¼ÐòºÅ

-        wValLen ¸üÐÂÄÚÈݵÄ×Ö½Ú³¤¶È

-        pVal    ¸üÐÂÄÚÈÝ£¬ÒԽṹÌå´æÔÚ£¬Ö¸Õë²»¿ÉΪ¿Õ£¬µ÷ÓÃÕßÉêÇëÄÚ´æ

- Êä  ³ö: 

-        NONE

- ·µ  »Ø: 

-        ¶¯×÷½á¹û£¬È¡Öµ²ÎÕպ궨ÒåZ_APUICC_CMD_OKµÈ

-==================================================================*/

-DWORD zApUicc_UpdateFileProc(BYTE bPsIdx, WORD wKeyid, BYTE bRecId, WORD wValLen, const PBYTE pVal);

-

-/*==================================================================

- º¯ÊýÃû³Æ: zApUicc_SearchPsnlRecProc

- º¯Êý¹¦ÄÜ: ËÑË÷Îļþ¿Õ¼Ç¼ÐòºÅ

- Êä  Èë: 

-        bPsIdx  ЭÒéÕ»ºÅ£¬È¡Öµ0,1

-        wKeyid  Îļþ¶ÔÓ¦µÄkeyid

- Êä  ³ö: 

-        pbFreeRecNum ¿Õ¼Ç¼ÊýÄ¿

-        pFreeRec ¿Õ¼Ç¼½á¹û£¬×î¶àΪ Z_APUICC_MAX_FREEREC_NUM ¸ö

-        Ö¸Õë²»¿ÉΪ¿Õ£¬µ÷ÓÃÕßÉêÇëÄÚ´æ

- ·µ  »Ø: 

-        NONE

- ˵  Ã÷:

-    3GʵÏÖÏÂÊöÎļþ²éÕÒ£º²éÕÒÄ£°å¾ùÑϸñ°´ÕÕ31102¸½Â¼ÖÐ pre-personalizationÖµ

-    Z_APUICC_KEYID_SMS, Z_APUICC_KEYID_SMSR, Z_APUICC_KEYID_FDN,

-    Z_APUICC_KEYID_MSISDN, Z_APUICC_KEYID_PB_EXT1 , Z_APUICC_KEYID_EXT2,

-    Z_APUICC_KEYID_EXT5, Z_APUICC_KEYID_PB_UID_1,  Z_APUICC_KEYID_PB_ADN_1,  

-    Z_APUICC_KEYID_PB_IAP_1, Z_APUICC_KEYID_PB_PBC_1,  Z_APUICC_KEYID_PB_GRP_1, 

-    Z_APUICC_KEYID_PB_ANRA_1, Z_APUICC_KEYID_PB_ANRB_1, Z_APUICC_KEYID_PB_ANRC_1, 

-    Z_APUICC_KEYID_PB_SNE_1,  Z_APUICC_KEYID_PB_EMAIL_1,Z_APUICC_KEYID_PB_UID_2,  

-    Z_APUICC_KEYID_PB_ADN_2,  Z_APUICC_KEYID_PB_IAP_2,  Z_APUICC_KEYID_PB_PBC_2,  

-    Z_APUICC_KEYID_PB_GRP_2,  Z_APUICC_KEYID_PB_ANRA_2, Z_APUICC_KEYID_PB_ANRB_2, 

-    Z_APUICC_KEYID_PB_ANRC_2, Z_APUICC_KEYID_PB_SNE_2,  Z_APUICC_KEYID_PB_EMAIL_2,

-    Z_APUICC_KEYID_PB_UID_3,  Z_APUICC_KEYID_PB_ADN_3,  Z_APUICC_KEYID_PB_IAP_3,  

-    Z_APUICC_KEYID_PB_PBC_3,  Z_APUICC_KEYID_PB_GRP_3,  Z_APUICC_KEYID_PB_ANRA_3, 

-    Z_APUICC_KEYID_PB_ANRB_3, Z_APUICC_KEYID_PB_ANRC_3, Z_APUICC_KEYID_PB_SNE_3,  

-    Z_APUICC_KEYID_PB_EMAIL_3,

-==================================================================*/

-DWORD zApUicc_SearchPsnlRecProc(BYTE bPsIdx, WORD wKeyid, PBYTE pbFreeRecNum, PBYTE pFreeRec, BYTE bSearchFlg);

-

-/*==================================================================

- º¯ÊýÃû³Æ: zApUicc_SearchPattnRecProc

- º¯Êý¹¦ÄÜ: ËÑË÷·ûºÏÊäÈëpatternµÄ¼Ç¼ÐòºÅ

- Êä  Èë: 

-        bPsIdx  ЭÒéÕ»ºÅ£¬È¡Öµ0,1

-        wKeyid    Îļþ¶ÔÓ¦µÄkeyid

-        bPattnLen  pattern ³¤¶È,×î´óΪZ_APUICC_MAX_PATTERN_NUM

-        pPattnVal  pattern ×Ö½ÚÁ÷£¬Ö¸Õë²»¿ÉΪ¿Õ£¬µ÷ÓÃÕßÉêÇëÄÚ´æ

- Êä  ³ö: 

-        pbAccrdNum ·ûºÏÌõ¼þ¼Ç¼ÊýÄ¿

-        pAccrdVal ·ûºÏÌõ¼þ¼Ç¼½á¹û£¬×î¶àΪ Z_APUICC_MAX_ACCORDREC_NUM ¸ö, 

-        Ö¸Õë²»¿ÉΪ¿Õ£¬µ÷ÓÃÕßÉêÇëÄڴ棬ÉêÇëÄÚ´æ´óСΪZ_APUICC_MAX_ACCORDREC_NUM

- ·µ  »Ø: 

-        NONE

-==================================================================*/

-VOID zApUicc_SearchPattnRecProc(BYTE bPsIdx, WORD wKeyId, BYTE bPattnLen, const PBYTE pPattnVal, 

-                                PBYTE pbAccrdNum, PBYTE pAccrdVal);

-

-/*==================================================================

- º¯ÊýÃû³Æ: zApUicc_VerifyPin2Proc

- º¯Êý¹¦ÄÜ: ÑéÖ¤pin2£¬ÎÞǰÖÃÌõ¼þ

- Êä  Èë: 

-        bPsIdx  ЭÒéÕ»ºÅ£¬È¡Öµ0,1

-        pPinCod  PINÂ룬×î¶àZ_APUICC_MAX_PIN_NUM ¸ö×Ö½Ú

- Êä  ³ö: 

-        NONE

- ·µ  »Ø: 

-        ¶¯×÷½á¹û£¬È¡Öµ²ÎÕպ궨ÒåZ_APUICC_CMD_OKµÈ

-==================================================================*/

-DWORD zApUicc_VerifyPin2Proc(BYTE bPsIdx, const PBYTE pPinCod);

-

-/*==================================================================

- º¯ÊýÃû³Æ: zApUicc_QueryEfStatusProc

- º¯Êý¹¦ÄÜ: ²éѯÎļþµÄ¼¤»î״̬

- Êä  Èë: 

-        bPsIdx  ЭÒéÕ»ºÅ£¬È¡Öµ0,1

-        wKeyid  Îļþ¶ÔÓ¦µÄkeyid

- Êä  ³ö: 

-        NONE

- ·µ  »Ø: 

-        Îļþ״̬£¬È¡Öµ:

-        Z_APUICC_EFSTATUS_INVALID δ¼¤»î 

-        Z_APUICC_EFSTATUS_REHAB   ¼¤»î

-        Z_APUICC_EFSTATUS_ERROR »ñȡʧ°Ü

- ˵  Ã÷:

-        º¯Êý½ö´¦ÀísimÓ¦ÓÃÏÂ(ADNºÍBDN)

-==================================================================*/

-BYTE zApUicc_QueryEfStatusProc(BYTE bPsIdx, WORD wKeyid);

-

-/*==================================================================

- º¯ÊýÃû³Æ: zApUicc_ModifyEfStatusProc

- º¯Êý¹¦ÄÜ: ÐÞ¸ÄÎļþ״̬

- Êä  Èë: 

-        bPsIdx  ЭÒéÕ»ºÅ£¬È¡Öµ0,1

-        wKeyid  Îļþ¶ÔÓ¦µÄkeyid

-        bMode   ÐÞ¸ÄÀàÐÍ£¬È¡Öµ:     

-                Z_APUICC_EFSTATUS_INVALID δ¼¤»î 

-                Z_APUICC_EFSTATUS_REHAB   ¼¤»î

- Êä  ³ö: 

-        NONE

- ·µ  »Ø: 

-        ¶¯×÷½á¹û£¬È¡Öµ²ÎÕպ궨ÒåZ_APUICC_CMD_OKµÈ

- ˵  Ã÷:

-        º¯Êý½ö´¦ÀísimÓ¦ÓÃÏÂ(ADNºÍBDN)

-==================================================================*/

-DWORD zApUicc_ModifyEfStatusProc(BYTE bPsIdx, WORD wKeyid, BYTE bMode);

-

-/*==================================================================

- º¯ÊýÃû³Æ: zApUicc_HasRecCache

- º¯Êý¹¦ÄÜ: ÅжÏÎļþ¼Ç¼ÊÇ·ñÓÐcache

- Êä  Èë: 

-        bPsIdx  ЭÒéÕ»ºÅ£¬È¡Öµ0,1

-        wKeyid  Îļþ¶ÔÓ¦µÄkeyid

-        bRecId  ¼Ç¼Ë÷Òý

- Êä  ³ö: 

-        NONE

- ·µ  »Ø: 

-        0 ²»´æÔÚ£¬ 1´æÔÚ

- ˵  Ã÷:

-==================================================================*/

-BYTE zApUicc_HasRecCache(BYTE bPsIdx, WORD wKeyid, BYTE bRecId);

-

-/*****************************************************************************

- *    º¯ÊýÃû    £ºzUiccmng_GetIsimChId

- *    ¹¦ÄÜ      £º»ñÈ¡isimÓ¦ÓöÔÓ¦µÄͨµÀid

- *    ÊäÈë²ÎÊý  £ºtTaskIdx - ЭÒéջʵÀýºÅ£¬È¡Öµ0 or 1.

- *    Êä³ö²ÎÊý  £ºÎÞ

- *    ·µ»ØÖµËµÃ÷£ºÎÞ

- *    ÆäËû˵Ã÷  £º

- *****************************************************************************/

-

-extern  BYTE zUiccmng_GetIsimChId(BYTE tTaskIdx);

-

-/* ==================================================================

-º¯ÊýÃû³Æ: zDev_ReadNV_UiccItem

-º¯Êý¹¦ÄÜ:»ñÈ¡NVÖд洢µÄµ¥¿¨Ë«´ýTD/LTEÒ»²à¿¨Ïà¹Ø²ÎÊý

-·µ  »Ø:Z_APUICC_CMD_OK±íʾ³É¹¦

-×¢  ÊÍ:

-================================================================== */

-extern DWORD zDev_ReadNV_UiccItem(BYTE bUiccKeyId, BYTE bStartRec, BYTE bEndRec,PBYTE pValBuf);

-/* ==================================================================

-º¯ÊýÃû³Æ: zDev_WriteNV_UiccItem

-º¯Êý¹¦ÄÜ:дÈëNVÖд洢µÄµ¥¿¨Ë«´ýTD/LTEÒ»²à¿¨Ïà¹Ø²ÎÊý

-·µ  »Ø:ÎÞ

-×¢  ÊÍ:

-================================================================== */

-extern VOID zDev_WriteNV_UiccItem(BYTE bUiccKeyId, BYTE bStartRec, BYTE bEndRec,PBYTE pValBuf);

-/* ============================================================================

- º¯ÊýÃû³Æ: zPS_dev_ReadItem_NoBackup

- º¯Êý¹¦ÄÜ: Ñϸñ±£Ö¤¶ÁÈ¡/¸üнá¹ûºÍ¿¨Ò»ÖÂ

- Êä    Èë:    bUiccKeyId 

-               bStartRec    Æðʼ¼Ç¼ºÅ, ´Ó1¿ªÊ¼

-               bEndRec      ÖÕÖ¹¼Ç¼ºÅ, ´Ó1¿ªÊ¼              

- Êä    ³ö£º    pValBuf      Êý¾ÝÄÚ´æÖ¸Õ룬Óɵ÷ÓÃÕßÉêÇëÄÚ´æ

- ·µ    »Ø£º    DWORD 

- ×¢    ÊÍ£º   Ŀǰmmiaµ÷Óà _Rec±êʶµÄΪ¼Ç¼ÐÍÎļþ£¬bStartRec£¬bEndRec°´ÈçÉÏÌîд

-               ÆäËüµÄΪ¶þ½øÖÆÎļþ£¬ÌîдbStartRec=1£¬bEndRec=1

- -------------------------------------------------------------------------------

- ÐÞ¸ÄÈÕÆÚ        °æ±¾        ÐÞ¸ÄÈË        ÐÞ¸ÄÔ­Òò¼°ÄÚÈÝ

-=============================================================================== */

-extern DWORD zDev_ReadItem_NoBackup(BYTE bUiccKeyId, BYTE bStartRec, BYTE bEndRec, PBYTE pValBuf,BYTE bIndex);

-

-/* ==================================================================

-º¯ÊýÃû³Æ: zDev_UiccSave

-º¯Êý¹¦ÄÜ: ½«¿¨ÉÏÎļþÄÚÈÝ»º´æÖÁÊý¾ÝÇø£¬¸Ãº¯Êý½öÌṩ¸øuiccMngʹÓÃ.

-Êä  Èë:          BYTE bUiccKeyId,   ÐèÒª»º´æµÄUICCÎļþÔÚPSDEVÖеÄID£¬¶ø²»ÊÇUICCÄ£¿éµÄKEYID

-                        BYTE bMaxRec,   ×î´ó¼Ç¼Êý£¬Èç¹ûÊǶþ½øÖÆÎļþ£¬ÔòΪ1.

-                        PBYTE pValBuf,Êý¾ÝÇøÖ¸Õë¶þ½øÖÆÎļþ´æ·Åij¸öÎļþµÄÊý¾Ý½á¹¹;

-                        ¼Ç¼Îļþ´æ·ÅÎļþµÄÿһÌõ¼Ç¼£¬°´ÐòÅÅÁÐ.

-Êä  ³ö: ÎÞ

-·µ  »Ø: Z_FAIL,Z_SUCC

-×¢  ÊÍ: ´Ëº¯Êý½Ó¿ÚÖ»Ìṩ¸øUICCÄ£¿éµ÷ÓÃ

-----------------------------------------------------------------------

-ÐÞ¸ÄÈÕÆÚ    °æ±¾    ÐÞ¸ÄÈË  ÐÞ¸ÄÔ­Òò¼°ÄÚÈÝ

-================================================================== */

-extern BYTE zDev_UiccSave(BYTE bUiccKeyId, BYTE bMaxRec, PBYTE pValBuf,BYTE bIndex);

-/* ==================================================================

-º¯ÊýÃû³Æ: zDev_UiccGetCardAppType

-º¯Êý¹¦ÄÜ: »ñÈ¡uiccÊý¾ÝÇøµÄbCardAppType

-Êä  Èë:

-Êä  ³ö:

-·µ  »Ø:BYTE

-×¢  ÊÍ:

-----------------------------------------------------------------------

-ÐÞ¸ÄÈÕÆÚ    °æ±¾    ÐÞ¸ÄÈË  ÐÞ¸ÄÔ­Òò¼°ÄÚÈÝ

-

-================================================================== */

-extern BYTE zDev_UiccGetCardAppType (BYTE bIndex);

-

-/* ============================================================================

- º¯ÊýÃû³Æ: zPS_dev_GetRecNum

- º¯Êý¹¦ÄÜ: »ñÈ¡¿¨ÉϼǼÎļþµÄ¼Ç¼¸öÊý

- Êä    Èë:        BYTE bUiccKeyId

-                         BYTE bPsId,  ´ý»úЭÒéÕ»ºÅ£¬ÓÐЧֵΪ0£¬1

- Êä    ³ö£º    ÎÞ

- ·µ    »Ø£º    ¼Ç¼Êý: ¶þ½øÖÆ 1 £»¼Ç¼ÐÍ >=1  £»Òì³£ 0

- ×¢    ÊÍ£º   

- -------------------------------------------------------------------------------

- ÐÞ¸ÄÈÕÆÚ        °æ±¾        ÐÞ¸ÄÈË        ÐÞ¸ÄÔ­Òò¼°ÄÚÈÝ

-=============================================================================== */

-extern BYTE zDev_GetRecNum(BYTE bUiccKeyId, BYTE bPsId);

-extern VOID zDev_SetSv(BYTE bIndex);

-

-/**************************************************************************

-*                         stmÓÃÓÚÐÅÁî¸ú×ÙµÄ½Ó¿Ú                           *

-**************************************************************************/

-

-/*==============================================================================

- Ô­ÓApUicc_GetInfoReq_Ev

- ˵Ã÷: Êý¾Ý¿âÄ£¿éÏò¿¨¶ÁÈ¡µç»°±¾»ò¶ÌÏûÏ¢¼Ç¼Êý

-

- Ô­ÓZPS_ApUicc_PrePersonRecSearchReq_Ev

- ˵Ã÷:     ²éÕҼǼÐÍÎļþÖзûºÏЭÒé pre-personalization½¨ÒéÖµËùÓмǼºÅ

-

- Ô­ÓZPS_ApUicc_EfStatusQueryReq_Ev

- ˵Ã÷: ²éѯÎļþ״̬£¬¼´invalidate/rehabilitate£¬¸Ãº¯Êý½öÕë¶ÔsimÓ¦ÓÃÏÂ(ADNºÍBDN)ʵÏÖ

-==============================================================================*/

-typedef struct{

-    WORD                                wKeyId;                                /*keyid*/

-    BYTE                                abPadding[2];

-}T_zApUicc_GetInfo_Req, T_zApUicc_PrePersnRecSrch_Req, T_zApUicc_EfStatusQuery_Req;

-

-/*==============================================================================

- Ô­ÓApUicc_GetInfoCnf_Ev

- ˵Ã÷: Êý¾Ý¿âÄ£¿éÏò¿¨¶ÁÈ¡µç»°±¾»ò¶ÌÏûÏ¢¼Ç¼ÊýµÄÏìÓ¦

-==============================================================================*/  

-typedef struct{

-    WORD                                wKeyId;                                /*keyid*/

-    BYTE                                bRecNum;                               /*Record Number*/

-    BYTE                                bRecLength;                            /*Record length*/

-    DWORD                               dwStatus;                              

-}T_zApUicc_GetInfo_Cnf;

-

-/*==============================================================================

- Ô­ÓZPS_ApUicc_PrePersnRecSrchCnf_Ev

- ˵Ã÷:    ²éÕҼǼÐÍÎļþÖзûºÏЭÒé pre-personalization½¨ÒéÖµËùÓмǼºÅ

-==============================================================================*/

-typedef struct {

-    WORD        wKeyId;

-    BYTE        bFreeRecNum;        /*²éÕÒµ½µÄÂú×ãpre-personalization½¨ÒéÖµ¼Ç¼ÊýÊý×éÖÐÓÐЧ³¤¶È£¬²éÕÒʧ°ÜÔò³¤¶ÈΪ0*/

-    BYTE        bPadding1;

-    

-    BYTE        abFreeRec[ZPS_ApUicc_MAX_FREEREC_NUM];    /*²éÕÒµ½µÄÂú×ãpre-personalization½¨ÒéÖµ¼Ç¼Êý*/

-    BYTE        bPadding2;

-}T_zApUicc_PrePersnRecSrch_Cnf;

-

-/*==============================================================================

- Ô­ÓZPS_ApUicc_PbSearchReq_Ev

- ˵Ã÷: °´Ö¸¶¨pattern²éÕÒ·ûºÏµÄ¼Ç¼ºÅ,½öÏÞ3G¿¨

-==============================================================================*/

-typedef struct {

-    WORD         wKeyId;    

-    BYTE         bPatternLen;

-    BYTE         bPadding1;

-

-    BYTE         abPattern[ZPS_ApUicc_MAX_PATTERN_NUM];

-    BYTE         bPadding2;

-}T_zApUicc_PbSearch_Req;

-

-/*==============================================================================

- Ô­ÓZPS_ApUicc_PbSearchCnf_Ev

- ˵Ã÷: °´Ö¸¶¨ÄÚÈݲéÕÒµ½µÄËùÓмǼ

-==============================================================================*/

-typedef struct {

-    WORD        wKeyId;

-    BYTE        bAccordNum;       

-    BYTE        bPadding1;

-    

-    BYTE        abAccordRec[ZPS_ApUicc_MAX_ACCORDREC_NUM];  

-    BYTE        bPadding2;

-}T_zApUicc_PbSearch_Cnf;

-

-/*==============================================================================

- Ô­ÓZPS_ApUicc_EfStatusQueryCnf_Ev

- ˵Ã÷: ²éѯÎļþ״̬ÏìÓ¦£¬¼´invalidate/rehabilitate£¬¸Ãº¯Êý½öÕë¶ÔsimÓ¦ÓÃÏÂ(ADNºÍBDN)ʵÏÖ

-==============================================================================*/

-typedef struct {

-    BYTE         bEfStatus; /*

-                               ZPS_ApUicc_EfStatus_INVALID   Îļþinvalidate

-                                  ZPS_ApUicc_EfStatus_REHAB    Îļþrehabilitate

-                                  ZPS_ApUicc_EfStatus_ERROR      ²éѯ´íÎó*/

-    BYTE         abPadding[3];

-}T_zApUicc_EfStatusQuery_Cnf;

-

-/*==============================================================================

- Ô­ÓZPS_ApUicc_EfStatusModifyReq_Ev

- ˵Ã÷: ¸ü¸ÄÎļþ״̬£¬Ê¹Îļþinvalidate/rehabilitate,¸Ãº¯Êý½öÕë¶ÔsimÓ¦ÓÃÏÂ(ADNºÍBDN)ʵÏÖ

-==============================================================================*/

-typedef struct {

-    WORD         wKeyId;

-    BYTE         bMode;    /*ZPS_ApUicc_EfStatusModify_INVALID   ʹÎļþinvalidate

-                             ZPS_ApUicc_EfStatusModify_REHAB    ʹÎļþrehabilitate*/

-    BYTE        bPadding;

-}T_zApUicc_EfStatusModify_Req;

-

-/*==============================================================================

- Ô­ÓZPS_ApUicc_EfStatusModifyCnf_Ev

- ˵Ã÷: ¸ü¸ÄÎļþ״̬ÏìÓ¦,¸Ãº¯Êý½öÕë¶ÔsimÓ¦ÓÃÏÂ(ADNºÍBDN)ʵÏÖ

-==============================================================================*/

-typedef struct {    

-    DWORD                                        dwErrCode;  /*Ö´Ðнá¹ûÂ룬²Î¼ûuiccÍ·Îļþ¶¨Òå*/

-}T_zApUicc_EfStatusModify_Cnf;

-

-/*==============================================================================

- Ô­ÓAP_UICC_READ_EID_REQ_EV(ATI->UiccMnger)

- ˵Ã÷: ATIÇëÇó¶ÁÈ¡¿¨ÖеÄEID Îļþ

-==============================================================================*/

-typedef struct{

-    BYTE    bSrcIndex;                            

-    BYTE    bDesIndex;                            

-    BYTE    abPadding[2];

-}T_zPS_ApUicc_Read_Eid_Req,

-T_zApUicc_Read_Eid_Req;

-

-

-/*==============================================================================

- Ô­ÓAP_UICC_READ_EID_CNF_EV(UiccManager->ATII)

- ˵Ã÷: ¶ÁÇëÇóµÄÏìÓ¦

-==============================================================================*/

-typedef struct{

-    BYTE   bSrcIndex;                           

-    BYTE   bDesIndex;                           

-    BYTE   abEid[Z_APUICC_EID_LEN];        

-}T_zPS_ApUicc_Read_Eid_Cnf,

-T_zApUicc_Read_Eid_Cnf;

-

-

-

-#endif  /* AP_UICC_INTERFACE_H */

-

-   

diff --git a/Uboot/cp/ps/modem/ps/inc/atipscom.h b/Uboot/cp/ps/modem/ps/inc/atipscom.h
deleted file mode 100755
index 72560ba..0000000
--- a/Uboot/cp/ps/modem/ps/inc/atipscom.h
+++ /dev/null
@@ -1,2631 +0,0 @@
-/*****************************************************************

-*°æ±¾ËùÓÐ (C)2016ÖÐÐËͨѶ¹É·ÝÓÐÏÞ¹«Ë¾

-*Ä£¿éÃû:

-*ÎļþÃû:atipscom.h

-*ʵÏÖ¹¦ÄÜ:atiʹÓõĹ«¹²½Ó¿Ú

-*°æ±¾:V1.0

-*****************************************************************/

-#ifndef   ZPS_ATI_COM_H

-#define   ZPS_ATI_COM_H

-

-#include "ps.h"

-#include "pstraceint.h"

-#include "atipsevent.h"

-#include "atipserror.h"

-

-/*#if defined (_USE_SIG_TRACE) || defined (_USE_EXCP_TRACE)*/

-#include "TraceShare.h"

-/*#endif*/

-

-#ifdef PS_RAT_GSM

-#include "proc_id.h"

-#include "sig_code.h"

-#endif

-

-#define Z_ImsiLen                                         (BYTE)8

-#define Z_TmsiLen                                         (BYTE)4

-#define Z_PtmsiLen                                        (BYTE)4

-

-/**************************ÔËÓªÉ̶¨Òå*********************/

-/*0ÒÆ¶¯£¬1µçÐÅ£¬2ÁªÍ¨£¬3ÆäËû*/

-#define Z_OPER_CMCC                                  (BYTE)0

-#define Z_OPER_CTCC                                  (BYTE)1

-#define Z_OPER_UNICOM                                (BYTE)2

-#define Z_OPER_OTHER                                 (BYTE)3

-

-/*V2-V3Ãû×Ö¼æÈÝbegin*/

-#define Z_ImeiLen ZPS_ImeiLen

-#define Z_ImeiSvLen ZPS_ImeiSvLen

-#define Z_DEV_MSINFO_MAX_BORDNAME_LEN ZPS_DEV_MSINFO_MAX_BORDNAME_LEN

-#define Z_DEV_MSINFO_MAX_SOFTVERSION_LEN ZPS_DEV_MSINFO_MAX_SOFTVERSION_LEN

-#define Z_DEV_MSINFO_MAX_EQUIPNAME_LEN ZPS_DEV_MSINFO_MAX_EQUIPNAME_LEN

-

-/*===================PDPÉÏÏÂÎÄÏà¹ØºêÖµ===========================*/

-#define Z_DEV_AtMem_MAX_APN_LEN                              (BYTE)100

-#define Z_DEV_AtMem_MAX_PDPADDR_LEN                          (BYTE)20

-#define Z_DEV_AtMem_MAX_CHALLENGE_LEN                        (BYTE)16 /*Ëæ»úÊý³¤¶È*/              

-#define Z_DEV_AtMem_MAX_HASH_LEN                             (BYTE)16  /*HASH ³¤¶È*/

-#define Z_DEV_AtMem_MAX_STR_LEN                              (BYTE)64   /*APN¼øÈ¨×î´ó³¤¶È×Ö·û´®*/

-#define Z_MAX_CID_NUM                                        (BYTE)8

-

-#define Z_DEV_AtMem_MININUM_CID                              (BYTE)1

-#define Z_DEV_AtMem_MININUM_FILTER                           (BYTE)1

-#define Z_DEV_AtMem_MAXINUM_FILTER                           (BYTE)16

-#define Z_DEV_AtMem_CID_BASEINDEX                            (BYTE)0

-#define Z_DEV_AtMem_MININUM_TFADID                           (BYTE)1

-#define Z_DEV_AtMem_MININUM_ESM_FILTER                       (BYTE)1

-#define Z_DEV_AtMem_MAXINUM_ESM_FILTER                       (BYTE)8

-#define Z_DEV_AtMem_TFADID_BASEINDEX                         (BYTE)0

-

-/*========================  AtMem´æ´¢Êý¾Ýºê¶¨Òå  ========================*/

-#define Z_DEV_AtMem_CONTXT_First                                   (BYTE)0 /* Ò»´Î */

-#define Z_DEV_AtMem_CONTXT_Secnd                                   (BYTE)1 /* ¶þ´Î */

-

-#define Z_DEV_AtMem_PDP_NotDefine                                  (BYTE)0 /* 䶨Òå */

-#define Z_DEV_AtMem_PDP_Define                                     (BYTE)1 /* ÒѶ¨Òå */

-

-#ifdef _USE_LTE_GCF

-#define Z_DEV_AtMem_MAX_CID_NUM                              (BYTE)8

-#define Z_DEV_AtMem_MAXINUM_CID                              (BYTE)8

-#define Z_DEV_AtMem_CID_MAXINDEX                             (BYTE)7

-#define Z_DEV_AtMem_MAX_TFADID_NUM                           (BYTE)8

-#define Z_DEV_AtMem_MAXINUM_TFADID                           (BYTE)8

-#define Z_DEV_AtMem_TFADID_MAXINDEX                          (BYTE)7

-#else

-#define Z_DEV_AtMem_MAX_CID_NUM                              (BYTE)4

-#define Z_DEV_AtMem_MAXINUM_CID                              (BYTE)4

-#define Z_DEV_AtMem_CID_MAXINDEX                             (BYTE)3

-#define Z_DEV_AtMem_MAX_TFADID_NUM                           (BYTE)4

-#define Z_DEV_AtMem_MAXINUM_TFADID                           (BYTE)4

-#define Z_DEV_AtMem_TFADID_MAXINDEX                          (BYTE)3

-#endif

-

-/*=====================ÔËÓªÉÌÏà¹ØÐÅÏ¢ºêÖµ========================*/

-#define Z_MAX_ME_OPER_NUM                              (BYTE)64 /*NVÖÐMEÔËÓªÉÌÐÅÏ¢×ܳ¤¶È£¬²»ÔÊÐí¸Ä¶¯*/

-#define Z_MAX_NET_OPER_NUM                             (BYTE)12 /*NVÖÐÍøÂç·ÖÅäÔËÓªÉÌÐÅÏ¢×ܳ¤¶È£¬²»ÔÊÐí¸Ä¶¯*/

-#define Z_MAX_LONGNAME_LEN                             (BYTE)64 /*ÔËÓªÉ̳¤Ãû27007ЭÒ鹿¶¨×16£¬²»ÔÊÐí¸Ä¶¯*/

-#define Z_MAX_SHORTNAME_LEN                            (BYTE)64 /*ÔËÓªÉ̶ÌÃû27007ЭÒ鹿¶¨×8£¬²»ÔÊÐí¸Ä¶¯*/

-#define Z_MAX_OPERATE_PLMNNUM                          (BYTE)50 /*PLMNIDÊýÁ¿*/

-

-/*=========================  ËÑÍøÏà¹Øºê¶¨Òå  ===========================*/

-#define Z_MaxUiccPlmnNum                                  (BYTE)30        /*UICC¿¨ÖÐ×î´ó´æ´¢OPLMN/UPLMN/HPLMN¸öÊý*/

-#define Z_MaxUiccFPlmnNum                                 (BYTE)85        /*UICC¿¨ÖÐ×î´ó´æ´¢FPLMN¸öÊý*/

-#define Z_MaxFbdLaiNum                                    (BYTE)10        /*½ûÖ¹LAI¸öÊý*/

-#define Z_MaxUiccPlmnSelNum                               (BYTE)85         /*PlmnSelÖÐPLMN¸öÊý,Ô­ÏÈΪ16*/

-#define Z_MaxPossiblePlmnNum                              (BYTE)20        /*¿ÉÓÃPLMN¸öÊý*/

-#define Z_MaxSmspAlphaLen                                 (BYTE)252      /*Ô­ÏÈΪ8*/

-/*==========ÏúÁ¿Í³¼Æ·þÎñÆ÷ÓòÃû×î´ó³¤¶È===========*/

-#define Z_DEV_SELLSTAT_MAX_DOMAIN_LEN                  (BYTE)128

-

-/*==================×î´óÐźŸñ======================*/

-#define Z_MAX_SIGNAL_STEP                                 (BYTE)5

-

-/*==================== ËøÐ¡ÇøÓõ½µÄºêÖµ =========================*/

-#define Z_MAX_NUCellNum                                 (BYTE)10         /*TD/WÁÚÇø×î´ó¸öÊý*/

-#define Z_MAX_NGCellNum                                 (BYTE)10         /*GSMÁÚÇø×î´ó¸öÊý*/

-#define Z_MAX_NLCellNum                                 (BYTE)10         /*LTEÁÚÇø×î´ó¸öÊý*/

-

-/*==================ÔËÓªÉÌÆµ¶ÎÐÅÏ¢======================*/

-#define Z_MAX_OPERATOR_NUM                            (BYTE)5   /* ¿ÉÅäÖÃÔËÓªÉÌ×î´ó¸öÊý */

-#define Z_MAX_OPERATOR_PLMN_NUM                       (BYTE)10  /* ÿ¸öÔËÓªÉÌÏ¿ÉÅäÖÃPLMN ×î´ó¸öÊý*/

-#define Z_MAX_OPERATOR_BAND_NUM                       (BYTE)10  /* ÿ¸öÔËÓªÉÌÏ¿ÉÅäÖÃLTEƵ¶Î ×î´ó¸öÊý*/

-

-#define Z_MAX_OPERATOR_FREQ_NUM                       (BYTE)8  /* ÿ¸öÔËÓªÉÌÏ¿ÉÅäÖÃLTE³£ÓÃÆµµã ×î´ó¸öÊý*/

-

-#define Z_AT_MAX_RPI_NR                          (BYTE)3

-#define W_MAX_BAND_RPI_SUPPORT                   (BYTE)8

-#define GSM_MAX_BAND_RPI_SUPPORT                 (BYTE)8

-#define LTE_MAX_BAND_RPI_SUPPORT                 (BYTE)12

-

-#define Z_MAX_LTE_BLKCELL_NUM            (BYTE)5

-

-#define Z_DEV_MAX_BEEPCALL_NUM                  (BYTE)11

-#define Z_DEV_MAX_BEEPCALL_GROUP                (BYTE)3

-

-#define Z_DEV_MAX_ECALL_NUM                  (BYTE)11

-

-#define Z_DEV_MAX_MSISDN_NUM                    (BYTE)15

-

-#ifdef _USE_LPP_ECID

-#define Z_MAX_ECID_NEMASTR_LEN                  (BYTE)22

-#endif

-

-#ifdef BTRUNK_SUPPORT

-/*========================  Ptt¼¯ÈºÏà¹Ø ========================*/

-#define Z_MAX_BCD_NUM                                     (BYTE)10

-#define Z_MAX_GROUP_INFO_NUM                              (BYTE)101

-#define Z_MAX_GROUP_NAME_NUM                              (BYTE)32

-#define Z_MAX_SCANGROUP_NUM                               (BYTE)20                          /*  ×î´óɨÃè×é¸öÊý20*/

-

-/*0£ºÍêȫɨÃ蹦ÄÜ 1£º²¿·ÖɨÃ蹦ÄÜ 2£º¹Ø±ÕɨÃ蹦ÄÜ:*/

-#define Z_FULL_SCAN                                       (BYTE)0       

-#define Z_PART_SCAN                                       (BYTE)1

-#define Z_CLOSE_SCAN                                      (BYTE)2

-

-/*1£ºR1°æ±¾ 2£ºR2°æ±¾ 3£ºR3°æ±¾:*/

-#define Z_R1_VERSION                                      (BYTE)1       

-#define Z_R2_VERSION                                      (BYTE)2

-#define Z_R3_VERSION                                      (BYTE)3

-/*========================  Ptt¼¯ÈºÏà¹Ø ========================*/

-#endif

-

-/* CBS(ÐèºÍapMmiaInt.hÖÐCBS²¿·Öºê¶¨Òå±£³ÖÒ»ÖÂ) */

-#define Z_DEV_AtMem_CBS_MAX_SINGEL_MID_NUM                   (BYTE)32 /*µ¥¸öÉèÖÃMessageIdµÄ×î¶à¸öÊý*/

-#define Z_DEV_AtMem_CBS_MAX_RANGE_MID_NUM                    (BYTE)10 /*·¶Î§ÉèÖÃMessageIdµÄ×î¶à¸öÊý*/

-#define Z_DEV_AtMem_CBS_MAX_MID_NUM                          (BYTE)(Z_DEV_AtMem_CBS_MAX_SINGEL_MID_NUM + Z_DEV_AtMem_CBS_MAX_RANGE_MID_NUM + 1)

-

-#define Z_DEV_AtMem_CBS_MAX_SINGEL_DCS_NUM                   (BYTE)16   /*µ¥¸öÉèÖÃDataCodingSchemeµÄ×î¶à¸öÊý*/

-#define Z_DEV_AtMem_CBS_MAX_RANGE_DCS_NUM                    (BYTE)5    /*·¶Î§ÉèÖÃDataCodingSchemeµÄ×î¶à¸öÊý*/

-#define Z_DEV_AtMem_CBS_MAX_DCS_NUM                          (BYTE)(Z_DEV_AtMem_CBS_MAX_SINGEL_DCS_NUM + Z_DEV_AtMem_CBS_MAX_RANGE_DCS_NUM + 1)

-

-#define Z_DEV_NV_AMTLTEBAND_NUM                   (BYTE)16

-#define Z_DEV_NV_AMTFDDBAND_NUM                   (BYTE)4

-#define Z_DEV_NV_AMTTDDBAND_NUM                   (BYTE)4

-#define Z_DEV_NV_AMTGSMBAND_NUM                   (BYTE)2

-

-/*====================== ÏúÁ¿Í³¼ÆÏà¹Øºê¶¨Òå ===================*/

-#define  Z_DEV_NV_SellStat_PACKSEND_VALID                  (BYTE)1  /*ÏúÁ¿Í³¼ÆIP°üÈÔ¿É·¢ËÍ*/

-#define  Z_DEV_NV_SellStat_PACKSEND_INVALID                (BYTE)0  /*ÏúÁ¿Í³¼ÆIP°ü·¢ËÍÒÑÈ·ÈÏ»ò·¢ËÍ×Ü´ÎÊýÒѳ¬¹ýÉÏÏÞ*/

-

-/********************************ATI¶ÁдNVË÷ÒýÖµ**************************************/

-#define Z_ATI_NV_PsAttState1                              (BYTE)0

-#define Z_ATI_NV_PsAttState2                              (BYTE)(Z_ATI_NV_PsAttState1+1)

-#define Z_ATI_NV_CidPdpContext1                            (BYTE)(Z_ATI_NV_PsAttState2+1)

-#define Z_ATI_NV_CidPdpContext2                            (BYTE)(Z_ATI_NV_CidPdpContext1+1)

-#define Z_ATI_NV_LteLcCfg                                 (BYTE)(Z_ATI_NV_CidPdpContext2+1)

-#define Z_ATI_NV_PsServOutParam                           (BYTE)(Z_ATI_NV_LteLcCfg+1)

-#define Z_ATI_NV_FropInfo                                 (BYTE)(Z_ATI_NV_PsServOutParam+1)

-#define Z_ATI_NV_CopsMode1                                (BYTE)(Z_ATI_NV_FropInfo+1)

-#define Z_ATI_NV_CopsMode2                                (BYTE)(Z_ATI_NV_CopsMode1+1)

-#define Z_ATI_NV_WLcCfg                                   (BYTE)(Z_ATI_NV_CopsMode2+1)

-#define Z_ATI_NV_TLcCfg                                   (BYTE)(Z_ATI_NV_WLcCfg+1)

-#define Z_ATI_NV_GLcCfg1                                   (BYTE)(Z_ATI_NV_TLcCfg+1)

-#define Z_ATI_NV_GLcCfg2                                   (BYTE)(Z_ATI_NV_GLcCfg1+1)

-#define Z_ATI_NV_EmbmsStat                                (BYTE)(Z_ATI_NV_GLcCfg2+1)

-#define Z_ATI_NV_SerPlmnSet                               (BYTE)(Z_ATI_NV_EmbmsStat+1)

-#define Z_ATI_NV_BandTrans                                (BYTE)(Z_ATI_NV_SerPlmnSet+1)

-#define Z_ATI_NV_GsmSignalboxCfg                          (BYTE)(Z_ATI_NV_BandTrans+1)

-#define Z_ATI_NV_TdSignalboxCfg                           (BYTE)(Z_ATI_NV_GsmSignalboxCfg+1)

-#define Z_ATI_NV_WSignalboxCfg                            (BYTE)(Z_ATI_NV_TdSignalboxCfg+1)

-#define Z_ATI_NV_LteSignalboxCfg                          (BYTE)(Z_ATI_NV_WSignalboxCfg+1)

-#define Z_ATI_NV_LteAct1                                  (BYTE)(Z_ATI_NV_LteSignalboxCfg+1)

-#define Z_ATI_NV_LteAct2                                  (BYTE)(Z_ATI_NV_LteAct1+1)

-#define Z_ATI_NV_MeOperPlmnID                             (BYTE)(Z_ATI_NV_LteAct2+1)

-#define Z_ATI_NV_NetOperPlmnID                            (BYTE)(Z_ATI_NV_MeOperPlmnID+1)

-#define Z_ATI_NV_SellStat1                                 (BYTE)(Z_ATI_NV_NetOperPlmnID+1)

-#define Z_ATI_NV_SellStat2                                 (BYTE)(Z_ATI_NV_SellStat1+1)

-#define Z_ATI_NV_EudoFR                                   (BYTE)(Z_ATI_NV_SellStat2+1)

-#define Z_ATI_NV_MaxTxPower                               (BYTE)(Z_ATI_NV_EudoFR+1)

-#define Z_ATI_NV_LteBand                                  (BYTE)(Z_ATI_NV_MaxTxPower+1)

-#define Z_ATI_NV_LteBandBackUp                            (BYTE)(Z_ATI_NV_LteBand+1)

-#define Z_ATI_NV_UeInfo                                   (BYTE)(Z_ATI_NV_LteBandBackUp+1)

-#define Z_ATI_NV_GsmBand                                  (BYTE)(Z_ATI_NV_UeInfo+1)

-#define Z_ATI_NV_GsmBandBackup                            (BYTE)(Z_ATI_NV_GsmBand+1)

-#define Z_ATI_NV_TddBand                                  (BYTE)(Z_ATI_NV_GsmBandBackup+1)

-#define Z_ATI_NV_TddBandBackup                            (BYTE)(Z_ATI_NV_TddBand+1)

-#define Z_ATI_NV_FddBand                                  (BYTE)(Z_ATI_NV_TddBandBackup+1)

-#define Z_ATI_NV_FddBandBackup                            (BYTE)(Z_ATI_NV_FddBand+1)

-#define Z_ATI_NV_GprsClass                                (BYTE)(Z_ATI_NV_FddBandBackup+1)

-#define Z_ATI_NV_FdSet                                    (BYTE)(Z_ATI_NV_GprsClass+1)

-#define Z_ATI_NV_EgprsSet                                 (BYTE)(Z_ATI_NV_FdSet+1)

-#define Z_ATI_NV_ApMemCapa1                                (BYTE)(Z_ATI_NV_EgprsSet+1)

-#define Z_ATI_NV_ApMemCapa2                                (BYTE)(Z_ATI_NV_ApMemCapa1+1)

-#define Z_ATI_NV_Sysconfig1                                (BYTE)(Z_ATI_NV_ApMemCapa2+1)

-#define Z_ATI_NV_Sysconfig2                                (BYTE)(Z_ATI_NV_Sysconfig1+1)

-#define Z_ATI_NV_EPDCPTimerLen                             (BYTE)(Z_ATI_NV_Sysconfig2+1)

-#define Z_ATI_NV_BlackWhiteList                            (BYTE)(Z_ATI_NV_EPDCPTimerLen+1)

-#define Z_ATI_NV_GrrCellBar                                (BYTE)(Z_ATI_NV_BlackWhiteList+1)

-#define Z_ATI_NV_NcellInfo                                 (BYTE)(Z_ATI_NV_GrrCellBar+1)

-#define Z_ATI_NV_OperatorLteBandInfo                       (BYTE)(Z_ATI_NV_NcellInfo+1)

-#define Z_ATI_NV_RPICfgInfo                                (BYTE)(Z_ATI_NV_OperatorLteBandInfo+1)

-#define Z_ATI_NV_NitzUpdateCfg                             (BYTE)(Z_ATI_NV_RPICfgInfo+1)

-#define Z_ATI_NV_UMTSAMR                                   (BYTE)(Z_ATI_NV_NitzUpdateCfg+1)

-#define Z_ATI_NV_MobileInfoCfg                             (BYTE)(Z_ATI_NV_UMTSAMR+1)

-#define Z_ATI_NV_UeCapaCfg                                 (BYTE)(Z_ATI_NV_MobileInfoCfg+1)

-#define Z_ATI_NV_ZLcCfg                                    (BYTE)(Z_ATI_NV_UeCapaCfg+1)

-#define Z_ATI_NV_LteBlkCell                                (BYTE)(Z_ATI_NV_ZLcCfg + 1)

-#define Z_ATI_NV_CmgfMode                                  (BYTE)(Z_ATI_NV_LteBlkCell + 1)

-#define Z_ATI_NV_CustomMcc                                 (BYTE)(Z_ATI_NV_CmgfMode + 1)

-#define Z_ATI_NV_BeepCall                                  (BYTE)(Z_ATI_NV_CustomMcc + 1)

-#define Z_ATI_NV_Msisdn1                                   (BYTE)(Z_ATI_NV_BeepCall + 1)

-#define Z_ATI_NV_Msisdn2                                   (BYTE)(Z_ATI_NV_Msisdn1 + 1)

-#define Z_ATI_NV_EcallCapa                                 (BYTE)(Z_ATI_NV_Msisdn2 + 1)

-#define Z_ATI_NV_EcallNum                                  (BYTE)(Z_ATI_NV_EcallCapa + 1)

-#define Z_ATI_NV_EcallTime                                 (BYTE)(Z_ATI_NV_EcallNum + 1)

-#define Z_ATI_NV_RrcStatus                                 (BYTE)(Z_ATI_NV_EcallTime + 1)

-#ifdef BTRUNK_SUPPORT

-#define Z_ATI_NV_PttTruncUser                              (BYTE)(Z_ATI_NV_RrcStatus + 1)

-#define Z_ATI_NV_PttIOTFlag                                (BYTE)(Z_ATI_NV_PttTruncUser + 1)

-#define Z_ATI_NV_PttSubWayFlag                             (BYTE)(Z_ATI_NV_PttIOTFlag + 1)

-#define Z_ATI_NV_PrvEnd                                    (BYTE)(Z_ATI_NV_PttSubWayFlag + 0)

-#else

-#define Z_ATI_NV_PrvEnd                                    (BYTE)(Z_ATI_NV_RrcStatus + 0)

-#endif

-

-

-#define Z_ATI_NV_MIXBase                                    (BYTE)(Z_ATI_NV_PrvEnd + 1)

-#define Z_ATI_NV_MsInfo                                     (BYTE)(Z_ATI_NV_MIXBase + 1)

-#define Z_ATI_NV_MIXEnd                                     (BYTE)(Z_ATI_NV_MsInfo + 0)

-

-/*================  ЭÒéÕ»AtMemÏà¹ØÊý¾ÝË÷Òýºê¶¨Òå  ===================*/

-#define Z_AtMem_ID_BASE                                   (BYTE)0       

-#define Z_AtMem_ID_MmiaPrvtMem                           (BYTE)(Z_AtMem_ID_BASE + 0)

-#define Z_AtMem_ID_Cvmod                                  (BYTE)(Z_AtMem_ID_MmiaPrvtMem+1)

-#define Z_AtMem_ID_Cemode                                 (BYTE)(Z_AtMem_ID_Cvmod + 1)

-#define Z_AtMem_ID_SmsOverIpNet                           (BYTE)(Z_AtMem_ID_Cemode + 1)

-#define Z_AtMem_ID_Cmod                                   (BYTE)(Z_AtMem_ID_SmsOverIpNet + 1)  

-#define Z_AtMem_ID_Cbst                                   (BYTE)(Z_AtMem_ID_Cmod + 1)

-#define Z_AtMem_ID_CallLine                               (BYTE)(Z_AtMem_ID_Cbst + 1)

-#define Z_AtMem_ID_Fclass                                 (BYTE)(Z_AtMem_ID_CallLine + 1)

-#define Z_AtMem_ID_Csns                                   (BYTE)(Z_AtMem_ID_Fclass + 1)

-#define Z_AtMem_ID_AutoRsp                               (BYTE)(Z_AtMem_ID_Csns + 1)

-#define Z_AtMem_ID_Cnmi                                   (BYTE)(Z_AtMem_ID_AutoRsp + 1)

-#define Z_AtMem_ID_Crlp                                   (BYTE)(Z_AtMem_ID_Cnmi + 1)

-#define Z_AtMem_ID_Cscb                                   (BYTE)(Z_AtMem_ID_Crlp + 1)

-#ifdef _USE_LPP_ECID

-#define Z_AtMem_ID_MoLr                                   (BYTE)(Z_AtMem_ID_Cscb + 1)

-#define Z_AtMem_ID_SmCidData                              (BYTE)(Z_AtMem_ID_MoLr + 1)

-#else

-#define Z_AtMem_ID_SmCidData                             (BYTE)(Z_AtMem_ID_Cscb + 1)

-#endif

-#define Z_AtMem_ID_EsmData                                (BYTE)(Z_AtMem_ID_SmCidData + 1)

-#define Z_AtMem_ID_END                                    (BYTE)Z_AtMem_ID_EsmData

-

-#ifdef _USE_LPP_ECID

-#define Z_AtMem_AtCmd_MAXID                               (BYTE)(Z_AtMem_ID_MoLr + 1)  /*AtÃüÁîÏà¹Ø£¨³ýSM¼°ESM¶àCID£©Êý×é×î´óÉÏÏÞ*/

-#define Z_AtMem_AtCmd_LASTID                              (BYTE)(Z_AtMem_ID_MoLr + 0)      /*AtÃüÁîÏà¹Ø£¨³ýSM¼°ESM¶àCID£©Last  AtMem Id*/

-#else

-#define Z_AtMem_AtCmd_MAXID                               (BYTE)(Z_AtMem_ID_Cscb + 1)  /*AtÃüÁîÏà¹Ø£¨³ýSM¼°ESM¶àCID£©Êý×é×î´óÉÏÏÞ*/

-#define Z_AtMem_AtCmd_LASTID                              (BYTE)(Z_AtMem_ID_Cscb + 0)      /*AtÃüÁîÏà¹Ø£¨³ýSM¼°ESM¶àCID£©Last  AtMem Id*/

-#endif

-

-/*================  ЭÒéÕ»ÄÚÄ£¿é¶Á¡¢Ð´UICC¿¨Êý¾ÝË÷Òýºê¶¨Òå  ===============*/

-#define Z_UiccId_FIRST                                        (BYTE)Z_UiccId_SHPPLMN_TIME_BIN

-#define Z_UiccId_SHPPLMN_TIME_BIN                             (BYTE)0

-#define Z_UiccId_HPLMN_BIN                                    (BYTE)1        

-#define Z_UiccId_FPLMN_BIN                                    (BYTE)2

-#define Z_UiccId_UPLMN_BIN                                    (BYTE)3

-#define Z_UiccId_OPLMN_BIN                                    (BYTE)4

-#define Z_UiccId_SMSP_REC                                     (BYTE)5

-#define Z_UiccId_SMSS_BIN                                     (BYTE)6    

-#define Z_UiccId_EMLPP_BIN                                    (BYTE)7    

-#define Z_UiccId_AAEM_BIN                                     (BYTE)8    

-#define Z_UiccId_ECC_REC                                      (BYTE)9    

-#define Z_UiccId_LOCI_BIN                                     (BYTE)10

-#define Z_UiccId_PSLOCI_BIN                                   (BYTE)11

-#define Z_UiccId_ACC_BIN                                      (BYTE)12

-#define Z_UiccId_CELLINFO_BIN                                 (BYTE)13

-#define Z_UiccId_CSKEY                                        (BYTE)14

-#define Z_UiccId_PSKEY                                        (BYTE)15  /*CK/IK/KC*/        

-#define Z_UiccId_CSKSI_BIN                                    (BYTE)16  /*CK/IK/KC*/

-#define Z_UiccId_PSKSI_BIN                                    (BYTE)17  /*дKSI*/

-#define Z_UiccId_CSCKSN_BIN                                   (BYTE)18  /*дKSI*/  

-#define Z_UiccId_PSCKSN_BIN                                   (BYTE)19  /*дCKSN*/

-#define Z_UiccId_START_BIN                                    (BYTE)20  /*дCKSN*/

-#define Z_UiccId_UICC_APPTYPE                                 (BYTE)21

-#define Z_UiccId_UICC_STATE                                   (BYTE)22

-#define Z_UiccId_AD_BIN                                       (BYTE)23

-#define Z_UiccId_PLMNSEL_BIN                                  (BYTE)24

-#define Z_UiccId_SIMBCCH_BIN                                  (BYTE)25 /* ¶ÁдsimÓ¦ÓÃbcch*/

-#define Z_UiccId_IMSI_BIN                                     (BYTE)26

-#define Z_UiccId_THRESHOLD_BIN                                (BYTE)27

-#define Z_UiccId_USTSST                                       (BYTE)28 

-#define Z_UiccId_IMEI                                         (BYTE)29 

-

-/******************************LTE********************************************/

-#define Z_UiccId_EPSLOCI_BIN                                  (BYTE)30  /*EPS LociµÄË÷Òý*/

-#define Z_UiccId_LRPLMNSI_BIN                                 (BYTE)31  /*RPLMN Selection IndicationµÄË÷Òý*/

-#define Z_UiccId_EHPLMN_BIN                                   (BYTE)32  /*EHPLMNµÄË÷Òý*/

-#define Z_UiccId_EPSNSC_REC                                   (BYTE)33  /*°²È«ÉÏÏÂÎĵÄË÷Òý*/

-#define Z_UiccId_ACSGL_REC                                    (BYTE)34  /*Allowed CSG listµÄË÷Òý*/

-#define Z_UiccId_CSGT_REC                                     (BYTE)35  /*CSG IndacationµÄË÷Òý*/

-#define Z_UiccId_HNBN_REC                                     (BYTE)36  /*HNB NameµÄË÷Òý*/

-#define Z_UiccId_OCSGL_REC                                    (BYTE)37  /*EFOCSGLµÄË÷Òý*/

-

-#define Z_UiccId_ACM_CYC                                      (BYTE)38

-#define Z_UiccId_ACMMAX_BIN                                   (BYTE)39

-#define Z_UiccId_PUCT_BIN                                     (BYTE)40

-#define Z_UiccId_PL_BIN                                       (BYTE)41

-#define Z_UiccId_LI_BIN                                       (BYTE)42

-#define Z_UiccId_IMEISV                                       (BYTE)43

-#define Z_UiccId_BACKUP_DATA_FLG                              (BYTE)44

-#define Z_UiccId_EST_BIN                                      (BYTE)45

-#define Z_UiccId_ACL_BIN                                      (BYTE)46

-#define Z_UiccId_ICCID_BIN                                    (BYTE)47

-#define Z_UiccId_OPL_REC                                      (BYTE)48

-#define Z_UiccId_PNN_REC                                      (BYTE)49

-#define Z_UiccId_FDN_REC                                      (BYTE)50

-#define Z_UiccId_SDN_REC                                      (BYTE)51

-#define Z_UiccId_FDNURI_REC                                   (BYTE)52

-#define Z_UiccId_SDNURI_REC                                   (BYTE)53

-#define Z_UiccId_EXT2_REC                                     (BYTE)54

-#define Z_UiccId_EXT3_REC                                     (BYTE)55

-#define Z_UiccId_LAST                                         (BYTE)Z_UiccId_EXT3_REC

-

-

-/* FPLMN */

-#define    ZPS_UICC_LEN_FPLMN                                   (BYTE)85  

-#define    Z_UICC_LEN_FPLMN             ZPS_UICC_LEN_FPLMN

-

-#define Z_MAX_LEN_URI_TLV_DATA                             (BYTE)255 /* EFPSISMSC ÖÐURI TLVµÄ×î´ó³¤¶È*/

-#define Z_MAX_LEN_EHPLMN                                  (BYTE)85  /*EHPLMNÁбí*/ 

-#define Z_MAX_LEN_NASINT_KEY                              (BYTE)16  /*ÍêÕûÐÔ±£»¤ÃÜÔ¿µÄ×î´ó³¤¶È*/ 

-#define Z_MAX_LEN_NASENC_KEY                              (BYTE)16  /*¼ÓÃÜÃÜÔ¿µÄ×î´ó³¤¶È*/ 

-#define Z_MAX_LEN_NH_OR_NCC_PARA                          (BYTE)32  /*NASÃÜÔ¿µÄ×î´ó³¤¶È*/ 

-

-/*========================  ¿¨×´Ì¬Ïà¹Ø¶¨Òå  ========================*/

-#define Z_Uicc_CardOk                                     (BYTE)0   /* psDev¸ù¾Ý¿¨³õʼ»¯ÏûÏ¢É迨ok*/

-#define Z_Uicc_NoCard                                     (BYTE)1   /* uiccÉϱ¨ÎÞ¿¨*/

-#define Z_Uicc_StateInvalid                               (BYTE)2   /* uiccÉϱ¨¿¨×´Ì¬ÎÞЧ*/

-#define Z_Uicc_StateLogicInvalid                          (BYTE)3   /* ¼øÈ¨åå»òÕßÇ¿ÖÆÎļþ³ö´í(EFimsi/EFad)£¬µÈps¹ý³Ìʹ¿¨×´Ì¬ÎÞЧ*/

-#define Z_Uicc_PinNotVerify                               (BYTE)4   /* uiccÉϱ¨pinûÓÐÑéÖ¤*/

-#define Z_Uicc_CardLocked                                 (BYTE)5   /* uiccÉϱ¨¿¨Ã»ÓнâËø*/

-#define Z_Uicc_WaitDeact                                  (BYTE)6   /* µÈ´ýÈ¥»î*/

-

-/*====================== ÐÅÁî¸ú×Ù·½Ïò¶¨Òå =========================*/

-#define Z_SIGTRACE_SEND                                   (BYTE)0

-#define Z_SIGTRACE_RECV                                   (BYTE)1

-

-/*================ ¶¯×÷½á¹û»òº¯Êý·µ»Ø½á¹ûºê¶¨Òå ====================*/

-#define Z_SUCC                                            (BYTE)0

-#define Z_FAIL                                            (BYTE)1

-

-/*====================== ÓÐЧ¡¢ÎÞЧºê¶¨Òå =========================*/

-#define Z_VALID                                           (BYTE)1

-#define Z_INVALID                                         (BYTE)0

-#define Z_NULL_BYTE                                       (BYTE)0xff

-#define Z_NULL_WORD                                       (WORD)0xffff

-#define Z_NULL_DWORD                                      (DWORD)0xffffffff

-

-/*========================== ÖÆÊ½ºê¶¨Òå ==========================*/

-#define Z_NO_ACT                                          (BYTE)0x00

-#define Z_TD_ACT                                          (BYTE)0x01

-#define Z_W_ACT                                           (BYTE)0x02

-#define Z_GSM_ACT                                         (BYTE)0x04

-#define Z_GSM_COMPACT_ACT                                 (BYTE)0x08

-#define Z_LTE_ACT                                         (BYTE)0x10

-

-/*==========================ÖÐÒÆ¶¨Öƺê ==========================*/

-#define Z_CMCC_INVALID                                     (BYTE)0x00

-#define Z_CMCC_VALID                                       (BYTE)0x01

-

-/*========================  ϵͳ×Óģʽºê¶¨Òå ====================*/

-#define   Z_SUBMODE_NOSERVE                               (BYTE)0   /* ÎÞ·þÎñ */

-#define   Z_SUBMODE_GSM                                   (BYTE)1   /* GSMģʽ */

-#define   Z_SUBMODE_GPRS                                  (BYTE)2   /* GPRSģʽ */

-#define   Z_SUBMODE_EDGE                                  (BYTE)3   /* EDGEģʽ */

-#define   Z_SUBMODE_WCDMA                                 (BYTE)4   /* WCDMAģʽ */

-#define   Z_SUBMODE_HSDPA                                 (BYTE)5   /* HSDPAģʽ */

-#define   Z_SUBMODE_HSUPA                                 (BYTE)6   /* HSUPAģʽ */

-#define   Z_SUBMODE_DPA_UPA                               (BYTE)7   /* HSUPAºÍHSDPAģʽ */

-#define   Z_SUBMODE_TD                                    (BYTE)8   /* TD_SCDMAģʽ */

-#define   Z_SUBMODE_LTE_TDD                               (BYTE)9  /* LTEģʽTDD */

-#define   Z_SUBMODE_LTE_FDD                               (BYTE)10  /* LTEģʽ FDD*/

-#define   Z_SUBMODE_LTE                                   (BYTE)11  /* LTEģʽ*/

-#define   Z_SUBMODE_DPAORUPA                              (BYTE)12   /* HSDPA»òÕßHSUPAģʽ */

-#define   Z_SUBMODE_HSPA_PLUS                             (BYTE)13  /* HSPA+ ģʽ*/

-/*========================== É䯵¿ª¹Øºê¶¨Òå =======================*/

-#define Z_RF_ON                                           (BYTE)0

-#define Z_RF_OFF                                          (BYTE)1 

-

-/*==========================  Óò±êʶºê¶¨Òå  ===============================*/

-#define Z_CsDomain                                        (BYTE)0

-#define Z_PsDomain                                        (BYTE)1

-#define Z_MbauDomain                                      (BYTE)2

-

-/*============ CM/UMMÄ£¿éÏòmmiaµÄÏûÏ¢ÖÐÔ´Ë÷ÒýʹÓõÄÄ£¿éºê¶¨Òå  =======*/

-#define Z_PSMDL_CC                                        (BYTE)1      /* psµÄccÄ£¿éºÅ*/

-#define Z_PSMDL_SMS                                       (BYTE)2      /* psµÄsmsÄ£¿éºÅ*/

-#define Z_PSMDL_SS                                        (BYTE)3      /* psµÄssÄ£¿éºÅ*/

-#define Z_PSMDL_SM                                        (BYTE)4      /* psµÄsmÄ£¿éºÅ*/

-#define Z_PSMDL_UMM                                       (BYTE)5      /* psµÄummÄ£¿éºÅ*/

-#define Z_PSMDL_ESM                                       (BYTE)6      /* psµÄesmÄ£¿éºÅ*/

-#define Z_PSMDL_PB                                        (BYTE)7      /* psµÄstmÄ£¿éºÅ*/

-

-/*************************µ±Ç°°æ±¾ÖÆÊ½ÐÅÏ¢*******************/

-#define Z_DEV_NV_RAT_VERSION_TD_ONLY                       (BYTE)0

-#define Z_DEV_NV_RAT_VERSION_GSM_ONLY                      (BYTE)1

-#define Z_DEV_NV_RAT_VERSION_TD_PRIORITY                   (BYTE)2

-#define Z_DEV_NV_RAT_VERSION_GSM_PRIORITY                  (BYTE)3

-#define Z_DEV_NV_RAT_VERSION_DEFAULT                       (BYTE)4

-

-/*V2-V3Ãû×Ö¼æÈÝend*/

-#define Z_SUBMDL_NUM                                      (BYTE)((SUBMDL_PSEND - SUBMDL_PSBASE) + 1)

-

-#ifdef _USE_PRINTF

-    #define  Z_PRINTF(X)\

-    if (zCatAgt_IsModemPrintTraced()) zOss_Printf X

-    #define  Z_DUALPRINTF(X)\

-    if (zCatAgt_IsModemPrintTraced()) zCatAgt_DualPrintf X

-#else

-    #define  Z_PRINTF(X)

-    #define  Z_DUALPRINTF(X) 

-#endif

-

-#ifdef _USE_EXCP_TRACE

-    #define Z_EXCP_TRACE_AGT( bInsNo, bModId, dwErrcode, dwRcvMsgId, dwSendMsgId, \

-            pString, bState, bErrLevel ) \

-        zExpt2TraceAgt( bInsNo, bModId, dwErrcode, dwRcvMsgId, dwSendMsgId, \

-            pString, __FILE__, __LINE__, bState, bErrLevel )

-#else

-    #define Z_EXCP_TRACE_AGT( bInsNo, bModId, dwErrcode, dwRcvMsgId, dwSendMsgId, \

-            pString, bState, bErrLevel )

-#endif

-

-/******************************************************************************

-*ЭÒéÕ»NVÏà¹Ø½á¹¹,Ϊ±ÜÃâÔì³ÉNVÎÉÂÒ½ûÖ¹¶ÔÏÂÃæ½á¹¹½øÐÐÐÞ¸Ä

-******************************************************************************/

-typedef struct {

-    BYTE                            bAutoGprsAtt;  /**********************************************************

-                                                                       ¹¦ÄÜ£º    ָʾÊÇ·ñÖ§³Ö×Ô¶¯GPRS¸½×Å

-                                                                       ȡֵ·¶Î§£º1-±íʾ֧³Ö 0-±íʾ²»Ö§³Ö

-                                                                       ³ö³§Öµ£º0

-                                                    **************************************************/

-    BYTE                            abPadding[3];

-}T_zAti_NV_PsAttState;

-

-typedef struct {

-    BYTE    bLteAct;    /******************************************************************************** 

-                        ¹¦ÄÜ£º    ÉèÖÃLTE½ÓÈë¼¼Êõ

-                        ȡֵ·¶Î§£º0 ~ 3(0½öÖ§³ÖTDD£¬1½öÖ§³ÖFDD£¬2Ö§³ÖTDDºÍFDDÇÒTDDÓÅÏÈ£¬3Ö§³ÖTDDºÍFDDÇÒFDDÓÅÏÈ)

-                        ³ö³§Öµ£º2

-                        *********************************************************************************/    

-    BYTE    abPadding[3];

-}T_zAti_NV_LteAct;

-

-typedef struct

-{

-    BYTE                            bCid;                 /* ½¨Òé³ö³§Öµ£º0*/             

-    BYTE                            bPdpType;             /* ½¨Òé³ö³§Öµ£º0*/           

-    BYTE                            bDComp;               /* ½¨Òé³ö³§Öµ£º0*/ 

-    BYTE                            bHComp;               /* ½¨Òé³ö³§Öµ£º0*/ 

-    BYTE                            bIPv4AddrAlloc;       /* ½¨Òé³ö³§Öµ£º0*/ 

-    BYTE                            bEmergencyInd;        /* ½¨Òé³ö³§Öµ£º0*/ 

-    BYTE                            bPCscfDisc;            /* ½¨Òé³ö³§Öµ£º0*/ 

-    BYTE                            bImcnSignInd;       /* ½¨Òé³ö³§Öµ£º0*/ 

-    BYTE                            bPcoAuthFg;   /* ½¨Òé³ö³§Öµ£º0*/ 

-    BYTE                            bAuthType;    /*¼øÈ¨ÀàÐÍ,½¨Òé³ö³§Öµ:0*/

-    BYTE                            abApn[Z_DEV_AtMem_MAX_APN_LEN];          /* ½¨Òé³ö³§Öµ£º0*/ 

-    BYTE                            abPdpAddr[Z_DEV_AtMem_MAX_PDPADDR_LEN];  /* ½¨Òé³ö³§Öµ£º0*/ 

-    BYTE                            abPassWord[Z_DEV_AtMem_MAX_STR_LEN];/*²»ÄÜ´óÓÚ64,½¨Òé³ö³§Öµ£º0*/

-    BYTE                            abUserName[Z_DEV_AtMem_MAX_STR_LEN];/*²»ÄÜ´óÓÚ64,½¨Òé³ö³§Öµ£º0*/

-    BYTE                            bPassWordLen;/*³ö³§Öµ0*/

-    BYTE                            bUserNameLen;/*³ö³§Öµ0*/

-}T_zAti_NV_CidPdpContext;

-

-typedef struct

-{

-    T_zAti_NV_CidPdpContext    tCidPdpCont[Z_MAX_CID_NUM];

-}T_zAti_NV_PdpCont;

-

-typedef struct {

-    BYTE                            bLteLCAction;       /*0: δÉèÖÃËø¶¨Æµµã»òÐ¡Çø, 1: ÒÑÉèÖÃËø¶¨Æµµã»òÐ¡Çø, ½¨Òé³ö³§Öµ£º0*/ 

-    BYTE                            bPadding;   

-    WORD                            wLteLCCellParaId;   /*Ëø¶¨µÄÐ¡Çø£¬½¨Òé³ö³§Öµ£º0xFFFF*/

-    DWORD                           dwLteLCUarfcn;       /*Ëø¶¨µÄƵµã£¬½¨Òé³ö³§Öµ£º0xFFFFFFFF*/

-}T_zAti_NV_LteLcCfg;

-

-typedef struct {

-    BYTE                            bMode;        /* ½¨Òé³ö³§Öµ£º2 ×Ô¶¯ËÑÍø*/

-    BYTE                            bAcqorder;    /* ½¨Òé³ö³§Öµ£º6 ĬÈÏÓÅÏȼ¶£¬°´ÕÕLTE->TD->GSMÖÆÊ½Ë³ÐòËÑÍø*/

-    BYTE                            bRoam;        /* ½¨Òé³ö³§Öµ£º1 Ö§³ÖÂþÓÎ*/

-    BYTE                            bSrvdomain;   /* ½¨Òé³ö³§Öµ£º2 Ö§³ÖCS/PS*/                                                                                      

-}T_zAti_NV_Sysconfig;

-

-typedef struct {

-    T_z_PlmnId                 tPlmnId; /*PLMNID*/

-    BYTE                       bPadding;

-    BYTE                       abFullName[Z_MAX_LONGNAME_LEN]; /*ÔËÓªÉ̳¤Ãû*/

-    BYTE                       abShortName[Z_MAX_SHORTNAME_LEN]; /*ÔËÓªÉ̶ÌÃû*/

-}T_zAti_NV_OperPlmnInfo;

-

-typedef struct {

-    T_zAti_NV_OperPlmnInfo     atNvMePlmnIDInfo[Z_MAX_ME_OPER_NUM];/*ÔËÓªÉÌÍøÂçÐÅÏ¢Áбí*/

-     /*³ö³¡Öµ:

-       atNvMePlmnIDInfo[0]: tPlmnId: 46000  abFullName: "CHINA MOBILE",abShortName:"CMCC"

-       atNvMePlmnIDInfo[1]: tPlmnId: 46002  abFullName: "CHINA MOBILE",abShortName:"CMCC"

-       atNvMePlmnIDInfo[2]: tPlmnId: 46007  abFullName: "CHINA MOBILE",abShortName:"CMCC"

-       atNvMePlmnIDInfo[3]: tPlmnId: 46008  abFullName: "CHINA MOBILE",abShortName:"CMCC"

-       atNvMePlmnIDInfo[4]: tPlmnId: 46001  abFullName: "CHINA-UNICOM",abShortName:"UNICOM"

-       atNvMePlmnIDInfo[5]: tPlmnId: 46006  abFullName: "CHINA-UNICOM",abShortName:"UNICOM"

-       atNvMePlmnIDInfo[6]: tPlmnId: 46009  abFullName: "CHINA-UNICOM",abShortName:"UNICOM"

-       atNvMePlmnIDInfo[7]: tPlmnId: 46003 abFullName: "CHN-CT",abShortName:"CT"

-       atNvMePlmnIDInfo[8]: tPlmnId: 46005 abFullName: "CHN-CT",abShortName:"CT"

-       atNvMePlmnIDInfo[9]: tPlmnId: 46011 abFullName: "CHN-CT",abShortName:"CT"

-       atNvMePlmnIDInfo[10]: tPlmnId: 46012 abFullName: "CHN-CT",abShortName:"CT"

-       ÆäËûµÄPLMNIDΪȫF,Ãû³ÆÎªÈ«0*/

-}T_zAti_NV_MePlmnInfo;

-

-typedef struct {

-    T_zAti_NV_OperPlmnInfo           atNvNetPlmnIDInfo[Z_MAX_NET_OPER_NUM];

-    /*³ö³§Öµ:atNvNetPlmnIDInfo[0]:  tPlmnId:È«F,abFullName:È«0,abShortName:È«0 .ÒÔ´ËÀàÍÆ*/

-}T_zAti_NV_NetPlmnInfo;

-

-typedef struct{

-    BYTE          bSellStatSwitch;/******************************************************************************** 

-                                   ¹¦ÄÜ£º   ÏúÁ¿Í³¼Æ¿ª¹Ø

-                                   ȡֵ·¶Î§£º0£ºÏúÁ¿¹¦Äܹرգ»1£ºÏúÁ¿Í³¼Æ¹¦ÄÜ´ò¿ª

-                                   ³ö³§Öµ£º0

-                                   *********************************************************************************/

-    BYTE          bCRC;           /******************************************************************************** 

-                                   ¹¦ÄÜ£º   CRCÖµ£¬ÓÃÓÚ·¢ËÍÏúÁ¿Í³¼Æ°üʱ½øÐмÓÃÜ

-                                   ȡֵ·¶Î§£º0~255

-                                   ³ö³§Öµ£º0x55

-                                   *********************************************************************************/

-    BYTE          bDebug;         /******************************************************************************** 

-                                   ¹¦ÄÜ£º   ¿ªÆôDebug ģʽ£¬½µµÍÏúÁ¿Í³¼Æ³ö·¢ÃÅÏÞ

-                                   ȡֵ·¶Î§£º0£ºdebugģʽ¹Ø±Õ£¬1£ºdebugģʽ¿ªÆô

-                                   ³ö³§Öµ£º0

-                                   *********************************************************************************/

-    BYTE          bSellStatTriFg;/******************************************************************************** 

-                                   ¹¦ÄÜ£ºÏúÁ¿Í³¼Æ±ê¼Ç룬

-                                         bit0£ºµ¥´Îpdp¼¤»îÌõ¼þÂú×ã±ê¼Ç룬

-                                         bit1£ºÀÛ¼ÆPDP¼¤»îʱ¼äÂú×ã±ê¼Ç룬

-                                         bit2£º´ý»úʱ¼äÌõ¼þÂú×ã±ê¼Çλ¡£                                         

-                                   ȡֵ·¶Î§£ºÃ¿Ò»¸öbitÖÃ1±íʾÌõ¼þÂú×㣬0±íʾÌõ¼þ²»Âú×ã  0x00~0x07

-                                   ³ö³§Öµ£º0x00

-                                   *********************************************************************************/

-

-    WORD         wPort;      /******************************************************************************** 

-                                   ¹¦ÄÜ£º   ÏúÁ¿Í³¼Æ·þÎñÆ÷¶Ë¿ÚºÅ

-                                   ȡֵ·¶Î§£º0~0xFFFF

-                                   ³ö³§Öµ£ºÐ¡¶Ëʱȡֵ0x2332

-                                   *********************************************************************************/

-

-    BYTE          bPacketSendCnt;/******************************************************************************** 

-                                   ¹¦ÄÜ£ºÏúÁ¿Í³¼Æ°ü·¢ËͼÆÊý

-                                   ȡֵ·¶Î§£º0~255

-                                   ³ö³§Öµ£º0

-                                   *********************************************************************************/

-    BYTE          bPacketSendState;/******************************************************************************** 

-                                   ¹¦ÄÜ£º   ÏúÁ¿Í³¼ÆIP°ü·¢ËÍ״̬

-                                                      0---ÏúÁ¿Í³¼ÆIP°ü·¢ËÍÒÑÈ·ÈÏ»ò·¢ËÍ×Ü´ÎÊýÒѳ¬¹ýÉÏÏÞ

-                                                      1--ÏúÁ¿Í³¼ÆIP°üÈÔ¿É·¢ËÍ

-                                   ȡֵ·¶Î§£º0~1

-                                   ³ö³§Öµ£º1

-                                   *********************************************************************************/

-

-    BYTE        bRegCnt;/******************************************************************************** 

-                                   ¹¦ÄÜ£º   ÍøÂç×¢²áʱ¼äÂú×ãÏúÁ¿Í³¼ÆÃÅÏÞ´ÎÊý                                                      

-                                   ȡֵ·¶Î§£º0~255

-                                   ³ö³§Öµ£º0

-                                   *********************************************************************************/

-    BYTE          abPadding[3];/******************************************************************************** 

-                                   ¹¦ÄÜ£ºÌî³äλ

-                                   ȡֵ·¶Î§£º0

-                                   ³ö³§Öµ£º0

-                                   *********************************************************************************/

-

-    DWORD        dwSumPdpTime;/******************************************************************************** 

-                                   ¹¦ÄÜ:ÀÛ¼ÆPDPÉÏÍøÊ±¼ä,µ¥Î»Îªms

-                                   ȡֵ·¶Î§£º0~0xffffffff

-                                   ³ö³§Öµ£º0

-                                   *********************************************************************************/

-

-    BYTE         abDomain[Z_DEV_SELLSTAT_MAX_DOMAIN_LEN];  

-                                          /******************************************************************************** 

-                                   ¹¦ÄÜ£ºÏúÁ¿Í³¼Æ·þÎñÆ÷ÓòÃû£¬×Ö·û´®±íʾ£¬ÒÔ\0±íʾ½áÊø

-                                   ȡֵ·¶Î§£ºÈÎÒâ×Ö·û´®

-                                   ³ö³§Öµ£º"hq0.patrol.update2.zte.com.cn"

-                                   *********************************************************************************/

-}T_zAti_NV_SellStat;

-

-typedef struct{

-    BYTE            bLteThreshRsrp;           /*0-97,³ö³§Öµ0*/

-    BYTE            bLteThreshRsrp_High;      /*0-97,³ö³§Öµ97*/

-    BYTE            bLteThreshRsrq;           /*0-34,³ö³§Öµ0*/

-    BYTE            bLteThreshRsrq_High;      /*0-34,³ö³§Öµ34*/

-    BYTE            bTdThreshRscp;            /*0-96,³ö³§Öµ0*/

-    BYTE            bTdThreshRscp_High;       /*0-96,³ö³§Öµ96*/

-    BYTE            abPadding[2];

-}T_zAti_NV_PsServOutParam;

-

-typedef struct{

-    BYTE            bTimerLen;           /*0-10,³ö³§Öµ4*/

-    BYTE            abPadding[3];

-}T_zAti_NV_FropInfo;

-

-typedef struct{

-    BYTE                   bCopsMode;        /*³ö³§Öµ0*/

-    BYTE                   bOperFg;          /* ³ö³§Öµ0 */

-    BYTE                   bNameFg;        /* ³ö³§Öµ0 */

-    BYTE                   bPadding;

-    BYTE                   abOperate[Z_MAX_LONGNAME_LEN];         /* ³ö³§ÖµÈ«0 */

-    T_z_PlmnAct            tPlmnAct;         /* ³ö³§ÖµÈ«0xff */

-}T_zAti_NV_CopsMode;

-

-/*************************************************************************************

- bEndpoint:1±íʾ±ÕºÏµãÔÚÐźÅÇ¿¶ÈСµÄÒ»¶Ë,2±íʾ±ÕºÏµãÔÚÐźÅÇ¿¶È´óµÄÒ»¶Ë

- ÒÔbEndpoint=2ΪÀý,>-80(5¸ñ),[-80,-90)4¸ñ,[-90,-98)3¸ñ,[-98,-104)2¸ñ,[-104,-110)1¸ñ,

- СÓÚµÈÓÚ-110Ϊ0¸ñ

-  bStepNum:±íʾÐźŸñ×î´óÊý,Ŀǰ×î´óÊýΪ5¸ñ,Èç¹û¸ÄΪСÓÚ5µÄÖµ,Ôò¶ÔÓ¦µÄ

-                   ÐźÅÇ¿¶È±ß½çÖµÊý×éabRssiÀïµÄÖµÒ²ÒªÏàÓ¦¼õÉÙ

-**************************************************************************************/

-typedef struct{

-    BYTE      bEndpoint;                    /*Çø¼ä±ÕºÏµã³ö³§Öµ2*/

-    BYTE      bStepNum;                      /*ÐźŸñÊý³ö³§Öµ5 */

-    BYTE      abRssi[Z_MAX_SIGNAL_STEP];

-                                       /*ÐźÅÇø¼ä±ß½çÖµ1³ö³§Öµ80

-                                        ÐźÅÇø¼ä±ß½çÖµ2³ö³§Öµ90

-                                        ÐźÅÇø¼ä±ß½çÖµ3³ö³§Öµ98

-                                        ÐźÅÇø¼ä±ß½çÖµ4³ö³§Öµ104

-                                        ÐźÅÇø¼ä±ß½çÖµ5³ö³§Öµ110*/

-    BYTE      bPadding;

-}T_zAti_NV_GsmSignalboxCfg;

-

-/*************************************************************************************

- bEndpoint:1±íʾ±ÕºÏµãÔÚÐźÅÇ¿¶ÈСµÄÒ»¶Ë,2±íʾ±ÕºÏµãÔÚÐźÅÇ¿¶È´óµÄÒ»¶Ë

- ÒÔbEndpoint=2ΪÀý,>-80(5¸ñ),[-80,-90)4¸ñ,[-90,-98)3¸ñ,[-98,-104)2¸ñ,[-104,-110)1¸ñ,

- СÓÚµÈÓÚ-110Ϊ0¸ñ

- bStepNum:±íʾÐźŸñ×î´óÊý,Ŀǰ×î´óÊýΪ5¸ñ,Èç¹û¸ÄΪСÓÚ5µÄÖµ,Ôò¶ÔÓ¦µÄ

-                   ÐźÅÇ¿¶È±ß½çÖµÊý×éabRssiÀïµÄÖµÒ²ÒªÏàÓ¦¼õÉÙ

-**************************************************************************************/

-typedef struct{

-    BYTE      bEndpoint;                    /*Çø¼ä±ÕºÏµã³ö³§Öµ2*/

-    BYTE      bStepNum;                       /*ÐźŸñÊý³ö³§Öµ5 */

-    BYTE      abRssi[Z_MAX_SIGNAL_STEP];

-                                       /*ÐźÅÇø¼ä±ß½çÖµ1³ö³§Öµ80

-                                        ÐźÅÇø¼ä±ß½çÖµ2³ö³§Öµ90

-                                        ÐźÅÇø¼ä±ß½çÖµ3³ö³§Öµ98

-                                        ÐźÅÇø¼ä±ß½çÖµ4³ö³§Öµ104

-                                        ÐźÅÇø¼ä±ß½çÖµ5³ö³§Öµ110*/

-    BYTE      bPadding;

-}T_zAti_NV_TdSignalboxCfg;

-

-/*************************************************************************************

- bEndpoint:1±íʾ±ÕºÏµãÔÚÐźÅÇ¿¶ÈСµÄÒ»¶Ë,2±íʾ±ÕºÏµãÔÚÐźÅÇ¿¶È´óµÄÒ»¶Ë

- ÒÔbEndpoint=2ΪÀý,>-80(5¸ñ),[-80,-90)4¸ñ,[-90,-98)3¸ñ,[-98,-104)2¸ñ,[-104,-110)1¸ñ,

- СÓÚµÈÓÚ-110Ϊ0¸ñ

-  bStepNum:±íʾÐźŸñ×î´óÊý,Ŀǰ×î´óÊýΪ5¸ñ,Èç¹û¸ÄΪСÓÚ5µÄÖµ,Ôò¶ÔÓ¦µÄ

-                   ÐźÅÇ¿¶È±ß½çÖµÊý×éabRssiÀïµÄÖµÒ²ÒªÏàÓ¦¼õÉÙ

-**************************************************************************************/

-typedef struct{

-    BYTE      bEndpoint;                     /*Çø¼ä±ÕºÏµã³ö³§Öµ2*/

-    BYTE      bStepNum;                        /*ÐźŸñÊý³ö³§Öµ5 */

-    BYTE      abRssi[Z_MAX_SIGNAL_STEP];

-                                       /*ÐźÅÇø¼ä±ß½çÖµ1³ö³§Öµ80

-                                         ÐźÅÇø¼ä±ß½çÖµ2³ö³§Öµ90

-                                         ÐźÅÇø¼ä±ß½çÖµ3³ö³§Öµ98

-                                         ÐźÅÇø¼ä±ß½çÖµ4³ö³§Öµ104

-                                         ÐźÅÇø¼ä±ß½çÖµ5³ö³§Öµ110*/

-    BYTE     bPadding;

-}T_zAti_NV_WSignalboxCfg;

-

-/**************************************************************************************

- bEndpoint:1±íʾ±ÕºÏµãÔÚÐźÅÇ¿¶ÈСµÄÒ»¶Ë,2±íʾ±ÕºÏµãÔÚÐźÅÇ¿¶È´óµÄÒ»¶Ë

- ÒÔbEndpoint=1ΪÀý,>= -97(5¸ñ),(-97,-105]4¸ñ,(-105,-110]3¸ñ,(-110,-115]2¸ñ,(-115,-120]1¸ñ,

- СÓÚ-120Ϊ0¸ñ.

- bStepNum:±íʾÐźŸñ×î´óÊý,Ŀǰ×î´óÊýΪ5¸ñ,Èç¹û¸ÄΪСÓÚ5µÄÖµ,Ôò¶ÔÓ¦µÄ

-                   ÐźÅÇ¿¶È±ß½çÖµÊý×éabRssiÀïµÄÖµÒ²ÒªÏàÓ¦¼õÉÙ

-***************************************************************************************/

-typedef struct{

-    BYTE      bEndpoint;                     /*Çø¼ä±ÕºÏµã³ö³§Öµ1*/

-    BYTE      bStepNum;                        /*ÐźŸñÊý³ö³§Öµ5*/   

-    BYTE      abRssi[Z_MAX_SIGNAL_STEP];

-                                       /*ÐźÅÇø¼ä±ß½çÖµ1³ö³§Öµ97

-                                         ÐźÅÇø¼ä±ß½çÖµ2³ö³§Öµ105

-                                         ÐźÅÇø¼ä±ß½çÖµ3³ö³§Öµ110

-                                         ÐźÅÇø¼ä±ß½çÖµ4³ö³§Öµ115

-                                         ÐźÅÇø¼ä±ß½çÖµ5³ö³§Öµ120*/

-   BYTE      bPadding;

-}T_zAti_NV_LteSignalboxCfg;

-

-typedef struct{

-    BYTE      bWLCAct;    /*0:δÉèÖÃËø¶¨Æµµã»òÐ¡Çø1:ÒÑÉèÖÃËø¶¨Ð¡Çø,½¨Òé³ö³§Öµ0*/

-    BYTE      abPadding[3];

-    T_z_WCell      tWCell;

-                     /*wUarfcn: Ëø¶¨Ð¡ÇøµÃÏÂÐÐÆµµã,412~10838,³ö³§Öµ£º0XFFFF

-                      wPrimSc: Ëø¶¨Ð¡ÇøµÄÈÅÂë,0~511,³ö³§Öµ£º0XFFFF*/

-}T_zAti_NV_WLcCfg;

-

-typedef struct{

-    BYTE      bTLCAct;    /*0:δÉèÖÃËø¶¨Æµµã»òÐ¡Çø1:ÒÑÉèÖÃËø¶¨Ð¡Çø,½¨Òé³ö³§Öµ0*/

-    BYTE      abPadding[3];

-    T_z_TdCell     tTCell;

-                          /*bCellParaId: ½¨Òé³ö³§Öµ0

-                           wUarfcn:½¨Òé³ö³§Öµ0*/

-}T_zAti_NV_TLcCfg;

-

-typedef struct{

-    BYTE      bGLCAct;/*0:δÉèÖÃËø¶¨Æµµã»òÐ¡Çø1:ÒÑÉèÖÃËø¶¨Ð¡Çø,½¨Òé³ö³§Öµ0*/

-    BYTE      abPadding;

-    WORD      wArfcn;/*½¨Òé³ö³§Öµ0*/

-}T_zAti_NV_GLcCfg;

-

-typedef struct{

-    BYTE      bSaiListSet; /*SAIÁбíÉϱ¨¿ª¹Ø,0:¹Ø±Õ1:´ò¿ª,³ö³§Öµ:0*/

-    BYTE      bTmgiListSet; /*TMGIÁбíÉϱ¨¿ª¹Ø,0:¹Ø±Õ1:´ò¿ª,³ö³§Öµ:0*/

-    BYTE      bMbmsModeSet; /*EMBMSÓÅÏȹ¤×÷ģʽ,0:unicastÓÅÏÈ1:×é²¥ÓÅÏÈ,³ö³§Öµ:0*/

-    BYTE      bPadding;

-}T_zAti_NV_EmbmsStat;

-

-typedef struct{

-    BYTE      bSerachSet;/*ÊÇ·ñÔÊÐíËÑÍø,ÓÃÒÔÇø·ÖÊÇ·ñÎªËøÍø¼øÈ¨°æ±¾,

-                                    ÊÇËøÍø¼øÈ¨°æ±¾Ôò³ö³§ÖµÎª0,±íʾ¹Ø±ÕËÑÍø¹¦ÄÜ

-                                    ²»ÊÇÔò³ö³§ÖµÎª1,±íʾ´ò¿ªËÑÍø¹¦ÄÜ*/

-    BYTE      abPadding[3];

-}T_zAti_NV_LockSearchPlmn;

-

-typedef struct{

-    BYTE      bCustomInfoFlg;/*³ö³§Öµ0,Óû§ÉèÖÃÐÅÏ¢ÊÇ·ñ´æÔÚ,1±íʾÓÐЧ¼´ÓÐЧµÄ bCustomBandÓë bEquateBandµÈͬ¡£0±íʾÎÞЧ£¬²»ÐèÒª×öµÈ¼ÛBANDת»»*/

-    BYTE      bCustomBand; /*³ö³§Öµ0,Óû§Ô­Ê¼Æµ¶Î,ȡֵ1-64.±¸×¢£ºÓû§Ö»ÔÊÐíÉèÖÃUE²»Ö§³ÖµÄband.µ±Ç°¶¨ÖÆÐèÇóÊÇbCustomBand¹Ì¶¨Îª63*/

-    BYTE      bEquateBand;/*³ö³§Öµ0,ÓëÓû§Ô­Ê¼Æµ¶ÎµÈͬµÄƵ¶Î,ȡֵ1-64*/

-    BYTE      bPadding;

-}T_zAti_NV_CustomBandTransInfo;

-

-typedef struct{

-    BYTE      bLteCustomPemax;      /*ȡֵ·¶Î§1-63,0ΪÎÞЧֵ£¬Ê¹ÓÃʱÐèÒª¼õ30£¬Êµ¼Êȡֵ·¶Î§ÊÇ-30--33  dbm*/

-    BYTE      bTddMaxAlwUlTxPwr;     /*ȡֵ·¶Î§1--83,0ΪÎÞЧֵ£¬Ê¹ÓÃʱÐèÒª¼õ50£¬Êµ¼Êȡֵ·¶Î§ÊÇ-50--33 dbm*/

-    BYTE      bFddMaxAlwUlTxPwr;     /*ȡֵ·¶Î§1--83,0ΪÎÞЧֵ£¬Ê¹ÓÃʱÐèÒª¼õ50£¬Êµ¼Êȡֵ·¶Î§ÊÇ-50--33 dbm*/

-    BYTE      bGsmCustomPower;    /*ȡֵ·¶Î§1-31,0ΪÎÞЧֵ,¸ÃÖµÓëpower control levelË÷ÒýÖµÒ»Ö£¬ÊÇË÷ÒýÖµ ²»ÊÇÕæÊµ¹¦ÂÊdBm*/

-}T_zAti_Nv_CustomTxPower;

-

-typedef struct{

-   BITS         bBand1:1;  /*  ¹¦ÄÜ£ºÆµ¶Î1Ö§³ÖÓë·ñ   ȡֵ·¶Î§:0~1  ³ö³§Öµ:0*/

-   BITS         bBand2:1;  /*  ¹¦ÄÜ£º Ƶ¶Î2Ö§³ÖÓë·ñ   ȡֵ·¶Î§:0~1  ³ö³§Öµ:0 */

-   BITS         bBand3:1;  /*  ¹¦ÄÜ£ºÆµ¶Î3Ö§³ÖÓë·ñ   ȡֵ·¶Î§:0~1  ³ö³§Öµ:0 */

-   BITS         bBand4:1;  /*  ¹¦ÄÜ£ºÆµ¶Î4Ö§³ÖÓë·ñ   ȡֵ·¶Î§:0~1  ³ö³§Öµ:0*/

-   BITS         bBand5:1;  /*  ¹¦ÄÜ£ºÆµ¶Î5Ö§³ÖÓë·ñ   ȡֵ·¶Î§:0~1  ³ö³§Öµ:0 */

-   BITS         bBand6:1;  /*  ¹¦ÄÜ£ºÆµ¶Î6Ö§³ÖÓë·ñ    ȡֵ·¶Î§:0~1  ³ö³§Öµ:0*/

-   BITS         bBand7:1;  /*  ¹¦ÄÜ£ºÆµ¶Î7Ö§³ÖÓë·ñ    ȡֵ·¶Î§:0~1  ³ö³§Öµ:1*/

-   BITS         bBand8:1;  /*  ¹¦ÄÜ£ºÆµ¶Î8Ö§³ÖÓë·ñ   ȡֵ·¶Î§:0~1  ³ö³§Öµ:0 */

-   BITS         bBand9:1;  /*  ¹¦ÄÜ£ºÆµ¶Î9Ö§³ÖÓë·ñ    ȡֵ·¶Î§:0~1  ³ö³§Öµ:0*/

-   BITS         bBand10:1; /*  ¹¦ÄÜ£ºÆµ¶Î10Ö§³ÖÓë·ñ   ȡֵ·¶Î§:0~1  ³ö³§Öµ:0*/        

-   BITS         bBand11:1; /*  ¹¦ÄÜ£ºÆµ¶Î11Ö§³ÖÓë·ñ    ȡֵ·¶Î§:0~1  ³ö³§Öµ:0*/

-   BITS         bBand12:1; /*  ¹¦ÄÜ£ºÆµ¶Î12Ö§³ÖÓë·ñ    ȡֵ·¶Î§:0~1  ³ö³§Öµ:0*/

-   BITS         bBand13:1; /*  ¹¦ÄÜ£ºÆµ¶Î13Ö§³ÖÓë·ñ    ȡֵ·¶Î§:0~1  ³ö³§Öµ:0*/

-   BITS         bBand14:1; /*  ¹¦ÄÜ£ºÆµ¶Î14Ö§³ÖÓë·ñ    ȡֵ·¶Î§:0~1  ³ö³§Öµ:0*/

-   BITS         bBand15:1; /*  ¹¦ÄÜ£ºReserved    ȡֵ·¶Î§:0~1  ³ö³§Öµ:0*/

-   BITS         bBand16:1; /*  ¹¦ÄÜ£ºReserved    ȡֵ·¶Î§:0~1  ³ö³§Öµ:0*/  

-   BITS         bBand17:1; /*  ¹¦ÄÜ£ºÆµ¶Î17Ö§³ÖÓë·ñ    ȡֵ·¶Î§:0~1  ³ö³§Öµ:0*/

-   BITS         bBand18:1; /*  ¹¦ÄÜ£ºÆµ¶Î18Ö§³ÖÓë·ñ    ȡֵ·¶Î§:0~1  ³ö³§Öµ:0*/

-   BITS         bBand19:1; /*  ¹¦ÄÜ£ºÆµ¶Î19Ö§³ÖÓë·ñ   ȡֵ·¶Î§:0~1  ³ö³§Öµ:0 */

-   BITS         bBand20:1; /*  ¹¦ÄÜ£ºReserved     ȡֵ·¶Î§:0~1  ³ö³§Öµ:0*/ 

-   BITS         bBand21:1; /*  ¹¦ÄÜ£ºReserved     ȡֵ·¶Î§:0~1  ³ö³§Öµ:0*/  

-   BITS         bBand22:1; /*  ¹¦ÄÜ£ºReserved     ȡֵ·¶Î§:0~1  ³ö³§Öµ:0*/  

-   BITS         bBand23:1; /*  ¹¦ÄÜ£ºReserved     ȡֵ·¶Î§:0~1  ³ö³§Öµ:0*/  

-   BITS         bBand24:1; /*  ¹¦ÄÜ£ºReserved     ȡֵ·¶Î§:0~1  ³ö³§Öµ:0*/  

-   BITS         bBand25:1; /*  ¹¦ÄÜ£ºReserved     ȡֵ·¶Î§:0~1  ³ö³§Öµ:0*/  

-   BITS         bBand26:1; /*  ¹¦ÄÜ£ºReserved     ȡֵ·¶Î§:0~1  ³ö³§Öµ:0*/  

-   BITS         bBand27:1; /*  ¹¦ÄÜ£ºReserved     ȡֵ·¶Î§:0~1  ³ö³§Öµ:0*/  

-   BITS         bBand28:1; /*  ¹¦ÄÜ£ºÆµ¶Î28Ö§³ÖÓë·ñ   ȡֵ·¶Î§:0~1  ³ö³§Öµ:0 */

-   BITS         bBand29:1; /*  ¹¦ÄÜ£ºReserved     ȡֵ·¶Î§:0~1  ³ö³§Öµ:0*/  

-   BITS         bBand30:1; /*  ¹¦ÄÜ£ºReserved     ȡֵ·¶Î§:0~1  ³ö³§Öµ:0*/  

-   BITS         bBand31:1; /*  ¹¦ÄÜ£ºReserved     ȡֵ·¶Î§:0~1  ³ö³§Öµ:0*/  

-   BITS         bBand32:1; /*  ¹¦ÄÜ£ºReserved     ȡֵ·¶Î§:0~1  ³ö³§Öµ:0*/    

-   BITS         bBand33:1; /*  ¹¦ÄÜ£ºÆµ¶Î33Ö§³ÖÓë·ñ    ȡֵ·¶Î§:0~1  ³ö³§Öµ:0*/

-   BITS         bBand34:1; /*  ¹¦ÄÜ£ºÆµ¶Î34Ö§³ÖÓë·ñ    ȡֵ·¶Î§:0~1  ³ö³§Öµ:0*/

-   BITS         bBand35:1; /*  ¹¦ÄÜ£ºÆµ¶Î35Ö§³ÖÓë·ñ    ȡֵ·¶Î§:0~1  ³ö³§Öµ:0*/

-   BITS         bBand36:1; /*  ¹¦ÄÜ£ºÆµ¶Î36Ö§³ÖÓë·ñ   ȡֵ·¶Î§:0~1  ³ö³§Öµ:0 */

-   BITS         bBand37:1; /*  ¹¦ÄÜ£ºÆµ¶Î37Ö§³ÖÓë·ñ    ȡֵ·¶Î§:0~1  ³ö³§Öµ:0*/

-   BITS         bBand38:1; /*  ¹¦ÄÜ£ºÆµ¶Î38Ö§³ÖÓë·ñ    ȡֵ·¶Î§:0~1  ³ö³§Öµ:1*/

-   BITS         bBand39:1; /*  ¹¦ÄÜ£ºÆµ¶Î39Ö§³ÖÓë·ñ    ȡֵ·¶Î§:0~1  ³ö³§Öµ:1*/

-   BITS         bBand40:1; /*  ¹¦ÄÜ£ºÆµ¶Î40Ö§³ÖÓë·ñ   ȡֵ·¶Î§:0~1  ³ö³§Öµ:1 */    

-   BITS         bBand41:1; /*  ¹¦ÄÜ£ºReserved     ȡֵ·¶Î§:0~1  ³ö³§Öµ:0*/  

-   BITS         bBand42:1; /*  ¹¦ÄÜ£ºReserved     ȡֵ·¶Î§:0~1  ³ö³§Öµ:0*/  

-   BITS         bBand43:1; /*  ¹¦ÄÜ£ºReserved     ȡֵ·¶Î§:0~1  ³ö³§Öµ:0*/  

-   BITS         bBand44:1; /*  ¹¦ÄÜ£ºÆµ¶Î44Ö§³ÖÓë·ñ   ȡֵ·¶Î§:0~1  ³ö³§Öµ:0 */   

-   BITS         bBand45:1; /*  ¹¦ÄÜ£ºReserved     ȡֵ·¶Î§:0~1  ³ö³§Öµ:0*/  

-   BITS         bBand46:1; /*  ¹¦ÄÜ£ºReserved     ȡֵ·¶Î§:0~1  ³ö³§Öµ:0*/  

-   BITS         bBand47:1; /*  ¹¦ÄÜ£ºReserved     ȡֵ·¶Î§:0~1  ³ö³§Öµ:0*/  

-   BITS         bBand48:1; /*  ¹¦ÄÜ£ºReserved     ȡֵ·¶Î§:0~1  ³ö³§Öµ:0*/  

-   BITS         bBand49:1; /*  ¹¦ÄÜ£ºReserved     ȡֵ·¶Î§:0~1  ³ö³§Öµ:0*/  

-   BITS         bBand50:1; /*  ¹¦ÄÜ£ºReserved     ȡֵ·¶Î§:0~1  ³ö³§Öµ:0*/  

-   BITS         bBand51:1; /*  ¹¦ÄÜ£ºReserved     ȡֵ·¶Î§:0~1  ³ö³§Öµ:0*/  

-   BITS         bBand52:1; /*  ¹¦ÄÜ£ºReserved     ȡֵ·¶Î§:0~1  ³ö³§Öµ:0*/ 

-   BITS         bBand53:1; /*  ¹¦ÄÜ£ºReserved     ȡֵ·¶Î§:0~1  ³ö³§Öµ:0*/  

-   BITS         bBand54:1; /*  ¹¦ÄÜ£ºReserved     ȡֵ·¶Î§:0~1  ³ö³§Öµ:0*/  

-   BITS         bBand55:1; /*  ¹¦ÄÜ£ºReserved     ȡֵ·¶Î§:0~1  ³ö³§Öµ:0*/  

-   BITS         bBand56:1; /*  ¹¦ÄÜ£ºReserved     ȡֵ·¶Î§:0~1  ³ö³§Öµ:0*/  

-   BITS         bBand57:1; /*  ¹¦ÄÜ£ºReserved     ȡֵ·¶Î§:0~1  ³ö³§Öµ:0*/  

-   BITS         bBand58:1; /*  ¹¦ÄÜ£ºReserved    ȡֵ·¶Î§:0~1  ³ö³§Öµ:0 */  

-   BITS         bBand59:1; /*  ¹¦ÄÜ£ºReserved     ȡֵ·¶Î§:0~1  ³ö³§Öµ:0*/  

-   BITS         bBand60:1; /*  ¹¦ÄÜ£ºReserved     ȡֵ·¶Î§:0~1  ³ö³§Öµ:0*/  

-   BITS         bBand61:1; /*  ¹¦ÄÜ£ºReserved     ȡֵ·¶Î§:0~1  ³ö³§Öµ:0*/  

-   BITS         bBand62:1; /*  ¹¦ÄÜ£ºReserved    ȡֵ·¶Î§:0~1  ³ö³§Öµ:0 */  

-   BITS         bBand63:1; /*  ¹¦ÄÜ£ºReserved     ȡֵ·¶Î§:0~1  ³ö³§Öµ:0*/  

-   BITS         bBand64:1; /*  ¹¦ÄÜ£ºReserved     ȡֵ·¶Î§:0~1  ³ö³§Öµ:0*/

-   BITS         bBand65:1; /*  ¹¦ÄÜ£ºReserved     ȡֵ·¶Î§:0~1  ³ö³§Öµ:0*/ 

-   BITS         bBand66:1; /*  ¹¦ÄÜ£ºReserved     ȡֵ·¶Î§:0~1  ³ö³§Öµ:0*/ 

-   BITS         :6;        /*   ¹¦ÄÜ£º    Ìî³äλ   ȡֵ·¶Î§£º0      ³ö³§Öµ£º0*/

-   BYTE         abBandPadding[3];

-}T_zAti_Nv_LteBand,T_zAti_Nv_LteBand_Backup;

-

-typedef struct{

-    BITS    bTddA:1;    /******************************************************************************** 

-                         ¹¦ÄÜ£º    ÊÇ·ñÖ§³ÖTDD A²¨¶Î,1±íʾ֧³Ö

-                         ȡֵ·¶Î§£º0-1

-                         ³ö³§Öµ£º1 (Èô²»¿ªÐбêºê£¬AÖ§³ÖµÄÊÇ1800-1900,Èô¿ªÁËÐбêµÄºê£¬AÖ§³ÖµÄΪ2010-2025)

-                         *********************************************************************************/

-    BITS    bTddB:1;    /******************************************************************************** 

-                         ¹¦ÄÜ£º    ÊÇ·ñÖ§³ÖTDD B²¨¶Î£¬1±íʾ֧³Ö

-                         ȡֵ·¶Î§£º0-1

-                         ³ö³§Öµ£º0

-                         *********************************************************************************/

-    BITS    bTddC:1;    /******************************************************************************** 

-                         ¹¦ÄÜ£º    ÊÇ·ñÖ§³ÖTDD C²¨¶Î,1±íʾ֧³Ö

-                         ȡֵ·¶Î§£º0-1

-                         ³ö³§Öµ£º0

-                         *********************************************************************************/

-    BITS    bTddD:1;    /******************************************************************************** 

-                         ¹¦ÄÜ£º    ÊÇ·ñÖ§³ÖTDD D²¨¶Î,1±íʾ֧³Ö

-                         ȡֵ·¶Î§£º0-1

-                         ³ö³§Öµ£º0

-                         *********************************************************************************/

-    BITS    bTddE:1;    /******************************************************************************** 

-                         ¹¦ÄÜ£º    ÊÇ·ñÖ§³ÖTDD E²¨¶Î,1±íʾ֧³Ö

-                         ȡֵ·¶Î§£º0-1

-                         ³ö³§Öµ£º0

-                         *********************************************************************************/

-    BITS    bTddF:1;    /******************************************************************************** 

-                         ¹¦ÄÜ£º    ÊÇ·ñÖ§³ÖTDD F²¨¶Î,1±íʾ֧³Ö

-                         ȡֵ·¶Î§£º0-1

-                         ³ö³§Öµ£º1 (FÖ§³ÖµÄΪ1880-1920)

-                         *********************************************************************************/     

-   BITS     bTddG:1;   /*************************************************************************

-                                         ¹¦    ÄÜ:ÊÇ·ñÖ§³ÖTddG

-                                         ȡֵ·¶Î§£º0-1

-                                         ³ö³§Öµ£º0

-                                         **************************************************************************/

-       

-   BITS     bTddH:1;  /*************************************************************************

-                                         ¹¦    ÄÜ:ÊÇ·ñÖ§³ÖTddH

-                                         ȡֵ·¶Î§£º0-1

-                                         ³ö³§Öµ£º0

-                                         **************************************************************************/

-       

-   BITS     bTddI:1;  /*************************************************************************

-                                         ¹¦    ÄÜ:ÊÇ·ñÖ§³ÖTddI

-                                         ȡֵ·¶Î§£º0-1

-                                         ³ö³§Öµ£º0

-                                         **************************************************************************/

-       

-   BITS     bTddJ:1;  /*************************************************************************

-                                         ¹¦    ÄÜ:ÊÇ·ñÖ§³ÖTddJ

-                                         ȡֵ·¶Î§£º0-1

-                                         ³ö³§Öµ£º0

-                                         **************************************************************************/

-       

-   BITS     bTddK:1;  /*************************************************************************

-                                         ¹¦    ÄÜ:ÊÇ·ñÖ§³ÖTddK

-                                         ȡֵ·¶Î§£º0-1

-                                         ³ö³§Öµ£º0

-                                         **************************************************************************/

-       

-   BITS     bTddL:1;  /*************************************************************************

-                                         ¹¦    ÄÜ:ÊÇ·ñÖ§³ÖTddL

-                                         ȡֵ·¶Î§£º0-1

-                                         ³ö³§Öµ£º0

-                                         **************************************************************************/

-       

-   BITS     bTddM:1;  /*************************************************************************

-                                         ¹¦    ÄÜ:ÊÇ·ñÖ§³ÖTddM

-                                         ȡֵ·¶Î§£º0-1

-                                         ³ö³§Öµ£º0

-                                         **************************************************************************/

-

-   BITS     bTddN:1;  /*************************************************************************

-                                         ¹¦    ÄÜ:ÊÇ·ñÖ§³ÖTddN

-                                         ȡֵ·¶Î§£º0-1

-                                         ³ö³§Öµ£º0

-                                         **************************************************************************/

-       

-   BITS     bTddO:1;  /*************************************************************************

-                                         ¹¦    ÄÜ:ÊÇ·ñÖ§³ÖTddO

-                                         ȡֵ·¶Î§£º0-1

-                                         ³ö³§Öµ£º0

-                                         **************************************************************************/

-       

-   BITS     bTddP:1;  /*************************************************************************

-                                         ¹¦    ÄÜ:ÊÇ·ñÖ§³ÖTddP

-                                         ȡֵ·¶Î§£º0-1

-                                         ³ö³§Öµ£º0

-                                         **************************************************************************/

-    BYTE     abPadding[2];

-}T_zAti_Nv_TddBand,T_zAti_Nv_TddBand_Backup;

-

-typedef struct{

-    BITS    bSuppFddBand1:1; /********************************************************************************* 

-                        ¹¦ÄÜ£º    ÊÇ·ñÊÇÖ§³ÖµÄFDD ²¨¶Î

-                        ȡֵ·¶Î§£º0£¬1£¨0±íʾ²»Ö§³Ö¸Ã²¨¶Î£¬1±íʾ֧³Ö£©

-                                                                ³ö³§Öµ£º1

-                        *********************************************************************************/

-    BITS    bSuppFddBand2:1; /********************************************************************************* 

-                        ¹¦ÄÜ£º    ÊÇ·ñÊÇÖ§³ÖµÄFDD ²¨¶Î

-                        ȡֵ·¶Î§£º0£¬1£¨0±íʾ²»Ö§³Ö¸Ã²¨¶Î£¬1±íʾ֧³Ö£©

-                                                                ³ö³§Öµ£º1

-                        *********************************************************************************/

-    BITS    bSuppFddBand3:1; /********************************************************************************* 

-                        ¹¦ÄÜ£º    ÊÇ·ñÊÇÖ§³ÖµÄFDD ²¨¶Î

-                        ȡֵ·¶Î§£º0£¬1£¨0±íʾ²»Ö§³Ö¸Ã²¨¶Î£¬1±íʾ֧³Ö£©

-                                                                ³ö³§Öµ£º0

-                        *********************************************************************************/

-    BITS    bSuppFddBand4:1; /********************************************************************************* 

-                        ¹¦ÄÜ£º    ÊÇ·ñÊÇÖ§³ÖµÄFDD ²¨¶Î

-                        ȡֵ·¶Î§£º0£¬1£¨0±íʾ²»Ö§³Ö¸Ã²¨¶Î£¬1±íʾ֧³Ö£©

-                                                                ³ö³§Öµ£º0

-                        *********************************************************************************/

-    BITS    bSuppFddBand5:1; /********************************************************************************* 

-                        ¹¦ÄÜ£º    ÊÇ·ñÊÇÖ§³ÖµÄFDD ²¨¶Î

-                        ȡֵ·¶Î§£º0£¬1£¨0±íʾ²»Ö§³Ö¸Ã²¨¶Î£¬1±íʾ֧³Ö£©

-                                                                ³ö³§Öµ£º0

-                        *********************************************************************************/

-    BITS    bSuppFddBand6:1; /********************************************************************************* 

-                        ¹¦ÄÜ£º    ÊÇ·ñÊÇÖ§³ÖµÄFDD ²¨¶Î

-                        ȡֵ·¶Î§£º0£¬1£¨0±íʾ²»Ö§³Ö¸Ã²¨¶Î£¬1±íʾ֧³Ö£©

-                                                                ³ö³§Öµ£º1?

-                        *********************************************************************************/

-    BITS    bSuppFddBand7:1; /********************************************************************************* 

-                        ¹¦ÄÜ£º    ÊÇ·ñÊÇÖ§³ÖµÄFDD ²¨¶Î

-                        ȡֵ·¶Î§£º0£¬1£¨0±íʾ²»Ö§³Ö¸Ã²¨¶Î£¬1±íʾ֧³Ö£©

-                                                                ³ö³§Öµ£º0

-                        *********************************************************************************/

-    BITS    bSuppFddBand8:1; /********************************************************************************* 

-                        ¹¦ÄÜ£º    ÊÇ·ñÊÇÖ§³ÖµÄFDD ²¨¶Î

-                        ȡֵ·¶Î§£º0£¬1£¨0±íʾ²»Ö§³Ö¸Ã²¨¶Î£¬1±íʾ֧³Ö£©

-                                                                ³ö³§Öµ£º1

-                        *********************************************************************************/

-    BITS    bSuppFddBand9:1; /********************************************************************************* 

-                        ¹¦ÄÜ£º    ÊÇ·ñÊÇÖ§³ÖµÄFDD ²¨¶Î

-                        ȡֵ·¶Î§£º0£¬1£¨0±íʾ²»Ö§³Ö¸Ã²¨¶Î£¬1±íʾ֧³Ö£©

-                                                                ³ö³§Öµ£º1

-                        *********************************************************************************/

-    BITS    bSuppFddBand10:1; /********************************************************************************* 

-                        ¹¦ÄÜ£º    ÊÇ·ñÊÇÖ§³ÖµÄFDD ²¨¶Î

-                        ȡֵ·¶Î§£º0£¬1£¨0±íʾ²»Ö§³Ö¸Ã²¨¶Î£¬1±íʾ֧³Ö£©

-                                                                ³ö³§Öµ£º0

-                        *********************************************************************************/

-    BITS    bSuppFddBand11:1; /********************************************************************************* 

-                        ¹¦ÄÜ£º    ÊÇ·ñÊÇÖ§³ÖµÄFDD ²¨¶Î

-                        ȡֵ·¶Î§£º0£¬1£¨0±íʾ²»Ö§³Ö¸Ã²¨¶Î£¬1±íʾ֧³Ö£©

-                                                                ³ö³§Öµ£º1

-                        *********************************************************************************/

-    BITS    bSuppFddBand12:1; /********************************************************************************* 

-                        ¹¦ÄÜ£º    ÊÇ·ñÊÇÖ§³ÖµÄFDD ²¨¶Î

-                        ȡֵ·¶Î§£º0£¬1£¨0±íʾ²»Ö§³Ö¸Ã²¨¶Î£¬1±íʾ֧³Ö£©

-                                                                ³ö³§Öµ£º0

-                        *********************************************************************************/

-    BITS    bSuppFddBand13:1; /********************************************************************************* 

-                        ¹¦ÄÜ£º    ÊÇ·ñÊÇÖ§³ÖµÄFDD ²¨¶Î

-                        ȡֵ·¶Î§£º0£¬1£¨0±íʾ²»Ö§³Ö¸Ã²¨¶Î£¬1±íʾ֧³Ö£©

-                                                                ³ö³§Öµ£º0

-                        *********************************************************************************/

-    BITS    bSuppFddBand14:1; /********************************************************************************* 

-                        ¹¦ÄÜ£º    ÊÇ·ñÊÇÖ§³ÖµÄFDD ²¨¶Î

-                        ȡֵ·¶Î§£º0£¬1£¨0±íʾ²»Ö§³Ö¸Ã²¨¶Î£¬1±íʾ֧³Ö£©

-                                                                ³ö³§Öµ£º0

-                        *********************************************************************************/

-    BITS    bSuppFddBand15:1; /********************************************************************************* 

-                        ¹¦ÄÜ£º    ÊÇ·ñÊÇÖ§³ÖµÄFDD ²¨¶Î

-                        ȡֵ·¶Î§£º0£¬1£¨0±íʾ²»Ö§³Ö¸Ã²¨¶Î£¬1±íʾ֧³Ö£©

-                                                                ³ö³§Öµ£º0

-                        *********************************************************************************/

-    BITS    bSuppFddBand16:1; /********************************************************************************* 

-                        ¹¦ÄÜ£º    ÊÇ·ñÊÇÖ§³ÖµÄFDD ²¨¶Î

-                        ȡֵ·¶Î§£º0£¬1£¨0±íʾ²»Ö§³Ö¸Ã²¨¶Î£¬1±íʾ֧³Ö£©

-                                                                ³ö³§Öµ£º0

-                        *********************************************************************************/

-    BITS    bSuppFddBand17:1; /********************************************************************************* 

-                        ¹¦ÄÜ£º    ÊÇ·ñÊÇÖ§³ÖµÄFDD ²¨¶Î

-                        ȡֵ·¶Î§£º0£¬1£¨0±íʾ²»Ö§³Ö¸Ã²¨¶Î£¬1±íʾ֧³Ö£©

-                                                                ³ö³§Öµ£º0

-                        *********************************************************************************/

-    BITS    bSuppFddBand18:1; /********************************************************************************* 

-                        ¹¦ÄÜ£º    ÊÇ·ñÊÇÖ§³ÖµÄFDD ²¨¶Î

-                        ȡֵ·¶Î§£º0£¬1£¨0±íʾ²»Ö§³Ö¸Ã²¨¶Î£¬1±íʾ֧³Ö£©

-                                                                ³ö³§Öµ£º0

-                        *********************************************************************************/

-    BITS    bSuppFddBand19:1; /********************************************************************************* 

-                        ¹¦ÄÜ£º    ÊÇ·ñÊÇÖ§³ÖµÄFDD ²¨¶Î

-                        ȡֵ·¶Î§£º0£¬1£¨0±íʾ²»Ö§³Ö¸Ã²¨¶Î£¬1±íʾ֧³Ö£©

-                                                                ³ö³§Öµ£º1

-                        *********************************************************************************/

-    BITS    bSuppFddBand20:1; /********************************************************************************* 

-                        ¹¦ÄÜ£º    ÊÇ·ñÊÇÖ§³ÖµÄFDD ²¨¶Î

-                        ȡֵ·¶Î§£º0£¬1£¨0±íʾ²»Ö§³Ö¸Ã²¨¶Î£¬1±íʾ֧³Ö£©

-                                                                ³ö³§Öµ£º0

-                        *********************************************************************************/

-    BITS    bSuppFddBand21:1; /********************************************************************************* 

-                        ¹¦ÄÜ£º    ÊÇ·ñÊÇÖ§³ÖµÄFDD ²¨¶Î

-                        ȡֵ·¶Î§£º0£¬1£¨0±íʾ²»Ö§³Ö¸Ã²¨¶Î£¬1±íʾ֧³Ö£©

-                                                                ³ö³§Öµ£º0

-                        *********************************************************************************/

-    BITS    bSuppFddBand22:1; /********************************************************************************* 

-                        ¹¦ÄÜ£º    ÊÇ·ñÊÇÖ§³ÖµÄFDD ²¨¶Î

-                        ȡֵ·¶Î§£º0£¬1£¨0±íʾ²»Ö§³Ö¸Ã²¨¶Î£¬1±íʾ֧³Ö£©

-                                                                ³ö³§Öµ£º0

-                        *********************************************************************************/

-    BITS    :2;

-    BYTE   bPadding;

-}T_zAti_Nv_FddBand,T_zAti_Nv_FddBand_Backup;

-typedef struct{

-    BITS    bGsm450:1; /******************************************************************************** 

-                        ¹¦ÄÜ£º    ÊÇ·ñÖ§³ÖGsm450

-                        ȡֵ·¶Î§£º0£¬1£¨0±íʾ²»Ö§³Ö£¬1±íʾ֧³Ö£©

-                        ³ö³§Öµ£º0

-                        *********************************************************************************/

-    BITS    bGsm480:1; /******************************************************************************** 

-                        ¹¦ÄÜ£º    ÊÇ·ñÖ§³ÖGsm480

-                        ȡֵ·¶Î§£º0£¬1£¨0±íʾ²»Ö§³Ö£¬1±íʾ֧³Ö£©

-                        ³ö³§Öµ£º0

-                        *********************************************************************************/

-    BITS    bGsm750:1; /******************************************************************************** 

-                        ¹¦ÄÜ£º    ÊÇ·ñÖ§³ÖGsm750

-                        ȡֵ·¶Î§£º0£¬1£¨0±íʾ²»Ö§³Ö£¬1±íʾ֧³Ö£©

-                        ³ö³§Öµ£º0

-                        *********************************************************************************/

-    BITS    bGsm850:1; /******************************************************************************** 

-                        ¹¦ÄÜ£º    ÊÇ·ñÖ§³ÖGsm850

-                        ȡֵ·¶Î§£º0£¬1£¨0±íʾ²»Ö§³Ö£¬1±íʾ֧³Ö£©

-                        ³ö³§Öµ£º0

-                        *********************************************************************************/

-    BITS    bGsm900:2;  /******************************************************************************** 

-                         ¹¦ÄÜ£º    ÊÇ·ñÖ§³ÖGsm900

-                         ȡֵ·¶Î§£º0£¬1£¬2£¬3£¨0±íʾ²»Ö§³Ö£¬1±íʾ֧³ÖP900£¬2±íʾ֧³ÖE900£¬3±íʾ֧³ÖR900£©

-                         ³ö³§Öµ£º2

-                         *********************************************************************************/

-    BITS    bGsm1800:1; /******************************************************************************** 

-                         ¹¦ÄÜ£º    ÊÇ·ñÖ§³ÖGsm1800

-                         ȡֵ·¶Î§£º0£¬1£¨0±íʾ²»Ö§³Ö£¬1±íʾ֧³Ö£©

-                         ³ö³§Öµ£º1

-                         *********************************************************************************/

-    BITS    bGsm1900:1; /******************************************************************************** 

-                         ¹¦ÄÜ£º    ÊÇ·ñÖ§³ÖTDD A²¨¶Î

-                         ȡֵ·¶Î§£º0£¬1£¨0±íʾ²»Ö§³Ö£¬1±íʾ֧³Ö£©

-                         ³ö³§Öµ£º0

-                         *********************************************************************************/

-    BYTE   abPadding[3];

-}T_zAti_Nv_GsmBand,T_zAti_Nv_GsmBand_Backup;

-

-typedef struct{

-    BYTE bSuptPseudoFr;/*****************************************

-                        ¹¦ÄÜ£º    ÊÇ·ñÖ§³Ö×¼FR

-                       ȡֵ·¶Î§£º0£¬1£¨0±íʾ²»Ö§³Ö£¬1±íʾ֧³Ö£©

-                       *****************************************/

-    BYTE abPadding[3];

-}T_zAti_NV_EudoFR;

-

-typedef struct{

-    BYTE      bLteCustomPemax;      /*ȡֵ·¶Î§1-63,0ΪÎÞЧֵ£¬Ê¹ÓÃʱÐèÒª¼õ30£¬Êµ¼Êȡֵ·¶Î§ÊÇ-30--33  dbm*/

-    BYTE      bTddMaxAlwUlTxPwr;     /*ȡֵ·¶Î§1--83,0ΪÎÞЧֵ£¬Ê¹ÓÃʱÐèÒª¼õ50£¬Êµ¼Êȡֵ·¶Î§ÊÇ-50--33 dbm*/

-    BYTE      bFddMaxAlwUlTxPwr;     /*ȡֵ·¶Î§1--83,0ΪÎÞЧֵ£¬Ê¹ÓÃʱÐèÒª¼õ50£¬Êµ¼Êȡֵ·¶Î§ÊÇ-50--33 dbm*/

-    BYTE      bGsmCustomPower;    /*ȡֵ·¶Î§1-31,0ΪÎÞЧֵ,¸ÃÖµÓëpower control levelË÷ÒýÖµÒ»Ö£¬ÊÇË÷ÒýÖµ ²»ÊÇÕæÊµ¹¦ÂÊdBm*/

-}T_zAti_NV_MaxTxPower;

-

-typedef struct{

-    BYTE     bUeCategoryOfCa;

-    BYTE     bUeCategory;

-    BYTE     abadding[2];

-}T_zAti_NV_UeInfo;

-

-typedef struct{

-    BYTE    bGprsSupport;

-    BYTE    bEgprsSupport;

-    BYTE    bGprsMultiSlotCapa;

-    BYTE    bEgprsMultiSlotCapa;

-}T_zAti_NV_GprsClass;

-

-typedef struct{

-    BYTE    bFdMode;

-    BYTE    bFdTimerLength;

-    BYTE    abadding[2];

-}T_zAti_NV_FdSet;

-

-typedef struct{

-    BYTE    bEgprsSupport;

-    BYTE    b8PskModCapa;

-    BYTE    bModBMultiClassSupp;

-    BYTE    bEgprsMultiSlotCapa;

-    BYTE    b8PskMultislotPwrCapa;

-    BYTE    bEgprsExtDynAlloc;

-    BYTE    b8Psk;

-    BYTE    b8PskPwrCapa1;

-    BYTE    b8PskPwrCapa2;

-    BYTE    bMuscCapReductionforDlDualCarrierSupport;

-    BYTE    bMultiSlotCapReductionforDlDualCarrier;

-    BYTE    bPadding;

-}T_zAti_NV_EgprsSet;

-

-typedef struct{

-    BYTE bApMemCapa;/*AP¶ÌÐÅ´æ´¢¿Õ¼äÊÇ·ñÂú£¬0:²»Âú£¬1:Âú*/

-    BYTE abPadding[3];

-}T_zAti_NV_ApMemCapa;

-

-typedef struct{

-    BYTE     bT1TimerLen;/*EPDCP¶¨Ê±Æ÷T1µÄʱ³¤£¬µ¥Î»£ºÃë,0-255, 0  ±íʾ¶¨Ê±Æ÷ʱ³¤ÎÞЧ£¬²»Æô¶¯´Ë¹æ±Ü¹¦ÄÜ*/

-    BYTE     abadding[3];

-}T_zAti_NV_EpdcpTimerLen;

-

-typedef struct{

-    BYTE bMode;    /*ÊÇ·ñÆôÓúڰ×Ãûµ¥:0Ϊ²»ÆôÓúڰ×Ãûµ¥£¬1ΪÆôÓúڰ×Ãûµ¥*/

-    BYTE abPadding[3];

-}T_zAti_NV_BlackWhiteList;

-

-typedef struct{

-    BYTE  bCmd;        /* ¿ª¹ØÖµ, 0-¹Ø±Õgsm½ÓÈëʧ°ÜbarÐ¡Çø¹¦ÄÜ£¬1-´ò¿ªgsm½ÓÈëʧ°ÜbarÐ¡Çø¹¦ÄÜ*/

-    BYTE  bPadding;

-    WORD wTimer;     /* barÐ¡ÇøµÄʱ³¤£¬µ¥Î»:Ãë*/ 

-}T_zAti_NV_GrrCellBar;

-

-typedef struct {

-    BYTE           bGsmCellNumber;

-    BYTE           bTdCellNumber;

-    BYTE           bWCellNumber;

-    BYTE           bLteCellNumber;

-    T_z_GsmCell    atGsmCell[Z_MAX_NGCellNum];/*GSMÁÚÇøÐÅÏ¢£¬°´RSSI´ÓÇ¿µ½ÈõÅÅÐò£¬Êý×é0Ϊ×îÇ¿Ð¡Çø*/

-    T_z_TdCell     atTdCell[Z_MAX_NUCellNum];/*TDÁÚÇøÁÐ±í£¬°´RSCP´ÓÇ¿µ½ÈõÅÅÐò£¬Êý×é0Ϊ×îÇ¿Ð¡Çø*/

-    T_z_WCell      atWCell[Z_MAX_NUCellNum];/*WÁÚÇøÁÐ±í£¬°´RSCP´ÓÇ¿µ½ÈõÅÅÐò£¬Êý×é0Ϊ×îÇ¿Ð¡Çø*/

-    T_z_LteCell    atLteCell[Z_MAX_NLCellNum];/*LTEÁÚÇøÁÐ±í£¬°´RSRP´ÓÇ¿µ½ÈõÅÅÐò£¬Êý×é0Ϊ×îÇ¿Ð¡Çø*/

-}T_zAti_NV_NCellInfo;

-

-typedef struct{

-    BYTE       bEquipType;       

-    BYTE       bSeqNum;          

-    BYTE       abPadding1[2];

-    BYTE       abEquipName[Z_DEV_MSINFO_MAX_EQUIPNAME_LEN];  

-    BYTE       abPadding2[2];

-

-    BYTE       abBordNum[Z_DEV_MSINFO_MAX_BORDNAME_LEN];     

-    BYTE       abPadding3[2];

-

-    BYTE       abSoftVersion[Z_DEV_MSINFO_MAX_SOFTVERSION_LEN]; 

-    BYTE       abPadding4[2];

-}T_zAti_NV_MsInfo;

-

-typedef struct{

-    BYTE     bBand;          /*BANDºÅ.ȡֵ1--66 £¬·Ö±ð¶ÔÓ¦BAND1,BAND2...BAND66*/

-    BYTE     abPading[3];

-    DWORD     dwMinDlEarfcn;   /* ¶ÔÓ¦BANDµÄ×îСÏÂÐÐÆµµã */

-    DWORD     dwMaxDlEarfcn;   /* ¶ÔÓ¦BANDµÄ×î´óÏÂÐÐÆµµã */

-}T_zAti_Nv_OperatorLteBandRange;

-

-typedef struct{

-    BYTE              bFlag;    /*ÔËÓªÉÌÆµ¶ÎÐÅÏ¢ÊÇ·ñÓÐЧ£¬È¡Öµ£ºÓÐЧZ_VALID£¬ÎÞЧZ_INVALID*/

-    BYTE              bPlmnNum; 

-    BYTE              bBandNum;

-    //BYTE              bFreqNum;

-    BYTE              atPlmnListPadding[3];/*¶ÔÆë*/

-    T_z_PlmnId        atPlmnList[Z_MAX_OPERATOR_PLMN_NUM];  /* ÔËÓªÉÌPLMNÁбí */

-    T_zAti_Nv_OperatorLteBandRange       tOperBand[Z_MAX_OPERATOR_BAND_NUM]; /* ÔËÓªÉ̶¨ÖÆÆµ¶Î·¶Î§ */

-    //DWORD           adwFreqList[Z_MAX_OPERATOR_FREQ_NUM];/* ÔËÓªÉ̶¨ÖƳ£ÓÃÆµµãÁбí */

-}T_zAti_Nv_OperatorListInfo;

-typedef struct{

-    T_zAti_Nv_OperatorListInfo       tOperatorList[Z_MAX_OPERATOR_NUM];      /* ÔËÓªÉ̶¨ÖÆÆµ¶ÎÐÅÏ¢Áбí */

-}T_zAti_Nv_OperatorLteBandInfo;

-

-

-typedef struct {

-    BYTE  band;

-    BYTE  pumax[Z_AT_MAX_RPI_NR];

-}T_zAti_NV_BandRPICfg;

-

-typedef struct {

-   T_zAti_NV_BandRPICfg   tGBandRpiCfg[GSM_MAX_BAND_RPI_SUPPORT];

-}T_zAti_NV_GSM_RPICfg;

-

-typedef struct {

-   T_zAti_NV_BandRPICfg   tWBandRpiCfg[W_MAX_BAND_RPI_SUPPORT];

-}T_zAti_NV_W_RPICfg;

-

-typedef struct {

-   T_zAti_NV_BandRPICfg     tLteBandRpiCfg[LTE_MAX_BAND_RPI_SUPPORT];

-}T_zAti_NV_LTE_RPICfg;

-

-typedef struct {

-    BYTE    flag; //0--¹¦ÄÜȥʹÄÜ,1---¹¦ÄÜʹÄÜ

-    BYTE    padding[3];

-    T_zAti_NV_W_RPICfg     tWRpiCfg;

-    T_zAti_NV_LTE_RPICfg   tLteRpiCfg; 

-    T_zAti_NV_GSM_RPICfg   tGsmRpiCfg;

-}T_zAti_NV_RPICfgInfo;

-

-typedef struct {

-    BYTE     bOnOff;/*ÊÇ·ñÖ§³ÖNITZ×Ô¶¯¸üÐÂÊ±Çø0²»Ö§³Ö,1Ö§³Ö*/

-    BYTE     bRptMod;/*Ê±Çø±ä»¯Éϱ¨Ä£Ê½,ȡֵ·¶Î§0-1*/

-    BYTE     bZmmiSet;/*ÊÇ·ñ´ò¿ªZMMIÉϱ¨,0-¹Ø±Õ,1-´ò¿ª*/

-    BYTE     bPadding;

-}T_zAti_NV_NitzCfg;

-

-typedef struct{

-    BYTE bAMRSupCdec;

-    BYTE bAmrPath;

-    BYTE abPadding[2];

-}T_zAti_Nv_UmtsAmrInfo;

-

-typedef struct {

-    BYTE    bT3411Len;/*T3411ʱ³¤,µ¥Î»Ãë,³ö³§Öµ0*/

-    BYTE    bT3411TryedNum;/*T3411³¢ÊÔ´ÎÊý,³ö³§Öµ0*/

-    BYTE    bBarTmLen;/*BARÐ¡ÇøÊ±³¤,µ¥Î»·ÖÖÓ,³ö³§Öµ0*/

-    BYTE    bPadding;

-}T_zAti_NV_MobileCfg;

-

-typedef struct {

-    BYTE    bCdrxFg;

-    BYTE    bAnrFg;

-    BYTE    bSpsFg;

-    BYTE    bTtibundingFg;

-    BYTE    bEfdpchFg;

-    BYTE    bSlotFormat4Fg;

-    BYTE    abPadding[2];

-}T_zAti_NV_UeCapaCfg;

-

-typedef struct {

-    BYTE                            bAction;       /*0: δÉèÖÃËø¶¨Æµµã»òÐ¡Çø, 1: ÒÑÉèÖÃËø¶¨Æµµã»òÐ¡Çø, ½¨Òé³ö³§Öµ£º0*/ 

-    BYTE                            bPadding;   

-    WORD                            wCellPara;   /*Ëø¶¨µÄÐ¡Çø£¬½¨Òé³ö³§Öµ£º0xFFFF*/

-    DWORD                           dwArfcn;       /*Ëø¶¨µÄƵµã£¬½¨Òé³ö³§Öµ£º0xFFFFFFFF*/

-}T_zAti_NV_ZLcCfg;

-

-typedef struct

-{

-    T_z_PlmnId  tplmn;

-    BYTE        bPadding;

-    DWORD       dwCellGlobalId;

-} T_zAti_NV_CellGlobId;

-

-typedef struct {

-    BYTE                            bLteCellNum;

-    BYTE                            abPadding[3];

-

-    T_zAti_NV_CellGlobId          atLteBlackCell[Z_MAX_LTE_BLKCELL_NUM];

-}T_zAti_NV_LteBlkCell;

-

-typedef struct {

-    BYTE                            bCmgfMode;   /*0: pdu,1: txt,³ö³§Öµ0*/ 

-    BYTE                            abPadding[3];   

-}T_zAti_NV_CmgfMode;

-

-typedef struct {

-    BYTE                            bMCC1:4;

-    BYTE                            bMCC2:4;

-    BYTE                            bMCC3:4;

-    BYTE                            :4;

-    BYTE                            abPadding[2];   

-}T_zAti_NV_CustomMcc;

-

-typedef struct {

-    BYTE                            bNumLen;//×Ö½ÚÊý

-    BYTE                            abCallNum[Z_DEV_MAX_BEEPCALL_NUM];

-}T_zAti_NV_BeepNumInfo;

-

-typedef struct {

-    BYTE                            bCallNum;

-    BYTE                            abPadding[3];

-    T_zAti_NV_BeepNumInfo           atCallGroup[Z_DEV_MAX_BEEPCALL_GROUP];

-}T_zAti_NV_BeepCallNum;

-

-typedef struct {

-    BYTE                            bNumLen;

-    BYTE                            abMsisdnNum[Z_DEV_MAX_MSISDN_NUM];

-}T_zAti_NV_Msisdn;

-

-typedef struct

-{

-    BYTE              bEcallMode;/*0-not sup ecall 1-ecall only 2-ecall & normal call*/

-    BYTE              abPadding[3];

-}T_zAti_NV_EcallCapa;

-

-typedef struct {

-    BYTE                            bTestNumLen;/*³ö³§Öµ0*/

-    BYTE                            bReCfgNumLen;/*³ö³§Öµ0*/

-

-    BYTE                            abTestNum[Z_DEV_MAX_ECALL_NUM];

-    BYTE                            abReCfgNum[Z_DEV_MAX_ECALL_NUM];

-}T_zAti_NV_EcallNum;

-

-typedef struct {

-    WORD                          wT2Time;/*T2¶¨Ê±Æ÷ʱ³¤,µ¥Î»s,³ö³§Öµ3600*/

-    WORD                          wT7Time;/*T7¶¨Ê±Æ÷ʱ³¤,µ¥Î»s£¬³ö³§Öµ20*/

-    WORD                          wT9Time;/*T9¶¨Ê±Æ÷ʱ³¤,µ¥Î»s,³ö³§Öµ3600*/

-    BYTE                          abPadding[2];

-}T_zAti_NV_EcallTime;

-

-typedef struct{

-    BYTE    bSoftPowStat;/*0-disable, 1-sleep, 2-wakeup,³ö³§Öµ0*/

-    BYTE    abPadding[3];

-}T_zAti_NV_RrcStatus;

-

-#ifdef BTRUNK_SUPPORT

-typedef struct  

-{

-    BYTE    bIOTFlag;

-    BYTE    bIsTruncUser;      /*ÊÇ·ñÊǼ¯ÈºÓû§£¬0:²»ÊÇ£¬1:ÊÇ*/

-    BYTE    bIsSubWay;    /*ÊÇ·ñΪSubWayÌØÊâ¶¨ÖÆ*/

-    BYTE    bPadding;

-}T_zAti_NV_LtePttInfo;

-#endif

-

-/*=======================¹«¹²ºêÖµ¶¨Òå==========================*/

-#define Z_MAX_CSG_NUM                                     (BYTE)255

-#define Z_MAX_HNB_NAME_LEN                                (BYTE)48  /*HNB Name×î´ó³¤¶È*/

-/*TMSI*/

-typedef BYTE                        T_z_TMSI[Z_TmsiLen];

-/*P-TMSI*/

-typedef BYTE                        T_z_PTMSI[Z_PtmsiLen];

-/*IMEI*/

-typedef BYTE                        T_z_IMEI[Z_ImeiLen];

-/*IMEISV*/

-typedef BYTE                        T_z_IMEISV[Z_ImeiSvLen];

-

-/*==========================¹«¹²½á¹¹=========================*/

-/*CSG ID*/

-typedef DWORD                                  T_z_CsgId;

-

-typedef struct {

-    BYTE                                       abCSG_ind[Z_MAX_CSG_NUM];

-    BYTE                                       bLength;

-} T_z_UiccId_TextCSGT;

-

-/*4.4.6.3    EFCSGT (CSG Type)) 31102-940*/

-typedef struct {

-    BYTE                           abIconLink[Z_MAX_CSG_NUM];

-    BYTE                           bGraphicTag;/*Z_CSG_LINKURI or Z_CSG_LINKIMG  

-                                                '80' = the Graphic CSG Type Icon Link is an URI 

-                                                '81' = the Graphic CSG Type Icon Link is a pointer to the record number of the corresponding image in 

-                                                EFIMG, */

-                                                

-    BYTE                           bIconLinkLen;

-    BYTE                           bIconQual;

-    BYTE                           abPadding[2];

-} T_z_UiccId_GphcCSGT;

-

-/*bTextCsgFg»òbGphcCsgFgÖÃ1£¬±íʾ¸Ã¼Ç¼²»Îª¿Õ£¬

-    ÈôÐèҪɾ³ý¸Ã¼Ç¼ֵ£¬Ôò½«bTextCsgFgÒÔ¼°bGphcCsgFg¾ùÖÃ1*/

-typedef struct {

-    BYTE                              bCodeLen;    /*ÓÃÓÚ±àÂ룬ÇëÎð¸Ä¶¯*/

-    BYTE                              bTextCsgFg;  /*ȡֵΪ1 »ò 0*/

-    BYTE                              bGphcCsgFg;  /*ȡֵΪ1 »ò 0*/

-    BYTE                              bPadding;

-    

-    T_z_UiccId_TextCSGT             tTextCsg;    /*bTextCsgFgΪ1ʱÓÐЧ*/

-    T_z_UiccId_GphcCSGT             tGphcCsg;    /*bGphcCsgFgΪ1ʱÓÐЧ*/

-} T_z_UiccId_CSGT;

-

-/*4.4.6.4    EFHNBN (Home (e)NodeB Name) 31102-840*/

-/*bValLen£¬µ±¿¨ÉÏÂëÁ÷Tag²»Îª0x80ʱ£¬bValLenÖÃ0£¬±íʾÎÞÓÐЧÊý¾Ý

-    ɾ³ýʱ£¬¿É½«bValLenÖÃ0*/

-typedef struct {

-    BYTE                                       bCodeLen;   /*ÂëÁ÷ʵ¼Ê³¤¶È£¬ÇëÎð¸Ä¶¯*/

-    BYTE                                       bValLen;   /*ÓÐЧÊý¾Ý³¤¶È*/

-    BYTE                                       abPadding[2];

-    BYTE                                       abHNBN[Z_MAX_HNB_NAME_LEN];

-} T_z_UiccId_HNBN;

-

-/*CSG*/

-typedef struct{

-    T_z_UiccId_CSGT                         tCsgInd;

-    T_z_UiccId_HNBN                         tHnbName;

-    T_z_CsgId                               tCsgId;

-}T_z_CSG;

-

-

-typedef struct{

-    T_z_PlmnId                    tPlmn;

-    T_z_CSG                       tCsgInfo;

-}T_z_CsgIdList;

-

-/*CSG Info£¬ASÁоÙCSGÐÅÏ¢ÓÃ*/  

-typedef struct{

-    T_z_Act                                 tAct;

-    T_z_CsgIdList                           tCsg;

-}T_z_CsgInfo;

-

-/*IMSI*/

-typedef struct {

-    BYTE                            bNum;           /*BCDÂë¸öÊý*/

-    BYTE                            abPadding[3];

-

-    BYTE                            abId[Z_ImsiLen]; 

-}T_z_IMSI;

-

-typedef struct {

-    BYTE                              bImsiFg;

-    BYTE                              abPadding[3];

-

-    T_z_IMSI                        tImsi;

-

-}T_z_UiccId_ImsiInfo;

-

-typedef struct {

-    BYTE                            bImeiFg;

-    BYTE                            abPadding[3];

-

-    T_z_IMEI                      tImei;

-}T_z_UiccId_ImeiInfo;

-

-typedef struct {

-    BYTE                            bImeisvFg;

-    BYTE                            abPadding[3];

-

-    T_z_IMEISV                    tImeiSv;

-}T_z_UiccId_ImeiSvInfo;

-

-/* Z_UiccId_HPLMN¡¢ Z_UiccId_UPLMN¡¢Z_UiccId_OPLMN */

-typedef struct {

-    BYTE                            bNum;

-    BYTE                            abPadding[3];

-

-    T_z_PlmnAct                   atList[Z_MaxUiccPlmnNum];

-}T_z_UiccId_PlmnInfo;

-

-/*  Z_UiccId_UPLMN*/

-typedef struct {

-    BYTE                            bMaxNum;

-    BYTE                            bNum;

-    BYTE                            abPadding[2];

-

-    BYTE                            abPlmnValidFg[Z_MaxUiccPlmnNum];  /*±ê¼ÇuplmnÊÇ·ñÓÐЧ£¬1£ºÓÐЧ£¬0£ºÎÞЧ*/

-    T_z_PlmnAct                     atList[Z_MaxUiccPlmnNum];

-}T_z_UiccId_UPlmnInfo;

-

-/* PlmnSelector*/

-typedef struct {

-    BYTE                                        bMaxNum;                      /*×î´ó×Ö½ÚÊý >8*/   

-    BYTE                                        bNum;                              /*ÆäÖÐÓÐЧ×Ö½ÚÊý*/

-    BYTE                                        abPadding[2];

-

-    BYTE                                        abPlmnValidFg[Z_MaxUiccPlmnSelNum];  /*±ê¼ÇplmnselÊÇ·ñÓÐЧ£¬1£ºÓÐЧ£¬0£ºÎÞЧ*/

-    T_z_PlmnId                                atPlmn[Z_MaxUiccPlmnSelNum];

-}T_z_UiccId_PlmnSel;

-

-/* Z_UiccId_SMSP */

-typedef struct {

-    BYTE                            bMaxAlphaIdLen;          /*±íÃ÷µ±Ç°¿¨Ö§³ÖµÄAlphaId×î´ó³¤¶È*/

-    BYTE                            bAlphaIdLen;             /*AlphaIdÖÐÓÐЧ³¤¶È*/

-    BYTE                            bParamId;

-    BYTE                            bTPPid;

-    

-    BYTE                            bTPDcs;

-    BYTE                            bTPVp;

-    BYTE                            abPadding[2];

-

-    BYTE                            abAlphaId[Z_MaxSmspAlphaLen];

-

-    BYTE                            abTPDestAdd[12];

-

-    BYTE                            abTSScAdd[12];

-}T_z_UiccId_Smsp;

-

-/*4.2.16  EFFPLMN */

-typedef struct {

-    BYTE                                          bMaxNum;/*³ö³§Öµ85*/

-    BYTE                                          bNum;      /*³ö³§Öµ0*/

-    BYTE                                          abPadding[2];

-    T_zPS_PlmnId                           atFPlmn[ZPS_UICC_LEN_FPLMN];/*³ö³§ÖµÈ«0xff*/

-    BYTE                                          abPadding1;

-}T_zPS_UICC_FPlmnList,

-T_z_UICC_FPlmnList;

-/**************************************************************************

-*               ЭÒéÕ»ÄÚÄ£¿é¶ÔUICC¿¨Êý¾Ý·ÃÎʽӿڽṹ¶¨Òå                  *

-**************************************************************************/

-/* Z_UiccId_UEINFO */

-typedef struct {

-    T_z_TMSI                      tTmsi;

-    T_z_LAI                       tLai;

-    BYTE                            bLuSta;

-}T_z_UiccId_Loci;

-

-typedef struct {

-    T_z_PTMSI                     tPtmsi;

-    BYTE                            abPtmsiSig[3];

-    T_z_RAI                       tRai;

-    BYTE                            bRuSta;

-}T_z_UiccId_PsLoci;

-

-typedef struct {

-    BYTE                            bTmsiValidFg;

-    BYTE                            abPadding[3];

-

-    T_z_UiccId_Loci               tLoci;

-    BYTE                          abPadding2[2];

-}T_z_UiccId_LociInfo;

-

-typedef struct {

-    BYTE                            bPtmsiValidFg;

-    BYTE                            abPadding[3];

-

-    T_z_UiccId_PsLoci             tPsLoci;

-    BYTE                          abPadding2[3];

-}T_z_UiccId_PsLociInfo;

-

-typedef struct {

-    BYTE                            bCsBkDataFg;   /* csÓòÊý¾Ý±¸·ÝÓÐЧÐÔ±êʶ£¬È¡ÖµZ_VALID/Z_INVALID */

-    BYTE                            bPsBkDataFg;   /* psÓòÊý¾Ý±¸·ÝÓÐЧÐÔ±êʶ£¬È¡ÖµZ_VALID/Z_INVALID */

-    BYTE                            bEpsBkDataFg;  /* LTEÊý¾Ý±¸·ÝÓÐЧÐÔ±êʶ£¬È¡ÖµZ_VALID/Z_INVALID */

-    BYTE                            bPadding;

-}T_z_UiccId_BackupDataCtrlInfo;

-

-/* Z_UiccId_ECC */

-typedef struct {

-    BYTE                            bEccLen;                            /*ECCºÅÂëÓÐЧ³¤¶È£¬³¤¶ÈΪ×Ö½Ú¸öÊý*/

-    BYTE                            abEcCode[3];

-    

-    BYTE                            bMaxAlphaIdNum;                     /*Aplha×î´ó³¤¶È*/

-    BYTE                            bAlphaIdNum;                        /*AplhaÓÐЧ³¤¶È*/

-    BYTE                            abPadding[2];

-

-    BYTE                            aAlphaId[255];

-    

-    BYTE                            bEcCategory;

-}T_z_UiccId_3GEcc;

-

-typedef struct

-{

-    BYTE                            bEccLen;                           /*ECCºÅÂëÓÐЧ³¤¶È£¬³¤¶ÈΪ×Ö½Ú¸öÊý*/

-    BYTE                            abEcCode[3];

-}T_z_UiccId_EccNum;

-

-typedef struct {

-    BYTE                            bEccNum;

-    BYTE                            abPadding[3];

-

-    T_z_UiccId_EccNum             tEccCode[5];

-}T_z_UiccId_2GEcc;

-

-typedef struct 

-{

-    BYTE                            bEccFlag;              /*ÓÉÓÚ2GÓë3G½á¹¹Ïà²îÌ«´ó£¬eccÔÚ3GÖÐÒ»´ÎÖ»ÄܶÁȡһÌõ¼Ç¼

-                                                            *µ«ÔÚ2GÖÐÒ»´ÎÈ´¿ÉÒÔ½«ËùÓÐeccºÅÂë¶¼¶Á³ö

-                                                            *1£ºusim  2£ºsim*/

-    BYTE                            abPadding[3];

-    union

-    {

-        T_z_UiccId_3GEcc          t3GEcc;                /*3GECC½öÓÐÒ»ÌõECCºÅÂë¼Ç¼*/

-        T_z_UiccId_2GEcc          t2GEcc;                /*2GECC°üº¬ËùÓеÄECCºÅÂë*/

-    }Value;

-}T_z_UiccId_Ecc;

-

-

-typedef struct {

-    BYTE                            bEccNum;

-    BYTE                            abPadding[3];

-

-    T_z_UiccId_Ecc                *pEccList;

-}T_z_UiccId_EccInfo;

-

-/* Z_UiccId_Emlpp */

-typedef struct {

-    BYTE                            bPriLevel;

-    BYTE                            bFcSetupCond;

-    BYTE                            abPadding[2];

-}T_z_UiccId_Emlpp;

-

-/* Z_UiccId_CSKEY, Z_UiccId_PSKEY */

-typedef struct {

-    BYTE                            bKsi;           /*Key Set Identifier KSI*/

-    BYTE                            abPadding[3];

-

-    T_z_CK                        tCk;

-    T_z_IK                        tIk;

-}T_z_UiccId_UmtsSecKey;

-

-typedef struct {

-    BYTE                            bCksn;

-    BYTE                            abPadding[3];

-

-    BYTE                            abKc[8];

-}T_z_UiccId_GsmSecKey;

-

-typedef struct {

-    BITS                            bNewFg:1;            /* ָʾCS/PS°²È«²ÎÊýÊÇ·ñΪР*/

-    BITS                            bUtranFg:1;

-    BITS                            bGsmFg:1;

-    BITS                            :5;

-    BYTE                            abPadding[3];

-

-    T_z_UiccId_UmtsSecKey         tUmtsKey;

-

-    T_z_UiccId_GsmSecKey          tGsmKey;

-}T_z_UiccId_SecKey;

-

-typedef struct {

-    BYTE                            bCodeNum;       /*ÓÃÒԼǼNetParÂëÁ÷Îļþ´óС*/

-    BYTE                            abPadding[3];

-    T_z_CellList                  tCellList;      /*Ô¼¶¨£º

-                                                        1)GSMÐ¡ÇøÁбíatGCellListÖУ¬µÚÒ»¸öΪ·þÎñÐ¡Çø£»

-                                                        2)TDD¡¢FDDƵÂÊÁбíabTFreqList¡¢abWFreqListÖУ¬µÚÒ»¸öÖ¸¶¨µÄ¾ùΪͬƵƵµã

-                                                        3)Ð¡Çø¾ù

-                                                     */

-}T_z_UiccId_CellInfo;

-

-/*4.2.18 EFAD */

-typedef struct {

-    BYTE                            bUeOperaMode;

-    BYTE                            bOFM;            /*bOFM=0: OFM to be deactivated by the ME

-                                                       bOFM=1: OFM to be activated by the ME  */

-    BYTE                            bAllowedCsgList;    /* 

-                                                                                               * 0: Allowed CSG List not inhibited

-                                                                                               * 1: Allowed CSG List inhibited

-                                                                                               */

-    BYTE                            bPadding;

-    BYTE                            bMncLenFg;      /*1: ´æÔÚ£¬0£º²»´æÔÚ*/

-    BYTE                            bMncLen;        /* Only the values '0010' and '0011' are currently specified

-                                                      all other values are reserved for future use */

-    BYTE                            abPadding[2];

-}T_z_UiccId_Ad;

-

-/*4.2.6 EFHPPLMN  */

-typedef struct {

-    BYTE                                    bHpPlmnSrhPrd;

-    BYTE                                    abPadding[3];

-}T_z_UiccId_HpPlmnSrhPrd;

-

-/*4.2.15 EFACC */

-typedef struct {

-    BYTE                                    abACC[2]; /*BTYE1 bit1---NumofAcc: 08

-                                                             .............

-                                                        BTYE1 bit8---NumofAcc: 15

-                                                             

-                                                        BTYE2 bit1---NumofAcc: 00

-                                                             .............

-                                                        BTYE2 bit8---NumofAcc: 07

-                                                        ¾ßÌå²Î¼û  31.102 EfAcc

-                                                        */

-    BYTE                                    abPadding[2];

-}T_z_UiccId_ACC;

-

-/*4.2.40 EFAAeM */

-typedef struct

-{

-    BYTE                                              bAaem;          

-    BYTE                                              abPadding[3]; 

-}T_z_UiccId_Aaem;

-

-/*4.2.51 EFStartHfn  */

-typedef struct

-{

-    DWORD                                        dwStartCs;

-    DWORD                                        dwStartPs;

-}T_z_UiccId_StartHfn;

-

-typedef DWORD                                    T_z_UiccId_Threshold;

-

-/* Z_UiccId_START */

-typedef struct {

-    T_z_UiccId_StartHfn                        tStartHfn;

-    T_z_UiccId_Threshold                       tThreshold;

-}T_z_UiccId_Start;

-

-/* Z_UiccId_BCCH */

-typedef struct {

-    BYTE                             abBcch[16];

-}T_z_UiccId_SimBcch;

-

- /******************************LTE********************************************/

-/*4.2.91 EPSLOCI 31102-840*/

-

-/*GUTI*/

-typedef struct{

-    BYTE                            bIdType:3;

-    BITS                            bOorE:1;

-    BITS                            :4;

-    

-    T_z_PlmnId                    tPlmn;

-    BYTE                            bMMEGROUPID[2];

-    BYTE                            bMMECODE;

-    BYTE                            bMTMSI[4];   

-    BYTE                            bPadding;

-}T_z_GUTI;

-

-/*EPS Loci*/

-typedef struct

-{

-    T_z_GUTI                               tGuti;                

-    T_z_TAI                                tTai;

-    BYTE                                     bTauStatus ;

-    BYTE                                     abPadding2[2];

-}T_z_UiccId_EpsLoci;

-

-/*4.2.8.6 LRPLMNSI 31102-840*/

-typedef struct

-{

-  BYTE                                       bLrplmnSi;

-  BYTE                                       abPadding[3];                                                          

-}T_z_UiccId_LrplmnSi;

-

-/*4.2.84 EHPLMN 31102-840*/

-typedef struct {

-    BYTE                                      bNum;               /*ÂëÁ÷ÖÐʵ¼ÊÓÐЧ¸öÊý*/

-    BYTE                                      abPadding[3];

-

-    T_z_PlmnId                                atEhplmn[Z_MAX_LEN_EHPLMN];

-    BYTE                                      bPadding;

-}T_z_UiccId_Ehplmn;

-

-/*4.2.92    EFEPSNSC (EPS NAS Security Context) 31102-840*/

-

-/*KSI*/

-typedef  BYTE  T_z_UiccId_KSI_ASME;

-

-/*UL NAS COUNT*/

-typedef  DWORD T_z_UiccId_UL_NAS_COUNT;

-

-/*DL NAS COUNT*/

-typedef  DWORD T_z_UiccId_DL_NAS_COUNT;

-

-/*ALG  ID*/

-typedef  BYTE  T_z_UiccId_SELECT_ALG_ID;

-

-/*ASME KEY*/

-typedef struct {

-    BYTE                                       bLength;

-    BYTE                                       abPadding[3];

-    BYTE                                       abKeys[Z_MAX_LEN_ASME_KEY];

-} T_z_UiccId_ASME_KEY;

-

-/*INT KEY*/

-typedef struct {

-    BYTE                                       bLength;

-    BYTE                                       abPadding[3];

-    BYTE                                       abKeys[Z_MAX_LEN_NASINT_KEY];

-} T_z_UiccId_NASINT_KEY;

-

-/*ENC KEY*/

-typedef struct {

-    BYTE                                       bLength;

-    BYTE                                       abPadding[3];

-    BYTE                                       abKeys[Z_MAX_LEN_NASENC_KEY];

-} T_z_UiccId_NASENC_KEY;

-

-/*NH PARA*/

-typedef struct {

-    BYTE                                       bLength;

-    BYTE                                       abPadding[3];

-    BYTE                                       abPara[Z_MAX_LEN_NH_OR_NCC_PARA];

-} T_z_UiccId_NH_PARA;

-

-/*NCC PARA*/

-typedef struct {

-    BYTE                                       bLength;

-    BYTE                                       abPadding[3];

-    BYTE                                       abPara[Z_MAX_LEN_NH_OR_NCC_PARA];

-} T_z_UiccId_NCC_PARA;

-

-/*EPS NCS*/

-typedef struct {

-    BYTE                                       bCodeLen;  /*ÂëÁ÷³¤¶È£¬ÓÃÓÚ±àÂ룬ÇëÎð¸Ä¶¯*/

-    BYTE                                       abPadding[3];

-    T_z_UiccId_KSI_ASME                      tKsi;          /* BYTE */

-    T_z_UiccId_SELECT_ALG_ID                 bselected_alg; /* BYTE */

-    

-    T_z_UiccId_ASME_KEY                      tAsmeKey;

-    T_z_UiccId_UL_NAS_COUNT                  tUlCount;

-    T_z_UiccId_DL_NAS_COUNT                  tDlCount;    

-} T_z_UiccId_EPSNSC;

-

-/*4.4.6.2    EFACSGL (Allowed CSG Lists) 31102-940*/

-typedef struct {    

-    BYTE                              bCodeLen; /*ÂëÁ÷³¤¶È£¬±àÂëʹÓã¬ÎðÐÞ¸Ä*/

-	BYTE                              bValidFg;  /*ÎļþÊý¾ÝÓÐÒâÒ壬ÔòÖÃ1£¬ÎļþÊý¾ÝΪ¿Õ£¬ÔòÖÃ0*/

-	BYTE                              bCsgTypeId;

-    BYTE                              bHnbNameInd;

-    

-    T_z_PlmnId                      tPlmn;

-    BYTE                              bPadding;

-    

-    T_z_CsgId                       tCsgId;

-} T_z_UiccId_ACSGL;

-

- /*4.4.6.5    EFOCSGL (Operator CSG Lists) 31102-940*/

-typedef struct {    

-    BYTE                              bCodeLen; /*ÂëÁ÷³¤¶È£¬±àÂëʹÓã¬ÎðÐÞ¸Ä*/

-    BYTE                              bValidFg;  /*ÎļþÊý¾ÝÓÐÒâÒ壬ÔòÖÃ1£¬ÎļþÊý¾ÝΪ¿Õ£¬ÔòÖÃ0*/

-    BYTE                              bCsgTypeId;

-    BYTE                              bHnbNameInd;

-    

-    T_z_PlmnId                        tPlmn;

-    BYTE                              bPadding;

-    

-    T_z_CsgId                         tCsgId;

-} T_z_UiccId_OCSGL;

-

- /*4.4.5.11 EFHPLMNDAI (HPLMN Direct Access Indicator) 31102-940*/

-typedef struct {

-    BYTE                                     bHplmnDai;  /* 

-                                                                                                * '00' - HPLMN Direct Access Indicator is disabled

-                                                                                                * '01' - HPLMN Direct Access Indicator is enabled

-                                                                                                */

-    BYTE                                     abPadding[3];

-}T_z_UiccId_Hplmndai;

-

-/*4.4.6.6 EFOCSGT (Operator CSG Type) 31102-940*/

-typedef struct {

-    BYTE                              bCodeLen;    /*ÓÃÓÚ±àÂ룬ÇëÎð¸Ä¶¯*/

-    BYTE                              bTextCsgFg;  /*ȡֵΪ1 »ò 0*/

-    BYTE                              bGphcCsgFg;  /*ȡֵΪ1 »ò 0*/

-    BYTE                              bPadding;

-    

-    T_z_UiccId_TextCSGT             tTextCsg;    /*bTextCsgFgΪ1ʱÓÐЧ*/

-    T_z_UiccId_GphcCSGT             tGphcCsg;    /*bGphcCsgFgΪ1ʱÓÐЧ*/

-} T_z_UiccId_OCSGT;

-

-/*4.4.6.7 EFOHNBN (Operator Home NodeB Name) 31102-940*/

-typedef struct {

-    BYTE                                       bCodeLen;   /*ÂëÁ÷ʵ¼Ê³¤¶È£¬ÇëÎð¸Ä¶¯*/

-    BYTE                                       bValLen;   /*ÓÐЧÊý¾Ý³¤¶È*/

-    BYTE                                       abPadding[2];

-    BYTE                                       abHNBN[Z_MAX_HNB_NAME_LEN];

-} T_z_UiccId_OHNBN;

-

-/* 4.5.9    EFPSISMSC (Public Service Identity of the SM-SC) 31102-940 */

-typedef struct {

-    BYTE                                     abUriTlvData[Z_MAX_LEN_URI_TLV_DATA];

-    BYTE                                     bUriMaxLen;

-}T_z_UiccId_Psismsc;

- /******************************LTE END********************************************/

-

-/***************************************************************************

-*                                           ATMEM½á¹¹,½ûÖ¹ÐÞ¸Ä

-***************************************************************************/

-/* ²¹³äÒµÎñÌáʾÉèÖà */

-typedef struct {

-    BYTE                            bCssiSet;

-    BYTE                            bCssuSet;

-    BYTE                            abPadding[2];

-}T_zDev_AtMem_CssnSet;

-

-typedef struct {

-    WORD                            wMin; /*min message ID\Dcss*/

-    WORD                            wMax; /*max message ID\Dcss*/

-}T_zDev_AtMem_CBS_Range ;

-

-typedef struct {

-    BYTE                            bSingleNum;

-    BYTE                            bRangeNum;

-    BYTE                            abPadding[2];

-    

-    WORD                            awSingleList[Z_DEV_AtMem_CBS_MAX_MID_NUM]; /*single message Id list, 0..65535, 23041 */

-    

-    T_zDev_AtMem_CBS_Range          atRangeList[Z_DEV_AtMem_CBS_MAX_MID_NUM];   /*range message ID list */         

-}T_zDev_AtMem_CBS_MidSet;

-

-typedef struct {

-    BYTE                            bSingleNum;

-    BYTE                            bRangeNum;

-    BYTE                            abPadding[2];

-    

-    BYTE                            abSingleList[Z_DEV_AtMem_CBS_MAX_DCS_NUM]; /*single message Dcs list, 23038 */

-    

-    T_zDev_AtMem_CBS_Range          atRangeList[Z_DEV_AtMem_CBS_MAX_DCS_NUM];   /*range message Dcs list*/

-}T_zDev_AtMem_CBS_DcsSet ;  

-

-typedef struct {

-/* ËÑÍø²¿·Ö */

-    BYTE                            bCregSet;       /* ATÃüÁî+CREGµÄÉèÖÃÖµ */

-    BYTE                            bCopsMode;      /* ATÃüÁî+COPSÉèÖõÄÑ¡ÍøÄ£Ê½£¬default value£º0 */

-    BYTE                            bCopsFormat;    /* ATÃüÁî+COPSÉèÖõÄÍøÂçÃû¸ñʽ£¬default value£º0 */    

-    BYTE                            bCplsList;      /* ATÃüÁî+CPLSµÄÉèÖÃÖµ */

-

-    BYTE                            bCgregSet;      /* ATÃüÁî+CGREGµÄÉèÖÃÖµ */   

-    BYTE                            bSysMode;       /* AT^MODEÖ÷¶¯Éϱ¨¿ª¹Ø: 0 ¹Ø±Õ£¬1´ò¿ª*/    

-    BYTE                            bCpolFormat;    /* ATÃüÁî+CPOLÉèÖõÄÍøÂçÃû¸ñʽ */	

-    BYTE                            bZmmiSet;       /* ATÃüÁî+ZMMIµÄÉèÖÃÖµ */

-    

-    BYTE                            bCeregSet;

-    BYTE                            bCeerSet;

-    BYTE                            bSearchPlmnSet;/*ÊÇ·ñÔÊÐíËÑÍø¿ªÉ䯵µÄÉèÖÃÖµ+ZSCHPLMN*/

-    BYTE                            bPadding0;

- 

-/*CC²¿·Ö*/

-    BYTE                            bCrcSet;        /* CRCÉèÖÃ */

-    BYTE                            bCrSet;         /* ATÃüÁî+CRµÄÉèÖà */

-    BYTE                            bAocSet;        /* +CAOCÉèÖÃÖ÷¶¯Éϱ¨¿ª¹Ø*/

-    BYTE                            bCcweSet;       /* +CCWEÉèÖÃÖ÷¶¯Éϱ¨¿ª¹Ø*/

-

-    T_zDev_AtMem_CssnSet            tCssnSet;       /* ATÃüÁî+CSSNµÄÉèÖà */   

-

-/*SMS²¿·Ö*/

-    BYTE                            bCgsmsSvc;      /* ATÃüÁî+CGSMSµÄÉèÖÃÖµ */

-    BYTE                            bCmmsSet;       /* ATÃüÁî+CMMSµÄÉèÖÃÖµ */

-    BYTE                            bCsmsSvc;       /* ATÃüÁî+CSMSµÄÉèÖà */

-    BYTE                            bCmgfMode;      /* 0 pduģʽ 1 textģʽ */

-    

-    BYTE                            bCsdhShow;    

-    BYTE                            bTpFoFg;       /* ָʾTPFOÊÇ·ñÓÐЧ£¬0 ÎÞЧ£¬1 ÓÐЧ */

-    BYTE                            bTpFo;         /* TPDUµÚÒ»¸ö×Ö½Ú */

-    BYTE                            bPadding1;

-    

-    BYTE                            abVp[7];       /* 7×Ö½Ú¸ñʽµÄVP */

-    BYTE                            bPadding2;

-

-/*SS²¿·Ö*/

-    BYTE                            bClirSet; /* 0 disable 1 enable */

-    BYTE                            bClipSet; /* 0 disable 1 enable */

-    BYTE                            bColpSet; /* 0 disable 1 enable */

-    BYTE                            bCcwaSet; /* 0 disable 1 enable */

-

-    BYTE                            bCusdSet; /* 0 disable 1 enable */

-    BYTE                            bCnapSet; /* ATÃüÁî+CNAPÉèÖÃÖµ*/

- /*ETWS²¿·Ö LTEÐÂÔö*/

-    BYTE                            bZETWSPrimarySet;/*ÉèÖÃZETWSPrimaryIndÖ÷¶¯Éϱ¨¿ª¹Ø. 0 ¹Ø±Õ£¬1 ¿ªÆô*/

-    BYTE                            bZETWSSecondaryQuerySet;/*ÉèÖÃZETWSSecondaryIndÖ÷¶¯Éϱ¨¿ª¹Ø. 0 ¹Ø±Õ£¬1 ¿ªÆô*/

-

-/* SM²¿·Ö */

-    BYTE                            bCpsbSet;       /* ATÃüÁ+CPSB ÉèÖÃ*/

-    BYTE                            bCenSet;         /*ATÃüÁ+CEN ÉèÖÃ*/

-

-/* UICC²¿·Ö */

-    BYTE                            bZustatSet;    /*ÉèÖÃ+ZUSTATÖ÷¶¯Éϱ¨¿ª¹Ø. 0 ¹Ø±Õ£¬1 ¿ªÆô*/

-    BYTE                            bZurdySet;     /*ÉèÖÃ+ZURDYÖ÷¶¯Éϱ¨¿ª¹Ø. 0 ¹Ø±Õ£¬1 ¿ªÆô*/

-    BYTE                            bZuslotSet;    /*ÉèÖÃ+ZUSLOTÖ÷¶¯Éϱ¨¿ª¹Ø. 0 ¹Ø±Õ£¬1 ¿ªÆô*/

-    BYTE                            bZpinstatSet;  /*ÉèÖÃ+ZPINSTATÖ÷¶¯Éϱ¨¿ª¹Ø. 0 ¹Ø±Õ£¬1 ¿ªÆô*/

-

-/*Ë«´ýÐÂÔö*/

-    BYTE                            bZpsstatSet;  /*AT ÃüÁî+ZPSSTATµÄÉèÖÃÖµ*/

-    BYTE                            bIMSRegState; /*AT ÃüÁî+ZIMSSTATEµÄÉèÖÃÖµ*/

-    BYTE                            bCirepSet;    /*AT ÃüÁî+CIREPµÄÉèÖÃÖµ*/

-    BYTE                            bCnemSet;     /*AT ÃüÁî+CNEMµÄÉèÖÃÖµ*/

-    BYTE                            bZimsplusSet;

-    BYTE                            bAtrIndSet;    /*ZCARDATRÖ÷¶¯Éϱ¨¿ª¹Ø*/

-    DWORD                           dwDuration; /*VTDÉèÖÃÖµ*/

-#ifdef _USE_LPP_ECID

-    BYTE                            bMtLrIndSet; /*MT LRָʾÉϱ¨¿ª¹Ø*/

-    BYTE                            abPadding[3];

-#endif

-    BYTE                            bRoamNetSerch; /*¹úÄÚÂþÓÎÍøÂçËÑË÷¹¦ÄÜ¿ª¹Ø*/

-    BYTE                            bCecnSet;

-    BYTE                            bCauseIndSet;

-    BYTE                            bPadding3;

-}T_zDev_AtMem_Mmia_PrivateMem;

-

-typedef struct {

-    BYTE                            bSmsOverIpNetSupp;

-    BYTE                            abPadding[3];

-}T_zDev_AtMem_UMM_SmsOverIpNet;

-

-typedef struct {

-    BYTE                            bVoiceMode;

-    BYTE                            abPadding[3];

-}T_zDev_AtMem_UMM_Cvmod;

-

-typedef struct {

-    BYTE                            bUeMode;

-    BYTE                            abPadding[3];

-}T_zDev_AtMem_UMM_Cemode;

-

-typedef struct {

-    BYTE                            bCmodMode;

-    BYTE                            abPAdding[3];

-}T_zDev_AtMem_CC_CmodMode;                       /* ATÃüÁî+CMODµÄÉèÖà */                          

-

-typedef struct {

-    BYTE                            bFclassMode;

-    BYTE                            abPadding[3];

-}T_zDev_AtMem_CC_FclassMode;                     /* ATÃüÁî+FCLASSµÄÉèÖÃ,ÆäÖÐ1.0=254, 2.0=255 */

-

-typedef struct {

-    BYTE                            bCsnsSet;

-    BYTE                            abPadding[3];

-}T_zDev_AtMem_CC_CsnsSet;                        /* ATÃüÁî+CSNSµÄÉèÖà */

-

-typedef struct {

-    BYTE                           bCgauto;

-    BYTE                           bS0;

-    BYTE                           abPadding[2];

-}T_zDev_AtMem_SM_AutoRsp;

-                                       

-/* ³ÐÔØÒµÎñÀàÐÍ */

-typedef struct {

-    BYTE                            bSpeed;

-    BYTE                            bName;

-    BYTE                            bCe;

-    BYTE                            bPadding;

-}T_zDev_AtMem_CC_CbstSet;

-

-typedef struct {

-    BYTE                            bCallLine;    /* 0:Ïß·1£¨Òƶ¯£©,1£ºÏß·2£¨Ìúͨ£© */

-    BYTE                            abPadding[3];

-}T_zDev_AtMem_CC_CallLine;

-

-typedef struct {

-    BYTE                            bCnmiMd;

-    BYTE                            bCnmiMt;        /* ATÃüÁî+CNMIÉèÖÃÖµ */

-    BYTE                            bCnmiBm;    

-    BYTE                            bCnmiDs;

-    BYTE                            bCnmiBfr;

-    BYTE                            abPadding[3];

-}T_zDev_AtMem_SMS_CnmiCmd;

-

-typedef struct {

-    BITS                            bIwsFg:1;

-    BITS                            bMwsFg:1;

-    BITS                            bT1Fg:1;

-    BITS                            bN2Fg:1;

-    BITS                            bT4Fg:1;

-    BITS                            :3;

-    

-    BITS                            bCrlpVersion:2;    /*RLP°æ±¾ºÅ0¡¢1¡¢2 */

-    BITS                            bCrlpIws:6;        /*IWFµ½UEµÄ»¬¶¯´°¿Ú´óС*/

-    

-    BITS                            bCrlpMws:6;        /*UEµ½IWFµÄ»¬¶¯´°¿Ú´óС*/

-    BITS                            :2;           /*±£Áôλ*/

-    

-    BYTE                            bCrlpT1;           /*µ¥Î»10ms */

-    

-    BYTE                            bCrlpN2;           /*ÖØ´«´ÎÊý*/

-    BYTE                            bCrlpT4;           /*µ¥Î»10ms£¬°æ±¾2ÓÐЧ*/

-    BYTE                            abPadding[2];

-}T_zDev_AtMem_TAF_CrlpCmd;

-

-typedef struct {

-    BYTE                            bCscbMode; /*0:accepted, 1:not accepted*/

-    BYTE                            abPadding[3];

-    

-    T_zDev_AtMem_CBS_MidSet         tCscbMid;

-    T_zDev_AtMem_CBS_DcsSet         tCscbDcs;

-}T_zDev_AtMem_CBS_CscbCmd;

-

-#ifdef _USE_LPP_ECID

-typedef struct {

-    BYTE                            bEnable;/*0ÖÕÖ¹MOLR,·¢ÆðMOLR*/

-    BYTE                            bHorAccSet;/*ÊÇ·ñÉèÖÃˮƽ¾«¶È0-²»ÉèÖÃ1-ÉèÖÃ*/

-    BYTE                            bHorAcc;    /*ˮƽ¾«¶È0-127*/

-    BYTE                            bVerReq;   /*´¹Ö±·½ÏòÒªÇó,0-2D,1-3D*/

-

-    BYTE                            bVerAccSet;/*ÊÇ·ñÉèÖô¹Ö±¾«¶È,0-²»ÉèÖÃ1-ÉèÖÃ*/

-    BYTE                            bVerAcc;  /*´¹Ö±¾«¶È0-127*/

-    BYTE                            bVelReq;  /*ËÙÂÊÒªÇó0-4*/

-    BYTE                            bRepMod;  /*Éϱ¨Ä£Ê½0µ¥´ÎÉϱ¨1ÖÜÆÚÉϱ¨*/

-

-    BYTE                            bPlane; /*0-CP*/

-    BYTE                            bPadding;

-    WORD                           wTimeOut;  /*µ¥´Î¶¨Î»³¬Ê±Ê±¼ä1-65535s*/

-    WORD                           wInterVal;  /*ÖÜÆÚÉϱ¨Ê±Á½´Î¶¨Î»µÄ¼ä¸ôʱ¼ä*/

-    BYTE                            abNmeaRep[Z_MAX_ECID_NEMASTR_LEN];  /*NEMAÉϱ¨µÄ×Ö·û´®¸ñʽ0-$GPRMC*/

-}T_zDev_AtMem_MoLrCmd;

-#endif

-

-typedef struct {

-    BYTE                            abApn[Z_DEV_AtMem_MAX_APN_LEN]; 

-    BYTE                            bPdpType;

-    BYTE                            bDComp;   

-    BYTE                            bHComp;   

-    BYTE                            bIPv4AddrAlloc;

-    

-    BYTE                            bEmergencyInd;

-    BYTE                            bPCscfDisc;

-    BYTE                            bImcnSignInd;

-    BYTE                            bPadding;

-

-    BYTE                            abPdpAddr[Z_DEV_AtMem_MAX_PDPADDR_LEN]; 

-}T_zDev_AtMem_SmPdpContext;

-

-typedef struct {

-    BYTE                           bPassWordLen;

-    BYTE                           bUserNameLen;

-    BYTE                           abPassWord[Z_DEV_AtMem_MAX_STR_LEN+1];/*ÃÜÂë*/

-    BYTE                           abUserName[Z_DEV_AtMem_MAX_STR_LEN+1];/*Óû§Ãû*/

-    BYTE                           abChallenge[Z_DEV_AtMem_MAX_CHALLENGE_LEN];/*Ëæ»úÊý*/

-    BYTE                           abHashRsp[Z_DEV_AtMem_MAX_HASH_LEN];/*HASH*/

-}T_zDev_AtMem_SmPcoAuth_PapChapInfo;

-

-typedef struct {

-    BYTE                           bAuthType;

-    BYTE                           abPadding[3];

-    T_zDev_AtMem_SmPcoAuth_PapChapInfo    tPapChapInfo;

-}T_zDev_AtMem_SmPcoAuthContext;

-

-typedef struct 

-{

-    BYTE                            bFilterId;       /* ·ÖÀàÆ÷±êºÅ£¬È¡Öµ1..8¡£È¡ÖµÎª0ʱ±íʾ´Ë·ÖÀàÆ÷ÎÞЧ */

-    BYTE                            bPreIndex;       /* ·ÖÀàÆ÷ÓÅÏȼ¶ */

-    

-    BYTE                            bPadding;

-

-    BITS                            bIPvFg:1;           /* 0=IPv4,1=IPv6 */

-    BITS                            bPidNextHeaderFg:1;

-    BITS                            bTosTcMaskFg:1;

-    BITS                            bAddrMaskFg:1;

-    BITS                            bLocalPortFg:1;

-    BITS                            bRemotePortFg:1;

-    BITS                            bSpiFg:1;

-    BITS                            bFlowLabelFg:1;

-

-    BYTE                            bPidNextHeader;  /* IPv4 protocol id/IPv6 next header */

-    BYTE                            bTosTc;          /* type of service (tos) (ipv4)/ traffic class (ipv6)

-                                                         bTosTcMaskFg=1ʱÓÐЧ*/

-    BYTE                            bMask;           /* mask(ipv4/ipv6), bTosTcMaskFg=1ʱÓÐЧ*/

-    BYTE                            bDirection;

-    

-    BYTE                            abAddrMask[32];  /* µØÖ·ºÍÑÚÂ룬IPv4ʱǰ8×Ö½ÚÓÐЧ */

-

-    WORD                            wFLocalPort;      /*ÆðʼLocal¶Ë¿Ú·¶Î§£¬È¡Öµ0..65535, bLocalPortFg=1ʱÓÐЧ*/

-    WORD                            wTLocalPort;      /*ÖÕÖ¹Local¶Ë¿Ú·¶Î§£¬È¡Öµ0..65535¡£µ±wFLocalPortÓëwTLocalPortÏàµÈʱ£¬±íʾµ¥Ò»¶Ë¿Ú

-                                                      bLocalPortFg=1ʱÓÐЧ*/

-

-    WORD                            wFRemotePort;      /*ÆðʼRemote¶Ë¿Ú·¶Î§£¬È¡Öµ0..65535,bRemotePortFg=1ʱÓÐЧ*/

-    WORD                            wTRemotePort;      /*ÖÕÖ¹Remote¶Ë¿Ú·¶Î§£¬È¡Öµ0..65535¡£µ±wFRemotePortÓëwTRemotePortÏàµÈʱ£¬±íʾµ¥Ò»¶Ë¿Ú

-                                                      bRemotePortFg=1ʱÓÐЧ*/

-

-    DWORD                           dwSpi;           /* security parameter index */

-

-    DWORD                           dwFlowLabel;     /* IPv6 flow label */

-}T_zDev_AtMem_FilterType;

-

-/*LTE ÐÂÔö*/

-typedef struct

-{

-    BITS                                              bSpare:5;

-    BITS                                              bQciFlg:1;        /*ÊÇ·ñ·µ»ØQCI*/

-    BITS                                              bUlDlGbrFlg:1;    /*ÊÇ·ñ·µ»ØGBR²ÎÊý*/

-    BITS                                              bUlDlMbrFlg:1;    /*ÊÇ·ñ·µ»ØMBR²ÎÊý*/

-

-                                                                        /*¿ÉÑ¡²ÎÊý*/

-    BYTE                                              bQci;             /*QCI of EPS QoS*/

-    BYTE                                              abPadding[2];

-

-    DWORD                                             dwUlGbr;           /*Uplink GBR in EPS QoS£¬ÒÔkbpsΪµ¥Î»*/

-    DWORD                                             dwDlGbr;           /*Downlink GBR in EPS QoS£¬ÒÔkbpsΪµ¥Î»*/

-

-    DWORD                                             dwUlMbr;           /* Uplink MBR in EPS QoS£¬ÒÔkbpsΪµ¥Î»*/

-    DWORD                                             dwDlMbr;           /*Downlink MBR in EPS QoS£¬ÒÔkbpsΪµ¥Î»*/

-}T_zDev_AtMem_EsmQosInfo;

-

-typedef struct {

-    BYTE                            bEQosFlag;        /*±íʾÊÇ·ñΪQosÈ¥¶¨Ò壬

-                                                                                                                                 ȡֵ£ºZ_MMIA_QOS_NotDefine£¬Z_MMIA_QOS_Define*/

-    BYTE                            abPadding[3];

-

-    T_zDev_AtMem_EsmQosInfo         tEQos;  //+CGEQOS

-    /*only for R7 ->begin*/

-    BYTE                            abFilterValidFlag[Z_DEV_AtMem_MAXINUM_FILTER];

-    T_zDev_AtMem_FilterType         atEsmFilter[Z_DEV_AtMem_MAXINUM_FILTER];

-    /*only for R7 ->end*/

-}T_zDev_AtMem_EsmData;

-

-typedef struct {

-    BITS                            bPrecedenceFg:1;

-    BITS                            bDelayFg:1;

-    BITS                            bReliabilityFg:1;

-    BITS                            bPeakFg:1;

-    BITS                            bMeanFg:1;

-    BITS                            :3;

-  

-    BYTE                            bPrecedence;

-    BYTE                            bDelay;

-    BYTE                            bReliability;

-

-    BYTE                            bPeak;

-    BYTE                            bMean;

-    BYTE                            abPadding[2];

-}T_zDev_AtMem_SmQosType;

-

-typedef struct {

-    BITS                            bTcFg:1;

-    BITS                            bDeliOrderFg:1;

-    BITS                            bDeliErrSduFg:1;        

-    BITS                            bTraffPriFg:1;

-    BITS                            bSduErrRatioFg:1;

-    BITS                            bResidualBerFg:1;

-    BITS                            bMaxRateUlFg:1;

-    BITS                            bMaxRateDlFg:1;

-

-    BITS                            bGuarRateUlFg:1;

-    BITS                            bGuarRateDlFg:1;

-    BITS                            bMaxSduSizeFg:1;

-    BITS                            bTransDelayFg:1;    

-    BITS                            :4;

-    BYTE                            abPadding[2];

-

-    BYTE                            bTc;

-    BYTE                            bDeliveryOrder;

-    BYTE                            bDeliveryErrSdu;

-    BYTE                            bTrafficPri;

-

-    BYTE                            abSduErrRatio[2];/*abSduErrRatio[0]:m, abSduErrRatio[1]:e.

-                                                         Èç5*10-3±íʾΪ£ºabSduErrRatio[0]£½5,abSduErrRatio[1]£½3*/

-    BYTE                            abResidualBer[2];  /*abResidualBer[0]:m, abResidualBer[1]:e.

-                                                         Èç5*10-3±íʾΪ£ºabResidualBer[0]£½5,abResidualBer[1]£½3*/

-   

-    BYTE                            bSrcStatsDescriptor;

-    BYTE                            bSignalIndication;

-    BYTE                            abPadding1[2];

-

-    DWORD                           dwMaxRateUl;    /*µ¥Î»Îªkbps*/

-    DWORD                           dwMaxRateDl;    /*µ¥Î»Îªkbps*/

-

-    DWORD                           dwGuarRateUl;   /*µ¥Î»Îªkbps*/

-    DWORD                           dwGuarRateDl;   /*µ¥Î»Îªkbps*/

-

-    WORD                            wMaxSduSize;

-    WORD                            wTransDelay;   /*µ¥Î»Îªms*/

-}T_zDev_AtMem_SmEQosType;

-

-typedef struct {

-    BITS                            bPdpInfoFg:1;

-    BITS                            bPcoAuthFg:1;

-    BITS                            b2GMinQosFg:1;

-    BITS                            b3GMinQosFg:1;

-    BITS                            b2GQosFg:1;

-    BITS                            b3GQosFg:1;

-    BITS                            :2;

-

-    BYTE                            bPreCid;    //  CGDSCONT

-    BYTE                            bContFlag;  /* 0 Ò»´ÎÉÏÏÂÎÄ£¬ 1 ¶þ´ÎÉÏÏÂÎÄ */ 

-    BYTE                            bPadding;

-    

-    T_zDev_AtMem_SmPdpContext       tPdpContext;  //CGDCONT, CGDSCONT

-

-    T_zDev_AtMem_SmPcoAuthContext  tPcoAuth;//ZGPCOAUTH

- 

-    T_zDev_AtMem_FilterType         atFilter[Z_DEV_AtMem_MAXINUM_FILTER];  //CGTFT Ò»´Î½öÓÐÒ»¸ö£¬Ï±êÊÇpfid

-

-    T_zDev_AtMem_SmQosType          t2GQos;  //cgqreq

-

-    T_zDev_AtMem_SmQosType          t2GMinQos; //cgqmin

-

-    T_zDev_AtMem_SmEQosType         t3GQos; //cgeqreq

-

-    T_zDev_AtMem_SmEQosType         t3GMinQos; //cgeqmin

-}T_zDev_AtMem_SmCidData;

-

-typedef struct {

-    T_zDev_AtMem_Mmia_PrivateMem         tMmiaPrivateMem;

-

-    T_zDev_AtMem_UMM_Cvmod               tCvmod;

-

-    T_zDev_AtMem_UMM_Cemode              tCemode;

-    

-    T_zDev_AtMem_UMM_SmsOverIpNet        tSmsOverIpNet;

-    

-    T_zDev_AtMem_CC_CmodMode             tCmodMode;

-    

-    T_zDev_AtMem_CC_CbstSet              tCbstSet;

-

-    T_zDev_AtMem_CC_CallLine             tCallLine;

-    

-    T_zDev_AtMem_CC_FclassMode           tFclassMode;

-    

-    T_zDev_AtMem_CC_CsnsSet              tCsnsSet; 

-    

-    T_zDev_AtMem_SM_AutoRsp              tAutoRsp;

-    

-    T_zDev_AtMem_SMS_CnmiCmd             tCnmiCmd;    

-    

-    T_zDev_AtMem_TAF_CrlpCmd             tCrlpCmd;

-    

-    T_zDev_AtMem_CBS_CscbCmd             tCscbCmd;

-#ifdef _USE_LPP_ECID

-    T_zDev_AtMem_MoLrCmd             tMoLrCmd;

-#endif

-    T_zDev_AtMem_SmCidData               atCidDataList[Z_DEV_AtMem_MAX_CID_NUM];

-

-    T_zDev_AtMem_EsmData                 atEsmDataList[Z_DEV_AtMem_MAX_CID_NUM];

-}T_zDev_AtMem;

-/**************************************************************************

-*                            ÏûÏ¢·¢ËÍÏà¹Ø½á¹¹¶¨Òå                         *

-**************************************************************************/

-typedef struct {

-    DWORD                       dwStartFg;            /*Æô¶¯±êÖ¾*/     

-    CHAR  *                     pModName;             /*Ä£¿éÃû*/      

-    CHAR  *                     pTaskName1;           /*Ä£¿éËùÊôÓÚµÄʵÀýÒ»ÈÎÎñÃû£¬ÈôÎÞÈÎÎñÔòȡֵ"Z_MODULE"*/    

-    ZOSS_TASK_ID                tTaskId1;             /*ʵÀýÒ»ÈÎÎñID£¬·ÇÈÎÎñ»òÈÎÎñ²»Æô¶¯Ê±È¡ÖµZOSS_INVALID_TASK_ID*/       

-    CHAR  *                     pTaskName2;           /*Ä£¿éËùÊôÓÚµÄʵÀý¶þÈÎÎñÃû£¬ÈôÎÞÈÎÎñÔòȡֵ"Z_MODULE"*/        

-    ZOSS_TASK_ID                tTaskId2;             /*ʵÀý¶þÈÎÎñID£¬·ÇÈÎÎñ»òÈÎÎñ²»Æô¶¯Ê±È¡ÖµZOSS_INVALID_TASK_ID*/         

-}T_z_ModuleInfo;

-

-

-extern T_z_ModuleInfo g_z_SubMdl[Z_SUBMDL_NUM];

-

-/**************************************************************************

-*                            ÏûÏ¢·¢ËÍÏà¹Ø½á¹¹¶¨Òå                         *

-**************************************************************************/

-typedef struct {

-    DWORD                       dwMsgId;                /*ÏûÏ¢ID*/

-    BYTE                        bStackIndex;            /*ʵÀýID,ȡֵ1-2*/

-    BYTE                        bPadding[3];

-    WORD                        wMsgLen;                /*ÏûÏ¢³¤¶È*/

-    

-    BYTE                        bSrcMod;                /*Ô´Ä£¿é*/

-    BYTE                        bDestMod;               /*Ä¿µÄÄ£¿é*/

-

-    ZOSS_TASK_ID                tSrcTask;               /*Ô´ÈÎÎñ*/            

-    ZOSS_TASK_ID                tDestTask;              /*Ä¿µÄÈÎÎñ*/

-

-    PBYTE                       pMsg;                   /*ÏûÏ¢Ö¸Õë*/

-}T_z_MsgInfo;

-

-/**************************************************************************

-*º¯ÊýÃû³Æ:zDev_NV_AtiReadItem

-*º¯Êý¹¦ÄÜ:ATIרÓöÁNVº¯Êý

-*Êä            Èë:bNvItem Òª¶ÁµÄNVÊý¾ÝË÷ÒýÖµ,¼ûatipscom.hºê¶¨Òå

-*Êä            ³ö:pValBuf¶Á³öÀ´µÄÊý¾Ý,Óɵ÷ÓÃÕßÉêÇëÄÚ´æ

-**************************************************************************/

-BYTE zDev_NV_AtiReadItem(BYTE bAtiNvItem, PBYTE pValBuf);

-/**************************************************************************

-*º¯ÊýÃû³Æ:zDev_NV_AtiWriteItem

-*º¯Êý¹¦ÄÜ:ATIרÓÃдNVº¯Êý

-*Êä            Èë:bNvItem ҪдµÄNVÊý¾ÝË÷ÒýÖµ,¼ûatipscom.hºê¶¨Òå

-*Êä            ³ö:pValBuf´ýдÈëµÄÊý¾Ý,Óɵ÷ÓÃÕß´«Èë

-**************************************************************************/

-BYTE zDev_NV_AtiWriteItem(BYTE bAtiNvItem, PBYTE pValBuf);

-/************************************************************************

-*º¯ÊýÃû³Æ:zDev_NV_AtiRefreshItem

-*º¯Êý¹¦ÄÜ:½«È«¾ÖÖеÄÖµ¸üÐÂÖÁNVÖÐ

-************************************************************************/

-BYTE zDev_NV_AtiRefreshItem(BYTE bAtiNvItem);

-

-#ifdef _USE_FREQ_AMTNV

-/* ==================================================================

-º¯ÊýÃû³Æ: zDev_GetAmtNvLteBand

-º¯Êý¹¦ÄÜ:»ñÈ¡AMT NV LTE BAND

-·µ  »Ø:

-×¢  ÊÍ:bit±íʾµÄBAND°´PS NVÖÐLteBand˳Ðò·Å

-================================================================== */

-VOID zDev_GetAmtNvLteBand(PBYTE pAmtnvBand);

-

-/* ==================================================================

-º¯ÊýÃû³Æ: zDev_GetAmtNvFddBand

-º¯Êý¹¦ÄÜ:»ñÈ¡AMT NV FDD BAND

-·µ  »Ø:

-×¢  ÊÍ:bit±íʾµÄBAND°´PS NVÖÐFddBandµÄ˳Ðò·Å

-================================================================== */

-VOID zDev_GetAmtNvFddBand(PBYTE pAmtnvBand);

-

-/* ==================================================================

-º¯ÊýÃû³Æ: zDev_GetAmtNvTddBand

-º¯Êý¹¦ÄÜ:»ñÈ¡AMT NV TDD BAND

-·µ  »Ø:

-×¢  ÊÍ:bit±íʾµÄBAND°´PS NVÖÐTddBandµÄ˳Ðò·Å

-================================================================== */

-VOID zDev_GetAmtNvTddBand(PBYTE pAmtnvBand);

-

-/* ==================================================================

-º¯ÊýÃû³Æ: zDev_GetAmtNvGsmBand

-º¯Êý¹¦ÄÜ:»ñÈ¡AMT NV GSM BAND

-·µ  »Ø:

-×¢  ÊÍ:bit±íʾµÄBAND°´PS NVÖÐGsmBandµÄ˳Ðò·Å

-================================================================== */

-VOID zDev_GetAmtNvGsmBand(PBYTE pAmtnvBand);

-#endif

-

-extern BYTE zDev_IsSupportGsmBand(VOID);

-extern BYTE zDev_IsSupportFddBand(VOID);

-extern BYTE zDev_IsSupportTddBand(VOID);

-extern BYTE zDev_IsSupportLteBand(VOID);

-extern BYTE zDev_ModifyTddOrFdd(VOID);

-extern BYTE zDev_CheckEquateBand(BYTE bCustomBand, BYTE bEquateBand);

-extern VOID zDev_PcoAuthCipher(PBYTE pContent,BYTE bLen);

-/* ==================================================================

-º¯ÊýÃû³Æ: zSys_GetNVCmdValue

-º¯Êý¹¦ÄÜ:»ñÈ¡ZSETÃüÁîÉèÖõĽá¹û

-ÊäÈë:cmd,ZSETÃüÁîµÄ×Ö·û´®

-·µ  »Ø:ÃüÁîµÄÉèÖýá¹û

-×¢  ÊÍ:

-================================================================== */

-extern UINT32 zSys_GetNVCmdValue(const CHAR* cmd);

-/* ==================================================================

-º¯ÊýÃû³Æ: zOss_GetSvConfig

-º¯Êý¹¦ÄÜ:»ñÈ¡IMEISVÖеÄSV

-ÊäÈë:

-·µ  »Ø:Ò»¸ö×Ö½ÚµÄSV

-×¢  ÊÍ:

-================================================================== */

-extern UINT8 zOss_GetSvConfig(VOID);

-/* ==================================================================

-º¯ÊýÃû³Æ: zDev_GetAtiNvItem

-º¯Êý¹¦ÄÜ:NVITEMµÄÓ³Éä

-ÊäÈë:bAtiNvItem:ATIʹÓõÄNVID

-Êä³ö:pbNvItem:MODEMµÄNVID

-·µ»Ø:Z_SUCC³É¹¦,Z_FAILʧ°Ü

-×¢  ÊÍ:

-================================================================== */

-extern BYTE zDev_GetAtiNvItem(BYTE bAtiNvItem, PBYTE pbNvItem);

-/* ==================================================================

-º¯ÊýÃû³Æ: zDev_NVWriteItem

-º¯Êý¹¦ÄÜ:NV¶Áд½Ó¿Ú

-×¢  ÊÍ:

-================================================================== */

-extern BYTE zDev_NVWriteItem(BYTE bNvItem);

-

-/* ==================================================================

-º¯ÊýÃû³Æ£ºzSendLogToTrace

-¹¦ÄÜÃèÊö£º·¢ËÍÒ»°ãLOGÐÅÏ¢

-²ÎÊý˵Ã÷£º(IN)

-            dwLogId         Log ID

-            wLogLen         LogÐÅÏ¢³¤¶È

-            pLog            LogÐÅÏ¢ÂëÁ÷

-·µ »Ø Öµ£ºÎÞ

-ÆäËü˵Ã÷£ºÎÞ

-================================================================== */

-extern VOID zSendLogToTrace(BYTE bStackIndex, DWORD  dwLogId, WORD  wLogLen,PBYTE  pLog);

-/**************************************************************************

- º¯ÊýÃû³Æ: zDev_AtMemWriteItem

- º¯Êý¹¦ÄÜ: ¸ù¾ÝÈë²Î£¬ÏòЭÒéÕ»Êý¾Ý»º´æÇøÖÐдÈëItem

- Êä    Èë:  bAtMemItem ´ýдÈëµÄItemId

-                     bId  дÈëPDPÏȹصÄCIDʱÓÐЧ

- Êä    ³ö:  pAtMemBuf £ºÐ´ÈëµÄÈ«¾ÖÊý¾ÝÇøÊý¾Ý¡£Óɺ¯Êýµ÷ÓÃÕßÉêÇëºÍÊÍ·ÅÄÚ´æ

- ·µ    »Ø:  Z_SUCC ³É¹¦

-                     Z_FAIL ʧ°Ü

-***************************************************************************/

-extern BYTE zDev_AtMemWriteItem(BYTE bAtMemItem, BYTE bId, PBYTE pAtMemBuf, BYTE bInsNo);

-/**************************************************************************

- º¯ÊýÃû³Æ: zDev_AtMemReadItem

- º¯Êý¹¦ÄÜ:¸ù¾ÝÈë²Î£¬¶ÁȡЭÒéÕ»Êý¾Ý»º´æÇøÖеÄItem

- Êä    Èë:  bAtMemItem ´ý¶ÁÈ¡µÄItemId

-                     bId  ¶àCIDʱ´øÈë

- Êä    ³ö:  pAtMemBuf £º¶Á³öµÄÈ«¾ÖÊý¾ÝÇøÊý¾Ý¡£Óɺ¯Êýµ÷ÓÃÕßÉêÇëºÍÊÍ·ÅÄÚ´æ

- ·µ    »Ø:  Z_SUCC ³É¹¦

-                     Z_FAIL ʧ°Ü

-***************************************************************************/

-extern BYTE zDev_AtMemReadItem(BYTE bAtMemItem, BYTE bId, PBYTE pAtMemBuf, BYTE bInsNo);

-/*====================================================================================================

-º¯ÊýÃû³Æ£ºzExpt2TraceAgt 

-¹¦ÄÜÃèÊö£ºÒì³£¹Û²ìº¯Êý

-²ÎÊý˵Ã÷£º(IN)

-            bInsNo:ʵÀýºÅ£¬0-1 £ºÐ­ÒéÕ»1£¬ 2£ºÐ­ÒéÕ»2

-            bModId:Ä£¿éºÅ

-            dwErrcode:´íÎóÂë

-            dwRcvMsgId:½ÓÊÕµÄÏûÏ¢id

-            dwSendMsgId: ·¢³öµÄÏûÏ¢id

-            pString: ×Ö·û´®ÐÅÏ¢,ÄÚÈݲ»ÏÞ,³¤¶È×îºÃÏÞÖÆÔÚ50×Ö½ÚÒÔÄÚ,Óɺ¯Êýµ÷ÓÃÕß°´ÐèÒªÌîд

-            pFileName: ³ö´íµÄÎļþÃû

-            dwLineNum: ³ö´íµÄÎļþÐкÅ

-            bState£º¸÷Ä£¿é״̬

-·µ »Ø Öµ£ºÎÞ 

-ÆäËü˵Ã÷£º 

-=====================================================================================================*/

-extern VOID zExpt2TraceAgt(BYTE bInsNo, BYTE bModId, DWORD dwErrcode,DWORD dwRcvMsgId, DWORD dwSendMsgId, CHAR *pString, CHAR * pFileName, DWORD dwLineNum, BYTE bState, BYTE bErrLevel);

-/*======================================================================

-º¯ÊýÃû³Æ£ºzSendMsg 

-¹¦ÄÜÃèÊö£ºMODEMÄÚ¸÷ÈÎÎñÒì²½ÏûÏ¢·¢ËÍ 

-²ÎÊý˵Ã÷£º(IN)

-            pMsgInfo:´ý·¢ËÍÏûÏ¢ÐÅÏ¢

-            (OUT)

-            pCause:´íÎóÔ­Òò

-·µ »Ø Öµ£ºÎÞ 

-=======================================================================*/

-extern VOID zSendMsg(T_z_MsgInfo *pMsgInfo, PDWORD pCause);

-/*======================================================================

-º¯ÊýÃû³Æ£ºzMsgTrace 

-¹¦ÄÜÃèÊö£ºÐÅÁî¸ú×Ù½Ó¿Úº¯Êý

-²ÎÊý˵Ã÷£º(IN)

-                bDirect:ÏûÏ¢·½Ïò,Z_SIGTRACE_RECVÈëÏûÏ¢,Z_SIGTRACE_SEND:³öÏûÏ¢

-                pMsgInfo:´ý¸ú×ÙÏûÏ¢ÐÅÏ¢

-======================================================================*/

-extern VOID zMsgTrace(BYTE bDirect, T_z_MsgInfo * pMsgInfo);

-/*=====================================

-º¯ÊýÃû³Æ:zSetRelativeTimer

-¹¦ÄÜÃèÊö:Æô¶¯¶¨Ê±º¯Êý

-²ÎÊý˵Ã÷:(IN)

-            dwTimerLen:ʱ³¤

-            dwMsgId:³¬Ê±ÏûÏ¢id

-            dwArg:¸½¼þÐÅÏ¢

-·µ »Ø Öµ£ºÎÞ 

-======================================*/

-extern ZOSS_TIMER_ID zSetRelativeTimer(DWORD dwTimerLen, DWORD dwMsgId, DWORD dwArg);

-/*=====================================

-º¯ÊýÃû³Æ:zSetLoopTimer

-¹¦ÄÜÃèÊö:Æô¶¯Ñ­»·¶¨Ê±º¯Êý

-²ÎÊý˵Ã÷:(IN)

-            dwTimerLen:ʱ³¤

-            dwMsgId:³¬Ê±ÏûÏ¢id

-            dwArg:¸½¼þÐÅÏ¢

-·µ »Ø Öµ:

-======================================*/

-extern ZOSS_TIMER_ID zSetLoopTimer(DWORD dwTimerLen, DWORD dwMsgId, DWORD dwArg);

-/*=====================================

-º¯ÊýÃû³Æ:zOss_KillTimer

-¹¦ÄÜÃèÊö:ɾ³ýÖ¸¶¨¶¨Ê±Æ÷

-²ÎÊý˵Ã÷:timer_id:    ¶¨Ê±Æ÷ID

-·µ »Ø Öµ:³É¹¦:ZOSS_SUCCESS; ʧ°Ü:ZOSS_ERROR

-======================================*/

-extern UINT32 zOss_KillTimer(ZOSS_TIMER_ID timer_id);

-/* ==================================================================

-º¯ÊýÃû³Æ: zDev_GetCfunFlag

-º¯Êý¹¦ÄÜ:»ñÈ¡¿ª»ú±êÖ¾

-Êä  Èë:ÎÞ

-Êä  ³ö:ÎÞ

-·µ  »Ø:¿ª»ú±êÖ¾

-×¢  ÊÍ:

-================================================================== */

-extern BYTE zDev_GetCfunFlag(VOID);

-/* ==================================================================

-º¯ÊýÃû³Æ: zDev_GetManualSearchFg

-º¯Êý¹¦ÄÜ:ָʾÊÇ·ñÖ§³Ö¿ª»úÊÖ¶¯ËÑÍøÄ£Ê½

-·µ  »Ø:0: ²»Ö§³Ö1: Ö§³Ö

-×¢  ÊÍ:

-================================================================== */

-extern BYTE  zDev_GetManualSearchFg(VOID);

-

-//extern  UINT32 Nvram_Flush(VOID);

-/* ==================================================================

-º¯ÊýÃû³Æ: zDev_GetTaskId

-º¯Êý¹¦ÄÜ:»ñÈ¡ÈÎÎñID

-ÊäÈë:bSubModÄ£¿éºÅ

-              bInsNot´ý»ú²àָʾ,0±íʾ´ý»ú²à1,1±íʾ´ý»ú²à2

-·µ»ØÖµ:ÈÎÎñIDºÅ

-================================================================== */

-extern ZOSS_TASK_ID  zDev_GetTaskId(BYTE bSubMod, BYTE bInsNo);

-/* ==================================================================

-º¯ÊýÃû³Æ: zDev_GetAtMemData

-º¯Êý¹¦ÄÜ: »ñÈ¡AtMemÊý¾ÝÇøÊ×µØÖ·

-Êä  Èë:ÎÞ

-Êä  ³ö:ÎÞ

-·µ  »Ø: AtMemÊý¾ÝÇøÊ×µØÖ·

-================================================================== */

-extern PBYTE zDev_GetAtMemData (BYTE bInsNo);

-/* ==================================================================

-º¯ÊýÃû³Æ: zDev_GetNvDataSize

-º¯Êý¹¦ÄÜ: »ñÈ¡NVÊý¾ÝÇø´óС

-Êä  Èë:ÎÞ

-Êä  ³ö:ÎÞ

-·µ  »Ø: NVÊý¾ÝÇø´óС

-================================================================== */

-extern WORD zDev_GetNvDataSize (VOID);

-/* ==================================================================

-º¯ÊýÃû³Æ: zDev_GetNvData

-º¯Êý¹¦ÄÜ: »ñÈ¡NVÊý¾ÝÇøÊ×µØÖ·

-Êä  Èë:ÎÞ

-Êä  ³ö:ÎÞ

-·µ  »Ø: NVÊý¾ÝÇøÊ×µØÖ·

-================================================================== */

-extern PBYTE zDev_GetNvData (VOID);

-/* ==================================================================

-º¯ÊýÃû³Æ: zDev_GetRatVersion

-º¯Êý¹¦ÄÜ:»ñÈ¡µ±Ç°°æ±¾ÖÆÊ½ÐÅÏ¢

-================================================================== */

-BYTE zDev_GetRatVersion(VOID);

-

-/* ==================================================================

-º¯ÊýÃû³Æ: zDev_GetCSFBAnsModFlag

-º¯Êý¹¦ÄÜ:CSFBÓ¦´ð·½Ê½

-Êä  Èë:ÎÞ

-Êä  ³ö:ÎÞ

-·µ  »Ø:0:È˹¤Ó¦´ð1:×Ô¶¯Ó¦´ð

-×¢  ÊÍ:

-================================================================== */

-BYTE zDev_GetCSFBAnsModFlag(VOID);

-

-extern DWORD zDev_NVInit_SysconfigInit(VOID);

-

-/*****************************************************************************

-*    º¯ÊýÃû     £ºzNas_SetEventStart

-*    ¹¦ÄÜ       £ºÉèÖÃNASʼþ¿ªÊ¼

-*    ÊäÈë²ÎÊý   £ºBYTE bInsIdx -- ´ý»ú²àʵÀýºÅ: 0, ¿¨1´ý»ú²à; 1, ¿¨2´ý»ú²à.

-                  BYTE bEvent -- ÒµÎñ¶ÔÓ¦µÄË÷Òý(0...31): Ë÷Òý0µÄÓÅÏȼ¶×î¸ß,

-                                 ¾ßÌ庬ÒåÇë¼ûºê¶¨Òå.

-*    Êä³ö²ÎÊý   £ºÎÞ

-*    ·µ»ØÖµËµÃ÷ £ºÎÞ

-*    ÆäËû˵Ã÷   £ºÎÞ

-*****************************************************************************/

-extern VOID zNas_SetEventStart(BYTE bInsIdx, BYTE bEvent);

-    

-/*****************************************************************************

-*    º¯ÊýÃû     £ºzNas_SetEventEnd

-*    ¹¦ÄÜ       £ºÉèÖÃNASʼþ½áÊø

-*    ÊäÈë²ÎÊý   £ºBYTE bInsIdx -- ´ý»ú²àʵÀýºÅ: 0, ¿¨1´ý»ú²à; 1, ¿¨2´ý»ú²à.

-                  BYTE bEvent -- ÒµÎñ¶ÔÓ¦µÄË÷Òý(0...31): Ë÷Òý0µÄÓÅÏȼ¶×î¸ß,

-                                 ¾ßÌ庬ÒåÇë¼ûºê¶¨Òå.

-*    Êä³ö²ÎÊý   £ºÎÞ

-*    ·µ»ØÖµËµÃ÷ £ºÎÞ

-*    ÆäËû˵Ã÷   £ºÎÞ

-*****************************************************************************/   

-extern VOID zNas_SetEventEnd(BYTE bInsIdx, BYTE bEvent);

-

-/*****************************************************************************

-*    º¯ÊýÃû     £ºzNas_IsEventExist

-*    ¹¦ÄÜ       £º²éѯ¶ÔÓ¦µÄʼþÊÇ·ñ´æÔÚ

-*    ÊäÈë²ÎÊý   £ºBYTE bInsIdx -- ´ý»ú²àʵÀýºÅ: 0, ¿¨1´ý»ú²à; 1, ¿¨2´ý»ú²à.

-                  BYTE bEvent -- ÒµÎñ¶ÔÓ¦µÄË÷Òý(0...31): Ë÷Òý0µÄÓÅÏȼ¶×î¸ß,

-                                 ¾ßÌ庬ÒåÇë¼ûºê¶¨Òå.

-*    Êä³ö²ÎÊý   £ºÎÞ

-*    ·µ»ØÖµËµÃ÷ £ºZ_VALID/Z_INVALID

-*    ÆäËû˵Ã÷   £ºÎÞ

-*****************************************************************************/

-extern BYTE zNas_IsEventExist(BYTE bInsIdx, BYTE bEvent);

-

-/* PSÊý¾ÝÃæ£¬ÉÏÐлº´æÇø¶¯Ì¬ÉêÇ뺯Êý */

-extern T_z_UpLink_Sdu*  zAllocUpLinkSdu(void);

-

-/* PSÊý¾ÝÃæ£¬ÉÏÐлº´æÇø¶¯Ì¬Êͷź¯Êý */

-extern void zFreeUpLinkSdu(T_z_UpLink_Sdu* pSdu);

-

-/* PSÊý¾ÝÃæ£¬ÏÂÐлº´æÇø¶¯Ì¬Êͷź¯Êý */

-extern void zFreeDownLinkSdu(T_z_DownLink_Sdu* pSdu);

-

-extern VOID zSendMsgToEl2(T_z_MsgInfo *pMsgInfo, BYTE bFlag);

-

-extern VOID zPs_SaveApUtcInfo(WORD wYear, WORD wMonth);

-#endif

-

diff --git a/Uboot/cp/ps/modem/ps/inc/atipsint.h b/Uboot/cp/ps/modem/ps/inc/atipsint.h
deleted file mode 100755
index 5a79eba..0000000
--- a/Uboot/cp/ps/modem/ps/inc/atipsint.h
+++ /dev/null
@@ -1,9044 +0,0 @@
-/*****************************************************************

-*°æ±¾ËùÓÐ (C)2016ÖÐÐËͨѶ¹É·ÝÓÐÏÞ¹«Ë¾

-*Ä£¿éÃû:

-*ÎļþÃû:atipsint.h

-*ʵÏÖ¹¦ÄÜ:atiÓë¸÷¹¦ÄÜÄ£¿é¼äµÄ½Ó¿Ú

-*°æ±¾:V1.0

-*****************************************************************/

-#ifndef   ZPS_ATI_INT_H

-#define   ZPS_ATI_INT_H

-

-#include "atipscom.h"

-

-/*********************************************************************

-*ATIºÍÆäËûÄ£¿é¼äµÄ½Ó¿Ú¼°ºêÖµ¶¨Òå,½ûÖ¹ËæÒâÐÞ¸Ä

-*********************************************************************/

- /*ͨÓú궨Ò壺ij±äÁ¿ÊÇ·ñ´æÔڵıê־λȡֵ*/

-#define Z_APMMIA_VALID                            (BYTE)1 

-#define Z_APMMIA_INVALID                          (BYTE)0 

-

-/* atÃüÁî½á¹ûÂë, common cnfÖнá¹ûÂë, mmiaºÍstm½Ó¿ÚµÄ·µ»ØÖµ*/

-#define Z_APMMIA_OPERATION_FAILURE                (BYTE)0

-#define Z_APMMIA_OPERATION_SUCCESS                (BYTE)1  

-

-/*================ ʧ°ÜÔ­Òòºê¶¨Òå =====================*/

-    /* Command Type */

-#define Z_APMMIA_SMSCMDTYPE_SET                (BYTE)0

-#define Z_APMMIA_SMSCMDTYPE_QUERY              (BYTE)1

-

-#define Z_MmiaUmm_ImsiUnknowInHlr_Err                 (WORD)102 /*UMMÀ©Õ¹Ê§°ÜÔ­Òò,27007 9.2ûÓдËÔ­Òò*/

-#define Z_MmiaUmm_IllegalMs_Err                       (WORD)103

-#define Z_MmiaUmm_IllegalMe_Err                       (WORD)106

-#define Z_MmiaUmm_GprsSrvNotAlw_Err                   (WORD)107

-#define Z_MmiaUmm_PlmnNotAlw_Err                      (WORD)111

-#define Z_MmiaUmm_LANotAlw_Err                        (WORD)112

-#define Z_MmiaUmm_RoamNotAlwInLa_Err                  (WORD)113

-#define Z_MmiaUmm_PhoneFail                           (WORD)0

-#define Z_MmiaUmm_OptNotAlw                           (WORD)3

-#define Z_MmiaUmm_OptNotSpt                           (WORD)4

-#define Z_MmiaUmm_SimNotInsert                        (WORD)10

-#define Z_MmiaUmm_SimWrong                            (WORD)15

-#define Z_MmiaUmm_NoNetSvc                            (WORD)30

-#define Z_MmiaUmm_EmcCallOnly                         (WORD)32

-#define Z_MmiaUmm_UnknownErr                          (WORD)100

-

-/*À©Õ¹¹¤³Ìģʽ´íÎóÂë*/

-#define Z_MmiaUmm_CellOfOtherPlmn_Err                 (WORD)257

-#define Z_MmiaUmm_CellOfForbidLa_Err                  (WORD)258

-#define Z_MmiaUmm_CellBarred_Err                      (WORD)259

-#define Z_MmiaUmm_NoAvailableBand_Err                 (WORD)6009

-

-/*================ MmiaUmm½Ó¿ÚÖÐÖÆÊ½µÄºê¶¨Òå ===========================*/

-#define Z_MmiaUmm_GSM                                 Z_GSM_ACT

-#define Z_MmiaUmm_GSMCOMPACT                          Z_GSM_COMPACT_ACT

-#define Z_MmiaUmm_TD                                  Z_TD_ACT

-#define Z_MmiaUmm_W                                   Z_W_ACT

-#define Z_MmiaUmm_ALLACT                              (BYTE)0xff

-

-/*================ Óû§ÖØÑ¡ºê¶¨Òå =======================================*/

-#define Z_MmiaUmm_NoReselect                          (BYTE)0

-#define Z_MmiaUmm_UserReselect                        (BYTE)1

-

-/*================ Ñ¡ÍøÄ£Ê½ºê¶¨Òå =======================================*/

-#define Z_MmiaUmm_Auto                                (BYTE)0

-#define Z_MmiaUmm_Manu                                (BYTE)1

-

-/*================ ÊÖ¶¯Ñ¡ÍøÊ§°Ü´¦Àíºê¶¨Òå ===============================*/

-#define Z_MmiaUmm_FailAndManu                         (BYTE)0 /* ʧ°Üºó±£³ÖÊÖ¶¯ */

-#define Z_MmiaUmm_FailToAuto                          (BYTE)1 /*:ʧ°Üºóת×Ô¶¯Ñ¡ÍøÄ£Ê½*/

-

-/*================ ¼¤»î»òÈ¥»îºê¶¨Òå =====================================*/

-#define Z_MmiaUmm_ACTIVE                              (BYTE)0 

-#define Z_MmiaUmm_DEACTIVE                            (BYTE)1 

-

-/*================ ¶ÔÁ½¸öÓò½øÐвÙ×÷ºê¶¨Òå ===============================*/

-#define Z_MmiaUmm_AllDomain                           (BYTE)2  /* ¶ÔÁ½¸öÓò½øÐвÙ×÷ */

-

-/*================ PLMN״̬ºê¶¨Òå =======================================*/

-#define Z_MmiaUmm_UnknownPlmn                         (BYTE)0

-#define Z_MmiaUmm_AvailPlmn                           (BYTE)1

-#define Z_MmiaUmm_CurPlmn                             (BYTE)2

-#define Z_MmiaUmm_FPlmn                               (BYTE)3

-

-/*================ ×¢²á״̬ºê¶¨Òå =======================================*/

-#define Z_MmiaUmm_NoRegNoSearch                       (BYTE)0

-#define Z_MmiaUmm_RegHplmn                            (BYTE)1

-#define Z_MmiaUmm_NoRegButSearch                      (BYTE)2

-#define Z_MmiaUmm_RegDenied                           (BYTE)3

-#define Z_MmiaUmm_Unknown                             (BYTE)4

-#define Z_MmiaUmm_RegRoaming                          (BYTE)5

-#define Z_MmiaUmm_PlmnSearchNotAllowed                (BYTE)6 /* ´Ë״̬רÃÅÓÃÓھܾøËÑÍøÏûÏ¢ */

-#define Z_MmiaUmm_AttempUpdate                        (BYTE)7 /* ´Ë״̬ÊǸüÐÂÒ»°ãʧ°ÜÉϱ¨µÄÖмä״̬ */

-/* ϵͳģʽ²Î¿¼ºê¶¨Òå - mode*/

-

-#define Z_MmiaUmm_AutoSel                             (BYTE)2

-#define Z_MmiaUmm_GsmOnly                             (BYTE)13

-#define Z_MmiaUmm_WcdmaOnly                           (BYTE)14

-#define Z_MmiaUmm_TdOnly                              (BYTE)15

-#define Z_MmiaUmm_ModeNoChange                        (BYTE)16

-#define Z_MmiaUmm_LteOnly                             (BYTE)17

-#define Z_MmiaUmm_GSM_TD                              (BYTE)18

-#define Z_MmiaUmm_GSM_LTE                             (BYTE)19

-#define Z_MmiaUmm_TD_LTE                              (BYTE)20

-#define Z_MmiaUmm_GSM_W                               (BYTE)21 /*GSM W˫ģ*/

-#define Z_MmiaUmm_TD_W                                (BYTE)22 /*TD W˫ģ*/

-#define Z_MmiaUmm_W_LTE                               (BYTE)23  /*W LTE˫ģ*/

-#define Z_MmiaUmm_TD_GSM_LTE                          (BYTE)24 /*TD GSM LTEÈýÄ£*/

-#define Z_MmiaUmm_TD_W_LTE                            (BYTE)25 /*TD W LTEÈýÄ£*/

-#define Z_MmiaUmm_TD_W_GSM                            (BYTE)26 /*TD W GSMÈýÄ£*/

-#define Z_MmiaUmm_W_GSM_LTE                           (BYTE)27 /*GSM W LTEÈýÄ£*/

-

-/* ÍøÂç½ÓÈë´ÎÐòºê¶¨Òå - acqorder*/

-#define Z_MmiaUmm_AutoAcqorder                        (BYTE)0

-#define Z_MmiaUmm_GsmPriority_TdSecond_LteThird       (BYTE)1

-#define Z_MmiaUmm_TdPriority_GsmSecond_LteThird       (BYTE)2

-#define Z_MmiaUmm_AcqoNochange                        (BYTE)3

-#define Z_MmiaUmm_GsmPriority_LteSecond_TdThird       (BYTE)4

-#define Z_MmiaUmm_TdPriority_LteSecond_GsmThird       (BYTE)5 

-#define Z_MmiaUmm_LtePriority_TdSecond_GsmThrid       (BYTE)6 

-#define Z_MmiaUmm_LtePriority_GsmSecond_TdThird       (BYTE)7 

-#define Z_MmiaUmm_GsmPriority_WSecond_LteThird        (BYTE)8

-#define Z_MmiaUmm_WPriority_GsmSecond_LteThird        (BYTE)9

-#define Z_MmiaUmm_GsmPriority_LteSecond_WThird        (BYTE)10

-#define Z_MmiaUmm_WPriority_LteSecond_GsmThird        (BYTE)11 

-#define Z_MmiaUmm_LtePriority_WSecond_GsmThrid        (BYTE)12 

-#define Z_MmiaUmm_LtePriority_GsmSecond_WThird        (BYTE)13

-#define Z_MmiaUmm_TdPriority_WSecond_LteThird         (BYTE)14

-#define Z_MmiaUmm_WPriority_TdSecond_LteThird         (BYTE)15

-#define Z_MmiaUmm_TdPriority_LteSecond_WThird         (BYTE)16

-#define Z_MmiaUmm_WPriority_LteSecond_TdThird         (BYTE)17 

-#define Z_MmiaUmm_LtePriority_WSecond_TdThrid         (BYTE)18 

-#define Z_MmiaUmm_LtePriority_TdSecond_WThird         (BYTE)19

-#define Z_MmiaUmm_TdPriority_WSecond_GsmThird         (BYTE)20

-#define Z_MmiaUmm_WPriority_TdSecond_GsmThird         (BYTE)21

-#define Z_MmiaUmm_TdPriority_GsmSecond_WThird         (BYTE)22

-#define Z_MmiaUmm_WPriority_GsmSecond_TdThird         (BYTE)23 

-#define Z_MmiaUmm_GsmPriority_WSecond_TdThrid         (BYTE)24 

-#define Z_MmiaUmm_GsmPriority_TdSecond_WThird         (BYTE)25

-

-/* ÊÇ·ñÖ§³ÖÂþÓÎ - roam*/

-#define Z_MmiaUmm_NotSupportRoam                      (BYTE)0

-#define Z_MmiaUmm_SupportRoam                         (BYTE)1

-#define Z_MmiaUmm_RoamNochange                        (BYTE)2

-

-/* ÓòÉèÖú궨Òå - srvdomain*/

-#define Z_MmiaUmm_CsOnly                              (BYTE)0

-#define Z_MmiaUmm_PsOnly                              (BYTE)1

-#define Z_MmiaUmm_CsPs                                (BYTE)2

-#define Z_MmiaUmm_Any                                 (BYTE)3

-#define Z_MmiaUmm_DomainNochange                      (BYTE)4

-

-/* PS¸½×Å״̬ */                             

-#define Z_MmiaUmm_CGATTSET_DETACH                     (BYTE)0

-#define Z_MmiaUmm_CGATTSET_ATTACH                     (BYTE)1

-

-/* CS¸½×Å״̬ */                             

-#define Z_MmiaUmm_ZATTSET_DETACH                      (BYTE)0

-#define Z_MmiaUmm_ZATTSET_ATTACH                      (BYTE)1

-

-/*================ rf controlÖеIJÙ×÷ºê¶¨Òå =============================*/

-/*#define ZPS_RF_ON				                            (BYTE)0

-#define ZPS_RF_OFF                                          (BYTE)1 ¼ûpsCom.h */ 

-#define Z_MmiaUmm_PwrOff                              (BYTE)2

-

-/*================ CSGÁбí×î´ó¸öÊýºê¶¨Òå =============================*/

-#define Z_MmiaUmm_MaxCsgNum                           (BYTE)10

-

-/*================ CSGÑ¡Ôñģʽºê¶¨Òå =============================*/

-#define Z_MmiaUmm_CsgMode_Off                         (BYTE)0

-#define Z_MmiaUmm_CsgMode_Auto                        (BYTE)1

-#define Z_MmiaUmm_CsgMode_Manu                        (BYTE)2

-

-/*================ CSG״̬ºê¶¨Òå =============================*/

-#define Z_MmiaUmm_CsgState_NotAlw                     (BYTE)0

-#define Z_MmiaUmm_CsgState_Allowed                    (BYTE)1

-#define Z_MmiaUmm_CsgState_Current                    (BYTE)2

-

-/*================ +CEMODEºê¶¨Òå -ÓÃpscom.hÖеĺê=============================*/

-

-/*================ Ôö¼ÓLTEÖÆÊ½ ===============================*/

-#define Z_MmiaUmm_EUTRAN                              Z_LTE_ACT

-

- /*================  LTEÖ§³ÖµÄ½ÓÈë¼¼Êõ ========================*/

-#define Z_MmiaUmm_LTE_TDD_Only                         (BYTE)0         /*Ö»ËÑTDDƵ¶Î*/

-#define Z_MmiaUmm_LTE_FDD_Only                         (BYTE)1         /*Ö»ËÑFDDƵ¶Î*/

-#define Z_MmiaUmm_LTE_TDD_Pref                         (BYTE)2         /*FDDºÍFDDƵ¶Î¶¼ËÑ£¬TDDÓÅÏÈ*/

-#define Z_MmiaUmm_LTE_FDD_Pref                         (BYTE)3         /*FDDºÍFDDƵ¶Î¶¼ËÑ£¬FDDÓÅÏÈ*/

-

- /*================  IMS ×¢²á״̬===============================*/

-#define  Z_MmiaUmm_IMS_DEREGISTERED                    (BYTE)0        /*δע²á»ò×¢²áʧ°Ü*/

-#define  Z_MmiaUmm_IMS_REGISTERED                      (BYTE)1        /*ÒÑ×¢²á³É¹¦*/

-

-/*================   ÓïÒôÓòÉèÖÃ ===============================*/                                                                      

-#define  Z_MMIAUMM_VOICE_MODE_CS_ONLY                  (BYTE)0

-#define  Z_MMIAUMM_VOICE_MODE_VOIP_ONLY                (BYTE)1     

-#define  Z_MMIAUMM_VOICE_MODE_CS_PREF                  (BYTE)2

-#define  Z_MMIAUMM_VOICE_MODE_VOIP_PREF                (BYTE)3

- 

-/*================   Ë«´ýPS״̬ÐÅÏ¢ ===============================*/                                                                      

-#define  Z_MMIAUMM_PS_STATE_NULL                       (BYTE)0

-#define  Z_MMIAUMM_PS_STATE_AVAIL                      (BYTE)1   /* ps¿ÉÓÃ */  

-#define  Z_MMIAUMM_PS_STATE_NOT_AVAIL                  (BYTE)2   /* ps²»¿ÉÓà */

-

- /*================ Ö¸¶¨ÔËÓªÉÌ===============================*/

-#define  Z_MMIAUMM_PLMN_CHINAMOBILE                    (BYTE)1  /*ÖйúÒÆ¶¯*/

-#define  Z_MMIAUMM_PLMN_CHINAUNICOM                    (BYTE)2  /*ÖйúÁªÍ¨*/

-#define  Z_MMIAUMM_PLMN_CHINATELECOM                   (BYTE)3/*ÖйúµçÐÅ*/

- 

-/*================ UMMÉϱ¨SRVCCʼþ===============================*/ 

-#define  Z_MMIAUMM_SRVCC_START                       (BYTE)0

-#define  Z_MMIAUMM_SRVCC_SUCC                        (BYTE)1

-#define  Z_MMIAUMM_SRVCC_FAIL                        (BYTE)2

-

-/*================ CEER´íÎóÂë===============================*/ 

-#define  Z_ATIUMM_InvalidPara                       (BYTE)0

-#define  Z_ATIUMM_IllegalMs                         (BYTE)103

-#define  Z_ATIUMM_IllegalMe                         (BYTE)106

-#define  Z_ATIUMM_GprsNotAllowd                     (BYTE)107

-#define  Z_ATIUMM_GprsAndNonGprsNotAllowd           (BYTE)108

-#define  Z_ATIUMM_UeIdCannotBeDerivedByNet          (BYTE)109

-#define  Z_ATIUMM_UeImplicitlyDetached              (BYTE)110

-#define  Z_ATIUMM_PlmnNotAllowed                    (BYTE)111

-#define  Z_ATIUMM_LaNotAllowed                      (BYTE)112

-#define  Z_ATIUMM_RoamingNotAllowedInLa             (BYTE)113

-#define  Z_ATIUMM_GprsNotAllowedInThePlmn           (BYTE)114

-#define  Z_ATIUMM_NoSuitableCellInLa                (BYTE)115

-#define  Z_ATIUMM_AuthRej                           (BYTE)116

-#define  Z_ATIUMM_AuthFailure                       (BYTE)117

-#define  Z_ATIUMM_ImeiNotAccept                     (BYTE)118

-#define  Z_ATIUMM_ImsiPaging                        (BYTE)119

-#define  Z_ATIUMM_MtDetachReattach                  (BYTE)120

-#define  Z_ATIUMM_UserDeactived                     (BYTE)121

-#define  Z_ATIUMM_Congestion                        (BYTE)122    //Congestion

-#define  Z_ATIUMM_EsmFailure                        (BYTE)123    //ESM failure  

-#define  Z_ATIUMM_NoPdpContextActivated             (BYTE)124    //No PDP context activated

-#define  Z_ATIUMM_NotAuthorizedForCsg               (BYTE)125    //Not Authorized For This CSG

-#define  Z_ATIUMM_AttachLowerLayerFailOrRel         (BYTE)126    //Attach Lower Layer Failure Or Release

-#define  Z_ATIUMM_T3410TimeOut                      (BYTE)127    //T3410 Time Out

-#define  Z_ATIUMM_ReqServiceNotAuthorized           (BYTE)128    //Requested service option not authorized in this PLMN

-#define  Z_ATIUMM_ActiveDefaultEpsBearRej           (BYTE)129    //Active Default Eps Bear Reject

-#define  Z_ATIUMM_AuthMacFail                       (BYTE)130    //Authentication Mac Failure

-#define  Z_ATIUMM_AuthSyncFail                      (BYTE)131    //Authentication Sync Failure

-#define  Z_ATIUMM_AuthNoneEps                       (BYTE)132    //Authentication None Eps parameter

-#define  Z_ATIUMM_MtDetachNoCause                   (BYTE)133    //Reattach not required and no cause

-#define  Z_ATIUMM_GetUeInfoFailure                  (BYTE)134    //Get Ue Information Failure

-#define  Z_ATIUMM_T3310TimeOut                      (BYTE)135    //T3310 Time Out

-#define  Z_ATIUMM_AuthUnacceptable                  (BYTE)136    //Authentication Unacceptable

-#define  Z_ATIUMM_AttachEstRej                      (BYTE)137    //Attach Establish Reject

-#define  Z_ATIUMM_UnSpecifiedGprsError              (BYTE)148

-#define  Z_ATIUMM_NormalFailFiveTimes               (BYTE)149    //Normal Fail Continuously Five Times

-#define  Z_ATIUMM_SemanticallyIncorMsg              (BYTE)172    //Semantically incorrect message

-#define  Z_ATIUMM_InvalidMandatoryInfo              (BYTE)173    //Invalid mandatory information

-#define  Z_ATIUMM_MsgTypeNoExsitOrImpl              (BYTE)174    //Message type non-existent or not implemented

-#define  Z_ATIUMM_IENoExsitOrImpl                   (BYTE)175    //Information element non-existent or not implemented

-#define  Z_ATIUMM_ProtocolError                     (BYTE)176    //Protocol error, unspecified

-#define  Z_ATIUMM_MsgTypeNotCompWithProtocStat      (BYTE)177    //Message type not compatible with the protocol state

-#define  Z_ATIUMM_ConditionalIEerr                  (BYTE)178    //Conditional IE error

-#define  Z_ATIUMM_MsgNotCompWithProtocStat          (BYTE)179    //Message not compatible with the protocol state

-#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  //οؽáÊø

-

-/*============MMÄ£¿éCEER´íÎóÂë=============================== */

-#define Z_ATIMM_ImsiUnknownInHlr           (BYTE)2 //IMSI unknown in HLR

-#define Z_ATIMM_IllegalMs                  (BYTE)3 //CS Domain Illegal MS

-#define Z_ATIMM_ImsiUnkonwnInVlr           (BYTE)4 //IMSI unknown in VLR

-#define Z_ATIMM_ImeiNotAccepted            (BYTE)5 //CS Domain IMEI not accepted

-#define Z_ATIMM_IllegalMe                  (BYTE)6 //CS Domain Illegal ME

-

-#define Z_ATIMM_PlmnNotAllowed             (BYTE)11 //CS Domain PLMN not allowed

-#define Z_ATIMM_LaNotAllowed               (BYTE)12 //CS Domain Location Area not allowed

-#define Z_ATIMM_RoamingNotAllowed          (BYTE)13 //CS Domain Roaming not allowed in this location area

-#define Z_ATIMM_NoSuitCellInLa             (BYTE)15 //CS Domain No Suitable Cells In Location Area

-#define Z_ATIMM_MscTempNotReachable        (BYTE)16 //MSC temporarily not reachable

-#define Z_ATIMM_NetFailre                  (BYTE)17 //CS Domain Network failure

-#define Z_ATIMM_RetryInNewCell             (BYTE)18 //CS Domain Retry InTo New Cell

-#define Z_ATIMM_DefaultRejCause            (BYTE)19 //CS Domain Default Reject Cause

-

-#define Z_ATIMM_MacFailure                (BYTE)20 //MAC failure

-#define Z_ATIMM_SynchFailure              (BYTE)21 //Synch failure

-#define Z_ATIMM_Congestion                (BYTE)22 //CS Domain Congestion

-#define Z_ATIMM_GsmAuthUnaccept           (BYTE)23 //GSM authentication unacceptable

-#define Z_ATIMM_AuthReject                (BYTE)24 //CS Domain Authentication Reject

-#define Z_ATIMM_NotAuthorizedForThisCSG   (BYTE)25 //Not authorized for this CSG

-

-#define Z_ATIMM_CmSrvAbort                    (BYTE)30 //Cm Service Abortion

-#define Z_ATIMM_SrvOptNotSupport              (BYTE)32 //Service option not supported

-#define Z_ATIMM_SrvOptNotSubscribed           (BYTE)33 //Requested service option not subscribed

-#define Z_ATIMM_SrvOptTempOutOfOder           (BYTE)34 //Service option temporarily out of order

-#define Z_ATIMM_CallNotIdentified             (BYTE)38 //Call cannot be identified

-#define Z_ATIMM_CsSrvTempNotAvailable         (BYTE)39 //Extended service request procedure, CS service temporarily not available

-

-#define Z_ATIMM_RrcEstCellResel         (BYTE)40 //RRC Connection Establish Cell Reselection

-#define Z_ATIMM_RrEstFailure            (BYTE)41 //RRC Connection Establish Failure

-#define Z_ATIMM_RandomAccessFail        (BYTE)42 //Random Acess Failure

-#define Z_ATIMM_LowLayerFail            (BYTE)43 //LowLayer Failure

-#define Z_ATIMM_GrrAbortInd             (BYTE)44 //GRR Abort Indication

-#define Z_ATIMM_PagingPending           (BYTE)45 //Paging Pending

-#define Z_ATIMM_RrRelPreemptive         (BYTE)46 //RRC Connection Release Preemptive

-#define Z_ATIMM_RrRelCongestion         (BYTE)47 //RRC Connection Release Congestion

-#define Z_ATIMM_RrRelReestRej           (BYTE)48 //RRC Connection Release Reestablish Reject

-#define Z_ATIMM_RrRelDirSigReest        (BYTE)49 //RRC Connection Release Direct Signal Reestablish

-#define Z_ATIMM_RrRelUserInact          (BYTE)50 //RRC Connection Release User Inactive

-#define Z_ATIMM_CsDomainNotAvailable    (BYTE)51 //Combined EPS attach or TAU successful for EPS only, CS domain not available

-#define Z_ATIMM_NormalFailNeedSearchPlmn (BYTE)52 //MM normal fail or network fail continuously 4 times, need search PLMN

-#define Z_ATIMM_ImsiDetachByTheNetwork   (BYTE)53 //MT detach, and the detach type is IMSI detach

-

-#define Z_ATIMM_SemanticallyIncorrectMsg              (BYTE)95 //Semantically incorrect message

-#define Z_ATIMM_InvalidMandInfo                       (BYTE)96 //Invalid mandatory information

-#define Z_ATIMM_MsgTypeNoExsitOrImplement             (BYTE)97 //Message type non-existent or not implemented

-#define Z_ATIMM_MsgTypeNotCompatProtocolState         (BYTE)98 //Message not compatible with protocol state

-#define Z_ATIMM_IENoExsitOrImplement                  (BYTE)99 //Information element non-existent or not implemented

-#define Z_ATIMM_CondIeError                           (BYTE)100 //Conditional IE error

-#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_NO_NEED_CHANGE                           (BYTE)0

-#define  Z_NEED_CHANGE                              (BYTE)1

-#define  Z_NEED_USER_DECIDE                         (BYTE)2

-

-#define Z_ATIUMM_MAX_EMERNUM_DIGIT_NUM    (BYTE)8

-#define Z_ATIUMM_MAX_EMERNUM_NUM          (BYTE)10

-#define Z_ATIUMM_MAX_TXTSTR_NUM           (BYTE)218

-#define Z_ATIUMM_MAX_LSAID_NUM            (BYTE)3

-

-#define Z_MMIASM_MAX_CID_NUM                      Z_DEV_AtMem_MAX_CID_NUM  /*  ×î´óCID¸öÊý  */

-

-#define Z_MMIASM_IPV4_ADDR_MAX_LEN                (BYTE)4       /* IPV4µØÖ·×î´ó³¤¶È*/

-#define Z_MMIASM_IPV6_ADDR_MAX_LEN                (BYTE)16      /* IPV6µØÖ·×î´ó³¤¶È*/

-#define Z_MMIASM_ADDR_MAX_LEN                     (BYTE)Z_MMIASM_IPV6_ADDR_MAX_LEN      /*  PDPµØÖ·×î´ó³¤¶È  */

-#define Z_MMIASM_APN_MAX_LEN                      (BYTE)100     /*  APN×î´ó³¤¶È  */

-

-#define Z_MMIASM_PCO_ITEM_VAL_MAX_LEN             (BYTE)134      /* PCOÐÅÏ¢µ¥ÔªÄÚÈÝ×î´ó³¤¶È */

-

-#define Z_MMIASM_PCO_PROT_ITEM_MAX_NUM            (BYTE)6       /* PCOЭÒéÐÅÏ¢µ¥Ôª×î´ó¸öÊý */

-#define Z_MMIASM_PCO_PARA_ITEM_MAX_NUM            (BYTE)13      /* PCO¸½¼Ó²ÎÊýµ¥Ôª×î´ó¸öÊý */

-#define Z_MMIASM_MAX_PDPADDR_MASK_LEN             (BYTE)32

-#define Z_MMIASM_MAX_FILTER_ID                    (BYTE)16

-

-/* PDPÀàÐÍ */

-#define Z_MMIASM_PPP                              (BYTE)0X01       /*  PPPÀàÐÍ  */

-#define Z_MMIASM_IPV4                             (BYTE)0X21       /*  IPv4ÀàÐÍ  */

-#define Z_MMIASM_IPV6                             (BYTE)0X57       /*  IPv6ÀàÐÍ  */

-#define Z_MMIASM_IPV4V6                           (BYTE)0X8D       /* IPv4v6ÀàÐÍ  */

-

-/* ʧ°ÜÔ­Òò¶¨Òå */

-#define Z_MMIASM_MEM_FAIL                         (DWORD)23

-#define Z_MMIASM_PDP_HANDLE_BUSY                  (DWORD)114

-#define Z_MMIASM_PDP_HANDLE_ABORT                 (DWORD)115

-#define Z_MMIASM_PDP_ADDRESS_TYPE_UNKNOW          (DWORD)128

-#define Z_MMIASM_SRV_NOT_SPT                      (DWORD)132

-#define Z_MMIASM_SRV_NOT_SUB                      (DWORD)133

-#define Z_MMIASM_SRV_OUTOF_ORDER                  (DWORD)134

-#define Z_MMIASM_UNSPEC_GPRS_ERR                  (DWORD)148

-#define Z_MMIASM_PDP_AUTH_FAIL                    (DWORD)149

-#define Z_MMIASM_LAST_PDN_NOT_DEACT               (DWORD)151

-

-/* MT PDP¼¤»îÓ¦´ðÀàÐÍ */

-#define Z_MMIASM_MT_ACT_REJ                       (BYTE)0        /* ¾Ü¾øÍøÂç²à¼¤»îÇëÇó */

-#define Z_MMIASM_MT_ACT_ACC                       (BYTE)1        /* ½ÓÊÜÍøÂç²à¼¤»îÇëÇó */

-

-/* ½á¹ûÂ붨Òå */

-#define Z_MMIASM_RESULT_CODE_OK                   (BYTE)0

-#define Z_MMIASM_RESULT_CODE_ERROR                (BYTE)1

-#define Z_MMIASM_RESULT_CODE_NO_CARRIER           (BYTE)2

-#define Z_MMIASM_RESULT_CODE_CONNECT              (BYTE)3

-

-/* CGEVʼþÀàÐÍ */

-#define Z_MMIASM_CGEV_ME_PRI_PDN_ACT              (BYTE)0

-#define Z_MMIASM_CGEV_NW_PRI_PDN_DEACT            (BYTE)1

-#define Z_MMIASM_CGEV_ME_PRI_PDN_DEACT            (BYTE)2

-#define Z_MMIASM_CGEV_NW_PRI_PDN_ACT              (BYTE)3

-#define Z_MMIASM_CGEV_NW_MODIFY                   (BYTE)4

-#define Z_MMIASM_CGEV_ME_MODIFY                   (BYTE)5

-#define Z_MMIASM_CGEV_NW_SEC_PDN_ACT              (BYTE)6

-#define Z_MMIASM_CGEV_ME_SEC_PDN_ACT              (BYTE)7

-#define Z_MMIASM_CGEV_NW_SEC_PDN_DEACT            (BYTE)8

-#define Z_MMIASM_CGEV_ME_SEC_PDN_DEACT            (BYTE)9

-#define Z_MMIASM_CGEV_MT_ACT_REJ                  (BYTE)10

-#define Z_MMIASM_CGEV_NW_REACT                    (BYTE)11

-

-#define Z_MMIASM_CGEV_CHNG_TFT                    (BYTE)1   

-#define Z_MMIASM_CGEV_CHNG_QOS                    (BYTE)2

-#define Z_MMIASM_CGEV_CHNG_TFT_AND_QOS            (BYTE)3

-

-#define Z_MMIASM_CGEV_EVENT_TYPE_INFO             (BYTE)0  

-#define Z_MMIASM_CGEV_EVENT_TYPE_ACKREQ           (BYTE)1

-

-#define Z_MMIASM_CGEV_TYPE_PRI_PDN_IND            (BYTE)0

-#define Z_MMIASM_CGEV_TYPE_MODIFY_IND             (BYTE)1

-#define Z_MMIASM_CGEV_TYPE_SEC_PDN_IND            (BYTE)2

-#define Z_MMIASM_CGEV_TYPE_OTHER_IND              (BYTE)3

-

-

-/* ÊÇ·ñÖ»Õë¶ÔIPµÄ±ê־λȡֵ */

-#define Z_MMIASM_IP_PPP                           (BYTE)0

-#define Z_MMIASM_ONLY_IP                          (BYTE)1

-

-/* ÉϲãͨµÀ״̬ȡֵ */

-#define Z_MMIASM_CH_IDLE                          (BYTE)0

-#define Z_MMIASM_CH_BUSY                          (BYTE)1

-

-/* ATÃüÁîÀàÐÍ */

-#define Z_MMIASM_CMD_CGCMOD                       (BYTE)0

-#define Z_MMIASM_CMD_ZQNEG                        (BYTE)1

-#define Z_MMIASM_CMD_CGEQNEG                      (BYTE)2

-#define Z_MMIASM_CMD_CGDSCONT                     (BYTE)3

-#define Z_MMIASM_CMD_CGCONTRDP                    (BYTE)4

-#define Z_MMIASM_CMD_CGSCONTRDP                   (BYTE)5

-#define Z_MMIASM_CMD_CGTFTRDP                     (BYTE)6

-#define Z_MMIASM_CMD_CGEQOSRDP                    (BYTE)7

-

-/* MMIAÓëSM/ESM½Ó¿Ú£¬Çø·Ö²»Í¬ATÃüÁî´¥·¢ */

-#define Z_MMIASM_ATCMD_CGACT                      (BYTE)0

-#define Z_MMIASM_ATCMD_ZGACT                      (BYTE)1

-

-/* +CPSB <curr_bearer> ºê¶¨Òå*/

-#define Z_MMIASM_PDP_CURR_BEARER_NO_BEARER                         (BYTE)0

-#define Z_MMIASM_PDP_CURR_BEARER_GPRS                              (BYTE)1

-#define Z_MMIASM_PDP_CURR_BEARER_EGPRS                             (BYTE)2

-#define Z_MMIASM_PDP_CURR_BEARER_NON_HSUPA_UP_NON_HSDPA_DOWN       (BYTE)3

-#define Z_MMIASM_PDP_CURR_BEARER_HSUPA_UP_NON_HSDPA_DOWN           (BYTE)4

-#define Z_MMIASM_PDP_CURR_BEARER_NON_HSUPA_UP_HSDPA_DOWN           (BYTE)5

-#define Z_MMIASM_PDP_CURR_BEARER_HSUPA_UP_HSDPA_DOWN               (BYTE)6

-#define Z_MMIASM_PDP_CURR_BEARER_EPS                               (BYTE)7

-

-

-#define Z_MMIASM_PDP_ACT_CAUSE_IPV4_ONLY_ALLOWED                   (BYTE)50

-#define Z_MMIASM_PDP_ACT_CAUSE_IPV6_ONLY_ALLOWED                   (BYTE)51

-#define Z_MMIASM_PDP_ACT_CAUSE_SINGLE_ADDR_ONLY_ALLOWED            (BYTE)52

-

-/*ZGPCOAUTH <auth_type>ºê¶¨Òå*/

-#define Z_MMIASM_PDP_AUTH_TYPE_NONE                                (BYTE)0

-#define Z_MMIASM_PDP_AUTH_TYPE_PAP                                 (BYTE)1

-#define Z_MMIASM_PDP_AUTH_TYPE_CHAP                                (BYTE)2

-#define Z_MMIASM_PDP_AUTH_TYPE_PAPCHAP                             (BYTE)3

-

-/*T_zMmiaSm_Notification_IndÖÐbNotificationIndºêÖµ*/

-#define Z_MMIASM_SRVCC_HANDOVER_CANCEL_IMS_REESTABLISHMENT          (BYTE)1

-

-#define  Z_MMIASM_MSISDN_LEN                        (BYTE)15

-

-/* PSÒµÎñ°áǨÉÏÏÂÎÄָʾ */

-#define Z_MMIASM_CONTEXT_NULL                     (BYTE)0        /* ÎÞÉÏÏÂÎÄ */

-#define Z_MMIASM_CONTEXT_ESM_VALID                (BYTE)1        /* ESMÉÏÏÂÎÄÓÐЧ */

-#define Z_MMIASM_CONTEXT_SM_VALID                 (BYTE)2        /* SMÉÏÏÂÎÄÓÐЧ */

-

-#define Z_MMIAESM_MAX_PF_NUM                      (BYTE)16        /*Packet FilterµÄÊýÄ¿*/

-

-#define Z_MMIAESM_MAX_CID_NUM                     Z_DEV_AtMem_MAX_CID_NUM  /* ×î´óCID¸öÊý */

-

-#define Z_MMIAESM_ADDR_MAX_LEN                    (BYTE)16        /* PDPµØÖ·×î´ó³¤¶È */

-#define Z_MMIAESM_APN_MAX_LEN                     (BYTE)100       /* APN×î´ó³¤¶È */

-

-/*PDN TYPE*/

-#define Z_MMIAESM_IPV4                            (BYTE)0x21           /* IPv4ÀàÐÍ */

-#define Z_MMIAESM_IPV6                            (BYTE)0x57            /* IPv6ÀàÐÍ */

-#define Z_MMIAESM_IPV4V6                          (BYTE)0x8D            /* IPv4v6ÀàÐÍ */

-

-/* MT רÓü¤»îÇëÇóÓ¦´ðÀàÐÍ */

-#define Z_MMIAESM_MT_DED_ACT_REJ                  (BYTE)0        /* Óû§¾Ü¾øÍøÂç²àרÓü¤»îÇëÇó */

-#define Z_MMIAESM_MT_DED_ACT_ACC                  (BYTE)1        /* Óû§½ÓÊÜÍøÂç²àרÓü¤»îÇëÇó */

-

-/* ´¥·¢²éѯEPS³ÐÔØÉÏÏÂÎĵÄÔ­Òò */

-#define Z_MMIAESM_EPS_STATUS_CGACT                (BYTE)0        /*+CGACT²éѯÃüÁî´¥·¢µÄ²éѯ*/

-

-/* +CGEVÖ÷¶¯Éϱ¨Ê±Éϱ¨µÄ¸üÐÂÔ­Òò*/

-#define Z_MMIAESM_MOD_REASON_TFT_ONLY             (BYTE)1

-#define Z_MMIAESM_MOD_REASON_QOS_ONLY             (BYTE)2

-#define Z_MMIAESM_MOD_REASON_TFT_AND_QOS          (BYTE)3

-

-/* +CGEVÖ÷¶¯Éϱ¨Ê±³ÐÔØÊÇ·ñΪĬÈϳÐÔØµÄ±êʶ*/

-#define Z_MMIAESM_CGEV_PDN_CON                    (BYTE)1

-#define Z_MMIAESM_CGEV_DED_BEARER                 (BYTE)0

-

-

-/* ½á¹ûÂ붨Òå */

-#define Z_MMIAESM_RESULT_CODE_OK               (BYTE)0

-#define Z_MMIAESM_RESULT_CODE_ERROR            (BYTE)1

-#define Z_MMIAESM_RESULT_CODE_NO_CARRIER       (BYTE)2

-#define Z_MMIAESM_RESULT_CODE_CONNECT          (BYTE)3

-

-

-/* ÉϲãͨµÀ״̬ȡֵ */

-#define Z_MMIAESM_CH_IDLE                       (BYTE)0

-#define Z_MMIAESM_CH_BUSY                       (BYTE)1

-

-

-#define Z_MMIAESM_CMD_WITHOUTCID                (BYTE)0

-#define Z_MMIAESM_CMD_WITHCID                   (BYTE)1

-

-

-#define Z_MMIAESM_IPV4_ADDR_LENGTH                  (BYTE)4

-#define Z_MMIAESM_IPV6_ADDR_LENGTH                  (BYTE)16

-

-/*==================================CEER ´íÎóÂë================================*/

-/*24301 Any other value received by the UE shall be treated as 0010 0010, "service option temporarily out of order". */    

-#define Z_APMMIA_CEER_ESM_EPDCP_FAILURE                             (DWORD)0x05/* EPDCP failure */

-#define Z_APMMIA_CEER_ESM_OPERATOR_DETERMINED_BARRING               (DWORD)0x08/* Operator Determined Barring */

-#define Z_APMMIA_CEER_ESM_INSUFFICIENT_RESOURCES                    (DWORD)0x1A/* Insufficient resources */

-#define Z_APMMIA_CEER_ESM_UNKNOWN_MISSING_APN                       (DWORD)0x1B/* Unknown or missing APN */

-#define Z_APMMIA_CEER_ESM_UNKNOWN_PDP_TYPE                          (DWORD)0x1C/* Unknown PDN type */

-#define Z_APMMIA_CEER_ESM_USER_AUTHENTICATION_FAILED                (DWORD)0x1D/* User authentication failed */

-#define Z_APMMIA_CEER_ESM_ACTIVATION_REJECT_GW                      (DWORD)0x1E/* Request rejected by Serving GW or PDN GW */

-#define Z_APMMIA_CEER_ESM_ACTIVATION_REJECT_UNSPECIFIED             (DWORD)0x1F/* Activation rejected, unspecified */

-#define Z_APMMIA_CEER_ESM_SRV_OPTION_NOT_SUPPORTED                  (DWORD)0x20/* Service option not supported */

-#define Z_APMMIA_CEER_ESM_REQUESTED_SRV_OPTION_NOT_SUB              (DWORD)0x21/* Requested service option not subscribed */

-#define Z_APMMIA_CEER_ESM_SRV_OPTION_OUTOF_ORDER                    (DWORD)0x22/* Service option temporarily out of order */

-#define Z_APMMIA_CEER_ESM_PTI_IN_USED                               (DWORD)0x23/* PTI already in use */

-#define Z_APMMIA_CEER_ESM_REGULAR_DEACTIVATION                      (DWORD)0x24/* Regular deactivation */

-#define Z_APMMIA_CEER_ESM_EPSQOS_NOT_ACCEPTED                       (DWORD)0x25/* EPS QoS not accepted */

-#define Z_APMMIA_CEER_ESM_NETWORK_FAILURE                           (DWORD)0x26/* Network failure */

-#define Z_APMMIA_CEER_ESM_REACTIVATION_REQUIRED                     (DWORD)0x27/* Reactivation required */

-#define Z_APMMIA_CEER_ESM_SEMANTIC_ERROR_TFT_OPERATION              (DWORD)0x29/* Semantic error in the TFT operation */

-#define Z_APMMIA_CEER_ESM_SYNTACTICAL_ERROR_TFT_OPERATION           (DWORD)0x2A/* Syntactical error in the TFT operation */

-#define Z_APMMIA_CEER_ESM_INVALID_EPS_BEARER_IDENTITY               (DWORD)0x2B/* Invalid EPS bearer identity */

-#define Z_APMMIA_CEER_ESM_SEMANTIC_ERROR_FILTER                     (DWORD)0x2C/* Semantic errors in packet filter(s) */

-#define Z_APMMIA_CEER_ESM_SYNTACTICAL_ERROR_FILTER                  (DWORD)0x2D/* Syntactical errors in packet filter */

-#define Z_APMMIA_CEER_ESM_PTI_MISMATCH                              (DWORD)0x2F/*PTI mismatch */

-#define Z_APMMIA_CEER_ESM_LAST_PDN_DISCONNECTION_NOT_ALLOWED        (DWORD)0x31/*Last PDN disconnection not allowed */

-#define Z_APMMIA_CEER_ESM_PDN_TYPE_IPV4_ONLY_ALOOWED                (DWORD)0x32/*PDN type IPv4 only allowed */

-#define Z_APMMIA_CEER_ESM_PDN_TYPE_IPV6_ONLY_ALOOWED                (DWORD)0x33/*PDN type IPv6 only allowed */

-#define Z_APMMIA_CEER_ESM_SINGLE_ADDRESS_BEARERS_ONLY_ALOOWED       (DWORD)0x34/*Single address bearers only allowed */

-#define Z_APMMIA_CEER_ESM_ESM_INFORMATION_NOT_RECEIVED              (DWORD)0x35/*ESM information not received */

-#define Z_APMMIA_CEER_ESM_PDN_CONNECTION_NOT_EXIST                  (DWORD)0x36/*PDN connection does not exist */

-#define Z_APMMIA_CEER_ESM_MUL_PDN_CONNECTIONS_NOT_ALOOWED_FOR_APN   (DWORD)0x37/*Multiple PDN connections for a given APN not allowed*/

-#define Z_APMMIA_CEER_ESM_COLLISION_WITH_NETWORK_INITIAED_REQ       (DWORD)0x38/*Collision with network initiated request*/

-#define Z_APMMIA_CEER_ESM_UNSUPPORTED_QCI_VALUE                     (DWORD)0x3B/*Unsupported QCI value*/

-#define Z_APMMIA_CEER_ESM_BEARER_HANDLING_NOT_SUPPORTED             (DWORD)0x3C/*Bearer handling not supported*/

-#define Z_APMMIA_CEER_ESM_MAXNUM_EPS_BEARERS_REACHED                (DWORD)0x41/* Maximum number of EPS bearers reached */

-#define Z_APMMIA_CEER_ESM_REQUEST_APN_NOT_SUPPORT_IN_CURRENT_RAT_PLMN (DWORD)0x42/* Requested APN not supported in current RAT and PLMN combination */

-#define Z_APMMIA_CEER_ESM_INVALID_PTI_VALUE                         (DWORD)0x51/* Invalid PTI value */

-#define Z_APMMIA_CEER_ESM_SEMANTICLY_INCORRECT_MESSAGE              (DWORD)0x5F/* Semantically incorrect message */

-#define Z_APMMIA_CEER_ESM_INVALID_MANDATORY_INFORMATION             (DWORD)0x60/* Invalid mandatory information */

-#define Z_APMMIA_CEER_ESM_MSG_TYPE_NONEXIST_NOT_IMPLEMENTED         (DWORD)0x61/* Message type non-existent or not implemented */

-#define Z_APMMIA_CEER_ESM_MSG_TYPE_NOT_COMPATIBLE                   (DWORD)0x62/* Message type not compatible with the protocol state */

-#define Z_APMMIA_CEER_ESM_INFO_NONEXIST_NOT_IMPLEMENTED             (DWORD)0x63/* Information element non-existent or not implemented */

-#define Z_APMMIA_CEER_ESM_CONDITIONAL_IE_ERROR                      (DWORD)0x64/* Conditional IE error */

-#define Z_APMMIA_CEER_ESM_MESSAGE_NOT_COMPATIBLE                    (DWORD)0x65/* Message not compatible with the protocol state */

-#define Z_APMMIA_CEER_ESM_PROTOCOL_ERROR_UNSPECIFIED                (DWORD)0x6F/* Protocol error, unspecified */

-#define Z_APMMIA_CEER_ESM_APN_VALUE_INCOMPATIBLE_ACTIVE_EPS_BEARER  (DWORD)0x70/* APN restriction value incompatible with active EPS bearer context*/

-#define Z_APMMIA_CEER_ESM_MULTIPLE_ACCESSES_APN_NOT_ALLOW           (DWORD)0x71/* Multiple accesses to a PDN connection not allowed */

-#define Z_APMMIA_CEER_ESM_PDP_HANDLE_ABORT                          (DWORD)0xD0/* Abort by user */

-#define Z_APMMIA_CEER_ESM_PDP_HANDLE_FAIL                           (DWORD)0xD1/* Handle failure */

-#define Z_APMMIA_CEER_ESM_EPS_BEARER_LOCAL_DEACTIVE                 (DWORD)0xD2/* Eps Bearer Local deactive */

-#define Z_APMMIA_CEER_ESM_PDP_NO_SUITABLE_CID                       (DWORD)0xD3/* No suitable cid*/

-#define Z_APMMIA_CEER_ESM_EMERGENCY_ACT_NOT_ALLOW                   (DWORD)0xD4/*Emergency activation not allowed or emergency bear existent already*/

-#define Z_APMMIA_CEER_ESM_L3_MSG_TIMER_FIFTH_EXPIRY                 (DWORD)0xD5/*L3 message timer fifth expiry*/

-#define Z_APMMIA_CEER_ESM_PDP_NOAPN_INACL                           (DWORD)0xD6/*No APN or APN in ACL*/

-#define Z_APMMIA_CEER_ESM_DEACT_ALL_PDN_CONN_NOT_ALLOW              (DWORD)0xD7/*Deactive all PDN connection is not allowed*/

-

-#define    ZSTM_STORAGE_ID_PB_DC      (BYTE)0
-#define    ZSTM_STORAGE_ID_PB_EN      (BYTE)1
-#define    ZSTM_STORAGE_ID_PB_FD      (BYTE)2
-#define    ZSTM_STORAGE_ID_PB_LD      (BYTE)3
-#define    ZSTM_STORAGE_ID_PB_MC      (BYTE)4
-#define    ZSTM_STORAGE_ID_PB_ME      (BYTE)5
-#define    ZSTM_STORAGE_ID_PB_MT      (BYTE)6
-#define    ZSTM_STORAGE_ID_PB_ON      (BYTE)7
-#define    ZSTM_STORAGE_ID_PB_RC      (BYTE)8
-#define    ZSTM_STORAGE_ID_PB_SM      (BYTE)9
-#define    ZSTM_STORAGE_ID_PB_TA      (BYTE)10
-#define    ZSTM_STORAGE_ID_PB_AP      (BYTE)11
-#define    ZSTM_STORAGE_ID_PBMAX      (BYTE)12
-#define    ZSTM_STORAGE_ID_PBINVALID  (BYTE)ZSTM_STORAGE_ID_PBMAX

-

-#define ZATI2_ECC_MAXNUM        8

-#define ZATI2_CPMSMEM_USIM_MAX_NUM   300

-/* 

- * fac(CLCK, CPWD) TS 27.007

- * ¶ÔÓÚSSÀ´Ëµ£¬Ö»Ê¹ÓÃAO, OI, OX, AI, IR, AB, AG, AC

-*/

-#define Z_APMMIA_FACVALUE_CS                     (BYTE)0

-#define Z_APMMIA_FACVALUE_PS                     (BYTE)1

-#define Z_APMMIA_FACVALUE_PF                     (BYTE)2

-#define Z_APMMIA_FACVALUE_SC                     (BYTE)3  /*ÔÚCPWDÖжÔӦΪZPS_ApUicc_PIN1TYPE*/

-#define Z_APMMIA_FACVALUE_AO                     (BYTE)4

-#define Z_APMMIA_FACVALUE_OI                     (BYTE)5

-#define Z_APMMIA_FACVALUE_OX                     (BYTE)6

-#define Z_APMMIA_FACVALUE_AI                     (BYTE)7

-#define Z_APMMIA_FACVALUE_IR                     (BYTE)8

-#define Z_APMMIA_FACVALUE_NT                     (BYTE)9

-#define Z_APMMIA_FACVALUE_NM                     (BYTE)10

-#define Z_APMMIA_FACVALUE_NS                     (BYTE)11         

-#define Z_APMMIA_FACVALUE_NA                     (BYTE)12           

-#define Z_APMMIA_FACVALUE_AB                     (BYTE)13      

-#define Z_APMMIA_FACVALUE_AG                     (BYTE)14 

-#define Z_APMMIA_FACVALUE_AC                     (BYTE)15

-#define Z_APMMIA_FACVALUE_FD                     (BYTE)16

-#define Z_APMMIA_FACVALUE_PN                     (BYTE)17

-#define Z_APMMIA_FACVALUE_PU                     (BYTE)18

-#define Z_APMMIA_FACVALUE_PP                     (BYTE)19

-#define Z_APMMIA_FACVALUE_PC                     (BYTE)20

-#define Z_APMMIA_FACVALUE_P2                     (BYTE)21 /*ÔÚCPWDÖжÔӦΪZPS_ApUicc_PIN2TYPE*/             

-

-/* ´æ´¢¹ÜÀíÄ£¿éÅжϺÅÂëµÄÀàÐÍ */                                                                                                           

-#define Z_APMMIA_NUMTYPE_UNALLOWCALL_BDN          (BYTE)0     /*²»ÔÊÐíºô½Ð*/                                                             

-#define Z_APMMIA_NUMTYPE_UNALLOWCALL_FDN          (BYTE)1     /*²»ÔÊÐíºô½Ð*/                                                             

-#define Z_APMMIA_NUMTYPE_ECCCALL                  (BYTE)2     /*½ô¼±ºÅÂëºô½Ð */                                                          

-#define Z_APMMIA_NUMTYPE_NORMCALL                 (BYTE)3     /*ÆÕͨºô½Ð*/                                                               

-#define Z_APMMIA_NUMTYPE_UNKNOWN                  (BYTE)4     /* δ֪ºÅÂëÀàÐÍ*/                                                          

-#define Z_APMMIA_NUMTYPE_ECCINFDN                 (BYTE)5

-#define Z_APMMIA_NUMTYPE_ECCNOTINFDN              (BYTE)6

-

-/*Ò»°ã´íÎóÂ룬¶ÔÓ¦27007 9.2.1*/

-#define Z_APMMIA_PHONEFAIL_ERR                 (DWORD)0

-#define Z_APMMIA_NOCONNTOPHONE_ERR             (DWORD)1

-#define Z_APMMIA_PHONEADPTLINKRESVED_ERR       (DWORD)2

-#define Z_APMMIA_OPTNOTALW_ERR                 (DWORD)3

-#define Z_APMMIA_OPTNOTSPT_ERR                 (DWORD)4

-#define Z_APMMIA_PHSIMPINREQUIRED_ERR          (DWORD)5

-#define Z_APMMIA_PHFSIMPINREQUIRED_ERR         (DWORD)6

-#define Z_APMMIA_PHSIMPUKREQUIRED_ERR          (DWORD)7

-#define Z_APMMIA_NOSIM_ERR                     (DWORD)10

-#define Z_APMMIA_NEEDPIN_ERR                   (DWORD)11

-#define Z_APMMIA_NEEDPUK_ERR                   (DWORD)12

-#define Z_APMMIA_SIMFAILURE_ERR                (DWORD)13

-#define Z_APMMIA_SIMBUSY_ERR                   (DWORD)14

-#define Z_APMMIA_SIMWRONG_ERR                  (DWORD)15

-#define Z_APMMIA_INCRCTPWDERR                  (DWORD)16

-#define Z_APMMIA_NEEDPIN2_ERR                  (DWORD)17

-#define Z_APMMIA_NEEDPUK2_ERR                  (DWORD)18

-#define Z_APMMIA_MEMFULL_ERR                   (DWORD)20

-#define Z_APMMIA_INVALIDINDEX_ERR              (DWORD)21

-#define Z_APMMIA_NOTFOUND_ERR                  (DWORD)22

-#define Z_APMMIA_NVFAILURE_ERR                 (DWORD)23

-#define Z_APMMIA_TEXTSTRTOOLONG_ERR            (DWORD)24

-#define Z_APMMIA_INVALIDTEXTCHAR_ERR           (DWORD)25

-#define Z_APMMIA_DIALSTRTOOLONG_ERR            (DWORD)26

-#define Z_APMMIA_INVALIDDIALCHAR_ERR           (DWORD)27

-#define Z_APMMIA_NONETSRV_ERR                  (DWORD)30

-#define Z_APMMIA_NETTIMOUT_ERR                 (DWORD)31

-#define Z_APMMIA_NETNOTALLOWED_ERR             (DWORD)32

-#define Z_APMMIA_NETPERPINREQ_ERR              (DWORD)40

-#define Z_APMMIA_NETPERPUKREQ_ERR              (DWORD)41

-#define Z_APMMIA_NETSUBPERPINREQ_ERR           (DWORD)42

-#define Z_APMMIA_NETSUBPERPUKREQ_ERR           (DWORD)43

-#define Z_APMMIA_SERPROPERPINREQ_ERR           (DWORD)44

-#define Z_APMMIA_SERPROPERPUKREQ_ERR           (DWORD)45

-#define Z_APMMIA_CONPROPINREQ_ERR              (DWORD)46

-#define Z_APMMIA_CONPROPUKREQ_ERR              (DWORD)47

-#define Z_APMMIA_HIDDENKEYREQ_ERR              (DWORD)48

-

-#define Z_APMMIA_EAPMETHODNOTSUPPORT_ERR       (DWORD)49

-#define Z_APMMIA_UNKNOWN_ERR                   (DWORD)100

-

-/* additional +CMS ERROR:<err> failure cause define.27005 3.2.5 */

-#define Z_APMMIA_CMSSMSSVCRSV_ERR              (DWORD)301

-#define Z_APMMIA_CMSMEFAILURE_ERR              (DWORD)300

-#define Z_APMMIA_CMSOPTNOTALLOW_ERR            (DWORD)302 

-#define Z_APMMIA_CMSOPTNOTSPT_ERR              (DWORD)303              

-#define Z_APMMIA_CMSINVALIDPDUPARA_ERR         (DWORD)304          

-#define Z_APMMIA_CMSINVALIDTEXTPARA_ERR        (DWORD)305              

-#define Z_APMMIA_CMSUSIMNOTINSERT_ERR          (DWORD)310         

-#define Z_APMMIA_CMSUSIMPINREQ_ERR             (DWORD)311       

-#define Z_APMMIA_CMSPHUSIMPINREQ_ERR           (DWORD)312          

-#define Z_APMMIA_CMSUSIMFAIL_ERR               (DWORD)313                 

-#define Z_APMMIA_CMSUSIMBUSY_ERR               (DWORD)314                   

-#define Z_APMMIA_CMSUSIMWRONG_ERR              (DWORD)315             

-#define Z_APMMIA_CMSUSIMPUKREQ_ERR             (DWORD)316             

-#define Z_APMMIA_CMSUSIMPIN2REQ_ERR            (DWORD)317                

-#define Z_APMMIA_CMSUSIMPUK2REQ_ERR            (DWORD)318    

-#define Z_APMMIA_CMSMEMFAIL_ERR                (DWORD)320             

-#define Z_APMMIA_CMSINVALIDMEM_ERR             (DWORD)321          

-#define Z_APMMIA_CMSMEMFULL_ERR                (DWORD)322       

-#define Z_APMMIA_CMSSCAUNKNOWN_ERR             (DWORD)330

-#define Z_APMMIA_CMSNONETWORKSVC_ERR           (DWORD)331           

-#define Z_APMMIA_CMSNETWORKTIMEOUT_ERR         (DWORD)332   

-#define Z_APMMIA_CMSNOCNMAACK_ERR              (DWORD)340

-#define Z_APMMIA_CMSUNKNOWN_ERR                (DWORD)500  /* other values are reserved.*/

-#define Z_APMMIA_CMSMOABORTOK_ERR              (DWORD)501  /* MO SM aborted ok*/

-#define Z_APMMIA_CMSNOTMATCH_ERR               (DWORD)502

-

-/* SMSʧ°ÜÔ­Òò 24011 23040 27005 */

-/* AT Command failuer define,value map to <err> in +CMS ERROR:<err>.*/

-/* RP Layer failuer cause define. 24011 cause E2*/

-#define Z_APMMIA_RPUNASSIGNEDNUM_ERR           (DWORD)1    /* for MO.*/

-#define Z_APMMIA_RPOPERATORDETREMBAR_ERR       (DWORD)8    /* for MO.*/

-#define Z_APMMIA_RPCALLBARRED_ERR              (DWORD)10   /* for MO.*/

-#define Z_APMMIA_RPSMTRANSFERREJ_ERR           (DWORD)21   /* for MO.*/

-#define Z_APMMIA_RPMEMCAPACEXCEED_ERR          (DWORD)22   /* for MT.*/

-#define Z_APMMIA_RPDESTINATIONOUTOFORDER_ERR   (DWORD)27   /* for MO.*/

-#define Z_APMMIA_RPUNIDENTISUBSCRIBER_ERR      (DWORD)28   /* for MO.*/

-#define Z_APMMIA_RPFACILITYREJ_ERR             (DWORD)29   /* for MO.*/

-#define Z_APMMIA_RPUNKNOWNSUBSCRIBER_ERR       (DWORD)30   /* for MO,SMMA.*/

-#define Z_APMMIA_RPNETWORKOUTOFORDER_ERR       (DWORD)38   /* for MO,SMMA.*/

-#define Z_APMMIA_RPTEMPORARYFAILURE_ERR        (DWORD)41   /* for MO,SMMA.*/

-#define Z_APMMIA_RPCONGESTION_ERR              (DWORD)42   /* for MO,SMMA.*/

-#define Z_APMMIA_RPRSCUNAVAILABLE_ERR          (DWORD)47   /* for MO,SMMA.*/

-#define Z_APMMIA_RPFACNOTSUB_ERR               (DWORD)50   /* for MO.*/

-#define Z_APMMIA_RPFACNOTIMP_ERR               (DWORD)69   /* for MO,SMMA.*/

-#define Z_APMMIA_RPINVALIDSMMR_ERR             (DWORD)81   /* for MO,MT.*/

-#define Z_APMMIA_RPINCORRECTMSG_ERR            (DWORD)95   /* for MO,SMMA,MT.*/

-#define Z_APMMIA_RPINVALIDMANDAINFO_ERR        (DWORD)96   /* for MO,SMMA,MT.*/

-#define Z_APMMIA_RPMSGTYPENOTEXIST_ERR         (DWORD)97   /* for MO,SMMA,MT.*/

-#define Z_APMMIA_RPMSGNOTCMPPROSTATE_ERR       (DWORD)98   /* for MO,SMMA,MT.*/

-#define Z_APMMIA_RPIENOTEXIST_ERR              (DWORD)99   /* for MO,SMMA,MT.*/

-#define Z_APMMIA_RPPROTOCOL_ERR                (DWORD)111  /* for MO,SMMA,MT.*/

-#define Z_APMMIA_RPINTERWORKING_ERR            (DWORD)127  /* for MO,SMMA.*/ 

-                                                             /* 

-                                                             * in MO & SNMA :other values are treated as 41# .

-                                                             * in MT        :other values are treated as 111#.

-                                                             */ 

-/* TP Layer failure cause define. 23040 9.2.3.22*/ 

-#define Z_APMMIA_TPTELEINTERWORKINGNOTSPT_ERR  (DWORD)128  /* for MO.*/

-#define Z_APMMIA_TPSMTYPE0NOTSPT_ERR           (DWORD)129  /* for MO,MT.*/

-#define Z_APMMIA_TPCANTREPLACESM_ERR           (DWORD)130  /* for MO,MT*/

-#define Z_APMMIA_TPID_ERR                      (DWORD)143  /* for MO,MT*/

-#define Z_APMMIA_TPDCSNOTSPT_ERR               (DWORD)144  /* for MO.*/

-#define Z_APMMIA_TPMSGCLASSNOTSPT_ERR          (DWORD)145  /* for MT.*/

-#define Z_APMMIA_TPDCS_ERR                     (DWORD)159  /* for MO,MT*/

-#define Z_APMMIA_TPCOMMANDCANTACT_ERR          (DWORD)160  /* for MO.*/

-#define Z_APMMIA_TPCOMMANDUNSUPPORTED_ERR      (DWORD)161  /* for MO.*/

-#define Z_APMMIA_TPCOMMAND_ERR                 (DWORD)175  /* for MO.*/

-#define Z_APMMIA_TPTPDUNOTSPT_ERR              (DWORD)176  /* for MO,MT.*/    

-#define Z_APMMIA_TPSCBUSY_ERR                  (DWORD)192  /* for MO.*/

-#define Z_APMMIA_TPNOSCSUB_ERR                 (DWORD)193  /* for MO.*/

-#define Z_APMMIA_TPSCSYSTEMFAIL_ERR            (DWORD)194  /* for MO.*/

-#define Z_APMMIA_TPINVALIDSMEADDR_ERR          (DWORD)195  /* for MO.*/

-#define Z_APMMIA_TPDESTSMEBARRED_ERR           (DWORD)196  /* for MO.*/

-#define Z_APMMIA_TPSMDUPLIREJ_ERR              (DWORD)197  /* for MO.*/

-#define Z_APMMIA_TPVPFNOTSPT_ERR               (DWORD)198  /* for MO.*/

-#define Z_APMMIA_TPVPNOTSPT_ERR                (DWORD)199  /* for MO.*/

-#define Z_APMMIA_TPUSIMMEMFULL_ERR             (DWORD)208  /* for MT.*/

-#define Z_APMMIA_TPNOSMSMEMCAPA_ERR            (DWORD)209  /* for MT.*/ 

-#define Z_APMMIA_TPERRINMS_ERR                 (DWORD)210  /* for MT.*/

-#define Z_APMMIA_TPMEMCAPAEXCEED_ERR           (DWORD)211  /* for MT.*/      

-#define Z_APMMIA_TPUSIMAPPBUSY_ERR             (DWORD)212  /* for MT.*/

-#define Z_APMMIA_TPUSIMDOWNLOAD_ERR            (DWORD)213  /* for MT.*/  

-#define Z_APMMIA_TPUNSPECERRCAUSE_ERR          (DWORD)255  /* for MO,MT.*/

-                                                                            /* other values are reserved.*/

-

-/* add for LockCell Fail Cause */

-/* Invalid operation use Z_APMMIA_OPTNOTALW_ERR */

-/* network failure use Z_APMMIA_NETWORKFAILURE_ERR */

-#define Z_APMMIA_EM_PLMNNOTALW_ERR             (DWORD)257

-#define Z_APMMIA_EM_LANOTALW_ERR               (DWORD)258

-#define Z_APMMIA_EM_CELLBARRED_ERR             (DWORD)259

-#define Z_APMMIA_NUMTOOLONG_ERR                (DWORD)300

-

-    /* DelFlg of +CMGD Command */                         

-#define Z_APMMIA_SMSDELFLG_BYIDX               (BYTE)0  

-#define Z_APMMIA_SMSDELFLG_READ                (BYTE)1  

-#define Z_APMMIA_SMSDELFLG_READSEND            (BYTE)2  

-#define Z_APMMIA_SMSDELFLG_READSENDUNSEND      (BYTE)3  

-#define Z_APMMIA_SMSDELFLG_ALL                 (BYTE)4  

-

-    /* T_zPS_APMMIA_SmsMsgContent ÁªºÏµÄ±êʶ */           

-#define Z_APMMIA_CMGLRLT_PSMS                (BYTE)0 

-#define Z_APMMIA_CMGLRLT_TDEL                (BYTE)1

-#define Z_APMMIA_CMGLRLT_TSUB                (BYTE)2

-#define Z_APMMIA_CMGLRLT_TSR                 (BYTE)3

-#define Z_APMMIA_CMGLRLT_TCOM                (BYTE)4

-#define Z_APMMIA_CMGLRLT_TCBM                (BYTE)5

-#define Z_APMMIA_CMGLRLT_PCBM                (BYTE)6

-#define Z_APMMIA_CMGLRLT_COMM                (BYTE)7

-

-    /* T_zPS_APMMIA_PbCommon_Cnf ±êʶ */                

-#define   Z_APMMIA_PBCOMMCNF_MEMCAPA            (BYTE)1   /* Z_APMMIA_PbMemCapaReq_Ev */

-

-    /* Message state */                                

-#define Z_APMMIA_MSGSTAT_RECUNREAD               (BYTE)0

-#define Z_APMMIA_MSGSTAT_RECREAD                 (BYTE)1

-#define Z_APMMIA_MSGSTAT_STOUNSENT               (BYTE)2

-#define Z_APMMIA_MSGSTAT_STOSENT_NOSTATRPT       (BYTE)3

-#define Z_APMMIA_MSGSTAT_ALL                     (BYTE)4

-#define Z_APMMIA_MSGSTAT_STOSENT_STATRPTNOTRCV   (BYTE)5

-#define Z_APMMIA_MSGSTAT_STOSENT_STATRPTSTOOTHR  (BYTE)6

-#define Z_APMMIA_MSGSTAT_STOSENT_STATRPTSTOSMSR  (BYTE)7

-

-/* Íø²à½ô¼±ºÅÂë×Ö½ÚÊý£¬¸ù¾Ýl3½á¹¹¶¨ */

-#define Z_APMMIA_ECC_MAXNUM                       (BYTE)8

-#define Z_APMMIA_PIN_LEN                       (BYTE)8

-/*ͨÓó¤¶Èºê¶¨Òå*/

-#define Z_APMMIA_MAX_CALLNAME_LEN                 (BYTE)241   /* ´Óµç»°²¾ºô½ÐµÄÐÕÃû³¤¶È */

-#define Z_APMMIA_MAX_EMAIL_LEN                 (BYTE)250

-#define Z_APMMIA_MAX_GAS_LEN                   (BYTE)250

-#define Z_APMMIA_MAX_SNE_LEN                   (BYTE)250

-#define Z_APMMIA_CNUM_MAXCOUNT                (BYTE)10  /* cnum ×î´ó¸öÊý */

-/* ÃÜÂ볤¶ÈÉÏÏÞ*/

-#define Z_APMMIA_MAX_PASSWD_LEN             (BYTE)8

-#define Z_APMMIA_CUR_TYPE_EFNUM                (BYTE)3

-#define Z_APMMIA_PB_CAPA_MAX_NUM               (BYTE)3

-

-/* ±¨¸øPB½ô¼±ºÅÂëµÄÊý×é´óС */

-#define Z_APMMIA_ECCNUM_NOCARD                    (BYTE)10    /* ÎÞ¿¨Ê±µÄ¸öÊý */

-#define Z_APMMIA_ECCNUM_CARD                      (BYTE)22    /* Óп¨¸öÊý£¬Íø²à×î¶à10¸ö£¬NVÔÝʱÎÞ*/

-#define Z_APMMIA_ECCNUM_MAX                       (BYTE)10     /*Íø²â½ô¼±ºÅÂë×î´ó¸öÊý*/

-/* SMS´æ´¢Æ÷×î´ó¸öÊý */                            

-#define Z_APMMIA_SMSMEM_MAX_RANGE              (BYTE)6

-

-#define Z_MMIASMS_MAX_PDU_LEN                 (BYTE)176

-#define Z_MMIASMS_MAX_TPDU_LEN                (BYTE)164

-#define Z_APMMIA_MAX_ADDRVALUE_LEN                (BYTE)10

-#define Z_APMMIA_MAX_SMSPDU_LEN                   (BYTE)176

-#define Z_APMMIA_CBS_MAX_TEXT_PAGE_LEN         (BYTE)82   /*TEXTģʽÏ£¬µ¥Ò³×î´ó³ÐÔØ×Ö½ÚÊý*/

-#define Z_APMMIA_CBS_MAX_PDU_PAGE_LEN          (BYTE)88   /*PDUģʽÏ£¬µ¥Ò³×î´ó³ÐÔØ×Ö½ÚÊý*/

-

-/**************************************************************************

- *                               È«¾Öºê¶¨Òå                               *

- **************************************************************************/

-/* CP Layer error define.*/

-#define Z_MMIASMS_CP_NW_FAILURE               (DWORD)17

-#define Z_MMIASMS_CP_CONGESTION               (DWORD)22

-#define Z_MMIASMS_CP_INVALID_TI               (DWORD)81

-#define Z_MMIASMS_CP_SEMAN_INCOR              (DWORD)95

-#define Z_MMIASMS_CP_INVAL_MAND_IE            (DWORD)96

-#define Z_MMIASMS_CP_TYPE_NONEXIST            (DWORD)97

-#define Z_MMIASMS_CP_STATE_NOT_SUP            (DWORD)98

-#define Z_MMIASMS_CP_IE_NONEXIST              (DWORD)99

-#define Z_MMIASMS_CP_PROTO_ERR                (DWORD)111  

-

-/* RP Layer error define.*/

-#define Z_MMIASMS_RP_UNASSIGN_NUM             (DWORD)1        /* for MO.*/

-#define Z_MMIASMS_RP_OPERATOR_BAR             (DWORD)8        /* for MO.*/

-#define Z_MMIASMS_RP_CALL_BARRED              (DWORD)10       /* for MO.*/

-#define Z_MMIASMS_RP_TRANSF_REJ               (DWORD)21       /* for MO.*/

-#define Z_MMIASMS_RP_MEM_CAPA_EXCE            (DWORD)22       /* for MT.*/

-#define Z_MMIASMS_RP_DESTNATION_OUT           (DWORD)27       /* for MO.*/

-#define Z_MMIASMS_RP_UNIDENTI_SUBSC           (DWORD)28       /* for MO.*/

-#define Z_MMIASMS_RP_FACILITY_REJ             (DWORD)29       /* for MO.*/

-#define Z_MMIASMS_RP_UNKNOWN_SUBSC            (DWORD)30       /* for MO,SMMA(P).*/

-#define Z_MMIASMS_RP_NW_OUT_ORDER             (DWORD)38       /* for MO,SMMA(T).*/

-#define Z_MMIASMS_RP_TEMPORARY_FAIL           (DWORD)41       /* for MO,SMMA(T).*/

-#define Z_MMIASMS_RP_CONGESTION               (DWORD)42       /* for MO,SMMA(T).*/

-#define Z_MMIASMS_RP_RESOUR_UNAVAIL           (DWORD)47       /* for MO,SMMA(T).*/

-#define Z_MMIASMS_RP_FACI_NONSUB              (DWORD)50       /* for MO.*/

-#define Z_MMIASMS_RP_FACI_NONIMP              (DWORD)69       /* for MO,SMMA(P).*/

-#define Z_MMIASMS_RP_INVAL_SM_MR              (DWORD)81       /* for MO,MT.*/

-#define Z_MMIASMS_RP_INVAL_MSG                (DWORD)95       /* for MO,SMMA(P),MT.*/

-#define Z_MMIASMS_RP_INVAL_MAND_IE            (DWORD)96       /* for MO,SMMA(P),MT.*/

-#define Z_MMIASMS_RP_TYPE_NONEXIST            (DWORD)97       /* for MO,SMMA(P),MT.*/

-#define Z_MMIASMS_RP_STATE_NOT_SUP            (DWORD)98       /* for MO,SMMA(P),MT.*/

-#define Z_MMIASMS_RP_IE_NONEXIST              (DWORD)99       /* for MO,SMMA(P),MT.*/

-#define Z_MMIASMS_RP_PROTO_ERR                (DWORD)111      /* for MO,SMMA(P),MT.*/

-#define Z_MMIASMS_RP_IW_UNSPEC                (DWORD)127      /* for MO,SMMA(P).*/

-                                                                

-/* TP Layer failure cause define.*/ 

-#define Z_MMIASMS_FCS_IW_FAIL                 (DWORD)128        /* for MO.*/

-#define Z_MMIASMS_FCS_TYPE0_FAIL              (DWORD)129        /* for MO,MT.*/

-#define Z_MMIASMS_FCS_CANNOT_REPL             (DWORD)130        /* for MO,MT*/

-#define Z_MMIASMS_FCS_TPPID_ERR               (DWORD)143        /* for MO,MT*/

-#define Z_MMIASMS_FCS_TPDCS_NOT_SUP           (DWORD)144        /* for MO.*/

-#define Z_MMIASMS_FCS_CLASS_NOT_SUP           (DWORD)145        /* for MT.*/

-#define Z_MMIASMS_FCS_TPDCS_ERR               (DWORD)159        /* for MO,MT*/

-#define Z_MMIASMS_FCS_CMD_NOT_ACT             (DWORD)160        /* for MO.*/

-#define Z_MMIASMS_FCS_CMD_NOT_SUP             (DWORD)161        /* for MO.*/

-#define Z_MMIASMS_FCS_CMD_ERR                 (DWORD)175        /* for MO.*/

-#define Z_MMIASMS_FCS_TPDU_NOT_SUP            (DWORD)176        /* for MO,MT.*/

-#define Z_MMIASMS_FCS_SC_BUSY                 (DWORD)192        /* for MO.*/

-#define Z_MMIASMS_FCS_NO_SC_SUBSC             (DWORD)193        /* for MO.*/

-#define Z_MMIASMS_FCS_SC_SYS_FAIL             (DWORD)194        /* for MO.*/

-#define Z_MMIASMS_FCS_INVAL_ADDR              (DWORD)195        /* for MO.*/

-#define Z_MMIASMS_FCS_DEST_BAR                (DWORD)196        /* for MO.*/

-#define Z_MMIASMS_FCS_SM_REJ_DUPLI            (DWORD)197        /* for MO.*/

-#define Z_MMIASMS_FCS_TPVPF_NOT_SUP           (DWORD)198        /* for MO.*/

-#define Z_MMIASMS_FCS_TPVP_NOT_SUP            (DWORD)199        /* for MO.*/

-#define Z_MMIASMS_FCS_USIM_MEM_FULL           (DWORD)208        /* for MT.*/

-#define Z_MMIASMS_FCS_NO_MEM_CAPA             (DWORD)209        /* for MT.*/

-#define Z_MMIASMS_FCS_ERR_IN_MS               (DWORD)210        /* for MT.*/

-#define Z_MMIASMS_FCS_MEM_CAPA_EXCE           (DWORD)211        /* for MT.*/

-#define Z_MMIASMS_FCS_USIM_APP_BUSY           (DWORD)212        /* for MT.*/

-#define Z_MMIASMS_FCS_USIM_DL_ERR             (DWORD)213        /* for MT.*/

-#define Z_MMIASMS_FCS_UNSPEC_ERR              (DWORD)255        /* for MO,MT.*/

-                                                                 

-/* additional +CMS ERROR:<err> failure cause define.*/

-#define Z_MMIASMS_CMS_ME_FAIL                 (DWORD)300        

-#define Z_MMIASMS_CMS_SRV_RESERV              (DWORD)301 

-#define Z_MMIASMS_CMS_OPER_NOT_ALLOW          (DWORD)302 

-#define Z_MMIASMS_CMS_OPER_NOT_SUP            (DWORD)303

-#define Z_MMIASMS_CMS_INVAL_PDU_PARA          (DWORD)304

-#define Z_MMIASMS_CMS_INVAL_TEXT_PARA         (DWORD)305

-#define Z_MMIASMS_CMS_USIM_NOT_INSERT         (DWORD)310

-#define Z_MMIASMS_CMS_USIM_PIN_REQ            (DWORD)311

-#define Z_MMIASMS_CMS_PH_USIM_PIN_REQ         (DWORD)312

-#define Z_MMIASMS_CMS_USIM_FAIL               (DWORD)313

-#define Z_MMIASMS_CMS_USIM_BUSY               (DWORD)314

-#define Z_MMIASMS_CMS_USIM_ERONG              (DWORD)315

-#define Z_MMIASMS_CMS_USIM_PUK_REQ            (DWORD)316

-#define Z_MMIASMS_CMS_USIM_PIN2_REQ           (DWORD)317

-#define Z_MMIASMS_CMS_USIM_PUK2_REQ           (DWORD)318

-#define Z_MMIASMS_CMS_MEM_FAIL                (DWORD)320

-#define Z_MMIASMS_CMS_INVAL_INDEX             (DWORD)321

-#define Z_MMIASMS_CMS_MEM_FULL                (DWORD)322

-#define Z_MMIASMS_CMS_SCA_UNKNOWN             (DWORD)330

-#define Z_MMIASMS_CMS_NO_NW_SRV               (DWORD)331

-#define Z_MMIASMS_CMS_NW_TIMEOUT              (DWORD)332

-#define Z_MMIASMS_CMS_NO_CNMA_ACK             (DWORD)340

-#define Z_MMIASMS_CMS_UNKNOWN_ERR             (DWORD)500               

-#define Z_MMIASMS_CMS_USER_ABORT_ERR          (DWORD)501 

-

-/* MO SMS CS/PS service path.*/

-#define Z_MMIASMS_SERVICE_PS_ONLY                   (BYTE)0 

-#define Z_MMIASMS_SERVICE_CS_ONLY                   (BYTE)1 

-#define Z_MMIASMS_SERVICE_PS_PREFER                 (BYTE)2 

-#define Z_MMIASMS_SERVICE_CS_PREFER                 (BYTE)3

-

-/* Concatenating or SMMA SM link transfer choice.*/

-#define Z_MMIASMS_MMS_LINK_DISABLE                  (BYTE)0    

-#define Z_MMIASMS_MMS_LINK_ENABLE_AS                (BYTE)1  

-#define Z_MMIASMS_MMS_LINK_ENABLE_MS                (BYTE)2 

-

-/* parameter ackmode define .*/

-#define Z_MMIASMS_CNMA_OK                           (BYTE)0 

-#define Z_MMIASMS_CNMA_RPACK                        (BYTE)1 

-#define Z_MMIASMS_CNMA_RPERROR                      (BYTE)2 

-

-/* parameter <mt> of +CNMI Command.*/

-#define Z_MMIASMS_CNMIMT_NOROUTE                    (BYTE)0

-#define Z_MMIASMS_CNMIMT_STOREIND                   (BYTE)1

-#define Z_MMIASMS_CNMIMT_DIRECTROUTE                (BYTE)2

-#define Z_MMIASMS_CNMIMT_CLASS3ROUTE                (BYTE)3

-

-/* parameter <ds> of +CNMI Command.*/

-#define Z_MMIASMS_CNMIDS_NOROUTE                    (BYTE)0

-#define Z_MMIASMS_CNMIDS_DIRECTROUTE                (BYTE)1

-#define Z_MMIASMS_CNMIDS_STOREIND                   (BYTE)2

-

-/* MT Message store Indication.*/

-#define Z_MMIASMS_PREFER_STORAGE                    (BYTE)0 

-#define Z_MMIASMS_USIM_STORAGE                      (BYTE)1 

-

-/* MmiaSms_MemAvailReqÏûÏ¢²ÎÊýbNotifAbort */

-#define Z_MMIASMS_RPSMMA_REQ                        (BYTE)0 

-#define Z_MMIASMS_RPSMMA_ABORT                      (BYTE)1 

-

-/* message type parameter of MO SM Sending */

-#define Z_MMIASMS_DIRECT_SUBMIT_SEND                (BYTE)0 

-#define Z_MMIASMS_STORE_SUBMIT_SEND                 (BYTE)1

-#define Z_MMIASMS_DIRECT_COMMAND_SEND               (BYTE)2

-#define Z_MMIASMS_STORE_COMMAND_SEND                (BYTE)3 

-

-/* return paraneter value for SMS message.*/

-#define Z_MMIASMS_RESULT_OK                         (BYTE)0 

-#define Z_MMIASMS_RESULT_ERROR                      (BYTE)1

-

-/* TPDU message type ID.*/

-#define Z_MMIASMS_DELIVER                           (BYTE)0

-#define Z_MMIASMS_DELIVER_RPT                       (BYTE)0

-#define Z_MMIASMS_SUBMIT                            (BYTE)1

-#define Z_MMIASMS_SUBMIT_RPT                        (BYTE)1

-#define Z_MMIASMS_STATUS_RPT                        (BYTE)2

-#define Z_MMIASMS_COMMAND                           (BYTE)2

-#define Z_MMIASMS_RESERVE                           (BYTE)3

-

-/* TP-UDH Exist Flag.*/ 

-#define Z_MMIASMS_TPUDH_NONEXIST                    (BYTE)0 

-#define Z_MMIASMS_TPUDH_EXIST                       (BYTE)1

-

-/* TP-VPF setting */ 

-#define Z_MMIASMS_TPVP_NONEXIST                     (BYTE)0 

-#define Z_MMIASMS_TPVP_ENHANCE                      (BYTE)1

-#define Z_MMIASMS_TPVP_RELATIVE                     (BYTE)2

-#define Z_MMIASMS_TPVP_ABSOLUTE                     (BYTE)3

-

-/* TP-CT setting of SMS_COMMAND */ 

-#define Z_MMIASMS_TPCT_ENQUIRY                      (BYTE)0 

-#define Z_MMIASMS_TPCT_CANCEL                       (BYTE)1 

-#define Z_MMIASMS_TPCT_DELETE                       (BYTE)2 

-#define Z_MMIASMS_TPCT_STATUSRPT                    (BYTE)3

-

-/* flag of Requiring staus-report */

-#define Z_MMIASMS_STATRPT_NOTREQUIRED               (BYTE)0 

-#define Z_MMIASMS_STATRPT_REQUIRED                  (BYTE)1

-

-     /* ´æ´¢¶ÌÏûÏ¢±ê־λ */                              

-#define Z_APMMIA_SMSAVEFLAG_UPREQUEST          (BYTE)0

-#define Z_APMMIA_SMSAVEFLAG_DELIVERNOTREP      (BYTE)1

-#define Z_APMMIA_SMSAVEFLAG_DELIVERREP         (BYTE)2

-#define Z_APMMIA_SMSAVEFLAG_STATUSNOTREP       (BYTE)3

-#define Z_APMMIA_SMSAVEFLAG_STATUSREP          (BYTE)4

-#define Z_APMMIA_SMSAVEFLAG_CBMSNOTREP         (BYTE)5

-#define Z_APMMIA_SMSAVEFLAG_CBMSREP            (BYTE)6

-

-    /* ¶Á¶ÌÏûÏ¢±ê־λ */                               

-#define Z_APMMIA_SMREADFLAG_ONLYREAD           (BYTE)0

-#define Z_APMMIA_SMREADFLAG_FORSEND            (BYTE)1

-

-    /* ´æ´¢¿Õ¼ä¿ÉÓÃÐÔ */                               

-#define Z_APMMIA_SMMEMORY_UNAVAILABLE          (BYTE)0

-#define Z_APMMIA_SMMEMORY_AVAILABLE            (BYTE)1

-

-    /* MOÏûÏ¢·¢ËÍ·½Ê½ */                              

-#define Z_APMMIA_MSG_DIRECT_SEND               (BYTE)0

-#define Z_APMMIA_MSG_STORE_SEND                (BYTE)1

-

-/* SMS-DELIVERÏûÏ¢´æ´¢´¦Àíָʾ */                   

-#define Z_APMMIA_MEM3_PREFERRED                (BYTE)0

-#define Z_APMMIA_USIM_FIXED                    (BYTE)1

-

-    /* ״̬±¨¸æÇëÇó±êÖ¾ */                               

-#define Z_APMMIA_STATUSREPORT_NOTREQUIRED      (BYTE)0

-#define Z_APMMIA_STATUSREPORT_REQUIRED         (BYTE)1

-

-    /* SMSÏûϢ״̬¸Ä±ä±êÖ¾ */                          

-#define Z_APMMIA_STATCHANGE_ENABLE             (BYTE)0

-#define Z_APMMIA_STATCHANGE_DISABLE            (BYTE)1

-

-    /* SMS´æ´¢ÄÜÁ¦ */                                  

-#define Z_APMMIA_SMSMEM_FREE                   (BYTE)0

-#define Z_APMMIA_SMSMEM_FULL                   (BYTE)1

-#define Z_APMMIA_SMSMEM_IMS_NOTIFY_FREE        (BYTE)2

-

-/*=======================  CallInfoÖÐbDirµÄȡֵ ===========================*/

-#define Z_MMIACC_CALLDIR_MO                                      (BYTE)0

-#define Z_MMIACC_CALLDIR_MT                                      (BYTE)1

-

-/*=======================  MOC REQÖеÄbECallTypeºê¶¨Òå ===========================*/

-#define Z_MMIACC_NORMAL_CALL                                     (BYTE)0

-#define Z_MMIACC_EMERGENCY_CALL                                  (BYTE)1

-#define Z_MMIACC_ECALL_TESTCALL                                  (BYTE)2

-#define Z_MMIACC_ECALL_RECONFIGCALL                              (BYTE)3

-#define Z_MMIACC_ECALL_MANU                                      (BYTE)4

-#define Z_MMIACC_ECALL_AUTO                                      (BYTE)5

-

-/*=======================  MOC REQÖеÄbCallTypeºê¶¨Òå£¬ËæeÐÐÖÐORIG/CONN ÏûϢҲʹÓà =====================*/

-#define Z_MMIACC_VOICE_CALL                                      (BYTE)0

-#define Z_MMIACC_DATA_CALL                                       (BYTE)1

-/* ÏÂÃæ2¸öºêÊÇΪÖÐÒÆËæeÐÐÀ©³äµÄ */

-#define Z_MMIACC_CMCC_PS_DATA_CALL                               (BYTE)2

-#define Z_MMIACC_CMCC_EMERGENCY_CALL                             (BYTE)9

-

-/*=======================  MOC REQÖеĺô½Ðģʽºê¶¨Òå ====================*/

-#define Z_MMIACC_SINGLE_MODE                                     (BYTE)0

-#define Z_MMIACC_ALT_VOICE_FAX                                   (BYTE)1

-#define Z_MMIACC_ALT_VOICE_DATA                                  (BYTE)2

-#define Z_MMIACC_FOLLOWED_DATA                                   (BYTE)3          

-

-/*=======================  MOC REQÖеÄclirȡֵºê¶¨Òå ====================*/

-#define Z_MMIACC_CLIR_SUBSCRIPTION                               (BYTE)0

-#define Z_MMIACC_CLIR_INVOCATION                                 (BYTE)1

-#define Z_MMIACC_CLIR_SUPPRESSION                                (BYTE)2

-

-/*=======================  CALL INFOÖеĺô½Ðģʽºê¶¨Òå 27007 +CLCCÖж¨Òå===================*/

-#define Z_MMIACC_CALL_INFO_VOICE                                 (BYTE)0

-#define Z_MMIACC_CALL_INFO_DATA                                  (BYTE)1

-#define Z_MMIACC_CALL_INFO_FAX                                   (BYTE)2

-#define Z_MMIACC_CALL_INFO_FOLLOWED_DATA_VOICE                   (BYTE)3

-#define Z_MMIACC_CALL_INFO_ALT_VOICE_DATA_VOICE                  (BYTE)4

-#define Z_MMIACC_CALL_INFO_ALT_VOICE_FAX_VOICE                   (BYTE)5

-#define Z_MMIACC_CALL_INFO_FOLLOWED_DATA_DATA                    (BYTE)6

-#define Z_MMIACC_CALL_INFO_ALT_VOICE_DATA_DATA                   (BYTE)7

-#define Z_MMIACC_CALL_INFO_ALT_VOICE_FAX_FAX                     (BYTE)8

-#define Z_MMIACC_CALL_INFO_UNKNOWN                               (BYTE)9

-

-/*=======================  CALL INFOÖеÄcall stateºê¶¨Òå 27007 +CLCCÖж¨Òå =================*/

-#define Z_MMIACC_CALL_STATE_ACTIVE                               (BYTE)0

-#define Z_MMIACC_CALL_STATE_HELD                                 (BYTE)1

-#define Z_MMIACC_CALL_STATE_MO_DIALING                           (BYTE)2

-#define Z_MMIACC_CALL_STATE_MO_ALERTING                          (BYTE)3

-#define Z_MMIACC_CALL_STATE_MT_INCOMING                          (BYTE)4

-#define Z_MMIACC_CALL_STATE_MT_WAITING                           (BYTE)5

-#define Z_MMIACC_CALL_STATE_END                                  (BYTE)6 /* ËæeÐÐ^DSCIÔö¼Ó */

-#define Z_MMIACC_CALL_STATE_MT_CONNREQ                           (BYTE)7

-#define Z_MMIACC_CALL_STATE_DISC                                 (BYTE)8

-

-/*=======================  CALL INFOÖеÄMPTY flagºê¶¨Òå 27007 +CLCCÖж¨Òå=================*/

-#define Z_MMIACC_MPTY_OUT                                        (BYTE)0

-#define Z_MMIACC_MPTY_IN                                         (BYTE)1

-

-/*=======================  CUG INFOºê¶¨Òå ===============================*/  

-#define Z_MMIACC_CUG_NO_INFO                                     (BYTE)0

-#define Z_MMIACC_CUG_SUPPRESS_OA                                 (BYTE)1

-#define Z_MMIACC_CUG_SUPPRESS_PREFER_CUG                         (BYTE)2

-#define Z_MMIACC_CUG_SUPPRESS_OA_PREFER_CUG                      (BYTE)3

-

-/*=======================  MOC CNFºê¶¨Òå ================================*/

-#define Z_MMIACC_RESULT_OK                                       (BYTE)0 /*MOC CNF ½á¹ûÂë¡¢ANSMOD CNF¡¢ MODIFY IND*/

-#define Z_MMIACC_RESULT_USERBUSY                                 (BYTE)1 /*MOC CNF ½á¹ûÂë*/

-#define Z_MMIACC_RESULT_NOCARRIER                                (BYTE)2 /*MOC CNF ½á¹ûÂë¡¢ANSMOD CNF*/

-#define Z_MMIACC_RESULT_CONNECT                                  (BYTE)3 /*MOC CNF ½á¹ûÂë¡¢ANSMOD CNF¡¢ MODIFY IND*/

-#define Z_MMIACC_RESULT_NOANSWER                                 (BYTE)4 /*MOC CNF ½á¹ûÂë*/

-#define Z_MMIACC_RESULT_ERROR                                    (BYTE)5 /* MOC CNF ½á¹ûÂë */

-

-/*=======================  Serv ²ÎÊý ºê¶¨Òå =============================*//* ±ÈËæeÐеÄÖµ´ó1 */

-#define Z_MMIACC_CR_SERV_ASYNC                                   (BYTE)1

-#define Z_MMIACC_CR_SERV_SYNC                                    (BYTE)2

-#define Z_MMIACC_CR_SERV_REL_ASYNC                               (BYTE)3

-#define Z_MMIACC_CR_SERV_REL_SYNC                                (BYTE)4

-

-/*=======================  Priority  ºê¶¨Òå =============================*/

-#define Z_MMIACC_PRIORITY_LEVEL_4                                (BYTE)0

-#define Z_MMIACC_PRIORITY_LEVEL_3                                (BYTE)1

-#define Z_MMIACC_PRIORITY_LEVEL_2                                (BYTE)2

-#define Z_MMIACC_PRIORITY_LEVEL_1                                (BYTE)3

-#define Z_MMIACC_PRIORITY_LEVEL_0                                (BYTE)4

-#define Z_MMIACC_PRIORITY_LEVEL_B                                (BYTE)5

-#define Z_MMIACC_PRIORITY_LEVEL_A                                (BYTE)6

-

-/*=======================  MTC RSP result ºê¶¨Òå ===============================*/

-#define Z_MMIACC_MTC_RSP_ACP                                     (BYTE)0  /* Ŀǰmmia½ö´¦Àí½ÓÊÜ, ModToMultMedia_RspÖÐ ½ÓÊÜÇл»*/

-#define Z_MMIACC_MTC_RSP_REJ                                     (BYTE)1  /* ModToMultMedia_RspÖÐ ¾Ü¾øÇл»*/

-

-/*=======================  MTC INDÖÐbCallTypeºê¶¨Òå 27007 +CRCÖж¨Òå ======================*/

-#define Z_MMIACC_TYPE_ASYNC                                      (BYTE)0

-#define Z_MMIACC_TYPE_SYNC                                       (BYTE)1

-#define Z_MMIACC_TYPE_REL_ASYNC                                  (BYTE)2

-#define Z_MMIACC_TYPE_REL_SYNC                                   (BYTE)3

-#define Z_MMIACC_TYPE_FAX                                        (BYTE)4

-#define Z_MMIACC_TYPE_VOICE                                      (BYTE)5

-#define Z_MMIACC_TYPE_VOICE_ASYNC                                (BYTE)6

-#define Z_MMIACC_TYPE_VOICE_SYNC                                 (BYTE)7

-#define Z_MMIACC_TYPE_VOICE_REL_ASYNC                            (BYTE)8

-#define Z_MMIACC_TYPE_VOICE_REL_SYNC                             (BYTE)9

-#define Z_MMIACC_TYPE_ALT_VOICE_ASYNC                            (BYTE)10

-#define Z_MMIACC_TYPE_ALT_VOICE_SYNC                             (BYTE)11

-#define Z_MMIACC_TYPE_ALT_VOICE_REL_ASYNC                        (BYTE)12

-#define Z_MMIACC_TYPE_ALT_VOICE_REL_SYNC                         (BYTE)13

-#define Z_MMIACC_TYPE_ALT_ASYNC_VOICE                            (BYTE)14

-#define Z_MMIACC_TYPE_ALT_SYNC_VOICE                             (BYTE)15

-#define Z_MMIACC_TYPE_ALT_REL_ASYNC_VOICE                        (BYTE)16

-#define Z_MMIACC_TYPE_ALT_REL_SYNC_VOICE                         (BYTE)17

-#define Z_MMIACC_TYPE_ALT_VOICE_FAX                              (BYTE)18

-#define Z_MMIACC_TYPE_ALT_FAX_VOICE                              (BYTE)19

-

-/*=====================  MTC INDÖÐ bCwFlag ºê¶¨Òå ====================*/

-#define Z_MMIACC_CALL_NORMAL                                     (BYTE)0

-#define Z_MMIACC_CALL_WAITING                                    (BYTE)1

-

-/*=====================  MTC INDÖÐ  bNoCliCause ºê¶¨Òå ====================*/

-#define Z_MMIACC_NOCLI_UNAVAIL                                   (BYTE)0  /* Ó³ÉäΪapmmia_notAvail*/

-#define Z_MMIACC_NOCLI_REJBYUSER                                 (BYTE)1  /* Ó³ÉäΪapmmia_withheld*/

-#define Z_MMIACC_NOCLI_INTERACTWITHOSRV                          (BYTE)2  /* Ó³ÉäΪapmmia_notAvail*/

-#define Z_MMIACC_NOCLI_COINLINE                                  (BYTE)3  /* Ó³ÉäΪapmmia_notAvail*/

-

-/*=====================  MTC INDÖÐcall classºê¶¨Òå 27007 +CCWA======================*/

-#define Z_MMIACC_CLASS_VOICE                                     (BYTE)1

-#define Z_MMIACC_CLASS_DATA                                      (BYTE)2

-#define Z_MMIACC_CLASS_FAX                                       (BYTE)4

-#define Z_MMIACC_CLASS_SMS                                       (BYTE)8

-#define Z_MMIACC_CLASS_DATA_CIRCUIT_SYNC                         (BYTE)16

-#define Z_MMIACC_CLASS_DATA_CIRCUIT_ASYNC                        (BYTE)32

-#define Z_MMIACC_CLASS_DEDICATED_PACK_ACCESS                     (BYTE)64

-#define Z_MMIACC_CLASS_DEDICATED_PAD_ACCESS                      (BYTE)128

-

-

-/*=======================  DISMOD Typeºê¶¨Òå ============================*/

-#define Z_MMIACC_DISMOD_TYPE_H                                   (BYTE)0

-#define Z_MMIACC_DISMOD_TYPE_CHUP                                (BYTE)1

-

-/*====================  Progress indicatorºê¶¨Òå 24008 10.5.4.21==============*/

-#define Z_MMIACC_PI_NOT_END_TO_END_PLMN                          (BYTE)1

-#define Z_MMIACC_PI_DEST_IN_NON_PLMN                             (BYTE)2

-#define Z_MMIACC_PI_ORIG_IN_NON_PLMN                             (BYTE)3

-#define Z_MMIACC_PI_RETURN_TO_PLMN                               (BYTE)4

-#define Z_MMIACC_PI_IN_BAND_TONE                                 (BYTE)8

-#define Z_MMIACC_PI_END_TO_END_PLMN                              (BYTE)32

-#define Z_MMIACC_PI_QUEUEING                                     (BYTE)64

-#define Z_MMIACC_PI_UNSPECIFIC                                   (BYTE)0xef  /*All other values*/

-

-/*=======================  Alert indicatorºê¶¨Òå Ôݱ£Áô£¬²»Ê¹ÓÃ===============*/

-#define Z_MMIACC_DIAL_TONE_ON                                    (BYTE)0

-#define Z_MMIACC_RING_BACK_TONE_ON                               (BYTE)1

-#define Z_MMIACC_INTERCEPT_TONE_ON                               (BYTE)2

-#define Z_MMIACC_NW_CONGEST_TONE_ON                              (BYTE)3

-#define Z_MMIACC_BUSY_TONE_ON                                    (BYTE)4

-#define Z_MMIACC_CONF_TONE_ON                                    (BYTE)5

-#define Z_MMIACC_ANSW_TONE_ON                                    (BYTE)6

-#define Z_MMIACC_CW_TONE_ON                                      (BYTE)7

-#define Z_MMIACC_OFF_HOOK_TONE_ON                                (BYTE)8

-#define Z_MMIACC_TONE_OFF                                        (BYTE)0x3f

-#define Z_MMIACC_ALERT_ON                                        (BYTE)0x4f

-

-/*======================= Notify indicatorºê¶¨Òå ========================*/

-#define Z_MMIACC_USER_SUSPENDED                                  (BYTE)0

-#define Z_MMIACC_USER_RESUMED                                    (BYTE)1

-#define Z_MMIACC_BEARER_CHANGE                                   (BYTE)2

-                                                     

-

-/*=======================  Common CnfÖÐcauseµÄºê¶¨Òå =====================*/

-#define Z_MMIACC_COMMON_CAUSE_PHONE_FAILURE                      (DWORD)0

-#define Z_MMIACC_COMMON_CAUSE_OPER_NOT_ALLOWED                   (DWORD)3

-#define Z_MMIACC_COMMON_CAUSE_OPER_NOT_SUPPORTED                 (DWORD)4

-#define Z_MMIACC_COMMON_CAUSE_INVALID_INDEX                      (DWORD)21

-#define Z_MMIACC_COMMON_CAUSE_NETWORK_TIMEOUT                    (DWORD)31

-#define Z_MMIACC_COMMON_CAUSE_UNKNOWN                            (DWORD)100

-#define Z_MMIACC_COMMON_CAUSE_DISMOD                            (DWORD)101

-

-/* ËæeÐÐÀ©Õ¹µÄcause£¬ÔÚNoCarrier,NoAnswer,UserBusyʱÓõ½. NW_BASE~NW_END±íʾ´ÓÍøÂçÊÕµ½µÄcause */

-#define Z_MMIACC_NW_BASE                                         (WORD)0x0100

-#define Z_MMIACC_NW_END                                          (WORD)0x01FF

-

-/*The macro of the constant */

-#define Z_MMIACC_CC_CCM_LEN                                      (BYTE)3 

-

-/* ===================ºô½Ð½ø³Ìָʾ£ºT_z_MmiaCc_ProcInfo_IndÖÐbCallInfoȡֵ ===================*/                                                 

-#define Z_MMIACC_ALERT_NOTIFY                                     (BYTE)0 /* mo¹ý³ÌÖÐÊÕµ½alertÏûÏ¢ */

-#define Z_MMIACC_CALLPROCD_NOTIFY                                 (BYTE)1 /* mo¹ý³ÌÖÐÊÕµ½callProceedingÏûÏ¢ */

-#define Z_MMIACC_PROGRESS_NOTIFY                                  (BYTE)2 /* mt¹ý³ÌÖÐÊÕµ½ProgressÏûÏ¢ */

-#define Z_MMIACC_MODIFYTOVOICE_NOTIFY                             (BYTE)3 /* modifyµ½ÓïÒô³É¹¦ */

-#define Z_MMIACC_MODIFYTODATA_NOTIFY                              (BYTE)4 /* modifyµ½Êý¾Ý³É¹¦ */

-#define Z_MMIACC_RADIOBEAREST_NOTIFY                              (BYTE)5 /* ÓïÒô»òÊý¾Ýºô½ÐʱÎÞÏß×ÊÔ´ÅäÖÃÍê³Éָʾ */

-#define Z_MMIACC_NORADIOBEAR_NOTIFY                               (BYTE)6 /* ÓïÒô»òÊý¾Ýºô½ÐʱÎÞÏß×ÊÔ´ÅäÖñ»ÊÍ·Å */

-#define Z_MMIACC_MTDISCSTART_NOTIFY                               (BYTE)7 /* ¶Ô¶Ë¹Ò¶ÏÁ÷³Ì¿ªÊ¼ */

-#define Z_MMIACC_SENDSETUPMSG_NOTIFY                              (BYTE)8 /* mo¹ý³ÌÖз¢³öL3 SETUPÏûÏ¢ */

-

-/*======================= SsNotify_IndÖÐbIorUFgȡֵºê¶¨Òå =====================*/

-#define Z_MMIACC_CSSI_IND                                         (BYTE)0

-#define Z_MMIACC_CSSU_IND                                         (BYTE)1

-

-/*======================= SsNotify_IndÖÐbIorUFgȡֵΪCSSIʱcodeȡֵºê¶¨Òå =====================*/

-#define Z_MMIACC_CSSI_CFU_ACITVE                                  (BYTE)0 

-#define Z_MMIACC_CSSI_CCF_ACITVE                                  (BYTE)1 

-#define Z_MMIACC_CSSI_CALL_BEFORWARD                              (BYTE)2 

-#define Z_MMIACC_CSSI_CALL_ISWAIT                                 (BYTE)3 

-#define Z_MMIACC_CSSI_CALL_ISCUG                                  (BYTE)4 

-#define Z_MMIACC_CSSI_CALL_BO                                     (BYTE)5 

-#define Z_MMIACC_CSSI_CALL_BI                                     (BYTE)6 

-#define Z_MMIACC_CSSI_CLIR_REJ                                    (BYTE)7 

-#define Z_MMIACC_CSSI_CALL_BEDEFLECT                              (BYTE)8 

-

-/*======================= SsNotify_IndÖÐbIorUFgȡֵΪCSSUʱcodeȡֵºê¶¨Òå =====================*/

-#define Z_MMIACC_CSSU_CALL_BEFOREARD                              (BYTE)0 

-#define Z_MMIACC_CSSU_CALL_ISCUG                                  (BYTE)1 

-#define Z_MMIACC_CSSU_CALL_BEHOLD                                 (BYTE)2 

-#define Z_MMIACC_CSSU_CALL_BERETRIEVED                            (BYTE)3 

-#define Z_MMIACC_CSSU_CALL_INMTP                                  (BYTE)4 

-#define Z_MMIACC_CSSU_HOLDCALL_RELEASED                           (BYTE)5 

-#define Z_MMIACC_CSSU_RSV_CHECKSS_MSG                             (BYTE)6 

-#define Z_MMIACC_CSSU_CALL_ISCONNECTING_INECT                     (BYTE)7 

-#define Z_MMIACC_CSSU_CALL_CONNECTED_WITHOTHERREMOTER_INECT       (BYTE)8 

-#define Z_MMIACC_CSSU_DEFLECTEDCALL                               (BYTE)9 

-#define Z_MMIACC_CSSU_INCALL_FORWARDED                            (BYTE)10

-

-/* ======================= ModToMultMedia_RspÖнá¹ûµÄȡֵºê¶¨Òå================================*/

-#define Z_MMIACC_MODTOMEDIA_ACCEPT                                (BYTE)0 /* ½ÓÊÜÇл» */

-#define Z_MMIACC_MODTOMEDIA_REJECT                                (BYTE)1 /* ½ÓÊÜÇл» */

-

-/* CNAPºê¶¨Òå */

-#define Z_MMIACC_CNAP_NAME_MAX_LEN               (BYTE)160

-#define Z_MMIACC_CNI_NAMEPRESENTALLOW            (BYTE)0

-#define Z_MMIACC_CNI_PRESENTRESTRICT             (BYTE)1

-#define Z_MMIACC_CNI_NAMEUNAVAIL                 (BYTE)2

-#define Z_MMIACC_CNI_NAMEPRESENTRESTRICT         (BYTE)3

-

-/*ZCCSTATEºê¶¨Òå*/

-#define Z_MAXCALLNM                              (BYTE)7

-#define Z_CC_STATE_NAME_MAX_LEN                  (BYTE)40

-

-#define  Z_MMIASM_ATCMD_ATD     (BYTE)0  // for VoLTE

-#define  Z_MMIASM_ATCMD_REDIAL     (BYTE)1  // for VoLTE

-

-#define Z_MMIASS_MAX_PWD_LEN                      (BYTE)8     /* length of password array  */

-#define Z_MMIASS_MAX_CALLNUM_LEN                  (BYTE)19    /* Length of Call Num array   */

-#define Z_MMIASS_MAX_SUBADR_LEN                   (BYTE)20    /* Length of Address array   */

-#define Z_MMIASS_MAX_USSD_LEN                     (BYTE)160   /* max length of USSD string */

-

-/*SSÉϱ¨µÄATÃüÁî´íÎóָʾֵ£¬¶ÔÓ¦ÓëT_zMmiaSs_Common_CnfÖеIJÎÊýdwErrorCode*/

-#define Z_MMIASS_OPTNOTALW_ERR                    (DWORD)3    /*operation not allowed*/

-#define Z_MMIASS_OPTNOTSPT_ERR                    (DWORD)4    /*operation not supported*/

-#define Z_MMIASS_INCRCTPWDERR                     (DWORD)16   /*incorrect password*/

-#define Z_MMIASS_INVALDTEXT_ERR                   (DWORD)25   /*invalid characters in text string   */

-#define Z_MMIASS_NONWSERV_ERR                     (DWORD)30   /*no network service*/

-#define Z_MMIASS_NETTIMOUT_ERR                    (DWORD)31   /*network timeout*/

-#define Z_MMIASS_UNKNOWN_ERR                      (DWORD)100  /*unknown*/

-

-    /* CCFC²éѯ״̬¡¢ CLCK\CCWA²éѯ½á¹û×ӽṹ¼¤»î״̬ȡֵ¡¢*/ 

-#define Z_APMMIA_SSSTATUS_NOTACTIVE            (BYTE)0

-#define Z_APMMIA_SSSTATUS_ACTIVE               (BYTE)1

-

-    /*CLCK, CCFC, CCWA ÉèÖö¯×÷ÖеÄmodeȡֵºê¶¨Òå*/          

-#define Z_APMMIA_SSOPTMODE_DEACTIVATION           (BYTE)0  /* ¶ÔÓ¦CCFC,CCWAµÄdisable£¬ÒÔ¼°CLCKµÄunlock */

-#define Z_APMMIA_SSOPTMODE_ACTIVATION             (BYTE)1  /* ¶ÔÓ¦CCFC,CCWAµÄenable£¬ÒÔ¼°CLCKµÄlock    */

-#define Z_APMMIA_SSOPTMODE_QUERY                  (BYTE)2  /* CLCK, CCFC, CCWA ÉèÖö¯×÷½Ô¿ÉÄÜʹÓà */

-#define Z_APMMIA_SSOPTMODE_REGISTRATION           (BYTE)3  /* ½öÓÃÓÚCCFC */

-#define Z_APMMIA_SSOPTMODE_ERASURE                (BYTE)4  /* ½öÓÃÓÚCCFC */

- 

-/*CLCK, CPWDÉèÖö¯×÷ÖÐfacµÄºê¶¨Òå

- * ¶ÔÓÚSSÀ´Ëµ£¬Ö»Ê¹ÓÃAO, OI, OX, AI, IR, AB, AG, AC*/

-#define Z_MMIASS_AO                               (BYTE)4    

-#define Z_MMIASS_OI                               (BYTE)5    

-#define Z_MMIASS_OX                               (BYTE)6    

-#define Z_MMIASS_AI                               (BYTE)7    

-#define Z_MMIASS_IR                               (BYTE)8    

-#define Z_MMIASS_AB                               (BYTE)13              

-#define Z_MMIASS_AG                               (BYTE)14   

-#define Z_MMIASS_AC                               (BYTE)15   

-

-

-/* CLCK, CCFC, CCWA ÉèÖö¯×÷ÖеÄmodeȡֵºê¶¨Òå*/

-#define Z_MMIASS_DEACTIVATION                     (BYTE)0     /* ¶ÔÓ¦CCFC,CCWAµÄdisable£¬ÒÔ¼°CLCKµÄunlock */

-#define Z_MMIASS_ACTIVATION                       (BYTE)1     /* ¶ÔÓ¦CCFC,CCWAµÄenable£¬ÒÔ¼°CLCKµÄlock    */

-#define Z_MMIASS_QUERY                            (BYTE)2     /* CLCK, CCFC, CCWA ÉèÖö¯×÷½Ô¿ÉÄÜʹÓà */

-#define Z_MMIASS_REGISTRATION                     (BYTE)3     /* ½öÓÃÓÚCCFC */

-#define Z_MMIASS_ERASURE                          (BYTE)4     /* ½öÓÃÓÚCCFC */

-

-

-/*classxºê¶¨ÒåÔÚCLCK¡¢CCFC¡¢CCWAµÄÉèÖö¯×÷ºÍ²éѯ½á¹ûÖÐʹÓÃ*/

-#define Z_MMIASS_SSCLASS_VOICE                    (BYTE)1

-#define Z_MMIASS_SSCLASS_DATA                     (BYTE)2

-#define Z_MMIASS_SSCLASS_FAX                      (BYTE)4

-#define Z_MMIASS_SSCLASS_SHORTMSG                 (BYTE)8

-#define Z_MMIASS_SSCLASS_DATACIRCUITSYNC          (BYTE)16

-#define Z_MMIASS_SSCLASS_DATACIRCUITASYNC         (BYTE)32

-#define Z_MMIASS_SSCLASS_DEDICATEDPACKETACCESS    (BYTE)64

-#define Z_MMIASS_SSCLASS_DEDICATEDPADACCESS       (BYTE)128

-

-/*classxºê¶¨ÒåÀ©Õ¹£¬ÔÚCLCK¡¢CCFC¡¢CCWAµÄÉèÖö¯×÷ÖÐʹÓÃ*/

-#define Z_MMIASS_SSCLASS_ALLTS                    (BYTE)13    /*All teleservices*/

-#define Z_MMIASS_SSCLASS_ALLDATATS                (BYTE)12    /*All data teleservices*/

-#define Z_MMIASS_SSCLASS_ALLTSNOSMS               (BYTE)5     /*All teleservices except SMS*/

-#define Z_MMIASS_SSCLASS_ASYNCSRV                 (BYTE)160   /*All async services*/

-#define Z_MMIASS_SSCLASS_SYNCSRV                  (BYTE)80    /*All sync services*/

-#define Z_MMIASS_SSCLASS_15                       (BYTE)15    

-#define Z_MMIASS_SSCLASS_255                      (BYTE)255

-#define Z_MMIASS_SSCLASS_SEVEN                    (BYTE)7

-

-

-/* CLCK¡¢CCFC¡¢CCWA²éѯ½á¹ûÖÐstatusµÄ״̬ºê¶¨Òå */

-#define Z_MMIASS_SSSTATUS_NOTACTIVE               (BYTE)0

-#define Z_MMIASS_SSSTATUS_ACTIVE                  (BYTE)1

-

-

-/* CLIP¡¢COLP¡¢COLR¡¢CNAPÍø²à״̬²éѯ½á¹ûÖÐmµÄºê¶¨Òå */

-#define Z_MMIASS_LINE_NOTPROVISE                  (BYTE)0

-#define Z_MMIASS_LINE_PROVISE                     (BYTE)1

-#define Z_MMIASS_LINE_UNKNOWN                     (BYTE)2

-

-

-/* CLIRÍø²à״̬²éѯ½á¹ûÖÐmµÄºê¶¨Òå */

-#define Z_MMIASS_CLIR_NOTPROVISE                  (BYTE)0

-#define Z_MMIASS_CLIR_PERM_PROVISE                (BYTE)1

-#define Z_MMIASS_CLIR_UNKNOWN                     (BYTE)2

-#define Z_MMIASS_CLIR_TEMP_RESTRICT               (BYTE)3

-#define Z_MMIASS_CLIR_TEMP_ALLOW                  (BYTE)4

-

-

-/* CCFCÉèÖòÎÊýreasonȡֵºê¶¨Òå */

-#define Z_MMIASS_UNCOND                           (BYTE)0

-#define Z_MMIASS_MOB_BUSY                         (BYTE)1

-#define Z_MMIASS_NO_REPLY                         (BYTE)2

-#define Z_MMIASS_NOT_REACH                        (BYTE)3

-#define Z_MMIASS_ALL_FORW                         (BYTE)4

-#define Z_MMIASS_ALL_COND_FORW                    (BYTE)5

-

-

-/*  CUSD½á¹ûÉϱ¨ÖУ¬²ÎÊýmȡֵºê¶¨Òå */

-#define Z_MMIASS_NO_FURTHER                       (BYTE)0

-#define Z_MMIASS_FURTHER                          (BYTE)1

-#define Z_MMIASS_TERMINATED                       (BYTE)2

-#define Z_MMIASS_OTHER_RESPONDED                  (BYTE)3

-#define Z_MMIASS_NOT_SUPPORTER                    (BYTE)4

-#define Z_MMIASS_TIME_OUT                         (BYTE)5

-

-/*Ò³²ÎÊý¶¨Òå(ÐèºÍapMmiaInt.hÖÐCBS²¿·Öºê¶¨Òå±£³ÖÒ»ÖÂ)*/

-#define Z_MMIACBS_MAX_TEXT_PAGE_LEN           (BYTE)82        /*TEXTģʽÏ£¬µ¥Ò³×î´ó³ÐÔØ×Ö½ÚÊý*/

-#define Z_MMIACBS_MAX_PAGE_NUM                (BYTE)15        /*¹ã²¥ÏûÏ¢×î´óÒ³Êý*/    

-#define Z_MMIACBS_ETWS_SECURITYINFO_LEN       (BYTE)50        /*ETWS°²È«ÐÅÏ¢³¤¶È*/

-

-/*ÏûϢ·ÓÉָʾ*/

-#define Z_MMIACBS_ONLY_STORE                  (BYTE)0        /*½ö´æ´¢*/

-#define Z_MMIACBS_STORE_TRANSFERS             (BYTE)1        /*´æ´¢²¢Éϱ¨*/

-#define Z_MMIACBS_ONLY_TRANSFERS              (BYTE)2        /*½öÉϱ¨*/

-

-/*CSCB modeºê¶¨Òå*/

-#define Z_MMIACBS_ACCEPT                      (BYTE)0

-#define Z_MMIACBS_NOTACCEPT                   (BYTE)1

-

-/*T_zMmiaCbs_Data_IndÖÐbWarningMsgIndºê¶¨Òå*/

-#define Z_MMIACBS_NO_WARNING_MSG              (BYTE)0        /*·Ç¾¯¸æÏûÏ¢*/

-#define Z_MMIACBS_PRI_ETWS_MSG                (BYTE)1        /*Ö÷ETWSÏûÏ¢*/

-#define Z_MMIACBS_SND_ETWS_MSG                (BYTE)2        /*¸¨ETWSÏûÏ¢*/

-#define Z_MMIACBS_CMAS_MSG                    (BYTE)3        /*CMASÏûÏ¢*/

-

-/*T_zMmiaCbs_Data_IndÖÐbPriEtwsSecFlgºê¶¨Òå*/

-#define Z_MMIACBS_SECINFO_NOT_PRESENT         (BYTE)0        /*°²È«ÐÅϢδÌṩ*/

-#define Z_MMIACBS_SECINFO_PRESENT             (BYTE)1        /*°²È«ÐÅÏ¢ÒÑÌṩ*/

-

-#define Z_MMIAPDI_PDPADDR_MAX_LEN                             (BYTE)4         /*IP V4¸ñʽÏÂPDPµØÖ·×î´ó³¤¶È*/

-#define Z_MMIAPDI_DNSADDR_MAX_LEN                             (BYTE)4         /*DNSµØÖ·×î´ó³¤¶È*/

-#define Z_MMIAPDI_UDPCONTENT_MAX_LEN                          (WORD)256       /*UDPÊý¾Ý°üÄÚÈÝ×î´ó³¤¶È*/

-

-#define Z_MMIAPDI_ABORTCLEAN_INVALID                          (BYTE)0         /*PDIÊÕµ½ÖжÏÏûÏ¢ºó²»ÐèÒªÇå¿Õ±¾µØ±äÁ¿*/

-#define Z_MMIAPDI_ABORTCLEAN_VALID                            (BYTE)1         /*PDIÊÕµ½ÖжÏÏûÏ¢ºóÐèÒªÇå¿Õ±¾µØ±äÁ¿*/

-

-#ifdef BTRUNK_SUPPORT

-#define Z_ATITSM_MAX_GROUPINFO_NUM                              (BYTE)Z_MAX_GROUP_INFO_NUM       /*  ×î´ó×é¸öÊý101*/

-#define Z_ATITSM_MAX_SCANGROUP_NUM                              (BYTE)Z_MAX_SCANGROUP_NUM        /*  ×î´óɨÃè×é¸öÊý20*/

-#define Z_ATITSM_MAX_SCANGROUP_IND_NUM                          (BYTE)16                         /*  ×î´óɨÃè×éÉϱ¨¸öÊý16*/

-

-#define Z_ATITSM_MAX_SHORTDATA_LEN                              (WORD)560                        /*  ¶ÌÊý¾ÝµÄ×î´ó³¤¶È*/

-#define Z_ATITSM_MAX_BCD_NUM                                    (BYTE)Z_MAX_BCD_NUM              /*×î´óÖµ12*/

-#define Z_ATITSM_MAX_GROUP_NAME_NUM                             (BYTE)Z_MAX_GROUP_NAME_NUM       /*×î´óÖµ32*/

-#ifdef _R2_SUPPORT

-#define Z_ATITSM_MAX_SERVLIST_NUM                               (BYTE)10

-#define Z_ATITSM_MAX_IPADDR_NUM                                 (BYTE)12

-#endif

-#define Z_ATITSM_CALL_NORMALREL                                 (BYTE)0       

-#define Z_ATITSM_CALL_EXTRAREL                                  (BYTE)1

-#define Z_ATITSM_CALL_USERREJ                                   (BYTE)2

-#define Z_ATITSM_CALL_HIGHTLEVELREL                             (BYTE)3

-#define Z_ATITSM_CALL_SINGLEUSERQUIT                            (BYTE)4 

-#define Z_ATITSM_CALL_UNSNAPPTTKEYAHEAD                         (BYTE)5 

-

-/*0£ºÍêȫɨÃ蹦ÄÜ 1£º²¿·ÖɨÃ蹦ÄÜ 2£º¹Ø±ÕɨÃ蹦ÄÜ:*/

-#define Z_ATITSM_FULL_SCAN                                      (BYTE)Z_FULL_SCAN       

-#define Z_ATITSM_PART_SCAN                                      (BYTE)Z_PART_SCAN

-#define Z_ATITSM_CLOSE_SCAN                                     (BYTE)Z_CLOSE_SCAN

-

-/*00HÒ£±Ð01HÒ£ÔÎ02H¸´»î*/

-#define Z_ATITSM_KILL                                           (BYTE)0       

-#define Z_ATITSM_STUN                                           (BYTE)1

-#define Z_ATITSM_NORMAL                                         (BYTE)2

-

-/*0£º»°È¨½²×´Ì¬1£º»°È¨Ìý״̬*/

-#define Z_ATITSM_SPEAK_RIGHT                                    (BYTE)0     

-#define Z_ATITSM_LISTEN_RIGHT                                   (BYTE)1  

-

-/*0£º·Ç¸½×Å1£º¸½×ųɹ¦*/

-#define Z_ATITSM_DEREG                                          (BYTE)0     

-#define Z_ATITSM_REG                                            (BYTE)1  

-

-/*0£ºÈ¥×¢²á1£º×¢²á*/

-#define Z_ATITSM_MODE_DEREG                                     (BYTE)0     

-#define Z_ATITSM_MODE_REG                                       (BYTE)1  

-

-/*0£ººô½Ð¿ÕÏÐ̬1£ººô½Ðͨ»°Ì¬*/

-#define Z_ATITSM_CALL_IDLE                                      (BYTE)0 

-#define Z_ATITSM_CALL_BUSY                                      (BYTE)1 

-

-/*Cause*/

-#define Z_ATITSM_OPRATE_SUCC                                    (BYTE)0x00   /*00   ²Ù×÷³É¹¦*/

-#define Z_ATITSM_PTI_NOTMATCH                                   (BYTE)0x01   /*01   PTI²»Æ¥Åä*/

-#define Z_ATITSM_INVALID_PTI                                    (BYTE)0x02   /*02   ÎÞЧPTIÊýÖµ*/

-#define Z_ATITSM_NETWORK_FAIL                                   (BYTE)0x03   /*03   ÍøÂçʧ°Ü*/

-#define Z_ATITSM_CONGESTION                                     (BYTE)0x04   /*04   ÓµÈû*/

-#define Z_ATITSM_INSUFFICIENT_RESOURCES                         (BYTE)0x05   /*05   ×ÊÔ´²»×ã*/

-#define Z_ATITSM_AHTH_FAIL                                      (BYTE)0x06   /*06   ¼øÈ¨Ê§°Ü*/

-#define Z_ATITSM_UNDEFINED_CAUSE                                (BYTE)0x07   /*07   䶨ÒåÔ­Òò*/

-#define Z_ATITSM_BEARER_ACTIVE_FAIL                             (BYTE)0x08   /*08   ³ÐÔØ½¨Á¢Ê§°Ü*/

-#define Z_ATITSM_TIMER_OUT                                      (BYTE)0x09   /*09   ¶¨Ê±Æ÷³¬Ê±*/

-#define Z_ATITSM_OPERATOR_PROHIBIT                              (BYTE)0x0A   /*0A   ²Ù×÷Ô±½ûÖ¹¸ÃÒµÎñ*/

-#define Z_ATITSM_ILLEGAL_USER                                   (BYTE)0x0B   /*0B   ·Ç·¨Óû§*/

-#define Z_ATITSM_NETWORK_NOTSUPPORT                             (BYTE)0x0C   /*0C   ÍøÂç²»Ö§³Ö¸ÃÒµÎñ*/

-#define Z_ATITSM_NETWORK_CURRENT_NOTSUPPORT                     (BYTE)0x0D   /*0D   ÍøÂç²àµ±Ç°²»Ö§³Ö¸ÃÒµÎñ*/

-#define Z_ATITSM_USER_NOT_OPEN                                  (BYTE)0x0E   /*0E   Óû§Î´¿ªÍ¨¸ÃÒµÎñ*/

-#define Z_ATITSM_MOUSER_NOT_RIGHT                               (BYTE)0x0F   /*0F   Ö÷½ÐÓû§Ã»ÓÐȨÏÞ*/

-#define Z_ATITSM_PTI_IN_USED                                    (BYTE)0x10   /*10   PTIÒѾ­±»Ê¹ÓÃ*/

-#define Z_ATITSM_UE_NETWORK_PROCESS_CONFLICT                    (BYTE)0x11   /*11   Öն˺ÍÍøÂç²àÁ÷³Ì³åÍ»*/

-#define Z_ATITSM_MSG_SEMANTIC_ERROR                             (BYTE)0x12   /*12   ÏûÏ¢ÓïÒâ´íÎó*/

-#define Z_ATITSM_INVALID_MANDATORY_IE                           (BYTE)0x13   /*13   ÎÞЧµÄ±ØÑ¡IE*/

-#define Z_ATITSM_IE_NOT_EXIST                                   (BYTE)0x14   /*14   IE²»´æÔÚ*/

-#define Z_ATITSM_CONDITIONAL_IE_ERROR                           (BYTE)0x15   /*15   Ìõ¼þ¿ÉÑ¡IE´íÎó*/

-#define Z_ATITSM_MSG_PROTOCOLSTATE_CONFLICT                     (BYTE)0x16   /*16   ÏûÏ¢ºÍЭÒé״̬³åÍ»*/

-#define Z_ATITSM_ROAMING_NOT_ALLOW                              (BYTE)0x17   /*17   ²»ÔÊÐíÂþÓÎ*/

-#define Z_ATITSM_SWITCHOFF_DEREG                                (BYTE)0x18   /*18   ¹Ø»ú×¢Ïú*/

-#define Z_ATITSM_STANDARD_DEREG                                 (BYTE)0x19   /*19   ±ê×¼×¢Ïú*/

-#define Z_ATITSM_DEREG_REATTACH                                 (BYTE)0x1A   /*1A   ×¢ÏúºóÐèÖØÐ·¢Æð×¢²á*/

-#define Z_ATITSM_DEL_SUBSCRIBER_DATA_DEREG                      (BYTE)0x1B   /*1B   Óû§Ç©Ô¼Êý¾Ý±»É¾³ýÒýÆðµÄ×¢Ïú*/

-#define Z_ATITSM_GROUP_NOT_EXIST                                (BYTE)0x1C   /*1C   ×é²»´æÔÚ*/

-#define Z_ATITSM_ADMINISTRATOR_PROHIBIT_THISGROUP               (BYTE)0x1D   /*1D   ¹ÜÀíÔ±½ûÖ¹¸Ã×é*/

-#define Z_ATITSM_MTUSER_NOT_EXIST                               (BYTE)0x1E   /*1E   ±»½Ð·½²»´æÔÚ*/

-#define Z_ATITSM_ADMINISTRATOR_PROHIBIT_MTUSER                  (BYTE)0x1F   /*1F   ±»½Ð·½±»¹ÜÀíÔ±½ûÖ¹*/

-#define Z_ATITSM_GROUP_MEMBER_INVALID                           (BYTE)0x20   /*20   ×é³ÉÔ±ÎÞЧ*/

-#define Z_ATITSM_MTUSER_NOT_CALLRIGHT                           (BYTE)0x21   /*21   ±»½Ð·½ÎÞºô½ÐȨÏÞ*/

-#define Z_ATITSM_MTUSER_SWITCHOFF                               (BYTE)0x22   /*22   ±»½Ð·½¹Ø»ú*/

-#define Z_ATITSM_MTUSER_NOT_RSP                                 (BYTE)0x23   /*23   ±»½ÐÓû§ÎÞÏìÓ¦*/

-#define Z_ATITSM_NORMAL_REL_CALL                                (BYTE)0x24   /*24   Õý³£ºô½ÐÊÍ·Å*/

-#define Z_ATITSM_PDS_REL_CALL                                   (BYTE)0x25   /*25   µ÷¶Ę̀Êͷźô½Ð*/

-#define Z_ATITSM_EXCEPT_REL_CALL                                (BYTE)0x26   /*26   Òì³£ºô½ÐÊÍ·Å*/

-#define Z_ATITSM_USER_IS_BUSYING                                (BYTE)0x27   /*27   Óû§Õýæ*/

-#define Z_ATITSM_USER_ALERTING_NOT_ANSWER                       (BYTE)0x28   /*28   ±»½ÐÒѾ­ÕñÁ壬Óû§Î´½ÓÌý*/

-#define Z_ATITSM_USER_REJ_ANSWER                                (BYTE)0x29   /*29   ±»½ÐÓû§¾Ü¾ø½ÓÌý*/

-#define Z_ATITSM_HIGHER_PRIOR_USER_REL                          (BYTE)0x2A   /*2A   ±»¸ßÓÅÏȼ¶Óû§ÊÍ·Å*/

-#define Z_ATITSM_NOT_SPEAKER_RIGHT                              (BYTE)0x2B   /*2B   ûÓÐ˵»°È¨ÏÞ*/

-#define Z_ATITSM_QUEUE_FULL                                     (BYTE)0x2C   /*2C   ¶ÓÁÐÂú*/

-#define Z_ATITSM_WAIT_INLINE_TIMEROUT                           (BYTE)0x2D   /*2D   ÅŶӳ¬Ê±*/

-#define Z_ATITSM_KICK_OUT_QUEUE                                 (BYTE)0x2E   /*2E   ±»Ìß³ö¶ÓÁÐ*/

-#define Z_ATITSM_UE_FLOOR_REL                                   (BYTE)0x2F   /*2F   ÖÕ¶Ë·¢Æð»°È¨ÊÍ·Å*/

-#define Z_ATITSM_FLOOR_IS_FORESTALLED                           (BYTE)0x30   /*30   »°È¨±»ÇÀÕ¼*/

-#define Z_ATITSM_SPEAKER_TIMER_IMMEDIATE_TIMEOUT                (BYTE)0x31   /*31   ½²»°¶¨Ê±Æ÷¼´½«³¬Ê±*/

-#define Z_ATITSM_ADDGROUP_EXIST_IN_UE                           (BYTE)0x32   /*32   ÐèÒªÐÂÔöµÄȺ×éÔÚÖÕ¶ËÒÑ´æÔÚ*/

-#define Z_ATITSM_DELGROUP_NOTEXIST_IN_UE                        (BYTE)0x33   /*33   ÐèҪɾ³ýµÄȺ×éÔÚÖն˲»´æÔÚ*/

-#define Z_ATITSM_MODIFYGROUP_NOTEXIST_IN_UE                     (BYTE)0x34   /*34   ÐèÒªÐÞ¶©µÄȺ×éÔÚÖն˲»´æÔÚ*/

-#define Z_ATITSM_OUT_OF_MAX_SAVEDGROUPS                         (BYTE)0x35   /*35   ³¬¹ýÖÕ¶Ë¿ÉÒÔ´æ´¢µÄ×î´óȺ×éÊý */

-#define Z_ATITSM_UE_ARREARS                                     (BYTE)0x36   /*36   Ç··Ñ*/

-#define Z_ATITSM_CALL_NOT_EXIST                                 (BYTE)0x37   /*37    ºô½Ð²»´æÔÚ*/

-#define Z_ATITSM_USER_NOTIN_SRV_AREA                            (BYTE)0x38   /*38    ·¢ÆðÇëÇóµÄÓû§²»ÔÚÒµÎñ·¶Î§Ö®ÄÚ*/

-#define Z_ATITSM_NETWORK_RELEASE_CALL                           (BYTE)0x39   /*39    ¼¯ÈººËÐÄÍøÇ¿ÖÆ·¢ÆðµÄºô½ÐÊÍ·Å*/

-

-

-#define Z_ATITSM_UNIONBROAD_GROUP_ISACTIVING                    (BYTE)0xA0   /*A0     ËùÊôµÄͨ²¨×éÕýÔÚ¼¤»î*/

-//#define Z_ATITSM_USER_NOTIN_CALLING_AREA                      (BYTE)0xA1   /*A1     Óû§²»ÔÚºô½ÐÇøÓòÄÚ*/

-//#define Z_ATITSM_NOT_SRV_AREA_REJECT_NETSERVICE               (BYTE)0xA2   /*A2     Óû§²»ÔÚÒµÎñÇøÓòÄÚ*/

-#define Z_ATITSM_NOTHAVE_BEFOREHAND_AUTHORITY                   (BYTE)0xA3   /*A3     ûÓÐÔ¤Õ¼ÓÅÏÈȨÏÞ*/

-#define Z_ATITSM_UE_AHEAD_REL                                   (BYTE)0xA4   /*A4     Óû§ÌáǰÊÍ·Å*/

-#define Z_ATITSM_CALL_FORWARD_FAIL                              (BYTE)0xA5   /*A5     ºô½Ð×ªÒÆÊ§°Ü*/

-

-

-#define Z_ATITSM_CALLFORWARD_ABORT                              (BYTE)0xD0   /*D0     ºô½Ðǰת±»ÖжÏ*/

-#define Z_ATITSM_CALLFORWARD_SETCMDNOTEND                       (BYTE)0xD1   /*D1     ǰתÉèÖÃÃüÁîδ½áÊø£¬²»Ö´Ðвéѯ*/

-#define Z_ATITSM_CALLFORWARD_NETWORK_RSPFAIL                    (BYTE)0xD2   /*D2     Íø²à»Ø¸´Ê§°Ü*/

-#define Z_ATITSM_UE_IS_STUNNED                                  (BYTE)0xD3   /*D3     Öն˱»Ò£ÔÎ*/

-#define Z_ATITSM_UE_IS_KILLED                                   (BYTE)0xD4   /*D4     Öն˱»Ò£±Ð*/

-#define Z_ATITSM_RRC_REL                                        (BYTE)0xD5   /*D5     RRCÁ¬½ÓÊÍ·Å*/

-#define Z_ATITSM_LTE_NOT_ATTACH                                 (BYTE)0xD6   /*D6     LTEδע²á*/

-#define Z_ATITSM_UE_TRIGGER_DEREG                               (BYTE)0xD7   /*D7     UE´¥·¢LTEÈ¥×¢²á*/

-#define Z_ATITSM_NETWORK_TRIGGER_DEREG                          (BYTE)0xD8   /*D8     ÍøÂç´¥·¢LTEÈ¥×¢²á*/

-#define Z_ATITSM_NOT_SUPPORT_PTT                                (BYTE)0xD9   /*D9     ²»Ö§³Ö¼¯ÈºÒµÎñ*/

-#define Z_ATITSM_UNSPECIFIED_CAUSE_DEREG_STATE                  (BYTE)0xDA   /*DA     䶨ÒåÔ­Òò£¨½øÈëδע²á̬£©*/

-#define Z_ATITSM_CALL_IS_PROCEEDING                             (BYTE)0xDB   /*DB     ÒÑÓкô½ÐÔÚ·¢Æð*/

-#define Z_ATITSM_NETWORT_NOT_SUPPORT_TERMINAL_TO_TERMINAL_KEY   (BYTE)0xDC   /*DC     ÍøÂç²»Ö§³Ö¶Ëµ½¶Ë¼ÓÃÜ*/

-#define Z_ATITSM_NETWORT_NOT_SUPPORT_HALFDUPLEX_SIGLECALL       (BYTE)0xDD   /*DD     ÍøÂç²»Ö§³Ö°ëË«¹¤µ¥ºô*/

-#define Z_ATITSM_USER_ABORT                                     (BYTE)0xDE   /*DE     Óû§ÖжÏ*/

-#define Z_ATITSM_CALL_REL_FAIL                                  (BYTE)0xDF   /*DF     ºô½ÐÊÍ·Åʧ°Ü*/

-

-

-#define Z_ATITSM_USER_NAME_LEN                                  (BYTE)32

-#define Z_ATITSM_MAX_TRUNK_IP_ADDR_NUM                          (BYTE)16

-

-#define Z_ATITSM_PTTBEAR_NUM                                    (BYTE)4 

-

-#endif

-

-#define MMIA_AS_LTE_MAX_SINR_NUM  (BYTE)4
-#define MMIA_AS_LTE_MAX_RSSI_NUM  (BYTE)2
-#define Z_ZEPCG_PARAM_NUMBER      (BYTE)25
-#define Z_ZGPCG_PARAM_NUMBER      (BYTE)25

-#define Z_ZUPCG_PARAM_NUMBER      (BYTE)25

-#define Z_ZUPCG_VALFG_NUMBER      (BYTE)8

-
-#define Z_MAX_TMGI_NUM_IN_MBSFN_AREA      (BYTE)16
-#define Z_MAX_MBSFN_AREA_NUM_IN_CELL      (BYTE)8
-#define Z_MAX_SESSION_NUM__IN_CELL        ((WORD)(435))/* 15pmch * 29session  */

-#define Z_MAX_SAI_NUM_PER_FREQ            (BYTE)64
-#define Z_MAX_SAI_NUM_PER_TMGI            (WORD)256
-#define Z_MAX_LTE_FREQ_NUM                (BYTE)9
-#define Z_MAX_MBMS_TMGI_LIST_NUM          (BYTE)32
-
-/*eMBMS¼¤»î״̬*/
-#define TMGI_ACT_STATUS_SUCC              (BYTE)0       /*¼¤»î³É¹¦*/
-#define TMGI_ACT_STATUS_DUPLC_ACT         (BYTE)1       /*ÖØ¸´¼¤»î*/
-#define TMGI_ACT_STATUS_CHNL_UNAVAILABLE  (BYTE)2       /*TMGIÆ¥ÅäÉÏ£¬sessionIdûÓÐÆ¥ÅäÉÏ*/
-#define TMGI_ACT_STATUS_UNICAST_UNSTABLE  (BYTE)3       /*LTE RRC´¦ÓÚÔÝ̬*/
-#define TMGI_ACT_STATUS_EMBMS_UNSUPPORT   (BYTE)4       /*SIB13²»´æÔÚ´Ó¶ø²»Ö§³ÖMBMS*/
-#define TMGI_ACT_STATUS_TMGI_OOC          (BYTE)5       /*TMGIûÓÐÆ¥ÅäÉÏ*/
-#define TMGI_ACT_STATUS_OOS               (BYTE)6       /*µ¥²¥OOS£¬LTE´¦ÓÚOOS»òÈ¥»î״̬*/
-#define TMGI_ACT_STATUS_MAX_ACT_SERVICE   (BYTE)7       /*³¬¹ý×î´ó¼¤»îÊý*/
-
-/*eMBMSÈ¥¼¤»î״̬*/
-#define TMGI_DEACT_STATUS_SUCC            (BYTE)0
-#define TMGI_DEACT_STATUS_DUPLC_ACT       (BYTE)1
-#define ATI_AS_STACK_1            (BYTE)88       /*ÓÃÓÚASÖ÷¶¯Éϱ¨Ê±Ä¿µÄË÷ÒýµÄÌîд£¬µ±Ç°ASÊÇÕ»1*/
-#define ATI_AS_STACK_2            (BYTE)178       /*ÓÃÓÚASÖ÷¶¯Éϱ¨Ê±Ä¿µÄË÷ÒýµÄÌîд£¬µ±Ç°ASÊÇÕ»2*/
-#define ATI_AS_IVALID_SRCINDEX    (BYTE)255       /*ÓÃÓÚASÖ÷¶¯Éϱ¨Ê±Ô´Ë÷ÒýµÄÌîд£¬Ä¿Ç°Ã»ÓÐʹÓã¬Òò´ËÌîдÎÞЧֵ*/

-

-#define Z_APMMIA_EM_IND_DISABLE                   (BYTE)0  /* ¹¤³ÌÄ£Ê½Ð¡ÇøÐÅÏ¢&Çл»ÐÅÏ¢, ¹Ø±ÕÖ÷¶¯Éϱ¨ */

-#define Z_APMMIA_EM_IND_ENABLE                    (BYTE)1  /* ¹¤³ÌÄ£Ê½Ð¡ÇøÐÅÏ¢&Çл»ÐÅÏ¢, ´ò¿ªÖ÷¶¯Éϱ¨ */

-

-#define EV_ZATI2_CpbrExeReq_Ev AP_MMIA_CPBR_EXE_REQ_EV

-#define EV_ZATI2_SCpbrSetReq_Ev AP_MMIA_SCPBR_SET_REQ_EV

-#define EV_ZATI2_CpbrExeCnf_Ev AP_MMIA_CPBR_EXE_CNF_EV 

-#define EV_ZATI2_CpbrSetEndCnf_Ev AP_MMIA_CPBR_SET_END_CNF_EV

-#define EV_ZATI2_SmsCmglReq_Ev AP_MMIA_SMS_CMGL_REQ_EV

-

-#define Z_MAX_LBS_CELL_NUM                        (BYTE)3

-

-/*¶¨ÒåCSÓïÒôÄÜÁ¦Éϱ¨½á¹ûÖµ*/

-#define Z_CSVOICE_NOT_SPT                         (BYTE)0

-#define Z_CSVOICE_SPT_ONLYEMC                     (BYTE)1

-#define Z_CSVOICE_SPT                             (BYTE)2

-

-#define MSD_MAX_LENGTH                           (BYTE)140

-

-#ifdef _USE_LPP_ECID

-/*ClientExtId Addr×î´ó³¤¶È*/

-#define Z_MAX_CLENTADDR_LEN                  (BYTE)20

-#define Z_MAX_CLENTNAME_LEN                  (BYTE)160

-

-

-/* Type of shape  */

-#define    Z_ELLIP_POINT                             (BYTE)0

-#define    Z_ELLIP_POINT_UNCERT_CIRCLE     (BYTE)1

-#define    Z_ELLIP_POINT_UNCERT_ELLIPSE    (BYTE)3

-#define    Z_POLYGON                       (BYTE)5

-#define    Z_ELLIP_POINT_ALT               (BYTE)8

-#define    Z_ELLIP_POINT_ALT_UNCERTELLIPSE (BYTE)9

-#define    Z_ELLIP_POINT_ARC               (BYTE)10

-

-/* Type of Velocity */

-#define    Z_HORIZON_VEL                   (BYTE)0

-#define    Z_HORIZON_VERTIC_VEL            (BYTE)1

-#define    Z_HORIZON_VEL_UNCERT            (BYTE)2

-#define    Z_HORIZON_VERTIC_VEL_UNCERT     (BYTE)3

-#endif

-

-typedef enum  

-{

-    EV_ZATI2_BEGIN           = 0x9000,

-    

-    EV_ZATI2_TASK_INIT_SIG,

-    EV_ZATI2_RECV_COMMAND_IND,

-    EV_ZATI2_MUX_CLOSE_IND,      /* ÊÕµ½¶Ô·½¹Ø±ÕMUXͨµÀÇëÇó£¬ÐèÒª¹Ø±Õ±¾·½MUXͨµÀ */

-    EV_ZATI2_INIT_CARD_BAK_READY, /* ÓÉATI2¸æËß±¾ÈÎÎñ£¬±¸·ÝSIM¿¨Êý¾ÝÍê³É */

-    EV_ZATI2_INIT_NV_DATA_IND,  /* ÓÉATI2¸æËß±¾ÈÎÎñ£¬³õʼ»¯NV¿¨Êý¾Ý */

-    EV_ZATI2_SM_ZGIPDNS_IND, /* + ZGIPDNS: Éϱ¨Ö¸Ê¾ÏûÏ¢ */

-    EV_ZATI2_ZGDATATEST_SET_CNF,

-    EV_ZATI2_ZGDATATEST_SET_REQ,

-    EV_ZATI2_GET_PDP_DNS_IP_ADDR_IND,   /* »ñÈ¡PDP¼¤»îºóµÄDNS/IPµØÖ· */

-    EV_ZATI2_NV_SIM_RESEND_AVAIL_IND, /* ÖØÐ·¢Í¨¸æ£¬ÓйØSIM¿¨¿Õ¼ä¿ÉÓà */

-    EV_ZATI2_TEST_SEND_CS_DATA,

-    EV_ZATI2_SmsCmgdTestReq_Ev,

-    EV_ZATI2_CMGD_TEST_CNF,

-    EV_ZATI2_ZWEN_SET_REQ,

-    EV_ZATI2_ZWEN_CNF,

-    EV_ZATI2_DELEXT1_CNF,

-    EV_ZATI2_DELEXT5_CNF,

-    EV_ZATI2_ZPODW_SET_REQ,

-    EV_ZATI2_BOARDNUM_SET_REQ,

-    EV_ZATI2_BOARDNUM_QUERY_REQ,

-    EV_ZATI2_PRODTEST_REQ,

-    EV_ZATI2_DTMF_REQ,

-    EV_ZATI2_ZFLAG_SET_REQ,

-    EV_ZATI2_ZFLAG_QUERY_REQ,

-    EV_ZATI2_STMLIST_IND,

-    EV_ZATI2_ZMODESWITCH_SET_REQ,

-    EV_ZAT2_AUTOSTART_IND,

-    EV_ZATI2_ZSET_SET_REQ,

-    

-    EV_ZATI2_LTE_ZCONSTAT_IND, /* +ZCONSTAT: Éϱ¨Ö¸Ê¾ÏûÏ¢ FOR NEWCM ZPR 11-02-26*/

-    

-    EV_ZATI2_CPBR_CNF,

-

-    EV_ZATI2_ZMSRI_IND,    /* 617001591411 ¡¾ÖÇÄÜ»úÐèÇó¡¿- ÖÇÄÜ»úÐèÇóV3°æ±¾Í¬²½ÊµÏÖ*/

-    EV_ZATI2_ZMSRI_IND_EXPIRY_EV,  /* 617001591411 ¡¾ÖÇÄÜ»úÐèÇó¡¿- ÖÇÄÜ»úÐèÇóV3°æ±¾Í¬²½ÊµÏÖ*/

-    EV_ZATI2_COPN_CNF,

-    EV_ZATI2_ZEMCELLINFO_REQ, /*Óɺ¯Êý½Ó¿Ú´¥·¢µÄ»ñÈ¡7520¹¤³ÌģʽÇëÇó*/

-    EV_ZATI2_ZDTMF_IND,

-    EV_ZATI2_END

-}T_ZAti_EvDef;

-

-typedef struct{
-    BYTE                     bSpare0:3;
-    BYTE                     bSrvCateg  :5;
-    BYTE                     bNumLen;
-    BYTE                     abNum[Z_ATIUMM_MAX_EMERNUM_DIGIT_NUM];

-}T_zAtiUmm_EmerNum;

-
-/*24008_10.5.3.13 , Emergency_Number_List*/
-typedef struct{
-    BYTE                     bEmerNumLen;
-    T_zAtiUmm_EmerNum         atEmerNum[Z_ATIUMM_MAX_EMERNUM_NUM];

-}T_zAtiUmm_EcNumList;

-

-typedef struct{
-    BYTE                     bSpare0:1;
-    BYTE                     bCodeSchm  :3;
-    BYTE                     bAddCI  :1;
-    BYTE                     bNumSpare  :3;
-    BYTE                     bTxtStrLen;
-    BYTE                     abTxtStr[Z_ATIUMM_MAX_TXTSTR_NUM];

-}T_zAtiUmm_NetName;

-

-typedef struct{
-    BYTE                     bYear;
-    BYTE                     bMonth;
-    BYTE                     bDay;
-    BYTE                     bHour;
-    BYTE                     bMinute;
-    BYTE                     bSecond;
-    BYTE                     bTmZone;
-}T_zAtiUmm_TZAndTime;

-

-typedef struct{
-    BYTE                     bLsaIdLen;
-    BYTE                     abLsaId[Z_ATIUMM_MAX_LSAID_NUM];

-}T_zAtiUmm_LsaId;

-

-/*==============================================================================

- Ô­ÓMMIA_UMM_SearchPlmnReq_EV( MMIA->UMM )

- ˵Ã÷: ÒªÇóUMM¿ªÊ¼Ñ¡Íø£¬²¢Ö¸Ã÷Ñ¡ÍøÄ£Ê½¡¢Ö¸¶¨µÄPLMNµÈ

-==============================================================================*/

-typedef struct {

-    BYTE                        bSrcIndex;          /* The source index */

-    BYTE                        bDesIndex;          /* The destination index */

-    

-    BITS                        bReselFg:1;         /* 0:·ÇÓû§ÖØÑ¡ 1:Óû§ÖØÑ¡ */

-    BITS                        bAutoFg:1;          /* 0:×Ô¶¯Ä£Ê½   1:ÊÖ¶¯Ä£Ê½ */

-    BITS                        bFailToAutoFg:1;    /* 0:ʧ°Üºó±£³ÖÊÖ¶¯  1:ʧ°Üºóת×Ô¶¯Ñ¡ÍøÄ£Ê½ */

-    BITS                        bOperFg:1;        /*0:δָ¶¨ÔËÓªÉÌ1:Ö¸¶¨ÔËÓªÉ̵±bOperFgÓÐЧtPlmnActÖеÄPLmnIDºöÂÔ*/

-    BITS                        :4;

-    BYTE                        bNameFg; /*0±íʾ³¤Ãû,1±íʾ¶ÌÃû,bOperFgΪ1ʱÓÐЧ*/

-    BYTE                        abOperate[Z_MAX_LONGNAME_LEN];         /*ÖйúÒÆ¶¯-CMCC;  ÖйúÁªÍ¨-CUCC;ÖйúµçÐÅ-CTCC*/

-    T_z_PlmnAct                 tPlmnAct;           /* Ö¸¶¨PLMNÐÅÏ¢ */

-}T_zMmiaUmm_SearchPlmn_Req;

-

-/*==============================================================================

- Ô­ÓMMIA_UMM_PlmnInfoInd_EV( UMM->MMIA )

- ˵Ã÷: UMMÉϱ¨¸øMMIAµÄפÁôµÄPLMNµÄÐÅÏ¢ºÍ״̬

-==============================================================================*/

-typedef struct {

-    BYTE                        bSrcIndex;          /* The source index */

-    BYTE                        bDesIndex;          /* The destination index */

-

-    BYTE                        bCsState;           /* CSÓò×¢²á״̬£¬¾ßÌå״̬¼ûºê¶¨Òå */

-    BYTE                        bPsState;           /* PSÓò×¢²á״̬£¬¾ßÌå״̬¼ûºê¶¨Òå */

-

-    BYTE                        bCsReason;          /* CSÓò×¢²áʧ°ÜÔ­Òò£¬¼ûºê¶¨Òå */

-    BYTE                        bPsReason;          /* PSÓò×¢²áʧ°ÜÔ­Òò£¬¼ûºê¶¨Òå */ 

-    

-    BYTE                        bPsSrv;             /* Ð¡ÇøÊÇ·ñÖ§³ÖpsÓòÒµÎñ£¬À´×ÔϵͳÏûÏ¢: zps_invalid:²»Ö§³Ö£¬zps_valid: Ö§³Ö */

-    BYTE                        bCsSrv;             /* Ð¡ÇøÊÇ·ñÖ§³ÖcsÓòÒµÎñ£¬À´×ÔϵͳÏûÏ¢ : zps_invalid:²»Ö§³Ö£¬zps_valid: Ö§³Ö*/

-

-    T_z_PlmnAct                 tPlmnAct;

-    T_z_LAC                     tLac;               /* λÖÃÇø±àÂë */

-    T_z_CellId                  tCellId;            /* Ð¡ÇøID??? */

-    T_zAtiUmm_EcNumList             tEcNumList;         /* ÆäÖÐbNumÎªÍøÂçЯ´øµÄ½ô¼±ºô½ÐºÅÂë¸öÊý£¬¶¨Òåͬ24008.

-                                                                                                                                               ÔÚ¸öÊý²»Îª0ʱÐèÒª¸²¸ÇMEÔ­À´´æ´¢µÄºÅÂ룻¸öÊýΪ0ʱ¸ù¾ÝMCCȡֵȷ¶¨ÊÇ·ñɾ³ý*/

-    BYTE                        bRac;

-    BYTE                        bEpsState;

-    BYTE                        bEpsReason;

-    BYTE                        bImsOverPsInd;       /*the IMS voice over PS session indicator*/

-    BYTE                        bEmergencybearerInd; /*the emergency bearer services indicator*/

-    WORD                        wTac;

-    BYTE                        bPadding;

-}T_zMmiaUmm_PlmnInfo_Ind;

-

-/*==============================================================================

- Ô­ÓMMIA_UMM_PlmnListReq_EV( MMIA->UMM )

- ˵Ã÷: ÇëÇóUMMËÑË÷Ö¸¶¨Ä³ÖÆÊ½»òijЩÉϵÄPLMNÁбí

-==============================================================================*/

-typedef struct {

-    BYTE                        bSrcIndex;          // The source index

-    BYTE                        bDesIndex;          // The destination index

-    BYTE                        bAct;               // ÖÆÊ½ÐÅÏ¢

-    BYTE                        bNeedBandInfo;      // 0: ÆÕͨµÄPLMNÁбíÇëÇó;

-                                                    // 1: ÒªÇóÉϱ¨Æµ¶ÎÐÅÏ¢µÄÇëÇó.

-    BYTE                        bScanFlag;

-    BYTE                        abPadding[3];

-}T_zMmiaUmm_PlmnList_Req;

-

-/*==============================================================================

- Ô­ÓMMIA_UMM_PlmnListCnf_EV( UMM->MMIA )

- ˵Ã÷: UMMÉϱ¨¸øMMIA¿ÉÓÃÁбíµÄÐÅÏ¢£¬²¢±êÃ÷״̬

-==============================================================================*/

-typedef struct {

-    BYTE                        bSrcIndex;          /* The source index */

-    BYTE                        bDesIndex;          /* The destination index */

-    

-    BYTE                        bNumPlmn;

-    BYTE                        bPadding;

-

-    T_z_PlmnAct                 atPlmnList[Z_MaxPossiblePlmnNum];      /*ËùÓÐËÑѰµ½µÄPLMNÁбí*/

-    WORD                        awPlmnRsrp[Z_MaxPossiblePlmnNum];      /* ÐźÅÇ¿¶È*/

-    WORD                        awPlmnQmin[Z_MaxPossiblePlmnNum];      /*פÁôÃÅÏÞQrxlevmin*/

-    BYTE                        abStateList[Z_MaxPossiblePlmnNum];     /*ÿPLMNÏàÓ¦µÄ״̬£º0:δ֪ 1:¿ÉÓà 2:µ±Ç° 3:½ûÓÃ*/

-    BYTE                        abPadding1[2];

-    DWORD                       dwCause;            /* »ñÈ¡Áбíʧ°ÜÔ­Òò */

-}T_zMmiaUmm_PlmnList_Cnf;

-

-

-/*==============================================================================

- Ô­ÓMMIA_UMM_SCAN_CNf_EV( UMM->MMIA )

- ˵Ã÷: UMMÉϱ¨¸øMMIAɨƵ½á¹û

-==============================================================================*/

-typedef struct {

-    BYTE                        bSrcIndex;          /* The source index */

-    BYTE                        bDesIndex;          /* The destination index */

-    

-    BYTE                        bScanPlmnNum;

-    BYTE                        bPadding;

-

-    T_z_ScanPlmnInfo      atScanPlmnInfoList[Z_MaxPossiblePlmnNum];

-    DWORD                    dwCause;            /* ʧ°ÜÔ­Òò */

-}T_zMmiaUmm_Scan_Cnf;

-

-

-/*==============================================================================

-Ô­ÓMMIA_UMM_PLMNLIST_BANDINFO_CNF_EV(UMM->MMIA)

-˵Ã÷: »Ø¸´PLMNÁбí¿ÉÓÃÍøÂç¼°ÆäƵ¶ÎÐÅÏ¢µÄÈ·ÈÏÏûÏ¢

-==============================================================================*/

-typedef struct {

-    BYTE                        bSrcIndex;

-    BYTE                        bDesIndex;

-    

-    BYTE                        bGsmAPlmnNum;            /*GSMÖÆÊ½Ï¿ÉÓÃPLMNÁбí¸öÊý*/

-    BYTE                        bTdAPlmnNum;             /*UTRANÖÆÊ½Ï¿ÉÓÃPLMNÁбí¸öÊý*/

-    BYTE                        bWAPlmnNum;

-    BYTE                        bLteAPlmnNum;            /*LTEÖÆÊ½Ï¿ÉÓÃPLMNÁбí¸öÊý*/

-

-    T_z_AvailPlmn              *ptGAPlmnList;            /*GSMÖÆÊ½Ï¿ÉÓÃPLMNÁбí*/

-    T_z_AvailPlmn              *ptTAPlmnList;            /*TDÖÆÊ½Ï¿ÉÓÃPLMNÁбí*/

-    T_z_AvailPlmn              *ptWAPlmnList;            /*WÖÆÊ½Ï¿ÉÓÃPLMNÁбí*/

-    T_z_AvailPlmn              *ptEAPlmnList;            /*LTEÖÆÊ½Ï¿ÉÓÃPLMNÁбí*/

-}T_zMmiaUmm_PlmnList_BandInfo_Cnf;

-

-/*==============================================================================

- Ô­ÓMmiaUmm_ActiveReq_EV( MMIA->UMM )

- ˵Ã÷: ÇëÇóUMM¼¤»î»òÈ¥¼¤»îij¸öÓò

-==============================================================================*/

-typedef struct {

-    BYTE                        bSrcIndex;          /* The source index */

-    BYTE                        bDesIndex;          /* The destination index */

-

-    BITS                        bActiveType:1;    /* 0:attach; 1:detach */

-    BITS                        bActiveValue:2;    /* 0:cs; 1:ps; 2:cs/ps */ 

-    BITS                        :5;                                    

-    BYTE                        bPadding;

-}T_zMmiaUmm_Active_Req;

-

-/*==============================================================================

- Ô­ÓMMIA_UMM_ActiveCnf_EV( UMM->MMIA )

- ˵Ã÷: UMM¶Ô¼¤»î»òÈ¥¼¤»î²Ù×÷µÄÈ·ÈÏ

-==============================================================================*/

-typedef struct {

-    BYTE                        bSrcIndex;          /* The source index */

-    BYTE                        bDesIndex;          /* The destination index */

-

-    BYTE                        bResult;    /* ¶¯×÷½á¹û£¬È¡ÖµmSuccRlt_M, mFailRlt_M */

-    BYTE                        bPadding1;

-

-    WORD                        wCause;             /* GPRS Attachʧ°ÜÔ­Òò£¬¾ßÌåȡֵ¼ûÏàÓ¦µÄºê¶¨Òå */

-    BYTE                        abPadding2[2];

-}T_zMmiaUmm_Active_Cnf;

-

-

-/*==============================================================================

- Ô­ÓMMIA_UMM_MmInfoInd_EV( UMM->MMIA )

- ˵Ã÷: UMMÉϱ¨¸øMMIAÍøÂçµÄÐÅÏ¢¡£MMIAµÄ´¦Àíͨ¹ýºêÀ´¿ØÖÆ

-==============================================================================*/

-typedef struct {

-    BYTE                        bSrcIndex;          /* The source index */

-    BYTE                        bDesIndex;          /* The destination index */

-

-    BITS                        bFNameFg:1;

-    BITS                        bSNameFg:1;

-    BITS                        bLTZoneFg:1;

-    BITS                        bUTimeFg:1;

-    BITS                        bLasIdFg:1;

-    BITS                        bSTimeFg:1;

-    BITS                        :2;

-    BYTE                        bLocalTZone;	/* µ±µØÊ±Çø£¬¾ßÌ嶨Òå¼û24008 10.5.3.8*/

-

-    T_zAtiUmm_NetName               tFullName;/* ÔËÓªÉÌÈ«³Æ */

-    T_zAtiUmm_NetName               tShortName;/* ÔËÓªÉÌËõÃû */ 

-    T_zAtiUmm_TZAndTime             tUTime;         /* ͨÓÃʱ¼äºÍÊ±Çø£¬¾ßÌ嶨Òå¼û24008 10.5.3.9*/

-    T_zAtiUmm_LsaId                 tLsaId;         /* LSA ID,¾ßÌ嶨Òå¼û24008 10.5.3.11*/

-

-    BYTE                        bSavTime;       /* ÏÄÊ±ÖÆµ÷ÖÆÊ±¼ä£¬¾ßÌ嶨Òå¼û24008 10.5.3.12.¸Ã²ÎÊý²»´æÔÚʱµÈͬÓÚȡֵ0*/

-    T_z_PlmnId                  tCurPlmnId;     /*µ±Ç°ÍøÂçID*/

-}T_zMmiaUmm_MmInfo_Ind;

-

-

-/*==============================================================================

- Ô­ÓMMIA_UMM_CAUSE_IND_EV( UMM-->ATI )

- ˵Ã÷:  NASÏòATIÖ÷¶¯Éϱ¨Cause

-==============================================================================*/

-typedef struct {

-    BYTE                        bSrcIndex;

-    BYTE                        bDesIndex;

-    BYTE                        abPadding[2];

-

-    BYTE                        bModType;/*0-MM*/

-    BYTE                        bAct; /*3-GSM,5-W,15-TD,17-LTE*/

-    BYTE                        bDomain; /*0-CS,1-PS*/

-    BYTE                        bCause;

-}T_zMmiaUmm_Cause_Ind;

-

-/*==============================================================================

- Ô­ÓMMIA_UMM_RFControlReq_EV( MMIA->UMM )

- ˵Ã÷: MMIA·¢ËÍ¿ª¹ØÉ䯵µÄÇëÇóµ½UMM

-==============================================================================*/

-typedef struct {

-    BYTE                        bSrcIndex;          /* The source index */

-    BYTE                        bDesIndex;          /* The destination index */

-

-    BYTE                        bState;    /* 0:off,1:on*/

-    BYTE                        bPadding;

-}T_zMmiaUmm_RFControl_Req;

-

-/*==============================================================================

- Ô­ÓMMIA_UMM_RFControlCnf_EV( UMM->MMIA )

- ˵Ã÷: UMMÏòMMIAÈ·ÈÏÉ䯵¿ªÆô»ò¹Ø±Õ

-==============================================================================*/

-typedef struct {

-    BYTE                        bSrcIndex;          /* The source index */

-    BYTE                        bDesIndex;          /* The destination index */

-

-    BYTE                        bResult;/* ¶¯×÷½á¹û£¬È¡ÖµmSuccRlt_M, mFailRlt_M */

-    BYTE                        bPadding;

-}T_zMmiaUmm_RFControl_Cnf;

-

-/*==============================================================================

- Ô­ÓMMIA_UMM_AbortReq_EV( MMIA->UMM )

- ˵Ã÷: MMIAÇëÇóUMMÖжϵ±Ç°µÄ²Ù×÷

-==============================================================================*/

-typedef struct {

-    BYTE                        bSrcIndex;          /* The source index */

-    BYTE                        bDesIndex;          /* The destination index */

-

-    WORD                        wCause;

-}T_zMmiaUmm_Abort_Req;

-

-/**************************************************************************

- ÏûÏ¢£ºMMIA_UMM_EM_LockCellReq_Ev 

- ¹¦ÄÜ£º¹¤³ÌģʽÏÂÇëÇóËø¶¨Ð¡Çø×¤Áô£¨½öÊÊÓÃÓÚTDÖÆÊ½ÏµÄÊÖ¶¯ËÑÍøÇÒÓзþÎñÐ¡Çø£©

- **************************************************************************/

-typedef struct{

-    BYTE                        bSrcIndex;     /* Ô´Ë÷Òý */

-    BYTE                        bDesIndex;     /* Ä¿µÄË÷Òý */

-    BYTE                        bAction;       /*1: Ëø¶¨Ð¡Çø, 0: ½âËøÐ¡Çø*/

-    BYTE                        bPadding1;

-

-    WORD                        wUarfcn;       /*Ëø¶¨Ð¡ÇøÊ±ÓÐЧ*/

-    WORD                        wCellParaId;   /*Ëø¶¨Ð¡ÇøÊ±ÓÐЧ*/ 

-}T_zMmiaUmm_EM_LockCell_Req;

-

-/**************************************************************************

- ÏûÏ¢£ºMMIA_UMM_EM_LockCellCnf_Ev

- ¹¦ÄÜ£º¹¤³ÌģʽÏÂËøÐ¡ÇøÖ¤Êµ£¨½öÊÊÓÃÓÚTDÖÆÊ½ÏµÄÊÖ¶¯ËÑÍøÇÒÓзþÎñÐ¡Çø£©

- **************************************************************************/

-typedef struct {

-    BYTE                        bSrcIndex;

-    BYTE                        bDesIndex;

-    BYTE                        bResult;

-    BYTE                        bPadding;

-

-    DWORD                       dwReason;

-}T_zMmiaUmm_EM_LockCell_Cnf;

-

-/*==============================================================================

- Ô­ÓMMIA_UMM_SysconfigReq_EV( MMIA->UMM )

-         MMIA_UMM_SYSCONFIG_QUERY_CNF_EV(UMM->MMIA)

-         ˵Ã÷: ÒªÇóUMM¿ªÊ¼ÆôÓÃеÄϵͳÅäÖá£

-                 UMM»Ø¸´MMIAµ±Ç°µÄϵͳÅäÖÃÐÅÏ¢£»

-==============================================================================*/

-typedef struct {

-    BYTE                        bSrcIndex;                 /* The source index */

-    BYTE                        bDesIndex;                 /* The destination index */

-    BYTE                        abPadding[2];

-

-    BYTE                        bMode;                     /* ϵͳģʽ²Î¿¼£¬²Î¼ûºê¶¨Òå*/

-    BYTE                        bacqorder;                 /* ÍøÂç½ÓÈë´ÎÐò£¬²Î¼ûºê¶¨Òå*/

-    BYTE                        broam;                     /* ÊÇ·ñÖ§³ÖÂþÓΣ¬²Î¼ûºê¶¨Òå*/

-    BYTE                        bSrvdomain;                /* ÓòÉèÖ㬲μûºê¶¨Òå*/

-}T_zMmiaUmm_SysconfigReq_Req, T_zMmiaUmm_SysconfigQry_Cnf;

-

-/*==============================================================================

- Ô­ÓMMIA_UMM_CommonCnf_Ev( UMM->MMIA )

- ˵Ã÷: UMM¶ÔÆôÓÃÐÂÅäÖòÙ×÷µÄÈ·ÈÏ£¨ºóÐø²Ù×÷¿ÉÒÔÀ©Õ¹£©

-==============================================================================*/

-typedef struct {

-    BYTE                        bSrcIndex;          /* The source index */

-    BYTE                        bDesIndex;          /* The destination index */

-

-    BYTE                        bResult;            /* ¶¯×÷½á¹û£¬È¡ÖµmSuccRlt_M, mFailRlt_M */

-    BYTE                        bPadding1;

-

-    DWORD                       dwCause;            /* ÉèÖÃʧ°ÜÔ­Òò: £¨¾­Â½»¶È·ÈÏ£¬Õë¶ÔsysconfigÖ»Ìîд´ËÔ­Òò:²Ù×÷²»ÔÊÐí£©*/

-}T_zMmiaUmm_Common_Cnf;

-

-/*==============================================================================

- MMIA_UMM_CgattQueryReq_EV( MMIA->UMM )

- MMIA_UMM_VOICE_MODE_QUERY_REQ_EV(MMIA->UMM)

- MMIA_UMM_SYSCONFIG_QUERY_REQ_EV(MMIA->UMM)

- ˵Ã÷:²éѯPS¸½×Å״̬

-       ²éѯVoice Mode µ±Ç°Öµ

-       ²éѯsysconfigÉèÖõÄÖµ

-==============================================================================*/

-typedef struct { 

-    BYTE                                         bSrcIndex;

-    BYTE                                         bDesIndex;

-    BYTE                                         abPadding[2];

-}T_zMmiaUmm_CgattQuery_Req, T_zMmiaUmm_VoiceModeQry_Req,T_zMmiaUmm_SysconfigQry_Req,T_zMmiaUmm_CauseQuery_Req, T_zMmiaUmm_CsVoiceQry_Req;

-

-/*==============================================================================

- MMIA_UMM_CgattQueryCnf_Ev( UMM->MMIA )

- ˵Ã÷: PS¸½×Å״̬²éѯ½á¹û

-==============================================================================*/

-typedef struct { 

-    BYTE                                         bSrcIndex;

-    BYTE                                         bDesIndex;

-   

-    BYTE                                         bState; /*

-                                                                                                                                                            Z_MmiaUmm_CGATTSET_DETACH

-                                                                                                                                                            Z_MmiaUmm_CGATTSET_ATTACH*/

-    BYTE                                         bPadding;

-}T_zMmiaUmm_CgattQuery_Cnf;

-

-/*==============================================================================

- MMIA_UMM_CSVOICEQRY_CNF_EV( UMM->MMIA )

- ˵Ã÷: CSÓïÒôÄÜÁ¦²éѯ½á¹û

-==============================================================================*/

-typedef struct { 

-    BYTE                                         bSrcIndex;

-    BYTE                                         bDesIndex;

-   

-    BYTE                                         bCsVoiceSupFlg;

-    BYTE                                         bPadding;

-}T_zMmiaUmm_CsVoiceQry_Cnf;

-

-/*==============================================================================

- MMIA_UMM_ZattQueryReq_EV( MMIA->UMM )

- ˵Ã÷: ²éѯCS¸½×Å״̬

-==============================================================================*/

-typedef struct { 

-    BYTE                                         bSrcIndex;

-    BYTE                                         bDesIndex;

-    BYTE                                         abPadding[2];

-}T_zMmiaUmm_ZattQuery_Req;

-

-/*==============================================================================

- MMIA_UMM_ZattQueryCnf_Ev( UMM->MMIA )

- ˵Ã÷: CS¸½×Å״̬²éѯ½á¹û

-==============================================================================*/

-typedef struct { 

-    BYTE                                         bSrcIndex;

-    BYTE                                         bDesIndex;

-   

-    BYTE                                         bState;    /*

-                                                                                                                                                                    Z_MmiaUmm_ZATTSET_DETACH

-                                                                                                                                                                    Z_MmiaUmm_ZATTSET_ATTACH*/

-    BYTE                                         bPadding;

-}T_zMmiaUmm_ZattQuery_Cnf;

-

-/*==============================================================================

- Ô­ÓMMIA_UMM_SearchPlmnCnf_Ev( UMM->MMIA )

- ˵Ã÷: UMM¶ÔËÑÍøÇëÇóµÄÈ·ÈÏ

-==============================================================================*/

-typedef struct {

-    BYTE                        bSrcIndex;

-    BYTE                        bDesIndex;

-    BYTE                        bResult;

-    DWORD                       dwCause;

-}T_zMmiaUmm_SearchPlmn_Cnf;

-/**************************************************************************

- ÏûÏ¢£ºMMIA_UMM_CsgSel_Req_Ev

- ¹¦ÄÜ£ºCSGÑ¡ÔñÇëÇóÏûÏ¢

- ATÃüÁî: +ZCSG=<mode>[,<rat>,<CSG_ID>]

- **************************************************************************/

-typedef struct {

-    BYTE                        bSrcIndex;

-    BYTE                        bDesIndex;

-    BYTE                        bCsgSelMode;      /*CSGÑ¡Ôñģʽ£¬Óйرգ¬×Ô¶¯ºÍÊÖ¶¯3ÖÖ*/

-    BYTE                        bPadding;

-    T_z_CsgId                   tCsgId;           /*Ñ¡ÔñµÄCSGÐÅÏ¢£¬¹Ø±ÕCSGʱ£¬¿É²»Ìî*/

-    T_z_PlmnAct                 tPlmnAct;         /*¶ÔӦѡÔñµÄCsgËù¹éÊôµÄÍøÂçºÍÑ¡ÔñµÄÖÆÊ½*/

-}T_zMmiaUmm_CsgSel_Req;

-

-/**************************************************************************

- ÏûÏ¢£ºMMIA_UMM_CsgSel_Cnf_Ev

- ¹¦ÄÜ£ºCSGÑ¡ÔñÈ·ÈÏÏûÏ¢

- **************************************************************************/

-typedef struct {

-    BYTE                        bSrcIndex;

-    BYTE                        bDesIndex;

-    BYTE                        bResult;          /*CSGÑ¡ÔñµÄ½á¹û*/

-    BYTE                        bPadding;

-    DWORD                       bErrCode;         /*´íÎóÔ­Òò*/

-}T_zMmiaUmm_CsgSel_Cnf;

-

-/**************************************************************************

- MMIA_UMM_CurCsgQry_Req_Ev

- ¹¦ÄÜ£º²éѯµ±Ç°CSGµÄÑ¡Ôñģʽ£¬Ñ¡ÔñµÄPLMNID,RAT,HNB

- ATÃüÁî: +ZCSG?

- **************************************************************************/

-typedef struct {

-    BYTE                        bSrcIndex;

-    BYTE                        bDesIndex;

-    BYTE                        bPadding[2];

-}T_zMmiaUmm_CurCsgQry_Req;

-

- /**************************************************************************

- MMIA_UMM_CSG_Cnf_Ev

- ¹¦ÄÜ£ºCSG²éѯ½á¹û

- **************************************************************************/

-typedef struct {

-    BYTE                        bSrcIndex;

-    BYTE                        bDesIndex;

-    BYTE                        bCsgSelMode;     /* Ñ¡Ôñģʽ,·ÖΪ¹Ø±Õ£¬×Ô¶¯ºÍÊÖ¶¯3ÖÖ */

-    BYTE                        bPadding;        

-    T_z_CsgInfo                 tCsgInfo;        /* CSGÐÅÏ¢ */

-}T_zMmiaUmm_CurCsgQry_Cnf;

-

-/**************************************************************************

- MMIA_UMM_CsgList_Req_Ev

- ¹¦ÄÜ£ºÁоÙCSG list

- ATÃüÁî: +ZCSG=?

- **************************************************************************/

-typedef struct {

-    BYTE                        bSrcIndex;

-    BYTE                        bDesIndex;

-    BYTE                        bPadding[2];

-}T_zMmiaUmm_CsgList_Req;

-

-/**************************************************************************

- MMIA_UMM_CsgList_Cnf_Ev

- ¹¦ÄÜ£ºCSGÁбí

- **************************************************************************/

-typedef struct {

-    BYTE                        bSrcIndex;

-    BYTE                        bDesIndex;

-    BYTE                        bNum;                                /* CSG¸öÊý */

-    BYTE                        bPadding;

-    T_z_CsgInfo                 atCsgInfoList[Z_MmiaUmm_MaxCsgNum];  /* CSGÁбí */

-    BYTE                        abState[Z_MmiaUmm_MaxCsgNum];        /* ÿ¸öCSG InfoÊÇ·ñÔÚAllowed CSG listÖÐ */

-}T_zMmiaUmm_CsgList_Cnf;

-

-/**************************************************************************

- ÏûÏ¢£ºMMIA_UMM_EpsModeSetReq_Ev

- ¹¦ÄÜ£ºMMIA֪ͨUMMÉèÖÃCEMOD²ÎÊý

- **************************************************************************/

-typedef struct { 

-    BYTE                                         bSrcIndex;

-    BYTE                                         bDesIndex;

-    BYTE                                         bMode;    /*+CEMODEÉèÖÃÖµ                                                                                                       

-                                                                                                                                                               * Z_MmiaUmm_CEMODE_PSMODE              

-                                                                                                                                                               * Z_MmiaUmm_CEMODE_MODE1               

-                                                                                                                                                               * Z_MmiaUmm_CEMODE_MODE2              

-                                                                                                                                                               */

-    BYTE                                         bPadding;

-}T_zMmiaUmm_EpsModeSet_Req;

-

-/**************************************************************************

- ÏûÏ¢£ºMMIA_UMM_EpsModeSetCnf_Ev

- ¹¦ÄÜ£ºUMM֪ͨMMIAÉèÖÃCEMOD²ÎÊýµÄ½á¹û

- **************************************************************************/

-typedef struct { 

-    BYTE                                         bSrcIndex;

-    BYTE                                         bDesIndex;

-    BYTE                                         bRlt; /*ZPS_SUCC,ZPS_FAIL*/    

-    BYTE                                         bPadding;

-    DWORD                                        dwCause;

-}T_zMmiaUmm_EpsModeSet_Cnf;

-

-/**************************************************************************

- ÏûÏ¢£ºMMIA_UMM_EpsModeQryReq_Ev

- ¹¦ÄÜ£ºMMIAÏòUMMÇëÇóNVÖÐÉèÖõÄCEMOD²ÎÊý

- **************************************************************************/

-typedef struct { 

-    BYTE                                         bSrcIndex;

-    BYTE                                         bDesIndex;                                                                                                          

-    BYTE                                         bPadding[2];

-}T_zMmiaUmm_EpsModeQry_Req;

-

-/**************************************************************************

- ÏûÏ¢£ºMMIA_UMM_EpsModeQryCnf_Ev

- ¹¦ÄÜ£ºUMMÏòMMIA»Ø¸´NVÖÐÉèÖõÄCEMOD²ÎÊý

- **************************************************************************/

-typedef struct { 

-    BYTE                                         bSrcIndex;

-    BYTE                                         bDesIndex;

-    BYTE                                         bMode;    /*+CEMODE?ÖеÄÉèÖÃÖµ                                                                                                       

-                                                                                                                                         * Z_MmiaUmm_CEMODE_PSMODE              

-                                                                                                                                         * Z_MmiaUmm_CEMODE_MODE1               

-                                                                                                                                          * Z_MmiaUmm_CEMODE_MODE2              

-                                                                                                                                         */

-    BYTE                                         bPadding;

-}T_zMmiaUmm_EpsModeQry_Cnf;

-/**************************************************************************

- ÏûÏ¢£ºMMIA_UMM_SetLteAct_Req_Ev

- ¹¦ÄÜ£ºÉèÖÃLTE½ÓÈë¼¼Êõ

- **************************************************************************/

-typedef struct {

-    BYTE                        bSrcIndex;

-    BYTE                        bDesIndex;

-    BYTE                        bLteAct;       /*

-                                                                                                                                LTEÖ§³ÖµÄ½ÓÈë¼¼Êõ,

-                                                                                                                                Z_MmiaUmm_LTE_TDD_Only 

-                                                                                                                               Z_MmiaUmm_LTE_FDD_Only   

-                                                                                                                               Z_MmiaUmm_LTE_TDD_Pref 

-                                                                                                                               Z_MmiaUmm_LTE_FDD_Pref  */

-    BYTE                        bPadding;

-}T_zMmiaUmm_SetLteAct_Req;

-

-/**************************************************************************

- ÏûÏ¢£ºMMIA_UMM_CsSrvInd_Ev

- ¹¦ÄÜ£ºUMMÏòMMIAÉϱ¨µ±Ç°ÓÐCS±»½Ð£¬ÇëÇóÊÇ·ñÐèÒª½ÓÌý

- **************************************************************************/

-typedef struct { 

-    BYTE                                         bSrcIndex;

-    BYTE                                         bDesIndex;

-    BYTE                                         bSsCodeFg;

-    BYTE                                         bSsCode;

-    T_z_CallNum                                tCLI;                          

-}T_zMmiaUmm_MtCsSrv_Ind;

-

-/**************************************************************************

- ÏûÏ¢£ºMMIA_UMM_CsSrvCnf_Ev

- ¹¦ÄÜ£ºMMIA»Ø¸´UMMÊÇ·ñÐèÒª½ÓÈë±»½Ð

- **************************************************************************/

-typedef struct { 

-    BYTE                                         bSrcIndex;

-    BYTE                                         bDesIndex;

-    BYTE                                         bRst;      /*Z_VALID - ½ÓÊÜMTÒµÎñ; 

-                                                                                                                                        Z_INVALID - ¾Ü¾øMT ÒµÎñ*/

-    BYTE                                         bPadding;                         

-}T_zMmiaUmm_MtCsSrv_Cnf;

-

-/**************************************************************************

- ÏûÏ¢£ºMMIA_UMM_ImsRegisterState_Ev

- ¹¦ÄÜ£ºMMIA֪ͨUMM IMS ×¢²á״̬

- **************************************************************************/

-typedef struct { 

-    BYTE                                         bSrcIndex;

-    BYTE                                         bDesIndex;

-    BYTE                                         bIMSRegState; /*Z_MmiaUmm_IMS_REGISTERED; 

-                                                                                                                                                Z_MmiaUmm_IMS_DEREGISTERED*/

-    BYTE                                         bPadding;                      

-}T_zMmiaUmm_ImsRegisterState_Req;

-

-/**************************************************************************

- ÏûÏ¢£ºMMIA_UMM_VOICE_MODE_SET_REQ_EV

-                 MMIA_UMM_VOICE_MODE_QUERY_CNF_EV

- ¹¦ÄÜ£ºMMIA֪ͨUMM Voice ModeµÄÉèÖÃÖµ

-                 UMM·µ»Øµ±Ç°Voice ModeµÄʵ¼ÊÖµ

-˵Ã÷ ::   +CVMODÓÉUMM´æ´¢£¬Óû§ÅäÖÃÖµMMIA´«¸øUMM

- **************************************************************************/

-typedef struct {

-    BYTE                                         bSrcIndex;

-    BYTE                                         bDstIndex;

-    BYTE                                         bVoiceMode;  /* 

-                                                              * Z_MMIAUMM_VOICE_MODE_CS_ONLY    

-                                                              * Z_MMIAUMM_VOICE_MODE_VOIP_ONLY  

-                                                              * Z_MMIAUMM_VOICE_MODE_CS_PREF    

-                                                              * Z_MMIAUMM_VOICE_MODE_VOIP_PREF  

-                                                              */

-    BYTE                                         bPadding;

-}T_zMmiaUmm_VoiceModeSet_Req, T_zMmiaUmm_VoiceModeQry_Cnf;

-

-/**************************************************************************

- ÏûÏ¢£ºMMIA_UMM_SMSOVERIPNET_SETREQ_EV

- ¹¦ÄÜ£ºÉèÖÃSMSÊÇ·ñÖ§³ÖIPnetwork´«ÊäµÄÐÅÏ¢

- **************************************************************************/

-typedef struct { 

-    BYTE                                         bSrcIndex;

-    BYTE                                         bDesIndex;

-    BYTE                                         bSmsOverIpNetSupp;   /* 

-                                                                       * Z_VALID: ±íʾSMSÖ§³ÖIPnetwork´«Êä

-                                                                       * Z_INVALID: ±íʾSMS²»Ö§³ÖIPnetwork´«Êä

-                                                                      */  

-    BYTE                                         bPadding;                                                                                                                  

-}T_zPS_MmiaUmm_SmsOverIpNet_Set_Req,

-T_zMmiaUmm_SmsOverIpNet_Set_Req;

-

-/**************************************************************************

- ÏûÏ¢£ºMMIA_UMM_NOTIFY_PS_STATE_EV

- ¹¦ÄÜ£º¶àģ˫´ý֪ͨµ±Ç°´ý»ú²àPS״̬ÐÅÏ¢

- **************************************************************************/

-typedef struct {

-    BYTE      bSrcIndex;

-    BYTE      bDesIndex;

-    BYTE      bPsState;     /* 

-                             * Z_MMIAUMM_PS_STATE_NULL ÎÞЧֵ

-                             * Z_MMIAUMM_PS_STATE_AVAIL

-                             * Z_MMIAUMM_PS_STATE_NOT_AVAIL

-                            */

-    BYTE      bStackId;    /*

-                            * 0: ЭÒéÕ»1

-                            * 1: ЭÒéÕ»2

-                            */

-}T_zMmiaUmm_NotifyPsState;

-

-typedef struct {

-    BYTE    bLteNum;  // LTEÁÚÇøµÄ¸öÊý

-    BYTE    bTdNum;   // TDÁÚÇøµÄ¸öÊý

-    WORD    wEarfcn[Z_MAX_STORED_EFRQE_NUM]; //LTEÁÚÇø

-    WORD    wUarfcn[Z_MAX_STORED_FRQE_NUM];  //TDÁÚÇø

-}T_zMmiaUmm_DualPsTLNCell;

-

-/*==============================================================================

- Ô­ÓMMIA_UMM_SUBMODE_IND_EV

- ˵Ã÷£ºÖ÷¶¯Éϱ¨µ±Ç°HSPAÄÜÁ¦

-==============================================================================*/

-typedef struct {

-    BYTE         bAct;                          /*µ±Ç°ÖÆÊ½£¬Ö±½ÓÈ¡psCom.h£¬Z_TD_ACTµÈ*/

-    BYTE         bSubMode;                      /*µ±Ç°Ð¡ÇøÄÜÁ¦£¬Ö±½ÓÈ¡psCom.h£¬Z_SUBMODE_GSMµÈ*/

-    BYTE         bPadding[2];

-}T_zMmiaUmm_SubMode_Ind;

-

-/**************************************************************************

- ÏûÏ¢£ºMMIA_UMM_SRVCC_IND_EV

- ¹¦ÄÜ£ºUMMÏòATIÉϱ¨SRVCCµÄ½á¹û 

-**************************************************************************/

-typedef struct {

-    BYTE                                         bSrcIndex;

-    BYTE                                         bDesIndex;

-    BYTE                                         bEvent;/*Z_MMIAUMM_SRVCC_START

-                                                                     Z_MMIAUMM_SRVCC_SUCC

-                                                                     Z_MMIAUMM_SRVCC_FAIL*/

-    BYTE                                         bPadding;

-}T_zMmiaUmm_Srvcc_Ind;

-

-/***********************************************************

-Ô­Óï: MMIA_UMM_PS_CONTEXT_REQ_EV

-¹¦ÄÜ: ATI»ñȡijһ¸ö´ý»ú²àµÄPSÓòMM²ãÉÏÏÂÎÄÐÅÏ¢

-***********************************************************/

-typedef struct {

-    BYTE        bSrcIndex;

-    BYTE        bDesIndex;

-    BYTE        abPadding[2];

-}T_zMmiaUmm_PsContext_Req;

-/***********************************************************

-Ô­Óï: MMIA_UMM_PS_CONTEXT_CNF_EV

-¹¦ÄÜ:UMM·µ»Øµ±Ç°PSÓòÉÏÏÂÎÄÐÅÏ¢

-***********************************************************/

-typedef struct {

-    BYTE        bSrcIndex;

-    BYTE        bDesIndex;

-    BYTE        bPsRegState;/*Z_VALIDÒÑ×¢²á£¬Z_INVALIDδע²á*/

-    BYTE        bPadding;

-}T_zMmiaUmm_PsContext_Cnf;

-

-/***********************************************************

-Ô­Óï:MMIA_UMM_PS_CONTEXT_IND_EV

-¹¦ÄÜ:UMM֪ͨÁíÒ»¸ö´ý»ú²àMM²ãÉÏÏÂÎÄÐÅÏ¢

-***********************************************************/

-typedef struct {

-    BYTE        bSrcIndex;

-    BYTE        bDesIndex;

-    BYTE        bPsRegState;/*Z_VALIDÒÑ×¢²á£¬Z_INVALIDδע²á*/

-    BYTE        bPadding;

-}T_zMmiaUmm_PsContext_Ind;

-

-/*=================================================================

-Ô­ÓMMIA_UMM_CAUSE_QUERY_CNF_EV(CC->MMIA)

-˵Ã÷: PSÓòʧ°ÜÔ­Òò²éѯ

-=================================================================*/

-typedef struct {

-    BYTE                        bSrcIndex;    

-    BYTE                        bDesIndex;         

-    BYTE                        bPsCauseFg;

-    BYTE                        bCsCauseFg;

-    DWORD                       dwPsCause;

-    DWORD                       dwCsCause;    /*×î½üÒ»´Î¸½×Å»òÈ¥¸½×Åʧ°ÜÔ­Òò »ò¸üÐÂʧ°ÜÌØÊâÔ­Òòʧ°Ü*/

-}T_zMmiaUmm_CauseQuery_Cnf;

-

-typedef struct {

-    BYTE bNum;

-    BYTE bPadding;

-    T_z_PlmnId abOperatePlmn[Z_MAX_OPERATE_PLMNNUM];

-}T_zMmiaUmm_OperPlmn;

-

-/*MMIA_UMM_ECALLSPT_QUERY_REQ_EV, MMIA_UMM_ECALLONLY_QUERY_REQ_EV*/

-typedef struct {

-    BYTE                        bSrcIndex;

-    BYTE                        bDesIndex;

-    BYTE                        abPadding[2];

-}T_zMmiaUmm_eCallSpt_QueryReq, T_zMmiaUmm_eCallOnly_QueryReq;

-

-/*MMIA_UMM_ECALLSPT_QUERY_CNF_EV*/

-typedef struct {

-   BYTE            bSrcIndex;

-   BYTE            bDesIndex;

-   BYTE            beCallOverIms;

-   BYTE            bUiccSpteCall;

-}T_zMmiaUmm_eCallSpt_QueryCnf;

-

-/*MMIA_UMM_ECALLONLY_QUERY_CNF_EV*/

-typedef struct {

-   BYTE            bSrcIndex;

-   BYTE            bDesIndex;

-   BYTE            beCallOnly; /*Z_VALID, Z_INVALID*/

-   BYTE            bPadding;

-}T_zMmiaUmm_eCallOnly_QueryCnf;

-

-/*MMIA_UMM_T10DEREG_IND_EV*/

-typedef struct {

-   BYTE            bSrcIndex;

-   BYTE            bDesIndex;

-   BYTE            abPadding[2];

-}T_zMmiaUmm_T10Dereg_Ind;

-

-

-/*PDPµØÖ·*/

-typedef struct 

-{

-    BYTE                bPdpType;  /* PDPÀàÐÍ£¬È¡ÖµÈçÏÂ

-                                    * Z_MMIASM_PPP

-                                    * Z_MMIASM_IPv4

-                                    * Z_MMIASM_IPv6

-                                    * Z_MMIASM_IPV4V6

-                                    */

-    BYTE                abPadding[3];

-

-    BYTE                abIPv4Addr[Z_MMIASM_IPV4_ADDR_MAX_LEN];

-    BYTE                abIPv6Addr[Z_MMIASM_IPV6_ADDR_MAX_LEN];

-}T_zMmiaSm_PdpAddr;

-

-typedef struct 

-{

-    BYTE                bCid;

-    BYTE                abPadding[3];

-

-    T_zMmiaSm_PdpAddr   tPdpAddr;

-}T_zMmiaSm_CidPdpAddr;

-

-/* PCOÏà¹ØÐÅÏ¢ */

-typedef struct 

-{

-    WORD                wId;            /*ProtocolId or ContainerId*/

-    BYTE                bLen;

-    BYTE                bPadding;

-

-    BYTE                abBuf[Z_MMIASM_PCO_ITEM_VAL_MAX_LEN];

-                                            /*ProtocolId Contents or ContainerId contents*/

-}T_zMmiaSm_Container;

-

-typedef struct 

-{

-    BYTE                bProtNum;

-    BYTE                bAddParaNum;

-    BYTE                abPadding[2];

-

-    T_zMmiaSm_Container atProtList[Z_MMIASM_PCO_PROT_ITEM_MAX_NUM];

-    T_zMmiaSm_Container atAddParaList[Z_MMIASM_PCO_PARA_ITEM_MAX_NUM];

-}T_zMmiaSm_PcoInfo;

-

-typedef struct 

-{

-    BYTE                bCid;

-    BYTE                abPadding[3];

-

-    T_zMmiaSm_PcoInfo   *ptPco;

-}T_zMmiaSm_CidPcoInfo;

-

-/* ¼¤»î²Ù×÷½á¹û */

-typedef struct 

-{

-    BYTE                bCid;

-    BYTE                bHandleResult;      /* Z_SUCC/Z_FAIL */

-    BYTE                bCause;    /* 

-                                                            * Z_MMIASM_PDP_ACT_CAUSE_IPV4_ONLY_ALLOWED          

-                                                            * Z_MMIASM_PDP_ACT_CAUSE_IPV6_ONLY_ALLOWED          

-                                                            * Z_MMIASM_PDP_ACT_CAUSE_SINGLE_ADDR_ONLY_ALLOWED   

-                                                            */

-    BYTE                bPadding;

-    

-    DWORD               dwReason;

-    T_zMmiaSm_PdpAddr   tPdpAddr;

-}T_zMmiaSm_PdpActRes,T_zMmiaSm_IpPdpAct_Cnf;

-

-

-/**************************************************************************** 

-  Ô­Óï: MMIA_SM_PDP_STATUS_QUERY_REQ_EV, MMIA_SM_PDP_CAUSE_QUERY_REQ_EV

-        MMIA_SM_ABORT_REQ_EV, MMIA_SM_CONNECT_IND_EV, MMIA_SM_NO_CARRIER_CNF_EV

- ****************************************************************************/

-typedef struct 

-{

-    BYTE                bSrcIndex;

-    BYTE                bDesIndex;

-    BYTE                abPadding[2];

-}T_zMmiaSm_QueryPdpStatus_Req,T_zMmiaSm_QueryPdpCause_Req,

- T_zMmiaSm_Abort_Req,T_zMmiaEsm_QueryPdpCause_Req,

- T_zMmiaSm_Connect_Ind,T_zMmiaSm_NoCarrier_Cnf,T_zMmiaSm_CpsbQuery_Req;

-

-/**************************************************************************** 

-  Ô­Óï: MMIA_SM_CLOSE_CHNL_IND_EV, MMIA_SM_GET_PCO_IND_EV

- ****************************************************************************/

-typedef struct 

-{

-    BYTE                bCidNum;

-    BYTE                abPadding[3];

-

-    BYTE                abCid[Z_MMIASM_MAX_CID_NUM];

-}T_zMmiaSm_CloseCh_Ind,T_zMmiaSm_GetPco_Ind;

-

-/**************************************************************************** 

-  Ô­Óï: MMIA_SM_NEG_QOS_QUERY_REQ_EV, MMIA_SM_NEG_EQOS_QUERY_REQ_EV, 

-        MMIA_SM_PDP_ADDR_QUERY_REQ_EV, MMIA_SM_PDP_MODIFY_REQ_EV,

- ****************************************************************************/

-typedef struct 

-{

-    BYTE                bSrcIndex;

-    BYTE                bDesIndex;

-    BYTE                bCidNum;

-    BYTE                bPadding;

-

-    BYTE                abCid[Z_MMIASM_MAX_CID_NUM];

-}T_zMmiaSm_QueryNegQos_Req,T_zMmiaSm_QueryNegEQos_Req,

- T_zMmiaSm_QueryPdpAddr_Req,T_zMmiaSm_PdpMod_Req;

-

-/*==============================================================================

- Ô­Óï: MMIA_SM_PDP_ACTIVATE_REQ_EV(MMIA->SM)

- ˵Ã÷: MO PDPÉÏÏÂÎ碌î

-==============================================================================*/

-typedef struct 

-{

-    BYTE                bSrcIndex;

-    BYTE                bDesIndex;

-    BYTE                bCidNum;

-    BYTE                bAtType;    /* 

-                                     * ±êʶATÃüÁî

-                                     * +CGACT:  Z_MMIASM_ATCMD_CGACT  

-                                     * +ZGACT:  Z_MMIASM_ATCMD_ZGACT

-                                     */

-    BYTE                abCid[Z_MMIASM_MAX_CID_NUM];

-} T_zMmiaSm_PdpAct_Req;

-

-/*==============================================================================

- Ô­Óï: MMIA_SM_PDP_DEACTIVATE_REQ_EV(MMIA->SM)

- ˵Ã÷: MO PDPÉÏÏÂÎÄÈ¥¼¤»îÇëÇó

-==============================================================================*/

-typedef struct 

-{

-    BYTE                bSrcIndex;

-    BYTE                bDesIndex;

-    BYTE                bCidNum;

-    BYTE                bAtType;/* 

-                                     * ±êʶATÃüÁî

-                                     * +CGACT:  Z_MMIASM_ATCMD_CGACT  

-                                     * +ZGACT:  Z_MMIASM_ATCMD_ZGACT

-                                     */

-    BYTE                bIsDisconnect;

-    BYTE                abPadding[3];                                     

-    BYTE                abCid[Z_MMIASM_MAX_CID_NUM];

-}T_zMmiaSm_PdpDeact_Req;

-

-/*==============================================================================

- Ô­Óï: MMIA_SM_NEG_QOS_QUERY_REQ_EV(MMIA->SM)

- ˵Ã÷: ЭÉ̵Ä2G QoS²éѯ

-==============================================================================*/

-/* ¼ûT_zMmiaSm_QueryNegQos_Req */

-

-

-/*==============================================================================

- Ô­Óï: MMIA_SM_NEG_QOS_QUERY_CNF_EV(SM->MMIA)

- ˵Ã÷: ЭÉ̵Ä2GQoS²éѯ·µ»Ø

-==============================================================================*/

-typedef struct 

-{

-    BYTE                bPrecedence;

-    BYTE                bDelay;

-    BYTE                bReliability;

-    BYTE                bPeak;

-

-    BYTE                bMean;

-    BYTE                abPadding[3];

-}T_zMmiaSm_Qos;

-

-typedef struct 

-{

-    BYTE                bCid;

-    BYTE                abPadding[3];

-

-    T_zMmiaSm_Qos       tQoS;

-}T_zMmiaSm_CidQos;

-

-typedef struct 

-{

-    BYTE                bSrcIndex;

-    BYTE                bDesIndex;

-    BYTE                bCidNum;

-    BYTE                bPadding;

-

-    T_zMmiaSm_CidQos    atNegQos[Z_MMIASM_MAX_CID_NUM];

-}T_zMmiaSm_QueryNegQos_Cnf;

-

-/*==============================================================================

- Ô­Óï: MMIA_SM_NEG_EQOS_QUERY_REQ_EV(MMIA->SM)

- ˵Ã÷: ЭÉ̵Ä3G QoS²éѯ

-==============================================================================*/

-/* ¼ûT_zMmiaSm_QueryNegEQos_Req */

-

-

-/*==============================================================================

- Ô­Óï: MMIA_SM_NEG_EQOS_QUERY_CNF_EV(SM->MMIA)

- ˵Ã÷: ЭÉ̵Ä3GQoS²éѯ·µ»Ø

-==============================================================================*/

-typedef struct 

-{

-    BYTE                bTraffClass;

-    BYTE                bDlvOrder;

-    BYTE                bDlvErrSdu;

-    BYTE                bTraffPri;

-

-    BYTE                abSduErrRatio[2];   /* abSduErrRatio[0]:m, abSduErrRatio[1]:e.

-                                               Èç5*10-3±íʾΪ: abSduErrRatio[0]£½5,abSduErrRatio[1]£½3 */

-    BYTE                abResBer[2];   /* abResidualBer[0]:m, abResidualBer[1]:e.

-                                               Èç5*10-3±íʾΪ: abResidualBer[0]£½5,abResidualBer[1]£½3 */

-

-    DWORD               dwMaxRateUl;     /* µ¥Î»Îªkbps */

-    DWORD               dwMaxRateDl;     /* µ¥Î»Îªkbps */

-

-    DWORD               dwGuarRateUl;    /* µ¥Î»Îªkbps */

-    DWORD               dwGuarRateDl;    /* µ¥Î»Îªkbps */

-

-    WORD                wMaxSduSize;

-    WORD                wTransDelay;    /* µ¥Î»Îªms */

-}T_zMmiaSm_EQos;

-

-typedef struct 

-{

-    BYTE                bCid;

-    BYTE                abPadding[3];

-

-    T_zMmiaSm_EQos      tEQos;

-}T_zMmiaSm_CidEQos;

-

-typedef struct 

-{

-    BYTE                bSrcIndex;

-    BYTE                bDesIndex;

-    BYTE                bCidNum;

-    BYTE                bPadding;

-

-    T_zMmiaSm_CidEQos   atNegEQos[Z_MMIASM_MAX_CID_NUM];

-}T_zMmiaSm_QueryNegEQos_Cnf;

-

-/*==============================================================================

- Ô­Óï: MMIA_SM_ACTIVATED_CID_QUERY_REQ_EV(MMIA->SM)

- ˵Ã÷: ²éѯÒѾ­¼¤»îµÄPDPÉÏÏÂÎĶÔÓ¦µÄcid

-==============================================================================*/

-typedef struct 

-{

-    BYTE                bSrcIndex;

-    BYTE                bDesIndex;

-    BYTE                bCmdType; /* ´¥·¢²éѯµÄATÃüÁîÀàÐÍ

-                                   * MMIA/SM²¢²»¹ØÐÄ,͸´«¼´¿É

-                                   * ÓÉATI2·¢ËÍʱÌîд,½ÓÊÕʱ´¦Àí

-                                   * Z_MMIASM_CMD_CGCMOD

-                                   * Z_MMIASM_CMD_ZQNEG

-                                   * Z_MMIASM_CMD_CGEQNEG

-                                   * Z_MMIASM_CMD_CGCONTRDP

-                                   * Z_MMIASM_CMD_CGSCONTRDP 

-                                   * Z_MMIASM_CMD_CGTFTRDP   

-                                   * Z_MMIASM_CMD_CGEQOSRDP  

-                                   */

-    BYTE                bPadding;

-}T_zMmiaSm_QueryActCid_Req;

-

-/*==============================================================================

- Ô­Óï: MMIA_SM_ACTCID_QUERY_CNF_EV(SM->MMIA)

- ˵Ã÷: ·µ»ØÒѾ­¼¤»îµÄPDPÉÏÏÂÎĶÔÓ¦µÄcid

-==============================================================================*/

-typedef struct 

-{

-    BYTE                bSrcIndex;

-    BYTE                bDesIndex;

-    BYTE                bCmdType; /* ²Î¼ûT_zMmiaSm_ActiveCid_ReqÖÐbCmdType */

-    BYTE                bCidNum;

-

-    BYTE                abCid[Z_MMIASM_MAX_CID_NUM];

-}T_zMmiaSm_QueryActCid_Cnf;

-

-/*==============================================================================

- Ô­Óï: MMIA_SM_PDP_STATUS_QUERY_REQ_EV(MMIA->SM)

- ˵Ã÷: ²éѯËùÓÐÒѶ¨ÒåµÄPDPÉÏÏÂÎĵÄ״̬

-==============================================================================*/

-/* ¼ûT_zMmiaSm_QueryPdpStatus_Req */

-

-/*==============================================================================

- Ô­Óï: MMIA_SM_PDPSTATUS_QUERY_CNF_EV(SM->MMIA)

- ˵Ã÷: ·µ»ØËùÓÐÒѶ¨ÒåµÄPDPÉÏÏÂÎĵÄ״̬

-==============================================================================*/

-typedef struct 

-{

-    BYTE                bSrcIndex;

-    BYTE                bDesIndex;

-    BYTE                bActCidNum;         /* ÒѼ¤»îcidµÄÊýÄ¿ */

-    BYTE                bInactCidNum;       /* δ¼¤»îcidµÄÊýÄ¿ */

-

-    BYTE                abActCid[Z_MMIASM_MAX_CID_NUM];

-                                            /* ÒѼ¤»îcidÁбí */

-    BYTE                abInactCid[Z_MMIASM_MAX_CID_NUM];

-                                            /* δ¼¤»îcidÁбí */

-}T_zMmiaSm_QueryPdpStatus_Cnf;

-

-/*==============================================================================

- Ô­Óï: MMIA_SM_PDP_ADDR_QUERY_REQ_EV(MMIA->SM)

- ˵Ã÷: ²éѯPDPµØÖ·(¾²Ì¬µØÖ·»ò¶¯Ì¬µØÖ·)

-==============================================================================*/

-/* ¼ûT_zMmiaSm_QueryPdpAddr_Req */

-

-/*==============================================================================

- Ô­Óï: MMIA_SM_PDPADDR_QUERY_CNF_EV(SM->MMIA)

- ˵Ã÷: ·µ»Ø²éѯPDPµØÖ·(¾²Ì¬µØÖ·»ò¶¯Ì¬µØÖ·)

-==============================================================================*/

-typedef struct 

-{

-    BYTE                 bSrcIndex;

-    BYTE                 bDesIndex;

-    BYTE                 bCidNum;

-    BYTE                 bPadding;

-

-    T_zMmiaSm_CidPdpAddr atPdpAddr[Z_MMIASM_MAX_CID_NUM];

-}T_zMmiaSm_QueryPdpAddr_Cnf;

-

-/*==============================================================================

- Ô­Óï: MMIA_SM_PDP_CAUSE_QUERY_REQ_EV(MMIA->SM)

- ˵Ã÷: ²éѯ×î½üÒ»´Î¼¤»îʧ°ÜÔ­ÒòºÍÈ¥¼¤»îÔ­Òò

-==============================================================================*/

-/* ¼ûT_zMmiaSm_QueryPdpCause_Req */

-

-/*==============================================================================

- Ô­Óï: MMIA_SM_PDPCAUSE_QUERY_CNF_EV(SM->MMIA)

- ˵Ã÷: ·µ»Ø×î½üÒ»´Î¼¤»îʧ°ÜÔ­ÒòºÍÈ¥¼¤»îÔ­Òò

-==============================================================================*/

-typedef struct 

-{

-    BYTE                bSrcIndex;

-    BYTE                bDesIndex;

-

-    BYTE                bCauseFg;//0-dwCause²»´æÔÚ,1-dwCause´æÔÚ

-    BYTE                bBkOffTimeFg;//0-dwBkOffTime²»´æÔÚ,1-dwBkOffTime´æÔÚ

-

-    DWORD               dwCause;  /*×î½üÒ»´ÎPDP¼¤»îʧ°ÜÔ­Òò»òÈ¥»îÔ­Òò*/

-    DWORD               dwBkOffTime;//s

-}T_zMmiaSm_QueryPdpCause_Cnf,T_zMmiaEsm_QueryPdpCause_Cnf;

-

-/*==============================================================================

- Ô­Óï: MMIA_SM_PDP_ACTIVATE_CNF_EV(SM->MMIA)

- ˵Ã÷: MO PDPÉÏÏÂÎļ¤»î¡¢¶þ´Î¼¤»îµÄ²Ù×÷½á¹û

-==============================================================================*/

-typedef struct 

-{

-    BYTE                bSrcIndex;

-    BYTE                bDesIndex;

-    BYTE                bResult;  /* Ö´ÐÐ×ܽá¹û£¬È¡ÖµZ_SUCC/Z_FAIL */    

-    BYTE                bCidNum;

-    BYTE                bAtType;/*±êʶATÃüÁî

-                                               +CGACT:  Z_MMIASM_ATCMD_CGACT

-                                               +ZGACT:  Z_MMIASM_ATCMD_ZGACT

-                                               */

-    BYTE                abadding[3];

-    T_zMmiaSm_PdpActRes atResult[Z_MMIASM_MAX_CID_NUM];

-}T_zMmiaSm_PdpAct_Cnf;

-/*==============================================================================

- Ô­Óï: MMIA_SM_PDP_DEACTIVATE_CNF_EV(SM->MMIA)

- ˵Ã÷: MO PDPÉÏÏÂÎÄÈ¥¼¤»î½á¹û

-==============================================================================*/

-typedef struct 

-{

-    BYTE                bSrcIndex;

-    BYTE                bDesIndex;

-    BYTE                bResult;  /* Ö´ÐÐ×ܽá¹û£¬È¡ÖµZ_SUCC/Z_FAIL */    

-    BYTE                bCidNum;

-    BYTE                bAtType;/*±êʶATÃüÁî

-                                               +CGACT:  Z_MMIASM_ATCMD_CGACT

-                                               +ZGACT:  Z_MMIASM_ATCMD_ZGACT

-                                               */

-    BYTE                bIsDisconnect;

-    BYTE                abadding[2];

-    T_zMmiaSm_PdpActRes atResult[Z_MMIASM_MAX_CID_NUM];

-}T_zMmiaSm_PdpDeact_Cnf;

-

-typedef struct

-{

-    BYTE                    bCid;

-    BYTE                    bHandleResult;/* Z_SUCC/Z_FAIL */

-    BYTE                    abPadding[2];

-    DWORD               dwReason;

-}T_zMmiaSm_MtActRes;

-/*==============================================================================

- Ô­Óï: MMIA_SM_MT_ACT_ANS_CNF_EV(SM->ATI)

- ˵Ã÷: +CGANSÉèÖÃÇëÇóÏìÓ¦ÏûÏ¢

-==============================================================================*/

-typedef struct 

-{

-    BYTE                bSrcIndex;

-    BYTE                bDesIndex;

-    BYTE                bResult;   /* Ö´Ðнá¹û£¬È¡ÖµZ_SUCC/Z_FAIL */

-    BYTE                bCidNum;

-    BYTE                bAtFg;    /*Z_VALID,Z_INVALIDָʾÊÇ·ñÓÉATÃüÁî´¥·¢*/

-    BYTE                abPadding[3];

-

-    T_zMmiaSm_MtActRes      atResult[Z_MMIASM_MAX_CID_NUM];

-                                  /* Z_MMIASM_MT_ACT_REJÇé¿öºöÂÔ¸ÃcidÁбí */

-}T_zMmiaSm_MtActAns_Cnf;

-

-/*==============================================================================

- Ô­Óï: MMIA_SM_PDP_MODIFY_REQ_EV(MMIA->SM)

- ˵Ã÷: MO PDPÉÏÏÂÎÄÐÞ¸ÄÇëÇó

-==============================================================================*/

-/* ¼ûT_zMmiaSm_PdpMod_Req */

-

-/*==============================================================================

- Ô­Óï: MMIA_SM_PDP_MODIFY_CNF_EV(SM->MMIA)

- ˵Ã÷: MO PDPÉÏÏÂÎÄÐ޸IJÙ×÷½á¹û

-==============================================================================*/

-typedef struct 

-{

-    BYTE                bCid;

-    BYTE                bHandleResult;      /* Z_SUCC/Z_FAIL */

-    BYTE                abPadding[2];

-    

-    DWORD               dwReason;

-}T_zMmiaSm_PdpModRes;

-

-typedef struct 

-{

-    BYTE                bSrcIndex;

-    BYTE                bDesIndex;

-    BYTE                bResult;  /* Ö´ÐÐ×ܽá¹û£¬È¡ÖµZ_SUCC/Z_FAIL */    

-    BYTE                bCidNum;

-

-    T_zMmiaSm_PdpModRes atResult[Z_MMIASM_MAX_CID_NUM];

-}T_zMmiaSm_PdpMod_Cnf;

-

-/*==============================================================================

- Ô­Óï: MMIA_SM_ABORT_REQ_EV(MMIA->SM)

- ˵Ã÷: È¡Ïûµ±Ç°ÕýÔÚ½øÐеÄPDPÉÏÏÂÎ碌î²Ù×÷£¬µ¥ÏòÏûÏ¢£¬ÎÞ·µ»Ø

-==============================================================================*/

-/* ¼ûT_zMmiaSm_Abort_Req */

-

-/*==============================================================================

- Ô­Óï: MMIA_SM_PDP_ACTIVATE_IND_EV(SM->MMIA)

- ˵Ã÷: MT PDPÉÏÏÂÎ碌îÇëÇóµÄÉϱ¨Ö¸Ê¾

-==============================================================================*/

-typedef struct 

-{

-    BYTE                bSrcIndex;

-    BYTE                bDesIndex;

-    BYTE                abPadding1[2];

-

-    T_zMmiaSm_PdpAddr   tPdpAddr;

-

-    BYTE                abApn[Z_MMIASM_APN_MAX_LEN];

-    BYTE                abPadding2[3];

-}T_zMmiaSm_PdpAct_Ind;

-

-

-/*==============================================================================

- Ô­Óï: MMIA_SM_CID_DEACT_IND_EV(SM->MMIA)

- ˵Ã÷:  PDPÉÏÏÂÎÄÈ¥¼¤»îÉϱ¨Ö¸Ê¾,ΪÏúÁ¿Í³¼ÆÀ©

-==============================================================================*/

-typedef struct 

-{

-    BYTE                bCid;

-    BYTE                bAtType;/* 

-                                     * ±êʶATÃüÁî

-                                     * +CGACT:  Z_MMIASM_ATCMD_CGACT  

-                                     * +ZGACT:  Z_MMIASM_ATCMD_ZGACT

-                                     */

-    BYTE                abPadding[2];

-}T_zMmiaSm_CidDeact_Ind;

-

-

-/* Ò»´ÎPDPÉÏÏÂÎļ¤»î¡¢È¥¼¤»îÖ÷¶¯Éϱ¨*/

-typedef struct 

-{

-    BYTE                bType;  /*

-                                 * ±êʶÄÄÒ»¸ö+CGEVÖ÷¶¯Éϱ¨£¬È¡Öµ·¶Î§: 

-                                 * Z_MMIASM_CGEV_ME_PRI_PDN_ACT

-                                 * Z_MMIASM_CGEV_NW_PRI_PDN_DEACT

-                                 * Z_MMIASM_CGEV_ME_PRI_PDN_DEACT

-                                 * Z_MMIASM_CGEV_NW_PRI_PDN_ACT

-                                 */

-

-    BYTE                bCid;  /* ±êʶһ´ÎPDPÉÏÏÂÎÄ */

-    BYTE                abPadding[2];

-} T_zMmiaSm_Cgev_PriPdn;

-

-/* ÐÞ¸ÄPDPÉÏÏÂÎÄÖ÷¶¯Éϱ¨*/

-typedef struct 

-{

-    BYTE                bType; /* 

-                                * ±êʶÄÄÒ»¸ö+CGEVÖ÷¶¯Éϱ¨£¬È¡Öµ·¶Î§: 

-                                * Z_MMIASM_CGEV_NW_MODIFY

-                                * Z_MMIASM_CGEV_ME_MODIFY

-                                */

-

-    BYTE                bCid;  /* ±êʶһ´ÎPDPÉÏÏÂÎÄ*/

-    BYTE                bChngReason; /*

-                                      * ±êʶÐ޸ĵĶÔÏóÊÇʲô£¬È¡Öµ·¶Î§: 

-                                      * Z_MMIASM_CGEV_CHNG_TFT

-                                      * Z_MMIASM_CGEV_CHNG_QOS

-                                      * Z_MMIASM_CGEV_CHNG_TFT_AND_QOS

-                                      */

-

-    BYTE                bEventType;  /*

-                                      * ±êʶ¸Ã+CGEVÖ÷¶¯Éϱ¨½ö½öÊÇÉϱ¨Ò»¸öÐÅÏ¢£¬»¹ÊÇÐèÒªMEÏòÍø²àÓÐÒ»¸ö»ØÓ¦£¬È¡Öµ·¶Î§: 

-                                      * Z_MMIASM_CGEV_EVENT_TYPE_INFO

-                                      * Z_MMIASM_CGEV_EVENT_TYPE_ACKREQ

-                                      */

-} T_zMmiaSm_Cgev_ModifyPdn;

-

-/* ¶þ´ÎPDPÉÏÏÂÎļ¤»î¡¢È¥¼¤»îÖ÷¶¯Éϱ¨*/

-typedef struct 

-{

-    BYTE                bType;  /*

-                                 * ±êʶÄÄÒ»¸ö+CGEVÖ÷¶¯Éϱ¨£¬È¡Öµ·¶Î§: 

-                                 * Z_MMIASM_CGEV_NW_SEC_PDN_ACT

-                                 * Z_MMIASM_CGEV_ME_SEC_PDN_ACT

-                                 * Z_MMIASM_CGEV_NW_SEC_PDN_DEACT

-                                 * Z_MMIASM_CGEV_ME_SEC_PDN_DEACT

-                                 */

-

-    BYTE                bPriCid;  /* ±êʶһ´ÎPDPÉÏÏÂÎÄ*/

-    BYTE                bCid;  /* ±êʶ¶þ´ÎPDPÉÏÏÂÎÄ*/

-    BYTE                bEventType;  /*

-                                      * ±êʶ¸Ã+CGEVÖ÷¶¯Éϱ¨½ö½öÊÇÉϱ¨Ò»¸öÐÅÏ¢£¬»¹ÊÇÐèÒªMEÏòÍø²àÓÐÒ»¸ö»ØÓ¦£¬È¡Öµ·¶Î§: 

-                                      * Z_MMIASM_CGEV_EVENT_TYPE_INFO

-                                      * Z_MMIASM_CGEV_EVENT_TYPE_ACKREQ

-                                      */

-} T_zMmiaSm_Cgev_SecPdn;

-

-/* R5°æ±¾µÄ+CGEVËĸöÖ÷¶¯Éϱ¨*/

-typedef struct 

-{

-    BYTE                 bType;  /*

-                                  * ±êʶÄÄÒ»¸ö+CGEVÖ÷¶¯Éϱ¨£¬È¡Öµ·¶Î§: 

-                                  * Z_MMIASM_CGEV_R5_VER_NW_DEACT

-                                  * Z_MMIASM_CGEV_R5_VER_ME_DEACT

-                                  * Z_MMIASM_CGEV_R5_VER_MT_ACT_REJ

-                                  * Z_MMIASM_CGEV_R5_VER_NW_REACT

-                                  */

-

-    BYTE                 abPadding[3];

-

-    T_zMmiaSm_CidPdpAddr tPdpAddr;  /* cid¡¢pdpÀàÐͺÍpdpµØÖ·*/

-} T_zMmiaSm_Cgev_R5Ver;

-

-/*==============================================================================

- Ô­Óï: MMIA_SM_CGEV_IND_EV(SM->MMIA)

- ˵Ã÷: PDPÏà¹ØÊ¼þÉϱ¨

-==============================================================================*/

-typedef struct 

-{

-    BYTE                bSrcIndex; 

-    BYTE                bDesIndex;

-    BYTE                bCgevType;  /* ʼþÀàÐÍ£¬ºÍCGEVÏà¶Ô

-                                     * Z_MMIASM_CGEV_TYPE_PRI_PDN_IND

-                                     * Z_MMIASM_CGEV_TYPE_MODIFY_IND

-                                     * Z_MMIASM_CGEV_TYPE_SEC_PDN_IND

-                                     * Z_MMIASM_CGEV_TYPE_R5_VER_IND

-                                     */

-    BYTE                bPadding;

-

-    union

-    {

-        T_zMmiaSm_Cgev_PriPdn    tPriPdnInd;  /* Ò»´ÎPDPÉÏÏÂÎļ¤»î¡¢È¥¼¤»îÖ÷¶¯Éϱ¨*/

-        T_zMmiaSm_Cgev_ModifyPdn tModifyInd;  /* ÐÞ¸ÄPDPÉÏÏÂÎÄÖ÷¶¯Éϱ¨*/

-        T_zMmiaSm_Cgev_SecPdn    tSecPdnInd;  /* ¶þ´ÎPDPÉÏÏÂÎļ¤»î¡¢È¥¼¤»îÖ÷¶¯Éϱ¨*/

-        T_zMmiaSm_Cgev_R5Ver     tR5VerInd;   /* R5°æ±¾µÄ+CGEVËĸöÖ÷¶¯Éϱ¨*/

-    }u; 

-}T_zMmiaSm_Cgev_Ind;

-

-/*==============================================================================

- Ô­Óï: MMIA_SM_DATA_STATE_REQ_EV(MMIA->SM)

- ˵Ã÷: ½øÈëÊý¾Ý̬ÇëÇó

-==============================================================================*/

-typedef struct 

-{

-    BYTE                bSrcIndex;

-    BYTE                bDesIndex;

-    BYTE                bOnlyIpFg; /* ȡֵÈçÏÂ:

-                                    * Z_MMIASM_ONLY_IP --Ö»Õë¶ÔIPÀàÐÍ(DÃüÁî)

-                                    * Z_MMIASM_IP_PPP  --IPºÍPPPÀàÐÍ(+CGDATA)

-                                    */

-    BYTE                bCidNum;

-

-    BYTE                abCid[Z_MMIASM_MAX_CID_NUM];

-                                            /*cidÁбí*/

-}T_zMmiaSm_DataState_Req;

-

-/*==============================================================================

- Ô­Óï: MMIA_SM_MT_ACT_ANS_REQ_EV(MMIA->SM)

- ˵Ã÷: ½ÓÊÜ»ò¾Ü¾øMT PDPÉÏÏÂÎ碌îÇëÇó

-==============================================================================*/

-typedef struct 

-{

-    BYTE                bSrcIndex;

-    BYTE                bDesIndex;

-    BYTE                bType;    /* ²Ù×÷ÀàÐÍ£¬È¡Öµ½ÓÊÜ»ò¾Ü¾ø£¬

-                                   * Z_MMIASM_MT_ACT_REJ

-                                   * Z_MMIASM_MT_ACT_ACC

-                                   */

-    BYTE                bCidNum;

-    BYTE                bS0Val;  /* ¸ÃÖµ²»Îª0£¬Ôò±êʶS0ÓÐЧ */

-    BYTE                bAtFg;    /*Z_VALID,Z_INVALIDָʾÊÇ·ñÓÉATÃüÁî´¥·¢*/

-    BYTE                abPadding[2];

-

-    BYTE                abCid[Z_MMIASM_MAX_CID_NUM];

-                                  /* Z_MMIASM_MT_ACT_REJÇé¿öºöÂÔ¸ÃcidÁбí */

-}T_zMmiaSm_MtActAns_Req;

-

-/*==============================================================================

- Ô­Óï: MMIA_SM_IP_PDP_ACT_REQ_EV(MMIA->SM)

- ˵Ã÷: ATI2ͨ¹ýMMIAÔÚPPPЭÉ̽׶Σ¬¸ù¾ÝNCP ReqÖеÄPDPµØÖ·ÐÅÏ¢£¬ÒªÇóSMÈ·¶¨Ñ¡¶¨µÄcid

-       ÊÇ·ñºÏÊʲ¢Íê³ÉPDP¼¤»î

-==============================================================================*/

-typedef struct 

-{

-    BYTE                bCid;

-    BYTE                abPadding[3];

-

-    T_zMmiaSm_PdpAddr   tPdpAddr;           /* NCP ReqÖÐÌáÈ¡µÄIPµØÖ· */

-    T_zMmiaSm_PcoInfo   tPco;               /* ATI2ÌṩµÄÓÃÓÚPDP¼¤»îµÄPCOÐÅÏ¢ */

-}T_zMmiaSm_IpPdpAct_Req;

-

-

-/*==============================================================================

- Ô­Óï: MMIA_SM_CLOSE_CHNL_IND_EV(SM->MMIA)

- ˵Ã÷: SMͨ¹ýMMIA֪ͨATI2ÊÍ·Åcid¶ÔÓ¦µÄÏà¹ØÊý¾ÝͨµÀ

-==============================================================================*/

-/* ¼ûT_zMmiaSm_CloseCh_Ind */

-

-/*==============================================================================

- Ô­Óï: MMIA_SM_IDLE_CHNL_QUERY_IND_EV(SM->MMIA)

- ˵Ã÷: SMÄ£¿éͨ¹ýMMIAÏòATI2ѯÎÊÊÇ·ñÓпÕÏеÄͨµÀ¿ÉÉϱ¨RING/+CRING(±¾ÏûϢΪ¿ÕÏûÏ¢)

-==============================================================================*/

-/* ÎÞ */

-

-/*==============================================================================

- Ô­Óï: MMIA_SM_IDLE_CHNL_QUERY_RSP_EV(MMIA->SM)

- ˵Ã÷: ATI2ͨ¹ýMMIAÏòSM·µ»Ø²éѯ½á¹û

-==============================================================================*/

-typedef struct 

-{

-    BYTE                bResult;  /* ÊÇ·ñÓпÕÏÐͨµÀ½á¹û·µ»Ø 

-                                   * Z_MMIASM_CH_IDLE--ÓпÕÏÐͨµÀ

-                                   * Z_MMIASM_CH_BUSY--ÎÞ¿ÕÏÐͨµÀ

-                                   */

-    BYTE                abPadding[3];

-}T_zMmiaSm_QueryIdleCh_Rsp;

-

-/*==============================================================================

- Ô­Óï: MMIA_SM_GET_PCO_IND_EV(SM->MMIA)

- ¹¦ÄÜ: SMÄ£¿éͨ¹ýMMIAÏòATI2ÇëÇó»ñÈ¡PCO

- ¶ÔÓ¦ATÃüÁî: ÎÞ

-==============================================================================*/

-/* ¼ûT_zMmiaSm_GetPco_Ind */

-

-/*==============================================================================

- Ô­Óï: MMIA_SM_GET_PCO_RSP_EV(MMIA->SM)

- ¹¦ÄÜ: ATI2ͨ¹ýMMIAÏòSM·µ»ØPCO

- ¶ÔÓ¦ATÃüÁî: ÎÞ

-==============================================================================*/

-typedef struct 

-{

-    BYTE                 bCidNum;

-    BYTE                 abPadding[3];

-

-    T_zMmiaSm_CidPcoInfo atCidPco[Z_MMIASM_MAX_CID_NUM];

-}T_zMmiaSm_GetPco_Rsp;

-

-/*==============================================================================

- Ô­Óï: MMIA_SM_COMMON_CNF_EV(SM->MMIA)

- ˵Ã÷: SMÄ£¿éͨ¹ýMMIA֪ͨATI2Éϱ¨½á¹ûÂë

-==============================================================================*/

-typedef struct 

-{

-    BYTE                bSrcIndex;

-    BYTE                bDesIndex;

-    BYTE                bResult;            /* ȡֵZ_SUCC/Z_FAIL */

-    BYTE                bPadding;

-

-    DWORD               dwReason;           /* ¾ßÌåʧ°ÜÔ­Òò */

-}T_zMmiaSm_Common_Cnf;

-

-/*==============================================================================

- Ô­Óï: MMIA_SM_DISCONNECT_REQ_EV(MMIA->ATI)

- ˵Ã÷: ATI2ͨ¹ýMMIA֪ͨSM£¬Ò»Â·²¦ºÅÁ¬½Ó¶Ï¿ª

-==============================================================================*/

-typedef struct 

-{

-    BYTE                bSrcIndex;

-    BYTE                bDesIndex;

-    BYTE                bChnl;

-    BYTE                bPadding;

-}T_zMmiaSm_Disconnect_Req;

-

-/* µ±Ç°¼¤»îPDPÉÏÏÂÎĵijÐÔØ */

-typedef struct 

-{

-    BYTE                bCid;  /* ±êʶһ¸ö¼¤»îµÄPDPÉÏÏÂÎÄ */

-    BYTE                bCurrBearer;  /*

-                                       * µ±Ç°³ÐÔØÀàÐÍ: 

-                                       * Z_MMIASM_PDP_CURR_BEARER_NO_BEARER

-                                       * Z_MMIASM_PDP_CURR_BEARER_GPRS

-                                       * Z_MMIASM_PDP_CURR_BEARER_EGPRS

-                                       * Z_MMIASM_PDP_CURR_BEARER_NON_HSUPA_UP_NON_HSDPA_DOWN

-                                       * Z_MMIASM_PDP_CURR_BEARER_HSUPA_UP_NON_HSDPA_DOWN

-                                       * Z_MMIASM_PDP_CURR_BEARER_NON_HSUPA_UP_HSDPA_DOWN

-                                       * Z_MMIASM_PDP_CURR_BEARER_HSUPA_UP_HSDPA_DOWN

-                                       * Z_MMIASM_PDP_CURR_BEARER_EPS

-                                       */

-    BYTE                abPadding[2];

-}T_zMmiaSm_CpsbPara;

-

-/*==============================================================================

- Ô­Óï: (SM->MMIA)

- ˵Ã÷: »Ø¸´µ±Ç°¼¤»îPDPÉÏÏÂÎĵijÐÔØ¼°¶ÔÓ¦cidÄÚÈÝ

-==============================================================================*/

-typedef struct 

-{

-    BYTE                bSrcIndex;

-    BYTE                bDstIndex;

-    BYTE                bCidNum;  /* ±êʶµ±Ç°¼¤»îµÄPDPÊýÄ¿*/

-    BYTE                bPadding;

-    

-    T_zMmiaSm_CpsbPara  atPsBearer[Z_MMIASM_MAX_CID_NUM];  /* ¼¤»îµÄPDPÉÏÏÂÎÄÁбí*/

-} T_zMmiaSm_CpsbQuery_Cnf;

-

-/*==============================================================================

- Ô­Óï: (SM->MMIA)

- ˵Ã÷: Ö÷¶¯Éϱ¨³ÐÔØ·¢Éú¸Ä±äµÄPDP¼´µ±Ç°³ÐÔØÀàÐÍ

-==============================================================================*/

-typedef struct 

-{

-    BYTE                bSrcIndex;

-    BYTE                bDstIndex;

-    BYTE                bCid;   /* ±êʶһ¸ö¼¤»îµÄPDPÉÏÏÂÎÄ */

-    BYTE                bCurrBearer;  /*

-                                       * µ±Ç°³ÐÔØÀàÐÍ: 

-                                       * Z_MMIASM_PDP_CURR_BEARER_NO_BEARER

-                                       * Z_MMIASM_PDP_CURR_BEARER_GPRS

-                                       * Z_MMIASM_PDP_CURR_BEARER_EGPRS

-                                       * Z_MMIASM_PDP_CURR_BEARER_NON_HSUPA_UP_NON_HSDPA_DOWN

-                                       * Z_MMIASM_PDP_CURR_BEARER_HSUPA_UP_NON_HSDPA_DOWN

-                                       * Z_MMIASM_PDP_CURR_BEARER_NON_HSUPA_UP_HSDPA_DOWN

-                                       * Z_MMIASM_PDP_CURR_BEARER_HSUPA_UP_HSDPA_DOWN

-                                       * Z_MMIASM_PDP_CURR_BEARER_EPS

-                                       */

-}T_zMmiaSm_Cpsb_Ind;

-

-/*==============================================================================

- Ô­Óï: Z_MmiaSm_CgcontrdpReq_Ev(MMIA->SM)

- ˵Ã÷: ¶ÁÈ¡Íø²à·ÖÅäµÄÒ»´ÎPDPÉÏÏÂÎÄÏà¹Ø²ÎÊý

-==============================================================================*/

-typedef struct 

-{

-    BYTE                bSrcIndex;

-    BYTE                bDesIndex;

-    BYTE                bCidFlg;  /*

-                                   * ±êʶbCidÓÐЧÐÔ: 

-                                   * Z_VALID

-                                   * Z_INVALID

-                                   */

-    BYTE                bCid;  /* ±êʶPDPÉÏÏÂÎÄ*/

-} T_zMmiaSm_Cgcontrdp_Req;   

-

-/* »Ø¸´Íø²à·ÖÅäµÄÒ»´ÎPDPÉÏÏÂÎĵÄÍø¹ØµØÖ·¡¢DNS·þÎñÆ÷µØÖ·¼°CSCF·þÎñÆ÷µØÖ·*/

-typedef struct 

-{

-    BITS                bSrcAddrAndMaskFlg:1;  /* ±êʶbSrcAddrAndSubMaskÓÐЧÐÔ*/

-    BITS                bGwAddrFlg:1;          /* ±êʶbGwAddrÓÐЧÐÔ*/

-    BITS                bDnsPriAddrFlg:1;      /* ±êʶbDnsPriAddrÓÐЧÐÔ*/

-    BITS                bDnsSecAddrFlg:1;      /* ±êʶbDnsSecAddrÓÐЧÐÔ*/

-    BITS                bPCscfPriAddrFlg:1;    /* ±êʶbPCscfPriAddrÓÐЧÐÔ*/

-    BITS                bPCscfSecAddrFlg:1;    /* ±êʶbPCscfSecAddrÓÐЧÐÔ*/

-    BITS                bPCscfSecAddr2Flg:1;   /* ±êʶbPCscfSecAddr2ÓÐЧÐÔ*/

-    BITS                bPCscfSecAddr3Flg:1;   /* ±êʶbPCscfSecAddr3ÓÐЧÐÔ*/

-

-    BYTE               bImcnSignInd;

-    BYTE                abPadding[2];

-     

-    BYTE                abSrcAddrAndMask[Z_MMIASM_MAX_PDPADDR_MASK_LEN];  /* IPµØÖ·ºÍ×ÓÍøÑÚÂë*/

-    BYTE                abGwAddr[Z_MMIASM_ADDR_MAX_LEN];   /* Íø¹ØµØÖ·*/

-    BYTE                abDnsPriAddr[Z_MMIASM_ADDR_MAX_LEN];  /* Ö÷DNS·þÎñÆ÷IPµØÖ·*/

-    BYTE                abDnsSecAddr[Z_MMIASM_ADDR_MAX_LEN];  /* ±¸DNS·þÎñÆ÷IPµØÖ·*/

-    BYTE                abPCscfPriAddr[Z_MMIASM_ADDR_MAX_LEN];  /* Ö÷P-CSCF·þÎñÆ÷IPµØÖ·*/

-    BYTE                abPCscfSecAddr[Z_MMIASM_ADDR_MAX_LEN];  /* ±¸P-CSCF·þÎñÆ÷IPµØÖ·*/

-    BYTE                abPCscfSecAddr2[Z_MMIASM_ADDR_MAX_LEN];  /* ±¸P-CSCF·þÎñÆ÷IPµØÖ·2*/

-    BYTE                abPCscfSecAddr3[Z_MMIASM_ADDR_MAX_LEN];  /* ±¸P-CSCF·þÎñÆ÷IPµØÖ·3*/

-} T_zMmiaSm_Cgcontrdp_AddrInfo;

-

-/* »Ø¸´Íø²à·ÖÅäµÄÒ»´ÎPDPÉÏÏÂÎÄÏà¹Ø²ÎÊý*/

-typedef struct 

-{

-    BYTE                          bCid;  /* ±êʶPDPÉÏÏÂÎÄ*/

-    BYTE                          bBearerId;  /* ±êʶһ¸ö³ÐÔØ*/

-    BYTE                          bPdpType;  /*

-                                              * ±êʶPDNµØÖ·ÀàÐÍ£¬È¡Öµ·¶Î§: 

-                                              * Z_MMIAESM_IPV4 

-                                              * Z_MMIAESM_IPV6

-                                              * Z_MMIAESM_IPV4V6

-                                              */

-

-    BYTE                          bPadding;

-

-    BYTE                          abApn[Z_MMIASM_APN_MAX_LEN];  /* ·ÃÎʽڵãÃû*/

-    T_zMmiaSm_Cgcontrdp_AddrInfo  atNwEstIPv4Info;  /*

-                                                     * Íø²à·ÖÅäµÄIPv4µØÖ·ÀàÐ͵ÄÍø¹ØµØÖ·¡¢

-                                                     * DNS·þÎñÆ÷µØÖ·¼°CSCF·þÎñÆ÷µØÖ·

-                                                     * µ±bPdpTypeµÈÓÚZ_MMIASM_IPV4»ò

-                                                     * Z_MMIASM_IPV4V6ʱÓÐЧ

-                                                     */

-

-    T_zMmiaSm_Cgcontrdp_AddrInfo  atNwEstIPv6Info;  /*

-                                                     * Íø²à·ÖÅäµÄIPv6µØÖ·ÀàÐ͵ÄÍø¹ØµØÖ·¡¢

-                                                     * DNS·þÎñÆ÷µØÖ·¼°CSCF·þÎñÆ÷µØÖ·

-                                                     * µ±bPdpTypeµÈÓÚZ_MMIASM_IPV6»ò

-                                                     * Z_MMIASM_IPV4V6ʱÓÐЧ

-                                                     */

-} T_zMmiaSm_Cgcontrdp_Para;

-

-/*==============================================================================

- Ô­Óï: Z_MmiaSm_CgcontrdpCnf_Ev(SM->MMIA)

- ˵Ã÷: »Ø¸´Íø²à·ÖÅäµÄÒ»´ÎPDPÉÏÏÂÎÄÏà¹Ø²ÎÊý

-==============================================================================*/

-typedef struct 

-{

-    BYTE                      bSrcIndex;

-    BYTE                      bDesIndex;

-    BYTE                      bCidNum;  /* »ñÈ¡µÄPDPÉÏÏÂÎĵĸöÊý*/

-    BYTE                      bResult;  /* ȡֵZ_SUCC/Z_FAIL */

-    

-    T_zMmiaSm_Cgcontrdp_Para  atNwEstInfo[Z_MMIASM_MAX_CID_NUM];  /* Ò»´ÎPDPÉÏÏÂÎÄÏà¹Ø²ÎÊý*/

-} T_zMmiaSm_Cgcontrdp_Cnf;      

-

-/*==============================================================================

- Ô­Óï: Z_MmiaSm_CgscontrdpReq_Ev(MMIA->SM)

- ˵Ã÷: ¶ÁÈ¡Íø²à·ÖÅäµÄ¶þ´ÎPDPÉÏÏÂÎÄÏà¹Ø²ÎÊý

-==============================================================================*/

-typedef struct 

-{

-    BYTE                      bSrcIndex;

-    BYTE                      bDesIndex;

-    BYTE                      bCidFlg;  /* ±êʶbCidÓÐЧÐÔ   */

-    BYTE                      bCid;  /* ±êʶPDPÉÏÏÂÎÄ   */

-} T_zMmiaSm_Cgscontrdp_Req;

-

-/* ¶ÁÈ¡Íø²à·ÖÅäµÄ¶þ´ÎPDPÉÏÏÂÎÄÏà¹Ø²ÎÊý*/

-typedef struct 

-{

-    BYTE                      bCid;

-    BYTE                      bPriCid;

-    BYTE                      bBearerId;

-    BYTE                      bImcnSignInd;

-} T_zMmiaSm_Cgscontrdp_Para;

-

-/*==============================================================================

- Ô­Óï: Z_MmiaSm_CgscontrdpCnf_Ev(SM->MMIA)

- ˵Ã÷: »Ø¸´Íø²à·ÖÅäµÄ¶þ´ÎPDPÉÏÏÂÎÄÏà¹Ø²ÎÊý

-==============================================================================*/

-typedef struct 

-{

-    BYTE                      bSrcIndex;

-    BYTE                      bDesIndex;

-    BYTE                      bCidNum;   /* »ñÈ¡µÄPDPÉÏÏÂÎĵĸöÊý */

-    BYTE                      bResult;   /* ȡֵZ_SUCC/Z_FAIL */

-    

-    T_zMmiaSm_Cgscontrdp_Para tSecPdpPara[Z_MMIASM_MAX_CID_NUM];  /* ¶þ´ÎPDPÉÏÏÂÎÄÏà¹Ø²ÎÊý*/

-} T_zMmiaSm_Cgscontrdp_Cnf;

-

-/*==============================================================================

- Ô­Óï: Z_MmiaSm_CgtftrdpReq_Ev(MMIA->SM)

- ˵Ã÷: ¶ÁÈ¡Íø²à·ÖÅäµÄTFTÏà¹Ø²ÎÊý

-==============================================================================*/

-typedef struct 

-{

-    BYTE                      bSrcIndex;

-    BYTE                      bDesIndex;

-    BYTE                      bCidFlg;   /* ±êʶbCidÓÐЧÐÔ  */

-    BYTE                      bCid;   /* ±êʶPDPÉÏÏÂÎÄ  */

-} T_zMmiaSm_Cgtftrdp_Req;

-

-/* TFT²ÎÊý*/

-typedef struct {

-    BYTE                      bCid;  /* ±êʶPDPÉÏÏÂÎÄ*/

-    BYTE                      bNwFilterId;  /* Íø²à·ÖÅäµÄfilter ID£¬È¡Öµ·¶Î§: 1~16  */

-    BYTE                      abPadding[2];

-

-    T_zDev_AtMem_FilterType   tFilterData;  /* ÆäËû¹ýÂËÆ÷ÐÅÏ¢*/

-} T_zMmiaSm_CidFilter;

-

-/* ¶ÁÈ¡Íø²à·ÖÅäµÄTFTÏà¹Ø²ÎÊý*/

-typedef struct 

-{

-    BYTE                      bFilterNum;  /* ·ÖÀàÆ÷µÄ¸öÊý*/

-    BYTE                      abPadding[3];

-    

-    T_zMmiaSm_CidFilter       tNwAssignFilter[Z_MMIASM_MAX_FILTER_ID];  /* Íø²à·ÖÅäµÄfilterÆäËûÐÅÏ¢*/

-} T_zMmiaSm_Cgtftrdp_Para;

-

-/*==============================================================================

- Ô­Óï: Z_MmiaSm_CgtftrdpCnf_Ev(SM->MMIA)

- ˵Ã÷: »Ø¸´Íø²à·ÖÅäµÄTFTÏà¹Ø²ÎÊý

-==============================================================================*/

-typedef struct 

-{

-    BYTE                      bSrcIndex;

-    BYTE                      bDesIndex;

-    BYTE                      bCidNum;  /* »ñÈ¡µÄPDPÉÏÏÂÎĵĸöÊý*/

-    BYTE                      bResult;  /* ȡֵZ_SUCC/Z_FAIL */

-           

-    T_zMmiaSm_Cgtftrdp_Para   atNwAssignInfo[Z_MMIASM_MAX_CID_NUM];  /* Íø²à·ÖÅäµÄTFTÏà¹Ø²ÎÊý*/

-} T_zMmiaSm_Cgtftrdp_Cnf;

-

-/**************************************************************************** 

-  Ô­Óï: MMIA_SM_NOTIFICATION_IND_EV

-  ˵Ã÷: ESM֪ͨATI MMIA_SM_NOTIFICATION_IND_EVÏûÏ¢±íʾSRVCCʧ°Ü£¬ÐèÇóIMSЭÒé»Ö¸´ÒµÎñ¡£

- ****************************************************************************/

-typedef struct 

-{

-    BYTE                bSrcIndex;

-    BYTE                bDesIndex;

-    BYTE                bCid;

-    BYTE                bNotificationInd;    

-} T_zMmiaSm_Notification_Ind;

-

-/**************************************************************************** 

-  Ô­Óï: MMIA_SM_CONTEXT_REQ_EV

-  ˵Ã÷: ATI֪ͨSM/ESM½øÐÐÒµÎñ°áǨ

- ****************************************************************************/

-typedef struct 

-{

-    BYTE                bSrcIndex;

-    BYTE                bDesIndex;

-    BYTE                abPadding[2];

-} T_zMmiaSm_Context_Req;

-

-/**************************************************************************** 

-  Ô­Óï: MMIA_SM_CONTEXT_CNF_EV/MMIA_SM_CONTEXT_IND_EV

-  ˵Ã÷: SM/ESM»Ø¸´ATIµÄÒµÎñ°áǨµÄÈ·ÈÏÏûÏ¢

-                 ATI¸øÁíÒ»´ýSM/ESM·¢ËͰáǨָʾ

- ****************************************************************************/

-typedef struct 

-{

-    BYTE                bSrcIndex;

-    BYTE                bDesIndex;

-    BYTE                bContextInd;  

-                                                      /*  Z_MMIASM_CONTEXT_NULL

-                                                            Z_MMIASM_CONTEXT_ESM_VALID  

-                                                            Z_MMIASM_CONTEXT_SM_VALID*/

-    BYTE                bPadding;

-    PBYTE              pSmEsmData;

-} T_zMmiaSm_Context_Cnf,T_zMmiaSm_Context_Ind;

-

-typedef struct

-{

-    BYTE                bNumLen;

-    BYTE                abMsisdnNum[Z_MMIASM_MSISDN_LEN];

-}T_zMmiaSm_Msisdn_Ind;

-

-typedef struct 

-{

-    BYTE    bCid;                /*ÉÏÏÂÎı¾ÉíµÄcid*/

-    BYTE    bPfNum;             /*Packet FilterµÄÊýÄ¿*/

-    BYTE    abPadding[2];

-    T_zDev_AtMem_FilterType    atFilter[Z_MMIAESM_MAX_PF_NUM];

-}T_zMmiaEsm_TftInfo;

-

-typedef struct

-{

-    BYTE    bCidNum;            /*Êý×éÓÐЧ³¤¶È*/

-    BYTE    bPrimCid;           /*PDNÁ¬½ÓËù¶ÔӦĬÈϳÐÔØÉÏÏÂÎĵÄcid*/

-    BYTE    abPadding[2];

-    

-    BYTE    abCid[Z_MMIAESM_MAX_CID_NUM]; /*¸ÃPDNÁ¬½ÓÉÏרÓÃÉÏÏÂÎĵÄcid*/

-}T_zMmiaEsm_PdnConCidInfo;

-

-/*==============================================================================

- Ô­ÓMMIA_ESM_EPS_BEARER_ACT_REQ_EV(ESM->MMIA)

- ˵Ã÷: ESMÏòMMIAÉϱ¨EPS Bearer Context¼¤»î³É¹¦£¬¶ÔÓ¦ÓÚÏàÓ¦µÄ+CGEVµÄÖ÷¶¯Ê½ÃüÁ

- ¶ÔÓ¦2ÌõÖ÷¶¯Éϱ¨atÃüÁî:

-bBearerFlg == Z_MMIAESM_CGEV_PDN_CON

-+CGEV: EPS PDN ACT <p_cid>

-bBearerFlg == Z_MMIAESM_CGEV_DED_BEARER

-+CGEV: EPS DED ACT <p_cid>, <cid>

-==============================================================================*/

-typedef struct

-{

-    BYTE    bSrcIndex;      /*ÏûÏ¢Ô´Ë÷Òý*/

-    BYTE    bDesIndex;      /*ÏûϢĿµÄË÷Òý*/

-    BYTE    bBearerFlg;     /*±êʶ¼¤»îÉϱ¨µÄÊÇ·ñΪĬÈϳÐÔØ£¬

-                            * ȡֵΪZ_MMIAESM_CGEV_PDN_CON¶ÔÓ¦ÓÚÊÇĬÈϳÐÔØ

-                            * ȡֵΪZ_MMIAESM_CGEV_DED_BEARER¶ÔÓ¦ÓÚרÓóÐÔØ*/

-    BYTE    bCid;           /*cid of the EPS Bearer

-                                                                              µ±bBearerFlg == Z_MMIAESM_CGEV_DED_BEARERʱÓÐЧ*/

-    

-    BYTE    bPrimCid;       /*cid of PDN Connection*/

-    BYTE    abPadding[3];

-}T_zMmiaEsm_EpsBearerAct_Ind;

-

-/*==============================================================================

- Ô­ÓMMIA_ESM_EPS_BEARER_DEACT_REQ_EV(ESM->MMIA)

- ˵Ã÷: ESMÏòMMIAÉϱ¨EPS Bearer ContextµÄÈ¥¼¤»îʼþ£¬¶ÔÓ¦ÓÚÏàÓ¦µÄ+CGEVµÄÖ÷¶¯Ê½ÃüÁ

- ¶ÔÓ¦2ÌõÖ÷¶¯Éϱ¨atÃüÁî:

-bBearerFlg == Z_MMIAESM_CGEV_PDN_CON

-+CGEV: EPS PDN DEACT <p_cid>

-bBearerFlg == Z_MMIAESM_CGEV_DED_BEARER

-+CGEV: EPS DED DEACT <p_cid>, <cid>

-==============================================================================*/

-typedef struct

-{

-    BYTE    bSrcIndex;      /*ÏûÏ¢Ô´Ë÷Òý*/

-    BYTE    bDesIndex;      /*ÏûϢĿµÄË÷Òý*/

-    BYTE    bBearerFlg;     /*±êʶ¼¤»îÉϱ¨µÄÊÇ·ñΪĬÈϳÐÔØ£¬

-                            * ȡֵΪZ_MMIAESM_CGEV_PDN_CON¶ÔÓ¦ÓÚÊÇĬÈϳÐÔØ

-                            * ȡֵΪZ_MMIAESM_CGEV_DED_BEARER¶ÔÓ¦ÓÚרÓóÐÔØ*/

-    BYTE    bCid;           /*cid of the EPS Bearer

-                                                                             µ±bBearerFlg == Z_MMIAESM_CGEV_DED_BEARERʱÓÐЧ*/

-    

-    BYTE    bPrimCid;       /*cid of PDN Connection*/

-    BYTE    abPadding[3];

-}T_zMmiaEsm_EpsBearerDeAct_Ind;

-

-/*==============================================================================

- Ô­ÓMMIA_ESM_EPS_BEARER_MOD_REQ_EV(ESM->MMIA)

- ˵Ã÷: ESMÏòMMIAÉϱ¨EPS Bearer ContextµÄ¸üÐÂʼþ£¬¶ÔÓ¦ÓÚÏàÓ¦µÄ+CGEVµÄÖ÷¶¯Ê½ÃüÁ

- ¶ÔÓ¦Ö÷¶¯Éϱ¨atÃüÁî:

-+CGEV: EPS MODIFY <cid>, <change_reason>

-==============================================================================*/

-typedef struct 

-{

-    BYTE    bSrcIndex;          /*ÏûÏ¢Ô´Ë÷Òý*/

-    BYTE    bDesIndex;          /*ÏûϢĿµÄË÷Òý*/

-    BYTE    bCid;               /*MoDµÄEPS³ÐÔØµÄCid*/

-    BYTE    bChangeReason;      /*·¢Éú¸üеÄÔ­Òò£¬ÆäȡֵΪ:

-                                * Z_MMIAESM_MOD_REASON_TFT_ONLYµÈ*/

-}T_zMmiaEsm_EpsBearerMod_Ind;

-

-/*==============================================================================

-Ô­ÓMMIA_ESM_EPS_BEARER_MOD_REQ_EV(MMIA->ESM)

-˵Ã÷: Ï·¢ÒµÎñÇëÇó£¬Ê¹ESM·¢ÆðBearer Resource ModificationÁ÷³Ì£¬¶ÔÓ¦ÓÚ+CGEBRMODÃüÁ

-==============================================================================*/

-typedef struct 

-{

-    BYTE    bSrcIndex;      /*ÏûÏ¢Ô´Ë÷Òý*/

-    BYTE    bDesIndex;      /*ÏûϢĿµÄË÷Òý*/

-    /*¿ÉÑ¡²ÎÊý±ê¼Ç*/

-    BITS     bSpare:6;

-    BITS     bQciFlg:1;     /*ATÊÇ·ñЯ´øQCI*/

-    BITS     bUlDlGbrFlg:1; /*ATÊÇ·ñЯ´øGBR²ÎÊý*/

-    /*±ØÑ¡²ÎÊý*/

-    BYTE    bPrimCid;       /*primary cid*/

-    

-    BYTE    bTfadId;        /*TFAD ID*/

-    /*¿ÉÑ¡²ÎÊý*/

-    BYTE    bQci;           /*QCI of EPS QoS*/

-    DWORD    dwUlGbr;           /*Uplink GBR in EPS QoS*/

-    DWORD    dwDlGbr;           /*Downlink GBR in EPS QoS*/

-}T_zMmiaEsm_EpsBearerMod_Req;

-

-/*==============================================================================

-Ô­ÓMMIA_ESM_EPS_BEARER_MOD_CNF_EV(ESM->MMIA)

-˵Ã÷: +CGEBRMODÃüÁîÖ´Ðгɹ¦£»

-==============================================================================*/

-typedef struct 

-{

-    BYTE    bSrcIndex;  /*ÏûÏ¢Ô´Ë÷Òý*/

-    BYTE    bDesIndex;  /*ÏûϢĿµÄË÷Òý*/

-    BYTE    bCid;       /*cid of the EPS Bearer*/

-    BYTE    bPadding;   

-}T_zMmiaEsm_EpsBearerMod_Cnf;

-

-/*==============================================================================

-Ô­ÓMMIA_ESM_EPS_BEARER_MOD_REJ_EV(ESM->MMIA)

-˵Ã÷: +CGEBRMODÃüÁîÖ´ÐÐʧ°Ü£»

-==============================================================================*/

-typedef struct 

-{

-    BYTE    bSrcIndex;      /*ÏûÏ¢Ô´Ë÷Òý*/

-    BYTE    bDesIndex;      /*ÏûϢĿµÄË÷Òý*/

-    BYTE    abPadding[2];

-    DWORD   dwErrCode;      /*²Ù×÷´íÎóÂë*/

-}T_zMmiaEsm_EpsBearerMod_Rej;

-/*==============================================================================

-Ô­ÓMMIA_ESM_CGATFT_REQ_EV(MMIA->ESM)

-˵Ã÷: ¶ÔÓ¦ÓÚ+CGATFTÃüÁ¶Áȡָ¶¨ÉÏÏÂÎĵĵ±Ç°TFTÉèÖã»

-¶ÔÓ¦Ö÷¶¯Éϱ¨atÃüÁî:

-+CGATFT=<cid1>[,<cid2>[,¡­]]

-==============================================================================*/

-typedef struct 

-{

-    BYTE    bSrcIndex;      /*ÏûÏ¢Ô´Ë÷Òý*/

-    BYTE    bDesIndex;      /*ÏûϢĿµÄË÷Òý*/

-    BYTE    bCidNum;        /*ÃüÁîËùÖ¸¶¨µÄcidÊýÄ¿*/

-    BYTE    bPadding;

-    

-    BYTE    abCidArray[Z_MMIAESM_MAX_CID_NUM];

-}T_zMmiaEsm_CgatftReq;

-/*==============================================================================

-Ô­ÓMMIA_ESM_CGATFT_CNF_EV(ESM->MMIA)

-˵Ã÷: ¶Ô+CGATFTÃüÁîµÄ·µ»Ø£¬Êä³öÖ¸¶¨ÉÏÏÂÎÄËù¶ÔÓ¦µÄTFT

-==============================================================================*/

-typedef struct 

-{

-    BYTE    bSrcIndex;          /*ÏûÏ¢Ô´Ë÷Òý*/

-    BYTE    bDesIndex;          /*ÏûϢĿµÄË÷Òý*/

-    BYTE    bCidNum;            /*cidµÄÊýÄ¿*/

-    BYTE    abPadding[1];

-    

-    T_zMmiaEsm_TftInfo       atTftInfo[Z_MMIAESM_MAX_CID_NUM];     /*·µ»ØµÄÉÏÏÂÎÄËù¶ÔÓ¦TFTÐÅÏ¢*/

-}T_zMmiaEsm_CgatftCnf;

-/*==============================================================================

-Ô­ÓMMIA_ESM_EBR_MOD_QUERY_REQ_EV(MMIA->ESM)

-˵Ã÷: ¶ÔÓ¦ÓÚ+CGEBRMODµÄ²éѯÓï·¨£¬²éѯµ±Ç°´æÔÚµÄPDNÁ¬½ÓÒÔ¼°¸ÃPDNÁ¬½ÓÉϼ¤»îÉÏÏÂÎĵÄcid£»

-==============================================================================*/

-typedef struct 

-{

-    BYTE    bSrcIndex;          /*ÏûÏ¢Ô´Ë÷Òý*/

-    BYTE    bDesIndex;          /*ÏûϢĿµÄË÷Òý*/

-    BYTE    abPadding[2];

-}T_zMmiaEsm_EbrModQuery_Req;

-

-/*==============================================================================

-Ô­ÓMMIA_ESM_EBR_MOD_QUERY_CNF_EV(ESM->MMIA)

-˵Ã÷: +CGEBRMODµÄ²éѯÓï·¨µÄ·µ»Ø£¬·µ»Øµ±Ç°´æÔÚµÄPDNÁ¬½ÓÒÔ¼°¸ÃPDNÁ¬½ÓÉϼ¤»îÉÏÏÂÎĵÄcid£»

-==============================================================================*/

-typedef struct 

-{

-    BYTE    bSrcIndex;          /*ÏûÏ¢Ô´Ë÷Òý*/

-    BYTE    bDesIndex;          /*ÏûϢĿµÄË÷Òý*/

-    BYTE    bPdnConNum;         /*atPdnConCidInfoÊý×éµÄÓÐЧ³¤¶È*/

-    BYTE    bPadding;

-    

-    T_zMmiaEsm_PdnConCidInfo atPdnConCidInfo[Z_MMIAESM_MAX_CID_NUM];

-}T_zMmiaEsm_EbrModQuery_Cnf;

-/*only for R7&R5 ->end*/

-typedef struct 

-{

-    BYTE    bCid;          

-    /*¿ÉÑ¡²ÎÊý±ê¼Ç*/

-    BITS    bSpare:4;

-    BITS    bQciFlg:1;      /*ÊÇ·ñ·µ»ØQCI*/

-    BITS    bUlDlGbrFlg:1;  /*ÊÇ·ñ·µ»ØGBR²ÎÊý*/

-    BITS    bUlDlMbrFlg:1;  /*ÊÇ·ñ·µ»ØMBR²ÎÊý*/

-    BITS    bUlDlAmbrFlg:1; /*ÊÇ·ñ·µ»ØAMBR²ÎÊý*/

-

-    /*¿ÉÑ¡²ÎÊý*/

-    BYTE    bQci;           /*QCI of EPS QoS*/

-    BYTE    bPadding;

-    

-    DWORD    dwUlGbr;            /*Uplink GBR in EPS QoS£¬ÒÔkbpsΪµ¥Î»*/

-    DWORD    dwDlGbr;            /*Downlink GBR in EPS QoS£¬ÒÔkbpsΪµ¥Î»*/

-

-    DWORD    dwUlMbr;           /* Uplink MBR in EPS QoS£¬ÒÔkbpsΪµ¥Î»*/

-    DWORD    dwDlMbr;          /*Downlink MBR in EPS QoS£¬ÒÔkbpsΪµ¥Î»*/

-

-    DWORD    dwUlAmbr;        /*AMBR for Uplink, ÒÔkbpsΪµ¥Î»*/

-    DWORD    dwDlAmbr;        /*AMBR for Downlink,ÒÔkbpsΪµ¥Î»*/

-}T_zMmiaEsm_EpsQosInfo;

-

-

-/*==============================================================================

- Ô­ÓMMIA_ESM_MT_EPS_BEARER_ACT_REQ_EV(ESM->MMIA)

- ˵Ã÷: Éϱ¨MTרÓü¤»îÇëÇóÇëÇó£»

-==============================================================================*/

-typedef struct 

-{

-    BYTE        bSrcIndex;      /*ÏûÏ¢Ô´Ë÷Òý*/

-    BYTE        bDesIndex;      /*ÏûϢĿµÄË÷Òý*/

-    BYTE        abPadding2[2];

-    

-    BYTE        abApn[Z_MMIAESM_APN_MAX_LEN];  /*APN*/

-    T_zMmiaSm_PdpAddr    tPdpAddr;

-}T_zMmiaEsm_MtEpsBearerAct_Ind;

-

-/*==============================================================================

- Ô­ÓMMIA_ESM_MT_EPS_BEARER_ACT_CNF_EV(MMIA->ESM)

- ˵Ã÷: ¶ÔMTרÓü¤»îÇëÇóµÄÓ¦´ðÏûÏ¢£»

-==============================================================================*/

-typedef struct 

-{

-    BYTE  bSrcIndex;                            /*ÏûÏ¢Ô´Ë÷Òý*/

-    BYTE  bDesIndex;                            /*ÏûϢĿµÄË÷Òý*/

-    BYTE  bOperaCode;                           /*Ö¸Ã÷ÊǽÓÊÜ»ò¾Ü¾øMTÇëÇó*/

-    BYTE  bCidNum;                              /*ATÃüÁîÖÐCidÊýÄ¿*/

-    

-    BYTE  abCid[Z_MMIAESM_MAX_CID_NUM];       /*cidÊý×é*/

-}T_zMmiaEsm_MtEpsBearerAct_Req;

-

-

-/*==============================================================================

-Ô­ÓMMIA_ESM_EPS_QOS_QUERY_REQ_EV(MMIA->ESM)

-˵Ã÷: ¶ÔÓ¦ÓÚ+CGEQOSRDPÃüÁ²éѯָ¶¨EPS³ÐÔØÉÏÏÂÎÄËù¶ÔÓ¦µÄEPS QoSÉèÖã»

-==============================================================================*/

-typedef struct 

-{

-    BYTE    bSrcIndex;        /*ÏûÏ¢Ô´Ë÷Òý*/

-    BYTE    bDesIndex;        /*ÏûϢĿµÄË÷Òý*/

-    BYTE    bCidFlg; /* 

-                                    * Z_MMIAESM_CMD_WITHOUTCID ±êʶûÓÐCID

-                                    * Z_MMIAESM_CMD_WITHCID      ±êʶÓÐCID

-                                    */

-    BYTE    bCid;  

-}T_zMmiaEsm_EpsQosQuery_Req;

-

-/*==============================================================================

-Ô­ÓMMIA_ESM_EPS_QOS_QUERY_CNF_EV(ESM->MMIA)

-˵Ã÷: +CGEQOSRDPÃüÁîµÄ·µ»Ø£¬·µ»ØÖ¸¶¨EPS³ÐÔØÉÏÏÂÎÄËù¶ÔÓ¦µÄEPS QoSÉèÖã»

-==============================================================================*/

-typedef struct 

-{

-    BYTE    bSrcIndex;          /*ÏûÏ¢Ô´Ë÷Òý*/

-    BYTE    bDesIndex;          /*ÏûϢĿµÄË÷Òý*/

-    BYTE    bCidNum;            /*Êý×éÓÐЧ³¤¶È*/

-    BYTE    bResult;            /* ȡֵZ_SUCC/Z_FAIL */

-    

-    T_zMmiaEsm_EpsQosInfo     atEpsQosInfo[Z_MMIAESM_MAX_CID_NUM];

-}T_zMmiaEsm_EpsQosQuery_Cnf;

-

-/*==============================================================================

- Ô­ÓMMIA_ESM_EPS_ADDR_QUERY_CNF_EV(ESM->MMIA)

- ˵Ã÷: ·µ»Ø²éѯPDPµØÖ·(¾²Ì¬µØÖ·»ò¶¯Ì¬µØÖ·)

-==============================================================================*/

-typedef struct 

-{

-    BYTE                         bSrcIndex;         

-    BYTE                         bDesIndex;         

-    BYTE                         bCidNum;  

-    BYTE                         bPadding;

-

-    T_zMmiaSm_CidPdpAddr         atPdpAddr[Z_MMIAESM_MAX_CID_NUM];

-}T_zMmiaEsm_QueryPdpAddr_Cnf;

-

-#ifdef BTRUNK_SUPPORT

-/*============================================================

-Ô­Óï:PTT_MMIA_ESM_TAUTYPE_REQ_EV(ATI->ESM)

-˵Ã÷:ÉèÖÃTAU(UE)ÊÇÖ÷ÓûòÕß±¸ÓÃ

-=============================================================*/

-typedef struct {

-    BYTE                        bSrcIndex;           

-    BYTE                        bDesIndex;

-    BYTE                        bTauTypeSet;/*Ö÷Óû¹ÊDZ¸Óã¬113±íʾÖ÷Óã¬114±íʾ±¸ÓÃ*/ 

-    BYTE                        bPadding;

- }T_zAtiEsm_TauTypeSet_Req;

-

-/*============================================================

-Ô­Óï:PTT_MMIA_ESM_TAUTYPE_CNF_EV(ESM->ATI)

-˵Ã÷:ÉèÖÃTAU(UE)ÊÇÖ÷ÓûòÕß±¸ÓÃÇëÇóµÄÏìÓ¦

-=============================================================*/

-typedef struct {

-    BYTE                        bSrcIndex;           

-    BYTE                        bDesIndex;

-    BYTE                        bResult;/* ȡֵZ_SUCC/Z_FAIL */

-    BYTE                        bPadding;

- }T_zAtiEsm_TauTypeSet_Cnf;

-

-#endif

-

-typedef enum

-{

-    Z_STM_TASK1_IDX,

-    Z_STM_TASK2_IDX

-}T_zStm_TaskIdx;

-

-/*µç»°±¾´æ´¢Æ÷ID¶¨Òå*/
-typedef BYTE T_zStmPb_StorageId;

-

-/* ºÅÂëÏà¹ØµÄÎı¾ */

-typedef struct {

-    BYTE                                         abTextVal[Z_APMMIA_MAX_CALLNAME_LEN];

-    BYTE                                         abPadding[3];

-}T_zApMmia_PhoneText;

-

-/* PB´æ´¢µÄEmail */

-typedef struct {

-    BYTE                                      abEmail[Z_APMMIA_MAX_EMAIL_LEN];  /* ´æ´¢Email*/ 

-    BYTE                                      abPadding[2];

-}T_zApMmia_Email;

-

-/* PB´æ´¢µÄGroup */

-typedef struct {

-    BYTE                                       abAlphaId[Z_APMMIA_MAX_GAS_LEN];  /* ´æ´¢Group*/

-    BYTE                                       abPadding[2];

-}T_zApMmia_Grp;

-

-/* PB´æ´¢µÄSecond Name */

-typedef struct {

-    BYTE                                      abSne[Z_APMMIA_MAX_SNE_LEN];  /* ´æ´¢Second Name*/

-    BYTE                                      abPadding[2];

-}T_zApMmia_Sne;

-

-/* µç»°±¾´æ´¢Æ÷ */

-typedef struct {    

-    BYTE                                         bStorage;   /*µç»°±¾´æ´¢Æ÷:

-                                                               Z_APMMIA_PHONEBOOK_DC       

-                                                               Z_APMMIA_PHONEBOOK_EN       

-                                                               Z_APMMIA_PHONEBOOK_FD       

-                                                               Z_APMMIA_PHONEBOOK_LD       

-                                                               Z_APMMIA_PHONEBOOK_MC       

-                                                               Z_APMMIA_PHONEBOOK_ME       

-                                                               Z_APMMIA_PHONEBOOK_MT       

-                                                               Z_APMMIA_PHONEBOOK_ON       

-                                                               Z_APMMIA_PHONEBOOK_RC       

-                                                               Z_APMMIA_PHONEBOOK_SM       

-                                                               Z_APMMIA_PHONEBOOK_TA       

-                                                               Z_APMMIA_PHONEBOOK_AP       

-                                                               */

-    BYTE                                         bPin2Flag; /* 0 ÎÞpin2 1 ÓÐpin2 */

-    BYTE                                         abPadding[2];

-

-    BYTE                                         abPin2[Z_APMMIA_PIN_LEN];  /* pin2µÄÖµ , ÓÉATIÌî³äĩβµÄ0xff*/

-}T_zApMmia_PbStorage;

-

-/**************************************************************************

- Ô­ÓZ_APMMIA_PbStorageStatusCnf_Ev

- ¹¦ÄÜ£º²éѯ´æ´¢Æ÷µÄÌØÐÔ¼°×´Ì¬

- ATÃüÁ+CPBS?,+CPBR*?,+CPBF*?,+CPBW*?

- **************************************************************************/

-typedef struct {

-    BYTE                                        bSrcIndex;

-    BYTE                                        bDesIndex;

-    BYTE                                        bResult;

-    BYTE                                        bQueryFlag; /* ½«ÇëÇóµÄbQueryFlag´ø»Ø */

-

-    T_zApMmia_PbStorage                      tStorage;

-

-    WORD                                        wTotal;   /* ×ÜÌõÊý */

-    WORD                                        wUsed;    /* ʹÓõÄÌõÊý */

-

-    WORD                                        wNlength; /* ºÅÂë×î´ó³¤¶È */

-    WORD                                        wTlength; /* text×î´ó³¤¶È */

-

-    WORD                                        wGlength; /* GroupµÄ×î´ó³¤¶È*/

-    WORD                                        wSlength; /* µÚ¶þÈËÃûµÄ×î´ó³¤¶È*/

-

-    WORD                                        wElength; /* EmailµÄ×î´ó³¤¶È*/

-    BYTE                                        abPadding[2];

-

-    DWORD                                       dwReason;

-}T_zApMmia_PbStorageStatus_Cnf;

-

-/**************************************************************************** 

-  Ô­Óï:Z_APMMIA_PbCommonCnf_Ev(PB->MMIA)

-  ¹¦ÄÜ:PBÄ£¿éµÄͨÓÃÖ´Ðнá¹ûÂë

-  ¶ÔÓ¦ATÃüÁî:ijЩATÃüÁîÖ´ÐеĽá¹û£¬ok/error /cer£º+error

- ****************************************************************************/

-typedef struct

-{

-    BYTE                                         bSrcIndex;          

-    BYTE                                         bDesIndex;          

-    BYTE                                         bResult;            /* ATÃüÁî½á¹û Z_APMMIA_OPERATION_SUCCESS/Z_APMMIA_OPERATION_FAILURE*/

-    BYTE                                         bEvtFg;             /* ±êʶ¶ÔÓ¦µÄÇëÇóÏûÏ¢£¬ºóÐø¿ÉÊÓÇé¿öÌí¼ÓÆäËüÏûÏ¢

-                                                                        Z_APMMIA_PBCOMMCNF_MEMCAPA 1 ±íʾÏûÏ¢ Z_APMMIA_PbMemCapaReq_Ev µÄ»Ø¸´ */           

-

-    DWORD                                        dwCause;            /* bResult = Z_APMMIA_OPERATION_FAILUREÓÐЧ*/

-}T_zApMmia_PbCommon_Cnf;

-

-/**************************************************************************

- Ô­ÓZ_APMMIA_PbSFindIndexReq_Ev(MMIA->PB)

- ¹¦ÄÜ£ºÇëÇóÁоٵ绰±¾¼Ç¼(Ö¸¶¨´æ´¢Æ÷)£¬³¤µç»°±¾

- ATÃüÁ^SCPBR

- **************************************************************************/

-typedef struct {

-    BYTE                                        bSrcIndex;

-    BYTE                                        bDesIndex;

-    BYTE                                        bIndex2Fg;  /* ָʾwIndex2ÓÐЧÐÔ£¬È¡Öµ

-                                                               * Z_APMMIA_INVALID                                                             

-                                                               * Z_APMMIA_VALID   

-                                                               */

-    BYTE                                        bCmdFlg;  /* 

-                                                                                                  * ȡֵ·¶Î§:

-                                                                                                  * Z_APMMIA_CHINA_MOBILE_CMD

-                                                                                                  * Z_APMMIA_ZTE_OWN_CMD

-                                                                                                  */

-    WORD                                        wIndex1;

-    WORD                                        wIndex2;

-}T_zApMmia_PbSFindIndex_Req;

-

-/**************************************************************************

- Ô­ÓZ_APMMIA_PbSFindIndexEndCnf_Ev 

- ¹¦ÄÜ£ºÁоٵ绰±¾¼Ç¼£¬½áÊøÏûÏ¢

- ATÃüÁ^SCPBR

- **************************************************************************/

-typedef struct {

-    BYTE                                        bSrcIndex;

-    BYTE                                        bDesIndex;

-    BYTE                                        bResult;     /* 0 ʧ°Ü 1 ³É¹¦ */

-    BYTE                                        bCmdFlg;  /*

-                                                                                                  * ȡֵ·¶Î§:

-                                                                                                  * Z_APMMIA_CHINA_MOBILE_CMD

-                                                                                                  * Z_APMMIA_ZTE_OWN_CMD

-                                                                                                  */

-

-    DWORD                                       dwReason;    /* ʧ°ÜÔ­Òò */

-}T_zApMmia_PbSFindIndexEnd_Cnf;

-

-/**************************************************************************

- Ô­ÓZ_APMMIA_PbSEditCnf_Ev(PB->MMIA)

- ¹¦ÄÜ£ºÔö¼Ó»òɾ³ý¼Ç¼µÄ½á¹û

- ATÃüÁ^SCPBW

- **************************************************************************/

-typedef struct {

-    BYTE                                        bSrcIndex;

-    BYTE                                        bDesIndex;

-    BYTE                                        bResult; /* 0ʧ°Ü£¬1³É¹¦ */

-    BYTE                                        bCmdFlg;  /* 

-                                                                                                  * ȡֵ·¶Î§:

-                                                                                                  * Z_APMMIA_CHINA_MOBILE_CMD

-                                                                                                  * Z_APMMIA_ZTE_OWN_CMD

-                                                                                                  */

-

-

-    DWORD                                       dwReason;

-}T_zApMmia_PbSEdit_Cnf;

-

-/**************************************************************************

- Ô­ÓZ_APMMIA_PbSCpbrTestReq_Ev(MMIA->PB), 

-       Z_APMMIA_PbSCpbwTestReq_Ev(MMIA->PB)

- ¹¦ÄÜ£ºÇëÇó²âÊÔSCPBRºÍSCPBWÃüÁî²ÎÊý¿Éѡֵ

- ¶ÔÓ¦ATÃüÁ^SCPBR=?,^SCPBW=?

- **************************************************************************/

-typedef struct {

-    BYTE                                         bSrcIndex;

-    BYTE                                         bDesIndex;

-    BYTE                                         bCmdFlg;  /* 

-                                                                                                    * ȡֵ·¶Î§:

-                                                                                                    * Z_APMMIA_CHINA_MOBILE_CMD

-                                                                                                    * Z_APMMIA_ZTE_OWN_CMD

-                                                                                                    */

-    BYTE                                         bPadding;

-} T_zApMmia_PbSCpbrTest_Req, T_zApMmia_PbSCpbwTest_Req;

-

-/**************************************************************************

- Ô­ÓZ_APMMIA_PbSCpbrTestCnf_Ev(PB->MMIA), 

-       Z_APMMIA_PbSCpbwTestCnf_Ev(PB->MMIA)

- ¹¦ÄÜ£º·µ»ØCPBRºÍCPBWÃüÁî²ÎÊý¿Éѡֵ

- ¶ÔÓ¦ATÃüÁ^SCPBR=?, ^SCPBW=?

- **************************************************************************/

-typedef struct {

-    BYTE                                         bSrcIndex;

-    BYTE                                         bDesIndex;

-    BYTE                                         bCmdFlg;  /* 

-                                                                                                    * ȡֵ·¶Î§:

-                                                                                                    * Z_APMMIA_CHINA_MOBILE_CMD

-                                                                                                    * Z_APMMIA_ZTE_OWN_CMD

-                                                                                                    */

-    BYTE                                         bEmailLenthFg;     /* ָʾwEmailLenthÓÐЧÐÔ */

-

-    WORD                                         wMaxIndex;

-    WORD                                         wNumLenth;         /* ÕûÐÍÖµ£¬±íʾµç»°ºÅÂëµÄ×î´ó³¤¶È */

-

-    WORD                                         wTxtLenth;         /* ÕûÐÍÖµ£¬±íʾÐÕÃûµÄ×î´ó³¤¶È */

-    WORD                                         wEmailLenth;       /* ÕûÐÍÖµ£¬±íʾEMAILµÄ×î´ó³¤¶È */

-

-    BYTE                                         bSneLengthFg;      /* ±êʶwSneLengthÓÐЧÐÔ*/

-    BYTE                                         bPadding;

-    WORD                                         wSneLength;        /* ÕûÐÍÖµ£¬±êʶSNE×î´ó³¤¶È*/

-}T_zApMmia_PbSCpbrTest_Cnf, T_zApMmia_PbSCpbwTest_Cnf;

-

-/**************************************************************************

- Ô­ÓZ_ApMmia_PbCpbwQueryCnf_Ev(PB->MMIA), 

- ¹¦ÄÜ£º²éѯwritten_index

- ¶ÔÓ¦ATÃüÁ+CPBW?

- **************************************************************************/

-typedef struct {

-    BYTE                                        bSrcIndex;

-    BYTE                                        bDstIndex;

-    BYTE                                        bWrittenIndexFlg;  /* 

-                                                                    * ±êʶbWrittenIndexÓÐЧÐÔ

-                                                                    * Z_APMMIA_VALID±êʶÓÐЧ

-                                                                    * Z_APMMIA_INVALID±êʶÎÞЧ

-                                                                    */

-    BYTE                                        bPadding;  

-    WORD                                        wWrittenIndex; /* integer type value indicating the last location number <index> of the written phonebook entry*/

-    BYTE                                        abPadding[2];

-}T_zApMmia_PbCpbwQuery_Cnf;

-/**************************************************************************

- Ô­Ó Z_ApMmia_PbCpbwQueryReq_Ev(MMIA->PB)

- ¹¦ÄÜ£º ²éѯwritten_index

- ¶ÔÓ¦ATÃüÁ +CPBW?

- **************************************************************************/

-typedef struct {

-    BYTE                                         bSrcIndex;

-    BYTE                                         bDesIndex;

-    BYTE                                         abPadding[2];

-} T_zApMmia_PbCpbwQuery_Req, T_zApMmia_PbCnum_Req;

-/**************************************************************************** 

-  Ô­Óï:Z_APMMIA_PbCnum_Cnf (PB->MMIA)

-  ¹¦ÄÜ:²éѯÓû§MSISDNs µÄ½á¹û

-  ¶ÔÓ¦ATÃüÁî:+CNUM

- ****************************************************************************/

-typedef struct {

-    BYTE                                         bUseFg;        /* ָʾbSpeed bService bItcÓÐЧÐÔ

-                                                                 *  (¿¼Âǵ½ºÅÂëÓëbSpeed bService bItcΪSIM¿¨Öв»Í¬Îļþ£¬

-                                                                 *  ÈôÎÞºÅÂ룬ÔòÖ±½Ó±¨´í£¬ÈôÖ»ÓкÅÂë¶øÎÞbSpeed bService bItc£¬ÔòbUseFg=0±êʶ¸ÃÈýÏîÎÞЧ£¬

-                                                                 *  ÈôÓкÅÂëÇÒ¸ÃÈýÏîÓÐЧ£¬ÔòbUseFg=1)  */

-

-    BYTE                                         bSpeed;

-    BYTE                                         bService;

-    BYTE                                         bHiddenFg;     /* ָʾhiddenÊÇ·ñÓÐЧ£¬Z_APMMIA_INVALID/Z_APMMIA_VALID */

-    

-    BYTE                                         bHidden;       /* 0 not hidden 1 hidden */

-    BYTE                                         bItc;

-    BYTE                                         abPadding[2];

-

-    T_z_CallNum                                tNum;

-    T_zApMmia_PhoneText                       tText; 

-}T_zApMmia_Cnum;

-

-typedef struct {

-    BYTE                                         bSrcIndex;   

-    BYTE                                         bDesIndex;  

-    BYTE                                         bResult;           /* ATÃüÁî½á¹û Z_APMMIA_OPERATION_SUCCESS/Z_APMMIA_OPERATION_FAILURE*/

-    BYTE                                         bCnumCount;        /* ÓÐЧCnum¸öÊý */

-

-    DWORD                                        dwCause;           /* bResult = Z_APMMIA_OPERATION_FAILUREÓÐЧ*/

-

-    T_zApMmia_Cnum                            atCnum[Z_APMMIA_CNUM_MAXCOUNT];

-} T_zApMmia_PbCnum_Cnf;

-

-/**************************************************************************** 

-  Ô­Óï:Z_APMMIA_PbClckSetReq_Ev(MMIA->PB)

-  ¹¦ÄÜ: ´¦ÀíFD¹¦ÄÜ

-  ¶ÔÓ¦ATÃüÁî:+CLCK

- ****************************************************************************/

-typedef struct {

-    BYTE                                         bSrcIndex;   /* Ô´Ë÷Òý */

-    BYTE                                         bDesIndex;   /* Ä¿µÄË÷Òý */

-    BYTE                                         bFac;        /* ²Î¼ûºê¶¨Òå Z_APMMIA_FACVALUE_FD */

-    BYTE                                         bMode;       /* ²Î¼ûºê¶¨Òå Z_APMMIA_SSOPTMODE_DEACTIVATION etc.*/

-    

-    BYTE                                         bClassFg;

-    BYTE                                         bClass;      /* ²Î¼ûºê¶¨Òå Z_APMMIA_CLASS_VOICE etc.*/

-    BYTE                                         bChId;

-

-    BYTE                                         bPasswdLen;  /* SSÒµÎñµÄÃÜÂ볤¶È½öÏÞ4£¬

-                                                                 ¿¨Ïà¹ØÒµÎñµÄÃÜÂ볤¶È¿É²»¶¨³¤£¬×î´óΪ8*/

-    BYTE                                         abPassword[Z_APMMIA_MAX_PASSWD_LEN];   /* ÃÜÂë*/

-} T_zApMmia_PbClckSet_Req;

-

-/* CLCK¡¢CCWA²éѯ½á¹û×ӽṹ */

-typedef struct

-{

-    BYTE                                        bStatus;       /* ²Î¼ûºê¶¨Òå Z_APMMIA_SSSTATUS_NOTACTIVE etc.*/

-    BYTE                                        bClassFg;      /* bClass´æÔÚ±ê¼Çλ*/

-    BYTE                                        bClass;        /* ²Î¼ûºê¶¨Ò壬²»°üº¬À©Õ¹ºê¶¨Òå */

-    BYTE                                        bPadding;

-} T_zApMmia_ClassStatus;

-

-/**************************************************************************** 

-  Ô­Óï:Z_APMMIA_PbClckStatusCnf_Ev(PB->MMIA)

-  ¹¦ÄÜ:»Ø¸´²éѯµÄclassÒÔ¼°ÊÇ·ñ¼¤»î£¬¿¨Ïà¹Ø»Ø¸´ÖнöÓÐbActiveStatus

-  ¶ÔÓ¦ATÃüÁî:+CLCK: <status>[,<class1>[<CR><LF>+CLCK: <status>,<class2>[...]] ,mode=2µÄÇé¿ö

- ****************************************************************************/

-typedef struct {

-    BYTE                                         bSrcIndex;   /* Ô´Ë÷Òý */

-    BYTE                                         bDesIndex;   /* Ä¿µÄË÷Òý */

-    BYTE                                         bClassNum;      /* classÓÐЧ¸öÊý*/

-    BYTE                                         bPadding;

-

-    T_zApMmia_ClassStatus                     atClass[8];     /* ²éѯ½á¹ûÊý×é */

-} T_zApMmia_PbClckStatus_Cnf;

-

-typedef struct {

-    BYTE                                         bSrcIndex;

-    BYTE                                         bDesIndex;

-    BYTE                                         bIndex2Fg;     /* ָʾwIndex2ÓÐЧÐÔ£¬È¡Öµ

-                                                                  * Z_APMMIA_INVALID                                                             

-                                                                 * Z_APMMIA_VALID   

-                                                                 */

-    BYTE                                         bPadding;

-

-

-    WORD                                         wIndex1;       /*×îС´Ó1¿ªÊ¼, (ËæeÐÐ×îС´Ó0¿ªÊ¼)*/

-    WORD                                         wIndex2;       /*×îС´Ó1¿ªÊ¼, (ËæeÐÐ×îС´Ó0¿ªÊ¼)*/

-}T_zApMmia_CpbrSet_Req;

-

- /**************************************************************************

- Ô­ÓZ_APMMIA_CpbsSetReq_Ev(CommonCnf»Ø¸´),Z_APMMIA_PbStoSetReq_Ev(Z_APMMIA_PbCommonCnf_Ev)

- ¹¦ÄÜ£ºÉèÖõ±Ç°µÄµç»°±¾

- ¶ÔÓ¦ATÃüÁ+CPBS

- **************************************************************************/

-typedef struct {

-    BYTE                                         bSrcIndex;

-    BYTE                                         bDesIndex;

-    BYTE                                         abPadding[2];

-

-    T_zApMmia_PbStorage                       tPbStorage;

-}T_zApMmia_CpbsSet_Req,T_zApMmia_PbStoSet_Req;

-

-typedef struct {

-    BYTE                                         bSrcIndex;

-    BYTE                                         bDesIndex;

-

-    BITS                                         bHiddenFg:1;   /*ָʾbHiddenÓÐЧÐÔ*/

-    BITS                                         bIndexFg:1;    /*ָʾindexÓÐЧÐÔ*/

-    BITS                                         bNumFg:1;      /* ָʾtBcdNumÓÐЧÐÔ  */

-    BITS                                         bTextFg:1;     /* ָʾtTextÓÐЧÐÔ */

-    BITS                                         bSneFg:1;      /* ָʾtSneÓÐЧÐÔ */

-    BITS                                         bEmailFg:1;    /* ָʾtEmailÓÐЧÐÔ */

-    BITS                                         bAnrFg:1;      /* ָʾtAnrÓÐЧÐÔ */

-    BITS                                         bGrpFg:1;      /* ָʾtGrpÓÐЧÐÔ */

-

-    BYTE                                         bHidden;       /*0 not hidden£¬1 hidden, ȱʡֵΪ0£¬ÓÉATIÌîд*/

-    WORD                                         wIndex;        /* ×îС´Ó1¿ªÊ¼ */

-    BYTE                                         abPadding[2];

-

-    T_z_CallNum                                tNum; 

-

-    T_zApMmia_PhoneText                       tText; 

-    T_zApMmia_Sne                             tSne;  /* ¸Ãµç»°¼Ç¼¶ÔÓ¦µÄµÚ¶þ¸öÈËÃû*/

-    T_zApMmia_Email                           tEmail; /* µç×ÓÓÊÏ䵨ַ*/

-    T_z_CallNum                               tAnr;  /* ¸½¼ÓµÄºÅÂë*/

-    T_zApMmia_Grp                             tGrp;  /* ±íÃ÷¸Ãµç»°¼Ç¼ÏîÊôÓÚÄǸöGroup*/

-}T_zApMmia_CpbwSet_Req,T_zApMmia_PbEdit_Req,T_zApMmia_CpbrSet_Cnf,T_zApMmia_PbFindIndex_Cnf;

-

-typedef struct {

-    BYTE                                         bSrcIndex;

-    BYTE                                         bDesIndex;

-    BYTE                                         bResult;  /* ½á¹û0£¬Ê§°Ü£¬1³É¹¦ */

-    BYTE                                         bPadding;

-    

-    DWORD                                        dwReason;

-}T_zApMmia_CpbrSetEnd_Cnf;

-

-typedef struct ListForStm

-{

-    T_ZOss_Node node;

-    UINT32      iEvId;

-    UINT8      *pDataPtr;

-    UINT16      iDataLen;

-} 

-T_ZAti_ListForStm; 

-

-/****************************************************************************

-½á¹¹Ìå: T_ZAti_StmList_Ind

-¹¦ÄÜ: ½«¶ÌÐÅÁбíºÍЭÒéջָʾ±êÖ¾´ø¸øATI

-bResult: 

-ATÃüÁî: AT+CMGL

-¶ÔÓ¦ÏûÏ¢: EV_ZATI2_STMLIST_IND

-***************************************************************************/

-typedef struct

-{

-    UINT8                                         iSrcIndex;

-    UINT8                                         iDestIndex;

-    UINT8                                         iStackId; /* ЭÒéջָʾ±êÖ¾£¬0£ºÐ­ÒéÕ»1£¬ 1£ºÐ­ÒéÕ»2 */

-    UINT8                                         bPadding;

-

-    T_ZOss_List *                                 pStmMsgList;   /* Ö¸Õëg_zStm_MsgListµÄµØÖ·*/

-}T_ZAti_StmList_Ind;

-

-typedef struct
-{
-   T_zStmPb_StorageId       readStorage;                 
-   T_zApMmia_CpbrSet_Req    cpbrSetReq;
-   UINT32                   cnfMsgId;
-   T_zApMmia_CpbrSet_Cnf    cpbrSetCnf;
-   T_zApMmia_CpbrSetEnd_Cnf CpbrSetEndCnf;
-}T_zStm_Cpbr_Cnf;

-

-typedef struct
-{
-   T_zStmPb_StorageId     readStorage;
-   UINT16                 iStartRec;
-   T_zApMmia_CpbrSet_Req  cpbrSetReq;
-}T_zStm_Cpbr_Req;

-

-/****************************************************************************

-  Ô­Óï:EV_ZATI2_ZWEN_SET_REQ

-  ¹¦ÄÜ:Óû§Ôö¼ÓPB½ô¼±ºÅÂëÁбí

-  ¶ÔÓ¦ATÃüÁî:+ZWEN=<NUM>,<category>

- ***************************************************************************/

-typedef struct

-{

-    UINT8                                         iSrcIndex;

-    UINT8                                         iDestIndex;

-

-    BYTE                            bSrvCategFg;  /* ±íʾbSrvCategÊÇ·ñÓÐЧ£¬

-                                                     ZPS_APMMIA_INVALID   ÎÞЧ£¬ZPS_APMMIA_VALID  ÓÐЧ

-                                                   */

-    BYTE                            bSrvCateg;

-    BYTE                            bNumLen;    

-    BYTE                            bPadding;    

-    BYTE                            abNum[ZATI2_ECC_MAXNUM];

-} T_ZAti_EmerNum_Req;

-

-/****************************************************************************

-½á¹¹Ìå: T_ZAti_EmerNum_Cnf

-¹¦ÄÜ: ±£´æ½ô¼±ºÅÂëµÄÏìÓ¦½á¹û

-bResult: Ö´Ðнá¹û£¬TRUEΪ³É¹¦£¬FALSEΪʧ°Ü

-×¢Ò⣬µ±ÒѾ­Æô¶¯ÁËPPP£¬²»ÄÜÖÃΪ²»Æô¶¯PPP¡£

-ATÃüÁî: AT+ZWEN

-¶ÔÓ¦ÏûÏ¢: EV_ZATI2_ZWEN_CNF

-***************************************************************************/

-typedef struct

-{

-    UINT8                                         iSrcIndex;

-    UINT8                                         iDestIndex;

-    BOOL                                          bResult; /* Ö´Ðнá¹û£¬TRUEΪ³É¹¦£¬FALSEΪʧ°Ü */

-}T_ZAti_EmerNum_Cnf;

-

-typedef struct

-{

-    UINT8                                         iSrcIndex;

-    UINT8                                         iDestIndex;

-    UINT8                                         bResult;  /* Áоٽá¹û */

-    UINT16                                        dwReason; /* ÁоÙʧ°ÜÔ­Òò */

-    

-    UINT16                                        bIndexNum; 

-    UINT16                                        arrIndex[ZATI2_CPMSMEM_USIM_MAX_NUM];

-}

-T_ZAti_ValidIndexCnf;

-

-/****************************************************************************

-  Ô­Óï: Z_APMMIA_SmsCpmsReq_Ev(ATI->MMIA),Z_APMMIA_PbPrefMsgStoReq_Ev (MMIA->PB)

-  ¹¦ÄÜ:ÏûÏ¢Ê×Ñ¡´æ´¢Æ÷ÉèÖã»

-  ¶ÔÓ¦ATÃüÁ+CPMS¡£

- ***************************************************************************/

-typedef struct 

-{

-    BYTE                                         bSrcIndex;

-    BYTE                                         bDestIndex;

-    BYTE                                         bCommandInd; /*

-                                                              * ¶ÔÓ¦µÄÃüÁîָʾ

-                                                              * Z_APMMIA_SMSCMDTYPE_SET      : ÉèÖÃÃüÁî

-                                                              * Z_APMMIA_SMSCMDTYPE_QUERY: ¶ÁÃüÁî,Ö»·µ»Øµ±Ç°bMsgService£¬bMsgSupportIndµÄÖµ¡£

-                                                              */

-    BYTE                                         bMem1; /* Ê×Ñ¡¶Á,Áо٣¬É¾³ý´æ´¢Æ÷. ´æ´¢Æ÷Ãû³Æ¡£±¾·½°¸¿ÉÓÃÊýÖµ´úÌæ±íʾ¡£

-                                                        * Z_APMMIA_CPMSMEM_BM        

-                                                        * Z_APMMIA_CPMSMEM_ME        

-                                                        * Z_APMMIA_CPMSMEM_MT        

-                                                        * Z_APMMIA_CPMSMEM_USIM     

-                                                        * Z_APMMIA_CPMSMEM_TA         

-                                                        *Z_APMMIA_CPMSMEM_SR         

-                                                        */

-

-    BYTE                                         bMem2OperFg;  /* ָʾmem2µÄÓÐЧÐÔ£¬È¡Öµ

-                                                                 * Z_APMMIA_PARAM_INVALID                                                             

-                                                                 * Z_APMMIA_PARAM_VALID

-                                                                 */

-    BYTE                                         bMem2; /* Ê×Ñ¡·¢ËÍ£¬Ð´´æ´¢Æ÷. */

-    BYTE                                         bMem3OperFg;  /* ָʾmem3µÄÓÐЧÐÔ£¬È¡Öµ

-                                                                 * Z_APMMIA_PARAM_INVALID                                                             

-                                                                 * Z_APMMIA_PARAM_VALID

-                                                                 */

-    BYTE                                         bMem3; /* Ê×Ñ¡MTÏûÏ¢±£´æ´æ´¢Æ÷.*/ 

-}T_zApMmia_SmsCpms_Req,T_zApMmia_PbPrefMsgSto_Req; 

-

-/**************************************************************************

- Ô­ÓZ_APMMIA_ListSmCnf_Ev

- ¹¦ÄÜ£ºÁоÙÏûÏ¢µÄ»Ø¸´

- **************************************************************************/

-typedef struct {

-    BYTE                                        bSrcIndex;

-    BYTE                                        bDesIndex;

-    BYTE                                        bStatChgFlg;

-    BYTE                                        bResult;  /* Áоٽá¹û */

-

-    DWORD                                       dwReason; /* ÁоÙʧ°ÜÔ­Òò */

-

-    WORD                                        wCurNum;

-    WORD                                        wTotalNum;

-

-    WORD                                        wIndex;

-    BYTE                                        bMsgStatus;

-    BYTE                                        bMem1;

-

-    DWORD                                       dwLen;  /*Ϊ²âÊÔ¹¤¾ß¸ü¸Ä*/

-

-    PBYTE                                       pbMsg;     /* Ö¸ÏòmsgµÄÖ¸Õë */

-}T_zApMmia_ListSm_Cnf, T_zApMmia_ListSmRlt;

-

-/* TP-FOÊý¾ÝµÄ½á¹¹ÀàÐÍ */

-typedef struct

-{

-    BITS                                         bMsgTypeId:2; /* 

-                                                               * ÏûÏ¢ÀàÐͱêʶMTIÕ¼2룬bit1ºÍbit0.

-                                                               * 0 0 SMS DELIVER (SC' MS)  

-                                                             * 0 0 SMS DELIVER REPORT (MS' SC) 

-                                                             * 1 0 SMS STATUS REPORT (SC ' MS)   

-                                                             * 1 0 SMS COMMAND (MS ' SC) 

-                                                               * 0 1 SMS SUBMIT (MS' SC) 

-                                                             * 0 1 SMS SUBMIT REPORT (SC ' MS) 

-                                                             * 1 1 ±£Áô,MSÊÕµ½º¬ÓдËÖµµÄSMʱ,ÊÓÆäΪSMS DELIVER²¢Ô­Ñù´æ´¢Ö®.

-                                                               */

-    BITS                                         bMsgFeature:1; /* 

-                                                                * ÏûÏ¢ÌØÕ÷룬¼´¶àÏûÏ¢·¢ËÍMMS/¾Ü¾ø¸´ÖÆRPָʾ£¬Õ¼1λbit2.

-                                                                * MMS:Õë¶ÔSMS-DELIVER»òSMS-STATUS-REPORT

-                                                                *      0  :SCÖÐÓжàÌõµÈ´ýÒª·¢Íù¸ÃMSµÄSM»ò״̬±¨¸æ¡£

-                                                                *      1  :SCÖÐûÓжàÌõµÈ´ýÒª·¢Íù¸ÃMSµÄSM»ò״̬±¨¸æ¡£

-                                                                * RD£ºÕë¶ÔSMS-SUBMIT.

-                                                                *      0:ָʾSCÔÊÐí½ÓÄÉÒ»¸öSMS-SUBMIT¸´ÖƵÄSM.(TP-MR,TP-DA,TP-OA½ÔÏàͬ)

-                                                                *      1: ָʾSC¾Ü¾ø½ÓÄÉÒ»¸ö¸´ÖƵÄSMS-SUBMIT. 

-                                                                */

-    BITS                                         bTpvpFormat:2;  /* 

-                                                                 * ÓÐЧÆÚ¸ñʽVPF,Õ¼2룬bit4ºÍbit3.

-                                                                 * Õë¶ÔSMS-SUBMIT.

-                                                                 *    0  0 TP-VPÓòδÌṩ

-                                                                 *    1  0 TP-VPÓòÌṩ - Ïà¹Ø¸ñʽ  : TP-VPÕ¼Ò»¸ö×Ö½Ú,Ϊһ¸ö×Ö½ÚµÄÕûÊýÖµ,

-                                                                 *       ±íʾÓÐЧÆÚµÄ³¤¶È,´ÓSC½ÓÊÕµ½SMS-SUBMITÄÇÒ»¿ÌËãÆð.±íʾµÄʱ¼äÖµÈçÏÂ:

-                                                                 *        TP-VP ֵ    Validity period ֵ

-                                                                 *        0 to 143    (TP-VP+1)x5minutes (i.e.5 minutes intervals up to 12 hours)

-                                                                 *        144 to 167  12hours+((TP-VP-143) x 30 minutes)

-                                                                 *        168 to 196  (TP-VP-166)x1day

-                                                                 *        197 to 255  (TP-VP-192)x1week

-                                                                 *   0 1 TP-VPÓòÌṩ - ÔöÇ¿¸ñʽ  :ÓÉ7o×é³É,ËùÓÐ×Ö½Ú±ØÐëÈ«²¿³öÏÖ,¾¡¹Üδ±Ø

-                                                                 *             È«Óõ½.Ê××Ö½ÚÖ¸Ã÷Á˺óÃæ6¸ö×Ö½ÚµÄʹÓ÷½·¨,Èκα£Áô»ò²»ÓõÄλÐëÖÃΪ0.

-                                                                 *   1 1 TP VPÓòÌṩ - ¾ø¶Ô¸ñʽ  : TP-VPΪ7o,°ë×Ö½Ú±íʾ,±íʾÓÐЧÓòÖÐÖ¹µÄ¾ø¶Ô

-                                                                 *              ʱ¼ä,ͬµÈÓÚSCTS±íʾ·¨.   

-                                                                 */

-    BITS                                         bStatRptFeature:1; /* ״̬±¨¸æÌØÕ÷룬¼´ÏûÏ¢ÌØÕ÷£¬×´Ì¬±¨¸æÖ¸Ê¾SRI/״̬±¨¸æÇëÇóSRR/״̬±¨¸æ×ʸñÕßSRQ,

-                                                                    * Õ¼1룬bit5. 

-                                                                    * SRI£ºÕë¶ÔSMS-DELIVER.

-                                                                    *       0:ÎÞ״̬±¨¸æ·µ»Ø¡£¡£

-                                                                    *       1:Ò»¸ö״̬±¨¸æÓ¦£¨´ÓSC£©·µ»Ø¸øÔ´SME.(ÒòΪԴSMEÔÚSMS-SUBMITÖÐÇëÇó¡£

-                                                                    *       ÁË״̬±¨¸æ)

-                                                                    * SRR£ºÕë¶ÔSMS-SUBMIT.

-                                                                    *       0:ÎÞ״̬±¨¸æÇëÇó¡£

-                                                                    *       1:Ò»¸ö״̬±¨¸æ±»ÇëÇ󷵻ء£

-                                                                    * SRQ£ºÕë¶ÔSMS-STATUS-REPORT

-                                                                    *       0:ÊÇSMS-SUBMITµÄ¶ÔӦ״̬±¨¸æ¡£

-                                                                    *       1:ÊÇSMS-COMMANDµÄ¶ÔӦ״̬±¨¸æ¡£

-                                                                    */

-    BITS                                         bTpudHeadInd:1;    /* Óû§Êý¾ÝÍ·²¿Ö¸Ê¾UDHI£¬Õ¼1룬bit6.

-                                                                    * 0:TP-UDÓò½ö°üº¬¶ÌÏûÏ¢.

-                                                                    * 1: TP-UDÓò°üº¬Óû§Êý¾ÝÍ·²¿ºÍ¶ÌÏûÏ¢Ìå.

-                                                                    */

-    BITS                                         bReplyPathInd:1;   /* »Ø¸´Â·¾¶Ö¸Ê¾RP,Õ¼1룬bit7.

-                                                                    * 0:δÉèÖûظ´Â·¾¶¡£

-                                                                    * 1:»Ø¸´Â·¾¶²ÎÊýÔÚSMS-SUBMIT/ SMS-DELIVER.ÒÑÉèÖÃ.

-                                                                    */

-    BYTE                                         abPadding[3];

-}T_zApMmia_TpFo;

-

-

-/* µØÖ·ÀàÐ͵͍ÒåÀàÐÍ */

-typedef struct

-{

-    BITS                                         bNumPlanId:4;  /* Numbering Plan Identificationλ¶Î */

-    BITS                                         bNumberType:3; /* Type of Numberλ¶Î */

-    BITS                                         bTopBit:1;     /* ×î¸ßλ¹Ì¶¨Îª1. */

-    BYTE                                         abPadding[3];

-}T_zApMmia_AddrType;

-

-/* µØÖ·ÀàÐÍ */

-typedef struct 

-{

-    BYTE                                         bAddrLength;  /*

-                                                               * ¿ÉΪ°ë×Ö½Ú±íʾµÄµØÖ·Öµ³¤¶È£¬È¡Öµ£¨0¡«20£©

-                                                               * µ±bAddrLengthÈ¡0ʱ£¬bAddrValue²»Ìṩ£¬tAddrType

-                                                               * ¿ÉÌṩ

-                                                               */

-    BYTE                                         abPadding[3];

-

-    T_zApMmia_AddrType                        tAddressType; /* µØÖ·ÀàÐÍ£¬×é³É¸ñʽ£º1+TON(3λ)+NPI(µÍ4λ)*/

-

-    BYTE                                         abAddrValue[Z_APMMIA_MAX_ADDRVALUE_LEN];  

-                                                               /*

-                                                               * µØÖ·ÖµÓò£¬°ë×Ö½Ú±íʾ»ò×ÖĸÊý×Ö±íʾ

-                                                               *£¨½öÓ¦ÓÃÓÚSM-TL²ã£©.

-                                                               * Èô´ËÓò³¤¶ÈÎªÆæÊý£¬Ôò×î¸ß×Ö½Ú²¹¡°FF¡±´Õ³ÉżÊý¸ö

-                                                               */

-    BYTE                                         abPadding2[2];

-}T_zApMmia_TpAddress;  /* Çø·ÖSM-TLµØÖ·ºÍµ×²ãRP²ãµØÖ·*/

-

-typedef struct{                                  

-    BYTE                                         bYear;        

-    BYTE                                         bMonth;        

-    BYTE                                         bDay;        

-    BYTE                                         bHour; 

-           

-    BYTE                                         bMinute;        

-    BYTE                                         bSecond;        

-    BYTE                                         bTmZone;        

-    BYTE                                         bPadding;

-}T_zApMmia_TZAndTime;  

-/****************************************************************************

-  Ô­Óï:Z_APMMIA_SmsTdeliListCnf_Ev(MMIA->ATI)

-  ¹¦ÄÜ:´Ó´æ´¢Æ÷ÁоÙÏûÏ¢µÄSMS-DELIVERÏûÏ¢µÄÏìÓ¦£»

-  ¶ÔÓ¦ATÃüÁî:Îı¾Ä£Ê½µÄ+CMGLµÄSMS-DELIVER×îÖÕ½á¹ûÂë¡£

- ***************************************************************************/

-typedef struct 

-{

-    BYTE                                         bSrcIndex;

-    BYTE                                         bDestIndex;

-    BYTE                                         bMsgHeadInd; /* 

-                                                              * Îı¾Ä£Ê½ÏµÄÏûϢͷ²¿²ÎÊýÏÔʾָʾ¡£¼´+CSDHÃüÁîµÄÉèÖá£

-                                                              * Z_APMMIA_CSDH_NOSHOW: +CSDHδÉèÖã¬Ôò²»ÏÔʾ<tooa>, <length>²ÎÊýÖµ£¬·Ö±ð¶ÔÓ¦tTpOriginalAddrÀàÐÍ¡¢

-                                                              * bTextLength¡£

-                                                              * ÒÔÏÂͬ¡£

-                                                              * Z_APMMIA_CSDH_SHOW: +CSDHÒÑÉèÖÃΪ1¡£

-                                                              */

-    BYTE                                         bMsgStatVal; /* ÏûϢ״̬,PDUģʽÏÂΪÊýÖµ£¬Îı¾Ä£Ê½ÏÂΪ´®±íʾ¡£*/                                                       

-

-    WORD                                         wTotalNum; /* ×ܵÄÏûÏ¢ÌõÊý */

-    WORD                                         wCurNum; /* µ±Ç°µÄÏûÏ¢ÌõÊý */

-

-    WORD                                         wIndex; /* ´æ´¢Î»ÖÃÐòºÅ.*/  

-    BYTE                                         bCharNum;    /* ¶ÔÓ¦TPUDL£¬×î´óֵΪZ_APMMIA_MAX_SMSTEXTCHAR_LEN */

-    BYTE                                         bNameFg;

-    BYTE                                         bStatChgFlg;   /*  Z_APMMIA_STATCHANGE_ENABLE

-                                                                 *  Z_APMMIA_STATCHANGE_DISABLE

-                                                                 */                                                                    

-    BYTE                                         bDcs;           /*µ±Ç°ÏûϢʹÓõÄDCS*/

-    BYTE                                         abPadding[2];

-    T_zApMmia_TpFo                               tTpFirstOctet;

-

-    T_zApMmia_TpAddress                       tTpOriginalAddr;  /* Ä¿µÄµØÖ·/Ô´µØÖ·¡£*/

-

-    T_zApMmia_PhoneText                       tName;         /* <da>¶ÔÓ¦µÄÈËÃû,ÓÉbNameFg¾ö¶¨ÊÇ·ñ´æÔÚ */

-

-    T_zApMmia_TZAndTime                       tTpSCTS;/* ʱ¼ä´Á. µ±ÎªSMS-SUBMITʱÎ޴˲ÎÊý¡£ */ 

-    

-    DWORD                                        dwTextLength; /* Îı¾Êý¾Ý×Ö·û³¤¶È.Ϊ²âÊÔ¹¤¾ß¸ü¸Ä*/                                                      

-

-    PBYTE                                        pTextBuffer; /* Îı¾Êý¾Ý»º³åÇøÖ¸Õë.*/

-}T_zApMmia_SmsTdeliList_Cnf, T_zApMmia_SmsTdeliListRlt;

-/****************************************************************************

-  Ô­Óï:Z_APMMIA_SmsPcmglCnf_Ev (MMIA->ATI)

-  ¹¦ÄÜ:ÁоÙÏûÏ¢µÄÏìÓ¦£»

-  ¶ÔÓ¦ATÃüÁî:+CMGLÃüÁîµÄ×îÖÕ½á¹ûÂë¡£

- ***************************************************************************/

-typedef struct 

-{   

-    BYTE                                         bSrcIndex;

-    BYTE                                         bDestIndex;

-    WORD                                         wTotalNum;   /* ÁоÙÏûÏ¢×ܵÄÌõÊý */

-

-    WORD                                         WCurNum;     /* µ±Ç°ÏûÏ¢ÌõÊý */

-    WORD                                         wIndex;      /* ´æ´¢Î»ÖÃÐòºÅ.*/  

-

-    BYTE                                         bMsgStatVal; /* ÏûϢ״̬,PDUģʽÏÂΪÊýÖµ£¬Îı¾Ä£Ê½ÏÂΪ´®±íʾ¡£*/

-    BYTE                                         bTpduLength; /* PDUÊý¾ÝÖÐTPDUµÄ×Ö½Ú³¤¶È,×î´óȡֵ164B*/

-    

-    BYTE                                         bNameFg;

-    BYTE                                         bStatChgFlg;   /*  Z_APMMIA_STATCHANGE_ENABLE

-                                                                 *  Z_APMMIA_STATCHANGE_DISABLE

-                                                                 */

-    BYTE                                         bMem;          /* ΪCQNJ00194566ÐÞ¸Ä*/

-    BYTE                                         abPadding[3];    

-    T_zApMmia_PhoneText                       tName;         /* <oa>/<da>¶ÔÓ¦µÄÈËÃû */

-

-

-    BYTE                                         abPduBuf[Z_APMMIA_MAX_SMSPDU_LEN];

-                                                              /* ÓÉtTpSCAddrÓò+TPDUÓò×é³ÉµÄPDUÊý¾Ý»º³åÇøµÄÖ¸Õë¡£*/

-}T_zApMmia_SmsPcmgl_Cnf, T_zApMmia_SmsPcmglRlt; 

-/****************************************************************************

-  Ô­Óï:Z_APMMIA_SmsTsubListCnf_Ev(MMIA->ATI)

-  ¹¦ÄÜ:´Ó´æ´¢Æ÷ÁоÙÏûÏ¢µÄSMS-SUBMITÏûÏ¢µÄÏìÓ¦£»

-  ¶ÔÓ¦ATÃüÁî:Îı¾Ä£Ê½µÄ+CMGLµÄSMS-SUBMIT×îÖÕ½á¹ûÂë¡£

- ***************************************************************************/

-typedef struct 

-{

-    BYTE                                         bSrcIndex;

-    BYTE                                         bDestIndex;

-    BYTE                                         bMsgHeadInd; /* 

-                                                              * Îı¾Ä£Ê½ÏµÄÏûϢͷ²¿²ÎÊýÏÔʾָʾ¡£¼´+CSDHÃüÁîµÄÉèÖá£

-                                                              * Z_APMMIA_CSDH_NOSHOW: +CSDHδÉèÖã¬Ôò²»ÏÔʾ<toda>, <length>²ÎÊýÖµ£¬·Ö±ð¶ÔÓ¦tTpOriginalAddrÀàÐÍ¡¢

-                                                              * bTextLength¡£

-                                                              * ÒÔÏÂͬ¡£

-                                                              *Z_APMMIA_CSDH_SHOW: +CSDHÒÑÉèÖÃΪ1¡£

-                                                              */

-    BYTE                                         bMsgStatVal;/* ÏûϢ״̬,PDUģʽÏÂΪÊýÖµ£¬Îı¾Ä£Ê½ÏÂΪ´®±íʾ¡£*/                                                        

-    WORD                                         wTotalNum; /* ×ܵÄÏûÏ¢ÌõÊý */

-    WORD                                         wCurNum;   /* µ±Ç°µÄÏûÏ¢ÌõÊý */

-

-    WORD                                         wIndex;     /* ´æ´¢Î»ÖÃÐòºÅ.*/  

-    BYTE                                         bCharNum;    /* ¶ÔÓ¦TPUDL£¬×î´óֵΪZ_APMMIA_MAX_SMSTEXTCHAR_LEN */

-    BYTE                                         bNameFg;

-    BYTE                                         bDcs;           /*µ±Ç°ÏûϢʹÓõÄDCS*/

-    BYTE                                         bStatChgFlg;   /*  Z_APMMIA_STATCHANGE_ENABLE

-                                                                 *  Z_APMMIA_STATCHANGE_DISABLE

-                                                                 */

-    BYTE                                         abPadding[2];

-

-    T_zApMmia_TpFo                               tTpFirstOctet;

-

-    T_zApMmia_TpAddress                       tTpDestAddr;/* Ä¿µÄµØÖ·/Ô´µØÖ·¡£*/

-

-    T_zApMmia_PhoneText                       tName;         /* <da>¶ÔÓ¦µÄÈËÃû,ÓÉbNameFg¾ö¶¨ÊÇ·ñ´æÔÚ */

-

-    DWORD                                        dwTextLength;/* Îı¾Êý¾Ý×Ö·û³¤¶È.Ϊ²âÊÔ¹¤¾ß¸ü¸Ä*/                                                      

-

-    PBYTE                                        pTextBuffer;/* Îı¾Êý¾Ý»º³åÇøÖ¸Õë.*/

-}T_zApMmia_SmsTsubList_Cnf, T_zApMmia_SmsTsubListRlt;

-

-/****************************************************************************

-  Ô­Óï:Z_APMMIA_SmsTstatListCnf_Ev(MMIA->ATI)

-  ¹¦ÄÜ:ÁоÙÏûÏ¢µÄSMS-STATUS-REPORTÏìÓ¦£»

-  ¶ÔÓ¦ATÃüÁî:Îı¾Ä£Ê½µÄ+CMGLµÄSMS-STATUS-REPORT×îÖÕ½á¹ûÂë¡£

- ***************************************************************************/

-typedef struct 

-{

-    BYTE                                         bSrcIndex;

-    BYTE                                         bDestIndex;

-    BYTE                                         bMsgStatVal;/* ÏûϢ״̬,PDUģʽÏÂΪÊýÖµ£¬Îı¾Ä£Ê½ÏÂΪ´®±íʾ¡£*/  

-    BYTE                                         bTpMsgRefer;  /* TPDUµÄÏûÏ¢²Î¿¼Êý£¬TP-MR.*/

-

-    BYTE                                         bStatChgFlg;   /*  Z_APMMIA_STATCHANGE_ENABLE

-                                                                 *  Z_APMMIA_STATCHANGE_DISABLE

-                                                                 */

-    BYTE                                         bStatusValue; /*SC¶ÌÏûÏ¢´¦ÀíºóµÄ״ֵ̬,TP-ST¡£*/                                         

-    WORD                                         wIndex; /* ´æ´¢Î»ÖÃÐòºÅ.*/  

-

-    WORD                                         wTotalNum; /* ×ܵÄÏûÏ¢ÌõÊý */

-    WORD                                         wCurNum;   /* µ±Ç°µÄÏûÏ¢ÌõÊý */

-

-

-    T_zApMmia_TpFo                            tTpFirstOctet;/* TPDU²ÎÊýµÄµÚÒ»¸ö×Ö½Ú¡£ÉèÖÃÁËÏûÏ¢ÀàÐͼ°Ò»Ð©²ÎÊýָʾ¡£*/

-

-    T_zApMmia_TpAddress                       tTpReceiveAddr;  /* Ô´ÇëÇó״̬±¨¸æÏûÏ¢µÄ½ÓÊÕµØÖ·£¬¼´×´Ì¬±¨¸æµÄÔ´·¢µØÖ·¡£TP-RA.*/     

-

-    T_zApMmia_TZAndTime                       tTpSCTS; /* ʱ¼ä´Á. */ 

-

-    T_zApMmia_TZAndTime                       tTpDischageTime; /* ÏûÏ¢ÊÍ·Åʱ¼ä¡£ */

-}T_zApMmia_SmsTstatList_Cnf, T_zApMmia_SmsTstatListRlt;

-

-/**************************************************************************

- Ô­ÓZ_APMMIA_ReadSmReq_Ev

- ¹¦ÄÜ£º´Ó´æ´¢Æ÷¶Á¶ÌÏûÏ¢

- **************************************************************************/

-typedef struct {

-    BYTE                                         bSrcIndex;

-    BYTE                                         bDesIndex;

-    BYTE                                         bReadFlag;   /* 0 ½ö¶Á / 1 ¶ÁÈ¡·¢ËÍ

-                                                               *  Z_APMMIA_SMREADFLAG_ONLYREAD 

-                                                               *  Z_APMMIA_SMREADFLAG_FORSEND   

-                                                               */

-    BYTE                                         bStatChgFlg; /* 

-                                                               * SMSÏûϢ״̬¸Ä±ä±êÖ¾£º

-                                                               * ¿É¸Ä±äÏûϢ״̬ 0 / ²»¸Ä±äÏûϢ״̬ 1

-                                                               * Z_APMMIA_STATCHANGE_ENABLE /

-                                                               * Z_APMMIA_STATCHANGE_DISABLE 

-                                                               */

-    WORD                                         wIndex;

-    BYTE                                         abPadding[2];

-}T_zApMmia_ReadSm_Req;

-

-/**************************************************************************

- Ô­ÓZ_APMMIA_ReadSmCnf_Ev

- ¹¦ÄÜ£º´Ó´æ´¢Æ÷¶Á¶ÌÏûÏ¢µÄ»Ø¸´

- **************************************************************************/

-typedef struct {

-    BYTE                                         bSrcIndex;

-    BYTE                                         bDesIndex;

-    BYTE                                         bReadFlag;  /* 0 ½ö¶Á / 1 ¶ÁÈ¡·¢ËÍ

-                                                              *  Z_APMMIA_SMREADFLAG_ONLYREAD 

-                                                              *  Z_APMMIA_SMREADFLAG_FORSEND   

-                                                              */

-    BYTE                                         bResult;    /* 0 ʧ°Ü / 1 ³É¹¦ */

-    DWORD                                        dwReason;   /* ʧ°ÜÔ­Òò */ 

-

-    BYTE                                         bStatChgFlg;   /*  Z_APMMIA_STATCHANGE_ENABLE

-                                                                 *  Z_APMMIA_STATCHANGE_DISABLE

-                                                                 */

-    BYTE                                         abPadding[3];

-

-    BYTE                                         bStatus;    /* ¶ÌÏûϢ״̬ */ 

-    BYTE                                         bMem;       /* Ö¸¶¨SMS´æ´¢Æ÷ */

-    WORD                                         wIndex;     /* Ö¸¶¨Î»Öà */

-    DWORD                                        dwLen;      /* ×Ö½Ú³¤¶È,Ϊ²âÊÔ¹¤¾ß¸ü¸Ä */

-    PBYTE                                        pbMsg;     /* Ö¸ÏòmsgµÄÖ¸Õë */

-}T_zApMmia_ReadSm_Cnf;

-

- /**************************************************************************

- Ô­ÓZ_APMMIA_SaveSmReq_Ev

- ¹¦ÄÜ£º´æ´¢¶ÌÏûÏ¢£¬°üÀ¨MTʱµÄ´æ´¢

- **************************************************************************/

-typedef struct {

-    BYTE                                         bSrcIndex;

-    BYTE                                         bDesIndex;

-    BYTE                                         bSaveFlag; /* 

-                                                             * ·µ»Ø´æ´¢½á¹ûʱ½«´Ë±êÖ¾´ø»Ø

-                                                             * Z_APMMIA_SMSAVEFLAG_UPREQUEST         :ÉÏ²ã´æ´¢ÇëÇó

-                                                             * Z_APMMIA_SMSAVEFLAG_DELIVERNOTREP :MT-deliver´æ´¢²»Éϱ¨

-                                                             * Z_APMMIA_SMSAVEFLAG_DELIVERREP        :MT-deliver´æ´¢Éϱ¨

-                                                             * Z_APMMIA_SMSAVEFLAG_STATUSNOTREP  :MT-status report´æ´¢²»Éϱ¨

-                                                             * Z_APMMIA_SMSAVEFLAG_STATUSREP         :MT-status report´æ´¢Éϱ¨

-                                                             * Z_APMMIA_SMSAVEFLAG_CBMSNOTREP      :MT-CBMs´æ´¢²»Éϱ¨

-                                                             * Z_APMMIA_SMSAVEFLAG_CBMSREP             :MT-CBMs´æ´¢Éϱ¨

-                                                             */

-    BYTE                                         bMsgStatus; /* ½öµ±bSaveFlagΪZ_APMMIA_SMSAVEFLAG_UPREQUESTʱÓÐЧ */

-    BYTE                                         bTpMsgRef;  /* 

-                                                              * ״̬±¨¸æÏûÏ¢SMS-STATUS-REPORTµÄTP-MR¡£ 

-                                                              * Ö»ÓÃÓÚµ±bSaveFlag±êʶΪSMS-STATUS-REPORTÏûϢʱ£¬

-                                                              * ʶ±ð¸ÃÏûÏ¢¶ÔÓ¦µÄEFsms 

-                                                              */

-    BYTE                                         bMemStyle;   /*

-                                                               * MTÏûÏ¢´æ´¢·½Ê½(³ýbSaveFlag=0Íâ)£º

-                                                               * Mem3ÓÅÏÈ´æ´¢ 0 / USIM¹Ì¶¨´æ´¢ 1

-                                                               * Z_APMMIA_MEM3_PREFERRED/

-                                                               * Z_APMMIA_USIM_FIXED

-                                                               */  

-    BYTE                                         bPadding[2];

-    DWORD                                        dwLen;       /* ×Ö½Ú³¤¶È,,Ϊ²âÊÔ¹¤¾ß¸ü¸Ä */    

-    PBYTE                                        pbMsg;     /* Ö¸ÏòmsgµÄÖ¸Õë */

-}T_zApMmia_SaveSm_Req;

- 

-/**************************************************************************

- Ô­ÓZ_APMMIA_SaveSmCnf_Ev

- ¹¦ÄÜ£º´æ´¢¶ÌÏûÏ¢µÄ»Ø¸´

- **************************************************************************/

-typedef struct {

-    BYTE                                        bSrcIndex;

-    BYTE                                        bDesIndex;

-    BYTE                                        bSaveFlag; /* ½«ÇëÇóÖеÄbSaveFlag´ø»Ø */

-    BYTE                                        bPadding;

-

-    WORD                                        wIndex;    /* ´æ´¢Î»ÖÃ,0xffff±íʾȱʡ */

-    BYTE                                        bMem;      /* ´æÈëµÄmem */

-    BYTE                                        bResult;   /* ´æ´¢½á¹û 0 ʧ°Ü 1 ³É¹¦

-                                                              Z_APMMIA_OPERATION_SUCCESS 

-                                                              Z_APMMIA_OPERATION_FAILURE  

-                                                            */

-

-    DWORD                                       dwReason;  /* ʧ°ÜÔ­Òò */

-}T_zApMmia_SaveSm_Cnf;

-

-

-/**************************************************************************

- Ô­ÓZ_APMMIA_ListSmReq_Ev

- ¹¦ÄÜ£ºÇëÇó°´×´Ì¬ÁоÙÏûÏ¢

- **************************************************************************/

-typedef struct {

-    BYTE                                         bSrcIndex;

-    BYTE                                         bDesIndex;

-    BYTE                                         bMsgStatus;  /* ¶ÌÏûϢ״̬ */ 

-    BYTE                                         bStatChgFlg; /* SMSÏûϢ״̬¸Ä±ä±êÖ¾ */ 

-}T_zApMmia_ListSm_Req;

-

-/**************************************************************************

- Ô­ÓZ_APMMIA_DeleteSmReq_Ev

- ¹¦ÄÜ£ºÉ¾³ýÏûÏ¢ÇëÇó

- **************************************************************************/

-typedef struct {

-    BYTE                                        bSrcIndex;

-    BYTE                                        bDesIndex;

-    BYTE                                        bDelFlag;   /* 

-                                                            * ɾ³ýÌõ¼þ¡£Èô·Ç0£¬ÇÒÓëwIndexͬʱ³öÏÖʱ£¬ºöÂÔwIndex£¬ÒÔbDelFlagΪ׼¡£

-                                                            *Z_APMMIA_SMSDELFLG_BYIDX           0 (or omitted) ɾ³ýÖ¸¶¨ÐòºÅµÄÏûÏ¢£¨Ä¬ÈÏ£© 

-                                                            *Z_APMMIA_SMSDELFLG_READ            1  ɾ³ýËùÓÐÒѶÁµÄÏûÏ¢

-                                                            *Z_APMMIA_SMSDELFLG_READSEND               2  ɾ³ýËùÓÐÒѶÁµÄºÍÒÑ·¢Ë͵ÄÏûÏ¢

-                                                            *Z_APMMIA_SMSDELFLG_READSENDUNSEND   3  ɾ³ýËùÓÐÒѶÁµÄ£¬ÒÑ·¢Ë͵ģ¬ºÍδ·¢Ë͵ÄÏûÏ¢

-                                                            *Z_APMMIA_SMSDELFLG_All                            4  ɾ³ýËùÓÐÏûÏ¢

-                                                            */

-    BYTE                                        bPadding;

-    WORD                                        wIndex;

-    BYTE                                        abPadding[2];

-}T_zApMmia_DeleteSm_Req;

-

-/**************************************************************************

- Ô­ÓZ_APMMIA_DeleteSmCnf_Ev

-       Z_APMMIA_SmMemAvailRsp_Ev(MMIA->PB)

- ¹¦ÄÜ£ºÉ¾³ýÏûÏ¢»Ø¸´

-       ͨ¸æÏìÓ¦ÏûÏ¢

- **************************************************************************/

-typedef struct {

-    BYTE                                        bSrcIndex;

-    BYTE                                        bDesIndex;

-    BYTE                                        bResult;

-    BYTE                                        bMemType;

-

-    DWORD                                       dwReason;

-}T_zApMmia_DeleteSm_Cnf,T_zApMmia_MemAvail_Rsp;

-

-/**************************************************************************

- Ô­ÓZ_APMMIA_SmMemAvailInd_Ev(PB->MMIA)

- ¹¦ÄÜ£º¶ÌÏûÏ¢´æ´¢Æ÷¿ÉÓÃ/²»¿ÉÓÃ֪ͨ

- **************************************************************************/

-typedef struct {

-    BYTE                                        bSrcIndex;

-    BYTE                                        bDesIndex;

-

-    BYTE                                        bAvailable; /* Z_APMMIA_SMMEMORY_UNAVAILABLE 

-                                                               Z_APMMIA_SMMEMORY_AVAILABLE      

-                                                               */

-    BYTE                                        bPadding;

-}T_zApMmia_SmMemAvail_Ind;

-/****************************************************************************

-  Ô­Óï:Z_APMMIA_PbPrefMsgStoCnf_Ev(PB->MMIA)

-  ¹¦ÄÜ:ÏûÏ¢Ê×Ñ¡´æ´¢Æ÷ÉèÖõÄÏìÓ¦£»

-  ¶ÔÓ¦ATÃüÁî:PB¶ÔcpmsÖ´ÐÐÃüÁîµÄ½á¹û

- ***************************************************************************/

-typedef struct 

-{

-    BYTE                                         bSrcIndex;

-    BYTE                                         bDesIndex;

-    BYTE                                         bPadding;

-    BYTE                                         bResult;     /* ´æ´¢½á¹û 0 ʧ°Ü 1 ³É¹¦

-                                                                 Z_APMMIA_OPERATION_SUCCESS 

-                                                                 Z_APMMIA_OPERATION_FAILURE  

-                                                              */

-

-    DWORD                                        dwReason;    /* ʧ°ÜÔ­Òò */

-

-    BYTE                                         bCommandInd; /*

-                                                              * ¶ÔÓ¦µÄÃüÁîָʾ

-                                                              * Z_APMMIA_SMSCMDTYPE_SET     : ÉèÖÃÃüÁî

-                                                              * Z_APMMIA_SMSCMDTYPE_QUERY: ¶ÁÃüÁî,¶ÁÃüÁֻ·µ»Øµ±Ç°bMemn, wMemnUsed, wMemnTotalµÄÖµ¡£

-                                                              */

-    BYTE                                         bMem1;       /* Ê×Ñ¡¶Á,Áо٣¬É¾³ý´æ´¢Æ÷.*/ 

-

-    BYTE                                         bMem2;       /* Ê×Ñ¡·¢ËÍ£¬Ð´´æ´¢Æ÷.*/ 

-    BYTE                                         bMem3;       /* Ê×Ñ¡MTÏûÏ¢±£´æ´æ´¢Æ÷.*/  

-

-    WORD                                         wMem1Used;   /* mem1Òѱ£´æµÄÏûÏ¢ÌõÊý£¬È¡Öµ£¨0£­511£©¡£*/

-    WORD                                         wMem1Total;  /* mem1×î´ó¿É±£´æµÄÏûÏ¢ÌõÊý£¬È¡Öµ£¨0£­511£©¡£*/

-

-    WORD                                         wMem2Used;   /* mem2Òѱ£´æµÄÏûÏ¢ÌõÊý£¬È¡Öµ£¨0£­511£©¡£*/ 

-    WORD                                         wMem2Total;  /* mem2×î´ó¿É±£´æµÄÏûÏ¢ÌõÊý£¬È¡Öµ£¨0£­511£©¡£*/

-

-    WORD                                         wMem3Used;   /* mem3Òѱ£´æµÄÏûÏ¢ÌõÊý£¬È¡Öµ£¨0£­511£©¡£*/

-    WORD                                         wMem3Total;  /* mem3×î´ó¿É±£´æµÄÏûÏ¢ÌõÊý£¬È¡Öµ£¨0£­511£©¡£*/

-}T_zApMmia_PbPrefMsgSto_Cnf; 

-

-/**************************************************************************

- Ô­ÓZ_APMMIA_PbTpmrUpdateReq_Ev (MMIA->PB)

- ¹¦ÄÜ£ºMO¶ÌÏûÏ¢·¢Ëͳɹ¦ºó£¬Í¨ÖªPB´æ´¢¹ÜÀíÄ£¿é¸üÐÂTP-MR

- **************************************************************************/

-typedef struct {

-    BYTE                                         bSrcIndex;

-    BYTE                                         bDesIndex;

-    BYTE                                         bTpMsgRef; /* 

-                                                             * ÓÃÓÚ¸üÐÂEFsmssµÄTP-MR¡£

-                                                             * µ±bMsgSendStyleΪZ_APMMIA_MSG_STORE_SENDʱ£¬

-                                                             * ͬʱ»¹ÓÃÀ´»ØÌîÖÁEFsmsµÄPDUÖÐ 

-                                                             */

-    BYTE                                         bStatrptReqFlg; /*

-                                                                  * ״̬±¨¸æÎ´ÇëÇó 0/״̬±¨¸æÒÑÇëÇó 1

-                                                                  * µ±bMsgSendStyleΪZ_APMMIA_MSG_STORE_SENDʱÓÐЧ¡£

-                                                                  * PBÓÃÓÚ¸üÐÂEFsmsµÄStatus                                                                   

-                                                                  * Z_APMMIA_STATUSREPORT_NOTREQUIRED/

-                                                                  * Z_APMMIA_STATUSREPORT_REQUIRED 

-                                                                  */

-    BYTE                                         bMsgSendStyle; /* 

-                                                                  * MOÏûÏ¢·¢ËÍ·½Ê½£º

-                                                                 * Ö±½Ó·¢ËÍ 0 / ´æ´¢·¢ËÍ 1

-                                                                 * Z_APMMIA_MSG_DIRECT_SEND /

-                                                                 * Z_APMMIA_MSG_STORE_SEND  

-                                                                 */

-    BYTE                                         bMem;  /* 

-                                                         * µ±bMsgSendStyleΪZ_APMMIA_MSG_STORE_SENDʱÓÐЧ¡£

-                                                         * SMS´æ´¢Æ÷£¬È¡ÖµÍ¬+CPMSµÄ<mem> 

-                                                         */

-    WORD                                         wIndex; /*µ±bMsgSendStyleΪZ_APMMIA_MSG_STORE_SENDʱÓÐЧ¡£EFsmsµÄλÖúŠ*/

-}T_zApMmia_PbTpmrUpdate_Req;

-

-/**************************************************************************

- Ô­ÓZ_APMMIA_PbInitCmpltInd_Ev (PB-->MMIA)

-       Z_APMMIA_ZpbicInd_Ev(MMIA-->ATI)

- ¹¦ÄÜ£ºÍ¨ÖªÉϲã,PB´æ´¢¹ÜÀíÄ£¿éÒѳõʼ»¯Íê³É

- ¶ÔÓ¦ATÃüÁ+ZPBIC£º<result>

- **************************************************************************/

-typedef struct 

-{

-    BYTE                                         bSrcIndex;

-    BYTE                                         bDesIndex; 

-    BYTE                                         bOprType; /* ÒµÎñÀàÐÍָʾ£º0 SMS£¬ 1 PB */

-    BYTE                                         bResult;  /* ½á¹ûָʾ£º1 ³É¹¦ / 0ʧ°Ü */   

-}T_zApMmia_PbInitCmplt_Ind,T_zApMmia_Zpbic_Ind;

-

-/**************************************************************************

- Ô­ÓZ_APMMIA_PbMtParaInd_Ev (MMIA-->PB)

- ¹¦ÄÜ£ºMMIA¸æÖªPB+CNMIµÄ²ÎÊý<mt>

- **************************************************************************/

-typedef struct

-{

-    BYTE                                         bSrcIndex;

-    BYTE                                         bDesIndex;

-    BYTE                                         bMtPara;  /*  ATÃüÁî+CNMI²ÎÊý<mt>  */

-    BYTE                                         bPadding; 

-}T_zApMmia_PbMtPara_Ind;

-

-/**************************************************************************** 

-  Ô­Óï:Z_APMMIA_PbQuerySmsMaxIndexReq_Ev(MMIA->PB)

-  ¹¦ÄÜ:²éѯµ±Ç°¶ÌÏûÏ¢´æ´¢Æ÷Ö§³Ö×î´óË÷Òý

-  ¶ÔÓ¦ATÃüÁî:cmgd=?

- ****************************************************************************/

-typedef struct

-{

-    BYTE                                        bSrcIndex;

-    BYTE                                        bDesIndex;

-    BYTE                                        abPadding[2];

-}T_zApMmia_PbQuerySmsMaxIndex_Req, T_zApMmia_PbPrefMsgStoTest_Req

-,T_zApMmia_PbReadSetNum_Req,T_zApMmia_PbReadLastExtErr_Req;

-

-/**************************************************************************** 

-  Ô­Óï:Z_APMMIA_PbQuerySmsMaxIndexCnf_Ev(PB->MMIA)

-  ¹¦ÄÜ:²éѯµ±Ç°¶ÌÏûÏ¢´æ´¢Æ÷Ö§³Ö×î´óË÷ÒýµÄ½á¹û

-  ¶ÔÓ¦ATÃüÁî:cmgd=?

- ****************************************************************************/

-typedef struct

-{

-    BYTE                                        bSrcIndex;

-    BYTE                                        bDesIndex;

-    WORD                                        wIndexMax;  /* +cpmsÉèÖõÄmem1Ö§³ÖµÄ×î´óË÷Òý£¨Ë÷Òý×îС´Ó1¿ªÊ¼£© */

-}T_zApMmia_PbQuerySmsMaxIndex_Cnf;

-

-/**************************************************************************

- Ô­ÓZ_APMMIA_PbFindIndexReq_Ev

- ¹¦ÄÜ£ºÇëÇóÁоٵ绰±¾¼Ç¼(Ö¸¶¨´æ´¢Æ÷)

- ATÃüÁ+CPBR

- **************************************************************************/

-typedef struct {

-    BYTE                                        bSrcIndex;

-    BYTE                                        bDesIndex;

-    BYTE                                        bListFlag; /* 0 for CPBR 1 for mo

-                                                               Z_APMMIA_PBINDEXREAD_FORCPBR

-                                                               Z_APMMIA_PBINDEXREAD_FORMO      

-                                                             */

-    BYTE                                        bIndex2Fg;  /* ָʾwIndex2ÓÐЧÐÔ£¬È¡Öµ

-                                                               * Z_APMMIA_INVALID                                                             

-                                                               * Z_APMMIA_VALID   

-                                                               */

-    WORD                                        wIndex1;

-    WORD                                        wIndex2;

-}T_zApMmia_PbFindIndex_Req;

-

-/**************************************************************************

- Ô­ÓZ_APMMIA_PbFindIndexEndCnf_Ev 

- ¹¦ÄÜ£ºÁоٵ绰±¾¼Ç¼£¬½áÊøÏûÏ¢

- ATÃüÁ+CPBR

- **************************************************************************/

-typedef struct {

-    BYTE                                        bSrcIndex;

-    BYTE                                        bDesIndex;

-    BYTE                                        bResult;     /* 0 ʧ°Ü 1 ³É¹¦ */

-    BYTE                                        bPadding;

-    

-    DWORD                                       dwReason;    /* ʧ°ÜÔ­Òò */

-}T_zApMmia_PbFindIndexEnd_Cnf;

-

-/**************************************************************************

- Ô­ÓZ_APMMIA_PbFindTextCnf_Ev

-       Z_APMMIA_CpbfSetCnf_Ev

- ¹¦ÄÜ£º·µ»Ø°´°´Îı¾²éѯµÄ½á¹û

-       °´text²éÕҵ绰±¾

- ATÃüÁ+CPBF

- **************************************************************************/

-typedef struct {

-    BYTE                                        bSrcIndex;

-    BYTE                                        bDesIndex;

-    BYTE                                        bPadding;

-    BYTE                                        bResult;     /* 0 ʧ°Ü 1 ³É¹¦ */

-

-    DWORD                                       dwReason;    /* ʧ°ÜÔ­Òò */

-

-    WORD                                        wCurNum;   /* µ±Ç°ÌõÊý */

-    WORD                                        wTotalNum; /* ×ܵÄÁоÙÌõÊý */

-

-    BITS                                         bHiddenFg:1;   /*ָʾbHiddenÓÐЧÐÔ*/

-    BITS                                         bIndexFg:1;    /*ָʾindexÓÐЧÐÔ*/

-    BITS                                         bNumFg:1;      /* ָʾtBcdNumÓÐЧÐÔ  */

-    BITS                                         bTextFg:1;     /* ָʾtTextÓÐЧÐÔ */

-    BITS                                         bSneFg:1;      /* ָʾtSneÓÐЧÐÔ */

-    BITS                                         bEmailFg:1;    /* ָʾtEmailÓÐЧÐÔ */

-    BITS                                         bAnrFg:1;      /* ָʾtAnrÓÐЧÐÔ */

-    BITS                                         bGrpFg:1;      /* ָʾtGrpÓÐЧÐÔ */

-

-    BYTE                                        bHidden;     /* 0 not hidden 1 hidden */

-    WORD                                        wIndex;

-

-    T_z_CallNum                               tNum;

-

-    T_zApMmia_PhoneText                      tText; 

-    T_zApMmia_Sne                               tSne;  /* ¸Ãµç»°¼Ç¼¶ÔÓ¦µÄµÚ¶þ¸öÈËÃû*/

-    T_zApMmia_Email                             tEmail; /* µç×ÓÓÊÏ䵨ַ*/

-    T_z_CallNum                                 tAnr;  /* ¸½¼ÓµÄºÅÂë*/

-    T_zApMmia_Grp                               tGrp;  /* ±íÃ÷¸Ãµç»°¼Ç¼ÏîÊôÓÚÄǸöGroup*/

-}T_zApMmia_PbFindText_Cnf,T_zApMmia_CpbfSet_Cnf;

-

-/*========================  µç»°±¾´æ´¢¹ÜÀí ²¿·Ö  ===============================*/

-/**************************************************************************

- Ô­ÓZ_APMMIA_PbFindTextReq_Ev

- ¹¦ÄÜ£ºÇëÇó°´Îı¾²éÕҵ绰±¾¼Ç¼(Ö¸¶¨´æ´¢Æ÷»òÈ«²¿´æ´¢Æ÷)

- ATÃüÁ+CPBF

- **************************************************************************/

-typedef struct {

-    BYTE                                        bSrcIndex;

-    BYTE                                        bDesIndex;

-    BYTE                                        abPadding[2];                                                               

-

-    T_zApMmia_PhoneText                      tText;

-}T_zApMmia_PbFindText_Req;

-

-/**************************************************************************

- Ô­ÓZ_APMMIA_PbEditCnf_Ev

- ¹¦ÄÜ£ºÔö¼Ó»òɾ³ý¼Ç¼µÄ½á¹û

- ATÃüÁ+CPBW

- **************************************************************************/

-typedef struct {

-    BYTE                                        bSrcIndex;

-    BYTE                                        bDesIndex;

-    BYTE                                        bResult;

-    BYTE                                        bPadding;

-

-    WORD                                        wWrittenIndex;  /* ¸Ãµç»°¼Ç¼±£´æµÄË÷ÒýºÅ*/

-    BYTE                                        abPadding[2];

-

-    DWORD                                       dwReason;

-}T_zApMmia_PbEdit_Cnf;

-

-/**************************************************************************

- Ô­ÓZ_APMMIA_PbStorageStatusReq_Ev

- ¹¦ÄÜ£º²éѯ´æ´¢Æ÷µÄÌØÐÔ¼°×´Ì¬

- ATÃüÁ

- **************************************************************************/

-typedef struct {

-    BYTE                                        bSrcIndex;

-    BYTE                                        bDesIndex;

-    BYTE                                        bQueryFlag; /*

-                                                            *  Z_APMMIA_PBQUERYFLAG_FORCPBS     

-                                                            *  Z_APMMIA_PBQUERYFLAG_FORCPBR     

-                                                            *  Z_APMMIA_PBQUERYFLAG_FORCPBF     

-                                                            *  Z_APMMIA_PBQUERYFLAG_FORCPBW    

-                                                            */

-    BYTE                                        bPadding;

-

-}T_zApMmia_PbStorageStatus_Req;

-

-/**************************************************************************

- Ô­ÓZ_APMMIA_ZcpbqSetReq_Ev(ATI->MMIA)

-                 Z_APMMIA_PbReadCapaReq_Ev(MMIA->STM)

- ¹¦ÄÜ£º²éѯµ±Ç°£¨CPBSÑ¡ÔñµÄ£©´æ´¢Æ÷¶ÔÓ¦µÄ¸÷ÐÅÏ¢×Ö¶ÎÈÝÁ¿

- ¶ÔÓ¦ATÃüÁ+ZCPBQ

-**************************************************************************/

-typedef struct {

-    BYTE                                         bSrcIndex;

-    BYTE                                         bDesIndex;

-    BYTE                                         bSetIndexFlg;  /* 

-                                                                                                            * ±êʶbSetIndexÓÐЧÐÔ

-                                                                                                            * ZPS_VALID:  bSetIndexÓÐЧ

-                                                                                                            * ZPS_INVALID:  bSetIndexÎÞЧ

-                                                                                                            */

-    BYTE                                         bSetIndex;  /* 

-                                                                                                       * µç»°±¾¼¯ºÏË÷Òý£¬¶ÔÇëÇóÃüÁî

-                                                                                                       * µ±¸Ã²ÎÊýȱʡʱ£¬²éѯËùÓе绰±¾

-                                                                                                       *¼¯ºÏÐÅÏ¢ 

-                                                                                                       */

-}T_zApMmia_ZcpbqSet_Req,T_zApMmia_PbReadCapacity_Req;

-

-typedef struct {   

-    BYTE                                      bItemCap[Z_APMMIA_CUR_TYPE_EFNUM];  /* ÿ¸ö×Ö¶Î(EF)ÈÝÁ¿ */

-    BYTE                                      bItemCount;  /* ×ֶζÔÓ¦µÄÏîÄ¿(EF»ò¼Ç¼)ÊýÄ¿ */

-}T_zApMmia_ItemInfo;

-

-typedef struct {

-    BYTE                                         bSetIndex;  /* µç»°±¾¼¯ºÏË÷Òý*/

-    BYTE                                         bEntryNum;  /* µ±Ç°µç»°±¾¼¯ºÏ¼Ç¼ÌõÄ¿×ÜÊý*/

-    BYTE                                         abPadding[2];

-

-    T_zApMmia_ItemInfo                     tAnrInfo;     

-    T_zApMmia_ItemInfo                     tGrpNameInfo; 

-    T_zApMmia_ItemInfo                     tEmailInfo;   

-    T_zApMmia_ItemInfo                     tSneInfo;     

-}T_zApMmia_PbSetCapa;

-

-/**************************************************************************

- Ô­ÓZ_APMMIA_ZcpbqSetCnf_Ev(MMIA->ATI)

-                 Z_APMMIA_PbReadCapaCnf_Ev(STM->MMIA)

- ¹¦ÄÜ£º»Ø¸´µ±Ç°£¨CPBSÑ¡ÔñµÄ£©´æ´¢Æ÷¶ÔÓ¦µÄ¸÷ÐÅÏ¢×Ö¶ÎÈÝÁ¿

- ¶ÔÓ¦ATÃüÁ+ZCPBQ

-**************************************************************************/

-typedef struct {

-    BYTE                                         bSrcIndex;

-    BYTE                                         bDesIndex;

-    BYTE                                         bNum;  /* ָʾtPbSetCapaÊý×éÖÐÓÐЧµÄ³ÉÔ±¸öÊý*/

-    BYTE                                         bResult;/* 0 ʧ°Ü 1 ³É¹¦ */

-    DWORD                                        dwReason;    /* ʧ°ÜÔ­Òò */

-

-    T_zApMmia_PbSetCapa                       tPbSetCapa[Z_APMMIA_PB_CAPA_MAX_NUM];

-}T_zApMmia_ZcpbqSet_Cnf,T_zApMmia_PbReadCapacity_Cnf;

-

-/**************************************************************************

- Ô­ÓZ_APMMIA_ZcpbqQueryCnf_Ev(MMIA->ATI)

-                 Z_APMMIA_PbReadSetNumCnf_Ev(STM->MMIA)

- ¹¦ÄÜ£º»Ø¸´µç»°±¾¼¯ºÏÊýÄ¿

- ¶ÔÓ¦ATÃüÁ+ZCPBQ?

-**************************************************************************/

-typedef struct {

-    BYTE                                         bSrcIndex;

-    BYTE                                         bDesIndex;

-    BYTE                                         bSetNum;  /* µç»°±¾¼¯ºÏÊýÄ¿*/

-    BYTE                                         bResult;/* 0 ʧ°Ü 1 ³É¹¦ */

-    DWORD                                        dwReason;    /* ʧ°ÜÔ­Òò */

-}T_zApMmia_ZcpbqQuery_Cnf,T_zApMmia_PbReadSetNum_Cnf;

-

-/**************************************************************************

- Ô­ÓZ_APMMIA_ZeerReadCnf_Ev(MMIA->ATI)

-                 Z_APMMIA_PbReadLastExtErrCnf_Ev(STM->MMIA)

- ¹¦ÄÜ£º²éѯ×î½üÒ»´ÎPB´æ´¢²Ù×÷´íÎó¶ÔÓ¦µÄÀ©Õ¹´íÎóÂë

- ¶ÔÓ¦ATÃüÁ+ZEER?

-**************************************************************************/

-typedef struct {

-    BYTE                                         bSrcIndex;

-    BYTE                                         bDesIndex;

-    BYTE                                         bExtErr;  /* 

-                                                                                                    * ×î½üPB´æ´¢²Ù×÷´íÎó¶ÔÓ¦µÄÀ©Õ¹´íÎóÂë

-                                                                                                    * Z_APMMIA_PB_EXTERR_EXT_FULL      

-                                                                                                    * Z_APMMIA_PB_EXTERR_ANR_FULL      

-                                                                                                    * Z_APMMIA_PB_EXTERR_SNE_FULL      

-                                                                                                    * Z_APMMIA_PB_EXTERR_EMAIL_FULL    

-                                                                                                    * Z_APMMIA_PB_EXTERR_GRP_FULL      

-                                                                                                    */

-    BYTE                                         bPadding;

-}T_zApMmia_ZeerRead_Cnf,T_zApMmia_PbReadLastExtErr_Cnf;

-/**************************************************************************

- Ô­ÓZ_APMMIA_SCpbwSetReq_Ev(ATI->MMIA)(Z_APMMIA_Common_Cnf»Ø¸´)

-  Ô­ÓZ_APMMIA_SCpbrSetCnf_Ev(MMIA->ATI)

-   Ô­ÓZ_APMMIA_PbSEditReq_Ev(MMIA->PB)

-    Ô­ÓZ_APMMIA_PbSFindIndexCnf_Ev (PB->MMIA)

- ¹¦ÄÜ£º±£´æ´æºÅÂë

-       ·µ»Ø°´¼Ç¼²éѯµÄ½á¹û

-       Ôö¼Ó»òɾ³ý¼Ç¼(Ö¸¶¨´æ´¢Æ÷)

-       Áоٵ绰±¾¼Ç¼

- ¶ÔÓ¦ATÃüÁ+SCPBW,+SCPBR

-**************************************************************************/

-typedef struct {

-    BYTE                                         bSrcIndex;

-    BYTE                                         bDesIndex;    

-    WORD                                         wIndex;            /* ×îС´Ó0¿ªÊ¼ */

-

-    BITS                                         bIndexFg:1;         /* ָʾwIndexÓÐЧÐÔ*/

-    BITS                                         bNum1Fg:1;         /* ָʾbNum1ÓÐЧÐÔ£¬È¡Öµ0ÎÞЧ£¬1ÓÐЧ  */

-    BITS                                         bNum2Fg:1;         /* ָʾbNum2ÓÐЧÐÔ  ȡֵ0ÎÞЧ£¬1ÓÐЧ */

-    BITS                                         bNum3Fg:1;         /* ָʾbNum3ÓÐЧÐÔ  ȡֵ0ÎÞЧ£¬1ÓÐЧ */

-    BITS                                         bNum4Fg:1;         /* ָʾbNum4ÓÐЧÐÔ  ȡֵ0ÎÞЧ£¬1ÓÐЧ */

-    BITS                                         bTextFg:1;         /* ָʾtTextÓÐЧÐÔ È¡Öµ0ÎÞЧ£¬1ÓÐЧ */

-    BITS                                         bEmailFg:1;        /* ָʾEmailÓÐЧÐÔ È¡Öµ0ÎÞЧ£¬1ÓÐЧ */

-    BITS                                         bSneFg:1;          /* ָʾtSneÓÐЧÐÔ È¡Öµ0ÎÞЧ£¬1ÓÐЧ */

-    BYTE                                         bCmdFlg;  /* 

-                                                                                                    * ȡֵ·¶Î§:

-                                                                                                    * Z_APMMIA_CHINA_MOBILE_CMD

-                                                                                                    * Z_APMMIA_ZTE_OWN_CMD

-                                                                                                    */

-

-    BYTE                                         abPadding[2];

-

-    T_z_CallNum                               tNum1;              /* ×Ö·û´®ÀàÐÍ£¬Òƶ¯µç»°ºÅÂ룬²»´óÓÚ32×Ö½Ú£»

-                                                                       È¡ºêZ_APMMIA_ScallNum_MaxLen */

-    T_z_CallNum                               tNum2;              /* <num2>£º×Ö·û´®ÀàÐÍ£¬°ì¹«µç»°ºÅÂ룬²»´óÓÚ32×Ö½Ú£»

-                                                                        È¡ºêZ_APMMIA_ScallNum_MaxLen */

-    T_z_CallNum                               tNum3;              /* <num3>£º×Ö·û´®ÀàÐÍ£¬×¡Õ¬µç»°ºÅÂ룬²»´óÓÚ32×Ö½Ú£»

-                                                                        È¡ºêZ_APMMIA_ScallNum_MaxLen */

-    T_z_CallNum                               tNum4;              /* <num4>£º×Ö·û´®ÀàÐÍ£¬FAXºÅÂ룬²»´óÓÚ32×Ö½Ú£»

-                                                                        È¡ºêZ_APMMIA_ScallNum_MaxLen */

-    T_zApMmia_PhoneText                       tText;             /* <text>£º×Ö·û´®ÀàÐÍ£¬±íʾÐÕÃû¡£ */

-    T_zApMmia_Email                              tEmail;            /* <email>£º×Ö·û´®ÀàÐÍ£¬±íʾemailµØÖ·¡£

-                                                                        Ŀǰ£¬¸Ã×Ö¶ÎÖ»ÔÚ´æ´¢½éÖÊΪUSIM¿¨Ê±ÓÐЧ£¬ÇÒ²»´óÓÚ64×Ö½Ú¡£

-                                                                        È¡ºêZ_APMMIA_EMAIL_MaxLen */

-    T_zApMmia_Sne                             tSne;  /* ±íʾµÚ¶þÃû³Æ*/

-} 

-T_zApMmia_SCpbwSet_Req,T_zApMmia_SCpbrSet_Cnf,T_zApMmia_PbSEdit_Req,T_zApMmia_PbSFindIndex_Cnf;

-/****************************************************************************

-  Ô­Óï: Z_APMMIA_SmsTcomListCnf_Ev(MMIA->ATI)

-  ¹¦ÄÜ:ÁоÙÏûÏ¢µÄSMS-COMMANDÏìÓ¦£»

-  ¶ÔÓ¦ATÃüÁî:Îı¾Ä£Ê½µÄ+CMGLµÄSMS-COMMAND×îÖÕ½á¹ûÂë¡£

- ***************************************************************************/

-typedef struct 

-{

-    BYTE                                         bSrcIndex;

-    BYTE                                         bDestIndex;

-    BYTE                                         bMsgStatVal;   /* ÏûϢ״̬,PDUģʽÏÂΪÊýÖµ£¬Îı¾Ä£Ê½ÏÂΪ´®±íʾ¡£*/  

-    BYTE                                         bTpCommandType;  /* 

-                                                                  * ÃüÁîÀàÐÍ£¬TP-CT.

-                                                                  * 00000000 ²éÑ¯Ç°ÃæÌá½»µÄÏà¹ØµÄSM

-                                                                  * 00000001 È¡ÏûÇ°ÃæÌá½»µÄÏà¹ØµÄSMµÄ״̬±¨¸æÇëÇó 

-                                                                  * 00000010 ɾ³ýÇ°ÃæÌá½»µÄÏà¹ØµÄSM

-                                                                  * 00000011 ¼¤»îÇ°ÃæÌá½»µÄÏà¹ØµÄSMµÄ״̬±¨¸æÇëÇó

-                                                                  * 00000100..00011111 ±£Áô

-                                                                  * 11100000..11111111 Values specific for each SC

-                                                                  */

-

-    WORD                                        wIndex;        /* ´æ´¢Î»ÖÃÐòºÅ.*/  

-    BYTE                                         bStatChgFlg;   /*  Z_APMMIA_STATCHANGE_ENABLE

-                                                                 *  Z_APMMIA_STATCHANGE_DISABLE

-                                                                 */

-    BYTE                                         bPadding;

-

-    WORD                                         wTotalNum; /* ×ܵÄÏûÏ¢ÌõÊý */

-    WORD                                         wCurNum;   /* µ±Ç°µÄÏûÏ¢ÌõÊý */

-

-    T_zApMmia_TpFo                            tTpFirstOctet; /* TPDU²ÎÊýµÄµÚÒ»¸ö×Ö½Ú¡£ÉèÖÃÁËÏûÏ¢ÀàÐͼ°Ò»Ð©²ÎÊýָʾ¡£*/

-}T_zApMmia_SmsTcomList_Cnf, T_zApMmia_SmsTcomListRlt;

-

-/****************************************************************************

-  Ô­Óï:Z_APMMIA_Cbs_TcbmListCnf_Ev(MMIA->ATI)

-  ¹¦ÄÜ:ÁоÙÏûÏ¢µÄCBSÏìÓ¦£»

-  ¶ÔÓ¦ATÃüÁî:Îı¾Ä£Ê½µÄ+CMGLµÄCBM×îÖÕ½á¹ûÂë¡£

- ***************************************************************************/

-typedef struct {

-    BYTE                                        bSrcIndex;

-    BYTE                                        bDesIndex;

-

-    BYTE                                        bListEndFg;      /*1 ±íʾÁоٽáÊø*/

-    BYTE                                        bMsgStatVal;

-

-    WORD                                        wIndex;         /*´æ´¢Æ÷ÖеÄλÖÃ*/ 

-    WORD                                        wMid;           /*µ±Ç°Éϱ¨ÏûÏ¢µÄMessageId*/

-

-    WORD                                        wSn;            /*µ±Ç°Éϱ¨ÏûÏ¢µÄSerrialNumber*/    

-    BYTE                                        bCurPage;       /*µ±Ç°Ò³*/

-    BYTE                                        bTotalPage;     /*×ÜÒ³Êý*/

-            

-    BYTE                                        bDcs;           /*µ±Ç°ÏûϢʹÓõÄDCS*/

-    BYTE                                        bMsgLen;        /*TEXTÒ³ÖÐʵ¼ÊÊý¾Ý³¤¶È£¬²»º¬ÏûϢͷ³¤¶È*/    

-    BYTE                                        bStatChgFlg;   /*  Z_APMMIA_STATCHANGE_ENABLE

-                                                                 *  Z_APMMIA_STATCHANGE_DISABLE

-                                                                 */

-

-    BYTE                                        bPadding1;

-

-    BYTE                                        abBuf[Z_APMMIA_CBS_MAX_TEXT_PAGE_LEN]; /*CBS TEXTÏûÏ¢Ò³£¬ÎÞÏûϢͷ*/

-    BYTE                                        abPadding2[2];

-}T_zApMmia_Cbs_TcbmList_Cnf, T_zApMmia_Cbs_TcbmListRlt;  

-

-/****************************************************************************

-  Ô­Óï:Z_APMMIA_Cbs_PcbmListCnf_Ev(MMIA->ATI)

-  ¹¦ÄÜ:ÁоÙÏûÏ¢µÄCBSÏìÓ¦£»

-  ¶ÔÓ¦ATÃüÁî:PDUģʽµÄ+CMGLµÄCBM×îÖÕ½á¹ûÂë¡£

- ***************************************************************************/

-typedef struct {

-    BYTE                                        bSrcIndex;

-    BYTE                                        bDesIndex;

-

-    BYTE                                        bListEndFg;      /*1 ±íʾÁоٽáÊø*/

-    BYTE                                        bMsgStatVal;

-

-    WORD                                        wIndex;         /*´æ´¢Æ÷ÖеÄλÖÃ*/  

-    BYTE                                        bMsgLen;        /*PDUÒ³ÖÐʵ¼ÊÊý¾Ý³¤¶È£¬º¬ÏûϢͷ³¤¶È*/

-    BYTE                                         bStatChgFlg;   /*  Z_APMMIA_STATCHANGE_ENABLE

-                                                                 *  Z_APMMIA_STATCHANGE_DISABLE

-                                                                 */

-  

-    BYTE                                        abBuf[Z_APMMIA_CBS_MAX_PDU_PAGE_LEN]; /*CBS PDUÏûÏ¢Ò³£¬º¬ÏûϢͷ£¬¾ßÌåÄÚÈݼû×¢ÊͲ¿·Ö*/

-}T_zApMmia_Cbs_PcbmList_Cnf, T_zApMmia_Cbs_PcbmListRlt;

-

-/****************************************************************************

-  Ô­Óï:Z_APMMIA_CpmsTestCnf_Ev(MMIA->ATI)

-       Z_APMMIA_PbPrefMsgStoTestCnf_Ev(PB->MMIA)

-  ¹¦ÄÜ:ÏûÏ¢Ê×Ñ¡´æ´¢Æ÷²âÊÔÃüÁîµÄÏìÓ¦£»

-  ¶ÔÓ¦ATÃüÁî:+CPMS²âÊÔÃüÁîµÄ×îÖÕ½á¹ûÂë¡£

- ***************************************************************************/

-typedef struct {

-    BYTE                                         bSrcIndex;

-    BYTE                                         bDesIndex;

-    BYTE                                         abPadding1[2];

-    

-    BYTE                                         abListMem1[Z_APMMIA_SMSMEM_MAX_RANGE];

-    BYTE                                         bMem1Num;     /* mem1Ö§³ÖµÄSMS´æ´¢Æ÷¸öÊý */

-    BYTE                                         bPadding2;

-    

-    BYTE                                         abListMem2[Z_APMMIA_SMSMEM_MAX_RANGE];

-    BYTE                                         bMem2Num;     /* mem2Ö§³ÖµÄSMS´æ´¢Æ÷¸öÊý */

-    BYTE                                         bPadding3;

-

-    BYTE                                         abListMem3[Z_APMMIA_SMSMEM_MAX_RANGE];

-    BYTE                                         bMem3Num;     /* mem3Ö§³ÖµÄSMS´æ´¢Æ÷¸öÊý */

-    BYTE                                         bPadding4;

-}T_zApMmia_CpmsTest_Cnf,T_zApMmia_PbPrefMsgStoTest_Cnf;

-/**************************************************************************** 

-  Ô­Óï:Z_APMMIA_CommonCnf_Ev (MMIA->ATI)

-  ¹¦ÄÜ:²éѯºÍÉèÖÃÃüÁîµÄÇëÇóºÍ»Ø¸´

-  ¶ÔÓ¦ATÃüÁî:ËùÓÐATÃüÁîÖ´ÐеĽá¹û£¬ok/error /cer£º+error: ËùÓÐATÃüÁîµÄ½á¹û£¬Ð¯´øÔ­ÒòʱÒÔCEERÉϱ¨

- ****************************************************************************/

-typedef struct

-{

-    BYTE                                         bSrcIndex;          /* The source index 

-                                                                      * ¸ßËÄλΪԴģ¿éºÅ,ȡֵ¼ûºê¶¨Òå,

-                                                                      * µÍËÄλΪÓëÄ£¿éºÅ¶ÔÓ¦µÄÔ´Ë÷ÒýºÅ

-                                                                      * ÒÔÏ´Ómmiaµ½ati½Ó¿ÚbDesIndexÓë´Ëͬ */

-    BYTE                                         bDesIndex;          /* The destination index*/

-    BYTE                                         bResult;            /* ATÃüÁî½á¹û Z_APMMIA_OPERATION_SUCCESS/Z_APMMIA_OPERATION_FAILURE*/

-    BYTE                                         bPadding;           /* The operator type, refer to the Interface */

-                                                 

-    DWORD                                        dwCause;            /* bResult = Z_APMMIA_OPERATION_FAILUREÓÐЧ*/

-}T_zApMmia_Common_Cnf, T_zApMmia_CmglCommonRlt;

-

-/****************************************************************************

-Ô­Óï:Z_APMMIA_SmsZmenaReq_Ev(ATI->MMIA) (ÏìÓ¦ Z_APMMIA_CommonCnf_Ev)

-     Z_APMMIA_PbMemCapaReq_Ev(MMIA->PB) (ÏìÓ¦ Z_APMMIA_PbCommonCnf_Ev)

-¹¦ÄÜ:Éϲ㷢ËÍÏÂÀ´µÄSMS´æ´¢ÄÜÁ¦Í¨Öª

-¶ÔÓ¦ATÃüÁ+ZMENA=<avail>

- ***************************************************************************/

-typedef struct 

-{

-    BYTE                                         bSrcIndex;

-    BYTE                                         bDesIndex;      

-    BYTE                                         bavail;        /* 

-                                                                 * SMS´æ´¢ÄÜÁ¦£º²»Âú/Âú

-                                                                 * Z_APMMIA_SMSMEM_FREE/

-                                                                 * Z_APMMIA_SMSMEM_FULL 

-                                                                 */

-    BYTE                                         bMemType;   /*0:SM  1:ME*/

-}T_zApMmia_SmsZmena_Req,T_zApMmia_PbMemCapa_Req;

-

-/**************************************************************************** 

-  Ô­Óï:Z_APMMIA_UiccOkInd_Ev , Z_APMMIA_PbUiccOkInd_Ev

-  ¹¦ÄÜ:ÔÚÓ¦ÓÃÍê³É³õʼ»¯ºó£¬¸øÆ½Ì¨Éϱ¨½á¹û¡£

-  ¶ÔÓ¦ATÃüÁî:

- ****************************************************************************/

-typedef struct {

-    BYTE                                         bSrcIndex;   /*ÏûÏ¢Ô´Ë÷Òý*/

-    BYTE                                         bDesIndex;   /*ÏûϢĿµÄË÷Òý*/

-    BYTE                                         bApplMode;   /*ËùÑ¡ÖеÄÖÆÊ½

-                                                                       * 1£ºUSIMÖÆÊ½

-                                                                  * 2£ºSIMÖÆÊ½

-                                                                  */

-    BYTE                                         bPadding;

-

-    DWORD                                        dwInitResult;   /*

-                                                                * ¿¨³õʼ»¯×´Ì¬

-                                                                * 30  ¿¨ÍêÈ«¿ÉÓÃ

-                                                                * 31  ¿¨»ù±¾¿ÉÓÃ

-                                                                *    ˵Ã÷5ÌõºóµÄÄÇЩÎļþ¶ÁÈ¡ÓдíÎ󣬵«ÉϲãÈÔÈ»¿ÉÒÔ×÷һЩ²Ù×÷

-                                                                * 15  ³õʼ»¯Ê§°Ü£¬Z_APMMIA_SIMWRONG_ERR

-                                                                * 10  Z_APMMIA_NOSIM_ERR

-                                                                */

-}T_zApMmia_UiccOk_Ind,T_zApMmia_PbUiccOk_Ind;

-

-/*²éѯ½á¹û*/

-typedef struct 

-{

-    BYTE                                        bResult;     /* 0 ʧ°Ü 1 ³É¹¦ 

-                                                              * ³É¹¦¼´±íÃ÷ºÅÂë¡¢Îı¾ÓÐЧ

-                                                              */

-    BYTE                                        bPadding[3];

-    DWORD                                       dwReason;   /* ʧ°ÜÔ­Òò */

-

-    T_z_CallNum                               tNum;

-    T_zApMmia_PhoneText                      tText;

-} T_zApMmia_QryPhoneResult;

-

-/*ÇëÇóÁоٵ绰±¾¼Ç¼,*/

-typedef struct 

-{

-    BYTE                                        bMemFlg;    /* ָʾÊÇ·ñΪDÃüÁî´øÏµÄmem£¬ÈôÓÐЧÔò²Ù×÷´Ë´æ´¢Æ÷

-                                                                0 - bMemÎÞЧ  / 1 - bMemÓÐЧ */

-    BYTE                                        bMem;       /* ȡֵͬT_zApMmia_CcSetup_Req µÄMem */     

-    WORD                                        wIndex;     /* ×îС´Ó1¿ªÊ¼ */

-} T_zApMmia_PbFindIndex;

-

-/* ºÅÂëÀàÐÍ£¬PBÅжϺÅÂëµÄ½á¹û */

-typedef struct 

-{

-    BYTE                                  bNumType;   /* ºÅÂëÀàÐÍ,ȡֵÈçÏ£º

-                                                        Z_APMMIA_NUMTYPE_UNALLOWCALL_BDN 

-                                                        Z_APMMIA_NUMTYPE_UNALLOWCALL_FDN 

-                                                        Z_APMMIA_NUMTYPE_ECCCALL 

-                                                        Z_APMMIA_NUMTYPE_NORMCALL

-                                                        Z_APMMIA_NUMTYPE_UNKNOWN */

-    BYTE                                  bSrvCateg;   /* ½ô¼±ºÅÂëÀàÐÍ, bNumType = Z_APMMIA_NUMTYPE_ECCCALLʱÓÐЧ

-                                                        Bit 1   Police

-                                                        Bit 2   Ambulance

-                                                        Bit 3   Fire Brigade

-                                                        Bit 4   Marine Guard

-                                                        Bit 5   Mountain Rescue

-                                                        Bits 6,7,8 are spare and set to "0"

-                                                        24008 10.5.4.33  £¬Mobile station may set one or more bits to "1"

-                                                        Èç¹û²»´æÔÚÔòÌî0

-                                                       */

-    BYTE                                  abPadding[2];

-}T_zApMmia_NumType; 

-

-/****************************************************************************

-  Ô­Óï:Z_APMMIA_PbEmerNumListInd_Ev(MMIA->PB)

-  ¹¦ÄÜ:ͨ¸æPB½ô¼±ºÅÂëÁбí

-  ¶ÔÓ¦ATÃüÁî:ÎÞ

- ***************************************************************************/

-typedef struct{

-    BYTE                            bSrvCategFg;  /* ±íʾbSrvCategÊÇ·ñÓÐЧ£¬

-                                                     Z_APMMIA_INVALID   ÎÞЧ£¬Z_APMMIA_VALID  ÓÐЧ

-                                                   */

-    BYTE                            bSrvCateg;

-    BYTE                            bNumLen;    

-    BYTE                            bPadding;    

-    BYTE                            abNum[Z_APMMIA_ECC_MAXNUM];

-}T_zApMmia_EmerNum;

-

-typedef struct 

-{

-    BYTE                            bNocardEccNumLen;   /*ÎÞ¿¨½ô¼±ºÅÂë¸öÊý*/

-    BYTE                            bWithcardEccNumLen; /*Óп¨½ô¼±ºÅÂë¸öÊý*/

-    T_z_PlmnId                      tPlmnId;

-    BYTE                            abPadding[3];

-    T_zApMmia_EmerNum               atNocardEccNum[Z_APMMIA_ECCNUM_NOCARD];  

-                                    /* ÎÞ¿¨½ô¼±ºÅÂëÁбí:  000, 08, 112, 110, 118, 119, 911 and 999*/

-    T_zApMmia_EmerNum               atWithcardEccNum[Z_APMMIA_ECCNUM_CARD];

-                                    /* Óп¨½ô¼±ºÅÂëÁбí,°´´Ë˳Ðò:Íø²àºÅÂ룬NVºÅÂ룬£¨112, 911£©*/

-}T_zApMmia_PbEmerNumList_Ind;

-/**************************************************************

-  ¹¦ÄÜ:ATI»ñÈ¡½ô¼±ºÅÂëÁбí

-  ¶ÔÓ¦ATÃüÁî:+CEN

-**************************************************************/

-typedef struct 

-{

-    BYTE                            bEccNumLen;   /*½ô¼±ºÅÂë¸öÊý*/

-    T_z_PlmnId                      tPlmnId;

-    T_zApMmia_EmerNum               atEccNum[Z_APMMIA_ECCNUM_MAX];

-}T_zApMmia_EmerNumList; 

-/* ¶Ôlistsm_cnf½âÎöµÄ½á¹û */

-typedef struct {

-    BYTE                                        bTypeofRlt;       

-    /* ¶ÌÐÅÀàÐÍ ,ȡֵ,ÓÃÀ´Ö¸Ê¾Áª¹²ÓÃÌåÖеĶÌÐÅÀàÐÍ

-    Z_APMMIA_CMGLRLT_PSMS 

-    Z_APMMIA_CMGLRLT_TDEL 

-    Z_APMMIA_CMGLRLT_TSUB 

-    Z_APMMIA_CMGLRLT_TSR  

-    Z_APMMIA_CMGLRLT_TCOM 

-    Z_APMMIA_CMGLRLT_TCBM 

-    Z_APMMIA_CMGLRLT_PCBM 

-    Z_APMMIA_CMGLRLT_COMM */

-    BYTE                                        abPadding[3];

-

-    union{

-    T_zApMmia_SmsPcmglRlt        tPcmglRlt;

-    T_zApMmia_SmsTdeliListRlt    tTdeliListRlt;

-    T_zApMmia_SmsTsubListRlt     tTsubListRlt;

-    T_zApMmia_SmsTstatListRlt    tTstatListRlt;

-    T_zApMmia_SmsTcomListRlt     tTcomListRlt;

-    T_zApMmia_Cbs_TcbmListRlt    tTcbmListRlt;

-    T_zApMmia_Cbs_PcbmListRlt    tPcbmListRlt;

-    T_zApMmia_CmglCommonRlt      tCmglCommonRlt;

-    }uSmsContent;

-}T_zApMmia_SmsMsgContent;

-

-/*==============================================================================

- Ô­ÓMMIA_SMS_SUBMIT_SEND_REQ_EV(MMIA->SMS)

- ˵Ã÷: MOÊÂÎñʱ£¬·¢ËÍSMS_SUBMITÏûÏ¢

-==============================================================================*/

-typedef struct 

-{   

-    BYTE                            bSrcIndex;

-    BYTE                            bDestIndex;

-

-    BYTE                            bSmsService;            /* SMSÒµÎñ·¾¶.ȡֵ¼ûºê¶¨Òå */

-    BYTE                            bLinkStatus;            /* Á´Â·×´Ì¬Öµ.ȡֵ¼ûºê¶¨Òå */

-

-    BYTE                            bMsgSendType;           /* ÏûÏ¢·¢ËÍÀàÐÍ. ȡֵ¼ûºê¶¨Òå*/

-    BYTE                            bTpMsgRef;              /* TPDUÏûÏ¢²Î¿¼ÖµTP-MR */

-    WORD                            wIndex;                 /* PDU´æ´¢Î»ÖÃË÷ÒýºÅ,µ±bMsgSendTypeΪ´æ´¢·¢ËÍʱÓÐЧ */

-    

-    BYTE                            bMem;                   /* SMS´æ´¢Æ÷Ãû³Æ£¬µ±bMsgSendTypeΪ´æ´¢·¢ËÍʱÓÐЧ*/

-    BYTE                            bPduLength;             /* PDUµÄ×Ö½Ú³¤¶È,ȡֵ(0-176B).*/

-    BYTE                            bIsEwalk;               /* 

-                                                                                                     * ȡֵ·¶Î§£º

-                                                                                                     * ZPS_VALID£º±íÊ¾ËæeÐа汾

-                                                                                                     * ZPS_INVALID£º±íʾ·ÇËæeÐа汾

-                                                                                                     */

-    BYTE                            bPadding;

-

-    BYTE                            abPduBuffer[Z_MMIASMS_MAX_PDU_LEN];

-                                                            /* ÓÉtTpSCAddrÓò+TPDU(SMS-SUBMIT)Óò×é³ÉµÄPDUÊý¾Ý¡£*/

-}T_zMmiaSms_SubmitSend_Req;  

-

-/*==============================================================================

- Ô­ÓMMIA_SMS_COMMAND_SEND_REQ_EV(MMIA->SMS)

- ˵Ã÷: MOÊÂÎñʱ£¬·¢ËÍSMS_COMMANDÏûÏ¢

-==============================================================================*/

-typedef struct 

-{

-    BYTE                            bSrcIndex;

-    BYTE                            bDestIndex;

-

-    BYTE                            bSmsService;           /* SMSÒµÎñ·¾¶.*/   

-    BYTE                            bLinkStatus;   

-

-    BYTE                            bMsgSendType;           

-    BYTE                            bTpMsgRef; 

-    WORD                            wIndex;                 /* PDU´æ´¢Î»ÖÃË÷ÒýºÅ,µ±bMsgSendTypeΪ´æ´¢·¢ËÍʱÓÐЧ */

-    

-    BYTE                            bMem;                   /* SMS´æ´¢Æ÷Ãû³Æ£¬µ±bMsgSendTypeΪ´æ´¢·¢ËÍʱÓÐЧ*/

-    BYTE                            bPduLength;             /* PDUµÄ×Ö½Ú³¤¶È,ȡֵ(0-176B).*/

-    BYTE                            bIsEwalk;               /* 

-                                                                                                     * ȡֵ·¶Î§£º

-                                                                                                     * ZPS_VALID£º±íÊ¾ËæeÐа汾

-                                                                                                     * ZPS_INVALID£º±íʾ·ÇËæeÐа汾

-                                                                                                     */

-    BYTE                            bPadding;

-

-    BYTE                            abPduBuffer[Z_MMIASMS_MAX_PDU_LEN];

-                                                            /* ÓÉtTpSCAddrÓò+TPDU(SMS-COMMAND)Óò×é³ÉµÄPDUÊý¾Ý¡£*/

-}T_zMmiaSms_CommandSend_Req;  

-

-/*==============================================================================

- Ô­ÓMMIA_SMS_MSG_SEND_CNF_EV(SMS->MMIA)

- ˵Ã÷: MOÊÂÎñʱ£¬½ÓÊÕµ½µÄÍøÂçµÄÏìÓ¦±¨¸æ£¬»òSMS×ÔÉí²úÉúµÄ´íÎ󱨸æ

-==============================================================================*/

-typedef struct 

-{   

-    BYTE                            bSrcIndex;

-    BYTE                            bDestIndex;

-

-    BYTE                            bMsgCnfType;           /* ÏûÏ¢»Ø¸´ÀàÐÍ¡£È¡Öµ¼ûºê¶¨Òå */

-    BYTE                            bTpMsgRef;              

-

-    BYTE                            bStatrptReqFlg;        /* ״̬±¨¸æÇëÇó±êÖ¾£¬µ±bMsgCnfTypeΪ´æ´¢·¢ËÍʱÓÐЧ*/ 

-    BYTE                            bMem;                  /* SMS´æ´¢Æ÷Ãû³Æ£¬µ±bMsgCnfTypeΪ´æ´¢·¢ËÍʱÓÐЧ*/

-    WORD                            wIndex;                /* PDU´æ´¢Î»ÖÃË÷ÒýºÅ,µ±bMsgCnfTypeΪ´æ´¢·¢ËÍʱÓÐЧ */  

-    BYTE                            bResult;               /* ·µ»ØµÄ½á¹û¡£È¡Öµ¼ûºê¶¨Òå */ 

-    BYTE                            bTpduLength;           /* TPDUµÄ×Ö½Ú³¤¶È,ȡֵ(0-164B).*/

-    BYTE                            abPadding[2];

-

-    DWORD                           dwCause;               /* RP²ãµÄ´íÎóÔ­Òò¡£*/

-

-    BYTE                            abTPduBuffer[Z_MMIASMS_MAX_TPDU_LEN];

-                                                            /* À´×ÔÍøÂçµÄÏìÓ¦±¨¸æµÄSubmit _Report _TPDU for RP-ACK/RP-ERROR. Êý¾Ý.*/

-}T_zMmiaSms_MsgSend_Cnf;  

-

-/*==============================================================================

- Ô­ÓMMIA_SMS_DELIVER_REC_IND_EV(SMS->MMIA )

- ˵Ã÷: MTÊÂÎñʱ£¬ÊÕµ½µÄÍøÂçÀ´µÄSMS_DELIVERÏûÏ¢

-==============================================================================*/

-typedef struct 

-{

-    BYTE                            bSrcIndex;

-    BYTE                            bDestIndex;

-

-    BYTE                            bRouteInd;            /* ¶ÌÏûϢ·ÓÉָʾ¡£È¡Öµ¼ûºê¶¨Òå */

-    BYTE                            bStoreInd;            /* ´æ´¢·½Ê½Ö¸Ê¾¡£ÔÚbRouteIndΪ´æ´¢Ê±ÓÐЧ¡£È¡Öµ¼ûºê¶¨Òå */

-

-    BYTE                            bPduLength;           /* PDUµÄ×Ö½Ú³¤¶È,ȡֵ(0-176B).*/

-    BYTE                            abPadding[3];

-

-    BYTE                            abPduBuffer[Z_MMIASMS_MAX_PDU_LEN];

-                                                          /* ÓÉtTpSCAddrÓò+TPDU(SMS-DELIVER)Óò×é³ÉµÄPDUÊý¾Ý¡£*/

-}T_zMmiaSms_DeliverRec_Ind;  

-

-/*==============================================================================

- Ô­ÓMMIA_SMS_STATUS_REC_IND_EV(SMS->MMIA)

- ˵Ã÷: MTÊÂÎñʱ£¬ÊÕµ½µÄÍøÂçÀ´µÄSMS_STATUS_REPORTÏûÏ¢

-==============================================================================*/

-typedef struct 

-{

-    BYTE                            bSrcIndex;

-    BYTE                            bDestIndex;

-

-    BYTE                            bRouteInd;             /* ¶ÌÏûϢ·ÓÉָʾ¡£*/

-    BYTE                            bPduLength;            /* TPDUµÄ×Ö½Ú³¤¶È,ȡֵ(0-176B).*/

-

-    BYTE                            abPduBuffer[Z_MMIASMS_MAX_PDU_LEN];

-                                                           /* ÓÉtTpSCAddrÓò+TPDU(SMS-STATUS-REPORT)Óò×é³ÉµÄPDUÊý¾Ý¡£*/

-}T_zMmiaSms_StatusRec_Ind;  

-

-/*==============================================================================

- Ô­ÓMMIA_SMS_REC_RSP_REQ_EV(MMIA->SMS)

- ˵Ã÷: MTÊÂÎñʱ£¬ÉϲãÏòÍøÂç»Ø¸´µÄÏìÓ¦±¨¸æ

-==============================================================================*/

-typedef struct 

-{

-    BYTE                            bSrcIndex;

-    BYTE                            bDestIndex;

-

-    BYTE                            bAckMode;                 /* ÏìÓ¦±¨¸æsms-deliver-reportµÄ½á¹û¡£È¡Öµ¼ûºê¶¨Òå */

-    BYTE                            bTpduLength;              /* TPDUµÄ×Ö½Ú³¤¶È,ȡֵ(0-164B).*/

-

-    BYTE                            abTPduBuffer[Z_MMIASMS_MAX_TPDU_LEN];

-                                                              /* ÏòÍøÂç»Ø¸´µÄÏìÓ¦±¨¸æDeliver_Report TPDU for RP-ACK/ERRORÊý¾Ý.*/

-}T_zMmiaSms_RecRsp_Req;  

-

-/*==============================================================================

- Ô­ÓMMIA_SMS_REC_RSP_CNF_EV(SMS->MMIA)

-             MMIA_SMS_MEM_AVAIL_CNF_EV(SMS->MMIA)

-            MMIA_SMS_COMMON_CNF_EV(SMS->MMIA)

- ˵Ã÷: MTÊÂÎñʱ£¬ÉϲãµÄÏìÓ¦±¨¸æµÄ»Ø¸´

-           MOͨ¸æ¹ý³Ì½áÊøºóÏòÉÏ²ã»Ø¸´µÄÏûÏ¢

-           ¿ÉÓÃÓÚ·ÉÐÐģʽÏ£¬ÏòÉÏ²ã»Ø¸´ÏûÏ¢

-==============================================================================*/

-typedef struct 

-{

-    BYTE                            bSrcIndex;

-    BYTE                            bDestIndex;

-

-    BYTE                            bResult ;

-    BYTE                            bPadding;

-

-    DWORD                           dwCause;

-}T_zMmiaSms_RecRsp_Cnf,T_zMmiaSms_MemAvail_Cnf,T_zMmiaSms_Common_Cnf; 

-

-/*==============================================================================

- Ô­ÓMMIA_SMS_MMS_DISABLE_IND_EV(SMS->MMIA)

- ˵Ã÷: MOÊÂÎñʱ£¬ÓÃÓÚÏòMMIA±¨¸æMMSÁ´Â·²»¿ÉÓÃ

-==============================================================================*/

-typedef struct 

-{

-    BYTE                            bSrcIndex;

-    BYTE                            bDestIndex;

-    BYTE                            abPadding[2];

-}T_zMmiaSms_MmsDisable_Ind;  

-

-/*==============================================================================

- Ô­ÓMMIA_SMS_MEM_AVAIL_REQ_EV(MMIA->SMS)

- ˵Ã÷: MOÊÂÎñʱ£¬MMIAÇëÇóÏòÍøÂç·¢ËÍRP-SMMAÏûÏ¢

-==============================================================================*/

-typedef struct 

-{

-    BYTE                            bSrcIndex;

-    BYTE                            bDestIndex;

-

-    BYTE                            bSmsService; 

-    BYTE                            bLinkStatus; 

-

-    BYTE                            bNotifAbort;            /* µ±Ç°Í¨¸æÇëÇó״̬¡£È¡Öµ¼ûºê¶¨Òå */

-    BYTE                            bIsEwalk;               /* 

-                                                                                                     * ȡֵ·¶Î§£º

-                                                                                                     * ZPS_VALID£º±íÊ¾ËæeÐа汾

-                                                                                                     * ZPS_INVALID£º±íʾ·ÇËæeÐа汾

-                                                                                                     */

-    BYTE                            abPadding[2];

-}T_zMmiaSms_MemAvail_Req;  

-

-/*==============================================================================

- Ô­ÓMMIA_SMS_STORE_REPORT_REQ_EV(MMIA->SMS)

- ˵Ã÷: MTÊÂÎñʱ£¬MMIAÓÃÓÚÏòSMS±¨¸æMTÏûÏ¢´æ´¢ÏìÓ¦

-==============================================================================*/

-typedef struct 

-{

-    BYTE                            bSrcIndex;

-    BYTE                            bDestIndex;

-

-    BYTE                            bResult; 

-    BYTE                            bPadding;

-                    

-    DWORD                           dwTpCause;/* ´æ´¢Ê§°ÜʱµÄTP-FCS,¿ÉÓë´æ´¢²Ù×÷·µ»ØµÄATÃüÁîµÄ´íÎóÖµÓ³É䡣ȡֵ¼ûºê¶¨Òå */

-}T_zMmiaSms_StoRpt_Req;  

-

-/*==============================================================================

- Ô­ÓMMIA_SMS_ABORT_MO_REQ_EV(MMIA->SMS)

- ˵Ã÷: ÇëÇóÈ¡ÏûMOÏûÏ¢·¢ËÍ

-==============================================================================*/

-typedef struct 

-{

-    BYTE                                         bSrcIndex;

-    BYTE                                         bDestIndex;

-    BYTE                                         abPadding[2];

-}T_zMmiaSms_AbortMo_Req;

-

-typedef struct {

-    BYTE                        bChnl_id;          /* AT channel id */

-    BYTE                        bCallid;          

-    BYTE                        bDir;               /* ºô½Ð·½Ïò£¬¼ûºê¶¨Òå*/

-    BYTE                        bCcState;          /* ͬ+CLCC  */ 

-    

-    BYTE                        bCallMode;          /* ºô½Ðģʽ£¬¼ûºê¶¨Òå */

-    BYTE                        bMptystate;  /* 1:mptyºô½Ð£¬0: ·Çmptyºô½Ð */

-    BYTE                        bCallPriFg;

-    BYTE                        bCallPriority;      /* ºô½ÐÓÅÏȼ¶£¬¼ûºê¶¨Òå */

-

-    BYTE                        bNumFg;

-    BYTE                        bAlphaFg;

-    BYTE                        bNameFg;

-    BYTE                        bNameLen;

-

-    BYTE                        beCallFg;//ÊÇ·ñЯ´øecall²ÎÊý,0-no,1-yes

-    BYTE                        beCallType;//beCallFg = 1ÓÐЧ

-    WORD                        wT2Remain;//beCallFg = 1ÓÐЧ

-

-    T_z_CallNum                 tNum;         /* ¶Ô·½ºÅÂëÉÏÏÞ40*/

-    BYTE                        abName[Z_CC_STATE_NAME_MAX_LEN];

-}T_zMmiaCc_State_Info;

-

-typedef struct {

-    BYTE                        bSrcIndex;         /* Ô´Ë÷Òý */

-    BYTE                        bDesIndex;         /* Ä¿µÄË÷Òý */

-    BYTE                        bpadding;

-    BYTE                        bCallNum;

-    T_zMmiaCc_State_Info        tStateInfo[Z_MAXCALLNM];     /* Z_MAXCALLNM ȡֵΪ7 */

-}T_zMmiaCc_State_Req;

-

-

-/*==============================================================================

- Ô­ÓMMIA_CC_MOC_REQ_EV(MMIA->CC)

- ˵Ã÷: ºô½Ð½¨Á¢ÇëÇó

-==============================================================================*/

-typedef struct {

-    BYTE                        bSrcIndex;          /* Ô´Ë÷Òý */

-    BYTE                        bDesIndex;          /* Ä¿µÄË÷Òý */

-

-    BYTE                        bECallType;         /* Ò»°ãºô½Ð»ò½ô¼±ºô½Ð£¬¼ûºê¶¨Òå */ 

-    BYTE                        bECallCategory;     /* ½ô¼±ºÅÂëÀàÐÍ£¬´Ó¿¨ÖлñÈ¡µÄÖµ*/

-

-    BYTE                        bCallType;          /* ºô½ÐÀàÐÍ£¬¼ûºê¶¨Òå */

-    BYTE                        bCallMode;          /* ºô½Ðģʽ£¬¼ûºê¶¨Òå */ 

-

-/* CUG infomation */

-    BYTE                        bCugIdxFg;          /* cugÊÇ·ñ´æÔÚ±ê¼Çλ,Ŀǰ²»Ö§³Ö£¬mmiaÖ»ÄÜÌîдÎÞЧ

-                                                     * Z_VALID:ÏàÓ¦×Ö¶ÎÓÐЧ, Z_INVALID:ÏàÓ¦×Ö¶ÎÎÞЧ

-                                                     * ´Ëºó*FgÀàËÆ×Ö¶ÎÈçÎÞÌØÊâ˵Ã÷,´¦ÀíÓë´Ëͬ*/

-    BYTE                        bCugIdx;            /* ½öµ±bCugIdxFgΪ1ʱÓÐЧ  * 0~9: CUG Index£¬10 no index */

-    BYTE                        bCugInfo;           /* ½öµ±bCugIdxFgΪ1ʱÓÐЧ */

-    

-/*SS Flag*/

-    BYTE                        bClirInfo;            /* 1:ÆôÓÃCLIR £º

-                                                       *CLIR_SUBSCRIPTION

-                                                       * CLIR_INVOCATION

-                                                       * CLIR_SUPPRESSION ,²Î¼ûºê¶¨Òå   */

-    BYTE                        bCallIdFg;

-    BYTE                        bCallId;

-

-    T_z_CallNum                 tCalledNum;    

-    BYTE                        bReialFlag; // 0:²»ÊÇredial,  1: ÊÇredial·¢ÆðµÄºô½Ð

-    BYTE                        abReialPadding;

-

-    BYTE                        bPsdone; /*CECALL ¸Ãֵȡ0£¬ZECALL¸Ãֵȡ1*/

-    BYTE                        bMsdLen;

-    BYTE                        abMSD[MSD_MAX_LENGTH];

-}T_zMmiaCc_Moc_Req;

-

-/*==============================================================================

- Ô­ÓMMIA_CC_MOC_CNF_EV(CC->MMIA)

- ˵Ã÷: ºô½Ð½¨Á¢½á¹û

-==============================================================================*/

-typedef struct {

-    BYTE                        bSrcIndex;          /* Ô´Ë÷Òý */

-    BYTE                        bDesIndex;          /* Ä¿µÄË÷Òý */

-    BYTE                        bResult;            /* ºô½Ð½¨Á¢½á¹û£¬¼ûºê¶¨Ò壬¶ÔÓ¦apmmia½Ó¿Ú£ºT_Z_ApMmia_CcSetup_Cnf */

-    BYTE                        bServ;              /* +CR ²ÎÊý£¬¼ûºê¶¨Òå £¬È¡ÖµÓÐЧʱ£¨·Ç0xff£©£¬¶ÔÓ¦apmmia½Ó¿Ú£ºT_Z_ApMmia_Cr_Ind£¬

-                                                            *ÔÚ×îÖÕ½á¹ûÂëÉϱ¨Ç°¡¢È·¶¨ÁËspeedºÍservice qalityºó¾ÍÉϱ¨*/

-

-    BYTE                        bCalledNumFg;       /* µ±´Ë±êÖ¾ÓÐЧʱ£¬Éϱ¨T_Z_ApMmia_Colp_Ind£¬ÔÚCR»òDÃüÁî½á¹ûÂëǰÉϱ¨*/

-    BYTE                        bCalledSubAddrFg;

-    BYTE                        abPadding[2];

-    

-    WORD                        wCause;             /* ºô½Ðʧ°ÜÔ­Òò, result²»ÊÇOK/CONNECTʱ¶¼´ø */

-    BYTE                        bCallId;            /*  */

-    BYTE                        bCallType;          /* ËæeÐÐÉϱ¨Ê±µÄ²ÎÊý£¬¼ûºê¶¨Òå */

-

-    T_z_CallNum               tCalledNum;   

-    T_z_CallSubAddr           tCalledSubAddr;	

-}T_zMmiaCc_Moc_Cnf;

-

-/*==============================================================================

- Ô­ÓMMIA_CC_MTC_IND_EV(CC->MMIA)

- ˵Ã÷: ÊÕµ½ºô½Ð½¨Á¢Ö¸Ê¾

-==============================================================================*/

-typedef struct {

-    BYTE                        bSrcIndex;          /* Ô´Ë÷Òý */

-    BYTE                        bDesIndex;          /* Ä¿µÄË÷Òý */

-

-    BYTE                        bCwFg;              /* ºô½ÐµÈ´ý±êʶ£¬¼ûºê¶¨Ò壺Ϊһ°ãºô½Ðʱ£¬ÒÔCRCµÄÉèÖþö¶¨ÒÔring»ò+cringÉϱ¨À´µç£»

-                                                     * µ±Îªºô½ÐµÈ´ýʱ£¬ÈôccwaÉèÖÃÏÔʾʱ£¬ÒÔ+ccwaÉϱ¨£¬·ñÔòÒÔring»ò+cringÉϱ¨

-                                                                        *  ¶ÔÓ¦T_zApMmia_Ring_Ind/T_zApMmia_Cring_Ind/T_zApMmia_Ccwa_Ind  */

-    BYTE                        bCallType;          /* +CRINGÉϱ¨Ê±µÄ²ÎÊý£¬¼ûºê¶¨Òå */

-

-    BYTE                        bCallClass;         /* +CCWAÉϱ¨Ê±µÄ²ÎÊý£¬¼ûºê¶¨Òå */

-

-    BITS                        bCallingNumFg:1;     /* µ±´Ë±êÖ¾ÓÐЧʱ£¬Éϱ¨T_zApMmia_Colp_Ind£¬ÔÚCR»òDÃüÁî½á¹ûÂëǰÉϱ¨*/

-    BITS                        bCallingSubAddr:1;	

-    BITS                        bCalledNumFg:1;     

-    BITS                        bCalledSubAddr:1;

-    BITS                        bRedirNumFg:1;     

-    BITS                        bRedirSubAddr:1;

-    BITS                        bNoCliCauseFg:1;

-    BITS                        bPriorityFg:1;

-

-    BYTE                        bPriority;          /* ºô½ÐÓÅÏȼ¶ */

-    BYTE                        bNoCliCause;        /* Ö÷½ÐºÅÂë²»´æÔÚµÄÔ­Òò */

-

-    BYTE                        bCallId;            /*  */

-    BYTE                        abPadding[3];       /*  */

-    

-    T_z_CallNum               tCallingNum;        /* ÓÃÓÚccwa,cringÖÐÀ´µçºÅÂ룬Ö÷½ÐºÅÂëÉÏÏÞ10*/

-    T_z_CallSubAddr           tCallingSubAddr;

-

-    T_z_CallNum               tCalledNum;         /* mmiaÔݺöÂÔ´ËÐÅÏ¢ */

-    T_z_CallSubAddr           tCalledSubAddr;

-

-    T_z_CallNum               tRedirNum;          /* mmiaÔݺöÂÔ´ËÐÅÏ¢ */

-    T_z_CallSubAddr           tRedirSubaddr;

-}T_zMmiaCc_Mtc_Ind;

-                                                                 

-/*==============================================================================

- Ô­ÓMMIA_CC_MTC_RSP_EV(CC->MMIA)

-       MMIA_CC_MODE_TO_MULTMEDIA_RSP_EV(MMIA->CC)

- ˵Ã÷: ºô½Ð½¨Á¢È·ÈÏ£¬Ö÷ÒªÓÃÓÚUDUB»òÕߺڰ×Ãûµ¥

-       Óû§Ö¸Ê¾½ÓÊÜ»ò¾Ü¾øÇл»ÖÁÊÓÆµµç»°µÄÇëÇó

-==============================================================================*/

-typedef struct {

-    BYTE                        bSrcIndex;          /* Ô´Ë÷Òý */

-    BYTE                        bDesIndex;          /* Ä¿µÄË÷Òý */

-    BYTE                        bResult;            /* Óû§¾ö¶¨ÊÇ·ñ½ÓÊÜ£¬¼ûºê¶¨Òå */

-    BYTE                        bCause;             /* ÓÃÓÚT_zMmiaCc_Mtc_Rsp,resultΪREJʱ±ØÐë´ø£»·ñÔòΪ¿ÉÑ¡ */

-}T_zMmiaCc_Mtc_Rsp, T_zMmiaCc_ModToMultMedia_Rsp;

-

-/*==============================================================================

- Ô­Ó MMIA_CC_ANS_MODE_REQ_EV(MMIA->CC), 

-        MMIA_CC_MODIFY_REQ_EV(MMIA->CC), 

-        MMIA_CC_STATE_QUERY_REQ_EV(MMIA->CC),

-        MMIA_CC_CAUSE_QUERY_REQ_EV(MMIA->CC),

-        MMIA_CC_ABORT_REQ_EV(MMIA->CC),

-        MMIA_CC_CSTA_QUERY_REQ_EV(MMIA->CC),

-        MMIA_CC_MODE_TO_MULTMEDIAIND_EV(CC->MMIA),

-        MMIA_CC_DISC_CNF_EV(CC->MMIA), 

- ˵Ã÷:  ·Ö±ðΪºô½ÐÓ¦´ð»òÕßÊÕµ½ATA·¢ÆðģʽÇл»£¬

-        ÊÕµ½ATD·¢ÆðģʽÇл»£¬

-        ״̬²éѯ,

-        ×î½üÒ»´Îºô½Ðʧ°Ü»òÊÍ·ÅÔ­Òò²éѯ,

-        ÊÕµ½µÄÖжÏÇëÇó£¬

-        ²éѯcstaµÄÉèÖÃ

-        ÊÕµ½¶Ô¶Ë½«ÓïÒôºô½ÐÇл»µ½ÊÓÆµµç»°ÇëÇóʱ¸øÉϲãµÄָʾ

-        ¹Ò¶ÏÏûÏ¢µÄÈ·ÈÏ,

-==============================================================================*/

-typedef struct {

-    BYTE                        bSrcIndex;          /* Ô´Ë÷Òý */

-    BYTE                        bDesIndex;          /* Ä¿µÄË÷Òý */

-    BYTE                        bCallId;            /* CC->MMIAµÄÏûÏ¢Ìî */

-    BYTE                        bPadding;

-}T_zMmiaCc_AnsMod_Req, T_zMmiaCc_Modify_Req, T_zMmiaCc_StateQuery_Req,

-T_zMmiaCc_CauseQuery_Req, T_zMmiaCc_Abort_Req,

-T_zMmiaCc_CstaQuery_Req, T_zMmiaCc_ModToMultMedia_Ind;

-

-/*==============================================================================

- Ô­Ó MMIA_CC_DISC_IND_EV(CC->MMIA), 

- ˵Ã÷:  ÊÕµ½¹Ò¶ÏÏûÏ¢µÄָʾ,

-==============================================================================*/

-typedef struct {

-    BYTE                        bSrcIndex;          /* Ô´Ë÷Òý */

-    BYTE                        bDesIndex;          /* Ä¿µÄË÷Òý */

-    BYTE                        bCallId;            /*  */

-    BYTE                        bPadding1;

-

-    WORD                        wCause;             /* ºô½ÐÊÍ·ÅÔ­Òò */

-    BYTE                        abPadding2[2];

-}T_zMmiaCc_Disc_Ind;

-

-/*==============================================================================

- Ô­ÓMMIA_CC_ANS_MODE_CNF_EV(CC->MMIA)

- ˵Ã÷: ºô½ÐÓ¦´ð»òÕßATA·¢ÆðµÄģʽÇл»µÄ½á¹û

-==============================================================================*/

-typedef struct {

-    BYTE                        bSrcIndex;          /* Ô´Ë÷Òý */

-    BYTE                        bDesIndex;          /* Ä¿µÄË÷Òý */

-    BYTE                        bResult;            /* ANSMODÇëÇóµÄ½á¹û£¬¼ûºê¶¨Ò壻¶ÔÓ¦½Ó¿ÚT_zApMmia_CcAnswer_Cnf */

-    BYTE                        bServ;              /* +CR ²ÎÊý£¬¼ûºê¶¨Òå £¬´¦ÀíͬT_zMmiaCc_Moc_CnfÖÐbServ*/

-    

-    WORD                        wCause;             /* ºô½Ðʧ°ÜÔ­Òò, result²»ÊÇOK/CONNECTʱ¶¼´ø */

-    BYTE                        bCallId;            /*  */

-    BYTE                        bCallType;          /* ËæeÐÐÉϱ¨Ê±µÄ²ÎÊý, resultÊÇOK/CONNECTʱ´ø£¬¼ûºê¶¨Òå */

-}T_zMmiaCc_AnsMod_Cnf;

-

-/*==============================================================================

- Ô­ÓMMIA_CC_MODIFY_CNF_EV(CC->MMIA)

- ˵Ã÷: ATD·¢ÆðµÄModifyµÄ½á¹ûָʾ

-==============================================================================*/

-typedef struct {

-    BYTE                        bSrcIndex;          /* Ô´Ë÷Òý */

-    BYTE                        bDesIndex;          /* Ä¿µÄË÷Òý */

-    BYTE                        bServ;              /* +CR ²ÎÊý£¬¼ûºê¶¨Òå */

-    BYTE                        bCallId;            /*  */

-    BYTE                        bResult;            /*²Ù×÷µÄ½á¹û¼ûºê¶¨Òå:Z_SUCC/Z_FAIL*/

-    BYTE                        abPadding[3];            

-    DWORD                       dwCause;            /* ʧ°ÜÔ­Òò */

-}T_zMmiaCc_Modify_Cnf;

-

-/*==============================================================================

- Ô­ÓMMIA_CC_DIS_MODE_REQ_EV(MMIA->CC)

- ˵Ã÷: ¹Ò¶Ïºô½ÐÇëÇ󣬻òÕßÊÕµ½ATH/+CHUPÃüÁî

-==============================================================================*/

-typedef struct {

-    BYTE                        bSrcIndex;          /* Ô´Ë÷Òý */

-    BYTE                        bDesIndex;          /* Ä¿µÄË÷Òý */

-    BYTE                        bFlag;              /* ¹Ò¶ÏÇëÇóµÄÃüÁ¼ûºê¶¨Òå */

-    BYTE                        bCause;

-}T_zMmiaCc_DisMod_Req;

-

-/*==============================================================================

- Ô­ÓMMIA_CC_COMMON_CNF_EV(CC->MMIA)

- ˵Ã÷: ATH/+CHUPÃüÁî²Ù×÷µÄ·µ»Ø½á¹û

-==============================================================================*/

-typedef struct

-{

-    BYTE                        bSrcIndex;          /* Ô´Ë÷Òý */

-    BYTE                        bDesIndex;          /* Ä¿µÄË÷Òý */

-    BYTE                        bResult;            /*²Ù×÷µÄ½á¹û¼ûºê¶¨Òå:Z_SUCC/Z_FAIL*/

-    BYTE                        bCallId;            

-    DWORD                       dwCause;            /* ʧ°ÜÔ­Òò */

-}T_zMmiaCc_Disc_Cnf;

-

-/*==============================================================================

- Ô­ÓMMIA_CC_DTMF_REQ_EV(MMIA->CC)

- ˵Ã÷: ·¢ËÍDTMFÇëÇó

-==============================================================================*/

-typedef struct {

-    BYTE                        bSrcIndex;          /* Ô´Ë÷Òý */

-    BYTE                        bDesIndex;          /* Ä¿µÄË÷Òý */

-    BYTE                        bDtmf;              /* DTMF×Ö·û */

-    BYTE                        bPadding;

-    DWORD                       dwDuration;          /* Èç¹ûVTS²»Ð¯´øÊ±³¤È¡VTDÉèÖÃÖµ*/

-}T_zMmiaCc_Dtmf_Req;

-

-/*==============================================================================

- Ô­ÓMMIA_CC_CHLD_REQ_EV(MMIA->CC)

- ˵Ã÷: ·¢ËÍHOLD/RETRIEVE/MPTY/CWµÈ²Ù×÷µÄÇëÇó

-==============================================================================*/

-typedef struct {

-    BYTE                        bSrcIndex;          /* Ô´Ë÷Òý */

-    BYTE                        bDesIndex;          /* Ä¿µÄË÷Òý */

-    BYTE                        bOperateType;       /* 

-                                                     * ²Ù×÷ÀàÐÍ

-                                                     * 0: ÊÍ·ÅËùÓÐheldºô½Ð»òÕß½«ºô½ÐµÈ´ý 

-                                                     *    ÉèÖÃÓû§¾ö¶¨Óû§Ã¦(UDUB)  

-                                                     * 1: ÊÍ·ÅËùÓÐactiveºô½Ð(Èç¹û´æÔÚ)£¬ 

-                                                     *    ½ÓÊÜÆäËûºô½Ð(held or waiting) 

-                                                     * 1X:ÊÍ·ÅÖ¸¶¨active call X.

-                                                     * 2: ½«ËùÓÐactiveºô½Ð(Èç¹û´æÔÚ)ÖÃΪ 

-                                                     *    hold£¬½ÓÊÜÆäËûºô½Ð (held or waiting)

-                                                     * 2X: ½«³ýÁËXÖ®ÍâµÄËùÓÐactiveºô½ÐÖÃΪhold

-                                                     *     ºô½ÐXÓ¦¼ÌÐøÖ§³Ö

-                                                     * 3: ½«Ò»Â·heldºô½Ð¼ÓÈëµ½»á»°ÖÐ

-                                                     */

-    BYTE                        bHldCauseFg;/*±ê¼Ç¹Ò¶ÏÔ­ÒòÊÇ·ñ´æÔÚ*/

-    BYTE                        bHldCause;  /*¹Ò¶ÏÔ­Òò(1-127)*/

-    BYTE                        abPadding[3];

-}T_zMmiaCc_Chld_Req;

-

-/*==============================================================================

- Ô­ÓMMIA_CC_CHLD_CNF_EV(CC->MMIA)

-                 MMIA_CC_DTMF_CNF_EV(CC->MMIA)

-                 MMIA_CC_CSTA_SET_CNF_EV(CC->MMIA)

- ˵Ã÷: DISMOD¡¢DTMF¡¢CHLDºÍCSTAÉèÖòÙ×÷µÄ·µ»Ø½á¹ûÒÔ¼°ËùÓÐʧ°Ü²Ù×÷µÄ·µ»Ø½á¹û

-==============================================================================*/

-typedef struct

-{

-    BYTE                        bSrcIndex;          /* Ô´Ë÷Òý */

-    BYTE                        bDesIndex;          /* Ä¿µÄË÷Òý */

-    BYTE                        bResult;            /* DTMF,CHLD,DISMODºÍÆäËûʧ°Ü²Ù×÷µÄ½á¹û

-                                                     * ¼ûºê¶¨Òå:Z_SUCC/Z_FAIL

-                                                     */

-    BYTE                        bCallId;            /*  */

-    

-    DWORD                       dwCause;            /* ʧ°ÜÔ­Òò */

-}T_zMmiaCc_Chld_Cnf,T_zMmiaCc_Dtmf_Cnf,T_zMmiaCc_CstaSet_Cnf;

-

-/*==============================================================================

- Ô­ÓMMIA_CC_NOTIFY_IND_EV(CC->MMIA)

- ˵Ã÷: Notifyָʾ,mmiaÔÝʱºöÂÔ´ËÐÅÏ¢

-==============================================================================*/

-typedef struct {

-    BYTE                        bSrcIndex;          /* Ô´Ë÷Òý */

-    BYTE                        bDesIndex;          /* Ä¿µÄË÷Òý */

-    BYTE                        bNotifyInd;         /* Notify ָʾ*/

-    BYTE                        bCallId;            /*  */

-}T_zMmiaCc_Notify_Ind;

-

-/*==============================================================================

- Ô­ÓMMIA_CC_SS_NOTIFY_IND_EV(CC->MMIA)

- ˵Ã÷: SS Notifyָʾ

-==============================================================================*/

-typedef struct {

-    BYTE                        bSrcIndex;          /* Ô´Ë÷Òý */

-    BYTE                        bDesIndex;          /* Ä¿µÄË÷Òý */

-

-    BYTE                        bIndexFg;	

-    BYTE                        bIndex;             /* CUG Index */

-

-    BYTE                        bIorUFg;            /* 0: ¶ÔÓ¦cssi£»1¶ÔÓ¦cssu£¬È¡Öµ¼ûºê¶¨Òå*/

-    BYTE                        bCode;              /* +CSSI»òCSSUÖÐcode²ÎÊý, ²Î¿¼½Ó¿ÚÎĵµ */

-

-    BYTE                        bCallingNumFg;

-    BYTE                        bCallingSubAddrFg;

-    

-    BYTE                        bCallId;            /*  */

-    BYTE                        abPadding[3];       /*  */

-

-    T_z_CallNum               tCallingNum;        /*Ö÷½ÐºÅÂëÉÏÏÞ10*/

-    T_z_CallSubAddr           tCallingSubAddr;

-}T_zMmiaCc_SsNotify_Ind;

-

-/*==============================================================================

- Ô­ÓMMIA_CC_STATE_QUERY_CNF_EV(CC->MMIA)

- ˵Ã÷: ºô½Ð״̬²éѯ½á¹û

-==============================================================================*/

-/* The struct of the call information.*/

-typedef struct

-{

-    BYTE                        bCi;                /* ºô½Ð±êʶ */

-    BYTE                        bDir;               /* ºô½Ð·½Ïò£¬¼ûºê¶¨Òå*/

-    BYTE                        bCallState;         /* ºô½Ð״̬£¬¼ûºê¶¨Òå */

-    BYTE                        bCallMode;          /* ºô½Ðģʽ£¬¼ûºê¶¨Òå */

-    BYTE                        bMptyInfo;          /* ÊÇ·ñ´¦ÓÚMPTYÖеıêʶ룬¼ûºê¶¨Òå */

-

-    BYTE                        bCallPriFg;

-    BYTE                        bCallPriority;      /* ºô½ÐÓÅÏȼ¶£¬¼ûºê¶¨Òå */

-    BYTE                        bCalledNumFg;

-

-    T_z_CallNum                 tCalledNum;         /* ±»½ÐºÅÂëÉÏÏÞ40*/

-}T_zMmiaCc_CallInfo;

-

-typedef struct {

-    BYTE                        bSrcIndex;          /* Ô´Ë÷Òý */

-    BYTE                        bDesIndex;          /* Ä¿µÄË÷Òý */

-    BYTE                        bNumber;            /* ·ÇNULL״̬µÄCCʵÌå¸öÊý */

-    BYTE                        bPadding;

-

-    T_zMmiaCc_CallInfo       atCallInfo[7];     

-}T_zMmiaCc_StateQuery_Cnf;

-

-/*==============================================================================

- Ô­ÓMMIA_CC_CAUSE_QUERY_CNF_EV(CC->MMIA)

- ˵Ã÷: ºô½Ðʧ°Ü»òÊͷŵIJéѯ½á¹û

-==============================================================================*/

-typedef struct {

-    BYTE                        bSrcIndex;          /* Ô´Ë÷Òý */

-    BYTE                        bDesIndex;          /* Ä¿µÄË÷Òý */

-    

-    BYTE                        bCauseFg;

-    BYTE                        bPadding;

-    

-    DWORD                       dwCause;            /* ×î½üÒ»´Îºô½ÐÊÍ·Å»òʧ°ÜµÄÔ­Òò */

-}T_zMmiaCc_CauseQuery_Cnf;

-

-/*==============================================================================

- Ô­ÓMMIA_CC_COMMON_CNF_EV(CC->MMIA)

- ˵Ã÷: DISMOD¡¢DTMF¡¢CHLDºÍCSTAÉèÖòÙ×÷µÄ·µ»Ø½á¹ûÒÔ¼°ËùÓÐʧ°Ü²Ù×÷µÄ·µ»Ø½á¹û

-==============================================================================*/

-typedef struct

-{

-    BYTE                        bSrcIndex;          /* Ô´Ë÷Òý */

-    BYTE                        bDesIndex;          /* Ä¿µÄË÷Òý */

-    BYTE                        bResult;            /* DTMF,CHLD,DISMODºÍÆäËûʧ°Ü²Ù×÷µÄ½á¹û

-                                                     * ¼ûºê¶¨Òå:Z_SUCC/Z_FAIL

-                                                     */

-    BYTE                        bCallId;            /*  */

-    

-    DWORD                       dwCause;            /* ʧ°ÜÔ­Òò */

-}T_zMmiaCc_Common_Cnf;

-

-

-/**************************************************************************** 

-  Ô­Óï:MMIA_CC_PROC_INFO_IND_EV(CC->MMIA)

-  ¹¦ÄÜ:ºô½Ð¹ý³ÌÖÐÐÅÏ¢µÄÖ÷¶¯Éϱ¨

- ****************************************************************************/  

-typedef struct {

-    BYTE                        bSrcIndex;         /* Ô´Ë÷Òý */

-    BYTE                        bDesIndex;         /* Ä¿µÄË÷Òý */

-    BYTE                        bCallInfo;         /* ºô½ÐÐÅϢָʾ£¬¼ûºê¶¨Òå */

-    BYTE                        bCallId;           /*  */

-

-    BYTE                        bProgressFg;       /* 0:ÎÞprogressÐÅÏ¢,1: ÓÐprogressµÄÐÅÏ¢ */

-    BYTE                        bCallLoc;          /* bProgressFg=1ÊÇÓÐЧ£¬È¡Öµ¼û24008 10.5.4.21¡£¸Ã²ÎÊýÔÝʱ²»±»MMIA´¦Àí */

-    BYTE                        bProgDes;          /* bProgressFg=1ÊÇÓÐЧ£¬È¡Öµ¼û24008 10.5.4.21 */

-    BYTE                        bCallType;         /* µ±Ç°µÄºô½ÐÀàÐÍ£¬Z_MMIACC_VOICE_CALL/Z_MMIACC_DATA_CALL(/Z_MMIACC_CMCC_EMERGENCY_CALL),

-                                                    * ÔÚcallinfoΪCallProcdºÍsendsetupMsgʱ±ØÐë´ø£¬

-                                                    * ÔÚcallinfoΪZ_MMIACC_CALLPROCD_NOTIFYʱ,Z_MMIACC_CMCC_EMERGENCY_CALL¶ÔÓ¦µ½Z_MMIACC_VOICE_CALL */

-}T_zMmiaCc_ProcInfo_Ind;

-

-/**************************************************************************** 

-  Ô­Óï:MMIA_CC_CSTA_SET_REQ_EV(MMIA->CC)

-       MMIA_CC_CSTA_QUERY_CNF_EV(CC->MMIA)

-  ¹¦ÄÜ:cstaµÄÉèÖÃÃüÁîºÍ²éѯȷÈÏ

- ****************************************************************************/  

-typedef struct {

-    BYTE                        bSrcIndex;         /* Ô´Ë÷Òý */

-    BYTE                        bDesIndex;         /* Ä¿µÄË÷Òý */

-    BYTE                        bType;             /* cstaµÄÉèÖÃÖµ²Î¿¼24008 10.5.4.7£¬ÈôÉèÖÃÖµÎÞЧ,·µ»ØÊ§°Ü,cc¼ÇÎÞЧµÄtypeÖµ0xff

-                                                      ²éѯ´Ëֵʱ,·µ»Ø0xffΪÎÞЧÉèÖÃ*/

-    BYTE                        bPadding;          

-}T_zMmiaCc_CstaSet_Req, T_zMmiaCc_CstaQuery_Cnf;

-

-/*==============================================================================

- Ô­ÓMMIA_CC_CALL_STATE_IND_EV(CC->MMIA)

- ˵Ã÷: ºô½Ð״̬¸Ä±äÉϱ¨£¬¶ÔÓ¦ËæeÐй淶v2.0.0 ^DSCI

-==============================================================================*/

-typedef struct

-{

-    BYTE                        bSrcIndex;          /* Ô´Ë÷Òý */

-    BYTE                        bDesIndex;          /* Ä¿µÄË÷Òý */

-    BYTE                        bCallId;            /* ºô½Ð±êʶ */

-    BYTE                        bDir;               /* ºô½Ð·½Ïò£¬¼ûºê¶¨Òå */

-

-    BYTE                        bCallState;         /* ºô½Ð״̬£¬¼ûºê¶¨Òå */

-    BYTE                        bCallType;          /* ºô½ÐÀàÐÍ£¬VOICE/DATA£¬¼ûºê¶¨Òå */

-    BYTE                        bMptyInfo;          /* ÊÇ·ñ´¦ÓÚMPTYÖеıêʶ룬¼ûºê¶¨Òå */

-    BYTE                        bBsTypeFg;          /* ÊÇ·ñÓÐbBsTypeµÄ±êʶ룬Z_VALID±íʾÓУ¬Z_INVALID±íʾÎÞ */

-

-    BYTE                        bCauseFg;           /* ÊÇ·ñÓÐbCauseµÄ±êʶ룬Z_VALID±íʾÓУ¬Z_INVALID±íʾÎÞ */

-    BYTE                        bBsType;            /* ³ÐÔØÒµÎñÀàÐÍ£¬¼ûServ ²ÎÊý ºê¶¨Ò壬ÐèҪעÒâºÍËæeÐÐÖµµÄ²î */

-    BYTE                        bCause;             /* ºô½ÐÊÍ·ÅÔ­Òò£¬bCallStateΪENDʱÌîд */

-    BYTE                        bReialFlag; // 0:²»ÊÇredial,  1: ÊÇredial·¢ÆðµÄºô½Ð

-    

-    T_z_CallNum               tNumber;            /* ºô½Ð¶Ô¶ËºÅÂë */

-}T_zMmiaCc_CallStateInd;

-

-

-/*==============================================================================

- Ô­ÓMMIA_CC_OPEN_VOICE_CHNL_IND_EV(CC->MMIA)

- ˵Ã÷: ֪ͨMMIA´ò¿ªÓïÒôͨµÀ

-==============================================================================*/

-typedef struct

-{

-    BYTE                                        bPlatIndex;   /*¶ÔÓ¦ºô½ÐʵÌ彨Á¢Ê±£¬Æ½Ì¨Ï·¢ÏûÏ¢ÖеÄÔ´Ë÷Òý*/       

-    BYTE                                        bCurAct;

-    BYTE                                        bIsWideBand;

-    BYTE                                        bAmrCdec;

-}T_zMmiaCC_OpenVoiceChnl_Ind,T_zMmiaCC_CloseVoiceChnl_Ind;

-

-/*==============================================================================

- Ô­ÓMMIA_CC_CLOSE_VOICE_CHNL_IND_EV(CC->MMIA)

- ˵Ã÷: ֪ͨMMIA¹Ø±ÕÓïÒôͨµÀ

-==============================================================================*/

-/* ¿ÕÏûÏ¢ */

-

-/*==============================================================================

- Ô­ÓMMIA_CC_CCM_QUERY_REQ_EV(MMIA->CC)

- ˵Ã÷: MMIA²éѯcurrent call meter

-==============================================================================*/

-typedef struct

-{

-    BYTE                        bSrcIndex;          /* Ô´Ë÷Òý */

-    BYTE                        bDesIndex;          /* Ä¿µÄË÷Òý */

-    BYTE                        abPadding[2];

-}T_zMmiaCc_CcmQuery_Req;

-

-/*==============================================================================

- Ô­ÓMMIA_CC_CCM_QUERY_CNF_EV(CC->MMIA)

- ˵Ã÷: ÏòMMIA»Ø¸´current call meter

-==============================================================================*/

-typedef struct

-{

-    BYTE                        bSrcIndex;          /* Ô´Ë÷Òý */

-    BYTE                        bDesIndex;          /* Ä¿µÄË÷Òý */

-    BYTE                        abPadding[2];

-

-    DWORD                       dwCcm;

-}T_zMmiaCc_CcmQuery_Cnf;

-

-

-/*==============================================================================

- Ô­ÓMMIA_CC_CCWV_IND_EV(CC->MMIA)

- ˵Ã÷: ÏòÓû§¾¯¸æ¿ìÒª´ïµ½ACMmax

-==============================================================================*/

-typedef struct

-{

-    BYTE                        bSrcIndex;          /* Ô´Ë÷Òý */

-    BYTE                        bDesIndex;          /* Ä¿µÄË÷Òý */

-    BYTE                        abPadding[2];

-}T_zMmiaCc_Ccwv_Ind;

-

-/*==============================================================================

- Ô­ÓMMIA_CC_NOTIFY_AOC_TIMER_IND_EV(CC->MMIA)

- ˵Ã÷: CC֪ͨMMIA¹Ø±Õ¡¢´ò¿ª¶¨Ê±Æ÷

-==============================================================================*/

-typedef struct

-{

-    BYTE                        bAocTimerNotify;     /* Z_VALID        ´ò¿ª¶¨Ê±Æ÷

-                                                                                             Z_INVALID     ¹Ø±Õ¶¨Ê±Æ÷

-                                                                                             */

-    BYTE                        abPadding[3];

-}T_zMmiaCc_NotifyAocTimer_Ind;

-

-/*==============================================================================

- Ô­ÓMMIA_CC_CNAP_IND_EV(CC->MMIA)

- ˵Ã÷: CCÖ÷¶¯Éϱ¨Ö÷½ÐÓû§Ãû

-==============================================================================*/

-typedef struct

-{

-    BYTE                                        bSrcIndex;          

-    BYTE                                        bDesIndex;  

-    BYTE                                        bL3MsgCniFg;  /* ±êʶbL3MsgCniÓÐЧÐÔ */      

-    BYTE                                        bL3MsgCni;   /*

-                                                                                                       * L3ÏûϢЯ´øµÄCNI£º

-                                                                                                       * Z_MMIACC_CNI_NAMEPRESENTALLOW

-                                                                                                       * Z_MMIACC_CNI_PRESENTRESTRICT

-                                                                                                       * Z_MMIACC_CNI_NAMEUNAVAIL

-                                                                                                       * Z_MMIACC_CNI_NAMEPRESENTRESTRICT   

-                                                                                                       */

-    BYTE                                        bCallId;

-    BYTE                                        bDcs;  /* Óû§ÃûµÄ±àÂ뷽ʽ */

-    BYTE                                        bNameLen;   /* ±êʶabNameµÄ×Ö½Ú³¤¶È */

-    BYTE                                        bLenInChars; /* ±êʶabNameµÄ×Ö·û³¤¶È */

-    

-    BYTE                                        abName[Z_MMIACC_CNAP_NAME_MAX_LEN];  /* Ö÷½ÐÓû§Ãû*/

-} T_zMmiaCc_CnapInd;

-

-/**************************************************************************** 

-  Ô­Óï:MMIA_CC_OPEN_VOICECHNL_REQ_EV(ATI->CC)

-  ¹¦ÄÜ:֪ͨ´ò¿ªÓïÒô

- ****************************************************************************/  

-typedef struct {

-    BYTE                        bSrcIndex;         /* Ô´Ë÷Òý */

-    BYTE                        bDesIndex;         /* Ä¿µÄË÷Òý */

-    BYTE                        bCallId; /* ºô½Ð±êʶ*/

-    BYTE                        bPadding;

-}T_zMmiaCc_Open_VoiceChnl_Req;

-/**************************************************************************** 

-  Ô­Óï:MMIA_CC_SRVCC_NOTOPEN_VOICECHNL_REQ_EV(ATI->CC)

-  ¹¦ÄÜ:֪ͨSRVCCʱ²»´ò¿ªÓïÒô

- ****************************************************************************/  

-typedef struct {

-    BYTE                        bSrcIndex;         /* Ô´Ë÷Òý */

-    BYTE                        bDesIndex;         /* Ä¿µÄË÷Òý */

-    BYTE                        abPadding[2];

-}T_zMmiaCc_NotOpen_VoiceChnl_Req;

-

-/*==============================================================================

- Ô­ÓMMIA_CC_STOP_LOCALVOICE_IND_EV(CC->ATI)

- ˵Ã÷: ֪ͨͣ±¾µØÒô

-==============================================================================*/

-typedef struct

-{

-    BYTE                        bSrcIndex;         /* Ô´Ë÷Òý */

-    BYTE                        bDesIndex;         /* Ä¿µÄË÷Òý */

-    BYTE                        bCallId; /* ºô½Ð±êʶ*/

-    BYTE                        bPadding;

-}T_zMmiaCC_StopLocalVoice_Ind,T_zMmiaCC_StartLocalVoice_Ind;

-

-/*==============================================================================

- Ô­ÓMMIA_CC_CECN_IND_EV(CC->ATI)

- ˵Ã÷: Éϱ¨+CECN: <data_type>

-==============================================================================*/

-typedef struct {

-   BYTE            bSrcIndex;

-   BYTE            bDesIndex;

-   BYTE            bDataType;//0-updated MSD for the eCall is provided to the network by the MT,1-request for updated MSD

-   BYTE            bMtFirstMsdReq;

-}T_zMmiaCc_Cecn_Ind;

-

-

-/*==============================================================================

- Ô­ÓMMIA_CC_ZECALL_IND_EV(CC->ATI)

- ˵Ã÷: CC½«CECALLת½»IMS´¦Àí

-==============================================================================*/

-typedef struct {

-   BYTE            bSrcIndex;

-   BYTE            bDesIndex;

-   BYTE            beCallType;

-   BYTE            bMsdLen;

-   BYTE            abMSD[MSD_MAX_LENGTH];

-}T_zMmiaCc_ZECALL_Ind;

-

-/*==============================================================================

- Ô­ÓMMIA_CC_ECALL_WORKSTATE_IND_EV(CC->ATI)

- ˵Ã÷: Éϱ¨+ZECALLSTATE: <CallId>,<Dir>,<ecallState>

-==============================================================================*/

-typedef struct

-{

-   BYTE                        bSrcIndex;

-   BYTE                        bDesIndex;

-   BYTE                        bCallId;

-   BYTE                        bDir;

-

-   BYTE                        bECallState;

-   BYTE                        bClearDownFg;

-   BYTE                        bClearDown;

-   BYTE                        bPadding1;

-

-   BYTE                        beCallModeFg;

-   BYTE                        beCallMode;

-   BYTE                        abPadding[2];

-}T_zMmiaCc_ECallWorkStateInd;

-

-/*==============================================================================

-Ô­Óï:MMIA_CC_T9TIMER_SET_REQ_EV

-˵Ã÷:·¢ËÍT9¶¨Ê±Æ÷

-==============================================================================*/

-typedef struct

-{

-    BYTE                        bSrcIndex;

-    BYTE                        bDesIndex;

-

-    BYTE                        bEnable;//0-¹Ø±Õ,1-´ò¿ª

-    BYTE                        bPadding;

-}T_zMmiaCc_T9Timer_SetReq;

-

-/*==============================================================================

-Ô­Óï:MMIA_CC_T9TIMER_QRY_REQ_EV

-˵Ã÷:·¢ËÍT9¶¨Ê±Æ÷״̬²éѯÇëÇó

-==============================================================================*/

-typedef struct

-{

-    BYTE                        bSrcIndex;

-    BYTE                        bDesIndex;

-

-    BYTE                        abPadding[2];

-}T_zMmiaCc_T9Timer_QryReq;

-

-

-/*==============================================================================

- Ô­ÓMMIA_CC_CALLBACK_EVENT_EV(CC->ATI)

- ˵Ã÷: Éϱ¨

-==============================================================================*/

-typedef struct

-{

-   BYTE                        bEvent;  /*0 End 1 Start*/

-   BYTE                        abpadding[3];

-}T_zMmiaCc_CallBackEvent_Ind;

-

-

-/*==============================================================================

-Ô­Óï:MMIA_CC_T9TIMER_QRY_CNF_EV

-˵Ã÷:T9¶¨Ê±Æ÷״̬²éѯ½á¹û

-==============================================================================*/

-typedef struct

-{

-    BYTE                        bSrcIndex;

-    BYTE                        bDesIndex;

-

-    BYTE                        bT9Stat;//0-µ±Ç°T9ûÓÐÆô¶¯,1-µ±Ç°T9ÒÑÆô¶¯

-    BYTE                        bPadding;

-}T_zMmiaCc_T9Timer_QryCnf;

-

-

-/*==============================================================================

-Ô­Óï:MMIA_CC_VOICEMODE_QRY_REQ_EV

-˵Ã÷:²éѯµ±Ç°µÄEcallµÄÒôƵģʽ

-==============================================================================*/

-typedef struct

-{

-    BYTE                        bSrcIndex;

-    BYTE                        bDesIndex;

-

-    BYTE                        abPadding[2];

-}T_zMmiaCc_VocieMode_QryReq;

-

-/*==============================================================================

-Ô­Óï:MMIA_CC_VOICEMODE_QRY_CNF_EV

-˵Ã÷:²éѯµ±Ç°µÄEcallµÄÒôƵģʽ½á¹û

-==============================================================================*/

-typedef struct

-{

-    BYTE                        bSrcIndex;

-    BYTE                        bDesIndex;

-

-    BYTE                        bVoiceMode; /*0:Õý³£ÓïÒôģʽ£¬1:Inbandģʽ*/

-    BYTE                        bPadding;

-}T_zMmiaCc_VocieMode_QryCnf;

-

-

-/*==============================================================================

-Ô­Óï:MMIA_CC_RESETIVS_REQ_EV

-˵Ã÷:ÉϲãÖØÖÃIVS

-==============================================================================*/

-typedef struct

-{

-    BYTE                        bSrcIndex;

-    BYTE                        bDesIndex;

-

-    BYTE                        abPadding[2];

-}T_zMmiaCc_ResetIvs_Req;

-

-/*==============================================================================

-Ô­Óï: MMIA_CC_RESETIVS_CNF_EV

-˵Ã÷:ÉϲãÖØÖÃIVS½á¹û

-==============================================================================*/

-typedef struct

-{

-    BYTE                        bSrcIndex;

-    BYTE                        bDesIndex;

-    BYTE                        bRst;

-    BYTE                        bPadding;

-

-    DWORD                       dwCause;

-}T_zMmiaCc_ResetIvs_Cnf;

-

-typedef struct

-{

-    BYTE                        bStatus;        /* ²Î¼ûºê¶¨Òå */

-    BYTE                        bClassFg;       /* bClass´æÔÚ±ê¼Ç룬

-                                                 * Z_VALID:ÏàÓ¦²ÎÊý´æÔÚ

-                                                 * Z_INVALID:ÏàÓ¦²ÎÊý²»´æÔÚ

-                                                 * ºóÐø²ÎÊý**FgÐÎʽµÄÎÞÌØÊâ˵Ã÷ʱ£¬Óë´Ëͬ*/

-    BYTE                        bClass;         /* ²Î¼ûºê¶¨Òå */

-

-    BYTE                        bTimeFg;        /* Time´æÔÚ±ê¼Çλ*/   

-    BYTE                        bTime;          /* ÎÞÓ¦´ðºô½Ð×ªÒÆµÈ´ýʱ¼ä, ȡֵ·¶Î§[1-30] */

-

-    BYTE                        abPadding[3];

-    

-    T_z_CallNum               tFwdNum;       /* CCFCÄ¿±êºÅÂ븸µØÖ·£¬ÔÚ´ËÏûÏ¢Ö㤶ÈÉÏÏÞΪ8*/

-    T_z_CallSubAddr           tSubAddr;       /* CCFCÄ¿±êºÅÂë×ÓµØÖ·£¬³¤¶ÈÉÏÏÞΪ20*/

-} T_zMmiaSs_FwdFeat;

-

-/* CLCK¡¢CCWA²éѯ½á¹û×ӽṹ */

-typedef struct

-{

-    BYTE                        bStatus;        /* ²Î¼ûºê¶¨Òå */

-    BYTE                        bClassFg;       /* bClass´æÔÚ±ê¼Çλ*/

-    BYTE                        bClass;         /* ²Î¼ûºê¶¨Ò壬²»°üº¬À©Õ¹ºê¶¨Òå */

-    BYTE                        bPadding;  

-} T_zMmiaSs_ClassStatus;

-

-

-typedef struct

-{

-    BYTE                        bSrcIndex;       /* Ô´Ë÷Òý */

-    BYTE                        bDesIndex;       /* Ä¿µÄË÷Òý */

-    BYTE                        bResult;         /* ÊÇ·ñº¬´íÎóֵָʾ£¬Z_FAIL±íʾº¬´íÎóÖµ*/

-    BYTE                        bPadding;   

-

-    DWORD                       dwErrCd;         /* ²Î¼ûºê¶¨Òå */

-} T_zMmiaSs_Common_Cnf;

-

-/**************************************************************************

- *                       ½Ó¿ÚÏûÏ¢½á¹¹¶¨Òå                     *

- **************************************************************************/

-

-

-/*==============================================================================

- Ô­ÓMMIA_SS_CLCK_SET_REQ_EV(MMIA->SS)

- ˵Ã÷: CLCKµÄÉèÖÃ/²éѯÃüÁî

-==============================================================================*/

-typedef struct

-{

-    BYTE                        bSrcIndex;      /* Ô´Ë÷Òý */

-    BYTE                        bDesIndex;      /* Ä¿µÄË÷Òý */

-    

-    BYTE                        bFac;            /* ²Î¼ûºê¶¨Òå */

-    BYTE                        bMode;           /* ²Î¼ûºê¶¨Òå */

-    

-    BYTE                        bClassFg;

-    BYTE                        bClass;          /* ²Î¼ûºê¶¨Òå */

-    BYTE                        bPwdNum;         /* ÃÜÂë¸öÊý */

-    BYTE                        bPadding;

-    

-    BYTE                        abPassword[Z_MMIASS_MAX_PWD_LEN];   /* Ϊ0-9µÄËĸöÊý×Ö */

-} T_zMmiaSs_Ciss_Req;

-

-/*==============================================================================

- Ô­ÓMMIA_SS_CLCK_QUERY_CNF_EV(SS->MMIA)

- ˵Ã÷: CLCK²éѯÃüÁîµÄ»Ø¸´

-==============================================================================*/

-typedef struct

-{

-    BYTE                        bSrcIndex;      /* Ô´Ë÷Òý */

-    BYTE                        bDesIndex;      /* Ä¿µÄË÷Òý */

-    

-    BYTE                        bClassNum;

-    BYTE                        bPadding;

-

-    T_zMmiaSs_ClassStatus    atClass[8];      /* ²éѯ½á¹ûÊý×é */

-} T_zMmiaSs_CissQer_Cnf;

-

-/*==============================================================================

- Ô­ÓMMIA_SS_CPWD_SET_REQ_EV(MMIA->SS)

- ˵Ã÷: CPWDµÄÉèÖÃÃüÁî

-==============================================================================*/

-typedef struct

-{

-    BYTE                        bSrcIndex;      /* Ô´Ë÷Òý */

-    BYTE                        bDesIndex;      /* Ä¿µÄË÷Òý */

-    BYTE                        abPaddings[2];

-    

-    BYTE                        bFac;            /* ²Î¼ûºê¶¨Òå */

-    BYTE                        bOldPwdNum;      /*¾ÉÃÜÂë¸öÊý*/

-    BYTE                        bNewPwdNum;      /*ÐÂÃÜÂë¸öÊý*/

-    BYTE                        bNewPwdAgnNum;   /*ÐÂÃÜÂëÈ·ÈϵÄÃÜÂë¸öÊý£¬ÎªÁãʱ£¬ssÔٴλظ´abNewPwd*/

-

-    BYTE                        abOldPwd[Z_MMIASS_MAX_PWD_LEN];

-    BYTE                        abNewPwd[Z_MMIASS_MAX_PWD_LEN];

-    BYTE                        abNewPwdAgn[Z_MMIASS_MAX_PWD_LEN];

-} T_zMmiaSs_PwdChange_Req;

-

-/*==============================================================================

- Ô­ÓMMIA_SS_CLIP_READ_REQ_EV(MMIA->SS)¡¢MMIA_SS_CLIR_READ_REQ_EV(MMIA->SS)¡¢

- MMIA_SS_COLP_READ_REQ_EV(MMIA->SS)¡¢MMIA_SS_COLR_READ_REQ_EV(MMIA->SS)¡¢MMIA_SS_ABORT_REQ_EV(MMIA->SS)

-MMIA_SS_CNAP_READ_REQ_EV(MMIA->SS)

- ˵Ã÷: Clip\Clir\Colp\Colr\CNAP²ÎÊý²éѯÃüÁîÃüÁî,¶ÔÓ¦¿ÉÖжÏATÃüÁîµÄÖÕ¶ËÇëÇó

-==============================================================================*/

-typedef struct

-{

-    BYTE                        bSrcIndex;      /* Ô´Ë÷Òý */

-    BYTE                        bDesIndex;      /* Ä¿µÄË÷Òý */

-    BYTE                        bPadding[2];

-} T_zMmiaSs_ClipRead_Req,T_zMmiaSs_ClirRead_Req, 

-T_zMmiaSs_ColpRead_Req, T_zMmiaSs_ColrRead_Req,

-T_zMmiaSs_Abort_Req,T_zMmiaSs_UssdCancel_Req,

-T_zMmiaSs_CnapRead_Req;

-

-/*==============================================================================

- Ô­ÓMMIA_SS_CLIP_READ_CNF_EV(SS->MMIA)¡¢MMIA_SS_CLIR_READ_CNF_EV(SS->MMIA)¡¢

- MMIA_SS_COLP_READ_CNF_EV(SS->MMIA)¡¢MMIA_SS_COLR_READ_CNF_EV(SS->MMIA)¡¢MMIA_SS_CNAP_READ_CNF_EV(SS->MMIA)¡¢

- ˵Ã÷: Clip\Clir\Colp\Colr\CnapµÄ²éѯÃüÁîµÄ»Ø¸´

-==============================================================================*/

-typedef struct

-{

-    BYTE                        bSrcIndex;      /* Ô´Ë÷Òý */

-    BYTE                        bDesIndex;      /* Ä¿µÄË÷Òý */

-

-    BYTE                        bMPara;          /* ²Î¼ûºê¶¨Òå */

-    BYTE                        bPadding;

-} T_zMmiaSs_ClipQer_Cnf, T_zMmiaSs_ClirQer_Cnf, 

-T_zMmiaSs_ColpQer_Cnf,T_zMmiaSs_ColrQer_Cnf,T_zMmiaSs_CnapQer_Cnf;

-

-/*==============================================================================

- Ô­ÓMMIA_SS_CCFC_SET_REQ_EV(MMIA->SS)

- ˵Ã÷: CCFCµÄÉèÖÃ/²éѯÃüÁî

-==============================================================================*/

-typedef struct

-{

-    BYTE                        bSrcIndex;      /* Ô´Ë÷Òý */

-    BYTE                        bDesIndex;      /* Ä¿µÄË÷Òý */

-    

-    BYTE                        bReason;         /* ²Î¼ûºê¶¨Òå */                                        

-    BYTE                        bMode;           /* ²Î¼ûºê¶¨Òå */

-    

-    BYTE                        bClassFg;

-    BYTE                        bClass;          /* ²Î¼ûºê¶¨Òå */

-    BYTE                        bTimeFg;

-    BYTE                        bTime;           /* ºôתǰµÈ´ýʱ¼ä,ȡֵ·¶Î§[1-30]. ȱʡֵΪ20 */

-

-    T_z_CallNum               tFwdNum;        /* CCFCÄ¿±êºÅÂ븸µØÖ·£¬Ôڴ˽ṹÖ㤶ÈÉÏÏÞΪ19*/

-    T_z_CallSubAddr           tSubAddr;        /* CCFCÄ¿±êºÅÂë×ÓµØÖ·£¬³¤¶ÈÉÏÏÞΪ20*/                                       

-} T_zMmiaSs_CcfcSet_Req;

-

-/*==============================================================================

- Ô­ÓMMIA_SS_CCFC_QUERY_CNF_EV(SS->MMIA)

- ˵Ã÷: CCFCµÄ²éѯÃüÁîµÄ»Ø¸´

-==============================================================================*/

-typedef struct

-{

-    BYTE                        bSrcIndex;      /* Ô´Ë÷Òý */

-    BYTE                        bDesIndex;      /* Ä¿µÄË÷Òý */

-

-    BYTE                        bFwdFeatNum;

-    BYTE                        bPadding;

-    

-    T_zMmiaSs_FwdFeat        atFwdFeat[8];   /* CCFC²éѯ×ӽṹÊý×é */ 

-} T_zMmiaSs_CcfcQer_Cnf;

-

-/*==============================================================================

- Ô­ÓMMIA_SS_CCWA_SET_REQ_EV(MMIA->SS)

- ˵Ã÷: CCWAµÄÉèÖÃ/²éѯÃüÁî

-==============================================================================*/

-typedef struct

-{

-    BYTE                        bSrcIndex;      /* Ô´Ë÷Òý */

-    BYTE                        bDesIndex;      /* Ä¿µÄË÷Òý */

-    

-    BYTE                        bMode;           /* ²Î¼ûºê¶¨Òå */

-    BYTE                        bClassFg;  

-    BYTE                        bClass;          /* ²Î¼ûºê¶¨Òå */

-

-    BYTE                        bPadding[3];

-} T_zMmiaSs_CcwaSet_Req;

-

-

-/*==============================================================================

- Ô­ÓMMIA_SS_CCWA_QUERY_CNF_EV(SS->MMIA)

- ˵Ã÷: CCWAµÄ¶ÁÈ¡ÃüÁîµÄ»Ø¸´

-==============================================================================*/

-typedef struct

-{

-    BYTE                        bSrcIndex;      /* Ô´Ë÷Òý   */

-    BYTE                        bDesIndex;      /* Ä¿µÄË÷Òý */

-

-    BYTE                        bClassNum;

-    BYTE                        bPadding;

-

-    T_zMmiaSs_ClassStatus    atClass[8];      /* CCWA²éѯ×ӽṹÊý×é */ 

-} T_zMmiaSs_CcwaQer_Cnf;

-

-/*==============================================================================

- Ô­ÓMMIA_SS_CUSD_SET_REQ_EV(MMIA->SS)

- ˵Ã÷: CUSDÃüÁî(MS->Network·½Ïò)

-==============================================================================*/

-typedef struct

-{

-    BYTE                        bSrcIndex;      /* Ô´Ë÷Òý */

-    BYTE                        bDesIndex;      /* Ä¿µÄË÷Òý */

-    

-    BYTE                        bStrLen;         /* USSD´®³¤¶È */    

-    BYTE                        bDcs;           /* ±àÂë·½°¸ */

-

-    BYTE                        abUssdStr[Z_MMIASS_MAX_USSD_LEN];  

-} T_zMmiaSs_CusdSet_Req;

-

-/*==============================================================================

- Ô­ÓMMIA_SS_CUSD_MT_IND_EV(SS->MMIA)

- ˵Ã÷: CUSDÃüÁî(Network->MS·½Ïò)

-==============================================================================*/

-typedef struct

-{

-    BYTE                        bSrcIndex;      /* Ô´Ë÷Òý */

-    BYTE                        bDesIndex;      /* Ä¿µÄË÷Òý */

-    BYTE                        abPadding1[2]; 

-                                

-    BYTE                        bMPara;          /* ²Î¼ûºê¶¨Òå */ 

-    BYTE                        bStrLen;         /* USSD´®³¤¶È */                   

-    BYTE                        bDcs;           /* ±àÂë·½°¸ */

-    BYTE                        bPadding2; 

-

-    BYTE                        abUssdStr[Z_MMIASS_MAX_USSD_LEN];                         

-} T_zMmiaSs_CusdMt_Ind;

-#ifdef _USE_LPP_ECID

-

-typedef struct{

-    BYTE                            bNum;

-    BYTE                            abList[2];

-}T_zMmiaSs_DefLoctEvtType;

-

-typedef struct{

-    BYTE                            bLocationEstmateType;

-

-    BYTE                            bDefLocEvtTpFg :1;

-    BYTE                            :7;

-    T_zMmiaSs_DefLoctEvtType        tDefLocEvtType;

-}T_zMmiaSs_LocationType;

-

-typedef struct{

-    BYTE   bNum;

-    BYTE   abAddr[Z_MAX_CLENTADDR_LEN];

-}T_zMmiaSs_Address;

-

-/*lshw:½á¹¹ÔÝʱ䶨*/

-//typedef struct{

-//}T_zMmiaSs_ExtensionContainer;

-

-typedef struct{

-    BYTE                      bExternalAddressFg: 1;

-    BYTE                      bExtensionContainerFg: 1;

-    BYTE                      :6;

-

-    T_zMmiaSs_Address         tExternalAddress;

-    //T_zMmiaSs_ExtensionContainer      tExtensionContainer;

-}T_zMmiaSs_ClientExtId;

-

-typedef struct{

-    BYTE         bNum;

-    BYTE         abUSSDString[Z_MAX_CLENTNAME_LEN];

-}T_zMmiaSs_NameString;

-

-typedef struct{                     

-    BYTE                                bDataCodScheme;

-    T_zMmiaSs_NameString                tNameString;

-    BYTE                                bLcsFormatIndicatorFg :1;

-    BYTE                                :7;

-    BYTE                                bLcsFormatIndicator;

-}T_zMmiaSs_ClientName;

-

-typedef struct

-{

-    DWORD  bLatDire:1;  /*Sign of latitude*/

-    DWORD  :7;

-    DWORD  dwLatitude:24;  /*Degrees of latitude*/

-    LONG  dwLongitude;  /*Degrees of longitude*/

-}T_z_Coordinate;

-

-typedef struct

-{

-    T_z_Coordinate tCoordinate;

-}T_z_Ellip;

-

-typedef struct

-{

-    T_z_Coordinate      tCoordinate;

-    BYTE                bUncertCode;

-    BYTE                bPadding[3]; 

-}T_z_Ellip_UncertCircle;

-

-typedef struct

-{

-    T_z_Coordinate      tCoordinate;

-    BYTE                bMajorAxis;

-    BYTE                bConfidence;

-    BYTE                bUncertSemiMinor;

-    BYTE                bUncertSemiMajor;

-}T_z_Ellip_UncertEllip;

-

-typedef struct

-{

-    T_z_Coordinate   *ptCoordinates;

-    BYTE                 bNum;

-    BYTE                 bPadding[3];

-}T_z_Polygon;

-

-typedef struct

-{

-    T_z_Coordinate      tCoordinate;

-    BYTE                bDirecAlt;

-    BYTE                bPadding;

-    WORD               wAltitude;

-}T_z_Ellip_Alt;

-

-typedef struct

-{

-    T_z_Coordinate      tCoordinate;

-    BYTE                bUncertSemiMajor;

-    BYTE                bUncertSemiMinor;

-    BYTE                bMajorAxis;

-    BYTE                bUncetAlt;   

-    BYTE                bConfidence;

-    BYTE                bDirecAlt;

-    WORD               wAltitude;

-}T_z_Ellip_Alt_UncertEllip;

-

-typedef struct

-{

-    T_z_Coordinate      tCoordinate;

-    BYTE                bUncertRadius;

-    BYTE                bConfidence;

-    BYTE                bIncludeAngle;

-    BYTE                bOffsetAngle;

-    BYTE                bPadding[2];

-    WORD               wInnerRadius;

-}T_z_Ellip_Arc;

-

-

-typedef struct 

-{

-    BYTE   bType;

-    union

-    {

-        T_z_Ellip                  tEllip;

-        T_z_Ellip_UncertCircle     tEllipUncertCircle;

-        T_z_Ellip_UncertEllip      tEllipUncertEllip;

-        T_z_Polygon                tPolygon;

-        T_z_Ellip_Alt              tEllipAlt;

-        T_z_Ellip_Alt_UncertEllip  tEllipAltUncert;

-        T_z_Ellip_Arc              tEllipArc;

-    }Val;

-}T_zMmiaSs_LrRes_ShapeData;

-

-typedef struct

-{

-    BYTE          bHorUncertSpeed;

-    BYTE          bVerUncertSpeed;

-    BYTE          bVerSpeed;

-    WORD         bVerSpeedDirect:1;

-    WORD         bVerSpeedFg:1;

-    WORD         bHorUncertSpeedFg:1;

-    WORD         bVerUncertSpeedFg:1;  

-    WORD         wBearing:9;

-    WORD         :3;

-    WORD         wHorSpeed;

-}T_zMmiaSs_LrRes_VelocityData;

-

-/*=============================================================================

-Ô­Óï:MMIA_SS_MOLR_ENABLE_REQ_EV/MMIA_SS_MOLR_DISABLE_REQ_EV

-˵Ã÷:+ZMOLRÃüÁî(ATI->SS),¶¨Î»·¢Æð»òÕßÖÕÖ¹

-=============================================================================*/

-typedef struct 

-{

-    BYTE  bSrcIndex;      /* Ô´Ë÷Òý */

-    BYTE  bDesIndex;      /* Ä¿µÄË÷Òý */

-    BYTE  bEnable;

-    BYTE  bPadding;

-}T_zMmiaSs_MoLr_Enable_Req, T_zMmiaSs_MoLr_Disable_Req;

-

-/*==============================================================================

-Ô­Óï:MMIA_SS_MTLOCIREQ_NOTIFY_IND_EV

-˵Ã÷:SSÊÕµ½ÍøÂçµÄMT¶¨Î»ÇëÇó£¬Í¨ÖªATÐèÓû§È·È϶¨Î»½ÓÊÜ»ò¾Ü¾ø

-================================================================================*/

-typedef struct

-{

-     BYTE                               bSrcIndex;      /* Ô´Ë÷Òý */

-     BYTE                               bDesIndex;      /* Ä¿µÄË÷Òý */

-     BYTE                               bClientExtIdFg;

-     BYTE                               bClientNameFg;

-

-     BYTE                               bHandleId;

-     BYTE                               bNotifiationType;

-     BYTE                               bPlane; /*ȡֵ0 Ctrl Plane  1 SUPI£¬ÏÖÔÚֻȡ0*/

-     BYTE                               bPadding;

-

-     T_zMmiaSs_LocationType            tLocationType;

-     T_zMmiaSs_ClientExtId             tClientExtId;

-     T_zMmiaSs_ClientName              tClientName;	 

-}T_zMmiaSs_MtLocalReqNotify_Ind;

-

-/*========================================================================

-Ô­Óï:MMIA_SS_MTLR_ANS_REQ_EV

-˵Ã÷:ATIÊÕµ½MT LRºó½øÐеÄÓ¦´ð

-=========================================================================*/

-typedef struct 

-{

-    BYTE bSrcIndex;      /* Ô´Ë÷Òý */

-    BYTE bDesIndex;      /* Ä¿µÄË÷Òý */

-    BYTE bAllow;    /*Z_VALD-½ÓÊÜMTLR/Z_INVALD¾Ü¾øMTLR*/

-    BYTE bHanldID; /*MTLRµÄ±êʶ*/

-}T_zMmiaSs_MtLr_Ans_Req;

-

-/*====================================================================

-Ô­Óï:MMIA_SS_MOLR_RES_IND_EV

-˵Ã÷:¶¨Î»½á¹û

-=====================================================================*/

-typedef struct 

-{

-    BYTE      bSrcIndex;      /* Ô´Ë÷Òý */

-    BYTE      bDesIndex;      /* Ä¿µÄË÷Òý */

-    BYTE      bResult;    /*¶¨Î»½á¹ûZ_SUCC/Z_FAIL*/

-    BYTE      bPadding;

-    DWORD    dwCause; /*ʧ°ÜÔ­Òò*/

-

-    T_zMmiaSs_LrRes_ShapeData*     ptShapeData;

-    T_zMmiaSs_LrRes_ShapeData*     ptAddShapeData;

-    T_zMmiaSs_LrRes_VelocityData*    ptVelData;

-}T_zMmiaSs_MoLr_Res_Ind;

-#endif

-/*==============================================================================

- Ô­ÓMMIA_CBS_ACTIVATE_REQ_EV(MMIA->CBS)

- ˵Ã÷: ¼¤»îÇëÇó

-==============================================================================*/

-typedef struct{

-    BYTE                                    bSrcIndex;

-    BYTE                                    bDesIndex;

-    BYTE                                    bMode;

-    BYTE                                    bPadding;    

-    T_zDev_AtMem_CBS_MidSet                 tMids;

-    T_zDev_AtMem_CBS_DcsSet                 tDcs;

-}T_zMmiaCbs_Activate_Req;

-

-/*==============================================================================

- Ô­ÓMMIA_CBS_ACTIVATE_CNF_EV(CBS->MMIA)

- ˵Ã÷: CBS¶Ô¼¤»îÇëÇóµÄ»Ø¸´

-==============================================================================*/

-typedef struct{

-    BYTE                                    bSrcIndex;

-    BYTE                                    bDesIndex;

-    BYTE                                    bMode;         /*0½ÓÊÕÁбíÖеÄÏûÏ¢,1²»½ÓÊÕÁбíÖÐÏûÏ¢*/

-    BYTE                                    bResult;       /*±íʾ¼¤»îÊÇ·ñ³É¹¦.Z_FAIL:ʧ°Ü,Z_SUCC:³É¹¦*/

-    T_zDev_AtMem_CBS_MidSet                 tMids;          /*ÁбíÖеÄÏûÏ¢ID*/

-    T_zDev_AtMem_CBS_DcsSet                 tDcs;           /*ÁбíÖеıàÂëģʽ*/    

-}T_zMmiaCbs_Activate_Cnf;

-

-/*==============================================================================

- Ô­ÓMMIA_CBS_DATA_IND_EV(CBS->MMIA)

- ˵Ã÷: CBSÖ÷¶¯Éϱ¨CBSÏûÏ¢µÄÊý¾Ý

-==============================================================================*/  

-/*Ò»Ò³Êý¾Ý*/

-typedef struct {                                     

-    BYTE                                    bCurPage;            /*µ±Ç°Ò³±àºÅ*/      

-    BYTE                                    bMsgLen;             /*µ±Ç°Ò³µÄÓÐЧÊý¾ÝµÄ³¤¶È*/

-    BYTE                                    abPadding[2]; 

-    BYTE                                    abBuf[Z_MMIACBS_MAX_TEXT_PAGE_LEN];  

-}T_zMmiaCbs_PageData;

-

-typedef struct{

-    BYTE                                    bSrcIndex;

-    BYTE                                    bDesIndex;

-    BYTE                                    bWarningMsgInd;     /*¾¯¸æÏûϢָʾÀàÐÍ*/

-    BYTE                                    bPriEtwsSecFlg;     /*ETWSÏûÏ¢ÖÐÊÇ·ñ´æÔÚ°²È«ÐÅÏ¢*/

-    WORD                                    wMid;

-    WORD                                    wSn;

-    BYTE                                    bCbmInd;            /*ÏûϢ·ÓÉָʾ,¼ûºê*/

-    BYTE                                    bTotalPage;         /*µ±Ç°CBSÏûÏ¢×ÜÒ³Êý*/

-    BYTE                                    bCurPageNum;        /*µ±Ç°´«ÊäÒ³Êý.2Gÿ´Î½ö1Ò³£¬È¡Öµ1£»3GΪËùÓÐÒ³£¬È¡ÖµÓëbTotalPageÏàµÈ*/      

-    BYTE                                    bDcs;

-    T_zMmiaCbs_PageData                     atBuf[Z_MMIACBS_MAX_PAGE_NUM];                

-}T_zMmiaCbs_Data_Ind;

-

-/*==============================================================================

- Ô­ÓZ_MmiaPdi_SellStat_StartSendPacketInd_Ev (MMIA->PDI)

- ˵Ã÷£ºÏúÁ¿Í³¼Æ½á¹¹

-==============================================================================*/

-typedef struct 

-{

-    BYTE                                    bCid;          /*µ±Ç°¼¤»î¿ÉÓõÄCID*/

-    BYTE                                    abPadding[3];

-

-    BYTE                                    abPdpAddr[Z_MMIAPDI_PDPADDR_MAX_LEN];  /*Êý¾Ý¿¨DNSµØÖ·*/

-    BYTE                                    abDnsaddr[Z_MMIAPDI_DNSADDR_MAX_LEN];  /*DNS·þÎñÆ÷µØÖ·*/

-

-    BYTE                                    abUdpContent[Z_MMIAPDI_UDPCONTENT_MAX_LEN];   /*UDPÊý¾Ý°üÄÚÈÝ,×Ö·û´®¸ñʽ,ÒÔ\0±íʾ½áÊø*/

-}T_zMmiaPdi_SellStat_StartSendPacket_Ind;

-

-/*==============================================================================

- Ô­ÓZ_MmiaPdi_SellStat_AbortInd_Ev (MMIA->PDI)

- ˵Ã÷£ºÖжϷ¢°ü

-==============================================================================*/

-typedef struct 

-{

-    BYTE                                    bCleanFg;               /* ±êʶÊÇ·ñÐèÒªÇå¿ÕPDI±¾µØÏúÁ¿Í³¼ÆÏà¹ØÈ«¾Ö±äÁ¿

-                                                                       1------Çå¿Õ£¬mmiaÔÚÊÕµ½ÏúÁ¿Í³¼Æ¿ªºÍ¹ØÊ±´¥·¢

-                                                                       0------²»Çå¿Õ£¬mmiaÔÚ·¢ÏÖµ±Ç°ÎÞcid¿ÉÓÃʱ´¥·¢*/

-    BYTE                                    abPadding[3];

-}T_zMmiaPdi_SellStat_Abort_Ind;

-

-#ifdef BTRUNK_SUPPORT

-typedef struct{
-    BYTE                     bBCDNumberLen;
-    BYTE                     abBCDNumber[Z_ATITSM_MAX_BCD_NUM];

-}T_zAtiTsm_BCDNumber;

-

-typedef struct{
-    BYTE                     bNameLen;
-    BYTE                     abName[Z_ATITSM_USER_NAME_LEN];

-}T_zAtiTsm_UserName;

-

-/* Transport Layer Address Contents */

-

-typedef struct{

-    BYTE                     bSpare0:5;

-    BYTE                     bAddrTypeValue  :3;

-    BYTE                     bAddrInfoLen;

-    BYTE                     abAddrInfo[Z_ATITSM_MAX_TRUNK_IP_ADDR_NUM];

-}T_zAtiTsm_TrunkIPAddr;

-

-typedef struct{

-    T_zAtiTsm_TrunkIPAddr   tTrunkIpAddr;

-    BYTE                      abPort[2];

-}T_zAtiTsm_TransLayerAddr;

-

-typedef struct{
-    BYTE                     bSpare0:3;
-    BYTE                     bAnswerInd  :1;
-    BYTE                     bForbFloorInd  :1;
-    BYTE                     bCiperInd  :1;
-    BYTE                     bPrioCall  :1;
-    BYTE                     bEmerCall  :1;
-    BYTE                     bSpare6:8;
-}T_zAtiTsm_CallAttribute;

-

-typedef struct{
-    BYTE                     bSpare0:6;
-    BYTE                     bNVOC  :1;
-    BYTE                     bAMR  :1;
-}T_zAtiTsm_SupAudioCodecList;

-

-typedef struct{
-    BYTE                     bSpare0:6;
-    BYTE                     bBiteRate2  :1;
-    BYTE                     bBitRate1  :1;
-    BYTE                     bSpare3:1;
-    BYTE                     bAmrOverPdcpInd  :1;
-    BYTE                     bPayloadFor2  :1;
-    BYTE                     bPayloadFor1  :1;
-    BYTE                     bPtime4  :1;
-    BYTE                     bPtime3  :1;
-    BYTE                     bPtime2  :1;
-    BYTE                     bPtime1  :1;
-}T_zAtiTsm_AmrParam;

-

-typedef struct{
-    BYTE                     bSpare0:4;
-    BYTE                     bh263  :1;
-    BYTE                     bmpeg4  :1;
-    BYTE                     bh264  :1;
-    BYTE                     bvp8  :1;
-}T_zAtiTsm_SupVideoCodecList;

-

-typedef struct{
-    BYTE                     bSpare0:4;
-    BYTE                     bFR4  :1;
-    BYTE                     bFR3  :1;
-    BYTE                     bFR2  :1;
-    BYTE                     bFR1  :1;
-    BYTE                     bQVGA  :1;
-    BYTE                     bVGA  :1;
-    BYTE                     bCIF  :1;
-    BYTE                     bQCIF  :1;
-    BYTE                     bSVGA  :1;
-    BYTE                     bXGA  :1;
-    BYTE                     bHD720p  :1;
-    BYTE                     bHD1080p  :1;
-    BYTE                     bSpare13:6;
-    BYTE                     bCIF4  :1;
-    BYTE                     bD1  :1;
-}T_zAtiTsm_H264Param;

-

-typedef struct{
-    BYTE                  bSpare0: 6;
-    BYTE                  bSupAudioCodecListFg: 1;
-    BYTE                  bAmrParamFg: 1;
-    T_zAtiTsm_TrunkIPAddr     tTrunkIPAddr;

-    BYTE                     abPort[2];
-    T_zAtiTsm_SupAudioCodecList     tSupAudioCodecList;

-    T_zAtiTsm_AmrParam        tAmrParam;

-}T_zAtiTsm_AudioDiscrip;

-

-typedef struct{
-    BYTE                  bSpare0: 6;
-    BYTE                  bSupVideoCodecListFg: 1;
-    BYTE                  bH264ParamFg: 1;
-    T_zAtiTsm_TrunkIPAddr     tTrunkIPAddr;

-    BYTE                     abPort[2];
-    T_zAtiTsm_SupVideoCodecList     tSupVideoCodecList;

-    T_zAtiTsm_H264Param       tH264Param;

-}T_zAtiTsm_VideoDiscrip;

-

-typedef struct{
-    WORD                     wNum;
-    BYTE                     abE2Ekey[1024];
-}T_zAtiTsm_E2EKey;

-

-typedef struct{
-    BYTE                     bGroupNameLen;
-    BYTE                     bGroupName[Z_ATITSM_MAX_GROUP_NAME_NUM];

-}T_zAtiTsm_GroupName;

-

-typedef struct{
-    BYTE                        bSpare0: 7;
-    BYTE                        bAmrParamFg: 1;
-    T_zAtiTsm_SupAudioCodecList     tSupAudioCodecList;

-    T_zAtiTsm_AmrParam        tAmrParam;

-}T_zAtiTsm_AudioCodecCapa;

-

-typedef struct{
-    BYTE                        bSpare0: 7;
-    BYTE                        bH264ParamFg: 1;
-    T_zAtiTsm_SupVideoCodecList     tSupVideoCodecList;

-    T_zAtiTsm_H264Param       tH264Param;

-}T_zAtiTsm_VideoCodecCapa;

-

-typedef struct{
-    BYTE                     bSpare0:3;
-    BYTE                     bNasVideoSrv  :1;
-    BYTE                     bSingleCall  :1;
-    BYTE                     bAmrOverPdcp  :1;
-    BYTE                     bPdcpHeadComp  :1;
-    BYTE                     bCipher  :1;
-    BYTE                     bSpare6:8;
-}T_zAtiTsm_UeTrunkCapa;

-

-typedef struct 

-{

-    BYTE                    bSrcIndex;

-    BYTE                    bDesIndex;

-    BYTE                    bMode; /* bMode£º1±íʾ¼¤»î£¬0±íʾȥ¼¤»î*/

-    BYTE                    bPadding;   

-} T_zAtiTsm_Reg_Req;

-#ifdef _R2_SUPPORT

-typedef struct{

-    BYTE                     bType;

-    BYTE                     bAddrLen;

-    BYTE                     abAddr[Z_ATITSM_MAX_IPADDR_NUM];

-}T_zAtiTsm_IpAddr;

-

-typedef struct{

-    BYTE                     bServType;

-    WORD                     wPort;

-    T_zAtiTsm_IpAddr         tIpAddr;

-}T_zAtiTsm_ServInfo;

-

-/*Server List*/

-typedef struct{

-    BYTE                     bNum;

-    T_zAtiTsm_ServInfo       atServInfo[Z_ATITSM_MAX_SERVLIST_NUM];

-}T_zAtiTsm_ServList;

-#endif

-

-/*Dialing Number Ext*/

-typedef struct{

-    BYTE                     bSpare:1;

-    BYTE                     bTypeNum:3;

-    BYTE                     bNumPlanId:4;

-}T_zAtiTsm_DialNumExt;

-

-

-/*==============================================================================

- Ô­Óï:ATI_TSM_REGSTATE_IND _EV(TSM->ATI)

- ˵Ã÷: Éϱ¨×¢²á״̬

- Ô­Óï:ATI_TSM_REG_CNF_EV(TSM->ATI)

- ˵Ã÷: »Ø¸´×¢²áÈ¥×¢²á½á¹û

-==============================================================================*/

-typedef struct 

-{

-    BYTE                    bSrcIndex;

-    BYTE                    bDesIndex;

-

-    BYTE                    bRegState;   /*1:×¢²á0:δע²á*/

-    BITS                    bCauseFg:1;

-    BITS                    bSubscriberBCDNumberFg:1;

-    BITS                    bUserNameFg:1;

-    BITS                    bEmergencyNumFg:1;

-    BITS                    bEmergencyGroupNumFg:1;

-    BITS                    bPadding:3;

-

-    BYTE                    bCause;

-    BYTE                    abPadding[3];

-

-    T_zAtiTsm_BCDNumber         tSubscriberBCDNumber;

-    T_zAtiTsm_UserName          tUserName;

-    T_zAtiTsm_BCDNumber         tEmergencyNum;

-    T_zAtiTsm_BCDNumber         tEmergencyGroupNum;

-} T_zAtiTsm_RegState_Ind,T_zAtiTsm_RegState_Cnf;

-#ifdef _R2_SUPPORT

-/*==============================================================================

- Ô­Óï: ATI_TSM_REGEXTINFO_IND_EV(TSM->ATI)

- ˵Ã÷: ×¢²áÏûϢЯ´øµÄ¶Ë¿Ú¼°µØÖ·ÐÅÏ¢Éϱ¨

-==============================================================================*/

-typedef struct

-{

-    BYTE                    bSrcIndex;

-    BYTE                    bDesIndex;

-

-    T_zAtiTsm_ServList      tServList;

-}T_zAtiTsm_RegExtInfo_Ind;

-#endif

-/*==============================================================================

- Ô­Óï: ATI_TSM_CALL_REQ_EV(ATI->TSM)

- ˵Ã÷: ºô½ÐÇëÇó

-==============================================================================*/

-typedef struct 

-{

-    BYTE                    bSrcIndex;

-    BYTE                    bDesIndex;

-    BYTE                    bCallType;

-    BITS                    bAudioDesCriptionFlag:1;

-    BITS                    bVideoDesCriptionFlag:1;

-    BITS                    bE2EkeyFg:1;

-    BITS                    bDialNumExtFg:1;

-    BITS                    bPadding:4;  

-

-    T_zAtiTsm_CallAttribute     tCallAttribute;

-    T_zAtiTsm_BCDNumber         tCalledNUmber;

-    T_zAtiTsm_AudioDiscrip      tAudioDiscrip;

-    T_zAtiTsm_VideoDiscrip      tVideoDiscrip;

-    T_zAtiTsm_E2EKey            tE2Ekey;

-    T_zAtiTsm_DialNumExt        tDialNumExt;

-} T_zAtiTsm_Call_Req;

-

-/*==============================================================================

- Ô­Óï:ATI_TSM_CALL_CNF_EV(TSM->ATI)

- ˵Ã÷: ºô½ÐÏìÓ¦

-==============================================================================*/

-typedef struct 

-{

-    BYTE                    bSrcIndex;

-    BYTE                    bDesIndex;

-

-    BITS                    bCauseFg:1;

-    BITS                    bCallTypeFg:1;

-    BITS                    bFloorStateFg:1;

-    BITS                    bE2EkeyFg:1;

-    BITS                    bAudioDesCriptionFlag:1;

-    BITS                    bVideoDesCriptionFlag:1;

-    BITS                    bCallAttributeFg:1;

-    BITS                    bPadding:1;

-

-    BYTE                    bCallResult;/*1: ºô½Ð³É¹¦ 0: ºô½Ðʧ°Ü*/

-

-    BYTE                    bCause;

-    BYTE                    bCallType;

-    BYTE                    bFloorState;

-    BYTE                    bPadding1;

-

-    DWORD                   dWCallId;

-

-    T_zAtiTsm_CallAttribute     tCallAttribute;

-    T_zAtiTsm_AudioDiscrip      tAudioDiscrip;

-    T_zAtiTsm_VideoDiscrip      tVideoDiscrip;

-    T_zAtiTsm_E2EKey            tE2Ekey;

-}T_zAtiTsm_Call_Cnf;

-

-/*==============================================================================

- Ô­Óï:ATI_TSM_CALLCONFIRM_REQ_EV(ATI->TSM)

- ˵Ã÷: ±»½ÐÈ·ÈÏÏûÏ¢

-==============================================================================*/

-typedef struct 

-{

-    BYTE                    bSrcIndex;

-    BYTE                    bDesIndex;

-

-    BYTE                    bAudioDesCriptionFlag;

-    BYTE                    bVideoDesCriptionFlag;

-    DWORD                   dwCallId;

-    T_zAtiTsm_AudioDiscrip      tAudioDiscrip;

-    T_zAtiTsm_VideoDiscrip      tVideoDiscrip;

-} T_zAtiTsm_CallConfirm_Req;

-

-/*==============================================================================

- Ô­Óï:ATI_TSM_CALLCONNECT_REQ_EV(ATI->TSM)

- ˵Ã÷: ±»½ÐÈ·ÈÏÁ¬½ÓÇëÇó

-==============================================================================*/

-typedef struct 

-{

-    BYTE                    bSrcIndex;

-    BYTE                    bDesIndex;

-

-    BYTE                    bAudioDesCriptionFlag;

-    BYTE                    bVideoDesCriptionFlag;

-

-    DWORD                   dwCallId;

-    T_zAtiTsm_AudioDiscrip      tAudioDiscrip;

-    T_zAtiTsm_VideoDiscrip      tVideoDiscrip;

-} T_zAtiTsm_CallConnect_Req;

-

-/*==============================================================================

- Ô­Óï:ATI_TSM_CALLRLS_REQ_EV(ATI->TSM)

- ˵Ã÷: ºô½ÐÊÍ·ÅÇëÇó

-              µ±²»Ð¯´ø²ÎÊýʱ£¬±íʾȡÏûÕýÔÚ·¢ÆðµÄÖ÷½Ð£¬

-              +PTTCALLRLSRSP: 0,0±íʾȡÏûµ±Ç°Ö÷½Ð³É¹¦¡£

-==============================================================================*/

-typedef struct 

-{

-    BYTE                    bSrcIndex;

-    BYTE                    bDesIndex;

-

-    BITS                    bCallIdFg:1;

-    BITS                    bCauseFg:1;

-    BITS                    bPadding:6;

-    BYTE                    bCause;

-    DWORD                   dwCallId;

-} T_zAtiTsm_CallRls_Req;

-

-/*==============================================================================

- Ô­Óï:ATI_TSM_CALLRLS_CNF_EV(TSM->ATI)

- ˵Ã÷: Ö÷¶¯ÊÍ·ÅÏìÓ¦

- 

- Ô­Óï: ATI_TSM_CALLRLS_IND_EV(TSM->ATI)

- ˵Ã÷: Íø²à»òÕߵײãÊͷźô½Ð

-==============================================================================*/

-typedef struct 

-{

-    BYTE                    bSrcIndex;

-    BYTE                    bDesIndex;

-    BYTE                    bCause;

-    BYTE                    bCallIdFg;

-    DWORD                   dwCallId;

-} T_zAtiTsm_CallRls_Cnf,T_zAtiTsm_CallRls_Ind;

-

-/*==============================================================================

- Ô­Óï:ATI_TSM_CALL_IND_EV(TSM->ATI)

- ˵Ã÷: ÊÕµ½±»½ÐÇëÇó

-==============================================================================*/

-typedef struct 

-{

-    BYTE                    bSrcIndex;

-    BYTE                    bDesIndex;

-

-    BYTE                    bCallType;

-    BYTE                    bPriority;

-    DWORD                   dwCallId;

-

-    BYTE                    bE2EkeyFg;

-    BYTE                    bAudioDesCriptionFlag;

-    BYTE                    bVideoDesCriptionFlag;

-    BYTE                    bDialNumExtFg;

-

-    T_zAtiTsm_BCDNumber         tCalledNUmber;

-    T_zAtiTsm_CallAttribute     tCallAttribute;

-    T_zAtiTsm_AudioDiscrip      tAudioDiscrip;

-    T_zAtiTsm_VideoDiscrip      tVideoDiscrip;

-    T_zAtiTsm_E2EKey            tE2Ekey;

-    T_zAtiTsm_DialNumExt        tDialNumExt;

-} T_zAtiTsm_Call_Ind;

-

-/*=============================================================================

- Ô­Óï:ATI_TSM_CALLPROCEED_IND_EV(TSM->ATI)

- ˵Ã÷: Ö÷½ÐÊÕµ½ÍøÂç²àµÄProceed Éϱ¨

-==============================================================================*/

-typedef struct 

-{

-    BYTE                    bSrcIndex;

-    BYTE                    bDesIndex;

-

-    BYTE                    bCallType;

-    BYTE                    bPriority;

-    DWORD                   dwCallId;

-

-    BYTE                    bE2EkeyFg;

-    BYTE                    bAudioDesCriptionFlag;

-    BYTE                    bVideoDesCriptionFlag;

-    BYTE                    bPadding;

-

-    T_zAtiTsm_BCDNumber         tCalledNUmber;

-    T_zAtiTsm_CallAttribute     tCallAttribute;

-    T_zAtiTsm_AudioDiscrip      tAudioDiscrip;

-    T_zAtiTsm_VideoDiscrip      tVideoDiscrip;

-    T_zAtiTsm_E2EKey            tE2Ekey;

-} T_zAtiTsm_CallProceed_Ind;

-

-/*==============================================================================

- Ô­Óï:ATI_TSM_CALLALERTING_IND_EV(TSM->ATI)

- ˵Ã÷: Ö÷½ÐÊÕµ½¶Ô·½µÄÕñÁå

-==============================================================================*/

-typedef struct 

-{

-    BYTE                    bSrcIndex;

-    BYTE                    bDesIndex;

-

-    BYTE                    bAudioDesCriptionFlag;

-    BYTE                    bPadding;

-

-    DWORD                   dwCallId;

-    T_zAtiTsm_AudioDiscrip      tAudioDiscrip;

-} T_zAtiTsm_CallAlerting_Ind;

-

-/*==============================================================================

- Ô­Óï:ATI_TSM_CALLCONNECTACK_IND_EV(TSM->ATI)

- ˵Ã÷: ±»½ÐÊÕµ½Á¬½ÓÓ¦´ðÈ·ÈÏ

-==============================================================================*/

-typedef struct 

-{

-    BYTE                    bSrcIndex;

-    BYTE                    bDesIndex;

-    BYTE                    abPadding[2];

-    

-    DWORD                   dwCallId;

-} T_zAtiTsm_CallConnectAck_Ind; 

-

-/*==============================================================================

- Ô­Óï:ATI_TSM_FLOOR_REQ_EV(ATI->TSM)

- ˵Ã÷: ÉêÇ뻰Ȩ

-==============================================================================*/

-typedef struct 

-{

-    BYTE                    bSrcIndex;

-    BYTE                    bDesIndex;

-

-    BYTE                    bAudioDesCriptionFlag;

-    BYTE                    bVideoDesCriptionFlag;

-

-    DWORD                   dwCallId;

-    T_zAtiTsm_AudioDiscrip      tAudioDiscrip;

-    T_zAtiTsm_VideoDiscrip      tVideoDiscrip;

-} T_zAtiTsm_Floor_Req;

-

-/*==============================================================================

- Ô­Óï:ATI_TSM_FLOORGRT_IND_EV(TSM->ATI)

- ˵Ã÷: »ñÈ¡µ½»°È¨µÄÖ÷¶¯Éϱ¨

-==============================================================================*/

-typedef struct 

-{

-    BYTE                    bSrcIndex;

-    BYTE                    bDesIndex;

-

-    BYTE                    bAudioDesCriptionFlag;

-    BYTE                    bVideoDesCriptionFlag;

-

-    DWORD                   dwCallId;

-    T_zAtiTsm_AudioDiscrip      tAudioDiscrip;

-    T_zAtiTsm_VideoDiscrip      tVideoDiscrip;

-} T_zAtiTsm_FloorGrt_Ind;

-

-/*==============================================================================

- Ô­Óï:ATI_TSM_FLOORRLS_REQ_EV(ATI->TSM)

- ˵Ã÷: »°È¨µÄÖ÷¶¯ÊÍ·ÅÇëÇó

-==============================================================================*/

-typedef struct 

-{

-    BYTE                    bSrcIndex;

-    BYTE                    bDesIndex;

-

-    BYTE                    bCause;

-    BYTE                    bPadding;

-    DWORD                   dwCallId;

-} T_zAtiTsm_FloorRls_Req;

-

-/*==============================================================================

- Ô­Óï:ATI_TSM_FLOORRLS_CNF_EV(TSM->ATI)

- ˵Ã÷: »°È¨µÄÖ÷¶¯ÊÍ·ÅÇëÇó

-

- Ô­Óï:ATI_TSM_FLOORRLS_IND_EV(TSM->ATI)

- ˵Ã÷: »°È¨µÄ±»ÊÍ·ÅIND

-

- Ô­Óï:ATI_TSM_FLOORREJ_IND_EV(TSM->ATI)

- ˵Ã÷: »°È¨µÄ¾Ü¾øIND

-==============================================================================*/

-typedef struct 

-{

-    BYTE                    bSrcIndex;

-    BYTE                    bDesIndex;

-

-    BYTE                    bCause;

-    BYTE                    bPadding;

-    DWORD                   dwCallId;

-} T_zAtiTsm_FloorRls_Cnf,T_zAtiTsm_FloorRls_Ind,T_zAtiTsm_FloorRej_Ind;

-

-/*==============================================================================

-  Ô­Óï:ATI_TSM_FLOORWAIT_IND_EV(TSM->ATI)

-  ˵Ã÷: ÉêÇ뻰Ȩ´¦ÓÚÅŶÓ״̬

-==============================================================================*/

-typedef struct 

-{

-    BYTE                    bSrcIndex;

-    BYTE                    bDesIndex;

-    BYTE                    abPadding[2];

-

-    DWORD                   dwCallId;

-} T_zAtiTsm_FloorWait_Ind;

-

-/*==============================================================================

-  Ô­Óï:ATI_TSM_FLOORINFORM_IND_EV(TSM->ATI)

-  ˵Ã÷: »°È¨ÐÅÏ¢µÄÖ÷¶¯Éϱ¨

-==============================================================================*/

-typedef struct 

-{

-    BYTE                    bSrcIndex;

-    BYTE                    bDesIndex;

-

-    BYTE                    bFloorInfoType;/*0:Õ¼ÓÐ1:¿ÕÏÐ*/

-

-    BITS                    bSeakerShortNumFg:1;

-    BITS                    bGroupShortNumFg:1;

-    BITS                    bGroupNumFg:1;

-    BITS                    bSpeakerNumFg:1;

-    BITS                    bSpeakerNameFg:1;

-    BITS                    bTransLayerAddrFg :1;

-    BITS                    bDialNumExtFg:1;

-    BITS                    bPadding:1;

-

-    DWORD                   dwCallId;

-

-    T_zAtiTsm_BCDNumber         tSeakerShortNum;

-    T_zAtiTsm_BCDNumber         tGroupShortNum;

-    T_zAtiTsm_BCDNumber         tGroupNum;

-    T_zAtiTsm_BCDNumber         tSpeakerNum;

-    T_zAtiTsm_UserName          tSpeakerName;

-    T_zAtiTsm_TransLayerAddr    tTransLayerAddr;                  

-    T_zAtiTsm_DialNumExt        tDialNumExt;

-} T_zAtiTsm_FloorInfo_Ind;

-

-/*==============================================================================

-  Ô­Óï:ATI_TSM_STUNINFO_QUERY_REQ_EV(ATI->TSM)

-  ˵Ã÷: Ò£ÔÎ״̬²éѯ

-==============================================================================*/

-typedef struct 

-{

-    BYTE                    bSrcIndex;

-    BYTE                    bDesIndex;

-    BYTE                    abPadding[2];

-} T_zAtiTsm_StunInfo_Query_Req;

-

-/*==============================================================================

-  Ô­Óï:ATI_TSM_STUNINFO_QUERY_CNF_EV(TSM->ATI)

-  ˵Ã÷: Ò£ÔÎ״̬²éѯCNF

-

-  Ô­Óï:ATI_TSM_STUNINFO_IND_EV(TSM->ATI)

-  ˵Ã÷: Ò£ÔÎ״̬Éϱ¨  

-==============================================================================*/

-typedef struct 

-{

-    BYTE                    bSrcIndex;

-    BYTE                    bDesIndex;

-    BYTE                    bStun;/*0:Ò£±Ð1:Ò£ÔÎ2:¸´»î*/

-    BYTE                    bPadding;

-} T_zAtiTsm_StunInfo_Query_Cnf,T_zAtiTsm_StunInfo_Ind;

-

-/*==============================================================================

-  Ô­Óï:ATI_TSM_GROUPINFO_QUERY_REQ_EV(ATI->TSM)

-  ˵Ã÷: ×éÐÅÏ¢²éѯ

-==============================================================================*/

-typedef struct 

-{

-    BYTE                    bSrcIndex;

-    BYTE                    bDesIndex;

-    BYTE                    abPadding[2];

-} T_zAtiTsm_GroupInfo_Query_Req;

-

-/*==============================================================================

-  ˵Ã÷: ¶¨Òå×éÐÅÏ¢

-==============================================================================*/

-typedef struct 

-{

-    BYTE                    bGroupIdFg;

-    BYTE                    bGroupNumberFg;

-    BYTE                    bGroupShortBCDNumberFg;

-    BYTE                    bGroupNameFg;

-    

-    BYTE                    bGroupIdBCDNumb[6];

-    BYTE                    abPadding[2];

-    

-    T_zAtiTsm_BCDNumber         tGroupNumber;

-    T_zAtiTsm_BCDNumber         tGroupShortBCDNumber;

-    T_zAtiTsm_GroupName         tGroupName;

-} T_zAtiTsm_GroupInfo;

-

-/*==============================================================================

-  Ô­Óï:ATI_TSM_GROUPINFO_QUERY_REQ_EV(ATI->TSM)

-  ˵Ã÷: ×éÐÅÏ¢²éѯ

-==============================================================================*/

-typedef struct 

-{

-    BYTE                    bSrcIndex;

-    BYTE                    bDesIndex;

-    BYTE                    bGroupInfoNum;

-    BYTE                    bPadding;

-    

-    T_zAtiTsm_GroupInfo     atGroupInfo[Z_ATITSM_MAX_GROUPINFO_NUM];

-} T_zAtiTsm_GroupInfo_Query_Cnf;

-/*==============================================================================

-  Ô­Óï:ATI_TSM_GROUPINFO_UPDATE_IND_EV(TSM->ATI)

-  ˵Ã÷: ×éÐÅÏ¢¸üÐÂ֪ͨ

-==============================================================================*/

-typedef struct 

-{

-    BYTE                    bSrcIndex;

-    BYTE                    bDesIndex;

-

-    BYTE                    bMessageSQNumFg :1;

-    BYTE                    abPadding :7;

-

-    BYTE                    bCurNumber :4;

-    BYTE                    bSumNumber :4;

-} T_zAtiTsm_GroupInfo_Ind;

-

-/*==============================================================================

-  Ô­Óï:ATI_TSM_GROUPCALL_IND_EV(TSM->ATI)

-  ˵Ã÷: ×éºô±»½ÐµÄÖ÷¶¯Éϱ¨

-==============================================================================*/

-typedef struct 

-{

-    BYTE                    bSrcIndex;

-    BYTE                    bDesIndex;

-

-    BYTE                    bCallType;

-

-    BITS                    bCalledNUmberFg:1;

-    BITS                    bAudioDesCriptionFlag:1;

-    BITS                    bVideoDesCriptionFlag:1;

-    BITS                    bE2EkeyFg:1;

-    BITS                    bGroupShortBCDNumberFg:1;

-    BITS                    bPadding:3;

-

-    DWORD                   dwCallId;

-    T_zAtiTsm_CallAttribute     tCallAttribute;

-    T_zAtiTsm_BCDNumber         tCalledNUmber;

-    T_zAtiTsm_AudioDiscrip      tAudioDiscrip;

-    T_zAtiTsm_VideoDiscrip      tVideoDiscrip;

-    T_zAtiTsm_E2EKey            tE2Ekey;

-

-    T_zAtiTsm_BCDNumber         tGroupNumber;

-    T_zAtiTsm_BCDNumber         tGroupShortBCDNumber;

-} T_zAtiTsm_GroupCall_Ind;

-

-/*==============================================================================

-  Ô­Óï:ATI_TSM_SCANGROUPINFO_REQ_EV(ATI->TSM)

-  ˵Ã÷: ɨÃè×éµÄÉèÖÃÇëÇó

-==============================================================================*/

-typedef struct 

-{

-    BYTE                    bSrcIndex;

-    BYTE                    bDesIndex;

-    BYTE                    bScanType;/*0£ºÍêȫɨÃ蹦ÄÜ 1£º²¿·ÖɨÃ蹦ÄÜ 2£º¹Ø±ÕɨÃ蹦ÄÜ:*/

-    BYTE                    bScanGroupLen;

-

-    T_zAtiTsm_BCDNumber         atGroupNumber[Z_ATITSM_MAX_SCANGROUP_NUM];

-} T_zAtiTsm_ScanInfo_Req;

-

-/*==============================================================================

- Ô­Óï:ATI_TSM_SCANGROUPINFO_CNF_EV(TSM->ATI)

- ˵Ã÷: ɨÃè×éÉèÖýá¹û

-==============================================================================*/

-typedef struct 

-{

-    BYTE                    bSrcIndex;

-    BYTE                    bDesIndex;

-

-    BYTE                    bCause;

-    BYTE                    bPadding;

-} T_zAtiTsm_ScanGroupInfo_Cnf;

-

-/*==============================================================================

-  Ô­Óï:ATI_TSM_SCANGROUPINFO_IND_EV(TSM->ATI)

-  ˵Ã÷: ÏàͬÓÅÏȼ¶µÄɨÃè×éÐÅÏ¢Éϱ¨

-==============================================================================*/

-typedef struct 

-{

-    BYTE                    bSrcIndex;

-    BYTE                    bDesIndex;

-    BYTE                    bPadding;

-    BYTE                    bGroupLen;

-    

-    T_zAtiTsm_BCDNumber         atGroupNumber[Z_ATITSM_MAX_SCANGROUP_IND_NUM];

-    BYTE                    abPadding[3];

-} T_zAtiTsm_ScanGroupInfo_Ind;

-

-/*==============================================================================

-  Ô­Óï:ATI_TSM_SCANSWITCH_REQ_EV(ATI->TSM)

-  ˵Ã÷: ͨ»°Çл»ÇëÇó

-==============================================================================*/

-typedef struct 

-{

-    BYTE                    bSrcIndex;

-    BYTE                    bDesIndex;

-    BYTE                    bSwitchType;/*0£ºÇл»È¥¼¤»î1£ºÇл»¼¤»î*/

-    BYTE                    bGroupNumberFg;

-    T_zAtiTsm_BCDNumber         tGroupNumber;

-} T_zAtiTsm_ScanSwich_Req;

-

-/*==============================================================================

-  Ô­Óï:ATI_TSM_SHAKEHAND_REQ_EV(ATI->TSM)

-  ˵Ã÷: ÎÕÊÖÇëÇó

-==============================================================================*/

-typedef struct 

-{

-    BYTE                    bSrcIndex;

-    BYTE                    bDesIndex;

-    BYTE                    abPadding[2];

-} T_zAtiTsm_ShakeHand_Req;

-

-/*==============================================================================

-  Ô­Óï:ATI_TSM_SHAKEHAND_CNF_EV(TSM->ATI)

-  ˵Ã÷: ÎÕÊÖÇëÇóÈ·ÈÏ

-==============================================================================*/

-typedef struct 

-{

-    BYTE                    bSrcIndex;

-    BYTE                    bDesIndex;

-    BYTE                    bStunType;/*0:Ò£±Ð1:Ò£ÔÎ2:¸´»î*/

-    BYTE                    bFallBackState;/*0:Õý³£Ä£Ê½1:¹ÊÕÏÈõ»¯Ä£Ê½*/

-    

-    BYTE                    bRegState;/*0:δע²á1:×¢²á*/

-    BYTE                    bCallState;/*0:ºô½Ð¿ÕÏÐ1:ºô½Ðͨ»°*/

-    BYTE                    bFloorState;/*0:˵»°È¨1:Ìý»°È«*/

-    BYTE                    bPadding;

-} T_zAtiTsm_ShakeHand_Cnf;

-

-/*==============================================================================

-  Ô­Óï:ATI_TSM_SHORT_DATA_REQ _EV(ATI->TSM)

-  ˵Ã÷: ·¢ËÍÊý¾ÝÇëÇó

-

-  Ô­Óï:ATI_TSM_SHORT_DATA_IND _EV _EV(TSM->ATI)

-  ˵Ã÷: ÊÕµ½MT¶ÌÊý¾Ý

-==============================================================================*/

-typedef struct 

-{

-    BYTE                    bSrcIndex;

-    BYTE                    bDesIndex;

-    BYTE                    bDataType;/*01  ¶ÌÊý¾ÝºÍ״̬Êý¾Ý02  ¶Ëµ½¶Ë¼ÓÃÜÃÜÔ¿*/

-    BYTE                    bPadding;

-

-    WORD                    wShortDataLen;

-    BYTE                    abPadding[2];

-

-    BYTE                    abShortData[Z_ATITSM_MAX_SHORTDATA_LEN];

-} T_zAtiTsm_Short_Data_Req,T_zAtiTsm_Short_Data_Ind;

-

-/*==============================================================================

-  Ô­Óï:ATI_TSM_LOCATINFO_REQ_EV(ATI->TSM)

-  ˵Ã÷: ·¢ËͶ¨Î»ÇëÇó

-==============================================================================*/

-typedef struct 

-{

-    BYTE                    bSrcIndex;

-    BYTE                    bDesIndex;

-    BYTE                    bGpsTag;

-    BYTE                    bPadding;

-

-    BYTE                    bLongitudeDir;

-    BYTE                    bLatitudeDir;

-    BYTE                    abPadding[2];

-

-    DWORD                   dwLongitude;

-    DWORD                   dwLatitude;

-    DWORD                   dwCertainty;

-    DWORD                   dwBearing;

-    DWORD                   dwSpeedIntPart;

-    DWORD                   dwSpeedFractPart;

-} T_zAtiTsm_LocatInfo_Req;

-

-/*==============================================================================

-  Ô­Óï:ATI_TSM_LOCATINFO_TYPE_IND_EV(TSM->ATI)

-  ˵Ã÷: Ö÷¶¯Éϱ¨¶¨Î»ÀàÐÍ

-==============================================================================*/

-typedef struct 

-{

-    BYTE                    bSrcIndex;

-    BYTE                    bDesIndex;

-    BYTE                    bOperateType;/*0£ºÆÕͨģʽ¶¨Î»1£º½ô¼±Ä£Ê½¶¨Î»*/

-    BYTE                    bPadding;

-} T_zAtiTsm_LocatInfo_Type_Ind;

-

-/*==============================================================================

-  Ô­Óï:ATI_TSM_SETABILITY_REQ_EV(ATI->TSM)

-  ˵Ã÷: ÉèÖü¯ÈºÄÜÁ¦

-==============================================================================*/

-typedef struct 

-{

-    BYTE                     bSrcIndex;

-    BYTE                     bDesIndex;

-    BYTE                     abPadding[2];

-

-    T_zAtiTsm_AudioCodecCapa     tAudioCodecCapability;

-    T_zAtiTsm_VideoCodecCapa     tVideoCodecCapability;

-    T_zAtiTsm_UeTrunkCapa        tUeTrunkCapa;

-} T_zAtiTsm_SetAbility_Req;

-

-/*==============================================================================

-  Ô­Óï:ATI_TSM_FALLBACK_IND_EV(TSM->ATI)

-  ˵Ã÷: ¹ÊÕÏÈõ»¯×´Ì¬Éϱ¨

-==============================================================================*/

-typedef struct 

-{

-    BYTE                    bSrcIndex;

-    BYTE                    bDesIndex;

-    BYTE                    bState;/*ȡֵ0:Õý³£Ä£Ê½1:¹ÊÕÏÈõ»¯Ä£Ê½*/

-    BYTE                    bPadding;

-} T_zAtiTsm_FallBack_Ind;

-

-/*==============================================================================

-  Ô­Óï:ATI_TSM_SPEAKINGTIMEROUT_IND_EV(TSM->ATI)

-  ˵Ã÷: »°È«¼´½«³¬Ê±Í¨Öª

-==============================================================================*/

-typedef struct 

-{

-    BYTE                    bSrcIndex;

-    BYTE                    bDesIndex;

-    BYTE                    bCauseFg;

-    BYTE                    bTSpeakOutValueFg;

-    BYTE                    bPadding;

-    BYTE                    bCause;

-    WORD                    wTSpeakOutValue;               

-} T_zAtiTsm_SpeakingTimerOut_Ind;

-

-/*==============================================================================

-  Ô­Óï:ATI_TSM_VIDEOSOURCE_IND_EV(TSM->ATI)

-  ˵Ã÷: ÊÓÆµÔ´Í¨Öª

-==============================================================================*/

-typedef struct 

-{

-    BYTE                     bSrcIndex;

-    BYTE                     bDesIndex;

-    

-    BYTE                     bPadding;

-    BYTE                     bSpare:4;

-    BYTE                     bVideoSourcenameFg :1;

-    BYTE                     bVideoSourceIDFg :1;

-    BYTE                     bTransLayerAddrFg :1;

-    BITS                     bDialNumExtFg :1;

-    

-    DWORD                    dwCallId;

-    T_zAtiTsm_BCDNumber          tVideoSourceID;

-    T_zAtiTsm_UserName           tVideoSourcename;      

-    T_zAtiTsm_TransLayerAddr     tTransLayerAddr;    

-    T_zAtiTsm_DialNumExt         tDialNumExt;

-} T_zAtiTsm_VideoSource_Ind;

-/*==============================================================================

-  Ô­Óï:ATI_TSM_SRSTATUS_IND_EV(TSM->ATI)

-  ˵Ã÷: ÒµÎñÊÇ·ñ״̬Éϱ¨

-==============================================================================*/

-typedef struct 

-{

-    BYTE                    bSrcIndex;

-    BYTE                    bDesIndex;

-    BYTE                    bSrStatus;/*ȡֵ0:Õý³£1:ÊÜÏÞ*/

-    BYTE                    bPadding;

-} T_zAtiTsm_SRStatus_Ind;

-

-/*==============================================================================

- Ô­Óï:ATI_TSM_CALLHOLD_IND_EV(TSM->ATI)

- ˵Ã÷: ÊÕµ½TSMµÄcall Hold ÏûÏ¢

-==============================================================================*/

-typedef struct 

-{

-    BYTE                    bSrcIndex;

-    BYTE                    bDesIndex;

-

-    BYTE                    bCallHoldType; 

-    DWORD                   dwCallId;

-

-    BYTE                    bCalledNUmberFg;

-    BYTE                    bDialNumExtFg;

-

-    T_zAtiTsm_BCDNumber         tCalledNUmber;

-    T_zAtiTsm_DialNumExt        tDialNumExt;

-} T_zAtiTsm_CallHold_Ind;

-

-/*============================================================

-Ô­Óï:ATI_TSM_BUSY_ALERTING_IND_EV(TSM->ATI)

-˵Ã÷:֪ͨ¸ßÓÅÏȼ¶ºô½Ð

-=============================================================*/

-typedef struct {

-    BYTE                        bSrcIndex;           

-    BYTE                        bDesIndex;           /*Ä¿µÄË÷Òý¹Ì¶¨Ìî³É255¼´¿É*/

-    BYTE                        bCallmode;           /*0°ëË«¹¤µ¥ºô 1×éºô£¬2ȫ˫¹¤µ¥*/     

-    BYTE                        abPadding;

-    T_zAtiTsm_BCDNumber             tCalledNUmber;      /*µ¥ºôÊÇÖ÷½ÐNUMBER, ×éºôÊÇÖ¸×é¶ÔÓ¦µÄGID*/

-}T_zAtiTsm_Busy_Alerting_Ind;

-

-

-/*==============================================================================

-  Ô­Óï:ATI_TSM_PTTBEAR_IND_EV(TSM->ATI)

-  ˵Ã÷: ·¢ËͳÐÔØÇëÇó

-==============================================================================*/

-typedef struct 

-{

-    BYTE                    bSrcIndex;

-    BYTE                    bDesIndex;

-    BYTE                    bPttBearAtCidNum;

-

-    BYTE                    abPttBearAtCid[Z_ATITSM_PTTBEAR_NUM];

-} T_zAtiTsm_PttBear_Ind;

-

-

-/*============================================================

-Ô­Óï:ATI_TSM_CALLFORWARD_REQ_EV(ATI-->TSM)

-˵Ã÷:֪ͨTSM½øÐкô½Ðǰת¼¤»î¡¢È¥¼¤»î¡¢²éѯ

-=============================================================*/

-typedef struct 

-{

-    BYTE                    bSrcIndex;

-    BYTE                    bDesIndex;

-    BYTE                    bMode;

-    BITS                     bSpare:6; 

-    BITS                     bCallForwardFlag:1;    

-    BITS                     bDialNumExtFg:1;

-

-    T_zAtiTsm_BCDNumber       tDstCalledNumber;

-    T_zAtiTsm_DialNumExt      tDialNumExt;

-} T_zAtiTsm_CallForward_Req;

-

-

-/*============================================================

-Ô­Óï:ATI_TSM_CALLFORWARD_IND_EV(TSM->ATI)

-˵Ã÷:»Ø¸´ATI¼¤»î/È¥¼¤»îÈ·ÈÏ¡¢²éѯ½á¹û

-=============================================================*/

-typedef struct 

-{

-    BYTE                        bSrcIndex;

-    BYTE                        bDesIndex;

-    BYTE                        bMode;

-    BYTE                        bResult;

-

-    BITS                        bSpare:6; 

-    BITS                        bCallForwardFlag:1;

-    BITS                        bDialNumExtFg:1;

-

-    T_zAtiTsm_BCDNumber          tDstCalledNumber;

-    T_zAtiTsm_DialNumExt         tDialNumExt;

-} T_zAtiTsm_CallForward_Ind;

-

-

-/*==============================================================================

-  Ô­Óï:ATI_TSM_CALL_MODIFY_REQUEST(TSM->ATI)

-  ˵Ã÷: ýÌåÐÞ¸ÄÇëÇóÏûÏ¢µÄÖ÷¶¯Éϱ¨

-==============================================================================*/

-typedef struct 

-{

-    BYTE                    bSrcIndex;

-    BYTE                    bDesIndex;

-    BYTE                    bAudioDesCriptionFlag;

-    BYTE                    bVideoDesCriptionFlag;

-

-    DWORD                   dwCallId;

-    T_zAtiTsm_AudioDiscrip      tAudioDiscrip;

-    T_zAtiTsm_VideoDiscrip      tVideoDiscrip;

-} T_zAtiTsm_CallModify_Req;

-

-

-/*==============================================================================

-  Ô­Óï:ATI_TSM_CALL_MODIFY_ACK(TSM->ATI)

-  ˵Ã÷: ýÌåÐÞ¸ÄÇëÇóÏûÏ¢µÄÖ÷¶¯Éϱ¨

-==============================================================================*/

-typedef struct 

-{

-    BYTE                    bSrcIndex;

-    BYTE                    bDesIndex;

-

-    BYTE                    bCauseFlag;

-    BYTE                    bResult;

-

-    BYTE                    bCause;

-    BYTE                    abPadding[3];

-

-    DWORD                   dwCallId;

-} T_zAtiTsm_CallModify_Ack;

-

-

-/*==============================================================================

-  Ô­Óï:ATI_TSM_CALL_MODIFY_RSP(ATI->TSM)

-  ˵Ã÷: AP³É¹¦ÏìӦýÌåÐÞ¸ÄÇëÇóÏûÏ¢

-==============================================================================*/

-typedef struct 

-{

-    BYTE                    bSrcIndex;

-    BYTE                    bDesIndex;

-    BYTE                    bAudioDesCriptionFlag;

-    BYTE                    bVideoDesCriptionFlag;

-

-    DWORD                   dwCallId;

-    T_zAtiTsm_AudioDiscrip      tAudioDiscrip;

-    T_zAtiTsm_VideoDiscrip      tVideoDiscrip;

-} T_zAtiTsm_CallModify_Rsp;

-

-

-/*==============================================================================

-  Ô­Óï:ATI_TSM_CALL_MODIFY_REJ(ATI->TSM)

-  ˵Ã÷: APʧ°ÜÏìӦýÌåÐÞ¸ÄÇëÇóÏûÏ¢

-==============================================================================*/

-typedef struct 

-{

-    BYTE                    bSrcIndex;

-    BYTE                    bDesIndex;

-

-    BYTE                    bCause;

-    BYTE                    bPadding;

-

-    DWORD                   dwCallId;

-} T_zAtiTsm_CallModify_Rej;

-

-#endif

-/*==============================================================================
- Ô­ÓZ_MmiaAs_RptRxlev_Req_Ev (MMIA->MCR)
-       RRMI_START_RXSTAT_REQ (MMIA->GRR)
-
- ˵Ã÷: 1)MMIAÉèÖÃMCRÐźÅÇ¿¶ÈÖ÷¶¯Éϱ¨²ÎÊý (Z_MmiaAs_RptRxlev_Req_Ev)
-       2)MMIAÉèÖÃGRRÐźÅÇ¿¶ÈÖ÷¶¯Éϱ¨²ÎÊý (RRMI_START_RXSTAT_REQ)
-
- ×¢£º¸Ã½á¹¹±ØÐëºÍ2GʹÓõÄyPDef_RRMI_START_RXSTAT_REQ½á¹¹Ïàͬ
-==============================================================================*/
-typedef struct {
-    BYTE                        bSrcIndex;        /* Ô´Ë÷Òý */
-    BYTE                        bDesIndex;       /* Ä¿µÄË÷Òý*/
-    BYTE                        bRxlevThred;   /*
-                                                *  ÐźÅÇ¿¶È±ä»¯·§Öµ£¬Éϱ¨Ìõ¼þ,µ±ÐźŸıä+/-(bRxlevThred)ʱÉϱ¨¡£
-                                                   TDDÐźű仯·¶Î§ÊÇ0-91£¬GSMÐźű仯·¶Î§ÊÇ0£­63¡£
-                                                *  1£ºÐźŸıä1DB¾ÍÉϱ¨
-                                                *  2£ºÐźŸıä2DB¾ÍÉϱ¨
-                                                *...
-                                                *  0xFF£º¹Ø±ÕÖ÷¶¯Éϱ¨
-                                                */
-    BYTE                        bPadding;
-}T_zMmiaAs_RptRxlev_Req;
-
-/*==============================================================================
- Ô­ÓZ_MmiaAS_RptRxlev_Ind_Ev( MCR->MMIA ); 
-       Z_MmiaAs_QueryRxlev_Cnf_Ev( MCR->MMIA )
-       RRMI_RXSTAT_IND ( GRR->MMIA )
-       RRAT_RXSTAT_IND ( GRR->MMIA )
-
- ˵Ã÷: 1)MCRÐźŸı䳬¹ý·§ÖµÊ±Éϱ¨ÐźÅÇ¿¶È (Z_MmiaAS_RptRxlev_Ind_Ev);
-       2)MCR²éѯʱÉϱ¨ÐźÅÇ¿¶È (Z_MmiaAs_QueryRxlev_Cnf_Ev)
-       3)GRRÐźŸı䳬¹ý·§ÖµÊ±Éϱ¨ÐźÅÇ¿¶È (RRMI_RXSTAT_IND)
-       4)GRR²éѯʱÉϱ¨ÐźÅÇ¿¶È (RRAT_RXSTAT_IND)
-
- ×¢£º¸Ã½á¹¹±ØÐëºÍ2GʹÓõÄyPDef_RRMI_RXSTAT_IND½á¹¹Ïàͬ
-==============================================================================*/
-typedef struct {
-    BYTE                        bSrcIndex;  /* Ô´Ë÷Òý */
-    BYTE                        bDesIndex;  /* Ä¿µÄË÷Òý*/
-    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];
-}T_zMmiaAs_RptRxlev_Ind;

-

-/*==============================================================================
- Ô­ÓZ_MmiaAs_EM_CellInfoReq_Ev (MMIA->UMCR)
-       RR_EM_CELL_INFO_REQ (MMIA->GRR)
- ˵Ã÷: ¹¤³ÌģʽÏÂMMIA֪ͨUMCR¿ªÆôÖ÷¶¯Éϱ¨Ð¡ÇøÐÅÏ¢ (Z_MmiaAs_EM_CellInfoReq_Ev)
-       ¹¤³ÌģʽÏÂMMIA֪ͨGRR¿ªÆôÖ÷¶¯Éϱ¨Ð¡ÇøÐÅÏ¢ (RR_EM_CELL_INFO_REQ)
-
- ×¢£º¸Ã½á¹¹±ØÐëºÍ2GʹÓõÄyPDef_RR_EM_CELL_INFO_REQ½á¹¹Ïàͬ
-==============================================================================*/
- typedef struct {
-    BYTE                                         bSrcIndex;  /* Ô´Ë÷Òý */
-    BYTE                                         bDesIndex;  /* Ä¿µÄË÷Òý*/
-    BYTE                                         bAction;       /*1:´ò¿ªÐ¡ÇøÐÅÏ¢Ö÷¶¯Éϱ¨£¬0:¹Ø±ÕÐ¡ÇøÐÅÏ¢Ö÷¶¯Éϱ¨*/
-    BYTE                                         bPadding;
-}T_zMmiaAs_EM_CellInfo_Req;
-
-/*==============================================================================
- Ô­ÓZ_MmiaAs_EM_UCellInfoInd_Ev
- ˵Ã÷£º¹¤³ÌģʽÏÂUMCRÖÜÆÚÐÔÉϱ¨UTRANÐ¡ÇøÐÅÏ¢£¨ÖÜÆÚÔݶ¨Îª1s£©
-==============================================================================*/
-typedef struct {
-    BYTE                                         bSrcIndex;  /* Ô´Ë÷Òý */
-    BYTE                                         bDesIndex;  /* Ä¿µÄË÷Òý*/
-    BYTE                                         abPadding0[2];
-/*ÍøÂçÐÅÏ¢*/
-    DWORD                                        dwCellId;      /*ϵͳÐÅÏ¢Öй㲥µÄCI*/
-    BYTE                                         bRac;          /*·ÓÉÇø*/
-    BYTE                                         bPadding1;
-    WORD                                         wLac;          /*λÖÃÇø*/
-    T_z_PlmnId                                   tPlmnId;       /*µ±Ç°×¤ÁôµÄplmnid*/
-    BYTE                                         bPadding2;
-/*·þÎñÐ¡ÇøÐÅÏ¢*/
-    T_z_CellInfo                                 tSCell;
-    BYTE                                         bSubMode;      /*µ±Ç°×Óģʽ*/
-    BYTE                                         bAtt;
-    BYTE                                         bNmo;          /*Network mode*/
-    BYTE                                         bRscp;         /*·þÎñÐ¡ÇøÐźÅÖÊÁ¿£¬TDÐ¡ÇøÎªRSCP£¬GSMÐ¡ÇøÎªRSSI LTEΪRSRP*/
-
-    WORD                                         wT3212;
-    WORD                                         wWFreq;        /*¹¤×÷Ƶµã*/
-
-    BYTE                                         bBand;
-/*ÁÚÇøÐÅÏ¢*/
-    BYTE                                         bNTCellNum;    /*ʵ¼ÊÉϱ¨TDÁÚÇøÊý£¬¿ÉÒÔΪ0*/
-    BYTE                                         bNGCellNum;    /*ʵ¼ÊÉϱ¨GSMÁÚÇøÊý,¿ÉÒÔΪ0*/
-    BYTE                                         bNLCellNum;    /*ʵ¼ÊÉϱ¨LTEÁÚÇøÊý,¿ÉÒÔΪ0*/
-
-    T_z_TdCell                                   atNTCellList[Z_EM_MAX_NTCELL_NUM]; /*TDÁÚÇøÁÐ±í£¬°´RSCP´ÓÇ¿µ½ÈõÅÅÐò£¬Êý×é0Ϊ×îÇ¿Ð¡Çø*/
-    BYTE                                         abNTCellRscpList[Z_EM_MAX_NTCELL_NUM];/*TDÁÚÇøRSCPÖµ£¬ºÍatNTCellListÖÐÐ¡ÇøÒ»Ò»¶ÔÓ¦*/
-    BYTE                                         abPadding3[2];
-
-    T_z_GsmCell                                  atNGCellList[Z_EM_MAX_NGCELL_NUM]; /*GSMÁÚÇøÁÐ±í£¬°´RSSI´ÓÇ¿µ½ÈõÅÅÐò£¬Êý×é0Ϊ×îÇ¿Ð¡Çø*/
-    BYTE                                         abNGCellRssiList[Z_EM_MAX_NGCELL_NUM];/*GSMÁÚÇøRSSIÖµ£¬ºÍatNGCellListÖÐÐ¡ÇøÒ»Ò»¶ÔÓ¦*/
-    BYTE                                         abNGCellMinRxlevList[Z_EM_MAX_NGCELL_NUM];/*GSMÁÚÇø×îС½ÓÊÕµçÆ½Öµ£¬ºÍatNGCellListÖÐÐ¡ÇøÒ»Ò»¶ÔÓ¦¡£
-                                                                                         ÈôÎÞÏàӦϵͳÐÅÏ¢£¬ÔòֵΪ0*/
-                                                                                         
-    T_z_LteCell                                  atNLCellList[Z_EM_MAX_NLCELL_NUM]; /*LTEÁÚÇøÁÐ±í£¬°´RSRP´ÓÇ¿µ½ÈõÅÅÐò£¬Êý×é0Ϊ×îÇ¿Ð¡Çø*/
-    BYTE                                         abNLCellRsrpList[Z_EM_MAX_NLCELL_NUM];/*LTEÁÚÇøRSRPÖµ£¬ºÍatNLCellListÖÐÐ¡ÇøÒ»Ò»¶ÔÓ¦*/
-    BYTE                                         abNLCellRsrqList[Z_EM_MAX_NLCELL_NUM];/*LTEÁÚÇøRSRqÖµ£¬ºÍatNLCellListÖÐÐ¡ÇøÒ»Ò»¶ÔÓ¦*/
-    BYTE                                         abDetetFlg[Z_EM_MAX_NLCELL_NUM];/*×Ô¼ìÐ¡Çø±êʶ£¬ºÍatNLCellListÖÐÐ¡ÇøÒ»Ò»¶ÔÓ¦£¬
-                                                                                                        ȡֵ1±íʾÊÇ×Ô¼º¼ì²â³öµÄÐ¡Çø£¬È¡Öµ0±íʾÊÇÍø²àÏ·¢µÄÐ¡Çø*/    
-}T_zMmiaAs_EM_UCellInfo_Ind;
-
-/*==============================================================================
- Ô­ÓRR_EM_CELL_INFO_IND
- ˵Ã÷£ºGRR·¢Ë͸øMMIAµÄGSMÐ¡ÇøÐÅÏ¢£¨½á¹¹Í¬2GµÄyPDef_RR_EM_CELL_INFO_IND£©
-==============================================================================*/
-typedef struct {
-    BYTE                                         bSrcIndex;  /* Ô´Ë÷Òý */
-    BYTE                                         bDesIndex;  /* Ä¿µÄË÷Òý*/
-    BYTE                                         abPadding0[2];
-/*ÍøÂçÐÅÏ¢*/
-    DWORD                                        dwCellId;      /*ϵͳÐÅÏ¢Öй㲥µÄCI*/
-    BYTE                                         bRac;          /*·ÓÉÇø*/
-    BYTE                                         bPadding1;
-    WORD                                         wLac;          /*λÖÃÇø*/
-    T_z_PlmnId                                   tPlmnId;       /*µ±Ç°×¤ÁôµÄplmnid*/
-    BYTE                                         bPadding2;
-/*·þÎñÐ¡ÇøÐÅÏ¢*/
-    T_z_CellInfo                                 tSCell;
-    BYTE                                         bSubMode;      /*µ±Ç°×Óģʽ*/
-    BYTE                                         bAtt;
-    BYTE                                         bNmo;          /*Network mode*/
-    BYTE                                         bRssi;         /*·þÎñÐ¡ÇøÐźÅÖÊÁ¿£¬TDÐ¡ÇøÎªRSCP£¬GSMÐ¡ÇøÎªRSSI LTEΪRSRP*/
-
-    WORD                                         wT3212;  
-    WORD                                         wDchArfcn;     /*GSMµ±Ç°Æµµã*/
-    BYTE                                         bLinkTimeOut;/*ÎÞÏßÁ´Â·Ê§°Ü¼ÆÊýÆ÷*/
-    BYTE                                         abPadding3[3];
-
-/*GSM·þÎñÐ¡Çø¸½¼ÓÐÅÏ¢,½öÔÚ·þÎñÐ¡ÇøÖÆÊ½ÎªGSMʱÓÐЧ*/
-    SHORT                                        sC1;           /* ·¾¶ËðºÄ*/
-    SHORT                                        sC2;
-    SHORT                                        sC31;
-    SHORT                                        sC32;
-    
-    BYTE                                         bSupGprs;      /* Ð¡ÇøÊÇ·ñÖ§³ÖGPRS*/
-    BYTE                                         bSupDtxFg;     /* Ð¡ÇøÊÇ·ñÖ§³ÖDTX*/
-    BYTE                                         bSupHop;       /* Ð¡ÇøÊÇ·ñÖ§³ÖÌøÆµ*/
-    BYTE                                         bTav;          /* ʱ¼äÌáǰÁ¿*/
-
-/*ÁÚÇøÐÅÏ¢*/
-    BYTE                                         bNTCellNum;    /*ʵ¼ÊÉϱ¨TDÁÚÇøÊý£¬¿ÉÒÔΪ0*/
-    BYTE                                         bNGCellNum;    /*ʵ¼ÊÉϱ¨GSMÁÚÇøÊý,¿ÉÒÔΪ0*/
-    BYTE                                         bNLCellNum;    /*ʵ¼ÊÉϱ¨LTEÁÚÇøÊý,¿ÉÒÔΪ0*/
-    BYTE                                         bPadding4;
-
-    T_z_TdCell                                   atNTCellList[Z_EM_MAX_NTCELL_NUM]; /*TDÁÚÇøÁÐ±í£¬°´RSCP´ÓÇ¿µ½ÈõÅÅÐò£¬Êý×é0Ϊ×îÇ¿Ð¡Çø*/
-    BYTE                                         abNTCellRscpList[Z_EM_MAX_NTCELL_NUM];/*TDÁÚÇøRSCPÖµ£¬ºÍatNTCellListÖÐÐ¡ÇøÒ»Ò»¶ÔÓ¦*/
-    BYTE                                         abPadding5[2];
-
-    T_z_NGcell_info                              aNGcellInfo[Z_EM_MAX_NGCELL_NUM];/*GSMÁÚÇøÐÅÏ¢£¬°´RSSI´ÓÇ¿µ½ÈõÅÅÐò£¬Êý×é0Ϊ×îÇ¿Ð¡Çø*/
-    
-    T_z_LteCell                                  atNLCellList[Z_EM_MAX_NLCELL_NUM]; /*LTEÁÚÇøÁÐ±í£¬°´RSRP´ÓÇ¿µ½ÈõÅÅÐò£¬Êý×é0Ϊ×îÇ¿Ð¡Çø*/
-    BYTE                                         abNLCellRsrpList[Z_EM_MAX_NLCELL_NUM];/*LTEÁÚÇøRSRPÖµ£¬ºÍatNLCellListÖÐÐ¡ÇøÒ»Ò»¶ÔÓ¦*/
-    BYTE                                         abNLCellRsrqList[Z_EM_MAX_NLCELL_NUM];/*LTEÁÚÇøRSRqÖµ£¬ºÍatNLCellListÖÐÐ¡ÇøÒ»Ò»¶ÔÓ¦*/
-    BYTE                                         abDetetFlg[Z_EM_MAX_NLCELL_NUM];/*×Ô¼ìÐ¡Çø±êʶ£¬ºÍatNLCellListÖÐÐ¡ÇøÒ»Ò»¶ÔÓ¦£¬
-                                                                                                        ȡֵ1±íʾÊÇ×Ô¼º¼ì²â³öµÄÐ¡Çø£¬È¡Öµ0±íʾÊÇÍø²àÏ·¢µÄÐ¡Çø*/
-}T_zMmiaAs_EM_GCellInfo_Ind;
-
-/*==============================================================================
- Ô­ÓZ_MmiaAs_EM_EUCellInfoInd_Ev
- ˵Ã÷£º¹¤³ÌģʽÏÂEUMCRÖÜÆÚÐÔÉϱ¨UTRANÐ¡ÇøÐÅÏ¢£¨ÖÜÆÚÔݶ¨Îª1s£©
-==============================================================================*/
-typedef struct {
-    BYTE                                         bSrcIndex;  /* Ô´Ë÷Òý */
-    BYTE                                         bDesIndex;  /* Ä¿µÄË÷Òý*/
-    BYTE                                         abPadding0[2];
-/*ÍøÂçÐÅÏ¢*/
-    DWORD                                        dwCellId;      /*ϵͳÐÅÏ¢Öй㲥µÄCI*/
-    WORD                                         wTac;    
-    BYTE                                         abPadding1[2];
-    T_z_PlmnId                                   tPlmnId;       /*µ±Ç°×¤ÁôµÄplmnid*/
-    BYTE                                         bPadding2;
-    DWORD                                         dwUlFddArfcn;   /*FDD-LTEÏÂΪÉÏÐÐÆµµã*/  
-/*·þÎñÐ¡ÇøÐÅÏ¢*/
-    T_z_CellInfo                                 tSCell;
-    BYTE                                         bRsrp;         /*·þÎñÐ¡ÇøÐźÅÖÊÁ¿£¬TDÐ¡ÇøÎªRSCP£¬GSMÐ¡ÇøÎªRSSI LTEΪRSRP*/
-    BYTE                                         bRsrq;
-    BYTE                                         bBand;
-    BYTE                                         bPadding4;
-    DWORD                                        dwCsgId;       /*¹¤¾ßÒªÇóÏÔʾCSGID£¬È«FΪÎÞЧֵ*/
-/*ÁÚÇøÐÅÏ¢*/
-    BYTE                                         bNTCellNum;    /*ʵ¼ÊÉϱ¨TDÁÚÇøÊý£¬¿ÉÒÔΪ0*/
-    BYTE                                         bNGCellNum;    /*ʵ¼ÊÉϱ¨GSMÁÚÇøÊý,¿ÉÒÔΪ0*/
-    BYTE                                         bNLCellNum;    /*ʵ¼ÊÉϱ¨LTEÁÚÇøÊý,¿ÉÒÔΪ0*/
-    BYTE                                         bPadding5;
-
-    T_z_TdCell                                   atNTCellList[Z_EM_MAX_NTCELL_NUM]; /*TDÁÚÇøÁÐ±í£¬°´RSCP´ÓÇ¿µ½ÈõÅÅÐò£¬Êý×é0Ϊ×îÇ¿Ð¡Çø*/
-    BYTE                                         abNTCellRscpList[Z_EM_MAX_NTCELL_NUM];/*TDÁÚÇøRSCPÖµ£¬ºÍatNTCellListÖÐÐ¡ÇøÒ»Ò»¶ÔÓ¦*/
-    BYTE                                         abPadding6[2];
-
-    T_z_GsmCell                                  atNGCellList[Z_EM_MAX_NGCELL_NUM]; /*GSMÁÚÇøÁÐ±í£¬°´RSSI´ÓÇ¿µ½ÈõÅÅÐò£¬Êý×é0Ϊ×îÇ¿Ð¡Çø*/
-    BYTE                                         abNGCellRssiList[Z_EM_MAX_NGCELL_NUM];/*GSMÁÚÇøRSSIÖµ£¬ºÍatNGCellListÖÐÐ¡ÇøÒ»Ò»¶ÔÓ¦*/
-    BYTE                                         abNGCellMinRxlevList[Z_EM_MAX_NGCELL_NUM];/*GSMÁÚÇø×îС½ÓÊÕµçÆ½Öµ£¬ºÍatNGCellListÖÐÐ¡ÇøÒ»Ò»¶ÔÓ¦¡£
-                                                                                         ÈôÎÞÏàӦϵͳÐÅÏ¢£¬ÔòֵΪ0*/
-                                                                                         
-    T_z_LteCell                                  atNLCellList[Z_EM_MAX_NLCELL_NUM]; /*LTEÁÚÇøÁÐ±í£¬°´RSRP´ÓÇ¿µ½ÈõÅÅÐò£¬Êý×é0Ϊ×îÇ¿Ð¡Çø*/
-    BYTE                                         abNLCellRsrpList[Z_EM_MAX_NLCELL_NUM];/*LTEÁÚÇøRSRPÖµ£¬ºÍatNLCellListÖÐÐ¡ÇøÒ»Ò»¶ÔÓ¦*/
-    BYTE                                         abNLCellRsrqList[Z_EM_MAX_NLCELL_NUM];/*LTEÁÚÇøRSRqÖµ£¬ºÍatNLCellListÖÐÐ¡ÇøÒ»Ò»¶ÔÓ¦*/
-    BYTE                                         abDetetFlg[Z_EM_MAX_NLCELL_NUM];/*×Ô¼ìÐ¡Çø±êʶ£¬ºÍatNLCellListÖÐÐ¡ÇøÒ»Ò»¶ÔÓ¦£¬
-                                                                                                        ȡֵ1±íʾÊÇ×Ô¼º¼ì²â³öµÄÐ¡Çø£¬È¡Öµ0±íʾÊÇÍø²àÏ·¢µÄÐ¡Çø*/
-}T_zMmiaAs_EM_EUCellInfo_Ind;
-/*==============================================================================
- Ô­ÓZ_MmiaAs_EM_HoInfoReq_Ev ( MMIA->URBC )
-       RR_EM_HO_INFO_REQ (MMIA->GRRC)
- ˵Ã÷£ºÍ¨ÖªURBC/GRRC´ò¿ª»òÕ߹رÕÇл»ÐÅÏ¢µÄÖ÷¶¯Éϱ¨
-==============================================================================*/
-typedef struct{
-    BYTE                                         bSrcIndex;  /* Ô´Ë÷Òý */
-    BYTE                                         bDesIndex;  /* Ä¿µÄË÷Òý*/
-    BYTE                                         bAction;
-    BYTE                                         bPadding;
-}T_zMmiaAs_EM_HoInfo_Req;
-
-/*==============================================================================
- Ô­ÓZ_MmiaAs_EM_UHoInfoInd_Ev
- ˵Ã÷£ºURBCÖ÷¶¯Éϱ¨UTRANÏà¹ØÇл»ÐÅÏ¢
-==============================================================================*/
-typedef struct{
-    BYTE                                         bSrcIndex;  /* Ô´Ë÷Òý */
-    BYTE                                         bDesIndex;  /* Ä¿µÄË÷Òý*/
-    
-    BYTE                                         bHardHoSuccCnt;      /* TDÓ²Çл»³É¹¦´ÎÊý*/
-    BYTE                                         bBatonHoSuccCnt;     /* TD½ÓÁ¦Çл»³É¹¦´ÎÊý*/
-
-    BYTE                                         bHardHoFailCnt;      /* TDÓ²Çл»Ê§°Ü´ÎÊý*/
-    BYTE                                         bBatonHoFailCnt;     /* TD½ÓÁ¦Çл»Ê§°Ü´ÎÊý*/
-    
-    BYTE                                         bTdHoGsmSuccCnt;     /* TDÇл»µ½GSM³É¹¦¸öÊý*/
-    BYTE                                         bTdHoGsmFailCnt;     /* TDÇл»µ½GSMʧ°Ü´ÎÊý*/
-}T_zMmiaAs_EM_UHoInfo_Ind;
-
-/*==============================================================================
- Ô­ÓRR_EM_HO_INFO_IND (GRRC->MMIA)
- ˵Ã÷£ºGRRCÖ÷¶¯Éϱ¨GSMÏà¹ØÇл»ÐÅÏ¢£¨½á¹¹Í¬2GµÄyPDef_RR_EM_HO_INFO_IND£©
-==============================================================================*/
-typedef struct{
-    BYTE                                         bSrcIndex;  /* Ô´Ë÷Òý */
-    BYTE                                         bDesIndex;  /* Ä¿µÄË÷Òý*/
-
-    BYTE                                         bSyncHoSuccCnt;      /* GSMͬ²½Çл»³É¹¦¸öÊý*/
-    BYTE                                         bAsyncHoSuccCnt;     /* GSMÒì²½Çл»³É¹¦¸öÊý*/
-    BYTE                                         bPreHoSuccCnt;       /* GSMÔ¤Çл»³É¹¦´ÎÊý*/
-    BYTE                                         bPseudoHoSuccCnt;    /* GSMαÇл»³É¹¦´ÎÊý*/
-
-    BYTE                                         bSyncHoFailCnt;      /* GSMͬ²½Çл»Ê§°Ü¸öÊý*/
-    BYTE                                         bAsyncHoFailCnt;     /* GSMÒì²½Çл»Ê§°Ü¸öÊý*/
-    BYTE                                         bPreHoFailCnt;       /* GSMÔ¤Çл»Ê§°Ü´ÎÊý*/
-    BYTE                                         bPseudoHoFailCnt;    /* GSMαÇл»Ê§°Ü´ÎÊý*/
-
-    BYTE                                         bGsmHoTdSuccCnt;     /* GSMÇл»µ½TD,Ó²Çл»³É¹¦´ÎÊý*/
-    BYTE                                         bGsmHoFailCnt;       /* GSMÇл»µ½TD,Ó²Çл»Ê§°Ü´ÎÊý*/
-}T_zMmiaAs_EM_GHoInfo_Ind;
-
-
-/*==============================================================================
- Ô­ÓZ_MmiaEusir_ETWSPrimary_Ind_Ev (EUSIR->MMIA)
- ˵Ã÷: EUSIR¶ÁÈ¡µ½SIB10ÖÐETWSÊ×Òª¸æ¾¯ÐÅÏ¢£¬Ö÷¶¯Éϱ¨¸øMMIA
-==============================================================================*/
-typedef struct 
-{
-    BYTE                                         bSrcIndex;
-    BYTE                                         bDesIndex;
-    WORD                                         wWarningMsgId;
-    WORD                                         wSerialNum;
-    WORD                                         wWarningType;
-    BYTE                                         bSecInfoPresent;
-    BYTE                                         abSecinfo[50];
-}T_zMmiaEusir_ETWSPrimary_Ind;
-
-/*==============================================================================
- Ô­ÓZ_MmiaEusir_ETWSSecondary_Ind_Ev (EUSIR->MMIA)
- ˵Ã÷: EUSIR¶ÁÈ¡µ½SIB11ÖÐETWS´ÎÒª¸æ¾¯ÐÅÏ¢£¬Ö÷¶¯Éϱ¨¸øMMIA
-==============================================================================*/
-typedef struct 
-{
-    BYTE                                         bSrcIndex;
-    BYTE                                         bDesIndex;
-    WORD                                         wWarningMsgId;
-    WORD                                         wSerialNum;
-    WORD                                         wWarningMsgLen;
-    BYTE                                        *pbWarningMsg;
-    BYTE                                         bDataCodingSchemePresent;
-    BYTE                                         bDataCodingScheme;
-}T_zMmiaEusir_ETWSSecondary_Ind;
-
-/*==============================================================================
- Ô­ÓMMIA_AS_EM_CELLRESORCCOCOUNT_REQ_EV (MMIA->UCSR,GRR)
- ˵Ã÷£º¹¤³ÌģʽÏÂMMIA֪ͨUCSR¿ªÆô¡¢¹Ø±ÕÖ÷¶¯Éϱ¨ÖØÑ¡¡¢CCO´ÎÊýÐÅÏ¢
-==============================================================================*/
-typedef struct {
-    BYTE                                         bAction;       /*1:´ò¿ªÐ¡ÇøÖØÑ¡¡¢¿çÖÆÊ½CCO´ÎÊýͳ¼ÆÖ÷¶¯Éϱ¨£¬0:¹Ø±ÕÐ¡ÇøÖØÑ¡¡¢¿çÖÆÊ½CCO´ÎÊýͳ¼ÆÖ÷¶¯Éϱ¨*/
-    BYTE                                         abPadding[3];
-}T_z_MmiaAs_EM_CellresOrCcoCount_Req;
-
-/**************************************************************************
-*                         È«¾Öº¯ÊýÀàÐͶ¨Òå                                   *
-**************************************************************************/
-typedef struct{
-    BYTE  bSrcIndex;    /* Ô´Ë÷Òý */
-    BYTE  bDesIndex;   /* Ä¿µÄË÷Òý*/
-    BYTE  bAction;
-    BYTE  bPadding;
-}T_zMmiaEucsr_LteInfo_Req;
-
-typedef struct{
-    BYTE    bSrcIndex;    /* Ô´Ë÷Òý */
-    BYTE    bDesIndex;   /* Ä¿µÄË÷Òý*/
-    BYTE    bSubFrmAssignType;
-    BYTE    bSpclSubFrmPatt;
-}T_zMmiaEucsr_LteInfo_Ind;
-
-/*==============================================================================
- Ô­ÓMMIA_ASC_LTE_LOSTCOVERAGE_IND_EV (EUCSR->ATI)
- ˵Ã÷£ºÍ¨ÖªATIÉϱ¨+ZLTENOCELL
-==============================================================================*/
-typedef struct{
-    BYTE    bSrcIndex;    /* Ô´Ë÷Òý */
-    BYTE    bDesIndex;   /* Ä¿µÄË÷Òý*/
-    BYTE    abPadding[2];

-}T_zMmiaEucsr_LteLostCoverage_Ind;

-

-/*==============================================================================

- Ô­ÓZ_RRMI_INTER_RAT_NCELL_IND_EV (GRR->MMIA)

- ˵Ã÷£ºÍ¨ÖªMMIA TD/LTEÁÚÇø·¢Éú±ä»¯

-==============================================================================*/

-typedef struct {

-    BYTE    bSrcIndex;    /* Ô´Ë÷Òý */

-    BYTE    bDesIndex;   /* Ä¿µÄË÷Òý*/

-    BYTE    bLteNum;  // LTEÁÚÇøµÄ¸öÊý
-    BYTE    bTdNum;   // TDÁÚÇøµÄ¸öÊý
-    BYTE    abPadding[2];
-    WORD    wEarfcn[Z_MAX_STORED_EFRQE_NUM]; //LTEÁÚÇø
-    WORD    wUarfcn[Z_MAX_STORED_FRQE_NUM];  //TDÁÚÇø
-}T_z_RRMI_INTER_RAT_NCELL_IND;
-

-/**************************************************************************
-Ô­ÓAT_MMIA_L1E_ZEPCG_REQ
-¹¦ÄÜ£ºÍ¨¹ýATÃüÁîÐÞ¸Ä/²éѯÎïÀí²ãÅäÖòÎÊý
-¶ÔÓ¦ATÃüÁ+ZEPCG
-**************************************************************************/
-typedef struct {
-    BYTE         bSrcIndex;   /* Ô´Ë÷Òý */
-    BYTE         bDesIndex;   /* Ä¿µÄË÷Òý */
-    BYTE         bCmd;        /*ÃüÁîºÅ£¬¶ÔÓ¦²»Í¬µÄÎïÀí²ã¹¦ÄÜ*/
-    BYTE         bMode;       /*0±íʾÉèÖã¬1±íʾ²éѯ*/
-    BYTE         bVal1Fg;     /*±íʾVal1/Val2ÊÇ·ñ´æÔÚ£¬0±íʾ²»´æÔÚ£¬1±íʾ´æÔÚ*/
-    BYTE         bVal2Fg;
-    BYTE         abPadding[2];
-    DWORD        dwVal1;     /*²ÎÊý1/²ÎÊý2£¬ÐÞ¸Ä/¶ÁÈ¡µÄÎïÀí²ã²ÎÊý£¬²ÎÊýʵ¼Êº¬ÒåÓÉÎïÀí²ã¸ø³ö*/
-    DWORD        dwVal2;
-}T_zMmiaL1E_Zepcg_Req;
-
-
-/**************************************************************************
-Ô­ÓMMIA_L1E_ZEPCG_CNF
-¹¦ÄÜ£º¶Ôͨ¹ýATÃüÁîÐÞ¸Ä/¶ÁÈ¡ÎïÀí²ãÅäÖòÎÊýÏìÓ¦
-¶ÔÓ¦ATÃüÁ
-**************************************************************************/
-typedef struct {
-    BYTE         bSrcIndex;   /* Ô´Ë÷Òý */
-    BYTE         bDesIndex;   /* Ä¿µÄË÷Òý */
-    BYTE         bCmd;        /*ÃüÁîºÅ£¬¶ÔÓ¦²»Í¬µÄÎïÀí²ã¹¦ÄÜ*/
-    BYTE         bMode;       /*0±íʾÉèÖöÔÓ¦µÄÏìÓ¦£¬´Ëʱ£¬ºóÐø²ÎÊýbRsltÓÐЧ£¬bVal2Fg£¬bVal1£¬bVal2¾ùÎÞЧ
-                                 1±íʾ²éѯ¶ÔÓ¦µÄÏìÓ¦£¬´Ëʱ£¬ºóÐø²ÎÊýbRsltÎÞЧ£¬bVal2Fg£¬bVal1£¬bVal2¾ùÓÐЧ*/
-
-    BYTE         bRslt;       /*±íʾÉèÖýá¹û£¬Z_TRUEÉèÖóɹ¦£¬Z_FALSEÉèÖÃʧ°Ü,bMode=0ʱÓÐЧ*/    
-    BYTE         bVal1Fg[Z_ZEPCG_PARAM_NUMBER];  /*°´ÕÕϱêºÍdwValÖÐÖµÒ»Ò»¶ÔÓ¦£¬bVal1Fg[0]±íʾdwVal[0]ÊÇ·ñ´æÔÚ,ÒÀ´ÎÀàÍÆ£¬0±íʾ²»´æÔÚ£¬1±íʾ´æÔÚ*/
-    BYTE         abPadding2[2]; 

-    LONG        dwVal[Z_ZEPCG_PARAM_NUMBER];    /*²ÎÊý1/²ÎÊý2¡­£¬ÐÞ¸Ä/¶ÁÈ¡µÄÎïÀí²ã²ÎÊý£¬²ÎÊýʵ¼Êº¬ÒåÓÉÎïÀí²ã¸ø³ö*/
-}T_zMmiaL1E_Zepcg_Cnf;
-

-/*=================================================================
-Ô­ÓMMIA_AS_B39_INFO_IND_EV (UMCR->ATI   EUMCR->ATI)
-˵Ã÷£ºUMCR. EUMCR֪ͨATI ÊÇ·ñÓÐB39³öÏÖ  
-=================================================================*/
-typedef struct {
-    BYTE         bSrcIndex;   /* Ô´Ë÷Òý */
-    BYTE         bDesIndex;   /* Ä¿µÄË÷Òý */
-    BYTE         bBand39Info; /* ȡֵ0±íʾûÓÐBAND39. 1±íʾÓÐBAND39*/
-    BYTE         bPadding;
-}T_zMmiaAs_Band39_Info_Ind;
-

-/*=================================================================
-Ô­ÓMMIA_AS_B39_INFO_REQ_EV (ATI->GRR)
-˵Ã÷£ºATI½«½ÓÈë²ãÉϱ¨µÄBAND39ÐÅϢ͸´«µ½GSMÒ»´ýµÄGRR
-=================================================================*/
-typedef struct {
-    BYTE     bBand39Info;  /*ȡֵ0±íʾûÓÐBAND39. 1±íʾÓÐBAND39*/
-} T_zMmiaAs_Band39_Info_Req;
-
-/*============================================================
-Ô­Óï:MMIA_AS_RSSI_QUERY_REQ_EV(ATI->EUMCR)
-              MMIA_AS_SINR_QUERY_REQ_EV(ATI->EUMCR)
-              RRAT_RXSTAT_REQ(ATI->GRR)
-              MMIA_AS_QUERY_RXLEV_REQ_EV(ATI->MCR/WMCR/EUMCR)
-˵Ã÷:ATI·¢ËͲéѯÇëÇó»ñÈ¡ÐźÅÇ¿¶Èָʾֵ
-=============================================================*/
-typedef struct {
-    BYTE            bSrcIndex;
-    BYTE            bDesIndex;
-    BYTE            abPadding[2];
-}T_zMmiaAs_Rssi_Qry_Req, T_zMmiaAs_Sinr_Qry_Req, 
-T_zMmiaAs_CellInfo_Qry_Req;
-

-typedef struct {

-    BYTE            bSrcIndex;

-    BYTE            bDesIndex;

-    BYTE            bAtType;

-    BYTE            bPadding;

-}T_zMmiaAs_Csq_Qry_Req;

-
-typedef struct {
-    CHAR      cSinrInt;               /*ȡֵ·¶Î§ -20~40*/
-    BYTE      bSinrDec;               /*ȡֵ·¶Î§ 0~9*/
-    BYTE      abPadding[2];
-}T_zMmiaAs_LTE_P_Sinr;
-
-typedef struct {
-    SHORT     sRssiInt;               /*ȡֵ·¶Î§ -129~-4*/
-    BYTE      bRssiDec;               /*ȡֵ·¶Î§ 0~9*/
-    BYTE      bPadding;
-}T_zMmiaAs_LTE_P_Rssi;
-
-/*============================================================
-Ô­Óï:MMIA_AS_RSSI_QUERY_CNF_EV(EUMCR->ATI)
-˵Ã÷:ATI·¢ËͲéѯÇëÇó»ñÈ¡LTEµÄÐźÅÇ¿¶Èָʾֵ
-=============================================================*/
-typedef struct {
-    BYTE            bSrcIndex;
-    BYTE            bDesIndex;
-    BYTE            abPadding[2];
-    T_zMmiaAs_LTE_P_Rssi     tRssi[MMIA_AS_LTE_MAX_RSSI_NUM];
-}T_zMmiaAs_Rssi_Qry_Cnf;
-/*============================================================
-Ô­Óï:MMIA_AS_SINR_QUERY_CNF_EV(EUMCR->ATI)
-˵Ã÷:ATI·¢ËͲéѯÇëÇó»ñÈ¡LTEµÄÐźÅÇ¿¶Èָʾֵ
-=============================================================*/
-typedef struct {
-    BYTE            bSrcIndex;
-    BYTE            bDesIndex;
-    BYTE            abPadding[2];
-    T_zMmiaAs_LTE_P_Sinr     tSinr[MMIA_AS_LTE_MAX_SINR_NUM];
-}T_zMmiaAs_Sinr_Qry_Cnf;
-
-typedef struct
-{
-    BYTE                            bAsCellInfoFg;/*»ñÈ¡³É¹¦±ê־λ,0ʧ°Ü,1³É¹¦*/

-    T_z_TAC                         tTac;  /*TAC*/

-    DWORD                           dwScellId; /*CELLID*/

-    T_z_PlmnId                      tcellPrimaryPlmnId;/*PLMNID*/

-}T_zMmiaAs_CellInfo;

-
-/*============================================================
-Ô­Óï:MMIA_AS_TMGI_ACTIVATE_REQ_EV(ATI->ECER)
-˵Ã÷:ATI֪ͨRRC¼¤»îÒ»¸öTMGI·þÎñ
-=============================================================*/
-typedef struct {  
-    BYTE                            bSessionIdFg;
-    BYTE                            bSessionId;
-    BYTE                            abPadding[2];
-    T_zMbms_Tmgi                    tTmgi;
-}T_zAtiAs_Mbms_Service_Info;
-
-typedef struct { 
-    BYTE                            bSrcIndex;
-    BYTE                            bDesIndex;
-    BYTE                            abPadding[2];
-    T_zAtiAs_Mbms_Service_Info      tTmgiActInfo;
-}T_zAtiAs_Tmgi_Activate_Req;
-
-/*============================================================
-Ô­Óï:MMIA_AS_TMGI_ACTIVATE_CNF_EV(ECER->ATI)
-˵Ã÷:RRCÏìÓ¦ATIµÄTMGI·þÎñ¼¤»îÇëÇó
-=============================================================*/
-typedef struct { 
-    BYTE                            bSrcIndex;
-    BYTE                            bDesIndex;
-    BYTE                            bActStatus; 
-    BYTE                            bPadding;
-    T_zAtiAs_Mbms_Service_Info      tTmgiActInfo;
-}T_zAtiAs_Tmgi_Activate_Cnf;
-
-/*============================================================
-Ô­Óï:MMIA_AS_TMGI_DEACTIVATE_REQ_EV(ATI->ECER)
-˵Ã÷:ATI֪ͨRRCÈ¥¼¤»îÒ»¸öTMGI·þÎñ
-=============================================================*/
-typedef struct { 
-    BYTE                            bSrcIndex;
-    BYTE                            bDesIndex;
-    BYTE                            bDeactAll;
-    BYTE                            bPadding;
-    T_zAtiAs_Mbms_Service_Info      tTmgiDeactInfo;
-}T_zAtiAs_Tmgi_Deactivate_Req;
-
-/*============================================================
-Ô­Óï:MMIA_AS_TMGI_DEACTIVATE_CNF_EV(ECER->ATI)
-˵Ã÷:RRCÏìÓ¦ATIµÄTMGI·þÎñÈ¥¼¤»îÇëÇó
-=============================================================*/
-typedef struct { 
-    BYTE                            bSrcIndex;
-    BYTE                            bDesIndex;
-    BYTE                            bDeactStatus; 
-    BYTE                            bPadding;
-    T_zAtiAs_Mbms_Service_Info      tTmgiDeactInfo;
-}T_zAtiAs_Tmgi_Deactivate_Cnf;
-
-/*============================================================
-Ô­Óï:MMIA_AS_SAI_LIST_QUERY_REQ_EV(ATI->ECER)
-˵Ã÷:ATIÇëÇóRRC»ñÈ¡µ±Ç°¿É»ñµÃµÄSAI List·þÎñ
-=============================================================*/
-typedef struct { 
-    BYTE                            bSrcIndex;
-    BYTE                            bDesIndex;
-    BYTE                            abPadding[2];
-}T_zAtiAs_SaiListQueryReq;
-
-/*============================================================
-Ô­Óï:MMIA_AS_SAI_LIST_QUERY_RESP_EV(ECER->ATI)
-˵Ã÷:RRCÏìÓ¦ATIµÄSAI List²éѯ
-=============================================================*/
-/*============================================================
-Ô­Óï:MMIA_AS_SAI_LIST_IND_EV(ECER->ATI)
-˵Ã÷:µ±ÐèÒªÖ÷¶¯Éϱ¨Ê±£¬EURRCÐ¡Çø×¤Áô¡¢ÖØÑ¡¡¢Çл»¡¢SIB15¸üеÈÇé¿öÏ£¬EUSIR¶Áµ½SIB15ºóÁ¢¿ÌÉϱ¨¸ÃÏûÏ¢.Éϱ¨µ±Ç°ÎªÌṩMBMS·þÎñ¿ÉÒÔ»ñÈ¡µ½µÄSAIÁбí
-=============================================================*/
-typedef struct { 
-    BYTE                bIsServFreq;
-    BYTE                bSaiNum; 
-    BYTE                abPadding[2];
-    WORD                awSai[Z_MAX_SAI_NUM_PER_FREQ];
-    DWORD               dwFreq;
-}T_zAtiAs_Spec_Freq_Sai_List_Info;
-
-typedef struct {
-    BYTE                                bSrcIndex;
-    BYTE                                bDesIndex; 
-    BYTE                                bFreqNum;
-    BYTE                                bPadding;
-    T_zAtiAs_Spec_Freq_Sai_List_Info    atSpecFreqSaiListInfo[Z_MAX_LTE_FREQ_NUM];
-}T_zAtiAs_SaiListQueryResp,T_zAtiAs_SaiListInd;
-
-/*============================================================
-Ô­Óï:MMIA_AS_TMGI_LIST_QUERY_REQ_EV(ATI->ECER)
-˵Ã÷:ATIÇëÇóRRC»ñÈ¡µ±Ç°¿É»ñµÃµÄTMGI List·þÎñ
-=============================================================*/
-typedef struct { 
-    BYTE                bSrcIndex;
-    BYTE                bDesIndex;
-    BYTE                bTmgiListType;
-    BYTE                bPadding;
-}T_zAtiAs_TmgiListQueryReq;
-
-/*============================================================
-Ô­Óï:MMIA_AS_TMGI_LIST_QUERY_RESP_EV(ECER->ATI)
-˵Ã÷:µ±Éϲã²éѯʱ£¬Éϱ¨RRCµ±Ç°¼¤»îµÄTMGI»ò¿É»ñµÃµÄTMGI List·þÎñ
-=============================================================*/
-/*============================================================
-Ô­Óï:MMIA_AS_TMGI_LIST_IND_EV(ECER->ATI)
-˵Ã÷:Éϱ¨RRCµ±Ç°¼¤»îµÄTMGI»ò¿É»ñµÃµÄTMGI  List·þÎñ
-=============================================================*/
-typedef struct {

-    BYTE                        bSrcIndex;
-    BYTE                        bDesIndex;
-    BYTE                        bTmgiListType;
-    BYTE                        bWarnReasonFg;
-    BYTE                        bWarnReason;
-    BYTE                        bPadding;
-    WORD                        wTmgiNum;
-    //T_zAtiAs_Mbms_Service_Info  atTmgiList[Z_MAX_TMGI_NUM_IN_MBSFN_AREA * Z_MAX_MBSFN_AREA_NUM_IN_CELL];/*8¸ömbsfnarea*/
-    T_zAtiAs_Mbms_Service_Info  atTmgiList[Z_MAX_MBMS_TMGI_LIST_NUM];
-}T_zAtiAs_TmgiListQueryResp,T_zAtiAs_TmgiListInd;
-
-/*============================================================
-Ô­Óï:MMIA_AS_TMGI_LIST_SET_REQ_EV(ATI->ECER)
-˵Ã÷:APÏ·¢¸ÐÐËȤµÄTMGI List·þÎñ£¨Ó¦¸ÃÊôÓÚͬһMBSFN Area£©
-=============================================================*/
-typedef struct {  
-    T_zMbms_Tmgi                        tTmgi;
-    WORD                                wSaiNum;
-    BYTE                                bFreqNum;
-    BYTE                                bPadding;
-    WORD                                awSai[Z_MAX_SAI_NUM_PER_TMGI];
-    DWORD                               adwFreq[Z_MAX_LTE_FREQ_NUM];
-}T_zAtiAs_Interest_Tmgi_Info;
-
-typedef struct { 
-    BYTE                        bSrcIndex;
-    BYTE                        bDesIndex;
-    WORD                        wTmgiNum;
-    T_zAtiAs_Interest_Tmgi_Info atTmgiList[Z_MAX_TMGI_NUM_IN_MBSFN_AREA];
-}T_zAtiAs_TmgiListReq;
-
-/*============================================================
-Ô­Óï:MMIA_AS_MBMS_PREFERENCE_REQ_EV(ATI->ECER)
-˵Ã÷:ATI֪ͨAS£¬¸üÇãÏòÓÚÓÃÄÄÖÖ·½Ê½½ÓÊÕMBMS·þÎñ£¬unicast or multicast
-=============================================================*/
-typedef struct { 
-    BYTE                bSrcIndex;
-    BYTE                bDesIndex;
-    BYTE                bMbmsPreference;
-    BYTE                bPadding;
-}T_zAtiAs_MbmsPreferenceReq;
-
-/*============================================================
-Ô­Óï:MMIA_AS_TMGI_LIST_REPORT_REQ_EV(ATI->ECER)
-˵Ã÷:ATI֪ͨAS£¬ÊÇ·ñÖ÷¶¯¸üÐÂÉϱ¨TMGI List
-=============================================================*/
-typedef struct { 
-    BYTE                bSrcIndex;
-    BYTE                bDesIndex;
-    BYTE                bTmgiListReport;
-    BYTE                bPadding;
-}T_zAtiAs_TmgiListReportReq;
-
-/*============================================================
-Ô­Óï:MMIA_AS_SAI_LIST_REPORT_REQ_EV(ATI->ECER)
-˵Ã÷:ATI֪ͨAS£¬ÊÇ·ñÖ÷¶¯¸üÐÂÉϱ¨SAI List
-=============================================================*/
-typedef struct { 
-    BYTE                bSrcIndex;
-    BYTE                bDesIndex;
-    BYTE                bSaiListReport;
-    BYTE                bPadding;
-}T_zAtiAs_SaiListReportReq;
-
-/*============================================================
-Ô­Óï:MMIA_AS_MBMS_SERVICE_SUSPEND_IND_EV(ECER->ATI)
-˵Ã÷:AS֪ͨATIÐèÒª¹ÒÆðµÄTMGI List
-=============================================================*/
-typedef struct { 
-    BYTE                        bSrcIndex;
-    BYTE                        bDesIndex;
-    WORD                        wTmgiNum;
-    T_zAtiAs_Mbms_Service_Info  atTmgiList[Z_MAX_TMGI_NUM_IN_MBSFN_AREA];
-}T_zAtiAs_MbmsServiceSuspendInd;
-
-/*============================================================
-Ô­Óï:MMIA_AS_MBMS_SERVICE_RESUME_IND_EV(ECER->ATI)
-˵Ã÷:AS֪ͨATIÐèÒª»Ö¸´µÄTMGI List
-=============================================================*/
-typedef struct { 
-    BYTE                        bSrcIndex;
-    BYTE                        bDesIndex;
-    WORD                        wTmgiNum;
-    T_zAtiAs_Mbms_Service_Info  atTmgiList[Z_MAX_TMGI_NUM_IN_MBSFN_AREA];
-}T_zAtiAs_MbmsServiceResumeInd;
-
-/*============================================================
-Ô­Óï:MMIA_AS_COMMON_CFG_CNF_EV(ECER->ATI)
-˵Ã÷:AS֪ͨATIÇëÇóµÄÅäÖÃÒѾ­ÉúЧ£¬Ò»°ãÓÃÓÚ´¿ÅäÖò»»áʧ°ÜµÄÇëÇó
-=============================================================*/
-typedef struct { 
-    BYTE                        bSrcIndex;
-    BYTE                        bDesIndex;
-    WORD                        wPadding;
-}T_zAtiAs_CommonCfgCnf;
-
-/*============================================================
-Ô­Óï:MMIA_AS_NW_TIME_QUERY_REQ_EV(ATI->ECSR)
-˵Ã÷:ATIÇëÇóRRC»ñÈ¡µ±Ç°SIB16ÖеÄUTCʱ¼ä
-=============================================================*/
-typedef struct { 
-    BYTE                            bSrcIndex;
-    BYTE                            bDesIndex;
-    BYTE                            abPadding[2];
-}T_zAtiAs_NwTimeQueryReq;
-
-/*============================================================
-Ô­Óï:MMIA_AS_NW_TIME_QUERY_RESP_EV(ECSR->ATI)
-˵Ã÷:AS֪ͨATI¶ÁÈ¡SIB16µÄ½á¹û
-=============================================================*/
-typedef struct { 
-    BYTE                        bSrcIndex;
-    BYTE                        bDesIndex;
-    BYTE                        bResult;
-    BYTE                        bPadding;
-    UINT64                      uUtcTimeInfo;
-}T_zAtiAs_NwTimeQueryResp;
-

-/*============================================================

-Ô­Óï:MMIA_AS_QUERY_CESQ_REQ_EV/MMIA_AS_QUERY_ZCSQ_REQ_EV (ATI->AS)

-˵Ã÷:ATI·¢ËͲéѯÇëÇó»ñÈ¡µ±Ç°ÖÆÊ½ÏµÄÐźÅÏà¹ØµÄÖµ

-=============================================================*/

-typedef struct {

-    BYTE            bSrcIndex;

-    BYTE            bDesIndex;

-    BYTE            abPadding[2];

-} T_zMmiaAs_Cesq_Qry_Req,T_zMmiaAs_Zcsq_Qry_Req;

-

-/*============================================================

-Ô­Óï:MMIA_AS_SAI_LIST_REPORT_REQ_EV(AS->ATI)

-˵Ã÷:AS·µ»ØµÄCESQ²éѯ½á¹ûÖµ

-=============================================================*/

- typedef struct {

-    BYTE            bSrcIndex;

-    BYTE            bDesIndex;

-    BYTE            bAct;   /*µ±Ç°ÖÆÊ½£º0x04-GSM¡¢0x01-TDSCDMA¡¢0x02-WCDMA¡¢0x10-LTE¡¢ÆäËûÖµ±£Áô*/

-    BYTE            bRssi;  /*GSMÖÆÊ½Ï´˲ÎÊý´æÔÚ£¬ÎÞЧֵ99*/

-    BYTE            bBer;   /*GSMÖÆÊ½Ï´˲ÎÊý´æÔÚ£¬ÎÞЧֵ99*/

-    BYTE            bRscp;  /*TD»òWÖÆÊ½Ï´˲ÎÊý´æÔÚ£¬ÎÞЧֵ255*/

-    BYTE            bEcno;  /*WÖÆÊ½Ï´˲ÎÊý´æÔÚ£¬  ÎÞЧֵ255*/

-    BYTE            bRsrq;  /*LTEÖÆÊ½Ï´˲ÎÊý´æÔÚ£¬ÎÞЧֵ255*/

-    BYTE            bRsrp;  /*LTEÖÆÊ½Ï´˲ÎÊý´æÔÚ£¬ÎÞЧֵ255*/

-    BYTE            abpadding[3];

-} T_zMmiaAs_Cesq_Qry_Cnf;

-

-/*============================================================

-Ô­Óï:MMIA_AS_QUERY_ZCSQ_CNF_EV(AS->ATI)

-˵Ã÷:AS·µ»ØµÄCESQ²éѯ½á¹ûÖµ

-=============================================================*/

- typedef struct {

-    BYTE            bSrcIndex;

-    BYTE            bDesIndex;

-    BYTE            bAct;   /*µ±Ç°ÖÆÊ½£º0x04-GSM¡¢0x01-TDSCDMA¡¢0x02-WCDMA¡¢0x10-LTE¡¢ÆäËûÖµ±£Áô*/

-    BYTE            bRssi;  /*¸÷¸öÖÆÊ½ÏµÄRSSI(TDÏÂÉϱ¨RSCP)£¬ÎÞЧֵ99(LTEÏÂÎÞЧÕß255)*/

-    BYTE            bBer;   /*GSMÖÆÊ½Ï´˲ÎÊý´æÔÚ£¬ÎÞЧֵ99*/

-    BYTE            abpadding[3];

-} T_zMmiaAs_Zcsq_Qry_Cnf;

-

-/*==============================================================================

- Ô­ÓMMIA_AS_EM_LTE_HO_SET_REQ_EV ( ATI->EUCER )

-       MMIA_AS_EM_LTE_HO_SET_QUERY_CNF_EV( EUCER->ATI)

- ˵Ã÷£ºÍ¨Öª´ò¿ª»òÕ߹رÕÇл»ÐÅÏ¢µÄÖ÷¶¯Éϱ¨

-==============================================================================*/

-typedef struct{

-    BYTE            bSrcIndex;

-    BYTE            bDesIndex;

-    BYTE            bAction;/*Çл»ÐÅÏ¢µÄÉϱ¨¿ª¹Ø£¬0:¹Ø±Õ£¬1:´ò¿ª*/

-    BYTE            bPadding;

-}T_zMmiaAs_EM_LteHoSet_Req,T_zMmiaAs_EM_LteHoSet_Qry_Cnf;

-

-/*==============================================================================

- Ô­ÓMMIA_AS_EM_LTE_HO_SET_QUERY_REQ_EV ( ATI->EUCER )

- ˵Ã÷£º²éѯÇл»ÐÅÏ¢µÄÖ÷¶¯Éϱ¨µÄ¿ª¹ØÖµÇëÇóÏûÏ¢

-==============================================================================*/

-typedef struct{

-    BYTE            bSrcIndex;

-    BYTE            bDesIndex;

-    BYTE            abPadding[2];

-}T_zMmiaAs_EM_LteHoSet_Qry_Req;

-

-/*==============================================================================

- Ô­ÓMMIA_AS_EM_LTE_HO_INFO_IND_EV ( EUCER->ATI)

- ˵Ã÷£ºÖ÷¶¯Éϱ¨Çл»ÐÅÏ¢

-==============================================================================*/

-typedef struct{

-    BYTE            bSrcIndex;

-    BYTE            bDesIndex;

-    BYTE            abPadding[2];

-    DWORD           dwTotalHoCount;

-    DWORD           dwSuccHoCount;

-}T_zMmiaAs_EM_LteHo_Info_Ind;

-

-#ifdef BTRUNK_SUPPORT

-/*============================================================
-Ô­Óï:ATI_EUCSR_HIGHT_CALL_IND_EV(EUCSR->ATI)
-˵Ã÷:֪ͨ¸ßÓÅÏȼ¶ºô½Ð
-=============================================================*/
-typedef struct {
-    BYTE                        bSrcIndex;           
-    BYTE                        bDesIndex;           /*Ä¿µÄË÷Òý¹Ì¶¨Ìî³É255¼´¿É*/
-    BYTE                        bCallmode;           /*µ¥ºô£¬×éºô,°ëË«¹¤µ¥ºô*/     
-    BYTE                        bSn;

-    BYTE                        bCallPriLevel;

-    BYTE                        abpadding[3];
-    T_zAtiTsm_BCDNumber             tCalledNUmber;      /*µ¥ºôÊÇÖ÷½ÐNUMBER,×éºôÊÇÖ¸×é¶ÔÓ¦µÄNUMBER*/

-}T_zAtiAs_Hight_Call_Ind;

-

-#define T_zAtiAs_Busy_Alerting_Ind  T_zAtiTsm_Busy_Alerting_Ind

-#endif

-

-/*============================================================

-Ô­Óï:MMIA_UMM_XCELLINFO_REQ_EV(ATI->UMM)

-˵Ã÷:´¥·¢ÁÚÇøÐÅÏ¢»ñÈ¡Á÷³Ì

-=============================================================*/

-typedef struct {

-    BYTE bSrcIndex; // Ô´Ë÷Òý

-    BYTE bDesIndex; // Ä¿µÄË÷Òý

-    BYTE abPadding[2];

-} T_zMmiaUmm_XCellInfo_Req;

-

-/*============================================================

-Ô­Óï:MMIA_UMM_XCELLINFO_CNF_EV(UMM->ATI)

-˵Ã÷:ÁÚÇøÐÅÏ¢»ñÈ¡Á÷³ÌµÄ½á¹û

-=============================================================*/

-typedef struct {

-    BYTE bSrcIndex; // Ô´Ë÷Òý

-    BYTE bDesIndex; // Ä¿µÄË÷Òý

-    BYTE bGsmNum;   // GSMÐ¡Çø¸öÊý

-    BYTE bUtranNum; // UTRANÐ¡Çø¸öÊý

-    BYTE bLteNum;   // LTEÐ¡Çø¸öÊý

-    T_zGsm_XCellInfo atGCell[Z_NAS_MAX_GSM_XCELL_NUM];      // GSMÐ¡ÇøÐÅÏ¢

-    T_zUtran_XCellInfo atUCell[Z_NAS_MAX_UTRAN_XCELL_NUM];  // UTRANÐ¡ÇøÐÅÏ¢

-    T_zLte_XCellInfo atLteCell[Z_NAS_MAX_LTE_XCELL_NUM];    // LTEÐ¡ÇøÐÅÏ¢

-} T_zMmiaUmm_XCellInfo_Cnf;

-

-/**************************************************************************

-Ô­ÓMMIA_L1T_ZTPCG_REQ_EV/MMIA_L1W_ZWPCG_REQ_EV

-¹¦ÄÜ£ºÍ¨¹ýATÃüÁîÐÞ¸Ä/²éѯTD/WÎïÀí²ãÅäÖòÎÊý

-¶ÔÓ¦ATÃüÁ+ZTPCG£¬+ZWPCG

-**************************************************************************/

-typedef struct {

-    BYTE         bSrcIndex;   /* Ô´Ë÷Òý */

-    BYTE         bDesIndex;   /* Ä¿µÄË÷Òý */

-    BYTE         bCmd;        /*ÃüÁîºÅ£¬¶ÔÓ¦²»Í¬µÄÎïÀí²ã¹¦ÄÜ*/

-    BYTE         bPadding;

-    BYTE         abValFg[Z_ZUPCG_VALFG_NUMBER];     /*±íʾdwValÊÇ·ñ´æÔÚ£¬0±íʾ²»´æÔÚ£¬1±íʾ´æÔÚ*/

-    DWORD        adwVal[Z_ZUPCG_VALFG_NUMBER];     /*²ÎÊýÁÐ±í£¬ÐÞ¸Ä/¶ÁÈ¡µÄÎïÀí²ã²ÎÊý£¬²ÎÊýʵ¼Êº¬ÒåÓÉÎïÀí²ã¸ø³ö*/

-}T_zMmiaL1T_Ztpcg_Req, T_zMmiaL1W_Zwpcg_Req;

-

-

-/**************************************************************************

-Ô­ÓMMIA_L1T_ZTPCG_CNF_EV/MMIA_L1W_ZWPCG_CNF_EV

-¹¦ÄÜ£º¶Ôͨ¹ýATÃüÁîÐÞ¸Ä/¶ÁÈ¡TD/WÎïÀí²ãÅäÖòÎÊýÏìÓ¦

-¶ÔÓ¦ATÃüÁ

-**************************************************************************/

-typedef struct {

-    BYTE         bSrcIndex;   /* Ô´Ë÷Òý */

-    BYTE         bDesIndex;   /* Ä¿µÄË÷Òý */

-    BYTE         bCmd;        /*ÃüÁîºÅ£¬¶ÔÓ¦²»Í¬µÄÎïÀí²ã¹¦ÄÜ*/

-    BYTE         bRslt;       /*±íʾÉèÖýá¹û£¬Z_TRUEÉèÖóɹ¦£¬Z_FALSEÉèÖÃʧ°Ü£¬bCmdΪÉèÖÃÃüÁîʱÓÐЧ*/    

-    BYTE         abValFg[Z_ZUPCG_PARAM_NUMBER];  /*°´ÕÕϱêºÍdwValÖÐÖµÒ»Ò»¶ÔÓ¦£¬bVal1Fg[0]±íʾdwVal[0]ÊÇ·ñ´æÔÚ,ÒÀ´ÎÀàÍÆ£¬0±íʾ²»´æÔÚ£¬1±íʾ´æÔÚ*/

-    BYTE         abPadding[3]; 

-    LONG         alVal[Z_ZUPCG_PARAM_NUMBER];    /*²ÎÊý1/²ÎÊý2¡­£¬ÐÞ¸Ä/¶ÁÈ¡µÄÎïÀí²ã²ÎÊý£¬²ÎÊýʵ¼Êº¬ÒåÓÉÎïÀí²ã¸ø³ö*/

-}T_zMmiaL1T_Ztpcg_Cnf,T_zMmiaL1W_Zwpcg_Cnf;

-

-/**************************************************************************

-Ô­ÓMMIA_GRR_ZGPCG_REQ_EV

-¹¦ÄÜ£ºÍ¨¹ýATÃüÁîÐÞ¸Ä/²éѯGSMÎïÀí²ãÅäÖòÎÊý

-¶ÔÓ¦ATÃüÁ+ZGPCG

-**************************************************************************/

-typedef struct {

-    BYTE         bSrcIndex;   /* Ô´Ë÷Òý */

-    BYTE         bDesIndex;   /* Ä¿µÄË÷Òý */

-    BYTE         bCmd;        /*ÃüÁîºÅ£¬¶ÔÓ¦²»Í¬µÄÎïÀí²ã¹¦ÄÜ*/

-    BYTE         bVal1Fg;     /*±íʾVal1/Val2ÊÇ·ñ´æÔÚ£¬0±íʾ²»´æÔÚ£¬1±íʾ´æÔÚ*/

-    BYTE         bVal2Fg;

-    BYTE         abPadding[3];

-    DWORD        dwVal1;     /*²ÎÊý1/²ÎÊý2£¬ÐÞ¸Ä/¶ÁÈ¡µÄÎïÀí²ã²ÎÊý£¬²ÎÊýʵ¼Êº¬ÒåÓÉÎïÀí²ã¸ø³ö*/

-    DWORD        dwVal2;

-}T_zMmiaGrr_Zgpcg_Req;

-

-/**************************************************************************

-Ô­ÓMMIA_GRR_ZGPCG_CNF_EV

-¹¦ÄÜ£º¶Ôͨ¹ýATÃüÁîÐÞ¸Ä/¶ÁÈ¡GSMÎïÀí²ãÅäÖòÎÊýÏìÓ¦

-¶ÔÓ¦ATÃüÁ

-**************************************************************************/

-typedef struct {

-    BYTE         bSrcIndex;   /* Ô´Ë÷Òý */

-    BYTE         bDesIndex;   /* Ä¿µÄË÷Òý */

-    BYTE         bCmd;        /*ÃüÁîºÅ£¬¶ÔÓ¦²»Í¬µÄÎïÀí²ã¹¦ÄÜ*/

-    BYTE         bRslt;       /*±íʾÉèÖýá¹û£¬Z_TRUEÉèÖóɹ¦£¬Z_FALSEÉèÖÃʧ°Ü£¬bCmdΪÉèÖÃÃüÁîʱÓÐЧ*/    

-    BYTE         abValFg[Z_ZGPCG_PARAM_NUMBER];  /*°´ÕÕϱêºÍdwValÖÐÖµÒ»Ò»¶ÔÓ¦£¬bVal1Fg[0]±íʾdwVal[0]ÊÇ·ñ´æÔÚ,ÒÀ´ÎÀàÍÆ£¬0±íʾ²»´æÔÚ£¬1±íʾ´æÔÚ*/

-    BYTE         abPadding2[3]; 

-    LONG         alVal[Z_ZGPCG_PARAM_NUMBER];    /*²ÎÊý1/²ÎÊý2¡­£¬ÐÞ¸Ä/¶ÁÈ¡µÄÎïÀí²ã²ÎÊý£¬²ÎÊýʵ¼Êº¬ÒåÓÉÎïÀí²ã¸ø³ö*/

-}T_zMmiaGrr_Zgpcg_Cnf;

-

-

-/**************************************************************************

-Ô­ÓMMIA_AS_LBS_REQ_EV

-¹¦ÄÜ£º²éѯLBSÐÅÏ¢

-¶ÔÓ¦ATÃüÁ+ZLBS

-**************************************************************************/

-typedef struct {

-    BYTE         bSrcIndex;   /* Ô´Ë÷Òý */

-    BYTE         bDesIndex;   /* Ä¿µÄË÷Òý */

-    WORD        wRspTime;  /*LBS²éѯÇëÇóµÄ×î´óÏìӦʱ³¤£¬µ¥Î»:Ãë*/

-}T_zMmiaAs_LBS_Req;

-

-

-/**************************************************************************

-Ô­ÓMMIA_AS_LBS_CNF_EV

-¹¦ÄÜ£ºLBSÐÅÏ¢Éϱ¨

-¶ÔÓ¦ATÃüÁ+ZLBS

-**************************************************************************/

-typedef struct {

-    BYTE         bSrcIndex;   /* Ô´Ë÷Òý */

-    BYTE         bDesIndex;   /* Ä¿µÄË÷Òý */

-    BYTE    bAct; /* ÖÆÊ½ÐÅϢȡֵ:Z_LTE_ACT...*/

-    BYTE    bCellNum;

-    T_zLBS_CellInfo    atLbsCell[Z_MAX_LBS_CELL_NUM];/*·þÎñÐ¡ÇøÔÚµÚ0λÖÃ*/

-}T_zMmiaAs_LBS_Cnf;

-

-/**************************************************

-*Ô­Óï: MMIA_AS_IMS_DATA_DELETE_REQ_EV

-*¹¦ÄÜ: ֪ͨEPDCPɾ³ý¶ÔÓ¦CIDµÄÊý¾Ý

-*¶ÔÓ¦ÃüÁî:+ZIMSDATADEL

-*************************************************/

-typedef struct {

-    BYTE         bSrcIndex;   /* Ô´Ë÷Òý */

-    BYTE         bDesIndex;   /* Ä¿µÄË÷Òý */

-    BYTE         bCid;

-    BYTE         bPadding;

-}T_zMmiaEpdcp_DataDel_Req;

-

-typedef struct {

-    BYTE           bAct;

-    T_z_LAC      tLac;

-    T_z_CellId    tCellId;

-    T_z_PlmnId   tPlmn;

-}T_zMmiaNas_CellInfo;

-

-

-

-/*==============================================================================

- Ô­ÓMMIA_AS_UL_PARAM_IND_EV

- ˵Ã÷£º

-==============================================================================*/

-/* ASYNC --> ATI  */

-typedef struct {

-    BYTE     bSrcIndex;

-    BYTE     bDesIndex;

-    BYTE     abPadding[2];

-

-    DWORD     dwMCS; //save new value, report new value

-    DWORD     dwAckCnt;  //save total cnt, , report avearage value

-    DWORD     dwNackCnt; //save total cnt,report avearage value

-    DWORD     dwBSR;   //save new value, , report new value

-    DWORD     dwTBS;   //save total cnt, report avearage value

-}T_zAtiAs_UlParamInd;

-

-/*================================================================

-Ô­Óï:MMIA_AS_CARD_SWITCH_REQ_EV

-˵Ã÷:APÏ·¢µÄÇп¨ÇëÇó(+ZCARDSWITCHREQ)

-================================================================*/

-typedef struct {

-    BYTE                        bSrcIndex;

-    BYTE                        bDesIndex;

-

-    BYTE                        bSim1Act;/*0-È¥»î,1-¼¤»î*/

-    BYTE                        bSim2Act;/*0-È¥»î,1-¼¤»î*/

-}T_zMmiaAs_CardSwitch_Req;

-

-/*================================================================

-Ô­Óï:MMIA_AS_CARD_SWITCH_CNF_EV

-˵Ã÷:Çп¨ÇëÇóÏìÓ¦

-================================================================*/

-typedef struct {

-    BYTE                        bSrcIndex;

-    BYTE                        bDesIndex;

-

-    BYTE                        bResult;/*0-Z_SUCC,1-Z_FAIL*/

-    BYTE                        bPadding;

-}T_zMmiaAs_CardSwitch_Cnf;

-

-/*================================================================

-Ô­Óï:MMIA_AS_CARD_SWITCH_IND_EV

-˵Ã÷:֪ͨEUCERÒµÎñÒòÇп¨ÒµÎñÐèÒª¹ÒÆð»òÕ߻ָ´

-×¢ÊÍ:¸ÃÏûÏ¢²»ÐèÒª»Ø¸´

-=================================================================*/

-typedef struct {

-    BYTE                        bSrcIndex;

-    BYTE                        bDesIndex;

-

-    BYTE                        bActStat;/*0-¹ÒÆð,1-»Ö¸´*/

-    BYTE                        bIsReEst;/*0-²»Öؽ¨,1ÖØ½¨*/

-}T_zMmiaAs_CardSwitch_Ind;

-

-/*==============================================================

-Ô­Óï:MMIA_UMM_CARDSWITCH_REQ_IND_EV

-˵Ã÷:UMM´¥·¢µÄÇп¨ÇëÇóÖ÷¶¯Éϱ¨

-===============================================================*/

-typedef struct {

-    BYTE                        bSrcIndex;

-    BYTE                        bDesIndex;

-

-    BYTE                        bSim1Act;/*0-È¥»î,1-¼¤»î*/

-    BYTE                        bSim2Act;/*0-È¥»î,1-¼¤»î*/

-    BYTE                        bSwitchStat;/*0-ÒµÎñ¿ªÊ¼ÇëÇóµÄÇп¨,1-ÒµÎñ½áÊø»ØÍË״̬µÄÇп¨*/

-}T_zMmiaUmm_CardSwitchReq_Ind;

-

-/*=========================º¯ÊýÉùÃ÷==========================*/

-/* ==================================================================

-º¯ÊýÃû³Æ: zUmm_IsSameOperPlmn

-º¯Êý¹¦ÄÜ: ÅжÏÁ½¸öÍøÂçÊÇ·ñÊÇͬһ¸öÔËÓªÉÌÍøÂç

-Êä  Èë: ptPlmnId1,ptPlmnId2,ÐèÒª±È½ÏµÄÁ½¸öPLMNID

-                 bInsNo,´ý»ú²àָʾ0±íʾ´ý»ú²à1,1±íʾ´ý»ú²à2

-Êä  ³ö: 

-·µ  »Ø: Z_VALIDͬһÔËÓªÉÌ,Z_INVALID²»Í¬ÔËÓªÉÌ

-×¢  ÊÍ:

-================================================================== */

-extern BYTE zAti_IsSameOperPlmn(T_z_PlmnId *ptPlmnId1, T_z_PlmnId *ptPlmnId2, BYTE bInsNo);

-/* ==================================================================

-º¯ÊýÃû³Æ: zAti_IsCmccPlmnId

-º¯Êý¹¦ÄÜ: ÅжÏÍøÂçÊÇ·ñΪÖÐÒÆÍø

-Êä  Èë: ptPlmnId,ÐèÒªÅжϵÄPLMNID

-                 bInsNo,´ý»ú²àָʾ0±íʾ´ý»ú²à1,1±íʾ´ý»ú²à2

-Êä  ³ö: 

-·µ  »Ø: Z_VALIDÖÐÒÆ,Z_INVALID·ÇÖÐÒÆ

-×¢  ÊÍ:

-================================================================== */

-extern BYTE zAti_IsCmccPlmnId(T_z_PlmnId *ptPlmnId, BYTE bInsNo);

-/*********************************************

-*º¯ÊýÃû³Æ:zAti_IsCTPlmnId

-*º¯Êý¹¦ÄÜ:ÅжÏPLMNIDÊÇ·ñΪµçÐÅÍøÂç

-*********************************************/

-extern BYTE zAti_IsCTPlmnId(T_z_PlmnId *ptPlmnId, BYTE bInsNo);

-

-/* ==================================================================

-º¯ÊýÃû³Æ: zAti_GetOperByPlmnId

-º¯Êý¹¦ÄÜ: ¸ù¾ÝÍøÂçÅжÏÔËÓªÉÌ

-Êä  Èë: ptPlmnId,ÐèÒªÅжϵÄPLMNID

-                 bInsNo,´ý»ú²àָʾ0±íʾ´ý»ú²à1,1±íʾ´ý»ú²à2

-Êä  ³ö: 

-·µ  »Ø: 0ÒÆ¶¯1µçÐÅ2ÁªÍ¨3ÆäËû

-×¢  ÊÍ:

-================================================================== */

-BYTE zAti_GetOperByPlmnId(T_z_PlmnId *ptPlmnId, BYTE bInsNo);

-

-/*==================================================================

-º¯ÊýÃû³Æ:zAti_GetAppointedOperPlmnbyOperPlmnId

-º¯Êý¹¦ÄÜ:¸ù¾ÝÒ»¸öPLMNID»ñȡͬÊôÒ»¸öÔËÓªÉ̵ÄPLMNID

-Êä  Èë: ptPlmnIdËù¸ù¾ÝµÄPLMNID

-                 bInsNo,´ý»ú²àָʾ,0±íʾ´ý»ú²à1,1±íʾ´ý»ú²à2

-                 pVal,»ñÈ¡µÄͬһÔËÓªÉ̵ÄPLMNIDÊý¾Ý,Óɵ÷ÓÃÕßÉêÇëÄÚ´æ

-Êä  ³ö: 

-·µ  »Ø: Z_VALID³É¹¦,Z_INVALIDʧ°Ü

-×¢  ÊÍ:

-==================================================================*/

-extern BYTE zAti_GetAppointedOperPlmnByOperPlmnId(T_z_PlmnId *ptPlmnId, BYTE *pVal, BYTE bInsNo);

-/*==================================================================

-º¯ÊýÃû³Æ:zAti_GetAppointedOperPlmnByOperName

-º¯Êý¹¦ÄÜ:¸ù¾ÝÔËÓªÉÌÃû³Æ»ñȡͬÊôÒ»¸öÔËÓªÉ̵ÄPLMNID

-Êä  Èë: bNameFg,Ãû³ÆÀàÐÍָʾ0³¤Ãû1¶ÌÃû

-                 pNameÔËÓªÉÌÃû³Æ×Ö·û´®

-                 bInsNo,´ý»ú²àָʾ,0±íʾ´ý»ú²à1,1±íʾ´ý»ú²à2

-                 pVal,»ñÈ¡µÄͬһÔËÓªÉ̵ÄPLMNIDÊý¾Ý,Óɵ÷ÓÃÕßÉêÇëÄÚ´æ

-Êä  ³ö: 

-·µ  »Ø: Z_VALID³É¹¦,Z_INVALIDʧ°Ü

-×¢  ÊÍ:

-==================================================================*/

-extern BYTE zAti_GetAppointedOperPlmnByOperName(BYTE bNameFg, BYTE *pName, BYTE *pVal, BYTE bInsNo);

-/*========================================================================================

-º¯ÊýÃû³Æ:zAti_GetDualCardStat

-º¯Êý¹¦ÄÜ:»ñȡʵÌ忨ºÍÔÆ¿¨µ±Ç°µÄ״̬

-·µ»ØÖµ: 

-*pbSim1Stat:ʵÌ忨µÄ״̬0-È¥»î1-¼¤»î

-*pbSim2Stat:ÔÆ¿¨µÄ״̬0-È¥»î1-¼¤»î

-*pbIsCardSwitching:Ë«¿¨ÊÇ·ñÔÚÇл»¹ý³ÌÖÐ0-²»ÔÚ,1-ÔÚÇп¨

-*×¢ÊÍ:Èç¹ûµ±Ç°ÔÚÇп¨¹ý³ÌÖÐ,pbSim1Stat/pbSim2StatÊǸôÎÇп¨Ç°µÄ״̬

-=========================================================================================*/

-extern BYTE zAti_GetDualCardStat(PBYTE pbSim1Stat, PBYTE pbSim2Stat, PBYTE pbIsCardSwitching);

-/*========================================================================================

-º¯ÊýÃû³Æ:zAt_IsBeepCallNum

-º¯Êý¹¦ÄÜ:ÅжÏÊÇ·ñÊôÓÚ´óͨµÄECALLºÅÂë

-=========================================================================================*/

-extern BYTE zAt_IsBeepCallNum(T_z_CallNum *ptCheckedNum);

-/*==================================================================

-º¯ÊýÃû³Æ:zUmm_IsOtherPsSptSrvMove

-º¯Êý¹¦ÄÜ:ÅжÏÁíÒ»´ý»ú²àÊÇ·ñÖ§³ÖÒµÎñ°áǨ

-Êä  Èë: bInsIdx,´ý»ú²àָʾ,0±íʾ´ý»ú²à1,1±íʾ´ý»ú²à2

-Êä  ³ö: 

-·µ  »Ø: Z_VALIDÖ§³Ö,Z_INVALID²»Ö§³Ö

-×¢  ÊÍ:

-==================================================================*/

-#ifdef Z_DUALSTANDBY

-extern BYTE zUmm_IsOtherPsSptSrvMove(BYTE bInsIdx);

-#endif

-/*==================================================================

-º¯ÊýÃû³Æ:zUmm_IsPlmnIdEqual

-º¯Êý¹¦ÄÜ:ÅжÏÁ½¸öPLMNIDÊÇ·ñÏàͬ

-Êä  Èë: ptFstPlmn,ptSndPlmn´ý±È½ÏµÄÁ½¸öPLMNID

-Êä  ³ö: 

-·µ  »Ø: Z_VALIDÏàͬ,Z_INVALID²»Ïàͬ

-×¢  ÊÍ:

-==================================================================*/

-extern BYTE zUmm_IsPlmnIdEqual(T_z_PlmnId* ptFstPlmn, T_z_PlmnId* ptSndPlmn, BYTE bPsId);

-/*==================================================================

-º¯ÊýÃû³Æ:zUmm_GetCurAct_NasCom_ByIndex

-º¯Êý¹¦ÄÜ:»ñÈ¡µ±Ç°ÖÆÊ½ÐÅÏ¢

-Êä  Èë: bInsIdx,´ý»ú²àָʾ,0±íʾ´ý»ú²à1,1±íʾ´ý»ú²à2

-Êä  ³ö: 

-·µ  »Ø: ²Î¼ûatipscom.h(Z_NO_ACT/Z_TD_ACT/Z_W_ACT/Z_GSM_ACT/Z_LTE_ACT/Z_GSM_COMPACT_ACT)

-×¢  ÊÍ:

-==================================================================*/

-extern BYTE __ps_static_func zUmm_GetCurAct_NasCom_ByIndex(BYTE bInsIdx);

-/*****************************************************************************

-*    º¯ÊýÃû      £ºzUmm_IsSysconfigSptSpecAct

-*    ¹¦ÄÜ        £ºSysconfigÊÇ·ñÖ§³ÖÏìÓ¦µÄÖÆÊ½

-*    ÊäÈë²ÎÊý    £ºÎÞ

-*    Êä³ö²ÎÊý    £ºÎÞ

-*    ·µ»ØÖµËµÃ÷  Z_VALID\Z_INVALID

-*    ÆäËû˵Ã÷    £ºÎÞ

-*    linshengwei

-*****************************************************************************/

-BYTE zUmm_IsSysconfigSptSpecAct(BYTE bAct, BYTE bCurPsId);

-/* ==================================================================

-º¯ÊýÃû³Æ: zUmm_IsNeedChangeCfg

-º¯Êý¹¦ÄÜ: Ë«¿¨Ë«´ýÅжÏÁ½ÕÅ¿¨ÊÇ·ñÐèÒª½»»»¿¨²Û

-Êä  Èë: 

-Êä  ³ö: 

-·µ  »Ø: Z_NO_NEED_CHANGE²»ÐèÒª½»»»/Z_NEED_CHANGEÐèÒª½»»»/Z_NEED_USER_DECIDEÓÉÓû§¾ö¶¨

-×¢  ÊÍ: 

-================================================================== */

-BYTE zUmm_IsNeedChangeCfg(VOID);

-

-/*****************************************************************************

- *    º¯ÊýÃû      : zUmm_IsCsfbProc

- *    ¹¦ÄÜ        £ºµ±Ç°ÊÇ·ñ´¦ÓÚCsFb¹ý³Ì

- *    ÊäÈë²ÎÊý    £º

- *    Êä³ö²ÎÊý    £º

- *    ·µ»ØÖµËµÃ÷  £ºZ_VALID ÊÇCSFB¹ý³Ì / Z_INVALID£º²»ÊÇCSFB¹ý³Ì

- *    ÆäËû˵Ã÷    £ºÎÞ

- *****************************************************************************/

-extern BYTE zUmm_IsCsfbProc(BYTE bCurInsDex);

-

-/*****************************************************************************

- *    º¯ÊýÃû      : zUmm_IsInterRatChg

- *    ¹¦ÄÜ        £ºµ±Ç°ÊÇ·ñ´¦ÓÚ¿çÖÆÊ½¹ý³Ì

- *    ÊäÈë²ÎÊý    £º

- *    Êä³ö²ÎÊý    £º

- *    ·µ»ØÖµËµÃ÷  £ºZ_VALID ÊÇ¿çÖÆÊ½¹ý³ÌÖÐ / Z_INVALID£º²»ÊÇ¿çÖÆÊ½¹ý³Ì

- *    ÆäËû˵Ã÷    £ºÎÞ

- *****************************************************************************/

-extern BYTE zUmm_IsInterRatChg(BYTE bCurInsDex);

-

-extern BYTE zUmm_GetEnvelopLoci(T_zMmiaNas_CellInfo* ptLocation);

-

-/*===========================================================

-º¯ÊýÃû³Æ:zSm_IsDefPdpContextUsing

-º¯Êý¹¦ÄÜ:ÅжÏCIDÊÇ·ñÔÚʹÓÃ

-Êä  Èë: bCid,´ýÅжϵÄCID

-                 bInsNo,´ý»ú²àָʾ,0±íʾ´ý»ú²à1,1±íʾ´ý»ú²à2

-Êä  ³ö: 

-·µ  »Ø: Z_SUCCÔÚʹÓÃ,Z_FAILδÔÚʹÓÃ

-×¢  ÊÍ:

-============================================================*/

-extern BYTE zSm_IsDefPdpContextUsing(BYTE bInsNo, BYTE bCid);

-/*===========================================================

-º¯ÊýÃû³Æ:zEsm_IsDefPdpContextUsing

-º¯Êý¹¦ÄÜ:ÅжÏCIDÊÇ·ñÔÚʹÓÃ

-Êä  Èë: bCid,´ýÅжϵÄCID

-                 bInsNo,´ý»ú²àָʾ,0±íʾ´ý»ú²à1,1±íʾ´ý»ú²à2

-Êä  ³ö: 

-·µ  »Ø: Z_SUCCÔÚʹÓÃ,Z_FAILδÔÚʹÓÃ

-×¢  ÊÍ:

-============================================================*/

-extern  BYTE zEsm_IsDefPdpContextUsing(BYTE bInsNo, BYTE bCid);

-/*===========================================================

-º¯ÊýÃû³Æ:zSm_GetPdpInfoByCid

-º¯Êý¹¦ÄÜ:ÅжÏCIDÊÇ·ñ¼¤»î²¢»ñÈ¡¼¤»îÐÅÏ¢

-Êä  Èë: bCid,´ýÅжϵÄCID

-                 bInsNo,´ý»ú²àָʾ,0±íʾ´ý»ú²à1,1±íʾ´ý»ú²à2

-Êä  ³ö: ptSaveAddr¼¤»îµÄµØÖ·ÐÅÏ¢,Óɵ÷ÓÃÕßÉêÇëÄÚ´æ

-                 ptPcoOut¼¤»îµÄPCOÐÅÏ¢,Óɵ÷ÓÃÕßÉêÇëÄÚ´æ

-·µ  »Ø: Z_SUCCÒѾ­¼¤»î,Z_FAILδ¼¤»î

-×¢  ÊÍ:

-============================================================*/

-extern BYTE zSm_GetPdpInfoByCid(BYTE bInsNo, BYTE bCid, T_zMmiaSm_PdpAddr *ptSaveAddr, T_zMmiaSm_PcoInfo *ptPcoOut);

-/*===========================================================

-º¯ÊýÃû³Æ:zEsm_GetPdpInfoByCid

-º¯Êý¹¦ÄÜ:ÅжÏCIDÊÇ·ñ¼¤»î²¢»ñÈ¡¼¤»îÐÅÏ¢

-Êä  Èë: bCid,´ýÅжϵÄCID

-                 bInsNo,´ý»ú²àָʾ,0±íʾ´ý»ú²à1,1±íʾ´ý»ú²à2

-Êä  ³ö: ptMmiaPdpAddr¼¤»îµÄµØÖ·ÐÅÏ¢,Óɵ÷ÓÃÕßÉêÇëÄÚ´æ

-                 ptMmiaPcoInfo¼¤»îµÄPCOÐÅÏ¢,Óɵ÷ÓÃÕßÉêÇëÄÚ´æ

-·µ  »Ø: Z_SUCCÒѾ­¼¤»î,Z_FAILδ¼¤»î

-×¢  ÊÍ:

-============================================================*/

-extern  BYTE zEsm_GetPdpInfoByCid(BYTE bInsNo, BYTE bCid, T_zMmiaSm_PdpAddr *ptMmiaPdpAddr, T_zMmiaSm_PcoInfo *ptMmiaPcoInfo);

-/*=========================================================

-º¯ÊýÃû³Æ:zEsm_SendEsmATCommand

-º¯Êý¹¦ÄÜ:Åжϵ±Ç°ÏûÏ¢ÊÇ·ñ·¢¸ø4GÄ£¿é

-Êä  Èë: bInsNo,´ý»ú²àָʾ,0±íʾ´ý»ú²à1,1±íʾ´ý»ú²à2

-Êä  ³ö: 

-·µ  »Ø: Z_VALIDÊÇ,Z_INVALID·ñ

-×¢  ÊÍ:

-==========================================================*/

-extern  BYTE zEsm_SendEsmATCommand(BYTE bInsNo);

-/*=========================================================

-º¯ÊýÃû³Æ:zEsm_IsImsBearer

-º¯Êý¹¦ÄÜ:ÅжÏÖ¸¶¨CidÊÇ·ñÊÇIMS³ÐÔØ

-Êä  Èë: bCid

-        bInsNo ´ý»ú²àָʾ,0±íʾ´ý»ú²à1,1±íʾ´ý»ú²à2

-Êä  ³ö: 

-·µ  »Ø: Z_VALIDÊÇ,Z_INVALID·ñ

-×¢  ÊÍ:

-==========================================================*/

-extern BYTE zEsm_IsImsBearer(BYTE bCid, BYTE bInsNo);

-/*=========================================================

-º¯ÊýÃû³Æ:zStm_CardLostInd

-º¯Êý¹¦ÄÜ:֪ͨµ±Ç°ÒѾ­°Î¿¨

-Êä  Èë: tTaskIdx,´ý»ú²àָʾ,0±íʾ´ý»ú²à1,1±íʾ´ý»ú²à2

-==========================================================*/

-extern VOID zStm_CardLostInd(T_zStm_TaskIdx tTaskIdx);

-/*===========================================================

-º¯ÊýÃû³Æ:zStmPb_SetMode

-º¯Êý¹¦ÄÜ:֪ͨÊÇ·ñΪMTNET ²âÊÔģʽ

-Êä  Èë: isMTNetTest,1ÊÇ,0·ñ

-                 tTaskIdx,´ý»ú²àָʾ,0±íʾ´ý»ú²à1,1±íʾ´ý»ú²à2

-==========================================================*/

-extern VOID zStmPb_SetMode(BOOL isMTNetTest, T_zStm_TaskIdx bIndex);

-/*==================================================================

-º¯ÊýÃû³Æ:zStm_MmiaSms_CmglReq_Proc

-º¯Êý¹¦ÄÜ:¶ÌÐÅÁбíÇëÇó

-Êä  Èë: msgData,ÇëÇóÏûÏ¢ÄÚÈÝ,²Î¼ûT_zApMmia_ListSm_Req,Óɵ÷ÓÃÕßÉêÇëÄÚ´æ

-                 msgLen,ÇëÇóÏûÏ¢³¤¶È

-                 tTaskIdx,´ý»ú²àָʾ,0±íʾ´ý»ú²à1,1±íʾ´ý»ú²à2

-===================================================================*/

-extern VOID zStm_MmiaSms_CmglReq_Proc(const VOID *msgData, UINT16 msgLen,T_zStm_TaskIdx tTaskIdx);

-/*==================================================================

-º¯ÊýÃû³Æ:zStm_MmiaPb_AddUserEn_Proc

-º¯Êý¹¦ÄÜ:Ôö¼Ó½ô¼±ºÅÂë

-Êä  Èë: msgData,ÇëÇóÏûÏ¢ÄÚÈÝ,²Î¼ûT_ZAti_EmerNum_Req,Óɵ÷ÓÃÕßÉêÇëÄÚ´æ

-                 msgLen,ÇëÇóÏûÏ¢³¤¶È

-                 tTaskIdx,´ý»ú²àָʾ,0±íʾ´ý»ú²à1,1±íʾ´ý»ú²à2

-===================================================================*/

-extern VOID zStm_MmiaPb_AddUserEn_Proc(const VOID *msgData, UINT16 msgLen,T_zStm_TaskIdx tTaskIdx);

-/*==================================================================

-º¯ÊýÃû³Æ:zStm_AtiSms_CmgdTest_Proc

-º¯Êý¹¦ÄÜ:¶ÌÐŲâÊÔÃüÁîÇëÇó

-Êä  Èë: msgData,ÇëÇóÏûÏ¢ÄÚÈÝ,²Î¼ûT_zApMmia_ListSm_Req,Óɵ÷ÓÃÕßÉêÇëÄÚ´æ

-                 msgLen,ÇëÇóÏûÏ¢³¤¶È

-                 tTaskIdx,´ý»ú²àָʾ,0±íʾ´ý»ú²à1,1±íʾ´ý»ú²à2

-===================================================================*/

-extern VOID zStm_AtiSms_CmgdTest_Proc(const VOID *msgData, UINT16 msgLen,T_zStm_TaskIdx tTaskIdx);

-/*==================================================================

-º¯ÊýÃû³Æ:zStmPb_CpbrSynHandle

-º¯Êý¹¦ÄÜ:µç»°±¾¶ÁÈ¡ÇëÇó

-Êä  Èë: pCpbrReq,ÇëÇóÏûÏ¢ÄÚÈÝ,Óɵ÷ÓÃÕßÉêÇëÄÚ´æ²¢ÌîдÇëÇóÄÚÈÝ

-                 pCpbrCnf,¶ÁÈ¡µÄ½á¹û,Óɵ÷ÓÃÕßÉêÇëÄÚ´æ²¢³õʼ»¯

-                 tTaskIdx,´ý»ú²àָʾ,0±íʾ´ý»ú²à1,1±íʾ´ý»ú²à2

-Êä  ³ö: pCpbrCnf,¶ÁÈ¡µÄ½á¹û

-===================================================================*/

-extern VOID zStmPb_CpbrSynHandle(const T_zStm_Cpbr_Req *pCpbrReq, T_zStm_Cpbr_Cnf *pCpbrCnf,T_zStm_TaskIdx tTaskIdx);

-/*==================================================================

-º¯ÊýÃû³Æ:zStmPb_FindNumByName

-º¯Êý¹¦ÄÜ:ͨ¹ýÃû³Æ²éÕҵ绰±¾ÖÐËù¶ÔÓ¦µÄºÅÂë

-Êä  Èë: ptPhoneText,Ãû³Æ×Ö·û,Óɵ÷ÓÃÕßÉêÇëÄÚ´æ²¢ÌîдÄÚÈÝ

-                 ptQryPbResult,µ÷ÓÃÕßÉêÇëÄÚ´æ,±»µ÷ÓÃÕßÌîд²éÕÒµÄÄÚÈÝ

-                 tTaskIdx,´ý»ú²àָʾ,0±íʾ´ý»ú²à1,1±íʾ´ý»ú²à2

-Êä  ³ö: ptQryPbResult,²éÕҵĽá¹û

-===================================================================*/

-extern VOID zStmPb_FindNumByName(const T_zApMmia_PhoneText *ptPhoneText,T_zApMmia_QryPhoneResult *ptQryPbResult,T_zStm_TaskIdx tTaskIdx);

-

-/**************************************************************************

-* º¯ÊýÃû³Æ: zStmSms_MtSmStrgFullHandle

-* ¹¦ÄÜÃèÊö: ´æ´¢SM´æ´¢Æ÷ÓöÂúµÄÇé¿ö´¦Àí

-* ²ÎÊý˵Ã÷: (IN)

-*           (OUT)

-* ·µ »Ø Öµ: 

-* ÆäËü˵Ã÷: Ìṩ¸øATIµÄ½Ó¿Ú£¬MT=2,APÂú£¬CSMS=0ʱ£¬Í¨ÖªÍø²à²»¿ÉÓã¬

-*                    STMÖÃMCENF

-**************************************************************************/

-extern VOID zStmSms_MtStrgFullHandle(T_zStm_TaskIdx tTaskIdx);

-

-/*============================================================

-º¯ÊýÃû³Æ:zStmSms_GetMemStatus

-º¯Êý¹¦ÄÜ: ²éѯ¶ÌÏûÏ¢´æ´¢Æ÷״̬

-Êä  Èë: bMem: ´æ´¢Æ÷ID

-Êä  ³ö: pwMemCapacity: ´æ´¢Æ÷ÈÝÁ¿

-                 pwMemUsed: ÒÑÓô洢Æ÷¿Õ¼ä

- ·µ »Ø Öµ: ÎÞ

-=============================================================*/

-extern VOID zStmSms_GetMemStatus(BYTE bMem, WORD *pwMemCapacity, WORD *pwMemUsed,T_zStm_TaskIdx tTaskIdx);

-/*============================================================================

-º¯ÊýÃû³Æ:zStmPb_QueryNumType

-º¯Êý¹¦ÄÜ: ²éѯµ±Ç°ºÅÂëÊÇ·ñΪ½ô¼±ºÅÂë

-Êä  Èë: ptBcdNum: ºÅÂë,Óɵ÷ÓÃÕßÉêÇëÄÚ´æ²¢Ìîд

-                 tPlmnAct:µ±Ç°×¤ÁôµÄPLMNID

-                 tTaskIdx,´ý»ú²àָʾ,0±íʾ´ý»ú²à1,1±íʾ´ý»ú²à2

-Êä  ³ö: ptNumType: »ñÈ¡µÄºÅÂëÀàÐÍ,Z_APMMIA_NUMTYPE_ECCCALLµÈºêÖµ¶¨Òå²Î¼ûatipsint.h

-·µ »Ø Öµ: ÎÞ

-==============================================================================*/

-extern VOID zStmPb_QueryNumType(const T_z_CallNum  *ptBcdNum, T_zApMmia_NumType *ptNumType, T_zPS_PlmnId tPlmnAct, T_zStm_TaskIdx tTaskIdx);

-/*============================================================

-º¯ÊýÃû³Æ:zStmPb_FindNumByIndex

-º¯Êý¹¦ÄÜ: ͨ¹ýË÷ÒýÖµ²éÕҵ绰±¾ÖеĺÅÂë

-Êä  Èë: ptIndexReq: Ë÷ÒýÖµ,Óɵ÷ÓÃÕßÉêÇëÄÚ´æ²¢Ìîд

-                 ptQryPbResult,²éѯµÄ½á¹û,Óɵ÷ÓÃÕßÉêÇëÄÚ´æ²¢³õʼ»¯

-                 tTaskIdx,´ý»ú²àָʾ,0±íʾ´ý»ú²à1,1±íʾ´ý»ú²à2

-Êä  ³ö: ptQryPbResult: ²éÕҵĽá¹û,Óɱ»µ÷ÓõÄÒ»·½Ìîд

- ·µ »Ø Öµ: ÎÞ

-=============================================================*/

-extern VOID zStmPb_FindNumByIndex(const T_zApMmia_PbFindIndex *ptIndexReq, T_zApMmia_QryPhoneResult *ptQryPbResult,T_zStm_TaskIdx tTaskIdx);

-/*============================================================

-º¯ÊýÃû³Æ:zStmPb_FindNameByNum

-º¯Êý¹¦ÄÜ: ͨ¹ýºÅÂë²éѯµç»°±¾ÀïµÄÃû³Æ

-Êä  Èë: T_z_CallNum: Ë÷ÒýÖµ,Óɵ÷ÓÃÕßÉêÇëÄÚ´æ²¢Ìîд

-                 ptQryPbResult,²éѯµÄ½á¹û,Óɵ÷ÓÃÕßÉêÇëÄÚ´æ²¢³õʼ»¯

-                 tTaskIdx,´ý»ú²àָʾ,0±íʾ´ý»ú²à1,1±íʾ´ý»ú²à2

-Êä  ³ö: ptQryPbResult: ²éÕҵĽá¹û,Óɱ»µ÷ÓõÄÒ»·½Ìîд

- ·µ »Ø Öµ: ÎÞ

-=============================================================*/

-extern VOID zStmPb_FindNameByNum(const T_z_CallNum *ptBcdNum, T_zApMmia_QryPhoneResult *ptQryPbResult,T_zStm_TaskIdx tTaskIdx);

-/*============================================================

-º¯ÊýÃû³Æ:zStmPb_GetEccNum

-º¯Êý¹¦ÄÜ: »ñÈ¡½ô¼±ºÅÂëÁбí

-Êä  Èë: pEmerNumList: ²éѯµÄ½á¹û,Óɵ÷ÓÃÕßÉêÇëÄÚ´æ²¢³õʼ»¯

-                 tTaskIdx,´ý»ú²àָʾ,0±íʾ´ý»ú²à1,1±íʾ´ý»ú²à2

-Êä  ³ö: pEmerNumList: ²éÕҵĽá¹û,Óɱ»µ÷ÓõÄÒ»·½Ìîд²éÕÒ½á¹û

- ·µ »Ø Öµ: ÎÞ

-=============================================================*/

-extern VOID zStmPb_GetEccNum(T_zApMmia_EmerNumList *pEmerNumList,T_zStm_TaskIdx tTaskIdx);

-/*============================================================

-º¯ÊýÃû³Æ:zStmPb_EmerNumListInd_Proc

-º¯Êý¹¦ÄÜ: ±£´æ½ô¼±ºÅÂëÁбí

-Êä  Èë: emerNumList_Ind: ½ô¼±ºÅÂëÁбí,Óɵ÷ÓÃÕßÉêÇëÄÚ´æ²¢Ìîд

-                 tTaskIdx,´ý»ú²àָʾ,0±íʾ´ý»ú²à1,1±íʾ´ý»ú²à2

-Êä  ³ö: ÎÞ

-·µ »Ø Öµ: TRUE,ºÅÂë±£´æ³É¹¦²¢ÐèÒªÏòAP²àÉϱ¨½ô¼±ºÅÂë

-                        FALSE,²»ÐèÒªÉϱ¨½ô¼±ºÅÂë

-=============================================================*/

-extern BOOL zStmPb_EmerNumListInd_Proc(T_zApMmia_PbEmerNumList_Ind emerNumList_Ind, T_zStm_TaskIdx tTaskIdx);

-/*=========================================================

-º¯ÊýÃû³Æ:zEucsr_GetBandInfo

-º¯Êý¹¦ÄÜ:»ñÈ¡µ±Ç°LTEÖÆÊ½×¤ÁôµÄƵ¶Î

-Êä  Èë: pbBand,פÁôƵ¶Î,Óɵ÷ÓÃÕßÉêÇëÄÚ´æ²¢³õʼ»¯

-Êä  ³ö: pbBand,µ±Ç°×¤ÁôµÄƵ¶Î,Óɱ»µ÷ÓÃÕßÌîд

-·µ »Ø Öµ: ÎÞ

-==========================================================*/

-extern VOID zEucsr_GetBandInfo(PBYTE pbBand);

-/*==========================================================================

-º¯ÊýÃû³Æ:zUrbc_GetBandInfo

-º¯Êý¹¦ÄÜ:»ñÈ¡TDÖÆÊ½Ï£¬Ö÷ƵºÍ¸¨Æµ¶ÔÓ¦µÄƵ¶ÎÐÅÏ¢

-Êä  Èë: ÎÞ

-Êä  ³ö: pbPriBand:Ö÷ƵµãËùÊôƵ¶ÎÖ¸Õ룬pbSupBand:¸¨ÆµµãËùÊôƵ¶ÎÖ¸Õë

-·µ »Ø Öµ:ÎÞ

-============================================================================*/

-extern VOID zUrbc_GetBandInfo(PBYTE pbPriBand, PBYTE pbSupBand);

-/*==========================================================================

-º¯ÊýÃû³Æ:zWrbc_GetBandInfo

-º¯Êý¹¦ÄÜ:»ñÈ¡WÖÆÊ½Ïµ±Ç°×¤ÁôµÄƵ¶Î

-Êä  Èë: ÎÞ

-Êä  ³ö: pbPriBand:ƵµãËùÊôƵ¶ÎÖ¸Õë

-·µ»ØÖµËµÃ÷  £ºÎÞ

-ÆäËû˵Ã÷    £ºÎÞ

-============================================================================*/

-#ifdef PS_RAT_FDD

-extern VOID zWrbc_GetBandInfo(PBYTE pbPriBand);

-#endif

-/*=======================================================

-º¯ÊýÃû³Æ:zEucer_GetRrcStateForMmia

-º¯Êý¹¦ÄÜ:»ñÈ¡RRC״̬

-Êä  Èë: bInsNo´ý»ú²àָʾ,0±íʾ´ý»ú²à1,1±íʾ´ý»ú²à2

-Êä  ³ö: ÎÞ

-·µ »Ø Öµ:1 - RRC Idle

-                      3- RRC Connected

-=======================================================*/

-extern BYTE zEucer_GetRrcStateForMmia(BYTE bInsNo);

-/*=======================================================

-º¯ÊýÃû³Æ:zEmm_GetCurState

-º¯Êý¹¦ÄÜ:»ñÈ¡EMM״̬

-Êä  Èë: ÎÞ

-Êä  ³ö: ÎÞ

-·µ »Ø Öµ:

-0 - EMM-NULL

-1 - EMM-DEREGISTERED

-2 - EMM- EMM-REGISTERED 

-3 - EMM- REGISTERED-INITIATED

-4 - EMM- TRACKING-AREA-UPDATING-INITIATED

-5 - EMM- SERVICE-REQUEST-INITIATED

-6 - EMM- DEREGISTERED-INITIATED

-7 - EMM- MTDEREGISTERED-INITATED

-8 - EMM- EXTEND-SERVICE-REQUEST -INITATED

-=======================================================*/

-extern BYTE zEmm_GetCurState(BYTE bInsNo);

-/*=======================================================

-º¯ÊýÃû³Æ:zCc_CbstCheck

-º¯Êý¹¦ÄÜ:¼ì²é+CBST¸÷ÃüÁî²ÎÊýµÄºÏ·¨ÐÔ

-Êä  Èë:pSpeed    £­ËÙÂÊ

-                 pName     £­Í¬²½/Òì²½

-                 pCe       £­Í¸Ã÷/·Ç͸Ã÷

-Êä  ³ö: ÎÞ

-·µ »Ø Öµ:Z_FAIL,²ÎÊý·Ç·¨

-                      Z_SUCC,²ÎÊýºÏ·¨

-=======================================================*/

-extern BYTE zCc_CbstCheck(PBYTE pSpeed, PBYTE pName, PBYTE pCe);

-extern BYTE zCc_GetCallState(BYTE bInsIdx);

-/*============================================================

-º¯ÊýÃû     : zEusir_GetAtiLastCellSIBInfo

-º¯Êý¹¦ÄÜ:·µ»Ø×îºóÒ»´Î¶ÁÈ¡SIB1³É¹¦ºóÐ¡ÇøÐÅÏ¢,¹©ATIµ÷ÓÃ

-Êä  Èë: bInsNo´ý»ú²àָʾ,0±íʾ´ý»ú²à1,1±íʾ´ý»ú²à2

-·µ »Ø Öµ:

-=============================================================*/

-extern T_zMmiaAs_CellInfo zEusir_GetAtiLastCellSIBInfo(BYTE bInsNo);

-/*==================================================================

-º¯ÊýÃû³Æ: zApMmia_SmsListMsgConversion

-º¯Êý¹¦ÄÜ: ½«PBµÄÁоٶÌÐÅ»ØÓ¦µÄ½á¹¹Ìåת»»ÎªATI´¦ÀíµÄ½á¹¹Ìå

-Êä    Èë: ptListSmRltÁоٶÌÐÅÈ·ÈϵÄÏûÏ¢½á¹¹Ìå

-                   bInstance´ý»ú²àָʾ,0±íʾ´ý»ú²à1,1±íʾ´ý»ú²à2

-Êä    ³ö: pSmsMsgContentת»»ºóµÄÏûÏ¢Óë½á¹¹Ìå

-·µ»Ø  Öµ: ת»»½á¹û£º

-            Z_APMMIA_OPERATION_FAILURE

-            Z_APMMIA_OPERATION_SUCCESS

-===================================================================*/

-extern BYTE zApMmia_SmsListMsgConversion(T_zApMmia_ListSmRlt *ptListSmRlt, T_zApMmia_SmsMsgContent *ptSmsMsgContent, BYTE bInstance);

-

-/*=========================================================

-º¯ÊýÃû³Æ:zAt_GetZcwaSetFlg

-º¯Êý¹¦ÄÜ:»ñÈ¡µ±Ç°ZCWAÉèÖõÄÖµ

-Êä  Èë: bInsNo´ý»ú²àָʾ,0±íʾ´ý»ú²à1,1±íʾ´ý»ú²à2

-Êä  ³ö: 

-·µ »Ø Öµ: 0:ÊÕµ½waiting callʱֱ½Ó¾Ü¾ø²»Éϱ¨£¬1:Õý³£Éϱ¨

-==========================================================*/

-#ifdef USE_VOICE_SUPPORT

-extern BYTE zAt_GetZcwaSetFlg(BYTE bInsNo);

-#endif

-extern UINT16 zAt2_UtilNp7bitToAscii( const UINT8 *pStr7bitPtr, UINT8 *pAsciiStrPtr, UINT16 i7bitLength);

-extern T_z_PlmnId zAti_GetCurrPlmn(BYTE bInsIdx);

-extern int get_cid_state(unsigned char cid);

-extern BYTE zAti_GetS0Value(VOID);

-extern DWORD zAti_GetUlRateIndTimerVal(BYTE bInsIdx);

-#endif

-

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
deleted file mode 100755
index ab3a03f..0000000
--- a/Uboot/cp/ps/modem/ps/src/nas/ati/src/zati_fnc.c
+++ /dev/null
@@ -1,9129 +0,0 @@
-/**************************************************************************

-*

-*             Protocol Stack Adapter Layer Telephone Interface

-*

-*                  Copyright (c) 2007 ZTE Corporation.

-*

-***************************************************************************

-*

-*   °æ±¾ËùÓÐ : ÖÐÐËͨѶ¹É·ÝÓÐÏÞ¹«Ë¾ ÊÖ»úÊÂÒµ²¿ ƽ̨¼Ü¹¹²¿

-*   Ä£ ¿é Ãû : ATI2Ä£¿éʵÏÖÎļþ

-*   ÎÄ ¼þ Ãû : zati2_fnc.c

-*   Îļþ±êʶ : 

-*   Ïà¹ØÎļþ : 

-*   ʵÏÖ¹¦ÄÜ :   

-*   ×÷    Õß : ChenYun

-*   °æ    ±¾ : 2.0

-*   Íê³ÉÈÕÆÚ : 2008/02/25

-*   ÆäËü˵Ã÷ : 

-*

-***************************************************************************

-*

-*   ÎļþÃèÊö

-*   ----------------

-*   ATI2¹¦ÄÜʵÏÖ

-*

-***************************************************************************/

-

-/**************************************************************************

-*                        Í·Îļþ°üº¬                                      *

-**************************************************************************/

-#include "ps/src/nas/ati/inc/zat_com.h"

-#include "ps/src/nas/ati/inc/zati_csd_fnc.h"

-#include "ps/src/nas/ati/inc/zati_pdi_fnc.h"

-#include "ps/src/nas/ati/inc/zat_fnc.h"

-#include "ps/src/nas/ati/inc/zati_com.h"

-#include "ps/src/nas/ati/inc/zati_othr.h" 

-#include "ps/src/nas/ati/inc/zat_ext_fnc.h"

-#include "ps/src/nas/ati/inc/zati_sm.h" 

-

-#ifdef USE_VOICE_SUPPORT

-#ifndef _OS_WIN

-#include "drvs_volte.h"

-#endif

-#endif

-/**************************************************************************

-*                            ³£Á¿                                        *

-**************************************************************************/

-#define ZATI2_INVAL_INDEX              0xff

-

-/**************************************************************************

-*                            ºê                                          *

-**************************************************************************/

-

-/**************************************************************************

-*                          ¾Ö²¿º¯ÊýÉêÃ÷                                       *

-**************************************************************************/

-static BYTE zAti_CheckRecvMsg(UINT32 iEvId, UINT8 *pDataPtr, UINT16 iDataLen);

-//--static VOID zAti_HandleSmOpenChInd(VOID *pBuff);

-static VOID zAti_HandleSmGetPcoInd(VOID *pBuff);

-static BOOL zAti_HandleSmActCnfExt(VOID *pDataPtr);

-static DWORD zAti_HandleSmActCnf(VOID* pBuff, DWORD * pdwChangedMsgId, T_ZAti_ChannelInfo  *pChnelNode);

-//static VOID zAti_HandleSmCloseChInd(VOID *pBuff);

-static VOID zAti_HandleZmenaCnf(VOID *pDataPtr);

-static BOOL zAti_IsNoOccupyedCid(PBYTE pExistedExCid, BYTE bCid);

-static BOOL zAti_GetDualStackExCid(PBYTE pExistedExCid,PBYTE pExCid);

-static BOOL zAti_HandleSmDeActCid(UINT8 bCid);

-static BOOL zAti_HandleSmCleanExCidInfo(T_zMmiaSm_PdpAct_Cnf * pSmActDeacCnf);

-static BOOL zAti_HandleSmActFailedExCid(T_zMmiaSm_PdpAct_Cnf * pSmActDeacCnf, UINT8* pDest);

-static  T_ZAti_ChannelInfo * zAti_GetChnelNode(UINT32 iEvId, UINT8 *pDataPtr, UINT16 iDataLen);

-#ifdef USE_VOICE_SUPPORT

-static VOID zAti_HandleCcDiscInd( T_ZAti_ChannelInfo *pChnelNode);

-#endif

-DWORD zAti_HandleCgattSetReqCnf(VOID* pBuff, DWORD * pdwChangedMsgId, T_ZAti_ChannelInfo  *pChnelNode);

-static SINT32 zAti_ChangeChnelNodeToData(T_ZAti_DataType dataType, CHAR *pEncodeCmd, UINT16 iEncodeCmdLen, T_ZAti_ChannelInfo *pChnelNode);

-#ifdef USE_VOICE_SUPPORT

-static VOID zAti_SendConnInd(UINT8 *pDataPtr, CHAR *pEncodeCmd, UINT16 iEncodeCmdLen, T_ZAti_ChannelInfo *pChnelNode);

-#endif

-static SINT32 zAti_SendSmConnectInd(UINT8 *pDataPtr, CHAR *pEncodeCmd, UINT16 iEncodeCmdLen, T_ZAti_ChannelInfo *pChnelNode);

-static VOID zAti_HandleZgactCnfMsg(T_zMmiaSm_PdpAct_Cnf *pSmCgactCnf,  T_ZAti_ChannelInfo *pChnelNode);

-static BOOL zAti_HandleCnfMsgBeforeEncCmd(UINT32 iEvId, UINT8 *pDataPtr, UINT16 iDataLen,  T_ZAti_ChannelInfo *pChnelNode);

-static VOID zAti_CpbrHandle(T_zApMmia_CpbrSet_Req* pCpbrReq, UINT16 iStartRec, T_zStmPb_StorageId readStorage, T_zStm_Cpbr_Cnf *pCpbrStmCnf);

-static BOOL  zAti_GetDestTaskByMsgID(UINT32 msgId, UINT8 *destTask);

-static VOID zAti_SaveOnlyCidTab(UINT8 iCid, BYTE bExCid, BYTE bExPdpType);

-

-static VOID zAti_EUmcrBand39InfoInd(VOID* pBuff);

-

-static BYTE zAti_ConvertTskIdToSbMdl(BYTE destTask);

-static VOID zAti_CpbrCnf(UINT8 *pDataPtr);

-static VOID zAti_StmListInd(UINT8 *pDataPtr);

-// ·ÇÉϱ¨ÖÐÖ÷¿ØÏûÏ¢

-#ifdef Z_DUALSTANDBY

-static VOID zAti_RecvGrrNCellChngInd(VOID *pBuff);

-#endif

-#ifdef USE_VOICE_SUPPORT

-static VOID zAti_Drv_dtmfrx_Report(char *dtmf, unsigned char dtmfLen);

-#ifndef _OS_WIN

-static VOID zAti_RegDtmfCallBack();

-#endif

-#endif

-static VOID zAti_NotifyApModemReady(VOID); /* 617001591411 ¡¾ÖÇÄÜ»úÐèÇó¡¿- ÖÇÄÜ»úÐèÇóV3°æ±¾Í¬²½ÊµÏÖ*/

-static DWORD zAti_PreUiccSlotInd(VOID *pbMsgData, DWORD * pdwChangedMsgId, T_ZAti_ChannelInfo  *pChnelNode);

-static DWORD zAti_HandleUserDeactCnfMsg( VOID* pBuff, DWORD *pdwChangedMsgId, T_ZAti_ChannelInfo  *pChnelNode);

-static DWORD zAti_HandlePppCommonCnf(VOID* pBuff, DWORD *pdwChangedMsgId, T_ZAti_ChannelInfo  *pChnelNode);

-

-VOID zAti_RemoveALLCmd(T_ZAti_ChannelInfo *pChnelNode);

-VOID zAti_HandlePppProcCmdError(VOID);

-BYTE zAti_PppGetCid(BYTE  bChnelId);

-#ifdef Z_DUALSTANDBY

-VOID zAti_CsCallStartInd(VOID *pDataPtr);

-VOID zAti_CsCallEndInd(VOID *pDataPtr);

-#endif

-VOID zAti_ClearPcoChap(VOID);

-VOID zAti_GetEmInfoMutex(BYTE bInsIdx);

-VOID zAti_PutEmInfoMutex(BYTE bInsIdx);

-VOID zAti_DecreaseReqCountAndRelMutexSemaphore(VOID);

-VOID zAti_EMCellInfoReq(VOID);

-BOOL zAti_PcoItemIsValidByPcoId(WORD wId);

-static VOID zAti_Transform (UINT32 *buf, UINT32 *in);

-/**************************************************************************

-*                           È«¾Ö±äÁ¿                                      *

-**************************************************************************/

-

-const T_ZAti_MsgTrnsprncy g_TaskMsgMap[] =

-{

-    /************************CC Massage************************/

-#ifdef USE_VOICE_SUPPORT

-    {MMIA_CC_ANS_MODE_REQ_EV,           Z_ATI_TASKID_CC },

-    {MMIA_CC_STATE_QUERY_REQ_EV,        Z_ATI_TASKID_CC },

-    {MMIA_CC_DIS_MODE_REQ_EV,           Z_ATI_TASKID_CC },

-    {MMIA_CC_MODIFY_REQ_EV,             Z_ATI_TASKID_CC },

-    {MMIA_CC_CHLD_REQ_EV,                Z_ATI_TASKID_CC},

-    {MMIA_CC_CSTA_SET_REQ_EV,                Z_ATI_TASKID_CC  },

-    {MMIA_CC_CSTA_QUERY_REQ_EV,                Z_ATI_TASKID_CC  },

-    {MMIA_CC_DTMF_REQ_EV,              Z_ATI_TASKID_CC  },

-    {MMIA_CC_MTC_RSP_EV,                Z_ATI_TASKID_CC  },

-    {MMIA_CC_MOC_REQ_EV,           Z_ATI_TASKID_CC},

-    {MMIA_CC_T9TIMER_SET_REQ_EV,         Z_ATI_TASKID_CC},

-    {MMIA_CC_T9TIMER_QRY_REQ_EV,         Z_ATI_TASKID_CC},

-    {MMIA_CC_STATE_REQ_EV,        Z_ATI_TASKID_CC},

-    {MMIA_CC_OPEN_VOICECHNL_REQ_EV,     Z_ATI_TASKID_CC},

-    {MMIA_CC_SRVCC_NOTOPEN_VOICECHNL_REQ_EV,   Z_ATI_TASKID_CC},

-    {MMIA_CC_VOICEMODE_QRY_REQ_EV,     Z_ATI_TASKID_CC},

-    {MMIA_CC_RESETIVS_REQ_EV,   Z_ATI_TASKID_CC},

-#endif

-    /************************ESM Massage************************/

-    {MMIA_ESM_EPS_QOS_QUERY_REQ_EV, Z_ATI_TASKID_ESM   },

-

-    

-    /************************SM Massage*******************/

-#if defined (PS_RAT_GSM) || defined (PS_RAT_TDD) || defined (PS_RAT_FDD)

-    {MMIA_SM_NEG_QOS_QUERY_REQ_EV    ,Z_ATI_TASKID_SM},

-    {MMIA_SM_NEG_EQOS_QUERY_REQ_EV    ,Z_ATI_TASKID_SM},

-#endif

-#ifdef CXT_MOV

-    {MMIA_SM_CONTEXT_REQ_EV, Z_ATI_TASKID_SM},

-#endif

-    //{MMIA_SM_DISCONNECT_REQ_EV    ,Z_ATI_TASKID_SM},

-

-

-    /************************SM and ESM Massage*******************/

-    {MMIA_SM_IDLE_CHNL_QUERY_RSP_EV    ,Z_ATI_TASKID_SM},

-    {MMIA_SM_PDP_STATUS_QUERY_REQ_EV, Z_ATI_TASKID_ESM    },

-    {MMIA_SM_ACTIVATED_CID_QUERY_REQ_EV, Z_ATI_TASKID_ESM},

-    {MMIA_SM_DATA_STATE_REQ_EV, Z_ATI_TASKID_ESM },

-    {MMIA_SM_PDP_ADDR_QUERY_REQ_EV, Z_ATI_TASKID_ESM },

-    {MMIA_SM_PDP_MODIFY_REQ_EV, Z_ATI_TASKID_ESM },

-    {MMIA_SM_CGCONTRDP_REQ_EV, Z_ATI_TASKID_ESM   },

-    {MMIA_SM_CGSCONTRDP_REQ_EV, Z_ATI_TASKID_ESM },

-    {MMIA_SM_CGTFTRDP_REQ_EV, Z_ATI_TASKID_ESM    },

-    {MMIA_SM_GET_PCO_RSP_EV, Z_ATI_TASKID_ESM},

-    {MMIA_SM_IP_PDP_ACT_REQ_EV, Z_ATI_TASKID_ESM},

-

-    /************************UICC Massage************************/

-    {AP_UICC_INIT_REQ_EV, Z_ATI_TASKID_UICC  },

-    {AP_UICC_PIN_REMAIN_NUM_REQ_EV, Z_ATI_TASKID_UICC   },

-    {AP_UICC_PIN_STAT_QUERY_REQ_EV, Z_ATI_TASKID_UICC},

-    {AP_UICC_PIN_APPL_SET_REQ_EV, Z_ATI_TASKID_UICC},

-    {AP_UICC_PIN_APPL_READ_REQ_EV, Z_ATI_TASKID_UICC},

-    {AP_UICC_CARD_MODE_REQ_EV, Z_ATI_TASKID_UICC},

-    {AP_UICC_READ_REQ_EV, Z_ATI_TASKID_UICC },

-    {AP_UICC_ZPUK_REQ_EV, Z_ATI_TASKID_UICC },

-    {AP_UICC_AUTH_REQ_EV, Z_ATI_TASKID_UICC },

-    {AP_UICC_REFRESH_REQ_EV, Z_ATI_TASKID_UICC },

-    {AP_UICC_USAT_ENVELOP_REQ_EV, Z_ATI_TASKID_UICC },

-    {AP_UICC_USAT_TERMNL_RSP_REQ_EV, Z_ATI_TASKID_UICC },

-    {AP_UICC_USAT_TERMNL_PROF_REQ_EV, Z_ATI_TASKID_UICC },

-    {AP_UICC_TO_READ_CARD_REQ_EV, Z_ATI_TASKID_UICC },

-    {AP_UICC_CSIM_REQ_EV, Z_ATI_TASKID_UICC },

-    {AP_UICC_CCHO_REQ_EV, Z_ATI_TASKID_UICC },

-    {AP_UICC_CCHC_REQ_EV, Z_ATI_TASKID_UICC },

-    {AP_UICC_CGLA_REQ_EV, Z_ATI_TASKID_UICC },

-    {AP_UICC_CRSM_REQ_EV, Z_ATI_TASKID_UICC },

-    {AP_UICC_AIR_AUTH_RSP_IND_EV, Z_ATI_TASKID_UICC },

-    {AP_UICC_READ_EID_REQ_EV, Z_ATI_TASKID_UICC },

-

-    /************************UMM Massage************************/

-    {MMIA_UMM_CGATT_QUERY_REQ_EV  , Z_ATI_TASKID_UMM},

-    {MMIA_UMM_ACTIVE_REQ_EV  , Z_ATI_TASKID_UMM  },

-    {MMIA_UMM_ZATT_QUERY_REQ_EV  , Z_ATI_TASKID_UMM},

-    {MMIA_UMM_SYSCONFIG_REQ_EV  , Z_ATI_TASKID_UMM  },

-    {MMIA_UMM_SYSCONFIG_QUERY_REQ_EV  , Z_ATI_TASKID_UMM },

-    {MMIA_UMM_VOICE_MODE_SET_REQ_EV  , Z_ATI_TASKID_UMM },

-    {MMIA_UMM_VOICE_MODE_QUERY_REQ_EV  , Z_ATI_TASKID_UMM },

-    {MMIA_UMM_SMSOVERIPNET_SETREQ_EV  , Z_ATI_TASKID_UMM },

-    {MMIA_UMM_CSG_SEL_REQ_EV  , Z_ATI_TASKID_UMM },

-    {MMIA_UMM_CURRENT_CSG_QUERY_REQ_EV  , Z_ATI_TASKID_UMM },

-    {MMIA_UMM_CSG_LIST_REQ_EV  , Z_ATI_TASKID_UMM },

-    {MMIA_UMM_EPS_MODE_QUERY_REQ_EV  , Z_ATI_TASKID_UMM },

-    {MMIA_UMM_EPS_MODE_SET_REQ_EV  , Z_ATI_TASKID_UMM },

-    {MMIA_UMM_PLMN_LIST_REQ_EV  , Z_ATI_TASKID_UMM },

-    {MMIA_UMM_SET_LTE_ACT_REQ_EV, Z_ATI_TASKID_UMM },

-    {MMIA_UMM_CS_SRV_CNF_EV, Z_ATI_TASKID_UMM },

-    {MMIA_UMM_IMS_REGISTER_STATES_EV, Z_ATI_TASKID_UMM},

-    {MMIA_UMM_XCELLINFO_REQ_EV, Z_ATI_TASKID_UMM},

-    {MMIA_UMM_CSVOICE_QUERY_REQ_EV, Z_ATI_TASKID_UMM},

-#ifdef ECALL_SUPPORT

-    {MMIA_UMM_ECALLSPT_QUERY_REQ_EV, Z_ATI_TASKID_UMM},

-    {MMIA_UMM_ECALLONLY_QUERY_REQ_EV, Z_ATI_TASKID_UMM},

-#endif

-

-    /************************SS Massage************************/

-#ifdef USE_VOICE_SUPPORT

-    {MMIA_SS_CLIP_READ_REQ_EV , Z_ATI_TASKID_SS },

-    {MMIA_SS_CLIR_READ_REQ_EV , Z_ATI_TASKID_SS },

-    {MMIA_SS_CCFC_SET_REQ_EV , Z_ATI_TASKID_SS },

-    {MMIA_SS_CCWA_SET_REQ_EV , Z_ATI_TASKID_SS },

-    {MMIA_SS_COLR_READ_REQ_EV , Z_ATI_TASKID_SS },

-    {MMIA_SS_CNAP_READ_REQ_EV , Z_ATI_TASKID_SS },

-    {MMIA_SS_COLP_READ_REQ_EV , Z_ATI_TASKID_SS },

-#endif

-#ifdef _USE_LPP_ECID

-    {MMIA_SS_MTLR_ANS_REQ_EV , Z_ATI_TASKID_SS},

-#endif

-    /************************SMS Massage************************/

-    {MMIA_SMS_REC_RSP_REQ_EV  ,Z_ATI_TASKID_SMS },

-    {MMIA_SMS_MEM_AVAIL_REQ_EV, Z_ATI_TASKID_SMS},

-

-        

-    /************************PB Massage************************/

-    {AP_MMIA_PB_STORAGE_STATUS_REQ_EV , Z_ATI_TASKID_PB },

-    {AP_MMIA_PB_EDIT_REQ_EV , Z_ATI_TASKID_PB },

-    {AP_MMIA_PB_CPBW_QUERY_REQ_EV , Z_ATI_TASKID_PB },

-    //--{AP_MMIA_PB_FIND_INDEX_REQ_EV , Z_ATI_TASKID_PB },

-    {AP_MMIA_PB_FIND_TEXT_REQ_EV , Z_ATI_TASKID_PB },

-    {AP_MMIA_PB_STO_SET_REQ_EV , Z_ATI_TASKID_PB },

-    {AP_MMIA_PB_S_FIND_INDEX_REQ_EV , Z_ATI_TASKID_PB },

-    {AP_MMIA_PB_SCPBR_TEST_REQ_EV , Z_ATI_TASKID_PB },

-    {AP_MMIA_PB_S_EDIT_REQ_EV , Z_ATI_TASKID_PB },

-    {AP_MMIA_PB_SCPBW_TEST_REQ_EV , Z_ATI_TASKID_PB },

-    {AP_MMIA_PB_C_NUM_REQ , Z_ATI_TASKID_PB },

-    {AP_MMIA_PB_READ_CAPA_REQ_EV , Z_ATI_TASKID_PB },

-    {AP_MMIA_PB_READ_SET_NUM_REQ_EV , Z_ATI_TASKID_PB },

-    {AP_MMIA_PB_PREF_MSG_STO_REQ_EV , Z_ATI_TASKID_PB },

-    {AP_MMIA_PB_PREF_MSG_STO_TEST_REQ_EV , Z_ATI_TASKID_PB },

-    {AP_MMIA_PB_QUERY_SMS_MAX_INDEX_REQ_EV , Z_ATI_TASKID_PB },

-    {AP_MMIA_SM_READ_REQ_EV , Z_ATI_TASKID_PB },

-    {AP_MMIA_SM_SAVE_REQ_EV , Z_ATI_TASKID_PB},

-    {AP_MMIA_SM_DELETE_REQ_EV , Z_ATI_TASKID_PB },

-    {AP_MMIA_SM_READ_REQ_EV , Z_ATI_TASKID_PB },

-    {AP_MMIA_PB_MEM_CAPA_REQ_EV , Z_ATI_TASKID_PB },

-    {AP_MMIA_PB_READ_LAST_EXT_ERR_REQ_EV , Z_ATI_TASKID_PB },

-    {AP_MMIA_SM_MEM_AVAIL_RSP_EV,     Z_ATI_TASKID_PB },   

-

-

-    /************************CBS Massage************************/

-    { MMIA_CBS_ACTIVATE_REQ_EV , Z_ATI_TASKID_CBS },

-    

-    /************************AS Massage************************/

-    { MMIA_EUCSR_LTEINFO_REQ_EV , Z_ATI_TASKID_EUCSR },

-    { MMIA_AS_RSSI_QUERY_REQ_EV, Z_ATI_TASKID_EUMCR},

-    { MMIA_AS_SINR_QUERY_REQ_EV, Z_ATI_TASKID_EUMCR},

-    { MMIA_AS_SAI_LIST_QUERY_REQ_EV, Z_ATI_TASKID_EUCER},

-    { MMIA_AS_SAI_LIST_REPORT_REQ_EV, Z_ATI_TASKID_EUCER},

-    { MMIA_AS_TMGI_LIST_QUERY_REQ_EV, Z_ATI_TASKID_EUCER},

-    { MMIA_AS_TMGI_LIST_REPORT_REQ_EV, Z_ATI_TASKID_EUCER},

-    { MMIA_AS_TMGI_LIST_REQ_EV, Z_ATI_TASKID_EUCER},

-    { MMIA_AS_MBMS_PREFERENCE_REQ_EV, Z_ATI_TASKID_EUCER},

-    { MMIA_AS_NW_TIME_QUERY_REQ_EV, Z_ATI_TASKID_EUCSR},

-    { MMIA_AS_EM_LTE_HO_SET_REQ_EV, Z_ATI_TASKID_EUCER},

-    { MMIA_AS_EM_LTE_HO_SET_QUERY_REQ_EV, Z_ATI_TASKID_EUCER},

-    { MMIA_GRR_ZGPCG_REQ_EV, Z_ATI_TASKID_GRR},

-    { MMIA_L1T_ZTPCG_REQ_EV, Z_ATI_TASKID_L1T},

-    { MMIA_L1W_ZWPCG_REQ_EV, Z_ATI_TASKID_L1W},

-

-    /******************** LTE GoTaÄ£¿é ***************************/

-    /************************TSM Massage************************/

-#ifdef BTRUNK_SUPPORT

-    { ATI_TSM_REG_REQ_EV ,                    Z_ATI_TASKID_TSM },

-    { ATI_TSM_CALL_REQ_EV ,                   Z_ATI_TASKID_TSM },

-    { ATI_TSM_CALLCONFIRM_REQ_EV ,            Z_ATI_TASKID_TSM },

-    { ATI_TSM_CALLCONNECT_REQ_EV ,            Z_ATI_TASKID_TSM },

-    { ATI_TSM_CALLRLS_REQ_EV ,                Z_ATI_TASKID_TSM },

-    { ATI_TSM_FLOOR_REQ_EV ,                  Z_ATI_TASKID_TSM },

-    { ATI_TSM_FLOORRLS_REQ_EV ,               Z_ATI_TASKID_TSM },

-    { ATI_TSM_STUNINFO_QUERY_REQ_EV ,         Z_ATI_TASKID_TSM },

-    { ATI_TSM_GROUPINFO_QUERY_REQ_EV ,        Z_ATI_TASKID_TSM },

-    { ATI_TSM_SCANGROUPINFO_REQ_EV ,          Z_ATI_TASKID_TSM },

-    { ATI_TSM_SCANSWITCH_REQ_EV ,             Z_ATI_TASKID_TSM },

-    { ATI_TSM_SHAKEHAND_REQ_EV ,              Z_ATI_TASKID_TSM },

-    { ATI_TSM_SHORT_DATA_REQ_EV ,             Z_ATI_TASKID_TSM },

-    { ATI_TSM_LOCATINFO_REQ_EV ,              Z_ATI_TASKID_TSM },

-    { ATI_TSM_SETABILITY_REQ_EV ,             Z_ATI_TASKID_TSM },

-    { ATI_TSM_CALLFORWARD_REQ_EV ,            Z_ATI_TASKID_TSM },

-    { ATI_TSM_CALLMODIFY_RSP_EV ,             Z_ATI_TASKID_TSM },

-    { ATI_TSM_CALLMODIFY_REJ_EV ,             Z_ATI_TASKID_TSM },

-

-    /**************************ESM Massage**********************/

-    { PTT_MMIA_ESM_TAUTYPE_REQ_EV ,           Z_ATI_TASKID_ESM },

-#endif

-};

-

-//ÓÉ P_AtiProcFunc atiOuterMsgMap[22][Z_ATI_PROCFUNC_NUM] ÐÞ¸Ä

-T_zAti_PreOuterMsgTab  atPreOuterMsg[] = {

-

-        /**************SMS**********************/

-        {MMIA_SMS_MSG_SEND_CNF_EV,     zAti_SmsMsgSendCnf},

-        {MMIA_SMS_DELIVER_REC_IND_EV,  zAti_SmsDeliverRecInd},

-        {MMIA_SMS_STATUS_REC_IND_EV,   zAti_SmsStatusRecInd},

-        {MMIA_SMS_REC_RSP_CNF_EV,zAt_SmsRecRspCnf},

-

-        /**************CBS**********************/

-        {MMIA_CBS_DATA_IND_EV,         zAti_Cbs_DataInd},

-        

-        /***************UICC**********************/

-        {AP_UICC_INIT_CNF_EV ,       zAti_UiccInitCnf},

-        {AP_UICC_INIT_IND_EV,       zAti_UiccZuststInd},

-        {AP_UICC_SLOT_IND_EV,        zAti_PreUiccSlotInd},

-        {AP_UICC_UICCOK_IND_EV,      zAti_UiccOkInd},

-        {AP_UICC_READ_CNF_EV,        zAti_UiccReadCnf},

-        {AP_UICC_UPDATE_CNF_EV,      zAti_UiccUpdateCnf},

-        {AP_UICC_AUTH_RSP_EV,        zAti_UiccAuthRsp},

-        {AP_UICC_AUTH_FAIL_IND_EV,   zAti_UiccAuthFailInd},        

-        {AP_UICC_UPDATE_ITEM_CNF_EV, zAti_UiccUpdateItemCnf},

-        {AP_UICC_VERIFY_PIN2_CNF_EV, zAti_VerifyPin2Cnf},

-        {AP_UICC_COMMON_CNF_EV,      zAti_UiccCommonCnf},

-

-        /***************UMM**********************/

-        {MMIA_UMM_PLMN_INFO_IND_EV,  zAti_PlmnInfo},

-        {MMIA_UMM_PLMN_LIST_CNF_EV,  zAti_PlmnList},

-        {MMIA_UMM_MM_INFO_IND_EV,    zAti_Mminfo},

-        {MMIA_UMM_RF_CTRL_CNF_EV,    zAti_RfControl},

-        {MMIA_UMM_SEARCH_PLMN_CNF_EV,zAti_UmmSearchPlmnCnf},

-        {MMIA_UMM_ACTIVE_CNF_EV,     zAti_HandleCgattSetReqCnf},

-        {MMIA_UMM_COMMON_CNF_EV,    zAti_UmmCommonCnf},

-        {MMIA_UMM_CS_SRV_IND_Ev,    zAti_UmmCsSrvInd},

-

-        /***************SM**********************/

-       // {MMIA_SM_CONNECT_IND_EV,     zAti_SmConnectInd},

-        {MMIA_SM_PDP_ACTIVATE_CNF_EV,zAti_HandleSmActCnf },

-        {MMIA_SM_PDP_DEACTIVATE_CNF_EV, zAti_HandleUserDeactCnfMsg},

-      //  {MMIA_SM_PDP_ACTIVATE_IND_EV, zAti_SmMtActivateInd},

-        {MMIA_SM_CGEV_IND_EV, zAti_SmMtCgevInd},

-        {MMIA_SM_COMMON_CNF_EV, zAti_HandlePppCommonCnf},

-        {MMIA_SM_NO_CARRIER_CNF_EV,  zAti_HandleSmNoCarrierCnf},

-        {MMIA_SM_PDP_CAUSE_QUERY_CNF_EV, zAti_HnadlePdpCauseQueryCnf},

-

-        /***************ESM**********************/

-        

-        /***************CC**********************/

-#ifdef USE_VOICE_SUPPORT

-        {MMIA_CC_MOC_CNF_EV,         zAti_CcMocCnf},

-        {MMIA_CC_MTC_IND_EV,         zAti_CcMtcInd},

-        {MMIA_CC_ANS_MODE_CNF_EV,    zAti_CcAnsModCnf},

-        {MMIA_CC_MODIFY_CNF_EV,      zAti_CcModifyCnf},

-        {MMIA_CC_DISC_IND_EV,        zAti_CcDiscInd},

-        {MMIA_CC_SS_NOTIFY_IND_EV,   zAti_CcSsNotifyInd},

-        {MMIA_CC_PROC_INFO_IND_EV,   zAti_ProcInfoInd},

-        {MMIA_CC_CCM_QUERY_CNF_EV,   zAti_CcmQueryCnf},

-        {MMIA_CC_DISC_CNF_EV,        zAti_CcDicsCnf},

-        {MMIA_CC_DTMF_CNF_EV,      zAti_CcDtmfCnf},

-#endif

-        /***************SS**********************/

-

-        /***************PB**********************/

-        {AP_MMIA_SM_SAVE_CNF_EV,           zAti_PbSaveSmCnf},

-        {AP_MMIA_SM_READ_CNF_EV,           zAti_PbReadSmCnf},

-        {AP_MMIA_SM_DELETE_CNF_EV,         zAti_PbDeleteSmCnf},

-

-        {AP_MMIA_SM_MEM_AVAIL_IND_EV,      zAti_PbSmMemAvail},

-        {AP_MMIA_PB_STORAGE_STATUS_CNF_EV, zAti_PbPBMemStatusCnf},

-        {AP_MMIA_PB_INIT_COMP_IND_EV,      zAti_PbInitCmpltInd},

-#ifdef CXT_MOV

-        {MMIA_SM_CONTEXT_CNF_EV,  zAti_SmContextCnf},

-        {MMIA_UMM_PS_CONTEXT_CNF_EV, zAti_UmmPsContextCnf},

-#endif

-#ifdef DSDS_VSIM

-        {MMIA_AS_CARD_SWITCH_CNF_EV, zAti_CardSwitchCnf},

-#endif

-};

-

-

-const T_zAti_NonReportMsg g_zAti_NonReportMsgTable[]  =

-{

-#ifdef USE_VOICE_SUPPORT

-    {MMIA_CC_NOTIFY_AOC_TIMER_IND_EV,zAt_NotifyAocTimerInd},

-#endif

-    {RR_EM_HO_INFO_IND,zAt_EM_GrrcHoInfoInd},

-    {MMIA_AS_EM_UHO_INFO_IND_EV,zAt_EM_UrrcHoInfoInd},

-    {MSGTRACEPS_CELL_DISPLAY_REQ_EV,zAt_TracePsCellDisplayReq},

-    {MMIA_UMM_SUBMODE_IND_EV,zAt_HspaInd},

-    {MMIA_UMM_UPDATE_DUALPSSYSCONFIG_IND_EV,zAt_UpdtDualPsAdptChgVar},

-#ifdef USE_VOICE_SUPPORT

-    {MMIA_CC_DUALPSCFG_IND_EV, zAt_UpdtCcDualPsInd},

-#endif

-    {MMIA_SMS_MMS_DISABLE_IND_EV,zAt_SmsDisableInd},

-#ifdef USE_VOICE_SUPPORT

-    {MMIA_CC_OPEN_VOICE_CHNL_IND_EV,zAt_CcOpenVoiceChnlInd},

-    {MMIA_CC_CLOSE_VOICE_CHNL_IND_EV,zAt_CcCloseVoiceChnlInd},

-#ifdef ECALL_SUPPORT

-    {MMIA_CC_CALLBACK_EVENT_EV,zAt_CcCallBackInd},

-#endif

-#endif

-    {MSGTRACEPS_CELLRESORCCOCOUNT_REQ_EV, zAti_CellresOrCcoCountReq},

-    {ROADTEST_UEINFO_REQ_EV, zAti_RoadTest_QueryUeInfoReq},

-    {MMIA_AS_B39_INFO_IND_EV, zAti_EUmcrBand39InfoInd},

-    {MMIA_UMM_IMSNOTSUPPORT_IND_EV, zAti_ImsNotSupportInd},

-#ifdef Z_DUALSTANDBY

-    {MMIA_UMM_CS_CALL_START_IND_EV,zAti_CsCallStartInd},

-    {MMIA_UMM_CS_CALL_END_IND_EV,zAti_CsCallEndInd},

-#endif

-    {MMIA_ASC_LTE_LOSTCOVERAGE_IND_EV, zAti_LteNoCellInd},

-

-    // Ô­Ö÷¿ØÖеÄÏûÏ¢

-#ifdef Z_DUALSTANDBY

-     {Z_RRMI_INTER_RAT_NCELL_IND_EV, zAti_RecvGrrNCellChngInd},

-#endif

-

-    //Ô­±íg_zAti_HandleMmiaMsgWithoutChnelNodeÖÐÏûÏ¢

-    {MMIA_SM_CID_DEACT_IND_EV,       zAti_SmDeactivateInd},//ûÓÐÔ´Ä¿µÄË÷Òý

-    {MMIA_SM_GET_PCO_IND_EV,         zAti_HandleSmGetPcoInd},

-    {MMIA_SMS_MEM_AVAIL_CNF_EV,      zAti_HandleZmenaCnf},

-    {MMIA_SM_IDLE_CHNL_QUERY_IND_EV, zAti_UsbSioSmMtQueryIdleChInd},

-    {MMIA_SM_MSISDN_IND_EV,          zAti_SmMsisdnInd},

-

-    /***************AS**********************/

-    {MMIA_AS_RPT_RXLEV_IND_EV ,  zAti_McrRptRxlevInd},

-    {MMIA_AS_QUERY_RXLEV_IND_EV, zAti_McrRptRxlevCnf},

-    {RRMI_RXSTAT_IND,            zAti_GrrRptRxlevInd},

-    {RRAT_RXSTAT_IND,            zAti_GrrRptRxlevCnf},

-    {MMIA_AS_UL_PARAM_IND_EV,    zAti_HandleUlParaInd},

-};

-

-/**************************************************************************

-*                           È«¾Öº¯ÊýÔ­ÐÍ                                  *

-**************************************************************************/

-

-BYTE __ps_static_func zAti_IsNeedCardInit(VOID)

-{

-     return (BYTE)(g_zAti_atDataEx[g_zAti_CurInstance].bCardInitiatedFlag == Z_ATI_CARDINIT_NOT  && Z_INVALID == zDev_GetCfunFlag());

-}

-

-BOOL __ps_static_func zAti_IsSingleCardForTwoStandby()

-{

-    return (zDev_GetTaskId(Z_ATI_TASKID_UICC, 0) == zDev_GetTaskId(Z_ATI_TASKID_UICC, 1));

-}

-

-BOOL zAti_IsLteStandBy(BYTE bInsNo)

-{ 

-    if(zDev_GetTaskId(Z_ATI_TASKID_ESM, bInsNo) != ZOSS_INVALID_TASK_ID)

-    {

-        return TRUE;

-    }

-    return FALSE;

-}

-

-BOOL __ps_static_func zAti_IsSingleCardForOneStandby(VOID)

-{

-    return (((zDev_GetTaskId(Z_ATI_TASKID_UICC, 0) == ZOSS_INVALID_TASK_ID) && (zDev_GetTaskId(Z_ATI_TASKID_UICC, 1) != ZOSS_INVALID_TASK_ID))

-        ||((zDev_GetTaskId(Z_ATI_TASKID_UICC, 0) != ZOSS_INVALID_TASK_ID) && (zDev_GetTaskId(Z_ATI_TASKID_UICC, 1) == ZOSS_INVALID_TASK_ID ))); 

-}

-

-BOOL __ps_static_func zAti_IsRightStandAtCmd(UINT8 iChannel)

-{

-    BYTE bInsNo = zAti_GetTaskInstantByChnlId(iChannel);

-

-    if(zDev_GetTaskId(Z_ATI_TASKID_UMM, bInsNo) == ZOSS_INVALID_TASK_ID)

-    {

-        return FALSE;

-    }

-    return TRUE;

-}

-#ifdef Z_DUALCARD_ADAPT

-BOOL zAti_IsDualCardSelfAdaptChanging(VOID)

-{

-    if(g_zAti_atDataEx[Z_ATI_INSNO_1].IsCfgChging ||

-        g_zAti_atDataEx[Z_ATI_INSNO_2].IsCfgChging)

-    {

-        return TRUE;

-    }

-    return FALSE;

-}

-

-/******************************************************

-*º¯ÊýÃû³Æ:zAti_IsCmdChnelIdIdel

-*º¯Êý¹¦ÄÜ:ÅжÏͨµÀÊÇ·ñ´¦ÓÚ¿ÕÏÐ״̬

-*ÅжϹæÔò:

-*1)ÃüÁî̬µÄͨµÀûÓÐÃüÁîÔÚ´¦Àí

-*2)ÃüÁî̬µÄͨµÀûÓд¦ÓÚ¶ÌÏûÏ¢ÄÚÈÝÊäÈë̬

-*3)ͨµÀµÄ½Úµã¾ùΪ¿Õ

-*4)ͨµÀÖÐÃüÁ´æÎª¿Õ

-********************************************************/

-BOOL zAti_IsCmdChnelIdIdel(BYTE bInsNo)

-{

-    T_ZAti_ChannelInfo *pChnelNode = zAti_GetFirstChannelNodePtrByInstance(bInsNo);

-    BYTE bMaxChnlId = ((bInsNo == Z_ATI_INSNO_2)? Z_ATI_INSTANCE_TWO_CHNL_MAX : Z_ATI_INSTANCE_ONE_CHNL_MAX);

-

-    while(pChnelNode != NULL && pChnelNode->iChnelId <= bMaxChnlId)

-    {

-        if(pChnelNode->cmdInputInfo.cmdInputStat == ZAT2_SMS_EDIT)

-        {

-            return FALSE;/*µ±Ç°¶ÌÐÅ·¢ËÍÃüÁîÒѾ­Êͷŵ«ÄÚÈÝ»¹Î´½ÓÊÕ½áÊø*/

-        }

-        else if(pChnelNode->cmdInputInfo.cmdInputStat == ZAT2_ATCMD)

-        {

-            if(ZAT2_NO_COMMAND != pChnelNode->cmd_id && ZAT2_CO_INVALID != pChnelNode->cmd_op)

-            {

-                return FALSE;/*µ±Ç°»¹ÓÐÃüÁîÕýÔÚ´¦Àí*/

-            }

-            else if(pChnelNode->atBuff.iLength != 0)

-            {

-                return FALSE;/*ͨµÀÖл¹ÓÐδÌáÈ¡½âÎöµÄÃüÁî*/

-            }

-            else if(zAti_HasMoreCmd(pChnelNode))

-            {

-                return FALSE;/*ͨµÀ½ÚµãÖл¹ÓÐÃüÁî*/

-            }

-        }

-

-        pChnelNode = pChnelNode->pNextCnNode;

-    }

-    return TRUE;

-}

-#endif

-BOOL __ps_static_func zAti_IsSingleCard()

-{

-    return (zAti_IsSingleCardForOneStandby() || zAti_IsSingleCardForTwoStandby());

-}

-

-BYTE __ps_static_func zAti_GetTaskInstantByChnlId(BYTE bChnlId)

-{

-    return (bChnlId > Z_ATI_INSTANCE_ONE_CHNL_MAX) ? Z_ATI_INSNO_2 : Z_ATI_INSNO_1;

-}

-

-BYTE __ps_static_func zAti_GetInstantForSingleCardOneStandby()

-{

-    return (zDev_GetTaskId(Z_ATI_TASKID_UICC, 0) == ZOSS_INVALID_TASK_ID) ? Z_ATI_INSNO_2 : Z_ATI_INSNO_1;

-}

-

-BYTE __ps_static_func zAti_GetInstantbyDesIndex(BYTE bChnlId)

-{

-    if(ZATI2_CHANNEL_ID_NUM251 == bChnlId)

-    {

-        return Z_ATI_INSNO_1;

-    }

-    else if(ZATI2_CHANNEL_ID_NUM252 == bChnlId)

-    {

-        return Z_ATI_INSNO_2;

-    }

-    else

-    {

-        return zAti_GetTaskInstantByChnlId(bChnlId);

-    }

-}

-

-BOOL __ps_static_func zAti_IsUiccEv(UINT32 iEvId)

-{

-    return ((iEvId >= AP_UICC_EVENT_BASE && iEvId <= AP_UICC_EVENT_END) ||

-        (iEvId >= AP_MMIA_EVENT_UICC_BASE && iEvId <= AP_MMIA_EVENT_UICC_END));

-}

-

-BOOL __ps_static_func zAti_IsStmEv(UINT32 iEvId)

-{

-    return ((iEvId >= AP_MMIA_PB_RSP_EVENT && iEvId <= AP_MMIA_EVENT_PB_END) || iEvId == AP_MMIA_ZPBIC_IND_EV);

-}

-

-BOOL __ps_static_func zAti_IsLogTraceMsgAndGetTaskIndex(UINT32 iEvId, UINT8 *pDataPtr, PBYTE pbInsNo)

-{

-    T_zAti_RTUeInfo_Req *ptUeInfoReq = ZOSS_NULL;

-    T_z_MsgtracePs_CellresOrCcoCount_Req *ptCellresOrCcoCountReq = ZOSS_NULL;

-    T_zMsgtracePs_CellDisplay_Req *ptMsgTraceReq = ZOSS_NULL;

-

-    switch(iEvId)

-    {

-        case ROADTEST_UEINFO_REQ_EV:

-            ptUeInfoReq = (T_zAti_RTUeInfo_Req*)pDataPtr;

-            *pbInsNo = ptUeInfoReq->bStackIndex - 1;

-            return TRUE;

-        case MSGTRACEPS_CELLRESORCCOCOUNT_REQ_EV:

-            ptCellresOrCcoCountReq = (T_z_MsgtracePs_CellresOrCcoCount_Req*)pDataPtr;

-            *pbInsNo = ptCellresOrCcoCountReq->bStackIndex - 1;

-            return TRUE;

-        case MSGTRACEPS_CELL_DISPLAY_REQ_EV:

-            ptMsgTraceReq = (T_zMsgtracePs_CellDisplay_Req*)pDataPtr;

-            *pbInsNo = ptMsgTraceReq->bStackIndex - 1;

-            return TRUE;

-        default:

-            return FALSE;

-    }

-}

-BOOL __ps_static_func zAti_IsSelfExpiryMsg(UINT32 iEvId)

-{

-    switch(iEvId)

-    {

-        case MMIA_EM_HO_INFO_EXPIRY_EV:

-#ifdef Z_SELL_STAT_SUPPORT

-        case MMIA_SELL_STAT_REG_EXPIRY_EV:

-        case MMIA_SELL_STAT_SUM_PDP_EXPIRY_EV:

-        case MMIA_SELL_STAT_ONE_PDP_EXPIRY_EV:

-#endif

-#ifdef USE_VOICE_SUPPORT

-        case MMIA_AOC_EXPIRY_EV:

-#endif

-        case MMIA_ZGDT_EXPIRY_EV:

-        case EV_ZATI2_TEST_SEND_CS_DATA:

-        case MMIA_ZULRTIND_EXPIRY_EV:

-            return TRUE;

-        default:

-            return FALSE;

-    }

-}

-

-BOOL __ps_static_func zAti_IsAsMsg(UINT32 iEvId)

-{ /*ºÏÈëEMBMSʱ´Ë´¦Ò²ÒªÔö¼ÓÏà¹ØÏûÏ¢*/

-    if(iEvId == AS_EM_CELL_INFO_IND_EV||

-        iEvId == RR_EM_CELL_INFO_IND ||

-        iEvId == MMIA_AS_EM_UCELL_INFO_IND_EV ||

-        iEvId == MMIA_AS_EM_EUCELL_INFO_IND_EV ||

-        iEvId == MMIA_AS_EM_UHO_INFO_IND_EV ||

-        iEvId == MMIA_EUCSR_LTEINFO_IND_EV ||

-        iEvId == MMIA_L1E_ZEPCG_CNF ||

-        iEvId == MMIA_AS_RSSI_QUERY_CNF_EV ||

-        iEvId == MMIA_AS_SINR_QUERY_CNF_EV ||

-        iEvId == MMIA_EUSIR_ETWS_PRIMARY_IND_EV ||

-        iEvId == MMIA_EUSIR_ETWS_SECONDARY_IND_EV ||

-        iEvId == MMIA_AS_RPT_RXLEV_IND_EV ||

-        iEvId == MMIA_AS_QUERY_RXLEV_IND_EV ||

-        iEvId == MMIA_AS_B39_INFO_IND_EV ||

-        iEvId == RR_EM_HO_INFO_IND ||

-        iEvId == RRAT_RXSTAT_IND ||

-        iEvId == RRMI_RXSTAT_IND ||

-        iEvId == Z_RRMI_INTER_RAT_NCELL_IND_EV ||

-        iEvId == MMIA_AS_QUERY_EM_UCELL_INFO_CNF_EV ||

-        iEvId == MMIA_AS_QUERY_EM_EUCELL_INFO_CNF_EV ||

-        iEvId == RR_QUERY_EM_CELL_INFO_CNF_EV ||

-        iEvId == AS_QUERY_EM_CELL_INFO_CNF_EV||

-        iEvId == MMIA_AS_TMGI_ACTIVATE_CNF_EV||

-        iEvId == MMIA_AS_TMGI_DEACTIVATE_CNF_EV||

-        iEvId == MMIA_AS_SAI_LIST_QUERY_RESP_EV||

-        iEvId == MMIA_AS_SAI_LIST_IND_EV||

-        iEvId == MMIA_AS_TMGI_LIST_QUERY_RESP_EV||

-        iEvId == MMIA_AS_TMGI_LIST_IND_EV||

-        iEvId == MMIA_AS_MBMS_SERVICE_SUSPEND_IND_EV||

-        iEvId == MMIA_AS_MBMS_SERVICE_RESUME_IND_EV||

-        iEvId == MMIA_AS_COMMON_CFG_CNF_EV||

-        iEvId == MMIA_AS_NW_TIME_QUERY_RESP_EV||

-        iEvId == MMIA_ASC_LTE_LOSTCOVERAGE_IND_EV||

-        iEvId == MMIA_AS_EM_LTE_HO_SET_QUERY_CNF_EV||

-        iEvId == MMIA_AS_EM_LTE_HO_INFO_IND_EV||

-        iEvId == MMIA_GRR_ZGPCG_CNF_EV||

-        iEvId == MMIA_L1T_ZTPCG_CNF_EV||

-        iEvId == MMIA_L1W_ZWPCG_CNF_EV||

-        iEvId == MMIA_AS_UL_PARAM_IND_EV||

-        iEvId == MMIA_AS_CARD_SWITCH_CNF_EV)

-    {

-        return TRUE;

-    }

-    return FALSE;

-}

-

-BYTE __ps_static_func zAti_GetTaskInstantIndexByTaskId(UINT32 iEvId, UINT8 *pDataPtr, ZOSS_TASK_ID tSendTaskId)

-{

-    BYTE bSubMod = 0;

-    BYTE bTaskIndex = Z_ATI_INVALID_BYTE;

-

-    if(iEvId == EV_ZATI2_RECV_COMMAND_IND)

-    {

-        T_ZAti_ChannelDataBuf *recvCmdInd = (T_ZAti_ChannelDataBuf *)pDataPtr;

-        return zAti_GetTaskInstantByChnlId(recvCmdInd->iChannel);

-    }

-

-    if (iEvId == EV_ZATI2_ZEMCELLINFO_REQ)

-    {

-        return ((T_ZAti_EMCellInfo_Req *)pDataPtr)->bInstance;

-    }

-

-    if(zAti_IsAsMsg(iEvId)) /*¸ù¾ÝË÷ÒýºÅÅжÏASÏûÏ¢ËùÊô´ý»ú²à*/

-    {

-        if(iEvId == AS_QUERY_EM_CELL_INFO_CNF_EV ||

-            iEvId == AS_EM_CELL_INFO_IND_EV)

-        {

-            T_zEM_EmInfo_Ind *pEmInfoInd = (T_zEM_EmInfo_Ind*)pDataPtr;

-            return zAti_GetInstantbyDesIndex(pEmInfoInd->bDesIndex);

-        }

-        else

-        {

-            return zAti_GetInstantbyDesIndex(*(pDataPtr + 1));

-        }

-    }

-    if(iEvId == MMIA_L1E_ZEPCG_CNF )/*L1EµÄÈÎÎñÎÞ·¨ÓÉzOss_Sender()»ñÈ¡*/

-    {

-        return zAti_GetTaskInstantByChnlId(*(pDataPtr + 1));

-    }

-

-    if(zAti_IsSelfExpiryMsg(iEvId))/*¶¨Ê±Æ÷ÏûÏ¢*/

-    {

-        return *pDataPtr;

-    }

-

-    if(zAti_IsLogTraceMsgAndGetTaskIndex(iEvId, pDataPtr, &bTaskIndex))

-    {

-        return bTaskIndex;

-    }

-

-    if(iEvId == EV_ZATI2_CPBR_CNF)/*´ËÏûÏ¢µÄÄ¿µÄË÷Òý±È½ÏÒþ±Î*/

-    {

-        T_zStm_Cpbr_Cnf *pCpbrStmCnf = ( T_zStm_Cpbr_Cnf *)pDataPtr;

-        return zAti_GetTaskInstantByChnlId(pCpbrStmCnf->cpbrSetCnf.bDesIndex);

-    }

-

-    if(zAti_IsSingleCardForOneStandby()&& (zAti_IsUiccEv(iEvId) || zAti_IsStmEv(iEvId)))

-    {

-        return zAti_GetInstantForSingleCardOneStandby();/*µ¥¿¨µ¥´ýʱ¸ù¾ÝÈÎÎñID¸üÐÂʵÀýºÅ*/

-    }

-    else if (zAti_IsSingleCardForTwoStandby() && (zAti_IsUiccEv(iEvId) || zAti_IsStmEv(iEvId)))

-    {

-        /*µ¥¿¨Ë«´ýʱÖ÷¶¯Éϱ¨ÏûÏ¢ÎÞ·¨Çø·ÖʵÀýºÅ

-         ·µ»ØÈÎÒ»´ý»ú²â¼´¿É£¬Ó°ÏìÖ÷¶¯Éϱ¨³ö´íʱµÄÒì³£¹Û²ì

-         Ð޸ĽÏΪ¸´ÔÓÇÒ²»Ó°ÏìÎÊÌâ·ÖÎö, ²»×öÐÞ¸Ä 2013.10.30 by hyc*/

-        return zAti_GetInstantbyDesIndex(*(pDataPtr + 1));

-    }

-    else if ((Z_VALID == zAti_IsDualPsDualUicc()) && ((iEvId == AP_UICC_USAT_PROV_CMD_IND_EV) || (iEvId == AP_UICC_NO_PROC_NOTIFY_IND_EV)))

-    {

-        /*Ë«¿¨Ë«´ýʱÖ÷¶¯Éϱ¨ÏûÏ¢ÎÞ·¨Çø·ÖʵÀýºÅ*/

-        return zAti_GetInstantbyDesIndex(*(pDataPtr + 1));

-    }

-

-    if (tSendTaskId == g_zAti_Context.taskIdMy)/*×ÔÊÕ×Ô·¢ÏûÏ¢*/

-    {

-        return zAti_GetTaskInstantByChnlId(*(pDataPtr + 1));

-    }

-

-    for (bSubMod = 0; bSubMod < Z_SUBMDL_NUM; bSubMod++)

-    {

-        if (tSendTaskId == zDev_GetTaskId(bSubMod, 0))

-        {

-            return Z_ATI_INSNO_1;

-        }

-

-        if (tSendTaskId == zDev_GetTaskId(bSubMod, 1))

-        {

-            return Z_ATI_INSNO_2;

-        }

-    }

-

-    return Z_ATI_INVALID_BYTE;

-}

-

-T_ZAti_ChannelInfo * zAti_GetFirstChannelNodePtrByInstance (BYTE bInstance)

-{

-    T_ZAti_ChannelInfo *pChnelNode = g_zAti_ptData->tAtChnelList.pChnelNode;

-

-    if (pChnelNode == NULL)

-    {

-        return ZOSS_NULL;

-    }

-

-    if (bInstance)

-    {

-        while(pChnelNode && pChnelNode->iChnelId <= Z_ATI_INSTANCE_ONE_CHNL_MAX)

-        {

-            pChnelNode = pChnelNode->pNextCnNode;

-        }

-

-        return pChnelNode;

-    }

-    else if (pChnelNode->iChnelId <= Z_ATI_INSTANCE_ONE_CHNL_MAX)

-    {

-        return pChnelNode;

-    }

-    else

-    {

-        return ZOSS_NULL;

-    }

-}

-

-#ifdef Z_DUALSTANDBY

-VOID zAti_RecvGrrNCellChngInd(VOID *pBuff)

-{

-    T_z_RRMI_INTER_RAT_NCELL_IND *ptNCellInd = (T_z_RRMI_INTER_RAT_NCELL_IND *)pBuff;

-    T_zMmiaUmm_DualPsTLNCell *ptNotifyUmm = (T_zMmiaUmm_DualPsTLNCell *)zAti_GetUB(sizeof(T_zMmiaUmm_DualPsTLNCell));

-

-    zOss_Memcpy(ptNotifyUmm, ptNCellInd, sizeof(T_zMmiaUmm_DualPsTLNCell));

-    g_zAti_CurInstance = g_zAti_CurInstance == 0? 1: 0;

-    

-    zAti_MsgSend(Z_TD_LTE_CELL_IND_EV, (PBYTE)ptNotifyUmm, sizeof(T_zMmiaUmm_DualPsTLNCell), Z_ATI_TASKID_UMM);

-

-    g_zAti_CurInstance = g_zAti_CurInstance == 0? 1: 0;

-}

-#endif

-

-VOID __ps_static_func zAti_InsertNodeInSortingAscend (T_ZAti_ChannelInfo *ptNewChnlNode)

-{

-    T_ZAti_ChannelInfo *ptPrevNode = ZOSS_NULL;

-    T_ZAti_ChannelInfo *ptNode = g_zAti_ptData->tAtChnelList.pChnelNode;

-

-    while(ptNode && ptNode->iChnelId < ptNewChnlNode->iChnelId)

-    {

-        ptPrevNode = ptNode;

-        ptNode = ptNode->pNextCnNode;

-    }

-

-    if (!ptPrevNode)

-    {

-        g_zAti_ptData->tAtChnelList.pChnelNode = ptNewChnlNode;

-    }

-    else

-    {

-        ptPrevNode->pNextCnNode = ptNewChnlNode;

-    }

-

-    ptNewChnlNode->pNextCnNode = ptNode;

-    g_zAti_ptData->tAtChnelList.iCount++;

-    return;

-}

-

-SINT32 zAti_AtRecvNullFunc(UINT8 channelId, UINT8* pDataPtr, UINT16 iDataLen, T_zAti2_CtrmChInd iFlag)

-{

-    return ZATI2_FALSE;

-}

-

-VOID zAti_InitZgdatatestGlobalVar(VOID)

-{

-    T_zAti_PsDataTest_Info *pDataTstInfo = ZOSS_NULL;

-    T_zAti_CsDataTest_Info *pVtDataTst = ZOSS_NULL;

-    pDataTstInfo = &g_zAti_atDataEx[g_zAti_CurInstance].tDataTestInfo.tPsDataTestInfo;

-    pVtDataTst = &g_zAti_atDataEx[g_zAti_CurInstance].tDataTestInfo.tCsDataTestInfo;

-

-    if(pDataTstInfo->pTimrIdZgdt != ZOSS_INVALID_TIMER_ID)

-    {

-        zAti_HnadleZgdatatestCnf(pDataTstInfo->tPsZgdtInfo.iSrcIndex, pDataTstInfo->tPsZgdtInfo.iDestIndex, FALSE);

-        zAti_KillTimer(&pDataTstInfo->pTimrIdZgdt);

-        zOss_Memset(pDataTstInfo, 0, sizeof(T_zAti_PsDataTest_Info));

-    }

-

-    if(pVtDataTst->timerSendCsData != ZOSS_INVALID_TIMER_ID)

-    {

-        zAti_HnadleZgdatatestCnf(pVtDataTst->zTest.iSrcIndex, pVtDataTst->zTest.iDestIndex, FALSE);

-        zAti_KillTimer(&pVtDataTst->timerSendCsData);

-        zOss_Memset(pVtDataTst, 0, sizeof(T_zAti_CsDataTest_Info));

-    }

-}

-VOID zAti_InitChnelNode(BYTE bCurChnelId)

-{

-    BYTE bMaxChnlId = (g_zAti_CurInstance ? Z_ATI_INSTANCE_TWO_CHNL_MAX : Z_ATI_INSTANCE_ONE_CHNL_MAX);

-    T_ZAti_ChannelInfo *pTempChnelNode = zAti_GetFirstChannelNodePtrByInstance(g_zAti_CurInstance);  

-

-    while(NULL != pTempChnelNode && pTempChnelNode->iChnelId <= bMaxChnlId)

-    {

-        if(pTempChnelNode->iChnelId != bCurChnelId)

-        {

-            if((ZAT2_NO_COMMAND != pTempChnelNode->cmd_id) || (ZAT2_CO_INVALID != pTempChnelNode->cmd_op))

-            {

-                pTempChnelNode->cmd_id = ZAT2_NO_COMMAND;

-                pTempChnelNode->cmd_op = ZAT2_CO_INVALID;

-                pTempChnelNode->bIsCardIniting = FALSE;

-                zAti_Init_CmdInfo(&pTempChnelNode->cmdInputInfo);

-                zAti_RemoveOneCmd(pTempChnelNode);

-            }

-

-            pTempChnelNode->IsPpp = FALSE;

-        }

-

-        if(ZATI2_CHANNEL_MODE_CMD != pTempChnelNode->server_mode)

-        {

-            pTempChnelNode->server_mode = ZATI2_CHANNEL_MODE_CMD;

-            pTempChnelNode->dataType = ZATI2_CHANNEL_DATA_TYPE_INVAL; /* »¹Ô­ */

-            zAti_SendFnc(pTempChnelNode->iChnelId, NULL, 0, ZATI2_CHIND_TURN_AT); /* Çл»Í¨µÀ */

-            zAti_RemoveALLCmd(pTempChnelNode); // Çå¿Õppp²¦ºÅºó£¬½øÈëÊý¾Ý̬ÒÔÖÁûÓÐÏìÓ¦µÄÃüÁî

-        }

-

-        pTempChnelNode = pTempChnelNode->pNextCnNode;

-    }

-

-}

-

-

-/**************************************************************************

-* º¯ÊýÃû³Æ£º zAti_StopTask

-* ¹¦ÄÜÃèÊö£º Í£Ö¹ÈÎÎñ

-* ²ÎÊý˵Ã÷£º (IN)£º ÎÞ

-*            (OUT)£ºÎÞ

-* ·µ »Ø Öµ£º ³É¹¦·µ»ØTRUE,ʧ°Ü·µ»ØFALSE;

-* ÆäËü˵Ã÷£º ÎÞ

-**************************************************************************/

-VOID zAti_StopTask(VOID)

-{

-#ifndef CONFIG_SINGLECORE

-    zAti_CsdCallEnd(Z_ATI_INSNO_1);

-    zAti_CsdCallEnd(Z_ATI_INSNO_2);

-#endif

-    zOss_Memset((UINT8 *)g_zAti_SmContext, 0, sizeof(T_ZAti_SmContext) * Z_ATI_INSTANCE_MAX_NUM);

-    zOss_Memset((UINT8 *)&g_zAti_atDataEx[Z_ATI_INSNO_1].tCcMan, 0, sizeof(T_ZAti_CallControlManagement));

-    zOss_Memset((UINT8 *)&g_zAti_atDataEx[Z_ATI_INSNO_2].tCcMan, 0, sizeof(T_ZAti_CallControlManagement));

-

-    g_zAti_Context.taskStatus = ZATI2_TASK_STATUS_NULL;

-    g_zAti_Context.iTaskInitTimes = 0; /* ÈÎÎñ³õʼ»¯´ÎÊý */

-    g_zAti_Context.sendFnc = NULL;

-

-    if(NULL != g_zAti_Context.taskIdMy)

-    {

-        zOss_DeleteTask(g_zAti_Context.taskIdMy);

-        g_zAti_Context.taskIdMy = NULL;

-    }

-}

-

-/**************************************************************************

-*                           ¾Ö²¿º¯ÊýÔ­ÐÍ                                  *

-**************************************************************************/

-

-/**************************************************************************

-* º¯ÊýÃû³Æ£º zAti_TaskEntry

-* ¹¦ÄÜÃèÊö£º ATI2ÈÎÎñÈë¿Úº¯Êý

-* ²ÎÊý˵Ã÷£º (IN)£º 

-*            state          ״̬

-*            iEvId          ÏûÏ¢ID

-*            pDataPtr       Êý¾Ý

-*            iDataLen       Êý¾Ý³¤¶È

-*            pPrivateData   

-*            (OUT)£ºÎÞ

-* ·µ »Ø Öµ£º ÎÞ

-* ÆäËü˵Ã÷£º ½ÓÊÕͨµÀ·¢À´µÄÃüÁî/Êý¾Ý£¬½âÎöºó·¢Ë͸ø·þÎñ²ã

-*            ½ÓÊÕ·þÎñ²ã·¢À´µÄÏûÏ¢/Êý¾Ý£¬±àÂëºó·¢Ë͸øÍ¨µÀ

-*            ¾²Ì¬Æô¶¯ATI2ÈÎÎñµÄÕ»¿Õ¼äÐèҪΪ1024*50    

-*            {1,"task_zati2",zAti_TaskEntry,20,1024*50,0,0,0}

-**************************************************************************/

-VOID __ps_static_func zAti_TaskEntry(UINT8 iState, UINT32 iEvId, UINT8 *pDataPtr, UINT16 iDataLen, UINT8 *pPrivateData)

-{

-    switch(iState)

-    {

-    case ZOSS_STATUS_INIT:

-        {

-            zAti_TaskInit(iEvId, pDataPtr, iDataLen, pPrivateData);

-        }

-        break;

-        

-    case ZOSS_STATUS_WORK:

-        {

-            zAti_TaskWork(iEvId, pDataPtr, iDataLen, pPrivateData);

-        }

-        break;

-        

-    default: 

-        break;

-    }   

-}

-

-/**************************************************************************

-* º¯ÊýÃû³Æ£º zAti_TaskInit

-* ¹¦ÄÜÃèÊö£º ÈÎÎñ´¦ÓÚ³õʼ»¯×´Ì¬µÄ´¦Àíº¯Êý

-* ²ÎÊý˵Ã÷£º (IN)£º 

-*            iEvId          ÏûÏ¢ID

-*            pDataPtr       Êý¾Ý

-*            iDataLen       Êý¾Ý³¤¶È

-*            pPrivateData   

-*            (OUT)£ºÎÞ

-* ·µ »Ø Öµ£º ÎÞ

-* ÆäËü˵Ã÷£º ÎÞ

-**************************************************************************/

-VOID __ps_static_func zAti_TaskInit(UINT32 iEvId, UINT8 *pDataPtr, UINT16 iDataLen, UINT8 *pPrivateData)

-{

-    switch(iEvId)

-    {

-    case EV_INIT:

-        {

-            g_zAti_ptData = (T_zAti_Data *)zAti_GetUB(sizeof(T_zAti_Data));

-            zAti_Init();

-            zAti_InitGlobalVarByInstNo(Z_ATI_INSNO_1);

-            //zAti_InitGlobalVarByInstNo(Z_ATI_INSNO_2);

-            zAti_InitOplPnnInfo(Z_ATI_INSNO_1);

-            //zAti_InitOplPnnInfo(Z_ATI_INSNO_2);

-            zAti_InitCeerGlobalVarByInstNo(Z_ATI_INSNO_1);

-            //zAti_InitCeerGlobalVarByInstNo(Z_ATI_INSNO_2);

-            #if defined (DUAL_CARD_DUAL_STANDBY) || defined (_OS_WIN)

-            zAti_InitGlobalVarByInstNo(Z_ATI_INSNO_2);

-            zAti_InitOplPnnInfo(Z_ATI_INSNO_2);

-            zAti_InitCeerGlobalVarByInstNo(Z_ATI_INSNO_2);

-            #endif

-            zAti_Randomize();//²úÉúËæ»úÊýÖÖ×Ó

-        }

-        {

-            zOss_Memset((UINT8 *)&g_zAti_Context, 0, sizeof(T_ZAti_Context)); /* ³õʼ»¯²ÎÊý */

-            zOss_Memset((UINT8 *)g_zAti_SmContext, 0, sizeof(T_ZAti_SmContext) * Z_ATI_INSTANCE_MAX_NUM);

-            g_zAti_Context.sendFnc = zAti_AtRecvNullFunc;            

-            g_zAti_Context.pUsolChannelFunc = NULL;

-            g_zAti_Context.pAlwaysReportChnel = NULL;

-            #ifndef CONFIG_SINGLECORE

-            zAti_CsdQueueInit(Z_ATI_INSNO_1);

-            #endif

-            //zAti_CsdQueueInit(Z_ATI_INSNO_2);

-            zOss_Memset(g_zAti_atDataEx[Z_ATI_INSNO_1].abPcoAuthChkFailCount, 0, ZATI2_SM_MAX_SMCID_NUM);

-            //zOss_Memset(g_zAti_atDataEx[Z_ATI_INSNO_2].abPcoAuthChkFailCount, 0, ZATI2_SM_MAX_SMCID_NUM);

-            zAti_ClearPcoChap();

-            zAti_InitEmInfoByInstNo(Z_ATI_INSNO_1);

-            //zAti_InitEmInfoByInstNo(Z_ATI_INSNO_2);

-            #if defined (DUAL_CARD_DUAL_STANDBY) || defined (_OS_WIN)

-            #ifndef CONFIG_SINGLECORE

-            zAti_CsdQueueInit(Z_ATI_INSNO_2);

-            #endif

-            zOss_Memset(g_zAti_atDataEx[Z_ATI_INSNO_2].abPcoAuthChkFailCount, 0, ZATI2_SM_MAX_SMCID_NUM);

-            zAti_InitEmInfoByInstNo(Z_ATI_INSNO_2);

-            #endif

-        }

-        break;

-        

-    case EV_POWERON:

-        {

-            zOss_SetState(ZOSS_STATUS_WORK); /* ÉèÖÃÈÎÎñµÄ¹¤×÷״̬ */

-

-            g_zAti_Context.taskIdMy = zOss_GetTaskID(PS_TASK_ID_ZATI);    

-            g_zAti_Context.mutexGetOplPnn = zOss_CreateMutex("ZATI2_GET_OPLPNN", ZOSS_NO_INHERIT);

-            g_zAti_Context.mutexOpenChnel = zOss_CreateMutex("ZATI2_OPEN_CHANNEL", ZOSS_NO_INHERIT); /* ´´½¨µÈ´ýDNSµØÖ·ÐźÅÁ¿ */

-            #ifdef DSDS_VSIM

-            g_zAti_Context.mutexCrdStat = zOss_CreateMutex("ZATI2_DUALCARDSTAT", ZOSS_NO_INHERIT);

-            #endif

-            g_zAti_Context.taskStatus = ZATI2_TASK_STATUS_READY;//Ò»¶¨Òª×¢ÒâÉèÖÃ״̬

-            g_zAti_EmInfoMutex[Z_ATI_INSNO_1].mutexEmInfo = zOss_CreateMutex("ZATI_ZEMCELL_MUTEX_1", ZOSS_NO_INHERIT);

-            //g_zAti_EmInfoMutex[Z_ATI_INSNO_2].mutexEmInfo = zOss_CreateMutex("ZATI_ZEMCELL_MUTEX_2", ZOSS_NO_INHERIT);

-            g_zAti_EmInfoSemaphore[Z_ATI_INSNO_1].semaphoreEmInfo = zOss_CreateSemaphore("ZATI_ZEMCELL_SEMAP_1", 0);

-            //g_zAti_EmInfoSemaphore[Z_ATI_INSNO_2].semaphoreEmInfo = zOss_CreateSemaphore("ZATI_ZEMCELL_SEMAP_2", 0);

-           #if defined (DUAL_CARD_DUAL_STANDBY) || defined (_OS_WIN)

-            g_zAti_EmInfoMutex[Z_ATI_INSNO_2].mutexEmInfo = zOss_CreateMutex("ZATI_ZEMCELL_MUTEX_2", ZOSS_NO_INHERIT);

-            g_zAti_EmInfoSemaphore[Z_ATI_INSNO_2].semaphoreEmInfo = zOss_CreateSemaphore("ZATI_ZEMCELL_SEMAP_2", 0);

-            #endif

-            zAti_NotifyApModemReady();  /* 617001591411 ¡¾ÖÇÄÜ»úÐèÇó¡¿- ÖÇÄÜ»úÐèÇóV3°æ±¾Í¬²½ÊµÏÖ*/

-            #ifdef USE_VOICE_SUPPORT

-            #ifndef _OS_WIN 

-            zAti_RegDtmfCallBack();/*×¢²áÓïÒôÇý¶¯µÄDTMF KEYÖµÉϱ¨µÄ½Ó¿Úº¯Êý*/

-            #endif

-            #endif

-        }

-        break;

-

-    default:

-        break;

-        

-    }

-}

-

-#ifdef _USE_GLOBAL_TRACE

-VOID zAti_GetGvar (VOID)

-{

-    T_z_MsgInfo tMsgInfo = { 0 };

-

-    if(!zAti_IsSingleCardForOneStandby())

-    {

-        tMsgInfo.bStackIndex = 0;

-    }

-    else

-    {

-        tMsgInfo.bStackIndex = g_zAti_CurInstance + 1;

-    }

-    tMsgInfo.dwMsgId = GVAR_MMIA_GET_CNF_EV;

-    g_zAti_GlobData.ptSingleData = g_zAti_ptData;

-    g_zAti_GlobData.ptDualData[Z_ATI_INSNO_1] = &g_zAti_atDataEx[Z_ATI_INSNO_1];

-    g_zAti_GlobData.ptDualData[Z_ATI_INSNO_2] = &g_zAti_atDataEx[Z_ATI_INSNO_2];

-    tMsgInfo.wMsgLen = sizeof(T_zAti_Golbal_Data);

-    tMsgInfo.pMsg = (PBYTE)(&g_zAti_GlobData);

-

-    tMsgInfo.bSrcMod = SUBMDL_Z_ATI;

-    tMsgInfo.tSrcTask = zDev_GetTaskId(Z_ATI_TASKID_ATI, 0);

-

-    tMsgInfo.bDestMod = SUBMDL_Z_EXTMOD;

-    tMsgInfo.tDestTask = zOss_Sender();

-

-    zSendMsg(&tMsgInfo, &g_zAti_ptData->dwFailCause);

-    return ;

-}

-

-VOID zAti_GetGlobAtMemVar (VOID)

-{

-    T_z_MsgInfo tMsgInfo = {0};

-

-    if(!zAti_IsSingleCardForOneStandby())

-    {

-        tMsgInfo.bStackIndex = 0;

-    }

-    else

-    {

-        tMsgInfo.bStackIndex = g_zAti_CurInstance + 1;

-    }

-    tMsgInfo.dwMsgId = GVAR_ATMEM_DEV_GET_CNF_EV;

-    g_zAti_Atmem.ptAtMem[Z_ATI_INSNO_1] = (T_zDev_AtMem*)zDev_GetAtMemData(Z_ATI_INSNO_1);

-    g_zAti_Atmem.ptAtMem[Z_ATI_INSNO_2] = (T_zDev_AtMem*)zDev_GetAtMemData(Z_ATI_INSNO_2);

-    tMsgInfo.wMsgLen = sizeof(T_zAti_AtmemData);

-    tMsgInfo.pMsg = (PBYTE)(&g_zAti_Atmem);

-

-    tMsgInfo.bSrcMod = SUBMDL_Z_ATI;

-    tMsgInfo.tSrcTask = zDev_GetTaskId(Z_ATI_TASKID_ATI, 0);

-

-    tMsgInfo.bDestMod = SUBMDL_Z_EXTMOD;

-    tMsgInfo.tDestTask = zOss_Sender();

-

-    zSendMsg(&tMsgInfo, &g_zAti_ptData->dwFailCause);  

-    return ;

-}

-

-VOID zAti_GetGlobNvVar (VOID)

-{

-    T_z_MsgInfo tMsgInfo = {0};

-

-    if(!zAti_IsSingleCardForOneStandby())

-    {

-        tMsgInfo.bStackIndex = 0;

-    }

-    else

-    {

-        tMsgInfo.bStackIndex = g_zAti_CurInstance + 1;

-    }

-    tMsgInfo.dwMsgId = GVAR_NV_DEV_GET_CNF_EV;

-    tMsgInfo.wMsgLen = zDev_GetNvDataSize();

-    tMsgInfo.pMsg = zDev_GetNvData();

-    

-    tMsgInfo.bSrcMod = SUBMDL_Z_ATI;

-    tMsgInfo.tSrcTask = zDev_GetTaskId(Z_ATI_TASKID_ATI, 0);

-    

-    tMsgInfo.bDestMod = SUBMDL_Z_EXTMOD;

-    tMsgInfo.tDestTask = zOss_Sender();

-    

-    zSendMsg(&tMsgInfo, &g_zAti_ptData->dwFailCause); 

-    return ;

-}

-

-BYTE __ps_static_func zAti_EnquireGlobalVar(DWORD dwMsgId)

-{

-    if (GVAR_MMIA_GET_REQ_EV == dwMsgId)

-    {

-        zAti_GetGvar ();

-    }

-    else if (GVAR_ATMEM_DEV_GET_REQ_EV == dwMsgId)

-    {

-        zAti_GetGlobAtMemVar();

-    }

-    else if (GVAR_NV_DEV_GET_REQ_EV == dwMsgId)

-    {

-        zAti_GetGlobNvVar();

-    }

-    else 

-    {

-        return Z_FAIL;

-    }

-    

-    return Z_SUCC;

-}

-#endif

-

-/**************************************************************************

-* º¯ÊýÃû³Æ£º zAti_MsgSigTrace

-* ¹¦ÄÜÃèÊö£º ÊÕµ½ÏûÏ¢ºóÏòtrace·¢ËÍÏûÏ¢

-* ²ÎÊý˵Ã÷£º (IN)£º 

-*            iEvId          ÏûÏ¢ID

-*            pDataPtr       Êý¾Ý

-*            iDataLen       Êý¾Ý³¤¶È

-*            (OUT)£ºÎÞ

-* ·µ »Ø Öµ£º ÎÞ

-* ÆäËü˵Ã÷£º 

-**************************************************************************/

-VOID __ps_static_func zAti_MsgSigTrace(UINT32 iEvId, UINT8 *pDataPtr, UINT16 iDataLen)

-{

-    if (zAti_IsSingleCardForTwoStandby() && 

-        (zAti_IsUiccEv(iEvId) || zAti_IsStmEv(iEvId)))

-    {

-        zAti_SendInfo2MsgTrace (pDataPtr, iDataLen, iEvId, Z_ATI_INSNO_1);

-        zAti_SendInfo2MsgTrace (pDataPtr, iDataLen, iEvId, Z_ATI_INSNO_2);

-    }

-    else

-    {

-        zAti_SendInfo2MsgTrace (pDataPtr, iDataLen, iEvId, g_zAti_CurInstance);

-    }

-    return;

-}

-/*********************************************************

-*º¯ÊýÃû³Æ:zAti_RecRcvMsg

-*º¯Êý¹¦ÄÜ:¼Ç¼ÊÕµ½µÄÏûÏ¢ÓÃÓÚGVAR_MMIA_GET_REQ_EVµÄ²éѯ

-*ÆäËû˵Ã÷:ÈýÌõ¹¤¾ß´¥·¢µÄ²éѯÏûÏ¢ÎÞÐë¼Ç¼

-*********************************************************/

-VOID __ps_static_func zAti_RecRcvMsg(UINT32 iEvId)

-{

-    if(iEvId != GVAR_MMIA_GET_REQ_EV &&

-        iEvId != GVAR_ATMEM_DEV_GET_REQ_EV &&

-        iEvId != GVAR_NV_DEV_GET_REQ_EV)

-    {

-        g_zAti_ptData->dwRcvMsg = iEvId;

-    }

-    return;

-}

-/**************************************************************************

-* º¯ÊýÃû³Æ£º zAti_CpbrCnf

-* ¹¦ÄÜÃèÊö£º  ´¦Àíµç»°±¾Áбí

-* ²ÎÊý˵Ã÷£º (IN)£º 

-*            pDataPtr       Êý¾Ý

-*            (OUT)£ºÎÞ

-* ·µ »Ø Öµ£º ÎÞ

-* ÆäËü˵Ã÷£º  ·ÖÌõÈ¡£¬Èç¹ûÖ±½ÓÑ­»·´¦Àí£¬¿ÉÄÜÎÞ·¨´¦ÀíÆäËûÏûÏ¢

-*                        ÉêÇëµÄÄÚ´æÔÚ×îºóÊÍ·Å

-**************************************************************************/

-VOID zAti_CpbrCnf(UINT8 *pDataPtr)

-{

-    T_zStm_Cpbr_Cnf *pCpbrStmCnf = ( T_zStm_Cpbr_Cnf *)pDataPtr;

-    if(pCpbrStmCnf->cnfMsgId == AP_MMIA_CPBR_EXE_CNF_EV)

-    {

-        T_zApMmia_CpbrSet_Cnf * pCpbrSetCnf = (T_zApMmia_CpbrSet_Cnf *)zAti_GetUB(sizeof(T_zApMmia_CpbrSet_Cnf));

-        (*pCpbrSetCnf) = pCpbrStmCnf->cpbrSetCnf;

-        zAti_RecvServerHandlerSlaver(pCpbrStmCnf->cnfMsgId, (UINT8 *)pCpbrSetCnf, sizeof(T_zApMmia_CpbrSet_Cnf));

-    }

-    else if(pCpbrStmCnf->cnfMsgId == AP_MMIA_CPBR_SET_END_CNF_EV)

-    {

-        T_zApMmia_CpbrSetEnd_Cnf * pCpbrSetEndCnf = (T_zApMmia_CpbrSetEnd_Cnf *)zAti_GetUB(sizeof(T_zApMmia_CpbrSetEnd_Cnf));

-        (*pCpbrSetEndCnf) = pCpbrStmCnf->CpbrSetEndCnf;

-        zAti_RecvServerHandlerSlaver(pCpbrStmCnf->cnfMsgId, (UINT8 *)pCpbrSetEndCnf, sizeof(T_zApMmia_CpbrSetEnd_Cnf));

-        zAti_RetUB((VOID **)&pCpbrStmCnf);

-        return;

-    }

-    else

-    {

-        /* ERROR*/

-    }

-    zAti_CpbrHandle(&(pCpbrStmCnf->cpbrSetReq), (UINT16)(pCpbrStmCnf->cpbrSetCnf.wIndex+1), pCpbrStmCnf->readStorage, pCpbrStmCnf);

-    return;

-}

-VOID zAti_HandleOplPnnCnf(T_zAti_CopnQry_Cnf *pCopnCnf)

-{

-    BYTE bInsNo = g_zAti_CurInstance;

-    T_zAti_Copn_Exe_Cnf *pExeCnf = NULL;

-

-    zAti_GetReadCardMutex();

-    if(g_zAti_atDataEx[bInsNo].tCrdPnnOpl.bRecNum != pCopnCnf->bOplPnnTotalNum)

-    {

-        pCopnCnf->bOplPnnCurrNum = pCopnCnf->bOplPnnTotalNum;/*Öмä³öÏÖÎÞ¿¨µÈÒì³£¾Í²»ÔÙÉϱ¨*/

-        zOss_TaskSendData(EV_ZATI2_COPN_CNF, (VOID *)pCopnCnf, sizeof(T_zAti_CopnQry_Cnf), g_zAti_Context.taskIdMy);

-        zAti_PutReadCardMutex();

-        return;

-    }

-    zAti_PutReadCardMutex();

-    pExeCnf = (T_zAti_Copn_Exe_Cnf*)zAti_GetUB(sizeof(T_zAti_Copn_Exe_Cnf));

-    pExeCnf->bDesIndex = pCopnCnf->bDesIndex;

-    pExeCnf->bSrcIndex = pCopnCnf->bSrcIndex;

-    pExeCnf->bMem = Z_ATI_OPLPNN;

-    pExeCnf->wTotalNum = (WORD)pCopnCnf->bOplPnnTotalNum;

-    pExeCnf->wCurrNum = (WORD)pCopnCnf->bOplPnnCurrNum;

-    if((pCopnCnf->bOplPnnTotalNum - pCopnCnf->bOplPnnCurrNum)/Z_ATI_IND_NUM != 0)

-    {

-        pExeCnf->bIndNum = Z_ATI_IND_NUM;

-        pCopnCnf->bOplPnnCurrNum += Z_ATI_IND_NUM;

-    }

-    else

-    {

-        pExeCnf->bIndNum = pCopnCnf->bOplPnnTotalNum - pCopnCnf->bOplPnnCurrNum;

-        pCopnCnf->bOplPnnCurrNum = pCopnCnf->bOplPnnTotalNum;

-    }

-    zAti_RecvServerHandlerSlaver(AP_MMIA_COPN_EXE_CNF, (BYTE*)pExeCnf, sizeof(T_zAti_Copn_Exe_Cnf));

-

-    zOss_TaskSendData(EV_ZATI2_COPN_CNF, (VOID *)pCopnCnf, sizeof(T_zAti_CopnQry_Cnf), g_zAti_Context.taskIdMy);

-    return;

-}

-VOID zAti_HandleNetCnf(T_zAti_CopnQry_Cnf *pCopnCnf)

-{

-    T_zAti_Copn_Exe_Cnf *pExeCnf = NULL;

-

-    pExeCnf = (T_zAti_Copn_Exe_Cnf*)zAti_GetUB(sizeof(T_zAti_Copn_Exe_Cnf));

-    pExeCnf->bDesIndex = pCopnCnf->bDesIndex;

-    pExeCnf->bSrcIndex = pCopnCnf->bSrcIndex;

-    pExeCnf->bMem = Z_ATI_NET;

-    pExeCnf->wTotalNum = (WORD)pCopnCnf->bNetTotalNum;

-    pExeCnf->wCurrNum = (WORD)pCopnCnf->bNetCurrNum;

-    if((pCopnCnf->bNetTotalNum - pCopnCnf->bNetCurrNum)/Z_ATI_IND_NUM != 0)

-    {

-        pExeCnf->bIndNum = Z_ATI_IND_NUM;

-        pCopnCnf->bNetCurrNum += Z_ATI_IND_NUM;

-    }

-    else

-    {

-        pExeCnf->bIndNum = pCopnCnf->bNetTotalNum - pCopnCnf->bNetCurrNum;

-        pCopnCnf->bNetCurrNum = pCopnCnf->bNetTotalNum;

-    }

-    zAti_RecvServerHandlerSlaver(AP_MMIA_COPN_EXE_CNF, (BYTE*)pExeCnf, sizeof(T_zAti_Copn_Exe_Cnf));

-    zOss_TaskSendData(EV_ZATI2_COPN_CNF, (VOID *)pCopnCnf, sizeof(T_zAti_CopnQry_Cnf), g_zAti_Context.taskIdMy);

-    return;

-}

-VOID zAti_HandleMeCnf(T_zAti_CopnQry_Cnf *pCopnCnf)

-{

-    T_zAti_Copn_Exe_Cnf *pExeCnf = NULL;

-

-    pExeCnf = (T_zAti_Copn_Exe_Cnf*)zAti_GetUB(sizeof(T_zAti_Copn_Exe_Cnf));

-    pExeCnf->bDesIndex = pCopnCnf->bDesIndex;

-    pExeCnf->bSrcIndex = pCopnCnf->bSrcIndex;

-    pExeCnf->bMem = Z_ATI_ME;

-    pExeCnf->wTotalNum = (WORD)pCopnCnf->bMeTotalNum;

-    pExeCnf->wCurrNum = (WORD)pCopnCnf->bMeCurrNum;

-    if((pCopnCnf->bMeTotalNum - pCopnCnf->bMeCurrNum)/Z_ATI_IND_NUM != 0)

-    {

-        pExeCnf->bIndNum = Z_ATI_IND_NUM;

-        pCopnCnf->bMeCurrNum += Z_ATI_IND_NUM;

-    }

-    else

-    {

-        pExeCnf->bIndNum = pCopnCnf->bMeTotalNum - pCopnCnf->bMeCurrNum;

-        pCopnCnf->bMeCurrNum = pCopnCnf->bMeTotalNum;

-    }

-    zAti_RecvServerHandlerSlaver(AP_MMIA_COPN_EXE_CNF, (BYTE*)pExeCnf, sizeof(T_zAti_Copn_Exe_Cnf));

-    zOss_TaskSendData(EV_ZATI2_COPN_CNF, (VOID *)pCopnCnf, sizeof(T_zAti_CopnQry_Cnf), g_zAti_Context.taskIdMy);

-    return;

-}

-VOID zAti_HandleGloBalCnf(T_zAti_CopnQry_Cnf *pCopnCnf)

-{

-    T_zAti_Copn_Exe_Cnf *pExeCnf = NULL;

-

-    pExeCnf = (T_zAti_Copn_Exe_Cnf*)zAti_GetUB(sizeof(T_zAti_Copn_Exe_Cnf));

-    pExeCnf->bDesIndex = pCopnCnf->bDesIndex;

-    pExeCnf->bSrcIndex = pCopnCnf->bSrcIndex;

-    pExeCnf->bMem = Z_ATI_GLOBAL;

-    pExeCnf->wTotalNum = (WORD)pCopnCnf->wGloBalTotalNum;

-    pExeCnf->wCurrNum = (WORD)pCopnCnf->wGloBalCurrNum;

-    if((pCopnCnf->wGloBalTotalNum - pCopnCnf->wGloBalCurrNum)/Z_ATI_IND_NUM != 0)

-    {

-        pExeCnf->bIndNum = Z_ATI_IND_NUM;

-        pCopnCnf->wGloBalCurrNum += Z_ATI_IND_NUM;

-    }

-    else

-    {

-        pExeCnf->bIndNum = (BYTE)(pCopnCnf->wGloBalTotalNum - pCopnCnf->wGloBalCurrNum);

-        pCopnCnf->wGloBalCurrNum = pCopnCnf->wGloBalTotalNum;

-    }

-    zAti_RecvServerHandlerSlaver(AP_MMIA_COPN_EXE_CNF, (BYTE*)pExeCnf, sizeof(T_zAti_Copn_Exe_Cnf));

-    zOss_TaskSendData(EV_ZATI2_COPN_CNF, (VOID *)pCopnCnf, sizeof(T_zAti_CopnQry_Cnf), g_zAti_Context.taskIdMy);

-    return;

-}

-VOID zAti_CopnCnf(UINT8 *pDataPtr)

-{

-    T_zAti_CopnQry_Cnf *pCopnCnf = (T_zAti_CopnQry_Cnf*)pDataPtr;

-

-    if(pCopnCnf->wMsgId == AP_MMIA_COPN_EXE_CNF)

-    {

-        if(pCopnCnf->bOplPnnTotalNum > pCopnCnf->bOplPnnCurrNum)

-        {

-            zAti_HandleOplPnnCnf(pCopnCnf);

-        }

-        else if(pCopnCnf->bNetTotalNum > pCopnCnf->bNetCurrNum)

-        {

-            zAti_HandleNetCnf(pCopnCnf);

-        }

-        else if(pCopnCnf->bMeTotalNum > pCopnCnf->bMeCurrNum)

-        {

-            zAti_HandleMeCnf(pCopnCnf);

-        }

-        else if(pCopnCnf->wGloBalTotalNum > pCopnCnf->wGloBalCurrNum)

-        {

-            zAti_HandleGloBalCnf(pCopnCnf);

-        }

-        else

-        {

-            pCopnCnf->wMsgId = AP_MMIA_COPN_END_CNF;

-            zOss_TaskSendData(EV_ZATI2_COPN_CNF, (VOID *)pCopnCnf, sizeof(T_zAti_CopnQry_Cnf), g_zAti_Context.taskIdMy);

-        }

-    }

-    else//AP_MMIA_COPN_END_CNF

-    {

-        T_zAti_Copn_End_Cnf *pEndCnf = (T_zAti_Copn_End_Cnf*)zAti_GetUB(sizeof(T_zAti_Copn_End_Cnf));

-        pEndCnf->bDesIndex = pCopnCnf->bDesIndex;

-        pEndCnf->bSrcIndex = pCopnCnf->bSrcIndex;

-        zAti_RecvServerHandlerSlaver(AP_MMIA_COPN_END_CNF, (BYTE*)pEndCnf, sizeof(T_zAti_Copn_End_Cnf));

-        zAti_RetUB((VOID**)&pCopnCnf);

-        return;

-    }

-    return;

-}

-/**************************************************************************

-* º¯ÊýÃû³Æ£º zAti_StmListInd

-* ¹¦ÄÜÃèÊö£º  ´¦Àí¶ÌÐÅÁбí

-* ²ÎÊý˵Ã÷£º (IN)£º 

-*            pDataPtr       Êý¾Ý

-*            (OUT)£ºÎÞ

-* ·µ »Ø Öµ£º ÎÞ

-* ÆäËü˵Ã÷£º ·ÖÌõÈ¡£¬Èç¹ûÖ±½ÓÑ­»·´¦Àí£¬¿ÉÄÜÎÞ·¨´¦ÀíÆäËûÏûÏ¢

-*                        ÉêÇëµÄÄÚ´æÔÚ×îºóÊÍ·Å

-**************************************************************************/

-VOID zAti_StmListInd(UINT8 *pDataPtr)

-{

-    T_ZAti_StmList_Ind *ptStmInd = (T_ZAti_StmList_Ind *)pDataPtr;

-    T_ZOss_List *pList = ZOSS_NULL;

-    T_ZAti_ListForStm *pListForStm = NULL;

-

-    if (ptStmInd == NULL)

-    {

-        return;

-    }

-    

-    g_zAti_CurInstance = ptStmInd->iStackId;

-    pList = ptStmInd->pStmMsgList;

-    if(pList != NULL)

-    {

-        pListForStm = (T_ZAti_ListForStm *)zOss_ListFirst(pList);

-        if(pListForStm != NULL)

-        {

-            zAti_RecvServerHandlerSlaver(pListForStm->iEvId, pListForStm->pDataPtr, pListForStm->iDataLen);

-            zOss_ListDelete(pList,(T_ZOss_Node *)pListForStm);

-            zOss_Free(pListForStm);

-            zOss_TaskSendData(EV_ZATI2_STMLIST_IND, ptStmInd, sizeof(T_ZAti_StmList_Ind), g_zAti_Context.taskIdMy);

-        }

-        else

-        {

-            zOss_Free(pList);

-            zOss_RetUB(ptStmInd);

-        }

-    }

-    return;

-}

-

-/**************************************************************************

-* º¯ÊýÃû³Æ£º zAti_ProcTimerExpiry

-* ¹¦ÄÜÃèÊö£º ´¦Àí¶¨Ê±Æ÷³¬Ê±ÏûÏ¢

-* ²ÎÊý˵Ã÷£º (IN)£º 

-*            iEvId          ÏûÏ¢ID

-*            pDataPtr       Êý¾Ý

-*            (OUT)£ºÎÞ

-* ·µ »Ø Öµ£º ¶¨Ê±³¬Ê±ÏûÏ¢·µ»ØZ_SUCC£¬ÆäËûZ_FAIL

-* ÆäËü˵Ã÷£º ²»ÐèÒªÊÍ·ÅÄÚ´æ

-**************************************************************************/

-BYTE __ps_static_func zAti_ProcTimerExpiry(UINT32 iEvId, UINT8 *pDataPtr)

-{

-    if( iEvId ==MMIA_EM_HO_INFO_EXPIRY_EV)

-    {

-        zAti_EM_HoInfoInd(pDataPtr);

-    }

-#ifdef Z_SELL_STAT_SUPPORT

-    else if(iEvId == MMIA_SELL_STAT_REG_EXPIRY_EV)

-    {

-         zAti_DoRegTimerExpir(pDataPtr);

-    }

-    else if(iEvId ==MMIA_SELL_STAT_SUM_PDP_EXPIRY_EV)

-    {

-        zAti_DoSumPdpTimerExpir(pDataPtr);

-    }

-    else if(iEvId ==MMIA_SELL_STAT_ONE_PDP_EXPIRY_EV)

-    {

-        zAti_DoOnePdpTimerExpir(pDataPtr);

-    }

-#endif

-#ifdef USE_VOICE_SUPPORT

-    else if(iEvId == MMIA_AOC_EXPIRY_EV)

-    {

-         /* 617001545194    +CCCMµÄÉϱ¨ÓÐÎÊÌâ*/

-        zAti_AocTimerExpir(pDataPtr);

-    }

-#endif

-    else if(iEvId ==EV_ZATI2_ZMSRI_IND_EXPIRY_EV)

-    {    /* 617001591411 ¡¾ÖÇÄÜ»úÐèÇó¡¿- ÖÇÄÜ»úÐèÇóV3°æ±¾Í¬²½ÊµÏÖ*/

-        zAti_NotifyApModemReady();

-    }

-    else if(iEvId == MMIA_ZGDT_EXPIRY_EV)

-    {

-        zAti_ZgdataTestSendPsData();

-    }

-    else if(iEvId == MMIA_SOFTRESET_EXPIRY_EV)

-    {

-        zAti_ResetTimerExpir();

-    }

-    else if(iEvId == MMIA_ZULRTIND_EXPIRY_EV)

-    {

-        zAti_ZulrtindTimerExpir();

-    }

-    else

-    {

-        return Z_FAIL;

-    }

-

-    return Z_SUCC;

-}

-

-/**************************************************************************

-* º¯ÊýÃû³Æ£º zAti_TaskWork

-* ¹¦ÄÜÃèÊö£º ÈÎÎñ´¦ÓÚ¹¤×÷״̬µÄ´¦Àíº¯Êý

-* ²ÎÊý˵Ã÷£º (IN)£º 

-*            iEvId          ÏûÏ¢ID

-*            pDataPtr       Êý¾Ý

-*            iDataLen       Êý¾Ý³¤¶È

-*            pPrivateData   

-*            (OUT)£ºÎÞ

-* ·µ »Ø Öµ£º ÎÞ

-* ÆäËü˵Ã÷£º 

-*            ¸÷ÖÖÏûÏ¢µÄÊÊÅäÔÚÕâÀïÍê³É

-*            °´Àà·ÖÇå³þÄÄÒ»ÖÖÏûÏ¢ÓÃÓÚÄÄÒ»·½Ãæ¿ØÖÆ

-**************************************************************************/

-VOID __ps_static_func zAti_TaskWork(UINT32 iEvId, UINT8 *pDataPtr, UINT16 iDataLen, UINT8 *pPrivateData)

-{

-    BYTE bInstance = zAti_GetTaskInstantIndexByTaskId(iEvId, pDataPtr, zOss_Sender());

-    if (bInstance != Z_ATI_INVALID_BYTE)

-    {

-        #if defined (DUAL_CARD_DUAL_STANDBY) || defined (_OS_WIN)

-        g_zAti_CurInstance = bInstance;

-        #else

-        g_zAti_CurInstance = Z_ATI_INSNO_1;

-        #endif

-    }

-

-    zAti_RecRcvMsg(iEvId);

-

-#ifdef _USE_SIG_TRACE

-    zAti_MsgSigTrace(iEvId, pDataPtr, iDataLen);

-#endif

-

-#ifdef _USE_GLOBAL_TRACE

-    if (zAti_EnquireGlobalVar(iEvId) == Z_SUCC)  /* ΪEC617001426283¶øÔö¼Ó*/

-    {

-        return;

-    }

-#endif

-

-    //  ´¦Àí¶¨Ê±Æ÷³¬Ê±ÏûÏ¢£¬²»ÐèÒªÊÍ·ÅÄÚ´æ

-    if(zAti_ProcTimerExpiry(iEvId, pDataPtr) == Z_SUCC)

-    {

-        return;

-    }

-

-    switch(iEvId)

-    {

-    case EV_POWEROFF:

-        zAti_StopTask();

-        break;

-

-    case EV_ZATI2_RECV_COMMAND_IND:     /* ÊÕµ½AT2Äܹ»´¦ÀíµÄATÃüÁî  */

-        zAti_RecvCommandInd(pDataPtr, iDataLen);

-        break;

-#ifndef CONFIG_SINGLECORE

-        //... 4.19ÏÂÃæÈý¸öÔÝʱ·ÅÔÚ´Ë´¦,ºóÐø¿¼ÂÇÓÅ»¯·½°¸

-    case EV_ZATI2_TEST_SEND_CS_DATA:    /* GCF²âÊÔÐèÒªµÄCSDÄ£ÄâÊý¾Ý */

-        zAti_ZgdataTestSendCsData();

-        break;

-#endif

-    case EV_ZATI2_STMLIST_IND:

-        zAti_StmListInd(pDataPtr);

-        break;

-

-     case EV_ZATI2_CPBR_CNF:

-        zAti_CpbrCnf(pDataPtr);

-        break;

-

-     case EV_ZATI2_COPN_CNF:

-        zAti_CopnCnf(pDataPtr);

-        break;

-

-    case EV_ZATI2_ZEMCELLINFO_REQ:

-        zAti_EMCellInfoReq();

-        break;

-

-    default:

-        zAti_RecvServerHandlerSlaver(iEvId, pDataPtr, iDataLen);

-        break;

-    }

-    #ifdef Z_DUALCARD_ADAPT 

-    /*Ë«¿¨Ë«´ý×ÔÊÊÅä*/

-    if(Z_VALID == zAti_IsDualPsDualUicc())

-    {

-        zAti_HandleDualCardSelfAdapt();

-    }

-    #endif

-    return;

-}

-

-

-

-

- /*******************************************************

-  *-----------ÐÂÔö´¦Àíº¯Êý-------------------------------

-  ******************************************************/

- DWORD zAti_PreUiccSlotInd(VOID *pbMsgData, DWORD * pdwChangedMsgId, T_ZAti_ChannelInfo  *pChnelNode)

-{

-    /*617001861374ÖÇÄÜ»úÈȲå°ÎÐèÇó*/

-    T_zApUicc_Card_Ind * pZuslotCnf = (T_zApUicc_Card_Ind *)pbMsgData;

-    BYTE bakInitFlag = g_zAti_atDataEx[g_zAti_CurInstance].bCardInitiatedFlag;

-    

-    if (pZuslotCnf->bSlotState == Z_APUICC_EVULSION_CARD)

-    {

-        zAti_SetCardState(g_zAti_CurInstance, Z_CARD_INIT_ERR);

-        //zAti_RetUbCardPlmnInfo();

-        //zOss_Memset(&g_zAti_atDataEx[g_zAti_CurInstance].tStUpMenu, 0, sizeof(T_zAti_SetUpMemnu));

-        zAti_CardOffInitGlobalVarByInstNo(g_zAti_CurInstance);

-        zStm_CardLostInd((T_zStm_TaskIdx)g_zAti_CurInstance);

-        

-        if(Z_ATI_CARDINIT_ING == bakInitFlag)

-        {

-            zAti_CardInitFlgClr_SigCd(g_zAti_CurInstance, Z_ATI_CARDINIT_FINISH);

-            zAti_HandleMsgBuff ();

-        }

-        zAti_HandleAutoStart();

-    }

-    else if (pZuslotCnf->bSlotState == Z_APUICC_INSERT_CARD)

-    {

-#if defined (DUAL_CARD_DUAL_STANDBY) || defined (_OS_WIN)

-        BYTE bSrcIndex    = (g_zAti_CurInstance == 0 ? ZATI2_CHANNEL_ID_NUM251 : ZATI2_CHANNEL_ID_NUM252);

-#else

-        BYTE bSrcIndex    = ZATI2_CHANNEL_ID_NUM251;

-#endif

-        zAti_InitCard(bSrcIndex, Z_ATI_INVALID_BYTE);

-        zAti_CardInitFlgClr_SigCd(g_zAti_CurInstance, Z_ATI_CARDINIT_ING);

-    }

-    // Îޱ仯

-    * pdwChangedMsgId = AP_UICC_SLOT_IND_EV;

-    return Z_APMMIA_NORESULT;

-}

-//-----------------start-------------

-

-VOID __ps_static_func zAti_AddOneCmd(T_ZAti_ChannelInfo *pChnelNode, BYTE * pbCmdStr)

-{

-    T_zAti_ATCmdNode * ptTempAtCmdNode = pChnelNode->tAtCmdList.ptAtCmdNode;

-

-    if(ptTempAtCmdNode != NULL)

-    {

-        while(ptTempAtCmdNode->ptNext != NULL)

-        {

-            ptTempAtCmdNode = ptTempAtCmdNode->ptNext;

-        }

-

-        ptTempAtCmdNode->ptNext = (T_zAti_ATCmdNode *)zAti_GetUB(sizeof(T_zAti_ATCmdNode));

-        ptTempAtCmdNode->ptNext->pbAtCmd = (BYTE *)zAti_GetUB(strlen((const char *)pbCmdStr)+1);

-        zOss_Memcpy(ptTempAtCmdNode->ptNext->pbAtCmd, pbCmdStr, strlen((const char *)pbCmdStr)+1);

-    }

-    else

-    {

-        pChnelNode->tAtCmdList.ptAtCmdNode = (T_zAti_ATCmdNode *)zAti_GetUB(sizeof(T_zAti_ATCmdNode));

-        pChnelNode->tAtCmdList.ptAtCmdNode->pbAtCmd = (BYTE *)zAti_GetUB(strlen((const char *)pbCmdStr)+1);

-        zOss_Memcpy(pChnelNode->tAtCmdList.ptAtCmdNode->pbAtCmd, pbCmdStr, strlen((const char *)pbCmdStr)+1);

-    }

-

-    pChnelNode->tAtCmdList.bAtCmdNum += 1;

-    return;

-}

-

-VOID __ps_static_func zAti_RemoveOneCmd(T_ZAti_ChannelInfo *pChnelNode)

-{

-    T_zAti_ATCmdNode * ptTempAtCmdNode = pChnelNode->tAtCmdList.ptAtCmdNode;

-

-    if(ptTempAtCmdNode != NULL)

-    {

-        pChnelNode->tAtCmdList.ptAtCmdNode = ptTempAtCmdNode->ptNext;

-

-        zAti_RetUB((VOID **)&ptTempAtCmdNode->pbAtCmd);

-        zAti_RetUB((VOID **)&ptTempAtCmdNode);

-    }

-

-    pChnelNode->cmd_id = ZAT2_NO_COMMAND; /* = -1; */

-    pChnelNode->cmd_op = ZAT2_CO_INVALID; /* = -1; */

-    pChnelNode->iEvId = ZATI2_INVAL_EVID;

-    return;

-}

-

-VOID zAti_RemoveALLCmd(T_ZAti_ChannelInfo *pChnelNode)

-{

-    while(pChnelNode->tAtCmdList.ptAtCmdNode != NULL)

-    {

-        zAti_RemoveOneCmd(pChnelNode);

-    }

-    pChnelNode->tAtCmdList.bAtCmdNum = 0;

-

-    pChnelNode->cmd_id = ZAT2_NO_COMMAND;

-    pChnelNode->cmd_op = ZAT2_CO_INVALID;

-    return;

-}

-

-

-/**************************************************************************

-* º¯ÊýÃû³Æ£º zAti_IsMultiCmd

-* ¹¦ÄÜÃèÊö£º ÅжÏÊÇ·ñÊǶàÌõÃüÁî

-* ²ÎÊý˵Ã÷£º (IN):

-*             pChnelNode:       ͨµÀ½ÚµãÖ¸Õë           

-*            (OUT):ÎÞ

-* ·µ »Ø Öµ£º TRUE£¬ FALSE

-* ÆäËü˵Ã÷£ºÎÞ

-**************************************************************************/

-BOOL __ps_static_func zAti_IsMultiCmd(T_ZAti_ChannelInfo *pChnelNode)

-{

-    return  (pChnelNode->tAtCmdList.bAtCmdNum > 1);

-}

-

-/**************************************************************************

-* º¯ÊýÃû³Æ£º zAti_HasMoreCmd

-* ¹¦ÄÜÃèÊö£º ÅжÏÊÇ·ñ»¹ÓÐÆäËû´ý½âÂëµÄÃüÁî

-* ²ÎÊý˵Ã÷£º (IN):

-*             pChnelNode:       ͨµÀ½ÚµãÖ¸Õë           

-*            (OUT):ÎÞ

-* ·µ »Ø Öµ£º TRUE£¬ FALSE

-* ÆäËü˵Ã÷£ºÎÞ

-**************************************************************************/

-BOOL __ps_static_func zAti_HasMoreCmd(T_ZAti_ChannelInfo *pChnelNode)

-{

-    return (pChnelNode->tAtCmdList.ptAtCmdNode != NULL);

-}

-

-/**************************************************************************

-* º¯ÊýÃû³Æ£º zAti_IsLastCmd

-* ¹¦ÄÜÃèÊö£º ÅжÏÕýÔÚ´¦ÀíµÄÃüÁîÊÇ·ñΪ×îºóÒ»ÌõµÄÃüÁî

-* ²ÎÊý˵Ã÷£º (IN):

-*             pChnelNode:       ͨµÀ½ÚµãÖ¸Õë           

-*            (OUT):ÎÞ

-* ·µ »Ø Öµ£º TRUE£¬ FALSE

-* ÆäËü˵Ã÷£ºÎÞ

-**************************************************************************/

-BOOL __ps_static_func zAti_IsLastCmd(T_ZAti_ChannelInfo *pChnelNode)

-{

-     // pChnelNode->tAtCmdList.ptAtCmdNodeÔڴ˲»»áÊÇ¿Õ

-     return (pChnelNode->tAtCmdList.ptAtCmdNode->ptNext == NULL);

-}

-

-BOOL __ps_static_func zAti_IsIntermediateMsg(DWORD dwMsgId, VOID* pBuff)

-{

-    /*CPBR/SCPBRµÄÖмäÏûÏ¢*/

-    if(AP_MMIA_CPBR_EXE_CNF_EV == dwMsgId 

-        ||AP_MMIA_PB_S_FIND_INDEX_CNF_EV == dwMsgId

-        ||AP_MMIA_COPN_EXE_CNF == dwMsgId)

-    {

-        return TRUE;

-    }

-

-    if(pBuff == NULL)

-    {

-        return FALSE;

-    }

-

-    /*¶ÌÐÅÁбíµÄÖмäÏûÏ¢*/

-    switch(dwMsgId)

-    {

-        case AP_MMIA_SMS_PCMGL_CNF_EV:

-        {

-            T_zApMmia_SmsPcmgl_Cnf *pPcmglCnf = (T_zApMmia_SmsPcmgl_Cnf*)pBuff;

-            if(pPcmglCnf->wTotalNum != 0 && pPcmglCnf->WCurNum != pPcmglCnf->wTotalNum)

-            {

-                return TRUE;

-            }

-            break;

-        }

-        case AP_MMIA_SMS_TDELI_LIST_CNF_EV:

-        {

-            T_zApMmia_SmsTdeliList_Cnf *pTcmglDeliCnf = (T_zApMmia_SmsTdeliList_Cnf*)pBuff;

-            if(pTcmglDeliCnf->wTotalNum != 0&&pTcmglDeliCnf->wCurNum != pTcmglDeliCnf->wTotalNum)

-            {

-                return TRUE;

-            }

-            break;

-        }

-        case AP_MMIA_SMS_TSUB_LIST_CNF_EV:

-        {

-            T_zApMmia_SmsTsubList_Cnf *pTcmglSubCnf = (T_zApMmia_SmsTsubList_Cnf*)pBuff;

-            if(pTcmglSubCnf->wTotalNum != 0&&pTcmglSubCnf->wCurNum != pTcmglSubCnf->wTotalNum)

-            {

-                return TRUE;

-            }

-            break;

-        }

-        case AP_MMIA_SMS_TSTAT_LIST_CNF_EV:

-        {

-            T_zApMmia_SmsTstatList_Cnf *pTcmglStatCnf = (T_zApMmia_SmsTstatList_Cnf*)pBuff;

-            if(pTcmglStatCnf->wTotalNum != 0&&pTcmglStatCnf->wCurNum != pTcmglStatCnf->wTotalNum)

-            {

-                return TRUE;

-            }

-            break;

-        }

-        case AP_MMIA_SMS_TCOM_LIST_CNF_EV:

-        {

-            T_zApMmia_SmsTcomList_Cnf *pTcmglComCnf = (T_zApMmia_SmsTcomList_Cnf*)pBuff;

-            if(pTcmglComCnf->wTotalNum != 0&&pTcmglComCnf->wCurNum != pTcmglComCnf->wTotalNum)

-            {

-                return TRUE;

-            }

-            break;

-        }

-        case AP_MMIA_CBS_TCBM_LIST_CNF_EV:

-        {

-            T_zApMmia_Cbs_TcbmList_Cnf *pTcmglCbmCnf = (T_zApMmia_Cbs_TcbmList_Cnf*)pBuff;

-            if(pTcmglCbmCnf->bTotalPage != 0&& pTcmglCbmCnf->bCurPage != pTcmglCbmCnf->bTotalPage)

-            {

-                return TRUE;

-            }

-            break;

-        }

-        case AP_MMIA_CBS_PCBM_LIST_CNF_EV:

-        {

-            T_zApMmia_Cbs_PcbmList_Cnf *pPcbmcmglCnf = (T_zApMmia_Cbs_PcbmList_Cnf*)pBuff;

-            if(pPcbmcmglCnf->bListEndFg != 1)

-            {

-                return TRUE;

-            }

-            break;

-        }

-        default:

-            break;

-    }

-    return FALSE;

-}

-

-/**************************************************************************

-* º¯ÊýÃû³Æ£º zAti_GetFirstCmd

-* ¹¦ÄÜÃèÊö£º »ñÈ¡µÚÒ»ÌõÃüÁî×Ö·û´®

-* ²ÎÊý˵Ã÷£º (IN):

-*             pChnelNode:       ͨµÀ½ÚµãÖ¸Õë           

-*            (OUT):ÎÞ

-* ·µ »Ø Öµ£º ÃüÁî×Ö·û´®Ê×µØÖ·

-* ÆäËü˵Ã÷£ºÎÞ

-**************************************************************************/

-BYTE * __ps_static_func zAti_GetFirstCmd(T_ZAti_ChannelInfo *pChnelNode)

-{

-    return pChnelNode->tAtCmdList.ptAtCmdNode->pbAtCmd;

-}

-

-/**************************************************************************

-* º¯ÊýÃû³Æ£º zAti_SendEncData

-* ¹¦ÄÜÃèÊö£º Éϱ¨±àÂë½á¹û

-* ²ÎÊý˵Ã÷£º (IN):

-*             pChnelNode:       ͨµÀ½ÚµãÖ¸Õë 

-*             pStrCmd:           ±àÂëºóµÄ×Ö·û´®

-*            (OUT):ÎÞ

-* ·µ »Ø Öµ£º ÎÞ

-* ÆäËü˵Ã÷£ºÎÞ

-**************************************************************************/

-VOID __ps_static_func zAti_SendEncData(T_ZAti_ChannelInfo *pChnelNode, BYTE* pStrCmd, DWORD dwMsgId, VOID* pBuff)

-{

-    CHAR   ZATI2_ENC_ERR_STR[] = {"ERROR"};

-    WORD  wStrLen = (WORD)strlen((const char *)pStrCmd);

-

-    /*   µ¥ÌõÃüÁÓÐOK , ²»È¥³ý£¬Ã»OK ²»Ôö¼Ó

-     *   ¶àÌõÃüÁÓÐOK, È¥³ý£¬ÔÙ×îºó²¹·¢OK

-     */      

-    if(strstr((const char *)pStrCmd,(char *)g_zAt_OK) != NULL) 

-    {

-        if (zAti_IsMultiCmd(pChnelNode))

-        {

-            wStrLen  -= (WORD)strlen((const char *)g_zAt_OK);

-        }

-    }

-    else if(strstr((const char *)pStrCmd,(char *)ZATI2_ENC_ERR_STR) != NULL)

-    {

-        zAti_RemoveALLCmd(pChnelNode);

-        zAti_SendFnc(pChnelNode->iChnelId, pStrCmd, wStrLen, ZATI2_CHIND_AT);

-        zAti_SendRspCmdStr2Trace(pChnelNode->iChnelId, wStrLen, (CHAR *)pStrCmd);

-        return;

-    }

-

-    if (wStrLen > 0)

-    {

-        zAti_SendFnc(pChnelNode->iChnelId, pStrCmd, wStrLen, ZATI2_CHIND_AT);

-        zAti_SendRspCmdStr2Trace(pChnelNode->iChnelId, wStrLen, (CHAR *)pStrCmd);

-    }

-

-    /* ¶àÌõÃüÁîµÄ×îºóÒ»ÌõÃüÁ²¹·¢OK*/

-    if(zAti_IsMultiCmd(pChnelNode))

-    {

-        if(zAti_IsLastCmd(pChnelNode))

-        {

-            if(!zAti_IsIntermediateMsg(dwMsgId, pBuff))

-            {

-                zAti_SendFnc(pChnelNode->iChnelId, (BYTE *)g_zAt_OK, (WORD)strlen((const char *)g_zAt_OK), ZATI2_CHIND_AT);

-                zAti_SendRspCmdStr2Trace(pChnelNode->iChnelId, (WORD)strlen((const char *)g_zAt_OK), (CHAR *)g_zAt_OK);

-            }

-            pChnelNode->tAtCmdList.bAtCmdNum = 0;

-        }

-    }

-    else

-    {

-        pChnelNode->tAtCmdList.bAtCmdNum = 0;

-    }

-    return;

-}

-

-/**************************************************************************

-* º¯ÊýÃû³Æ£º zAti_ReplyOK

-* ¹¦ÄÜÃèÊö£º Éϱ¨±àÂë½á¹û

-* ²ÎÊý˵Ã÷£º (IN):

-*             pChnelNode:       ͨµÀ½ÚµãÖ¸Õë 

-*            (OUT):ÎÞ

-* ·µ »Ø Öµ£º ÎÞ

-* ÆäËü˵Ã÷£ºÎÞ

-**************************************************************************/

-VOID __ps_static_func zAti_ReplyOK(T_ZAti_ChannelInfo *pChnelNode)

-{

-    zAti_SendEncData(pChnelNode, (BYTE *)g_zAt_OK, ZATI_INVALID_MSGID, NULL);

-    return;

-}

-

-

-/**************************************************************************

-* º¯ÊýÃû³Æ : zAti_GetErrorReply

-* ¹¦ÄÜÃèÊö : »ñȡʧ°ÜÐÅÏ¢

-* ²ÎÊý˵Ã÷£º (IN)£º 

-*            pDataPtr       Êý¾Ý

-*            iDataLen       Êý¾Ý³¤¶È 

-*            (OUT)£ºÎÞ

-* ·µ »Ø Öµ£º ÎÞ

-* ÆäËü˵Ã÷£º ÎÞ

-**************************************************************************/

-void zAti_GetErrorReplyStr(CHAR * pbErrorStr, T_ZAt2_DecRsltType  bDecRsltType)

-{

-    DWORD dwErrorCode[] = {

-        (DWORD)ZAT2_CMD_INVALID_RSLT, //ZAT2_CMD_PARSE_OK,          /* ½âÎö³É¹¦ */

-        (DWORD)ZAT2_CMD_INVALID_RSLT, //ZAT2_CMD_REPLY_DIRECT,      /* ½âÎö³É¹¦ÇÒÖ±½Ó»Ø¸´ÃüÁî */

-        (DWORD)ZAT2_CMD_INVALID_RSLT, // ZAT2_CMD_NOT_END_REPLY,     /* ÃüÁîδ½áÊøÖ±½Ó»Ø¸´Ìáʾ */

-        (DWORD)ZAT2_CMD_INVALID_RSLT, // ZAT2_CMD_NOT_END,           /* ÃüÁîδ½áÊø */

-        ZAT2_CMEE_CMDUNREC,   //  ZAT2_CMD_UNREC,             /* ÎÞ·¨Ê¶±ðµÄÃüÁî */

-        ZAT2_CMEE_SYNTAX_ERR,  //  ZAT2_CMD_SYNTAX_ERR,        /* Óï·¨´íÎó */

-        ZAT2_CMEE_SYNTAX_ERR,  // ZAT2_CMD_PARAM_ERR,         /* ²ÎÊý´íÎó */

-        (DWORD)ZAT2_CMD_INVALID_RSLT, // ZAT2_CMD_CANCELED,          /* ÃüÁîÈ¡Ïû */

-        (DWORD)ZAT2_CMEE_CMDCONFLICT, // ZAT2_CMD_CONFLICT,          /* µ¥Í¨µÀ½âÂë³åÍ» */

-        (DWORD)ZAT2_CMD_INVALID_RSLT, // ZAT2_INPUT_ILLEGAL,         /* Èë²Î·Ç·¨ */

-        (DWORD)ZAT2_CMD_INVALID_RSLT, // ZAT2_MEMORY_ERR,             /* ÄÚ´æ´íÎó */

-        Z_APMMIA_NVFAILURE_ERR, // ZAT2_NVFAILURE_ERR ,

-        Z_APMMIA_OPTNOTALW_ERR, // ZAT2_OPTNOTALW_ERR,

-        Z_APMMIA_CMSNOCNMAACK_ERR, // ZAT2_CMSNOCNMAACK_ERR,

-        Z_APMMIA_CMSMEMFAIL_ERR, // ZAT2_CMSINVALIDTEXTPARA_ERR, // = ERR_MMIA_CMSINVALIDTEXTPARA

-        ZAT2_CMEE_VALUE_ERR, // ZAT2_CMD_VALUE_ERR

-        ZAT2_CMEE_DUALCARDADPT_ERR,

-        ZAT2_CMEE_CMDOVERFLOW, // ZAT2_CMD_OVERFLOW

-        ZAT2_CMEE_DUALCARDCID_ERR, //ZAT2_CMD_DUALCARDERR

-    };

-

-    if(bDecRsltType == ZAT2_NVFAILURE_ERR && g_zAti_ptData->bEModeType == 0)

-    {

-        dwErrorCode[bDecRsltType] = Z_APMMIA_OPTNOTALW_ERR;

-    }

-

-    if(bDecRsltType == ZAT2_CMSNOCNMAACK_ERR || bDecRsltType == ZAT2_CMSINVALIDTEXTPARA_ERR)

-    {

-        zAt_EncErrorCode(pbErrorStr, ZAT2_SMS_CNMA, dwErrorCode[bDecRsltType]);

-    }

-

-    if(bDecRsltType <= ZAT2_CMEE_DUALCARDCID_ERR && dwErrorCode[bDecRsltType] != (DWORD)ZAT2_CMD_INVALID_RSLT)

-    {

-        zAt_EncErrorCode(pbErrorStr, ZAT2_CFG_CMEE, dwErrorCode[bDecRsltType]);

-    }

-    return;

-}

-

-/**************************************************************************

-* º¯ÊýÃû³Æ : zAti_CmdDirectReply

-* ¹¦ÄÜÃèÊö : ÃüÁî½âÎöÍêºóÖ±½Ó»Ø¸´£¬¿ÉÄÜÕýÈ·£¬Ò²¿ÉÄÜ´íÎó

-* ²ÎÊý˵Ã÷£º (IN)£º 

-*            pDataPtr       Êý¾Ý

-*            iDataLen       Êý¾Ý³¤¶È 

-*            (OUT)£ºÎÞ

-* ·µ »Ø Öµ£º ÎÞ

-* ÆäËü˵Ã÷£º ÎÞ

-**************************************************************************/

-void __ps_static_func zAti_CmdDirectReply(T_ZAti_ChannelInfo *pChnelNode, T_ZAt2_DecRsltType  bDecRsltType)

-{

-    CHAR ZAT2_ENC_SMS_INPUT_IND_STR[20] = {"\r\n> "};

-

-    if(bDecRsltType == ZAT2_CMD_NOT_END_REPLY) 

-    {

-        pChnelNode->cmdInputInfo.cmdInputStat = ZAT2_SMS_EDIT;

-        zOss_Memcpy(g_zAt_EncBuf, ZAT2_ENC_SMS_INPUT_IND_STR, strlen((const char *)ZAT2_ENC_SMS_INPUT_IND_STR));

-    }

-    else if(bDecRsltType == ZAT2_CMD_REPLY_DIRECT)

-    {

-        // ÒѾ­½«ÐÅÏ¢´æÈëg_zAt_EncBuf ÖУ¬do nothing

-    }

-    else

-    {

-        zAti_GetErrorReplyStr(g_zAt_EncBuf, bDecRsltType);

-    }

-

-    /* 1, ͨµÀ³åÍ»£¬°üº¬Error , Ö±½Ó»Ø¸´£¬²»ÇåÆäËûÃüÁî

-       2, ÃüÁ³¤£¬»¹Ã»ÓпªÊ¼½âÎö£¬²»ÐèÒªÇå¿ÕÆäËûÃüÁî

-     */

-    if(bDecRsltType == ZAT2_CMD_CONFLICT || bDecRsltType == ZAT2_CMD_OVERFLOW)

-    {

-        zAti_SendFnc(pChnelNode->iChnelId, (BYTE *)g_zAt_EncBuf, (WORD)strlen((const char *)g_zAt_EncBuf), ZATI2_CHIND_AT);

-        zAti_SendRspCmdStr2Trace(pChnelNode->iChnelId, (WORD)strlen((const char *)g_zAt_EncBuf), (CHAR *)g_zAt_EncBuf);

-    }

-    else

-    {

-        zAti_SendEncData(pChnelNode, (BYTE *)g_zAt_EncBuf, ZATI_INVALID_MSGID, NULL);

-    }

-    return;

-}

-

-

-/**************************************************************************

-* º¯ÊýÃû³Æ : zAti_ProcError

-* ¹¦ÄÜÃèÊö : ´¦ÀíÃüÁîÏûϢʧ°Ü

-* ²ÎÊý˵Ã÷£º (IN)£º 

-*            pChnelNode      ͨµÀ½Úµã

-*            dwError       ´íÎóÂë

-*            (OUT)£ºÎÞ

-* ·µ »Ø Öµ£º ÎÞ

-* ÆäËü˵Ã÷£º ÎÞ

-**************************************************************************/

-void zAti_ProcError(T_ZAti_ChannelInfo *pChnelNode, DWORD dwErrorCause)

-{

-    if (dwErrorCause == Z_APMMIA_NVFAILURE_ERR && g_zAti_ptData->bEModeType == 0)

-    {     

-        dwErrorCause  = Z_APMMIA_OPTNOTALW_ERR;  // 3

-    }

-    

-    if(pChnelNode != NULL)

-    {

-        zAt_EncErrorCode(g_zAt_EncBuf, pChnelNode->cmd_id, dwErrorCause);

-        zAti_SendEncData(pChnelNode, (BYTE *)g_zAt_EncBuf, ZATI_INVALID_MSGID, NULL);

-    }

-    return;

-}

-

-/**************************************************************************

-* º¯ÊýÃû³Æ : zAti_GetDistributeMsgIdx

-* ¹¦ÄÜÃèÊö : »ñÈ¡·Ö·¢ÏûϢϱê

-* ²ÎÊý˵Ã÷£º (IN)£º 

-*            dwMsgId      ÏûÏ¢ºÅ

-*            (OUT)£º

-*             pMsgIdx   : ·Ö·¢ÏûÏ¢Êý×éÖеÄϱê

-* ·µ »Ø Öµ£º ÕÒµ½·µ»ØZ_SUCC,  ûÓÐÕÒµ½·µ»ØZ_FAIL

-* ÆäËü˵Ã÷£º ÎÞ

-**************************************************************************/

-BYTE __ps_static_func zAti_GetDistributeMsgIdx(DWORD dwMsgId, WORD *pMsgIdx)

-{

-    WORD wTabIdx = 0;

-    for (wTabIdx = 0; wTabIdx < (sizeof(g_atDistributeMsgMap) / sizeof(g_atDistributeMsgMap[0])); wTabIdx++)

-    {

-        if(g_atDistributeMsgMap[wTabIdx].dwMsgId == dwMsgId)

-        {

-            *pMsgIdx = wTabIdx;

-            return Z_SUCC;

-        }

-    }

-    return Z_FAIL;

-}

-

-/**************************************************************************

-* º¯ÊýÃû³Æ : zAti_ProcDistributeMsg

-* ¹¦ÄÜÃèÊö : ´¦Àí·Ö·¢ÏûÏ¢

-* ²ÎÊý˵Ã÷£º (IN)£º 

-*            wDistributeMsgIdx:      ÏûϢϱê

-*            pbMsgBody           :     ÏûÏ¢Ìå

- *           wMsgLen              :     ÏûÏ¢³¤¶È

-*            pChnelNode          :     ͨµÀ½ÚµãÖ¸Õë

-*            (OUT)£ºÎÞ

-* ·µ »Ø Öµ£º ´íÎóÂë

-* ÆäËü˵Ã÷£º ÎÞ

-**************************************************************************/

-DWORD __ps_static_func zAti_ProcDistributeMsg(WORD wDistributeMsgIdx, BYTE *pbMsgBody, WORD wMsgLen, T_ZAti_ChannelInfo *pChnelNode)

-{ 

-    return g_atDistributeMsgMap[wDistributeMsgIdx].pHandleMsg((VOID *)pbMsgBody);  

-}

-

-

-/**************************************************************************

-* º¯ÊýÃû³Æ : zAti_ProcError

-* ¹¦ÄÜÃèÊö : »ñȡת·¢ÏûϢϱê

-* ²ÎÊý˵Ã÷£º (IN)£º 

-*            dwMsgId      ÏûÏ¢ºÅ

-*            (OUT)£º

-*             pMsgIdx   : ·Ö·¢ÏûÏ¢Êý×éÖеÄϱê

-* ·µ »Ø Öµ£º ÕÒµ½·µ»ØZ_SUCC,  ûÓÐÕÒµ½·µ»ØZ_FAIL

-* ÆäËü˵Ã÷£º ÎÞ

-**************************************************************************/

-BYTE __ps_static_func zAti_GetTransmitMsgTaskId(DWORD dwMsgId, BYTE *pbTaskId)

-{

-    if(zAti_GetDestTaskByMsgID(dwMsgId, pbTaskId))

-        return Z_SUCC;

-    else

-        return Z_FAIL;

-}

-

-/**************************************************************************

-* º¯ÊýÃû³Æ : zAti_RrocTransmitMsg

-* ¹¦ÄÜÃèÊö : ´¦Àí·Ö·¢ÏûÏ¢

-* ²ÎÊý˵Ã÷£º (IN)£º 

-*            wDistributeMsgIdx:      ÏûϢϱê

-*            pbMsgBody           :     ÏûÏ¢Ìå

- *           wMsgLen              :     ÏûÏ¢³¤¶È

-*            pChnelNode          :     ͨµÀ½ÚµãÖ¸Õë

-*            (OUT)£ºÎÞ

-* ·µ »Ø Öµ£º  ´íÎóÂë

-* ÆäËü˵Ã÷£º ÎÞ

-**************************************************************************/

-DWORD __ps_static_func zAti_RrocTransmitMsg(DWORD dwMsgId, BYTE *pbMsgBody, WORD wMsgLen, T_ZAti_ChannelInfo *pChnelNode,  BYTE bTaskId)

-{

-#ifdef USE_VOICE_SUPPORT

-    if(dwMsgId == MMIA_CC_DIS_MODE_REQ_EV) /* ´Ë´¦¼Ç¼ÏìÓ¦ÊÇCOMMON_CNFµÄÇëÇóÏûÏ¢ */

-    {

-        pChnelNode->iEvId = dwMsgId;

-        if(ZAT2_CC_CHUP == pChnelNode->cmd_id)

-        {

-            *(pbMsgBody + 1) = 0xff;

-        }

-    }

-

-    if(dwMsgId == MMIA_CC_ANS_MODE_REQ_EV)

-    {

-        if((pbMsgBody != ZOSS_NULL) && ((*(pbMsgBody + 1)) == ZATI2_INVAL_MMIA_INDEX))

-        {

-            return Z_APMMIA_OPTNOTALW_ERR;

-        }

-    }

-#endif

-    zAti_MarkIndex(pbMsgBody, zAti_ConvertTskIdToSbMdl(bTaskId));

-    if (bTaskId == Z_ATI_TASKID_ATI)

-    {

-        return Z_APMMIA_OPTNOTALW_ERR;

-    }

-    /*#ifndef USE_VOICE_SUPPORT

-    else if(bTaskId == Z_ATI_TASKID_CC||bTaskId == Z_ATI_TASKID_SS)

-    {

-        zAti_SendExpt2TraceAgt(ERR_InvalidMsg, TRACE_ERR_LEVEL_NORMAL,"");

-        return Z_APMMIA_OPTNOTALW_ERR;

-    }

-    #endif*/

-    else if( Z_SUCC != zAti_MsgForward(dwMsgId, (UINT8 *)pbMsgBody, wMsgLen,bTaskId))

-    {

-        // ת·¢ÏûÏ¢£¬Ê§°Üºó²»ÊÍ·ÅÄڴ棬ÔÚÍâ²ãͳһÊÍ·Å

-        return Z_APMMIA_OPTNOTALW_ERR;

-    }

-    else 

-    {

-         return Z_APMMIA_NORESULT;

-    }

-}

-

-// ----------------------·Ö¸îÏß ------------

-

-DWORD zAti_ProcCpbr(VOID *pbMsgData)

-{

-    zAti_CpbrHandle((T_zApMmia_CpbrSet_Req*)pbMsgData,0,ZSTM_STORAGE_ID_PBMAX,NULL);

-    return Z_APMMIA_NORESULT;

-}

-DWORD zAti_ProcSmsCmglReq(VOID *pbMsgData)

-{

-    zStm_MmiaSms_CmglReq_Proc((BYTE *)pbMsgData, (WORD)sizeof(T_zApMmia_ListSm_Req), (T_zStm_TaskIdx)g_zAti_CurInstance);

-    return Z_APMMIA_NORESULT;

-}

-DWORD zAti_ProcPbAddUserEn(VOID *pbMsgData)

-{

-    zStm_MmiaPb_AddUserEn_Proc((BYTE *)pbMsgData, (WORD)sizeof(T_ZAti_EmerNum_Req), (T_zStm_TaskIdx)g_zAti_CurInstance);

-    return Z_APMMIA_NORESULT;

-}

-DWORD zAti_ProcSmsCmgdTest(VOID *pbMsgData)

-{

-    zStm_AtiSms_CmgdTest_Proc((BYTE *)pbMsgData, (WORD)sizeof(T_zApMmia_ListSm_Req), (T_zStm_TaskIdx)g_zAti_CurInstance);

-    return Z_APMMIA_NORESULT;

-}

-

-DWORD zAti_ProcDtmfReq(VOID*pbMsgBody)

-{

-#ifdef USE_VOICE_SUPPORT

-    T_ZAti_Dtmf_Req            *ptVtsReq = (T_ZAti_Dtmf_Req*)pbMsgBody; //pbMsgBody 

-    T_zDev_AtMem_Mmia_PrivateMem tAtData = {0};

-    g_zAti_atDataEx[g_zAti_CurInstance].tDtmf.bCurnum = 0;

-    g_zAti_atDataEx[g_zAti_CurInstance].tDtmf.bTotalNum = ptVtsReq->bDtmfLen;

-    zOss_Memcpy(g_zAti_atDataEx[g_zAti_CurInstance].tDtmf.bDtmf, ptVtsReq->bDtmf, ptVtsReq->bDtmfLen);

- 

-    if(ptVtsReq->bDurationFg == Z_APMMIA_INVALID)

-    {

-        zDev_AtMemReadItem(Z_AtMem_ID_MmiaPrvtMem, 0, (PBYTE)&tAtData, g_zAti_CurInstance);

-        g_zAti_atDataEx[g_zAti_CurInstance].tDtmf.dwDuration = tAtData.dwDuration;

-    }

-    else

-    {

-        g_zAti_atDataEx[g_zAti_CurInstance].tDtmf.dwDuration = ptVtsReq->dwDuration;

-    }

-

-    return zAti_HandleVtsForCmcc(ptVtsReq->bSrcIndex, ptVtsReq->iDestIndex);

-#else

-    return Z_APMMIA_OPTNOTALW_ERR;

-#endif

-}

-//-----------------------------·Ö¸îÏß---------------

-

-/**************************************************************************

-* º¯ÊýÃû³Æ£º zAti_ProcCmdEnd

-* ¹¦ÄÜÃèÊö£º ´¦ÀíÃüÁîÊÇ·ñÊÇ·ñ½áÊø

-* ²ÎÊý˵Ã÷£º (IN)£º ÎÞ

-*            recvCmdInd       ÊÕµ½ATÃüÁîµÄ½á¹¹Ìå

-*            chnelNode        ͨµÀ½áµã

-*            (OUT)£ºÎÞ

-* ·µ »Ø Öµ : ³É¹¦/ʧ°Ü

-* ÆäËü˵Ã÷£º ±£´æºóÔò»áÁ¢¿Ì½âÂë

-**************************************************************************/

-BYTE __ps_static_func zAti_ProcCmdEnd(T_ZAti_Buffer  *ptBuff)

-{

-    UINT16 i = 0;

-    UINT16 bValidNum = 0;

-

-    BYTE *pbStrATCmd = (BYTE *)zAti_GetUB(ZAT_LONG_CMD_LEN);

-

-    while (ptBuff->arrData[i] == g_zAti_ptData->bCurS3Value || ptBuff->arrData[i] == g_zAti_ptData->bCurS4Value)

-    {

-        i++;

-    }

-    while(i < ptBuff->iLength)

-    {

-        if(ptBuff->arrData[i] == g_zAti_ptData->bCurS5Value)

-        {

-            if(bValidNum > 0)

-                pbStrATCmd[--bValidNum] = ZAT2_NULL_CHAR;

-        }

-        else  if((ptBuff->arrData[i] == g_zAti_ptData->bCurS3Value) || (ptBuff->arrData[i] == g_zAti_ptData->bCurS4Value))

-        {

-            ptBuff->iLength = bValidNum;

-            zOss_Memcpy(ptBuff->arrData, pbStrATCmd, bValidNum);/* ½«ÊÕµ½µÄarrData±£´æµ½»º´æ */

-            ptBuff->arrData[bValidNum] = ZAT2_NULL_CHAR;

-            zAti_RetUB((VOID**)&pbStrATCmd);

-            return Z_SUCC;

-        }

-        else if (ptBuff->arrData[i] != g_zAti_ptData->bCurS4Value)

-        {

-            pbStrATCmd[bValidNum++] = ptBuff->arrData[i];

-        }

-

-        i++;

-    }

-    

-    zAti_RetUB((VOID**)&pbStrATCmd);

-    return Z_FAIL;

-}

-

-/**************************************************************************

-* º¯ÊýÃû³Æ£º zAti_ProcSmsDataEnd

-* ¹¦ÄÜÃèÊö£º ´¦Àí¶ÌÏûÏ¢ÄÚÈÝÊÇ·ñ½áÊøÊÇ·ñÊÇ·ñ½áÊø

-* ²ÎÊý˵Ã÷£º (IN)£º ÎÞ

-*            recvCmdInd       ÊÕµ½ATÃüÁîµÄ½á¹¹Ìå

-*            chnelNode        ͨµÀ½áµã

-*            (OUT)£ºÎÞ

-* ·µ »Ø Öµ : ³É¹¦/ʧ°Ü

-* ÆäËü˵Ã÷£º ±£´æºóÔò»áÁ¢¿Ì½âÂë

-**************************************************************************/

-BYTE zAti_ProcSmsDataEnd(T_ZAti_Buffer  *ptBuff)

-{

-    UINT16 i = 0;

-    UINT16 bValidNum = 0;

-    

-    BYTE *pbSMSData = (BYTE *)zAti_GetUB(ZAT_LONG_CMD_LEN);

-    

-    while(i < ptBuff->iLength)

-    {

-        if(ptBuff->arrData[i] == g_zAti_ptData->bCurS5Value)

-        {

-            if(bValidNum > 0)

-                pbSMSData[--bValidNum] = ZAT2_NULL_CHAR;

-        }

-        else  if(ptBuff->arrData[i] == ZAT2_ESC_CHAR || ptBuff->arrData[i] == ZAT2_CTRL_Z_CHAR) 

-        {

-            if ((ptBuff->arrData[i] == ZAT2_ESC_CHAR) && (g_zAti_ptData->ptCmdInputInfo != NULL))

-            {

-                g_zAti_ptData->ptCmdInputInfo->bSmsEsc = Z_VALID;

-            }

-            

-            ptBuff->iLength = bValidNum;

-            zOss_Memcpy(ptBuff->arrData, pbSMSData, bValidNum);   /* ½«ÊÕµ½µÄarrData±£´æµ½»º´æ */

-            ptBuff->arrData[bValidNum] = ZAT2_NULL_CHAR;

-            zAti_RetUB((VOID**)&pbSMSData);

-            return Z_SUCC;

-        }

-        else if (ptBuff->arrData[i] == g_zAti_ptData->bCurS3Value || ptBuff->arrData[i] == ZAT2_NULL_CHAR)

-        {

-            // do Nothing , ¼´Ìø¹ý s3

-        }

-        else 

-        {

-            pbSMSData[bValidNum++] = ptBuff->arrData[i];

-        }

-        i++;

-    }

-    zAti_RetUB((VOID**)&pbSMSData);

-    return Z_FAIL;

-}

-

-

-VOID __ps_static_func zAti_PutDataToChnel(const T_ZAti_ChannelDataBuf *recvCmdInd, T_ZAti_ChannelInfo *pChnelNode)

-{

-    //zAti_SendRecvCmdStr2Trace(recvCmdInd->iChannel, recvCmdInd->iDataLen, (CHAR *)recvCmdInd->strData);

-    

-    if (recvCmdInd->iDataLen + pChnelNode->atBuff.iLength >= ZATI2_BUFFER_LENGTH)

-    {

-        /* Èô³¬³ö»º´æ³¤¶ÈÔòÇå¿Õ»º´æ */

-        zOss_Memset(pChnelNode->atBuff.arrData, 0, ZATI2_BUFFER_LENGTH);

-        pChnelNode->atBuff.iLength = 0;

-        pChnelNode->checkAtOutLimit = TRUE;

-    }

-

-    /* STEP002-Ìí¼Óµ½¶ÔӦͨµÀµÄ»º³åÇø */    

-    zOss_Memcpy(pChnelNode->atBuff.arrData + pChnelNode->atBuff.iLength, (char *)recvCmdInd->strData, recvCmdInd->iDataLen);/* ½«ÊÕµ½µÄarrData±£´æµ½»º´æ */

-    pChnelNode->atBuff.iLength = pChnelNode->atBuff.iLength + recvCmdInd->iDataLen; /* ³¤¶È¼ÓÉÏ */

-    //pChnelNode->atBuff.arrData[pChnelNode->atBuff.iLength] = 0;        /*µ±atBuff.iLengthÊÇ1024ʱԽ½ç£¬´Ë´¦²»ÔÙ¼Ó\0,ºóÃæ±£´æÊý¾Ýʱ»á¼Ó*/

-    return;

-}

-

-/**************************************************************************

-* º¯ÊýÃû³Æ£º zAti_ProcAtBufLimit

-* ¹¦ÄÜÃèÊö£º ´¦ÀíAT  »º³åÇøÊÜÏÞÇé¿ö

-* ²ÎÊý˵Ã÷£º (IN)£º ÎÞ

-*            recvCmdInd       ÊÕµ½ATÃüÁîµÄ½á¹¹Ìå

-* ·µ »Ø Öµ : ³É¹¦/ʧ°Ü

-* ÆäËü˵Ã÷£º ±£´æºóÔò»áÁ¢¿Ì½âÂë

-**************************************************************************/

-BYTE __ps_static_func zAti_ProcAtBufLimit(T_ZAti_ChannelInfo *pChnelNode)

-{

-    if(pChnelNode->checkAtOutLimit)

-    {

-        /* ÏûÏ¢»ñÈ¡³¬³¤£¬·ÖÅäÖ±½Ó·µ»Ø´íÎó½á¹û */

-        zAti_CmdDirectReply(pChnelNode, ZAT2_CMD_OVERFLOW);

-

-         zOss_Memset(pChnelNode->atBuff.arrData, 0, ZATI2_BUFFER_LENGTH);

-         pChnelNode->atBuff.iLength = 0;

-         pChnelNode->checkAtOutLimit = FALSE;

-

-         return Z_FAIL;

-    }

-

-    return Z_SUCC;

-}

-

-

-/**************************************************************************

-* º¯ÊýÃû³Æ£º zAti_StoreAtCmd

-* ¹¦ÄÜÃèÊö£º ½«ÊÕµ½µÄATÃüÁî±£´æµ½ATIµÄ»º´æÀïÃæ

-* ²ÎÊý˵Ã÷£º (IN)£º ÎÞ

-*            recvCmdInd       ÊÕµ½ATÃüÁîµÄ½á¹¹Ìå

-*            chnelNode        ͨµÀ½áµã

-*            (OUT)£ºÎÞ

-* ·µ »Ø Öµ : ³É¹¦/ʧ°Ü

-* ÆäËü˵Ã÷£º ±£´æºóÔò»áÁ¢¿Ì½âÂë

-**************************************************************************/

-BYTE __ps_static_func zAti_StoreAtCmd(const T_ZAti_ChannelDataBuf *recvCmdInd, T_ZAti_ChannelInfo *pChnelNode)

-{

-    BYTE * pATDTStr = NULL;

-    zAti_PutDataToChnel(recvCmdInd, pChnelNode);

-

-    if(zAti_ProcCmdEnd(&pChnelNode->atBuff) == Z_FAIL)

-    {

-        zAti_SendExpt2TraceAgt(ERR_InvalidPara,  TRACE_ERR_LEVEL_NORMAL,""); //¶¨Î»ÎÊÌâÓã¬ÃüÁîûÓнáÊø·û

-        return Z_FAIL;

-    }

-

-    if(zAti_ProcAtBufLimit(pChnelNode) == Z_FAIL)

-    {

-        return Z_FAIL;

-    }

-

-    // ´¦ÀíATDT

-    pATDTStr = (BYTE *)strstr((char *)pChnelNode->atBuff.arrData, "ATDT*");

-    if(pATDTStr != NULL)

-    {

-        pATDTStr += 3; // *ºóÃæ×Ö½ÚµÄλÖÃ

-        while(*pATDTStr++ != '\0')

-            *(pATDTStr -1)= *pATDTStr;

-        pChnelNode->atBuff.iLength -= 1;

-    }

-

-    return Z_SUCC;

-}

-

-/**************************************************************************

-* º¯ÊýÃû³Æ£º zAti_StoreSmsData

-* ¹¦ÄÜÃèÊö£º ½«ÊÕµ½µÄ¶ÌÏûÏ¢ÄÚÈݱ£´æµ½ATIµÄ»º´æÀïÃæ

-* ²ÎÊý˵Ã÷£º (IN)£º ÎÞ

-*            recvCmdInd       ÊÕµ½ATÃüÁîµÄ½á¹¹Ìå

-*            chnelNode        ͨµÀ½áµã

-*            (OUT)£ºÎÞ

-* ·µ »Ø Öµ : ³É¹¦/ʧ°Ü

-* ÆäËü˵Ã÷£º ±£´æºóÔò»áÁ¢¿Ì½âÂë

-**************************************************************************/

-BYTE zAti_StoreSmsData(const T_ZAti_ChannelDataBuf *recvCmdInd, T_ZAti_ChannelInfo *pChnelNode)

-{

-    zAti_PutDataToChnel(recvCmdInd, pChnelNode);

-    if(zAti_ProcSmsDataEnd(&pChnelNode->atBuff) == Z_FAIL)

-    {

-        return Z_FAIL;

-    }

-    return zAti_ProcAtBufLimit(pChnelNode);

-}

-

-VOID __ps_static_func zAti_Init_CmdInfo(T_ZAt2_CmdInputInfo * pCmdInputInfo)

-{

-    pCmdInputInfo->cmdInputStat = ZAT2_ATCMD;

-    pCmdInputInfo->iSmsCrCnt = 0;

-    pCmdInputInfo->smsInputType = ZAT2_NO_SMS_INPUT;

-    pCmdInputInfo->pSmsInputMsg = NULL;

-    pCmdInputInfo->bSmsEsc = Z_INVALID;

-    return;

-}

-/**************************************************************************

-* º¯ÊýÃû³Æ : zAti_GetCmdLen

-* ¹¦ÄÜÃèÊö : »ñÈ¡ÃüÁî´®³¤¶ÈºÍ·ÖºÅλÖÃ

-* ²ÎÊý˵Ã÷£º (IN)£º 

-*            pbSrcStr       Êý¾Ý

-*            pwSrcStrLen       Êý¾Ý³¤¶È 

-*            ppCmdEnd   ·ÖºÅλÖÃ

-*            (OUT)£ºÎÞ

-* ·µ »Ø Öµ£º 

-* ÆäËü˵Ã÷£º ÎÞ

-**************************************************************************/

-VOID __ps_static_func zAti_GetCmdLen(BYTE *pbSrcStr, WORD *pwSrcStrLen, BYTE **ppCmdEnd)

-{

-    BYTE *pStrStart    = pbSrcStr;

-    BYTE *pStrEnd      = NULL;

-    BYTE *pStrPos      = NULL;

-    WORD wCharNum      = 0;

-    BYTE bCount        = 0;

-    pStrEnd = (BYTE *)strstr((char *)pbSrcStr, ";");

-    *ppCmdEnd = pStrEnd;

-

-    while (pStrEnd != NULL)

-    {

-        bCount = 0;

-        pStrPos = (BYTE *)strstr((char *)pStrStart, "\"");

-        if ((pStrPos == NULL) ||(pStrPos > pStrEnd))

-        {

-            *pwSrcStrLen = (WORD)(pStrEnd - pbSrcStr);

-            return ;

-        }

-        for (wCharNum=0; wCharNum < pStrEnd - pStrPos; wCharNum++)

-        {

-            if (pStrPos[wCharNum] == '\"')

-            {

-                bCount++;

-            }

-        }

-        if ((bCount % 2) != 0)

-        {

-            pStrStart = pStrEnd;

-            pStrPos = (BYTE *)strstr((char *)pStrStart, "\"");

-            if (pStrPos == NULL)

-            {

-                *pwSrcStrLen = (WORD)(pStrEnd - pbSrcStr);

-                return ;

-            }

-            pStrStart = pStrPos + 1;

-            pStrEnd = (BYTE *)strstr((char *)pStrStart, ";");

-            *ppCmdEnd = pStrEnd;

-        }

-        else

-        {

-            *pwSrcStrLen = (WORD)(pStrEnd - pbSrcStr);

-            return ;

-        }

-

-    }

-    

-    return;

-}

-

-/**************************************************************************

-* º¯ÊýÃû³Æ : zAti_GetCmdStr

-* ¹¦ÄÜÃèÊö : ÓÃ; ¶Ô¶àÌõÃüÁî½øÐзָî

-* ²ÎÊý˵Ã÷£º (IN)£º 

-*            pDataPtr       Êý¾Ý

-*            iDataLen       Êý¾Ý³¤¶È 

-*            (OUT)£ºÎÞ

-* ·µ »Ø Öµ£º Z_SUCC ¡¢

-* ÆäËü˵Ã÷£º ÎÞ

-**************************************************************************/

-VOID __ps_static_func zAti_GetCmdStr(BYTE * pbOneCmdStr, T_ZAti_Buffer  *ptBuff, WORD * pwOffset)

-{

-    BYTE * pCmdStart     = ptBuff->arrData+(*pwOffset);

-    BYTE * pCmdEnd       = NULL;

-    WORD  wCmdLen       = 0;

-

-    wCmdLen = ptBuff->iLength - (*pwOffset);

-    zAti_GetCmdLen(pCmdStart, &wCmdLen, &pCmdEnd);

-

-    if(pCmdEnd == NULL)

-    {

-        /* ×îºóÒ»ÌõÃüÁî*/

-        wCmdLen = ptBuff->iLength - (*pwOffset);

-        zOss_Memcpy(pbOneCmdStr, pCmdStart, wCmdLen);

-    }

-    else 

-    {

-        /* µ±µÚÒ»¸ö×Ö·ûÊÇ";" ʱ, ¿ÕÃüÁî,°´ÕÕ"AT"  ÃüÁî´¦Àí*/

-        if(wCmdLen > 0)

-        {

-            zOss_Memcpy(pbOneCmdStr, pCmdStart, wCmdLen);

-            pbOneCmdStr[ZAT_LONG_CMD_LEN - 3] = '\0';

-        }

-

-        // ATD or AT+ZREDIAL ÃüÁîºó¿ÉÒÔ¸úÒ»¸ö; ºÅ     for VoLTE

-        if(pCmdEnd[1] == ';' || pCmdEnd[1] == '\0')

-        {

-            if(pbOneCmdStr[0] == 'D' || strstr((char *)pbOneCmdStr, "ZREDIAL")) // ....Ôö¼ÓÅжϣ¬²Á³ýºóÐøÃüÁî

-            {

-                pbOneCmdStr[wCmdLen++] = ';';

-            }

-        }

-    }

-    

-    *(pbOneCmdStr + wCmdLen) = '\0';

-    *pwOffset += wCmdLen+1;

-    return;

-}

-VOID __ps_static_func zAti_SkipLastComma(BYTE *pbAtCmd)

-{

-    WORD wCmdStrLen = (WORD)strlen((const char *)pbAtCmd);

-    WORD wLen = wCmdStrLen;

-

-    for (wLen = wCmdStrLen; wLen > 0; wLen--)

-    {

-        if (*(pbAtCmd + wLen) == '\0' && (*(pbAtCmd + wLen - 1) == ','))

-        {

-            *(pbAtCmd + wLen - 1) = '\0';

-        }

-        else

-        {

-            break;

-        }

-    }

-    return;

-}

-/**************************************************************************

-* º¯ÊýÃû³Æ : zAti_DepartAtCmd

-* ¹¦ÄÜÃèÊö : ·ÖÀëÃüÁî

-* ²ÎÊý˵Ã÷£º (IN)£º 

-*            pDataPtr       Êý¾Ý

-*            iDataLen       Êý¾Ý³¤¶È 

-*            (OUT)£ºÎÞ

-* ·µ »Ø Öµ£º ÎÞ

-* ÆäËü˵Ã÷£º ÎÞ

-**************************************************************************/

-BYTE __ps_static_func zAti_DepartAtCmd(T_ZAti_ChannelInfo *pChnelNode)

-{

-    BYTE *pbAtCmd = (BYTE *)zAti_GetUB(ZAT_LONG_CMD_LEN);

-    WORD wOffset           = 0;       // Ïà¶ÔÓÚpChnelNode->atBuff.arrData ¿ªÍ·µÄÆ«ÒÆÁ¿£¬·ÖÀë×Ö·û´®µÄ¿ªÊ¼Î»ÖÃ

-    strcpy((char*)pbAtCmd, "AT");/*·ÖÀëºóµÄÿÌõÃüÁîǰ¶¼ÓÐ"AT" ǰ׺*/

-    

-    // Ï·¢µÄÃüÁî´®Ó¦¸ÃÒÔ"AT"¿ªÍ·£¬·ñÔò±¨´í

-    if(ZAT2_UPCASE(pChnelNode->atBuff.arrData[0]) == 'A' && ZAT2_UPCASE(pChnelNode->atBuff.arrData[1]) == 'T')

-    {

-        wOffset += 2;

-        if(pChnelNode->atBuff.iLength == 2) // µ¥"AT" ÃüÁî

-        {

-            zAti_AddOneCmd(pChnelNode, pbAtCmd); 

-            pChnelNode->atBuff.iLength = 0;

-            zOss_Memset(pChnelNode->atBuff.arrData, 0, ZATI2_BUFFER_LENGTH);

-            zAti_RetUB((VOID**)&pbAtCmd);

-            return Z_SUCC;

-        }

-

-        while(wOffset < pChnelNode->atBuff.iLength)

-        {

-            zAti_GetCmdStr(pbAtCmd+2, &(pChnelNode->atBuff), &wOffset);

-            zAti_SkipLastComma(pbAtCmd);

-            zAti_AddOneCmd(pChnelNode, pbAtCmd);

-        }

-

-        pChnelNode->atBuff.iLength = 0;

-        zOss_Memset(pChnelNode->atBuff.arrData, 0, ZATI2_BUFFER_LENGTH);

-        zAti_RetUB((VOID**)&pbAtCmd);

-        return Z_SUCC;

-    }

-    else

-    {

-        zAti_CmdDirectReply(pChnelNode, ZAT2_CMD_SYNTAX_ERR);

-        

-        pChnelNode->atBuff.iLength = 0;

-        zOss_Memset(pChnelNode->atBuff.arrData, 0, ZATI2_BUFFER_LENGTH);

-        zAti_RetUB((VOID**)&pbAtCmd);

-        return Z_FAIL;

-    }

-}

-/**************************************************************************

-* º¯ÊýÃû³Æ : zAt_IsAbortCmdMsg

-* ¹¦ÄÜÃèÊö : ÅжÏÊÇ·ñÊÇ¿ÉÖжÏÏûÏ¢

-* ²ÎÊý˵Ã÷£º (IN)£º 

-*            CmdId :       

-*            (OUT)£ºÎÞ

-* ·µ »Ø Öµ£º ÎÞ

-* ÆäËü˵Ã÷£º ÎÞ

-**************************************************************************/

-BYTE zAti_IsAbortCmdMsg(T_ZAti_ChannelInfo *pChnelNode)

-{

-    T_ZAt2_CmdIdType CmdId = pChnelNode->cmd_id;

-    if ((ZAT2_MM_COPS == CmdId) || (ZAT2_CC_D == CmdId) || (ZAT2_CC_A == CmdId) || (ZAT2_SM_D == CmdId) 

-        || (ZAT2_SM_A == CmdId) || (ZAT2_SM_CGACT == CmdId) || (ZAT2_SM_CGDATA == CmdId) 

-        || (ZAT2_SM_CGANS == CmdId) || (ZAT2_SMS_CMGS == CmdId) || (ZAT2_SMS_CMGC == CmdId) 

-        || (ZAT2_SMS_CMSS == CmdId) || (ZAT2_SS_CCWA == CmdId||ZAT2_SMS_ZMGS == CmdId)

-        || (ZAT2_LTE_ZGACT== CmdId) || (ZAT2_MM_BGLTEPLMN == CmdId||ZAT2_SMS_SMRS==CmdId)

-        || (ZAT2_SS_CLCK == CmdId && pChnelNode->iEvId == ATI_DISTRIBUTE_FUNC_CLCK_SET_REQ_EV)

-        || (ZAT2_MM_ZPLMNBAND== CmdId) || (ZAT2_MM_ZNCELLINFO== CmdId) || (ZAT2_MM_ZCOPS== CmdId)

-        || (ZAT2_MM_ZSCAN == CmdId) || (ZAT2_MM_ZSCISCAN == CmdId) || (ZAT2_MM_ZNECQ == CmdId))

-    {

-        pChnelNode->iEvId = ZATI2_INVAL_EVID; /* »¹Ô­ */

-        return TRUE;

-    }

-    else

-    {

-        return FALSE;

-    }

-}

-

-/**************************************************************************

-* º¯ÊýÃû³Æ : zAti_AtCmdAbortReq

-* ¹¦ÄÜÃèÊö : ÖжÏÏûÏ¢´¦Àí£¬²»ÔÙ½øÐзַ¢£¬µ¥¶À´¦Àí

-* ²ÎÊý˵Ã÷£º (IN)£º 

-*            CmdId :       

-*            (OUT)£ºÎÞ

-* ·µ »Ø Öµ£º ÎÞ

-* ÆäËü˵Ã÷£º ÎÞ

-**************************************************************************/

-VOID zAti_AtCmdAbortReq(T_ZAti_ChannelInfo *pChnelNode)

-{

-    BYTE bDesMdl = 0xFF;

-    DWORD bAbortMsgInfo [][2] = {

-        {MMIA_CC_ABORT_REQ_EV,         Z_ATI_TASKID_CC},     //Z_PSMDL_CC 1

-        {MMIA_SMS_ABORT_MO_REQ_EV,     Z_ATI_TASKID_SMS},   // Z_PSMDL_SMS 2

-        {MMIA_SS_ABORT_REQ_EV,         Z_ATI_TASKID_SS},     // Z_PSMDL_SS 3

-        {MMIA_SM_ABORT_REQ_EV,         Z_ATI_TASKID_SM},    // Z_PSMDL_SM 4

-        {MMIA_UMM_ABORT_REQ_EV,        Z_ATI_TASKID_UMM},  // Z_PSMDL_UMM 5

-        {MMIA_SM_ABORT_REQ_EV,         Z_ATI_TASKID_ESM},  // Z_PSMDL_ESM 6

-    };

-

-    T_zApMmia_Abort_Req  *ptApReq   = (T_zApMmia_Abort_Req*)zAti_GetUB(sizeof(T_zApMmia_Abort_Req));

-    ptApReq->bSrcIndex  = pChnelNode->iSrcIndex;

-    ptApReq->bDesIndex = pChnelNode->iDestIndex;

-

-    if (0xff == ptApReq->bDesIndex)

-    {

-        if(pChnelNode->cmd_id == ZAT2_SMS_CMSS && g_zAti_ptData->abChMdlTable[ptApReq->bSrcIndex] != Z_PSMDL_SMS)

-        {

-            g_zAti_ptData->abChMdlTable[ptApReq->bSrcIndex] = Z_PSMDL_PB;

-        }

-        bDesMdl = g_zAti_ptData->abChMdlTable[ptApReq->bSrcIndex];

-    }

-    else

-    {

-        bDesMdl   = (ptApReq->bDesIndex & 0xf0) >> 4;

-    }

-

-    if(bDesMdl < Z_PSMDL_CC || bDesMdl > Z_PSMDL_ESM)

-    {

-        // ²»×öÆäËû´¦Àí

-        zAti_SendExpt2TraceAgt(ERR_InvalidMsg,  TRACE_ERR_LEVEL_NORMAL,"");

-        zAti_RetUB((VOID **)&ptApReq);

-    }

-    else

-    {

-        // ʧ°ÜºóÄÚ´æÔÚzAti_MsgSendÄÚÊÍ·Å

-        zAti_MsgSend(bAbortMsgInfo[bDesMdl-1][0],  (PBYTE)ptApReq, sizeof(T_zApMmia_Abort_Req), (BYTE) bAbortMsgInfo[bDesMdl-1][1]);

-    }

-    return;

-}

-

-/**************************************************************************

-* º¯ÊýÃû³Æ : zAti_ProcChnelConflict

-* ¹¦ÄÜÃèÊö : ͨµÀ³åÍ»´¦Àí

-* ²ÎÊý˵Ã÷£º (IN)£º 

-*            pDataPtr       Êý¾Ý

-*            iDataLen       Êý¾Ý³¤¶È 

-*            (OUT)£ºÎÞ

-* ·µ »Ø Öµ£º ÎÞ

-* ÆäËü˵Ã÷£º ÎÞ

-**************************************************************************/

-VOID zAti_ProcChnelConflict(T_ZAti_ChannelInfo *pChnelNode)

-{

-    /* ¶àÌõÃüÁî³åÍ»´¦ÀíÓÐÎÊÌ⣬ֱ½Ó»Ø¸´6000, 

-        µ¥ÌõÃüÁîÖзǿÉÖжÏÃüÁֱ½Ó»Ø¸´6000,

-        µ¥ÌõÃüÁîÖпÉÖжÏÃüÁ·¢ÆðÖжÏÇëÇó*/

-    if (zAti_IsMultiCmd(pChnelNode)  || (!zAti_IsAbortCmdMsg(pChnelNode)) )

-    {

-        zAti_CmdDirectReply(pChnelNode, ZAT2_CMD_CONFLICT);

-    }

-    else

-    {

-       zAti_AtCmdAbortReq(pChnelNode);

-    }

-    return;

-}

-

-/**************************************************************************

-* º¯ÊýÃû³Æ : zAti_IsDirectReplyCmd

-* ¹¦ÄÜÃèÊö : »ñȡʧ°ÜÐÅÏ¢

-* ²ÎÊý˵Ã÷£º (IN)£º 

-*            pDataPtr       Êý¾Ý

-*            iDataLen       Êý¾Ý³¤¶È 

-*            (OUT)£ºÎÞ

-* ·µ »Ø Öµ£º TRUE , FALSE

-* ÆäËü˵Ã÷£º ÎÞ

-**************************************************************************/

-BOOL __ps_static_func zAti_IsDirectReplyCmd(CHAR * pbStrCmd)

-{    

-    return (strcmp((const char *)pbStrCmd, "AT") == 0 ||

-        strcmp((const char *)pbStrCmd, "ATQ0E0V1") == 0 ||

-        //strcmp((const char *)pbStrCmd, "ATS0=0") == 0 ||

-        strcmp((const char *)pbStrCmd, "ATH E1") == 0 ||

-        strcmp((const char *)pbStrCmd, "ATE0V1") == 0 ||

-        strcmp((const char *)pbStrCmd, "ATE0Q0V1") == 0 );

-}

-

-/**************************************************************************

-* º¯ÊýÃû³Æ : zAti_GetDistributeMsgIdx

-* ¹¦ÄÜÃèÊö : »ñÈ¡½âÂë²ÎÊýº¯ÊýµÄϱê

-* ²ÎÊý˵Ã÷£º (IN)£º 

-*            pDecCmdInfo  : ½âÂëÐÅÏ¢

-*            (OUT)£º

-*             pMsgIdx   : ½âÂë²ÎÊýº¯ÊýÊý×éÖеÄϱê

-* ·µ »Ø Öµ£º ÕÒµ½·µ»ØZ_SUCC,  ûÓÐÕÒµ½·µ»ØZ_FAIL

-* ÆäËü˵Ã÷£º ÎÞ

-**************************************************************************/

-BYTE __ps_static_func zAti_GetCmd2MsgIdx(T_ZAt_DecCmdInfo *pDecCmdInfo, WORD *pCmd2MsgIdx)

-{

-    WORD wTabIdx = 0;

-    WORD wTabLen = g_zAt_Cmd2MsgTable_Len; //sizeof(g_zAt_Cmd2MsgTable) / sizeof(T_ZAt_Cmd2MsgTab);

-  

-    for (wTabIdx = 0; wTabIdx < wTabLen; wTabIdx++)

-    {

-        if ((g_zAt_Cmd2MsgTable[wTabIdx].cmdId == pDecCmdInfo->curCmdId) &&

-            (g_zAt_Cmd2MsgTable[wTabIdx].cmdOp == pDecCmdInfo->curCmdOp))

-        {

-            *pCmd2MsgIdx = wTabIdx;

-            return Z_SUCC;

-        }

-    }

-

-    return Z_FAIL;

-}

-

-/**************************************************************************

-* º¯ÊýÃû³Æ : zAti_DecCmd2Msg

-* ¹¦ÄÜÃèÊö : ½âÂëÃüÁî²ÎÊý£¬½«½âÂëºóµÄ½á¹û´æ´¢ÔڽṹÌåÖÐ

-* ²ÎÊý˵Ã÷£º (IN)£º 

-*            pDecCmdInfo  : ½âÂëÐÅÏ¢Ö¸Õë

-*            wCmd2MsgIdx  £º½âÂ뺯ÊýË÷Òý

-* ·µ »Ø Öµ£º T_ZAt_ParseCmd2MsgRslt 

-* ÆäËü˵Ã÷£º ÎÞ

-**************************************************************************/

-T_ZAt_ParseCmd2MsgRslt __ps_static_func zAti_DecCmd2Msg(T_ZAt_DecCmdInfo *pDecCmdInfo, WORD wCmd2MsgIdx)

-{

-    T_ZAt_ParseCmd2MsgRslt prsCmd2MsgRslt = {0};

-    if (g_zAt_Cmd2MsgTable[wCmd2MsgIdx].pDecFnc != NULL)

-    {

-        prsCmd2MsgRslt = g_zAt_Cmd2MsgTable[wCmd2MsgIdx].pDecFnc(pDecCmdInfo);

-

-        if ((pDecCmdInfo->curCmdId == ZAT2_SM_CGDATA) && (g_zAti_ptData->bSmOnlyL2PFlag == TRUE))

-        {

-            prsCmd2MsgRslt.iMsgId = 0;

-        }

-        else

-        {

-            prsCmd2MsgRslt.iMsgId = g_zAt_Cmd2MsgTable[wCmd2MsgIdx].iMsgId;

-        }

-

-        if ((pDecCmdInfo->curCmdId == ZAT2_SMS_CNMA)&& (zAt_GetSmsCmgfType() == ZAT2_CMGF_TEXT)

-            && (pDecCmdInfo->curCmdOp != ZAT2_CO_TEST_REQ))

-        {

-            prsCmd2MsgRslt.iMsgId = MMIA_SMS_REC_RSP_REQ_EV;

-        }

-    }

-    else

-    {

-        prsCmd2MsgRslt.decRslt2nd = ZAT2_CMD_UNREC;

-    }

-    return prsCmd2MsgRslt;

-}

-

-

-/**************************************************************************

-* º¯ÊýÃû³Æ : zAti_DecTestCmd

-* ¹¦ÄÜÃèÊö : ½âÂë²âÊÔÃüÁî

-* ²ÎÊý˵Ã÷£º (IN)£º 

-*            pDecCmdInfo  : ½âÂëÐÅÏ¢Ö¸Õë

-* ·µ »Ø Öµ£º T_ZAt_ParseCmd2MsgRslt 

-* ÆäËü˵Ã÷£º ÎÞ

-**************************************************************************/

-T_ZAt_ParseCmd2MsgRslt zAti_DecTestCmd(T_ZAt_DecCmdInfo *pDecCmdInfo)

-{

-    T_ZAt_ParseCmd2MsgRslt prsCmd2MsgRslt = {0};

-    

-    if (pDecCmdInfo->curCmdOp == ZAT2_CO_TEST_REQ)//testÃüÁîµÄ´¦Àí

-    {

-        UINT16 iIndex = zAt2_FindTestInfo(pDecCmdInfo->curCmdId);

-        if (g_zAt_CmdHd2IdTable[iIndex].strTestInfo[0] != 0)

-        {

-            sprintf((char *)g_zAt_EncBuf, "%s%s%s%s", g_zAt_CRLF, g_zAt_CmdHd2IdTable[iIndex].strTestInfo, g_zAt_CRLF, g_zAt_OK);

-        }

-        else

-        {

-            zOss_Memcpy(g_zAt_EncBuf, g_zAt_OK, strlen((const char *)g_zAt_OK));

-        }

-        prsCmd2MsgRslt.decRslt2nd = ZAT2_CMD_REPLY_DIRECT;

-        if (strlen((const char *)pDecCmdInfo->strParam) != 0)

-        {

-            zOss_Memset(g_zAt_EncBuf, 0, ZAT_LONG_CMD_LEN); 

-            prsCmd2MsgRslt.decRslt2nd = ZAT2_CMD_SYNTAX_ERR;

-        }

-    }

-    else

-    {

-        prsCmd2MsgRslt.decRslt2nd = ZAT2_CMD_UNREC;

-    }

-

-    return prsCmd2MsgRslt;

-}

-/**************************************************************************

-* º¯ÊýÃû³Æ : zAti_GetMsgInfo

-* ¹¦ÄÜÃèÊö : »ñÈ¡ÏûÏ¢µÄÃû³Æ¡¢½á¹¹Ìå 

-* ²ÎÊý˵Ã÷£º (IN)£º 

-*            pDataPtr       Êý¾Ý

-*            iDataLen       Êý¾Ý³¤¶È 

-*            (OUT)£ºÎÞ

-* ·µ »Ø Öµ£º ÎÞ

-* ÆäËü˵Ã÷£º ÎÞ

-**************************************************************************/

-T_ZAt_ParseCmd2MsgRslt __ps_static_func zAti_GetMsgInfo(T_ZAt_DecCmdInfo *pDecCmdInfo)

-{

-    /* ÈôµÚ1²½½âÎöÕýÈ·£¬Ôò¸ù¾ÝµÃµ½µÄcmdIdºÍcmdOp²éÕÒ¶ÔÓ¦µÄmsgId,²¢µ÷ÓýâÂë´¦Àí×Óº¯Êý */

-    WORD wCmd2MsgIdx = 0;

-    if(zAti_GetCmd2MsgIdx(pDecCmdInfo, &wCmd2MsgIdx) == Z_SUCC)

-    {

-        return zAti_DecCmd2Msg(pDecCmdInfo, wCmd2MsgIdx);

-    }

-    else

-    {

-        return zAti_DecTestCmd(pDecCmdInfo);

-    }

-}

-

-/********************************* LTE GoTa *******************************/

-/**************************************************************************

-* º¯ÊýÃû³Æ : zAti_IsGotaReplyOK

-* ¹¦ÄÜÃèÊö : ÅжÏÊÇ·ñÊÇ·¢ÏûÏ¢³É¹¦ºóÐèÒªÖ±½Ó»Ø¸´OKµÄÏûÏ¢

-* ²ÎÊý˵Ã÷£º (IN)£º 

-*        

-*            (OUT)£ºÎÞ

-* ·µ »Ø Öµ£º true,false

-* ÆäËü˵Ã÷£º ¼¯ÈººêÔÚº¯ÊýÄÚÓÃ

-**************************************************************************/

-BOOL __ps_static_func zAti_IsGotaReplyOK(DWORD dwMsgId)

-{

-    //ÔÚÕâÀï¼Ó¼¯Èººê¿ØÖÆ

-#ifdef BTRUNK_SUPPORT

-

-    if (dwMsgId == ATI_TSM_REG_REQ_EV ||dwMsgId == ATI_TSM_CALL_REQ_EV

-        ||dwMsgId == ATI_TSM_CALLCONFIRM_REQ_EV ||dwMsgId == ATI_TSM_CALLCONNECT_REQ_EV

-        ||dwMsgId == ATI_TSM_CALLRLS_REQ_EV ||dwMsgId == ATI_TSM_FLOOR_REQ_EV

-        ||dwMsgId == ATI_TSM_FLOORRLS_REQ_EV ||dwMsgId == ATI_TSM_SCANGROUPINFO_REQ_EV

-        ||dwMsgId == ATI_TSM_SCANSWITCH_REQ_EV ||dwMsgId == ATI_TSM_SHAKEHAND_REQ_EV

-        ||dwMsgId == ATI_TSM_SHORT_DATA_REQ_EV ||dwMsgId == ATI_TSM_LOCATINFO_REQ_EV

-        ||dwMsgId == ATI_TSM_SETABILITY_REQ_EV ||dwMsgId == ATI_TSM_STUNINFO_QUERY_REQ_EV

-        ||dwMsgId == ATI_TSM_GROUPINFO_QUERY_REQ_EV ||dwMsgId == ATI_TSM_CALLFORWARD_REQ_EV

-        ||dwMsgId == PTT_MMIA_ESM_TAUTYPE_REQ_EV ||dwMsgId == ATI_TSM_CALLMODIFY_RSP_EV

-        ||dwMsgId == ATI_TSM_CALLMODIFY_REJ_EV)

-    {

-        return TRUE;

-    }

-#endif

-

-    return FALSE;

-

-}

-

-/**************************************************************************

-* º¯ÊýÃû³Æ : zAti_ProcCmdMsg

-* ¹¦ÄÜÃèÊö : ´¦ÀíÒ»ÌõÃüÁî½âÂëºóµÄÏûÏ¢

-* ²ÎÊý˵Ã÷£º (IN)£º 

-*            pDataPtr       Êý¾Ý

-*            iDataLen       Êý¾Ý³¤¶È 

-*            (OUT)£ºÎÞ

-* ·µ »Ø Öµ£º ÎÞ

-* ÆäËü˵Ã÷£º ÎÞ

-**************************************************************************/

-T_zAti_DecResultType __ps_static_func zAti_ProcCmdMsg(DWORD dwMsgId, BYTE *pbMsgBody, WORD wMsgLen, T_ZAti_ChannelInfo *pChnelNode)

-{

-    BYTE          destTask    = 0;

-    WORD          wIdx        = 0;

-    DWORD         dwResult    = Z_APMMIA_OPTNOTSPT_ERR;

-    zAti_GetServerIndex(dwMsgId, (BYTE *)pbMsgBody, pChnelNode);

-#ifdef USE_VOICE_SUPPORT

-    if(!zAti_CcMsgProc(&dwMsgId, pbMsgBody, &wMsgLen, pChnelNode)) /* ¸ù¾ÝͨµÀÑ¡ÔñÔ´¡¢Ä¿µÄË÷ÒýºÅ */

-    {

-        zAti_RetUB((VOID **)&pbMsgBody);

-        return ZATI_DEC_ERROR;

-    }

-#endif

-    // ·ÖÀà´¦ÀíÏûÏ¢

-    if (zAti_GetAtMemMsgIdx(dwMsgId , &wIdx) == Z_SUCC)

-    {

-        dwResult = zAti_ProcAtMemMsg(wIdx , pbMsgBody, wMsgLen, pChnelNode);

-        if(dwResult == Z_APMMIA_NORESULT )

-        {

-             zAti_RetUB((VOID * *) &pbMsgBody);

-        }

-    }

-    else if (zAti_GetDistributeMsgIdx(dwMsgId , &wIdx) == Z_SUCC)

-    {

-        dwResult = zAti_ProcDistributeMsg(wIdx , pbMsgBody, wMsgLen, pChnelNode);

-        //ÏòÏ·¢Ë͵ÄÏûÏ¢£¬ÐèÒªÖØÐÂÉêÇë¿Õ¼ä

-        //·¢Ëͳɹ¦ºó´Ë´¦Ìí¼Ó pbMsgBody ÊÍ·Å´úÂ룬 

-        if(dwResult == Z_APMMIA_NORESULT )

-        {

-             zAti_RetUB((VOID * *) &pbMsgBody);

-        }

-    }

-    else if (zAti_GetTransmitMsgTaskId(dwMsgId , &destTask) == Z_SUCC)

-    {

-        dwResult = zAti_RrocTransmitMsg(dwMsgId , pbMsgBody, wMsgLen, pChnelNode, destTask);

-

-#ifdef CXT_MOV

-        if(dwResult != Z_APMMIA_NORESULT && dwMsgId == MMIA_SM_CONTEXT_REQ_EV)

-        {

-            // Ë«´ý°áǨÈç¹û·¢ËÍʧ°Ü,Çå¿ÕÏà¹ØÈ«¾Ö

-            zAti_ClearPsMovStat();

-        }

-#endif

-    }

-

-    // ´¦Àí·µ»ØÖµ

-    if( dwResult == Z_APMMIA_NOERROR_ERR)

-    {

-        zAti_RetUB((VOID **)&pbMsgBody);

-        if(dwMsgId !=AP_MMIA_CPOL_QUERY_REQ_EV && dwMsgId != AP_MMIA_FPLMN_QUERY_REQ_EV

-            && (dwMsgId != AP_MMIA_ZOPERLTEBAND_QUERY_REQ_EV))

-        {

-            zAti_CmdDirectReply(pChnelNode, ZAT2_CMD_REPLY_DIRECT);

-        }

-        return ZATI_DEC_INNER_OK;

-    }

-    else if ( dwResult == Z_APMMIA_NORESULT )

-    {  

-        // Ï·¢³É¹¦ºó£¬Ö±½Ó»Ø¸´OK

-        if (dwMsgId == MMIA_EUCSR_LTEINFO_REQ_EV || dwMsgId == MMIA_UMM_CS_SRV_CNF_EV || 

-            dwMsgId == MMIA_CC_ANS_MODE_REQ_EV || dwMsgId == MMIA_CC_DIS_MODE_REQ_EV 

-            ||dwMsgId == MMIA_UMM_IMS_REGISTER_STATES_EV || dwMsgId == MMIA_CC_STATE_REQ_EV

-            ||dwMsgId == AP_UICC_AIR_AUTH_RSP_IND_EV

-            || dwMsgId == MMIA_CC_OPEN_VOICECHNL_REQ_EV

-            || dwMsgId == MMIA_CC_SRVCC_NOTOPEN_VOICECHNL_REQ_EV

-            || dwMsgId == MMIA_AS_EM_LTE_HO_SET_REQ_EV

-            || dwMsgId == MMIA_CC_MOC_REQ_EV

-       /************** LTE GoTaÄ£¿é Ï·¢³É¹¦ºó£¬Ö±½Ó»Ø¸´OK*********************/

-        ||zAti_IsGotaReplyOK(dwMsgId))

-        {

-            zAti_ReplyOK(pChnelNode);

-            return ZATI_DEC_INNER_OK;

-        }

-        return ZATI_DEC_OUTER_OK;

-    }

-    else  // ´íÎó´¦Àí

-    {         

-        zAti_RetUB((VOID **)&pbMsgBody);

-        zAti_ProcError(pChnelNode, dwResult);

-        return ZATI_DEC_ERROR;

-    }

-}

-

-

-/**************************************************************************

-* º¯ÊýÃû³Æ : zAti_DecCmd

-* ¹¦ÄÜÃèÊö : ´¦ÀíÒ»ÌõÃüÁî

-* ²ÎÊý˵Ã÷£º (IN)£º 

-*            pDataPtr       Êý¾Ý

-*            iDataLen       Êý¾Ý³¤¶È 

-*            (OUT)£ºÎÞ

-* ·µ »Ø Öµ£º ÎÞ

-* ÆäËü˵Ã÷£º ÎÞ

-**************************************************************************/

-T_zAti_DecResultType __ps_static_func zAti_DecCmd(T_ZAti_ChannelInfo *pChnelNode)

-{

-    T_ZAt_DecCmdInfo *pdecCmdInfo = ZOSS_NULL;                          /* Used to store info of the 1st-step-parsing */

-    T_ZAt_ParseCmd2MsgRslt prsCmd2MsgRslt = {0}; /* Used to store info of the 2nd-step-parsing */

-

-    BYTE *pbStrCmd = zAti_GetFirstCmd(pChnelNode);

-    if(zAti_IsDirectReplyCmd((CHAR *)pbStrCmd))

-    {

-        zAti_SendEncData(pChnelNode, (BYTE *)g_zAt_OK, ZATI_INVALID_MSGID, NULL);        

-        return ZATI_DEC_INNER_OK;

-    }

-

-    g_zAti_ptData->ptCmdInputInfo = &pChnelNode->cmdInputInfo;

-    zOss_Memset(g_zAt_EncBuf, 0, ZAT_LONG_CMD_LEN);

-

-    pdecCmdInfo = (T_ZAt_DecCmdInfo *)zAti_GetUB(sizeof(T_ZAt_DecCmdInfo));

-

-    /* µÚ1²½: ½âÎöÃüÁîÍ·£¬²Ù×÷·½Ê½£¬È·¶¨¶ÔÓ¦µÄÏûÏ¢±êʶ */

-    zAt_ParseCmdStr(pChnelNode->cmd_id, pChnelNode->cmd_op, pChnelNode->iChnelId, (CHAR *)pbStrCmd, pdecCmdInfo);

-    if (ZAT2_CMD_PARSE_OK == pdecCmdInfo->decRslt1st)

-    {

-        /* µÚ2²½: ¸ù¾ÝµÚÒ»²½½âÎö½á¹û£¬µÃµ½ÏûÏ¢µÄÃû³Æ¡¢½á¹¹Ìå */

-        prsCmd2MsgRslt = zAti_GetMsgInfo(pdecCmdInfo);

-    }

-    else

-    {

-        prsCmd2MsgRslt.decRslt2nd = pdecCmdInfo->decRslt1st;

-    }

-

-    if (ZAT2_CMD_PARSE_OK == prsCmd2MsgRslt.decRslt2nd)

-    {

-        /* ½âÂë³É¹¦£¬´«³öÏûÏ¢ID¼°³¤¶È£¬¸üÐÂͨµÀ״̬ */

-        pChnelNode->cmd_id = pdecCmdInfo->curCmdId;

-        pChnelNode->cmd_op = pdecCmdInfo->curCmdOp;

-        

-        zAti_RetUB((VOID **)&pdecCmdInfo);

-        

-        return zAti_ProcCmdMsg(prsCmd2MsgRslt.iMsgId, (BYTE *)prsCmd2MsgRslt.pMsgBody,  prsCmd2MsgRslt.iMsgLen, pChnelNode);  

-    } 

-    else if (ZAT2_CMD_REPLY_DIRECT == prsCmd2MsgRslt.decRslt2nd)

-    {

-        zAti_RetUB(&prsCmd2MsgRslt.pMsgBody);

-        zAti_CmdDirectReply(pChnelNode, prsCmd2MsgRslt.decRslt2nd);

-        zAti_RetUB((VOID **)&pdecCmdInfo);

-        return ZATI_DEC_INNER_OK;

-    }

-    else  // ´íÎó´¦Àí

-    {

-        zAti_RetUB(&prsCmd2MsgRslt.pMsgBody);

-        zAti_CmdDirectReply(pChnelNode, prsCmd2MsgRslt.decRslt2nd);

-

-        //ATD´¥·¢µÄPPP²¦ºÅ£¬Á½¸öÃüÁîÒ»Æð·¢Ê±£¬ÓÐÒ»¸ö´íÎó£¬Òª½«Ç°Ã沦ºÅÇåµô

-        if (pdecCmdInfo->curCmdId == ZAT2_SM_ZGPCOAUTH

-            || pdecCmdInfo->curCmdId == ZAT2_SM_CGACT)

-        {

-            zAti_HandlePppProcCmdError();

-        }

-        zAti_RetUB((VOID **)&pdecCmdInfo);

-        return ZATI_DEC_ERROR;

-    }

-}

-

-

-/**************************************************************************

-* º¯ÊýÃû³Æ : zAti_DecMultiCmd

-* ¹¦ÄÜÃèÊö : ´¦Àí¶àÌõÃüÁî

-* ²ÎÊý˵Ã÷£º (IN)£º 

-*            pDataPtr       Êý¾Ý

-*            iDataLen       Êý¾Ý³¤¶È 

-*            (OUT)£ºÎÞ

-* ·µ »Ø Öµ£º ÎÞ

-* ÆäËü˵Ã÷£º ÎÞ

-**************************************************************************/

-VOID __ps_static_func zAti_DecMultiCmd(T_ZAti_ChannelInfo * pChnelNode)

-{

-    T_zAti_DecResultType  eDecRltType = ZATI_DEC_ERROR;

-

-    

-    while(zAti_HasMoreCmd(pChnelNode))

-    {

-        /* ÔÚ¿ªÊ¼½âÂëǰ£¬Í¨µÀÓ¦¸ÃÊǿյÄ,֮ǰ»º´æµÄÄÚÈÝÒ²Ó¦´¦ÀíÍê±Ï */

-        pChnelNode->cmd_id = ZAT2_NO_COMMAND;

-        pChnelNode->cmd_op = ZAT2_CO_INVALID;

-

-        eDecRltType = zAti_DecCmd(pChnelNode);

-        if(eDecRltType == ZATI_DEC_INNER_OK)

-        {            

-            zAti_RemoveOneCmd(pChnelNode);

-        }

-        else if(eDecRltType == ZATI_DEC_OUTER_OK)

-        {

-            break;

-        }

-        else  // ZATI_DEC_ERROR

-        {

-            zAti_RemoveALLCmd(pChnelNode);

-            break;

-        }

-    }

-    return;

-}

-

-

-BOOL __ps_static_func zAti_IsOnlyRefCmd(CHAR * pbStrCmd)

-{

-    if(strstr((const char *)pbStrCmd, "AT+ZCONSTAT") != NULL

-        || strstr((const char *)pbStrCmd, "AT+ZSET=\"STANDMODE\"") != NULL

-       ||strstr((const char *)pbStrCmd, "AT+CFUN=0") != NULL

-       ||strstr((const char *)pbStrCmd, "AT+CGSN=") != NULL

-       ||strstr((const char *)pbStrCmd, "AT+CFUN=1,1") != NULL

-       ||strstr((const char *)pbStrCmd, "AT+ZCHNELSET") != NULL)

-    {

-        return TRUE;

-    }

-    return FALSE;

-}

-#ifdef DSDS_VSIM

-BOOL __ps_static_func zAti_IsVsimDualCardInit(CHAR * pbStrCmd)

-{

-    if((g_zAti_CurInstance == Z_ATI_INSNO_2 && strstr((const char *)pbStrCmd, "AT+CFUN=1") != NULL 

-       && strstr((const char *)pbStrCmd, "AT+CFUN=1,1") == NULL) || (g_zAti_CurInstance == Z_ATI_INSNO_1))

-    {

-        return TRUE;

-    }

-    return FALSE;

-}

-#endif

-/**************************************************************************

-* º¯ÊýÃû³Æ : zAti_ProcessPsMovStatCmd

-* ¹¦ÄÜÃèÊö : ´¦ÀíÔÚ°áǨ¹ý³ÌÖÐÉϲ㷢Ë͵ÄÃüÁî

-* ²ÎÊý˵Ã÷£º (IN)£º 

-*                  pChnelNode    ͨµÀ½Úµã

-* ·µ »Ø Öµ£º ÎÞ

-* ÆäËü˵Ã÷£º ÎÞ

-**************************************************************************/

-#ifdef CXT_MOV

-VOID zAti_ProcessCmdInPsMovStat(T_ZAti_ChannelDataBuf *recvCmdInd, T_ZAti_ChannelInfo *pChnelNode)

-{

-    if ((ZAT2_NO_COMMAND != pChnelNode->cmd_id && ZAT2_CO_INVALID != pChnelNode->cmd_op)

-        ||pChnelNode->IsCmdStored)/*µ±Ç°Í¨µÀ²»¿ÕÏлòÕßÒѾ­»º´æ*/

-    {

-        zAti_SendExpt2TraceAgt(ERR_InvalidMsg,  TRACE_ERR_LEVEL_NORMAL,"");

-        zAti_CmdDirectReply(pChnelNode, ZAT2_CMD_CONFLICT);

-        return;

-    }

-

-    /* ½«ATÃüÁî±£´æµ½ATI»º´æÖÐÈ¥,ÈôÔ½½çÔòÖ±½Ó·µ»Ø"ERROR" */ 

-    if(zAti_StoreAtCmd(recvCmdInd, pChnelNode) == Z_FAIL)

-    {

-        return;

-    }

-

-    if(zAti_DepartAtCmd(pChnelNode) == Z_FAIL)

-    {

-        return;

-    }

-

-    pChnelNode->IsCmdStored = TRUE;

-    return;

-}

-#endif

-#ifdef USE_VOICE_SUPPORT

-BOOL __ps_static_func zAti_ZredialHandle(T_ZAti_ChannelDataBuf *recvCmdInd, T_ZAti_ChannelInfo *pChnelNode)

-{

-    /*ÃüÁîºóÃæÒªÐ¯´øºÅÂëÇÒ²»¿¼ÂÇ´íÎóµÄÃüÁî×Ö·û´®µÄÇé¿ö*/

-    BYTE * pZredial = (BYTE *)strstr((char *)recvCmdInd->strData, "AT+ZREDIAL=");

-    /*ͨµÀ²»¿ÕÏÐʱֱ½Ó»Ø¸´CEND*/

-    if (NULL != pZredial)

-    {

-        if(g_zAti_atDataEx[g_zAti_CurInstance].bCardInitiatedFlag == Z_ATI_CARDINIT_ING  ||

-           (ZAT2_NO_COMMAND != pChnelNode->cmd_id && ZAT2_CO_INVALID != pChnelNode->cmd_op))

-        {

-            zAti_DeliverCendInd();

-            return TRUE;

-        }

-    }

-    return FALSE;

-}

-#endif

-

-UINT32 __ps_static_func zAt_AutoTestInit(VOID)

-{

-    if (0!= (zOss_GetLteFlagInfo() & 0x8))

-    {

-        char pDataPtr[] = "AT+AUTOSTART=1\r\n";

-

-        while (zAti2_Open(73) != 0)

-        {

-            zOss_Sleep(100);

-        }

-        zAti2_Send(73, (UINT8 *)pDataPtr, strlen(pDataPtr), ZATI2_CHIND_AT);

-    }

-

-    return ZOSS_SUCCESS;

-}

-

-/**************************************************************************

-* º¯ÊýÃû³Æ : zAti_ProcessCmd

-* ¹¦ÄÜÃèÊö : ´¦ÀíÉϲ㷢À´µÄÃüÁî

-* ²ÎÊý˵Ã÷£º (IN)£º 

-*            pDataPtr       Êý¾Ý

-*            iDataLen       Êý¾Ý³¤¶È 

-*            (OUT)£ºÎÞ

-* ·µ »Ø Öµ£º ÎÞ

-* ÆäËü˵Ã÷£º ÎÞ

-**************************************************************************/

-VOID __ps_static_func zAti_ProcessCmd(T_ZAti_ChannelDataBuf      *recvCmdInd , T_ZAti_ChannelInfo *pChnelNode)

-{

-    // pChnelNode Ϊµ¥Ïîµ÷Óã¬Ò»¶¨²»Îª¿Õ£¬¿Éassert

-    // ͨµÀ״̬²»Îª¿Õ×öͨµÀ³åÍ» ´¦Àí

-    //µÚÒ»ÌõÃüÁîÒý·¢µÄ¿¨³õʼÕýÔÚ½øÐУ¬´ËʱͨµÀÖÐÎÞÃüÁֱ½Ó»Ø¸´6000 

-

-    if (g_zAti_atDataEx[g_zAti_CurInstance].bCardInitiatedFlag == Z_ATI_CARDINIT_ING )

-    {

-        if(pChnelNode->bIsCardIniting == TRUE)

-        {

-            zAti_CmdDirectReply(pChnelNode, ZAT2_CMD_CONFLICT);

-            return;

-        }

-    }

-

-    if ( ZAT2_NO_COMMAND != pChnelNode->cmd_id && ZAT2_CO_INVALID != pChnelNode->cmd_op)

-    {

-        zAti_ProcChnelConflict(pChnelNode);

-        return;

-    }

-

-    /* ½«ATÃüÁî±£´æµ½ATI»º´æÖÐÈ¥,ÈôÔ½½çÔòÖ±½Ó·µ»Ø"ERROR" */ 

-    if(zAti_StoreAtCmd(recvCmdInd, pChnelNode) == Z_FAIL)

-    {

-        return;

-    }

-

-    if(zAti_DepartAtCmd(pChnelNode) == Z_FAIL)

-    {

-        return;

-    }

-

-    if(!zAti_IsDirectReplyCmd((CHAR *)zAti_GetFirstCmd(pChnelNode))

-        && !zAti_IsOnlyRefCmd((CHAR *)zAti_GetFirstCmd(pChnelNode))

-        && zAti_IsNeedCardInit()

-        #ifdef DSDS_VSIM

-        && zAti_IsVsimDualCardInit((CHAR *)zAti_GetFirstCmd(pChnelNode))

-        #endif

-        )

-    {

-        // ÔÚÊÕµ½¿¨³õʼ»¯È·ÈÏÏûÏ¢ºó£¬ÐèÒª½øÐжàÌõÃüÁî´¦Àí

-        BYTE bInsNo = 0;

-        BYTE bSrcIndex    = (g_zAti_CurInstance == 0 ? ZATI2_CHANNEL_ID_NUM251 : ZATI2_CHANNEL_ID_NUM252);

-

-        bInsNo = ((g_zAti_CurInstance == Z_ATI_INSNO_1)? Z_ATI_INSNO_1 : Z_ATI_INSNO_2);

-        zAti_InitCard(bSrcIndex, Z_ATI_INVALID_BYTE);

-        zAti_CardInitFlgClr_SigCd(bInsNo, Z_ATI_CARDINIT_ING);

-        g_zAti_atDataEx[bInsNo].ptCardInitChnlOfFirstCmd = pChnelNode;

-

-        pChnelNode->bIsCardIniting = TRUE;

-        return;

-    }

-

-    zAti_DecMultiCmd(pChnelNode);

-    return;

-}

-

-/**************************************************************************

-* º¯ÊýÃû³Æ : zAti_ProcessSMSData

-* ¹¦ÄÜÃèÊö : ´¦ÀíÉϲ㷢À´µÄ¶ÌÏûÏ¢ÄÚÈÝ

-* ²ÎÊý˵Ã÷£º (IN)£º 

-*            pDataPtr       Êý¾Ý

-*            iDataLen       Êý¾Ý³¤¶È 

-*            (OUT)£ºÎÞ

-* ·µ »Ø Öµ£º ÎÞ

-* ÆäËü˵Ã÷£º ÎÞ

-**************************************************************************/

-VOID zAti_ProcessSMSData(T_ZAti_ChannelDataBuf      *recvCmdInd , T_ZAti_ChannelInfo *pChnelNode)

-{

-    WORD               wMsgLen = 0; 

-    WORD              wDataLen = 0;

-    WORD            wMsgLenRet = 0;

-    UINT32             dwMsgId = 0;

-    VOID            * pMsgBody = NULL;     

-    //--T_ZAt2_DecRsltType rsltTmp = ZAT2_CMD_PARSE_OK;

-

-    if(zAti_StoreSmsData(recvCmdInd, pChnelNode) == Z_FAIL)/* ±£´æ¶ÌÏûÏ¢ÄÚÈÝ,Èôδ½áÊø»òÔ½½çÔòÖ±½Ó·µ»Ø*/ 

-    {

-        return;

-    } 

-    /*ÊÕµ½ESCʱֱ½Ó»Ø¸´OK,²»·¢ËͶÌÏûÏ¢ */

-    if ((g_zAti_ptData->ptCmdInputInfo != NULL) && (g_zAti_ptData->ptCmdInputInfo->bSmsEsc == Z_VALID))

-    {

-        sprintf((char *)g_zAt_EncBuf, "%s",  g_zAt_OK);

-        zAti_SendEncData(pChnelNode, (BYTE *)g_zAt_EncBuf, ZATI_INVALID_MSGID, NULL);

-

-        /* ÊÍ·ÅͨµÀÖлº´æÏûÏ¢ÄÚÈݵÄÄÚ´æµØÖ·£¬½«smsInputType»¹Ô­ */

-        zAti_RetUB((VOID **)&pChnelNode->cmdInputInfo.pSmsInputMsg);

-

-        /* ¸´Î»¶ÌÏûÏ¢ÊäÈë״̬ */

-        pChnelNode->atBuff.iLength = 0;

-        zOss_Memset(pChnelNode->atBuff.arrData, 0, ZATI2_BUFFER_LENGTH);        

-        zAti_Init_CmdInfo(&pChnelNode->cmdInputInfo);

-        return ;

-    }

-    

-    wDataLen = (UINT16)strlen((const char *)pChnelNode->atBuff.arrData);

-    /* »ñÈ¡¶ÌÏûÏ¢ÄÚÈݳɹ¦£¬Ö±½Ó½âÎö·µ»ØÖ®Ç°±£´æµÄÏûÏ¢ÄÚÈÝ */

-    wMsgLenRet = zAt_DecSmsContent(&dwMsgId, pChnelNode, wDataLen);

-    

-    if (wMsgLenRet == 0)

-    {

-        /* ÄÚÈݽâÎöʧ°Ü,·ÖÅäÖ±½Ó·µ»Ø¶ÌÏûÏ¢ÄÚÈÝÊäÈë´íÎó½á¹û */

-        zAt_EncErrorCode(g_zAt_EncBuf, ZAT2_CFG_CMEE, ZAT2_CMEE_SMSCONTENT_ERR); 

-        zAti_SendEncData(pChnelNode, (BYTE *)g_zAt_EncBuf, ZATI_INVALID_MSGID, NULL);

-        

-        /* ÊÍ·ÅͨµÀÖлº´æÏûÏ¢ÄÚÈݵÄÄÚ´æµØÖ·£¬½«smsInputType»¹Ô­ */

-        zAti_RetUB((VOID **)&pChnelNode->cmdInputInfo.pSmsInputMsg);

-

-        /* ¸´Î»¶ÌÏûÏ¢ÊäÈë״̬ */

-        pChnelNode->atBuff.iLength = 0;

-        zOss_Memset(pChnelNode->atBuff.arrData, 0, ZATI2_BUFFER_LENGTH);        

-        zAti_Init_CmdInfo(&pChnelNode->cmdInputInfo);

-    }

-    else

-    {

-        /* ÄÚÈݽâÎö³É¹¦, ½«Í¨µÀÖлº´æÏûÏ¢ÄÚÈݵÄÄÚ´æµØÖ·½»¸øpMsgBody,½«smsInputType»¹Ô­ */

-        pMsgBody = pChnelNode->cmdInputInfo.pSmsInputMsg;

-        pChnelNode->cmdInputInfo.pSmsInputMsg = NULL;

-        wMsgLen = wMsgLenRet;

-        

-        /* ¼Ç¼ͨµÀ״̬cmdId,cmdOp */

-        pChnelNode->cmd_op = ZAT2_CO_SET_REQ;

-        switch (pChnelNode->cmdInputInfo.smsInputType)

-        {

-        case ZAT2_CMGC_PDU:

-        case ZAT2_CMGC_TEXT:

-            pChnelNode->cmd_id = ZAT2_SMS_CMGC;

-            break;

-

-        case ZAT2_CMGS_PDU:

-        case ZAT2_CMGS_TEXT:

-            pChnelNode->cmd_id = ZAT2_SMS_CMGS;

-            break;

-

-        case ZAT2_CMGW_PDU:

-        case ZAT2_CMGW_TEXT:

-            pChnelNode->cmd_id = ZAT2_SMS_CMGW;

-            break;

-

-        case ZAT2_CNMA_PDU:

-            pChnelNode->cmd_id = ZAT2_SMS_CNMA;

-            break;

-

-        default:

-            //--rsltTmp = ZAT2_CMD_UNREC;

-            break;

-        }

-        

-        /* ¸´Î»¶ÌÏûÏ¢ÊäÈë״̬ */

-        pChnelNode->atBuff.iLength = 0;

-        zOss_Memset(pChnelNode->atBuff.arrData, 0, ZATI2_BUFFER_LENGTH);

-        

-        zAti_Init_CmdInfo(&pChnelNode->cmdInputInfo);

-        zAti_ProcCmdMsg(dwMsgId, (BYTE *)pMsgBody, wMsgLen, pChnelNode);

-     }   

-    return;

-}

-

-

-/**************************************************************************

-* º¯ÊýÃû³Æ : zAti_RecvCommandInd

-* ¹¦ÄÜÃèÊö : ½ÓÊÕµ½Éϱ¨ÏûÏ¢´¦Àíº¯Êý

-* ²ÎÊý˵Ã÷£º (IN)£º 

-*            pDataPtr       Êý¾Ý

-*            iDataLen       Êý¾Ý³¤¶È 

-*            (OUT)£ºÎÞ

-* ·µ »Ø Öµ£º ÎÞ

-* ÆäËü˵Ã÷£º ÎÞ

-**************************************************************************/

-VOID __ps_static_func zAti_RecvCommandInd(UINT8 *pDataPtr, UINT16 iDataLen)

-{

-    T_ZAti_ChannelDataBuf      *recvCmdInd = (T_ZAti_ChannelDataBuf *)pDataPtr;

-    T_ZAti_ChannelInfo         *pChnelNode = NULL;

-

-    g_zAti_ptData->bPowerIndFlag = FALSE;

-

-    if( (NULL == pDataPtr) || (0 == iDataLen)  ||(NULL == (pChnelNode = zAti_GetChannelNodePtr(recvCmdInd->iChannel))))

-    {

-        return;

-    }

-

-    zOss_Memset(g_zAt_EncBuf, 0, ZAT_LONG_CMD_LEN);

-    zAti_SendRecvCmdStr2Trace(recvCmdInd->iChannel, recvCmdInd->iDataLen, (CHAR *)recvCmdInd->strData);

-

-    if(!zAti_IsRightStandAtCmd(recvCmdInd->iChannel))/*ûÆô¶¯´ý»ú²àµÄÃüÁî²Ù×÷²»ÔÊÐí*/

-    {

-        zAti_SendExpt2TraceAgt(ERR_InvalidMsg,  TRACE_ERR_LEVEL_NORMAL,"");

-        zAti_CmdDirectReply(pChnelNode, ZAT2_OPTNOTALW_ERR);

-        return;

-    }

-

-    if(pChnelNode->cmdInputInfo.cmdInputStat == ZAT2_ATCMD)

-    {

-        zAti_UpCaseRecvCmd(recvCmdInd->strData, recvCmdInd->iDataLen);

-        #ifdef USE_VOICE_SUPPORT

-        if(zAti_ZredialHandle(recvCmdInd, pChnelNode))//for VOLTE

-        {

-            zAti_SendExpt2TraceAgt(ERR_InvalidMsg,  TRACE_ERR_LEVEL_NORMAL,"");

-        }

-        #endif

-#ifdef Z_DUALCARD_ADAPT

-        if(zAti_IsDualCardSelfAdaptChanging())/*×ÔÊÊÅä¹ý³Ì²»²Ù×÷ÈκÎÃüÁî*/

-        {

-            zAti_SendExpt2TraceAgt(ERR_InvalidMsg,  TRACE_ERR_LEVEL_NORMAL,"");

-            zAti_CmdDirectReply(pChnelNode, ZAT2_DUALCARDADPT_ERR);

-            return;

-        }

-#endif

-#ifdef CXT_MOV

-        if(Z_ATI_PS_MOVE_ORIGIN != zAti_GetPsMovStat())

-        {

-            zAti_ProcessCmdInPsMovStat(recvCmdInd, pChnelNode);

-            return;

-        }

-#endif

-        zAti_ProcessCmd(recvCmdInd, pChnelNode);

-    }

-    else

-    {

-        // ZAT2_SMS_EDIT   /* ¶ÌÏûÏ¢ÄÚÈÝÊäÈë״̬ £¬°´¶ÌÏûÏ¢ÄÚÈÝ´¦Àí*/

-        zAti_ProcessSMSData(recvCmdInd, pChnelNode);

-    }    

-    return;

-}

-

-/**************************************************************************

-* º¯ÊýÃû³Æ : zAti_Open

-* ¹¦ÄÜÃèÊö : ´ò¿ªÍ¨µÀ

-* ²ÎÊý˵Ã÷ : (IN)£º

-*            iChnelId     ͨµÀID

-*            (OUT)£ºÎÞ

-* ·µ »Ø Öµ : ³É¹¦·µ»ØZATI2_SUCCESS£»Ê§°Ü·µ»Ø´íÎóÀàÐÍ£»

-* ÆäËü˵Ã÷ : ÈÎÎñ¾ÍÐ÷ºó²ÅÄܽøÐÐͨµÀ²Ù×÷£»

-*            ͬһ¸öͨµÀ£¬²»ÄÜ´ò¿ªÁ½´Î£¬ÐèÒª¹Ø±Õºó²ÅÄÜ´ò¿ª

-**************************************************************************/

-

-BOOL __ps_static_func zAti_IsValidChnelId(UINT8 iChnelId)

-{

-     return ( iChnelId >= ZATI2_CHANNEL_ID_NUM_START && iChnelId <= ZATI2_CHANNEL_ID_NUM_END);

-}

-

-SINT32 __ps_static_func zAti2_Open(UINT8 iChnelId)

-{

-    if( g_zAti_Context.taskStatus != ZATI2_TASK_STATUS_READY

-        || !zAti_IsValidChnelId(iChnelId) 

-        || ZATI2_SUCCESS == zAti_GetChannelNode(iChnelId)       // ¸ÃͨµÀÒѾ­´ò¿ª 

-        || g_zAti_ptData->tAtChnelList.iCount > ZATI2_CHANNEL_ID_NUMCOUNT

-        || NULL == g_zAti_Context.mutexOpenChnel

-        )

-    {

-        return ZATI2_FALSE;

-    }

-

-    if(ZOSS_SUCCESS == zOss_GetMutex(g_zAti_Context.mutexOpenChnel, ZOSS_WAIT_FOREVER)) 

-    {

-        zAti_AddChannelToList(iChnelId);

-        if(ZOSS_SUCCESS == zOss_PutMutex(g_zAti_Context.mutexOpenChnel))/* ÊÍ·Å»¥³âÁ¿ */

-        {

-            return ZATI2_SUCCESS;             

-        } 

-    }

-

-    return ZATI2_FALSE;          

-}

-

-/**************************************************************************

-* º¯ÊýÃû³Æ : zAti_GetChannelNode

-* ¹¦ÄÜÃèÊö : »ñÈ¡ÓëͨµÀºÅÏàͬµÄ½áµã

-* ²ÎÊý˵Ã÷ : (IN)£º

-*            iChnelId     ÐèÒª²éÕÒµÄÄ¿±êͨµÀID

-*            (OUT)£ºÎÞ

-* ·µ »Ø Öµ : ³É¹¦·µ»ØZATI2_SUCCESS£»Ê§°Ü·µ»ØZATI2_FALSE£»

-* ÆäËü˵Ã÷ : ²éÕÒͨµÀºÅ£¬

-**************************************************************************/

-SINT32 __ps_static_func zAti_GetChannelNode(UINT8 iChnelId)

-{

-    T_ZAti_ChannelInfo *pChnelNode = g_zAti_ptData->tAtChnelList.pChnelNode;

-    

-    while(NULL != pChnelNode)

-    {

-        if(iChnelId == pChnelNode->iChnelId)

-        {

-            return ZATI2_SUCCESS;

-        }

-        

-        pChnelNode = pChnelNode->pNextCnNode;

-    }

-

-    return ZATI2_FALSE;

-}

-

-/**************************************************************************

-* º¯ÊýÃû³Æ : zAti_GetChannelNodePtr

-* ¹¦ÄÜÃèÊö : »ñÈ¡ÓëͨµÀºÅÏàͬµÄ½áµã£¬Í¬Ê±·µ»Ø½áµãÖ¸Õë

-* ²ÎÊý˵Ã÷ : (IN)£º

-*            iChnelId     ÐèÒª²éÕÒµÄÄ¿±êͨµÀID

-*            (OUT)£ºÎÞ

-* ·µ »Ø Öµ : ³É¹¦·µ»Ø¸Ã½áµãÖ¸Õ룬ʧ°Ü·µ»ØNULL

-* ÆäËü˵Ã÷ : ²éÕÒͨµÀºÅ£¬²¢·µ»ØÆäÔÚÁ´±íÖеĽáµãÖ¸Õë

-**************************************************************************/

-T_ZAti_ChannelInfo * __ps_static_func zAti_GetChannelNodePtr(UINT8 iChnelId)

-{

-    T_ZAti_ChannelInfo *pChnelNode = NULL;

-    

-    if(g_zAti_Context.taskStatus != ZATI2_TASK_STATUS_READY || !zAti_IsValidChnelId(iChnelId)) 

-    {

-        return NULL;

-    }

-

-    pChnelNode = g_zAti_ptData->tAtChnelList.pChnelNode;

-    while(NULL != pChnelNode)

-    {

-        if(iChnelId == pChnelNode->iChnelId)

-        {

-            return pChnelNode;

-        }

-        

-        pChnelNode = pChnelNode->pNextCnNode;

-    }

-

-    return NULL;

-}

-

-/**************************************************************************

-* º¯ÊýÃû³Æ : zAti_GetChannelNodePtrByMmiaDestIndex

-* ¹¦ÄÜÃèÊö : »ñÈ¡ÓëͨµÀºÅÏàͬµÄ½áµã£¬Í¬Ê±·µ»Ø½áµãÖ¸Õë,ͨ¹ýMMIAµÄÄ¿µÄË÷Òý½øÐвéÕÒµÄ

-* ²ÎÊý˵Ã÷ : (IN)£º

-*            iMmiaDestChnelId     ÐèÒª²éÕÒµÄMMIAµÄÄ¿µÄË÷Òý

-*            (OUT)£ºÎÞ

-* ·µ »Ø Öµ : ³É¹¦·µ»Ø½áµãÖ¸Õ룻ʧ°Ü·µ»ØNULL£»

-* ÆäËü˵Ã÷ : ²éÕÒͨµÀºÅ£¬²¢·µ»ØÆäÔÚÁ´±íÖеĽáµãÖ¸Õë

-*            Èë²Î²»ÄÜΪ¿Õ»òÕß255

-*            ÆäÄ¿µÄË÷ÒýÏ൱ÓÚATI2µÄͨµÀºÅ

-**************************************************************************/

-T_ZAti_ChannelInfo * __ps_static_func zAti_GetChannelNodePtrByMmiaDestIndex(BYTE iMmiaDestChnelId)

-{

-    T_ZAti_ChannelInfo *pChnelNode = NULL;

-    

-    if(g_zAti_Context.taskStatus != ZATI2_TASK_STATUS_READY) 

-    {

-        return NULL;

-    }

-    else if(!((iMmiaDestChnelId >= ZATI2_CHANNEL_ID_NUM_START) && (iMmiaDestChnelId <= ZATI2_CHANNEL_ID_NUM_END)))

-    {

-        return NULL;

-    }

-    else// if(iMmiaDestChnelId == ZATI2_INVAL_INDEX)

-    {

-        pChnelNode = g_zAti_ptData->tAtChnelList.pChnelNode;

-        while(NULL != pChnelNode)

-        {

-            if(iMmiaDestChnelId == pChnelNode->iSrcIndex)

-            {

-                pChnelNode = pChnelNode;

-                return pChnelNode;

-            }

-    

-            pChnelNode = pChnelNode->pNextCnNode;

-        }

-        return NULL;

-    }

-}

-

-/**************************************************************************

-* º¯ÊýÃû³Æ : zAti_GetChannelNodePtrByMmiaSrcIndex

-* ¹¦ÄÜÃèÊö : »ñÈ¡ÓëͨµÀºÅÏàͬµÄ½áµã£¬Í¬Ê±·µ»Ø½áµãÖ¸Õ룬ͨ¹ýMMIAµÄÔ´Ë÷Òý½øÐвéÕÒµÄ

-* ²ÎÊý˵Ã÷ : (IN)£º

-*            iMmiaSrcChnelId     ÐèÒª²éÕÒµÄMMIAµÄÔ´Ë÷Òý

-*            (OUT)£ºÎÞ

-* ·µ »Ø Öµ : ³É¹¦·µ»Ø½áµãÖ¸Õ룻ʧ°Ü·µ»ØNULL£»

-* ÆäËü˵Ã÷ : ²éÕÒͨµÀºÅ£¬²¢·µ»ØÆäÔÚÁ´±íÖеĽáµãÖ¸Õë

-*            Ò»°ãÀ´Ëµ£¬Í¨¹ýMMIAµÄÄ¿µÄË÷ÒýºÅ²éÕÒ²»µ½ÁË£¬²Åµ÷¸Ãº¯Êý½øÐвéÕÒ

-**************************************************************************/

-T_ZAti_ChannelInfo * __ps_static_func zAti_GetChannelNodePtrByMmiaSrcIndex(UINT16 iMmiaSrcChnelId)

-{

-    T_ZAti_ChannelInfo *pChnelNode = NULL;

-    

-    if(g_zAti_Context.taskStatus != ZATI2_TASK_STATUS_READY) 

-    {

-        return NULL;

-    }

-

-    pChnelNode = g_zAti_ptData->tAtChnelList.pChnelNode;    

-    while(NULL != pChnelNode)

-    {

-        if(iMmiaSrcChnelId == pChnelNode->iDestIndex)

-        {

-            pChnelNode = pChnelNode;

-            return pChnelNode;

-        }

-        

-        pChnelNode = pChnelNode->pNextCnNode;

-    }

-

-    return NULL;

-}

-

-/**************************************************************************

-* º¯ÊýÃû³Æ : zAti_GetChannelNodePtrBystate

-* ¹¦ÄÜÃèÊö : ²éÕÒÓëͨµÀºÅÏàͬµÄ½áµã£¬Í¬Ê±·µ»Ø½áµãÖ¸Õ룬ͨ¹ýͨµÀ״̬²éÕÒ

-* ²ÎÊý˵Ã÷ : (IN)£º

-*            iChnelId     ÐèÒª²éÕÒµÄÄ¿±êͨµÀID

-*            (OUT)£ºÎÞ

-* ·µ »Ø Öµ : ³É¹¦·µ»Ø¸Ã½áµãÖ¸Õ룬ʧ°Ü·µ»ØNULL

-* ÆäËü˵Ã÷ : ²éÕÒͨµÀºÅ£¬²¢·µ»ØÆäÔÚÁ´±íÖеĽáµãÖ¸Õë

-**************************************************************************/

-T_ZAti_ChannelInfo * zAti_GetChannelNodePtrByState(T_ZAti_DataType dataType)

-{

-    T_ZAti_ChannelInfo *pChnelNode = NULL;  

-    

-    if(g_zAti_Context.taskStatus != ZATI2_TASK_STATUS_READY) 

-    {

-        return NULL;

-    }

-    else if(!((dataType > ZATI2_CHANNEL_DATA_TYPE_INVAL) && (dataType < ZATI2_CHANNEL_DATA_TYPE_COUNTT)))

-    {

-        return NULL;

-    }

-

-    pChnelNode = g_zAti_ptData->tAtChnelList.pChnelNode;

-    

-    while(NULL != pChnelNode)

-    {

-        if((ZATI2_CHANNEL_MODE_DATA == pChnelNode->server_mode) && (dataType == pChnelNode->dataType))

-        {

-            return pChnelNode;

-        }

-        

-        pChnelNode = pChnelNode->pNextCnNode;

-    }

-

-    return NULL;

-}

-

-/**************************************************************************

-* º¯ÊýÃû³Æ : zAti_AddChannelToList

-* ¹¦ÄÜÃèÊö : ¹Ø±ÕͨµÀ

-* ²ÎÊý˵Ã÷ : (IN)£º

-*            iChnelId     ÐèÒªÔö¼ÓµÄÄ¿±êͨµÀID

-*            (OUT)£ºÎÞ

-* ·µ »Ø Öµ : ³É¹¦·µ»ØZATI2_SUCCESS£»Ê§°Ü·µ»ØZATI2_FALSE£»

-* ÆäËü˵Ã÷ : ²éÕÒͨµÀºÅ£¬

-**************************************************************************/

-SINT32 __ps_static_func zAti_AddChannelToList(UINT8 iChnelId)

-{

-    T_ZAti_ChannelInfo *pNewChnelNode = (T_ZAti_ChannelInfo *)zOss_Malloc(sizeof(T_ZAti_ChannelInfo));

-    if(pNewChnelNode == NULL)

-    {

-        return ZATI2_FALSE;

-    }

-    /* нáµã */

-    zOss_Memset((UINT8 *)pNewChnelNode, 0, sizeof(T_ZAti_ChannelInfo));

-

-    pNewChnelNode->iChnelId = iChnelId;

-    pNewChnelNode->cmd_id = ZAT2_NO_COMMAND; /* = -1; */

-    pNewChnelNode->cmd_op = ZAT2_CO_INVALID; /* = -1; */

-    zAti_Init_CmdInfo(&pNewChnelNode->cmdInputInfo);

-    pNewChnelNode->iEvId = ZATI2_INVAL_EVID;

-    pNewChnelNode->server_mode = ZATI2_CHANNEL_MODE_CMD;

-    pNewChnelNode->iSrcIndex = iChnelId; /* ATI2Ô´Ë÷ÒýºÅ£¬È¡Í¨µÀºÅ */

-    pNewChnelNode->iDestIndex = ZATI2_INVAL_MMIA_INDEX;

-    pNewChnelNode->server_id = iChnelId;

-    pNewChnelNode->pNextCnNode = NULL;

-    pNewChnelNode->bIsCardIniting = FALSE;

-    pNewChnelNode->IsPpp = FALSE;

-    pNewChnelNode->IsCmdStored = FALSE;

-    

-    zAti_InsertNodeInSortingAscend(pNewChnelNode);

-    

-    return ZATI2_SUCCESS;

-}

-

-/**************************************************************************

-* º¯ÊýÃû³Æ : zAti_Close

-* ¹¦ÄÜÃèÊö : ¹Ø±ÕͨµÀ

-* ²ÎÊý˵Ã÷ : (IN)£º

-*            iChnelId     ͨµÀID

-*            (OUT)£ºÎÞ

-* ·µ »Ø Öµ : ³É¹¦·µ»ØZATI2_SUCCESS£»Ê§°Ü·µ»ØZATI2_FALSE£»

-* ÆäËü˵Ã÷ : 

-*            Ìṩ¸øÓû§·½½Ó¿Ú

-*            ÈÎÎñ¾ÍÐ÷ǰ¡¢ºó¾ù¿É½øÐÐͨµÀ²Ù×÷£»ÆäÄ¿µÄÊǹرÕͨµÀ

-**************************************************************************/

-SINT32 zAti2_Close(UINT8 iChnelId)

-{

-    if( g_zAti_Context.taskStatus != ZATI2_TASK_STATUS_READY

-        || !zAti_IsValidChnelId(iChnelId) 

-        || ZATI2_SUCCESS != zAti_GetChannelNode(iChnelId)       // ¸ÃͨµÀδ´ò¿ª 

-        || g_zAti_ptData->tAtChnelList.iCount == 0

-        || g_zAti_Context.mutexOpenChnel == NULL

-        )

-    {

-         return ZATI2_FALSE;

-    }

-

-    if(ZOSS_SUCCESS == zOss_GetMutex(g_zAti_Context.mutexOpenChnel, ZOSS_WAIT_FOREVER))

-    {

-        zAti_DelChannelInList(iChnelId);

-        if(ZOSS_SUCCESS == zOss_PutMutex(g_zAti_Context.mutexOpenChnel))/* ÊÍ·Å»¥³âÁ¿ */

-        {

-            return ZOSS_SUCCESS;

-        }  

-    }       

-

-    return ZATI2_FALSE;

-}

-

-/**************************************************************************

-* º¯ÊýÃû³Æ : zAti_DelChannelInList

-* ¹¦ÄÜÃèÊö : ´ÓͨµÀÁ´±íÖÐɾ³ý½áµã

-* ²ÎÊý˵Ã÷ : (IN)£º

-*            iChnelId     ÐèҪɾ³ýµÄÄ¿±êͨµÀID

-*            (OUT)£ºÎÞ

-* ·µ »Ø Öµ : ³É¹¦·µ»ØZATI2_SUCCESS£»Ê§°Ü·µ»ØZATI2_FALSE£»

-* ÆäËü˵Ã÷ : ²éÕÒͨµÀºÅ£¬²¢É¾³ý£¬¹Ø±ÕͨµÀʱʹÓÃ

-**************************************************************************/

-SINT32 zAti_DelChannelInList(UINT8 iChnelId)

-{

-    T_ZAti_ChannelInfo *pTargetChnelNode = NULL; /* нáµã */

-    T_ZAti_ChannelInfo *pTempChnelNode = NULL; /* нáµã */   

-

-    pTempChnelNode = NULL; /* µÚÒ»´Î·ÖÅä */

-    pTargetChnelNode = g_zAti_ptData->tAtChnelList.pChnelNode;

-    

-    while(pTargetChnelNode != NULL)

-    {

-        if(pTargetChnelNode->iChnelId == iChnelId) /* ÕÒµ½½áµã */

-        {

-            if(NULL == pTempChnelNode)

-            {

-                g_zAti_ptData->tAtChnelList.pChnelNode = pTargetChnelNode->pNextCnNode; /* Á´±íµÄµÚÒ»¸ö½áµã */

-            }

-            else

-            {

-                pTempChnelNode->pNextCnNode = pTargetChnelNode->pNextCnNode;

-            }           

-

-            g_zAti_ptData->tAtChnelList.iCount = g_zAti_ptData->tAtChnelList.iCount - 1;

-           

-            zOss_Free(pTargetChnelNode);

-            pTargetChnelNode = NULL;

-            return ZATI2_SUCCESS;

-        }

-

-        pTempChnelNode = pTargetChnelNode;

-        pTargetChnelNode = pTargetChnelNode->pNextCnNode;

-    }

-

-    return ZATI2_FALSE;

-}

-

-/**************************************************************************

-* º¯ÊýÃû³Æ : zAti_RegRecvCb

-* ¹¦ÄÜÃèÊö : ×¢²á»Øµ÷º¯Êý

-* ²ÎÊý˵Ã÷ : (IN)£º

-*            recvFunc     »Øµ÷º¯Êý

-*            (OUT)£ºÎÞ

-* ·µ »Ø Öµ : ³É¹¦·µ»ØZATI2_SUCCESS£»Ê§°Ü·µ»Ø´íÎóÔ­Òò£»

-* ÆäËü˵Ã÷ : Ìṩ¸øÓû§·½º¯Êý½Ó¿Ú

-*            Èë²ÎÖ¸ÕëÀàÐÍtypedef SINT32 (*T_ZAti2_AtRecvFunc)(UINT8 channelId,

-*            UINT8* pDataPtr, UINT16 iDataLen, UINT8 iFlag);

-**************************************************************************/

-SINT32 __ps_static_func zAti2_RegRecvCb(T_ZAti2_AtRecvFunc recvFunc)

-{

-    if(NULL == recvFunc)

-    {

-        return ZATI2_FALSE;

-    }

-    else

-    {

-        g_zAti_Context.sendFnc = recvFunc;

-        return ZATI2_SUCCESS;

-    }

-}

-

-/**************************************************************************

-* º¯ÊýÃû³Æ : zAti2_AtChannelFunc

-* ¹¦ÄÜÃèÊö : ×¢²á»Øµ÷º¯Êý

-* ²ÎÊý˵Ã÷ : (IN)£º

-*            recvFunc     »Øµ÷º¯Êý

-*            (OUT)£ºÎÞ

-* ·µ »Ø Öµ : ³É¹¦·µ»ØZATI2_SUCCESS£»Ê§°Ü·µ»Ø´íÎóÔ­Òò£»

-* ÆäËü˵Ã÷ : Ìṩ¸øÓû§·½º¯Êý½Ó¿Ú

-**************************************************************************/

-SINT32 zAti2_AtChannelFunc(T_zAti_AtChannelFunc pChannelFunc)

-{

-    g_zAti_Context.pUsolChannelFunc = pChannelFunc;

-    return ZATI2_SUCCESS;

-}

-

-/**************************************************************************

-* º¯ÊýÃû³Æ : zAti2_SetAlwaysAtReportChannel

-* ¹¦ÄÜÃèÊö : ʼÖÕÉϱ¨ATÃüÁîµÄͨµÀ×¢²á»Øµ÷º¯Êý£¬»Øµ÷º¯Êý·µ»Ø×¨ÓÃͨµÀºÅ¡£

-*           µ±×¨ÓÃͨµÀºÅÓÐЧʱ£¬Ö÷¶¯Éϱ¨ÃüÁî²»ÊÜÊÇ·ñºÚÆÁ/ÁÁÆÁÓ°Ï죬¶¼ÔÚ´ËͨµÀÉϱ¨¡£

-* ²ÎÊý˵Ã÷ : (IN)£º

-*            pChannelFunc - »Øµ÷º¯Êý£¬»Øµ÷º¯Êý·µ»Ø×¨ÓÃͨµÀºÅ¡£      

-* ·µ »Ø Öµ :

-* ÆäËü˵Ã÷ : Ìṩ¸ø²Î¿¼Éè¼ÆµÄº¯Êý½Ó¿Ú

-**************************************************************************/

-SINT32 zAti2_SetAlwaysAtReportChannel(T_zAti_AtChannelFunc pChannelFunc)

-{

-    g_zAti_Context.pAlwaysReportChnel = pChannelFunc;

-    return ZATI2_SUCCESS;

-}

-

-/**************************************************************************

-* º¯ÊýÃû³Æ : zAti_Switch

-* ¹¦ÄÜÃèÊö : Çл»Í¨µÀ״̬£¬ÓÉCSÊý¾Ý̬Çл»ÎªÃüÁî̬

-* ²ÎÊý˵Ã÷ : (IN)£º

-*            iChnelId     ͨµÀID

-*            (OUT)£ºÎÞ

-* ·µ »Ø Öµ : ³É¹¦·µ»ØZATI2_SUCCESS£»Ê§°Ü·µ»ØZATI2_FALSE£»

-* ÆäËü˵Ã÷ : Ìṩ¸øÓû§·½½Ó¿Ú,½öÖ§³ÖCSÊý¾Ý̬Çл»

-*            ÈÎÎñ¾ÍÐ÷ºó²ÅÄܽøÐÐͨµÀ²Ù×÷£»

-*            ͬһ¸öͨµÀ£¬²»ÄܹرÕÁ½´Î

-**************************************************************************/

-SINT32 __ps_static_func zAti_Switch( T_ZAti_ChannelInfo *pChannelNode, T_zAti2_CtrmChInd iFlag)

-{

-    if(iFlag == ZATI2_CHIND_TURN_AT)

-    {

-/*        if(ZATI2_CHANNEL_MODE_DATA == pChannelNode->server_mode)

-        {

-            pChannelNode->server_mode = ZATI2_CHANNEL_MODE_CMD;

-            pChannelNode->dataType = ZATI2_CHANNEL_DATA_TYPE_INVAL; 

-        } */

-        zAti_UsbSioDeactiveByAtiReq(pChannelNode->iChnelId);

-        return ZATI2_SUCCESS;

-    }

-    else if(iFlag == ZATI2_CHIND_TURN_PSD)

-    {

-        pChannelNode->server_mode = ZATI2_CHANNEL_MODE_DATA;

-        pChannelNode->dataType = ZATI2_CHANNEL_DATA_TYPE_PS; 

-        return ZATI2_SUCCESS;

-    }

-    else if(iFlag == ZATI2_CHIND_TURN_CSD)

-    {

-        pChannelNode->server_mode = ZATI2_CHANNEL_MODE_DATA;

-        pChannelNode->dataType = ZATI2_CHANNEL_DATA_TYPE_CSD; 

-        return ZATI2_SUCCESS;

-    }

-    else

-    {

-        return ZATI2_FALSE;

-    }

-}

-

-/**************************************************************************

-* º¯ÊýÃû³Æ : zAti_Send

-* ¹¦ÄÜÃèÊö : ͨ¹ýͨµÀ·¢ËÍATÃüÁ»òÕßÊý¾Ý

-* ²ÎÊý˵Ã÷ : (IN)£º

-*            iChnelId     »Øµ÷º¯Êý

-*            pDataPtr      Êý¾ÝÖ¸Õë

-*            iDataLen      Êý¾Ý³¤¶È

-*            iFlag         

-*            (OUT)£ºÎÞ

-* ·µ »Ø Öµ : ³É¹¦·µ»ØZATI2_SUCCESS£»Ê§°Ü·µ»Ø´íÎóÔ­Òò£»

-* ÆäËü˵Ã÷ : Ìṩ¸øÓû§·½º¯Êý½Ó¿Ú

-*            ¶ÔÓÚATIʱ£¬ÐèÌṩ¸Ã½Ó¿Ú

-*            ¶ÔÓÚ´®¿Ú(MUX)ģʽÏ£¬ÐèÒªÓûص÷º¯ÊýÐÎʽ£¬×¢ÒâÇø±ðÓë´îÅä 

-*            616000270082²¦ºÅ»òÕß¶Ï¿ª²¦ºÅ¹ý³ÌÖгöÏÖÂÒÂë

-**************************************************************************/

-SINT32 __ps_static_func zAti2_Send(UINT8 iChnelId, UINT8 *pDataPtr, UINT16 iDataLen, T_zAti2_CtrmChInd iFlag)

-{

-    T_ZAti_ChannelInfo *pChnelNode = zAti_GetChannelNodePtr(iChnelId);     

-    if(NULL == pChnelNode) /* ¸ÃͨµÀûÓдò¿ª */

-    {

-        return ZATI2_CHANNEL_ID_ERROR;

-    }

-

-    if(iFlag >= ZATI2_CHIND_TURN_AT)

-    {

-        return zAti_Switch(pChnelNode, iFlag);

-    }

-

-    if((NULL == pDataPtr) || (0 == iDataLen))

-    {

-        return ZATI2_FALSE;

-    }

-

-    if((ZATI2_CHANNEL_MODE_CMD == pChnelNode->server_mode) && 

-        (ZATI2_CHIND_PSD == iFlag || ZATI2_CHIND_PSDV6 == iFlag ||ZATI2_CHIND_CSD == iFlag))

-    {

-        return ZATI2_FALSE;/*ÓÉ¿ØÖƹÜÀíÊÍ·Å*/

-    }

-

-    if(ZATI2_CHANNEL_MODE_DATA == pChnelNode->server_mode && ZATI2_CHIND_AT == iFlag)

-    {

-        zAti_SendExpt2TraceAgt(ERR_InvalidMsg,  TRACE_ERR_LEVEL_NORMAL,""); 

-        return ZATI2_FALSE;

-    }

-

-    if((ZATI2_CHANNEL_MODE_CMD == pChnelNode->server_mode) && (iDataLen <= ZATI2_BUFFER_LENGTH)) /* ÃüÁî״̬ */

-    {

-        T_ZAti_ChannelDataBuf *precvCmdInd = (T_ZAti_ChannelDataBuf *)zAti_GetUB(sizeof(T_ZAti_ChannelDataBuf));

-        precvCmdInd->iChannel = iChnelId;

-        precvCmdInd->iDataLen = iDataLen;

-        zOss_Memcpy(precvCmdInd->strData, pDataPtr, iDataLen);

-

-        zOss_TaskSend(EV_ZATI2_RECV_COMMAND_IND, precvCmdInd, sizeof(T_ZAti_ChannelDataBuf), g_zAti_Context.taskIdMy);

-        zAti_RetUB((VOID**)&precvCmdInd);

-    }

-    else if(ZATI2_CHANNEL_MODE_DATA == pChnelNode->server_mode)

-    {

-        if(ZATI2_CHANNEL_DATA_TYPE_CSD == pChnelNode->dataType)

-        {

-            #ifndef CONFIG_SINGLECORE

-            /*  ·¢Ë͵½CSD */

-            zAti_CsdUpDataRecv(iChnelId, iDataLen, pDataPtr);

-            #endif

-        }

-        else if(ZATI2_CHANNEL_DATA_TYPE_PS == pChnelNode->dataType)

-        {

-            /* ·¢Ë͵½PSD */

-            zAti_PsiDataReqProc(iChnelId, pDataPtr, iDataLen, (BOOL)(iFlag == ZATI2_CHIND_PSDV6)); /* ·â×°³ÉÏûÏ¢£¬·¢Ë͵½TAF/PDIÈÎÎñ */

-        }

-        else

-        {

-            return ZATI2_FALSE;

-        }

-    }

-    else

-    {

-        return ZATI2_FALSE;

-    }

-

-    return ZATI2_SUCCESS;

-}

-#ifdef USE_VOICE_SUPPORT

-/**************************************************************************

-* º¯ÊýÃû³Æ£º zAti_GetCallControlMsg

-* ¹¦ÄÜÃèÊö£º Åжϵ±Ç°ÊÇ·ñΪCCºô½ÐÏà¹ØÏûÏ¢

-* ²ÎÊý˵Ã÷£º (IN)£º 

-*            iEvId          ÏûÏ¢ID

-*            (OUT)£ºÎÞ

-* ·µ »Ø Öµ£º ÈôÊÇCCÏûÏ¢·µ»ØTRUE£¬ÆäËû·µ»ØFALSE;

-* ÆäËü˵Ã÷£º ͳһ¹ÜÀíCCÏà¹ØÏûÏ¢£¬·ÀֹЭÒéÕ»ÐÞ¸ÄCCÏûÏ¢Öµ¶øÕÒ²»µ½¸ÃÏûÏ¢¡£

-*            if((iEvId >= ZPS_ApMmia_CcSetupCnf_Ev) && 

-*               (iEvId <= ZPS_ApMmia_CcProcInfoInd_Ev)) ²»¿ÉÈ¡

-**************************************************************************/

-BOOL __ps_static_func zAti_GetCallControlMsg(UINT32 iEvId)

-{

-    switch(iEvId)

-    {

-        case MMIA_CC_ANS_MODE_REQ_EV:            

-        case MMIA_CC_MODIFY_REQ_EV:            

-        case MMIA_CC_DIS_MODE_REQ_EV:              

-        case EV_ZATI2_DTMF_REQ:

-                return TRUE;

-                

-        default:

-                return FALSE;

-        }

-}

-

-/**************************************************************************

-* º¯ÊýÃû³Æ : zAti_GetCallControlChannelId

-* ¹¦ÄÜÃèÊö : ͨ¹ýË÷ÒýºÅ»ñµÃͨµÀºÅ

-* ²ÎÊý˵Ã÷£º (IN)£º 

-*            iEvId          ÏûÏ¢ID

-*            pDataPtr       Êý¾Ý

-*            iDataLen       Êý¾Ý³¤¶È

-*            (OUT)£ºÎÞ

-* ·µ »Ø Öµ : ³É¹¦·µ»ØÍ¨µÀºÅ£»Ê§°Ü·µ»Ø´íÎóÀàÐÍ£» 

-* ÆäËü˵Ã÷ : 1) ÐèҪƽ̨ATI±£Ö¤Í¨µÀʹÓõÄÕýÈ·ÐÔ  

-*            2) ·µ»ØÍ¨µÀºÅ£¬ÕÒµ½¾Í·µ»ØÓÐЧͨµÀºÅ£¬·ñÔòΪÎÞЧͨµÀºÅ 

-*            3) MMIAµÄÔ´Ë÷ÒýºÅ¿ÉÄÜ·µ»ØÎÞЧֵ0xff£¬ÔÚCCÏûÏ¢²ÎÊý³ö´íʱ

-*            4) PS_CCµÄÔ´Ë÷ÒýºÅ²¢²»Êǹ̶¨Ó³É䣬²¢²»Êǰ´Ë³ÐòÑ¡ÔñÔ´Ë÷ÒýºÅµÄ

-*            5) ²»ÐèÒª¶ÔMMIA·¢À´µÄÔ´Ë÷ÒýÓÐЧÐÔ½øÐÐÅжϣ¬Òòµ±²ÎÊýÓÐÎ󣬯䷵»Ø0xff×÷ΪԴË÷Òý

-*            6) ½Óͨºó£¬²ÅÓëMMIAµÄÔ´/Ä¿µÄË÷ÒýºÅ½¨Á¢¹ØÏµ(·½·¨1)

-**************************************************************************/

-T_ZAti_ChannelId zAti_GetCallControlChannelId(UINT8 *pDataPtr, UINT16 iDataLen)

-{

-    UINT8                   iCcNum = 0;

-    BOOL                     bSuccessFind = FALSE;

-    T_zMmiaCc_CallStateInd  *ptApInd = (T_zMmiaCc_CallStateInd *)pDataPtr;

-    

-    for(iCcNum = 0; iCcNum < ZATI2_MAX_CALL_NUM; iCcNum++)

-    {

-        if(g_zAti_atDataEx[g_zAti_CurInstance].tCcMan.callInfo[iCcNum].iXid == ptApInd->bCallId)

-        {

-            if(ptApInd->bCallState ==  ZATI2_CALL_STATE_NULL)

-            {

-                g_zAti_atDataEx[g_zAti_CurInstance].tCcMan.callInfo[iCcNum].iSrcIndex = ZATI2_INVAL_MMIA_INDEX;

-                g_zAti_atDataEx[g_zAti_CurInstance].tCcMan.callInfo[iCcNum].iDestIndex = ZATI2_INVAL_MMIA_INDEX;

-                g_zAti_atDataEx[g_zAti_CurInstance].tCcMan.callInfo[iCcNum].callState = ZATI2_CALL_STATE_NULL;

-                g_zAti_atDataEx[g_zAti_CurInstance].tCcMan.callInfo[iCcNum].iXid = ZATI2_INVAL_MMIA_INDEX;

-            }

-            else

-            {

-                g_zAti_atDataEx[g_zAti_CurInstance].tCcMan.callInfo[iCcNum].iSrcIndex = ptApInd->bDesIndex;

-                g_zAti_atDataEx[g_zAti_CurInstance].tCcMan.callInfo[iCcNum].iDestIndex = ptApInd->bSrcIndex;

-                g_zAti_atDataEx[g_zAti_CurInstance].tCcMan.callInfo[iCcNum].callState = ptApInd->bCallState;

-            }

-            bSuccessFind = TRUE;

-            break;  /* SETUP_CNFÖ»ÄܶÔÓ¦µ½Ò»¸öÔ´¡¢Ä¿µÄË÷ÒýºÅ£¬¹Êbreak */

-        }

-    }

-    if(!bSuccessFind)

-    {

-        for(iCcNum = 0; iCcNum < ZATI2_MAX_CALL_NUM; iCcNum++)

-        {

-            if(g_zAti_atDataEx[g_zAti_CurInstance].tCcMan.callInfo[iCcNum].iXid == ZATI2_INVAL_MMIA_INDEX)

-            {

-                g_zAti_atDataEx[g_zAti_CurInstance].tCcMan.callInfo[iCcNum].iSrcIndex = ptApInd->bDesIndex;

-                g_zAti_atDataEx[g_zAti_CurInstance].tCcMan.callInfo[iCcNum].iDestIndex = ptApInd->bSrcIndex;

-                g_zAti_atDataEx[g_zAti_CurInstance].tCcMan.callInfo[iCcNum].callState = ptApInd->bCallState;

-                g_zAti_atDataEx[g_zAti_CurInstance].tCcMan.callInfo[iCcNum].iXid = ptApInd->bCallId;

-                break;  /* SETUP_CNFÖ»ÄܶÔÓ¦µ½Ò»¸öÔ´¡¢Ä¿µÄË÷ÒýºÅ£¬¹Êbreak */

-            }

-        }

-    }

-

-    return (T_ZAti_ChannelId)ptApInd->bDesIndex;

-}

-#endif

-///---------------ÊÕµ½ÆäËûÄ£¿é ÏûÏ¢´¦Àí

-

-/**************************************************************************

-* º¯ÊýÃû³Æ : zAti_GetNonReportMsgIdx

-* ¹¦ÄÜÃèÊö : »ñÈ¡·ÇÉϱ¨ÏûϢϱê

-* ²ÎÊý˵Ã÷£º (IN)£º 

-*            dwMsgId      ÏûÏ¢ºÅ

-*            (OUT)£º

-*             pMsgIdx   : Ô¤´¦ÀíÏûÏ¢Êý×éÖеÄϱê

-* ·µ »Ø Öµ£º ÕÒµ½·µ»ØZ_SUCC,  ûÓÐÕÒµ½·µ»ØZ_FAIL

-* ÆäËü˵Ã÷£º ÎÞ

-**************************************************************************/

-BYTE __ps_static_func zAti_GetNonReportMsgIdx(DWORD dwMsgId, WORD *pMsgIdx)

-{

-    WORD wTabIdx = 0;

-

-    for (wTabIdx = 0; wTabIdx < (sizeof(g_zAti_NonReportMsgTable) / sizeof(T_zAti_NonReportMsg)); wTabIdx++)

-    {

-        if(g_zAti_NonReportMsgTable[wTabIdx].iMsgId == dwMsgId)

-        {

-            *pMsgIdx = wTabIdx;

-            return Z_SUCC;

-        }

-    }

-    return Z_FAIL;

-}

-

-/**************************************************************************

-* º¯ÊýÃû³Æ : zAti_PreProcMsg

-* ¹¦ÄÜÃèÊö : ¸ù¾Ýϱ괦Àí·ÇÉϱ¨ÏûÏ¢, 

-* ²ÎÊý˵Ã÷£º (IN)£º 

-*            wAtMemCnfMsgIdx:      ÏûϢϱê

-*            pbMsgBody           :     ÏûÏ¢Ìå

- *           wMsgLen              :     ÏûÏ¢³¤¶È

-* ·µ »Ø Öµ£º ÎÞ

-* ÆäËü˵Ã÷£º ÎÞ

-**************************************************************************/

-VOID __ps_static_func zAti_ProcNonReportMsg(WORD wAtMemCnfMsgIdx, BYTE *pbMsgBody, WORD wMsgLen)

-{

-    g_zAti_NonReportMsgTable[wAtMemCnfMsgIdx].pEndFnc(pbMsgBody) ;

-    return;

-}

-

-/**************************************************************************

-* º¯ÊýÃû³Æ : zAti_GetPreMsgIdx

-* ¹¦ÄÜÃèÊö : »ñȡԤ´¦ÀíÏûϢϱê

-* ²ÎÊý˵Ã÷£º (IN)£º 

-*            dwMsgId      ÏûÏ¢ºÅ

-*            (OUT)£º

-*             pMsgIdx   : Ô¤´¦ÀíÏûÏ¢Êý×éÖеÄϱê

-* ·µ »Ø Öµ£º ÕÒµ½·µ»ØZ_SUCC,  ûÓÐÕÒµ½·µ»ØZ_FAIL

-* ÆäËü˵Ã÷£º ÎÞ

-**************************************************************************/

-BYTE __ps_static_func zAti_GetPreMsgIdx(DWORD dwMsgId, WORD *pMsgIdx)

-{

-    WORD wTabIdx = 0;    

-    for (wTabIdx = 0; wTabIdx < sizeof(atPreOuterMsg) / sizeof(T_zAti_PreOuterMsgTab); wTabIdx++)

-    {

-        if(atPreOuterMsg[wTabIdx].dwMsgId== dwMsgId)

-        {

-            *pMsgIdx = wTabIdx;

-            return Z_SUCC;

-        }

-    }

-    return Z_FAIL;

-}

-

-/**************************************************************************

-* º¯ÊýÃû³Æ : zAti_PreProcMsg

-* ¹¦ÄÜÃèÊö : ¸ù¾ÝϱêÔ¤´¦ÀíÏûÏ¢, 

-* ²ÎÊý˵Ã÷£º (IN)£º 

-*            wDistributeMsgIdx:      ÏûϢϱê

-*            pbMsgBody           :     ÏûÏ¢Ìå

- *           wMsgLen              :     ÏûÏ¢³¤¶È

-*            (OUT)£ºpdwChangedMsgId  : Ð޸ĺóµÄmsgID

-* ·µ »Ø Öµ£º ÎÞ

-* ÆäËü˵Ã÷£º ÎÞ

-**************************************************************************/

-VOID __ps_static_func zAti_PreProcMsg(WORD wPreMsgIdx, BYTE *pbMsg, WORD wMsgLen, DWORD * pdwChangedMsgId,  T_ZAti_ChannelInfo  *pChnelNode)

-{    

-    DWORD dwErrorType = atPreOuterMsg[wPreMsgIdx].pPreHandleMsg(pbMsg, pdwChangedMsgId, pChnelNode);

-    if ( dwErrorType == Z_APMMIA_NORESULT )

-    {

-         // Ô¤´¦Àí³É¹¦£¬ÐèÒª½øÒ»²½´¦Àí£¬´Ë´¦Ê²Ã´¶¼²»×ö

-    }

-    else if( dwErrorType == Z_APMMIA_NOERROR_ERR)

-    {

-        // ´¦Àí³É¹¦£¬Ö±½Ó»Ø¸´OK

-        // ¸Ã·Ö֧ӦΪconfirm ÏûÏ¢

-        if(pChnelNode != NULL)

-        {

-            zAti_ReplyOK( pChnelNode);

-            zAti_RemoveOneCmd(pChnelNode); 

-            zAti_DecMultiCmd(pChnelNode);

-        }

-    }

-    else

-    {

-        // ´íÎó´¦Àí 

-        if(pChnelNode != NULL)

-        {

-            zAti_ProcError(pChnelNode, dwErrorType);

-        }

-    }

-    return;

-}

-

-/********************************* LTE GoTa *******************************/

-/**************************************************************************

-* º¯ÊýÃû³Æ : zAti_IsAlreadyReply

-* ¹¦ÄÜÃèÊö : ÅжÏÊÇ·ñÊÇÒѾ­Ö±½Ó»Ø¸´¹ýµÄÏìÓ¦ÏûÏ¢

-* ²ÎÊý˵Ã÷£º (IN)£º 

-*        

-*            (OUT)£ºÎÞ

-* ·µ »Ø Öµ£º true,false

-* ÆäËü˵Ã÷£º ¼¯ÈººêÔÚº¯ÊýÄÚÓÃ,¶ÔÒѾ­»Ø¸´¹ýµÄÏûÏ¢

-*                            ÔÙÊÕµ½ÏìӦʱÔÚÍâÃæ¾Í²»ÒªÔÙÇåͨµÀÁË

-**************************************************************************/

-BOOL __ps_static_func zAti_IsAlreadyReply(DWORD dwMsgId)

-{

-    /*ÇëÇóÒѾ­»Ø¸´¹ýOK*/

-    switch (dwMsgId)

-    {

-    case MMIA_CC_DISC_CNF_EV:

-    case MMIA_CC_ANS_MODE_CNF_EV:

-    case MMIA_CC_MOC_CNF_EV:

-        return TRUE;

-    default:

-        break;

-    }

-    

-    return FALSE;

-

-}

-#ifdef USE_VOICE_SUPPORT

-VOID zAti_DeliverZredialEndInd(BYTE bCallId)

-{

-    UINT16  strLen=0;

-    CHAR *pStrCmd = NULL;

-

-    pStrCmd = (CHAR *)zAti_GetUB(ZAT2_SHORT_CMD_LEN);

-

-    /*+ZREDIALEND: <callid>*/

-    sprintf((char *)pStrCmd, "%s+ZREDIALEND: %d%s", g_zAt_CRLF, bCallId, g_zAt_CRLF);

-    strLen = (UINT16)strlen((const char *)pStrCmd);

-

-    zAti_DeliverAllMsg(AP_MMIA_REDIALEND_IND_EV, pStrCmd, strLen);

-

-    zAti_RetUB((VOID **)&pStrCmd);

-    return;

-}

-#endif

-/**************************************************************************

-* º¯ÊýÃû³Æ£º zAti_ProcReportMsg

-* ¹¦ÄÜÃèÊö£º ´¦Àí´øÓÐÉϱ¨µÄÒ»°ãÏûÏ¢º¯Êý£¬ ind»òcnf

-* ²ÎÊý˵Ã÷£º (IN)£º 

-*            iEvId          ÏûÏ¢ID

-*            pDataPtr       Êý¾Ý

-*            iDataLen       Êý¾Ý³¤¶È

-*            (OUT)£ºÎÞ

-* ·µ »Ø Öµ£º ÎÞ

-* ÆäËü˵Ã÷£º ÎÞ

-**************************************************************************/

-VOID __ps_static_func zAti_ProcReportMsg(DWORD dwMsgId, BYTE *pbMsgBody, WORD wMsgLen, T_ZAti_ChannelInfo  *pChnelNode)

-{

-    CHAR                    *pEncodeCmd = NULL;

-    UINT16                  iEncodeCmdLen = 0;

-    T_ZAt2_CmdIdType             cmd_id = ZAT2_NO_COMMAND;         /* µ±Ç°µÄÃüÁî   */

-    T_ZAt2_CmdOpType             cmd_op = ZAT2_CO_INVALID;         /* ²Ù×÷״̬     */

-    

-    /*  1, ·Ç¿ÕͨµÀ£¬ÒѾ­»Ø¸´¹ýµÄÐÅÔª£¬Ö±½Ó·µ»Ø

-         2,  ¿ÕͨµÀ£¬·ÇÖ÷¶¯Éϱ¨ÏûÏ¢£¬Ö±½Ó·µ»Ø

-      */

-     if(pChnelNode != NULL)

-     {

-         if(!zAti_HandleCnfMsgBeforeEncCmd(dwMsgId, pbMsgBody, wMsgLen, pChnelNode))

-         {

-             return;

-         }

-         cmd_id = pChnelNode->cmd_id;

-         cmd_op = pChnelNode->cmd_op;

-     }

-

-    // ... Ð迼ÂÇͨµÀÔÚʲôʱºòÇå¿Õ

-    iEncodeCmdLen = zAt_EncCmd(dwMsgId, pbMsgBody, &pEncodeCmd, &cmd_id, &cmd_op);

-    if(iEncodeCmdLen == 0)

-    {

-        return;

-    }

-

-    if(dwMsgId == AP_MMIA_SM_CONNECT_IND_EV  && pChnelNode != NULL)

-    {

-        // sm½øÈëÊý¾Ý̬£¬µ¥Í¨µÀÉϱ¨£¬²¢ÇÐÈëÊý¾Ý̬

-        zAti_SendSmConnectInd(pbMsgBody,pEncodeCmd, iEncodeCmdLen, pChnelNode);

-    }

-    else if(zAti_IsIndiCateCnfMsg(dwMsgId, pbMsgBody) ||zAti_IsDeliverAllMsg(dwMsgId)) //(ZATI2_CHANNEL_ID_NUMALL == channelId) /* Ⱥ·¢ */

-    {

-#ifdef USE_VOICE_SUPPORT

-        if(dwMsgId == AP_MMIA_CEND_IND_EV && pChnelNode != NULL)  

-        {

-            // 佨Á¢Êý¾ÝÒµÎñǰ£¬Í¨µÀ¿ÉÄÜΪ¿Õ£¬Õâʱ²»ÓÃÇл»Í¨µÀ

-            //¹Ò¶Ïµç»°£¬ÏÈÇÐͨµÀµ½ÃüÁî̬£¬ÔÙÉϱ¨

-            zAti_HandleCcDiscInd(pChnelNode);

-        }

-#endif

-        zAti_DeliverAllMsg(dwMsgId, pEncodeCmd, iEncodeCmdLen);   

-#ifdef USE_VOICE_SUPPORT

-        if( dwMsgId == AP_MMIA_CONN_IND_EV && pChnelNode != NULL)

-        {

-            // ½Óͨµç»°£¬ÏÈÉϱ¨£¬ÔÙÇе½Êý¾Ý̬

-            zAti_SendConnInd(pbMsgBody, pEncodeCmd, iEncodeCmdLen, pChnelNode);//617001776023 lxh 10.09

-        }

-#endif

-        if(dwMsgId == MMIA_SM_PDP_ACTIVATE_IND_EV)

-        {

-            // ÏÈÉϱ¨£¬ºó·¢ÏûÏ¢

-            T_zDev_AtMem_SM_AutoRsp tAtData    = {0};

-            T_zApMmia_SmMtActAns_Req tApAnsReq = {0};

-            T_zMmiaSm_PdpAct_Ind *pSmMtActInd = (T_zMmiaSm_PdpAct_Ind*)pbMsgBody;

-            zDev_AtMemReadItem(Z_AtMem_ID_AutoRsp, 0, (PBYTE)&tAtData, g_zAti_CurInstance);    

-            if(zAti_GetMtAutoAnsMsg(pSmMtActInd->tPdpAddr.bPdpType, (PBYTE)&tAtData, &tApAnsReq))

-            {

-                zAti_SendSmAnsReq(&tApAnsReq);

-            }

-        }

-#ifdef USE_VOICE_SUPPORT

-        if (dwMsgId == MMIA_CC_CALL_STATE_IND_EV)

-        {

-            T_zMmiaCc_CallStateInd *pDsciInd = (T_zMmiaCc_CallStateInd*)pbMsgBody;

-            if ((pDsciInd->bCallState == Z_MMIACC_CALL_STATE_END) && (pDsciInd->bReialFlag == 1))

-            {

-                zAti_DeliverZredialEndInd(pDsciInd->bCallId);

-            }

-        }

-#endif

-    }

-    else

-    {

-        /* ͨµÀΪ¿Õ»òºÚÆÁϲ»ÐèÒªÖ÷¶¯Éϱ¨µÄÏûÏ¢,¶ªÆú. ´Ë´¦Ö»´¦ÀícnfÏûÏ¢*/

-        if(!(pChnelNode == NULL || zAti_IsDeliverMsgByPower(dwMsgId)))

-        {

-            zAti_SendEncData(pChnelNode, (BYTE *)pEncodeCmd, dwMsgId, pbMsgBody);

-

-            /*Óöµ½ÖмäÏûϢʱ²»×ö´¦ÀíµÈÊÕµ½×îÖÕÏûϢʱÔÙ´¦Àí*/

-            if(!(zAti_IsIntermediateMsg(dwMsgId, pbMsgBody) || zAti_IsAlreadyReply(dwMsgId)))

-            {

-                pChnelNode->cmd_id = ZAT2_NO_COMMAND;

-                pChnelNode->cmd_op = ZAT2_CO_INVALID;

-                zAti_RemoveOneCmd(pChnelNode);

-                zAti_DecMultiCmd(pChnelNode);

-            }

-        }

-    }

-    zAti_RetUB((VOID **)&pEncodeCmd); 

-    return;

-}

-

-/**************************************************************************

-* º¯ÊýÃû³Æ£º zAti_CheckRecvMsg

-* ¹¦ÄÜÃèÊö£º ¶ÔÊÕµ½µÄÏûÏ¢½øÐгõ²½¼ì²é

-* ²ÎÊý˵Ã÷£º (IN)£º 

-*            iEvId          ÏûÏ¢ID

-*            pDataPtr       Êý¾Ý

-*            iDataLen       Êý¾Ý³¤¶È

-*            (OUT)£ºÎÞ

-* ·µ »Ø Öµ£º ºÏ·¨·µ»ØZ_SUCC£¬·ñÔò·µ»ØZ_FAIL

-* ÆäËü˵Ã÷£º ÎÞ

-**************************************************************************/

-static BYTE __ps_static_func zAti_CheckRecvMsg(UINT32 iEvId, UINT8 *pDataPtr, UINT16 iDataLen)

-{

-    if(ZATI2_TASK_STATUS_READY != g_zAti_Context.taskStatus)

-    {

-        return Z_FAIL; /* ATI2δ¾ÍÐ÷¡¢»òÕßÈÎÎñ±»¹Ø±Õ£¬Ôò²»ÄÜÍùÏ´¦Àí */

-    }

-

-    /* (SM)MTÇëÇ󼤻îǰ·¢Æð£¬Îª¿ÕÏûÏ¢ */

-    /* 617002476772 ¶Ô¿ÕÏûÏ¢´¦ÀíÒÅ©ÁËMMIA_CC_CLOSE_VOICE_CHNL_IND_EV--hyc-- */

-    /* 617002487393- Ë«´ýUEµÄÐ¡ÇøÒÔ¼°ÖØÑ¡CCOÐÅÏ¢´¥·¢Éϱ¨£¬Í³Ò»°´ÕÕZCAT½Ó¿ÚʵÏÖ--hyc-- */

-

-    if(iEvId == MMIA_SM_IDLE_CHNL_QUERY_IND_EV  ||

-       iEvId == MMIA_UMM_UPDATE_DUALPSSYSCONFIG_IND_EV ||

-       iEvId == MMIA_CC_DUALPSCFG_IND_EV ||

-       iEvId == MMIA_UMM_IMSNOTSUPPORT_IND_EV ||

-       iEvId == MMIA_UMM_CS_CALL_START_IND_EV ||

-       iEvId == MMIA_UMM_CS_CALL_END_IND_EV)

-    {

-        return Z_SUCC;

-    }

-    if((NULL == pDataPtr) || (0 == iDataLen)) /* ЭÒéÕ»ÏìÓ¦ÏûÏ¢²»ÄÜΪ¿Õ */

-    {

-        return Z_FAIL;

-    }

-    return Z_SUCC;

-}

-

-BOOL __ps_static_func zAti_IsPreProcIndMsg(UINT32 iEvId)

-{

-    /* ÐèÒªÔ¤´¦ÀíµÄÖ÷¶¯Éϱ¨ÏûÏ¢*/

-    switch(iEvId)

-    {  

-    case MMIA_UMM_PLMN_INFO_IND_EV:

-    case MMIA_CC_MTC_IND_EV:

-    case AP_MMIA_SM_MEM_AVAIL_IND_EV:

- 

-    case MMIA_SM_CONNECT_IND_EV:

-    case AP_UICC_UICCOK_IND_EV:

-    case MMIA_CBS_DATA_IND_EV:

-    case MMIA_SMS_DELIVER_REC_IND_EV:

-    case MMIA_SMS_STATUS_REC_IND_EV:

-    case MMIA_CC_SS_NOTIFY_IND_EV: 

-    case MMIA_CC_DISC_IND_EV:

-    case MMIA_CC_PROC_INFO_IND_EV:

-    case AP_MMIA_PB_INIT_COMP_IND_EV:

-

-    /* ÏÂÃæÁ½¸öÏûÏ¢ËäÈ»ÔÚzAti_IsDeliverAllMsgÖÐÓÐ,µ«ÊÇΪÁ˲»ÊÜg_ZAti_PowerIndFlagµÄÓ°Ïì,ÈÔÒªÅÐ*/

-    case AP_UICC_SLOT_IND_EV:

-    case MMIA_UMM_MM_INFO_IND_EV:

-

-    case AP_MMIA_SM_SAVE_CNF_EV:

-    case AP_UICC_INIT_CNF_EV:

-    case AP_UICC_INIT_IND_EV:

-    case AP_UICC_COMMON_CNF_EV:

-    case MMIA_UMM_RF_CTRL_CNF_EV:

-    case MMIA_L1E_ZEPCG_CNF:

-    case MMIA_AS_LBS_CNF_EV:

-    case MMIA_CC_DISC_CNF_EV:

-    case MMIA_CC_ANS_MODE_CNF_EV:

-        return TRUE;

-

-    default:

-        break;

-    }    

-    

-    return FALSE;

-}

-

-BOOL __ps_static_func zAti_EmInfoQryCnfDesIndexIsInvaildProc(DWORD dwMsgId, BYTE *pbMsgBody)

-{

-    /*¹¤³Ìģʽ²éѯÇëÇóÄ¿µÄË÷ÒýΪÎÞЧ0»òÕß255˵Ã÷Êǵ÷Óú¯Êý½Ó¿Ú´¥·¢µÄ»ñÈ¡*/

-    if ((AS_QUERY_EM_CELL_INFO_CNF_EV == dwMsgId) && ((((T_zEM_EmInfo_Ind*)pbMsgBody)->bDesIndex == 0) || (((T_zEM_EmInfo_Ind*)pbMsgBody)->bDesIndex == 0xff)))

-    {

-        zAti_GetEmInfoMutex(g_zAti_CurInstance);

-

-        if (g_zAti_EmInfo[g_zAti_CurInstance].ptEmInfo != ZOSS_NULL)

-        {

-            zOss_Memcpy(g_zAti_EmInfo[g_zAti_CurInstance].ptEmInfo, pbMsgBody, sizeof(T_zEM_EmInfo_Ind));

-        }

-

-        zAti_DecreaseReqCountAndRelMutexSemaphore();

-

-        return TRUE;

-    }

-    return FALSE;

-}

-/**************************************************************************

-* º¯ÊýÃû³Æ£º zAti_RecvServerHandlerSlaver

-* ¹¦ÄÜÃèÊö£º ×÷ΪATI2(ЭÒéÕ»·½µÄATI)£¬½ÓÊÕÏûÏ¢´¦Àíº¯Êý

-* ²ÎÊý˵Ã÷£º (IN)£º 

-*            iEvId          ÏûÏ¢ID

-*            pDataPtr       Êý¾Ý

-*            iDataLen       Êý¾Ý³¤¶È

-*            (OUT)£ºÎÞ

-* ·µ »Ø Öµ£º ÎÞ

-* ÆäËü˵Ã÷£º ÎÞ

-**************************************************************************/

-VOID __ps_static_func zAti_RecvServerHandlerSlaver(DWORD dwMsgId, BYTE *pbMsgBody, WORD wMsgLen)

-{

-    WORD    wIdx  = 0;   // »ñÈ¡µÄÏûÏ¢Ë÷Òý

-    if(zAti_CheckRecvMsg(dwMsgId,pbMsgBody, wMsgLen) == Z_FAIL)

-    {

-        zAti_RetUB((VOID **)&pbMsgBody); 

-        return;

-    }

-

-    if (zAti_EmInfoQryCnfDesIndexIsInvaildProc(dwMsgId, pbMsgBody))

-    {

-        zAti_RetUB((VOID **)&pbMsgBody);

-        return;

-    }

-    // »ñȡͨµÀʧ°Ü£¬Ö±½Ó·µ»Ø£¬

-    // ·ÇÉϱ¨ÏûÏ¢´¦Àí£¬°üÀ¨´æATmem¡¢´ò¿ªÍ¨µÀ£¬·¢ËÍÏûÏ¢µÈ

-    if (zAti_GetNonReportMsgIdx(dwMsgId , &wIdx) == Z_SUCC)

-    {

-        zAti_ProcNonReportMsg(wIdx , pbMsgBody, wMsgLen);

-    }

-    else // Éϱ¨ÏûÏ¢

-    {

-        T_ZAti_ChannelInfo  *pChnelNode = zAti_GetChnelNode(dwMsgId,pbMsgBody, wMsgLen);

-        if(pChnelNode == NULL && !zAti_IsDeliverAllMsg(dwMsgId))

-        {

-            if (!zAti_IsPreProcIndMsg(dwMsgId))

-            {

-                /* 617002487414 [V3.3.10B02] ATI¶ÔMMIA_SMS_REC_RSP_CNF_EV´¦ÀíδÊÍ·ÅÄÚ´æ*/

-                 zAti_RetUB((VOID **)&pbMsgBody);

-                 return;

-            }

-        }

-

-        if (zAti_GetPreMsgIdx(dwMsgId , &wIdx) == Z_SUCC)

-        {

-            DWORD dwChangedMsgId = ZATI_INVALID_MSGID;

-            zAti_PreProcMsg(wIdx , pbMsgBody, wMsgLen, &dwChangedMsgId, pChnelNode);

-            dwMsgId = dwChangedMsgId;

-        }

-

-        /*  ²»ÐèÒªÔ¤´¦Àí»òÔ¤´¦Àí³É¹¦ºóÐèÒª½øÒ»²½´¦Àí*/

-        if(dwMsgId != ZATI_INVALID_MSGID)

-        {

-            zAti_ProcReportMsg(dwMsgId,pbMsgBody, wMsgLen, pChnelNode);

-        }

-    }

-

-    // ÏûÏ¢ÊÍ·Å£¬Ö»´ËÒ»´¦

-    zAti_RetUB((VOID **)&pbMsgBody);

-    return;

-}

-#ifdef Z_DUALCARD_ADAPT

-VOID zAti_ClearSelfAdaptGlobVar(BYTE bInsNo)

-{

-    g_zAti_atDataEx[bInsNo].IsCfgChging = FALSE;

-    g_zAti_atDataEx[bInsNo].IsFlymode = FALSE;

-    g_zAti_atDataEx[bInsNo].IsNeedOutFlymode = FALSE;

-}

-#endif

-/*******************************************************************

-*º¯ÊýÃû³Æ:zAti_IsCurrStackInFlymode

-*º¯Êý¹¦ÄÜ:Åжϵ±Ç°ÊÇ·ñ먦É䯵

-*ÆäËû˵Ã÷:ÎÞ

-*******************************************************************/

-BOOL zAti_IsStackInRfClose(BYTE bInsNo)

-{

-    if(Z_APMMIA_CFUNFUN_DISBOTHRF == g_zAti_atDataEx[bInsNo].tFun.bRfVal ||

-            Z_APMMIA_CFUNFUN_MINIFUN == g_zAti_atDataEx[bInsNo].tFun.bRfVal)

-    {

-        return TRUE;

-    }

-    return FALSE;

-}

-#ifdef Z_DUALCARD_ADAPT 

-VOID zAti_GetStackIntoFlymode(BYTE bInsNo)

-{

-    if(zAti_IsStackInRfClose(bInsNo))/*ÒѾ­ÊǹØÉäÆµ×´Ì¬*/

-    {

-        g_zAti_atDataEx[bInsNo].IsFlymode = TRUE;

-    }

-    else

-    {

-        zAti_SendCfunSetReq(Z_APMMIA_CFUNFUN_DISBOTHRF, bInsNo);

-    }

-    return;

-}

-

-/*************************************************

-*º¯ÊýÃû³Æ:zAti_NeedChangeInNoChange

-*º¯Êý¹¦ÄÜ:ÔÚûÓÐÊÊÅäʱÊÕµ½ÐèÒªÊÊÅä

-*************************************************/

-VOID zAti_NeedChangeInNoChange(VOID)

-{

-    if(zAti_IsCmdChnelIdIdel(Z_ATI_INSNO_1))

-    {

-        g_zAti_atDataEx[Z_ATI_INSNO_1].IsCfgChging = TRUE;

-        /*ÐèÒªÖûسõʼ̬ÒÔÇø·ÖеÄÊÊÅä״̬*/

-        zAti_IndicatCfgStart(); /*Éϱ¨+ZPSCFGSTART*/

-        zNas_SetEventStart(Z_ATI_INSNO_1, Z_ATI_EVENT_CARD_CONFIG);

-        zAti_GetStackIntoFlymode(Z_ATI_INSNO_1);

-    }

-

-    if(zAti_IsCmdChnelIdIdel(Z_ATI_INSNO_2))

-    {

-        /*ÐèÒªÖûسõʼ̬ÒÔÇø·ÖеÄÊÊÅä״̬*/

-        g_zAti_atDataEx[Z_ATI_INSNO_2].IsCfgChging = TRUE;

- 

-        if(!g_zAti_atDataEx[Z_ATI_INSNO_1].IsCfgChging) /*±ÜÃâÖØ¸´Éϱ¨*/

-        {

-            zAti_IndicatCfgStart();

-            zNas_SetEventStart(Z_ATI_INSNO_2, Z_ATI_EVENT_CARD_CONFIG);

-        }

-

-        zAti_GetStackIntoFlymode(Z_ATI_INSNO_2);

-    }

-    /*Á½´ý먦É䯵¿ÉÒÔÖ±½ÓÖØÉè^SYSCONFIG*/

-    if(g_zAti_atDataEx[Z_ATI_INSNO_1].IsFlymode && 

-        g_zAti_atDataEx[Z_ATI_INSNO_2].IsFlymode)

-    {

-        zAti_ExchangeSysconfig();

-        zAti_IndicatCfgEnd(); /*Éϱ¨+ZPSCFGEND*/

-        g_zAti_ptData->bNeedChgFg = Z_NO_NEED_CHANGE;

-        zAti_ClearSelfAdaptGlobVar(Z_ATI_INSNO_1);  /*Çå³ýÈ«¾Ö*/

-        zAti_ClearSelfAdaptGlobVar(Z_ATI_INSNO_2);  /*Çå³ýÈ«¾Ö*/

-    }

-    return;

-}

-

-/*************************************************************************

-*º¯ÊýÃû³Æ:zAti_NeedChangeInSingleCfgChanging

-*º¯Êý¹¦ÄÜ:Åжϴ¦ÀíÊÇ·ñ»¹ÓÐÒòͨµÀ²»¿ÕÏжøÃ»ÊÊÅäµÄÇé¿ö

-*ÆäËû˵Ã÷:´Ëº¯ÊýÊÇ´¦ÀíÒ»´ýͨµÀ¿ÕÏжøÁíÒ»´ý²»¿ÕÏÐÒÔ¼°

-*ÔÙ´ÎÊÕµ½NEEDCFGµÄÇé¿öʱһ´ýÊÊÅäÖÐÒ»´ý»¹Ã»ÓÐÊÊÅäµÄÇé¿ö

-*************************************************************************/

-VOID zAti_NeedChangeInSingleCfgChanging(VOID)

-{

-    if(zAti_IsCmdChnelIdIdel(Z_ATI_INSNO_1) && 

-    !g_zAti_atDataEx[Z_ATI_INSNO_1].IsCfgChging)

-    {

-        g_zAti_atDataEx[Z_ATI_INSNO_1].IsCfgChging = TRUE;

-        zAti_GetStackIntoFlymode(Z_ATI_INSNO_1);

-    }

-

-    if(zAti_IsCmdChnelIdIdel(Z_ATI_INSNO_2) &&

-    !g_zAti_atDataEx[Z_ATI_INSNO_2].IsCfgChging)

-    {

-       g_zAti_atDataEx[Z_ATI_INSNO_2].IsCfgChging = TRUE;

-       zAti_GetStackIntoFlymode(Z_ATI_INSNO_2);

-    }

-

-    /*Á½´ý먦É䯵¿ÉÒÔÖ±½ÓÖØÉè^SYSCONFIG*/

-    if(g_zAti_atDataEx[Z_ATI_INSNO_1].IsFlymode && 

-        g_zAti_atDataEx[Z_ATI_INSNO_2].IsFlymode)

-    {

-        zAti_ExchangeSysconfig();

-        zAti_IndicatCfgEnd(); /*Éϱ¨+ZPSCFGEND*/

-        g_zAti_ptData->bNeedChgFg = Z_NO_NEED_CHANGE;

-        zAti_ClearSelfAdaptGlobVar(Z_ATI_INSNO_1);  /*Çå³ýÈ«¾Ö*/

-        zAti_ClearSelfAdaptGlobVar(Z_ATI_INSNO_2);

-    }

-    return;

-}

-/*************************************************************

-*º¯ÊýÃû³Æ:zAti_NoNeedChangeInSingleCfgChanging

-*º¯Êý¹¦ÄÜ:½öÓÐÒ»¸ö´ý»ú²àÔÚÊÊÅäʱÊÕµ½NONEEDCFG

-*´¦ÀíÔ­Ôò:µ±Ç°SYSCONFIG¿Ï¶¨Ã»ÓÐÊÊÅäÅжÏÊÇ·ñÐèÒª

-*³ö·ÉÐÐģʽ,ÐèÒªÔò³ö,·ñÔòÊÊÅä½áÊø

-**************************************************************/

-VOID zAti_NoNeedChangeInSingleCfgChanging(VOID)

-{

-    BYTE bInsNo = 0;

-    if(g_zAti_atDataEx[Z_ATI_INSNO_1].IsCfgChging)

-    {

-        bInsNo = Z_ATI_INSNO_1;

-    }

-    else

-    {

-        bInsNo= Z_ATI_INSNO_2;

-    }

-

-    if(g_zAti_atDataEx[bInsNo].IsFlymode)

-    {

-        if(g_zAti_atDataEx[bInsNo].IsNeedOutFlymode)/*ÓÉATI´¥·¢½øÈëµÄ·ÉÐÐģʽ*/

-        {

-            g_zAti_ptData->IsOutFlymodeIng = TRUE;

-            zAti_SendCfunSetReq(Z_APMMIA_CFUNFUN_FULLFUN, bInsNo);

-        }

-        else /*먦É䯵*/

-        {

-            zAti_ClearSelfAdaptGlobVar(Z_ATI_INSNO_1);  /*Çå³ýÈ«¾Ö*/

-            zAti_ClearSelfAdaptGlobVar(Z_ATI_INSNO_2);

-            zAti_IndicatCfgEnd(); /*Éϱ¨+ZPSCFGEND*/

-        }

-    }

-    return;

-}

-/************************************************************

-*º¯ÊýÃû³Æ:zAti_NoNeedChangeInDualChanging

-*º¯Êý¹¦ÄÜ:ÔÚÁ½´ý¾ùÔÚÊÊÅäÖÐÊÕµ½NONEEDCFGµÄ´¦Àí

-*************************************************************/

-VOID zAti_NoNeedChangeInDualChanging(VOID)

-{

-    BYTE bAnothInsNo = (g_zAti_CurInstance == Z_ATI_INSNO_1)? Z_ATI_INSNO_2: Z_ATI_INSNO_1;

-

-    if(g_zAti_atDataEx[bAnothInsNo].IsFlymode && g_zAti_atDataEx[g_zAti_CurInstance].IsFlymode)

-    {

-        zAti_OutFlymodeInSelfAdapt();/*µÈÁ½´ý¾ù½øÈë·ÉÐÐģʽÔÙ´¦Àí*/

-        g_zAti_ptData->IsOutFlymodeIng = TRUE;/*´ËʱÖÁÉÙÓÐÒ»´ýÐèÒª³ö·ÉÐÐģʽ*/

-    }

-    return;

-}

-/************************************************************

-*º¯ÊýÃû³Æ:zAti_NeedChangeInDualChanging

-*º¯Êý¹¦ÄÜ:µÈÁ½´ý¾ù½øÈë·ÉÐÐģʽºó³ö·ÉÐÐģʽ

-*************************************************************/

-VOID zAti_NeedChangeInDualChanging(VOID)

-{

-    BYTE bAnothInsNo = (g_zAti_CurInstance == Z_ATI_INSNO_1)? Z_ATI_INSNO_2: Z_ATI_INSNO_1;

-

-    if(g_zAti_atDataEx[bAnothInsNo].IsFlymode && g_zAti_atDataEx[g_zAti_CurInstance].IsFlymode)

-    {

-        zAti_ExchangeSysconfig();

-        zAti_OutFlymodeInSelfAdapt();

-        g_zAti_ptData->bNeedChgFg = Z_NO_NEED_CHANGE;

-        g_zAti_ptData->IsOutFlymodeIng = TRUE;

-    }

-    return;

-}

-

-/*********************************************************************************************************************************

-*º¯ÊýÃû³Æ:zAti_HandleDualCardChange

-*º¯Êý¹¦ÄÜ:Ë«¿¨Ë«´ýģʽÏÂË«¿¨×ÔÊÊÓ¦

-*´¦ÀíÔ­Ôò:

-* 1)Èç¹ûÁ½´ý¶¼Ã»ÓÐÔÚÊÊÅäÖÐÔÙ´ÎÊÕµ½NEEDCFGÔòÕý³£´¦Àí¼´¿É

-* 2)Èç¹ûÁ½´ý¶¼Ã»ÓÐÔÚÊÊÅäÖÐÔÙ´ÎÊÕµ½NONEEDCFG˵Ã÷ûÓÐÊÊÅäÒ²ÎÞÐë´¦Àí

-* 3)ÔÙ´ÎÊÕµ½NONEEDCFGÇÒ½öÒ»´ý´¦ÓÚÊÊÅäÖÐ,ÈçÒѾ­½øÈë·ÉÐÐģʽÔòÖ±½Ó¸ù¾ÝÇé¿ö³ö·ÉÐÐģʽ½áÊøÊÊÅä,

-*     Èç¹ûûÓнøÈë·ÉÐÐģʽ˵Ã÷ÕýÔÚ½øÈë·ÉÐÐģʽÔòÔÚÊÕµ½ÏìÓ¦ÖýøÈë·ÉÐÐģʽºóÔÚ´Ë´¦Àí

-*4)ÔÙ´ÎÊÕµ½NEEDCFGÇÒ½öÒ»´ý´¦ÓÚÊÊÅäÖÐ,ÓÉÓÚSYSCONFIG»¹Î´Ï·¢,¼ÌÐø´¦Àí¼´¿É

-*5)Èç¹ûµ±Ç°Õý´¦ÓÚ³ö·ÉÐÐģʽ¹ý³ÌÖÐÊÕµ½ÈκÎNEEDCFGµÄ±êÖ¾¶¼½ö¼Ç¼һÏÂ,´ý³öÍê·ÉÐÐģʽºóÔÙ´¦Àí

-*6)Èç¹ûÁ½´ý¶¼ÔÚÊÊÅäÖÐÔÙ´ÎÊÕµ½NEEDCFGÇÒδÔÚ³ö·ÉÐÐģʽÖÐ,˵Ã÷µ±Ç°ÖÁÉÙÓÐÒ»´ýÕý´¦ÓÚ½øÈë·ÉÐÐģʽ

-*    µÄ¹ý³ÌÖÐ,µ±Ç°SYSCONFIGҲûÓд¦Àí,¼ÌÐø´¦Àí¼´¿É.

-*7)Èç¹ûÁ½´ý¶¼ÔÚÊÊÅäÖÐÔÙ´ÎÊÕµ½NONEEDCFGÇÒδÔÚ³ö·ÉÐÐģʽÖÐ,˵Ã÷ÖÁÉÙÓÐÒ»´ýÕýÔÚ´¦ÓÚ½øÈë·ÉÐÐģʽ

-*    µÄ¹ý³ÌÖÐ,µÈÁ½´ý¾ù½øÈë·ÉÐÐģʽºó²»ÔÙ½»»»SYSCONFIG,Ö±½Ó³ö·ÉÐÐģʽ

-******************************************************************************************************************************  */

-VOID zAti_HandleDualCardSelfAdapt(VOID)

-{

-    if(g_zAti_ptData->IsOutFlymodeIng)

-    {

-        return;/*³ö·ÉÐÐģʽ¹ý³ÌÖв»×öÈκδ¦Àí*/

-    }

-    /*ûÓÐÊÊÅ䵫ÐèÒªÊÊÅä*/

-    if(Z_NEED_CHANGE == g_zAti_ptData->bNeedChgFg &&

-    !g_zAti_atDataEx[Z_ATI_INSNO_1].IsCfgChging && !g_zAti_atDataEx[Z_ATI_INSNO_2].IsCfgChging)

-    {

-        zAti_NeedChangeInNoChange();

-    }

-    /*Ö»ÓÐÒ»´ý´¦ÓÚÊÊÅäÖÐÁíÒ»´ýÒòͨµÀ²»¿ÕÏжøÃ»ÓÐÊÊÅä

-        Ö»ÓÐÒ»´ý´¦ÓÚÊÊÅäÖÐÔÙ´ÎÊÕµ½ÐèÒªÊÊÅä*/

-    else if(Z_NEED_CHANGE == g_zAti_ptData->bNeedChgFg && 

-    g_zAti_atDataEx[Z_ATI_INSNO_1].IsCfgChging != g_zAti_atDataEx[Z_ATI_INSNO_2].IsCfgChging)

-    {

-        zAti_NeedChangeInSingleCfgChanging();

-    }

-    /*Ö»ÓÐÒ»´ý´¦ÓÚÊÊÅäÖÐÊÕµ½ÎÞÐëÊÊÅä*/

-    else if(Z_NO_NEED_CHANGE == g_zAti_ptData->bNeedChgFg &&

-    g_zAti_atDataEx[Z_ATI_INSNO_1].IsCfgChging != g_zAti_atDataEx[Z_ATI_INSNO_2].IsCfgChging)

-    {

-        zAti_NoNeedChangeInSingleCfgChanging();

-    }

-    /*Á½´ý¾ùÔÚÊÊÅäÖÐÊÕµ½ÎÞÐëÊÊÅä*/

-    else if(Z_NO_NEED_CHANGE == g_zAti_ptData->bNeedChgFg &&

-    g_zAti_atDataEx[Z_ATI_INSNO_1].IsCfgChging && g_zAti_atDataEx[Z_ATI_INSNO_2].IsCfgChging)

-    {

-        zAti_NoNeedChangeInDualChanging();

-    }

-    /*Á½´ý¾ùÔÚÊÊÅäÖеÈÈ«²¿½øÐзÉÐÐģʽºó½»»»SYSCONFIG³ö·ÉÐÐģʽ*/

-    else if(Z_NEED_CHANGE == g_zAti_ptData->bNeedChgFg && 

-    g_zAti_atDataEx[Z_ATI_INSNO_1].IsCfgChging && g_zAti_atDataEx[Z_ATI_INSNO_2].IsCfgChging)

-    {

-        zAti_NeedChangeInDualChanging();

-    }

-    return;

-

-}

-#endif

-VOID zAti_EncOKError(BOOL bResult)

-{

-    if (bResult)

-    {

-        sprintf((char *)g_zAt_EncBuf, "%s",  g_zAt_OK);

-    }

-    else

-    {

-        sprintf((char *)g_zAt_EncBuf, "%sERROR%s", g_zAt_CRLF,g_zAt_CRLF);

-    }

-    return;

-}

-

-/**************************************************************************

-* º¯ÊýÃû³Æ£º zAti_ZpodwReqProc

-* ¹¦ÄÜÃèÊö£º Óû§·¢ËÍAT+ZPODW

-* ²ÎÊý˵Ã÷£º (IN)£º 

-*            pDataPtr       ½á¹¹ÌåÖ¸Õë

-*            iDataLen       ½á¹¹Ì峤¶È

-*            (OUT)£ºÎÞ

-* ·µ »Ø Öµ£º ÎÞ

-* ÆäËü˵Ã÷£º +ZPODW: <bResult> (including two reasons)

-**************************************************************************/  

-DWORD zAti_ZpodwReqProc(VOID *pDataPtr)

-{

-    zAti_EncOKError((BOOL)(DRV_SUCCESS == zDrv_ShutDown()));

-    return Z_APMMIA_NOERROR_ERR;

-}

-

-/**************************************************************************

-* º¯ÊýÃû³Æ£º zAti_BoardnumReqProc

-* ¹¦ÄÜÃèÊö£º Óû§·¢ËÍAT+BOARDNUM

-* ²ÎÊý˵Ã÷£º (IN)£º 

-*            pDataPtr       ½á¹¹ÌåÖ¸Õë

-*            iDataLen       ½á¹¹Ì峤¶È

-*            (OUT)£ºÎÞ

-* ·µ »Ø Öµ£º ÎÞ

-* ÆäËü˵Ã÷£º +BOARDNUM: <bResult> (including two reasons)

-**************************************************************************/  

-DWORD zAti_BoardnumReqProc(VOID *pDataPtr)

-{

-    T_ZAti_BoardnumSetReq      *ptboardnumReq = (T_ZAti_BoardnumSetReq*)pDataPtr;

-    zAti_EncOKError((BOOL)(ZOSS_SUCCESS == zPS_NvAMTItemWrite(ABBORDNUm_NVPARAM, ptboardnumReq->abNum, ZAT2_MAX_BORDNAME_LEN)));

-    return Z_APMMIA_NOERROR_ERR;

-}

-

-/**************************************************************************

-* º¯ÊýÃû³Æ£º zAti_BoardnumQueryReqProc

-* ¹¦ÄÜÃèÊö£º Óû§·¢ËÍAT+BOARDNUMÇëÇóÉèÖÃ

-* ²ÎÊý˵Ã÷£º (IN)£º 

-*            pDataPtr       ½á¹¹ÌåÖ¸Õë

-*            iDataLen       ½á¹¹Ì峤¶È

-*            (OUT)£ºÎÞ

-* ·µ »Ø Öµ£º ÎÞ

-* ÆäËü˵Ã÷£º +BOARDNUM: <NUM>

-**************************************************************************/  

-DWORD zAti_BoardnumQueryReqProc(VOID *pDataPtr)

-{

-    CHAR *pStrWalk = g_zAt_EncBuf;

-    #if !defined(_CHIP_ZX297510) && !defined(_CHIP_ZX297520_LATER)

-    BYTE  i = 0;

-    BYTE  iaddrTmp = 0;

-    #endif

-    BYTE  abNum[ZAT2_MAX_BORDNAME_LEN+1] = {0};

-

-    if (ZOSS_SUCCESS == zPS_NvAMTItemRead(ABBORDNUm_NVPARAM, abNum, ZAT2_MAX_BORDNAME_LEN))

-    {

-    

-        pStrWalk += sprintf((char *)pStrWalk, "%s+BOARDNUM: ", g_zAt_CRLF);

-

-        

-        #if !defined(_CHIP_ZX297510) && !defined(_CHIP_ZX297520_LATER)

-

-        for (i = 0;i < ZAT2_MAX_BORDNAME_LEN;i++, pStrWalk += 2)

-        {

-            iaddrTmp = (UINT8)((abNum[i] << 4) | (abNum[i] >> 4));

-            sprintf((char *)pStrWalk, "%02X", iaddrTmp);

-        }

-        #else

-        snprintf((char *)pStrWalk, ZAT2_MAX_BORDNAME_LEN, "%s", abNum);

-        pStrWalk += strlen((const char *)pStrWalk);

-        #endif

-        sprintf((char *)pStrWalk, "%s%s", g_zAt_CRLF, g_zAt_OK);

-    }

-    else

-    {

-        sprintf((char *)g_zAt_EncBuf, "%sERROR%s", g_zAt_CRLF,g_zAt_CRLF);

-    }

-    return Z_APMMIA_NOERROR_ERR;

-}

-

-/**************************************************************************

-* º¯ÊýÃû³Æ£º zAti_ProdtestReqProc

-* ¹¦ÄÜÃèÊö£º Óû§·¢ËÍAT+PRODTESTÇëÇóÉèÖÃ

-* ²ÎÊý˵Ã÷£º (IN)£º 

-*            pDataPtr       ½á¹¹ÌåÖ¸Õë

-*            iDataLen       ½á¹¹Ì峤¶È

-*            (OUT)£ºÎÞ

-* ·µ »Ø Öµ£º ÎÞ

-* ÆäËü˵Ã÷£ºIf there is no <bb>,+PRODTEST:<ivalue> If there is <bb>, OK

-**************************************************************************/  

-DWORD zAti_ProdtestReqProc(VOID *pDataPtr)

-{

-    T_ZAti_ProdtestReq *ptprodtestReq = (T_ZAti_ProdtestReq*)pDataPtr;

-

-    BYTE bValue = 0;

-    BYTE    bResult = (ZAT2_CO_SET_REQ == ptprodtestReq->bCommandOp)? 

-        (ZOSS_SUCCESS == zPS_NvAMTFlagsItemWrite((NvParam_AMTFlags)ptprodtestReq->iTestValue,&ptprodtestReq->iResult)) : 

-        (ZOSS_SUCCESS == zPS_NvAMFlagsTItemRead((NvParam_AMTFlags)ptprodtestReq->iTestValue, &bValue));

-

-    if (bResult == TRUE)

-    {

-        if (ZAT2_CO_SET_REQ == ptprodtestReq->bCommandOp)

-        {

-            sprintf((char *)g_zAt_EncBuf, "%s",  g_zAt_OK);

-        }

-        else

-        {

-            sprintf((char *)g_zAt_EncBuf, "%s+PRODTEST: %c%s%s", g_zAt_CRLF,bValue, g_zAt_CRLF, g_zAt_OK);

-        }

-    }

-    else

-    {

-        sprintf((char *)g_zAt_EncBuf, "%sERROR%s", g_zAt_CRLF,g_zAt_CRLF);

-    }

-    return Z_APMMIA_NOERROR_ERR;

-}

-

-/**************************************************************************

-* º¯ÊýÃû³Æ£º zAti_ZflagSetReqProc

-* ¹¦ÄÜÃèÊö£º Óû§·¢ËÍAT+ZFLAGÇëÇóÉèÖÃÏàÓ¦µÄÉ豸ÊÇ·ñ´ò¿ª

-* ²ÎÊý˵Ã÷£º (IN)£º 

-*            pDataPtr       ½á¹¹ÌåÖ¸Õë

-*            iDataLen       ½á¹¹Ì峤¶È

-*            (OUT)£ºÎÞ

-* ·µ »Ø Öµ£º ÎÞ

-* ÆäËü˵Ã÷£º+ZFLAG=<dev>[,<n>]    OK/ERROR

-**************************************************************************/  

-DWORD zAti_ZflagSetReqProc(VOID *pDataPtr)

-{

-    T_ZAti_Zflag_Req           *ptzflagsetReq = (T_ZAti_Zflag_Req*)pDataPtr;

-    BYTE    bResult = FALSE;

-

-    zAti_ZflagSetReqProcContent(&bResult, ptzflagsetReq->bFac, ptzflagsetReq->bValue);

-    zAti_EncOKError(bResult);    

-    return Z_APMMIA_NOERROR_ERR;

-}

-

-VOID zAti_ZflagSetReqProcContent(PBYTE pbResult, BYTE bFac, BYTE  bValue)

-{

-    if(ZAT2_FAC_BOOT == bFac)

-    {

-         *pbResult = (zSys_NvSetBootFlag((bValue?OFF_STATE:ON_STATE)) == ZOSS_SUCCESS);          

-    }

-    else if(ZAT2_FAC_MUTI_AMT == bFac)

-    {

-        *pbResult = (zSys_NvSetCdromFlag((bValue?ON_STATE:OFF_STATE)) == ZOSS_SUCCESS);                  

-    }

-    else if(ZAT2_FAC_STM == bFac)

-    {

-        zStmPb_SetMode(bValue, (T_zStm_TaskIdx)g_zAti_CurInstance);

-        *pbResult = TRUE;

-    }

-    #if !defined(_CHIP_ZX297510) && !defined(_CHIP_ZX297520_LATER)

-    else if(ZAT2_FAC_DL_INTERVAL == bFac)

-    {

-        *pbResult = (zSys_NvSetDLIntervalFlag(bValue?LONG_INTERVAL:SHORT_INTERVAL) == ZOSS_SUCCESS);                  

-    }

-    #endif

-    return;

-}

-

-

-/**************************************************************************

-* º¯ÊýÃû³Æ£º zAti_ZflagQueryReqProc

-* ¹¦ÄÜÃèÊö£º Óû§·¢ËÍAT+ZFLAGÇëÇó²éѯÏàÓ¦µÄÉ豸ÊÇ·ñ´ò¿ª

-* ²ÎÊý˵Ã÷£º (IN)£º 

-*            pDataPtr       ½á¹¹ÌåÖ¸Õë

-*            iDataLen       ½á¹¹Ì峤¶È

-*            (OUT)£ºÎÞ

-* ·µ »Ø Öµ£º ÎÞ

-* ÆäËü˵Ã÷£º 

-*            ×¢Òâ°üµÄ¸ñʽ£¬½âÂëÖ®ºóµÄ£¬T_ZAti_ZflagQueryReq

-**************************************************************************/  

-DWORD zAti_ZflagQueryReqProc(VOID *pDataPtr)

-{

-    T_ZAti_Fac                  tFac[ZAT2_MAX_FAC_NUM] = {0};              /* The DTMF char */

-    BYTE bFacNum = 0;

-    BYTE i = 0;

-    CHAR *pStrWalk = g_zAt_EncBuf;

-    

-    tFac[0].bFac = ZAT2_FAC_BOOT;

-    tFac[1].bFac = ZAT2_FAC_MUTI_AMT; 

-#if defined(_CHIP_ZX297510) || defined(_CHIP_ZX297520_LATER) || defined(_CHIP_ZX2804)

-    bFacNum = 2;

-    tFac[0].bValue = (ON_STATE == zSys_NvGetBootFlag() ? 0 : 1);

-    tFac[1].bValue = (ON_STATE == zSys_NvGetCdromFlag()? 1 : 0);

-#else

-    bFacNum = ZAT2_MAX_FAC_NUM;

-    tFac[2].bFac = ZAT2_FAC_DL_INTERVAL; 

-    tFac[0].bValue = (ON_STATE == zSys_NvGetBootFlag() ? 0 : 1);

-    tFac[1].bValue = (ON_STATE == zSys_NvGetCdromFlag()? 1 : 0);

-    tFac[2].bValue = (LONG_INTERVAL == zSys_NvGetDLIntervalFlag()? 1 : 0);

-#endif

-

-    pStrWalk += sprintf((char *)pStrWalk, "%s+ZFLAG: ", g_zAt_CRLF);

-

-    for(i = 0;i < bFacNum;i++)

-    {

-        pStrWalk += sprintf((char *)pStrWalk, "\"%s\",%d,", ZAT_FAC_TYPE[tFac[i].bFac], tFac[i].bValue);

-    }

-    pStrWalk--;

-    sprintf((char *)pStrWalk, "%s%s", g_zAt_CRLF, g_zAt_OK);

-    

-    return Z_APMMIA_NOERROR_ERR;

-}

-

-/**************************************************************************

-* º¯ÊýÃû³Æ£º zAti_ZmodeswitchSetReqProc

-* ¹¦ÄÜÃèÊö£º Óû§·¢ËÍAT+ZMODESWITCHÇëÇóÉèÖõ±Ç°°æ±¾Ä£Ê½

-* ²ÎÊý˵Ã÷£º (IN)£º 

-*            pDataPtr       ½á¹¹ÌåÖ¸Õë

-*            iDataLen       ½á¹¹Ì峤¶È

-*            (OUT)£ºÎÞ

-* ·µ »Ø Öµ£º ÎÞ

-* ÆäËü˵Ã÷£º 

-**************************************************************************/  

-DWORD zAti_ZmodeswitchSetReqProc(VOID *pDataPtr)

-{

-    BYTE bMode = 0;

-

-    UINT32                      iAddr = OS_FLASH_ATI_RW_NONFAC_OFFSET_FROM_NV +0x03E2;

-

-    T_ZAti_Zmodeswitch_Req     *ptzModeswitchReq = (T_ZAti_Zmodeswitch_Req*)pDataPtr;

-

-    if(ZOSS_ERROR == zOss_NvItemRead(iAddr, &bMode, 1) ||ptzModeswitchReq->bMode != bMode)

-    {

-        zAti_EncOKError((BOOL)(ZOSS_SUCCESS == zOss_NvItemWrite(iAddr, (UINT8 *)&ptzModeswitchReq->bMode, 1)));

-    }

-    else

-    {

-        zAti_EncOKError(TRUE);

-    }

-    return Z_APMMIA_NOERROR_ERR;

-}

-

-/**************************************************************************

-* º¯ÊýÃû³Æ£º zAti_ZsetSetReqProc

-* ¹¦ÄÜÃèÊö£º Óû§·¢ËÍAT+ZSETÇëÇóÉèÖõ±Ç°°æ±¾Ä£Ê½

-* ²ÎÊý˵Ã÷£º (IN)£º 

-*            pDataPtr       ½á¹¹ÌåÖ¸Õë

-*            iDataLen       ½á¹¹Ì峤¶È

-*            (OUT)£ºÎÞ

-* ·µ »Ø Öµ£º ÎÞ

-* ÆäËü˵Ã÷£º 

-**************************************************************************/  

-DWORD zAti_ZsetSetReqProc(VOID *pDataPtr)

-{

-    T_ZAti_Zset_Req         *ptzSetReq = (T_ZAti_Zset_Req*)pDataPtr;

-    zAti_ZsetSendCnf(ptzSetReq);

-    return Z_APMMIA_NOERROR_ERR;

-}

-

-VOID zAti_ZsetSendCnf(T_ZAti_Zset_Req * pZSetReq)

-{

-    CHAR *pStrWalk = g_zAt_EncBuf;

-    if(pZSetReq->bCommandOp == ZAT2_CO_SET_REQ)

-    {

-        BOOL bResult = (BOOL)(ZOSS_SUCCESS == zOss_AtCfgSet(pZSetReq->cmd, &(pZSetReq->iParam),g_zAti_CurInstance));

-        zAti_EncOKError(bResult);

-

-        if(bResult)

-        {

-            if((strcmp((const char *)pZSetReq->cmd,  "FREQ_SCAN") == 0) || (strcmp((const char *)pZSetReq->cmd,  "SLEEP_FREQ_SCAN") == 0))

-            {

-                if(Z_SUCC != zAti_MsgSend(MMIA_UMM_FREQ_SCAN_REQ_EV, ZOSS_NULL,  0,  Z_ATI_TASKID_UMM))

-                {

-                    zAti_SendExpt2TraceAgt(ERR_InvalidPara,  TRACE_ERR_LEVEL_NORMAL,"");

-                }

-            }

-            else if(strcmp((const char *)pZSetReq->cmd,  "FAST_FREQ_SCAN") == 0)

-            {

-                if(Z_SUCC != zAti_MsgSend(MMIA_UMM_FAST_FREQ_SCAN_REQ_EV, ZOSS_NULL,  0,  Z_ATI_TASKID_UMM))

-                {

-                    zAti_SendExpt2TraceAgt(ERR_InvalidPara,  TRACE_ERR_LEVEL_NORMAL,"");

-                }

-            }

-        }

-    }

-    else if(pZSetReq->bCommandOp == ZAT2_CO_QUERY_REQ)

-    {

-        pZSetReq->iParam = zOss_AtCfgGet(pZSetReq->cmd);

-        if (pZSetReq->iParam.result == ZOSS_SUCCESS)

-        {

-            pStrWalk += sprintf((char *)pStrWalk, "%s+ZSET: \"%s\"", g_zAt_CRLF,pZSetReq->cmd);

-            zAt_PsEncZsetQueryCnfContent(&pStrWalk, pZSetReq);

-            sprintf((char *)pStrWalk, "%s%s", g_zAt_CRLF, g_zAt_OK);

-        }

-        else

-        {

-            zAti_EncOKError(FALSE);

-        }

-    }

-    return;

-}

-#ifdef USE_VOICE_SUPPORT

-BOOL __ps_static_func zAti_CcMsgProc(DWORD *pEvId, UINT8 *pEvData, WORD *pDataLen, T_ZAti_ChannelInfo *pChnelNode)

-{

-    if(zAti_GetCallControlMsg(*pEvId)) /* ((iEvId >= ZPS_ApMmia_CcSetupReq_Ev) && (iEvId <= ZPS_ApMmia_EtbmQueryReq_Ev)) */

-    {

-        if(ZATI2_SUCCESS != zAti_UsbSioGetCcManIndex(*pEvId, pEvData+1, pChnelNode))

-        {

-            return FALSE;

-        }

-    }

-    return TRUE;

-}

-#endif

-/**************************************************************************

-* º¯ÊýÃû³Æ : zAti_GetServerIndex

-* ¹¦ÄÜÃèÊö : ͨ¹ýͨµÀºÅ»ñÈ¡ÏûÏ¢µÄË÷ÒýºÅ

-* ²ÎÊý˵Ã÷£º (IN)£º 

-*            iEvId          ÏûÏ¢ID

-*            pEvData        ÏûÏ¢Ìå

-*            iDataLen        ÏûÏ¢Ì峤¶È

-*            chnelNode        ͨµÀºÅ½áµã

-*            (OUT)£º

-*            pEvData        ÏûÏ¢Ìå

-*            chnelNode        ͨµÀºÅ½áµã

-* ·µ »Ø Öµ : ³É¹¦·µ»ØZATI2_SUCCESS£»Ê§°Ü·µ»Ø´íÎóÀàÐÍ£»

-* ÆäËü˵Ã÷ : ÐèÒª·þÎñ²ã±£Ö¤Ë÷ÒýºÅµÄÕýÈ·ÐÔ  

-*            ATI2--->MMIA Ö»ÓÐXXX_REQ  ÇëÇóÏûÏ¢  

-*            ±¾ÈÎÎñÓ¦¸ÃÔÚÊÕµ½CCͨ»°½áÊø¡¢SM½áÊøÊ±ÊÍ·Å(Çå¿Õ)ͨµÀiDestIndex?

-617001738758 [ati]ATÁ÷³ÌÕûºÏÐ޸ĵã

-**************************************************************************/

-VOID __ps_static_func zAti_GetServerIndex(UINT32 iEvId, UINT8 *pEvData, T_ZAti_ChannelInfo *pChnelNode)

-{

-    if (iEvId == MMIA_EUCSR_LTEINFO_REQ_EV)

-    {

-        return ;

-    }

-    zOss_Memcpy(pEvData, &pChnelNode->iSrcIndex, sizeof(UINT8));//ATI2 SrcIndexÔÚµÚÒ»

-    zOss_Memcpy(pEvData + 1, &pChnelNode->iDestIndex, sizeof(UINT8));//ATI2 DestIndexÔÚµÚ¶þ

-   

-    if(MMIA_UMM_ACTIVE_REQ_EV == iEvId)

-    {

-        T_zMmiaUmm_Active_Req *pCgattSetReq = (T_zMmiaUmm_Active_Req *)pEvData;

-        if((pCgattSetReq->bActiveValue == Z_PsDomain) && (pCgattSetReq->bActiveType == 1))

-        {

-            pChnelNode->iEvId = iEvId;

-        }

-    }

-    else if(ZAT2_SS_CLCK==pChnelNode->cmd_id && ATI_DISTRIBUTE_FUNC_CLCK_SET_REQ_EV == iEvId)//·ÀÖ¹ÎóÖжÏ

-    {

-        T_zApMmia_ClckSet_Req *pClckSetReq = (T_zApMmia_ClckSet_Req*)pEvData;

-        if(Z_APMMIA_FACVALUE_SC !=pClckSetReq->bFac && Z_APMMIA_FACVALUE_FD !=pClckSetReq->bFac)

-        {

-            pChnelNode->iEvId = iEvId;

-        }

-    }

-    return;

-}

-

-/**************************************************************************

-* º¯ÊýÃû³Æ : zAti_GetChannelIdByIndex

-* ¹¦ÄÜÃèÊö : ͨ¹ýË÷ÒýºÅ»ñµÃͨµÀºÅ

-* ²ÎÊý˵Ã÷£º (IN)£º 

-*            iEvId          ÏûÏ¢ID

-*            iMmiaSrcIndex       mmiaÈÎÎñµÄÔ´Ë÷Òý

-*            iMmiaDestIndex      mmiaÈÎÎñµÄÄ¿µÄË÷Òý

-*            (OUT)£ºÎÞ

-*            pChannelId         ËùÕÒµ½µÄͨµÀºÅ

-* ·µ »Ø Öµ : ³É¹¦·µ»ØÍ¨µÀ½áµãÖ¸Õ룬ʧ°Ü·µ»ØNULL

-* ÆäËü˵Ã÷ : 1) ÐèҪƽ̨ATI±£Ö¤Í¨µÀʹÓõÄÕýÈ·ÐÔ  

-*            2) ·µ»ØÍ¨µÀºÅ£¬ÕÒµ½¾Í·µ»ØÓÐЧͨµÀºÅ£¬·ñÔòΪÎÞЧͨµÀºÅ 

-*            3) MMIAµÄÔ´Ë÷ÒýºÅ¿ÉÄÜ·µ»ØÎÞЧֵ0xff£¬ÔÚCCÏûÏ¢²ÎÊý³ö´íʱ

-*            4) PS_CCµÄÔ´Ë÷ÒýºÅ²¢²»Êǹ̶¨Ó³É䣬²¢²»Êǰ´Ë³ÐòÑ¡ÔñÔ´Ë÷ÒýºÅµÄ

-*            5) ²»ÐèÒª¶ÔMMIA·¢À´µÄÔ´Ë÷ÒýÓÐЧÐÔ½øÐÐÅжϣ¬Òòµ±²ÎÊýÓÐÎ󣬯䷵»Ø0xff×÷ΪԴË÷Òý

-**************************************************************************/

-T_ZAti_ChannelInfo * __ps_static_func zAti_GetChannelIdByIndex(UINT32 iEvId, const BYTE iMmiaSrcIndex, BYTE iMmiaDestIndex, UINT8 *pChannelId)

-{

-    T_ZAti_ChannelInfo *pChnelNode = NULL; /* ʹÓÃÖ¸Õë½áµã */

-    

-    if(ZATI2_INVAL_MMIA_INDEX != iMmiaDestIndex)  /* ¿ÉÄÜ»á³öÏÖÎÞЧµÄÇé¿ö£¬µ«Ó³Éä±íÖÐÈ´ÒѾ­·ÖÅäË÷ÒýºÅ£¬Ôò±¨´í */

-    {

-        pChnelNode = zAti_GetChannelNodePtrByMmiaDestIndex(iMmiaDestIndex);

-    }

-    else /* ÎÞЧֵ */

-    {    /* ÈôÒѾ­ÓÐË÷ÒýºÅ£¬Ôò°´Ë÷ÒýºÅ£¬ÎÞË÷ÒýºÅ°´Í¨ÖªÏûÏ¢´¦Àí£¬ÈôÊÇÏìÓ¦ÎÞË÷ÒýºÅ£¬Ôò±¨´í */

-        /* ˵Ã÷Ϊһ¸ö֪ͨÏûÏ¢£¬ÔòÐèҪȥѰÕÒͨµÀÊÊÅä, »ñÖªÊÇÄÄÖÖÒµÎñ£¬Ó¦ÍùÄĸöͨµÀ·¢ */

-        pChnelNode = zAti_GetChannelNodePtrByMmiaSrcIndex(iMmiaSrcIndex);

-    }

-

-    if(NULL == pChnelNode)

-    {        

-        *pChannelId = zAti_IsDeliverAllMsg(iEvId)?ZATI2_CHANNEL_ID_NUMALL : ZATI2_CHANNEL_ID_INVALID;

-    }

-    else

-    {

-        *pChannelId = pChnelNode->iChnelId;

-    }

-        

-    return pChnelNode;

-}

-

-#ifdef USE_VOICE_SUPPORT

-/**************************************************************************

-* º¯ÊýÃû³Æ : zAti_UsbSioGetCcManIndex

-* ¹¦ÄÜÃèÊö : USBת´®¿ÚģʽÏ£¬Í¨¹ýͨµÀºÅ»ñÈ¡ºô½Ð¿ØÖÆÏà¹ØÏûÏ¢Ë÷ÒýºÅ

-* ²ÎÊý˵Ã÷£º (IN)£º 

-*            iSrcIndex      Ô´Ë÷ÒýºÅ£¬¼´Í¨µÀºÅ

-*            iEvId          ÏûÏ¢ID

-*            pEvData        ÏûÏ¢Ìå

-*            iDataLen        ÏûÏ¢Ì峤¶È

-*            pChnelNode      ͨµÀ½Úµã

-*            (OUT)£º

-*            pDestIndex     Ä¿µÄË÷ÒýºÅ

-*            pSrcCcManIndex     CCµÄË÷ÒýºÅ

-* ·µ »Ø Öµ : ³É¹¦·µ»ØZATI2_SUCCESS£»Ê§°Ü·µ»Ø´íÎóÀàÐÍ£»

-* ÆäËü˵Ã÷ : 

-*            ×¢Òâ¶à·ʱµÄÊÊÅä

-*            1£¬·µ»ØZATI2_SUCCESS£¬²Å¿ÉÒÔ¼ÌÐøÖ´ÐУ¬ÏûÏ¢·¢µ½Ð­ÒéÕ»£¬

-*            2£¬Èô·µ»ØZATI2_FALSEÔòÓ¦ÖÕÖ¹¸ÃÏûÏ¢¼ÌÐøÍùЭÒéÕ»·¢ËÍ

-*            3£¬ pChnelNodeµÄʹÓýöÏÞÓÚÆäÖеÄcmd_id¶ÔabortµÄÓ°Ïì

-**************************************************************************/

-SINT32 zAti_UsbSioGetCcManIndex(const UINT32 iEvId, UINT8 *pDestIndex, const T_ZAti_ChannelInfo *pChnelNode)

-{

-    UINT8 iCcNum = 0;

-

-    if(NULL == pDestIndex)

-    {

-        return ZATI2_FALSE;

-    }

-

-    switch(iEvId)

-    {

-    case MMIA_CC_ANS_MODE_REQ_EV:

-        {

-            for(iCcNum = 0; iCcNum < ZATI2_MAX_CALL_NUM; iCcNum++)

-            {

-                if((ZATI2_CALL_STATE_INCOMING == g_zAti_atDataEx[g_zAti_CurInstance].tCcMan.callInfo[iCcNum].callState)

-                    ||(ZATI2_CALL_STATE_WAITING== g_zAti_atDataEx[g_zAti_CurInstance].tCcMan.callInfo[iCcNum].callState)

-                    ||(ZATI2_CALL_STATE_ACTIVE == g_zAti_atDataEx[g_zAti_CurInstance].tCcMan.callInfo[iCcNum].callState))

-                {                     

-                    *pDestIndex = g_zAti_atDataEx[g_zAti_CurInstance].tCcMan.callInfo[iCcNum].iDestIndex;

-                    g_zAti_atDataEx[g_zAti_CurInstance].tCcMan.callInfo[iCcNum].iSrcIndex = pChnelNode->iSrcIndex; /* ±£´æÓ³Éä¹ØÏµ */

-                    break; /* ÕÒµ½Ò»Â·À´µç£¬ÔòÌø³ö */

-                }

-            }

-        }

-        break;

-        

-    case MMIA_CC_MODIFY_REQ_EV:        

-        for(iCcNum = 0; iCcNum < ZATI2_MAX_CALL_NUM; iCcNum++)

-        {

-            if(ZATI2_CALL_STATE_ACTIVE == g_zAti_atDataEx[g_zAti_CurInstance].tCcMan.callInfo[iCcNum].callState

-                && pChnelNode->iSrcIndex == g_zAti_atDataEx[g_zAti_CurInstance].tCcMan.callInfo[iCcNum].iSrcIndex)

-            {                    

-                *pDestIndex = g_zAti_atDataEx[g_zAti_CurInstance].tCcMan.callInfo[iCcNum].iDestIndex;

-                break; /* ÕÒµ½Ò»Â·À´µç£¬ÔòÌø³ö */

-            }

-        }

-        break;

-        

-    case MMIA_CC_DIS_MODE_REQ_EV:

-        {         

-            for(iCcNum = 0; iCcNum < ZATI2_MAX_CALL_NUM; iCcNum++) 

-            {

-                if((g_zAti_atDataEx[g_zAti_CurInstance].tCcMan.callInfo[iCcNum].callState == ZATI2_CALL_STATE_ACTIVE)

-                    && (pChnelNode->iSrcIndex == g_zAti_atDataEx[g_zAti_CurInstance].tCcMan.callInfo[iCcNum].iSrcIndex))

-                {                 

-                    *pDestIndex = g_zAti_atDataEx[g_zAti_CurInstance].tCcMan.callInfo[iCcNum].iDestIndex;

-                    return ZATI2_SUCCESS; 

-                }

-            }

-            for(iCcNum = 0; iCcNum < ZATI2_MAX_CALL_NUM; iCcNum++) 

-            {

-                if((ZATI2_CALL_STATE_INCOMING == g_zAti_atDataEx[g_zAti_CurInstance].tCcMan.callInfo[iCcNum].callState)

-                   ||(ZATI2_CALL_STATE_WAITING== g_zAti_atDataEx[g_zAti_CurInstance].tCcMan.callInfo[iCcNum].callState))/* ¹Ò¶ÏÀ´µç*/ 

-                {                     

-                    *pDestIndex = g_zAti_atDataEx[g_zAti_CurInstance].tCcMan.callInfo[iCcNum].iDestIndex;

-                    g_zAti_atDataEx[g_zAti_CurInstance].tCcMan.callInfo[iCcNum].iSrcIndex = pChnelNode->iSrcIndex; 

-                    return ZATI2_SUCCESS; 

-                }

-            }

-            for(iCcNum = 0; iCcNum < ZATI2_MAX_CALL_NUM; iCcNum++) 

-            {

-                if((g_zAti_atDataEx[g_zAti_CurInstance].tCcMan.callInfo[iCcNum].iXid != ZATI2_INVAL_MMIA_INDEX)

-                    && (pChnelNode->iSrcIndex == g_zAti_atDataEx[g_zAti_CurInstance].tCcMan.callInfo[iCcNum].iSrcIndex))

-                {

-                    *pDestIndex = g_zAti_atDataEx[g_zAti_CurInstance].tCcMan.callInfo[iCcNum].iDestIndex;

-                    return ZATI2_SUCCESS; 

-                }

-            }

-            *pDestIndex = ZATI2_CHANNEL_ID_CC_MO;/* ЭÒéÕ»CCµ¥Í¨µÀ±£»¤*/ 

-        }

-        break;

-    case EV_ZATI2_DTMF_REQ:

-        {

-            for(iCcNum = 0; iCcNum < ZATI2_MAX_CALL_NUM; iCcNum++)                

-            {

-                if((g_zAti_atDataEx[g_zAti_CurInstance].tCcMan.callInfo[iCcNum].callState == ZATI2_CALL_STATE_ACTIVE)

-                    && (pChnelNode->iSrcIndex == g_zAti_atDataEx[g_zAti_CurInstance].tCcMan.callInfo[iCcNum].iSrcIndex))

-                {                 

-                    *pDestIndex = g_zAti_atDataEx[g_zAti_CurInstance].tCcMan.callInfo[iCcNum].iDestIndex;

-                    break; 

-                }

-            }

-            //if(pChnelNode->iSrcIndex == ZATI2_DTMF_SRCINDEX)

-            //{

-            for(iCcNum = 0; iCcNum < ZATI2_MAX_CALL_NUM; iCcNum++)                

-            {

-                if((g_zAti_atDataEx[g_zAti_CurInstance].tCcMan.callInfo[iCcNum].callState == ZATI2_CALL_STATE_DIALING)

-                    ||(g_zAti_atDataEx[g_zAti_CurInstance].tCcMan.callInfo[iCcNum].callState == ZATI2_CALL_STATE_ALERTING)

-                    ||(g_zAti_atDataEx[g_zAti_CurInstance].tCcMan.callInfo[iCcNum].callState == ZATI2_CALL_STATE_ACTIVE))

-                {                

-                    *pDestIndex = g_zAti_atDataEx[g_zAti_CurInstance].tCcMan.callInfo[iCcNum].iDestIndex;

-                    break; 

-                }

-            }

-            //}

-        }

-        break;

-

-    default: /* ÆäËûÕߣ¬²»ÒÀÀµÊÇ·ñÓе绰 */

-        break;

-    }

-    if((*pDestIndex) == 0)

-    {

-        *pDestIndex = ZATI2_INVAL_MMIA_INDEX;

-    }

-

-    return ZATI2_SUCCESS;

-}

-#endif

-/**************************************************************************

-* º¯ÊýÃû³Æ£º zAti_UsbSioGetChange

-* ¹¦ÄÜÃèÊö£º µã·Ö8λIPµØÖ·¸ñʽ»¯Îª32λµØÖ·

-* ²ÎÊý˵Ã÷£º (IN)£º 

-*            pSrcAddr       8λ¸ñʽÊý¾Ý

-*            (OUT)£ºÎÞ

-* ·µ »Ø Öµ£º 32λ¸ñʽÊýÖµ

-* ÆäËü˵Ã÷£º 

-*            ÐèҪעÒâ

-**************************************************************************/  

-UINT16 __ps_4g_func zAti_UsbSioGetChange(UINT8 *pSrcAddr)

-{

-    return ( (pSrcAddr[0] << 8) |(pSrcAddr[1]));

-}

-

-/****************************************************************

-º¯ÊýÃû³Æ:zAti_GetIpcpOptionsInfo

-º¯Êý¹¦ÄÜ:ÌîдIPCPЭÒéµÄPCOÐÅÏ¢617002190564

-****************************************************************/

-VOID  __ps_4g_func zAti_GetIpcpOptionsInfo(T_ZAti_ProtocolCfgOpt * pIpcpOptions, UINT16 IpcpLen)

-{

-    zOss_Memset((UINT8 *)pIpcpOptions, 0, IpcpLen);

-    pIpcpOptions->iCodeFile = 1; /* Configure-Request */

-    pIpcpOptions->iprotocolId = 1; /*  */

-    pIpcpOptions->iContentLen = zAti_UsbSioGetChange((UINT8 *)&IpcpLen);//ipcpOptions.iContentLen = iLenPcpOptions;

-    pIpcpOptions->PriDnsAddr.iType = 0x81;

-    pIpcpOptions->PriDnsAddr.iLen = 6;

-    pIpcpOptions->SecDnsAddr.iType = 0x83;

-    pIpcpOptions->SecDnsAddr.iLen = 6;

-    return;

-}

-/****************************************************************

-º¯ÊýÃû³Æ:zAti_GetIpcpPcoInfo

-º¯Êý¹¦ÄÜ:¹¹ÔìIPCPЭÒéµÄPCOÂëÁ÷617002190564

-****************************************************************/

-VOID __ps_4g_func zAti_GetIpcpPcoInfo(T_zDev_AtMem_SmCidData* ptSmData, BYTE bNum, T_ZAti_ProtocolCfgOpt * pIpcpOptions,

-            UINT16 IpcpLen,T_zMmiaSm_GetPco_Rsp   *pSmGetPcoRsp)

-{

-    if(ptSmData->tPdpContext.bPdpType == Z_APMMIA_SM_IPV4V6 ||ptSmData->tPdpContext.bPdpType == Z_APMMIA_SM_IPV4)

-    {

-        pSmGetPcoRsp->atCidPco[bNum].ptPco->bProtNum = 1;

-        pSmGetPcoRsp->atCidPco[bNum].ptPco->atProtList[0].wId = 0x8021;

-        pSmGetPcoRsp->atCidPco[bNum].ptPco->atProtList[0].bLen = (UINT8)IpcpLen;

-        zOss_Memcpy((UINT8 *)pSmGetPcoRsp->atCidPco[bNum].ptPco->atProtList[0].abBuf, (UINT8 *)pIpcpOptions, IpcpLen);

-    }

-    if(ptSmData->tPdpContext.bPdpType == Z_APMMIA_SM_IPV4V6 ||ptSmData->tPdpContext.bPdpType == Z_APMMIA_SM_IPV6)

-    {

-        if (zAti_PcoItemIsValidByPcoId(3))

-        {

-            pSmGetPcoRsp->atCidPco[bNum].ptPco->bAddParaNum = 1;

-            pSmGetPcoRsp->atCidPco[bNum].ptPco->atAddParaList[0].wId = 3;

-            pSmGetPcoRsp->atCidPco[bNum].ptPco->atAddParaList[0].bLen = 0;

-        }

-    }

-    return;

-}

-/***************************************************************************

-º¯ÊýÃû³Æ:zAti_GetPapPcoInfo

-º¯Êý¹¦ÄÜ:¸ù¾ÝATMEMÀïµÄ¼øÈ¨²ÎÊý¹¹Ôì¼øÈ¨ÀàÐÍΪPAPµÄPCOÂëÁ÷

-                          ÂëÁ÷ÄÚÈÝΪͷ²¿(4BYTE)+Óû§Ãû+ÃÜÂë617002190564

-****************************************************************************/

-VOID zAti_GetPapPcoInfo(T_zDev_AtMem_SmCidData* ptSmData, BYTE bNum,T_zMmiaSm_GetPco_Rsp   *pSmGetPcoRsp, PBYTE pbIndex)

-{

-    BYTE bPssWdLen = ptSmData->tPcoAuth.tPapChapInfo.bPassWordLen;

-    BYTE bUrNmLen =  ptSmData->tPcoAuth.tPapChapInfo.bUserNameLen;

-

-    pSmGetPcoRsp->atCidPco[bNum].ptPco->bProtNum = *pbIndex + 1;

-    pSmGetPcoRsp->atCidPco[bNum].ptPco->atProtList[*pbIndex].wId = 0xC023;

-    pSmGetPcoRsp->atCidPco[bNum].ptPco->atProtList[*pbIndex].bLen = (BYTE)(bPssWdLen+bUrNmLen+2+Z_ATI_PAPCHAPDNSIP_VAL_LEN);

-    pSmGetPcoRsp->atCidPco[bNum].ptPco->atProtList[*pbIndex].abBuf[0] = 0x01;//Authenticate-Request

-    pSmGetPcoRsp->atCidPco[bNum].ptPco->atProtList[*pbIndex].abBuf[1] = 0x01;//Identifier

-    pSmGetPcoRsp->atCidPco[bNum].ptPco->atProtList[*pbIndex].abBuf[3] = pSmGetPcoRsp->atCidPco[bNum].ptPco->atProtList[*pbIndex].bLen;//Length

-    pSmGetPcoRsp->atCidPco[bNum].ptPco->atProtList[*pbIndex].abBuf[4] = bUrNmLen;

-    zOss_Memcpy(pSmGetPcoRsp->atCidPco[bNum].ptPco->atProtList[*pbIndex].abBuf+Z_ATI_PAPCHAPDNSIP_VAL_LEN+1, ptSmData->tPcoAuth.tPapChapInfo.abUserName, bUrNmLen);

-    pSmGetPcoRsp->atCidPco[bNum].ptPco->atProtList[*pbIndex].abBuf[Z_ATI_PAPCHAPDNSIP_VAL_LEN+1+bUrNmLen] = bPssWdLen;

-    zOss_Memcpy(pSmGetPcoRsp->atCidPco[bNum].ptPco->atProtList[*pbIndex].abBuf+

-    Z_ATI_PAPCHAPDNSIP_VAL_LEN+2+bUrNmLen, ptSmData->tPcoAuth.tPapChapInfo.abPassWord, bPssWdLen);

-    (*pbIndex)++;

-    return;

-}

-/********************************************************************

-º¯ÊýÃû³Æ:zAti_GetChapPcoInfo       617002190564

-º¯Êý¹¦ÄÜ:¸ù¾ÝATMEMÀïµÄ¼øÈ¨²ÎÊý¹¹ÔìCHAPÀàÐ͵ÄPCOÂëÁ÷

-±¸×¢:chapÂëÁ÷µÄÄÚÈÝΪÁ½Ìõ£¬ÌîдµÄÄÚÈݲ»Ò»Ñù

-chap1:  Í·²¿(4BYTE)+Ëæ»úÊý+ MT NAME     chap2:  Í·²¿(4BYTE)+hash + username

-*********************************************************************/

-VOID zAti_GetChapPcoInfo(T_zDev_AtMem_SmCidData* ptSmData, BYTE bNum,T_zMmiaSm_GetPco_Rsp   *pSmGetPcoRsp, PBYTE pbIndex)

-{

-    BYTE bUrNmLen =  ptSmData->tPcoAuth.tPapChapInfo.bUserNameLen;

-

-    pSmGetPcoRsp->atCidPco[bNum].ptPco->bProtNum = *pbIndex + 1;

-    pSmGetPcoRsp->atCidPco[bNum].ptPco->atProtList[*pbIndex].wId = 0xC223;

-    pSmGetPcoRsp->atCidPco[bNum].ptPco->atProtList[*pbIndex].bLen =  (BYTE)(Z_DEV_AtMem_MAX_CHALLENGE_LEN+bUrNmLen+Z_ATI_PAPCHAPDNSIP_VAL_LEN+1);/*Ëæ»úÊý³¤+MT NAME+Ëæ»úÊý³¤¶È×Ö½Ú*/

-    pSmGetPcoRsp->atCidPco[bNum].ptPco->atProtList[*pbIndex].abBuf[0] = 0x01;//Authenticate-Request

-    pSmGetPcoRsp->atCidPco[bNum].ptPco->atProtList[*pbIndex].abBuf[1] = 0x00;//Identifier

-    pSmGetPcoRsp->atCidPco[bNum].ptPco->atProtList[*pbIndex].abBuf[3] = pSmGetPcoRsp->atCidPco[bNum].ptPco->atProtList[*pbIndex].bLen;//Length

-    pSmGetPcoRsp->atCidPco[bNum].ptPco->atProtList[*pbIndex].abBuf[4] = Z_DEV_AtMem_MAX_CHALLENGE_LEN;//Ëæ»úÊý³¤¶È

-    zOss_Memcpy(pSmGetPcoRsp->atCidPco[bNum].ptPco->atProtList[*pbIndex].abBuf+

-    Z_ATI_PAPCHAPDNSIP_VAL_LEN+1,ptSmData->tPcoAuth.tPapChapInfo.abChallenge,Z_DEV_AtMem_MAX_CHALLENGE_LEN);

-    zOss_Memcpy(pSmGetPcoRsp->atCidPco[bNum].ptPco->atProtList[*pbIndex].abBuf+Z_ATI_PAPCHAPDNSIP_VAL_LEN+1+Z_DEV_AtMem_MAX_CHALLENGE_LEN,

-        ptSmData->tPcoAuth.tPapChapInfo.abUserName,bUrNmLen);

-

-    (*pbIndex)++;

-

-    pSmGetPcoRsp->atCidPco[bNum].ptPco->bProtNum = *pbIndex + 1;

-    pSmGetPcoRsp->atCidPco[bNum].ptPco->atProtList[*pbIndex].wId = 0xC223;

-    pSmGetPcoRsp->atCidPco[bNum].ptPco->atProtList[*pbIndex].bLen =  (BYTE)(Z_DEV_AtMem_MAX_HASH_LEN + Z_ATI_PAPCHAPDNSIP_VAL_LEN+1+bUrNmLen);

-    pSmGetPcoRsp->atCidPco[bNum].ptPco->atProtList[*pbIndex].abBuf[0] = 0x02;//Authenticate-Request

-    pSmGetPcoRsp->atCidPco[bNum].ptPco->atProtList[*pbIndex].abBuf[1] = 0x00;//Identifier

-    pSmGetPcoRsp->atCidPco[bNum].ptPco->atProtList[*pbIndex].abBuf[3] = pSmGetPcoRsp->atCidPco[bNum].ptPco->atProtList[*pbIndex].bLen;

-    pSmGetPcoRsp->atCidPco[bNum].ptPco->atProtList[*pbIndex].abBuf[4] = Z_DEV_AtMem_MAX_HASH_LEN;/*HASH LEN*/

-    zOss_Memcpy(pSmGetPcoRsp->atCidPco[bNum].ptPco->atProtList[*pbIndex].abBuf+

-        Z_ATI_PAPCHAPDNSIP_VAL_LEN+1,ptSmData->tPcoAuth.tPapChapInfo.abHashRsp,Z_DEV_AtMem_MAX_HASH_LEN);/*HASH*/

-    zOss_Memcpy(pSmGetPcoRsp->atCidPco[bNum].ptPco->atProtList[*pbIndex].abBuf+

-        Z_ATI_PAPCHAPDNSIP_VAL_LEN+1+Z_DEV_AtMem_MAX_HASH_LEN,ptSmData->tPcoAuth.tPapChapInfo.abUserName,bUrNmLen);

-    return;

-}

-/**************************************************

-º¯Êý¹¦ÄÜ:»ñÈ¡APN¼øÈ¨ÐÅÏ¢

-º¯ÊýÃû³Æ:zAti_GetPapChapPcoInfo

-**************************************************/

-VOID __ps_4g_func zAti_GetPapChapPcoInfo(T_zDev_AtMem_SmCidData* ptSmData,BYTE iCidNum,T_zMmiaSm_GetPco_Rsp   *pSmGetPcoRsp)

-{

-    if(Z_ATI_PDP_Define == ptSmData->bPcoAuthFg)

-    {

-        BYTE bIndex = pSmGetPcoRsp->atCidPco[iCidNum].ptPco->bProtNum;

-        if(Z_MMIASM_PDP_AUTH_TYPE_PAP == ptSmData->tPcoAuth.bAuthType)

-        {

-            zAti_GetPapPcoInfo(ptSmData, iCidNum,pSmGetPcoRsp,&bIndex);

-        }

-        if(Z_MMIASM_PDP_AUTH_TYPE_CHAP == ptSmData->tPcoAuth.bAuthType)

-        {

-            zAti_GetChapPcoInfo(ptSmData, iCidNum,pSmGetPcoRsp,&bIndex);

-        }

-        if(Z_MMIASM_PDP_AUTH_TYPE_PAPCHAP == ptSmData->tPcoAuth.bAuthType)

-        {

-            zAti_GetPapPcoInfo(ptSmData, iCidNum,pSmGetPcoRsp,&bIndex);

-            zAti_GetChapPcoInfo(ptSmData, iCidNum,pSmGetPcoRsp,&bIndex);

-        }

-    }

-    return;

-}

-/**********************************************************

-º¯Êý¹¦ÄÜ:»ñÈ¡P-CSCF Address RequestÐÅÏ¢

-º¯ÊýÃû³Æ:zAti_GetPcsfPcoInfo

-**********************************************************/

-VOID __ps_4g_func zAti_GetPcscfPcoInfo(T_zDev_AtMem_SmCidData* ptSmData, BYTE iCidNum, T_zMmiaSm_GetPco_Rsp* pSmGetPcoRsp)

-{

-    BYTE bIndex = pSmGetPcoRsp->atCidPco[iCidNum].ptPco->bAddParaNum;

-

-    if(Z_APMMIA_PREFER_PCSCF_THROUGH_NAS_SIGNAL == ptSmData->tPdpContext.bPCscfDisc)

-    {

-        if(ptSmData->tPdpContext.bPdpType == Z_APMMIA_SM_IPV4V6 ||ptSmData->tPdpContext.bPdpType == Z_APMMIA_SM_IPV4)

-        {

-            if (zAti_PcoItemIsValidByPcoId(12))

-            {

-                pSmGetPcoRsp->atCidPco[iCidNum].ptPco->bAddParaNum++;

-                pSmGetPcoRsp->atCidPco[iCidNum].ptPco->atAddParaList[bIndex].wId = 0x000C;

-                bIndex++;

-            }

-        }

-  

-        if(ptSmData->tPdpContext.bPdpType == Z_APMMIA_SM_IPV4V6 ||ptSmData->tPdpContext.bPdpType == Z_APMMIA_SM_IPV6)

-        {

-            if (zAti_PcoItemIsValidByPcoId(1))

-            {

-                pSmGetPcoRsp->atCidPco[iCidNum].ptPco->bAddParaNum++;

-                pSmGetPcoRsp->atCidPco[iCidNum].ptPco->atAddParaList[bIndex].wId = 0x0001;

-            }

-        }

-    }

-    return;

-}

-/**********************************************************

-º¯Êý¹¦ÄÜ:»ñÈ¡IM CNÐÅÏ¢

-º¯ÊýÃû³Æ:zAti_GetImcnPcoInfo

-**********************************************************/

-VOID __ps_4g_func zAti_GetImcnPcoInfo(T_zDev_AtMem_SmCidData* ptSmData, BYTE iCidNum, T_zMmiaSm_GetPco_Rsp* pSmGetPcoRsp)

-{

-    BYTE bIndex = pSmGetPcoRsp->atCidPco[iCidNum].ptPco->bAddParaNum;

-

-    if(Z_APMMIA_PDPCONT_IS_FOR_IMCN == ptSmData->tPdpContext.bImcnSignInd)

-    {

-        if (zAti_PcoItemIsValidByPcoId(2))

-        {

-            pSmGetPcoRsp->atCidPco[iCidNum].ptPco->bAddParaNum++;

-            pSmGetPcoRsp->atCidPco[iCidNum].ptPco->atAddParaList[bIndex].wId = 0x0002;

-        }

-    }

-    return;

-}

-/*******************************************************************

-º¯Êý¹¦ÄÜ:¸ù¾ÝIPv4AddrAllocÕâ¸ö×Ö¶ÎÀ´ÌîдPCO¸½¼Ó²ÎÊýÏî

-º¯ÊýÃû³Æ:

-*******************************************************************/

-VOID __ps_4g_func zAti_GetIPv4AddrAllocPcoInfo(T_zDev_AtMem_SmCidData* ptSmData, BYTE iCidNum, T_zMmiaSm_GetPco_Rsp* pSmGetPcoRsp)

-{

-    BYTE bIndex = pSmGetPcoRsp->atCidPco[iCidNum].ptPco->bAddParaNum;

-

-    if(Z_APMMIA_IPV4ADDR_ALLOC_THROUGH_SIGNAL == ptSmData->tPdpContext.bIPv4AddrAlloc)

-    {

-        if (zAti_PcoItemIsValidByPcoId(10))

-        {

-            pSmGetPcoRsp->atCidPco[iCidNum].ptPco->bAddParaNum++;

-            pSmGetPcoRsp->atCidPco[iCidNum].ptPco->atAddParaList[bIndex].wId = 0x000A;

-        }

-    }

-    else if(Z_APMMIA_IPV4ADDR_ALLOC_THROUGH_DHCP == ptSmData->tPdpContext.bIPv4AddrAlloc)

-    {

-        if (zAti_PcoItemIsValidByPcoId(11))

-        {

-            pSmGetPcoRsp->atCidPco[iCidNum].ptPco->bAddParaNum++;

-            pSmGetPcoRsp->atCidPco[iCidNum].ptPco->atAddParaList[bIndex].wId = 0x000B;

-        }

-    }

-    return;

-}

-VOID __ps_4g_func zAti_GetIpv4info(T_zDev_AtMem_SmCidData* ptSmData, BYTE iCidNum, T_zMmiaSm_GetPco_Rsp* pSmGetPcoRsp)

-{

-    BYTE bIndex = pSmGetPcoRsp->atCidPco[iCidNum].ptPco->bAddParaNum;

-

-    if(ptSmData->tPdpContext.bPdpType == Z_APMMIA_SM_IPV4V6 ||ptSmData->tPdpContext.bPdpType == Z_APMMIA_SM_IPV4)

-    {

-        if (zAti_PcoItemIsValidByPcoId(13))

-        {

-            pSmGetPcoRsp->atCidPco[iCidNum].ptPco->bAddParaNum++;

-            pSmGetPcoRsp->atCidPco[iCidNum].ptPco->atAddParaList[bIndex].wId = 0x000D;

-        }

-    }

-    return;

-}

-

-VOID __ps_4g_func zAti_GetMsisdnInfo(BYTE iCidNum, T_zMmiaSm_GetPco_Rsp* pSmGetPcoRsp)

-{

-    T_zAti_NV_Msisdn  tNvMsisdn = {0};

-    BYTE bIndex = pSmGetPcoRsp->atCidPco[iCidNum].ptPco->bAddParaNum;

-    BYTE bNvItemId = (g_zAti_CurInstance ? Z_ATI_NV_Msisdn2 : Z_ATI_NV_Msisdn1);

-

-    zDev_NV_AtiReadItem(bNvItemId, (BYTE*)&tNvMsisdn);

-

-    if(zAti_PcoItemIsValidByPcoId(14) && tNvMsisdn.bNumLen == 0)

-    {

-        pSmGetPcoRsp->atCidPco[iCidNum].ptPco->bAddParaNum++;

-        pSmGetPcoRsp->atCidPco[iCidNum].ptPco->atAddParaList[bIndex].wId = 0x000E;

-    }

-}

-/**************************************************************************

-* º¯ÊýÃû³Æ£º zAti_UsbSioSmZgipdnsInd

-* ¹¦ÄÜÃèÊö£º ½âÎö³öIP/DNSµØÖ·£¬·¢ËÍָ֪ͨʾÏûÏ¢

-* ²ÎÊý˵Ã÷£º (IN)£º ÎÞ

-*            iAtiIndex       ATI2Ë÷ÒýºÅ

-*            iMmiaIndex       MMIAË÷ÒýºÅ 

-*            (OUT)£ºÎÞ

-* ·µ »Ø Öµ£º ÎÞ

-* ÆäËü˵Ã÷£º 

-*            ÔÚÏìÓ¦CONNECT֮ǰ½øÐвÙ×÷

-*            Óû§Ö÷¶¯¼¤»îºó²ÅÐèÒªµ÷Óã¬ÈôΪATI2Ö÷¶¯¼¤»î£¬Ôò²»ÐèÒªµ÷ÓÃ

-**************************************************************************/   

-VOID __ps_4g_func zAti_UsbSioSmZgipdnsInd(T_zMmiaSm_PdpAct_Cnf * pSmActDeacCnf, UINT8* pSrc)

-{

-    UINT8                iCidNum          = 0;

-    T_ZAti_SmZgipdnsInd *pSmZgipdnsInd = (T_ZAti_SmZgipdnsInd *)zAti_GetUB(sizeof(T_ZAti_SmZgipdnsInd));

-    

-    pSmZgipdnsInd->iDestIndex = pSmActDeacCnf->bDesIndex;

-    pSmZgipdnsInd->iSrcIndex = pSmActDeacCnf->bSrcIndex;

-    for(iCidNum = 0; iCidNum < ZATI2_SM_MAX_SMCID_NUM; iCidNum++)

-    {

-        if(g_zAti_SmContext[g_zAti_CurInstance].lastCidTab[iCidNum].isUsed &&

-            g_zAti_SmContext[g_zAti_CurInstance].lastCidTab[iCidNum].iCid != pSrc[g_zAti_SmContext[g_zAti_CurInstance].lastCidTab[iCidNum].iCid -1]

-            && zAti_SmGetPdpAddrByCid(g_zAti_SmContext[g_zAti_CurInstance].lastCidTab[iCidNum].iCid, &(pSmZgipdnsInd->smIpDnsInfo[pSmZgipdnsInd->iCidNum]), 

-            g_zAti_SmContext[g_zAti_CurInstance].lastCidTab[iCidNum].extActCid, g_zAti_CurInstance))

-        {

-            pSmZgipdnsInd->iCidNum++;

-        }

-    }

-    zOss_TaskSendData(EV_ZATI2_SM_ZGIPDNS_IND, (VOID *)pSmZgipdnsInd, sizeof(T_ZAti_SmZgipdnsInd), g_zAti_Context.taskIdMy);

-    return;

-}

-/******************************************************

-º¯ÊýÃû³Æ:zAti_GetIdelCid

-º¯Êý¹¦ÄÜ:»ñÈ¡·ûºÏÀàÐ͵ÄCID

-ѰÕÒ¹æÔò:

-1)ûÓв¦ºÅµÄIPÀàÐ͵ÄCID

-2)ûÓв¦ºÅµÄPPPÀàÐ͵ÄCID

-******************************************************/

-BOOL zAti_GetMoIdelCid(T_zApMmia_SmActDeact_Req* pAct, PBYTE pbPdpType)

-{

-    BYTE bCid = 0;

-    BYTE bFstCid = Z_DEV_AtMem_MININUM_CID;

-    BYTE bLstCid = Z_DEV_AtMem_MAXINUM_CID;

-

-#ifdef DUAL_CARD_DUAL_STANDBY

-    if(g_zAti_CurInstance == Z_ATI_INSNO_1)

-    {

-        bLstCid = 4;

-    }

-    else

-    {

-        bFstCid = 5;

-    }

-#endif

-

-    for (bCid = bFstCid; bCid <= bLstCid; bCid++)

-    {

-        if(zAti_CheakCidAndGetPdpType(bCid, pbPdpType) && *pbPdpType == Z_APMMIA_SM_IPV4)

-        {

-            pAct->abCid[0]=bCid;

-            return TRUE;

-        }

-    }

-

-    for (bCid = bFstCid; bCid <= bLstCid;bCid++)

-    {

-        if(zAti_CheakCidAndGetPdpType(bCid, pbPdpType) && *pbPdpType == Z_APMMIA_SM_PPP)

-        {

-            pAct->abCid[0]=bCid;

-            return TRUE;

-        }

-    }

-    return FALSE;

-}

-/**************************************************************************************

-º¯ÊýÃû³Æ:zAti_GetIdelCid

-º¯Êý¹¦ÄÜ:»ñÈ¡·ûºÏÀàÐ͵ÄCID

-ѰÕÒ¹æÔò:

-1)ѰÕÒûÓ줻îµÄÀàÐÍÆ¥ÅäµÄÒѶ¨ÒåCID

-2)ѰÕÒûÓ줻îµÄûÓж¨ÒåµÄ¿ÕÏÐCID

-**************************************************************************************/

-BOOL zAti_GetMtIdleCid(BYTE bType, PBYTE pbCid)

-{

-    BYTE i = 0;

-    BYTE bFstCid = Z_DEV_AtMem_MININUM_CID;

-    BYTE bLstCid = Z_DEV_AtMem_MAXINUM_CID;

-    T_zMmiaSm_PdpAddr      *ptPdpAddr = (T_zMmiaSm_PdpAddr*)zAti_GetUB(sizeof(T_zMmiaSm_PdpAddr));  

-    T_zMmiaSm_PcoInfo      *ptPcoInfo = (T_zMmiaSm_PcoInfo*)zAti_GetUB(sizeof(T_zMmiaSm_PcoInfo));

-    T_zDev_AtMem_SmCidData *ptSmData = (T_zDev_AtMem_SmCidData*)zAti_GetUB(sizeof(T_zDev_AtMem_SmCidData));

-

-#ifdef DUAL_CARD_DUAL_STANDBY

-    if(g_zAti_CurInstance == Z_ATI_INSNO_1)

-    {

-        bLstCid = 4;

-    }

-    else

-    {

-        bFstCid = 5;

-    }

-#endif

-

-    for (i = bFstCid; i <= bLstCid; i++)

-    {

-        zDev_AtMemReadItem(Z_AtMem_ID_SmCidData, i, (PBYTE)ptSmData, g_zAti_CurInstance);

-        if(ptSmData->bPdpInfoFg==Z_ATI_PDP_Define&&ptSmData->bContFlag == Z_ATI_CONTXT_First

-            &&ptSmData->tPdpContext.bPdpType==bType&& (0 == get_cid_state(i)))

-        {

-            *pbCid = i;

-            zAti_RetUB((VOID**)&ptPdpAddr);

-            zAti_RetUB((VOID**)&ptPcoInfo);

-            zAti_RetUB((VOID**)&ptSmData);

-            return TRUE;

-        }

-    }

-    for (i = bFstCid; i <= bLstCid; i++)

-    {

-        zDev_AtMemReadItem(Z_AtMem_ID_SmCidData, i, (PBYTE)ptSmData, g_zAti_CurInstance);

-        if(ptSmData->bPdpInfoFg==Z_ATI_PDP_NotDefine && (0 == get_cid_state(i)))

-        {

-            *pbCid = i;

-            zAti_RetUB((VOID**)&ptPdpAddr);

-            zAti_RetUB((VOID**)&ptPcoInfo);

-            zAti_RetUB((VOID**)&ptSmData);

-            return TRUE;

-        }

-    }

-    zAti_RetUB((VOID**)&ptPdpAddr);

-    zAti_RetUB((VOID**)&ptPcoInfo);

-    zAti_RetUB((VOID**)&ptSmData);

-    return FALSE;

-}

-/**************************************************************************************

-º¯ÊýÃû³Æ:zAti_PppTransCid

-º¯Êý¹¦ÄÜ:½«ATD/CGDATAЯ´øCIDת»»µ½CGACT½Ó¿ÚÖÐÈ¥

-**************************************************************************************/

-BOOL zAti_PppTransCid(T_zApMmia_SmActDeact_Req* pAct, 

-T_zMmiaSm_DataState_Req* pDataStateReq, PBYTE pbPdpType)

-{

-    pAct->bSrcIndex = pDataStateReq->bSrcIndex;

-    pAct->bDesIndex = pDataStateReq->bDesIndex;

-    pAct->bTypeFlg = Z_APMMIA_VALID;

-    pAct->bType = Z_APMMIA_SM_PDP_ACTIVE;

-    pAct->bCidNum = 1;

-

-    /*¶à¸öCIDʱֻѡÔñµÚÒ»¸öCID½øÐ줻î*/

-    if(pDataStateReq->bCidNum > 0&&

-        zAti_CheakCidAndGetPdpType(pDataStateReq->abCid[0], pbPdpType))

-    {

-        pAct->abCid[0]=pDataStateReq->abCid[0];

-        return TRUE;

-    }

-

-    if(pDataStateReq->bCidNum == 0)

-    {

-        return zAti_GetMoIdelCid(pAct, pbPdpType);

-    }

-    return FALSE;

-}

-

-/*************************************************************

-º¯ÊýÃû³Æ:zAti_HandleConnInd

-º¯Êý¹¦ÄÜ:Éϱ¨CONNECT Çл»Í¨µÀ

-*************************************************************/

-VOID zAti_HandleConnInd(BYTE bSourceIndex, BYTE bDestIndex)

-{

-    T_zApMmia_SmConnect_Ind      *ptApConnectInd = ZOSS_NULL;

-    T_zDev_AtMem_Mmia_PrivateMem tAtData       = {0};

-    

-    //if (Z_FAIL == zDev_AtMemReadItem(Z_AtMem_ID_MmiaPrvtMem, 0, (PBYTE)&tAtData))

-    //{               

-    //    zAti_SendExpt2TraceAgt(ERR_NvFailure,  TRACE_ERR_LEVEL_SEVERE,"");

-    //}

-    zDev_AtMemReadItem(Z_AtMem_ID_MmiaPrvtMem, 0, (PBYTE)&tAtData, g_zAti_CurInstance);

-    if (Z_APMMIA_CR_ENABLE == tAtData.bCrSet)

-    {

-        /* crÉϱ¨ÏÈÓÚconnectInd */

-        zAti_CrInd (bSourceIndex, bDestIndex, Z_APMMIA_CRSERV_GPRS, 0);

-    }

-    ptApConnectInd = (T_zApMmia_SmConnect_Ind*)zAti_GetUB(sizeof(T_zApMmia_SmConnect_Ind));

-    ptApConnectInd->bSrcIndex = bSourceIndex;

-    ptApConnectInd->bDesIndex = bDestIndex;

-

-    zAti_RecvServerHandlerSlaver(AP_MMIA_SM_CONNECT_IND_EV, (UINT8 *)ptApConnectInd, sizeof(T_zApMmia_SmConnect_Ind));

-    return;

-}

-/********************************************************

-º¯ÊýÃû³Æ:zAti_HandleNoCarrierCnf

-º¯Êý¹¦ÄÜ:Éϱ¨NOCARRIER Çл»Í¨µÀ

-*********************************************************/

-VOID zAti_HandleNoCarrierCnf(BYTE bSrcIndex, BYTE bDesIndex)

-{

-    T_zMmiaSm_NoCarrier_Cnf *pNoCarrierCnf = (T_zMmiaSm_NoCarrier_Cnf *)zAti_GetUB(sizeof(T_zMmiaSm_NoCarrier_Cnf));

-    pNoCarrierCnf->bSrcIndex = bSrcIndex;

-    pNoCarrierCnf->bDesIndex = bDesIndex;

-    zAti_RecvServerHandlerSlaver(MMIA_SM_NO_CARRIER_CNF_EV, (UINT8 *)pNoCarrierCnf, sizeof(T_zMmiaSm_NoCarrier_Cnf));

-    return;

-}

-/*********************************************************************

-º¯ÊýÃû³Æ:zAti_IsDataStatus

-º¯Êý¹¦ÄÜ:ÅжÏCIDÊÇ·ñÒѾ­²¦ºÅ

-**********************************************************************/

-BOOL __ps_4g_func zAti_IsDataStatus(BYTE bCid)

-{

-    BYTE bNum = 0;

-

-    /*²»ÔÊÐíÖØ¸´²¦ºÅ*/

-    for(bNum = 0; bNum<ZATI2_SM_MAX_SMCID_NUM; bNum++)

-    {

-        if((g_zAti_SmContext[g_zAti_CurInstance].lastCidTab[bNum].iCid == bCid

-        ||g_zAti_SmContext[g_zAti_CurInstance].lastCidTab[bNum].extActCid == bCid)

-        &&(g_zAti_SmContext[g_zAti_CurInstance].lastCidTab[bNum].isNdis

-        ||g_zAti_SmContext[g_zAti_CurInstance].lastCidTab[bNum].isPpp))

-        {

-            return TRUE;

-        }

-    }

-    return FALSE;

-}

-

-/*»ñÈ¡ATMEMÖж¨ÒåµÄCIDÀàÐÍ*/

-BOOL zAti_GetAtmemPdpType(PBYTE pAtMemBuf, PBYTE pbPdpType)

-{

-    T_zDev_AtMem_SmCidData *ptempSmData = ZOSS_NULL;

-    T_zDev_AtMem_SmCidData* pSmData = (T_zDev_AtMem_SmCidData *)pAtMemBuf;

-

-    if(pAtMemBuf == ZOSS_NULL||pbPdpType == ZOSS_NULL)

-    {

-        return FALSE;

-    }

-

-    if(pSmData->bPdpInfoFg == Z_ATI_PDP_Define

-        &&pSmData->bContFlag == Z_ATI_CONTXT_First)

-    {

-        *pbPdpType = pSmData->tPdpContext.bPdpType;

-        return TRUE;

-    }

-

-    if(pSmData->bPdpInfoFg == Z_ATI_PDP_Define

-        &&pSmData->bContFlag == Z_ATI_CONTXT_Secnd )

-    {

-        ptempSmData = (T_zDev_AtMem_SmCidData*)zAti_GetUB(sizeof(T_zDev_AtMem_SmCidData));

-        zDev_AtMemReadItem(Z_AtMem_ID_SmCidData, pSmData->bPreCid,(PBYTE)ptempSmData, g_zAti_CurInstance);

-        *pbPdpType = ptempSmData->tPdpContext.bPdpType;

-        zAti_RetUB((VOID**)&ptempSmData);

-        return TRUE;

-    }

-

-    return FALSE;

-}

-

-/*****************************************************************************

-º¯ÊýÃû³Æ:zAti_GetPdpType

-º¯Êý¹¦ÄÜ:»ñÈ¡½øÐÐMO PPP²¦ºÅµÄCIDÀàÐÍ

-****************************************************************************/

-BOOL zAti_GetCidPdpType(PBYTE pAtMemBuf, BYTE bCid, PBYTE pbPdpType)

-{ 

-    T_zDev_AtMem_SmCidData* pSmData = (T_zDev_AtMem_SmCidData *)pAtMemBuf;

-

-    if(pbPdpType == ZOSS_NULL||pAtMemBuf == ZOSS_NULL)

-    {

-        return FALSE;

-    }

-    

-    /*×ß²éÐÞ¸ÄΪ:Ö»»ñÈ¡ÒѾ­¶¨ÒåµÄCIDÀàÐÍ£¬Ö»Òª¶¨ÒåΪV4V6¾Í²»ÔÊÐí²¦ºÅ*/

-    

-    if (pSmData->bPdpInfoFg == Z_ATI_PDP_Define && zAti_GetAtmemPdpType(pAtMemBuf, pbPdpType))

-    {

-        return TRUE;

-    }

-

-    return FALSE;

-}

-/********************************************************************

-º¯ÊýÃû³Æ:zAti_CheakAndGetPdpType

-º¯Êý¹¦ÄÜ:¼ì²é²¢»ñÈ¡ÀàÐÍ

-×¢ÊÍ:Ŀǰ½öÖ§³ÖIPV4 ¼°PPPÀàÐÍ

-********************************************************************/

-BOOL zAti_CheakAndGetPdpType(PBYTE pAtMemBuf, BYTE bCid, PBYTE pbPdpType)

-{

-    if(!zAti_GetCidPdpType(pAtMemBuf, bCid, pbPdpType)

-        ||(*pbPdpType != Z_MMIASM_IPV4 && *pbPdpType != Z_MMIASM_PPP))

-    {

-        return FALSE;

-    }

-    return TRUE;

-}

-

-/****************************************************************************************

-º¯ÊýÃû³Æ:zAti_CheakCidAndGetPdpType

-º¯Êý¹¦ÄÜ:¼ì²éµ±Ç°CIDÊÇ·ñ·ûºÏ·¢ÆðMO PPP²¦ºÅµÄÌõ¼þ

-¼ì²é¹æÔò:Ŀǰ½öÖ§³ÖIPV4¼°PPPÀàÐÍ

-****************************************************************************************/

-BOOL zAti_CheakCidAndGetPdpType(BYTE bCid, PBYTE pbPdpType)

-{

-    BYTE bMastCid = 0;

-    BYTE bExCid = 0;

-    T_zDev_AtMem_SmCidData *ptSmData = (T_zDev_AtMem_SmCidData*)zAti_GetUB(sizeof(T_zDev_AtMem_SmCidData));

-

-    zDev_AtMemReadItem(Z_AtMem_ID_SmCidData,bCid,(PBYTE)ptSmData, g_zAti_CurInstance);

-

-    if(zAti_IsExCid(bCid, &bMastCid)||(zAti_IsMastCid(bCid, &bExCid) && (bExCid != 0)) ||zAti_IsDataStatus(bCid)

-        ||!zAti_CheakAndGetPdpType((PBYTE)ptSmData, bCid, pbPdpType))

-    {

-        zAti_RetUB((VOID**)&ptSmData);

-        return FALSE;

-    }

-    zAti_RetUB((VOID**)&ptSmData);

-    return TRUE;

-}

-

-

-

-

-/**************************************************************************

-* º¯ÊýÃû³Æ£º zAti_UsbSioSmDataStateReq

-* ¹¦ÄÜÃèÊö£º ½øÈëÊý¾Ý̬ÇëÇó£¬Ê¹ÓÃAT+CGDATAÃüÁî

-* ²ÎÊý˵Ã÷£º (IN)£º ÎÞ

-*            pDataPtr       Êý¾Ý

-*            iDataLen       Êý¾Ý³¤¶È 

-*            (OUT)£ºÎÞ

-* ·µ »Ø Öµ£º ÎÞ

-* ÆäËü˵Ã÷£º 

-*            ÔÚÏìÓ¦CONNECT֮ǰ½øÐвÙ×÷£¬ÐèÒª¼ì²éµ±Ç°ÊÇ·ñÒѾ­¼¤»î

-*            ½á¹¹zPS_ApMmia_SmDataState_Req

-**************************************************************************/  

-/* //--

-BOOL zAti_UsbSioSmDataStateReq(UINT8 *pDataPtr)

-{

-    T_zMmiaSm_DataState_Req *pDataStateReq = (T_zMmiaSm_DataState_Req *)pDataPtr;

-    g_zAti_SmContext[g_zAti_CurInstance].DataReqchnelId = pDataStateReq->bSrcIndex;

-    if(pDataStateReq->bCidNum > 0)

-    {

-        return zAti_SaveLastCidTab(pDataStateReq->abCid[0], pDataStateReq->bSrcIndex);

-    }

-    return TRUE;

-}

-*/

-

-/**************************************************************************

-* º¯ÊýÃû³Æ£º zAti_UsbSioSmMtActAnsReq

-* ¹¦ÄÜÃèÊö£º AT+CGANSÓ¦´ðMTµÄPDP¼¤»îÇëÇó

-* ²ÎÊý˵Ã÷£º (IN)£º ÎÞ

-*            pDataPtr       Êý¾Ý

-*            iDataLen       Êý¾Ý³¤¶È 

-*            (OUT)£ºÎÞ

-* ·µ »Ø Öµ£º ÎÞ

-* ÆäËü˵Ã÷£º 

-*            ×¢ÒâCIDµÄÓ³Éä¹ØÏµ£¬½á¹¹T_zPS_ApMmia_SmMtActAns_Req

-**************************************************************************/  

-BOOL zAti_UsbSioSmMtActAnsReq(VOID* pDataPtr)

-{

-    BYTE bCid = 0;

-    T_zDev_AtMem_SM_AutoRsp tAtData    = {0};

-    T_zApMmia_SmMtActAns_Req *pAnsReq = (T_zApMmia_SmMtActAns_Req *)pDataPtr;

-    zDev_AtMemReadItem(Z_AtMem_ID_AutoRsp, 0, (PBYTE)&tAtData, g_zAti_CurInstance);

-

-    if(tAtData.bCgauto != Z_APMMIA_TURN_OFF_RSP_PSDOMAIN

-        ||g_zAti_atDataEx[g_zAti_CurInstance].bMtAdrrType == 0)//·ÇÊÖ¶¯·ÇÒ»´ÎMTʱ±¨´í

-    {

-        return FALSE;

-    }

-    if(pAnsReq->bCidNum == 0&&Z_APMMIA_SM_MT_ACT_ACC == pAnsReq->bAnsType)

-    {

-        if(zAti_GetMtIdleCid(g_zAti_atDataEx[g_zAti_CurInstance].bMtAdrrType, &bCid))

-        {

-            pAnsReq->abCid[0] = bCid;

-            pAnsReq->bCidNum = 1;

-        }

-    }

-

-    if(Z_APMMIA_SM_MT_ACT_ACC == pAnsReq->bAnsType

-        &&pAnsReq->bCidNum == 0)

-    {

-        pAnsReq->bAnsType = Z_APMMIA_SM_MT_ACT_REJ;

-        zAti_SendExpt2TraceAgt(ERR_InvalidPara,  TRACE_ERR_LEVEL_NORMAL,"");

-    }

-

-    g_zAti_atDataEx[g_zAti_CurInstance].bMtAdrrType = 0;

-    return TRUE;

-}

-

-

-/**************************************************************************

-* º¯ÊýÃû³Æ£º zAti_UsbSioSmMtQueryIdleChInd

-* ¹¦ÄÜÃèÊö£º SM/MMIAµ½ATI2²éѯͨµÀ״ָ̬ʾ´¦Àíº¯Êý

-* ²ÎÊý˵Ã÷£º (IN)£º 

-*            pDataPtr       Êý¾Ý

-*            iDataLen       Êý¾Ý³¤¶È 

-*            (OUT)£ºÎÞ

-* ·µ »Ø Öµ£º ÎÞ

-* ÆäËü˵Ã÷£º 

-*            Ò»°ãÀ´Ëµ£¬µ±ÍøÂç(MT)ÇëÇ󼤻îʱ£¬²Å»áÓдËÏûÏ¢Éϱ¨

-*            ZPS_ApMmia_SmQueryIdleChInd_EvΪ¿ÕÏûÏ¢

-**************************************************************************/  

-VOID zAti_UsbSioSmMtQueryIdleChInd(VOID *pDataPtr) /* 0107 */

-{        

-    UINT8        destTask    = 0;

-    UINT8        iSendCount = 0;

-    UINT16      iLenQueryIdleChRsp = sizeof(T_zMmiaSm_QueryIdleCh_Rsp);

-    T_zMmiaSm_QueryIdleCh_Rsp  *pQueryIdleChRsp = NULL;

-    T_ZAti_ChannelInfo             *pChnelNodeDeliverAll = zAti_GetFirstChannelNodePtrByInstance(g_zAti_CurInstance);

-

-    BYTE bMaxChnlId = (g_zAti_CurInstance ? Z_ATI_INSTANCE_TWO_CHNL_MAX : Z_ATI_INSTANCE_ONE_CHNL_MAX);

-

-    if (!zAti_GetDestTaskByMsgID(MMIA_SM_IDLE_CHNL_QUERY_RSP_EV,&destTask))

-    {

-        return ;

-    }

-    pQueryIdleChRsp= (T_zMmiaSm_QueryIdleCh_Rsp *)zAti_GetUB(iLenQueryIdleChRsp);

-    

-    while(NULL != pChnelNodeDeliverAll && pChnelNodeDeliverAll->iChnelId <= bMaxChnlId)

-    {

-        if(ZATI2_CHANNEL_MODE_CMD == pChnelNodeDeliverAll->server_mode) /* Ñ¡ÔñÃüÁîͨµÀ */

-        {

-            iSendCount++;

-        }

-        

-        pChnelNodeDeliverAll = pChnelNodeDeliverAll->pNextCnNode;

-    }

-    

-    if(iSendCount <= 1) /* Ö»ÓÐ1¸ö£¬»ò0¸öÃüÁîͨµÀʱ£¬Ê§°Ü */

-    {

-        pQueryIdleChRsp->bResult = Z_APMMIA_SM_CH_BUSY;

-    }

-    else

-    {

-        pQueryIdleChRsp->bResult = Z_APMMIA_SM_CH_IDLE;

-    }

-    

-    zAti_MsgSend(MMIA_SM_IDLE_CHNL_QUERY_RSP_EV, (PBYTE)pQueryIdleChRsp, iLenQueryIdleChRsp,destTask);

-    return;

-}

-

-VOID zAti_SmMsisdnInd(VOID *pDataPtr)

-{

-    T_zMmiaSm_Msisdn_Ind *ptMsisdn = (T_zMmiaSm_Msisdn_Ind*)pDataPtr;

-    T_zAti_NV_Msisdn tNvMsisdn = {0};

-    T_zAti_NV_Msisdn tTempMsisdn = {0};

-    BYTE bNvItemId = (g_zAti_CurInstance ? Z_ATI_NV_Msisdn2 : Z_ATI_NV_Msisdn1);

-

-    if(ptMsisdn->bNumLen > 0 && ptMsisdn->abMsisdnNum[0] != 0xFF)//ÓÐЧÐÔ¼ì²é

-    {

-        if(ptMsisdn->bNumLen > Z_DEV_MAX_MSISDN_NUM)

-        {

-            ptMsisdn->bNumLen = Z_DEV_MAX_MSISDN_NUM;

-        }

-

-        zDev_NV_AtiReadItem(bNvItemId, (BYTE*)&tNvMsisdn);

-        zOss_Memcpy(&tTempMsisdn, &tNvMsisdn, sizeof(T_zAti_NV_Msisdn));

-

-        tNvMsisdn.bNumLen = ptMsisdn->bNumLen;

-        zOss_Memset(tNvMsisdn.abMsisdnNum, 0, Z_DEV_MAX_MSISDN_NUM);

-        zOss_Memcpy(tNvMsisdn.abMsisdnNum, ptMsisdn->abMsisdnNum, ptMsisdn->bNumLen);

-

-        if(0 != memcmp(&tNvMsisdn, &tTempMsisdn, sizeof(T_zAti_NV_Msisdn)))

-        {

-            zDev_NV_AtiWriteItem(bNvItemId, (PBYTE)&tNvMsisdn);

-        }

-    }

-

-    return;

-}

-/**************************************************************************

-* º¯ÊýÃû³Æ£º zAti_UsbSioDeactiveByAtiReq

-* ¹¦ÄÜÃèÊö£º ¸ù¾ÝͨµÀºÅÓÉATI2·¢ÆðÈ¥¼¤»îÁ÷³Ì¡£

-* ²ÎÊý˵Ã÷£º (IN)£º ÎÞ

-*            iChnelId     ͨµÀID

-*            (OUT)£ºÎÞ

-* ·µ »Ø Öµ£º ÎÞ

-* ÆäËü˵Ã÷£º 

-*            Ö»ÓÃÓڳɹ¦½øÈëÊý¾Ý̬ºó£¬¶Ï¿ª±ä»ØÃüÁî̬µÄÈ¥¼¤»î²Ù×÷£¬ÓëͨµÀºÅÏà¹Ø

-*            ×¢Òâ°üµÄ¸ñʽ£¬½âÂëÖ®ºóµÄ£¬T_zPS_ApMmia_SmActDeact_Req

-**************************************************************************/  

-VOID __ps_static_func zAti_UsbSioDeactiveByAtiReq(UINT8 iChnelId)

-{

-    UINT8                       iAtiCidNum = 0;

-    T_ZAti_ChannelInfo         *pChnelNode = NULL;

-    T_zApMmia_SmActDeact_Req tAct = {0};

-    BYTE bInstance = zAti_GetTaskInstantByChnlId(iChnelId);

-

-#ifdef CXT_MOV

-    if(Z_ATI_PS_MOVE_IN_PROCESS == zAti_GetPsMovStat()||

-        Z_ATI_PS_MOVE_INSERT_USER_DISCONNECT == zAti_GetPsMovStat())

-    {

-        zAti_SetPsMovStat(Z_ATI_PS_MOVE_INSERT_USER_DISCONNECT);

-        zAti_SetChnlWhenUserDisConn(iChnelId);

-        return;

-    }

-#endif

-

-    pChnelNode = zAti_GetChannelNodePtr(iChnelId);

-    

-    if(NULL == pChnelNode) /* ¸ÃͨµÀûÓдò¿ª */

-    {

-        return;

-    }

-    for(iAtiCidNum = 0; iAtiCidNum < ZATI2_SM_MAX_SMCID_NUM; iAtiCidNum++)

-    {

-        if((g_zAti_SmContext[bInstance].lastCidTab[iAtiCidNum].chnelId == pChnelNode->iChnelId)

-        && (g_zAti_SmContext[bInstance].lastCidTab[iAtiCidNum].extActCid >= 1) 

-        && (g_zAti_SmContext[bInstance].lastCidTab[iAtiCidNum].extActCid <= ZATI2_SM_MAX_SMCID_NUM) && (tAct.bCidNum < ZATI2_SM_MAX_SMCID_NUM))

-        {

-            tAct.abCid[tAct.bCidNum++]=g_zAti_SmContext[bInstance].lastCidTab[iAtiCidNum].extActCid;

-        }

-

-        if((g_zAti_SmContext[bInstance].lastCidTab[iAtiCidNum].chnelId == pChnelNode->iChnelId)

-        && (g_zAti_SmContext[bInstance].lastCidTab[iAtiCidNum].iCid >= 1)

-        && (g_zAti_SmContext[bInstance].lastCidTab[iAtiCidNum].iCid <= ZATI2_SM_MAX_SMCID_NUM) && (tAct.bCidNum < ZATI2_SM_MAX_SMCID_NUM))

-        {

-            tAct.abCid[tAct.bCidNum++]=g_zAti_SmContext[bInstance].lastCidTab[iAtiCidNum].iCid;

-        }

-        if (tAct.bCidNum == ZATI2_SM_MAX_SMCID_NUM)

-        {

-            break;

-        }

-    }

-

-    if(tAct.bCidNum>0)

-    {

-        tAct.bIsDisconnect = TRUE;

-        tAct.bSrcIndex = iChnelId;

-        tAct.bDesIndex = 0xff;

-        tAct.bTypeFlg = Z_APMMIA_VALID;

-        tAct.bType = Z_APMMIA_SM_PDP_INACTIVE;

-        zAti_SendCgactDeactReq(&tAct, bInstance);       

-    }

-    return;

-}

-

-/**************************************************************************

-* º¯ÊýÃû³Æ£º zAti_UsbSioGetAddr

-* ¹¦ÄÜÃèÊö£º µã·Ö8λIPµØÖ·¸ñʽ»¯Îª32λµØÖ·

-* ²ÎÊý˵Ã÷£º (IN)£º 

-*            pSrcAddr       8λ¸ñʽÊý¾Ý

-*            (OUT)£ºÎÞ

-* ·µ »Ø Öµ£º 32λ¸ñʽÊýÖµ

-* ÆäËü˵Ã÷£º 

-*            ÐèҪעÒâ

-*            ¸Ãº¯ÊýÖ»ÔÚ´®¿Úģʽϵ÷ÓÃ

-**************************************************************************/  

-UINT32 zAti_UsbSioGetAddr(UINT8 *pSrcAddr)

-{    

-    return ((pSrcAddr[3] << 24) | (pSrcAddr[2] << 16) | (pSrcAddr[1] << 8) | (pSrcAddr[0]));

-}

-

-VOID zAti_LteZconstatInd(UINT8 iResult,UINT8 channelId)

-{

-    BYTE bAtiNum   = 0;

-    BYTE bInstance = zAti_GetTaskInstantByChnlId(channelId);

-    T_ZAti_ZconstatInd *pZconstatInd = (T_ZAti_ZconstatInd *)zAti_GetUB(sizeof(T_ZAti_ZconstatInd));

-  

-    for(bAtiNum = 0; bAtiNum < ZATI2_SM_MAX_SMCID_NUM; bAtiNum++)

-    {

-        if(g_zAti_SmContext[bInstance].lastCidTab[bAtiNum].chnelId == channelId) /* ÕÒµ½ */

-        {

-            pZconstatInd->iCid = g_zAti_SmContext[bInstance].lastCidTab[bAtiNum].iCid;

-            break;

-        }

-    }

-    pZconstatInd->iResult = iResult;

-    pZconstatInd->iDestIndex = channelId;

-    pZconstatInd->iSrcIndex = 0xff;

-

-    zOss_TaskSendData(EV_ZATI2_LTE_ZCONSTAT_IND, (VOID *)pZconstatInd, sizeof(T_ZAti_ZconstatInd), g_zAti_Context.taskIdMy);

-    return;

-}

-

-/* 617001591411 ¡¾ÖÇÄÜ»úÐèÇó¡¿- ÖÇÄÜ»úÐèÇóV3°æ±¾Í¬²½ÊµÏÖ*/

-VOID __ps_static_func zAti_NotifyApModemReady()

-{

-    if (g_zAti_Context.sendFnc == zAti_AtRecvNullFunc)

-    {

-        zOss_SetRelativeTimer(1000, EV_ZATI2_ZMSRI_IND_EXPIRY_EV, 0);

-        return ;

-    }

-

-    sprintf((char *)g_zAt_EncBuf, "%s+ZMSRI%s", g_zAt_CRLF, g_zAt_CRLF);

-    zAti_DeliverAllMsg(EV_ZATI2_ZMSRI_IND, g_zAt_EncBuf, (WORD)strlen((const char *)g_zAt_EncBuf));

-    return;

-}

-#ifdef USE_VOICE_SUPPORT

-/******************************************************

-*º¯Êý¹¦ÄÜ:ÓïÒôÇý¶¯ÏÂÐÐDTMF KEYÖµÉϱ¨

-*ÆäËû:ÓëÇý¶¯È·ÈÏdtmfLen³¤¶È¹Ì¶¨Îª1

-******************************************************/

-VOID zAti_Drv_dtmfrx_Report(char *dtmf, unsigned char dtmfLen)

-{

-    BYTE i = 0;

-    BYTE iCcNum = 0;

-    BYTE bCallId = 0;

-    BYTE bTempNo = 0;

-    CHAR abStr[30] = {0};

-

-    zOss_Memset(abStr, 0, 30);

-    bTempNo = g_zAti_CurInstance;

-

-    g_zAti_CurInstance = Z_ATI_INSNO_1;/*¹Ì¶¨ÔÚ´ý1Éϱ¨*/

-

-    for(iCcNum = 0; iCcNum < ZATI2_MAX_CALL_NUM; iCcNum++)

-    {

-        if(g_zAti_atDataEx[g_zAti_CurInstance].tCcMan.callInfo[iCcNum].callState == ZATI2_CALL_STATE_ACTIVE)

-        {

-            bCallId = g_zAti_atDataEx[g_zAti_CurInstance].tCcMan.callInfo[iCcNum].iXid;

-

-            sprintf((char *)abStr, "%s+IMSDTMF: %d,%c%s", g_zAt_CRLF, bCallId, (*dtmf), g_zAt_CRLF);

-            zAti_DeliverAllMsg(EV_ZATI2_ZDTMF_IND, abStr, (WORD)strlen((const char *)abStr));

-

-            g_zAti_CurInstance = bTempNo;

-            return;

-        }

-    }

-

-    g_zAti_CurInstance = bTempNo;

-    return;

-}

-#ifndef _OS_WIN

-VOID zAti_RegDtmfCallBack()

-{

-    T_DrvDtmf_Detect_Opt  dtmfrx;

-

-    dtmfrx.drv_dtmfrx_report_cb = zAti_Drv_dtmfrx_Report;

-    dtmfrx.drv_dtmftx_report_cb = NULL;

-

-    zDrvDtmf_Detect_RegCallbacks(dtmfrx);

-}

-#endif

-#endif

-BOOL __ps_4g_func zAti_GetPdpInfoByCid(UINT8 bCid,T_zMmiaSm_PdpAddr * pPdpAddr,T_zMmiaSm_PcoInfo * pPcoInfo, BYTE bInsNo)

-{

-#if defined (PS_RAT_GSM) || defined (PS_RAT_TDD) || defined (PS_RAT_FDD)

-    if(zSm_GetPdpInfoByCid(bInsNo, bCid, pPdpAddr, pPcoInfo) == Z_SUCC)

-    {

-        return TRUE;

-    }

-#endif

-#ifdef PS_RAT_LTE

-    if(zEsm_GetPdpInfoByCid(bInsNo, bCid, pPdpAddr, pPcoInfo) == Z_SUCC)

-    {

-        return TRUE;

-    }

-#endif

-    return FALSE;

-}

-/**************************************************************

-º¯ÊýÃû³Æ:zAti_IsTheCidActived

-º¯Êý¹¦ÄÜ:ÅжÏÌØ¶¨µÄCIDÔÚÌØ¶¨µÄ´ý»ú²àÖÐÊÇ·ñ¼¤»î

-***************************************************************/

-BOOL zAti_IsTheCidActived(UINT8 bInsNo, UINT8 bCid)

-{

-    T_zMmiaSm_PdpAddr                     tPdpAddr = {0};  

-    T_zMmiaSm_PcoInfo   *ptPcoInfo = (T_zMmiaSm_PcoInfo*)zAti_GetUB(sizeof(T_zMmiaSm_PcoInfo));

-

-#if defined (PS_RAT_GSM) || defined (PS_RAT_TDD) || defined (PS_RAT_FDD)

-    if(zSm_GetPdpInfoByCid(bInsNo, bCid, &tPdpAddr, ptPcoInfo) == Z_SUCC)

-    {

-        zAti_RetUB((VOID **)&ptPcoInfo);

-        return TRUE;

-    }

-#endif

-#ifdef PS_RAT_LTE

-    if(zEsm_GetPdpInfoByCid(bInsNo, bCid, &tPdpAddr, ptPcoInfo) == Z_SUCC)

-    {

-        zAti_RetUB((VOID **)&ptPcoInfo);

-        return TRUE;

-    }

-#endif

-    zAti_RetUB((VOID **)&ptPcoInfo);

-    return FALSE;

-}

-

-/*******************************************************

-º¯ÊýÃû³Æ:zAti_IsCidActivedStand

-º¯Êý¹¦ÄÜ:Åж϶ÔÓ¦´ý»ú²àÊÇ·ñÓÐÉÏÏÂÎ碌î

-*******************************************************/

-BOOL zAti_IsCidActivedStand(BYTE bInsNo)

-{

-    BYTE bCid = 0;

-    BYTE bIsAct = 0;

-    T_zMmiaSm_PdpAddr  *ptPdpAddr = (T_zMmiaSm_PdpAddr*)zAti_GetUB(sizeof(T_zMmiaSm_PdpAddr));

-    T_zMmiaSm_PcoInfo *ptPcoInfo = (T_zMmiaSm_PcoInfo*)zAti_GetUB(sizeof(T_zMmiaSm_PcoInfo));

-

-    for(bCid = Z_DEV_AtMem_MININUM_CID; bCid <= Z_DEV_AtMem_MAXINUM_CID; bCid++)

-    {

-        #if defined (PS_RAT_GSM) || defined (PS_RAT_TDD) || defined (PS_RAT_FDD)

-        if(zSm_GetPdpInfoByCid(bInsNo, bCid, ptPdpAddr, ptPcoInfo) == Z_SUCC)

-        {

-            bIsAct = 1;

-        }

-        #endif

-        #ifdef PS_RAT_LTE

-        if(zEsm_GetPdpInfoByCid(bInsNo, bCid, ptPdpAddr, ptPcoInfo) == Z_SUCC)

-        {

-            bIsAct = 1;

-        }

-        #endif

-

-        if(bIsAct == 1)

-        {

-            zAti_RetUB((VOID **)&ptPdpAddr);

-            zAti_RetUB((VOID **)&ptPcoInfo);

-            return TRUE;

-        }

-    }

-    zAti_RetUB((VOID **)&ptPdpAddr);

-    zAti_RetUB((VOID **)&ptPcoInfo);

-    return FALSE;

-}

-#ifdef Z_SELL_STAT_SUPPORT

-/*************************************************************************

-º¯ÊýÃû³Æ:zAti_SellStatForPppAct

-º¯Êý¹¦ÄÜ:PPP²¦ºÅ³É¹¦ºó·¢ÆðÏúÁ¿Í³¼Æ

-*************************************************************************/

-VOID zAti_SellStatForPppAct(T_zAti_CIDInfo *pCidInfo, T_zMmiaSm_PdpActRes *ptActRes)

-{

-    BYTE    bCidIndex = 0;

-

-    if (Z_SUCC == zAti_GetCidinfoFromSm(pCidInfo, ptActRes))

-    {

-        #ifdef DUAL_CARD_DUAL_STANDBY

-        if(Z_VALID == zAti_IsDualPsDualUicc())

-        {

-            zAti_SellStat_PdpActCnfSendtoPdi(ptActRes->bCid, pCidInfo, g_zAti_CurInstance);

-        }

-        else

-        #endif

-        {

-            zAti_SellStat_PdpActCnfSendtoPdi(ptActRes->bCid, pCidInfo, Z_ATI_INSNO_1);

-        }

-    }

-    else

-    {    

-        bCidIndex = ptActRes->bCid - Z_DEV_AtMem_MININUM_CID;

-        #ifdef DUAL_CARD_DUAL_STANDBY

-        if(Z_VALID == zAti_IsDualPsDualUicc())

-        {

-            zOss_Memset(g_zAti_atDataEx[g_zAti_CurInstance].tCIDInfo + bCidIndex, 0, sizeof(T_zAti_CIDInfo));

-            g_zAti_atDataEx[g_zAti_CurInstance].tCIDInfo[bCidIndex].bPdpActFg = Z_ATI_CIDINFO_PDPDEACT;

-        }

-        else

-        #endif

-        {

-            zOss_Memset(g_zAti_atDataEx[Z_ATI_INSNO_1].tCIDInfo + bCidIndex, 0, sizeof(T_zAti_CIDInfo));

-            g_zAti_atDataEx[Z_ATI_INSNO_1].tCIDInfo[bCidIndex].bPdpActFg = Z_ATI_CIDINFO_PDPDEACT;

-        }

-    }

-    return;

-}

-#endif

-/***********************************************************************************

-º¯ÊýÃû³Æ:zAti_HandlePppActCnf

-º¯Êý¹¦ÄÜ:PPP¼¤»î»òÕß²¦ºÅÏìÓ¦µÄ´¦Àí

-***********************************************************************************/

-static VOID zAti_HandlePppActCnf(T_zMmiaSm_PdpAct_Cnf * pActCnf, T_ZAti_ChannelInfo* pChnelNode)

-{

-    T_zApMmia_SmZgact_Req tZact = {0};

-#ifdef Z_SELL_STAT_SUPPORT

-    T_zAti_CIDInfo   tCidinfo = {0};

-#endif

-   

-    if(pActCnf->bResult == Z_SUCC)

-    {

-        if(pActCnf->bAtType==Z_MMIASM_ATCMD_CGACT)    /*¼¤»î³É¹¦·¢Æð²¦ºÅ*/

-        {

-            tZact.bSrcIndex = pActCnf->bDesIndex;

-            tZact.bDstIndex = pActCnf->bSrcIndex;

-            tZact.bState = Z_APMMIA_SM_PDP_ACTIVATE;

-            tZact.bCid = pActCnf->atResult[0].bCid;

-            zAti_SendSmZgactReq(&tZact);

-        }

-        else if(pActCnf->bAtType==Z_MMIASM_ATCMD_ZGACT)    /*²¦ºÅ³É¹¦µÄ´¦Àí*/

-        {

-            if(pChnelNode->server_mode == ZATI2_CHANNEL_MODE_CMD)

-            {

-                zAti_HandleConnInd(pActCnf->bSrcIndex,pActCnf->bDesIndex);

-            }

-#ifdef Z_SELL_STAT_SUPPORT

-            zAti_SellStatForPppAct(&tCidinfo, &pActCnf->atResult[0]);//ÏúÁ¿Í³¼Æ

-#endif

-        }        

-    }

-    else  /*¼¤»î»òÕß²¦ºÅʧ°ÜµÄ´¦Àí*/

-    {

-        zAti_ClearCidInfobyChnel(pActCnf->bDesIndex);

-        pChnelNode->IsPpp = FALSE;

-    }

-    return;

-}

-

-BOOL zAti_IsLastCidOfChnnel(BYTE bCid, BYTE iChnelId)

-{

-    UINT8  iAtiNum = 0;

-

-    for(iAtiNum = 0; iAtiNum < ZATI2_SM_MAX_SMCID_NUM; iAtiNum++)

-    {

-        if(g_zAti_SmContext[g_zAti_CurInstance].lastCidTab[iAtiNum].iCid != bCid

-        &&g_zAti_SmContext[g_zAti_CurInstance].lastCidTab[iAtiNum].chnelId==iChnelId

-        &&g_zAti_SmContext[g_zAti_CurInstance].lastCidTab[iAtiNum].isUsed)

-        {

-            return FALSE;

-        }

-    }

-    return TRUE;

-}

-

-BOOL __ps_4g_func zAti2_IsExCid(BYTE extActCid,PBYTE pbCid)

-{

-    BYTE i = 0;

-

-    for(i=0; i<ZATI2_SM_MAX_SMCID_NUM; i++)

-    {

-        if(g_zAti_SmContext[0].lastCidTab[i].extActCid == extActCid)

-        {

-            *pbCid = g_zAti_SmContext[0].lastCidTab[i].iCid;

-            return TRUE;

-        }

-    }

-    return FALSE;

-}

-

-/*********************************************************************

-º¯ÊýÃû³Æ:zAti_IsExCid

-º¯Êý¹¦ÄÜ:ÅжÏCIDÊÇ·ñΪ¸¨CID²¢»ñÈ¡ÏàÓ¦µÄÖ÷CID

-»ñÈ¡¹æÔò:ÔÚlastCidTab±í¸ñÖÐѰÕÒ

-**********************************************************************/

-BOOL __ps_4g_func zAti_IsExCid(BYTE extActCid,PBYTE pbCid)

-{

-    BYTE i = 0;

-    

-    for(i=0; i<ZATI2_SM_MAX_SMCID_NUM; i++)

-    {

-        if(g_zAti_SmContext[g_zAti_CurInstance].lastCidTab[i].extActCid == extActCid)

-        {

-            *pbCid = g_zAti_SmContext[g_zAti_CurInstance].lastCidTab[i].iCid;

-            return TRUE;

-        }

-    }

-    return FALSE;

-}

-/*********************************************************************

-º¯ÊýÃû³Æ:zAti_IsAllExCid

-º¯Êý¹¦ÄÜ:ÅжϽӿÚÖÐÊÇ·ñ¾ùΪ¸¨CID

-»ñÈ¡¹æÔò:ÔÚlastCidTab±í¸ñÖÐѰÕÒ

-*********************************************************************/

-BOOL __ps_4g_func zAti_IsAllExCid(T_zMmiaSm_PdpAct_Cnf * pSmActDeacCnf)

-{

-    BYTE i = 0;

-    BYTE bMastcid = 0;

-

-    for(i = 0; i<pSmActDeacCnf->bCidNum; i++)

-    {

-        if(!zAti_IsExCid(pSmActDeacCnf->atResult[i].bCid, &bMastcid))

-        {

-            return FALSE;

-        }

-    }

-    return TRUE;

-}

-

-/*********************************************************************

-º¯ÊýÃû³Æ:zAti_IsMastCid

-º¯Êý¹¦ÄÜ:ÅжÏCIDÊÇ·ñΪÖ÷CID²¢»ñÈ¡ÏàÓ¦µÄ¸¨CID(´ËʱµÄ¸¨CID¿ÉΪ0)

-»ñÈ¡¹æÔò:ÔÚlastCidTab±í¸ñÖÐѰÕÒ

-*********************************************************************/

-BOOL __ps_4g_func zAti_IsMastCid(BYTE bMastCid,PBYTE pbExtCid)

-{

-    if(bMastCid > 0 && g_zAti_SmContext[g_zAti_CurInstance].lastCidTab[bMastCid-1].iCid > 0

-        && g_zAti_SmContext[g_zAti_CurInstance].lastCidTab[bMastCid-1].isUsed)

-    {

-        *pbExtCid = g_zAti_SmContext[g_zAti_CurInstance].lastCidTab[bMastCid-1].extActCid;

-         return TRUE;

-    }

-    return FALSE;

-}

-/*********************************************************************

-º¯ÊýÃû³Æ:zAti_IsOccupyedCid

-º¯Êý¹¦ÄÜ:ÅжϴËCIDÊÇ·ñÒѾ­±»±ðµÄÖ÷CIDÕ¼ÓÃ

-²ÎÊý˵Ã÷:

-      (IN)        pExistedExCid ÒѾ­±»Ê¹Óõĸ¨CID µÄÊý×éÖ¸Õë

-                      bCid ±»±È½ÏµÄCID

-*********************************************************************/

-static BOOL zAti_IsNoOccupyedCid(PBYTE pExistedExCid, BYTE bCid)

-{

-    BYTE i = 0;

-

-    for(i = 0; i < ZATI2_SM_MAX_SMCID_NUM; i++)

-    {

-        if(bCid == pExistedExCid[i])

-        {

-            return FALSE;

-        }

-    }

-    return TRUE;

-}

-

-/***********************************************************************

-º¯ÊýÃû³Æ:zAti_GetDualStackExCid

-º¯Êý¹¦ÄÜ:ѰÕÒ¿ÉʹÓõĸ¨CID

-»ñÈ¡¹æÔò: ÏÈѰÕÒδʹÓÃÇÒ䶨ÒåµÄCID 

-                            Æä´ÎѰÕÒÒѾ­¶¨ÒåÀàÐÍÆ¥Å䵫ÊÇδʹÓõÄCID

-²ÎÊý˵Ã÷:

-      (IN)             bPdpType       ËùÐ踨CIDµÄÀàÐÍ

-                           pExistedExCid  ÒѾ­±»Õ¼ÓõĿÕÏÐCIDÊý×éÖ¸Õë

-     (OUT)          pExCid             ¸¨CIDÖ¸Õë

-***********************************************************************/

-static BOOL zAti_GetDualStackExCid(PBYTE pExistedExCid,PBYTE pExCid)

-{

-    BYTE bCid = 0;

-    BYTE bFstCid = Z_DEV_AtMem_MININUM_CID;

-    BYTE bLstCid = ZATI2_SM_MAX_SMCID_NUM;

-    T_zMmiaSm_PdpAddr      *ptPdpAddr = (T_zMmiaSm_PdpAddr*)zAti_GetUB(sizeof(T_zMmiaSm_PdpAddr));  

-    T_zMmiaSm_PcoInfo      *ptPcoInfo = (T_zMmiaSm_PcoInfo*)zAti_GetUB(sizeof(T_zMmiaSm_PcoInfo));

-    T_zDev_AtMem_SmCidData *ptSmData = (T_zDev_AtMem_SmCidData*)zAti_GetUB(sizeof(T_zDev_AtMem_SmCidData));

-

-#ifdef DUAL_CARD_DUAL_STANDBY

-    if(g_zAti_CurInstance == Z_ATI_INSNO_1)

-    {

-        bLstCid = 4;

-    }

-    else

-    {

-        bFstCid = 5;

-    }

-#endif

-

-    /*ѰÕÒδʹÓÃÇÒ䶨ÒåµÄCID*/

-    for(bCid = bFstCid; bCid <= bLstCid; bCid++)

-    {

-        zDev_AtMemReadItem(Z_AtMem_ID_SmCidData, bCid, (PBYTE)ptSmData, g_zAti_CurInstance);

-        if(!zAti_IsCidUsed(bCid) && !zAti_GetPdpInfoByCid(bCid, ptPdpAddr, ptPcoInfo, g_zAti_CurInstance)

-        &&Z_ATI_PDP_NotDefine == ptSmData->bPdpInfoFg && zAti_IsNoOccupyedCid(pExistedExCid,bCid))

-        {

-            *pExCid = bCid;

-            zAti_RetUB((VOID**)&ptPdpAddr);

-            zAti_RetUB((VOID**)&ptPcoInfo);

-            zAti_RetUB((VOID**)&ptSmData);

-            return TRUE;

-        }

-    }

-    zAti_RetUB((VOID**)&ptPdpAddr);

-    zAti_RetUB((VOID**)&ptPcoInfo);

-    zAti_RetUB((VOID**)&ptSmData);

-    return FALSE;

-}

-

-VOID zAti_GetChallengeAndHash(T_zDev_AtMem_SmCidData* ptSmData, BYTE bCid)

-{

-    BYTE i = 0;

-    BYTE abChallenge1[Z_DEV_AtMem_MAX_CHALLENGE_LEN/2+1] = {0};

-    BYTE abChallenge2[Z_DEV_AtMem_MAX_CHALLENGE_LEN/2+1] = {0};

-

-    if(Z_VALID == ptSmData->bPcoAuthFg)

-    {

-        DWORD dwRand = (DWORD)rand();//È¡Ëæ»úÊý

-        BYTE  bRand  = 0;

-        for(i = 0; i < 4; i++)//ת³É×Ö·û´®

-        {

-            bRand = (BYTE)(dwRand>>(8*i));

-            itoa(bRand, (char*)&abChallenge1[i*2], 16);

-            itoa(bRand, (char*)&abChallenge2[i*2], 16);

-        }

-

-        zOss_Memcpy(ptSmData->tPcoAuth.tPapChapInfo.abChallenge, abChallenge1, Z_DEV_AtMem_MAX_CHALLENGE_LEN/2);

-        zOss_Memcpy(&ptSmData->tPcoAuth.tPapChapInfo.abChallenge[8], abChallenge2, Z_DEV_AtMem_MAX_CHALLENGE_LEN/2);

-

-        zAti_GetMd5Hash(0, (CHAR*)ptSmData->tPcoAuth.tPapChapInfo.abPassWord, ptSmData->tPcoAuth.tPapChapInfo.bPassWordLen, 

-            (CHAR*)ptSmData->tPcoAuth.tPapChapInfo.abChallenge, Z_DEV_AtMem_MAX_CHALLENGE_LEN, (CHAR*)ptSmData->tPcoAuth.tPapChapInfo.abHashRsp);//»ñÈ¡HASH

-        zDev_AtMemWriteItem(Z_AtMem_ID_SmCidData, bCid,(PBYTE)ptSmData, g_zAti_CurInstance);

-    }

-    return;

-}

-/********************************************************************

-º¯ÊýÃû³Æ:zAti_GetZgpcoChapInfo       617002190564

-º¯Êý¹¦ÄÜ:¸ù¾ÝZGPCOCHAPÉèÖõÄÖµ¹¹ÔìCHAPÀàÐ͵ÄPCOÂëÁ÷

-±¸×¢:chapÂëÁ÷µÄÄÚÈÝΪÁ½Ìõ£¬ÌîдµÄÄÚÈݲ»Ò»Ñù

-chap1:  Í·²¿(4BYTE)+Ëæ»úÊý+ MT NAME     chap2:  Í·²¿(4BYTE)+hash + username

-*********************************************************************/

-VOID zAti_GetZgpcoChapInfo(BYTE bNum,BYTE bCid,T_zMmiaSm_GetPco_Rsp *pSmGetPcoRsp)

-{

-    BYTE bIndex   = pSmGetPcoRsp->atCidPco[bNum].ptPco->bProtNum;

-    BYTE bUrNmLen = g_zAti_atDataEx[g_zAti_CurInstance].tPcoChapAuth[bCid-1].bUserNameLen;    

-    BYTE bChallengeLen = g_zAti_atDataEx[g_zAti_CurInstance].tPcoChapAuth[bCid-1].bChallengeLen;

-    BYTE bHashRspLen   = g_zAti_atDataEx[g_zAti_CurInstance].tPcoChapAuth[bCid-1].bHashRspLen;

-    BYTE abUserName[Z_DEV_AtMem_MAX_STR_LEN+1] = {0};/*Óû§Ãû*/

-    BYTE abHashRsp[Z_DEV_AtMem_MAX_HASH_LEN] = {0};/*HASH*/

-    BYTE abChallenge[Z_ATI_ZGPCOCHAP_CHALLENGE_MAXLEN] = {0};/*Ëæ»úÊý*/

-    

-    zOss_Memcpy(abUserName,g_zAti_atDataEx[g_zAti_CurInstance].tPcoChapAuth[bCid-1].abUserName,bUrNmLen+1);

-    zOss_Memcpy(abChallenge,g_zAti_atDataEx[g_zAti_CurInstance].tPcoChapAuth[bCid-1].abChallenge,Z_ATI_ZGPCOCHAP_CHALLENGE_MAXLEN);

-    zOss_Memcpy(abHashRsp,g_zAti_atDataEx[g_zAti_CurInstance].tPcoChapAuth[bCid-1].abHashRsp,Z_DEV_AtMem_MAX_HASH_LEN);

-

-    pSmGetPcoRsp->atCidPco[bNum].ptPco->bProtNum++;

-    pSmGetPcoRsp->atCidPco[bNum].ptPco->atProtList[bIndex].wId = 0xC223;

-    pSmGetPcoRsp->atCidPco[bNum].ptPco->atProtList[bIndex].bLen =  (BYTE)(bChallengeLen+bUrNmLen+Z_ATI_PAPCHAPDNSIP_VAL_LEN+1);/*Ëæ»úÊý³¤+MT NAME+Ëæ»úÊý³¤¶È×Ö½Ú*/

-    pSmGetPcoRsp->atCidPco[bNum].ptPco->atProtList[bIndex].abBuf[0] = 0x01;//Authenticate-Request

-    pSmGetPcoRsp->atCidPco[bNum].ptPco->atProtList[bIndex].abBuf[1] = 0x00;//Identifier

-    pSmGetPcoRsp->atCidPco[bNum].ptPco->atProtList[bIndex].abBuf[3] = pSmGetPcoRsp->atCidPco[bNum].ptPco->atProtList[bIndex].bLen;//Length

-    pSmGetPcoRsp->atCidPco[bNum].ptPco->atProtList[bIndex].abBuf[4] = bChallengeLen;//Ëæ»úÊý³¤¶È

-    zOss_Memcpy(pSmGetPcoRsp->atCidPco[bNum].ptPco->atProtList[bIndex].abBuf+

-    Z_ATI_PAPCHAPDNSIP_VAL_LEN+1,abChallenge,bChallengeLen);

-    zOss_Memcpy(pSmGetPcoRsp->atCidPco[bNum].ptPco->atProtList[bIndex].abBuf+Z_ATI_PAPCHAPDNSIP_VAL_LEN+1+bChallengeLen,

-        abUserName,bUrNmLen);

-

-    bIndex++;

-    pSmGetPcoRsp->atCidPco[bNum].ptPco->bProtNum++;

-    pSmGetPcoRsp->atCidPco[bNum].ptPco->atProtList[bIndex].wId = 0xC223;

-    pSmGetPcoRsp->atCidPco[bNum].ptPco->atProtList[bIndex].bLen =  (BYTE)(bHashRspLen + Z_ATI_PAPCHAPDNSIP_VAL_LEN+1+bUrNmLen);

-    pSmGetPcoRsp->atCidPco[bNum].ptPco->atProtList[bIndex].abBuf[0] = 0x02;//Authenticate-Request

-    pSmGetPcoRsp->atCidPco[bNum].ptPco->atProtList[bIndex].abBuf[1] = 0x00;//Identifier

-    pSmGetPcoRsp->atCidPco[bNum].ptPco->atProtList[bIndex].abBuf[3] = pSmGetPcoRsp->atCidPco[bNum].ptPco->atProtList[bIndex].bLen;

-    pSmGetPcoRsp->atCidPco[bNum].ptPco->atProtList[bIndex].abBuf[4] = bHashRspLen;/*HASH LEN*/

-    zOss_Memcpy(pSmGetPcoRsp->atCidPco[bNum].ptPco->atProtList[bIndex].abBuf+

-        Z_ATI_PAPCHAPDNSIP_VAL_LEN+1,abHashRsp,bHashRspLen);/*HASH*/

-    zOss_Memcpy(pSmGetPcoRsp->atCidPco[bNum].ptPco->atProtList[bIndex].abBuf+

-        Z_ATI_PAPCHAPDNSIP_VAL_LEN+1+bHashRspLen,abUserName,bUrNmLen);

-    return;

-}

-WORD __ps_4g_func zAti_GetPcoIdByNvPcoBit(BYTE bNvPcoBit)

-{

-    bNvPcoBit++;

-    switch (bNvPcoBit)

-    {

-    case 1:

-        return Z_ATI_ADDPARA_ID_PCSCF_IPV6ADDR;

-    case 2:

-        return Z_ATI_ADDPARA_ID_IMS_SIGNAL_FLG;

-    case 3:

-        return Z_ATI_ADDPARA_ID_DNS_SRV_IPV6ADDR;

-    case 4:

-        return Z_ATI_ADDPARA_ID_RESERVED4;

-    case 5:

-        return Z_ATI_ADDPARA_ID_SUPPORT_BC_INDICATOR;

-    case 6:

-        return Z_ATI_ADDPARA_ID_RESERVED6;

-    case 7:

-        return Z_ATI_ADDPARA_ID_DSMIPV6_HA_ADDR;

-    case 8:

-        return Z_ATI_ADDPARA_ID_DSMIPV6_HN_PREF;

-    case 9:

-        return Z_ATI_ADDPARA_ID_DSMIPV6V4_HA_ADDR;

-    case 10:

-        return Z_ATI_ADDPARA_ID_IPADDR_VIA_NAS_SIGNAL;

-    case 11:

-        return Z_ATI_ADDPARA_ID_IPV4ADDR_VIA_DHCPV4;

-    case 12:

-        return Z_ATI_ADDPARA_ID_PCSCF_IPV4_ADDR;

-    case 13:

-        return Z_ATI_ADDPARA_ID_DNS_SRV_IPV4_ADDR;

-    case 14:

-        return Z_ATI_ADDPARA_ID_MSISDN;

-    case 15:

-        return Z_ATI_ADDPARA_ID_IFOM;

-    case 16:

-        return Z_ATI_ADDPARA_ID_IPV4MTU;

-    default:

-        break;

-    }

-    

-    return (WORD)bNvPcoBit;

-}

-

-BYTE __ps_4g_func zAti_GetNvPcoBitByPcoId(WORD wId)

-{

-    switch (wId)

-    {

-    case Z_ATI_ADDPARA_ID_PCSCF_IPV6ADDR:

-        return 1;

-    case Z_ATI_ADDPARA_ID_IMS_SIGNAL_FLG:

-        return 2;

-    case Z_ATI_ADDPARA_ID_DNS_SRV_IPV6ADDR:

-        return 3;

-    case Z_ATI_ADDPARA_ID_RESERVED4:

-        return 4;

-    case Z_ATI_ADDPARA_ID_SUPPORT_BC_INDICATOR:

-        return 5;

-    case Z_ATI_ADDPARA_ID_RESERVED6:

-        return 6;

-    case Z_ATI_ADDPARA_ID_DSMIPV6_HA_ADDR:

-        return 7;

-    case Z_ATI_ADDPARA_ID_DSMIPV6_HN_PREF:

-        return 8;

-    case Z_ATI_ADDPARA_ID_DSMIPV6V4_HA_ADDR:

-        return 9;

-    case Z_ATI_ADDPARA_ID_IPADDR_VIA_NAS_SIGNAL:

-        return 10;

-    case Z_ATI_ADDPARA_ID_IPV4ADDR_VIA_DHCPV4:

-        return 11;

-    case Z_ATI_ADDPARA_ID_PCSCF_IPV4_ADDR:

-        return 12;

-    case Z_ATI_ADDPARA_ID_DNS_SRV_IPV4_ADDR:

-        return 13;

-    case Z_ATI_ADDPARA_ID_MSISDN:

-        return 14;

-    case Z_ATI_ADDPARA_ID_IFOM:

-        return 15;

-    case Z_ATI_ADDPARA_ID_IPV4MTU:

-        return 16;

-    default:

-        break;

-    }

-    

-    return (BYTE)wId;

-}

-BOOL __ps_4g_func zAti_PcoItemIsValidByPcoId(WORD wId)

-{

-    BYTE bPcoBitIndex = 0;

-    DWORD dwPcoInfo = zOss_GetPcoItemInfo();

-

-    if (wId == 0)

-    {

-        zAti_SendExpt2TraceAgt(ERR_InvalidPara,  TRACE_ERR_LEVEL_SEVERE,"");//pco id error

-        return TRUE;

-    }

-    bPcoBitIndex = zAti_GetNvPcoBitByPcoId(wId);

-    return (BOOL)((dwPcoInfo >> (bPcoBitIndex - 1)) & 0x00000001);

-}

-

-BOOL zAti_IsExistAddPara(WORD wId, BYTE iCidNum, T_zMmiaSm_GetPco_Rsp *pSmGetPcoRsp)

-{

-    BYTE bIndex = 0;

-

-    for (bIndex=0; bIndex < pSmGetPcoRsp->atCidPco[iCidNum].ptPco->bAddParaNum; bIndex++)

-    {

-        if (pSmGetPcoRsp->atCidPco[iCidNum].ptPco->atAddParaList[bIndex].wId == wId)

-        {

-            return TRUE;

-        }

-    }

-    

-    return FALSE;

-}

-

-VOID __ps_4g_func zAti_GetNVPcoItemInfo(BYTE iCidNum, T_zMmiaSm_GetPco_Rsp* pSmGetPcoRsp)

-{

-    BYTE bIndex = 0;

-    BYTE bPcoBitIndex = 0;

-    WORD wPcoId = 0;

-    DWORD dwPcoInfo = zOss_GetPcoItemInfo();

-

-    /*ĿǰNVÖÐ×î¶à´æ32¸ö*/

-    for (bPcoBitIndex=0; bPcoBitIndex < 32; bPcoBitIndex++)

-    {

-        if (pSmGetPcoRsp->atCidPco[iCidNum].ptPco->bAddParaNum >= Z_MMIASM_PCO_PARA_ITEM_MAX_NUM)

-        {

-            break;

-        }

-        if ((dwPcoInfo >> bPcoBitIndex) & 0x00000001)

-        {

-            wPcoId = zAti_GetPcoIdByNvPcoBit(bPcoBitIndex);

-            /*PcoIdΪ1,2,3,A,B,C,DµÄÒѾ­¸ù¾Ýµ±Ç°CIDµÄÐÅÏ¢´¦Àí¹ý£¬ÕâÀïÖ±½ÓÌø¹ý*/

-            if ((wPcoId == 1) || (wPcoId == 2) || (wPcoId == 3) || (wPcoId == 0x000A) 

-                || (wPcoId == 0x000B) || (wPcoId == 0x000C) || (wPcoId == 0x000D) || (wPcoId == 0x000E))

-            {

-                continue;

-            }

-            /*ÒѾ­´æÔÚʱ£¬Ö±½ÓÕÒÏÂÒ»¸ö*/

-            if (zAti_IsExistAddPara(wPcoId, iCidNum, pSmGetPcoRsp))

-            {

-                continue;

-            }

-

-            bIndex = pSmGetPcoRsp->atCidPco[iCidNum].ptPco->bAddParaNum;

-            pSmGetPcoRsp->atCidPco[iCidNum].ptPco->atAddParaList[bIndex].wId = wPcoId;

-            pSmGetPcoRsp->atCidPco[iCidNum].ptPco->bAddParaNum++;

-        }

-    }

-    

-    return;

-}

-

-VOID __ps_4g_func zAti_HandleSmGetPcoInd(VOID *pBuff)

-{

-    UINT8  destTask = 0;

-    UINT16 iLenPcpOptions = sizeof(T_ZAti_ProtocolCfgOpt);

-    T_zMmiaSm_GetPco_Rsp   *pSmGetPcoRsp   = NULL;

-    T_zMmiaSm_GetPco_Ind   *ptSmGetPcoInd   = (T_zMmiaSm_GetPco_Ind*)pBuff;// = (T_zPS_ApMmia_SmGetPco_Ind *)pDataPtr;

-    T_zDev_AtMem_SmCidData *ptSmData   = (T_zDev_AtMem_SmCidData*)zAti_GetUB(sizeof(T_zDev_AtMem_SmCidData));

-    T_zDev_AtMem_SmCidData *ptPreSmData = (T_zDev_AtMem_SmCidData*)zAti_GetUB(sizeof(T_zDev_AtMem_SmCidData));

-    T_ZAti_ProtocolCfgOpt  ipcpOptions   = {0};

-    BYTE    bCid = 0;

-    BYTE    bIsZgpcoauthchap = Z_INVALID;

-

-    if (!zAti_GetDestTaskByMsgID(MMIA_SM_GET_PCO_RSP_EV,&destTask))

-    {

-        zAti_RetUB((VOID**)&ptSmData);

-        zAti_RetUB((VOID**)&ptPreSmData);

-        return ;

-    }

-

-    pSmGetPcoRsp = (T_zMmiaSm_GetPco_Rsp *)zAti_GetUB(sizeof(T_zMmiaSm_GetPco_Rsp));

-    zAti_GetIpcpOptionsInfo(&ipcpOptions, iLenPcpOptions);

-

-    if((ptSmGetPcoInd->bCidNum > 0) && (ptSmGetPcoInd->bCidNum <= Z_APMMIA_SM_MAX_CID_NUM))

-    {

-        UINT8 iCidNum = 0;

-

-        pSmGetPcoRsp->bCidNum = ptSmGetPcoInd->bCidNum;

-

-        for(iCidNum = 0; iCidNum < ptSmGetPcoInd->bCidNum; iCidNum++)

-        {

-            bCid = ptSmGetPcoInd->abCid[iCidNum];

-            pSmGetPcoRsp->atCidPco[iCidNum].bCid = ptSmGetPcoInd->abCid[iCidNum];

-            zDev_AtMemReadItem(Z_AtMem_ID_SmCidData, ptSmGetPcoInd->abCid[iCidNum],(PBYTE)ptSmData, g_zAti_CurInstance);

-            if(Z_VALID == ptSmData->bPcoAuthFg)

-            {

-                zAti_GetChallengeAndHash(ptSmData, pSmGetPcoRsp->atCidPco[iCidNum].bCid);

-            }

-            else if ((bCid != 0) && g_zAti_atDataEx[g_zAti_CurInstance].tPcoChapAuth[bCid-1].bIsSetChap == Z_VALID)

-            {

-                bIsZgpcoauthchap = Z_VALID;

-            }

-            pSmGetPcoRsp->atCidPco[iCidNum].ptPco = (T_zMmiaSm_PcoInfo *)zAti_GetUB(sizeof(T_zMmiaSm_PcoInfo));

-            if (pSmGetPcoRsp->atCidPco[iCidNum].ptPco == ZOSS_NULL)

-            {

-                zAti_SendExpt2TraceAgt(ERR_NvFailure,  TRACE_ERR_LEVEL_SEVERE,"");

-                continue;

-            }

-

-            if (Z_ATI_PDP_Define == ptSmData->bPdpInfoFg && ptSmData->bContFlag == Z_ATI_CONTXT_First) 

-            {

-                zAti_GetIpcpPcoInfo(ptSmData, iCidNum, &ipcpOptions, iLenPcpOptions,pSmGetPcoRsp);

-                if (bIsZgpcoauthchap == Z_INVALID)

-                {

-                    zAti_GetPapChapPcoInfo(ptSmData, iCidNum, pSmGetPcoRsp);

-                }

-                else

-                {

-                    zAti_GetZgpcoChapInfo(iCidNum, bCid, pSmGetPcoRsp);

-                }

-                zAti_GetPcscfPcoInfo(ptSmData, iCidNum, pSmGetPcoRsp);

-                zAti_GetImcnPcoInfo(ptSmData, iCidNum, pSmGetPcoRsp);

-                zAti_GetIPv4AddrAllocPcoInfo(ptSmData, iCidNum, pSmGetPcoRsp);

-                zAti_GetIpv4info(ptSmData, iCidNum, pSmGetPcoRsp);

-                zAti_GetMsisdnInfo(iCidNum, pSmGetPcoRsp);

-                zAti_GetNVPcoItemInfo(iCidNum, pSmGetPcoRsp);

-            }

-            if(ptSmData->bContFlag == Z_ATI_CONTXT_Secnd )

-            {

-                zDev_AtMemReadItem(Z_AtMem_ID_SmCidData, ptSmData->bPreCid,(PBYTE)ptPreSmData, g_zAti_CurInstance);

-                if(Z_ATI_PDP_Define == ptPreSmData->bPdpInfoFg)

-                {

-                    zAti_GetImcnPcoInfo(ptSmData, iCidNum, pSmGetPcoRsp);

-                }

-            }

-        }

-    }

-    else

-    {

-        pSmGetPcoRsp->bCidNum = 0;

-    }

-

-    zAti_RetUB((VOID**)&ptSmData);

-    zAti_RetUB((VOID**)&ptPreSmData);

-    zAti_MsgSend(MMIA_SM_GET_PCO_RSP_EV,(PBYTE)pSmGetPcoRsp, sizeof(T_zMmiaSm_GetPco_Rsp),destTask);

-    return;

-}

-/**************************************************************

-º¯ÊýÃû³Æ:zAti_CheckDualStackPara

-º¯Êý¹¦ÄÜ:¼ì²éÊÇ·ñÂú×ã˫ջÈÝ´íµÄÌõ¼þ

-¼ì²é¹æÔò:1)Íø²à·µ»Ø52ºÅÔ­ÒòÇÒ¶¨ÒåΪ˫ջÀàÐÍ·µ»Øµ¥Õ»ÀàÐÍ

-                           2)¼æÈÝR8 µÄÇé¿ö

-*EC 616000531325 NS-IOT²âÊÔ7.2.5.2ÓÃÀý£¬CIDÉèÖÃΪIPV4V6£¬ÒDZí½ö·ÖÅäIPV4µØÖ·£¬Ã»ÓÐЯ´øÔ­Òò£¬

-*UE´¥·¢ÁË˫ջÈÝ´íÁ÷³Ì£¬µ¼ÖÂÓÃÀýʧ°Ü¡£

-*SMµÄÓÐЭÒéÒÀ¾Ý£¬ESMµÄЭÒéÊÇR8¿ªÊ¼µÄ£¬Ã»ÓÐcause 0µÄ˵Ã÷£¬

-*Òò´ËÅжϵ±cause=0ÇÒ·ÇLTEÔÙ×ö˫ջÈÝ´í

-****************************************************************************/

-static BOOL __ps_4g_func zAti_CheckDualStackPara(T_zMmiaSm_PdpActRes *pSmActRes,PBYTE pAtMemBuf)

-{

-    BYTE bExCid = 0;

-    T_zDev_AtMem_SmCidData* pSmData = (T_zDev_AtMem_SmCidData *)pAtMemBuf;

-    BYTE bDualStackCauseFlag = Z_INVALID;

-    BYTE bCurAct = zAti_GetCurAct_ByIndex(g_zAti_CurInstance);

-

-    if (pSmActRes->bCause == Z_MMIASM_PDP_ACT_CAUSE_SINGLE_ADDR_ONLY_ALLOWED)

-    {

-        bDualStackCauseFlag = Z_VALID;

-    }

-    else if (pSmActRes->bCause == 0)

-    {

-        if (Z_LTE_ACT == bCurAct)

-        {

-            bDualStackCauseFlag = Z_INVALID;

-        }

-        else

-        {

-            bDualStackCauseFlag = Z_VALID;

-        }

-    }

-    if((Z_VALID == bDualStackCauseFlag)&&(pSmActRes->bHandleResult == Z_SUCC)

-        &&(Z_MMIASM_IPV4 == pSmActRes->tPdpAddr.bPdpType ||Z_MMIASM_IPV6 == pSmActRes->tPdpAddr.bPdpType)

-        &&(Z_ATI_PDP_Define == pSmData->bPdpInfoFg &&pSmData->tPdpContext.bPdpType == Z_MMIASM_IPV4V6

-        &&pSmData->bContFlag == Z_ATI_CONTXT_First)&& (!zAti_IsMastCid(pSmActRes->bCid,&bExCid)||

-        (zAti_IsMastCid(pSmActRes->bCid,&bExCid) && bExCid == 0)))

-    {

-        return TRUE;

-    }

-    return FALSE;

-}

-static BOOL __ps_4g_func zAti_HandleSmActCnfExt(VOID *pDataPtr)

-{

-    BYTE i = 0;

-    BYTE bNum = 0;

-    BYTE abExPdpType[Z_MMIASM_MAX_CID_NUM] = {0};

-    BYTE abExCid[Z_MMIASM_MAX_CID_NUM] = {0};

-    T_zDev_AtMem_SmCidData *ptSmData = (T_zDev_AtMem_SmCidData*)zAti_GetUB(sizeof(T_zDev_AtMem_SmCidData));

-    T_zApMmia_SmActDeact_Req tAct = {0};

-    T_zMmiaSm_PdpAct_Cnf * pSmActDeacCnf = (T_zMmiaSm_PdpAct_Cnf *)pDataPtr;

-    BYTE bPdpType = 0;

-    BYTE bMastCid = 0;

-    BYTE bExCid = 0;

-

-    /*±éÀúѰÕÒÐèҪ˫ջÈÝ´íµÄCID*/

-    for(i = 0; i<pSmActDeacCnf->bCidNum; i++ )

-    {

-        zDev_AtMemReadItem(Z_AtMem_ID_SmCidData, pSmActDeacCnf->atResult[i].bCid ,(PBYTE)ptSmData, g_zAti_CurInstance);

-        if(zAti_CheckDualStackPara(&pSmActDeacCnf->atResult[i],(PBYTE)ptSmData))

-        {  /*»ñÈ¡¸¨CID*/

-            bPdpType = (pSmActDeacCnf->atResult[i].tPdpAddr.bPdpType==Z_MMIASM_IPV4)? Z_MMIASM_IPV6 : Z_MMIASM_IPV4;

-            if(zAti_GetDualStackExCid(abExCid, &tAct.abCid[bNum]))

-            {

-                ptSmData->tPdpContext.bPdpType = bPdpType;

-                abExCid[pSmActDeacCnf->atResult[i].bCid - 1]=tAct.abCid[bNum];

-                abExPdpType[pSmActDeacCnf->atResult[i].bCid - 1]=ptSmData->tPdpContext.bPdpType;

-                zDev_AtMemWriteItem(Z_AtMem_ID_SmCidData, (BYTE)tAct.abCid[bNum++], (PBYTE)ptSmData, g_zAti_CurInstance);

-            }

-        }

-    }

-    zAti_RetUB((VOID**)&ptSmData);

-    

-    if(bNum > 0)//·¢Æð¸¨CIDµÄ¼¤»î²¢½«Ö÷¸¨ÐÅÏ¢´æÈëÈ«¾Ö

-    {

-        tAct.bSrcIndex = pSmActDeacCnf->bDesIndex;

-        tAct.bDesIndex = 0xFF;

-        tAct.bCidNum = bNum;

-        tAct.bTypeFlg = Z_APMMIA_VALID;

-        tAct.bType = Z_APMMIA_SM_PDP_ACTIVATE;

-        if(zAti_SmCgactReq(&tAct) == Z_APMMIA_NORESULT)

-        {

-            g_zAti_SmContext[g_zAti_CurInstance].bDualStackActResult = pSmActDeacCnf->bResult;//ΪºóÐø¸¨CID±£´æ½á¹ûÂë

-            for(i = 0; i < pSmActDeacCnf->bCidNum; i++)

-            {

-                /*ÐèÒª±£´æ:1,ûÓб£´æ¹ý£¬¼´¼È²»ÊÇÖ÷Ò²²»ÊǸ¨Ê±±£´æÎªÖ÷ÇÒûÓжÔÓ¦µÄ¸¨£»

-                2£¬¸ÃCID֮ǰÒѾ­±£´æÎªÖ÷ÇÒ±¾´ÎÐèҪ˫ջ¼¤»î¸¨CID£¬Òª±£´æ¸ÃÖ÷CIDºÍ¶ÔÓ¦µÄ¸¨CID*/

-                if(pSmActDeacCnf->atResult[i].bCid != 0 && pSmActDeacCnf->atResult[i].bHandleResult == Z_SUCC 

-                    && !zAti_IsExCid(pSmActDeacCnf->atResult[i].bCid, &bMastCid) && (!zAti_IsMastCid(pSmActDeacCnf->atResult[i].bCid, &bExCid)

-                    || (abExCid[pSmActDeacCnf->atResult[i].bCid-1] != 0)))

-                {

-                    zAti_SaveOnlyCidTab(pSmActDeacCnf->atResult[i].bCid, abExCid[pSmActDeacCnf->atResult[i].bCid-1],

-                        abExPdpType[pSmActDeacCnf->atResult[i].bCid-1]);

-                }

-            }

-            return TRUE;

-        }

-    }

-    return FALSE;

-}

-static VOID __ps_4g_func zAti_HandleZgactCnf(T_zMmiaSm_PdpAct_Cnf *pSmZgactCnf, T_ZAti_ChannelInfo *pChnelNode)

-{    

-    if (pSmZgactCnf->bResult == Z_SUCC)

-    {

-        zAti_HandleZgactCnfMsg(pSmZgactCnf, pChnelNode);

-    }

-    return;

-}

-/***********************************************************************************

-º¯ÊýÃû³Æ:zAti_HandleATDIpPppActCnf

-º¯Êý¹¦ÄÜ:PPP¼¤»î»òÕß²¦ºÅÏìÓ¦µÄ´¦Àí

-***********************************************************************************/

-BOOL __ps_4g_func zAti_HandleATDIpPppActCnf(T_zMmiaSm_PdpAct_Cnf * pActCnf, BYTE *pbIsNeedCnf)

-{

-    T_zApMmia_SmZgact_Req tZact = {0};

-    //T_zAti_CIDInfo   tCidinfo = {0};

-    T_ZAti_ChannelInfo *pChnelNode = NULL;

-    BYTE bInstance = zAti_GetTaskInstantByChnlId(pActCnf->bDesIndex);

-    BYTE bCidIndex = 0;

-    BYTE bChnelId = 0xff;

-    

-    if ((pActCnf->atResult[0].bCid < 1) || (pActCnf->atResult[0].bCid > Z_MMIASM_MAX_CID_NUM))

-    {

-        zAti_SendExpt2TraceAgt(ERR_InvalidPara,  TRACE_ERR_LEVEL_NORMAL,"");//CID is 0

-        return FALSE;

-    }

-

-    bCidIndex = pActCnf->atResult[0].bCid-1;

-    if ((g_zAti_SmContext[bInstance].lastCidTab[bCidIndex].iCid == pActCnf->atResult[0].bCid)

-        &&g_zAti_SmContext[bInstance].lastCidTab[bCidIndex].isPpp == TRUE 

-        && g_zAti_SmContext[bInstance].lastCidTab[bCidIndex].isPppActCmplete == FALSE)

-    {

-        bChnelId = g_zAti_SmContext[bInstance].lastCidTab[bCidIndex].chnelId;

-        pChnelNode = zAti_GetChannelNodePtr(bChnelId);

-        if (pChnelNode == NULL)

-        {

-            zAti_SendExpt2TraceAgt(ERR_InvalidPara,  TRACE_ERR_LEVEL_NORMAL,"");//get chnel fail

-            return FALSE;

-        }

-        if(pActCnf->bResult == Z_SUCC)

-        {

-            if(pActCnf->bAtType==Z_MMIASM_ATCMD_CGACT)    /*¼¤»î³É¹¦·¢Æð²¦ºÅ*/

-            {

-                tZact.bSrcIndex = pActCnf->bDesIndex;

-                tZact.bDstIndex = pActCnf->bSrcIndex;

-                tZact.bState = Z_APMMIA_SM_PDP_ACTIVATE;

-                tZact.bCid = pActCnf->atResult[0].bCid;

-                zAti_SendSmZgactReq(&tZact);

-                g_zAti_SmContext[bInstance].lastCidTab[bCidIndex].isUsed = TRUE;

-            }

-            else if(pActCnf->bAtType==Z_MMIASM_ATCMD_ZGACT)    /*²¦ºÅ³É¹¦µÄ´¦Àí*/

-            {

-                if(pChnelNode->server_mode == ZATI2_CHANNEL_MODE_CMD)

-                {

-                    zAti_HandleConnInd(pActCnf->bSrcIndex,bChnelId);

-                }

-                //zAti_SellStatForPppAct(&tCidinfo, &pActCnf->atResult[0]);//ÏúÁ¿Í³¼Æ

-                g_zAti_SmContext[bInstance].lastCidTab[bCidIndex].isPppActCmplete = TRUE;

-                *pbIsNeedCnf = Z_VALID;

-            }

-            

-        }

-        else/*¼¤»î»òÕß²¦ºÅʧ°ÜµÄ´¦Àí*/

-        {

-            if(pChnelNode->server_mode == ZATI2_CHANNEL_MODE_DATA)

-            {

-                zAti_HandleNoCarrierCnf(pActCnf->bSrcIndex, bChnelId);

-            }

-            zAti_ClearCidInfobyChnel(bChnelId);

-            *pbIsNeedCnf = Z_VALID;

-        }

-        return TRUE;

-    }

-

-    return FALSE;

-}

-DWORD __ps_4g_func zAti_HandleSmActCnf(VOID* pBuff, DWORD *pdwChangedMsgId, T_ZAti_ChannelInfo  *pChnelNode)

-{

-    T_zMmiaSm_PdpAct_Cnf *pSmActDeacCnf = (T_zMmiaSm_PdpAct_Cnf *)pBuff;

-    UINT8 i = 0;

-    BYTE bCid=0;

-    UINT8 abDeactCid[Z_MMIASM_MAX_CID_NUM] = {0};

-    BYTE bIsNeedCnf = Z_INVALID;//ÊÇ·ñÐèÒªÉϱ¨½á¹û

-

-    /*PPP²¦ºÅ´¦Àí*/

-    if(pChnelNode != NULL && pChnelNode->IsPpp)

-    {

-        zAti_HandlePppActCnf(pSmActDeacCnf,pChnelNode);

-        if(pSmActDeacCnf->bResult == Z_FAIL)

-        {

-            if(pChnelNode->server_mode == ZATI2_CHANNEL_MODE_CMD)

-            {

-                *pdwChangedMsgId = MMIA_SM_PDP_ACTIVATE_CNF_EV;

-            }

-            else

-            {

-                zAti_HandleNoCarrierCnf(pSmActDeacCnf->bSrcIndex, pSmActDeacCnf->bDesIndex);

-                //*pdwChangedMsgId = MMIA_SM_NO_CARRIER_CNF_EV;  // ½á¹¹Ìå²»Ò»Ö£¬²»¹ý²»ÐèÒª

-            }

-        }

-

-        return Z_APMMIA_NORESULT;

-    }

-    

-    /*ZGACT µÄÏìÓ¦ÔÚ´Ë´¦Àí*/

-    if (pChnelNode != NULL && pChnelNode->cmd_id == ZAT2_LTE_ZGACT)

-    {

-        zAti_HandleZgactCnf(pSmActDeacCnf, pChnelNode);

-        *pdwChangedMsgId = MMIA_SM_PDP_ACTIVATE_CNF_EV;

-        return Z_APMMIA_NORESULT;    

-    }

-

-    /*ATD*98´¥·¢µÄÀàÐÍΪIPV4µÄPPP²¦ºÅ,ÔÚÊÕµ½CGACT¼¤»îÏìӦʱµÄ´¦Àí*/

-    if (zAti_HandleATDIpPppActCnf(pSmActDeacCnf, &bIsNeedCnf))

-    {

-        if (bIsNeedCnf == Z_VALID)

-        {

-            zAti_UsbSioSmZgipdnsInd(pSmActDeacCnf,abDeactCid);

-            *pdwChangedMsgId = MMIA_SM_PDP_ACTIVATE_CNF_EV;

-        }

-        return Z_APMMIA_NORESULT;

-    }

-

-    /*ÅжÏÊÇ·ñ·¢Æð˫ջ¼¤»î*/

-    if(zAti_HandleSmActCnfExt(pBuff))

-    {

-        return Z_APMMIA_NORESULT;

-    }

-   /*˫ջ¸¨CIDµÄ´¦Àí*/

-    if(zAti_IsAllExCid(pSmActDeacCnf))

-    {

-        zAti_HandleSmActFailedExCid(pSmActDeacCnf, abDeactCid);//´¦Àíʧ°ÜÇé¿ö

-        zAti_HandleSmCleanExCidInfo(pSmActDeacCnf);//Çå³ýʧ°ÜµÄ¸¨CIDÐÅÏ¢ 

-        zAti_UsbSioSmZgipdnsInd(pSmActDeacCnf,abDeactCid);

-        *pdwChangedMsgId = MMIA_SM_PDP_ACTIVATE_CNF_EV;

-        return Z_APMMIA_NORESULT;

-    }

-

-    /*´æ´¢·Ç˫ջµÄCIDÇÒΪCGACT¼¤»îµÄʱºò*/

-    for(i = 0; i < pSmActDeacCnf->bCidNum; i++)

-    {

-        if(pSmActDeacCnf->atResult[i].bCid != 0 && pSmActDeacCnf->atResult[i].bHandleResult == Z_SUCC

-        && !zAti_IsExCid(pSmActDeacCnf->atResult[i].bCid, &bCid)&&!zAti_IsMastCid(pSmActDeacCnf->atResult[i].bCid, &bCid))

-        {

-            zAti_SaveOnlyCidTab(pSmActDeacCnf->atResult[i].bCid,0,0);

-        }

-    }

-    zAti_UsbSioSmZgipdnsInd(pSmActDeacCnf,abDeactCid); /* ·¢ËÍIP/DNSµØÖ· */

-    *pdwChangedMsgId = MMIA_SM_PDP_ACTIVATE_CNF_EV;

-

-    return Z_APMMIA_NORESULT;

-}

-/* //---

-VOID zAti_HandleSmCloseChInd(VOID *pBuff)

-{

-    T_zMmiaSm_CloseCh_Ind *pSmCloseChInd = (T_zMmiaSm_CloseCh_Ind *)pBuff;

-

-    if((pSmCloseChInd->bCidNum > 0) && (pSmCloseChInd->bCidNum <= ZATI2_SM_MAX_SMCID_NUM))

-    {

-        UINT8 iSmCidNum = 0;

-        

-        for(iSmCidNum = 0; iSmCidNum < pSmCloseChInd->bCidNum; iSmCidNum++)

-        {           

-            if(pSmCloseChInd->abCid[iSmCidNum] == g_zAti_SmContext[g_zAti_CurInstance].lastCidTab[pSmCloseChInd->abCid[iSmCidNum]-1].iCid)

-            {

-                T_ZAti_ChannelInfo *pChnelNode = zAti_GetChannelNodePtr((UINT8)g_zAti_SmContext[g_zAti_CurInstance].lastCidTab[pSmCloseChInd->abCid[iSmCidNum]-1].chnelId);

-                

-                if(NULL == pChnelNode)

-                {

-                    continue;

-                }

-                else

-                {

-                    zAti_ChangeChnelNodeToCmd(pChnelNode);

-                }

-            }

-        } //for(iSmCidNum = 0; iSmCidNum < SmCloseChInd.bCidNum; iSmCidNum++)

-    }

-}

-*/

-VOID zAti_HandleZmenaCnf(VOID *pDataPtr)

-{

-    T_zMmiaSms_MemAvail_Cnf  *ptSmsCnf = (T_zMmiaSms_MemAvail_Cnf*)pDataPtr;

-    UINT8 destTask = 0;

-

-    if (zAti_GetDestTaskByMsgID(AP_MMIA_SM_MEM_AVAIL_RSP_EV,&destTask))

-    {

-        T_zApMmia_MemAvail_Rsp   *ptPbRsp = (T_zApMmia_MemAvail_Rsp*)zAti_GetUB(sizeof(T_zApMmia_MemAvail_Rsp));    

-        ptPbRsp->bSrcIndex = ptSmsCnf->bDestIndex;  /* À´×ÔSMSÏûÏ¢£¬ÔÙ·¢¸øPB£¬Òªµ¹ÖÃ*/

-        ptPbRsp->bDesIndex = ptSmsCnf->bSrcIndex;

-        ptPbRsp->bResult = (Z_MMIASMS_RESULT_OK == ptSmsCnf->bResult)?Z_APMMIA_OPERATION_SUCCESS: Z_APMMIA_OPERATION_FAILURE;

-        ptPbRsp->dwReason = ptSmsCnf->dwCause;

-        zAti_MsgSend(AP_MMIA_SM_MEM_AVAIL_RSP_EV, (PBYTE)ptPbRsp, sizeof(T_zApMmia_MemAvail_Rsp),destTask);

-    }

-    return;

-}

-/************************************************************

-º¯ÊýÃû³Æ:zAti_ClearCidInfobyChnel

-º¯Êý¹¦ÄÜ:¸ù¾ÝͨµÀÇå³ýÈ«¾Ö±äÁ¿ÀïÃæµÄCIDÐÅÏ¢

-************************************************************/

-VOID zAti_ClearCidInfobyChnel(UINT8 ChnelId)

-{

-    BYTE i=0;

-    BYTE bInstance = zAti_GetTaskInstantByChnlId(ChnelId);

-

-    for(i = 0; i<Z_MMIASM_MAX_CID_NUM; i++)

-    {

-        if(g_zAti_SmContext[bInstance].lastCidTab[i].chnelId==ChnelId)

-        {

-            zOss_Memset(&g_zAti_SmContext[bInstance].lastCidTab[i],0,sizeof(T_ZAti_LastCidTab));

-        }

-    }

-    return;

-}

-

-/**************************************************

-º¯ÊýÃû³Æ:zAti_HandleSmCleanExCidInfo

-º¯Êý¹¦ÄÜ:Çå³ýÈ«¾Ö±äÁ¿ÀïÃæµÄ¸¨CID¼Í¼

-º¯Êý²ÎÊý:

-****************************************************/

-static BOOL zAti_HandleSmCleanExCidInfo(T_zMmiaSm_PdpAct_Cnf * pSmActDeacCnf)

-{

-    BYTE i = 0;

-    BYTE bMastCid = 0;

-

-    for(i=0; i<pSmActDeacCnf->bCidNum; i++)

-    {

-        if(zAti_IsExCid(pSmActDeacCnf->atResult[i].bCid,&bMastCid) && pSmActDeacCnf->atResult[i].bHandleResult != Z_SUCC)

-        {           

-            g_zAti_SmContext[g_zAti_CurInstance].lastCidTab[bMastCid-1].extActCid = 0;

-            g_zAti_SmContext[g_zAti_CurInstance].lastCidTab[bMastCid-1].extPdpType = 0;

-            zAt_SmUndefinePdpContInAtMem(pSmActDeacCnf->atResult[i].bCid);//È¥³ý¸¨CID¶¨Òå           

-        }

-    }

-    return TRUE;

-}

-

-/*********************************************************

-º¯ÊýÃû³Æ:zAti_HandleSmDeActAbortedEx

-º¯Êý¹¦ÄÜ:Èç¹û¸¨CID±»ABORTÔò·¢ÆðÖ÷CIDµÄÈ¥»î£¬

-                           Èç¹û½öÊǼ¤»îʧ°ÜÔò±£ÁôÖ÷CID

-º¯Êý²ÎÊý:¸¨CID±»ABORTÔò±£ÁôÖ÷CID---23-03-29

-**********************************************************/

-static BOOL zAti_HandleSmActFailedExCid(T_zMmiaSm_PdpAct_Cnf * pSmActDeacCnf, UINT8* pDest)

-{

-#if 0

-    BYTE i = 0;

-    BYTE bCid = 0;

-    T_zApMmia_SmActDeact_Req  smCgactReq = {0};

-    

-    for(i = 0; i<pSmActDeacCnf->bCidNum; i++)

-    {

-        if(pSmActDeacCnf->atResult[i].bHandleResult != Z_SUCC&&

-            pSmActDeacCnf->atResult[i].dwReason == Z_MMIASM_PDP_HANDLE_ABORT

-            &&zAti_IsExCid(pSmActDeacCnf->atResult[i].bCid,&bCid))

-        {

-            smCgactReq.abCid[smCgactReq.bCidNum++] = bCid;

-            pDest[bCid - 1] = bCid;

-        }

-    }

-    

-    if(smCgactReq.bCidNum > 0)

-    {

-        smCgactReq.bSrcIndex = ZATI2_CHANNEL_ID_NUM_END + 1;

-        smCgactReq.bDesIndex = 0xFF;

-        smCgactReq.bType = Z_APMMIA_SM_PDP_INACTIVE;

-        smCgactReq.bTypeFlg=Z_APMMIA_VALID;

-        

-        g_zAti_SmContext[g_zAti_CurInstance].bDualStackActResult = Z_SUCC;//Çå³ý

-

-        return zAti_SmCgactReq(&smCgactReq) == Z_APMMIA_NORESULT;

-    }

-#endif

-    //·ÇABORTʱ½á¹ûÂëµÄÉϱ¨ÐèÒªÓëÖ÷CIDµÄ±£³ÖÒ»ÖÂ

-    pSmActDeacCnf->bResult = g_zAti_SmContext[g_zAti_CurInstance].bDualStackActResult;

-    g_zAti_SmContext[g_zAti_CurInstance].bDualStackActResult = Z_SUCC;//Çå³ý

-    return TRUE;

-}

-/**************************************************************

-º¯ÊýÃû³Æ:zAti_HandleSmDeActCid

-º¯Êý¹¦ÄÜ:¸ù¾ÝCIDÀ´È¥»î£¬ÓÃÓÚÖ÷¸¨¾ùҪȥ»îµÄÇé¿ö

-***************************************************************/

-static BOOL zAti_HandleSmDeActCid(UINT8 bCid)

-{

-    T_zApMmia_SmZgact_Req tAct = {0};

-    

-    tAct.bSrcIndex = ZATI2_CHANNEL_ID_NUM_END + 1;

-    tAct.bDstIndex = 0xFF;

-    tAct.bState    = Z_APMMIA_SM_PDP_DEACTIVATE;

-    tAct.bCid      = bCid;

-    

-    return zAti_SendSmZgactReq(&tAct) == Z_APMMIA_NORESULT;

-}

-

-BOOL zAti_SendDeActReq(BYTE bCid, BYTE bSrcIndex)

-{

-    T_zApMmia_SmActDeact_Req  tCgactReq = {0};

-    BYTE bMastCid = 0;

-    BYTE bBackupCid = bCid;

-

-    if ((bCid < Z_DEV_AtMem_MININUM_CID) || (bCid > ZATI2_SM_MAX_SMCID_NUM))

-    {

-        zAti_SendExpt2TraceAgt(ERR_InvalidPara,  TRACE_ERR_LEVEL_NORMAL,"");//cid error

-        return FALSE;

-    }

-    bMastCid = bCid;

-    if (zAti_IsExCid(bBackupCid, &bMastCid))

-    {

-        if ((bMastCid < Z_DEV_AtMem_MININUM_CID) || (bMastCid > ZATI2_SM_MAX_SMCID_NUM))

-        {

-            zAti_SendExpt2TraceAgt(ERR_InvalidPara,  TRACE_ERR_LEVEL_NORMAL,"");//cid error

-            bMastCid = bCid;

-        }

-    }

-    

-    if (g_zAti_SmContext[g_zAti_CurInstance].lastCidTab[bMastCid -1].iCid == bMastCid

-        && g_zAti_SmContext[g_zAti_CurInstance].lastCidTab[bMastCid -1].isUsed)

-    {

-        tCgactReq.bCidNum = 1;

-        tCgactReq.abCid[0] = bCid;

-        tCgactReq.bSrcIndex = bSrcIndex;

-        tCgactReq.bDesIndex = 0xFF;

-        tCgactReq.bType = Z_APMMIA_SM_PDP_INACTIVE;

-        tCgactReq.bTypeFlg=Z_APMMIA_VALID;

-

-        return zAti_SmCgactReq(&tCgactReq) == Z_APMMIA_NORESULT;

-    }

-

-    return FALSE;

-}

-static VOID zAti_HandlePppSmDeActInd(BYTE bCid)

-{    

-    BYTE bCidIndex = bCid-1;

-    T_ZAti_ChannelInfo  *pChnelNode = zAti_GetChannelNodePtr(g_zAti_SmContext[g_zAti_CurInstance].lastCidTab[bCidIndex].chnelId);

-    if(pChnelNode != NULL)

-    {

-        BYTE iChnelId = g_zAti_SmContext[g_zAti_CurInstance].lastCidTab[bCidIndex].chnelId;        

-        if(zAti_IsLastCidOfChnnel(bCid,iChnelId))

-        {

-            if(ZATI2_CHANNEL_MODE_DATA ==pChnelNode->server_mode)

-            {

-                zAti_HandleNoCarrierCnf(0xff, iChnelId);

-            }

-            pChnelNode->IsPpp = FALSE;

-        }

-    }

-

-    zOss_Memset(&g_zAti_SmContext[g_zAti_CurInstance].lastCidTab[bCidIndex], 0, sizeof(T_ZAti_LastCidTab));

-    return;

-}

-

-VOID __ps_4g_func zAti_HandleSmDeActInd(T_zMmiaSm_CidDeact_Ind *ptDeactInd)

-{

-    BYTE bCid      = 0;

-    BYTE bCidIndex = ptDeactInd->bCid-1;//¼Ç¼CIDÔÚlastCidTab[]ÖжÔÓ¦µÄϱê

-    T_ZAti_ChannelInfo *pChnelNode = NULL;

-    BYTE bSrcIndex = 0;

-    BOOL bIsExCid = FALSE;

-    BYTE bMastCid = 0;

-

-   //PPP²¦ºÅ´¦Àí,²»ÄÜ´æÔÚ˫ջ¼¤»îµÄÇé¿ö

-    if(g_zAti_SmContext[g_zAti_CurInstance].lastCidTab[bCidIndex].iCid == ptDeactInd->bCid

-            &&g_zAti_SmContext[g_zAti_CurInstance].lastCidTab[bCidIndex].isPpp)

-    {

-        zAti_HandlePppSmDeActInd(ptDeactInd->bCid);

-        return;

-    }

-    

-    if (zAti_IsExCid(ptDeactInd->bCid, &bCid))

-    {

-        bIsExCid = TRUE;

-        bMastCid = bCid;

-    }

-    

-    /*ZGACTʱ²»ÊÇÈ¥¼¤»î£¬Ö»×ö²¦ºÅÏà¹ØµÄÊ£¬¼¤»îÏà¹ØµÄÈ«¾Ö²»ÒªÇå*/

-    if (ptDeactInd->bAtType == Z_MMIASM_ATCMD_ZGACT)

-    {

-        if (bIsExCid)

-        {

-            if ((bMastCid >= Z_DEV_AtMem_MININUM_CID) && (bMastCid <= ZATI2_SM_MAX_SMCID_NUM))

-            {

-                bCidIndex = bMastCid -1;

-            }

-            else

-            {

-                zAti_SendExpt2TraceAgt(ERR_InvalidPara,  TRACE_ERR_LEVEL_NORMAL,"");//DeactInd cid error

-            }

-        }

-        if (g_zAti_SmContext[g_zAti_CurInstance].lastCidTab[bCidIndex].isNdis)

-        {

-            pChnelNode = zAti_GetChannelNodePtr((UINT8)g_zAti_SmContext[g_zAti_CurInstance].lastCidTab[bCidIndex].chnelId);

-            if(pChnelNode != NULL)

-            {

-                zAti_ChangeChnelNodeToCmd(pChnelNode);

-            }

-            g_zAti_SmContext[g_zAti_CurInstance].lastCidTab[bCidIndex].isNdis = FALSE;

-        }

-

-        return;

-    }

-

-    /*¸¨CIDÈ¥»îÔòÈ¥¶¨Ò帨CID*/

-    if(bIsExCid && ((bMastCid >= 1) && (bMastCid <= ZATI2_SM_MAX_SMCID_NUM)))

-    {

-        bCidIndex = bMastCid -1;

-        g_zAti_SmContext[g_zAti_CurInstance].lastCidTab[bCidIndex].extActCid = 0;  

-        g_zAti_SmContext[g_zAti_CurInstance].lastCidTab[bCidIndex].extPdpType = 0;

-        zAt_SmUndefinePdpContInAtMem(ptDeactInd->bCid);//È¥¶¨Ò帨CID

-

-        /*»¹Ã»ÓÐÊÕµ½Ö÷CID µÄDeActInd*/

-        if (g_zAti_SmContext[g_zAti_CurInstance].lastCidTab[bCidIndex].bMastCidState == 0)

-        {

-            /*ÓÉÓÚ²»ÖªµÀµ±Ç°µÄÈ¥»î֪ͨÊÇÖ÷¶¯È¥»î»¹ÊDZ»¶¯È¥»î£¬ÐèҪȥ»îÖ÷CID£»

-            *Õâ´ÎµÄÈ¥»îÇëÇó¿ÉÄÜ»áÊÇÖØ¸´µÄ*/

-            bSrcIndex = ZATI2_CHANNEL_ID_NUM_END + 1;

-            zAti_SendDeActReq(bMastCid, bSrcIndex);/*Õâ¸öÇëÇóµÄÏìÓ¦²»Óô¦Àí£¬ÓÃÎÞЧË÷Òý*/

-            return;

-        }

-        /*ÆäËûÇé¿ö˵Ã÷Ç°ÃæÒѾ­ÊÕµ½Ö÷CIDÈ¥»î£¬Õâ´ÎÓÖÊÕµ½¸¨CIDÈ¥»î£¬ÒѾ­ÊÕÆëÈ¥»î֪ͨ*/

-    }

-    

-    /*Ö÷CIDÈ¥»îÔòÅжÏÊÇ·ñ»¹Óи¨CID£¬Èç¹ûûÓÐÔòÇл»Í¨µÀ£¬

-    *1£¬·Ç˫ջµÄCIDÈ¥»î£¬2£¬Ë«Õ»È¥»î£¬Ö÷¡¢¸¨CIDµÄÈ¥»îÒѾ­ÊÕÆë*/

-    if (!g_zAti_SmContext[g_zAti_CurInstance].lastCidTab[bCidIndex].extActCid)

-    {

-        pChnelNode = zAti_GetChannelNodePtr((UINT8)g_zAti_SmContext[g_zAti_CurInstance].lastCidTab[bCidIndex].chnelId);

-        if(pChnelNode != NULL)

-        {

-            zAti_ChangeChnelNodeToCmd(pChnelNode);

-        }

-        g_zAti_SmContext[g_zAti_CurInstance].lastCidTab[bCidIndex].isUsed = FALSE;

-        g_zAti_SmContext[g_zAti_CurInstance].lastCidTab[bCidIndex].isNdis = FALSE;

-        if (g_zAti_SmContext[g_zAti_CurInstance].lastCidTab[bCidIndex].bMastCidState == 1)

-        {

-            g_zAti_SmContext[g_zAti_CurInstance].lastCidTab[bCidIndex].bMastCidState = 0;

-        }

-    }

-    else//»¹Óи¨CID

-    {

-        /*ÓÉÓÚ²»ÖªµÀµ±Ç°µÄÈ¥»î֪ͨÊÇÖ÷¶¯È¥»î»¹ÊDZ»¶¯È¥»î£¬ÐèҪȥ»î¸¨CID£»

-        *Õâ´ÎµÄÈ¥»îÇëÇó¿ÉÄÜ»áÊÇÖØ¸´µÄ*/

-        bSrcIndex = ZATI2_CHANNEL_ID_NUM_END + 1;

-        zAti_SendDeActReq(g_zAti_SmContext[g_zAti_CurInstance].lastCidTab[bCidIndex].extActCid, bSrcIndex);/*Õâ¸öÇëÇóµÄÏìÓ¦²»Óô¦Àí£¬ÓÃÎÞЧË÷Òý*/

-        g_zAti_SmContext[g_zAti_CurInstance].lastCidTab[bCidIndex].bMastCidState = 1;

-    }

-    return;

-}

-

-

-

-static  T_ZAti_ChannelInfo * __ps_static_func zAti_GetChnelNode(UINT32 iEvId, UINT8 *pDataPtr, UINT16 iDataLen)

-{

-    T_ZAti_ChannelId       channelId = ZATI2_CHANNEL_ID_INVALID; 

-

-    if (zAti_IsWithOutIndexDelivInd(iEvId, pDataPtr))

-    {

-        return NULL;

-    }

-

-    if(AS_QUERY_EM_CELL_INFO_CNF_EV == iEvId)

-    {

-        T_zEM_EmInfo_Ind* pLteZemciInd = (T_zEM_EmInfo_Ind*)pDataPtr;

-        return zAti_GetChannelIdByIndex(iEvId, pLteZemciInd->bSrcIndex, pLteZemciInd->bDesIndex, (UINT8 *)&channelId);

-    }

-#ifdef USE_VOICE_SUPPORT

-    else if(MMIA_CC_CALL_STATE_IND_EV == iEvId)

-    {

-       channelId = zAti_GetCallControlChannelId(pDataPtr, iDataLen);

-

-        if((channelId > ZATI2_CHANNEL_ID_INVALID) && (channelId <= ZATI2_CHANNEL_ID_NUMCOUNT))

-        {

-            return zAti_GetChannelNodePtr((UINT8)channelId); /* ¸ù¾ÝͨµÀºÅ»ñÈ¡½áµã */           

-        }//617001738758 [ati]ATÁ÷³ÌÕûºÏÐ޸ĵ㲻·ÖSTATE£¬¾ùÉϱ¨DSCI

-        return NULL;

-    }

-#endif

-    else

-    {

-        return zAti_GetChannelIdByIndex(iEvId, *pDataPtr, *(pDataPtr + 1), (UINT8 *)&channelId);

-    }

-}

-

-/*

-    Åжϵ±Ç°Í¨µÀÊÇ·ñÊôÓÚµ±Ç°ÊµÀý

- */

-static BOOL __ps_static_func zAti_IsCurInstanceChnlNode(BYTE bInstance, T_ZAti_ChannelInfo *pChnelNode)

-{

-    if(pChnelNode->iChnelId <= Z_ATI_INSTANCE_ONE_CHNL_MAX)

-    {

-        return (bInstance == 0);

-    }

-    else if(pChnelNode->iChnelId <= Z_ATI_INSTANCE_TWO_CHNL_MAX)

-    {

-        return (bInstance == 1);

-    }

-    else // ͨµÀºÅ> 180  ÄÚ²¿Ê¹Ó㬲»ÊôÓÚÈκÎÒ»¸öʵÀý

-    {

-        return FALSE;

-    }

-}

-

-/* 

-    »ñÈ¡Ö÷¶¯Éϱ¨Í¨µÀ

-    PsId ЭÒéջʵÀýºÅ£¬È¡ÖµÎª1¡¢2

-*/

-static BYTE __ps_static_func zAti_GetUnsolChannel(BYTE bPsId)

-{

-    if(g_zAti_Context.pUsolChannelFunc == NULL)       // ·ÇÖÇÄÜ»úͨµÀ

-    {

-        return Z_ATI_UNOSL_CHANNEL_ALL_FREE;

-    }

-    else // ÖÇÄÜ»úͨµÀ£¬È¡ÖµÓɲο¼Éè¼Æ¾ö¶¨

-    {

-        return g_zAti_Context.pUsolChannelFunc(bPsId);

-    }

-}

-

-/**************************************************************************

-* º¯ÊýÃû³Æ : zAti_GetAlwaysReportChnel

-* ¹¦ÄÜÃèÊö : »ñÈ¡²»ÊÜÊÇ·ñºÚÆÁ/ÁÁÆÁÓ°Ï죬¶¼Éϱ¨µÄͨµÀ

-* ²ÎÊý˵Ã÷ : 

-*            bPsId   :  ЭÒéÕ»ºÅ£¬È¡ÖµÎª1»òÕß2

-* ·µ »Ø Öµ : ²»ÊÜÊÇ·ñºÚÆÁ/ÁÁÆÁÓ°Ï죬¶¼Éϱ¨µÄͨµÀºÅ

-* ÆäËü˵Ã÷ : Ìṩ¸øÓû§·½º¯Êý½Ó¿Ú

-**************************************************************************/

-BYTE __ps_static_func zAti_GetAlwaysReportChnel(BYTE bPsId)

-{

-    if(g_zAti_Context.pAlwaysReportChnel == NULL)

-    {

-        return 0XFF;

-    }

-    else

-    {

-        return g_zAti_Context.pAlwaysReportChnel(bPsId);

-    }

-}

-/***********************************************************************

-*º¯ÊýÃû³Æ:zAti_GetChnelIndState

-*º¯Êý¹¦ÄÜ:¸ù¾ÝͨµÀºÅ»ñȡͨµÀÊÇ·ñÒªÖ÷¶¯Éϱ¨

-*·µ»ØÖµ:  Z_VALID:Ö÷¶¯Éϱ¨Ê±ÒªÉϱ¨£¬Z_INVALID:Ö÷¶¯Éϱ¨Ê±²»Éϱ¨

-*ÆäËû˵Ã÷:

-***********************************************************************/

-BYTE __ps_static_func zAti_GetChnelIndState(BYTE bChnelId)

-{

-    BYTE bArryNum = 0;

-    BYTE bBitNum = 0;

-    if (bChnelId == 0)

-    {

-        zAti_SendExpt2TraceAgt(ERR_InvalidMsg, TRACE_ERR_LEVEL_NORMAL,"");//chnelID err

-        return Z_VALID;

-    }

-    bArryNum = ((bChnelId-1) / 32) % 8;//·ÀÖ¹³ö´íʱÊý×éÔ½½ç

-    bBitNum = (bChnelId-1) % 32;

-    return (BYTE)((g_zAti_ptData->adwIndChnel[bArryNum] >> bBitNum) & 0x00000001);

-}

-

-/*zAti_DeliverAllMsg

-*  Ⱥ·¢Éϱ¨´¦Àí

-*/

-VOID __ps_static_func zAti_DeliverAllMsg(UINT32 iEvId, CHAR *pEncodeCmd, UINT16 iEncodeCmdLen)

-{

-    UINT8                   iSendCount = 0;

-    T_ZAti_ChannelInfo *pTempChnelNode = g_zAti_ptData->tAtChnelList.pChnelNode;

-    T_ZAti_ChannelInfo *pDataChnelNode  = NULL;

-    BOOL                    bIsAllChnlDeliver = FALSE;  //true ȫͨµÀ·¢ËÍ£¬false ÔòÇø·ÖʵÀýºÅ·¢ËÍ 

-    BYTE                     bChnelId = zAti_GetUnsolChannel((BYTE)(g_zAti_CurInstance+1));

-    BYTE bCurrReportChnel = zAti_GetAlwaysReportChnel((BYTE)(g_zAti_CurInstance+1));

-

-    if ((zAti_IsSingleCardForTwoStandby() && (zAti_IsUiccEv(iEvId) || zAti_IsStmEv(iEvId)))||

-        (iEvId == EV_ZATI2_ZMSRI_IND)||(iEvId == AP_MMIA_PSCFGSTART_IND_EV)||(iEvId ==AP_MMIA_PSCFGEND_IND_EV )

-        #ifdef DSDS_VSIM

-        ||(iEvId == MMIA_UMM_CARDSWITCH_REQ_IND_EV) || (iEvId == MMIA_SM_CGEV_IND_EV)

-        #endif

-        )

-    {

-        /*ËùÓпÕÏÐͨµÀ¾ùÉϱ¨*/

-        bIsAllChnlDeliver = TRUE;

-    }

-

-    if(iEvId == AP_MMIA_SMS_ZCMTIND_EV)

-    {

-        zAti_SendRspCmdStr2Trace(72, iEncodeCmdLen, pEncodeCmd);

-        zAti_SendFnc(72, (UINT8 *)pEncodeCmd, iEncodeCmdLen, ZATI2_CHIND_AT);

-        return;

-    }

-

-    /* ÅжÏÖ÷¶¯Éϱ¨Í¨µÀÊÇ·ñΪÖÇÄÜ»ú*/

-    if (bChnelId != Z_ATI_UNOSL_CHANNEL_ALL_FREE )

-    {

-        if (Z_VALID == zAti_GetChnelIndState(bChnelId))

-        {

-            zAti_SendRspCmdStr2Trace(bChnelId, iEncodeCmdLen, pEncodeCmd);

-            zAti_SendFnc(bChnelId, (UINT8 *)pEncodeCmd, iEncodeCmdLen, ZATI2_CHIND_AT);

-        }

-

-        /* 617002489746 ÔÚ»ñÈ¡µ½Í¨µÀʱUICCºÍSTMÏà¹ØÖ÷¶¯Éϱ¨ÏûÏ¢ÔÚµ¥¿¨Ë«´ýÇé¿öÏÂÁ½¸ö´ý»ú²à¶¼Éϱ¨  --hyc-- */

-        if(bIsAllChnlDeliver)

-        {

-            BYTE    bInstanceNo = (g_zAti_CurInstance == 1 ? Z_ATI_INSNO_1 : Z_ATI_INSNO_2);

-            bChnelId = zAti_GetUnsolChannel((BYTE)(bInstanceNo+1));

-            if (bChnelId != Z_ATI_UNOSL_CHANNEL_ALL_FREE && (Z_VALID == zAti_GetChnelIndState(bChnelId)))

-            {

-                zAti_SendRspCmdStr2Trace(bChnelId, iEncodeCmdLen, pEncodeCmd);

-                zAti_SendFnc(bChnelId, (UINT8 *)pEncodeCmd, iEncodeCmdLen, ZATI2_CHIND_AT);

-            }

-        }

-

-        return;

-    }

-

-    if (zAti_IsBlackScreenReportMsg(iEvId))

-    {

-        if (bCurrReportChnel != 0XFF)

-        {

-            if (Z_VALID == zAti_GetChnelIndState(bCurrReportChnel))

-            {

-                zAti_SendRspCmdStr2Trace(bCurrReportChnel, iEncodeCmdLen, pEncodeCmd);

-                zAti_SendFnc(bCurrReportChnel, (UINT8 *)pEncodeCmd, iEncodeCmdLen, ZATI2_CHIND_AT);

-            }

-            /* 617002489746 ÔÚ»ñÈ¡µ½Í¨µÀʱUICCºÍSTMÏà¹ØÖ÷¶¯Éϱ¨ÏûÏ¢ÔÚµ¥¿¨Ë«´ýÇé¿öÏÂÁ½¸ö´ý»ú²à¶¼Éϱ¨  --hyc-- */

-            if(bIsAllChnlDeliver)

-            {

-                BYTE bInstanceNo = (g_zAti_CurInstance == 1 ? Z_ATI_INSNO_1 : Z_ATI_INSNO_2);

-                bCurrReportChnel = zAti_GetAlwaysReportChnel((BYTE)(bInstanceNo+1));

-                if (bCurrReportChnel != 0XFF && (Z_VALID == zAti_GetChnelIndState(bCurrReportChnel)))

-                {

-                    zAti_SendRspCmdStr2Trace(bCurrReportChnel, iEncodeCmdLen, pEncodeCmd);

-                    zAti_SendFnc(bCurrReportChnel, (UINT8 *)pEncodeCmd, iEncodeCmdLen, ZATI2_CHIND_AT);

-                }

-            }

-            

-        }

-        return;

-    }

-

-    while(NULL != pTempChnelNode)

-    {

-        // Ðè񻂿·ÖʵÀýºÅÉϱ¨£¬´ËͨµÀ²»ÊôÓÚµ±Ç°ÊµÀýºÅ·¶Î§

-        if(!bIsAllChnlDeliver && !zAti_IsCurInstanceChnlNode(g_zAti_CurInstance, pTempChnelNode))

-        {

-            pTempChnelNode = pTempChnelNode->pNextCnNode;

-            continue;

-        }

-

-        if(ZATI2_CHANNEL_MODE_CMD == pTempChnelNode->server_mode && (Z_VALID == zAti_GetChnelIndState(pTempChnelNode->iChnelId)))

-        {

-            iSendCount++;

-            if(ZAT2_SM_D == pTempChnelNode->cmd_id)/*  ATD*xxxxÖ®ÀàµÄ²»Éϱ¨  */

-            {

-                pTempChnelNode = pTempChnelNode->pNextCnNode;

-                continue;

-            }

-            zAti_SendRspCmdStr2Trace(pTempChnelNode->iChnelId, iEncodeCmdLen, pEncodeCmd);

-            zAti_SendFnc(pTempChnelNode->iChnelId, (UINT8 *)pEncodeCmd, iEncodeCmdLen, ZATI2_CHIND_AT);

-        }

-        else 

-        {

-            pDataChnelNode = pTempChnelNode;

-        }

-        pTempChnelNode = pTempChnelNode->pNextCnNode;

-    }

-

-    if(iSendCount == 0 && pDataChnelNode != NULL && (Z_VALID == zAti_GetChnelIndState(pDataChnelNode->iChnelId)))

-    {

-        zAti_ChangeChnelNodeToCmd(pDataChnelNode);

-        zAti_SendRspCmdStr2Trace(pDataChnelNode->iChnelId, iEncodeCmdLen, pEncodeCmd);

-        zAti_SendFnc(pDataChnelNode->iChnelId, (UINT8 *)pEncodeCmd, iEncodeCmdLen, ZATI2_CHIND_AT);

-    }

-    return;

-}

-#ifdef USE_VOICE_SUPPORT

-VOID zAti_DeliverCendInd(VOID)

-{

-    UINT16  strLen=0;

-    CHAR *pStrCmd = NULL;

-

-    pStrCmd = (CHAR *)zAti_GetUB(ZAT2_SHORT_CMD_LEN);

-

-    /*^CEND: <Call_X>,[reserve],<endstatus>*/

-    sprintf((char *)pStrCmd, "%s^CEND: 1,,29%s", g_zAt_CRLF, g_zAt_CRLF);/*Call_X¹Ì¶¨Îª1*/

-    strLen = (UINT16)strlen((const char *)pStrCmd);

-

-    zAti_DeliverAllMsg(AP_MMIA_CEND_IND_EV, pStrCmd, strLen);

-

-    zAti_RetUB((VOID **)&pStrCmd);

-    return;

-}

-#endif

-VOID __ps_4g_func zAti_ChangeChnelNodeToCmd(T_ZAti_ChannelInfo *pChnelNode)

-{

-    if(pChnelNode != NULL && pChnelNode->server_mode == ZATI2_CHANNEL_MODE_DATA)

-    {

-        pChnelNode->server_mode = ZATI2_CHANNEL_MODE_CMD;

-        pChnelNode->dataType = ZATI2_CHANNEL_DATA_TYPE_INVAL; /* »¹Ô­ */

-        zAti_SendFnc(pChnelNode->iChnelId, NULL, 0, ZATI2_CHIND_TURN_AT); /* Çл»Í¨µÀ */

-    }

-    return;

-}

-

-DWORD zAti_HandleSmNoCarrierCnf(VOID* pBuff, DWORD * pdwChangedMsgId, T_ZAti_ChannelInfo  *pChnelNode)

-{

-    zAti_ChangeChnelNodeToCmd(pChnelNode);

-    *pdwChangedMsgId = MMIA_SM_NO_CARRIER_CNF_EV;

-    return Z_APMMIA_NORESULT;

-}

-

-DWORD zAti_HnadlePdpCauseQueryCnf(VOID* pBuff, DWORD * pdwChangedMsgId, T_ZAti_ChannelInfo  *pChnelNode)

-{

-    ZOSS_TASK_ID tTaskId = zOss_Sender();

-    T_zMmiaSm_QueryPdpCause_Cnf *pCeerCnf = (T_zMmiaSm_QueryPdpCause_Cnf*)pBuff;

-

-    if(tTaskId == zDev_GetTaskId(Z_ATI_TASKID_SM, 0) || 

-       tTaskId == zDev_GetTaskId(Z_ATI_TASKID_SM, 1))

-    {

-        g_zAti_atDataEx[g_zAti_CurInstance].tCeerInfo.dwSmCause       = pCeerCnf->dwCause; 

-        g_zAti_atDataEx[g_zAti_CurInstance].tCeerInfo.bSmCauseFg      = pCeerCnf->bCauseFg;

-    }

-    else

-    {

-        g_zAti_atDataEx[g_zAti_CurInstance].tCeerInfo.dwEsmCause       = pCeerCnf->dwCause; 

-        g_zAti_atDataEx[g_zAti_CurInstance].tCeerInfo.bEsmCauseFg      = pCeerCnf->bCauseFg;

-    }

-    g_zAti_atDataEx[g_zAti_CurInstance].tCeerInfo.bBkOffTimeFg      = pCeerCnf->bBkOffTimeFg;

-    g_zAti_atDataEx[g_zAti_CurInstance].tCeerInfo.dwBkOffTime       = pCeerCnf->dwBkOffTime;

-    g_zAti_atDataEx[g_zAti_CurInstance].tCeerInfo.bSmCauseRpted  = Z_VALID;

-

-    *pdwChangedMsgId = MMIA_SM_PDP_CAUSE_QUERY_CNF_EV;

-    return Z_APMMIA_NORESULT;

-}

-#ifdef USE_VOICE_SUPPORT

-VOID zAti_HandleCcDiscInd(T_ZAti_ChannelInfo *pChnelNode)

-{

-    zAti_ChangeChnelNodeToCmd(pChnelNode);

-    return;

-}

-#endif

-DWORD zAti_HandleCgattSetReqCnf(VOID* pBuff, DWORD * pdwChangedMsgId, T_ZAti_ChannelInfo  *pChnelNode)

-{

-    BYTE bInstance = 0;

-    T_zMmiaUmm_Active_Cnf *pCnf = (T_zMmiaUmm_Active_Cnf *)pBuff;

-    UINT8  iAtiCidNum = 0;

-

-    if(pChnelNode == NULL)

-    {

-        *pdwChangedMsgId = MMIA_UMM_ACTIVE_CNF_EV;

-        return Z_APMMIA_NORESULT;

-    }

-    bInstance = zAti_GetTaskInstantByChnlId(pChnelNode->iChnelId);

-    if(Z_SUCC == pCnf->bResult && (pChnelNode->iEvId == MMIA_UMM_ACTIVE_REQ_EV || pChnelNode->cmd_id == ZAT2_MM_COPS))/* È¥¸½×ųɹ¦ */

-    {

-        pChnelNode->iEvId = ZATI2_INVAL_EVID;

-        for(iAtiCidNum = 0; iAtiCidNum < ZATI2_SM_MAX_SMCID_NUM; iAtiCidNum++)

-        {

-            if(g_zAti_SmContext[bInstance].lastCidTab[iAtiCidNum].iCid > 0 && 

-                g_zAti_SmContext[bInstance].lastCidTab[iAtiCidNum].iCid <= ZATI2_SM_MAX_SMCID_NUM)

-            {

-                T_ZAti_ChannelInfo *pChNode = zAti_GetChannelNodePtr((UINT8)g_zAti_SmContext[bInstance].lastCidTab[iAtiCidNum].chnelId);

-                if(pChNode != NULL)

-                {

-                    if(g_zAti_SmContext[bInstance].lastCidTab[iAtiCidNum].isPpp

-                    &&(ZATI2_CHANNEL_MODE_DATA == pChNode->server_mode))

-                    {

-                        zAti_HandleNoCarrierCnf(0xff,pChNode->iChnelId);

-                    }

-                    else

-                    {

-                        zAti_ChangeChnelNodeToCmd(pChNode);

-                    }

-                }               

-            }

-        } 

-    }

-    *pdwChangedMsgId = MMIA_UMM_ACTIVE_CNF_EV;

-    return Z_APMMIA_NORESULT;

-}

-#ifdef USE_VOICE_SUPPORT

-DWORD zAti_HandleVtsForCmcc(BYTE bSourceIndex, BYTE bDestIndex)

-{

-    T_zMmiaCc_Dtmf_Req *pDecEvBody = NULL;

-    UINT8 destTask = 0;

-

-    if( !zAti_GetDestTaskByMsgID(MMIA_CC_DTMF_REQ_EV,&destTask)) /*617001941772*/ 

-    {

-         zAti_SendExpt2TraceAgt(ERR_InvalidMsg, TRACE_ERR_LEVEL_NORMAL,"");

-        return Z_APMMIA_OPTNOTALW_ERR;

-    }

-    pDecEvBody = (T_zMmiaCc_Dtmf_Req *)zAti_GetUB(sizeof(T_zMmiaCc_Dtmf_Req));

-    pDecEvBody->bSrcIndex = bSourceIndex;

-    pDecEvBody->bDesIndex = bDestIndex;

-    pDecEvBody->bDtmf = g_zAti_atDataEx[g_zAti_CurInstance].tDtmf.bDtmf[g_zAti_atDataEx[g_zAti_CurInstance].tDtmf.bCurnum++];

-    pDecEvBody->dwDuration  = g_zAti_atDataEx[g_zAti_CurInstance].tDtmf.dwDuration;

-

-    if(g_zAti_atDataEx[g_zAti_CurInstance].tDtmf.bCurnum == g_zAti_atDataEx[g_zAti_CurInstance].tDtmf.bTotalNum)

-    {

-        g_zAti_atDataEx[g_zAti_CurInstance].tDtmf.bTotalNum = 0;

-    }

-

-    if (  Z_SUCC != zAti_MsgSend(MMIA_CC_DTMF_REQ_EV, (PBYTE)pDecEvBody, sizeof(T_zMmiaCc_Dtmf_Req),destTask))

-    {

-        return Z_APMMIA_OPTNOTALW_ERR;

-    }   

-    

-    return Z_APMMIA_NORESULT;

-}

-#endif

-static SINT32 zAti_ChangeChnelNodeToData(T_ZAti_DataType dataType, CHAR *pEncodeCmd, UINT16 iEncodeCmdLen, T_ZAti_ChannelInfo *pChnelNode)

-{

-    T_zAti2_CtrmChInd iFlag = ZATI2_CHIND_TURN_CSD;

-    pChnelNode->server_mode = ZATI2_CHANNEL_MODE_DATA;

-    pChnelNode->dataType = dataType;

-    if(dataType == ZATI2_CHANNEL_DATA_TYPE_CSD)

-    {

-        iFlag = ZATI2_CHIND_TURN_CSD;

-    }

-    else //if(dataType == ZATI2_CHANNEL_DATA_TYPE_PS)

-    {

-        iFlag = ZATI2_CHIND_TURN_PSD;

-    }

-    return zAti_SendFnc(pChnelNode->iChnelId, (UINT8 *)pEncodeCmd, iEncodeCmdLen, iFlag);

-}

-#ifdef USE_VOICE_SUPPORT

-/*617001840313ATI¶ÔÓÚºô½Ð״̬¶àÉϱ¨Ò»´Î^CONN*/

-static VOID zAti_SendConnInd(UINT8 *pDataPtr, CHAR *pEncodeCmd, UINT16 iEncodeCmdLen, T_ZAti_ChannelInfo *pChnelNode)

-{

-    T_zApMmia_Conn_Ind       *pCcConnInd = (T_zApMmia_Conn_Ind *)pDataPtr;

-    

-    if((Z_APMMIA_CALLTYPE_DATA == pCcConnInd->bCallType) || (Z_APMMIA_CALLTYPE_PS_DATA == pCcConnInd->bCallType)) /* connect ½øÈëÊý¾Ý̬ */

-    {

-         zAti_ChangeChnelNodeToData(ZATI2_CHANNEL_DATA_TYPE_CSD, pEncodeCmd, iEncodeCmdLen, pChnelNode);

-    }

-    return;

-}

-#endif

-static SINT32 zAti_SendSmConnectInd(UINT8 *pDataPtr, CHAR *pEncodeCmd, UINT16 iEncodeCmdLen, T_ZAti_ChannelInfo *pChnelNode)

-{

-    zAti_SendFnc(pChnelNode->iChnelId, (UINT8 *)pEncodeCmd, iEncodeCmdLen, ZATI2_CHIND_AT);

-    zAti_SendRspCmdStr2Trace(pChnelNode->iChnelId, iEncodeCmdLen, pEncodeCmd);

-    return zAti_ChangeChnelNodeToData(ZATI2_CHANNEL_DATA_TYPE_PS, pEncodeCmd, iEncodeCmdLen, pChnelNode);

-}

-

-

-/**********************************************************

-º¯ÊýÃû³Æ:zAti_GetUmmPsContext

-º¯Êý¹¦ÄÜ:ÏòUMMÇëÇóPSÓò×¢²á״̬ÐÅÏ¢

-**********************************************************/

-#ifdef CXT_MOV

-VOID zAti_GetUmmPsContext(T_zMmiaSm_Context_Cnf  *ptContextCnf)

-{

-    T_zMmiaUmm_PsContext_Req* ptUmmContextReq = ZOSS_NULL;

-

-    ptUmmContextReq = (T_zMmiaUmm_PsContext_Req*)zAti_GetUB(sizeof(T_zMmiaUmm_PsContext_Req));

-

-    ptUmmContextReq->bSrcIndex = ptContextCnf->bDesIndex;

-    ptUmmContextReq->bDesIndex = ptContextCnf->bSrcIndex;

-

-    zAti_MsgSend(MMIA_UMM_PS_CONTEXT_REQ_EV,(PBYTE)ptUmmContextReq,

-    sizeof(T_zMmiaUmm_PsContext_Req),Z_ATI_TASKID_UMM);

-

-    return;

-}

-

-/********************************************************

-º¯ÊýÃû³Æ:zAti_SendContextInd

-º¯Êý¹¦ÄÜ:ÏòSM/ESM·¢ËͰáǨָʾ

-********************************************************/

-DWORD zAti_SendContextInd(T_zMmiaSm_Context_Cnf* ptContextCnf, BYTE bInsNo)

-{

-    BYTE bMod =  zAti_GetTaskIndex(bInsNo);

-    BYTE bRet = 0;

-    T_zMmiaSm_Context_Ind *ptContetInd = ZOSS_NULL;

-    BYTE bTempInsNo = g_zAti_CurInstance;    

-

-    if(bMod == Z_ATI_TASKID_ATI)

-    {

-        zAti_SendExpt2TraceAgt(ERR_InvalidPara,  TRACE_ERR_LEVEL_NORMAL,"");//mod error

-        return Z_APMMIA_OPTNOTALW_ERR;

-    }

-

-    ptContetInd = (T_zMmiaSm_Context_Ind*)zAti_GetUB(sizeof(T_zMmiaSm_Context_Ind));

-    /*´ËʱÊÇÏòÁíÒ»´ý·¢ËÍÏûÏ¢£¬Ë÷ÒýÖµÐèÒªÆ«ÒÆ*/

-    zOss_Memcpy(ptContetInd, ptContextCnf, sizeof(T_zMmiaSm_Context_Cnf));

-    

-    if(Z_ATI_INSNO_1 == bInsNo)

-    {

-        ptContetInd->bSrcIndex = ptContextCnf->bDesIndex - Z_ATI_INSTANCE_ONE_CHNL_MAX;

-    }

-    else

-    {

-        ptContetInd->bSrcIndex = ptContextCnf->bDesIndex + Z_ATI_INSTANCE_ONE_CHNL_MAX;

-    }

-    ptContetInd->bDesIndex = ptContextCnf->bSrcIndex;

-

-    g_zAti_CurInstance = bInsNo;

-    bRet = zAti_MsgSend(MMIA_SM_CONTEXT_IND_EV,(PBYTE)ptContetInd, sizeof(T_zMmiaSm_Context_Ind),bMod);

-    g_zAti_CurInstance = bTempInsNo;

-

-    if(Z_FAIL== bRet)

-    {

-        zAti_SendExpt2TraceAgt(ERR_InvalidMsg,  TRACE_ERR_LEVEL_NORMAL,"");//send error

-        return Z_APMMIA_OPTNOTALW_ERR;

-    }

-

-    zAti_GetUmmPsContext(ptContextCnf);

-    return Z_APMMIA_NORESULT;

-}

-#endif

-

-/***************************************************************

-º¯ÊýÃû³Æ:zAti_SendCgactDeactReq

-º¯Êý¹¦ÄÜ:·¢Æð²¦ºÅ¹Ò¶Ï

-***************************************************************/

-VOID __ps_static_func zAti_SendCgactDeactReq(T_zApMmia_SmActDeact_Req *ptDeactReq, BYTE bInsNo)

-{

-    BYTE bMod = 0;

-    BYTE bTempInsNo = g_zAti_CurInstance;

-    T_zMmiaSm_PdpDeact_Req       *ptSmDeactReq = ZOSS_NULL;

-    

-

-    bMod = zAti_GetTaskIndex(bInsNo);

-

-    if(bMod == Z_ATI_TASKID_ATI)

-    {

-        zAti_SendExpt2TraceAgt(ERR_InvalidPara,  TRACE_ERR_LEVEL_NORMAL,"");//mod error

-        return ;

-    }

-

-    ptSmDeactReq = (T_zMmiaSm_PdpDeact_Req*)zAti_GetUB(sizeof(T_zMmiaSm_PdpDeact_Req));

-

-    ptSmDeactReq->bSrcIndex = ptDeactReq->bSrcIndex;

-    ptSmDeactReq->bDesIndex = ptDeactReq->bDesIndex;

-    ptSmDeactReq->bCidNum   = ptDeactReq->bCidNum;

-    ptSmDeactReq->bAtType = Z_MMIASM_ATCMD_CGACT;

-    zOss_Memcpy(ptSmDeactReq->abCid,ptDeactReq->abCid,Z_APMMIA_SM_MAX_CID_NUM);

-    ptSmDeactReq->bIsDisconnect = ptDeactReq->bIsDisconnect;

-

-    g_zAti_CurInstance = bInsNo;

-    zAti_MsgSend(MMIA_SM_PDP_DEACTIVATE_REQ_EV, (PBYTE)ptSmDeactReq, sizeof(T_zMmiaSm_PdpDeact_Req), bMod);

-    g_zAti_CurInstance = bTempInsNo;

-    return;

-}

-/***************************************************************

-º¯ÊýÃû³Æ:zAti_SendZgactDeactReq

-º¯Êý¹¦ÄÜ:·¢Æð²¦ºÅ¹Ò¶Ï£¬Ê¹ÓÃÎÞЧË÷Òý

-***************************************************************/

-static VOID zAti_SendZgactDeactReq(T_zMmiaSm_PdpDeact_Req *ptDeactReq)

-{

-    BYTE bMod = 0;

-    T_zMmiaSm_PdpDeact_Req       *ptSmDeactReq = ZOSS_NULL;

-    

-    bMod = zAti_GetTaskIndex(g_zAti_CurInstance);

-    if(bMod == Z_ATI_TASKID_ATI)

-    {

-        zAti_SendExpt2TraceAgt(ERR_InvalidPara,  TRACE_ERR_LEVEL_NORMAL,"");//mod error

-        return;

-    }

-

-    ptSmDeactReq = (T_zMmiaSm_PdpDeact_Req*)zAti_GetUB(sizeof(T_zMmiaSm_PdpDeact_Req));

-

-    ptSmDeactReq->bDesIndex = ptDeactReq->bDesIndex;

-    ptSmDeactReq->bSrcIndex = ptDeactReq->bSrcIndex;

-    ptSmDeactReq->bAtType = Z_MMIASM_ATCMD_ZGACT;

-    zOss_Memcpy(ptSmDeactReq->abCid,ptDeactReq->abCid,ptDeactReq->bCidNum);

-    ptSmDeactReq->bCidNum = ptDeactReq->bCidNum;

-

-    zAti_MsgSend(MMIA_SM_PDP_DEACTIVATE_REQ_EV,(PBYTE)ptSmDeactReq, sizeof(T_zMmiaSm_PdpDeact_Req), bMod);

-    return;

-}

-BOOL zAti_HandleATDIpPppCommonCnf(T_zMmiaSm_Common_Cnf *pCnf)

-{

-    BYTE  bAtiNum = 0;

-    T_ZAti_ChannelInfo *pChnelNode = NULL;

-    BYTE bInstance = zAti_GetTaskInstantByChnlId(pCnf->bDesIndex);

-    BYTE bChnelId = 0xff;

-

-    for(bAtiNum = 0; bAtiNum < ZATI2_SM_MAX_SMCID_NUM; bAtiNum++)

-    {

-        if(g_zAti_SmContext[bInstance].lastCidTab[bAtiNum].iCid != 0

-        && g_zAti_SmContext[bInstance].lastCidTab[bAtiNum].isPpp

-        && !g_zAti_SmContext[bInstance].lastCidTab[bAtiNum].isPppActCmplete)

-        {

-            bChnelId = g_zAti_SmContext[bInstance].lastCidTab[bAtiNum].chnelId;

-            pChnelNode = zAti_GetChannelNodePtr(bChnelId);

-            if (pChnelNode == NULL)

-            {

-                zAti_SendExpt2TraceAgt(ERR_InvalidPara,  TRACE_ERR_LEVEL_NORMAL,"");//get chnel fail

-                return FALSE;

-            }

-            if(pChnelNode->server_mode == ZATI2_CHANNEL_MODE_DATA)

-            {

-                zAti_HandleNoCarrierCnf(pCnf->bSrcIndex, bChnelId);

-            }

-            zAti_ClearCidInfobyChnel(bChnelId);

-            return TRUE;

-        }

-    }

-    return TRUE;

-}

-/*************************************************************

-º¯ÊýÃû³Æ:zAti_HandlePppCommonCnf

-º¯Êý¹¦ÄÜ:´¦ÀíPPP²¦ºÅÁ÷³ÌÀïÊÕµ½µÄSM_COMMON_CNF

-*************************************************************/

-static DWORD zAti_HandlePppCommonCnf(VOID* pBuff, DWORD *pdwChangedMsgId, T_ZAti_ChannelInfo  *pChnelNode)

-{

-    T_zMmiaSm_Common_Cnf *pCnf = (T_zMmiaSm_Common_Cnf*)pBuff;

-

-    *pdwChangedMsgId = MMIA_SM_COMMON_CNF_EV;

-    if(pChnelNode != NULL && pChnelNode->IsPpp)

-    {

-         zAti_ClearCidInfobyChnel(pCnf->bDesIndex);

-        pChnelNode->IsPpp = FALSE;

-        if(pChnelNode->server_mode == ZATI2_CHANNEL_MODE_DATA)

-        {

-            zAti_HandleNoCarrierCnf(pCnf->bSrcIndex, pCnf->bDesIndex);

-           // *pdwChangedMsgId = MMIA_SM_NO_CARRIER_CNF_EV;

-        }

-    }

-    zAti_HandleATDIpPppCommonCnf(pCnf);

-   

-    return Z_APMMIA_NORESULT;

-}

-/**************************************************************************

-* º¯ÊýÃû³Æ : zAti_PppGetCid

-* ¹¦ÄÜÃèÊö : ¸ù¾ÝͨµÀºÅ·µ»ØCID

-* ²ÎÊý˵Ã÷£º (IN)£º 

-*            iChnelId     ͨµÀIDºÅ

-* ·µ »Ø Öµ£º ³É¹¦·µ»ØCID£¬Ê§°Ü·µ»Ø0

-* ÆäËü˵Ã÷£º ÎÞ

-**************************************************************************/

-BYTE zAti_PppGetCid(BYTE  bChnelId)

-{

-    BYTE bInstance = zAti_GetTaskInstantByChnlId(bChnelId);

-    BYTE bAtiCidNum = 0;

-    

-    for(bAtiCidNum = 0; bAtiCidNum < ZATI2_SM_MAX_SMCID_NUM; bAtiCidNum++)

-    {

-        if((g_zAti_SmContext[bInstance].lastCidTab[bAtiCidNum].chnelId == bChnelId)

-        && (g_zAti_SmContext[bInstance].lastCidTab[bAtiCidNum].isPpp)

-        && (g_zAti_SmContext[bInstance].lastCidTab[bAtiCidNum].iCid >= 1) /* ȡֵ1~4 */

-        && (g_zAti_SmContext[bInstance].lastCidTab[bAtiCidNum].iCid <= ZATI2_SM_MAX_SMCID_NUM)) 

-        {

-            

-            return g_zAti_SmContext[bInstance].lastCidTab[bAtiCidNum].iCid;

-            

-        }

-    }

-    return 0;

-}

-/*****************************************************************

-º¯ÊýÃû³Æ:zAti_HandleUserDeactCnfMsg

-º¯Êý¹¦ÄÜ:´¦ÀíÓû§¹Ò¶ÏÏìÓ¦

-*****************************************************************/

-static DWORD __ps_4g_func zAti_HandleUserDeactCnfMsg( VOID* pBuff, DWORD *pdwChangedMsgId, T_ZAti_ChannelInfo  *pChnelNode)

-{

-    T_zMmiaSm_PdpDeact_Req tSmDeact = {0};

-    T_zMmiaSm_PdpDeact_Cnf *pDeactCnf = (T_zMmiaSm_PdpDeact_Cnf*)pBuff;

-        

-    BYTE bNum = 0;

-    BYTE i = 0;

-    BYTE bInstance = 0;

-    BYTE bCid = 0;

-

-    if(!pDeactCnf->bIsDisconnect)

-    {

-        *pdwChangedMsgId = MMIA_SM_PDP_DEACTIVATE_CNF_EV;

-        return Z_APMMIA_NORESULT;

-    }

-

-    if(pChnelNode != NULL)

-    {

-        bInstance = zAti_GetTaskInstantByChnlId(pChnelNode->iChnelId);

-        bCid = zAti_PppGetCid(pChnelNode->iChnelId);

-        /*PPP²¦ºÅ²»¹Ü³É¹¦Ê§°Ü¶¼ÒªÉϱ¨NOCARRIER*/

-        if(pChnelNode->IsPpp || (bCid != 0 && g_zAti_SmContext[bInstance].lastCidTab[bCid-1].isPpp))

-        {

-            pChnelNode->IsPpp = FALSE;

-            if(pChnelNode->server_mode == ZATI2_CHANNEL_MODE_DATA)

-            {

-                zAti_HandleNoCarrierCnf(pDeactCnf->bSrcIndex,pDeactCnf->bDesIndex);

-                //*pdwChangedMsgId = MMIA_SM_NO_CARRIER_CNF_EV;

-            }

-            zAti_ClearCidInfobyChnel(pChnelNode->iChnelId);

-        }

-    }

-

-    /*Óû§¹Ò¶Ïʧ°Ü²»¹ÜÊÇPPP»¹ÊÇRNDIS¶¼ÒªÔٴη¢ÆðZGACT¹Ò¶Ï*/

-    if(Z_SUCC != pDeactCnf->bResult)

-    {

-        for(i = 0; i<Z_MMIASM_MAX_CID_NUM; i++)

-        {

-            if(Z_SUCC != pDeactCnf->atResult[i].bHandleResult)

-            {

-                tSmDeact.abCid[bNum++]=pDeactCnf->atResult[i].bCid;

-                tSmDeact.bCidNum++;

-            }

-        }

-        tSmDeact.bDesIndex = 0xff;

-        tSmDeact.bSrcIndex = ZATI2_CHANNEL_ID_NUM_END + 1;

-        if(tSmDeact.bCidNum>0)

-        {

-            zAti_SendZgactDeactReq(&tSmDeact);

-        }

-    }

-    

-    return Z_APMMIA_NORESULT;

-}

-static VOID __ps_4g_func zAti_HandleZgactCnfMsg(T_zMmiaSm_PdpAct_Cnf *pSmCgactCnf,  T_ZAti_ChannelInfo *pChnelNode)

-{

-    BYTE bAtiNum = 0;

-    BYTE bMastCid = 0;

-    BYTE bCidIndex = pSmCgactCnf->atResult[0].bCid - 1;//¼Ç¼CIDÔÚlastCidTab[]ÖжÔÓ¦µÄϱê

-    BYTE bInstance = zAti_GetTaskInstantByChnlId(pChnelNode->iChnelId);

-    /*ÒòΪÖ÷¸¨Í¨µÀÏàͬ£¬ËùÒÔÅжÏÒ»¸ö¾Í×ã¹»ÁË

-       Çå³ý֮ǰȥ²¦ºÅµÄͨµÀºÅ£¬·ÀÖ¹Ò»¸öͨµÀ¶ÔÓ¦¶à¸öcidÇé¿ö*/

-    for(bAtiNum = 0; bAtiNum < ZATI2_SM_MAX_SMCID_NUM; bAtiNum++)

-    {

-        if(g_zAti_SmContext[bInstance].lastCidTab[bAtiNum].chnelId == pSmCgactCnf->bDesIndex

-            && g_zAti_SmContext[bInstance].lastCidTab[bAtiNum].iCid != pSmCgactCnf->atResult[0].bCid

-            &&g_zAti_SmContext[bInstance].lastCidTab[bAtiNum].extActCid!= pSmCgactCnf->atResult[0].bCid)

-        {

-            zOss_Memset(&g_zAti_SmContext[bInstance].lastCidTab[bAtiNum], 0, sizeof(T_ZAti_LastCidTab));

-        }

-    }

-    

-    (VOID)zAti_IsExCid(pSmCgactCnf->atResult[0].bCid, &bMastCid);  //  Èç¹ûÊǸ¨CID £¬ÔòÕÒµ½ Ö÷CID

-    if (bMastCid > 0)

-    {

-        bCidIndex = --bMastCid;

-    }

-    

-    g_zAti_SmContext[bInstance].lastCidTab[bCidIndex].chnelId = pSmCgactCnf->bDesIndex;

-

-    // Mt ¼¤»îµÄCid, ATi ûÓÐÔÚÈ«¾ÖÐÅÏ¢ÖмǼCid¡£

-    g_zAti_SmContext[bInstance].lastCidTab[bCidIndex].iCid = bCidIndex + 1;

-    if(zAti_SendFnc(pSmCgactCnf->bDesIndex, NULL, 0, ZATI2_CHIND_TURN_PSD) == ZATI2_SUCCESS)

-    {

-        g_zAti_SmContext[bInstance].lastCidTab[bCidIndex].isNdis = TRUE;

-        g_zAti_SmContext[bInstance].lastCidTab[bCidIndex].isUsed = TRUE;

-        pChnelNode->server_mode = ZATI2_CHANNEL_MODE_DATA;

-        pChnelNode->dataType = ZATI2_CHANNEL_DATA_TYPE_PS;

-        pSmCgactCnf->bResult = Z_SUCC;

-    }

-    else

-    {

-        g_zAti_SmContext[bInstance].lastCidTab[bCidIndex].chnelId = 0;

-        zAti_HandleSmDeActCid(pSmCgactCnf->atResult[0].bCid);

-        pSmCgactCnf->bResult = Z_FAIL;

-    }

-    return;

-}

-

-static BOOL __ps_static_func zAti_HandleCnfMsgBeforeEncCmd(UINT32 iEvId, UINT8 *pDataPtr, UINT16 iDataLen,  T_ZAti_ChannelInfo *pChnelNode)

-{

-    if (pChnelNode->cmd_id == ZAT2_NO_COMMAND && (iEvId == AP_MMIA_COMMON_CNF_EV || 

-        iEvId == MMIA_SMS_COMMON_CNF_EV || iEvId == MMIA_SS_COMMON_CNF_EV ||

-        iEvId == MMIA_UMM_COMMON_CNF_EV || iEvId == MMIA_SM_COMMON_CNF_EV|| 

-        iEvId == AP_UICC_USAT_COMMON_CNF_EV || iEvId == AP_UICC_COMMON_CNF_EV || 

-        iEvId == AP_MMIA_PB_COMMON_CNF_EV|| iEvId == MMIA_CC_COMMON_CNF_EV))

-    {/*617001738758 AT Á÷³ÌÐ޸쬯Á±ÎËùÓеڶþÌõ»Ø¸´ÏûÏ¢ */

-        return FALSE;

-    }

-    return TRUE;

-}

-static VOID zAti_CpbrHandle(T_zApMmia_CpbrSet_Req *pCpbrReq, UINT16 iStartRec, T_zStmPb_StorageId readStorage, T_zStm_Cpbr_Cnf *pCpbrStmCnf)

-{

-    UINT16                      iLen = sizeof(T_zStm_Cpbr_Cnf);

-    T_zStm_Cpbr_Cnf             *pCnf = NULL;

-    T_zStm_Cpbr_Req             cpbrStmReq;

-    zOss_Memset(&cpbrStmReq, 0, sizeof(T_zStm_Cpbr_Req));

-    cpbrStmReq.cpbrSetReq = *pCpbrReq;

-    cpbrStmReq.iStartRec = iStartRec;

-    cpbrStmReq.readStorage = readStorage;

-    if(NULL == pCpbrStmCnf)

-    {

-        pCnf = (T_zStm_Cpbr_Cnf *)zAti_GetUB(iLen);

-    }

-    else

-    {

-        pCnf = pCpbrStmCnf;

-    }

-    zStmPb_CpbrSynHandle(&cpbrStmReq, pCnf, (T_zStm_TaskIdx)g_zAti_CurInstance);

-    zOss_TaskSendData(EV_ZATI2_CPBR_CNF, (VOID *)pCnf, iLen, g_zAti_Context.taskIdMy);

-}

-

-BOOL zAti_SmIpPdpActReq(UINT8 iChnelId, T_ZAti_SmIpDnsInfo* pAddr)

-{

-    UINT8 iAtiCidNum = 0;

-    BYTE bInstance = zAti_GetTaskInstantByChnlId(iChnelId);

-    T_ZAti_ChannelInfo *pChnelNode = zAti_GetChannelNodePtr(iChnelId);

-    

-    if(NULL == pChnelNode) /* ¸ÃͨµÀûÓдò¿ª */

-    {

-        return FALSE;

-    }

-    for(iAtiCidNum = 0; iAtiCidNum < ZATI2_SM_MAX_SMCID_NUM; iAtiCidNum++)

-    {

-        if((g_zAti_SmContext[bInstance].lastCidTab[iAtiCidNum].chnelId == pChnelNode->iChnelId)

-        && (g_zAti_SmContext[bInstance].lastCidTab[iAtiCidNum].iCid >= 1) /* ȡֵ1~4 */

-        && (g_zAti_SmContext[bInstance].lastCidTab[iAtiCidNum].iCid <= ZATI2_SM_MAX_SMCID_NUM)) 

-        {

-            return zAti_SmGetPdpAddrByCid(g_zAti_SmContext[bInstance].lastCidTab[iAtiCidNum].iCid, pAddr, g_zAti_SmContext[bInstance].lastCidTab[iAtiCidNum].extActCid, bInstance);

-           // {

-            //    return TRUE;

-            //}

-            //zAti_UsbSioSmIpPdpActReq(g_zAti_SmContext[bInstance].lastCidTab[iAtiCidNum].iCid);

-            //return FALSE;

-        }

-    }

-    return FALSE;

-}

-/**************************************************************************

-* º¯ÊýÃû³Æ£º zAti_GetDestTaskByMsgID

-* ¹¦ÄÜÃèÊö£º 

-* ²ÎÊý˵Ã÷£º 

-*            

-* ·µ »Ø Öµ£º

-* ÆäËü˵Ã÷£º 

-**************************************************************************/

-BOOL __ps_static_func zAti_GetDestTaskByMsgID(UINT32 msgId, UINT8 *destTask)

-{

-    UINT16 iTaskMsgMap = 0;

-    

-    for(iTaskMsgMap = 0; iTaskMsgMap < sizeof(g_TaskMsgMap)/sizeof(T_ZAti_MsgTrnsprncy);iTaskMsgMap++ )

-    {

-        if(msgId == g_TaskMsgMap[iTaskMsgMap].dwMsgId)

-        {

-            *destTask = g_TaskMsgMap[iTaskMsgMap].bDestTak;

-            if(g_TaskMsgMap[iTaskMsgMap].bDestTak == Z_ATI_TASKID_SM

-                || g_TaskMsgMap[iTaskMsgMap].bDestTak == Z_ATI_TASKID_ESM)

-            {

-                *destTask = zAti_GetTaskIndex(g_zAti_CurInstance);

-            }                 

-            return TRUE;  

-        }

-    }

-    return FALSE;

-}

-

-BYTE __ps_static_func zAti_ConvertTskIdToSbMdl(BYTE destTask)

-{

-    switch (destTask)

-    {

-        case Z_ATI_TASKID_CC:

-            return Z_PSMDL_CC;

-        case Z_ATI_TASKID_SS:

-            return Z_PSMDL_SS;

-        case Z_ATI_TASKID_SM:

-            return Z_PSMDL_SM;

-        case Z_ATI_TASKID_SMS:

-            return Z_PSMDL_SMS;

-        case Z_ATI_TASKID_UMM:

-            return Z_PSMDL_UMM;

-        case Z_ATI_TASKID_ESM:

-           return Z_PSMDL_ESM;    

-        default:

-           return 0xff;

-    }

-}

-

-BOOL zAti_SaveLastCidTab(UINT8 iCid, UINT8 chnelId)

-{

-    BYTE i = 0;

-    BYTE bInstance = zAti_GetTaskInstantByChnlId(chnelId);

-

-    if(iCid == 0 || chnelId == 0)

-    {

-        return FALSE;

-    }

-

-    for(i = 0; i < ZATI2_SM_MAX_SMCID_NUM; i++)

-    {

-        if(g_zAti_SmContext[bInstance].lastCidTab[i].chnelId == chnelId

-            ||g_zAti_SmContext[bInstance].lastCidTab[i].iCid == iCid) /* ÕÒµ½ÒÔǰµÄ */

-        {

-            if(g_zAti_SmContext[bInstance].lastCidTab[i].isNdis && g_zAti_SmContext[bInstance].lastCidTab[i].isUsed)

-            {

-                return FALSE;

-            }

-            zOss_Memset(&g_zAti_SmContext[bInstance].lastCidTab[i], 0, sizeof(T_ZAti_LastCidTab));

-        }

-    }

-    

-    g_zAti_SmContext[bInstance].lastCidTab[iCid - 1].chnelId = chnelId;

-    g_zAti_SmContext[bInstance].lastCidTab[iCid - 1].iCid = iCid;

-    g_zAti_SmContext[bInstance].lastCidTab[iCid - 1].isUsed = TRUE;

-    g_zAti_SmContext[bInstance].lastCidTab[iCid - 1].isPpp = TRUE;

-    g_zAti_SmContext[bInstance].lastCidTab[iCid - 1].isPppActCmplete = TRUE;

-    return TRUE;

-}

-

-

-static VOID __ps_4g_func zAti_SaveOnlyCidTab(BYTE bCid, BYTE bExCid, BYTE bExPdpType)

-{    

-    g_zAti_SmContext[g_zAti_CurInstance].lastCidTab[bCid - 1].iCid = bCid;

-    g_zAti_SmContext[g_zAti_CurInstance].lastCidTab[bCid - 1].extActCid = bExCid;

-    g_zAti_SmContext[g_zAti_CurInstance].lastCidTab[bCid - 1].extPdpType = bExPdpType;           

-    g_zAti_SmContext[g_zAti_CurInstance].lastCidTab[bCid - 1].isUsed = TRUE;

-    g_zAti_SmContext[g_zAti_CurInstance].lastCidTab[bCid - 1].isNdis = FALSE;

-    return;

-}

-

-

-/* 617001591411 ¡¾ÖÇÄÜ»úÐèÇó¡¿- ÖÇÄÜ»úÐèÇóV3°æ±¾Í¬²½ÊµÏÖ*/

-UINT8 zAti2_BlGetChnlSrvMode(UINT8 iChnelId)

-{

-    T_ZAti_ChannelInfo *ptChnlNode = zAti_GetChannelNodePtr(iChnelId);

-

-    if (!ptChnlNode)

-    {

-        return ZATI2_CHANNEL_SRV_MODE_INVAL;

-    }

-    else if (ptChnlNode->server_mode == ZATI2_CHANNEL_MODE_CMD)

-    {

-        return ZATI2_CHANNEL_SRV_MODE_CMD;

-    }

-    else

-    {

-        return ZATI2_CHANNEL_SRV_MODE_DATA;

-    }

-}

-

-/* 617001591411 ¡¾ÖÇÄÜ»úÐèÇó¡¿- ÖÇÄÜ»úÐèÇóV3°æ±¾Í¬²½ÊµÏÖ*/

-// 617002532410£º[7510Ê¡µç]zPS_umm_IsLossOfCoverageºÍzAti2_PsIsInFlyMode½Ó¿Ú±ä¸ü

-BOOL zAti2_PsIsInFlyMode(VOID)

-{

-    if(zAti_IsSingleCardForOneStandby())

-    {

-        //return g_zAti_atDataEx[g_zAti_CurInstance].tFun.bFunVal == Z_APMMIA_CFUNFUN_DISBOTHRF;

-        if(zDev_GetTaskId(Z_ATI_TASKID_UICC, 0) != ZOSS_INVALID_TASK_ID)

-        {

-            return g_zAti_atDataEx[Z_ATI_INSNO_1].tFun.bFunVal == Z_APMMIA_CFUNFUN_DISBOTHRF;  

-        }

-        else

-        {

-            return g_zAti_atDataEx[Z_ATI_INSNO_2].tFun.bFunVal == Z_APMMIA_CFUNFUN_DISBOTHRF;

-        }

-    }

-    else

-    {

-#if defined (DUAL_CARD_DUAL_STANDBY) || defined (_OS_WIN)

-        return (g_zAti_atDataEx[Z_ATI_INSNO_1].tFun.bFunVal == Z_APMMIA_CFUNFUN_DISBOTHRF && 

-                      g_zAti_atDataEx[Z_ATI_INSNO_2].tFun.bFunVal == Z_APMMIA_CFUNFUN_DISBOTHRF) 

-                || (g_zAti_atDataEx[Z_ATI_INSNO_1].tFun.bFunVal == Z_APMMIA_CFUNFUN_DISBOTHRF && 

-                      g_zAti_atDataEx[Z_ATI_INSNO_2].tFun.bFunVal == Z_APMMIA_CFUNFUN_MINIFUN) 

-                || (g_zAti_atDataEx[Z_ATI_INSNO_2].tFun.bFunVal == Z_APMMIA_CFUNFUN_DISBOTHRF && 

-                      g_zAti_atDataEx[Z_ATI_INSNO_1].tFun.bFunVal == Z_APMMIA_CFUNFUN_MINIFUN);

-#else

-        return FALSE;

-#endif

-    }    

-}

-// 616000505421£ºÊ¡µçÐèÇó£¬Ìṩû¿ªÉ䯵½Ó¿Ú

-BOOL zAti2_PsRfNotOpen(VOID)

-{

-    if(zAti_IsSingleCardForOneStandby())

-    {

-        if(zDev_GetTaskId(Z_ATI_TASKID_UICC, 0) != ZOSS_INVALID_TASK_ID)

-        {

-            return g_zAti_atDataEx[Z_ATI_INSNO_1].tFun.bFunVal == Z_APMMIA_CFUNFUN_MINIFUN;  

-        }

-        else

-        {

-            return g_zAti_atDataEx[Z_ATI_INSNO_2].tFun.bFunVal == Z_APMMIA_CFUNFUN_MINIFUN;

-        }

-    }

-    else

-    {

-        return (g_zAti_atDataEx[Z_ATI_INSNO_1].tFun.bFunVal == Z_APMMIA_CFUNFUN_MINIFUN && 

-                g_zAti_atDataEx[Z_ATI_INSNO_2].tFun.bFunVal == Z_APMMIA_CFUNFUN_MINIFUN);

-    }    

-}

-

-VOID __ps_4g_func zAti_SmGetIpDnsAddr(BYTE bDnsAddrType, BYTE bDnsAddrlen,BYTE bBufLen, PBYTE pbProtBuf, PBYTE pbDnsAddr)

-{

-    BYTE  bProtConIdx   = 0;

-    BYTE  bProtCon          = 0;

-    BYTE  bDnsFieldLen    =0;

-    

-    for(bProtConIdx = 4; bProtConIdx < bBufLen;)

-    {

-        bProtCon = *(pbProtBuf + bProtConIdx);

-        bDnsFieldLen = *(pbProtBuf + bProtConIdx + 1);

-        if(bDnsFieldLen < 2)

-        {

-            return;

-        }

-        if ((bProtCon == bDnsAddrType) && (bBufLen >= bDnsFieldLen + 4)

-            &&(bDnsFieldLen >= bDnsAddrlen +2))

-        {

-            zOss_Memcpy(pbDnsAddr, pbProtBuf + bProtConIdx + 2, bDnsAddrlen);

-            return;

-        }

-        bProtConIdx += bDnsFieldLen;

-    }

-    return;

-}

-VOID __ps_4g_func zAti_SmGetIpDnsFromPcoProtList(T_ZAti_SmIpDnsInfo* pbDnsInfo, T_zMmiaSm_PcoInfo *pcoInfo, BYTE PdpType)

-{

-    BYTE bProtIdx = 0;

-    T_zMmiaSm_Container *ptProtList       = ZOSS_NULL;

-    BYTE bIsPrimaryDns = Z_INVALID;

-

-    for(bProtIdx = 0;bProtIdx < Z_MMIASM_PCO_PROT_ITEM_MAX_NUM; bProtIdx++)

-    {

-        ptProtList = pcoInfo->atProtList + bProtIdx;

-        if(PdpType == Z_APMMIA_SM_IPV4 && ptProtList->wId == Z_ATI_PROTOCOLID_IPCP)

-        {

-            zAti_SmGetIpDnsAddr(Z_ATI_PRIMDNSSER_ADDR,ZATI2_SM_IPV4_PDPADDR_LEN,pcoInfo->atProtList[bProtIdx].bLen,pcoInfo->atProtList[bProtIdx].abBuf,pbDnsInfo->iPrimaryDns);

-            zAti_SmGetIpDnsAddr(Z_ATI_SECMDNSSER_ADDR,ZATI2_SM_IPV4_PDPADDR_LEN,pcoInfo->atProtList[bProtIdx].bLen,pcoInfo->atProtList[bProtIdx].abBuf,pbDnsInfo->iSecondaryDns);

-        }

-    }

-

-    for(bProtIdx = 0;bProtIdx < Z_MMIASM_PCO_PARA_ITEM_MAX_NUM; bProtIdx++)

-    {

-        ptProtList = pcoInfo->atAddParaList + bProtIdx;

-        

-        if(PdpType == Z_APMMIA_SM_IPV4 && ptProtList->wId == 13 && (bIsPrimaryDns == Z_INVALID))

-        {

-            zOss_Memcpy(pbDnsInfo->iPrimaryDns, pcoInfo->atAddParaList[bProtIdx].abBuf, ZATI2_SM_IPV4_PDPADDR_LEN);

-            bIsPrimaryDns = Z_VALID;

-        }

-        else if(PdpType == Z_APMMIA_SM_IPV4 && ptProtList->wId == 13 && (bIsPrimaryDns == Z_VALID))

-        {

-            zOss_Memcpy(pbDnsInfo->iSecondaryDns, pcoInfo->atAddParaList[bProtIdx].abBuf, ZATI2_SM_IPV4_PDPADDR_LEN);

-            break;

-        }

-    }

-    return;

-}

-static VOID __ps_4g_func zAti_SmSaveIpv4Addr(T_ZAti_SmIpDnsInfo* pAddr, T_zMmiaSm_PdpAddr *pdpAddr, T_zMmiaSm_PcoInfo *pcoInfo)

-{

-    zOss_Memset(pAddr->iGateWay, 0, ZATI2_SM_MAX_PDPADDR_LEN);

-    zOss_Memcpy(pAddr->iPdpAddr, pdpAddr->abIPv4Addr, ZATI2_SM_IPV4_PDPADDR_LEN);

-    zAti_SmGetIpDnsFromPcoProtList(pAddr, pcoInfo,Z_APMMIA_SM_IPV4);

-    return;

-}

-

-VOID zAti_SmSaveIpv6DnsAddr(T_ZAti_SmIpDnsInfo* pAddr, T_zMmiaSm_PdpAddr *pdpAddr,T_zMmiaSm_PcoInfo *pcoInfo, BOOL bNeedAddIpv4)

-{

-    BYTE bIdx = 0;

-    BYTE bIsPrimaryDns = Z_INVALID;

-    BYTE bOffSet = (bNeedAddIpv4 == TRUE)? ZATI2_SM_IPV4_PDPADDR_LEN : 0;

-    

-    zOss_Memcpy(pAddr->iPdpAddr + bOffSet, pdpAddr->abIPv6Addr, Z_MMIASM_IPV6_ADDR_MAX_LEN);

-

-    for (bIdx = 0; bIdx < Z_MMIASM_PCO_PROT_ITEM_MAX_NUM; bIdx++)

-    {

-        if(pcoInfo->atProtList[bIdx].wId == 0x8057)

-        {

-            zAti_SmGetIpDnsAddr(Z_ATI_PRIMDNSSER_ADDR,ZATI2_SM_IPV6_PDPADDR_LEN,pcoInfo->atProtList[bIdx].bLen,pcoInfo->atProtList[bIdx].abBuf,pAddr->iPrimaryDns+bOffSet);

-            zAti_SmGetIpDnsAddr(Z_ATI_SECMDNSSER_ADDR,ZATI2_SM_IPV6_PDPADDR_LEN,pcoInfo->atProtList[bIdx].bLen,pcoInfo->atProtList[bIdx].abBuf,pAddr->iSecondaryDns+bOffSet);

-        }

-    }

-    

-    for (bIdx = 0; bIdx < Z_MMIASM_PCO_PARA_ITEM_MAX_NUM; bIdx++)

-    {

-        if((pcoInfo->atAddParaList[bIdx].wId == Z_ATI_ADDPARAID_IPV6DNS) && (bIsPrimaryDns == Z_INVALID))

-        {

-            zOss_Memcpy(pAddr->iPrimaryDns + bOffSet, pcoInfo->atAddParaList[bIdx].abBuf, ZATI2_SM_IPV6_PDPADDR_LEN);

-            bIsPrimaryDns = Z_VALID;

-        }

-        else if((pcoInfo->atAddParaList[bIdx].wId == Z_ATI_ADDPARAID_IPV6DNS) && (bIsPrimaryDns == Z_VALID))

-        {

-            zOss_Memcpy(pAddr->iSecondaryDns + bOffSet, pcoInfo->atAddParaList[bIdx].abBuf, ZATI2_SM_IPV6_PDPADDR_LEN);

-            break;

-        }

-    }

-    return;

-}

-static VOID zAti_SmSaveIpv6AddrAfterIpv4(T_ZAti_SmIpDnsInfo* pAddr, T_zMmiaSm_PdpAddr *pdpAddr, T_zMmiaSm_PcoInfo *pcoInfo)

-{

-    zAti_SmSaveIpv6DnsAddr(pAddr, pdpAddr,pcoInfo, TRUE);

-    return;

-}

-

-VOID __ps_4g_func zAti_SmSaveIpAddr(T_ZAti_SmIpDnsInfo* pAddr, T_zMmiaSm_PdpAddr *pdpAddr, T_zMmiaSm_PcoInfo *pcoInfo)

-{

-    if(pAddr->iPdpType == Z_APMMIA_SM_IPV4)

-    {

-        zAti_SmSaveIpv4Addr(pAddr, pdpAddr, pcoInfo);

-    }

-    else if(pAddr->iPdpType == Z_APMMIA_SM_IPV4V6)

-    {

-        zAti_SmSaveIpv4Addr(pAddr, pdpAddr, pcoInfo);

-        zAti_SmSaveIpv6AddrAfterIpv4(pAddr, pdpAddr, pcoInfo);

-    }

-    else if(pAddr->iPdpType == Z_APMMIA_SM_IPV6)

-    {

-        zOss_Memset(pAddr->iGateWay, 0, ZATI2_SM_MAX_PDPADDR_LEN);

-        /*»ñÈ¡IPV6µÄDNS*/

-        zAti_SmSaveIpv6DnsAddr(pAddr, pdpAddr,pcoInfo, FALSE);

-    }

-    return;

-}

-

-BOOL __ps_4g_func zAti_SmGetPdpAddrByCid(UINT8 iCid, T_ZAti_SmIpDnsInfo* pAddr, BYTE bExtActCid, BYTE bInsNo)

-{

-    T_zMmiaSm_PdpAddr      *ptPdpAddr = (T_zMmiaSm_PdpAddr*)zAti_GetUB(sizeof(T_zMmiaSm_PdpAddr));  

-    T_zMmiaSm_PcoInfo      *ptPcoInfo = (T_zMmiaSm_PcoInfo*)zAti_GetUB(sizeof(T_zMmiaSm_PcoInfo));

-

-    if(bExtActCid)

-    {

-        T_zMmiaSm_PdpAddr                     tPdpAddrExt = {0};  

-        T_zMmiaSm_PcoInfo   *ptPcoInfoExt = (T_zMmiaSm_PcoInfo*)zAti_GetUB(sizeof(T_zMmiaSm_PcoInfo));

-

-        if(zAti_GetPdpInfoByCid(iCid, ptPdpAddr, ptPcoInfo, bInsNo) && zAti_GetPdpInfoByCid((UINT8)bExtActCid, &tPdpAddrExt, ptPcoInfoExt, bInsNo))

-        {

-            pAddr->iPdpType = Z_APMMIA_SM_IPV4V6;

-            pAddr->iCid = iCid;

-            if(ptPdpAddr->bPdpType == Z_APMMIA_SM_IPV4 && tPdpAddrExt.bPdpType == Z_APMMIA_SM_IPV6)

-            {

-                zAti_SmSaveIpv4Addr(pAddr, ptPdpAddr, ptPcoInfo);

-                zAti_SmSaveIpv6AddrAfterIpv4(pAddr, &tPdpAddrExt, ptPcoInfoExt);

-            }

-            else if(ptPdpAddr->bPdpType == Z_APMMIA_SM_IPV6 && tPdpAddrExt.bPdpType == Z_APMMIA_SM_IPV4)

-            {

-                zAti_SmSaveIpv4Addr(pAddr, &tPdpAddrExt, ptPcoInfoExt);

-                zAti_SmSaveIpv6AddrAfterIpv4(pAddr, ptPdpAddr, ptPcoInfo);

-            }

-            else

-            {

-                zAti_RetUB((VOID**)&ptPdpAddr);

-                zAti_RetUB((VOID**)&ptPcoInfo);

-                zAti_RetUB((VOID **)&ptPcoInfoExt);

-                return FALSE;

-            }

-            zAti_RetUB((VOID**)&ptPdpAddr);

-            zAti_RetUB((VOID**)&ptPcoInfo);

-            zAti_RetUB((VOID **)&ptPcoInfoExt);

-            return TRUE;

-        }

-        zAti_RetUB((VOID **)&ptPcoInfoExt);

-    }

-    if(zAti_GetPdpInfoByCid(iCid, ptPdpAddr, ptPcoInfo, bInsNo)) /* ÒѾ­¼¤»î*/

-    {

-        pAddr->iPdpType = ptPdpAddr->bPdpType;

-        pAddr->iCid = iCid;

-        zAti_SmSaveIpAddr(pAddr, ptPdpAddr, ptPcoInfo);

-        zAti_RetUB((VOID**)&ptPdpAddr);

-        zAti_RetUB((VOID**)&ptPcoInfo);

-        return TRUE;

-    }

-    zAti_RetUB((VOID**)&ptPdpAddr);

-    zAti_RetUB((VOID**)&ptPcoInfo);

-    return FALSE;

-}

-

-/**************************************************************************

-* º¯ÊýÃû³Æ : zAti_IsAtChReady

-* ¹¦ÄÜÃèÊö : È·ÈÏÖ¸¶¨Í¨µÀ״̬

-* ²ÎÊý˵Ã÷ : (IN)£º

-*            chID     ͨµÀID

-*            (OUT)£ºÎÞ

-* ·µ »Ø Öµ : ͨµÀ¿ÉÓ÷µ»ØOK,·ñÔò·µ»ØFALSE

-* ÆäËü˵Ã÷ : Ìṩ¸øÓû§·½º¯Êý½Ó¿Ú

-**************************************************************************/

-BOOL  zAti2_IsAtChReady(UINT8 chID)

-{

-    T_ZAti_ChannelInfo *pChnelNode = zAti_GetChannelNodePtr(chID);

-    if(pChnelNode != NULL 

-        && pChnelNode->cmd_id == ZAT2_NO_COMMAND 

-        && pChnelNode->cmd_op == ZAT2_CO_INVALID)

-    {

-        return TRUE;

-    }

-    return FALSE;

-}

-

-/************************************************************************

-º¯ÊýÃû³Æ: zAti_EUmcrBand39InfoInd

-º¯Êý¹¦ÄÜ: 

-          UMCR/EUMCR֪ͨATIÊÇ·ñÓÐB39³öÏÖ

-Êä    Èë: pBuff,

-Êä    ³ö£ºÎÞ

-·µ    »Ø£ºÎÞ

-×¢    ÊÍ£º

----------------------------------------------------------------------------

-ÐÞ¸ÄÈÕÆÚ        °æ±¾        ÐÞ¸ÄÈË        ÐÞ¸ÄÔ­Òò¼°ÄÚÈÝ     

-09.03                                                                        

-************************************************************************/

-VOID zAti_EUmcrBand39InfoInd(VOID* pBuff)

-{

-    BYTE bInsCurNo = g_zAti_CurInstance;

-    T_zMmiaAs_Band39_Info_Ind  *ptBand39InfoInd = (T_zMmiaAs_Band39_Info_Ind*)pBuff;

-    T_zMmiaAs_Band39_Info_Req *ptBand39InfoReq = (T_zMmiaAs_Band39_Info_Req*)zAti_GetUB(sizeof(T_zMmiaAs_Band39_Info_Req));

-

-    ptBand39InfoReq->bBand39Info = ptBand39InfoInd->bBand39Info;

-

-    g_zAti_CurInstance = (g_zAti_CurInstance == Z_ATI_INSNO_1)? 1 : 0;

-    zAti_MsgSend(MMIA_AS_B39_INFO_REQ_EV, (PBYTE)ptBand39InfoReq, sizeof(T_zMmiaAs_Band39_Info_Req), Z_ATI_TASKID_GRR);

-    g_zAti_CurInstance = bInsCurNo;

-    return;

-}

-

-/******************************************************************

-*º¯ÊýÃû³Æ    :zAti_ChangeSubActMacro

-*º¯Êý¹¦ÄÜ    :°þÀëЭÒéջȫ¾ÖÓëÍⲿ½Ó¿Ú·µ»ØÖµÖ®¼ä

-*                               µÄ¹ØÏµ¼õÉÙñîºÏ

-*ÆäËû˵Ã÷    :617002805927/616000237711ÍøÂç±êʶH+µÄÏÔʾ֧³Ö

-*******************************************************************/

-BYTE zAti_ChangeSubActMacro(BYTE bSubMode)

-{

-    BYTE bReturnSubAct = 0xff;

-

-    switch(bSubMode)

-    {

-        case Z_SUBMODE_NOSERVE:

-            bReturnSubAct = 0;

-            break;

-        case Z_SUBMODE_GSM:

-            bReturnSubAct = 1;

-            break;

-        case Z_SUBMODE_GPRS:

-            bReturnSubAct = 2;

-            break;

-        case Z_SUBMODE_EDGE:

-            bReturnSubAct = 3;

-            break;

-        case Z_SUBMODE_WCDMA:

-            bReturnSubAct = 4;

-            break;

-        case Z_SUBMODE_HSDPA:

-            bReturnSubAct = 5;

-            break;

-        case Z_SUBMODE_HSUPA:

-            bReturnSubAct = 6;

-            break;

-        case Z_SUBMODE_DPA_UPA:

-            bReturnSubAct = 7;

-            break;

-        case Z_SUBMODE_TD:

-            bReturnSubAct = 8;

-            break;

-        case Z_SUBMODE_LTE_TDD:

-            bReturnSubAct = 9;

-            break;

-        case Z_SUBMODE_LTE_FDD:

-            bReturnSubAct = 10;

-            break;

-        case Z_SUBMODE_LTE:

-            bReturnSubAct = 11;

-            break;

-        case Z_SUBMODE_DPAORUPA:

-            bReturnSubAct = 12;

-            break;

-        case Z_SUBMODE_HSPA_PLUS:

-            bReturnSubAct = 13;

-            break;

-        default:

-            break;

-    }

-    return bReturnSubAct;

-}

-/**************************************************************************

-º¯ÊýÃû³Æ      :zAt_GetCurrntAct

-º¯Êý¹¦ÄÜ      :Ìṩ¸ø²úÆ·Ïß»ñȡЭÒéÕ»µ±Ç°ÖÆÊ½

-ÊäÈë²ÎÊý      :ÎÞ

-Êä³ö²ÎÊý      :ÎÞ

-·µ»Ø Öµ      :BYTE -µ±Ç°Ð­ÒéÕ»×ÓÖÆÊ½

-                                 (BYTE)0    ÎÞ·þÎñ 

-                                 (BYTE)1    GSMģʽ 

-                                 (BYTE)2    GPRSģʽ 

-                                 (BYTE)3    EDGEģʽ 

-                                 (BYTE)4    WCDMAģʽ 

-                                 (BYTE)5    HSDPAģʽ 

-                                 (BYTE)6    HSUPAģʽ 

-                                 (BYTE)7    HSUPAºÍHSDPAģʽ 

-                                 (BYTE)8    TD_SCDMAģʽ 

-                                 (BYTE)9    LTEģʽTDD 

-                                 (BYTE)10   LTEģʽ FDD

-                                 (BYTE)11   LTEģʽ

-                                 (BYTE)12    HSDPA»òÕßHSUPAģʽ 

-617001826545LTE ²úÆ·ÏßÐèÇó

-**************************************************************************/

-BYTE zAt_GetCurrntAct(VOID)

-{

-    BYTE bSubMode = 0xff;

-    /*²»Ö§³ÖÁ½´ý¶¼Óв¦ºÅµÄÇé¿ö*/

-    if(zAti_IsCidActivedStand(Z_ATI_INSNO_1))

-    {

-        bSubMode = g_zAti_atDataEx[Z_ATI_INSNO_1].tCurrPlmnPara.bSubMode;

-    }

-    else if(zAti_IsCidActivedStand(Z_ATI_INSNO_2))

-    {

-        bSubMode = g_zAti_atDataEx[Z_ATI_INSNO_2].tCurrPlmnPara.bSubMode;

-    }

-    else

-    {

-        bSubMode = g_zAti_atDataEx[Z_ATI_INSNO_1].tCurrPlmnPara.bSubMode;

-    }

-

-    return zAti_ChangeSubActMacro(bSubMode);

-}

-/***************************************************************

-*º¯ÊýÃû³Æ:zAti_IsSameOperPlmn

-*º¯Êý¹¦ÄÜ:ÅжÏÊÇ·ñΪͬһÔËÓªÉ̵ÄPLMNID

-***************************************************************/

-BYTE zAti_IsSameOperPlmn(T_z_PlmnId *ptPlmnId1, T_z_PlmnId *ptPlmnId2, BYTE bInsNo)

-{

-    T_zApMmia_NetName tPlmnId1Full = {0};

-    T_zApMmia_NetName tPlmnId2Full = {0};

-    T_zApMmia_NetName tPlmnId1Short = {0};

-    T_zApMmia_NetName tPlmnId2Short = {0};

-

-    if(Z_INVALID == zAti_IsPlmnIdValid(ptPlmnId1) || Z_INVALID == zAti_IsPlmnIdValid(ptPlmnId2))

-    {

-        return Z_INVALID;

-    }

-    /*¶ÌÃûÏàµÈÔòÈÏΪÊÇͬһÔËÓªÉÌ*/

-    if(zAt_GetOperName(Z_ATI_OPER_NUMTOSHORT, ptPlmnId1, (VOID*)&tPlmnId1Short, bInsNo) &&

-        zAt_GetOperName(Z_ATI_OPER_NUMTOSHORT, ptPlmnId2, (VOID*)&tPlmnId2Short, bInsNo))

-    {

-        if(tPlmnId1Short.bLen == tPlmnId2Short.bLen &&

-            zAti_MemcmpStr(tPlmnId1Short.abName, tPlmnId2Short.abName, tPlmnId2Short.bLen))

-        {

-            return Z_VALID;

-        }

-    }

-

-    /*³¤ÃûÏàµÈÔòÈÏΪÊÇͬһÔËÓªÉÌ*/

-    if(zAt_GetOperName(Z_ATI_OPER_NUMTOLONG, ptPlmnId1, (VOID*)&tPlmnId1Full, bInsNo) &&

-        zAt_GetOperName(Z_ATI_OPER_NUMTOLONG, ptPlmnId2, (VOID*)&tPlmnId2Full, bInsNo))

-    {

-        if(tPlmnId1Full.bLen == tPlmnId2Full.bLen &&

-            zAti_MemcmpStr(tPlmnId1Full.abName, tPlmnId2Full.abName, tPlmnId2Full.bLen))

-        {

-            return Z_VALID;

-        }

-    }

-

-    return Z_INVALID;

-}

-

-/*********************************************

-*º¯ÊýÃû³Æ:zAti_IsCmccPlmnId

-*º¯Êý¹¦ÄÜ:ÅжÏPLMNIDÊÇ·ñΪÖÐÒÆÍøÂç

-*********************************************/

-BYTE __ps_static_func zAti_IsCmccPlmnId(T_z_PlmnId *ptPlmnId, BYTE bInsNo)

-{

-    if(Z_OPER_CMCC == zAti_GetOperByPlmnId(ptPlmnId, bInsNo))

-    {

-        return Z_VALID;

-    }

-    return Z_INVALID;

-}

-

-/*********************************************

-*º¯ÊýÃû³Æ:zAti_IsCTPlmnId

-*º¯Êý¹¦ÄÜ:ÅжÏPLMNIDÊÇ·ñΪµçÐÅÍøÂç

-*********************************************/

-BYTE __ps_static_func zAti_IsCTPlmnId(T_z_PlmnId *ptPlmnId, BYTE bInsNo)

-{

-    if(Z_OPER_CTCC == zAti_GetOperByPlmnId(ptPlmnId, bInsNo))

-    {

-        return Z_VALID;

-    }

-    return Z_INVALID;

-}

-

-BYTE __ps_static_func zAti_GetOperByPlmnId(T_z_PlmnId *ptPlmnId, BYTE bInsNo)

-{

-    T_zApMmia_NetName tShortName = {0};

-    BYTE abCmcc[] = {'C','M','C','C'};

-    BYTE abCtcc[] = {'C','T'};

-    BYTE abUnicom[] = {'U','N','I','C','O','M'};

-

-    if(Z_INVALID == zAti_IsPlmnIdValid(ptPlmnId))

-    {

-        return Z_OPER_OTHER;

-    }

-

-    if(zAt_GetOperName(Z_ATI_OPER_NUMTOSHORT, ptPlmnId, (VOID*)&tShortName, bInsNo))

-    {

-        if(tShortName.bLen == sizeof(abCmcc) &&

-            zAti_MemcmpStr(abCmcc, tShortName.abName, tShortName.bLen))

-        {

-            return Z_OPER_CMCC;

-        }

-        else if(tShortName.bLen == sizeof(abCtcc) &&

-            zAti_MemcmpStr(abCtcc, tShortName.abName, tShortName.bLen))

-        {

-            return Z_OPER_CTCC;

-        }

-        else if(tShortName.bLen == sizeof(abUnicom) &&

-            zAti_MemcmpStr(abUnicom, tShortName.abName, tShortName.bLen))

-        {

-            return Z_OPER_UNICOM;

-        }

-    }

-    return Z_OPER_OTHER;

-}

-

-BYTE zAti_GetAppointedOperPlmnByOperName(BYTE bNameFg, BYTE *pName, BYTE *pVal, BYTE bInsNo)

-{

-    T_zMmiaUmm_OperPlmn *ptPlmn = (T_zMmiaUmm_OperPlmn*)pVal;

-    zOss_Memset(ptPlmn, 0xff, sizeof(T_zMmiaUmm_OperPlmn));

-    ptPlmn->bNum = 0;

-

-    if(strlen((const char*)pName) == 0)

-    {

-        return Z_INVALID;

-    }

-

-    switch(bNameFg)

-    {

-        case Z_ATI_LONG_NAME:

-            zAti_GetAppointedPlmnIdbyFullName(pName, ptPlmn, bInsNo);

-            break;

-        case Z_ATI_SHORT_NAME:

-            zAti_GetAppointedPlmnIdbyShortName(pName, ptPlmn, bInsNo);

-            break;

-        default:

-            break;

-    }

-

-    if(ptPlmn->bNum == 0 || ptPlmn->bNum > Z_MAX_OPERATE_PLMNNUM)

-    {

-        return Z_INVALID;

-    }

-

-    return Z_VALID;

-}

-/********************************************************************

-*º¯ÊýÃû³Æ:zAti_GetAppointedOperPlmnbyOperPlmnId

-*º¯Êý¹¦ÄÜ:¸ù¾ÝÒ»¸öPLMNID»ñȡͬÊôÒ»¸öÔËÓªÉ̵ÄPLMNID

-********************************************************************/

-BYTE __ps_static_func zAti_GetAppointedOperPlmnByOperPlmnId(T_z_PlmnId *ptPlmnId, BYTE *pVal, BYTE bInsNo)

-{

-    BYTE i = 0;

-    T_zApMmia_NetName tFullName;

-    T_zApMmia_NetName tShortName;

-    T_zMmiaUmm_OperPlmn *ptPlmn = (T_zMmiaUmm_OperPlmn*)pVal;

-

-    zOss_Memset(&tFullName, 0, sizeof(T_zApMmia_NetName));

-    zOss_Memset(&tShortName, 0, sizeof(T_zApMmia_NetName));

-    zOss_Memset(ptPlmn, 0xff, sizeof(T_zMmiaUmm_OperPlmn));

-    ptPlmn->bNum = 0;

-

-    if(Z_INVALID == zAti_IsPlmnIdValid(ptPlmnId))

-    {

-        return Z_INVALID;

-    }

-

-    zAti_GetCardPlmnInfo(bInsNo);

-    /*ÏÈ»ñÈ¡¶ÌÃû,¸ù¾Ý¶ÌÃû»ñȡͬһÔËÓªÉ̵ÄPLMNID*/

-    if(zAt_GetOperName(Z_ATI_OPER_NUMTOSHORT, ptPlmnId, (VOID*)&tShortName, bInsNo))

-    {

-        zAti_GetAppointedPlmnIdbyShortName(tShortName.abName, ptPlmn, bInsNo);

-    }

-

-    if(ptPlmn->bNum < Z_MAX_OPERATE_PLMNNUM)

-    {

-        if(zAt_GetOperName(Z_ATI_OPER_NUMTOLONG, ptPlmnId, (VOID*)&tFullName, bInsNo))

-        {

-            zAti_GetAppointedPlmnIdbyFullName(tFullName.abName, ptPlmn, bInsNo);

-        }

-    }

-

-    /*±éÀúUMMÌṩµÄPLMNIDÊÇ·ñÒѾ­ÕÒµ½,Èç¹ûûÕÒµ½·ÅÔÚ¿ÕÏд¦,

-        ûÓпÕÏеľ͸²¸Ç×îºóÒ»¸ö*/

-    for(i = 0; i < ptPlmn->bNum; i++)

-    {

-        if(Z_VALID == zUmm_IsPlmnIdEqual(ptPlmnId, &ptPlmn->abOperatePlmn[i], bInsNo))

-        {

-            return Z_VALID;

-        }

-    }

-

-    if(ptPlmn->bNum < Z_MAX_OPERATE_PLMNNUM)

-    {

-        ptPlmn->abOperatePlmn[ptPlmn->bNum] = *ptPlmnId;

-        ptPlmn->bNum++;

-    }

-    else

-    {

-        ptPlmn->abOperatePlmn[Z_MAX_OPERATE_PLMNNUM-1] = *ptPlmnId;

-    }

-

-    return Z_VALID;

-}

-

-VOID zAti_HandlePppProcCmdError(VOID)

-{    

-    BYTE bCidIndex = 0;

-    BYTE  bAtiNum = 0;

-    T_ZAti_ChannelInfo  *pChnelNode = NULL;

-

-    for(bAtiNum = 0; bAtiNum < ZATI2_SM_MAX_SMCID_NUM; bAtiNum++)

-    {

-        if(g_zAti_SmContext[g_zAti_CurInstance].lastCidTab[bAtiNum].iCid != 0

-        && g_zAti_SmContext[g_zAti_CurInstance].lastCidTab[bAtiNum].isPpp

-        && !g_zAti_SmContext[g_zAti_CurInstance].lastCidTab[bAtiNum].isPppActCmplete)

-        {

-            bCidIndex = bAtiNum;

-            pChnelNode = zAti_GetChannelNodePtr(g_zAti_SmContext[g_zAti_CurInstance].lastCidTab[bCidIndex].chnelId);

-            if(pChnelNode != NULL)

-            {

-                if(ZATI2_CHANNEL_MODE_DATA ==pChnelNode->server_mode)

-                {

-                    zAti_HandleNoCarrierCnf(0xff, g_zAti_SmContext[g_zAti_CurInstance].lastCidTab[bCidIndex].chnelId);

-                }

-            }

-            zOss_Memset(&g_zAti_SmContext[g_zAti_CurInstance].lastCidTab[bCidIndex], 0, sizeof(T_ZAti_LastCidTab));

-            return;

-        }

-    }

-}

-

-#ifdef Z_DUALSTANDBY

-VOID zAti_CsCallStartInd(VOID *pDataPtr)

-{

-    if (Z_VALID == zAti_IsDualPsDualUicc())

-    {

-    #ifdef Z_SINGLEANTENNA

-        g_zAti_CurInstance = g_zAti_CurInstance == 0? 1: 0;

-    

-        zAti_MsgSend(MMIA_UMM_CS_CALL_START_IND_EV, ZOSS_NULL, 0, Z_ATI_TASKID_UMM);

-        

-        g_zAti_CurInstance = g_zAti_CurInstance == 0? 1: 0;

-    #endif

-    }

-}

-#endif

-

-#ifdef Z_DUALSTANDBY

-VOID zAti_CsCallEndInd(VOID *pDataPtr)

-{

-    if (Z_VALID == zAti_IsDualPsDualUicc())

-    {

-    #ifdef Z_SINGLEANTENNA

-        g_zAti_CurInstance = g_zAti_CurInstance == 0? 1: 0;

-    

-        zAti_MsgSend(MMIA_UMM_CS_CALL_END_IND_EV, ZOSS_NULL, 0, Z_ATI_TASKID_UMM);

-        

-        g_zAti_CurInstance = g_zAti_CurInstance == 0? 1: 0; 

-    #endif

-    }

-}

-#endif

-/************************************************************

-º¯ÊýÃû³Æ:zAti_ClearPcoChap

-º¯Êý¹¦ÄÜ:Çå³ýÈ«¾Ö±äÁ¿ÀïÃæµÄCHAP¼øÈ¨ÐÅÏ¢

-************************************************************/

-VOID __ps_static_func zAti_ClearPcoChap(VOID)

-{

-    zOss_Memset(g_zAti_atDataEx[Z_ATI_INSNO_1].tPcoChapAuth,0,ZATI2_SM_MAX_SMCID_NUM * sizeof(T_ZAti_PcoChapInfo));

-    zOss_Memset(g_zAti_atDataEx[Z_ATI_INSNO_2].tPcoChapAuth,0,ZATI2_SM_MAX_SMCID_NUM * sizeof(T_ZAti_PcoChapInfo));

-}

-/************************************************************

-º¯ÊýÃû³Æ:zAti_ClearPcoChapByCid

-º¯Êý¹¦ÄÜ:Çå³ýÈ«¾Ö±äÁ¿ÀïÃæµÄCHAP¼øÈ¨ÐÅÏ¢

-************************************************************/

-VOID __ps_4g_func zAti_ClearPcoChapByCid(BYTE bCid)

-{

-    if (bCid > 0 && bCid <= ZATI2_SM_MAX_SMCID_NUM)

-    {

-        zOss_Memset(&g_zAti_atDataEx[g_zAti_CurInstance].tPcoChapAuth[bCid-1], 0, sizeof(T_ZAti_PcoChapInfo));

-    }

-}

-

-VOID zAti_GetEmInfoMutex(BYTE bInsIdx)

-{

-    zOss_GetMutex(g_zAti_EmInfoMutex[bInsIdx].mutexEmInfo, ZOSS_WAIT_FOREVER);

-}

-

-VOID zAti_PutEmInfoMutex(BYTE bInsIdx)

-{

-    if (g_zAti_EmInfoMutex[bInsIdx].mutexEmInfo != NULL)

-    {

-        zOss_PutMutex(g_zAti_EmInfoMutex[bInsIdx].mutexEmInfo);

-    }

-}

-

-VOID zAti_DecreaseReqCountAndRelMutexSemaphore(VOID)

-{

-    if (g_zAti_EmInfo[g_zAti_CurInstance].dwReqCount > 0)

-    {

-        g_zAti_EmInfo[g_zAti_CurInstance].dwReqCount--;

-    }

-

-    /*»¥³âÁ¿ÓÃÍê¾ÍÊÍ·Å£¬²¢ÇÒÒªÔÚÊÍ·ÅÐźÅÁ¿Ç°ÊÍ·Å*/

-    zAti_PutEmInfoMutex(g_zAti_CurInstance);

- 

-    if (g_zAti_EmInfoSemaphore[g_zAti_CurInstance].semaphoreEmInfo != NULL)

-    {

-        zOss_PutSemaphore(g_zAti_EmInfoSemaphore[g_zAti_CurInstance].semaphoreEmInfo);

-    }

-}

-VOID zAti_EMCellInfoReq(VOID)

-{

-    T_zMmiaAs_CellInfo_Qry_Req tCellInfoQryReq = {0};

-#if defined (DUAL_CARD_DUAL_STANDBY) || defined (_OS_WIN)

-    tCellInfoQryReq.bSrcIndex = (g_zAti_CurInstance == 0) ? 0 : 255;/*ÓÃÎÞЧͨµÀºÅ£¬ÊµÀý1ÓÃ0£¬ÊµÀý2ÓÃ255*/

-#else

-    tCellInfoQryReq.bSrcIndex = 0;/*ʵÀý1ÓÃ0*/

-#endif

-    tCellInfoQryReq.bDesIndex = 0xff;

-

-    /*ÊÕµ½ÇëÇó,¸öÊý¾Í¼ÓÒ»*/

-    zAti_GetEmInfoMutex(g_zAti_CurInstance);

-    g_zAti_EmInfo[g_zAti_CurInstance].dwReqCount++;

-    

-    if (Z_APMMIA_NORESULT != zAti_EM_CellInfoQryReq(&tCellInfoQryReq))

-    {

-        zAti_SendExpt2TraceAgt(ERR_InvalidPara,  TRACE_ERR_LEVEL_NORMAL,"");

-        /*±¾´ÎÇëÇóʧ°ÜÇëÇó¸öÊýÐèÒª»Ö¸´Ô­À´µÄ£¬²¢ÇÒÒªÊÍ·Å»¥³âÁ¿ºÍ±¾´ÎµÄÐźÅÁ¿*/

-        zAti_DecreaseReqCountAndRelMutexSemaphore();

-        return ;

-    }

-

-    if ((g_zAti_EmInfo[g_zAti_CurInstance].ptEmInfo == ZOSS_NULL))

-    {

-        g_zAti_EmInfo[g_zAti_CurInstance].ptEmInfo = (T_zEM_EmInfo_Ind *)zOss_GetUB(sizeof(T_zEM_EmInfo_Ind));

-        

-        if (g_zAti_EmInfo[g_zAti_CurInstance].ptEmInfo == ZOSS_NULL)

-        {

-            zAti_SendExpt2TraceAgt(ERR_NvFailure,  TRACE_ERR_LEVEL_SEVERE,"");

-            /*±¾´ÎÇëÇóʧ°ÜÇëÇó¸öÊýÐèÒª»Ö¸´Ô­À´µÄ£¬²¢ÇÒÒªÊÍ·Å»¥³âÁ¿ºÍ±¾´ÎµÄÐźÅÁ¿*/

-            zAti_DecreaseReqCountAndRelMutexSemaphore();

-            return ;

-        }

-    }

-    /*»¥³âÁ¿ÓÃÍê¾ÍÊÍ·Å*/

-    zAti_PutEmInfoMutex(g_zAti_CurInstance);

-

-    return;

-}

-/**************************************************************************

-* º¯ÊýÃû³Æ : zAti_GetEMCellInfo

-* ¹¦ÄÜÃèÊö : »ñÈ¡¹¤³ÌÄ£Ê½Ð¡ÇøÐÅÏ¢

-* ²ÎÊý˵Ã÷ : pEmInfo: ½á¹¹ÓÃT_zEM_EmInfo_Ind

-*            bInstanceIdx: ´ý»ú²àʵÀýË÷ÒýºÅ,0±íʾ´ý»ú²à1£»1±íʾ´ý»ú²à2

-*                         µ¥´ý°æ±¾Ìî0£»Ë«´ý°æ±¾¸ù¾Ýʵ¼Ê´ý»ú²àÌîд0»òÕß1

-* ·µ »Ø Öµ : ³É¹¦·µ»ØZATI2_SUCCESS (0)

-* ÆäËü˵Ã÷ : Ìṩ¸øÓû§·½º¯Êý½Ó¿Ú£¬·µ»ØÊ§°Ü˵Ã÷ÔÝʱûÓлñÈ¡µ½

-**************************************************************************/

-SINT32 zAti_GetEMCellInfo(UINT8 *pEmInfo, UINT8 bInstanceIdx)

-{

-    T_ZAti_EMCellInfo_Req tEMCellInfo = {0};

-

-    if (pEmInfo == ZOSS_NULL || (bInstanceIdx != 0 && bInstanceIdx != 1))

-    {

-        zAti_SendExpt2TraceAgt(ERR_InvalidPara,  TRACE_ERR_LEVEL_NORMAL,"");

-        return ZATI2_FALSE;

-    }

-

-    bInstanceIdx = ((bInstanceIdx == Z_ATI_INSNO_1)? Z_ATI_INSNO_1 : Z_ATI_INSNO_2);

-    tEMCellInfo.bInstance = bInstanceIdx;

-

-    if (ZOSS_SUCCESS != zOss_TaskSend(EV_ZATI2_ZEMCELLINFO_REQ, &tEMCellInfo, sizeof(T_ZAti_EMCellInfo_Req), g_zAti_Context.taskIdMy))

-    {

-        zAti_SendExpt2TraceAgt(ERR_InvalidPara,  TRACE_ERR_LEVEL_NORMAL,"");

-        return ZATI2_FALSE;

-    }

-

-    zOss_GetSemaphore(g_zAti_EmInfoSemaphore[bInstanceIdx].semaphoreEmInfo, ZOSS_WAIT_FOREVER);

-

-    zAti_GetEmInfoMutex(bInstanceIdx);

-    

-    if (g_zAti_EmInfo[bInstanceIdx].ptEmInfo != ZOSS_NULL)

-    {

-        zOss_Memcpy(pEmInfo, g_zAti_EmInfo[bInstanceIdx].ptEmInfo, sizeof(T_zEM_EmInfo_Ind));

-        /*¶¼´¦ÀíÍêÁË£¬²ÅÊÍ·ÅÄÚ´æ*/

-        if (g_zAti_EmInfo[bInstanceIdx].dwReqCount == 0)

-        {

-            zAti_RetUB((VOID **)&g_zAti_EmInfo[bInstanceIdx].ptEmInfo);

-        }

-        zAti_PutEmInfoMutex(bInstanceIdx);

-    }

-    else

-    {

-        zAti_SendExpt2TraceAgt(ERR_InvalidPara,  TRACE_ERR_LEVEL_NORMAL,"");

-        zAti_PutEmInfoMutex(bInstanceIdx);

-        return ZATI2_FALSE;

-    }

-

-    return ZATI2_SUCCESS;

-}

-

-static UINT8 PADDING[64] = {

-  0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00

-};

-

-/* F, G, H and I are basic MD5 functions */

-#define F(x, y, z) (((x) & (y)) | ((~x) & (z)))

-#define G(x, y, z) (((x) & (z)) | ((y) & (~z)))

-#define H(x, y, z) ((x) ^ (y) ^ (z))

-#define I(x, y, z) ((y) ^ ((x) | (~z)))

-

-/* ROTATE_LEFT rotates x left n bits */

-#define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32-(n))))

-

-/* FF, GG, HH, and II transformations for rounds 1, 2, 3, and 4 */

-/* Rotation is separate from addition to prevent recomputation */

-#define FF(a, b, c, d, x, s, ac) \

-  {(a) += F ((b), (c), (d)) + (x) + (UINT32)(ac); \

-   (a) = ROTATE_LEFT ((a), (s)); \

-   (a) += (b); \

-  }

-#define GG(a, b, c, d, x, s, ac) \

-  {(a) += G ((b), (c), (d)) + (x) + (UINT32)(ac); \

-   (a) = ROTATE_LEFT ((a), (s)); \

-   (a) += (b); \

-  }

-#define HH(a, b, c, d, x, s, ac) \

-  {(a) += H ((b), (c), (d)) + (x) + (UINT32)(ac); \

-   (a) = ROTATE_LEFT ((a), (s)); \

-   (a) += (b); \

-  }

-#define II(a, b, c, d, x, s, ac) \

-  {(a) += I ((b), (c), (d)) + (x) + (UINT32)(ac); \

-   (a) = ROTATE_LEFT ((a), (s)); \

-   (a) += (b); \

-  }

-

-#ifdef __STDC__

-#define UL(x)   x##UL

-#else

-#ifdef WIN32

-#define UL(x)   x##UL

-#else

-#define UL(x)   x

-#endif

-#endif

-VOID zAti_MD5Init (T_zAti_Md5Ctx *mdContext)

-{

-  mdContext->i[0] = mdContext->i[1] = (UINT32)0;

-

-  /* Load magic initialization constants.

-   */

-  mdContext->buf[0] = (UINT32)0x67452301UL;

-  mdContext->buf[1] = (UINT32)0xefcdab89UL;

-  mdContext->buf[2] = (UINT32)0x98badcfeUL;

-  mdContext->buf[3] = (UINT32)0x10325476UL;

-  return;

-}

-

-/* The routine MD5Update updates the message-digest context to

-   account for the presence of each of the characters inBuf[0..inLen-1]

-   in the message whose digest is being computed.

- */

-VOID zAti_MD5Update(T_zAti_Md5Ctx *mdContext, UINT8 *inBuf, UINT32 inLen)

-{

-  UINT32 in[16];

-  SINT32 mdi;

-  UINT32 i, ii;

- 

-  /* compute number of bytes mod 64 */

-  mdi = (SINT32)((mdContext->i[0] >> 3) & 0x3F);

-

-  /* update number of bits */

-  if ((mdContext->i[0] + ((UINT32)inLen << 3)) < mdContext->i[0])

-    mdContext->i[1]++;

-  mdContext->i[0] += ((UINT32)inLen << 3);

-  mdContext->i[1] += ((UINT32)inLen >> 29);

-

-  while (inLen--) {

-    /* add new character to buffer, increment mdi */

-    mdContext->in[mdi++] = *inBuf++;

-

-    /* transform if necessary */

-    if (mdi == 0x40) {

-      for (i = 0, ii = 0; i < 16; i++, ii += 4)

-        in[i] = (((UINT32)mdContext->in[ii+3]) << 24) |

-                (((UINT32)mdContext->in[ii+2]) << 16) |

-                (((UINT32)mdContext->in[ii+1]) << 8) |

-                ((UINT32)mdContext->in[ii]);

-      zAti_Transform (mdContext->buf, in);

-      mdi = 0;

-    }

-  }

-  return;

-}

-

-/* The routine MD5Final terminates the message-digest computation and

-   ends with the desired message digest in mdContext->digest[0...15].

- */

-VOID zAti_MD5Final (UINT8 hash[], T_zAti_Md5Ctx *mdContext)

-{

-  UINT32 in[16];

-  SINT32 mdi;

-  UINT32 i, ii;

-  UINT32 padLen;

-

-  /* save number of bits */

-  in[14] = mdContext->i[0];

-  in[15] = mdContext->i[1];

-

-  /* compute number of bytes mod 64 */

-  mdi = (SINT32)((mdContext->i[0] >> 3) & 0x3F);

-

-  /* pad out to 56 mod 64 */

-  padLen = (UINT32)((mdi < 56) ? (56 - mdi) : (120 - mdi));

-  zAti_MD5Update (mdContext, PADDING, padLen);

-

-  /* append length in bits and transform */

-  for (i = 0, ii = 0; i < 14; i++, ii += 4)

-    in[i] = (((UINT32)mdContext->in[ii+3]) << 24) |

-            (((UINT32)mdContext->in[ii+2]) << 16) |

-            (((UINT32)mdContext->in[ii+1]) << 8) |

-            ((UINT32)mdContext->in[ii]);

-  zAti_Transform (mdContext->buf, in);

-

-  /* store buffer in digest */

-  for (i = 0, ii = 0; i < 4; i++, ii += 4) {

-    mdContext->digest[ii] = (UINT8)(mdContext->buf[i] & 0xFF);

-    mdContext->digest[ii+1] =

-      (UINT8)((mdContext->buf[i] >> 8) & 0xFF);

-    mdContext->digest[ii+2] =

-      (UINT8)((mdContext->buf[i] >> 16) & 0xFF);

-    mdContext->digest[ii+3] =

-      (UINT8)((mdContext->buf[i] >> 24) & 0xFF);

-  }

-  zOss_Memcpy(hash, mdContext->digest, 16);

-  return;

-}

-

-/* Basic MD5 step. Transforms buf based on in.

- */

-static VOID zAti_Transform (UINT32 *buf, UINT32 *in)

-{

-  UINT32 a = buf[0], b = buf[1], c = buf[2], d = buf[3];

-

-  /* Round 1 */

-#define ZATI_S11 7

-#define ZATI_S12 12

-#define ZATI_S13 17

-#define ZATI_S14 22

-  FF ( a, b, c, d, in[ 0], ZATI_S11, UL(3614090360)); /* 1 */

-  FF ( d, a, b, c, in[ 1], ZATI_S12, UL(3905402710)); /* 2 */

-  FF ( c, d, a, b, in[ 2], ZATI_S13, UL( 606105819)); /* 3 */

-  FF ( b, c, d, a, in[ 3], ZATI_S14, UL(3250441966)); /* 4 */

-  FF ( a, b, c, d, in[ 4], ZATI_S11, UL(4118548399)); /* 5 */

-  FF ( d, a, b, c, in[ 5], ZATI_S12, UL(1200080426)); /* 6 */

-  FF ( c, d, a, b, in[ 6], ZATI_S13, UL(2821735955)); /* 7 */

-  FF ( b, c, d, a, in[ 7], ZATI_S14, UL(4249261313)); /* 8 */

-  FF ( a, b, c, d, in[ 8], ZATI_S11, UL(1770035416)); /* 9 */

-  FF ( d, a, b, c, in[ 9], ZATI_S12, UL(2336552879)); /* 10 */

-  FF ( c, d, a, b, in[10], ZATI_S13, UL(4294925233)); /* 11 */

-  FF ( b, c, d, a, in[11], ZATI_S14, UL(2304563134)); /* 12 */

-  FF ( a, b, c, d, in[12], ZATI_S11, UL(1804603682)); /* 13 */

-  FF ( d, a, b, c, in[13], ZATI_S12, UL(4254626195)); /* 14 */

-  FF ( c, d, a, b, in[14], ZATI_S13, UL(2792965006)); /* 15 */

-  FF ( b, c, d, a, in[15], ZATI_S14, UL(1236535329)); /* 16 */

-

-  /* Round 2 */

-#define ZATI_S21 5

-#define ZATI_S22 9

-#define ZATI_S23 14

-#define ZATI_S24 20

-  GG ( a, b, c, d, in[ 1], ZATI_S21, UL(4129170786)); /* 17 */

-  GG ( d, a, b, c, in[ 6], ZATI_S22, UL(3225465664)); /* 18 */

-  GG ( c, d, a, b, in[11], ZATI_S23, UL( 643717713)); /* 19 */

-  GG ( b, c, d, a, in[ 0], ZATI_S24, UL(3921069994)); /* 20 */

-  GG ( a, b, c, d, in[ 5], ZATI_S21, UL(3593408605)); /* 21 */

-  GG ( d, a, b, c, in[10], ZATI_S22, UL(  38016083)); /* 22 */

-  GG ( c, d, a, b, in[15], ZATI_S23, UL(3634488961)); /* 23 */

-  GG ( b, c, d, a, in[ 4], ZATI_S24, UL(3889429448)); /* 24 */

-  GG ( a, b, c, d, in[ 9], ZATI_S21, UL( 568446438)); /* 25 */

-  GG ( d, a, b, c, in[14], ZATI_S22, UL(3275163606)); /* 26 */

-  GG ( c, d, a, b, in[ 3], ZATI_S23, UL(4107603335)); /* 27 */

-  GG ( b, c, d, a, in[ 8], ZATI_S24, UL(1163531501)); /* 28 */

-  GG ( a, b, c, d, in[13], ZATI_S21, UL(2850285829)); /* 29 */

-  GG ( d, a, b, c, in[ 2], ZATI_S22, UL(4243563512)); /* 30 */

-  GG ( c, d, a, b, in[ 7], ZATI_S23, UL(1735328473)); /* 31 */

-  GG ( b, c, d, a, in[12], ZATI_S24, UL(2368359562)); /* 32 */

-

-  /* Round 3 */

-#define ZATI_S31 4

-#define ZATI_S32 11

-#define ZATI_S33 16

-#define ZATI_S34 23

-  HH ( a, b, c, d, in[ 5], ZATI_S31, UL(4294588738)); /* 33 */

-  HH ( d, a, b, c, in[ 8], ZATI_S32, UL(2272392833)); /* 34 */

-  HH ( c, d, a, b, in[11], ZATI_S33, UL(1839030562)); /* 35 */

-  HH ( b, c, d, a, in[14], ZATI_S34, UL(4259657740)); /* 36 */

-  HH ( a, b, c, d, in[ 1], ZATI_S31, UL(2763975236)); /* 37 */

-  HH ( d, a, b, c, in[ 4], ZATI_S32, UL(1272893353)); /* 38 */

-  HH ( c, d, a, b, in[ 7], ZATI_S33, UL(4139469664)); /* 39 */

-  HH ( b, c, d, a, in[10], ZATI_S34, UL(3200236656)); /* 40 */

-  HH ( a, b, c, d, in[13], ZATI_S31, UL( 681279174)); /* 41 */

-  HH ( d, a, b, c, in[ 0], ZATI_S32, UL(3936430074)); /* 42 */

-  HH ( c, d, a, b, in[ 3], ZATI_S33, UL(3572445317)); /* 43 */

-  HH ( b, c, d, a, in[ 6], ZATI_S34, UL(  76029189)); /* 44 */

-  HH ( a, b, c, d, in[ 9], ZATI_S31, UL(3654602809)); /* 45 */

-  HH ( d, a, b, c, in[12], ZATI_S32, UL(3873151461)); /* 46 */

-  HH ( c, d, a, b, in[15], ZATI_S33, UL( 530742520)); /* 47 */

-  HH ( b, c, d, a, in[ 2], ZATI_S34, UL(3299628645)); /* 48 */

-

-  /* Round 4 */

-#define ZATI_S41 6

-#define ZATI_S42 10

-#define ZATI_S43 15

-#define ZATI_S44 21

-  II ( a, b, c, d, in[ 0], ZATI_S41, UL(4096336452)); /* 49 */

-  II ( d, a, b, c, in[ 7], ZATI_S42, UL(1126891415)); /* 50 */

-  II ( c, d, a, b, in[14], ZATI_S43, UL(2878612391)); /* 51 */

-  II ( b, c, d, a, in[ 5], ZATI_S44, UL(4237533241)); /* 52 */

-  II ( a, b, c, d, in[12], ZATI_S41, UL(1700485571)); /* 53 */

-  II ( d, a, b, c, in[ 3], ZATI_S42, UL(2399980690)); /* 54 */

-  II ( c, d, a, b, in[10], ZATI_S43, UL(4293915773)); /* 55 */

-  II ( b, c, d, a, in[ 1], ZATI_S44, UL(2240044497)); /* 56 */

-  II ( a, b, c, d, in[ 8], ZATI_S41, UL(1873313359)); /* 57 */

-  II ( d, a, b, c, in[15], ZATI_S42, UL(4264355552)); /* 58 */

-  II ( c, d, a, b, in[ 6], ZATI_S43, UL(2734768916)); /* 59 */

-  II ( b, c, d, a, in[13], ZATI_S44, UL(1309151649)); /* 60 */

-  II ( a, b, c, d, in[ 4], ZATI_S41, UL(4149444226)); /* 61 */

-  II ( d, a, b, c, in[11], ZATI_S42, UL(3174756917)); /* 62 */

-  II ( c, d, a, b, in[ 2], ZATI_S43, UL( 718787259)); /* 63 */

-  II ( b, c, d, a, in[ 9], ZATI_S44, UL(3951481745)); /* 64 */

-

-  buf[0] += a;

-  buf[1] += b;

-  buf[2] += c;

-  buf[3] += d;

-  return;

-}

-

-VOID zAti_GetMd5Hash(CHAR id, CHAR* secret, UINT8 secretLen, CHAR* challenge, UINT8 challengeLen, CHAR* hashOut)

-{

-    T_zAti_Md5Ctx mdContext = {0};

-    

-    if(secret == NULL || challenge == NULL || hashOut == NULL || secretLen == 0 || challengeLen == 0)

-    {

-        return;

-    }

-    zAti_MD5Init(&mdContext);

-    zAti_MD5Update(&mdContext, (UINT8 *)&id, 1);

-    zAti_MD5Update(&mdContext, (UINT8 *)secret, (UINT32)secretLen);

-    zAti_MD5Update(&mdContext, (UINT8 *)challenge, (UINT32)challengeLen);

-    zAti_MD5Final((UINT8 *)hashOut, &mdContext); 

-    return;

-}

-T_z_PlmnId zAti_GetCurrPlmn(BYTE bInsIdx)

-{

-    return g_zAti_atDataEx[bInsIdx].tCurrPlmnPara.tPlmnId;

-}

-

-

-BOOL __ps_4g_func zAti_CidIsUsed(BYTE bCid)

-{

-    BOOL bResult = FALSE;

-    T_zMmiaSm_PdpAddr  *ptPdpAddr = (T_zMmiaSm_PdpAddr*)zAti_GetUB(sizeof(T_zMmiaSm_PdpAddr));

-    T_zMmiaSm_PcoInfo   *ptPcoInfo = (T_zMmiaSm_PcoInfo*)zAti_GetUB(sizeof(T_zMmiaSm_PcoInfo));

-    

-    if (zAti_IsCidUsed(bCid) || zAti_GetPdpInfoByCid(bCid, ptPdpAddr, ptPcoInfo, g_zAti_CurInstance))

-    {

-        bResult = TRUE;

-    }

-    else

-    {

-        bResult = FALSE;

-    }

-    zAti_RetUB((VOID**)&ptPdpAddr);

-    zAti_RetUB((VOID**)&ptPcoInfo);

-    return bResult;

-}

diff --git a/Uboot/cp/ps/plat/inc/oss/oss_sup.h b/Uboot/cp/ps/plat/inc/oss/oss_sup.h
deleted file mode 100755
index 686c318..0000000
--- a/Uboot/cp/ps/plat/inc/oss/oss_sup.h
+++ /dev/null
@@ -1,971 +0,0 @@
-/**

- * @file oss_sup.h

- * @brief ossÄ£¿é¸½¼Ó¹¦ÄÜ

- *

- * Copyright (C) 2017 Sanechips Technology Co., Ltd.

- * 

- * 

- */

-

-#ifndef _OSS_SUP_H

-#define _OSS_SUP_H

-

-/*******************************************************************************

- *                           Include header files                              *

- ******************************************************************************/

-#include "ramdump.h"

-#ifdef __cplusplus

-extern "C"

-{

-#endif

-

-

-/*******************************************************************************

- *                             Macro definitions                               *

- ******************************************************************************/

-#ifndef DOXYGEN_SHOULD_SKIP_THIS

-/* ÉèÖûò»ñȡʼþÊôÐÔ */

-#define ZOSS_EVENTS_OR              0x00

-#define ZOSS_EVENTS_AND             0x01

-#define ZOSS_EVENTS_OR_CLEAR        0x02

-#define ZOSS_EVENTS_AND_CLEAR       0x03

-

-/* ÉèÖûص÷º¯ÊýÀàÐÍ */

-#define ZOSS_SETHOOKFLAG_MONI       0x01         /* ÏûÏ¢¼à¿Ø                 */

-#define ZOSS_SETHOOKFLAG_TRACK      0x02         /* ÏßÐÔ¸ú×Ù                 */

-#define ZOSS_SETHOOKFLAG_INTER      0x03         /* ÏûÏ¢½Ø»ñ                 */

-#define ZOSS_SETHOOK_SEND           0x01         /* zOss_SendMsgÏûÏ¢À©Õ¹     */

-#define ZOSS_SETHOOK_SEND_DATA      0x02         /* zOss_SendMsgÏûÏ¢À©Õ¹     */

-#define ZOSS_SETHOOK_GET_ALL_ID     0x03         /* zOss_GetAllTaskIDÀ©Õ¹    */

-#define ZOSS_SETHOOK_GET_ID         0x04         /* zOss_GetTaskIDÀ©Õ¹       */

-#define ZOSS_SETHOOK_GET_NAME       0x05         /* zOss_GetTaskNameÀ©Õ¹     */

-

-/* ÈÎÎñÏûϢ״̬ */

-#define ZOSS_MSGSENDTYPE_MSG        0x01         /* ·¢ËÍÏûÏ¢                 */

-#define ZOSS_MSGSENDTYPE_DATA       0x02         /* ·¢ËÍÊý¾Ý                 */

-#define ZOSS_MSGSENDTYPE_INTER      0x03         /* ÔÚÖжÏÖз¢ËÍ             */

-#define ZOSS_MSGSENDTYPE_TIMER      0x04         /* ¶¨Ê±Æ÷ÏûÏ¢               */

-

-/* ÈÎÎñ״̬»ú */

-#define ZOSS_STATUS_INIT            0x01         /* ³õʼ̬                   */

-#define ZOSS_STATUS_WORK            0x02         /* ¹¤×÷̬                   */

-#define ZOSS_STATUS_IDLE            0x03         /* ¿ÕÏÐ̬                   */

-#define ZOSS_STATUS_USERBASE        0x04         /* Óû§×´Ì¬×Ô¶¨Òå           */

-

-/* ÈÎÎñÔËÐÐ״̬ */

-#define ZOSS_STATE_STOPPED          0x01         /* ÈÎÎñÔÝÍ£                 */

-#define ZOSS_STATE_IDLE             0x02         /* ÈÎÎñ¿ÕÏÐ                 */

-#define ZOSS_STATE_READY            0x03         /* ÈÎÎñ¾ÍÐ÷                 */

-#define ZOSS_STATE_RUN              0x04         /* ÈÎÎñÔËÐÐ                 */

-

-/* ÏûÏ¢²¶»ñ·½Ïò */

-#define ZOSS_MSGDIRE_IN             0x01         /* ÊäÈëÏûÏ¢²¶»ñ             */

-#define ZOSS_MSGDIRE_OUT            0x02         /* Êä³öÏûÏ¢²¶»ñ             */

-#define ZOSS_MSGDIRE_INOUT          0x03         /* Ë«Ïò²¶»ñ                 */

-

-/* ÏûÏ¢·¢ËÍÓÅÏȼ¶ */

-#define ZOSS_QUEUE_MSG_PRI_NORMAL   0x00         /* normal priority message£¬¼´·Åµ½ÏûÏ¢¶ÓÁÐβ */

-#define ZOSS_QUEUE_MSG_PRI_URGENT   0x01         /* urgent priority message£¬¼´·Åµ½ÏûÏ¢¶ÓÁÐÊ× */

-

-/* ÅäÖòÎÊý×î´ó³¤¶È */

-#define MAX_EVENTNAME_LEN           63          /* ʼþ×éÃû³Æ×î´ó³¤¶È       */

-#define MAX_QUEUENAME_LEN           63          /* ×î´óÏûÏ¢¶ÓÁÐÃû³¤¶È       */ 

-#define ZOSS_MAX_TASKNAME_LEN       63          /* ÈÎÎñÃû³¤¶È               */

-#define SHELL_CMD_LENGTH            31          /* shellÃüÁîµÄ×î´ó³¤¶È      */

-#define SHELL_CMD_PARAM_NUM         12          /* shellÃüÁî²ÎÊýµÄ×î´ó¸öÊý  */

-#define SHELL_CMD_PARAM_LENGTH      23          /* shellÃüÁî²ÎÊýµÄ×î´ó³¤¶È  */

-

-/* ´òÓ¡ */

-#define zOss_Printf                 zTools_Printf

-#define PRINT_LEVEL_ALLWAYS         0x00        /* ±¾¼¶±ð×ÜÊÇ´òÓ¡                   */

-#define PRINT_LEVEL_DEBUG           0x01        /* µ÷ÊÔ¼¶±ð                         */

-#define PRINT_LEVEL_NORMAL          0x02        /* ÆÕͨ¼¶±ð                         */

-#define PRINT_LEVEL_SEVERE          0x03        /* ÑÏÖØ¼¶±ð                         */

-#define PRINT_LEVEL_ABNORMAL        0x04        /* Òì³£¼¶±ð                         */

-#define PRINT_LEVEL_RAM             0x05        /* ´òÓ¡µ½ÄÚ´æ,½öÔÚ´òÓ¡´úÀíÖÐʹÓà    */

-#define PRINT_LEVEL_FORBID          0xff        /* ²»´òÓ¡                           */

-

-/* NV ECC*/

-#define ZOSS_NV_ECC_LOG_NR          (6)

-#define ZOSS_NV_ECC_WORK            (1)

-#define ZOSS_NV_ECC_BACKUP          (2)

-#define ZOSS_NV_ECC_BOTH            (3)

-#endif //#ifndef DOXYGEN_SHOULD_SKIP_THIS

-

-/*******************************************************************************

- *                             Type definitions                                *

- ******************************************************************************/

-#ifndef DOXYGEN_SHOULD_SKIP_THIS

-/* Ë«ÏòÁ´±íÄ£¿é */

-typedef struct tag_NODE        

-{

-    struct tag_NODE *next;      

-    struct tag_NODE *previous;  

-}T_ZOss_Node;

-

-typedef struct              

-{

-    SINT32      count;             

-    T_ZOss_Node *HEAD;

-    T_ZOss_Node *TAIL;

-}T_ZOss_List;

-

-/* »·Ðλº³åÄ£¿é */

-typedef struct     

-{

-    SINT32  pToBuf;     /* offset from start of buffer where to write next  */

-    SINT32  pFromBuf;   /* offset from start of buffer where to read next   */

-    SINT32  bufSize;    /* size of ring in bytes                            */

-    CHAR    *buf;       /* pointer to start of buffer                       */

-}T_ZOss_Ring, *T_ZOss_RingId;

-

-/* ¶¨Ê±Æ÷¹ÜÀíÄ£¿é 20130415ÒÆÖÁosa.h*/

-

-/* ITCÄ£¿é 20130523 ɾ³ý*/

-

-/* ramdump ¹Ò½Óº¯ÊýÀàÐÍ */

-typedef VOID (*T_zOss_RamdumpHookFunc)(VOID); 

-

-/* ÏûÏ¢¹ÜÀíÄ£¿é */

-typedef struct

-{

-    T_ZOss_Node     node;

-    ZOSS_TASK_ID    t_task_id;      /* Ä¿±êÈÎÎñID   */

-    ZOSS_TASK_ID    s_task_id;      /* Ô´ÈÎÎñID     */

-    UINT32          msgID;          /* ÏûÏ¢ID       */

-    UINT16          msgLen;         /* ÏûÏ¢Ì峤¶È   */

-    UINT8           send_state;     /* ÏûÏ¢·¢ËÍ״̬ */

-}T_ZOss_TaskMsgHead;                /* ÏûϢͷ       */

-

-typedef struct

-{

-    VOID    *msgbuf;

-    UINT16  msgLenEX;

-}T_ZOss_TaskMsg;        /* ÏûÏ¢Ìå */

-

-typedef UINT32 (*TASK_SEND_HOOK)(T_ZOss_TaskMsgHead *buf, UINT8 dire);

-

-/* ÈÎÎñ¹ÜÀíÄ£¿é */                    

-typedef VOID (*FUNC_TASKENTRY)(UINT8 state, UINT32 msg_id, UINT8 *buf, UINT16 msg_len, UINT8 *private_data);

-

-typedef struct struTCB

-{

-    T_ZOss_Node     node;                                   /* Ë«ÏòÁ´±í½áµã                             */

-    UINT32          type;                                   /* Çø·ÖÊÇ·ñSDLÈÎÎñ                          */

-    UINT32          count;                                  /* ÈÎÎñÖ´ÐеĴÎÊý                           */

-    CHAR            task_name[ZOSS_MAX_TASKNAME_LEN + 1];   /* ÈÎÎñÃû,³¤¶È×î´ó63                        */

-    FUNC_TASKENTRY  taskEntry;                              /* ÈÎÎñÈë¿Ú                                 */

-    TASK_SEND_HOOK  HookEntry[3];                           /* »Øµ÷º¯Êý                                 */

-    ZOSS_TASK_ID    task_id;                                /* ÈÎÎñID                                   */

-    ZOSS_TASK_ID    sender_task_id;                         /* ÏûÏ¢Ô´ÈÎÎñID                             */

-    ZOSS_THREAD_ID  thread_id;                              /* ËùÔÚÏß³ÌID                               */

-    T_ZOss_List     msg_queue;                              /* ÈÎÎñÏûÏ¢¶ÓÁÐÁ´±í                         */

-    UINT32          stack_size;                             /* ¶ÑÕ»´óС                                 */

-    UINT32          priority;                               /* ÈÎÎñÓÅÏȼ¶(0-31)                         */

-    UINT32          private_data_len;                       /* ˽ÓÐÊý¾Ý³¤¶È                             */

-    UINT32          time;                                   /* ÈÎÎñ´´½¨Ê±¼ä                             */

-    UINT32          stack_used;                             /* ÒÑÓöÑÕ»´óС                             */

-    UINT32          task_time;                              /* ÈÎÎñ¿ªÊ¼Ê±¼ä                             */

-    UINT32          msg_id;                                 /* µ±Ç°ÈÎÎñÏûÏ¢ID                           */

-    UINT8           dire[4];                                /* ÏûÏ¢²¶»ñ·½Ïò                             */

-    UINT8           thread_no;                              /* Ï̺߳Š                                  */

-    UINT8           run_status;                             /* ÔËÐÐ×´¿ö                                 */

-    UINT8           state;                                  /* ÈÎÎñ״̬                                 */

-    UINT8           *taskData;                              /* ÈÎÎñÊý¾ÝÇøÖ¸Õë                           */

-    struct struTCB  *next;

-    UINT32          cputime;                                /* ÈÎÎñÔËÐÐcpuʱ¼ä                          */

-    FLOAT           cpupercent;                             /* ÈÎÎñcpuÕ¼ÓÃÂÊ                            */

-    UINT32          runtime;                                /* ÈÎÎñÔËÐÐʱ¼ä                             */

-    UINT32          malloc_size;                            /* ÈÎÎñËùÓÃmalloc´óС                       */

-    UINT32          ub_size;                                /* ÈÎÎñËùÓÃÄÚ´æ³Ø´óС                       */

-    UINT8           reserved[4];                            /* ±£Áô룬µÚÒ»¸ö×Ö½ÚΪϵͳ¾²Ì¬ÈÎÎñ±ê־λ   */

-}T_ZOss_TCB;                      /* ÈÎÎñ¿ØÖÆ¿é */

-

-typedef struct 

-{

-    UINT8           is_use;

-    CHAR            task_name[ZOSS_MAX_TASKNAME_LEN + 1];

-    FUNC_TASKENTRY  task_entry;

-    UINT32          priority;

-    UINT32          stack_size;

-    UINT32          private_data_len;

-    UINT8           process_no;

-    UINT8           ack_flag;

-#ifdef _USE_HAL_HRDTST

-    BOOL            hardTestFlag;

-#endif

-}T_ZOss_TaskTabItem;    /* ÈÎÎñµÇ¼Ç±í */

-

-/* SDLÈÎÎñ */

-typedef struct 

-{

-    T_ZOss_Node     node;           /* ±£Áô             */

-    UINT32          type;           /* Çø·ÖÊÇ·ñSDLÈÎÎñ  */

-    SINT32          index;          /* Ë÷Òý             */

-    UINT32          self_id;

-    ZOSS_THREAD_ID  thread_id;      /* ËùÔÚÏß³ÌID       */

-    VOID            *self;

-    TASK_SEND_HOOK  HookEntry[3];   /* »Øµ÷º¯Êý         */

-    UINT8           dire[4];        /* ÏûÏ¢²¶»ñ·½Ïò     */

-}T_ZOss_SDLTCB;                     /* SDLÈÎÎñ¿ØÖÆ¿é    */    

-

-typedef struct signalcode_desc 

-{

-    UINT32  selfid;

-    CHAR    task_name[ZOSS_MAX_TASKNAME_LEN + 1];

-} T_ZOss_SignalCode_Desc;

-

-typedef struct 

-{

-    UINT32          selfid;

-    ZOSS_TASK_ID    task_id;

-}tasksdl_desc;

-/* shellÃüÁî */

-typedef struct 

-{

-    CHAR    cmd[SHELL_CMD_LENGTH + 1];                              /* ÃüÁî×Ö·û´®³¤¶È       */

-    CHAR    para[SHELL_CMD_PARAM_NUM][SHELL_CMD_PARAM_LENGTH + 1];  /* ²ÎÊý                 */

-    UINT32  paraCount;                                              /* ²ÎÊý¸öÊý             */

-}T_Shell_CommandMessage;                                            /* sehllÃüÁîÏûÏ¢½á¹¹Ìå  */

-

-typedef VOID (*Shell_Func)(T_Shell_CommandMessage *CmdMsg);         /* shellÃüÁîʵÏÖº¯ÊýÖ¸Õë */

-

-/* ¶¯Ì¬ÅäÖÃÀàÐͶ¨Òå */

-typedef struct 

-{

-    UINT8 (*pPrioMap)[32];

-}T_OSA_PARAM;

-

-typedef struct 

-{

-    UINT32          ub_pool_num;    /* ÄÚ´æ³Ø¸öÊý, ×î´ó²»Äܳ¬¹ý255  */

-    T_ZOss_UBPOOL   *UBPool;        /* ÄÚ´æ³ØÅäÖñíÖ¸Õë             */

-}T_MEM_PARAM;                       /* ÄÚ´æÄ£¿é                     */

-

-typedef struct 

-{

-    UINT32  max_task_num;           /* ×î´óÈÎÎñÊý                   */

-    UINT32  max_schthread_num;      /* µ÷¶ÈÏß³ÌÊý£¬×î¶à10           */

-    UINT32  max_msg_queue_len;      /* ÈÎÎñÏûÏ¢¶ÓÁг¤¶È             */

-    UINT32  deadloop_time;          /* ËÀÑ­»·ÅжÏʱ¼ä, µ¥Î»s        */

-}T_TASK_PARAM;                      /* ÈÎÎñÄ£¿é                     */

-

-typedef struct 

-{

-    UINT32  SchPrio;                /* ¶¨Ê±Æ÷µ÷¶ÈÏß³ÌÓÅÏȼ¶0-9                                              */

-    UINT32  CallBackStack;          /* ¶¨Ê±Æ÷»Øµ÷º¯ÊýÏ̶߳ÑÕ»                                               */

-    UINT32  CallBackPrio;           /* ¶¨Ê±Æ÷»Øµ÷º¯ÊýÏß³ÌÓÅÏȼ¶£¬±ØÐëµÍÓÚµ÷¶ÈÏß³ÌÓÅÏȼ¶£¬Ò»°ãΪSchPrio+1    */

-    UINT32  MinTimeLen;             /* ¶¨Ê±Æ÷×îСµÄ³¬Ê±Ê±¼ä,µ¥Î»ºÁÃë                                        */

-    UINT32  MaxTimeNum;             /* ×î´ó¶¨Ê±Æ÷¸öÊý                                                       */

-}T_TIMER_PARAM;                     /* ¶¨Ê±Æ÷Ä£¿é                                                           */

-

-typedef struct 

-{

-    UINT32  DeadLoopCheckTime;      /* ËÀÑ­»·¼ì²éʱ¼ä                   */

-    UINT32  UpdateCPUTime;          /* Ë¢ÐÂCPUʹÓÃÂÊʱ¼ä                */

-    UINT32  DeamonStartTime;        /* ϵͳ³õʼ»¯ºóExcepÈÎÎñÆô¶¯µÄʱ¼ä  */

-}T_EXCEP_PARAM;                     /* Ò쳣ģ¿é                         */

-

-typedef struct 

-{

-    T_ZOss_TaskTabItem  *pSysm_TaskItemTab;

-    UINT32              task_num;

-}T_SYSM_PARAM;  /* sysmÄ£¿é */

-

-typedef struct 

-{

-    UINT32  *pNvAddrCfg;

-    UINT32  addrCfgNum;

-    VOID    *pRevNvCfg;

-    UINT32  revNvCfgNum;

-    UINT32  NV_Work_Area_Base_Addr;       /* NV¹¤×÷Çø»ùµØÖ·       */

-    UINT32  NV_Start_Backup_Base_Addr;    /* ±¸·Ý¿éµÄÆðʼµØÖ·     */

-    UINT32  NV_Backup_Area_Base_Addr;     /* NV±¸·ÝÇø»ùµØÖ·       */    

-    UINT32  NV_Backup_Area_Size;          /* NV±¸·ÝÇø´óС         */

-    UINT32  NV_Factory_Area_Base_Addr;    /* NV³ö³§Çø»ùµØÖ·       */

-    UINT32  NV_Factory_Area_Size;         /* NV³ö³§Çø´óС         */

-    UINT32  NV_Work_Area_Symbol_Addr;     /* ¹¤×÷ÇøÐ´±ê־λµØÖ·   */

-    UINT32  NV_Backup_Area_Symbol_Addr;   /* ±¸·ÝÇøÐ´±ê־λµØÖ·   */

-    UINT32  NV_Factory_Area_Symbol_Addr;  /* ³ö³§Çø±ê־λµØÖ·     */

-    UINT32  NV_Reset_Factory_Symbol_Addr; /* »Ö¸´³ö³§ÉèÖñêÖ¾µØÖ· */

-    UINT32  NV_Ecc_log_Addr;              /* Ecc Log¹¤×÷ÇøµØÖ·    */

-    UINT32  NV_Block_Size;                /* ¿é´óС               */

-}T_NVRAM_PARAM;                           /* NVRAMÇøÓòµØÖ·ÐÅÏ¢    */

-

-typedef struct

-{

-    UINT8  count;

-    UINT8  index;

-    UINT8  type[ZOSS_NV_ECC_LOG_NR];

-    UINT32 tick[ZOSS_NV_ECC_LOG_NR];

-    UINT32 addr[ZOSS_NV_ECC_LOG_NR];

-}T_ZOss_NvEccLog;

-

-typedef struct

-{

-    UINT32  Work_Area_Base_Addr;       /* vSIM¹¤×÷Çø»ùµØÖ·   */

-    UINT32  Backup_Area_Base_Addr;     /* vSIM±¸·ÝÇø»ùµØÖ·   */    

-    UINT32  Factory_Area_Base_Addr;    /* vSIM³ö³§Çø»ùµØÖ·   */

-    UINT32  Area_Size;                 /* vSIMµ¥¸öÇø´óС     */

-    UINT32  Work_Area_Symbol_Addr;     /* ¹¤×÷ÇøÐ´±ê־λµØÖ· */

-    UINT32  Backup_Area_Symbol_Addr;   /* ±¸·ÝÇøÐ´±ê־λµØÖ· */

-    UINT32  Factory_Area_Symbol_Addr;  /* ³ö³§Çø±ê־λµØÖ·   */

-}T_vSIM_PARAM;

-

-typedef struct 

-{

-    CHAR    WinDisk[4];    /* windowsÅÌ·û      */

-    CHAR    LinuxPath[20]; /* ÀàlinuxÉ豸Ãû    */

-    CHAR    Format[20];    /* ÎļþϵͳÀàÐÍ     */

-    CHAR    Device[20];    /* É豸Ãû           */

-    CHAR    Params[100];   /* Ïà¹Ø²ÎÊý         */

-    CHAR    Manager[40];   /* ¹ÜÀíÏß³ÌÃû       */

-}T_OSA_DISKMAP;

-

-typedef struct 

-{

-    T_OSA_DISKMAP   *diskMap;

-    UINT32          diskNum;

-}T_DISK_PARAM;

-

-typedef VOID (*ramdump_Hook)(VOID);

-

-typedef struct

-{

-    ramdump_Hook ramdump_Process_PreHook;

-    ramdump_Hook ramdump_Process_AftHook;

-}T_zOss_RamdumpOpt;

-

-

-typedef VOID (*ramdump_IoInit)(VOID);

-typedef VOID (*ramdump_IoReadData)(UINT8 *buffer, UINT32 size);

-typedef VOID (*ramdump_IoWriteData)(UINT8 *buffer, UINT32 size);

-typedef VOID (*ramdump_IoFinish)(VOID);

-

-typedef struct

-{

-    ramdump_IoInit      init;

-    ramdump_IoReadData  read;

-    ramdump_IoWriteData write;

-    ramdump_IoFinish    finish;

-} T_zOss_RamdumpIoOpt;

-

-typedef struct

-{

-    UINT32  baseForServer;

-    UINT32  baseForSelf;

-    UINT32  baseForCopy;

-    UINT32  size;

-} T_zOss_RamdumpRegion;

-

-typedef struct 

-{

-    T_OSA_PARAM     OsaCfg;     /* osaÅäÖÃ              */

-    T_DISK_PARAM    DiskMap;    /* ´ÅÅÌÓ³ÉäÅäÖà         */

-    T_MEM_PARAM     MemCfg;     /* ÄÚ´æÅäÖà             */

-    T_TASK_PARAM    TaskCfg;    /* ÈÎÎñÅäÖà             */

-    T_TIMER_PARAM   TimerCfg;   /* ¶¨Ê±Æ÷ÅäÖà           */

-    T_EXCEP_PARAM   ExcepCfg;   /* Òì³£ÅäÖà             */

-    T_SYSM_PARAM    SysmCfg;    /* sysmtÅäÖÃ            */

-    T_NVRAM_PARAM   NvramCfg;   /* NvÅäÖÃ               */

-    T_vSIM_PARAM    vSIMCfg;    /* vSimÅäÖÃ             */

-#ifdef _USE_PSM

-#ifdef _USE_PSM_NEW_FRAMEWORK

-    T_zPsm_Param    PsmCfg;     /* PsmÅäÖÃ              */

-#else

-    T_PSM_PARAM     PsmCfg;     /* PsmÅäÖÃ              */

-#endif

-#endif

-}T_OSS_PARAM;                   /* Õû¸öOSS¶¯Ì¬ÅäÖÃÀàÐÍ  */

-

-typedef enum 

-{

-    SYS_RESET_TO_NORMAL,

-    SYS_RESET_TO_CHARGER,

-    SYS_RESET_TO_ALRAM,

-    SYS_RESET_TO_EXCEPTRESET,

-    SYS_MAX_RESET_TYPE,

-} T_ZOssSys_RESET_TYPE;

-#endif //#ifndef DOXYGEN_SHOULD_SKIP_THIS

-

-/*******************************************************************************

- *                       Global variable declarations                          *

- ******************************************************************************/

-

-

-/*******************************************************************************

- *                       Global function declarations                          *

- ******************************************************************************/

-#ifndef DOXYGEN_SHOULD_SKIP_THIS

-/* OSAÄ£¿é³õʼ»¯ */

-UINT32 OSA_Init(VOID);

-

-/* ϵͳ¹ÜÀíÄ£¿é */

-UINT32 zOss_Init(VOID);

-UINT32 zOss_TaskInit(VOID);

-UINT32 zOss_Start(VOID);

-VOID zOss_TaskStartOK(VOID);

-UINT32 zOss_SysPowerdown(VOID);

-VOID zOss_SysSoftReset(T_ZOssSys_RESET_TYPE type);

-T_OSS_PARAM *zOss_GetOssCfg(VOID);

-

-/* ÈÎÎñ¹ÜÀíÄ£¿é */

-UINT32 zOss_Task_HookSet(UINT8 type, VOID *HookFunc);

-ZOSS_TASK_ID zOss_CreateTask(const CHAR *task_name, FUNC_TASKENTRY task_entry, UINT32 stack_size, UINT32 priority, UINT32 private_data_len, UINT8 pno);

-UINT32 zOss_DeleteTask(ZOSS_TASK_ID task_id);

-UINT32 zOss_GetTaskInfo(ZOSS_TASK_ID task_id, T_ZOss_TCB *task_info);

-CHAR *zOss_GetTaskName(ZOSS_TASK_ID task_id);

-UINT32 zOss_GetAllTaskID(ZOSS_TASK_ID *task_id_arr);

-ZOSS_TASK_ID zOss_GetTaskID(const CHAR *task_name);

-ZOSS_TASK_ID zOss_GetSelfTaskID(VOID);

-UINT32 zOss_SetState(UINT8 next_state);

-UINT32 zOss_RegTaskSendHook(ZOSS_TASK_ID task_id, UINT8 hooktype, UINT8 dire, TASK_SEND_HOOK intercept_Entry);

-UINT32 zOss_TaskSend(UINT32 msg_id, const VOID *msg_buf, UINT16 msg_len, ZOSS_TASK_ID task_id);

-UINT32 zOss_TaskSendData(UINT32 msg_id, VOID *buf, UINT16 msg_len, ZOSS_TASK_ID task_id);

-ZOSS_TASK_ID zOss_Sender(VOID);

-

-/* ramdump */

-#ifdef _USE_MULTI_CORE_RAMDUMP

-VOID zOss_RamdumpSetOperation(T_zOss_RamdumpOpt *funcObjPtr);

-VOID zOss_RamdumpConfigureMem(T_zOss_RamdumpRegion *regionInfo);

-#else

-VOID zOss_RamdumpConfigureMem(UINT32 base, UINT32 size, UINT32 map_base, UINT32 copy_base);

-VOID zOss_RamdumpHookInstall(T_zOss_RamdumpHookFunc hook);

-#endif

-VOID zOss_RamdumpSetIoOpt(T_zOss_RamdumpIoOpt hook);

-

-/* NV²Ù×÷½Ó¿Ú */

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

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

-UINT32 zOss_ResetNVFactory(VOID);

-UINT32 zOss_NvramFlush(VOID);

-VOID zOss_NvSetErrorAddr(UINT32 addr);

-BOOL zOss_NvInResume(VOID);

-VOID zOss_NvCheck(VOID);

-VOID zOss_NvWriteFactory(VOID);

-VOID zOss_NvScanBackUpArea(VOID);

-UINT32 zOss_NvGetEccLogInfo(T_ZOss_NvEccLog *logInfo);

-UINT32 zOss_ChangeNvroAttr(int writable);

-UINT32 Nvram_Flush(VOID);

-UINT32 Nvram_Finish(VOID);

-

-/* VSIM²Ù×÷½Ó¿Ú */

-UINT32 zOss_vSIMInit(VOID);

-UINT32 zOss_vSIMDataRead(UINT32 addr, VOID *data, UINT32 len);

-UINT32 zOss_vSIMDataWrite(UINT32 addr, VOID *data, UINT32 len);

-UINT32 zOss_vSIMFacWrite(VOID *data, UINT32 len);

-UINT32 zOss_vSIMRecovery(VOID);

-

-/* ´òÓ¡ */

-UINT32 zTools_Printf(UINT32 nModNo, UINT8 nPrintLevel, const VOID *pFormat, ...);

-VOID zOss_RamLog(CHAR *rambuf, UINT32 restrict);

-VOID zOss_RamPrintf(VOID);

-

-/* ά²â */

-UINT32 zOss_DebugInfoRecord(UINT32 id, const VOID *pFormat, ...);

-

-/* shellÄ£¿é */

-UINT32 zOss_AddShellCmd(const CHAR *cmd_name, const Shell_Func func, const CHAR *description);

-

-/* ¿´ÃŹ· */

-VOID zOss_WatchDogEnable(BOOL enable);

-

-/* CRCУÑé */

-UINT8 Comm_CrcCalc(const UINT8 *buf, UINT8 len);

-SINT32 Comm_CrcCheck(UINT8 *buf, UINT8 len, UINT8 crc);

-

-/* µãµÆÄ£¿é */

-VOID zOss_SetTransDataFlag(VOID);

-BOOL zOss_GetTransDataFlag(VOID);

-

-/* ʼþ×é */

-ZOSS_EVENT_ID zOss_CreateEvent(const CHAR *name);

-UINT32 zOss_GetEvent(ZOSS_EVENT_ID eventId, UINT32 events, UINT32 getOptions, UINT32 *pEventsReceived, UINT32 timeout);

-UINT32 zOss_SetEvent(ZOSS_EVENT_ID eventId, UINT32 events, UINT32 setOptions);

-UINT32 zOss_DeleteEvent(ZOSS_EVENT_ID eventId);

-UINT32 zOss_QueryEvent(ZOSS_EVENT_ID eventId);

-BOOL   zOss_WaitingEvent(ZOSS_EVENT_ID eventId);

-

-/* »·Ðλº³å */ 

-BOOL zOss_RingIsEmpty(T_ZOss_RingId ring_id); 

-BOOL zOss_RingIsFull(T_ZOss_RingId ring_id);

-T_ZOss_RingId zOss_RingCreate(SINT32 nbytes); 

-SINT32 zOss_RingBufGet(T_ZOss_RingId ring_id, CHAR *buffer, SINT32 maxbytes); 

-SINT32 zOss_RingBufPut(T_ZOss_RingId ring_id, CHAR *buffer, SINT32 nbytes);

-SINT32 zOss_RingFreeBytes(T_ZOss_RingId ring_id);

-SINT32 zOss_RingNBytes(T_ZOss_RingId ring_id);

-VOID zOss_RingDelete(T_ZOss_RingId ring_id);

-VOID zOss_RingFlush(T_ZOss_RingId ring_id);

-VOID zOss_RingMoveAhead(T_ZOss_RingId ring_id, SINT32 n);

-VOID zOss_RingPutAhead(T_ZOss_RingId ring_id, CHAR byte, SINT32 offset);

-

-/* ÏûÏ¢¶ÓÁÐ */

-ZOSS_QUEUE_ID zOss_QueueCreate(const CHAR *queue_name, UINT32 maxMsgs, UINT32 maxMsgLen);

-UINT32 zOss_QueueSend(ZOSS_QUEUE_ID queue_id, VOID *msg_ptr, UINT32 size, UINT32 timeout, UINT32 priority);

-UINT32 zOss_QueueRecv(ZOSS_QUEUE_ID queue_id, VOID *buffer, UINT32 maxsize, UINT32 timeout);

-UINT32 zOss_QueueFreeCount(ZOSS_QUEUE_ID queue_id);

-UINT32 zOss_QueueDelete(ZOSS_QUEUE_ID queue_id);

-

-/* ¹ÜµÀ */

-UINT32 zOss_PipeDevCreate(const CHAR *name, SINT32 nBytes);

-UINT32 zOss_PipeDevDelete(const CHAR *name, BOOL force);

-

-/* Cahce½Ó¿Ú */

-VOID zOss_CacheCleanRange(UINT32 base, UINT32 size);

-VOID zOss_CacheInvalidateRange(UINT32 base, UINT32 size);

-VOID zOss_CacheCleanRangeFast(UINT32 base, UINT32 size);

-VOID zOss_CacheInvalidateRangeFast(UINT32 base, UINT32 size);

-VOID zOss_IoRemapPages(VOID *base, UINT32 size);

-

-/* svÉèÖûñÈ¡½Ó¿Ú */

-UINT8 zOss_GetSvConfig(VOID);

-VOID zOss_SetSvConfig(UINT8 sv);

-

-/* ¶¨Ê±Æ÷¹ÜÀíÄ£¿é */

-#ifdef _USE_PSM

-VOID zOss_SetTimer_PsmFlag(ZOSS_TIMER_ID time_id, BOOL Flag);

-UINT32 zOss_GetPs_SleepTimer(VOID);

-#endif

-

-#endif //#ifndef DOXYGEN_SHOULD_SKIP_THIS

-

-/**

- * @brief ÉèÖ÷ÇÖÜÆÚÐÔÈÎÎñ¶¨Ê±Æ÷

- * @param time_len  Èë²Î£¬Ê±³¤£¬µ¥Î»£ºms

- * @param msg_id    Èë²Î£¬¶¨Ê±µ½ºó,·¢Ë͸øÉèÖö¨Ê±Æ÷ÈÎÎñµÄÏûÏ¢id

- * @param arg       Èë²Î£¬¸½¼Ó²ÎÊý,¶¨´«µÝ¸øÈÎÎñÈë¿Úº¯ÊýµÄbufÐβδËʱmsg_lenֵΪ4(sizeof(UINT32/arg))

- * @return ³É¹¦:ÏàÓ¦µÄ¶¨Ê±Æ÷±êʶ; ʧ°Ü:ZOSS_INVALID_TIMER_ID

- * @retval ZOSS_TIMER_IDÀàÐ͵ıêʶ    ³É¹¦

- * @retval ZOSS_INVALID_TIMER_ID      ʧ°Ü

- * @note  ÉèÖÃʱ¿ÌΪ²Î¿¼µã,¾­¹ýÖ¸¶¨Ê±¼äºó, ÏòÉèÖö¨Ê±Æ÷µÄÈÎÎñ·¢ËÍÖ¸¶¨ÏûÏ¢²¢×Ô¶¯ÊͷŶ¨Ê±Æ÷ËùÕ¼×ÊÔ´

- * @warning  ±ØÐèÔÚÈÎÎñÄÚµ÷ÓÃ

- */

-ZOSS_TIMER_ID zOss_SetRelativeTimer(UINT32 time_len, UINT32 msg_id, UINT32 arg);

-

-/**

- * @brief ÉèÖ÷ÇÖÜÆÚÐÔÈÎÎñ¶¨Ê±Æ÷ÏòÄ¿±êÈÎÎñ·¢ËÍÏûÏ¢

- * @param time_len       Èë²Î£¬Ê±³¤£¬µ¥Î»£ºms

- * @param msg_id         Èë²Î£¬¶¨Ê±µ½ºó,·¢Ë͸øÉèÖö¨Ê±Æ÷ÈÎÎñµÄÏûÏ¢id

- * @param arg            Èë²Î£¬¸½¼Ó²ÎÊý,¶¨´«µÝ¸øÈÎÎñÈë¿Úº¯ÊýµÄbufÐβδËʱmsg_lenֵΪ4(sizeof(UINT32/arg))

- * @param desk_task_id   Èë²Î£¬Ö¸¶¨Ä¿±êÈÎÎñ£¬Èç¹ûÄ¿±êÈÎÎñΪ¿Õʱ£¬½«·¢ËÍÉèÖö¨Ê±Æ÷µÄÈÎÎñ

- * @return ³É¹¦:ÏàÓ¦µÄ¶¨Ê±Æ÷±êʶ; ʧ°Ü:ZOSS_INVALID_TIMER_ID

- * @retval ZOSS_TIMER_IDÀàÐ͵ıêʶ    ³É¹¦

- * @retval ZOSS_INVALID_TIMER_ID      ʧ°Ü

- * @note 

- * @warning 

- */

-ZOSS_TIMER_ID zOss_SetRelativeTimerByTaskId(UINT32 time_len, UINT32 msg_id, UINT32 arg, ZOSS_TASK_ID desk_task_id);

-

-/**

- * @brief ÉèÖÃÖÜÆÚÐÔÈÎÎñ¶¨Ê±Æ÷

- * @param time_len  Èë²Î£¬Ê±³¤£¬µ¥Î»£ºms

- * @param msg_id    Èë²Î£¬¶¨Ê±µ½ºó,·¢Ë͸øÉèÖö¨Ê±Æ÷ÈÎÎñµÄÏûÏ¢id

- * @param arg       Èë²Î£¬¸½¼Ó²ÎÊý,¶¨´«µÝ¸øÈÎÎñÈë¿Úº¯ÊýµÄbufÐβδËʱmsg_lenֵΪ4(sizeof(UINT32/arg))

- * @return ³É¹¦:ÏàÓ¦µÄ¶¨Ê±Æ÷±êʶ; ʧ°Ü:ZOSS_INVALID_TIMER_ID

- * @retval ZOSS_TIMER_IDÀàÐ͵ıêʶ    ³É¹¦

- * @retval ZOSS_INVALID_TIMER_ID      ʧ°Ü

- * @note  ÉèÖÃʱ¿ÌΪ²Î¿¼µã,¾­¹ýÖ¸¶¨Ê±¼äºó, ÏòÉèÖö¨Ê±Æ÷µÄÈÎÎñ·¢ËÍÖ¸¶¨ÏûÏ¢²¢×Ô¶¯ÊͷŶ¨Ê±Æ÷ËùÕ¼×ÊÔ´

- * @warning ±ØÐèÔÚÈÎÎñÄÚµ÷ÓÃ

- */

-ZOSS_TIMER_ID zOss_SetLoopTimer(UINT32 time_len, UINT32 msg_id, UINT32 arg);

-

-/**

- * @brief ÉèÖÃÖÜÆÚÐÔÈÎÎñ¶¨Ê±Æ÷ÏòÄ¿±êÈÎÎñ·¢ËÍÏûÏ¢

- * @param time_len       Èë²Î£¬Ê±³¤£¬µ¥Î»£ºms

- * @param msg_id         Èë²Î£¬¶¨Ê±µ½ºó,·¢Ë͸øÉèÖö¨Ê±Æ÷ÈÎÎñµÄÏûÏ¢id

- * @param arg            Èë²Î£¬¸½¼Ó²ÎÊý,¶¨´«µÝ¸øÈÎÎñÈë¿Úº¯ÊýµÄbufÐβδËʱmsg_lenֵΪ4(sizeof(UINT32/arg))

- * @param desk_task_id   Èë²Î£¬Ö¸¶¨Ä¿±êÈÎÎñ£¬Èç¹ûÄ¿±êÈÎÎñΪ¿Õʱ£¬½«·¢ËÍÉèÖö¨Ê±Æ÷µÄÈÎÎñ

- * @return ³É¹¦:ÏàÓ¦µÄ¶¨Ê±Æ÷±êʶ; ʧ°Ü:ZOSS_INVALID_TIMER_ID

- * @retval ZOSS_TIMER_IDÀàÐ͵ıêʶ    ³É¹¦

- * @retval ZOSS_INVALID_TIMER_ID      ʧ°Ü

- * @note  

- * @warning 

- */

-ZOSS_TIMER_ID zOss_SetLoopTimerByTaskId(UINT32 time_len, UINT32 msg_id, UINT32 arg, ZOSS_TASK_ID desk_task_id);

-

-/**

- * @brief ´´½¨¶¨Ê±Æ÷º¯Êý

- * @param tm_name        Èë²Î£¬¶¨Ê±Æ÷Ãû³Æ

- * @param tm_callback    Èë²Î£¬¶¨Ê±µ½ºóÐèÒªµ÷ÓõĻص÷º¯Êý

- * @param tm_param       Èë²Î£¬»Øµ÷º¯ÊýµÄÈë²Î

- * @param bPeriod        Èë²Î£¬TRUE£ºÖÜÆÚÐÔ¶¨Ê±Æ÷£»FALSE£º·ÇÖÜÆÚÐÔ¶¨Ê±Æ÷

- * @return ³É¹¦:ÏàÓ¦µÄ¶¨Ê±Æ÷±êʶ; ʧ°Ü:ZOSS_INVALID_TIMER_ID

- * @retval ZOSS_TIMER_IDÀàÐ͵ıêʶ    ³É¹¦

- * @retval ZOSS_INVALID_TIMER_ID      ʧ°Ü

- * @note  ´´½¨ºÃÖ®ºó¿ÉÒÔµ÷ÓÃzOss_StartTimer()Æô¶¯¶¨Ê±Æ÷

- * @warning 

- */

-ZOSS_TIMER_ID zOss_CreateTimer(const CHAR *tm_name, ZOSS_TIMER_FUN tm_callback, SINT32 tm_param, BOOL bPeriod);

-

-/**

- * @brief Æô¶¯¶¨Ê±Æ÷º¯Êý,Æô¶¯Ê±¿ÌΪ²Î¿¼µã,¾­¹ýÖ¸¶¨Ê±¼äºó,µ÷Óûص÷º¯Êý

- * @param timer_id        Èë²Î£¬¶¨Ê±Æ÷id

- * @param time_len        Èë²Î£¬¶¨Ê±Æ÷ʱ³¤£¬µ¥Î»£ºms

- * @param tm_callback     Èë²Î£¬¶¨Ê±µ½ºóÒªµ÷ÓõĻص÷º¯Êý

- * @param tm_param        Èë²Î£¬»Øµ÷º¯ÊýµÄÈë²Î

- * @return ³É¹¦:ZOSS_SUCCESS;ʧ°ÜZOSS_ERROR

- * @retval ZOSS_SUCCESS    ³É¹¦

- * @retval ZOSS_ERROR      ʧ°Ü

- * @note

- * @warning  Èç¹û»Øµ÷º¯ÊýÖ´ÐÐʱ¼ä´óÓÚ¶¨Ê±Æ÷ʱ³¤,¿ÉÄÜ»áÔì³É´íÎó»ò¶¨Ê±Æ÷²»±»ÕýÈ·µ÷¶È

- */

-UINT32 zOss_StartTimer(ZOSS_TIMER_ID timer_id, UINT32 time_len, ZOSS_TIMER_FUN tm_callback, SINT32 tm_param);

-

-/**

- * @brief Í£Ö¹¶¨Ê±Æ÷¼ÆÊ±º¯Êý

- * @param timer_id        Èë²Î£¬¶¨Ê±Æ÷id

- * @return ³É¹¦:ZOSS_SUCCESS;ʧ°ÜZOSS_ERROR

- * @retval ZOSS_SUCCESS    ³É¹¦

- * @retval ZOSS_ERROR      ʧ°Ü

- * @note 

- * @warning 

- */

-UINT32 zOss_StopTimer(ZOSS_TIMER_ID timer_id);

-

-/**

- * @brief ÔÝÍ£Ö¸¶¨¶¨Ê±Æ÷µÄ¼ÆÊ±

- * @param timer_id        Èë²Î£¬¶¨Ê±Æ÷id

- * @return ³É¹¦:ZOSS_SUCCESS;ʧ°ÜZOSS_ERROR

- * @retval ZOSS_SUCCESS    ³É¹¦

- * @retval ZOSS_ERROR      ʧ°Ü

- * @note  ÔÝÍ£µÄͬʱ¼Ç¼ÏÂÊ£ÓàµÄÏà¶Ôʱ¼ä£¬µ÷ÓÃzOss_ResumeTime()º¯Êýºó¼ÌÐø¼ÆÊ±£»

-                Èç¹û¶¨Ê±Æ÷ÕýÔÚ±»µ÷¶È,ÔòÖ´ÐÐÍ굱ǰµ÷¶ÈºóÔÝÍ£¼ÆÊ±¡£

- * @warning 

- */

-UINT32 zOss_PauseTimer(ZOSS_TIMER_ID timer_id);

-

-/**

- * @brief ʹÔÝÍ£µÄ¶¨Ê±Æ÷¼ÌÐø¼ÆÊ±

- * @param timer_id        Èë²Î£¬¶¨Ê±Æ÷id

- * @return ³É¹¦:ZOSS_SUCCESS;ʧ°ÜZOSS_ERROR

- * @retval ZOSS_SUCCESS    ³É¹¦

- * @retval ZOSS_ERROR      ʧ°Ü

- * @note  

- * @warning 

- */

-UINT32 zOss_ResumeTimer(ZOSS_TIMER_ID timer_id);

-

-/**

- * @brief ɾ³ýÖ¸¶¨µÄ¶¨Ê±Æ÷

- * @param timer_id        Èë²Î£¬¶¨Ê±Æ÷id

- * @return ³É¹¦:ZOSS_SUCCESS;ʧ°ÜZOSS_ERROR

- * @retval ZOSS_SUCCESS    ³É¹¦

- * @retval ZOSS_ERROR      ʧ°Ü

- * @note  

- * @warning 

- */

-UINT32 zOss_KillTimer(ZOSS_TIMER_ID timer_id);

-

-/*******************************************************************************

- *                      Inline function implementations                        *

- ******************************************************************************/

-#ifndef DOXYGEN_SHOULD_SKIP_THIS

-/* Ë«ÏòÁ´±í */

-#if defined (_OS_TOS) || defined (_OS_LINUX)

-/**************************************************************************

-* º¯ÊýÃû³Æ:  zOss_ListInit

-* ¹¦ÄÜÃèÊö:  ³õʼ»¯Ë«ÏòÁ´±í

-* ²ÎÊý˵Ã÷£º

-             (IN)

-                pList:Á´±íÖ¸Õë

-             (OUT)

-* ·µ »Ø Öµ:

-**************************************************************************/

-static inline VOID zOss_ListInit(T_ZOss_List *pList)

-{

-    zOss_AssertExN(pList != NULL);

-

-    pList->HEAD  = NULL;

-    pList->TAIL  = NULL;

-    pList->count = 0;

-}

-

-/**************************************************************************

-* º¯ÊýÃû³Æ:  zOss_ListCount

-* ¹¦ÄÜÃèÊö:  »ñÈ¡Á´±íÏÂ×ܹ²µÄ½ÚµãÊý

-* ²ÎÊý˵Ã÷£º

-             (IN)

-                pList:Á´±íÖ¸Õë

-             (OUT)

-* ·µ »Ø Öµ:  ½Úµã¸öÊý

-**************************************************************************/

-static inline SINT32 zOss_ListCount(T_ZOss_List *pList)

-{

-    return (pList->count);

-}

-

-/**************************************************************************

-* º¯ÊýÃû³Æ: zOss_ListDelete

-* ¹¦ÄÜÃèÊö: ÒÆ³ýÁ´±íÖÐÖ¸¶¨µÄ½Úµã

-* ²ÎÊý˵Ã÷£º

-            (IN)

-                pList:Á´±íÖ¸Õë

-                pNode:´ýɾ³ý½ÚµãÖ¸Õë

-            (OUT)

-* ·µ »Ø Öµ:

-**************************************************************************/

-static inline VOID zOss_ListDelete(T_ZOss_List *pList, T_ZOss_Node *pNode)

-{

-    if (pNode->previous != NULL)

-    {

-        pNode->previous->next = pNode->next;

-    }

-    else

-    {

-        pList->HEAD = pNode->next;

-    }

-

-    if (pNode->next != NULL)

-    {

-        pNode->next->previous = pNode->previous;

-    }

-    else

-    {

-        pList->TAIL = pNode->previous;

-    }

-

-    /* update node count */

-    pList->count--;

-}

-

-/**************************************************************************

-* º¯ÊýÃû³Æ: zOss_ListFirst

-* ¹¦ÄÜÃèÊö: »ñÈ¡Á´±íµÄÊ×½Úµã

-* ²ÎÊý˵Ã÷£º

-            (IN)

-                pList:Á´±íÖ¸Õë

-            (OUT)

-* ·µ »Ø Öµ: ½ÚµãÖ¸Õë(µ±Á´±íÖÐûÓнڵãʱ£¬·µ»Ø¿Õ)

-**************************************************************************/

-static inline T_ZOss_Node* zOss_ListFirst(T_ZOss_List *pList)

-{

-    return (pList->HEAD);

-}

-

-/**************************************************************************

-* º¯ÊýÃû³Æ: zOss_ListInsert

-* ¹¦ÄÜÃèÊö: ÏòÁ´±íÖ¸¶¨µÄ½Úµãºó²åÈë½Úµã

-* ²ÎÊý˵Ã÷£º

-            (IN)

-                pList:Á´±íÖ¸Õë

-                pPrev:²åÈëµã½ÚµãÖ¸Õ룬µ±pPrevΪ¿Õʱ£¬±íʾ²åÈëµ½Á´±íÊ×λÖÃ

-                pNode:´ý²åÈëµÄ½ÚµãÖ¸Õë

-            (OUT)

-* ·µ »Ø Öµ:

-**************************************************************************/

-static inline VOID zOss_ListInsert (T_ZOss_List *pList, T_ZOss_Node *pPrev, T_ZOss_Node *pNode)

-{

-    T_ZOss_Node *pNext = NULL;

-

-    if (pPrev != NULL)

-    {

-        pNext = pPrev->next;    /* make prev node point fwd to new */

-        pPrev->next = pNode;

-    }

-    else

-    {

-     	pNext = pList->HEAD;    /* new node is to be first in list */

-    	pList->HEAD = pNode;

-    }

-

-    if (pNext != NULL)

-    {    	

-       pNext->previous = pNode; /* make next node point back to new */

-    }

-    else

-    {

-        pList->TAIL = pNode;    /* new node is to be last in list */

-    }

-

-    /* set pointers in new node, and update node count */

-    pNode->next     = pNext;

-    pNode->previous = pPrev;

-

-    pList->count++;

-}

-

-/**************************************************************************

-* º¯ÊýÃû³Æ: zOss_ListAdd

-* ¹¦ÄÜÃèÊö: ÏòÁ´±íβÌí¼Ó½Úµã

-* ²ÎÊý˵Ã÷£º

-            (IN)

-                pList:Á´±íÖ¸Õë

-                pNode:´ýÌí¼Ó½ÚµãÖ¸Õë

-            (OUT)

-* ·µ »Ø Öµ:

-**************************************************************************/

-static inline VOID zOss_ListAdd (T_ZOss_List *pList, T_ZOss_Node *pNode)

-{

-    zOss_ListInsert(pList, pList->TAIL, pNode);

-}

-

-/**************************************************************************

-* º¯ÊýÃû³Æ: zOss_ListLast

-* ¹¦ÄÜÃèÊö: »ñȡָ¶¨½ÚµãµÄºóÒ»½Úµã

-* ²ÎÊý˵Ã÷£º

-            (IN)

-                pNode:Ö¸¶¨½ÚµãÖ¸Õë

-            (OUT)

-* ·µ »Ø Öµ: ½ÚµãÖ¸Õë(µ±Á´±íÖÐûÓнڵãʱ£¬·µ»Ø¿Õ)

-**************************************************************************/

-static inline T_ZOss_Node* zOss_ListLast(T_ZOss_List *pList)

-{

-    return (pList->TAIL);

-}

-

-/**************************************************************************

-* º¯ÊýÃû³Æ: zOss_ListNext

-* ¹¦ÄÜÃèÊö: »ñȡָ¶¨½ÚµãµÄǰһ½Úµã

-* ²ÎÊý˵Ã÷£º

-            (IN)

-                pNode:½ÚµãÖ¸Õë

-            (OUT)

-* ·µ »Ø Öµ: ½ÚµãÖ¸Õë(µ±´«Èë½ÚµãÊÇÁ´±í×îºóÒ»¸ö½Úµãʱ£¬·µ»Ø¿Õ)

-**************************************************************************/

-static inline T_ZOss_Node* zOss_ListNext(T_ZOss_Node *pNode)

-{

-    return (pNode->next);

-}

-

-/**************************************************************************

-* º¯ÊýÃû³Æ: zOss_ListPrevious

-* ¹¦ÄÜÃèÊö: »ñȡָ¶¨½ÚµãµÄǰһ½Úµã

-* ²ÎÊý˵Ã÷£º

-            (IN)

-                pNode:Ö¸¶¨½ÚµãÖ¸Õë

-            (OUT)

-* ·µ »Ø Öµ: ½ÚµãÖ¸Õë(µ±´«Èë½ÚµãÊÇÁ´±íµÚÒ»¸ö½Úµãʱ£¬·µ»Ø¿Õ)

-**************************************************************************/

-static inline T_ZOss_Node *zOss_ListPrevious(T_ZOss_Node *pNode)

-{

-    return (pNode->previous);

-}

-

-/**************************************************************************

-* º¯ÊýÃû³Æ: zOss_ListNStep

-* ¹¦ÄÜÃèÊö: »ñÈ¡ÓëÖ¸¶¨½Úµã¼ä¸ônStepµÄ½Úµã

-* ²ÎÊý˵Ã÷£º

-            (IN)

-                pNode:½ÚµãÖ¸Õë

-                nStep:¼ä¸ôÊý. ÕýÊý:²éÕÒnext½Úµã£¬¸ºÊý²éÕÒprevious½Úµã

-            (OUT)

-* ·µ »Ø Öµ: ½ÚµãÖ¸Õë(µ±ÔÚ¼ä¸ônStepÄÚµ½´ïÁ´±íβʱ£¬·µ»Ø¿Õ)

-**************************************************************************/

-static inline T_ZOss_Node *zOss_ListNStep(T_ZOss_Node *pNode, SINT32 nStep)

-{

-    int i       = 0;

-    

-    if (nStep > 0)

-    {

-        for (i = nStep; i > 0; i--)

-        {

-            pNode = pNode->next;

-            

-            if (pNode == NULL)

-            {

-                break;

-            }

-        }

-    }

-    else

-    {

-        for (i = nStep; i < 0; i++)

-        {

-            pNode = pNode->previous;

-            

-            if (pNode == NULL)

-            {

-                break;

-            }

-        }

-    }

-    return (pNode);

-}

-

-/**************************************************************************

-* º¯ÊýÃû³Æ: zOss_ListFind

-* ¹¦ÄÜÃèÊö: ²éÕÒÁ´±íÖеĽڵã

-* ²ÎÊý˵Ã÷£º

-            (IN)

-                pList:Á´±íÖ¸Õë

-                pNode:´ý²éÕÒ½ÚµãÖ¸Õë

-            (OUT)

-* ·µ »Ø Öµ: Á´±íÖÐÓÐÖ¸¶¨½Úµã:½ÚµãÔÚÁ´±íÖеÄË÷Òý(´Ó1¿ªÊ¼)£¬

-                        Á´±íÖÐÎÞÖ¸¶¨½Úµã:-1

-**************************************************************************/

-static inline SINT32 zOss_ListFind (T_ZOss_List *pList, T_ZOss_Node *pNode)

-{

-    T_ZOss_Node *pNextNode      = NULL;

-    int         iNodePosition   = 1;

-

-    pNextNode = zOss_ListFirst (pList);

-

-    while ((pNextNode != NULL) && (pNextNode != pNode))

-    {

-        iNodePosition++;

-        

-        pNextNode = zOss_ListNext (pNextNode);

-    }

-

-    if (pNextNode != NULL)

-    {

-        return (iNodePosition);

-    }

-    else

-    {

-        return (-1);

-    }

-}

-

-/**************************************************************************

-* º¯ÊýÃû³Æ: zOss_ListConnect

-* ¹¦ÄÜÃèÊö: ½«Á½¸öÁ´±íÁ´½ÓÔÚÒ»Æð

-* ²ÎÊý˵Ã÷£º

-            (IN)

-                pList1: Á´±í1

-                pList2: Á´±í2

-            (OUT)

-* ·µ»ØÖµ:

-* ˵Ã÷£º    ½«pList2Á´½Óµ½pList1β²¿£»pList2µÄÁ´±íÍ·ÄÚÈݲ»»á¸Ä±ä

-**************************************************************************/

-static inline VOID zOss_ListConnect(T_ZOss_List *pList1, T_ZOss_List *pList2)

-{

-    if (pList1->count == 0)

-    {

-        pList1->HEAD    = pList2->HEAD;

-        pList1->TAIL    = pList2->TAIL;

-    }

-    else

-    {

-        if (pList2->count != 0)

-        {

-            pList1->TAIL ->next     = pList2->HEAD;

-            pList2->HEAD->previous  = pList1->TAIL;

-            pList1->TAIL            = pList2->TAIL;

-        }

-    }

-    pList1->count += pList2->count;

-}

-#else

-VOID zOss_ListInit(T_ZOss_List *pList);

-T_ZOss_Node *zOss_ListFirst(T_ZOss_List *pList);

-T_ZOss_Node *zOss_ListLast(T_ZOss_List *pList);

-T_ZOss_Node *zOss_ListNext(T_ZOss_Node *pNode);

-T_ZOss_Node *zOss_ListPrevious(T_ZOss_Node *pNode);

-T_ZOss_Node *zOss_ListNStep(T_ZOss_Node *pNode, SINT32 nStep); 

-SINT32 zOss_ListCount(T_ZOss_List *pList); 

-SINT32 zOss_ListFind(T_ZOss_List *pList, T_ZOss_Node *pNode);

-VOID zOss_ListAdd(T_ZOss_List *pList, T_ZOss_Node *pNode);

-VOID zOss_ListDelete(T_ZOss_List *pList, T_ZOss_Node *pNode);

-VOID zOss_ListInsert(T_ZOss_List *pList, T_ZOss_Node *pPrev, T_ZOss_Node *pNode);

-VOID zOss_ListConnect(T_ZOss_List *pList1, T_ZOss_List *pList2);

-#endif

-

-#endif //#ifndef DOXYGEN_SHOULD_SKIP_THIS

-

-

-#ifdef __cplusplus

-}

-#endif

-

-#endif  // #ifndef _OSS_SUP_H

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
deleted file mode 100755
index fd355b2..0000000
--- a/Uboot/cp/ps/plat/src/oss/sup/src/sup_except.c
+++ /dev/null
@@ -1,400 +0,0 @@
-/**************************************************************************

-*

-*                  Copyright (c) 2012 ZTE Corporation.

-*

-***************************************************************************

-* Ä£ ¿é Ãû : 

-* ÎÄ ¼þ Ãû : sup_except.c

-* Ïà¹ØÎļþ : 

-* ʵÏÖ¹¦ÄÜ : Òì³£¹ÜÀíÄ£¿é

-* ×÷    Õß : ÏÄйú

-* °æ    ±¾ : V1.0

-* Íê³ÉÈÕÆÚ : 2007/08/01

-* ÆäËü˵Ã÷ : 

-**************************************************************************/

-

-/**************************************************************************

-* Ð޸ļǼ

-**************************************************************************/

-/**************************************************************************

-* Ð޸ıàºÅ : 0001

-* ÐÞ ¸Ä ÈË : ÖܹúÆÂ

-* °æ ±¾ ºÅ : V1.1

-* ÐÞ¸ÄÈÕÆÚ : 2007/09/03

-* ÐÞ¸ÄÄÚÈÝ : Ôö¼Ó½Ó¿Úº¯ÊýʵÏÖ

-**************************************************************************/

-/**************************************************************************

-* Ð޸ıàºÅ : 0002

-* ÐÞ ¸Ä ÈË : dengningkun

-* ÐÞ¸ÄÈÕÆÚ : 2012/9/27

-* ÐÞ¸ÄÄÚÈÝ : ¸ñʽ¹æ·¶ºÍPC-LINT¼ì²é  EC:617001782169

-**************************************************************************/

-/**************************************************************************

-* Ð޸ıàºÅ : 0003

-* ÐÞ ¸Ä ÈË : dengningkun

-* ÐÞ¸ÄÈÕÆÚ : 2012/10/10

-* ÐÞ¸ÄÄÚÈÝ : ´úÂë×ß²é               EC:617001782205

-**************************************************************************/

-

-/**************************************************************************

-* #includeÇø

-**************************************************************************/

-

-#include "oss_api.h"

-#include "osa.h"

-#include "sup.h"

-#include "sup_except.h"

-#include "ThreadPriority.h"

-#ifdef _USE_WDT_RST

-#include "drvs_wdt.h"

-#include "sys_func_atcfg.h"

-#endif

-

-#ifdef __cplusplus

-extern "C"

-{

-#endif

-

-/**************************************************************************

-* Íⲿº¯ÊýÉùÃ÷Çø

-**************************************************************************/

-#ifdef _OS_TOS

-extern FLOAT Osa_GetProcessCPU(ZOSS_THREAD_ID thread_id);

-#endif

-

-/**************************************************************************

-* ºê¶¨ÒåÇø

-**************************************************************************/

-#ifdef _USE_WDT_RST

-#define TRACE_WATCHDOG_FEED_PERIOD          1000

-#define TRACE_WATCHDOG_FEED_VALUE           5000

-#endif

-/**************************************************************************

-* Êý¾Ý½á¹¹¶¨ÒåÇø

-**************************************************************************/

- 

-/**************************************************************************

-* ¾Ö²¿º¯ÊýÔ­ÐÍ

-**************************************************************************/

-#ifndef _USE_PSM

-#if defined (_OS_WIN) || defined (_OS_OSE)

-static VOID Excep_IdleThread(SINT32 ingore);

-#endif

-#endif

-#ifdef _USE_WDT_RST

-static VOID Excep_WatchDogCallBack(SINT32 args);

-#endif

-

-/**************************************************************************

-* È«¾Ö³£Á¿/±äÁ¿

-**************************************************************************/

-ZOSS_TASK_ID gExcep_DaemonTask = ZOSS_INVALID_TASK_ID;

-

-static T_EXCEP_PARAM                *gExcep_Param   = NULL;

-

-#ifdef _USE_WDT_RST

-static ZOSS_TIMER_ID                gTrace_WatchDogTimerID      = NULL;

-#endif

-/* ÒÆÖ² */

-/**************************************************************************

-* ¾Ö²¿º¯ÊýʵÏÖ

-**************************************************************************/

-/* ÒÆ Ö² */

-#ifndef _USE_PSM

-#if defined (_OS_WIN) || defined (_OS_OSE)

-/**************************************************************************

-* º¯ÊýÃû³Æ£º Excep_IdleThread

-* ¹¦ÄÜÃèÊö£º 

-* ²ÎÊý˵Ã÷£º 

-* ·µ »Ø Öµ£º 

-* ÆäËü˵Ã÷£º

-**************************************************************************/

-static VOID Excep_IdleThread(SINT32 ingore)

-{

-#ifdef _OS_OSE

-    UINT32 dwZero=0;

-    SINT32 i = 0;

-

-    for(;;)

-    {

-        i++;

-        if (!(i%3000000))

-        {

-            SYSTIME_Init();

-        }

-    }

-#elif defined (_OS_TOS)

-     for(;;)

-        ;

-#elif defined (_OS_LINUX)

-     for(;;)

-        ;

-#endif

-}

-#endif

-#endif

-#ifdef _USE_WDT_RST

-/**************************************************************************

-* º¯ÊýÃû³Æ£º Excep_WatchDogCallBack

-* ¹¦ÄÜÃèÊö£º ¶¨Ê±Æ÷ι¹·»Øµ÷º¯Êý

-* ²ÎÊý˵Ã÷£º args:  ¶¨Ê±Æ÷²ÎÊý

-* ·µ »Ø Öµ£º VOID

-* ÆäËü˵Ã÷£º VOID

-**************************************************************************/

-static VOID Excep_WatchDogCallBack(SINT32 args)

-{

-    zDrvWdt_FeedDog(TRACE_WATCHDOG_FEED_VALUE);

-}

-#endif

-/**************************************************************************

-* È«¾Öº¯ÊýʵÏÖ

-**************************************************************************/

-

-/**************************************************************************

-* º¯ÊýÃû³Æ£º Excep_Init

-* ¹¦ÄÜÃèÊö£º Ò쳣ģ¿é³õʼ»¯

-* ²ÎÊý˵Ã÷£º ÎÞ

-* ·µ »Ø Öµ£º ³É¹¦·µ»ØZOSS_SUCCESS£¬Ê§°Ü·µ»ØZOSS_ERROR

-* ÆäËü˵Ã÷£º

-**************************************************************************/

-UINT32 EXCEP_Init(VOID)

-{

-#if defined(_USE_WDT_RST)

-    UINT32          nRet    = ZOSS_ERROR;

-    UINT32          flag    = 0;

-

-    flag = zOss_GetExceptResetFlag();

-    if (flag == EXCEPT_RESET_ENABLE)

-    {

-        gTrace_WatchDogTimerID = zOss_CreateTimer("WatchDogTimer",

-                                                  (ZOSS_TIMER_FUN)Excep_WatchDogCallBack,

-                                                  (SINT32)0,

-                                                  TRUE);

-        zOss_AssertEx(NULL != gTrace_WatchDogTimerID, ZOSS_ERROR);

-

-        nRet = zOss_StartTimer(gTrace_WatchDogTimerID,

-                               TRACE_WATCHDOG_FEED_PERIOD,

-                               Excep_WatchDogCallBack,

-                               0);

-        zOss_AssertEx(ZOSS_ERROR != nRet, ZOSS_ERROR);

-    }

-    else

-    {

-        zDrvWdt_Stop();

-    }

-#endif

-

-    return ZOSS_SUCCESS;

-}

-

-/**************************************************************************

-* º¯ÊýÃû³Æ£º EXCEP_StartDaemonTask

-* ¹¦ÄÜÃèÊö£º Æô¶¯ÈÎÎñËÀÑ­»·¼à²â

-* ²ÎÊý˵Ã÷£º ÎÞ

-* ·µ »Ø Öµ£º ³É¹¦·µ»ØZOSS_SUCCESS£¬Ê§°Ü·µ»ØZOSS_ERROR

-* ÆäËü˵Ã÷£º

-**************************************************************************/

-UINT32 EXCEP_StartDaemonTask(VOID)

-{

-    T_OSS_PARAM     *osscfg = NULL;

-

-    if(THR1_PRI < 1)

-    {

-        return ZOSS_ERROR;

-    }

-

-    osscfg = zOss_GetOssCfg();

-    gExcep_Param = &(osscfg->ExcepCfg);

-    gExcep_DaemonTask = zOss_CreateTask(EXCEP_DAEMONTASKNAME, Excep_DaemonTask, 4 * 1024, THR1_PRI - 1, 2048, 0);

-    if (ZOSS_INVALID_TASK_ID == gExcep_DaemonTask)

-    {

-        return ZOSS_ERROR;

-    }

-    if (ZOSS_ERROR == zOss_TaskSend(EV_POWERON, NULL, 0, gExcep_DaemonTask))

-    {

-        return ZOSS_ERROR;

-    }

-

-    return ZOSS_SUCCESS;

-}

-

-/**************************************************************************

-* º¯ÊýÃû³Æ£º Excep_DaemonTask

-* ¹¦ÄÜÃèÊö£º Ò쳣ģ¿éÊØ»¤ÈÎÎñ

-* ²ÎÊý˵Ã÷£º state:ÈÎÎñ״̬

-      msg_id:ÏûÏ¢ID

-      buf:ÏûÏ¢ÌåÖ¸Õë

-      msg_len:ÏûÏ¢³¤¶È

-      private_data:˽ÓÐÊý¾Ý

-* ·µ »Ø Öµ£º ÎÞ

-* ÆäËü˵Ã÷£º

-**************************************************************************/

-VOID Excep_DaemonTask(UINT8 state, UINT32 msg_id, UINT8 *buf, UINT16 msg_len, UINT8 *private_data)

-{

-    ZOSS_TIMER_ID   tid         = ZOSS_INVALID_TIMER_ID;

-    ZOSS_TASK_ID    *task_ids   = (ZOSS_TASK_ID *)private_data;

-    

-    switch (state)

-    {

-    case ZOSS_STATUS_INIT:

-        {

-            switch (msg_id)

-            {

-            case EV_INIT:

-                {

-                    break;

-                }

-            case EV_POWERON:

-                {

-                    tid = zOss_SetRelativeTimer(gExcep_Param->DeamonStartTime, EV_ZOSS_EXCEP_WDT_SET, 0);

-                    if (ZOSS_INVALID_TIMER_ID == tid)

-                    {

-                        zOss_ASSERT(0);

-                    }

-                    if (ZOSS_ERROR == zOss_SetState(ZOSS_STATUS_WORK))

-                    {

-                        zOss_ASSERT(0);

-                    }

-                    break;

-                }

-            default:

-                {

-                    break;

-                }

-            }

-            break;

-        }

-    case ZOSS_STATUS_WORK:

-        {

-            switch (msg_id)

-            {

-            case EV_ZOSS_EXCEP_WDT_SET:

-                {

-                    /* ÉèÖÃËÀÑ­»·¼ì²â¶¨Ê±Æ÷ */

-                    tid = zOss_SetLoopTimer(gExcep_Param->DeadLoopCheckTime, EV_ZOSS_EXCEP_DEADLOOPCHECK, 0);

-                    if (ZOSS_INVALID_TIMER_ID == tid)

-                    {

-                        zOss_ASSERT(0);

-                    }

-#ifndef _USE_PSM

-#if defined (_OS_WIN) || defined (_OS_OSE)

-                    if (ZOSS_INVALID_THREAD_ID == zOss_CreateThread(EXCEP_IDLETHREADNAME, Excep_IdleThread, 0, 1024, 31, 1, 1))

-                    {

-                        zOss_ASSERT(0);

-                    }

-#endif

-#endif

-                    break;

-                }

-            case EV_ZOSS_EXCEP_DEADLOOPCHECK:

-                {

-                    UINT32 num = 0;

-                    UINT32 i = 0;

-                    T_ZOss_TCB *tinfo = NULL;

-                    

-                    num = Sche_DeadLoop(task_ids);

-                    while (ZOSS_INVALID_TASK_ID != task_ids[i] && i < num)

-                    {

-                        /* OSS_DeleteTask(task_ids[i]); */

-                        if (NULL == tinfo)

-                        {

-                            tinfo = (T_ZOss_TCB *)zOss_Malloc(sizeof(T_ZOss_TCB));

-                            if (NULL == tinfo)

-                            {

-                                zOss_AssertExN(NULL != tinfo);

-                            }

-                        }

-                        if (ZOSS_ERROR == zOss_GetTaskInfo(task_ids[i], tinfo))

-                        {

-                            tinfo->task_name[0] = '\0';

-                        }

-                        zOss_Printf(SUBMDL_EXCEP, PRINT_LEVEL_ABNORMAL, "dead task found:%p,name:%s\r\n", task_ids[i], tinfo->task_name);

-                        

-                        i++;

-                    }

-                    if (NULL != tinfo)

-                    {

-                        zOss_Free(tinfo);

-                    }

-                    break;

-                }

-            default:

-                {

-                    break;

-                }

-            }   /* end switch(msg_id) */

-            break;

-        }

-    default:

-        {  

-            break;

-        }

-    }   /* end switch(state) */

-}

-

-/**************************************************************************

-* º¯ÊýÃû³Æ£º zOss_GetCPU

-* ¹¦ÄÜÃèÊö£º µÃµ½CPUµÄʹÓÃÂÊ

-* ²ÎÊý˵Ã÷£º ÎÞ

-* ·µ »Ø Öµ£º CPUµÄʹÓÃÂÊ(0-100)

-* ÆäËü˵Ã÷£º

-**************************************************************************/

-UINT8 zOss_GetCPU(VOID)

-{

-#ifdef _OS_OSE

-    UINT8                   rate = 0;

-    ZOSS_THREAD_ID          t_id = ZOSS_INVALID_THREAD_ID;

-    T_ZOsa_ThreadUserArea   *pUa = NULL;

-

-    t_id    = zOss_GetThreadIDByName(EXCEP_IDLETHREADNAME);

-    pUa     = Osa_GetThreadUserArea(t_id, FALSE);

-    rate    = (UINT8)pUa->cpupercent;

-    if (rate > 100)

-    {

-        rate = 0;

-    }

-

-    return (100 - rate);

-#elif defined (_OS_TOS)

-    return (UINT8)(100 - Osa_GetProcessCPU(zOss_GetThreadIDByName(EXCEP_IDLETHREADNAME)));

-#else

-    return 0;

-#endif

-}

-

-#ifdef _USE_DEBUG_INFO

-/**************************************************************************

-* º¯ÊýÃû³Æ£º zOss_DebugInfoRecord

-* ¹¦ÄÜÃèÊö£º Modem²àµÄϵͳά²âÐÅÏ¢¼Ç¼½Ó¿Ú

-* ²ÎÊý˵Ã÷£º id: Ä£¿éID

-*            pFormat: ´ý´òÓ¡µÄ×Ö·û´®

-* ·µ »Ø Öµ£º ³É¹¦: дÈ볤¶È; ʧ°Ü: ZOSS_ERROR

-* ÆäËü˵Ã÷£º

-**************************************************************************/

-UINT32 zOss_DebugInfoRecord(UINT32 id, const VOID *pFormat, ...)

-{

-#ifdef _OS_WIN

-    return ZOSS_ERROR;

-#else

-    va_list args;

-	int r;

-

-	va_start(args, pFormat);

-	r = sc_debug_info_vrecord(id, pFormat, args);

-	va_end(args);

-

-    return r;

-#endif

-}

-#else

-UINT32 zOss_DebugInfoRecord(UINT32 id, const VOID *pFormat, ...)

-{

-    return ZOSS_SUCCESS;

-}

-#endif

-

-#ifdef __cplusplus

-}

-#endif

-

-

diff --git a/Uboot/pub/include/infra/pub_debug_info.h b/Uboot/pub/include/infra/pub_debug_info.h
deleted file mode 100755
index 10357aa..0000000
--- a/Uboot/pub/include/infra/pub_debug_info.h
+++ /dev/null
@@ -1,67 +0,0 @@
-#ifndef _PUB_DEBUG_INFO_H_
-#define _PUB_DEBUG_INFO_H_
-
-#include <stdarg.h>
-
-#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_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_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_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, ...);
-#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; }
-#endif
-
-#endif
\ No newline at end of file
diff --git a/Uboot/pub/project/zx297520v3/include/drv/NvParam_drv.h b/Uboot/pub/project/zx297520v3/include/drv/NvParam_drv.h
deleted file mode 100755
index 66c6f6d..0000000
--- a/Uboot/pub/project/zx297520v3/include/drv/NvParam_drv.h
+++ /dev/null
@@ -1,223 +0,0 @@
-/***********************************************************************

-* Copyright (C) 2016, ZTE Corporation.

-*

-* File Name:  nvparam_drv.h

-* File Mark:

-* Description:  

-* Others:

-* Version:   v1.0

-* Author:   wangxia

-* Date:         2016-03-12

-*

-* History 1:

-*     Date:

-*     Version:

-*     Author:

-*     Modification:

-* History 2:

-**********************************************************************/

-#ifndef NVPARAM_DRV_H

-#define NVPARAM_DRV_H

-

-/**************************************************************************

- *                                  Include files                         *

- **************************************************************************/

-#include "RWNvConfig.h"

-#include "NvParam_tsc.h"

-/**************************************************************************

- *                                  Macro                                 *

- **************************************************************************/

-#define	DRV_NV_ADDR					OS_FLASH_DRV_RW_NONFAC_BASE_ADDR

-#define	DRV_NV_SIZE					OS_FLASH_DRV_RW_NONFAC_SIZE	/*16K*/

-

-/*=====================================================================================================================

-|----------------|----------------|---------------|--------------|----------------|-----------------|-----------------|

-|  public(256B)  |    system(3K)  |  platfor(3K)  | highspeed(4K)| peripheral(3K) | 	audio(1K) 	| reserved(1.75K) |

-|----------------|----------------|---------------|--------------|----------------|-----------------|-----------------|

-=======================================================================================================================*/

-

-#define	DRV_PUB_NV_ADDR				DRV_NV_ADDR

-#define	DRV_PUB_NV_SIZE				(256)

-#define	DRV_SYS_NV_ADDR				(DRV_PUB_NV_ADDR + DRV_PUB_NV_SIZE)

-#define	DRV_SYS_NV_SIZE				(3 * 1024)

-#define	DRV_PLAT_NV_ADDR			(DRV_SYS_NV_ADDR + DRV_SYS_NV_SIZE)

-#define	DRV_PLAT_NV_SIZE			(3 * 1024)

-#define	DRV_HS_PERI_NV_ADDR			(DRV_PLAT_NV_ADDR + DRV_PLAT_NV_SIZE)

-#define	DRV_HS_PERI_NV_SIZE			(4 * 1024)

-#define	DRV_PERI_NV_ADDR			(DRV_HS_PERI_NV_ADDR + DRV_HS_PERI_NV_SIZE)

-#define	DRV_PERI_NV_SIZE			(3 * 1024)

-#define	DRV_AUDIO_NV_ADDR			(DRV_PERI_NV_ADDR + DRV_PERI_NV_SIZE)

-#define	DRV_AUDIO_NV_SIZE			(1 * 1024)

-#define	DRV_RSVD_NV_ADDR			(DRV_AUDIO_NV_ADDR + DRV_AUDIO_NV_SIZE)

-#define	DRV_RSVD_NV_SIZE			(1 * 1024 + 768)

-

-#define	DRV_TOTAL_NV_SIZE			(DRV_PUB_NV_SIZE+DRV_SYS_NV_SIZE+DRV_PLAT_NV_SIZE+DRV_HS_PERI_NV_SIZE+DRV_PERI_NV_SIZE+DRV_AUDIO_NV_SIZE+DRV_RSVD_NV_SIZE)

-

-/* user interface */

-#define DRV_PUB_NV_ITEM_ADDR(x) 	(DRV_PUB_NV_ADDR + (UINT32)(&(((T_ZDrvNv_PubData*)(0x0))->x)))

-#define DRV_PUB_NV_ITEM_SIZE(x) 	(sizeof(((T_ZDrvNv_PubData*)(0x0))->x))

-

-#define DRV_SYS_NV_ITEM_ADDR(x) 	(DRV_SYS_NV_ADDR + (UINT32)(&(((T_ZDrvNv_SysData*)(0x0))->x)))

-#define DRV_SYS_NV_ITEM_SIZE(x) 	(sizeof(((T_ZDrvNv_SysData*)(0x0))->x))

-

-#define DRV_PLAT_NV_ITEM_ADDR(x) 	(DRV_PLAT_NV_ADDR + (UINT32)(&(((T_ZDrvNv_PlatData*)(0x0))->x)))

-#define DRV_PLAT_NV_ITEM_SIZE(x) 	(sizeof(((T_ZDrvNv_PlatData*)(0x0))->x))

-

-#define DRV_HS_PERI_NV_ITEM_ADDR(x) (DRV_HS_PERI_NV_ADDR + (UINT32)(&(((T_ZDrvNv_HSPeriData*)(0x0))->x)))

-#define DDRV_HS_PER_NV_ITEM_SIZE(x) (sizeof(((T_ZDrvNv_HSPeriData*)(0x0))->x))

-

-#define DRV_PER_NV_ITEM_ADDR(x) 	(DRV_PERI_NV_ADDR + (UINT32)(&(((T_ZDrvNv_PeriData*)(0x0))->x)))

-#define DRV_PER_NV_ITEM_SIZE(x) 	(sizeof(((T_ZDrvNv_PeriData*)(0x0))->x))

-

-#define DRV_AUDIO_NV_ITEM_ADDR(x) 	(DRV_AUDIO_NV_ADDR + (UINT32)(&(((T_ZDrvNv_AudioData*)(0x0))->x)))

-#define DRV_AUDIO_NV_ITEM_SIZE(x) 	(sizeof(((T_ZDrvNv_AudioData*)(0x0))->x))

-

-#define OS_FLASH_VOICE_DRV_RW_NONFAC_BASE_ADDR         (OS_FLASH_DRV_RW_NONFAC_BASE_ADDR + 15360)

-#define OS_FLASH_VOICE_DRV_NONFAC_SIZE     1024

-

-#if DRV_TOTAL_NV_SIZE > (OS_FLASH_DRV_RW_NONFAC_SIZE)

-#error "error drv nv config!!!"

-#endif

-

-/****************************************************************************

-* 	                         Types

-****************************************************************************/

-

-

-/******************************************************

-* 	         Drv NV Config

-******************************************************/

-/***********************************

-1. public nv_data

-************************************/

-typedef struct _T_ZDrvNv_PubData

-{

-	/* 0x00 */ 	CHAR  	chipName[16];

-	/* 0x10 */ 	CHAR	prjName[16];

-	/* 0x20 */ 	CHAR 	externalVer[16];

-	/* 0x30 */ 	CHAR 	internalVer[16];

-	/* 0x40 */ 	CHAR 	releaseTime[16];

-	/* 0x50 */ 	UINT8 	productType;

-	/* 0x51 */ 	UINT8 	reserved[DRV_PUB_NV_SIZE - 0x51];

-} __attribute__ ((packed)) T_ZDrvNv_PubData;

-

-/***********************************

-2. system group nv_data

-************************************/

-typedef struct _T_ZDrvNv_SysData

-{

-	/* 0x000 */	T_SYS_NV_TSC_CONFIG tsc_config;

-				UINT8 reserved0[12];

-	/* 0x70 */	UINT32 buck1OnoffFlag;

-	/* 0x74  */	UINT32 wdtSwitch;

-	/* 0x78  */	UINT32 wdtPriority;

-	/* 0x7C */	UINT8 uiccmodeSwitch;

-	/* 0x7D */	UINT8 uiccPreSwitch; 

-	/* 0x7E */	UINT8 uicc1modeSwitch;

-	/* 0x7F */	UINT8 uicc1PreSwitch; 

-	/* 0x80 */	UINT8 ishpnotsupported;

-              UINT8 reserved[DRV_SYS_NV_SIZE - 129];

-} __attribute__ ((packed)) T_ZDrvNv_SysData;

-

-/***********************************

-3. platform group nv_data

-************************************/

-typedef struct _T_ZDrvNv_PlatData

-{

-	UINT8 reserved[DRV_PLAT_NV_SIZE];

-} __attribute__ ((packed)) T_ZDrvNv_PlatData;

-

-/***********************************

-4. hign-speed peripheral group nv_data

-************************************/

-typedef struct _T_ZDrvNv_HSPeriData

-{

-	UINT8 reserved[DRV_HS_PERI_NV_SIZE];

-} __attribute__ ((packed)) T_ZDrvNv_HSPeriData;

-

-/***********************************

-5. common peripheral group nv_data

-************************************/

-typedef struct _T_ZDrvNv_PeriData

-{

-    UINT8 bat_det;

-    UINT8 reserved[DRV_PERI_NV_SIZE-1];

-} __attribute__ ((packed)) T_ZDrvNv_PeriData;

-

-/***********************************

-6. audio group nv_data

-************************************/

-typedef struct _T_ZDrvNv_AudioData

-{

-    UINT8 reserved[DRV_AUDIO_NV_SIZE];

-} __attribute__ ((packed)) T_ZDrvNv_AudioData;

-

-/***********************************

-7. all driver_used nv_data

-************************************/

-typedef struct _T_ZDrv_NvData

-{

-	/* 0x0000 */	T_ZDrvNv_PubData	pubData;

-	/* 0x0100 */	T_ZDrvNv_SysData	sysData;

-	/* 0x0D00 */	T_ZDrvNv_PlatData	platData;

-	/* 0x1900 */	T_ZDrvNv_HSPeriData	HSPeriData;

-	/* 0x2900 */	T_ZDrvNv_PeriData	periData;

-	/* 0x3500 */	T_ZDrvNv_AudioData	audioData;

-	/* 0x3900 */	UINT8				reserved[DRV_RSVD_NV_SIZE];

-} T_ZDrv_NvData;

-

-

-/******************************************************

-* 	check struct size

-******************************************************/

-static inline CHAR zDrvNv_CheckTypeSize(void)

-{ \

-	CHAR __dummy1[(sizeof(T_ZDrv_NvData)==DRV_NV_SIZE)?1:-1]={0}; \

-	CHAR __dummy2[(sizeof(T_ZDrvNv_PubData)==DRV_PUB_NV_SIZE)?1:-1]={0}; \

-	CHAR __dummy3[(sizeof(T_ZDrvNv_SysData)==DRV_SYS_NV_SIZE)?1:-1]={0}; \

-	CHAR __dummy4[(sizeof(T_ZDrvNv_PlatData)==DRV_PLAT_NV_SIZE)?1:-1]={0}; \

-	CHAR __dummy5[(sizeof(T_ZDrvNv_HSPeriData)==DRV_HS_PERI_NV_SIZE)?1:-1]={0}; \

-	CHAR __dummy6[(sizeof(T_ZDrvNv_PeriData)==DRV_PERI_NV_SIZE)?1:-1]={0}; \

-	CHAR __dummy7[(sizeof(T_ZDrvNv_AudioData)==DRV_AUDIO_NV_SIZE)?1:-1]={0}; \

-	return (__dummy1[0]+__dummy2[0]+__dummy3[0]+__dummy4[0]+__dummy5[0]+__dummy6[0]+__dummy7[0]); \

-}

-

-/******************************************************

-* 	old struct

-******************************************************/

-#if 0

-typedef struct _T_Sys_Drv_Nv_Data

-{

-	T_SYS_NV_TSC_CONFIG tsc_config;

-	UINT8 reserved[6];

-	UINT32 wdtSwitch;

-}T_Sys_Drv_Nv_Data;

-#endif

-typedef struct _T_Drv_Nv_Data

-{

-	UINT32 VpData[1024];//add by lvwenhua for voice 2013.12.6

-}T_Drv_Nv_Data;

-

-#define DRV_NV_ITEM_ADDRESS(x) (DRV_AUDIO_NV_ADDR + (UINT32)(&(((T_Drv_Nv_Data*)(0x0))->x)))

-//flag use 32byte

-typedef struct _T_Audio_NvFlag

-{

-    UINT8           isVpConfigInitOn;

-    UINT8           isVpParamInNv;

-    UINT8           isUseSlicCodec;

-    UINT8           isUseVoiceProc;//4 UINT8           isUseNXP;

-    UINT8           isUseCodecDsp;	

-	UINT8			isUseNvWrite;

-	UINT8			isCloseVpBufferBak;

-	UINT8			isUseTdm;//8

-	UINT8			isUseRxDtmfDet;

-	UINT8			isUseTxDtmfDet;     

-    UINT8			isUseRxMixData;

-	UINT8			isUseTxMixData;//12

-	UINT8			isUseEcall;

-    UINT8           reserved[19];//32-13

-	

-}  T_Audio_NvFlag;

-

-#endif

-

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
deleted file mode 100755
index 6a1626d..0000000
--- a/Uboot/pub/project/zx297520v3/include/infra/ram_base_config_7520v3.h
+++ /dev/null
@@ -1,347 +0,0 @@
-/*******************************************************************************

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

-* 

-* ÎļþÃû³Æ:     ram_config_7520v3.h

-* Îļþ±êʶ:     ram_config_7520v3.h

-* ÄÚÈÝÕªÒª:     zx297520v3оƬƽ̨´æ´¢µØÖ·ÅäÖÃÍ·Îļþ

-* ʹÓ÷½·¨:     #include "ram_config.h"

-* 

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

-* ------------------------------------------------------------------------------

-* 2015/06/08      V1.0        Create          ÁõÑÇÄÏ          ´´½¨

-* 

-*******************************************************************************/

-

-#ifndef _RAM_BASE_CONFIG_7520V3

-#define _RAM_BASE_CONFIG_7520V3

-

-/*******************************************************************************

-*                                   Í·Îļþ                                     *

-*******************************************************************************/

-

-/*******************************************************************************

-*                                   ºê¶¨Òå                                     *

-*******************************************************************************/

-

-/* IRAM0»ùµØÖ· */

-#ifdef DDR_BASE_ADDR_LINUX_VA

-#define IRAM_BASE_ADDR                  ((unsigned long)(ZX_IRAM0_BASE))

-#else

-#define IRAM_BASE_ADDR                  (0x82000000UL>>CPU_SHIFT)

-#endif

-#define IRAM_BASE_LEN                   (0x00010000UL>>CPU_SHIFT)

-

-/* 1K, Òì³£ÏòÁ¿±í: 0x82000000/0x41000000 */

-#define IRAM_BASE_ADDR_VECTOR           (IRAM_BASE_ADDR) 

-#define IRAM_BASE_LEN_VECTOR            ((1 * 1024UL)>>CPU_SHIFT)

-#define OTP_SECURE_PUK_BASE              IRAM_BASE_ADDR_VECTOR + 0x4

-

-/* 12K£¬Çý¶¯ºË¼äͨѶ */

-#define IRAM_BASE_ADDR_DRV              (IRAM_BASE_ADDR_VECTOR + IRAM_BASE_LEN_VECTOR)

-#define IRAM_BASE_LEN_DRV               ((12 * 1024UL)>>CPU_SHIFT)

-

-/* 1K£¬Ê¡µçÃüÁî½»»¥ */

-#define IRAM_BASE_ADDR_PSM              (IRAM_BASE_ADDR_DRV + IRAM_BASE_LEN_DRV)

-#define IRAM_BASE_LEN_PSM               ((1 * 1024UL)>>CPU_SHIFT)

-

-/* 4K£¬PSÓëPHYÐÅÏ¢½»»¥£¬¹«¹²ÒµÎñ  */

-#define IRAM_BASE_ADDR_PUB              (IRAM_BASE_ADDR_PSM + IRAM_BASE_LEN_PSM)

-#define IRAM_BASE_LEN_PUB               ((4 * 1024UL)>>CPU_SHIFT)

-

-/* 512B£¬PSÓëPHYÐÅÏ¢½»»¥£¬É䯵¹«¹²ÒµÎñ  */

-#define IRAM_BASE_ADDR_PUB_RF           (IRAM_BASE_ADDR_PUB)

-#define IRAM_BASE_LEN_PUB_RF            (512UL>>CPU_SHIFT)

-

-/* 32B£¬¸¨Ä£Ê½AFC»º´æÊý¾Ý¿Õ¼ä    */

-#define IRAM_BASE_ADDR_SLAVE_AFC        (IRAM_BASE_ADDR_PUB_RF + IRAM_BASE_LEN_PUB_RF)

-#define IRAM_BASE_LEN_SLAVE_AFC         (32UL>>CPU_SHIFT)

-

-/* 1K£¬Î¿ØÊý¾Ý´æ·Å  */

-#define IRAM_BASE_ADDR_TPC              (IRAM_BASE_ADDR_PUB + IRAM_BASE_LEN_PUB)

-#define IRAM_BASE_LEN_TPC               ((1 * 1024UL)>>CPU_SHIFT)

-

-/* 2K£¬ÖжÏÏ̹߳켣´æ·Å */

-#define IRAM_BASE_ADDR_OS_STATISTIC     (IRAM_BASE_ADDR_TPC + IRAM_BASE_LEN_TPC)

-#define IRAM_BASE_LEN_OS_STATISTIC      ((2 * 1024UL)>>CPU_SHIFT)

-

-/* 1K,ϵͳ¸ú×ټǼ */

-#define IRAM_BASE_ADDR_SYS_TRACE        (IRAM_BASE_ADDR_OS_STATISTIC + IRAM_BASE_LEN_OS_STATISTIC)

-#define IRAM_BASE_LEN_SYS_TRACE         ((1 * 1024UL)>>CPU_SHIFT)

-

-/* IRAM ICPµØÖ·     */

-#define ICP_CMD_BASE_ADDR               (IRAM_BASE_ADDR)

-#define ICP_DRV_BASE_ADDR               (IRAM_BASE_ADDR_DRV)

-#define DUAL_STANDBY_INTERF_GSM_USE_INFO_BASE_ADDR  (IRAM_BASE_ADDR_GSM)

-

-/* ¸÷ºËIRAM¹ì¼£µØÖ· */

-#define IRAM_BASE_ADDR_OS_STATISTIC_PSCPU   (IRAM_BASE_ADDR_OS_STATISTIC)

-#define IRAM_BASE_LEN_OS_STATISTIC_PSCPU    (0x200UL>>CPU_SHIFT)

-#define IRAM_BASE_ADDR_OS_STATISTIC_PHYCPU  (IRAM_BASE_ADDR_OS_STATISTIC_PSCPU + IRAM_BASE_LEN_OS_STATISTIC_PSCPU)

-#define IRAM_BASE_LEN_OS_STATISTIC_PHYCPU   (0x200UL>>CPU_SHIFT)

-#define IRAM_BASE_ADDR_OS_STATISTIC_APCPU   (IRAM_BASE_ADDR_OS_STATISTIC_PHYCPU + IRAM_BASE_LEN_OS_STATISTIC_PHYCPU)

-#define IRAM_BASE_LEN_OS_STATISTIC_APCPU    (0x400UL>>CPU_SHIFT)

-

-/* ¸÷ºËIRAM¸ú×ÙµØÖ· */

-#define IRAM_BASE_ADDR_SYS_TRACE_RMCPU      (IRAM_BASE_ADDR_SYS_TRACE)

-#define IRAM_BASE_ADDR_SYS_TRACE_APCPU      (IRAM_BASE_ADDR_SYS_TRACE + (0x10>>CPU_SHIFT))

-#define IRAM_BASE_ADDR_SYS_TRACE_PSCPU      (IRAM_BASE_ADDR_SYS_TRACE + (0x20>>CPU_SHIFT))

-#define IRAM_BASE_ADDR_SYS_TRACE_PHYCPU     (IRAM_BASE_ADDR_SYS_TRACE + (0x30>>CPU_SHIFT))

-

-/* phy logÓÅ»¯·½°¸¸´Óà IRAM_BASE_ADDR_SYS_TRACE ºó512×Ö½Ú¿Õ¼ä */

-#define IRAM_BASE_ADDR_ZCAT_PHY_LOG         (IRAM_BASE_ADDR_SYS_TRACE + (0x200>>CPU_SHIFT))

-

-/* phy log¶ªÊ§¸ú×Ù·½°¸¸´Óà IRAM_BASE_ADDR_SYS_TRACE ºó64×Ö½Ú¿Õ¼ä */

-#define IRAM_BASE_PHY_LOG_DROP_TRACE    	(IRAM_BASE_ADDR_ZCAT_PHY_LOG + (0x200>>CPU_SHIFT) - (0x40>>CPU_SHIFT))

-

-/* ¼Ç¼ramdumpģʽ: 4×Ö½Ú¿Õ¼ä*/

-#define IRAM_BASE_ADDR_RAMDUMP_MODE         (IRAM_BASE_PHY_LOG_DROP_TRACE - (0x04>>CPU_SHIFT))

-

-/* ¼Ç¼SHM bufferµØÖ·: 16×Ö½Ú¿Õ¼ä*/

-#define IRAM_BASE_ADDR_SHM_REMOTE_REGION    (IRAM_BASE_ADDR_RAMDUMP_MODE - (0x10>>CPU_SHIFT))

-

-/* ¼Ç¼zcatģʽ: 4×Ö½Ú¿Õ¼ä*/

-#define IRAM_BASE_ADDR_ZCAT_MODE            (IRAM_BASE_ADDR_SHM_REMOTE_REGION - (0x04>>CPU_SHIFT))

-

-/* ¸´Óù켣µÄǰ4¸ö×ֽڼǼboot´«µÝµÄDDR sizeÐÅÏ¢ */

-#define IRAM_BASE_ADDR_BOOT_DDR             (IRAM_BASE_ADDR_DRV - (0x04>>CPU_SHIFT))

-

-/* IRAM1»ùµØÖ· */

-#ifdef  DDR_BASE_ADDR_LINUX_VA

-#define IRAM1_BASE_ADDR                  ((unsigned long)(ZX_IRAM1_BASE))

-#else

-#define IRAM1_BASE_ADDR                  (0x00100000>>CPU_SHIFT)

-#endif

-#define IRAM1_BASE_LEN                   (0x00003000>>CPU_SHIFT)

-

-

-#define DDR_BASE_ADDR                   (0x20000000UL>>CPU_SHIFT)

-

-/* 3M£¬ÎïÀí²ã°æ±¾£¬ÓÉPS¼ÓÔØ  */

-/* 7520µÄZSPÅäÖÃΪ·ÇCacheÇø£¬Ö»ÄÜÅäÖÃ4¸ö¶Î£¬ÇÒÿ¸ö¶ÎµØÖ·»¹ÓÐÌØ¶¨ÒªÇ󣬸õØÖ·±ä¶¯ÐèÓëÎïÀí²ãÈ·ÈÏ */

-#ifdef  DDR_BASE_ADDR_LINUX_VA

-#define DDR_BASE_ADDR_PHY               ((unsigned long)(ZX_DDR_PHYCODE_BASE))

-#else

-#define DDR_BASE_ADDR_PHY               (DDR_BASE_ADDR)

-#endif

-

-#ifdef _USE_LTE_ONLY

-#define DDR_BASE_LEN_PHY                (0x00200000UL>>CPU_SHIFT)

-#else

-#define DDR_BASE_LEN_PHY                (0x00300000UL>>CPU_SHIFT)

-#endif

-#define DDR_BASE_OFF_PHY                (0)

-

-/* 1.5M£¬ÎïÀí²ãDATA/HARQ/CRC */

-#define DDR_BASE_ADDR_PHY_DATA          (DDR_BASE_ADDR_PHY + DDR_BASE_LEN_PHY)

-#define DDR_BASE_LEN_PHY_DATA           (0x00180000UL>>CPU_SHIFT)

-#define DDR_BASE_OFF_PHY_DATA           (DDR_BASE_OFF_PHY + DDR_BASE_LEN_PHY)

-

-/* 1.0M£¬Ð­ÒéÕ»ÓëÎïÀí²ã½»»¥ */ 

-#define DDR_BASE_ADDR_LTE_DATA          (DDR_BASE_ADDR_PHY + DDR_BASE_LEN_PHY) //DDR_BASE_LEN_PHY_NV

-#define DDR_BASE_LEN_LTE_DATA           (0x00100000UL>>CPU_SHIFT)

-#define DDR_BASE_OFF_LTE_DATA           (DDR_BASE_OFF_PHY + DDR_BASE_LEN_PHY)

-

-/* 0.25M£¬Ö§³Åµ¼³öRamdump       */

-#define DDR_BASE_ADDR_RAMDUMP           (DDR_BASE_ADDR_LTE_DATA + DDR_BASE_LEN_LTE_DATA)

-#define DDR_BASE_LEN_RAMDUMP            (0x00040000UL>>CPU_SHIFT)

-#define DDR_BASE_OFF_RAMDUMP            (DDR_BASE_OFF_LTE_DATA + DDR_BASE_LEN_LTE_DATA)

-

-#ifdef _USE_VEHICLE_DC /* ³µÔØË«ºËLinux */

-/* 37.75M£¬AP¹²ºË°æ±¾(´Ë´óСÊǰ´ÕÕº¬CAPºËµÄ64MÄÚ´æÅäÖö¨Ò壬¸Ãºê±ð´¦²»»á±»Ê¹ÓÃ) */

-#define DDR_BASE_ADDR_AP                (DDR_BASE_ADDR_RAMDUMP + DDR_BASE_LEN_RAMDUMP)

-#define DDR_BASE_LEN_AP                 (0x025C0000UL>>CPU_SHIFT)

-#define DDR_BASE_OFF_AP                 (DDR_BASE_OFF_RAMDUMP + DDR_BASE_LEN_RAMDUMP)

-

-/* 2M, share memory between ap and cap */

-#define DDR_BASE_ADDR_CAP_BUF           (DDR_BASE_ADDR_AP + DDR_BASE_LEN_AP)

-#define DDR_BASE_LEN_CAP_BUF            (0x00200000UL>>CPU_SHIFT)

-#define DDR_BASE_OFF_CAP_BUF            (DDR_BASE_OFF_AP + DDR_BASE_LEN_AP)

-

-/* 84M/212M, cap°æ±¾ */

-#define DDR_BASE_ADDR_CAP               (DDR_BASE_ADDR_CAP_BUF + DDR_BASE_LEN_CAP_BUF)

-#define DDR_BASE_LEN_CAP                (0x05400000UL>>CPU_SHIFT)

-#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))

-#else

-/* 42.75M£¬AP¹²ºË°æ±¾(´Ë´óСÊǰ´ÕÕº¬CAPºËµÄ64MÄÚ´æÅäÖö¨Ò壬¸Ãºê±ð´¦²»»á±»Ê¹ÓÃ) */

-#define DDR_BASE_ADDR_AP                (DDR_BASE_ADDR_RAMDUMP + DDR_BASE_LEN_RAMDUMP)

-#ifdef _USE_LTE_ONLY

-#define DDR_BASE_LEN_AP                 (0x02BC0000UL>>CPU_SHIFT)

-#else

-#define DDR_BASE_LEN_AP                 (0x02AC0000UL>>CPU_SHIFT)

-#endif

-#define DDR_BASE_OFF_AP                 (DDR_BASE_OFF_RAMDUMP + DDR_BASE_LEN_RAMDUMP)

-

-/* 1M, share memory between ap and cap */

-#define DDR_BASE_ADDR_CAP_BUF           (DDR_BASE_ADDR_AP + DDR_BASE_LEN_AP)

-#ifndef DDR_BASE_LEN_CAP_BUF

-#define DDR_BASE_LEN_CAP_BUF            (0x00100000UL>>CPU_SHIFT)

-#endif

-#define DDR_BASE_OFF_CAP_BUF            (DDR_BASE_OFF_AP + DDR_BASE_LEN_AP)

-

-/* 16M, cap°æ±¾ */

-#define DDR_BASE_ADDR_CAP               (DDR_BASE_ADDR_CAP_BUF + DDR_BASE_LEN_CAP_BUF)

-#ifndef DDR_BASE_LEN_CAP

-#define DDR_BASE_LEN_CAP                (0x01000000UL>>CPU_SHIFT)

-#endif

-#define DDR_BASE_OFF_CAP                (DDR_BASE_OFF_CAP_BUF + DDR_BASE_LEN_CAP_BUF)

-#endif

-

-#define DDR_BASE_PHYCODE_ADDR_PA     	(DDR_BASE_ADDR)

-#define DDR_BASE_MODEM_ADDR_PA       	(DDR_BASE_PHYCODE_ADDR_PA + DDR_BASE_LEN_PHY)

-#define DDR_BASE_MODEM_SIZE          	(DDR_BASE_LEN_LTE_DATA + DDR_BASE_LEN_RAMDUMP)

-#define DDR_BASE_AP_ADDR_PA             (DDR_BASE_MODEM_ADDR_PA + DDR_BASE_MODEM_SIZE)

-

-#define DDR_BASE_CAPBUF_ADDR_PA         (DDR_BASE_AP_ADDR_PA + DDR_BASE_LEN_AP)

-#define DDR_BASE_CAP_ADDR_PA            (DDR_BASE_CAPBUF_ADDR_PA + DDR_BASE_LEN_CAP_BUF)

-

-

-/* 1M£¬ÎïÀí²ãNV     ¿Õ¼ä¸´Óà         */

-#define DDR_BASE_ADDR_PHY_NV            (DDR_BASE_ADDR_LTE_DATA)

-#define DDR_BASE_LEN_PHY_NV             (0x00100000UL>>CPU_SHIFT)

-

-/* 0.375M£¬Çý¶¯Ê¡µç·þÓÃPS<->PHY½»»¥¿Õ¼ä */

-#define DDR_BASE_ADDR_PSM               (DDR_BASE_ADDR_LTE_DATA)

-#define DDR_BASE_LEN_PSM                (0x00060000UL>>CPU_SHIFT)

-#define DDR_BASE_OFF_PSM                (DDR_BASE_OFF_RAMDUMP)

-

-/* 1M£¬Ð­ÒéÕ»ÓëÎïÀí²ã½»»¥  ¿Õ¼ä¸´Óà */

-#define DDR_BASE_ADDR_WCDMA_DATA        (DDR_BASE_ADDR_LTE_DATA)

-#define DDR_BASE_LEN_WCDMA_DATA         (DDR_BASE_LEN_LTE_DATA)

-

-#if 0

-/* PsBuffer»ùÖ· */

-#define PS_BUF_BASE_ADDR                (DDR_BASE_ADDR_PSBUF)

-#endif

-

-/* ICP»ùÖ·      */

-#define ICP_DATA_BASE_ADDR              (DDR_BASE_ADDR_LTE_DATA)

-

-/* WCDMA»ùÖ·    */

-#define DDR_BASE_ADDR_FOR_W             (DDR_BASE_ADDR_WCDMA_DATA)

-

-/* ¹¤¾ß´úÀí»ùÖ· */

-/* #define TOOL_AGENT_BASE_ADDR            (DDR_BASE_ADDR_TOOL_AGENT) */

-

-#if 0

-/* PPP»ùÖ·      */

-#define PLAT_PPP_BASE_ADDR              (PS_BUF_BASE_ADDR)

-#endif

-

-/**/

-#define SHARE_BUF_AP_CP_BASE_ADDR       (DDR_BASE_ADDR_AP_CP_SHAREBUF)

-

-#if defined(_USE_CAP_SYS) || defined(_USE_VEHICLE_DC)

-#define ICP_CAP_BUF_ADDR                DDR_BASE_ADDR_CAP_BUF

-#define ICP_CAP_BUF_LEN                 ((924 * 1024UL)>>CPU_SHIFT)

-#define TOOL_CAP_BUF_ADDR               (ICP_CAP_BUF_ADDR + ICP_CAP_BUF_LEN)

-#define TOOL_CAP_BUF_LEN                ((60 * 1024UL)>>CPU_SHIFT)

-#define RINGBUF_CAP_TO_AP_ADDR          (TOOL_CAP_BUF_ADDR + TOOL_CAP_BUF_LEN)

-#define RINGBUF_CAP_TO_AP_LEN           ((32  * 1024UL)>>CPU_SHIFT)

-#define ADB_CAP_BUF_ADDR                (RINGBUF_CAP_TO_AP_ADDR + RINGBUF_CAP_TO_AP_LEN)

-#define ADB_CAP_BUF_LEN                 ((4 * 1024UL)>>CPU_SHIFT)

-#define RAMDUMP_CAP_CMM_BUF_ADDR        (ADB_CAP_BUF_ADDR + ADB_CAP_BUF_LEN)

-#define RAMDUMP_CAP_CMM_BUF_LEN         ((4 * 1024UL)>>CPU_SHIFT)

-#define RINGBUF_AP_TO_CAP_ADDR          (RAMDUMP_CAP_CMM_BUF_ADDR + RAMDUMP_CAP_CMM_BUF_LEN)

-#define RINGBUF_AP_TO_CAP_LEN           ((128 * 1024UL)>>CPU_SHIFT)

-#define TOOL_ZSP_TO_CAP_LOG_ADDR        (RINGBUF_AP_TO_CAP_ADDR + RINGBUF_AP_TO_CAP_LEN)

-#define TOOL_ZSP_TO_CAP_LOG_LEN         ((384 * 1024UL)>>CPU_SHIFT)

-#define RAMDUMP_AP_TO_CAP_BUF_ADDR      (TOOL_ZSP_TO_CAP_LOG_ADDR + TOOL_ZSP_TO_CAP_LOG_LEN)

-#define RAMDUMP_AP_TO_CAP_BUF_LEN       ((128 * 1024UL)>>CPU_SHIFT)

-#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)

-

-#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)

-#define ADB_CAP_BUF_ADDR_PA             (RINGBUF_CAP_TO_AP_ADDR_PA + RINGBUF_CAP_TO_AP_LEN)

-#define RAMDUMP_CAP_CMM_BUF_ADDR_PA     (ADB_CAP_BUF_ADDR_PA + ADB_CAP_BUF_LEN)

-#define RINGBUF_AP_TO_CAP_ADDR_PA       (RAMDUMP_CAP_CMM_BUF_ADDR_PA + RAMDUMP_CAP_CMM_BUF_LEN)

-#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)

-#endif

-

-/* 7520V3оƬIRAM0ѹËõ£¬Ð­ÒéÕ»ÎïÀí²ã½»»¥¿Õ¼äÒÆ¶¯µ½DDR£¬¸´ÓÃRamdump¿Õ¼ä */

-/* 34K£¬PSÓëPHYÐÅÏ¢½»»¥£¬LTEÒµÎñ */

-/* #define IRAM_BASE_ADDR_LTE              (DDR_BASE_ADDR_RAMDUMP) */

-/* 10K£¬PSÓëPHYÐÅÏ¢½»»¥£¬LTEÒµÎñ ʹÓÃIRAM0£¬¹¦ºÄÓÅ»¯ 7K+3K, 3k for embms*/

-#define IRAM_BASE_ADDR_LTE              (IRAM_BASE_ADDR_SYS_TRACE + IRAM_BASE_LEN_SYS_TRACE)

-#define IRAM_BASE_LEN_LTE               ((10 * 1024UL)>>CPU_SHIFT)

-

-/* 24K£¬PSÓëPHYµÄICP½»»¥£¬Ê¹ÓÃIRAM*/

-#define IRAM_BASE_ADDR_PS_PHY_SHAREBUF    (IRAM_BASE_ADDR_LTE + IRAM_BASE_LEN_LTE)

-#define IRAM_BASE_LEN_PS_PHY_SHAREBUF    ((24 * 1024UL)>>CPU_SHIFT)

-

-/* 221K£¬PSÓëPHYµÄICP½»»¥£¬Ê¹ÓÃDDR, ¸´ÓÃRAMDUMP*/

-#define DDR_BASE_ADDR_PS_PHY_SHAREBUF    (DDR_BASE_ADDR_RAMDUMP)

-#define DDR_BASE_LEN_PS_PHY_SHAREBUF    ((221 * 1024UL)>>CPU_SHIFT)

-

-/* 2k£¬zsp RAMDUMP*/

-#define DDR_BASE_ADDR_PHY_RAMDUMP        (DDR_BASE_ADDR_PS_PHY_SHAREBUF + DDR_BASE_LEN_PS_PHY_SHAREBUF)

-#define DDR_BASE_LEN_PHY_RAMDUMP        ((2 * 1024UL)>>CPU_SHIFT)

-

-/* 1K£¬PSÓëPHYÐÅÏ¢½»»¥£¬TDÒµÎñ ʹÓÃDDR*/

-#define IRAM_BASE_ADDR_TD               (DDR_BASE_ADDR_PHY_RAMDUMP + DDR_BASE_LEN_PHY_RAMDUMP)

-/* #define IRAM_BASE_LEN_TD                ((25 * 1024UL)>>CPU_SHIFT) */

-#define IRAM_BASE_LEN_TD                ((1 * 1024UL)>>CPU_SHIFT)

-

-/* 12K£¬PSÓëPHYÐÅÏ¢½»»¥£¬WÒµÎñ ʹÓÃDDR*/

-#define IRAM_BASE_ADDR_WCDMA            (IRAM_BASE_ADDR_TD + IRAM_BASE_LEN_TD)

-/* #define IRAM_BASE_LEN_WCDMA             ((48 * 1024UL)>>CPU_SHIFT) */

-#define IRAM_BASE_LEN_WCDMA             ((12 * 1024UL)>>CPU_SHIFT)

-

-/* 20K£¬W UPA ¿Õ¼ä */

-#define DDR_BASE_ADDR_WUPA_DATA         (IRAM_BASE_ADDR_WCDMA + IRAM_BASE_LEN_WCDMA)

-#define DDR_BASE_LEN_WUPA_DATA          ((20 * 1024UL)>>CPU_SHIFT)

-

-/* IRAM WCDMA»ùÖ·   */

-#define IRAM_BASE_ADDR_FOR_W            (IRAM_BASE_ADDR_WCDMA)

-

-/* DPRAM»ùÖ·        */

-#define DPRAM_BASE_ADDR                 (IRAM_BASE_ADDR_TD)

-

-/* DPRAM DDR»ùÖ·    */

-#define DPRAM_MEM_BASE_ADDR             (IRAM_BASE_ADDR_TD)

-

-/* PS tcm config for ramdump */

-#define RAMDUMP_PS_ITCM_BASE_EXTER      (0x0)

-#define RAMDUMP_PS_ITCM_BASE_INTER      (0x0)

-#define RAMDUMP_PS_ITCM_SIZE            (0x0)

-#define RAMDUMP_PS_DTCM_BASE_EXTER      (0x0)

-#define RAMDUMP_PS_DTCM_BASE_INTER      (0x0)

-#define RAMDUMP_PS_DTCM_SIZE            (0x0)

-

-/* ZSP Ramdump */

-/* #ifdef _USE_ZSP_RAMDUMP */

-# define RAMDUMP_ZSP_ITCM_BASE          (0x81040000UL)

-# define RAMDUMP_ZSP_ITCM_SIZE          (0x00010000UL)

-# define RAMDUMP_ZSP_DTCM_BASE          (0x81000000UL)

-# define RAMDUMP_ZSP_DTCM_SIZE          (0x00010000UL)

-

-# define RAMDUMP_ZSP_CODE_SIZE          (0x1b0000>>CPU_SHIFT)

-# define RAMDUMP_ZSP_IDDR_BASE          (DDR_BASE_ADDR_PHY)

-# define RAMDUMP_ZSP_IDDR_SIZE          (RAMDUMP_ZSP_CODE_SIZE)

-# define RAMDUMP_ZSP_DDDR_BASE          (RAMDUMP_ZSP_IDDR_BASE + RAMDUMP_ZSP_CODE_SIZE)

-# define RAMDUMP_ZSP_DDDR_SIZE          (DDR_BASE_LEN_PHY - RAMDUMP_ZSP_CODE_SIZE)

-

-# define RAMDUMP_ZSP_ITCM_SELF_BASE     (0x0)

-# define RAMDUMP_ZSP_DTCM_SELF_BASE     (0x10000UL)

-/* #endif */

-

-/*******************************************************************************

-*                                Êý¾ÝÀàÐͶ¨Òå                                  *

-*******************************************************************************/

-

-/*******************************************************************************

-*                                È«¾Ö±äÁ¿ÉùÃ÷                                  *

-*******************************************************************************/

-

-/*******************************************************************************

-*                                È«¾Öº¯ÊýÉùÃ÷                                  *

-*******************************************************************************/

-

-#endif  // #ifndef _RAM_BASE_CONFIG_7520V3

-

diff --git a/do_package_tool/allbins/zx297520v3/prj_vehicle/allbins_dc_ref/Ref_nvrw_0x26C00.bin b/do_package_tool/allbins/zx297520v3/prj_vehicle/allbins_dc_ref/Ref_nvrw_0x26C00.bin
deleted file mode 100755
index 7536991..0000000
--- a/do_package_tool/allbins/zx297520v3/prj_vehicle/allbins_dc_ref/Ref_nvrw_0x26C00.bin
+++ /dev/null
Binary files differ
diff --git a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/apsta_demo b/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/apsta_demo
deleted file mode 100755
index 40ff8d3..0000000
--- a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/apsta_demo
+++ /dev/null
Binary files differ
diff --git a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/bsp_test b/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/bsp_test
deleted file mode 100755
index 66a1301..0000000
--- a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/bsp_test
+++ /dev/null
Binary files differ
diff --git a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/busybox.suid b/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/busybox.suid
deleted file mode 100755
index 2841987..0000000
--- a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/busybox.suid
+++ /dev/null
Binary files differ
diff --git a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/dnsmasq b/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/dnsmasq
deleted file mode 100755
index 00bb3bc..0000000
--- a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/dnsmasq
+++ /dev/null
Binary files differ
diff --git a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/ld-2.31.so b/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/ld-2.31.so
deleted file mode 100755
index fb0afec..0000000
--- a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/ld-2.31.so
+++ /dev/null
Binary files differ
diff --git a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/libSegFault.so b/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/libSegFault.so
deleted file mode 100755
index 32f2454..0000000
--- a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/libSegFault.so
+++ /dev/null
Binary files differ
diff --git a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/libanl-2.31.so b/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/libanl-2.31.so
deleted file mode 100755
index 0db1e22..0000000
--- a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/libanl-2.31.so
+++ /dev/null
Binary files differ
diff --git a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/libc-2.31.so b/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/libc-2.31.so
deleted file mode 100755
index 4e7e481..0000000
--- a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/libc-2.31.so
+++ /dev/null
Binary files differ
diff --git a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/libdebug_info.so b/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/libdebug_info.so
deleted file mode 100755
index 4c0be8f..0000000
--- a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/libdebug_info.so
+++ /dev/null
Binary files differ
diff --git a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/libdl-2.31.so b/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/libdl-2.31.so
deleted file mode 100755
index a9eaac2..0000000
--- a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/libdl-2.31.so
+++ /dev/null
Binary files differ
diff --git a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/libm-2.31.so b/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/libm-2.31.so
deleted file mode 100755
index 808736f..0000000
--- a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/libm-2.31.so
+++ /dev/null
Binary files differ
diff --git a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/libmemusage.so b/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/libmemusage.so
deleted file mode 100755
index 738fe32..0000000
--- a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/libmemusage.so
+++ /dev/null
Binary files differ
diff --git a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/libmtd.so b/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/libmtd.so
deleted file mode 100755
index 54981d2..0000000
--- a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/libmtd.so
+++ /dev/null
Binary files differ
diff --git a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/libnsl-2.31.so b/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/libnsl-2.31.so
deleted file mode 100755
index 270dbe9..0000000
--- a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/libnsl-2.31.so
+++ /dev/null
Binary files differ
diff --git a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/libnss_compat-2.31.so b/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/libnss_compat-2.31.so
deleted file mode 100755
index 5367f0d..0000000
--- a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/libnss_compat-2.31.so
+++ /dev/null
Binary files differ
diff --git a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/libnss_db-2.31.so b/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/libnss_db-2.31.so
deleted file mode 100755
index 46c95aa..0000000
--- a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/libnss_db-2.31.so
+++ /dev/null
Binary files differ
diff --git a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/libnss_dns-2.31.so b/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/libnss_dns-2.31.so
deleted file mode 100755
index 87842f0..0000000
--- a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/libnss_dns-2.31.so
+++ /dev/null
Binary files differ
diff --git a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/libnss_files-2.31.so b/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/libnss_files-2.31.so
deleted file mode 100755
index e84db15..0000000
--- a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/libnss_files-2.31.so
+++ /dev/null
Binary files differ
diff --git a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/libnss_hesiod-2.31.so b/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/libnss_hesiod-2.31.so
deleted file mode 100755
index a5e8c1e..0000000
--- a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/libnss_hesiod-2.31.so
+++ /dev/null
Binary files differ
diff --git a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/libpthread-2.31.so b/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/libpthread-2.31.so
deleted file mode 100755
index 0ebce5b..0000000
--- a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/libpthread-2.31.so
+++ /dev/null
Binary files differ
diff --git a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/libresolv-2.31.so b/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/libresolv-2.31.so
deleted file mode 100755
index cb77edf..0000000
--- a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/libresolv-2.31.so
+++ /dev/null
Binary files differ
diff --git a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/librilutils.so b/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/librilutils.so
deleted file mode 100755
index 00b54db..0000000
--- a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/librilutils.so
+++ /dev/null
Binary files differ
diff --git a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/librt-2.31.so b/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/librt-2.31.so
deleted file mode 100755
index c82763f..0000000
--- a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/librt-2.31.so
+++ /dev/null
Binary files differ
diff --git a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/libsd-daemon.so b/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/libsd-daemon.so
deleted file mode 100755
index 025c861..0000000
--- a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/libsd-daemon.so
+++ /dev/null
Binary files differ
diff --git a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/libselinux.so b/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/libselinux.so
deleted file mode 100755
index a297f2c..0000000
--- a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/libselinux.so
+++ /dev/null
Binary files differ
diff --git a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/libselinux.so.1 b/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/libselinux.so.1
deleted file mode 100755
index a297f2c..0000000
--- a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/libselinux.so.1
+++ /dev/null
Binary files differ
diff --git a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/libsqlite.so b/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/libsqlite.so
deleted file mode 100755
index 1599b41..0000000
--- a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/libsqlite.so
+++ /dev/null
Binary files differ
diff --git a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/libthread_db-1.0.so b/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/libthread_db-1.0.so
deleted file mode 100755
index 03605f4..0000000
--- a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/libthread_db-1.0.so
+++ /dev/null
Binary files differ
diff --git a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/libutil-2.31.so b/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/libutil-2.31.so
deleted file mode 100755
index 7c51e58..0000000
--- a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/libutil-2.31.so
+++ /dev/null
Binary files differ
diff --git a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/optee_example_aes b/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/optee_example_aes
deleted file mode 100755
index 0995ca9..0000000
--- a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/optee_example_aes
+++ /dev/null
Binary files differ
diff --git a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/optee_example_ecdsa b/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/optee_example_ecdsa
deleted file mode 100755
index e267f73..0000000
--- a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/optee_example_ecdsa
+++ /dev/null
Binary files differ
diff --git a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/optee_example_rsa b/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/optee_example_rsa
deleted file mode 100755
index f91bc85..0000000
--- a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/optee_example_rsa
+++ /dev/null
Binary files differ
diff --git a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/optee_example_secure_storage b/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/optee_example_secure_storage
deleted file mode 100755
index e690f0c..0000000
--- a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/optee_example_secure_storage
+++ /dev/null
Binary files differ
diff --git a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/optee_example_sm2 b/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/optee_example_sm2
deleted file mode 100755
index 4ffbc4b..0000000
--- a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/optee_example_sm2
+++ /dev/null
Binary files differ
diff --git a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/optee_example_sm4 b/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/optee_example_sm4
deleted file mode 100755
index 6048263..0000000
--- a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/optee_example_sm4
+++ /dev/null
Binary files differ
diff --git a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/radvd b/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/radvd
deleted file mode 100755
index 67fa752..0000000
--- a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/radvd
+++ /dev/null
Binary files differ
diff --git a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/radvdump b/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/radvdump
deleted file mode 100755
index 50215a7..0000000
--- a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/radvdump
+++ /dev/null
Binary files differ
diff --git a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/sc_shm_posix b/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/sc_shm_posix
deleted file mode 100755
index 8181047..0000000
--- a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/sc_shm_posix
+++ /dev/null
Binary files differ
diff --git a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/tee-supplicant b/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/tee-supplicant
deleted file mode 100755
index 2d8a128..0000000
--- a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/tee-supplicant
+++ /dev/null
Binary files differ
diff --git a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/test_spidev_used_gpio_ctrl b/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/test_spidev_used_gpio_ctrl
deleted file mode 100755
index 0aeb323..0000000
--- a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/test_spidev_used_gpio_ctrl
+++ /dev/null
Binary files differ
diff --git a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/uarttest b/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/uarttest
deleted file mode 100755
index 599d10f..0000000
--- a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/uarttest
+++ /dev/null
Binary files differ
diff --git a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/voice_demo b/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/voice_demo
deleted file mode 100755
index effdcf9..0000000
--- a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/voice_demo
+++ /dev/null
Binary files differ
diff --git a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/wifi_demo b/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/wifi_demo
deleted file mode 100755
index 75f5202..0000000
--- a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/cap/normal/wifi_demo
+++ /dev/null
Binary files differ
diff --git a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/evb_cpuphy_out.7z b/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/evb_cpuphy_out.7z
deleted file mode 100755
index 86ac87e..0000000
--- a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/evb_cpuphy_out.7z
+++ /dev/null
Binary files differ
diff --git a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/normalelfs/adbd.elf b/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/normalelfs/adbd.elf
deleted file mode 100755
index ae8bd97..0000000
--- a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/normalelfs/adbd.elf
+++ /dev/null
Binary files differ
diff --git a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/normalelfs/hostapd_2_10.elf b/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/normalelfs/hostapd_2_10.elf
deleted file mode 100755
index b10d7a9..0000000
--- a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/normalelfs/hostapd_2_10.elf
+++ /dev/null
Binary files differ
diff --git a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/normalelfs/libnvram.so b/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/normalelfs/libnvram.so
deleted file mode 100755
index e50e4d6..0000000
--- a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/normalelfs/libnvram.so
+++ /dev/null
Binary files differ
diff --git a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/normalelfs/libnvram_sc.so b/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/normalelfs/libnvram_sc.so
deleted file mode 100755
index 6352246..0000000
--- a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/normalelfs/libnvram_sc.so
+++ /dev/null
Binary files differ
diff --git a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/normalelfs/libsoft_timer.so b/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/normalelfs/libsoft_timer.so
deleted file mode 100755
index 079e879..0000000
--- a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/normalelfs/libsoft_timer.so
+++ /dev/null
Binary files differ
diff --git a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/normalelfs/libsoft_timer_sc.so b/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/normalelfs/libsoft_timer_sc.so
deleted file mode 100755
index a6585f0..0000000
--- a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/normalelfs/libsoft_timer_sc.so
+++ /dev/null
Binary files differ
diff --git a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/normalelfs/libupi_ab.so b/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/normalelfs/libupi_ab.so
deleted file mode 100755
index 1851d4b..0000000
--- a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/normalelfs/libupi_ab.so
+++ /dev/null
Binary files differ
diff --git a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/normalelfs/radvd.elf b/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/normalelfs/radvd.elf
deleted file mode 100755
index 84079a5..0000000
--- a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/normalelfs/radvd.elf
+++ /dev/null
Binary files differ
diff --git a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/normalelfs/wpa_supplicant_2_10.elf b/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/normalelfs/wpa_supplicant_2_10.elf
deleted file mode 100755
index 58deb3b..0000000
--- a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/normalelfs/wpa_supplicant_2_10.elf
+++ /dev/null
Binary files differ
diff --git a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/normalelfs/zte_bip.elf b/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/normalelfs/zte_bip.elf
deleted file mode 100755
index 04777c7..0000000
--- a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/normalelfs/zte_bip.elf
+++ /dev/null
Binary files differ
diff --git a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/normalelfs/zte_ipv6_addr_collect.elf b/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/normalelfs/zte_ipv6_addr_collect.elf
deleted file mode 100755
index a510dd6..0000000
--- a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/normalelfs/zte_ipv6_addr_collect.elf
+++ /dev/null
Binary files differ
diff --git a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/normalelfs/zte_ipv6_slaac.elf b/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/normalelfs/zte_ipv6_slaac.elf
deleted file mode 100755
index 6976ef7..0000000
--- a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/normalelfs/zte_ipv6_slaac.elf
+++ /dev/null
Binary files differ
diff --git a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/normalelfs/zte_ndp.elf b/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/normalelfs/zte_ndp.elf
deleted file mode 100755
index c87f684..0000000
--- a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/normalelfs/zte_ndp.elf
+++ /dev/null
Binary files differ
diff --git a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/normalelfs/zte_volte_main.elf b/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/normalelfs/zte_volte_main.elf
deleted file mode 100755
index ba29476..0000000
--- a/do_package_tool/allbins/zx297520v3/prj_vehicle/elf_dc_ref/normalelfs/zte_volte_main.elf
+++ /dev/null
Binary files differ
diff --git a/do_package_tool/allbins/zx297520v3/prj_vehicle/nv/Ref_nvrw_0x26C00.bin b/do_package_tool/allbins/zx297520v3/prj_vehicle/nv/Ref_nvrw_0x26C00.bin
deleted file mode 100755
index 46ae873..0000000
--- a/do_package_tool/allbins/zx297520v3/prj_vehicle/nv/Ref_nvrw_0x26C00.bin
+++ /dev/null
Binary files differ
diff --git a/do_package_tool/allbins/zx297520v3/prj_vehicle/nv_dc/Ref_nvrw_0x26C00.bin b/do_package_tool/allbins/zx297520v3/prj_vehicle/nv_dc/Ref_nvrw_0x26C00.bin
deleted file mode 100755
index 2569762..0000000
--- a/do_package_tool/allbins/zx297520v3/prj_vehicle/nv_dc/Ref_nvrw_0x26C00.bin
+++ /dev/null
Binary files differ
diff --git a/do_package_tool/allbins/zx297520v3/prj_vehicle/nv_dc_4Gb/Ref_nvrw_0x26C00.bin b/do_package_tool/allbins/zx297520v3/prj_vehicle/nv_dc_4Gb/Ref_nvrw_0x26C00.bin
deleted file mode 100755
index 9e0b773..0000000
--- a/do_package_tool/allbins/zx297520v3/prj_vehicle/nv_dc_4Gb/Ref_nvrw_0x26C00.bin
+++ /dev/null
Binary files differ
diff --git a/do_package_tool/allbins/zx297520v3/prj_vehicle/nv_dc_ref/Ref_nvrw_0x26C00.bin b/do_package_tool/allbins/zx297520v3/prj_vehicle/nv_dc_ref/Ref_nvrw_0x26C00.bin
deleted file mode 100755
index 7536991..0000000
--- a/do_package_tool/allbins/zx297520v3/prj_vehicle/nv_dc_ref/Ref_nvrw_0x26C00.bin
+++ /dev/null
Binary files differ
diff --git a/do_package_tool/allbins/zx297520v3/prj_vehicle/nv_dc_systemd/Ref_nvrw_0x26C00.bin b/do_package_tool/allbins/zx297520v3/prj_vehicle/nv_dc_systemd/Ref_nvrw_0x26C00.bin
deleted file mode 100755
index 020bde5..0000000
--- a/do_package_tool/allbins/zx297520v3/prj_vehicle/nv_dc_systemd/Ref_nvrw_0x26C00.bin
+++ /dev/null
Binary files differ
diff --git a/esdk/layers/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc/fs/normal/rootfs/etc_ro/default/default_parameter_sys b/esdk/layers/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc/fs/normal/rootfs/etc_ro/default/default_parameter_sys
deleted file mode 100755
index 636cedd..0000000
--- a/esdk/layers/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc/fs/normal/rootfs/etc_ro/default/default_parameter_sys
+++ /dev/null
@@ -1,446 +0,0 @@
-
-######SOFTAPרÓà START###################################
-check_roam=yes
-gsm_signalbar0_low=0
-gsm_signalbar0_high=0
-gsm_signalbar1_low=1
-gsm_signalbar1_high=2
-gsm_signalbar2_low=3
-gsm_signalbar2_high=6
-gsm_signalbar3_low=7
-gsm_signalbar3_high=9
-gsm_signalbar4_low=10
-gsm_signalbar4_high=12
-gsm_signalbar5_low=13
-gsm_signalbar5_high=31
-wcdma_signalbar0_low=0
-wcdma_signalbar0_high=0
-wcdma_signalbar1_low=1
-wcdma_signalbar1_high=8
-wcdma_signalbar2_low=9
-wcdma_signalbar2_high=16
-wcdma_signalbar3_low=17
-wcdma_signalbar3_high=22
-wcdma_signalbar4_low=23
-wcdma_signalbar4_high=28
-wcdma_signalbar5_low=29
-wcdma_signalbar5_high=91
-tds_signalbar0_low=0
-tds_signalbar0_high=0
-tds_signalbar1_low=1
-tds_signalbar1_high=8
-tds_signalbar2_low=9
-tds_signalbar2_high=16
-tds_signalbar3_low=17
-tds_signalbar3_high=22
-tds_signalbar4_low=23
-tds_signalbar4_high=28
-tds_signalbar5_low=29
-tds_signalbar5_high=91
-lte_signalbar0_low=0
-lte_signalbar0_high=0
-lte_signalbar1_low=1
-lte_signalbar1_high=25
-lte_signalbar2_low=26
-lte_signalbar2_high=32
-lte_signalbar3_low=33
-lte_signalbar3_high=38
-lte_signalbar4_low=39
-lte_signalbar4_high=44
-lte_signalbar5_low=45
-lte_signalbar5_high=97
-need_cops_number_format=yes
-need_display_searching_status=yes
-need_restart_when_sim_insert=no
-need_support_pb=no
-need_support_sms=no
-network_need_gsm=yes
-network_need_tds=yes
-product_model=MF910W
-roam_setting_option=on
-use_lock_net=no
-network_category_based_on=act
-admin_user=admin
-appKeyMobile=A100000853
-Brand=DEMO
-hostName=dm.wo.com.cn
-Intype=DEMO
-Manuf=
-Model=
-portNum=6001
-registerDmType=0
-secsTime=1
-versionPrevious=
-wa_version=
-OSVersion=1
-OS=TOS
-urlMobile=
-DNS_proxy=
-dnsmasqfile=/mnt/userdata/log/dnsmasq.log
-dnsmasqfileSize=1024
-lan_domain_Enabled=1
-auto_connect_when_limited=no
-is_traffic_aline_on=no
-is_traffic_alining=no
-is_traffic_limit_on=no
-keep_online_when_limited=no
-traffic_sms_number=0
-update_type=mifi_fota
-
-fota_device_type=mdl
-fota_models=ZTE7520V3
-fota_oem=ZTE
-fota_platform=ZX297520
-fota_dm_vendor=rs
-fota_token_rs=8msgzdxxftrtys0irnuifh7o
-fota_product_id=1553742041
-fota_product_secret=23b3faf2dafb42dfb3382c0d7d66315b
-fota_app_version=2
-fota_network_type=WIFI
-fota_token_zx=7CBE016400F65621740A04E742E6FB12
-fota_dl_url_zx=
-fota_chk_url_zx=
-fota_reg_url_zx=
-fota_report_dlr_url_zx=
-fota_report_upgr_url_zx=
-fota_report_sales_url_zx=
-fota_token_gs=97a53ee9f45adfe53c762a72f83f6f43
-fota_dl_url_gs=
-fota_chk_url_gs=
-fota_reg_url_gs=
-fota_report_dlr_url_gs=
-fota_report_upgr_url_gs=
-fota_report_sales_url_gs=
-fota_update_space_threshold=800
-fota_ab_upgrade_status=6
-fota_ab_upgrade_total_size=0
-fota_ab_upgrade_updated_size=0
-fota_ab_aa_sync_status=2
-fota_ab_log_path=/mnt/userdata/zte_fota_ab/upi_ab.log
-fota_aa_auto_sync=0
-Login=admin
-Password=
-sntp_server_count=3
-MAX_Station_num=32
-MAX_Station_num_bak=0
-MAX_Access_num_bbak=0
-MAX_Chip_Capability=32
-wifi_key_gen_type=MAC
-wifi_key_len=8
-wifi_key_only_digit=y
-wifi_lte_intr=1
-wifi_ssid_gen_with_mac_lastbyte=6
-wifi_key_gen_with_mac_lastbyte=8
-wifi_mac_num=2
-wifiwan=wlan0-vxd
-wifiwan_mode=dhcp
-idle_time="600"
-product_type=1
-errnofile=/usr/netlog/errno.log
-errnofileSize=1024
-hotplugfile=/usr/netlog/hotplug.log
-hotplugfileSize=1024
-mynetlinkfile=/usr/netlog/mynetlink.log
-mynetlinkfileSize=1024
-telnetd_enable=n
-
-#syslogdÏà¹ØÅäÖÃ
-syslog_file_size=1
-syslog_file_num=5
-print_level=2
-syslog_level=4
-
-skb_debug=
-seclog_switch=
-################SOFTAPרÓà END#####################################
-
-######USB¶Ë¿ÚÅäÖÃ#######
-
-##########usb/rj45µÈÈȰβåÏà¹ØÂ·¾¶##############
-#rj45³õʼ״̬·¾¶
-rj45_plugstate_path=/sys/kernel/eth_debug/eth_state
-#usbÍø¿ÚÃû·¾¶
-usb_name_path=/sys/dwc_usb/usbconfig/netname
-#usb¸÷Íø¿Ú״̬·¾¶
-usb_plugstate_path=/sys/dwc_usb/usbconfig/
-################################################
-
-#ͨ¹ýgpio¼ì²â²å°Î£¬ÓÃÓÚ×Ô¶¯»¯µ÷ÊÔ
-usb_gpio_detect=1
-
-#ÅäÖÃÊÇ·ñÓйâÅÌ
-cdrom_state=0
-
-#cdromµÚ¶þ½×¶Îö¾Ù£º0Ϊ²»ÐèҪö¾Ù£¬1ΪÐèҪö¾ÙÇÒÐèÒª¹ÒÔØ½éÖÊ£¬2Ϊ²»ÐèÒª¹ÒÔØ½éÖÊ#
-need_support_cdrom_step2=0
-#ÅäÖÃWindowsÏÂÍø¿¨ÀàÐÍ
-select_type=select_rndis
-
-####
-#ÅäÖÃÑз¢Ä£Ê½usbÉ豸¶Ë¿Ú×éºÏ
-usb_devices_debug=diag,adb,serial,acm
-
-
-#ÅäÖÃÓû§Ä£Ê½ÊÇ·ñʹÓÃÍø¿¨
-usb_vnic_user=on
-
-#ÅäÖÃÓû§Ä£Ê½usbÉ豸¶Ë¿Ú×éºÏ
-usb_devices_user=adb,acm
-
-#ÅäÖÃÉú²úģʽusbÉ豸¶Ë¿Ú×éºÏ
-usb_devices_factory=serial,diag
-
-#ÅäÖÃAMTģʽusbÉ豸¶Ë¿Ú×éºÏ
-usb_devices_amt=serial,diag
-
-#ÅäÖÃÑз¢Ä£Ê½acm´®¿Ú¸öÊý
-usb_acm_num_debug=1
-
-#ÅäÖÃÑз¢Ä£Ê½serial´®¿Ú¸öÊý
-usb_serial_num_debug=1
-
-#ÅäÖÃÓû§Ä£Ê½acm´®¿Ú¸öÊý
-usb_acm_num_user=1
-
-#ÅäÖÃÓû§Ä£Ê½serial´®¿Ú¸öÊý
-usb_serial_num_user=0
-
-#ÅäÖÃÉú²úģʽacm´®¿Ú¸öÊý
-usb_acm_num_factory=0
-
-#ÅäÖÃÉú²úģʽserial´®¿Ú¸öÊý
-usb_serial_num_factory=1
-
-#ÅäÖÃAMTģʽacm´®¿Ú¸öÊý
-usb_acm_num_amt=0
-
-#ÅäÖÃAMTģʽserial´®¿Ú¸öÊý
-usb_serial_num_amt=2
-
-#wangzhen
-#ÅäÖÃdebugģʽmass_storageµÄlunµÄģʽ
-usb_lun_type_debug=MMC
-
-#ÅäÖÃuserģʽmass_storageµÄlunµÄģʽ
-usb_lun_type_user=MMC
-
-#ÅäÖÃcdromģʽmass_storageµÄlunµÄģʽ
-usb_lun_type_cdrom=MMC
-###
-
-#ÅäÖÃÑз¢Ä£Ê½Íø¿ÚΪNDISʱÉ豸µÄPID
-PID_TSP_NDIS=0582
-###
-
-#ÅäÖÃÑз¢Ä£Ê½Íø¿ÚΪRNDISʱÉ豸µÄPID
-PID_TSP_RNDIS=0582
-
-#ÅäÖÃÑз¢Ä£Ê½Íø¿ÚΪECMʱÉ豸µÄPID
-PID_TSP_ECM=0582
-
-#ÅäÖÃÑз¢Ä£Ê½Ò쳣ʱÉ豸µÄPID
-PID_TEST=ff00
-
-#ÅäÖÃÑÛͼģʽʱÉ豸µÄPID
-PID_YT=0580
-
-#ÅäÖÃÑз¢Ä£Ê½¹âÅÌCDROMµÄPID
-PID_TSP_CDROM=0548
-
-#####
-
-#ÅäÖÃÓû§Ä£Ê½Ä£Ê½¹âÅÌCDROMµÄPID
-PID_USER_CDROM=1225
-
-#####
-#######
-#ÅäÖÃÓû§Ä£Ê½Íø¿ÚΪRNDISʱÉ豸µÄPID
-PID_USER_RNDIS=0585
-
-#ÅäÖÃÓû§Ä£Ê½Íø¿ÚΪECMʱÉ豸µÄPID
-PID_USER_ECM=0585
-
-#ÅäÖÃÓû§Ä£Ê½Íø¿ÚΪNDISʱÉ豸µÄPID
-PID_USER_NDIS=0583
-
-#ÅäÖÃÓû§Ä£Ê½Ã»ÓÐÍø¿ÚʱÉ豸µÄPID
-PID_USER_NOVNIC=0586
-######
-
-#ÅäÖÃËÀ»útrapʱÉ豸µÄPID
-PID_TRAP=0197
-
-#ÅäÖÃÉú²úģʽʱÉ豸µÄPID
-PID_FACTORY=0534
-
-#ÅäÖÃAMTģʽʱÉ豸µÄPID
-PID_AMT=0201
-
-#ÅäÖùػú³äµçʱÉ豸µÄPID
-PID_FASTPOWEROFF=2004
-
-#ÅäÖÃÉ豸µÄVID
-VID_TSP=19D2
-
-#ÅäÖÃÊÇ·ñÓÃchipid×÷ΪÉ豸µÄiSerial×Ö·û´®
-usb_sernum_chipid=0
-
-#ÅäÖÃÉ豸µÄiSerial×Ö·û´®
-SERIAL_TSP=1234567890ABCDEF
-
-#ÅäÖÃÑз¢Ä£Ê½É豸µÄReleaseID
-RELEASEID_TSP=0100
-
-#ÅäÖÃÓû§Ä£Ê½É豸µÄReleaseID
-RELEASEID_USER=0101
-
-#ÅäÖÃÉ豸µÄmanufacturer×Ö·û´®
-MANUFACTURER_TSP=DEMO,Incorporated
-
-#ÅäÖÃÉ豸µÄproduct×Ö·û´®
-PRODUCT_TSP=DEMO Mobile Boardband
-
-#ÅäÖÃÉ豸µÄconfig×Ö·û´®
-CONFIG_TSP=DEMO Configuration
-
-#cdrom lunµÄvendor×Ö·û´®
-VENDOR_MS_CDROM=DEMO
-
-#cdrom lunµÄproduct×Ö·û´®
-PRODUCT_MS_CDROM=USB SCSI CD-ROM
-
-#cdrom lunµÄrelease×Ö·û´®
-RELEASE_MS_CDROM=2.31
-
-#cdrom lunµÄinquiry×Ö·û´®
-INQUIRY_MS_CDROM=DEMO USB SCSI CD-ROM 2.31
-#mmc lunµÄvendor×Ö·û´®
-VENDOR_MS_MMC=DEMO
-
-#mmc lunµÄproduct×Ö·û´®
-PRODUCT_MS_MMC=MMC Storage
-
-#mmc lunµÄrelease×Ö·û´®
-RELEASE_MS_MMC=2.31
-
-#SD½éÖÊ·¾¶
-usb_tcard_lun_path=/dev/mmcblk0
-
-#mmc lunµÄinquiry×Ö·û´®
-INQUIRY_MS_MMC=DEMO MMC Storage 2.31
-
-#ÅäÖÃECMÍø¿¨¸öÊý
-ECM_NUM=1
-
-#ÅäÖÃRNDISÍø¿¨×î´ó×é°üÊý
-RNDIS_PKT_NUM=10
-
-
-###²¨ÌØÂÊ×ÔÊÊÓ¦¿ª¹Ø###
-self_adaption_port=
-###ijЩ¶Ë¿Ú²»ÐèÒªÏòÓ¦ÓÃÉϱ¨¶Ë¿Ú×¼±¸ºÃÏûÏ¢###
-notify_forbiden_ports=
-
-###adbĬÈϹÒÔØºË,0:ap;1:cap###
-adb_core_id=1
-######USB¶Ë¿ÚÅäÖÃEND#######
-
-######CP²àNVÅäÖÃÐÅÏ¢#######
-#ÄÚ²¿Èí¼þ°æ±¾ºÅ
-zversion=K318V1.0.0B03
-#ÍⲿÈí¼þ°æ±¾ºÅ
-zcgmr=DEMO_V1.0.0B03
-#Ó²¼þ°æ±¾ºÅ
-zhver=V0.1
-#ÄÚ²¿»úÐÍ
-zcgmm=K318
-#Íⲿ»úÐÍ
-zcgmw=K318
-#³§ÉÌÐÅÏ¢
-zcgmi=DEMO
-#SSIDºÅ
-zssid=0
-#WifiKeyµÄÖµ
-zwifikey=0
-#ËøÍø×î´ó½âËø´ÎÊý£¬ËøÍøÄ£¿éʹÓÃ
-zunlocktimes=0
-#°æ±¾Ä£Ê½ÀàÐÍ£¬Õý³£°æ±¾/¹Ò²à°æ±¾
-zversionmode=0
-#ÖÇÄܶÌÐŹ¦ÄÜ¿ª¹Ø
-zisms=0
-#DM¹¦ÄÜ¿ª¹Ø,0:¹Ø±Õ£¬1ÒÆ¶¯£¬2ÁªÍ¨£¬3µçÐÅ
-zdmreg=0
-#ÁªÍ¨DM ×¢²á¿ª»úµÈ´ýʱ¼ä, 1~60 ÓÐЧ£¬µ¥Î»·ÖÖÓ£¬ÆäËûÊýÖµ: ÎÞЧֵ
-zdmregtime=0
-
-#¹¤¾ßzlog_agent´æÈ¡
-zcat_mode=CPUSB
-zlog_num=10
-zlog_size=100
-zlog_path=/mnt/userdata/zcat
-rule_file=/etc_ro/logrule/ati_std.rule
-
-#ramdump´æ´¢Ä£Ê½
-#no,auto,yes
-ramdump_export=no
-#USB or CAPEMMC or CAPFLASH
-ramdump_mode=USB
-ramdump_emmc_device=/dev/mmcblk1p1
-ramdump_flash_device=/dev/mtd17
-ramdump_path=/mnt/oemdata
-
-#ÕÕÏà»úͼƬ·Ö±æÂÊÏÔʾ¿ØÖÆ
-zcamera_interprolation=1
-#×Ô¶¯ËÑÍø·½Ê½ÍøÂç½ÓÈë´ÎÐò
-auto_acqorder=12
-######CP²àNVÅäÖÃÐÅÏ¢END#######
-#for volte
-MTNET_TEST=0
-NSIOT_TEST=0
-amrw=1
-cvmod_ims=3
-EM_CALL_SUPPORT=0
-EMCALL_TO_NORMAL=0
-IMS_APN=
-IMS_CONFURI=
-IMS_CC_URI_TYPE=0
-IMS_SMS_URI_TYPE=0
-IMS_REG_EXPIRES=600000
-IMS_REG_SUB_EXPIRES=600000
-NET_IMS_CAP=0
-UDP_THRESH=1300
-IPSEC_DISABLE=0
-PRECONDTION_NOT_SUPPORT=0
-WAIT_RPT_TIME=1000
-OCT_ALGN_AMR=0
-SMS_OVER_IP=1
-IMS_USER_AGENT=
-BSF_PORT=8080
-XCAP_PORT=80
-UT_APN=
-380_THEN_CSFB=0
-DTMF_RFC4733=0
-DIALOG_FORK=0
-DATA_CENTRIC=0
-not_supp_hmac_sha1_96=0
-not_supp_hmac_md5_96=0
-not_supp_des_ede3_cbc=0
-not_supp_aes_cbc=0
-IMS_PCSCF_PORT=5060
-G_IMS_CMGF=0
-ECALL_MTTEST=0
-POWER_CONTROL=0
-NOT_KEEP_TCP_CONN=1
-T3396_SUPPORT=0
-T3396_CAUSE_REASON=8,27,32,33
-T3396_DURATION=720
-T3396_COUNTS=3
-ECALL_T2_TIMER=3600
-NGECALL_FORTEST=0
-CUSTOMER_FLAG=0
-#for volte end
-DEBUG_INFO_DISABLE=0
-DEBUG_INFO_FILE_PATH=/mnt/userdata
-DEBUG_INFO_FILE_NUM=2
-DEBUG_INFO_FILE_TOTAL_SIZE=1
-#debug info end
diff --git a/esdk/layers/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc/fs/normal/rootfs/etc_ro/default/default_parameter_user b/esdk/layers/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc/fs/normal/rootfs/etc_ro/default/default_parameter_user
deleted file mode 100755
index 7839262..0000000
--- a/esdk/layers/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc/fs/normal/rootfs/etc_ro/default/default_parameter_user
+++ /dev/null
@@ -1,496 +0,0 @@
-apn_auto_config=CMCC($)cmnet($)manual($)*99#($)pap($)($)($)IP($)auto($)($)auto($)($)
-APN_config0=Default($)Default($)manual($)($)($)($)($)IP($)auto($)($)auto($)($)
-APN_config1=
-APN_config2=
-APN_config3=
-APN_config4=
-APN_config5=
-APN_config6=
-APN_config7=
-APN_config8=
-APN_config9=
-apn_index=0
-apn_mode=auto
-at_snap_flag=3
-at_wifi_mac=0
-auto_apn_index=0
-cid_reserved=1
-clear_pb_when_restore=no
-clear_sms_when_restore=no
-default_apn=3gnet
-ipv6_APN_config1=
-ipv6_APN_config2=
-ipv6_APN_config3=
-ipv6_APN_config4=
-ipv6_APN_config5=
-ipv6_APN_config6=
-ipv6_APN_config7=
-ipv6_APN_config8=
-ipv6_APN_config9=
-m_profile_name=Internux
-need_init_modem=no
-net_select=NETWORK_auto
-pdp_type=IP
-ppp_apn=
-max_reconnect_time=3000000
-pppd_auth=noauth
-ppp_auth_mode=none
-ppp_passwd=
-ppp_pdp_type=
-ppp_username=
-ipv6_ppp_auth_mode=none
-ipv6_ppp_passwd=
-ipv6_ppp_username=
-pre_mode=
-prefer_dns_manual=0.0.0.0
-standby_dns_manual=0.0.0.0
-wan_apn=internet
-wan_dial=
-cta_test=0
-safecare_enbale=1
-safecare_hostname=mob.3gcare.cn
-safecare_registed_imei=
-safecare_registed_iccid=
-safecare_contimestart1=
-safecare_contimestart2=
-safecare_contimestart3=
-safecare_contimestop1=
-safecare_contimestop2=
-safecare_contimestop3=
-safecare_contimeinterval=
-safecare_mobsite=http://mob.3gcare.cn
-safecare_chatsite=
-safecare_platno=
-safecare_mobilenumber=
-safecare_version=
-ethwan_dns_mode=auto
-pswan_dns_mode=auto
-wifiwan_dns_mode=auto
-ethwan_ipv6_dns_mode=auto
-wifiwan_ipv6_dns_mode=auto
-pswan_ipv6_dns_mode=auto
-admin_Password=Pass1234
-psw_changed=1
-alg_ftp_enable=0
-alg_sip_enable=0
-blc_wan_auto_mode=AUTO_PPP
-blc_wan_mode=AUTO
-br_ipchange_flag=
-br_node=usblan0+zvnet0
-br_node_cap=zvnet0
-clat_fake_subnet=192.0.168.0
-clat_frag_collect_timeout=300
-clat_local_mapping_timeout=300
-clat_mapping_record_timeout=3000
-clat_query_server_port=1464
-DefaultFirewallPolicy=0
-dev_coexist=0
-dhcpDns=192.168.0.1
-dhcpEnabled=1
-dhcpEnd=192.168.0.200
-dhcpLease_hour=24
-dhcpStart=192.168.0.100
-dhcpv6stateEnabled=0
-dhcpv6statelessEnabled=1
-dhcpv6statePdEnabled=0
-dial_mode=auto_dial
-DMZEnable=0
-DMZIPAddress=
-dns_extern=
-ipv6_dns_extern=
-eth_act_type=
-eth_type=lan
-ethlan=
-ethwan=
-ethwan_dialmode=auto
-ethwan_mode=auto
-ethwan_priority=3
-fast_usb=usblan0
-fastnat_level=2
-fastbr_level=1
-IPPortFilterEnable=0
-IPPortFilterRules_0=
-IPPortFilterRules_1=
-IPPortFilterRules_2=
-IPPortFilterRules_3=
-IPPortFilterRules_4=
-IPPortFilterRules_5=
-IPPortFilterRules_6=
-IPPortFilterRules_7=
-IPPortFilterRules_8=
-IPPortFilterRules_9=
-IPPortFilterRulesv6_0=
-IPPortFilterRulesv6_1=
-IPPortFilterRulesv6_2=
-IPPortFilterRulesv6_3=
-IPPortFilterRulesv6_4=
-IPPortFilterRulesv6_5=
-IPPortFilterRulesv6_6=
-IPPortFilterRulesv6_7=
-IPPortFilterRulesv6_8=
-IPPortFilterRulesv6_9=
-ipv4_fake_subnet=192.0.0.0
-ipv6_fake_subnet=2016::1
-lan_ipaddr=192.168.0.1
-webv6_enable=1
-lan_ipv6addr=fe80::1
-lan_name=br0
-lan_netmask=255.255.255.0
-LanEnable=1
-dhcpDns_cap=192.168.0.2
-lan_ipv6addr_cap=fe80::2
-lan_ipaddr_cap=192.168.0.2
-lan_name_cap=br0
-lan_netmask_cap=255.255.255.0
-LanEnable_cap=1
-mac_ip_list=
-mgmt_quicken_power_on=0
-mtu=1400
-natenable=
-dosenable=0
-need_jilian=1
-nofast_port=21+22+23+25+53+67+68+69+110+115+123+443+500+1352+1723+1990+1991+1992+1993+1994+1995+1996+1997+1998+4500+5060
-nv_save_interval=300
-path_conf=/etc_rw
-path_ro=/etc_ro
-path_log=/tmp/
-netlog_limit=yes
-path_sh=/sbin
-path_tmp=/tmp
-permit_gw=
-permit_ip6=
-permit_nm=255.255.255.0
-PortForwardEnable=0
-PortForwardRules_0=
-PortForwardRules_1=
-PortForwardRules_2=
-PortForwardRules_3=
-PortForwardRules_4=
-PortForwardRules_5=
-PortForwardRules_6=
-PortForwardRules_7=
-PortForwardRules_8=
-PortForwardRules_9=
-PortMapEnable=0
-PortMapRules_0=
-PortMapRules_1=
-PortMapRules_2=
-PortMapRules_3=
-PortMapRules_4=
-PortMapRules_5=
-PortMapRules_6=
-PortMapRules_7=
-PortMapRules_8=
-PortMapRules_9=
-ppp_name=ppp0
-pppoe_password=
-pppoe_username=
-ps_ext1=zvnet1
-ps_ext2=zvnet2
-ps_ext3=zvnet3
-ps_ext4=zvnet4
-ps_ext5=zvnet5
-ps_ext6=zvnet6
-ps_ext7=zvnet7
-ps_ext8=zvnet8
-pswan=wan
-pswan_mode=pdp
-pswan_priority=1
-pswan_cap=zvnet
-RemoteManagement=0
-rootdev_friendlyname=DEMO-UPnP
-rootdev_manufacturer=DEMO
-rootdev_modeldes=XXX
-rootdev_modelname=XXX
-os_url=http://www.demo.com
-serialnumber=See-IMEI
-static_dhcp_enable=1
-static_ethwan_gw=
-static_ethwan_ip=
-static_ethwan_nm=
-static_ethwan_pridns=
-static_ethwan_secdns=
-static_wifiwan_ipaddr=
-static_wifiwan_netmask=
-static_wifiwan_gateway=
-wifiwan_pridns_manual=
-wifiwan_secdns_manual=
-static_wan_gateway=0.0.0.0
-static_wan_ipaddr=0.0.0.0
-static_wan_netmask=0.0.0.0
-static_wan_primary_dns=0.0.0.0
-static_wan_secondary_dns=0.0.0.0
-swlanstr=sw0_lan
-swvlan=sw0
-swwanstr=sw0_wan
-tc_downlink=
-tc_uplink=
-tc_local=1310720
-tc_enable=0
-time_limited=
-time_to_2000_when_restore=yes
-upnpEnabled=0
-usblan=usblan0
-WANPingFilter=0
-websURLFilters=
-wifiwan_priority=2
-DDNS=
-DDNS_Enable=0
-DDNSAccount=
-DDNSPassword=
-DDNSProvider=
-iccidPrevious=
-imeiPrevious=
-registerFlag=0
-registeredRound=
-secsEveryRound=1
-secsEveryTime=1
-regver=4.0
-meid=
-uetype=1
-LocalDomain=m.home
-data_volume_alert_percent=
-data_volume_limit_size=
-data_volume_limit_switch=0
-data_volume_limit_unit=0
-flux_day_total=0
-flux_last_day=
-flux_last_month=
-flux_last_year=
-flux_month_total=0
-flux_set_day=
-flux_set_month=
-flux_set_year=
-monthly_rx_bytes=0
-monthly_time=0
-monthly_tx_bytes=0
-MonthlyConTime_Last=
-dm_nextpollingtime=
-fota_allowRoamingUpdate=0
-fota_dl_pkg_size=0
-fota_update_flag=
-fota_updateIntervalDay=15
-fota_upgrade_result=
-fota_version_delta_id=
-fota_version_delta_url=
-fota_pkg_total_size=0
-fota_version_file_size=
-fota_version_md5sum=
-fota_version_name=
-fota_need_user_confirm_update=0
-fota_need_user_confirm_download=0
-fota_version_force_install=0
-polling_nexttime=0
-pwron_auto_check=0
-fota_updateMode=0
-fota_test_mode=0
-fota_pkg_downloaded=0
-fota_upgrade_result_internal=
-mmi_battery_voltage_line=3090+3300+3450+3490+3510+3540+3550+3570+3580+3600+3620+3650+3670+3710+3740+3780+3850+3900+3950+4000+4060
-mmi_fast_poweron=
-mmi_led_mode=sleep_mode
-mmi_new_sms_blink_flag=1
-mmi_show_pagetab=page1+page2+page3
-mmi_showmode=led
-mmi_task_tab=ctrl_task+key_task
-mmi_temp_voltage_line=951+1201+1692+1736
-mmi_use_protect=
-mmi_use_wifi_usernum=1
-leak_full_panic=
-leak_list_max=
-leak_set_flag=
-monitor_period=300
-netinf_flag=
-skb_all_max=
-skb_data_max=
-skb_fromcp_max=
-skb_max_fail=
-skb_max_panic=
-skb_size_max=
-skb_tocp_max=
-sntp_default_ip=134.170.185.211;131.107.13.100;202.112.31.197;202.112.29.82;202.112.10.36;ntp.gwadar.cn;ntp-sz.chl.la;dns.sjtu.edu.cn;news.neu.edu.cn;dns1.synet.edu.cn;time-nw.nist.gov;pool.ntp.org;europe.pool.ntp.org
-sntp_dst_enable=0
-sntp_other_server0=
-sntp_other_server1=
-sntp_other_server2=
-sntp_server0=time-nw.nist.gov
-sntp_server1=pool.ntp.org
-sntp_server2=europe.pool.ntp.org
-sntp_sync_select_interval_time=30
-sntp_time_set_mode=auto
-sntp_timezone=CST-8
-sntp_timezone_index=0
-assert_errno=
-comm_logsize=16384
-cr_inner_version=V1.0.0B08
-cr_version=V1.0.0B01
-hw_version=PCBMF29S2V1.0.0
-TURNOFF_CHR_NUM=
-watchdog_app=0
-HTTP_SHARE_FILE=
-HTTP_SHARE_STATUS=
-HTTP_SHARE_WR_AUTH=readWrite
-ipv6_pdp_type=
-ipv6_wan_apn=
-Language=zh-cn
-manual_time_day=
-manual_time_hour=
-manual_time_minute=
-manual_time_month=
-manual_time_second=
-manual_time_year=
-sdcard_mode_option=0
-AccessControlList0=
-AccessPolicy0=0
-ACL_mode=0
-AuthMode=WPA2PSK
-Channel=0
-wifi_acs_num=5
-closeEnable=0
-closeTime=
-CountryCode=CN
-DefaultKeyID=0
-DtimPeriod=1
-EncrypType=AES
-EX_APLIST=
-EX_APLIST1=
-EX_AuthMode=
-EX_DefaultKeyID=
-EX_EncrypType=
-EX_mac=
-EX_SSID1=Ufi_
-EX_WEPKEY=
-EX_wifi_profile=
-EX_WPAPSK1=
-FragThreshold=2346
-HideSSID=0
-HT_GI=1
-Key1Str1=12345
-Key2Str1=
-Key3Str1=
-Key4Str1=
-Key1Type=1
-Key2Type=
-Key3Type=
-Key4Type=
-m_AuthMode=WPA2PSK
-m_DefaultKeyID=
-m_EncrypType=AES
-m_HideSSID=0
-m_Key1Str1=1234
-m_Key2Str1=
-m_Key3Str1=
-m_Key4Str1=
-m_Key1Type=1
-m_Key2Type=
-m_Key3Type=
-m_Key4Type=
-m_MAX_Access_num=0
-m_NoForwarding=
-m_show_qrcode_flag=0
-m_SSID=Ufi_
-m_ssid_enable=0
-m_wapiType=
-m_wifi_mac=901D45692A5C
-m_WPAPSK1_aes=
-m_WPAPSK1_encode=MTIzNDU2Nzg=
-MAX_Access_num=32
-MAX_Access_num_bak=32
-NoForwarding=0
-openEnable=0
-openTime=
-operater_ap=
-RekeyInterval=3600
-RTSThreshold=2347
-show_qrcode_flag=0
-Sleep_interval=10
-ssid_write_flag=0
-SSID1=Ufi_
-tsw_sleep_time_hour=
-tsw_sleep_time_min=
-tsw_wake_time_hour=
-tsw_wake_time_min=
-wapiType=
-wifi_force_40m=1
-wifi_11n_cap=1
-wifi_band=b
-wifi_coverage=long_mode
-wifi_hostname_black_list=
-wifi_hostname_white_list=
-wifi_mac=901D45692A5B
-wifi_mac_black_list=
-wifi_mac_white_list=
-wifi_profile=
-wifi_profile1=
-wifi_profile2=
-wifi_profile3=
-wifi_profile4=
-wifi_profile5=
-wifi_profile6=
-wifi_profile7=
-wifi_profile8=
-wifi_profile9=
-wifi_profile_num=0
-wifi_root_dir=
-wifi_sta_connection=0
-wifi_wps_index=1
-wifiEnabled=1
-wifilan=wlan0-va0
-wifilan2=wlan0-va1
-WirelessMode=6
-WPAPSK1_aes=
-WPAPSK1_encode=MTIzNDU2Nzg=
-wps_mode=
-WPS_SSID=
-WscModeOption=0
-monitor_apps=
-at_netdog=
-autorspchannel_list=all
-soctime_switch=0
-uart_control=1
-uart_ctstrs_enable=
-uart_softcontrol_enable=
-uart_wakeup_enable=1
-uart_console_coreid=1
-uart_app_ctrl=5
-special_cmd_list=$MYNETREAD
-ra_mtu_enable=
-##为入网入库芯片认证版本添加 begin
-atcmd_stream1=AT+ZSET="w_instrument",1
-atcmd_stream2=AT^SYSCONFIG=24,0,1,2
-atcmd_stream3=AT+ZSET="csiiot",2
-atcmd_stream4=AT+ZSET="dlparaflg",0
-atcmd_stream5=AT+ZSET="MTNET_TEST",1;AT+ZGAAT=0;AT+ZSET="CMCC_TEST",1;AT+ZSET="LTE_INFO",6348;AT+ZSET="VOICE_SUPPORT",1;AT+ZSET="FDD_RELEASE",7;AT+ZSET="LTE_RELEASE",1;AT+ZSET="UE_PS_RELEASE",5;AT+ZSET="QOS_RELEASE",4;AT+ZSET="TEBS_THRESHOLD",0
-atcmd_stream6=AT+ZSET="MTNET_TEST",1;AT+ZGAAT=0;AT+ZSET="LTE_INFO",6348;AT+ZSET="VOICE_SUPPORT",1;AT+ZSET="FDD_RELEASE",7;AT+ZSET="LTE_RELEASE",1;AT+ZSET="UE_PS_RELEASE",5;AT+ZSET="QOS_RELEASE",4;AT+ZSET="TEBS_THRESHOLD",0;AT+ZSET="IGNORE_SECURITY_SUPPORT",0;AT+ZSET="csifilter",0;AT+ZSET="csrhobandflg",0;AT+ZSET="dlparaflg",1;AT+ZSET="csiup",1;AT+ZSET="rfparaflag",0,0,1,0;AT+ZSET="csiiot",1;AT+ZSET="EXCEPT_RESET",0;AT+ZSET="ISIM_SUPPORT",1;AT+ZIMSTEST="MTNET_TEST",1;AT+ZSET="MANUAL_SEARCH",0
-##为入网入库芯片认证版本添加 end
-#for audio ctrl 
-audio_priority=0123
-customer_type=
-debug_mode=
-cpIndCmdList=+ZMMI+ZURDY+ZUSLOT+ZICCID^MODE+ZPBIC+ZMSRI+CREG+CEREG+CGREG+CGEV
-zephyr_filter_ip=
-wait_timeout=2
-sntp_sync_time=1
-sntp_static_server0=time-nw.nist.gov
-sntp_static_server1=pool.ntp.org
-sntp_static_server2=europe.pool.ntp.org
-vsim_bin_path=/mnt/userdata/vSim.bin
-at_select_timeout=
-mtnet_test_mcc=+001+002+003+004
-at_atv=
-at_atq=
-at_at_d=
-at_ptsnum=
-quick_dial=1
-cap_port_name=/dev/ttyGS0
-customIndCmdList=
-defrt_cid=1
-MaxRtrAdvInterval=1800
-dhcps_in_cap=1
-gw_in_cap=0
-#yes-on  no-off
-cc_at_debug=no
-xlat_enable=0
-ecallmode=2
-telog_path_cap=
-telog_path=
diff --git a/esdk/layers/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc_4Gb/fs/normal/rootfs/etc_ro/default/default_parameter_sys b/esdk/layers/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc_4Gb/fs/normal/rootfs/etc_ro/default/default_parameter_sys
deleted file mode 100755
index 57c1ad7..0000000
--- a/esdk/layers/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc_4Gb/fs/normal/rootfs/etc_ro/default/default_parameter_sys
+++ /dev/null
@@ -1,446 +0,0 @@
-
-######SOFTAPרÓà START###################################
-check_roam=yes
-gsm_signalbar0_low=0
-gsm_signalbar0_high=0
-gsm_signalbar1_low=1
-gsm_signalbar1_high=2
-gsm_signalbar2_low=3
-gsm_signalbar2_high=6
-gsm_signalbar3_low=7
-gsm_signalbar3_high=9
-gsm_signalbar4_low=10
-gsm_signalbar4_high=12
-gsm_signalbar5_low=13
-gsm_signalbar5_high=31
-wcdma_signalbar0_low=0
-wcdma_signalbar0_high=0
-wcdma_signalbar1_low=1
-wcdma_signalbar1_high=8
-wcdma_signalbar2_low=9
-wcdma_signalbar2_high=16
-wcdma_signalbar3_low=17
-wcdma_signalbar3_high=22
-wcdma_signalbar4_low=23
-wcdma_signalbar4_high=28
-wcdma_signalbar5_low=29
-wcdma_signalbar5_high=91
-tds_signalbar0_low=0
-tds_signalbar0_high=0
-tds_signalbar1_low=1
-tds_signalbar1_high=8
-tds_signalbar2_low=9
-tds_signalbar2_high=16
-tds_signalbar3_low=17
-tds_signalbar3_high=22
-tds_signalbar4_low=23
-tds_signalbar4_high=28
-tds_signalbar5_low=29
-tds_signalbar5_high=91
-lte_signalbar0_low=0
-lte_signalbar0_high=0
-lte_signalbar1_low=1
-lte_signalbar1_high=25
-lte_signalbar2_low=26
-lte_signalbar2_high=32
-lte_signalbar3_low=33
-lte_signalbar3_high=38
-lte_signalbar4_low=39
-lte_signalbar4_high=44
-lte_signalbar5_low=45
-lte_signalbar5_high=97
-need_cops_number_format=yes
-need_display_searching_status=yes
-need_restart_when_sim_insert=no
-need_support_pb=no
-need_support_sms=no
-network_need_gsm=yes
-network_need_tds=yes
-product_model=MF910W
-roam_setting_option=on
-use_lock_net=no
-network_category_based_on=act
-admin_user=admin
-appKeyMobile=A100000853
-Brand=DEMO
-hostName=dm.wo.com.cn
-Intype=DEMO
-Manuf=
-Model=
-portNum=6001
-registerDmType=0
-secsTime=1
-versionPrevious=
-wa_version=
-OSVersion=1
-OS=TOS
-urlMobile=
-DNS_proxy=
-dnsmasqfile=/mnt/userdata/log/dnsmasq.log
-dnsmasqfileSize=1024
-lan_domain_Enabled=1
-auto_connect_when_limited=no
-is_traffic_aline_on=no
-is_traffic_alining=no
-is_traffic_limit_on=no
-keep_online_when_limited=no
-traffic_sms_number=0
-update_type=mifi_fota
-
-fota_device_type=mdl
-fota_models=ZTE7520V3
-fota_oem=ZTE
-fota_platform=ZX297520
-fota_dm_vendor=rs
-fota_token_rs=8msgzdxxftrtys0irnuifh7o
-fota_product_id=1553742041
-fota_product_secret=23b3faf2dafb42dfb3382c0d7d66315b
-fota_app_version=2
-fota_network_type=WIFI
-fota_token_zx=7CBE016400F65621740A04E742E6FB12
-fota_dl_url_zx=
-fota_chk_url_zx=
-fota_reg_url_zx=
-fota_report_dlr_url_zx=
-fota_report_upgr_url_zx=
-fota_report_sales_url_zx=
-fota_token_gs=97a53ee9f45adfe53c762a72f83f6f43
-fota_dl_url_gs=
-fota_chk_url_gs=
-fota_reg_url_gs=
-fota_report_dlr_url_gs=
-fota_report_upgr_url_gs=
-fota_report_sales_url_gs=
-fota_update_space_threshold=800
-fota_ab_upgrade_status=6
-fota_ab_upgrade_total_size=0
-fota_ab_upgrade_updated_size=0
-fota_ab_aa_sync_status=2
-fota_ab_log_path=/mnt/userdata/zte_fota_ab/upi_ab.log
-fota_aa_auto_sync=0
-Login=admin
-Password=
-sntp_server_count=3
-MAX_Station_num=32
-MAX_Station_num_bak=0
-MAX_Access_num_bbak=0
-MAX_Chip_Capability=32
-wifi_key_gen_type=MAC
-wifi_key_len=8
-wifi_key_only_digit=y
-wifi_lte_intr=1
-wifi_ssid_gen_with_mac_lastbyte=6
-wifi_key_gen_with_mac_lastbyte=8
-wifi_mac_num=2
-wifiwan=wlan0-vxd
-wifiwan_mode=dhcp
-idle_time="600"
-product_type=1
-errnofile=/usr/netlog/errno.log
-errnofileSize=1024
-hotplugfile=/usr/netlog/hotplug.log
-hotplugfileSize=1024
-mynetlinkfile=/usr/netlog/mynetlink.log
-mynetlinkfileSize=1024
-telnetd_enable=n
-
-#syslogdÏà¹ØÅäÖÃ
-syslog_file_size=1
-syslog_file_num=5
-print_level=2
-syslog_level=4
-
-skb_debug=
-seclog_switch=
-################SOFTAPרÓà END#####################################
-
-######USB¶Ë¿ÚÅäÖÃ#######
-
-##########usb/rj45µÈÈȰβåÏà¹ØÂ·¾¶##############
-#rj45³õʼ״̬·¾¶
-rj45_plugstate_path=/sys/kernel/eth_debug/eth_state
-#usbÍø¿ÚÃû·¾¶
-usb_name_path=/sys/dwc_usb/usbconfig/netname
-#usb¸÷Íø¿Ú״̬·¾¶
-usb_plugstate_path=/sys/dwc_usb/usbconfig/
-################################################
-
-#ͨ¹ýgpio¼ì²â²å°Î£¬ÓÃÓÚ×Ô¶¯»¯µ÷ÊÔ
-usb_gpio_detect=1
-
-#ÅäÖÃÊÇ·ñÓйâÅÌ
-cdrom_state=0
-
-#cdromµÚ¶þ½×¶Îö¾Ù£º0Ϊ²»ÐèҪö¾Ù£¬1ΪÐèҪö¾ÙÇÒÐèÒª¹ÒÔØ½éÖÊ£¬2Ϊ²»ÐèÒª¹ÒÔØ½éÖÊ#
-need_support_cdrom_step2=0
-#ÅäÖÃWindowsÏÂÍø¿¨ÀàÐÍ
-select_type=select_rndis
-
-####
-#ÅäÖÃÑз¢Ä£Ê½usbÉ豸¶Ë¿Ú×éºÏ
-usb_devices_debug=diag,adb,serial,acm
-
-
-#ÅäÖÃÓû§Ä£Ê½ÊÇ·ñʹÓÃÍø¿¨
-usb_vnic_user=on
-
-#ÅäÖÃÓû§Ä£Ê½usbÉ豸¶Ë¿Ú×éºÏ
-usb_devices_user=adb,acm
-
-#ÅäÖÃÉú²úģʽusbÉ豸¶Ë¿Ú×éºÏ
-usb_devices_factory=serial,diag
-
-#ÅäÖÃAMTģʽusbÉ豸¶Ë¿Ú×éºÏ
-usb_devices_amt=serial,diag
-
-#ÅäÖÃÑз¢Ä£Ê½acm´®¿Ú¸öÊý
-usb_acm_num_debug=1
-
-#ÅäÖÃÑз¢Ä£Ê½serial´®¿Ú¸öÊý
-usb_serial_num_debug=1
-
-#ÅäÖÃÓû§Ä£Ê½acm´®¿Ú¸öÊý
-usb_acm_num_user=1
-
-#ÅäÖÃÓû§Ä£Ê½serial´®¿Ú¸öÊý
-usb_serial_num_user=0
-
-#ÅäÖÃÉú²úģʽacm´®¿Ú¸öÊý
-usb_acm_num_factory=0
-
-#ÅäÖÃÉú²úģʽserial´®¿Ú¸öÊý
-usb_serial_num_factory=1
-
-#ÅäÖÃAMTģʽacm´®¿Ú¸öÊý
-usb_acm_num_amt=0
-
-#ÅäÖÃAMTģʽserial´®¿Ú¸öÊý
-usb_serial_num_amt=2
-
-#wangzhen
-#ÅäÖÃdebugģʽmass_storageµÄlunµÄģʽ
-usb_lun_type_debug=MMC
-
-#ÅäÖÃuserģʽmass_storageµÄlunµÄģʽ
-usb_lun_type_user=MMC
-
-#ÅäÖÃcdromģʽmass_storageµÄlunµÄģʽ
-usb_lun_type_cdrom=MMC
-###
-
-#ÅäÖÃÑз¢Ä£Ê½Íø¿ÚΪNDISʱÉ豸µÄPID
-PID_TSP_NDIS=0582
-###
-
-#ÅäÖÃÑз¢Ä£Ê½Íø¿ÚΪRNDISʱÉ豸µÄPID
-PID_TSP_RNDIS=0582
-
-#ÅäÖÃÑз¢Ä£Ê½Íø¿ÚΪECMʱÉ豸µÄPID
-PID_TSP_ECM=0582
-
-#ÅäÖÃÑз¢Ä£Ê½Ò쳣ʱÉ豸µÄPID
-PID_TEST=ff00
-
-#ÅäÖÃÑÛͼģʽʱÉ豸µÄPID
-PID_YT=0580
-
-#ÅäÖÃÑз¢Ä£Ê½¹âÅÌCDROMµÄPID
-PID_TSP_CDROM=0548
-
-#####
-
-#ÅäÖÃÓû§Ä£Ê½Ä£Ê½¹âÅÌCDROMµÄPID
-PID_USER_CDROM=1225
-
-#####
-#######
-#ÅäÖÃÓû§Ä£Ê½Íø¿ÚΪRNDISʱÉ豸µÄPID
-PID_USER_RNDIS=0585
-
-#ÅäÖÃÓû§Ä£Ê½Íø¿ÚΪECMʱÉ豸µÄPID
-PID_USER_ECM=0585
-
-#ÅäÖÃÓû§Ä£Ê½Íø¿ÚΪNDISʱÉ豸µÄPID
-PID_USER_NDIS=0583
-
-#ÅäÖÃÓû§Ä£Ê½Ã»ÓÐÍø¿ÚʱÉ豸µÄPID
-PID_USER_NOVNIC=0586
-######
-
-#ÅäÖÃËÀ»útrapʱÉ豸µÄPID
-PID_TRAP=0197
-
-#ÅäÖÃÉú²úģʽʱÉ豸µÄPID
-PID_FACTORY=0534
-
-#ÅäÖÃAMTģʽʱÉ豸µÄPID
-PID_AMT=0201
-
-#ÅäÖùػú³äµçʱÉ豸µÄPID
-PID_FASTPOWEROFF=2004
-
-#ÅäÖÃÉ豸µÄVID
-VID_TSP=19D2
-
-#ÅäÖÃÊÇ·ñÓÃchipid×÷ΪÉ豸µÄiSerial×Ö·û´®
-usb_sernum_chipid=0
-
-#ÅäÖÃÉ豸µÄiSerial×Ö·û´®
-SERIAL_TSP=1234567890ABCDEF
-
-#ÅäÖÃÑз¢Ä£Ê½É豸µÄReleaseID
-RELEASEID_TSP=0100
-
-#ÅäÖÃÓû§Ä£Ê½É豸µÄReleaseID
-RELEASEID_USER=0101
-
-#ÅäÖÃÉ豸µÄmanufacturer×Ö·û´®
-MANUFACTURER_TSP=DEMO,Incorporated
-
-#ÅäÖÃÉ豸µÄproduct×Ö·û´®
-PRODUCT_TSP=DEMO Mobile Boardband
-
-#ÅäÖÃÉ豸µÄconfig×Ö·û´®
-CONFIG_TSP=DEMO Configuration
-
-#cdrom lunµÄvendor×Ö·û´®
-VENDOR_MS_CDROM=DEMO
-
-#cdrom lunµÄproduct×Ö·û´®
-PRODUCT_MS_CDROM=USB SCSI CD-ROM
-
-#cdrom lunµÄrelease×Ö·û´®
-RELEASE_MS_CDROM=2.31
-
-#cdrom lunµÄinquiry×Ö·û´®
-INQUIRY_MS_CDROM=DEMO USB SCSI CD-ROM 2.31
-#mmc lunµÄvendor×Ö·û´®
-VENDOR_MS_MMC=DEMO
-
-#mmc lunµÄproduct×Ö·û´®
-PRODUCT_MS_MMC=MMC Storage
-
-#mmc lunµÄrelease×Ö·û´®
-RELEASE_MS_MMC=2.31
-
-#SD½éÖÊ·¾¶
-usb_tcard_lun_path=/dev/mmcblk0
-
-#mmc lunµÄinquiry×Ö·û´®
-INQUIRY_MS_MMC=DEMO MMC Storage 2.31
-
-#ÅäÖÃECMÍø¿¨¸öÊý
-ECM_NUM=1
-
-#ÅäÖÃRNDISÍø¿¨×î´ó×é°üÊý
-RNDIS_PKT_NUM=10
-
-
-###²¨ÌØÂÊ×ÔÊÊÓ¦¿ª¹Ø###
-self_adaption_port=
-###ijЩ¶Ë¿Ú²»ÐèÒªÏòÓ¦ÓÃÉϱ¨¶Ë¿Ú×¼±¸ºÃÏûÏ¢###
-notify_forbiden_ports=
-
-###adbĬÈϹÒÔØºË,0:ap;1:cap###
-adb_core_id=1
-######USB¶Ë¿ÚÅäÖÃEND#######
-
-######CP²àNVÅäÖÃÐÅÏ¢#######
-#ÄÚ²¿Èí¼þ°æ±¾ºÅ
-zversion=K318V1.0.0B03
-#ÍⲿÈí¼þ°æ±¾ºÅ
-zcgmr=DEMO_V1.0.0B03
-#Ó²¼þ°æ±¾ºÅ
-zhver=V0.1
-#ÄÚ²¿»úÐÍ
-zcgmm=K318
-#Íⲿ»úÐÍ
-zcgmw=K318
-#³§ÉÌÐÅÏ¢
-zcgmi=DEMO
-#SSIDºÅ
-zssid=0
-#WifiKeyµÄÖµ
-zwifikey=0
-#ËøÍø×î´ó½âËø´ÎÊý£¬ËøÍøÄ£¿éʹÓÃ
-zunlocktimes=0
-#°æ±¾Ä£Ê½ÀàÐÍ£¬Õý³£°æ±¾/¹Ò²à°æ±¾
-zversionmode=0
-#ÖÇÄܶÌÐŹ¦ÄÜ¿ª¹Ø
-zisms=0
-#DM¹¦ÄÜ¿ª¹Ø,0:¹Ø±Õ£¬1ÒÆ¶¯£¬2ÁªÍ¨£¬3µçÐÅ
-zdmreg=0
-#ÁªÍ¨DM ×¢²á¿ª»úµÈ´ýʱ¼ä, 1~60 ÓÐЧ£¬µ¥Î»·ÖÖÓ£¬ÆäËûÊýÖµ: ÎÞЧֵ
-zdmregtime=0
-
-#¹¤¾ßzlog_agent´æÈ¡
-zcat_mode=CPUSB
-zlog_num=10
-zlog_size=100
-zlog_path=/mnt/userdata/zcat
-rule_file=/etc_ro/logrule/ati_std.rule
-
-#ramdump´æ´¢Ä£Ê½
-#no,auto,yes
-ramdump_export=no
-#USB or CAPEMMC or CAPFLASH
-ramdump_mode=USB
-ramdump_emmc_device=/dev/mmcblk1p1
-ramdump_flash_device=/dev/mtd17
-ramdump_path=/mnt/oemdata
-
-#ÕÕÏà»úͼƬ·Ö±æÂÊÏÔʾ¿ØÖÆ
-zcamera_interprolation=1
-#×Ô¶¯ËÑÍø·½Ê½ÍøÂç½ÓÈë´ÎÐò
-auto_acqorder=12
-######CP²àNVÅäÖÃÐÅÏ¢END#######
-#for volte
-MTNET_TEST=0
-NSIOT_TEST=0
-amrw=1
-cvmod_ims=3
-EM_CALL_SUPPORT=0
-EMCALL_TO_NORMAL=0
-IMS_APN=
-IMS_CONFURI=
-IMS_CC_URI_TYPE=0
-IMS_SMS_URI_TYPE=0
-IMS_REG_EXPIRES=600000
-IMS_REG_SUB_EXPIRES=600000
-NET_IMS_CAP=0
-UDP_THRESH=1300
-IPSEC_DISABLE=0
-PRECONDTION_NOT_SUPPORT=0
-WAIT_RPT_TIME=1000
-OCT_ALGN_AMR=0
-SMS_OVER_IP=1
-IMS_USER_AGENT=
-BSF_PORT=8080
-XCAP_PORT=80
-UT_APN=
-380_THEN_CSFB=0
-DTMF_RFC4733=0
-DIALOG_FORK=0
-DATA_CENTRIC=0
-not_supp_hmac_sha1_96=0
-not_supp_hmac_md5_96=0
-not_supp_des_ede3_cbc=0
-not_supp_aes_cbc=0
-IMS_PCSCF_PORT=5060
-G_IMS_CMGF=0
-ECALL_MTTEST=0
-POWER_CONTROL=0
-NOT_KEEP_TCP_CONN=1
-T3396_SUPPORT=0
-T3396_CAUSE_REASON=8,27,32,33
-T3396_DURATION=720
-T3396_COUNTS=3
-ECALL_T2_TIMER=3600
-NGECALL_FORTEST=0
-CUSTOMER_FLAG=0
-#for volte end
-DEBUG_INFO_DISABLE=0
-DEBUG_INFO_FILE_PATH=/mnt/userdata
-DEBUG_INFO_FILE_NUM=2
-DEBUG_INFO_FILE_TOTAL_SIZE=1
-#debug info end
\ No newline at end of file
diff --git a/esdk/layers/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc_4Gb/fs/normal/rootfs/etc_ro/default/default_parameter_user b/esdk/layers/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc_4Gb/fs/normal/rootfs/etc_ro/default/default_parameter_user
deleted file mode 100755
index dc03706..0000000
--- a/esdk/layers/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc_4Gb/fs/normal/rootfs/etc_ro/default/default_parameter_user
+++ /dev/null
@@ -1,495 +0,0 @@
-apn_auto_config=CMCC($)cmnet($)manual($)*99#($)pap($)($)($)IP($)auto($)($)auto($)($)
-APN_config0=Default($)Default($)manual($)($)($)($)($)IP($)auto($)($)auto($)($)
-APN_config1=
-APN_config2=
-APN_config3=
-APN_config4=
-APN_config5=
-APN_config6=
-APN_config7=
-APN_config8=
-APN_config9=
-apn_index=0
-apn_mode=auto
-at_snap_flag=3
-at_wifi_mac=0
-auto_apn_index=0
-cid_reserved=1
-clear_pb_when_restore=no
-clear_sms_when_restore=no
-default_apn=3gnet
-ipv6_APN_config1=
-ipv6_APN_config2=
-ipv6_APN_config3=
-ipv6_APN_config4=
-ipv6_APN_config5=
-ipv6_APN_config6=
-ipv6_APN_config7=
-ipv6_APN_config8=
-ipv6_APN_config9=
-m_profile_name=Internux
-need_init_modem=no
-net_select=NETWORK_auto
-pdp_type=IP
-ppp_apn=
-max_reconnect_time=3000000
-pppd_auth=noauth
-ppp_auth_mode=none
-ppp_passwd=
-ppp_pdp_type=
-ppp_username=
-ipv6_ppp_auth_mode=none
-ipv6_ppp_passwd=
-ipv6_ppp_username=
-pre_mode=
-prefer_dns_manual=0.0.0.0
-standby_dns_manual=0.0.0.0
-wan_apn=internet
-wan_dial=
-cta_test=0
-safecare_enbale=1
-safecare_hostname=mob.3gcare.cn
-safecare_registed_imei=
-safecare_registed_iccid=
-safecare_contimestart1=
-safecare_contimestart2=
-safecare_contimestart3=
-safecare_contimestop1=
-safecare_contimestop2=
-safecare_contimestop3=
-safecare_contimeinterval=
-safecare_mobsite=http://mob.3gcare.cn
-safecare_chatsite=
-safecare_platno=
-safecare_mobilenumber=
-safecare_version=
-ethwan_dns_mode=auto
-pswan_dns_mode=auto
-wifiwan_dns_mode=auto
-ethwan_ipv6_dns_mode=auto
-wifiwan_ipv6_dns_mode=auto
-pswan_ipv6_dns_mode=auto
-admin_Password=Pass1234
-psw_changed=1
-alg_ftp_enable=0
-alg_sip_enable=0
-blc_wan_auto_mode=AUTO_PPP
-blc_wan_mode=AUTO
-br_ipchange_flag=
-br_node=usblan0+zvnet0
-br_node_cap=zvnet0
-clat_fake_subnet=192.0.168.0
-clat_frag_collect_timeout=300
-clat_local_mapping_timeout=300
-clat_mapping_record_timeout=3000
-clat_query_server_port=1464
-DefaultFirewallPolicy=0
-dev_coexist=0
-dhcpDns=192.168.0.1
-dhcpEnabled=1
-dhcpEnd=192.168.0.200
-dhcpLease_hour=24
-dhcpStart=192.168.0.100
-dhcpv6stateEnabled=0
-dhcpv6statelessEnabled=1
-dhcpv6statePdEnabled=0
-dial_mode=auto_dial
-DMZEnable=0
-DMZIPAddress=
-dns_extern=
-ipv6_dns_extern=
-eth_act_type=
-eth_type=lan
-ethlan=
-ethwan=
-ethwan_dialmode=auto
-ethwan_mode=auto
-ethwan_priority=3
-fast_usb=usblan0
-fastnat_level=2
-fastbr_level=1
-IPPortFilterEnable=0
-IPPortFilterRules_0=
-IPPortFilterRules_1=
-IPPortFilterRules_2=
-IPPortFilterRules_3=
-IPPortFilterRules_4=
-IPPortFilterRules_5=
-IPPortFilterRules_6=
-IPPortFilterRules_7=
-IPPortFilterRules_8=
-IPPortFilterRules_9=
-IPPortFilterRulesv6_0=
-IPPortFilterRulesv6_1=
-IPPortFilterRulesv6_2=
-IPPortFilterRulesv6_3=
-IPPortFilterRulesv6_4=
-IPPortFilterRulesv6_5=
-IPPortFilterRulesv6_6=
-IPPortFilterRulesv6_7=
-IPPortFilterRulesv6_8=
-IPPortFilterRulesv6_9=
-ipv4_fake_subnet=192.0.0.0
-ipv6_fake_subnet=2016::1
-lan_ipaddr=192.168.0.1
-webv6_enable=1
-lan_ipv6addr=fe80::1
-lan_name=br0
-lan_netmask=255.255.255.0
-LanEnable=1
-dhcpDns_cap=192.168.0.2
-lan_ipv6addr_cap=fe80::2
-lan_ipaddr_cap=192.168.0.2
-lan_name_cap=br0
-lan_netmask_cap=255.255.255.0
-LanEnable_cap=1
-mac_ip_list=
-mgmt_quicken_power_on=0
-mtu=1400
-natenable=
-dosenable=0
-need_jilian=1
-nofast_port=21+22+23+25+53+67+68+69+110+115+123+443+500+1352+1723+1990+1991+1992+1993+1994+1995+1996+1997+1998+4500+5060
-nv_save_interval=300
-path_conf=/etc_rw
-path_ro=/etc_ro
-path_log=/tmp/
-netlog_limit=yes
-path_sh=/sbin
-path_tmp=/tmp
-permit_gw=
-permit_ip6=
-permit_nm=255.255.255.0
-PortForwardEnable=0
-PortForwardRules_0=
-PortForwardRules_1=
-PortForwardRules_2=
-PortForwardRules_3=
-PortForwardRules_4=
-PortForwardRules_5=
-PortForwardRules_6=
-PortForwardRules_7=
-PortForwardRules_8=
-PortForwardRules_9=
-PortMapEnable=0
-PortMapRules_0=
-PortMapRules_1=
-PortMapRules_2=
-PortMapRules_3=
-PortMapRules_4=
-PortMapRules_5=
-PortMapRules_6=
-PortMapRules_7=
-PortMapRules_8=
-PortMapRules_9=
-ppp_name=ppp0
-pppoe_password=
-pppoe_username=
-ps_ext1=zvnet1
-ps_ext2=zvnet2
-ps_ext3=zvnet3
-ps_ext4=zvnet4
-ps_ext5=zvnet5
-ps_ext6=zvnet6
-ps_ext7=zvnet7
-ps_ext8=zvnet8
-pswan=wan
-pswan_mode=pdp
-pswan_priority=1
-pswan_cap=zvnet
-RemoteManagement=0
-rootdev_friendlyname=DEMO-UPnP
-rootdev_manufacturer=DEMO
-rootdev_modeldes=XXX
-rootdev_modelname=XXX
-os_url=http://www.demo.com
-serialnumber=See-IMEI
-static_dhcp_enable=1
-static_ethwan_gw=
-static_ethwan_ip=
-static_ethwan_nm=
-static_ethwan_pridns=
-static_ethwan_secdns=
-static_wifiwan_ipaddr=
-static_wifiwan_netmask=
-static_wifiwan_gateway=
-wifiwan_pridns_manual=
-wifiwan_secdns_manual=
-static_wan_gateway=0.0.0.0
-static_wan_ipaddr=0.0.0.0
-static_wan_netmask=0.0.0.0
-static_wan_primary_dns=0.0.0.0
-static_wan_secondary_dns=0.0.0.0
-swlanstr=sw0_lan
-swvlan=sw0
-swwanstr=sw0_wan
-tc_downlink=
-tc_uplink=
-tc_local=1310720
-tc_enable=0
-time_limited=
-time_to_2000_when_restore=yes
-upnpEnabled=0
-usblan=usblan0
-WANPingFilter=0
-websURLFilters=
-wifiwan_priority=2
-DDNS=
-DDNS_Enable=0
-DDNSAccount=
-DDNSPassword=
-DDNSProvider=
-iccidPrevious=
-imeiPrevious=
-registerFlag=0
-registeredRound=
-secsEveryRound=1
-secsEveryTime=1
-regver=4.0
-meid=
-uetype=1
-LocalDomain=m.home
-data_volume_alert_percent=
-data_volume_limit_size=
-data_volume_limit_switch=0
-data_volume_limit_unit=0
-flux_day_total=0
-flux_last_day=
-flux_last_month=
-flux_last_year=
-flux_month_total=0
-flux_set_day=
-flux_set_month=
-flux_set_year=
-monthly_rx_bytes=0
-monthly_time=0
-monthly_tx_bytes=0
-MonthlyConTime_Last=
-dm_nextpollingtime=
-fota_allowRoamingUpdate=0
-fota_dl_pkg_size=0
-fota_update_flag=
-fota_updateIntervalDay=15
-fota_upgrade_result=
-fota_version_delta_id=
-fota_version_delta_url=
-fota_pkg_total_size=0
-fota_version_file_size=
-fota_version_md5sum=
-fota_version_name=
-fota_need_user_confirm_update=0
-fota_need_user_confirm_download=0
-fota_version_force_install=0
-polling_nexttime=0
-pwron_auto_check=0
-fota_updateMode=0
-fota_test_mode=0
-fota_pkg_downloaded=0
-fota_upgrade_result_internal=
-mmi_battery_voltage_line=3090+3300+3450+3490+3510+3540+3550+3570+3580+3600+3620+3650+3670+3710+3740+3780+3850+3900+3950+4000+4060
-mmi_fast_poweron=
-mmi_led_mode=sleep_mode
-mmi_new_sms_blink_flag=1
-mmi_show_pagetab=page1+page2+page3
-mmi_showmode=led
-mmi_task_tab=ctrl_task+key_task
-mmi_temp_voltage_line=951+1201+1692+1736
-mmi_use_protect=
-mmi_use_wifi_usernum=1
-leak_full_panic=
-leak_list_max=
-leak_set_flag=
-monitor_period=300
-netinf_flag=
-skb_all_max=
-skb_data_max=
-skb_fromcp_max=
-skb_max_fail=
-skb_max_panic=
-skb_size_max=
-skb_tocp_max=
-sntp_default_ip=134.170.185.211;131.107.13.100;202.112.31.197;202.112.29.82;202.112.10.36;ntp.gwadar.cn;ntp-sz.chl.la;dns.sjtu.edu.cn;news.neu.edu.cn;dns1.synet.edu.cn;time-nw.nist.gov;pool.ntp.org;europe.pool.ntp.org
-sntp_dst_enable=0
-sntp_other_server0=
-sntp_other_server1=
-sntp_other_server2=
-sntp_server0=time-nw.nist.gov
-sntp_server1=pool.ntp.org
-sntp_server2=europe.pool.ntp.org
-sntp_sync_select_interval_time=30
-sntp_time_set_mode=auto
-sntp_timezone=CST-8
-sntp_timezone_index=0
-assert_errno=
-comm_logsize=16384
-cr_inner_version=V1.0.0B08
-cr_version=V1.0.0B01
-hw_version=PCBMF29S2V1.0.0
-TURNOFF_CHR_NUM=
-watchdog_app=0
-HTTP_SHARE_FILE=
-HTTP_SHARE_STATUS=
-HTTP_SHARE_WR_AUTH=readWrite
-ipv6_pdp_type=
-ipv6_wan_apn=
-Language=zh-cn
-manual_time_day=
-manual_time_hour=
-manual_time_minute=
-manual_time_month=
-manual_time_second=
-manual_time_year=
-sdcard_mode_option=0
-AccessControlList0=
-AccessPolicy0=0
-ACL_mode=0
-AuthMode=WPA2PSK
-Channel=0
-wifi_acs_num=5
-closeEnable=0
-closeTime=
-CountryCode=CN
-DefaultKeyID=0
-DtimPeriod=1
-EncrypType=AES
-EX_APLIST=
-EX_APLIST1=
-EX_AuthMode=
-EX_DefaultKeyID=
-EX_EncrypType=
-EX_mac=
-EX_SSID1=Ufi_
-EX_WEPKEY=
-EX_wifi_profile=
-EX_WPAPSK1=
-FragThreshold=2346
-HideSSID=0
-HT_GI=1
-Key1Str1=12345
-Key2Str1=
-Key3Str1=
-Key4Str1=
-Key1Type=1
-Key2Type=
-Key3Type=
-Key4Type=
-m_AuthMode=WPA2PSK
-m_DefaultKeyID=
-m_EncrypType=AES
-m_HideSSID=0
-m_Key1Str1=1234
-m_Key2Str1=
-m_Key3Str1=
-m_Key4Str1=
-m_Key1Type=1
-m_Key2Type=
-m_Key3Type=
-m_Key4Type=
-m_MAX_Access_num=0
-m_NoForwarding=
-m_show_qrcode_flag=0
-m_SSID=Ufi_
-m_ssid_enable=0
-m_wapiType=
-m_wifi_mac=901D45692A5C
-m_WPAPSK1_aes=
-m_WPAPSK1_encode=MTIzNDU2Nzg=
-MAX_Access_num=32
-MAX_Access_num_bak=32
-NoForwarding=0
-openEnable=0
-openTime=
-operater_ap=
-RekeyInterval=3600
-RTSThreshold=2347
-show_qrcode_flag=0
-Sleep_interval=10
-ssid_write_flag=0
-SSID1=Ufi_
-tsw_sleep_time_hour=
-tsw_sleep_time_min=
-tsw_wake_time_hour=
-tsw_wake_time_min=
-wapiType=
-wifi_force_40m=1
-wifi_11n_cap=1
-wifi_band=b
-wifi_coverage=long_mode
-wifi_hostname_black_list=
-wifi_hostname_white_list=
-wifi_mac=901D45692A5B
-wifi_mac_black_list=
-wifi_mac_white_list=
-wifi_profile=
-wifi_profile1=
-wifi_profile2=
-wifi_profile3=
-wifi_profile4=
-wifi_profile5=
-wifi_profile6=
-wifi_profile7=
-wifi_profile8=
-wifi_profile9=
-wifi_profile_num=0
-wifi_root_dir=
-wifi_sta_connection=0
-wifi_wps_index=1
-wifiEnabled=1
-wifilan=wlan0-va0
-wifilan2=wlan0-va1
-WirelessMode=6
-WPAPSK1_aes=
-WPAPSK1_encode=MTIzNDU2Nzg=
-wps_mode=
-WPS_SSID=
-WscModeOption=0
-monitor_apps=
-at_netdog=
-autorspchannel_list=all
-soctime_switch=0
-uart_control=1
-uart_ctstrs_enable=
-uart_softcontrol_enable=
-uart_wakeup_enable=1
-uart_console_coreid=1
-uart_app_ctrl=5
-special_cmd_list=$MYNETREAD
-ra_mtu_enable=
-##为入网入库芯片认证版本添加 begin
-atcmd_stream1=AT+ZSET="w_instrument",1
-atcmd_stream2=AT^SYSCONFIG=24,0,1,2
-atcmd_stream3=AT+ZSET="csiiot",2
-atcmd_stream4=AT+ZSET="dlparaflg",0
-atcmd_stream5=AT+ZSET="MTNET_TEST",1;AT+ZGAAT=0;AT+ZSET="CMCC_TEST",1;AT+ZSET="LTE_INFO",6348;AT+ZSET="VOICE_SUPPORT",1;AT+ZSET="FDD_RELEASE",7;AT+ZSET="LTE_RELEASE",1;AT+ZSET="UE_PS_RELEASE",5;AT+ZSET="QOS_RELEASE",4;AT+ZSET="TEBS_THRESHOLD",0
-atcmd_stream6=AT+ZSET="MTNET_TEST",1;AT+ZGAAT=0;AT+ZSET="LTE_INFO",6348;AT+ZSET="VOICE_SUPPORT",1;AT+ZSET="FDD_RELEASE",7;AT+ZSET="LTE_RELEASE",1;AT+ZSET="UE_PS_RELEASE",5;AT+ZSET="QOS_RELEASE",4;AT+ZSET="TEBS_THRESHOLD",0;AT+ZSET="IGNORE_SECURITY_SUPPORT",0;AT+ZSET="csifilter",0;AT+ZSET="csrhobandflg",0;AT+ZSET="dlparaflg",1;AT+ZSET="csiup",1;AT+ZSET="rfparaflag",0,0,1,0;AT+ZSET="csiiot",1;AT+ZSET="EXCEPT_RESET",0;AT+ZSET="ISIM_SUPPORT",1;AT+ZIMSTEST="MTNET_TEST",1;AT+ZSET="MANUAL_SEARCH",0
-##为入网入库芯片认证版本添加 end
-#for audio ctrl 
-audio_priority=0123
-customer_type=
-debug_mode=
-cpIndCmdList=+ZMMI+ZURDY+ZUSLOT+ZICCID^MODE+ZPBIC+ZMSRI+CREG+CEREG+CGREG+CGEV
-zephyr_filter_ip=
-wait_timeout=2
-sntp_sync_time=1
-sntp_static_server0=time-nw.nist.gov
-sntp_static_server1=pool.ntp.org
-sntp_static_server2=europe.pool.ntp.org
-vsim_bin_path=/mnt/userdata/vSim.bin
-at_select_timeout=
-mtnet_test_mcc=+001+002+003+004
-at_atv=
-at_atq=
-at_at_d=
-at_ptsnum=
-quick_dial=1
-cap_port_name=/dev/ttyGS0
-customIndCmdList=
-defrt_cid=1
-MaxRtrAdvInterval=1800
-dhcps_in_cap=1
-gw_in_cap=0
-#yes-on  no-off
-cc_at_debug=no
-xlat_enable=0
-telog_path_cap=
-telog_path=
diff --git a/esdk/layers/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc_ref/fs/normal/rootfs/etc/init.d/rcS b/esdk/layers/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc_ref/fs/normal/rootfs/etc/init.d/rcS
deleted file mode 100755
index e7959fe..0000000
--- a/esdk/layers/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc_ref/fs/normal/rootfs/etc/init.d/rcS
+++ /dev/null
@@ -1,39 +0,0 @@
-#!/bin/sh
-
-# Start all init scripts in /etc/rcS.d and /etc/rc5.d
-# executing them in numerical order.
-#
-
-.  /etc/init.d/first.sh
-
-sh /etc/init.d/enter_amt.sh
-if [ $? -eq 0 ]; then
-    echo "enter into amt mode"
-    exit 0
-fi
-
-for i in /etc/rcS.d/S??* ;do
-
-     # Ignore dangling symlinks (if any).
-     [ ! -f "$i" ] && continue
-
-     case "$i" in
-	*.sh)
-	    # Source shell script for speed.
-	    (
-		trap - INT QUIT TSTP
-		set start
-		. $i
-	    )
-	    ;;
-	*)
-	    # No sh extension, so fork subprocess.
-	    $i start
-	    ;;
-    esac
-done
-
-.  /etc/rc.local
-
-exit 0
-
diff --git a/esdk/layers/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc_ref/fs/normal/rootfs/etc/init.d/zcatlog_config.sh b/esdk/layers/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc_ref/fs/normal/rootfs/etc/init.d/zcatlog_config.sh
deleted file mode 100755
index 5c6648f..0000000
--- a/esdk/layers/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc_ref/fs/normal/rootfs/etc/init.d/zcatlog_config.sh
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/bin/sh
-
-ramdump_mode=`nv get ramdump_mode`
-
-if [ -e /proc/sys/ramdump_ap/ramdump_start_addr ]; then
-  if [ "$ramdump_mode" == "CAPEMMC" ]; then
-    ramdump_dev=`nv get ramdump_emmc_device`
-    if [ -b $ramdump_dev ]; then
-       ramdump_start=`fdisk -l | grep $ramdump_dev | awk '{ print $4 }'`
-       ramdump_save_size=`fdisk -l | grep $ramdump_dev | awk '{ print $6 }'`
-       echo $ramdump_start > /proc/sys/ramdump_ap/ramdump_start_addr
-       echo $ramdump_save_size > /proc/sys/ramdump_ap/ramdump_emmc_size
-    else
-       echo "[zxic_ramdump]$ramdump_dev is not exist!"
-    fi
-  else
-    if [ -b $ramdump_dev ]; then
-      echo 0 > /proc/sys/ramdump_ap/ramdump_start_addr
-    fi
-  fi
-fi
-# 0 for usb, 1 for net
-if [ -e /proc/sys/zcatkern/log_com_mode ]; then
-  zcat_com_mode=`nv get zcat_mode`
-  if [ "$zcat_com_mode" == "net" ]; then
-    echo 1 > /proc/sys/zcatkern/log_com_mode
-  else
-    echo 0 > /proc/sys/zcatkern/log_com_mode
-  fi
-#  sh /etc/zcatlog_monitor.sh &
-fi
-
diff --git a/esdk/layers/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc_ref/fs/normal/rootfs/etc/profile b/esdk/layers/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc_ref/fs/normal/rootfs/etc/profile
deleted file mode 100755
index d8cbfdf..0000000
--- a/esdk/layers/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc_ref/fs/normal/rootfs/etc/profile
+++ /dev/null
@@ -1,2 +0,0 @@
-
-PATH="/sbin:/bin:/usr/sbin:/usr/bin:/mnt/oem/bin"
diff --git a/esdk/layers/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc_ref/fs/normal/rootfs/etc_ro/default/default_parameter_sys b/esdk/layers/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc_ref/fs/normal/rootfs/etc_ro/default/default_parameter_sys
deleted file mode 100755
index da7ced4..0000000
--- a/esdk/layers/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc_ref/fs/normal/rootfs/etc_ro/default/default_parameter_sys
+++ /dev/null
@@ -1,458 +0,0 @@
-
-######SOFTAPרÓà START###################################
-check_roam=yes
-gsm_signalbar0_low=0
-gsm_signalbar0_high=0
-gsm_signalbar1_low=1
-gsm_signalbar1_high=2
-gsm_signalbar2_low=3
-gsm_signalbar2_high=6
-gsm_signalbar3_low=7
-gsm_signalbar3_high=9
-gsm_signalbar4_low=10
-gsm_signalbar4_high=12
-gsm_signalbar5_low=13
-gsm_signalbar5_high=31
-wcdma_signalbar0_low=0
-wcdma_signalbar0_high=0
-wcdma_signalbar1_low=1
-wcdma_signalbar1_high=8
-wcdma_signalbar2_low=9
-wcdma_signalbar2_high=16
-wcdma_signalbar3_low=17
-wcdma_signalbar3_high=22
-wcdma_signalbar4_low=23
-wcdma_signalbar4_high=28
-wcdma_signalbar5_low=29
-wcdma_signalbar5_high=91
-tds_signalbar0_low=0
-tds_signalbar0_high=0
-tds_signalbar1_low=1
-tds_signalbar1_high=8
-tds_signalbar2_low=9
-tds_signalbar2_high=16
-tds_signalbar3_low=17
-tds_signalbar3_high=22
-tds_signalbar4_low=23
-tds_signalbar4_high=28
-tds_signalbar5_low=29
-tds_signalbar5_high=91
-lte_signalbar0_low=0
-lte_signalbar0_high=0
-lte_signalbar1_low=1
-lte_signalbar1_high=25
-lte_signalbar2_low=26
-lte_signalbar2_high=32
-lte_signalbar3_low=33
-lte_signalbar3_high=38
-lte_signalbar4_low=39
-lte_signalbar4_high=44
-lte_signalbar5_low=45
-lte_signalbar5_high=97
-need_cops_number_format=yes
-need_display_searching_status=yes
-need_restart_when_sim_insert=no
-need_support_pb=no
-need_support_sms=no
-network_need_gsm=yes
-network_need_tds=yes
-product_model=MF910W
-roam_setting_option=on
-use_lock_net=no
-network_category_based_on=act
-admin_user=admin
-appKeyMobile=A100000853
-Brand=DEMO
-hostName=dm.wo.com.cn
-Intype=DEMO
-Manuf=
-Model=
-portNum=6001
-registerDmType=0
-secsTime=1
-versionPrevious=
-wa_version=
-OSVersion=1
-OS=TOS
-urlMobile=
-DNS_proxy=
-#l.yang modify fot T106BUG-387 start 
-dnsmasqfile=/mnt/userdata/log/dnsmasq.log
-#l.yang modify fot T106BUG-387 end
-dnsmasqfileSize=1024
-lan_domain_Enabled=1
-auto_connect_when_limited=no
-is_traffic_aline_on=no
-is_traffic_alining=no
-is_traffic_limit_on=no
-keep_online_when_limited=no
-traffic_sms_number=0
-update_type=mifi_fota
-
-fota_device_type=mdl
-fota_models=ZTE7520V3
-fota_oem=ZTE
-fota_platform=ZX297520
-fota_dm_vendor=rs
-fota_token_rs=8msgzdxxftrtys0irnuifh7o
-fota_product_id=1553742041
-fota_product_secret=23b3faf2dafb42dfb3382c0d7d66315b
-fota_app_version=2
-fota_network_type=WIFI
-fota_token_zx=7CBE016400F65621740A04E742E6FB12
-fota_dl_url_zx=
-fota_chk_url_zx=
-fota_reg_url_zx=
-fota_report_dlr_url_zx=
-fota_report_upgr_url_zx=
-fota_report_sales_url_zx=
-fota_token_gs=97a53ee9f45adfe53c762a72f83f6f43
-fota_dl_url_gs=
-fota_chk_url_gs=
-fota_reg_url_gs=
-fota_report_dlr_url_gs=
-fota_report_upgr_url_gs=
-fota_report_sales_url_gs=
-fota_update_space_threshold=800
-fota_ab_upgrade_status=6
-fota_ab_upgrade_total_size=0
-fota_ab_upgrade_updated_size=0
-fota_ab_aa_sync_status=2
-#l.yang modify fot T106BUG-387 start
-fota_ab_log_path=/mnt/userdata/zte_fota_ab/upi_ab.log
-#l.yang modify fot T106BUG-387 end
-fota_aa_auto_sync=0
-Login=admin
-Password=
-sntp_server_count=3
-MAX_Station_num=32
-MAX_Station_num_bak=0
-MAX_Access_num_bbak=0
-MAX_Chip_Capability=32
-wifi_key_gen_type=MAC
-wifi_key_len=8
-wifi_key_only_digit=y
-wifi_lte_intr=1
-wifi_ssid_gen_with_mac_lastbyte=6
-wifi_key_gen_with_mac_lastbyte=8
-wifi_mac_num=2
-wifiwan=wlan0-vxd
-wifiwan_mode=dhcp
-idle_time="600"
-product_type=1
-errnofile=/usr/netlog/errno.log
-errnofileSize=1024
-hotplugfile=/usr/netlog/hotplug.log
-hotplugfileSize=1024
-mynetlinkfile=/usr/netlog/mynetlink.log
-mynetlinkfileSize=1024
-telnetd_enable=n
-
-#syslogdÏà¹ØÅäÖÃ
-syslog_file_size=1
-syslog_file_num=5
-#jb.qi change for log on 20240110 start
-print_level=1
-syslog_level=1
-#jb.qi change for log on 20240110 end
-
-skb_debug=
-seclog_switch=
-################SOFTAPרÓà END#####################################
-
-######USB¶Ë¿ÚÅäÖÃ#######
-
-##########usb/rj45µÈÈȰβåÏà¹ØÂ·¾¶##############
-#rj45³õʼ״̬·¾¶
-rj45_plugstate_path=/sys/kernel/eth_debug/eth_state
-#usbÍø¿ÚÃû·¾¶
-usb_name_path=/sys/dwc_usb/usbconfig/netname
-#usb¸÷Íø¿Ú״̬·¾¶
-usb_plugstate_path=/sys/dwc_usb/usbconfig/
-################################################
-
-#ͨ¹ýgpio¼ì²â²å°Î£¬ÓÃÓÚ×Ô¶¯»¯µ÷ÊÔ
-usb_gpio_detect=1
-
-#ÅäÖÃÊÇ·ñÓйâÅÌ
-cdrom_state=0
-
-#cdromµÚ¶þ½×¶Îö¾Ù£º0Ϊ²»ÐèҪö¾Ù£¬1ΪÐèҪö¾ÙÇÒÐèÒª¹ÒÔØ½éÖÊ£¬2Ϊ²»ÐèÒª¹ÒÔØ½éÖÊ#
-need_support_cdrom_step2=0
-#ÅäÖÃWindowsÏÂÍø¿¨ÀàÐÍ
-select_type=select_rndis
-
-####
-#ÅäÖÃÑз¢Ä£Ê½usbÉ豸¶Ë¿Ú×éºÏ
-usb_devices_debug=diag,adb,serial,acm
-
-
-#ÅäÖÃÓû§Ä£Ê½ÊÇ·ñʹÓÃÍø¿¨
-usb_vnic_user=on
-
-#ÅäÖÃÓû§Ä£Ê½usbÉ豸¶Ë¿Ú×éºÏ
-usb_devices_user=adb,acm
-
-#ÅäÖÃÉú²úģʽusbÉ豸¶Ë¿Ú×éºÏ
-usb_devices_factory=serial,diag
-
-#ÅäÖÃAMTģʽusbÉ豸¶Ë¿Ú×éºÏ
-usb_devices_amt=serial,diag
-
-#ÅäÖÃÑз¢Ä£Ê½acm´®¿Ú¸öÊý
-usb_acm_num_debug=1
-
-#ÅäÖÃÑз¢Ä£Ê½serial´®¿Ú¸öÊý
-usb_serial_num_debug=1
-
-#ÅäÖÃÓû§Ä£Ê½acm´®¿Ú¸öÊý
-usb_acm_num_user=1
-
-#ÅäÖÃÓû§Ä£Ê½serial´®¿Ú¸öÊý
-usb_serial_num_user=0
-
-#ÅäÖÃÉú²úģʽacm´®¿Ú¸öÊý
-usb_acm_num_factory=0
-
-#ÅäÖÃÉú²úģʽserial´®¿Ú¸öÊý
-usb_serial_num_factory=1
-
-#ÅäÖÃAMTģʽacm´®¿Ú¸öÊý
-usb_acm_num_amt=0
-
-#ÅäÖÃAMTģʽserial´®¿Ú¸öÊý
-usb_serial_num_amt=2
-
-#wangzhen
-#ÅäÖÃdebugģʽmass_storageµÄlunµÄģʽ
-usb_lun_type_debug=MMC
-
-#ÅäÖÃuserģʽmass_storageµÄlunµÄģʽ
-usb_lun_type_user=MMC
-
-#ÅäÖÃcdromģʽmass_storageµÄlunµÄģʽ
-usb_lun_type_cdrom=MMC
-###
-
-#ÅäÖÃÑз¢Ä£Ê½Íø¿ÚΪNDISʱÉ豸µÄPID
-PID_TSP_NDIS=0582
-###
-
-#ÅäÖÃÑз¢Ä£Ê½Íø¿ÚΪRNDISʱÉ豸µÄPID
-PID_TSP_RNDIS=0582
-
-#ÅäÖÃÑз¢Ä£Ê½Íø¿ÚΪECMʱÉ豸µÄPID
-PID_TSP_ECM=0582
-
-#ÅäÖÃÑз¢Ä£Ê½Ò쳣ʱÉ豸µÄPID
-PID_TEST=ff00
-
-#ÅäÖÃÑÛͼģʽʱÉ豸µÄPID
-PID_YT=0580
-
-#ÅäÖÃÑз¢Ä£Ê½¹âÅÌCDROMµÄPID
-PID_TSP_CDROM=0548
-
-#####
-
-#ÅäÖÃÓû§Ä£Ê½Ä£Ê½¹âÅÌCDROMµÄPID
-PID_USER_CDROM=1225
-
-#####
-#######
-#ÅäÖÃÓû§Ä£Ê½Íø¿ÚΪRNDISʱÉ豸µÄPID
-PID_USER_RNDIS=0585
-
-#ÅäÖÃÓû§Ä£Ê½Íø¿ÚΪECMʱÉ豸µÄPID
-PID_USER_ECM=0585
-
-#ÅäÖÃÓû§Ä£Ê½Íø¿ÚΪNDISʱÉ豸µÄPID
-PID_USER_NDIS=0583
-
-#ÅäÖÃÓû§Ä£Ê½Ã»ÓÐÍø¿ÚʱÉ豸µÄPID
-PID_USER_NOVNIC=0586
-######
-
-#ÅäÖÃËÀ»útrapʱÉ豸µÄPID
-PID_TRAP=0197
-
-#ÅäÖÃÉú²úģʽʱÉ豸µÄPID
-PID_FACTORY=0534
-
-#ÅäÖÃAMTģʽʱÉ豸µÄPID
-PID_AMT=0201
-
-#ÅäÖùػú³äµçʱÉ豸µÄPID
-PID_FASTPOWEROFF=2004
-
-#ÅäÖÃÉ豸µÄVID
-VID_TSP=19D2
-
-#ÅäÖÃÊÇ·ñÓÃchipid×÷ΪÉ豸µÄiSerial×Ö·û´®
-usb_sernum_chipid=0
-
-#ÅäÖÃÉ豸µÄiSerial×Ö·û´®
-SERIAL_TSP=1234567890ABCDEF
-
-#ÅäÖÃÑз¢Ä£Ê½É豸µÄReleaseID
-RELEASEID_TSP=0100
-
-#ÅäÖÃÓû§Ä£Ê½É豸µÄReleaseID
-RELEASEID_USER=0101
-
-#ÅäÖÃÉ豸µÄmanufacturer×Ö·û´®
-MANUFACTURER_TSP=DEMO,Incorporated
-
-#ÅäÖÃÉ豸µÄproduct×Ö·û´®
-PRODUCT_TSP=DEMO Mobile Boardband
-
-#ÅäÖÃÉ豸µÄconfig×Ö·û´®
-CONFIG_TSP=DEMO Configuration
-
-#cdrom lunµÄvendor×Ö·û´®
-VENDOR_MS_CDROM=DEMO
-
-#cdrom lunµÄproduct×Ö·û´®
-PRODUCT_MS_CDROM=USB SCSI CD-ROM
-
-#cdrom lunµÄrelease×Ö·û´®
-RELEASE_MS_CDROM=2.31
-
-#cdrom lunµÄinquiry×Ö·û´®
-INQUIRY_MS_CDROM=DEMO USB SCSI CD-ROM 2.31
-#mmc lunµÄvendor×Ö·û´®
-VENDOR_MS_MMC=DEMO
-
-#mmc lunµÄproduct×Ö·û´®
-PRODUCT_MS_MMC=MMC Storage
-
-#mmc lunµÄrelease×Ö·û´®
-RELEASE_MS_MMC=2.31
-
-#SD½éÖÊ·¾¶
-usb_tcard_lun_path=/dev/mmcblk0
-
-#mmc lunµÄinquiry×Ö·û´®
-INQUIRY_MS_MMC=DEMO MMC Storage 2.31
-
-#ÅäÖÃECMÍø¿¨¸öÊý
-ECM_NUM=1
-
-#ÅäÖÃRNDISÍø¿¨×î´ó×é°üÊý
-RNDIS_PKT_NUM=10
-
-
-###²¨ÌØÂÊ×ÔÊÊÓ¦¿ª¹Ø###
-self_adaption_port=
-###ijЩ¶Ë¿Ú²»ÐèÒªÏòÓ¦ÓÃÉϱ¨¶Ë¿Ú×¼±¸ºÃÏûÏ¢###
-#xf.li modify for open uart1
-notify_forbiden_ports=/dev/ttyS0
-#xf.li modify for open uart1
-
-###adbĬÈϹÒÔØºË,0:ap;1:cap###
-adb_core_id=1
-######USB¶Ë¿ÚÅäÖÃEND#######
-
-######CP²àNVÅäÖÃÐÅÏ¢#######
-#ÄÚ²¿Èí¼þ°æ±¾ºÅ
-zversion=K318V1.0.0B03
-#ÍⲿÈí¼þ°æ±¾ºÅ
-zcgmr=DEMO_V1.0.0B03
-#Ó²¼þ°æ±¾ºÅ
-zhver=V0.1
-#ÄÚ²¿»úÐÍ
-zcgmm=K318
-#Íⲿ»úÐÍ
-zcgmw=K318
-#³§ÉÌÐÅÏ¢
-zcgmi=DEMO
-#SSIDºÅ
-zssid=0
-#WifiKeyµÄÖµ
-zwifikey=0
-#ËøÍø×î´ó½âËø´ÎÊý£¬ËøÍøÄ£¿éʹÓÃ
-zunlocktimes=0
-#°æ±¾Ä£Ê½ÀàÐÍ£¬Õý³£°æ±¾/¹Ò²à°æ±¾
-zversionmode=0
-#ÖÇÄܶÌÐŹ¦ÄÜ¿ª¹Ø
-zisms=0
-#DM¹¦ÄÜ¿ª¹Ø,0:¹Ø±Õ£¬1ÒÆ¶¯£¬2ÁªÍ¨£¬3µçÐÅ
-zdmreg=0
-#ÁªÍ¨DM ×¢²á¿ª»úµÈ´ýʱ¼ä, 1~60 ÓÐЧ£¬µ¥Î»·ÖÖÓ£¬ÆäËûÊýÖµ: ÎÞЧֵ
-zdmregtime=0
-
-#¹¤¾ßzlog_agent´æÈ¡
-zcat_mode=CPUSB
-zlog_num=10
-zlog_size=100
-#jb.qi change for nv_log on 20240110 start
-zlog_path=/mnt/oemdata/zcat
-rule_file=/etc_ro/logrule/all_3.rule
-#jb.qi change for nv_log on 20240110 end
-
-#ramdump´æ´¢Ä£Ê½
-#no,auto,yes
-ramdump_export=no
-#USB or CAPEMMC or CAPFLASH
-ramdump_mode=USB
-ramdump_emmc_device=/dev/mmcblk1p1
-ramdump_flash_device=/dev/mtd17
-ramdump_path=/mnt/oemdata
-
-#ÕÕÏà»úͼƬ·Ö±æÂÊÏÔʾ¿ØÖÆ
-zcamera_interprolation=1
-#×Ô¶¯ËÑÍø·½Ê½ÍøÂç½ÓÈë´ÎÐò
-auto_acqorder=12
-######CP²àNVÅäÖÃÐÅÏ¢END#######
-#for volte
-MTNET_TEST=0
-NSIOT_TEST=0
-amrw=1
-cvmod_ims=3
-EM_CALL_SUPPORT=0
-EMCALL_TO_NORMAL=0
-IMS_APN=
-IMS_CONFURI=
-IMS_CC_URI_TYPE=0
-IMS_SMS_URI_TYPE=0
-IMS_REG_EXPIRES=600000
-IMS_REG_SUB_EXPIRES=600000
-NET_IMS_CAP=0
-UDP_THRESH=1300
-IPSEC_DISABLE=0
-PRECONDTION_NOT_SUPPORT=0
-WAIT_RPT_TIME=1000
-OCT_ALGN_AMR=0
-SMS_OVER_IP=1
-IMS_USER_AGENT=
-BSF_PORT=8080
-XCAP_PORT=80
-UT_APN=
-380_THEN_CSFB=0
-DTMF_RFC4733=0
-DIALOG_FORK=0
-DATA_CENTRIC=0
-not_supp_hmac_sha1_96=0
-not_supp_hmac_md5_96=0
-not_supp_des_ede3_cbc=0
-not_supp_aes_cbc=0
-IMS_PCSCF_PORT=5060
-G_IMS_CMGF=0
-ECALL_MTTEST=0
-#jb.qi change for T106BUG-655 start
-POWER_CONTROL=1
-#jb.qi change for T106BUG-655 end
-NOT_KEEP_TCP_CONN=1
-T3396_SUPPORT=0
-T3396_CAUSE_REASON=8,27,32,33
-T3396_DURATION=720
-T3396_COUNTS=3
-ECALL_T2_TIMER=3600
-NGECALL_FORTEST=0
-CUSTOMER_FLAG=0
-#for volte end
-DEBUG_INFO_DISABLE=0
-DEBUG_INFO_FILE_PATH=/mnt/userdata
-DEBUG_INFO_FILE_NUM=2
-DEBUG_INFO_FILE_TOTAL_SIZE=1
-#debug info end
diff --git a/esdk/layers/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc_ref/fs/normal/rootfs/sbin/fdisk_emmc.sh b/esdk/layers/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc_ref/fs/normal/rootfs/sbin/fdisk_emmc.sh
deleted file mode 100755
index 492f934..0000000
--- a/esdk/layers/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc_ref/fs/normal/rootfs/sbin/fdisk_emmc.sh
+++ /dev/null
@@ -1,37 +0,0 @@
-#!/bin/sh
-
-fdisk /dev/mmcblk1 <<EOF
-d
-5
-d
-4
-d
-3
-d
-2
-d
-1
-n
-p
-1 
-
-+200M
-n
-p
-2
-
-+2048M
-n
-p
-3
-
-+2048M
-n
-e
-
-
-n
-
-
-w
-EOF
\ No newline at end of file
diff --git a/esdk/layers/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc_systemd/fs/normal/rootfs/etc_ro/default/default_parameter_sys b/esdk/layers/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc_systemd/fs/normal/rootfs/etc_ro/default/default_parameter_sys
deleted file mode 100755
index 57c1ad7..0000000
--- a/esdk/layers/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc_systemd/fs/normal/rootfs/etc_ro/default/default_parameter_sys
+++ /dev/null
@@ -1,446 +0,0 @@
-
-######SOFTAPרÓà START###################################
-check_roam=yes
-gsm_signalbar0_low=0
-gsm_signalbar0_high=0
-gsm_signalbar1_low=1
-gsm_signalbar1_high=2
-gsm_signalbar2_low=3
-gsm_signalbar2_high=6
-gsm_signalbar3_low=7
-gsm_signalbar3_high=9
-gsm_signalbar4_low=10
-gsm_signalbar4_high=12
-gsm_signalbar5_low=13
-gsm_signalbar5_high=31
-wcdma_signalbar0_low=0
-wcdma_signalbar0_high=0
-wcdma_signalbar1_low=1
-wcdma_signalbar1_high=8
-wcdma_signalbar2_low=9
-wcdma_signalbar2_high=16
-wcdma_signalbar3_low=17
-wcdma_signalbar3_high=22
-wcdma_signalbar4_low=23
-wcdma_signalbar4_high=28
-wcdma_signalbar5_low=29
-wcdma_signalbar5_high=91
-tds_signalbar0_low=0
-tds_signalbar0_high=0
-tds_signalbar1_low=1
-tds_signalbar1_high=8
-tds_signalbar2_low=9
-tds_signalbar2_high=16
-tds_signalbar3_low=17
-tds_signalbar3_high=22
-tds_signalbar4_low=23
-tds_signalbar4_high=28
-tds_signalbar5_low=29
-tds_signalbar5_high=91
-lte_signalbar0_low=0
-lte_signalbar0_high=0
-lte_signalbar1_low=1
-lte_signalbar1_high=25
-lte_signalbar2_low=26
-lte_signalbar2_high=32
-lte_signalbar3_low=33
-lte_signalbar3_high=38
-lte_signalbar4_low=39
-lte_signalbar4_high=44
-lte_signalbar5_low=45
-lte_signalbar5_high=97
-need_cops_number_format=yes
-need_display_searching_status=yes
-need_restart_when_sim_insert=no
-need_support_pb=no
-need_support_sms=no
-network_need_gsm=yes
-network_need_tds=yes
-product_model=MF910W
-roam_setting_option=on
-use_lock_net=no
-network_category_based_on=act
-admin_user=admin
-appKeyMobile=A100000853
-Brand=DEMO
-hostName=dm.wo.com.cn
-Intype=DEMO
-Manuf=
-Model=
-portNum=6001
-registerDmType=0
-secsTime=1
-versionPrevious=
-wa_version=
-OSVersion=1
-OS=TOS
-urlMobile=
-DNS_proxy=
-dnsmasqfile=/mnt/userdata/log/dnsmasq.log
-dnsmasqfileSize=1024
-lan_domain_Enabled=1
-auto_connect_when_limited=no
-is_traffic_aline_on=no
-is_traffic_alining=no
-is_traffic_limit_on=no
-keep_online_when_limited=no
-traffic_sms_number=0
-update_type=mifi_fota
-
-fota_device_type=mdl
-fota_models=ZTE7520V3
-fota_oem=ZTE
-fota_platform=ZX297520
-fota_dm_vendor=rs
-fota_token_rs=8msgzdxxftrtys0irnuifh7o
-fota_product_id=1553742041
-fota_product_secret=23b3faf2dafb42dfb3382c0d7d66315b
-fota_app_version=2
-fota_network_type=WIFI
-fota_token_zx=7CBE016400F65621740A04E742E6FB12
-fota_dl_url_zx=
-fota_chk_url_zx=
-fota_reg_url_zx=
-fota_report_dlr_url_zx=
-fota_report_upgr_url_zx=
-fota_report_sales_url_zx=
-fota_token_gs=97a53ee9f45adfe53c762a72f83f6f43
-fota_dl_url_gs=
-fota_chk_url_gs=
-fota_reg_url_gs=
-fota_report_dlr_url_gs=
-fota_report_upgr_url_gs=
-fota_report_sales_url_gs=
-fota_update_space_threshold=800
-fota_ab_upgrade_status=6
-fota_ab_upgrade_total_size=0
-fota_ab_upgrade_updated_size=0
-fota_ab_aa_sync_status=2
-fota_ab_log_path=/mnt/userdata/zte_fota_ab/upi_ab.log
-fota_aa_auto_sync=0
-Login=admin
-Password=
-sntp_server_count=3
-MAX_Station_num=32
-MAX_Station_num_bak=0
-MAX_Access_num_bbak=0
-MAX_Chip_Capability=32
-wifi_key_gen_type=MAC
-wifi_key_len=8
-wifi_key_only_digit=y
-wifi_lte_intr=1
-wifi_ssid_gen_with_mac_lastbyte=6
-wifi_key_gen_with_mac_lastbyte=8
-wifi_mac_num=2
-wifiwan=wlan0-vxd
-wifiwan_mode=dhcp
-idle_time="600"
-product_type=1
-errnofile=/usr/netlog/errno.log
-errnofileSize=1024
-hotplugfile=/usr/netlog/hotplug.log
-hotplugfileSize=1024
-mynetlinkfile=/usr/netlog/mynetlink.log
-mynetlinkfileSize=1024
-telnetd_enable=n
-
-#syslogdÏà¹ØÅäÖÃ
-syslog_file_size=1
-syslog_file_num=5
-print_level=2
-syslog_level=4
-
-skb_debug=
-seclog_switch=
-################SOFTAPרÓà END#####################################
-
-######USB¶Ë¿ÚÅäÖÃ#######
-
-##########usb/rj45µÈÈȰβåÏà¹ØÂ·¾¶##############
-#rj45³õʼ״̬·¾¶
-rj45_plugstate_path=/sys/kernel/eth_debug/eth_state
-#usbÍø¿ÚÃû·¾¶
-usb_name_path=/sys/dwc_usb/usbconfig/netname
-#usb¸÷Íø¿Ú״̬·¾¶
-usb_plugstate_path=/sys/dwc_usb/usbconfig/
-################################################
-
-#ͨ¹ýgpio¼ì²â²å°Î£¬ÓÃÓÚ×Ô¶¯»¯µ÷ÊÔ
-usb_gpio_detect=1
-
-#ÅäÖÃÊÇ·ñÓйâÅÌ
-cdrom_state=0
-
-#cdromµÚ¶þ½×¶Îö¾Ù£º0Ϊ²»ÐèҪö¾Ù£¬1ΪÐèҪö¾ÙÇÒÐèÒª¹ÒÔØ½éÖÊ£¬2Ϊ²»ÐèÒª¹ÒÔØ½éÖÊ#
-need_support_cdrom_step2=0
-#ÅäÖÃWindowsÏÂÍø¿¨ÀàÐÍ
-select_type=select_rndis
-
-####
-#ÅäÖÃÑз¢Ä£Ê½usbÉ豸¶Ë¿Ú×éºÏ
-usb_devices_debug=diag,adb,serial,acm
-
-
-#ÅäÖÃÓû§Ä£Ê½ÊÇ·ñʹÓÃÍø¿¨
-usb_vnic_user=on
-
-#ÅäÖÃÓû§Ä£Ê½usbÉ豸¶Ë¿Ú×éºÏ
-usb_devices_user=adb,acm
-
-#ÅäÖÃÉú²úģʽusbÉ豸¶Ë¿Ú×éºÏ
-usb_devices_factory=serial,diag
-
-#ÅäÖÃAMTģʽusbÉ豸¶Ë¿Ú×éºÏ
-usb_devices_amt=serial,diag
-
-#ÅäÖÃÑз¢Ä£Ê½acm´®¿Ú¸öÊý
-usb_acm_num_debug=1
-
-#ÅäÖÃÑз¢Ä£Ê½serial´®¿Ú¸öÊý
-usb_serial_num_debug=1
-
-#ÅäÖÃÓû§Ä£Ê½acm´®¿Ú¸öÊý
-usb_acm_num_user=1
-
-#ÅäÖÃÓû§Ä£Ê½serial´®¿Ú¸öÊý
-usb_serial_num_user=0
-
-#ÅäÖÃÉú²úģʽacm´®¿Ú¸öÊý
-usb_acm_num_factory=0
-
-#ÅäÖÃÉú²úģʽserial´®¿Ú¸öÊý
-usb_serial_num_factory=1
-
-#ÅäÖÃAMTģʽacm´®¿Ú¸öÊý
-usb_acm_num_amt=0
-
-#ÅäÖÃAMTģʽserial´®¿Ú¸öÊý
-usb_serial_num_amt=2
-
-#wangzhen
-#ÅäÖÃdebugģʽmass_storageµÄlunµÄģʽ
-usb_lun_type_debug=MMC
-
-#ÅäÖÃuserģʽmass_storageµÄlunµÄģʽ
-usb_lun_type_user=MMC
-
-#ÅäÖÃcdromģʽmass_storageµÄlunµÄģʽ
-usb_lun_type_cdrom=MMC
-###
-
-#ÅäÖÃÑз¢Ä£Ê½Íø¿ÚΪNDISʱÉ豸µÄPID
-PID_TSP_NDIS=0582
-###
-
-#ÅäÖÃÑз¢Ä£Ê½Íø¿ÚΪRNDISʱÉ豸µÄPID
-PID_TSP_RNDIS=0582
-
-#ÅäÖÃÑз¢Ä£Ê½Íø¿ÚΪECMʱÉ豸µÄPID
-PID_TSP_ECM=0582
-
-#ÅäÖÃÑз¢Ä£Ê½Ò쳣ʱÉ豸µÄPID
-PID_TEST=ff00
-
-#ÅäÖÃÑÛͼģʽʱÉ豸µÄPID
-PID_YT=0580
-
-#ÅäÖÃÑз¢Ä£Ê½¹âÅÌCDROMµÄPID
-PID_TSP_CDROM=0548
-
-#####
-
-#ÅäÖÃÓû§Ä£Ê½Ä£Ê½¹âÅÌCDROMµÄPID
-PID_USER_CDROM=1225
-
-#####
-#######
-#ÅäÖÃÓû§Ä£Ê½Íø¿ÚΪRNDISʱÉ豸µÄPID
-PID_USER_RNDIS=0585
-
-#ÅäÖÃÓû§Ä£Ê½Íø¿ÚΪECMʱÉ豸µÄPID
-PID_USER_ECM=0585
-
-#ÅäÖÃÓû§Ä£Ê½Íø¿ÚΪNDISʱÉ豸µÄPID
-PID_USER_NDIS=0583
-
-#ÅäÖÃÓû§Ä£Ê½Ã»ÓÐÍø¿ÚʱÉ豸µÄPID
-PID_USER_NOVNIC=0586
-######
-
-#ÅäÖÃËÀ»útrapʱÉ豸µÄPID
-PID_TRAP=0197
-
-#ÅäÖÃÉú²úģʽʱÉ豸µÄPID
-PID_FACTORY=0534
-
-#ÅäÖÃAMTģʽʱÉ豸µÄPID
-PID_AMT=0201
-
-#ÅäÖùػú³äµçʱÉ豸µÄPID
-PID_FASTPOWEROFF=2004
-
-#ÅäÖÃÉ豸µÄVID
-VID_TSP=19D2
-
-#ÅäÖÃÊÇ·ñÓÃchipid×÷ΪÉ豸µÄiSerial×Ö·û´®
-usb_sernum_chipid=0
-
-#ÅäÖÃÉ豸µÄiSerial×Ö·û´®
-SERIAL_TSP=1234567890ABCDEF
-
-#ÅäÖÃÑз¢Ä£Ê½É豸µÄReleaseID
-RELEASEID_TSP=0100
-
-#ÅäÖÃÓû§Ä£Ê½É豸µÄReleaseID
-RELEASEID_USER=0101
-
-#ÅäÖÃÉ豸µÄmanufacturer×Ö·û´®
-MANUFACTURER_TSP=DEMO,Incorporated
-
-#ÅäÖÃÉ豸µÄproduct×Ö·û´®
-PRODUCT_TSP=DEMO Mobile Boardband
-
-#ÅäÖÃÉ豸µÄconfig×Ö·û´®
-CONFIG_TSP=DEMO Configuration
-
-#cdrom lunµÄvendor×Ö·û´®
-VENDOR_MS_CDROM=DEMO
-
-#cdrom lunµÄproduct×Ö·û´®
-PRODUCT_MS_CDROM=USB SCSI CD-ROM
-
-#cdrom lunµÄrelease×Ö·û´®
-RELEASE_MS_CDROM=2.31
-
-#cdrom lunµÄinquiry×Ö·û´®
-INQUIRY_MS_CDROM=DEMO USB SCSI CD-ROM 2.31
-#mmc lunµÄvendor×Ö·û´®
-VENDOR_MS_MMC=DEMO
-
-#mmc lunµÄproduct×Ö·û´®
-PRODUCT_MS_MMC=MMC Storage
-
-#mmc lunµÄrelease×Ö·û´®
-RELEASE_MS_MMC=2.31
-
-#SD½éÖÊ·¾¶
-usb_tcard_lun_path=/dev/mmcblk0
-
-#mmc lunµÄinquiry×Ö·û´®
-INQUIRY_MS_MMC=DEMO MMC Storage 2.31
-
-#ÅäÖÃECMÍø¿¨¸öÊý
-ECM_NUM=1
-
-#ÅäÖÃRNDISÍø¿¨×î´ó×é°üÊý
-RNDIS_PKT_NUM=10
-
-
-###²¨ÌØÂÊ×ÔÊÊÓ¦¿ª¹Ø###
-self_adaption_port=
-###ijЩ¶Ë¿Ú²»ÐèÒªÏòÓ¦ÓÃÉϱ¨¶Ë¿Ú×¼±¸ºÃÏûÏ¢###
-notify_forbiden_ports=
-
-###adbĬÈϹÒÔØºË,0:ap;1:cap###
-adb_core_id=1
-######USB¶Ë¿ÚÅäÖÃEND#######
-
-######CP²àNVÅäÖÃÐÅÏ¢#######
-#ÄÚ²¿Èí¼þ°æ±¾ºÅ
-zversion=K318V1.0.0B03
-#ÍⲿÈí¼þ°æ±¾ºÅ
-zcgmr=DEMO_V1.0.0B03
-#Ó²¼þ°æ±¾ºÅ
-zhver=V0.1
-#ÄÚ²¿»úÐÍ
-zcgmm=K318
-#Íⲿ»úÐÍ
-zcgmw=K318
-#³§ÉÌÐÅÏ¢
-zcgmi=DEMO
-#SSIDºÅ
-zssid=0
-#WifiKeyµÄÖµ
-zwifikey=0
-#ËøÍø×î´ó½âËø´ÎÊý£¬ËøÍøÄ£¿éʹÓÃ
-zunlocktimes=0
-#°æ±¾Ä£Ê½ÀàÐÍ£¬Õý³£°æ±¾/¹Ò²à°æ±¾
-zversionmode=0
-#ÖÇÄܶÌÐŹ¦ÄÜ¿ª¹Ø
-zisms=0
-#DM¹¦ÄÜ¿ª¹Ø,0:¹Ø±Õ£¬1ÒÆ¶¯£¬2ÁªÍ¨£¬3µçÐÅ
-zdmreg=0
-#ÁªÍ¨DM ×¢²á¿ª»úµÈ´ýʱ¼ä, 1~60 ÓÐЧ£¬µ¥Î»·ÖÖÓ£¬ÆäËûÊýÖµ: ÎÞЧֵ
-zdmregtime=0
-
-#¹¤¾ßzlog_agent´æÈ¡
-zcat_mode=CPUSB
-zlog_num=10
-zlog_size=100
-zlog_path=/mnt/userdata/zcat
-rule_file=/etc_ro/logrule/ati_std.rule
-
-#ramdump´æ´¢Ä£Ê½
-#no,auto,yes
-ramdump_export=no
-#USB or CAPEMMC or CAPFLASH
-ramdump_mode=USB
-ramdump_emmc_device=/dev/mmcblk1p1
-ramdump_flash_device=/dev/mtd17
-ramdump_path=/mnt/oemdata
-
-#ÕÕÏà»úͼƬ·Ö±æÂÊÏÔʾ¿ØÖÆ
-zcamera_interprolation=1
-#×Ô¶¯ËÑÍø·½Ê½ÍøÂç½ÓÈë´ÎÐò
-auto_acqorder=12
-######CP²àNVÅäÖÃÐÅÏ¢END#######
-#for volte
-MTNET_TEST=0
-NSIOT_TEST=0
-amrw=1
-cvmod_ims=3
-EM_CALL_SUPPORT=0
-EMCALL_TO_NORMAL=0
-IMS_APN=
-IMS_CONFURI=
-IMS_CC_URI_TYPE=0
-IMS_SMS_URI_TYPE=0
-IMS_REG_EXPIRES=600000
-IMS_REG_SUB_EXPIRES=600000
-NET_IMS_CAP=0
-UDP_THRESH=1300
-IPSEC_DISABLE=0
-PRECONDTION_NOT_SUPPORT=0
-WAIT_RPT_TIME=1000
-OCT_ALGN_AMR=0
-SMS_OVER_IP=1
-IMS_USER_AGENT=
-BSF_PORT=8080
-XCAP_PORT=80
-UT_APN=
-380_THEN_CSFB=0
-DTMF_RFC4733=0
-DIALOG_FORK=0
-DATA_CENTRIC=0
-not_supp_hmac_sha1_96=0
-not_supp_hmac_md5_96=0
-not_supp_des_ede3_cbc=0
-not_supp_aes_cbc=0
-IMS_PCSCF_PORT=5060
-G_IMS_CMGF=0
-ECALL_MTTEST=0
-POWER_CONTROL=0
-NOT_KEEP_TCP_CONN=1
-T3396_SUPPORT=0
-T3396_CAUSE_REASON=8,27,32,33
-T3396_DURATION=720
-T3396_COUNTS=3
-ECALL_T2_TIMER=3600
-NGECALL_FORTEST=0
-CUSTOMER_FLAG=0
-#for volte end
-DEBUG_INFO_DISABLE=0
-DEBUG_INFO_FILE_PATH=/mnt/userdata
-DEBUG_INFO_FILE_NUM=2
-DEBUG_INFO_FILE_TOTAL_SIZE=1
-#debug info end
\ No newline at end of file
diff --git a/esdk/layers/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc_systemd/fs/normal/rootfs/etc_ro/default/default_parameter_user b/esdk/layers/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc_systemd/fs/normal/rootfs/etc_ro/default/default_parameter_user
deleted file mode 100755
index 3fbb096..0000000
--- a/esdk/layers/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc_systemd/fs/normal/rootfs/etc_ro/default/default_parameter_user
+++ /dev/null
@@ -1,493 +0,0 @@
-apn_auto_config=CMCC($)cmnet($)manual($)*99#($)pap($)($)($)IP($)auto($)($)auto($)($)
-APN_config0=Default($)Default($)manual($)($)($)($)($)IP($)auto($)($)auto($)($)
-APN_config1=
-APN_config2=
-APN_config3=
-APN_config4=
-APN_config5=
-APN_config6=
-APN_config7=
-APN_config8=
-APN_config9=
-apn_index=0
-apn_mode=auto
-at_snap_flag=3
-at_wifi_mac=0
-auto_apn_index=0
-cid_reserved=1
-clear_pb_when_restore=no
-clear_sms_when_restore=no
-default_apn=3gnet
-ipv6_APN_config1=
-ipv6_APN_config2=
-ipv6_APN_config3=
-ipv6_APN_config4=
-ipv6_APN_config5=
-ipv6_APN_config6=
-ipv6_APN_config7=
-ipv6_APN_config8=
-ipv6_APN_config9=
-m_profile_name=Internux
-need_init_modem=no
-net_select=NETWORK_auto
-pdp_type=IP
-ppp_apn=
-max_reconnect_time=3000000
-pppd_auth=noauth
-ppp_auth_mode=none
-ppp_passwd=
-ppp_pdp_type=
-ppp_username=
-ipv6_ppp_auth_mode=none
-ipv6_ppp_passwd=
-ipv6_ppp_username=
-pre_mode=
-prefer_dns_manual=0.0.0.0
-standby_dns_manual=0.0.0.0
-wan_apn=internet
-wan_dial=
-cta_test=0
-safecare_enbale=1
-safecare_hostname=mob.3gcare.cn
-safecare_registed_imei=
-safecare_registed_iccid=
-safecare_contimestart1=
-safecare_contimestart2=
-safecare_contimestart3=
-safecare_contimestop1=
-safecare_contimestop2=
-safecare_contimestop3=
-safecare_contimeinterval=
-safecare_mobsite=http://mob.3gcare.cn
-safecare_chatsite=
-safecare_platno=
-safecare_mobilenumber=
-safecare_version=
-ethwan_dns_mode=auto
-pswan_dns_mode=auto
-wifiwan_dns_mode=auto
-ethwan_ipv6_dns_mode=auto
-wifiwan_ipv6_dns_mode=auto
-pswan_ipv6_dns_mode=auto
-admin_Password=Pass1234
-psw_changed=1
-alg_ftp_enable=0
-alg_sip_enable=0
-blc_wan_auto_mode=AUTO_PPP
-blc_wan_mode=AUTO
-br_ipchange_flag=
-br_node=usblan0+zvnet0
-br_node_cap=zvnet0
-clat_fake_subnet=192.0.168.0
-clat_frag_collect_timeout=300
-clat_local_mapping_timeout=300
-clat_mapping_record_timeout=3000
-clat_query_server_port=1464
-DefaultFirewallPolicy=0
-dev_coexist=0
-dhcpDns=192.168.0.1
-dhcpEnabled=1
-dhcpEnd=192.168.0.200
-dhcpLease_hour=24
-dhcpStart=192.168.0.100
-dhcpv6stateEnabled=0
-dhcpv6statelessEnabled=1
-dhcpv6statePdEnabled=0
-dial_mode=auto_dial
-DMZEnable=0
-DMZIPAddress=
-dns_extern=
-ipv6_dns_extern=
-eth_act_type=
-eth_type=lan
-ethlan=
-ethwan=
-ethwan_dialmode=auto
-ethwan_mode=auto
-ethwan_priority=3
-fast_usb=usblan0
-fastnat_level=2
-fastbr_level=1
-IPPortFilterEnable=0
-IPPortFilterRules_0=
-IPPortFilterRules_1=
-IPPortFilterRules_2=
-IPPortFilterRules_3=
-IPPortFilterRules_4=
-IPPortFilterRules_5=
-IPPortFilterRules_6=
-IPPortFilterRules_7=
-IPPortFilterRules_8=
-IPPortFilterRules_9=
-IPPortFilterRulesv6_0=
-IPPortFilterRulesv6_1=
-IPPortFilterRulesv6_2=
-IPPortFilterRulesv6_3=
-IPPortFilterRulesv6_4=
-IPPortFilterRulesv6_5=
-IPPortFilterRulesv6_6=
-IPPortFilterRulesv6_7=
-IPPortFilterRulesv6_8=
-IPPortFilterRulesv6_9=
-ipv4_fake_subnet=192.0.0.0
-ipv6_fake_subnet=2016::1
-lan_ipaddr=192.168.0.1
-webv6_enable=1
-lan_ipv6addr=fe80::1
-lan_name=br0
-lan_netmask=255.255.255.0
-LanEnable=1
-dhcpDns_cap=192.168.0.2
-lan_ipv6addr_cap=fe80::2
-lan_ipaddr_cap=192.168.0.2
-lan_name_cap=br0
-lan_netmask_cap=255.255.255.0
-LanEnable_cap=1
-mac_ip_list=
-mgmt_quicken_power_on=0
-mtu=1400
-natenable=
-dosenable=0
-need_jilian=1
-nofast_port=21+22+23+25+53+67+68+69+110+115+123+443+500+1352+1723+1990+1991+1992+1993+1994+1995+1996+1997+1998+4500+5060
-nv_save_interval=300
-path_conf=/etc_rw
-path_ro=/etc_ro
-path_log=/tmp/
-netlog_limit=yes
-path_sh=/sbin
-path_tmp=/tmp
-permit_gw=
-permit_ip6=
-permit_nm=255.255.255.0
-PortForwardEnable=0
-PortForwardRules_0=
-PortForwardRules_1=
-PortForwardRules_2=
-PortForwardRules_3=
-PortForwardRules_4=
-PortForwardRules_5=
-PortForwardRules_6=
-PortForwardRules_7=
-PortForwardRules_8=
-PortForwardRules_9=
-PortMapEnable=0
-PortMapRules_0=
-PortMapRules_1=
-PortMapRules_2=
-PortMapRules_3=
-PortMapRules_4=
-PortMapRules_5=
-PortMapRules_6=
-PortMapRules_7=
-PortMapRules_8=
-PortMapRules_9=
-ppp_name=ppp0
-pppoe_password=
-pppoe_username=
-ps_ext1=zvnet1
-ps_ext2=zvnet2
-ps_ext3=zvnet3
-ps_ext4=zvnet4
-ps_ext5=zvnet5
-ps_ext6=zvnet6
-ps_ext7=zvnet7
-ps_ext8=zvnet8
-pswan=wan
-pswan_mode=pdp
-pswan_priority=1
-pswan_cap=zvnet
-RemoteManagement=0
-rootdev_friendlyname=DEMO-UPnP
-rootdev_manufacturer=DEMO
-rootdev_modeldes=XXX
-rootdev_modelname=XXX
-os_url=http://www.demo.com
-serialnumber=See-IMEI
-static_dhcp_enable=1
-static_ethwan_gw=
-static_ethwan_ip=
-static_ethwan_nm=
-static_ethwan_pridns=
-static_ethwan_secdns=
-static_wifiwan_ipaddr=
-static_wifiwan_netmask=
-static_wifiwan_gateway=
-wifiwan_pridns_manual=
-wifiwan_secdns_manual=
-static_wan_gateway=0.0.0.0
-static_wan_ipaddr=0.0.0.0
-static_wan_netmask=0.0.0.0
-static_wan_primary_dns=0.0.0.0
-static_wan_secondary_dns=0.0.0.0
-swlanstr=sw0_lan
-swvlan=sw0
-swwanstr=sw0_wan
-tc_downlink=
-tc_uplink=
-tc_local=1310720
-tc_enable=0
-time_limited=
-time_to_2000_when_restore=yes
-upnpEnabled=0
-usblan=usblan0
-WANPingFilter=0
-websURLFilters=
-wifiwan_priority=2
-DDNS=
-DDNS_Enable=0
-DDNSAccount=
-DDNSPassword=
-DDNSProvider=
-iccidPrevious=
-imeiPrevious=
-registerFlag=0
-registeredRound=
-secsEveryRound=1
-secsEveryTime=1
-regver=4.0
-meid=
-uetype=1
-LocalDomain=m.home
-data_volume_alert_percent=
-data_volume_limit_size=
-data_volume_limit_switch=0
-data_volume_limit_unit=0
-flux_day_total=0
-flux_last_day=
-flux_last_month=
-flux_last_year=
-flux_month_total=0
-flux_set_day=
-flux_set_month=
-flux_set_year=
-monthly_rx_bytes=0
-monthly_time=0
-monthly_tx_bytes=0
-MonthlyConTime_Last=
-dm_nextpollingtime=
-fota_allowRoamingUpdate=0
-fota_dl_pkg_size=0
-fota_update_flag=
-fota_updateIntervalDay=15
-fota_upgrade_result=
-fota_version_delta_id=
-fota_version_delta_url=
-fota_pkg_total_size=0
-fota_version_file_size=
-fota_version_md5sum=
-fota_version_name=
-fota_need_user_confirm_update=0
-fota_need_user_confirm_download=0
-fota_version_force_install=0
-polling_nexttime=0
-pwron_auto_check=0
-fota_updateMode=0
-fota_test_mode=0
-fota_pkg_downloaded=0
-fota_upgrade_result_internal=
-mmi_battery_voltage_line=3090+3300+3450+3490+3510+3540+3550+3570+3580+3600+3620+3650+3670+3710+3740+3780+3850+3900+3950+4000+4060
-mmi_fast_poweron=
-mmi_led_mode=sleep_mode
-mmi_new_sms_blink_flag=1
-mmi_show_pagetab=page1+page2+page3
-mmi_showmode=led
-mmi_task_tab=ctrl_task+key_task
-mmi_temp_voltage_line=951+1201+1692+1736
-mmi_use_protect=
-mmi_use_wifi_usernum=1
-leak_full_panic=
-leak_list_max=
-leak_set_flag=
-monitor_period=300
-netinf_flag=
-skb_all_max=
-skb_data_max=
-skb_fromcp_max=
-skb_max_fail=
-skb_max_panic=
-skb_size_max=
-skb_tocp_max=
-sntp_default_ip=134.170.185.211;131.107.13.100;202.112.31.197;202.112.29.82;202.112.10.36;ntp.gwadar.cn;ntp-sz.chl.la;dns.sjtu.edu.cn;news.neu.edu.cn;dns1.synet.edu.cn;time-nw.nist.gov;pool.ntp.org;europe.pool.ntp.org
-sntp_dst_enable=0
-sntp_other_server0=
-sntp_other_server1=
-sntp_other_server2=
-sntp_server0=time-nw.nist.gov
-sntp_server1=pool.ntp.org
-sntp_server2=europe.pool.ntp.org
-sntp_sync_select_interval_time=30
-sntp_time_set_mode=auto
-sntp_timezone=CST-8
-sntp_timezone_index=0
-assert_errno=
-comm_logsize=16384
-cr_inner_version=V1.0.0B08
-cr_version=V1.0.0B01
-hw_version=PCBMF29S2V1.0.0
-TURNOFF_CHR_NUM=
-watchdog_app=0
-HTTP_SHARE_FILE=
-HTTP_SHARE_STATUS=
-HTTP_SHARE_WR_AUTH=readWrite
-ipv6_pdp_type=
-ipv6_wan_apn=
-Language=zh-cn
-manual_time_day=
-manual_time_hour=
-manual_time_minute=
-manual_time_month=
-manual_time_second=
-manual_time_year=
-sdcard_mode_option=0
-AccessControlList0=
-AccessPolicy0=0
-ACL_mode=0
-AuthMode=WPA2PSK
-Channel=0
-wifi_acs_num=5
-closeEnable=0
-closeTime=
-CountryCode=CN
-DefaultKeyID=0
-DtimPeriod=1
-EncrypType=AES
-EX_APLIST=
-EX_APLIST1=
-EX_AuthMode=
-EX_DefaultKeyID=
-EX_EncrypType=
-EX_mac=
-EX_SSID1=Ufi_
-EX_WEPKEY=
-EX_wifi_profile=
-EX_WPAPSK1=
-FragThreshold=2346
-HideSSID=0
-HT_GI=1
-Key1Str1=12345
-Key2Str1=
-Key3Str1=
-Key4Str1=
-Key1Type=1
-Key2Type=
-Key3Type=
-Key4Type=
-m_AuthMode=WPA2PSK
-m_DefaultKeyID=
-m_EncrypType=AES
-m_HideSSID=0
-m_Key1Str1=1234
-m_Key2Str1=
-m_Key3Str1=
-m_Key4Str1=
-m_Key1Type=1
-m_Key2Type=
-m_Key3Type=
-m_Key4Type=
-m_MAX_Access_num=0
-m_NoForwarding=
-m_show_qrcode_flag=0
-m_SSID=Ufi_
-m_ssid_enable=0
-m_wapiType=
-m_wifi_mac=901D45692A5C
-m_WPAPSK1_aes=
-m_WPAPSK1_encode=MTIzNDU2Nzg=
-MAX_Access_num=32
-MAX_Access_num_bak=32
-NoForwarding=0
-openEnable=0
-openTime=
-operater_ap=
-RekeyInterval=3600
-RTSThreshold=2347
-show_qrcode_flag=0
-Sleep_interval=10
-ssid_write_flag=0
-SSID1=Ufi_
-tsw_sleep_time_hour=
-tsw_sleep_time_min=
-tsw_wake_time_hour=
-tsw_wake_time_min=
-wapiType=
-wifi_force_40m=1
-wifi_11n_cap=1
-wifi_band=b
-wifi_coverage=long_mode
-wifi_hostname_black_list=
-wifi_hostname_white_list=
-wifi_mac=901D45692A5B
-wifi_mac_black_list=
-wifi_mac_white_list=
-wifi_profile=
-wifi_profile1=
-wifi_profile2=
-wifi_profile3=
-wifi_profile4=
-wifi_profile5=
-wifi_profile6=
-wifi_profile7=
-wifi_profile8=
-wifi_profile9=
-wifi_profile_num=0
-wifi_root_dir=
-wifi_sta_connection=0
-wifi_wps_index=1
-wifiEnabled=1
-wifilan=wlan0-va0
-wifilan2=wlan0-va1
-WirelessMode=6
-WPAPSK1_aes=
-WPAPSK1_encode=MTIzNDU2Nzg=
-wps_mode=
-WPS_SSID=
-WscModeOption=0
-monitor_apps=
-at_netdog=
-autorspchannel_list=all
-soctime_switch=0
-uart_control=1
-uart_ctstrs_enable=
-uart_softcontrol_enable=
-uart_wakeup_enable=1
-uart_console_coreid=1
-uart_app_ctrl=5
-special_cmd_list=$MYNETREAD
-ra_mtu_enable=
-##为入网入库芯片认证版本添加 begin
-atcmd_stream1=AT+ZSET="w_instrument",1
-atcmd_stream2=AT^SYSCONFIG=24,0,1,2
-atcmd_stream3=AT+ZSET="csiiot",2
-atcmd_stream4=AT+ZSET="dlparaflg",0
-atcmd_stream5=AT+ZSET="MTNET_TEST",1;AT+ZGAAT=0;AT+ZSET="CMCC_TEST",1;AT+ZSET="LTE_INFO",6348;AT+ZSET="VOICE_SUPPORT",1;AT+ZSET="FDD_RELEASE",7;AT+ZSET="LTE_RELEASE",1;AT+ZSET="UE_PS_RELEASE",5;AT+ZSET="QOS_RELEASE",4;AT+ZSET="TEBS_THRESHOLD",0
-atcmd_stream6=AT+ZSET="MTNET_TEST",1;AT+ZGAAT=0;AT+ZSET="LTE_INFO",6348;AT+ZSET="VOICE_SUPPORT",1;AT+ZSET="FDD_RELEASE",7;AT+ZSET="LTE_RELEASE",1;AT+ZSET="UE_PS_RELEASE",5;AT+ZSET="QOS_RELEASE",4;AT+ZSET="TEBS_THRESHOLD",0;AT+ZSET="IGNORE_SECURITY_SUPPORT",0;AT+ZSET="csifilter",0;AT+ZSET="csrhobandflg",0;AT+ZSET="dlparaflg",1;AT+ZSET="csiup",1;AT+ZSET="rfparaflag",0,0,1,0;AT+ZSET="csiiot",1;AT+ZSET="EXCEPT_RESET",0;AT+ZSET="ISIM_SUPPORT",1;AT+ZIMSTEST="MTNET_TEST",1;AT+ZSET="MANUAL_SEARCH",0
-##为入网入库芯片认证版本添加 end
-#for audio ctrl 
-audio_priority=0123
-customer_type=
-debug_mode=
-cpIndCmdList=+ZMMI+ZURDY+ZUSLOT+ZICCID^MODE+ZPBIC+ZMSRI+CREG+CEREG+CGREG+CGEV
-zephyr_filter_ip=
-wait_timeout=2
-sntp_sync_time=1
-sntp_static_server0=time-nw.nist.gov
-sntp_static_server1=pool.ntp.org
-sntp_static_server2=europe.pool.ntp.org
-vsim_bin_path=/mnt/userdata/vSim.bin
-at_select_timeout=
-mtnet_test_mcc=+001+002+003+004
-at_atv=
-at_atq=
-at_at_d=
-at_ptsnum=
-quick_dial=1
-cap_port_name=/dev/ttyGS0
-customIndCmdList=
-defrt_cid=1
-MaxRtrAdvInterval=1800
-dhcps_in_cap=1
-gw_in_cap=0
-xlat_enable=0
-telog_path_cap=
-telog_path=
diff --git a/esdk/layers/meta-zxic-custom/recipes-lynq/lynq-autosuspend/files/LICENSE b/esdk/layers/meta-zxic-custom/recipes-lynq/lynq-autosuspend/files/LICENSE
deleted file mode 100755
index 1b15bd2..0000000
--- a/esdk/layers/meta-zxic-custom/recipes-lynq/lynq-autosuspend/files/LICENSE
+++ /dev/null
@@ -1,31 +0,0 @@
-opyright Statement:
-
-This software/firmware and related documentation ("MobileTek Software") are
-protected under relevant copyright laws. The information contained herein is
-confidential and proprietary to MobileTek Inc. and/or its licensors. Without
-the prior written permission of MobileTek inc. and/or its licensors, any
-reproduction, modification, use or disclosure of MobileTek Software, and
-information contained herein, in whole or in part, shall be strictly
-prohibited.
-
-MobileTek Inc. (C) 2015. All rights reserved.
-
-BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
-THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MobileTek SOFTWARE")
-RECEIVED FROM MobileTek AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER
-ON AN "AS-IS" BASIS ONLY. MobileTek EXPRESSLY DISCLAIMS ANY AND ALL
-WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED
-WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR
-NONINFRINGEMENT. NEITHER DOES MobileTek PROVIDE ANY WARRANTY WHATSOEVER WITH
-RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY,
-INCORPORATED IN, OR SUPPLIED WITH THE MobileTek SOFTWARE, AND RECEIVER AGREES
-TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO.
-RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO
-OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MobileTek
-SOFTWARE. MobileTek SHALL ALSO NOT BE RESPONSIBLE FOR ANY MobileTek SOFTWARE
-RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
-STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MobileTek'S
-ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MobileTek SOFTWARE
-RELEASED HEREUNDER WILL BE, AT MobileTek'S OPTION, TO REVISE OR REPLACE THE
-MobileTek SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE
-CHARGE PAID BY RECEIVER TO MobileTek FOR SUCH MobileTek SOFTWARE AT ISSUE.
diff --git a/esdk/layers/meta-zxic-custom/recipes-lynq/lynq-autosuspend/files/autosuspend.c b/esdk/layers/meta-zxic-custom/recipes-lynq/lynq-autosuspend/files/autosuspend.c
deleted file mode 100755
index ff653f6..0000000
--- a/esdk/layers/meta-zxic-custom/recipes-lynq/lynq-autosuspend/files/autosuspend.c
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#define LOG_TAG "AUTOSUSPEND"
-
-#include <stdbool.h>
-
-#include <log/log.h>
-#include <liblog/lynq_deflog.h>
-
-#include "autosuspend.h"
-
-#include "autosuspend_ops.h"
-
-static struct autosuspend_ops *autosuspend_ops;
-static bool autosuspend_enabled;
-static bool autosuspend_inited;
-
-static int autosuspend_init(void)
-{
-    if (autosuspend_inited) {
-        return 0;
-    }
-
-    autosuspend_ops = autosuspend_wakeup_count_init();
-    if (autosuspend_ops) {
-        goto out;
-    }
-
-    if (!autosuspend_ops) {
-        ALOGI("failed to initialize autosuspend\n");
-        return -1;
-    }
-
-out:
-    autosuspend_inited = true;
-
-    ALOGI("autosuspend initialized\n");
-    return 0;
-}
-
-int autosuspend_enable(void)
-{
-    int ret;
-
-    ret = autosuspend_init();
-    if (ret) {
-        return ret;
-    }
-
-    ALOGI("autosuspend_enable\n");
-
-    if (autosuspend_enabled) {
-        return 0;
-    }
-
-    ret = autosuspend_ops->enable();
-    if (ret) {
-        return ret;
-    }
-
-    autosuspend_enabled = true;
-    return 0;
-}
-
-int autosuspend_disable(void)
-{
-    int ret;
-
-    ret = autosuspend_init();
-    if (ret) {
-        return ret;
-    }
-
-    ALOGI("autosuspend_disable\n");
-
-    if (!autosuspend_enabled) {
-        return 0;
-    }
-
-    ret = autosuspend_ops->disable();
-    if (ret) {
-        return ret;
-    }
-
-    autosuspend_enabled = false;
-    return 0;
-}
diff --git a/esdk/layers/meta-zxic-custom/recipes-lynq/lynq-autosuspend/files/autosuspend.h b/esdk/layers/meta-zxic-custom/recipes-lynq/lynq-autosuspend/files/autosuspend.h
deleted file mode 100755
index 59188a8..0000000
--- a/esdk/layers/meta-zxic-custom/recipes-lynq/lynq-autosuspend/files/autosuspend.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef _LIBSUSPEND_AUTOSUSPEND_H_
-#define _LIBSUSPEND_AUTOSUSPEND_H_
-
-#include <sys/cdefs.h>
-#include <stdbool.h>
-
-__BEGIN_DECLS
-
-/*
- * autosuspend_enable
- *
- * Turn on autosuspend in the kernel, allowing it to enter suspend if no
- * wakelocks/wakeup_sources are held.
- *
- *
- *
- * Returns 0 on success, -1 if autosuspend was not enabled.
- */
-int autosuspend_enable(void);
-
-/*
- * autosuspend_disable
- *
- * Turn off autosuspend in the kernel, preventing suspend and synchronizing
- * with any in-progress resume.
- *
- * Returns 0 on success, -1 if autosuspend was not disabled.
- */
-int autosuspend_disable(void);
-
-/*
- * set_wakeup_callback
- *
- * Set a function to be called each time the device returns from suspend.
- * success is true if the suspend was sucessful and false if the suspend
- * aborted due to some reason.
- */
-void set_wakeup_callback(void (*func)(bool success));
-
-__END_DECLS
-
-#endif
diff --git a/esdk/layers/meta-zxic-custom/recipes-lynq/lynq-autosuspend/files/autosuspend.service b/esdk/layers/meta-zxic-custom/recipes-lynq/lynq-autosuspend/files/autosuspend.service
deleted file mode 100755
index 3cbb46c..0000000
--- a/esdk/layers/meta-zxic-custom/recipes-lynq/lynq-autosuspend/files/autosuspend.service
+++ /dev/null
@@ -1,10 +0,0 @@
-[Unit]
-Description=lynq-autosuspend-service
-
-[Service]
-ExecStart=/usr/bin/autosuspend
-Type=simple
-
-[Install]
-WantedBy=multi-user.target
-
diff --git a/esdk/layers/meta-zxic-custom/recipes-lynq/lynq-autosuspend/files/autosuspend_ops.h b/esdk/layers/meta-zxic-custom/recipes-lynq/lynq-autosuspend/files/autosuspend_ops.h
deleted file mode 100755
index 698e25b..0000000
--- a/esdk/layers/meta-zxic-custom/recipes-lynq/lynq-autosuspend/files/autosuspend_ops.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef _LIBSUSPEND_AUTOSUSPEND_OPS_H_
-#define _LIBSUSPEND_AUTOSUSPEND_OPS_H_
-
-struct autosuspend_ops {
-    int (*enable)(void);
-    int (*disable)(void);
-};
-
-struct autosuspend_ops *autosuspend_autosleep_init(void);
-struct autosuspend_ops *autosuspend_earlysuspend_init(void);
-struct autosuspend_ops *autosuspend_wakeup_count_init(void);
-
-#endif
diff --git a/esdk/layers/meta-zxic-custom/recipes-lynq/lynq-autosuspend/files/autosuspend_wakeup_count.c b/esdk/layers/meta-zxic-custom/recipes-lynq/lynq-autosuspend/files/autosuspend_wakeup_count.c
deleted file mode 100755
index c7cc274..0000000
--- a/esdk/layers/meta-zxic-custom/recipes-lynq/lynq-autosuspend/files/autosuspend_wakeup_count.c
+++ /dev/null
@@ -1,765 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#define LOG_TAG "AUTOSUSPEND"
-//#define LOG_NDEBUG 0
-
-#include <errno.h>
-#include <fcntl.h>
-#include <pthread.h>
-#include <semaphore.h>
-#include <stddef.h>
-#include <stdbool.h>
-#include <string.h>
-#include <sys/param.h>
-#include <sys/stat.h>
-#include <sys/types.h>
-#include <sys/time.h>
-#include <libsim/lynq_sim.h>
-
-#include <unistd.h>
-#include <dlfcn.h>
-//#include <cutils/properties.h>
-#define USER_LOG_TAG "PMS"
-#include <liblog/lynq_deflog.h>
-#include <include/lynq_uci.h>
-
-#include <log/log.h>
-#include <stdlib.h>
-#include "autosuspend_ops.h"
-#include <sc_mnet_whitelist.h>
-#include <sc_at.h>
-#define SYS_POWER_STATE "/sys/power/state"
-
-#define SYS_POWER_WAKEUP_COUNT "/sys/power/wakeup_count"
-#define SYS_POWER_SPM_SUSPEND_CRTL "/sys/power/spm/suspend_ctrl"
-
-#define BASE_SLEEP_TIME 100000
-#define POSSIBLE_MAX_SLEEP_TIME 60000000
-#define LOG_UCI_MODULE "lynq_autosuspend"
-#define LOG_UCI_FILE "lynq_uci"
-
-static int state_fd;
-static int wakeup_count_fd;
-static int suspend_ctrl_fd;
-static pthread_t suspend_thread;
-static sem_t suspend_lockout;
-extern pthread_cond_t feedback_cond;
-extern pthread_mutex_t feedback_mutex;
-extern pthread_mutex_t time_info_mutex;
-static const char *sleep_state = "mem";
-#ifdef MOBILETEK_SUSPEND_CFG
-static const char *reg_netsys[5] = {"reg_netsys_srcclkena_mask_b 0",
-                                    "reg_netsys_infra_req_mask_b 0",
-                                    "reg_netsys_apsrc_req_mask_b 0",
-                                    "reg_netsys_vrf18_req_mask_b 0",
-                                    "reg_netsys_ddr_en_mask_b 0"};
-#endif
-static void (*wakeup_func)(bool success) = NULL;
-static int sleep_time = BASE_SLEEP_TIME;
-static int possible_max_sleep_time = POSSIBLE_MAX_SLEEP_TIME;
-
-extern int adb_debug_mode;
-
-static long start_time;  // 出错点:time_info_t 结构体两个成员都是long,因此这两个变量必须是long型,不能定义成int
-static long end_time; 
-
-
-
-# define TEMP_FAILURE_RETRY(expression) \
-  (__extension__							      \
-    ({ long int __result;						      \
-       do __result = (long int) (expression);				      \
-       while (__result == -1L && errno == EINTR);			      \
-       __result; }))
-
-
-pid_t pid = 0;
-
-enum {
-    PARTIAL_WAKE_LOCK = 1,  // the cpu stays on, but the screen is off
-    FULL_WAKE_LOCK = 2      // the screen is also on
-};
-
-// while you have a lock held, the device will stay on at least at the
-// level you request.
-
-struct time_info_t
-{
-    long sleep_start_time;
-    long wakeup_time;
-};
-
-extern struct time_info_t time_info;
-
-struct timeval tv;
-
-#ifdef MOBILETEK_SUSPEND_CFG
-void *dlHandle_wakelock;
-void *dlHandle_log;
-void *dlHandle_network;
-static void* dlHandle_sim;
-
-int (*lynq_screen)(int num);
-int (*lynq_sim_init)(int utoken);
-int (*acquire_wake_lock)(int lock, const char* id);
-int (*release_wake_lock)(const char* id);
-int (*lynq_query_registration_state)(const char *type,int* regState,int* imsRegState,char * LAC,char * CID,int *
-netType,int *radioTechFam,int *errorCode);
-int (*lynq_network_init)(int utoken);
-
-void init_wakelock_func(void)
-{
-    const char *lynqLibPath_WakeLock = "/usr/lib64/libpower.so";
-    const char *lynqLibPath_Log = "/lib64/liblynq-log.so";
-
-    dlHandle_wakelock = dlopen(lynqLibPath_WakeLock, RTLD_NOW);
-    if (dlHandle_wakelock == NULL) 
-    {
-        ALOGI("dlopen lynqLibPath_WakeLock failed: %s", dlerror());
-        exit(EXIT_FAILURE);
-    }
-    dlHandle_log = dlopen(lynqLibPath_Log, RTLD_NOW);
-    if (dlHandle_log == NULL) 
-    {
-        ALOGI("dlopen dlHandle_log failed: %s", dlerror());
-        exit(EXIT_FAILURE);
-    }
-    acquire_wake_lock = (int(*)(int,const char*))dlsym(dlHandle_wakelock, "acquire_wake_lock");
-    if (acquire_wake_lock == NULL) {
-        ALOGI("acquire_wake_lock not defined or exported in %s", lynqLibPath_WakeLock);
-        exit(EXIT_FAILURE);
-    }
-    release_wake_lock = (int(*)( const char*))dlsym(dlHandle_wakelock, "release_wake_lock");
-    if (release_wake_lock == NULL) {
-        ALOGI("release_wake_lock not defined or exported in %s", lynqLibPath_WakeLock);
-        exit(EXIT_FAILURE);
-    }
-    dlerror(); // Clear any previous dlerror
-
-  return;
-}
-
- void init_sim_func()
-{
-    int res;
-    const char *lynqLibPath_Sim = "/lib64/liblynq-sim.so";
-
-    pid = getpid();
-    dlHandle_sim = dlopen(lynqLibPath_Sim, RTLD_NOW);
-    if (dlHandle_sim == NULL) 
-    {
-        ALOGI("dlopen lynqLibPath_Sim failed: %s", dlerror());
-        exit(EXIT_FAILURE);
-    }
-
-    lynq_screen = (int(*)(int))dlsym(dlHandle_sim, "lynq_screen");
-    if (lynq_screen == NULL) {
-        ALOGI("lynq_screen not defined or exported in %s", lynqLibPath_Sim);
-        exit(EXIT_FAILURE);
-    }
-
-    lynq_sim_init = (int(*)(int utoken))dlsym(dlHandle_sim,"lynq_sim_init");
-    if (lynq_sim_init == NULL) {
-        ALOGI("lynq_sim_init not defined or exported in %s", lynqLibPath_Sim);
-        exit(EXIT_FAILURE);
-    }
-    dlerror(); // Clear any previous dlerror
-
-    res = lynq_sim_init((int)pid);
-    if(res == 0)
-    {
-        ALOGI("Run lynq_sim_init\n");
-    }else{
-        ALOGI("lynq sim init error\n");
-    }
-    sleep(1);    
-
-    return;
-}
-
-
-void init_network_func()
-{
-    int res;
-    const char *lynqLibPath_Network = "/lib64/liblynq-network.so";
-    dlHandle_network = dlopen(lynqLibPath_Network, RTLD_NOW);
-    if (dlHandle_network == NULL) 
-    {
-        ALOGI("dlopen lynqLibPath_Network failed: %s", dlerror());
-        exit(EXIT_FAILURE);
-    }
-
-    lynq_query_registration_state = (int(*)(const char*,int*,int*,char *,char *,int *,int *,int*))dlsym(
-dlHandle_network, "lynq_query_registration_state");
-    if (lynq_query_registration_state == NULL) {
-        ALOGI("lynq_query_registration_state not defined or exported in %s", lynqLibPath_Network);
-        exit(EXIT_FAILURE);
-    }
-
-    lynq_network_init = (int(*)(int))dlsym(dlHandle_network, "lynq_network_init");
-    if (lynq_network_init == NULL) {
-        ALOGI("lynq_network_init not defined or exported in %s", lynqLibPath_Network);
-        exit(EXIT_FAILURE);
-    }
-
-    ALOGI("start lynq_network_init\n");
-    printf("start lynq_network_init\n");
-    res = lynq_network_init(2);
-    sleep(10);
-
-    if(res == 0)
-    {
-        ALOGI("Run lynq_network_init\n");
-        printf("Run lynq_network_init\n");
-    }else{
-        ALOGI("lynq_network_init error\n");
-        printf("lynq_network_init error\n");
-    }       
-
-    dlerror(); // Clear any previous dlerror
-    return;
-}
-#endif
-
-#ifdef MOBILETEK_TARGET_PLATFORM_T106
-int t106_set_lowpwr(int state)
-{
-    int ret;
-    char rsp[128];
-    char cmdstr[32];
-    if(state == 0)
-    {
-        strcpy(cmdstr, "AT+ZLOWPWR=0\r\n");
-    }
-    else
-    {
-        strcpy(cmdstr, "AT+ZLOWPWR=1\r\n");
-    }
-    ret = sc_at_send(1,cmdstr,rsp,sizeof(rsp));
-    printf("AT+ZLOWPWR result:%d %s\n",ret,rsp);
-    return ret;
-}
-
-int t106_set_blacklist(int blacklist_state)
-{
-    int ret;
-    char rsp[128];
-    char cmdstr[128];
-    if(blacklist_state == 0)
-    {
-        strcpy(cmdstr, "AT+SHELL=echo \"+CREG:+CGREG:+CEREG:^MODE:\" > /sys/module/at_io/parameters/at_psm_filter\r\n");
-    }
-    else
-    {
-        strcpy(cmdstr, "AT+SHELL=echo \"\" > /sys/module/at_io/parameters/at_psm_filter\r\n");
-    }
-    ret = sc_at_send(1,cmdstr,rsp,sizeof(rsp));
-    printf("AT+SHELL=echo result:%d %s\n",ret,rsp);
-    return ret;
-
-}
-int t106_set_whitelist(void)
-{
-    char tmp[8];
-    int ret;
-    lynq_get_value(LOG_UCI_FILE, LOG_UCI_MODULE, "whitelist_state", tmp);
-    if(strlen(tmp) != 4)
-    {
-        RLOGD("the whitelist len is error\n");
-        return 0;
-    }
-    if(tmp[0] == '1')
-    {
-        ret = sc_mnet_whitelist_add(1);
-        if(ret)
-        {
-            RLOGD("sc_mnet_whitelist_add 1 fail\n");
-            return ret;
-        }
-        ret = sc_mnet_whitelist_add(5);
-        if(ret)
-        {
-            RLOGD("sc_mnet_whitelist_add 5 fail\n");
-            return ret;
-        }
-    }
-    if(tmp[1] == '1')
-    {
-        ret =  sc_mnet_whitelist_add(2);
-        if(ret)
-        {
-            RLOGD("sc_mnet_whitelist_add 2 fail\n");
-            return ret;
-        }
-    }
-    if(tmp[2] == '1')
-    {
-        ret =  sc_mnet_whitelist_add(3);
-        if(ret)
-        {
-            RLOGD("sc_mnet_whitelist_add 3 fail\n");
-            return ret;
-        }
-    }
-    if(tmp[3] == '1')
-    {
-        ret =  sc_mnet_whitelist_add(4);
-        if(ret)
-        {
-            RLOGD("sc_mnet_whitelist_add 4 fail\n");
-            return ret;
-        }
-    }
-
-    return 0;
-
-}
-int t106_early_suspend(void)
-{
-    int ret;
-
-    RLOGD("t106_early_suspend start\n");
-    ret=lynq_sleep_status(0);
-    RLOGD("lynq_get_sleep_status ret=%d\n", ret);
-    ret = t106_set_lowpwr(1);
-    RLOGD("t106_set_lowpwr status ret=%d\n", ret);
-    system("zlog_nvctrl -m 1");
-    ret = t106_set_whitelist();
-    if(ret)
-    {
-        RLOGD("t106_set_whitelist ret=%d\n", ret);
-        return ret;
-    }
-    ret = t106_set_blacklist(0);
-    if(ret)
-    {
-        RLOGD("t106_set_blacklist ret=%d\n", ret);
-        return ret;
-    }
-    return 0;
-}
-
-void t106_early_resume(void)
-{
-    int ret;
-    RLOGD("t106_early_resume start\n");
-    ret = t106_set_blacklist(1);
-    if(ret)
-    {
-        RLOGD("t106_set_whitelist ret=%d\n", ret);
-    }
-    ret = sc_mnet_whitelist_clear();
-    if(ret)
-    {
-        RLOGD("sc_mnet_whitelist_clear ret=%d\n", ret);
-    }
-    system("zlog_nvctrl -m 0");
-    ret = t106_set_lowpwr(0);
-    RLOGD("t106_set_lowpwr status ret=%d\n", ret);
-    ret=lynq_sleep_status(1);
-    RLOGD("lynq_get_sleep_status ret=%d\n", ret);
-
-    return NULL;
-}
-#endif
-
-#ifdef MOBILETEK_SUSPEND_CFG
-int t800_early_suspend(char *wakeup_count, int wakeup_count_len)
-{
-    char buf[80];
-    system("echo \"Sys standby mode\" >/dev/console");
-    // sleep(1);
-    system("echo 7 | emdlogger_ctrl");
-    // sleep(1);
-
-    if (lynq_screen(0) != 0)  //notify ril for screen off
-    {
-        ALOGI("lynq_screen off fail\n");
-        return -1;
-    }
-    system("echo mode 4 0 >/sys/devices/platform/10005000.pinctrl/mt_gpio");
-    system("echo out 4 1 >/sys/devices/platform/10005000.pinctrl/mt_gpio");
-    RLOGD("ring GPIO PASS\n");
-    system("hwclock -w");
-    RLOGD("TIME: sys to rtc\n");
-    lseek(wakeup_count_fd, 0, SEEK_SET);
-    system("echo \"autosuspend:Sys seek\" >/dev/console");
-    wakeup_count_len = TEMP_FAILURE_RETRY(read(wakeup_count_fd, wakeup_count,
-               200));
-    ALOGE("%s: %d, write %s to wakeup_count\n", __func__, wakeup_count_len, wakeup_count);
-    if (wakeup_count_len < 0) {
-            strerror_r(errno, buf, sizeof(buf));
-            ALOGE("Error reading from %s: %s\n", SYS_POWER_WAKEUP_COUNT, buf);
-            wakeup_count_len = 0;
-            return -1;
-     }
-
-    for(int i = 0;i < 5;i++)  //notify spm (other core) to handle pre-sleep configuration
-    {
-        if(TEMP_FAILURE_RETRY(write(suspend_ctrl_fd,reg_netsys[i],strlen(reg_netsys[i]))) < 0)
-        {
-            strerror_r(errno, buf, sizeof(buf));
-            ALOGI("Error writing to %s: %s\n", SYS_POWER_SPM_SUSPEND_CRTL, buf);
-            return -1;
-        }    
-    }
-    return 0;
-}
-
-void t800_early_resume(bool success)
-{
-    system("hwclock -s");
-    RLOGD("TIME: rtc to sys\n");
-    if (!success)
-    {
-
-       system("mdlogctl start");
-
-       system("echo 8 | emdlogger_ctrl");
-    
-       usleep(200000); 
-       ALOGI("Log on with failure\n");
-       return ;
-    }
-    
-    if (lynq_screen(1) != 0)  // notify ril for screen on
-    {
-        ALOGI("lynq_screen on fail\n");
-    }
-
-    system("mdlogctl start");
-
-    system("echo 8 | emdlogger_ctrl");
-    usleep(300000); //delay 2s for ril handling screen on,at least 70ms
-
-    return NULL;
-}
-#endif
-
-
-static int suspend_ctrl(char *wakeup_count,int wakeup_count_len)
-{
-
-
-    char buf[80];
-    int ret = 0;
-#ifdef MOBILETEK_SUSPEND_CFG
-    ret = t800_early_suspend(char *wakeup_count, wakeup_count_len);
-    if(ret != 0)
-    {
-	ALOGD("t800_early_suspend fail\n");
-        return -1;
-    }
-#endif
-
-
-#ifdef MOBILETEK_TARGET_PLATFORM_T106
-    ret = t106_early_suspend();
-    if(ret != 0)
-    {
-        ALOGD("t106_early_suspend fail\n");
-        return -1;
-    }
-#endif
-
-    system("echo \"autosuspend:Sys suspend\" >/dev/console");
-    if(TEMP_FAILURE_RETRY(write(state_fd, sleep_state, strlen(sleep_state))) < 0) //enter suspend procedures in kernel
-    {
-        strerror_r(errno, buf, sizeof(buf));
-        ALOGI("Error writing to %s: %s\n", SYS_POWER_STATE, buf);
-        return -1;
-    }
-
-    return 0;
-}
-
-
-void wakeup_feedback(bool success)
-{
-
-    char buf[80];
-    long sleeptime = 0;
-
-#ifdef MOBILETEK_SUSPEND_CFG
-    t800_early_resume(bool success);
-#endif
-
-
-#ifdef MOBILETEK_TARGET_PLATFORM_T106
-    t106_early_resume();
-#endif
-
-    pthread_mutex_lock(&time_info_mutex);
-    memset(&tv,0,sizeof(struct timeval));
-    gettimeofday(&tv,NULL);
-    // time_info.wakeup_time = tv.tv_sec * 1000 + tv.tv_usec / 1000;
-    end_time = tv.tv_sec * 1000 + tv.tv_usec / 1000;
-    ALOGI("%s: wake up time: %ld ms\n", __func__,end_time);
-
-    memset(&time_info,0,sizeof(struct time_info_t));
-
-    time_info.sleep_start_time = start_time;
-    time_info.wakeup_time = end_time;
-    sleeptime = end_time -start_time;
-    RLOGD("sleep time is %ld ms\n", sleeptime);
-    pthread_mutex_unlock(&time_info_mutex);
-
-    if (pthread_cond_broadcast(&feedback_cond) != 0) {
-        strerror_r(errno, buf, sizeof(buf));
-        ALOGI("Error broadcast cond: %s\n", buf);
-    }
-
-    return ;
-
-}
-
-static void update_sleep_time(bool success) {
-    if (success) {
-        sleep_time = BASE_SLEEP_TIME;
-        return;
-    }
-    // double sleep time after each failure up to one minute
-    sleep_time = MIN(sleep_time * 2, possible_max_sleep_time);
-}
-
-static void *suspend_thread_func(void *arg __attribute__((unused)))
-{
-    char buf[80];
-    char wakeup_count[20];
-    int wakeup_count_len;
-    int ret;
-    bool success = true;
-
-    while (1) {
-        update_sleep_time(success);
-        usleep(sleep_time);
-        success = false;
-
-        ALOGI("%s: wait\n", __func__);
-        ret = sem_wait(&suspend_lockout);
-        if (ret < 0) {
-            strerror_r(errno, buf, sizeof(buf));
-            ALOGI("Error waiting on semaphore: %s\n", buf);
-            continue;
-        }
-
-        ALOGV("%s: read wakeup_count\n", __func__);
-        lseek(wakeup_count_fd, 0, SEEK_SET);
-        wakeup_count_len = TEMP_FAILURE_RETRY(read(wakeup_count_fd, wakeup_count,
-                sizeof(wakeup_count)));
-        if (wakeup_count_len < 0) {
-            strerror_r(errno, buf, sizeof(buf));
-            ALOGE("Error reading from %s: %s\n", SYS_POWER_WAKEUP_COUNT, buf);
-            wakeup_count_len = 0;
-            continue;
-        }
-        if (!wakeup_count_len) {
-            ALOGE("Empty wakeup count\n");
-            continue;
-        }
-
-        ALOGI("%s: start suspend_ctrl\n", __func__);
-        memset(&tv,0,sizeof(struct timeval));
-        // memset(&time_info,0 ,sizeof(struct time_info_t));
-        gettimeofday(&tv,NULL);
-
-        start_time = tv.tv_sec * 1000 + tv.tv_usec / 1000;
-        ALOGI("%s: suspend start time: %ld ms\n", __func__,start_time);
-        // time_info.sleep_start_time = tv.tv_sec * 1000 + tv.tv_usec / 1000;
-
-        ret = suspend_ctrl(wakeup_count,wakeup_count_len);
-
-        if (ret >= 0) {
-                ALOGI("suspend_ctrl success.\n");
-                success = true;
-         }
-         else
-         {
-                ALOGI("suspend_ctrl false.\n");
-                success = false;
-         }
-
-         void (*func)(bool success) = wakeup_func;
-         if (func != NULL) {
-                (*func)(success); //handling resume event for other libs /apps
-            }
-
-         ALOGI("%s: release sem\n", __func__);
-         ret = sem_post(&suspend_lockout);
-         if (ret < 0) {
-            strerror_r(errno, buf, sizeof(buf));
-            ALOGI("Error releasing semaphore: %s\n", buf);
-         } 
-
-         if(adb_debug_mode == 1) // it's neccessary to wait for autosuspend_disable function calling in debug mode when finish resume procedure.
-         {
-           sleep(40);
-         }
-         else
-         {
-            ALOGI("%s: adb_debug unsupported\n", __func__);
-         }
-
-         ALOGI("%s: END SLEEP\n", __func__);
-    }
-    return NULL;
-}
-
-static int autosuspend_wakeup_count_enable(void)
-{
-    char buf[80];
-    int ret;
-
-    ALOGI("autosuspend_wakeup_count_enable\n");
-
-    ret = sem_post(&suspend_lockout);
-
-    if (ret < 0) {
-        strerror_r(errno, buf, sizeof(buf));
-        ALOGI("Error changing semaphore: %s\n", buf);
-    }
-
-    ALOGI("autosuspend_wakeup_count_enable done\n");
-
-    return ret;
-}
-
-static int autosuspend_wakeup_count_disable(void)
-{
-    char buf[80];
-    int ret;
-
-    ALOGI("autosuspend_wakeup_count_disable\n");
-
-    ret = sem_wait(&suspend_lockout);
-
-    if (ret < 0) {
-        strerror_r(errno, buf, sizeof(buf));
-        ALOGI("Error changing semaphore: %s\n", buf);
-    }
-
-    ALOGI("autosuspend_wakeup_count_disable done\n");
-
-    return ret;
-}
-
-void set_wakeup_callback(void (*func)(bool success))
-{
-    if (wakeup_func != NULL) {
-        ALOGI("Duplicate wakeup callback applied, keeping original");
-        return;
-    }
-    wakeup_func = func;
-}
-
-struct autosuspend_ops autosuspend_wakeup_count_ops = {
-        .enable = autosuspend_wakeup_count_enable,
-        .disable = autosuspend_wakeup_count_disable,
-};
-
-struct autosuspend_ops *autosuspend_wakeup_count_init(void)
-{
-    int ret;
-    char buf[80];
-    char timeout_str[100]="100000";
-    pid = getpid();
-    char cmdstr[32];
-    char rsp[128];
-    //if (property_get("sys.autosuspend.timeout", timeout_str, NULL))
-    {
-        possible_max_sleep_time = atoi(timeout_str);
-        ALOGI("autosuspend timeout is %d\n", possible_max_sleep_time);
-    }
-
-    state_fd = TEMP_FAILURE_RETRY(open(SYS_POWER_STATE, O_RDWR));
-    if (state_fd < 0) {
-        strerror_r(errno, buf, sizeof(buf));
-        ALOGI("Error opening %s: %s\n", SYS_POWER_STATE, buf);
-        goto err_open_state;
-    }
-
-    wakeup_count_fd = TEMP_FAILURE_RETRY(open(SYS_POWER_WAKEUP_COUNT, O_RDWR));
-    if (wakeup_count_fd < 0) {
-        strerror_r(errno, buf, sizeof(buf));
-        ALOGI("Error opening %s: %s\n", SYS_POWER_WAKEUP_COUNT, buf);
-        goto err_open_wakeup_count;
-    }
-#ifdef MOBILETEK_SUSPEND_CFG
-    suspend_ctrl_fd = TEMP_FAILURE_RETRY(open(SYS_POWER_SPM_SUSPEND_CRTL, O_RDWR));
-    if (suspend_ctrl_fd < 0) {
-        strerror_r(errno, buf, sizeof(buf));
-        ALOGI("Error opening %s: %s\n", SYS_POWER_SPM_SUSPEND_CRTL, buf);
-        goto err_open_suspend_ctrl;
-    }
-#endif
-    ret = sem_init(&suspend_lockout, 0, 0);
-    if (ret < 0) {
-        strerror_r(errno, buf, sizeof(buf));
-        ALOGI("Error creating semaphore: %s\n", buf);
-        goto err_sem_init;
-    }
-#ifdef MOBILETEK_TARGET_PLATFORM_T106
-    if(sc_at_init(1)){
-        ALOGD("sc_at_init failed.\n");
-        return NULL;
-    }
-    else
-    {
-        strcpy(cmdstr, "AT+ZPOWSTAT=1\r\n");
-        printf("AUTOSUSPEND: cmd:%s\n",cmdstr);
-        ret = sc_at_send(1,cmdstr,rsp,sizeof(rsp));
-        printf("AUTOSUSPEND: sc_at_send result:%d %s\n",ret,rsp);
-        
-    }
-    if(sc_mnet_whitelist_init() != 0)
-    {
-        ALOGD("sc_mnet_whitelist_init failed.\n");
-        return NULL;
-    }
-#endif
-    ret = lynq_sim_init((int)pid);
-    if(ret == 0)
-    {
-        ALOGD("Run lynq_sim_init\n");
-    }
-    else
-    {
-        return NULL;
-    }
-    ret = pthread_create(&suspend_thread, NULL, suspend_thread_func, NULL);
-    if (ret) {
-        strerror_r(ret, buf, sizeof(buf));
-        ALOGI("Error creating thread: %s\n", buf);
-        goto err_pthread_create;
-    }
-
-    ALOGI("Selected wakeup count\n");
-    return &autosuspend_wakeup_count_ops;
-
-err_pthread_create:
-    sem_destroy(&suspend_lockout);
-err_sem_init:
-    close(wakeup_count_fd);
-err_open_wakeup_count:
-    close(state_fd);
-#ifdef MOBILETEK_SUSPEND_CFG
-err_open_suspend_ctrl:
-    close(suspend_ctrl_fd);
-#endif
-err_open_state:
-    return NULL;
-}
diff --git a/esdk/layers/meta-zxic-custom/recipes-lynq/lynq-autosuspend/files/lynq-autosuspend.sh b/esdk/layers/meta-zxic-custom/recipes-lynq/lynq-autosuspend/files/lynq-autosuspend.sh
deleted file mode 100755
index 8e96831..0000000
--- a/esdk/layers/meta-zxic-custom/recipes-lynq/lynq-autosuspend/files/lynq-autosuspend.sh
+++ /dev/null
@@ -1,39 +0,0 @@
-#!/bin/sh
-#
-# Run the daemon
-#
-
-DAEMON="lynq-autosuspend-service"
-PIDFILE="/var/run/$DAEMON.pid"
-EXEC="/usr/bin/autosuspend"
-EXEC_ARGS=""
-
-
-start() {
-        echo -n "Starting $DAEMON... "
-        start-stop-daemon --no-close -S -b -m -p $PIDFILE -x $EXEC -- $EXEC_ARGS
-        [ $? -eq 0 ] && echo "OK" || echo "ERROR"
-}
-
-stop() {
-        echo -n "Stopping $DAEMON... "
-        start-stop-daemon -K -p $PIDFILE
-        [ $? -eq 0 ] && echo "OK" || echo "ERROR"
-}
-
-restart() {
-        stop
-        start
-}
-
-case "$1" in
-  start|stop|restart)
-        "$1"
-        ;;
-  *)
-        echo "Usage: $0 {start|stop|restart}"
-        exit 1
-esac
-
-exit $?
-
diff --git a/esdk/layers/meta-zxic-custom/recipes-lynq/lynq-autosuspend/files/main.c b/esdk/layers/meta-zxic-custom/recipes-lynq/lynq-autosuspend/files/main.c
deleted file mode 100755
index f706c9f..0000000
--- a/esdk/layers/meta-zxic-custom/recipes-lynq/lynq-autosuspend/files/main.c
+++ /dev/null
@@ -1,494 +0,0 @@
-/* //device/system/rild/rild.c
-**
-** Copyright 2006 The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**     http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <stdbool.h>
-#include <dlfcn.h>
-#include <string.h>
-#include <pthread.h>
-#include <stdint.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <errno.h>
-#include <log/log.h>
-#include <liblog/lynq_deflog.h>
-#include <include/lynq_uci.h>
-#include <sys/socket.h>
-#include <sys/un.h>
-#include <signal.h>
-
-
-#define LOG_UCI_MODULE "lynq_autosuspend"
-#define LOG_UCI_FILE "lynq_uci"
-
-#define LOG_TAG "AUTOSUSPEND"
-
-#define USER_LOG_TAG "PMS"
-
-#define SOCK_PATH  "/tmp/autosuspend.cmd.server"  //不能在当前这个目录创建socket文件,否则报错找不到文件(可能是因为这是在共享文件夹下,不支持创建socket文件)
-
-#define SOCK_DATA_PATH  "/tmp/autosuspend.data.server"
-
-// #define LYINFLOG(X...)  lynq_log_global_output(LOG_INFO,X)
-
-#define TIME_OUT_TIME 30
-
-
-#define MAX_LIB_ARGS        16
-
-int adb_debug_mode = 0;
-
-
-pthread_cond_t feedback_cond = PTHREAD_COND_INITIALIZER;
-pthread_mutex_t feedback_mutex = PTHREAD_MUTEX_INITIALIZER;
-pthread_mutex_t time_info_mutex = PTHREAD_MUTEX_INITIALIZER;
-
-extern int autosuspend_enable(void);
-extern int autosuspend_disable(void);
-extern void init_wakelock_func(void);
-extern void init_sim_func();
-extern void init_network_func();
-extern void set_wakeup_callback(void (*func)(bool success));
-extern void wakeup_feedback(bool success);
-extern int (*lynq_screen)(int num);
-
-struct time_info_t
-{
-    long sleep_start_time;
-    long wakeup_time;
-};
-
-struct time_info_t time_info; 
-
-static void usage(const char *argv0) {
-    fprintf(stderr, "Usage: %s -l <possible_max_sleep_time> [-- <args for Autosuspend Service>]\n", argv0);
-    exit(EXIT_FAILURE);
-}
-
-
-
-static int make_argv(char * args, char ** argv) {
-    // Note: reserve argv[0]
-    int count = 1;
-    char * tok;
-    char * s = args;
-
-    while ((tok = strtok(s, " \0"))) {
-        argv[count] = tok;
-        s = NULL;
-        count++;
-    }
-    return count;
-}
-
-static int Accept(int fd, struct sockaddr *sa, socklen_t *salenptr)
-{
-    int n;
-
-    while((n = accept(fd, sa, salenptr)) < 0)
-    {
-        if((errno == ECONNABORTED) || (errno == EINTR))
-            continue;
-        else
-        {
-            ALOGI("accept error\n");
-            return -1;
-        }
-    }
-    return n;
-}
-
-static int Bind(int fd, const struct sockaddr *sa, socklen_t salen)
-{
-    if(bind(fd, sa, salen) < 0)
-    {
-        // ALOGI("bind error\n");
-        perror("bind error");
-        return -1;
-    }
-	return 0;
-}
-
-
-static int Socket(int family, int type, int protocol)
-{
-    int n;
-
-    if ( (n = socket(family, type, protocol)) < 0)
-    {
-        ALOGI("socket error\n");
-        return -1;
-    }
-    return n;
-}
-
-static int Listen(int fd, int backlog)
-{
-    if(listen(fd, backlog) < 0)
-    {
-        ALOGI("listen error\n");
-        return -1;
-    }
-	return 0;
-}
-
-
-static int listen_port(struct sockaddr_un *addr, char *sockpath)
-{
-    int listenfd;
-    listenfd = Socket(AF_UNIX,SOCK_STREAM,0);
-    if(listenfd == -1)
-        return -1;
-    memset(addr, 0, sizeof(struct sockaddr_un));
-    addr->sun_family = AF_UNIX;
-    strcpy(addr->sun_path,sockpath);
-    // int opt = 1;
-	// if(setsockopt(listenfd, SOL_SOCKET,SO_REUSEADDR, (const void *)&opt, sizeof(opt)) == -1)
-    // {
-    //     perror("setsockopt error");
-    //     return -1;
-    // }
-
-// 以上方法对非网络的本地socket无效,应该用unlink函数避免Address already in use的错误
-
-
-    unlink(sockpath);
-    if(Bind(listenfd,(struct sockaddr *)addr,sizeof(*addr)) == -1)
-        return -1;
-
-    if(Listen(listenfd,20) == -1)
-        return -1;
-
-    return listenfd; 
-}
-
-static ssize_t Read(int fd, void *ptr, size_t nbytes)
-{
-    ssize_t n;
-    
-    while((n = read(fd, ptr, nbytes)) == -1)
-    {
-       //printf("READ,%d\n",fd);
-        if (errno == EINTR)
-		{	
-			ALOGI("read error eintr\n");
-            continue;
-		}
-        else if(errno == EAGAIN || errno == EWOULDBLOCK)
-        {
-            ALOGI("read time out\n");
-            return -1;
-        }
-        else
-        {
-            ALOGI("read error\n");
-            return -1;
-        }
-    }
-    //sleep(2);
-    //printf("READ1,%d\n", fd);
-    return n;
-}
-
-static ssize_t Write(int fd, const void *ptr, size_t nbytes)
-{
-    ssize_t n;
-
-    while((n = write(fd, ptr, nbytes)) == -1)
-    {
-        if (errno == EINTR)
-            continue;
-        else if(errno == EPIPE)
-		{
-			ALOGI("write error epipe\n");
-			return -1;
-		}  
-		else
-			return -1;
-    }
-    return n;
-}
-
-static int Close(int fd)
-{
-    if (close(fd) == -1)
-    {
-        ALOGI("close error\n");
-        return -1;
-    }
-	return 0;
-}
-
-
-void *deal_autosuspend(void *sockfd)
-{
-    int commfd = *((int *)sockfd);
-    char buf[20];
-    char res[15];
-
-    while(1)
-    {
-        memset(buf,0,sizeof(buf));
-        ALOGI("deal_autosuspend start to read.\n");
-        // 错误点:read函数在对端关闭后,也会直接返回0,不会阻塞,因此要判断是否返回0,返回0表示对端已经关闭,此时要跳出while循环不再监听
-        // 为什么对端会关闭?因为在客户端没有用nohup方式打开的情况下,系统睡眠后客户端进行会直接被杀死,对端会关闭,所以会导致read不阻塞,且总是返回0的现象
-        if(Read(commfd,buf,sizeof(buf)) <= 0) 
-        {
-            ALOGI("service receive suspend_cmd fail or client is closed.\n");
-            Close(commfd);
-            break;
-        }
-        if(strcmp(buf,"enable") == 0)
-        {
-            if(autosuspend_enable() < 0)
-            {
-                ALOGI("autosuspend_enable fail.\n");
-            }
-            else
-            {
-                ALOGI("autosuspend_enable success.\n");
-            }        
-        }
-        else if(strcmp(buf,"disable") == 0)
-        {
-            if(autosuspend_disable() < 0)
-            {
-                ALOGI("autosuspend_disable fail.\n");
-            }
-            else
-            {
-                ALOGI("autosuspend_disable success.\n");
-
-            }        
-        }
-
-        else
-        {
-            ALOGI("Unknown cmd : %s\n",buf);
-        }
-
-    }
-
-
-
-}
-
-#ifdef GSW_SUSPEND_CFG
-/*jb.qi add for service send when DTR is low on 20221111 start */
-void *dtr_wakeup()
-{
-    FILE *fp;
-    int ret;
-    bool success = true;
-    char buf[30];
-    char dtr_buffer[25];
-    RLOGD("dtr_wakeup start\n");
-    while(1)
-    {
-        fp = popen("cat /sys/devices/platform/10005000.pinctrl/mt_gpio |grep 006:","r");
-        fgets(dtr_buffer, sizeof(dtr_buffer), fp);
-        if(dtr_buffer[7] == '0')
-        {
-            time_info.sleep_start_time = 123;
-            time_info.wakeup_time = 123;
-            if (pthread_cond_broadcast(&feedback_cond) != 0) 
-            {
-                strerror_r(errno, buf, sizeof(buf));
-                ALOGI("Error broadcast cond: %s\n", buf);
-            }   
-            RLOGD("dtr_wakeup success!\n");
-            sleep(3);
-        }
-        usleep(500);
-        pclose(fp);
-    }
-}
-/*jb.qi add for service send when DTR is low on 20221111 end */
-#endif
-
-void *send_feedback(void *sockfd)
-{
-    int commfd = *((int *)sockfd);
-    char buf[80];
-
-    while (1)
-    {
-        memset(buf,0,sizeof(buf));
-        ALOGI("send_feedback thread wait to send.\n");
-        pthread_mutex_lock(&feedback_mutex);
-        pthread_cond_wait(&feedback_cond,&feedback_mutex);
-
-        ALOGI("send_feedback thread is now sending the feedback to client.\n");
-        pthread_mutex_lock(&time_info_mutex);
-        if(Write(commfd,&time_info,sizeof(struct time_info_t)) <= 0) 
-        {
-            ALOGI("service send wakeup_feedback struct fail.\n");
-            Close(commfd);
-            pthread_mutex_unlock(&time_info_mutex);
-            pthread_mutex_unlock(&feedback_mutex);
-#ifdef GSW_SUSPEND_CFG
-            continue ;//jb.qi add for service send when DTR is low on 20221111 
-#endif
-
-#ifdef MOBILETEK_SUSPEND_CFG
-            break ;
-#endif
-        }        
-        pthread_mutex_unlock(&time_info_mutex);
-
-        pthread_mutex_unlock(&feedback_mutex);
-
-
-
-    }
-
-}
-
-
-int main(int argc, char **argv) {
-
-
-    // int i = 0;
-    // RLOGD("**Autosuspend Service Daemon Started**");
-    // RLOGD("**Autosuspend Service param count=%d**", argc);
-    char tmp[20];
-
-    int commfd, commfd_data, server_sock, server_data_sock,len, len_data;
-
-    struct sockaddr_un server_sockaddr;
-    struct sockaddr_un server_data_sockaddr;
-    struct sockaddr_un client_sockaddr;
-
-    len = sizeof(server_sockaddr);
-
-
-    pthread_t tid;
-#ifdef GSW_SUSPEND_CFG
-	pthread_t tid_1;//jb.qi add for service send when DTR is low on 20221111 
-#endif
-    
-    LYLOGEINIT(USER_LOG_TAG);
-    LYLOGSET(LOG_DEBUG);    
-    // LYLOGSET(LOG_ERROR);
-
-    int auto_enable = 0;
-
-    lynq_get_value(LOG_UCI_FILE, LOG_UCI_MODULE, "debug", tmp); // 即获取系统层面的环境变量
-    ALOGI("Autosuspend Service Daemon. debug %s\n",tmp);
-    adb_debug_mode=atoi(tmp);
-    lynq_get_value(LOG_UCI_FILE, LOG_UCI_MODULE, "auto_enable", tmp);
-    auto_enable=atoi(tmp);
-    ALOGI("Autosuspend Service Daemon. auto_enable %s\n",tmp);
-#ifdef MOBILETEK_SUSPEND_CFG
-    init_wakelock_func();
-    init_sim_func();
-#endif
-    signal(SIGPIPE,SIG_IGN); // 忽略SIGPIPE信号,防止由于客户端关闭,继续往客户端write,会导致服务端收到SIGPIPE信号而Broken pipe
-
-    
-    // init_network_func();
-
-    // if(pthread_cond_init(&feedback_cond,NULL) != 0)
-    // {
-    //     strerror_r(errno, buf, sizeof(buf));
-    //     ALOGI("Error creating cond: %s\n", buf);
-    //     return -1;
-    // }
-
-    set_wakeup_callback(wakeup_feedback);
-    // 注册回调函数
-
-   if(auto_enable==0)
-   {
-      if(autosuspend_disable() < 0)
-     {
-       ALOGI("autosuspend_disable fail.\n");
-     }
-     else
-     {
-       ALOGI("autosuspend_disable success.\n");
-     }
-   }
-   if(auto_enable==1)
-   {
-      if(autosuspend_enable() < 0)
-     {
-       ALOGI("autosuspend_enable fail.\n");
-     }
-     else
-     {
-       ALOGI("autosuspend_enable success.\n");
-     }
-   }
-
-
-    server_sock = listen_port(&server_sockaddr,SOCK_PATH);
-    if(server_sock == -1)
-        return -1;
-
-    server_data_sock = listen_port(&server_data_sockaddr,SOCK_DATA_PATH);
-    if(server_data_sock == -1)
-        return -1;
-#ifdef GSW_SUSPEND_CFG
-    /*jb.qi add for service send when DTR is low on 20221111 start*/
-    pthread_create(&tid_1,NULL,dtr_wakeup,NULL);
-    pthread_detach(tid_1);
-    /*jb.qi add for service send when DTR is low on 20221111 end*/
-#endif
-
-    while (1)
-    {
-        ALOGI("service socket listening...\n");
-        commfd = Accept(server_sock,(struct sockaddr *)&client_sockaddr,&len);
-        if(commfd == -1)
-        {
-            return -1;
-        }
-        if(getpeername(commfd, (struct sockaddr *)&client_sockaddr, &len) == -1)
-        {
-            ALOGI("GETPEERNAME ERROR.\n");
-            // Close(server_sock);
-            Close(commfd);
-            continue;
-        }
-        else
-        {
-            ALOGI("Client socket filepath: %s\n", client_sockaddr.sun_path);
-        }
-
-        commfd_data = Accept(server_data_sock,NULL,NULL);
-        if(commfd_data == -1)
-        {
-            return -1;
-        }
-        ALOGI("data channel connected.\n");
-        
-        pthread_create(&tid,NULL,deal_autosuspend,(void*)&commfd);//这里很容易错,最后一个参数要取地址,这是一个指针
-        pthread_detach(tid);   
-
-        pthread_create(&tid,NULL,send_feedback,(void*)&commfd_data);
-        pthread_detach(tid); 
-
-
-    }
-    
- 
-}
-
-DEFINE_LYNQ_LIB_LOG(LYNQ_AUTOSUSPEND)
-
diff --git a/esdk/layers/meta-zxic-custom/recipes-lynq/lynq-autosuspend/files/makefile b/esdk/layers/meta-zxic-custom/recipes-lynq/lynq-autosuspend/files/makefile
deleted file mode 100755
index ca263bf..0000000
--- a/esdk/layers/meta-zxic-custom/recipes-lynq/lynq-autosuspend/files/makefile
+++ /dev/null
@@ -1,71 +0,0 @@
-SHELL = /bin/sh
-RM = rm -f
-
-LOCAL_CFLAGS := -Wall \
-                -g -Os \
-                -flto \
-                -DRIL_SHLIB \
-                -DATCI_PARSE \
-                -DKEEP_ALIVE \
-                -D__LINUX_OS__ \
-                -DECALL_SUPPORT
-
-
-
-ifeq ($(strip $(TARGET_PLATFORM)), T106)
-LOCAL_CFLAGS += -DHAVE_SYS_UIO_H -DRIL_TIME_CB
-endif
-
-ifeq ($(strip $(TARGET_PLATFORM)), T106)
-    LOCAL_CFLAGS += -DMOBILETEK_TARGET_PLATFORM_T106
-endif
-
-ifeq ($(strip $(MOBILETEK_SUSPEND_CFG)), GSW)
-    LOCAL_CFLAGS += -DGSW_SUSPEND_CFG
-
-endif
-
-ifeq ($(strip $(MOBILETEK_SUSPEND_CFG)), PLATFORM)
-    LOCAL_CFLAGS += -DMOBILETEK_SUSPEND_CFG
-
-endif
-
-
-LOCAL_PATH   = .
-
-LOCAL_C_INCLUDES = \
-  -I.   -I$(ROOT)$(includedir)/liblog -I$(ROOT)$(includedir) \
-
-
-
-
-LOCAL_LIBS := \
-    -L. \
-    -ldl \
-    -lpthread \
-    -llynq-log \
-    -llynq-uci \
-    -llog \
-    -lbsp \
-    -lsctel \
-    -latutils \
-    -latreg \
-    -llynq-sim \
-
-
-SOURCES = $(wildcard *.c )
-
-EXECUTABLE = autosuspend
-
-OBJECTS=$(SOURCES:.c=.o)
-all: $(EXECUTABLE)
-
-$(EXECUTABLE): $(OBJECTS)
-	$(CXX) $(OBJECTS) $(LOCAL_LIBS) $(LOCAL_CFLAGS) $(LOCAL_C_INCLUDES) -o $@
-
-%.o : %.c
-	$(CC) $(LOCAL_C_INCLUDES) $(LOCAL_CFLAGS) $(LOCAL_LIBS) -o $@ -c $<
-
-.PHONY: clean
-clean:
-	$(RM) $(OBJECTS) $(EXECUTABLE)
diff --git a/esdk/layers/meta-zxic-custom/recipes-lynq/lynq-autosuspend/lynq-autosuspend.bb b/esdk/layers/meta-zxic-custom/recipes-lynq/lynq-autosuspend/lynq-autosuspend.bb
deleted file mode 100755
index a3df67f..0000000
--- a/esdk/layers/meta-zxic-custom/recipes-lynq/lynq-autosuspend/lynq-autosuspend.bb
+++ /dev/null
@@ -1,72 +0,0 @@
-inherit externalsrc package systemd
-
-DESCRIPTION = "autosuspend.service"
-
-LICENSE = "MobileTekProprietary"
-LIC_FILES_CHKSUM = "file://${WORKDIR}/LICENSE;md5=44d8d2b6296ca24bcd4894bb7155bf27"
-
-SRC_URI = "file://autosuspend.c file://LICENSE \
-           file://autosuspend.h \
-           file://autosuspend_ops.h \
-           file://autosuspend_wakeup_count.c \
-           file://main.c \
-           file://autosuspend.service \
-           file://lynq-autosuspend.sh \
-           file://makefile \
-"
-
-EXTRA_OEMAKE = "'TARGET_PLATFORM = ${TARGET_PLATFORM}'"
-
-TARGET_CC_ARCH += "${LDFLAGS}"
-
-LOCAL_C_INCLUDES = "-I. "
-
-DEPENDS = "liblynq-log liblynq-uci"
-DEPENDS += "${@bb.utils.contains('TARGET_PLATFORM', 'mt2735', 'audio-mixer-ctrl streamer1.0', '', d)} liblynq-log liblynq-uci libbsp libsctel libatutils libatreg liblynq-sim"
-LOCAL_LIBS = "-L. -ldl -lstdc++ -lpthread -llog"
-SOURCES = "$(wildcard *.c )"
-
-OBJECTS = "$(SOURCES:.c=.o)"
-
-EXECUTABLE = "autosuspend"
-S = "${WORKDIR}"
-TARGET_CC_ARCH += "${LDFLAGS}"
-SYSTEMD_PACKAGES = "${PN}"
-SYSTEMD_SERVICE_${PN} = "autosuspend.service"
-FILES_${PN} += "${systemd_unitdir}/system/autosuspend.service"
-#INHIBIT_PACKAGE_STRIP = "1"
-do_compile () {
-
-	#${CXX} -Wall ${LOCAL_C_INCLUDES} autosuspend.c autosuspend_wakeup_count.c main.c ${LOCAL_LIBS} -o ${EXECUTABLE}
-	if test "${PACKAGE_ARCH}" = "cortexa7hf-vfp-vfpv4-neon" || test "${PACKAGE_ARCH}" = "cortexa7hf-neon-vfpv4"; then
-		oe_runmake all ROOT=${STAGING_DIR_HOST} OFLAGS="--sysroot=${STAGING_DIR_HOST} -mhard-float"
-	else
-		oe_runmake all ROOT=${STAGING_DIR_HOST} OFLAGS="--sysroot=${STAGING_DIR_HOST}"
-	fi
-}
-
-do_install() {
-	install -d ${D}${bindir}/
-	echo "Installing image PN ${PN}"
-	echo "Installing image systemd_unitdir ${systemd_unitdir}"
-	echo "Installing image D ${D}"
-	echo "Installing image B ${B}"
-	if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
-		install -d ${D}${systemd_unitdir}/system/
-		install -m 0644 ${B}/autosuspend.service ${D}${systemd_unitdir}/system
-    else
-		install -d ${D}${sysconfdir}/init.d
-        install -m 0755  ${S}/lynq-autosuspend.sh ${D}${sysconfdir}/init.d/
-        install -d ${D}${sysconfdir}/rcS.d
-        ln -s ../init.d/lynq-autosuspend.sh ${D}${sysconfdir}/rcS.d/S82lynq-autosuspend-service
-	fi
-
-	install -m 0755 ${S}/autosuspend ${D}${bindir}/
-	install -d ${D}${includedir}
-}
-
-
-
-
-
-
diff --git a/esdk/layers/meta-zxic-custom/recipes-lynq/lynq-fota-backup/files/LICENSE b/esdk/layers/meta-zxic-custom/recipes-lynq/lynq-fota-backup/files/LICENSE
deleted file mode 100755
index 0489348..0000000
--- a/esdk/layers/meta-zxic-custom/recipes-lynq/lynq-fota-backup/files/LICENSE
+++ /dev/null
@@ -1,31 +0,0 @@
-opyright Statement:
-
-This software/firmware and related documentation ("MobileTek Software") are
-protected under relevant copyright laws. The information contained herein is
-confidential and proprietary to MobileTek Inc. and/or its licensors. Without
-the prior written permission of MobileTek inc. and/or its licensors, any
-reproduction, modification, use or disclosure of MobileTek Software, and
-information contained herein, in whole or in part, shall be strictly
-prohibited.
-
-Mobiletek Inc. (C) 2015. All rights reserved.
-
-BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
-THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MobileTek SOFTWARE")
-RECEIVED FROM MobileTek AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER
-ON AN "AS-IS" BASIS ONLY. MobileTek EXPRESSLY DISCLAIMS ANY AND ALL
-WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED
-WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR
-NONINFRINGEMENT. NEITHER DOES MobileTek PROVIDE ANY WARRANTY WHATSOEVER WITH
-RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY,
-INCORPORATED IN, OR SUPPLIED WITH THE MobileTek SOFTWARE, AND RECEIVER AGREES
-TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO.
-RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO
-OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MobileTek
-SOFTWARE. MobileTek SHALL ALSO NOT BE RESPONSIBLE FOR ANY MobileTek SOFTWARE
-RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
-STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MobileTek'S
-ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MobileTek SOFTWARE
-RELEASED HEREUNDER WILL BE, AT MobileTek'S OPTION, TO REVISE OR REPLACE THE
-MobileTek SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE
-CHARGE PAID BY RECEIVER TO MobileTek FOR SUCH MobileTek SOFTWARE AT ISSUE.
diff --git a/esdk/layers/meta-zxic-custom/recipes-lynq/lynq-fota-backup/files/lynq-fota-backup.service b/esdk/layers/meta-zxic-custom/recipes-lynq/lynq-fota-backup/files/lynq-fota-backup.service
deleted file mode 100755
index 28851ff..0000000
--- a/esdk/layers/meta-zxic-custom/recipes-lynq/lynq-fota-backup/files/lynq-fota-backup.service
+++ /dev/null
@@ -1,10 +0,0 @@
-[Unit]
-Description=lynq-fota-backup-service
-
-[Service]
-ExecStart=/usr/bin/lynq-fota-backup
-Type=simple
-
-[Install]
-WantedBy=multi-user.target
-
diff --git a/esdk/layers/meta-zxic-custom/recipes-lynq/lynq-fota-backup/files/lynq-fota-backup.sh b/esdk/layers/meta-zxic-custom/recipes-lynq/lynq-fota-backup/files/lynq-fota-backup.sh
deleted file mode 100755
index 53eb20f..0000000
--- a/esdk/layers/meta-zxic-custom/recipes-lynq/lynq-fota-backup/files/lynq-fota-backup.sh
+++ /dev/null
@@ -1,39 +0,0 @@
-#!/bin/sh
-#
-# Run the daemon
-#
-
-DAEMON="lynq-fota-backup-service"
-PIDFILE="/var/run/$DAEMON.pid"
-EXEC="/usr/bin/lynq-fota-backup"
-EXEC_ARGS=""
-
-
-start() {
-        echo -n "Starting $DAEMON... "
-        start-stop-daemon --no-close -S -b -m -p $PIDFILE -x $EXEC -- $EXEC_ARGS
-        [ $? -eq 0 ] && echo "OK" || echo "ERROR"
-}
-
-stop() {
-        echo -n "Stopping $DAEMON... "
-        start-stop-daemon -K -p $PIDFILE
-        [ $? -eq 0 ] && echo "OK" || echo "ERROR"
-}
-
-restart() {
-        stop
-        start
-}
-
-case "$1" in
-  start|stop|restart)
-        "$1"
-        ;;
-  *)
-        echo "Usage: $0 {start|stop|restart}"
-        exit 1
-esac
-
-exit $?
-
diff --git a/esdk/layers/meta-zxic-custom/recipes-lynq/lynq-fota-backup/files/makefile b/esdk/layers/meta-zxic-custom/recipes-lynq/lynq-fota-backup/files/makefile
deleted file mode 100755
index 0a349d3..0000000
--- a/esdk/layers/meta-zxic-custom/recipes-lynq/lynq-fota-backup/files/makefile
+++ /dev/null
@@ -1,57 +0,0 @@
-SHELL = /bin/sh

-RM = rm -f

-

-LOCAL_CFLAGS := -Wall \

-                -std=gnu++14 \

-                -g -Os \

-                -flto \

-                -fPIC \

-    

-                

- 

-ifeq ($(strip $(TARGET_PLATFORM)), T106)

-LOCAL_CFLAGS += -DBINDER_IPC_32BIT=1 -DHAVE_ENDIAN_H -DHAVE_PTHREADS -DHAVE_SYS_UIO_H -DHAVE_POSIX_FILEMAP -DHAVE_STRLCPY -DHAVE_PRCTL -DHAVE_MEMSET16 -DHAVE_MEMSET32 -DANDROID_SMP=0

-endif

-

-LOCAL_CFLAGS += -Werror=format-security

-

-$(warning ################# rock ROOT: $(ROOT),includedir:$(includedir),)

-

-LOCAL_PATH   = .

-

-LOCAL_C_INCLUDES = \

-  -I. \

-  -I$(LOCAL_PATH)/include \

-  -I$(ROOT)$(includedir)/logger \

-  -I$(ROOT)$(includedir)/liblog \

-  -I$(ROOT)$(includedir)/glib-2.0 \

-  -I$(ROOT)$(libdir)/glib-2.0/include \

-  -I$(ROOT)$(includedir)  \

-

-

-

-LOCAL_LIBS := \

-    -L. \

-    -ldl \

-    -lstdc++ \

-    -llynq-log \

-    -llynq-fota \

-

-SOURCES = lynq-fota-backup.cpp

-

-EXECUTABLE = lynq-fota-backup

-

-OBJECTS=$(SOURCES:.cpp=.o)

-

-all: $(EXECUTABLE) 

-$(EXECUTABLE): $(OBJECTS)

-	$(CXX) $(OBJECTS) $(LOCAL_LIBS) $(LOCAL_CFLAGS) $(LOCAL_C_INCLUDES) -o $@

-

-%.o : %.cpp

-	$(CXX) $(LOCAL_C_INCLUDES) $(LOCAL_CFLAGS) $(LOCAL_LIBS) -o $@ -c $< 

-

-.PHONY: clean

-clean:

-	$(RM) $(OBJECTS) $(EXECUTABLE)

-	$(RM) $(OBJECTS_TOOL) $(EXECUTABLE)

-

diff --git a/esdk/layers/meta-zxic-custom/recipes-lynq/lynq-fota-backup/lynq-fota-backup.bb b/esdk/layers/meta-zxic-custom/recipes-lynq/lynq-fota-backup/lynq-fota-backup.bb
deleted file mode 100755
index b89f7ab..0000000
--- a/esdk/layers/meta-zxic-custom/recipes-lynq/lynq-fota-backup/lynq-fota-backup.bb
+++ /dev/null
@@ -1,54 +0,0 @@
-#inherit externalsrc package systemd
-
-DESCRIPTION = "lynq-fota-backup.service"
-
-LICENSE = "MIT"
-##License checksum file is always required
-LIC_FILES_CHKSUM = "file://${WORKDIR}/LICENSE;md5=c794e8ff1acd3b7f156a6497e780dd54"
-
-SRC_URI = "file://lynq-fota-backup.cpp \
-	   file://lynq-fota-backup.sh \
-	   file://makefile \
-	   file://lynq-fota-backup.service \
-	   file://LICENSE \
-"
-
-
-TARGET_CC_ARCH += "${LDFLAGS}"
-
-
-DEPENDS += "liblynq-log liblynq-uci liblynq-qser-fota"
-S = "${WORKDIR}"
-#INHIBIT_PACKAGE_STRIP = "1"
-do_compile () {
-
-	
-	if test "${PACKAGE_ARCH}" = "cortexa7hf-vfp-vfpv4-neon" || test "${PACKAGE_ARCH}" = "cortexa7hf-neon-vfpv4"; then
-		oe_runmake all ROOT=${STAGING_DIR_HOST} OFLAGS="--sysroot=${STAGING_DIR_HOST} -mhard-float"
-	else
-		oe_runmake all ROOT=${STAGING_DIR_HOST} OFLAGS="--sysroot=${STAGING_DIR_HOST}"
-	fi
-}
-#INHIBIT_PACKAGE_STRIP = "1"
-
-
-do_install() {
-	install -d ${D}${bindir}/
-	echo "Installing image PN ${PN}"
-	echo "Installing image systemd_unitdir ${systemd_unitdir}"
-	echo "Installing image D ${D}"
-	echo "Installing image B ${B}"
-
-	if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
-		install -d ${D}${systemd_unitdir}/system/
-		install -m 0644 ${B}/lynq-fota-backup.service ${D}${systemd_unitdir}/system
-    else
-		install -d ${D}${sysconfdir}/init.d
-        	install -m 0755  ${S}/lynq-fota-backup.sh ${D}${sysconfdir}/init.d/
-        	install -d ${D}${sysconfdir}/rcS.d
-        	ln -s ../init.d/lynq-fota-backup.sh ${D}${sysconfdir}/rcS.d/S82lynq-fota-backup-service
-	fi
-
-	install -m 0755 ${S}/lynq-fota-backup ${D}${bindir}/
-	install -d ${D}${includedir}
-}
diff --git a/esdk/layers/meta-zxic-custom/recipes-lynq/lynq-gnss-update/files/main.c b/esdk/layers/meta-zxic-custom/recipes-lynq/lynq-gnss-update/files/main.c
deleted file mode 100755
index 6b9fddd..0000000
--- a/esdk/layers/meta-zxic-custom/recipes-lynq/lynq-gnss-update/files/main.c
+++ /dev/null
@@ -1,236 +0,0 @@
-#include "hd8040_upgrade.h"

-#include "port.h"

-#include <getopt.h>

-#include <include/lynq-gpio.h>

-#define READ_MAX_LENGTH 128

-#define PORT_NAME ("/dev/ttyS2")

-uint8_t g_bin_buff[500*1024] = {0};

-uint32_t g_bin_buff_size = 0;

-extern int get_mon_ver(int uart_fd,uint8_t *ver_buf, int ver_len);

-

-#define READ_LEN_MAX 1024 //BOOT_UPGRADE_BUFF_MAX_1

-

-int read_bin_file(uint8_t *path, uint8_t *buff)

-{

-    int fp = -1;

-    int ret = 0;

-    int i = 0;

-    int size = 0;

-

-    if (NULL == path || NULL == buff)

-    {

-        printf("[%s %d] str error", __FUNCTION__, __LINE__);

-        return -1;

-    }

-

-    fp = open((char *)path, O_RDONLY);

-    if(fp < 0)

-    {

-        printf( "[%s %d]open file failed ! errno is %d\n", __FUNCTION__, __LINE__, errno);

-        return -1;

-    }

-

-    size = lseek(fp, 0x00, SEEK_END);

-    if(size <= 0)

-    {

-        printf( "[%s %d]file is empty\n", __FUNCTION__, __LINE__);

-        return -1;

-    }

-

-    printf( "[%s %d]file size is:%d\n", __FUNCTION__, __LINE__, size);

-    lseek(fp, 0x00, SEEK_SET);

-    while(1)

-    {

-        ret = read(fp, buff, READ_LEN_MAX);

-        i += ret;

-        if(ret == READ_LEN_MAX)

-        {

-            buff += READ_LEN_MAX;

-        }

-        else

-        {

-            break;

-        }

-    }

-

-    printf( "[%s %d]file size is:%d,i:%d\n", __FUNCTION__, __LINE__, size, i);

-    close(fp);

-    if(size != i)

-    {

-        return -1;

-    }

-    g_bin_buff_size = size;

-    return 0;

-}

-

-static void print_usage(const char *prog)

-{

-    printf("Usage: %s [-BUTVh]\n", prog);

-    puts("  -B --boot    boot mode select\n"

-         "  -U --user  user mode select \n"

-         "  -T --usertoboot  usertoboot mode select \n"

-         "  -V --version firmware version get \n"

-         "  -h --help    help message print \n");

-    exit(1);

-}

-

-struct option long_options[] = {

-{ "name", 0, NULL, 'n' },

-{ "bf_name", 0, NULL, 'b' },

-{ "love", 1, NULL, 'l' },

-{ 0, 0, 0, 0},

-};

-

-static const struct option lopts[] = {

-{ "boot",	required_argument, NULL, 'B' },//required_argument

-{ "user",	required_argument, NULL, 'U' },

-{ "usertoboot", required_argument, NULL, 'T' },

-{ "version",   0, NULL, 'V' },

-{ "help",	0, NULL, 'h' },

-{ 0, 0, 0, 0 },

-};

-char* const short_options1 = "B:U:T:Vh";

-

-int write_file(uint8_t *path, uint8_t *buff, int len)

-{

-    int fp = -1;

-    int ret = 0;

-    int i = 0;

-    int size = 0;

-

-    if (NULL == path || NULL == buff)

-    {

-        printf("[%s %d] str error", __FUNCTION__, __LINE__);

-        return -1;

-    }

-

-    fp = open((char *)path, O_RDWR );

-    if(fp < 0)

-    {

-        printf( "[%s %d]open file failed ! errno is %d\n", __FUNCTION__, __LINE__, errno);

-        return -1;

-    }

-

-    size = lseek(fp, 0x00, SEEK_END);

-

-    write(fp, buff, len);

-

-    printf( "[%s %d]file size is:%d,i:%d\n", __FUNCTION__, __LINE__, size, i);

-    close(fp);

-    return 0;

-}

-

-//example  //升级过程中,禁止其他程序操作该串口,禁止断电复位等操作

-int main(int argc, char *argv[])

-{

-    uint8_t newVersionBuf[READ_MAX_LENGTH] = {0};

-    uint8_t cleintID[READ_MAX_LENGTH] = "999999";

-    int fd = -1; // uart handle

-    int ret = -1;

-    uint8_t filePath[256] = {0};

-    uint16_t filePtahLen = 0;

-

-    if (argc == 1)

-    {

-        printf("This program needs arguments....\n\n");

-        print_usage(argv[0]);

-    }

-

-    int num;

-    while ((num = getopt_long(argc, argv, short_options1, lopts, NULL)) != -1)

-    {

-        printf("getopt_long C:%d\n", num);

-        switch (num)

-        {

-

-        case 'B':

-        {

-            printf("optarg:%s\n", optarg);

-            if ( optarg == NULL )

-            {

-                printf("%s: option 'B' requires argument...\n", argv[0]);

-                break;

-            }

-            filePtahLen = strlen(optarg);

-            if(filePtahLen < sizeof(filePath))

-            {

-                memcpy((char *)filePath, optarg, filePtahLen);

-                goto HD_UPG;

-            }

-

-            //sleep(1);

-        }

-            break;

-        case 'V':

-        {

-            printf("check version\n");

-            fd = OpenUart((char *)PORT_NAME);

-            if (fd < 0)

-            {

-

-                printf("open uart failed %d\n", fd);

-                return -1;

-            }

-            get_mon_ver(fd, newVersionBuf, sizeof(newVersionBuf));

-            printf("version is: %s\n", newVersionBuf);

-            uart_close(fd);

-            return 0;

-        }

-            break;

-

-        default:

-        {

-            printf("please input correct parameters\n");

-        }

-            break;

-        }

-    }

-

-    //芯片上电

-HD_UPG:

-    fd = OpenUart((char *)PORT_NAME);

-    if (fd < 0)

-    {

-

-        printf("open uart failed %d\n", fd);

-        return -1;

-    }

-    ret = read_bin_file(filePath, g_bin_buff);

-    if (ret < 0)

-    {

-        printf("open file failed %d\n", fd);

-        return -1;

-    }

-

-    /*go to boot-mode need change pin status*/

-    lynq_gpio_init(15,1,0,0);

-    lynq_gpio_value_set(15, 0);

-    usleep(100000);//100ms

-    lynq_gpio_init(126,1,1,0);

-    lynq_gpio_value_set(126, 1);

-    usleep(1000000);//1s

-    lynq_gpio_value_set(126, 0);

-    usleep(100000);//100ms

-    lynq_gpio_direction_set(15, 0);

-    lynq_gpio_pullsel_set(15, 0);

-    lynq_gpio_deinit(15);

-    lynq_gpio_deinit(126);

-

-    ret = fw_update_boot(fd, g_bin_buff, g_bin_buff_size);

-    if (ret < 0)

-    {

-        printf("open file failed %d\n", fd);

-        return -1;

-    }

-    sleep(1);

-    if(ret == HDBD_UPG_SUCESS)

-    {

-        printf("upgrade sucess!\r\n");

-    }

-    else

-    {

-        printf("upgrade FAIL, fail style:%d\r\n",ret);

-    }

-    uart_close(fd);

-    return ret;

-}

diff --git a/esdk/layers/meta-zxic-custom/recipes-lynq/lynq-qser-voice-demo/files/lynq-qser-voice-demo.cpp b/esdk/layers/meta-zxic-custom/recipes-lynq/lynq-qser-voice-demo/files/lynq-qser-voice-demo.cpp
deleted file mode 100755
index 41c5c97..0000000
--- a/esdk/layers/meta-zxic-custom/recipes-lynq/lynq-qser-voice-demo/files/lynq-qser-voice-demo.cpp
+++ /dev/null
@@ -1,410 +0,0 @@
-#include <stdlib.h>

-#include <stdio.h>

-#include <string.h>

-#include <sys/types.h>

-#include <pthread.h>

-#include <unistd.h>

-#include <dlfcn.h>

-#include <stdint.h>

-

-#include"lynq-qser-voice-demo.h"

-

-typedef struct

-{

-    int  cmdIdx;

-    char *funcName;

-} st_api_test_case;

-    

-//for server test

-st_api_test_case at_api_testcases[] = 

-{

-    {0,   "print_help"},

-    {1,   "qser_voice_call_start"},

-    {2,   "qser_voice_call_end"},

-    {3,   "qser_voice_call_answer"},

-    {4,   "qser_voice_set_speech_volume"},

-    {5,   "qser_voice_get_speech_volume"},

-    {6,   "qser_voice_set_dtmf"},    

-#ifdef ECALL_SUPPORT

-    {7,   "qser_voice_set_test_num"},

-    {8,   "qser_voice_fast_ecall"},

-#endif

-    {-1,    NULL}

-};

-

-typedef uint32_t voice_client_handle_type;

-

-

-int (*qser_voice_call_client_init)(voice_client_handle_type *ph_voice);

-int (*qser_voice_call_client_deinit)(voice_client_handle_type );

-int (*qser_voice_call_addstatehandler)(voice_client_handle_type  h_voice,

-                                       QSER_VoiceCall_StateHandlerFunc_t  handlerPtr,

-                                       void *contextPtr);

-

-int (*qser_voice_call_removestatehandle)(voice_client_handle_type );

-int (*qser_voice_call_start)(voice_client_handle_type  h_voice,

-                             E_QSER_VCALL_ID_T   simId, 

-                             char *phone_number, int *call_id); 

-

-int (*qser_voice_call_end)(voice_client_handle_type ,int );

-int (*qser_voice_call_answer)(voice_client_handle_type ,int  );

-int (*qser_voice_set_speech_volume)(const int volume);

-int (*qser_voice_get_speech_volume)(int *volume);

-int (*qser_voice_set_dtmf)(const char callnum);

-

-#ifdef ECALL_SUPPORT

-int (*qser_voice_set_test_num)(voice_client_handle_type*       h_voice,E_QSER_VOICE_ECALL_SET_TYPE_T type, const char *test_num, int test_num_length);

-int (*qser_voice_fast_ecall)(voice_client_handle_type*       h_voice,

-                        int                         *call_id,

-                        E_QSER_VOICE_ECALL_CATEGORY_T cat,

-                        E_QSER_VOICE_ECALL_VARIANT_T variant,

-                        const char *addr, 

-                        int addr_length, 

-                        const unsigned char *msd_data,

-                        int msd_length); //msd_length should <= QSER_MSD_MAX_LENGTH

-int (*qser_voice_set_msd)(int callid, const unsigned char *msd_data, int msd_length); //msd_length should <= QSER_MSD_MAX_LENGTH

-int (*qser_voice_add_ecall_indhandler)(voice_client_handle_type*          h_voice,

-                                  QSER_ECall_IndHandlerFunc_t   handlerPtr,

-                                  void*  contextPtr);

-

-static void yk_voice_ecall_cb_func(int         callid,  E_QSER_VOICE_ECALL_INDICATION_T ind, void* contextPtr)

-{   

-    unsigned char msd_data[QSER_MSD_MAX_LENGTH]={1,1,2,2,3,3,4,4};

-

-    printf("######### Call id=%d, event=%d!  ######\n", callid, ind);

-    

-    if(ind == E_QSER_VOICE_ECALL_IND_SENDING_START_IN_VOICE || ind == E_QSER_VOICE_ECALL_IND_PSAP_CALLBACK_START)

-    {

-        /*customer should construct msd including GPS data, here use msd_data for illustrate,*/

-        qser_voice_set_msd(callid,msd_data,8);                

-    }

-}

-

-#endif

-

-

-void *dlHandle_call = NULL;

-

-static void yk_voice_call_cb_func(int                     call_id,

-                                  char*                   phone_num,

-                                  qser_voice_call_state_t state,

-                                  void                    *contextPtr)

-{

-    char *call_state[] = {"INCOMING", "DIALING", "ALERTING", "ACTIVE", "HOLDING", "END", "WAITING"};

-

-    printf("######### Call id=%d, PhoneNum:%s, event=%s!  ######\n", call_id, phone_num, call_state[state]);

-}

-

-

-

-void print_help(void)

-{

-    int i;

-    printf("Supported test cases:\n");

-    for(i = 0; ; i++)

-    {

-        if(at_api_testcases[i].cmdIdx == -1)

-        {

-            break;

-        }

-        printf("%d:\t%s\n", at_api_testcases[i].cmdIdx, at_api_testcases[i].funcName);

-    }

-}

-

-

-

-int main(int argc, char const *argv[])

-{

-    int cmdIdx = 0;

-    int ret    = 0;

-    int  voice_call_id = 0;

-    voice_client_handle_type    h_voice     = 0;

-    

-    const char *lynqLibPath_Call = "/lib/liblynq-qser-voice.so";

-    dlHandle_call = dlopen(lynqLibPath_Call, RTLD_NOW);

-    if (dlHandle_call == NULL) 

-    {

-        printf("dlopen dlHandle_call failed: %s\n", dlerror());

-        exit(EXIT_FAILURE);

-    }

-    

-    qser_voice_call_client_init = (int(*)(voice_client_handle_type *ph_voice))dlsym(dlHandle_call, "qser_voice_call_client_init");

-    if(qser_voice_call_client_init == NULL) 

-    {

-        printf("qser_voice_call_client_init not defined or exported in %s\n", lynqLibPath_Call);

-        return -1;

-    }

-

-    qser_voice_call_addstatehandler = (int(*)(voice_client_handle_type          h_voice,

-                                            QSER_VoiceCall_StateHandlerFunc_t    handlerPtr,

-                                            void  *contextPtr))dlsym(dlHandle_call,"qser_voice_call_addstatehandler");

-    if(qser_voice_call_addstatehandler == NULL) 

-    {

-        printf("qser_voice_call_addstatehandler not defined or exported in %s\n", lynqLibPath_Call);

-        return -1;

-    }

-    

-    qser_voice_call_answer = (int(*)(voice_client_handle_type,int ))dlsym(dlHandle_call,"qser_voice_call_answer");

-    if(qser_voice_call_answer == NULL) 

-    {

-        printf("qser_voice_call_answer not defined or exported in %s\n", lynqLibPath_Call);

-        return -1;

-    }

-

-    qser_voice_call_start = (int(*)(voice_client_handle_type  h_voice,E_QSER_VCALL_ID_T   simId, 

-                                    char *phone_number, int *call_id))dlsym(dlHandle_call,"qser_voice_call_start");

-    if(qser_voice_call_start == NULL) 

-    {

-        printf("qser_voice_call_start not defined or exported in %s\n", lynqLibPath_Call);

-        return -1;

-    }

-

-    qser_voice_call_end = (int(*)(voice_client_handle_type ,int))dlsym(dlHandle_call,"qser_voice_call_end");

-    if(qser_voice_call_end == NULL) 

-    {

-        printf("qser_voice_call_end not defined or exported in %s\n", lynqLibPath_Call);

-        return -1;

-    }

-    

-

-    qser_voice_call_client_deinit = (int (*)(voice_client_handle_type h_voice))dlsym(dlHandle_call,"qser_voice_call_client_deinit");

-    if(qser_voice_call_client_deinit == NULL) 

-    {

-        printf("qser_voice_call_client_deinit  not defined or exported in %s\n", lynqLibPath_Call);

-        return -1;

-    }

-

-    qser_voice_call_removestatehandle = (int (*)(voice_client_handle_type))dlsym(dlHandle_call,"qser_voice_call_removestatehandle");

-    if(qser_voice_call_removestatehandle == NULL) 

-    {

-        printf("qser_voice_call_removestatehandle not defined or exported in %s\n", lynqLibPath_Call);

-        return -1;

-    }

-

-    qser_voice_set_speech_volume = (int (*)(const int ))dlsym(dlHandle_call,"qser_voice_set_speech_volume");

-    if(qser_voice_set_speech_volume == NULL)    

-    {

-            printf("qser_voice_set_speech_volume not defined or exported in %s\n", lynqLibPath_Call);

-            return -1;

-    }

-

-    qser_voice_get_speech_volume = (int (*)(int* ))dlsym(dlHandle_call,"qser_voice_get_speech_volume");

-    if(qser_voice_get_speech_volume == NULL)    

-    {

-            printf("qser_voice_get_speech_volume not defined or exported in %s\n", lynqLibPath_Call);

-            return -1;

-    }

-

-    qser_voice_set_dtmf = (int (*)(const char ))dlsym(dlHandle_call,"qser_voice_set_dtmf");

-    if(qser_voice_set_dtmf == NULL)    

-    {

-            printf("qser_voice_set_dtmf not defined or exported in %s\n", lynqLibPath_Call);

-            return -1;

-    }

-

-#ifdef ECALL_SUPPORT

-    qser_voice_fast_ecall = (int (*)(voice_client_handle_type*, int*, E_QSER_VOICE_ECALL_CATEGORY_T, E_QSER_VOICE_ECALL_VARIANT_T, const char*, int, const unsigned char*, int))dlsym(dlHandle_call,"qser_voice_fast_ecall");

-    if(qser_voice_fast_ecall == NULL)    

-    {

-            printf("qser_voice_fast_ecall not defined or exported in %s\n", lynqLibPath_Call);

-            return -1;

-    }

-

-    qser_voice_set_test_num = (int (*)(voice_client_handle_type*, E_QSER_VOICE_ECALL_SET_TYPE_T, const char* , int))dlsym(dlHandle_call,"qser_voice_set_test_num");

-    if(qser_voice_set_test_num == NULL)    

-    {

-            printf("qser_voice_set_test_num not defined or exported in %s\n", lynqLibPath_Call);

-            return -1;

-    }    

-

-    qser_voice_set_msd = (int (*)(int , const unsigned char *, int))dlsym(dlHandle_call,"qser_voice_set_msd");

-    if(qser_voice_set_msd == NULL)    

-    {

-        printf("qser_voice_set_msd not defined or exported in %s\n", lynqLibPath_Call);

-        return -1;

-    }

-

-    qser_voice_add_ecall_indhandler = (int (*)(voice_client_handle_type* h_voice, QSER_ECall_IndHandlerFunc_t, void*))dlsym(dlHandle_call,"qser_voice_add_ecall_indhandler");

-    if(qser_voice_add_ecall_indhandler == NULL)    

-    {

-            printf("qser_voice_add_ecall_indhandler not defined or exported in %s\n", lynqLibPath_Call);

-            return -1;

-    }

-#endif

-    

-    ret = qser_voice_call_client_init(&h_voice);

-    if(ret != 0 )

-    {

-        printf("qser_voice_call_client_init FAIL\n");

-        return -1;

-    }

-

-    ret = qser_voice_call_addstatehandler(h_voice, yk_voice_call_cb_func, &voice_call_id);

-    if(ret != 0)

-    {

-        printf("qser_voice_call_addstatehandler FAIL\n");

-        return -1;

-    }

-

-#ifdef ECALL_SUPPORT

-    ret = qser_voice_add_ecall_indhandler(&h_voice, yk_voice_ecall_cb_func, NULL);

-    if(ret != 0)

-    {

-        printf("qser_voice_add_ecall_indhandler FAIL\n");

-        return -1;

-    }

-#endif

-

-    print_help();

-    while(1)

-    {

-        printf("\nplease input cmd index(-1 exit): ");

-        scanf("%d", &cmdIdx);

-        if(cmdIdx == -1)

-        {

-            break;

-        }

-

-        switch(cmdIdx)

-        {

-            //"print_help

-            case 0:

-                print_help();

-                break;

-

-            //"qser_voice_call_start"

-            case 1:

-            {

-                char    PhoneNum[32] = {0}; 

-

-                printf("please input dest phone number: \n");

-                scanf("%s", PhoneNum);

-            

-                ret = qser_voice_call_start(h_voice, E_QSER_VCALL_EXTERNAL_SLOT_1, PhoneNum, &voice_call_id);

-                printf("qser_voice_call_start ret = %d, with voice_call_id=%d\n", ret, voice_call_id);

-                break;

-            }

-    

-            //"qser_voice_call_end"

-            case 2:

-            {

-                int call_id = -1;

-                printf("please input end call id: \n");

-                scanf("%d", &call_id);

-                ret = qser_voice_call_end(h_voice, call_id);

-                printf(" ret = %d\n", ret);

-                break;

-            }

-

-            //"qser_voice_call_answer"

-            case 3:

-            {

-                int call_id = -1;

-                printf(" please input answer call id\n");

-                scanf("%d", &call_id);

-                ret = qser_voice_call_answer(h_voice, call_id);

-                printf(" ret = %d\n", ret);

-                break;

-            }

-            

-            case 4:

-            {

-                int volume = 0;

-                printf("Please set speech volume:0-5 level\n");

-                scanf("%d",&volume);

-                ret = qser_voice_set_speech_volume(volume);

-                printf("ret is %d\n",ret);

-                break;

-

-            }

-

-            case 5:

-            {

-                int volume = -1;

-                printf("Enter get speech volume\n");

-                ret = qser_voice_get_speech_volume(&volume);

-                printf("ret is %d,get volume is %d\n",ret,volume);

-                break;

-

-            }

-            case 6:

-            {

-                

-               int ret;

-               char inputChar;

-            

-               printf("Enter set dtmf\n");

-               scanf(" %c", &inputChar);

-               printf("inputChar is %c\n", inputChar);

-               ret = qser_voice_set_dtmf(inputChar);

-               

-               if (ret != 0) 

-               {

-                   printf("qser set voice dtmf failed\n");

-                   return -1;

-               }

-              break;

-            }

-#ifdef ECALL_SUPPORT

-            case 7:

-            {                

-                char PhoneNum[32] = {0};                 

-                printf("please input test phone number: \n");

-                scanf("%s", PhoneNum);                            

-                ret = qser_voice_set_test_num(&h_voice, E_QSER_VOICE_ECALL_SET_NUMBER, PhoneNum, strlen(PhoneNum)+1);

-                printf("qser_voice_set_test_num ret = %d\n", ret);

-                break;

-            }            

-            case 8:

-            {   

-                int call_id = -1;

-                int cat;

-                int var;

-                int length;

-                unsigned char  msd[QSER_MSD_MAX_LENGTH]={0};

-

-                printf("please input ecall cat: 0 manual, 1 auto\n");

-                scanf("%d", &cat);

-                printf("please input ecall type: 0 test, 1 emergency\n");

-                scanf("%d", &var);

-                printf("please input msd content length (max length is 140)\n");

-                scanf("%d", &length);

-                printf("please input %d unsigned char (0-255):\n", length);  

-                for (int i = 0; i < length; i++) {  

-                    scanf("%hhu", &msd[i]); 

-                }                               

-                ret = qser_voice_fast_ecall(&h_voice, &call_id, (E_QSER_VOICE_ECALL_CATEGORY_T) cat, (E_QSER_VOICE_ECALL_VARIANT_T) var, "null",5,msd,length);

-                printf("qser_voice_fast_ecall ret = %d, call id is %d\n", ret, call_id);

-                break;

-            }            

-#endif

-            default:

-                print_help();

-                break;

-        }

-            

-    }

-    

-    ret = qser_voice_call_removestatehandle(h_voice);

-    if(ret != 0 && ret != 1)

-    {

-        printf("qser_voice_call_removestatehandle FAIL!!!\n");

-        return -1;

-    }

-    printf("qser_voice_call_removestatehandle ret = %d\n", ret);

-    

-    

-    ret = qser_voice_call_client_deinit(h_voice);

-    if(ret != 0)

-    {

-        printf("qser_voice_call_client_deinit FAIL\n");

-        return -1;

-    }

-    printf("qser_voice_call_client_deinit ret = %d, with h_voice=%d\n", ret, h_voice);

-    

-   return 0;

-

-    

-}

-

-

diff --git a/esdk/layers/meta-zxic/recipes-app/at-ctl/at-ctl.bb b/esdk/layers/meta-zxic/recipes-app/at-ctl/at-ctl.bb
deleted file mode 100755
index 12ea54b..0000000
--- a/esdk/layers/meta-zxic/recipes-app/at-ctl/at-ctl.bb
+++ /dev/null
@@ -1,90 +0,0 @@
-DESCRIPTION = "at_ctl"
-DEPENDS     = "libnvram libsoftap libsofttimer libatutils sqlcipher libatext libmxml libtelsvr libsd-daemon"
-SECTION     = "app"
-LICENSE     = "zte"
-PV = "1.0.0"
-PR = "r0"
-
-CLASS_COM = " \
-    ${@bb.utils.contains('DISTRO_FEATURES', 'procd', 'openwrt openwrt-services', '', d)} \
-    ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', '', d)} \
-"
-inherit ${CLASS_COM}
-
-
-DEPENDS += " \
-    ${@bb.utils.contains('DISTRO_FEATURES', 'volte', 'libvoice', '', d)} \
-    "
-
-#配置code路径信息。
-FILESEXTRAPATHS_prepend :="${APP-OPEN-PATH}/platform:"
-SRC_URI = " \
-          file://at_ctl \
-		  ${@bb.utils.contains("DISTRO_FEATURES", "procd", "file://at_ctl.init","", d)} \
-		  ${@bb.utils.contains("DISTRO_FEATURES", "systemd", "file://at_ctl.service","", d)} \
-		  ${@bb.utils.contains("DISTRO_FEATURES", "sysvinit", "file://at_ctl.sysvinit","", d)} \
-		  file://preconfigured_urs_policy.xml \
-          "
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/zte;md5=c075689d1d1e06d4ab5bbe53623a6808"
-S = "${WORKDIR}"
-S_SRC_PATH = "${S}/at_ctl"
-
-#引用公用头文件和编译选项。
-include ${BSPDIR}/sources/meta-zxic/conf/app_com.inc
-include ${BSPDIR}/sources/meta-zxic/conf/pub.inc
-CFLAGS_append = "-I ${BSPDIR}/zxic_code/zxic_source/zxic_app_open/platform/at_ctl/src/phone/inc"
-CFLAGS_append += "${ZXIC_EXTRA_CFLAGS}"
-LDLIBS_EXT = "${@bb.utils.contains('DISTRO_FEATURES', 'volte', '-lvoice', '', d)}"
-#include at-ctl.inc
-
-#inherit autotools pkgconfig systemd
-
-do_compile() {
-	make -C ${S_SRC_PATH} LDLIBS_EXT=${LDLIBS_EXT}
-}
-
-do_install () {
-	install -d ${D}${bindir}/		
-	install -m 0755 ${S_SRC_PATH}/at_ctl ${D}${bindir}/
-	
-	if ${@bb.utils.contains('DISTRO_FEATURES','procd','true','false',d)}; then
-		install -Dm 0755 ${WORKDIR}/at_ctl.init ${D}${sysconfdir}/init.d/at_ctl
-	fi
-
-	if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
-		install -d ${D}${systemd_unitdir}/system
-		install -m 0644 ${WORKDIR}/at_ctl.service ${D}${systemd_unitdir}/system
-	fi
-	
-	if ${@bb.utils.contains('DISTRO_FEATURES','sysvinit','true','false',d)}; then
-		install -Dm 0755 ${WORKDIR}/at_ctl.sysvinit ${D}${sysconfdir}/init.d/at_ctl
-		install -d ${D}${sysconfdir}/rcS.d
-		ln -s ../init.d/at_ctl ${D}${sysconfdir}/rcS.d/S20at_ctl
-		ln -s ../init.d/at_ctl ${D}${sysconfdir}/rcS.d/K80at_ctl
-	fi
-	
-	install -d ${D}/etc_ro/config/
-	install -m 0644 ${WORKDIR}/preconfigured_urs_policy.xml ${D}/etc_ro/config/
-
-	#install elfs
-	install -d ${ELFS-PATH}/
-	#install -m 0755 ${S_SRC_PATH}/at_ctl ${ELFS-PATH}/${PN}/
-	install -m 0755 ${S_SRC_PATH}/at_ctl ${ELFS-PATH}/
-}
-
-do_cleanlibs () {
-	rm -fr ${ELFS-PATH}/at_ctl
-}
-
-addtask  cleanlibs after do_clean  before do_cleansstate
-
-FILES_${PN} = "\
-    ${bindir}/ \
-    ${@bb.utils.contains("DISTRO_FEATURES", "procd", "${sysconfdir}/init.d/at_ctl","", d)} \
-    ${@bb.utils.contains("DISTRO_FEATURES", "sysvinit", "${sysconfdir}/","", d)} \
-    etc_ro/ \
-    "
-SYSTEMD_SERVICE_${PN}     = "at_ctl.service"
-SYSTEMD_AUTO_ENABLE_${PN} = "enable"
-
-RDEPENDS_${PN} = " libnvram libsoftap libsofttimer libatutils sqlcipher libatext libmxml libvoice libsd-daemon"
diff --git a/esdk/layers/meta-zxic/recipes-app/sntp/sntp.bb b/esdk/layers/meta-zxic/recipes-app/sntp/sntp.bb
deleted file mode 100755
index 21f207e..0000000
--- a/esdk/layers/meta-zxic/recipes-app/sntp/sntp.bb
+++ /dev/null
@@ -1,75 +0,0 @@
-DESCRIPTION = "sntp"
-#sntp依赖libnvram库
-DEPENDS     = "libnvram libsoftap libsofttimer"
-SECTION     = "app"
-LICENSE     = "zte"
-PV = "1.0.0"
-PR = "r0"
-
-CLASS_COM = " \
-    ${@bb.utils.contains('DISTRO_FEATURES', 'procd', 'openwrt openwrt-services', '', d)} \
-    ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', '', d)} \
-"
-inherit ${CLASS_COM}
-
-#配置code路径信息。
-FILESEXTRAPATHS_prepend :="${APP-OPEN-PATH}/platform:"
-SRC_URI = " \
-          file://sntp \
-		  ${@bb.utils.contains("DISTRO_FEATURES", "procd", "file://sntp.init","", d)} \
-		  ${@bb.utils.contains("DISTRO_FEATURES", "systemd", "file://sntp.service","", d)} \
-		  ${@bb.utils.contains("DISTRO_FEATURES", "sysvinit", "file://sntp.sysvinit","", d)} \
-          "
-
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/zte;md5=c075689d1d1e06d4ab5bbe53623a6808"
-S = "${WORKDIR}"
-
-#引用公用头文件和编译选项。
-include ${BSPDIR}/sources/meta-zxic/conf/app_com.inc
-
-#编译
-do_compile() {
-	make -C sntp
-}
-
-#库文件的安装,封库的宏MK_SDK_VERSION
-do_install () {
-	install -d ${D}${bindir}/
-	install -m 0755 ${S}/sntp/sntp ${D}${bindir}/
-	
-	if ${@bb.utils.contains('DISTRO_FEATURES','procd','true','false',d)}; then
-		install -Dm 0755 ${WORKDIR}/sntp.init ${D}${sysconfdir}/init.d/sntp
-	fi
-
-	if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
-		install -d ${D}${systemd_unitdir}/system
-		install -m 0644 ${WORKDIR}/sntp.service ${D}${systemd_unitdir}/system
-	fi
-	
-	if ${@bb.utils.contains('DISTRO_FEATURES','sysvinit','true','false',d)}; then
-		install -Dm 0755 ${WORKDIR}/sntp.sysvinit ${D}${sysconfdir}/init.d/sntp
-		install -d ${D}${sysconfdir}/rcS.d
-		#ln -s ../init.d/sntp ${D}${sysconfdir}/rcS.d/S22sntp
-	fi
-	
-	#install elfs
-	install -d ${ELFS-PATH}/
-	install -m 0755 ${S}/sntp/sntp ${ELFS-PATH}/
-}
-#清库
-do_cleanlibs () {
-	rm -fr ${ELFS-PATH}/sntp
-}
-
-addtask  cleanlibs after do_clean  before do_cleansstate
-
-#rootfs包含的文件
-FILES_${PN} = "\
-    ${bindir}/ \
-    ${@bb.utils.contains("DISTRO_FEATURES", "procd", "${sysconfdir}/init.d/sntp","", d)} \
-	${@bb.utils.contains("DISTRO_FEATURES", "sysvinit", "${sysconfdir}/","", d)} \
-    "
-SYSTEMD_SERVICE_${PN}     = "sntp.service"
-SYSTEMD_AUTO_ENABLE_${PN} = "enable"
-
-RDEPENDS_${PN} = " libnvram libsoftap libsofttimer"
diff --git a/esdk/layers/meta-zxic/recipes-app/wifi-demo/wifi-demo.bb b/esdk/layers/meta-zxic/recipes-app/wifi-demo/wifi-demo.bb
deleted file mode 100755
index 5565218..0000000
--- a/esdk/layers/meta-zxic/recipes-app/wifi-demo/wifi-demo.bb
+++ /dev/null
@@ -1,53 +0,0 @@
-DESCRIPTION = "wifi_demo"
-DEPENDS     = "libsctel"
-SECTION     = "app"
-LICENSE     = "zte"
-PV = "1.0.0"
-PR = "r0"
-
-CLASS_COM = " \
-    ${@bb.utils.contains('DISTRO_FEATURES', 'procd', 'openwrt openwrt-services', '', d)} \
-    ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', '', d)} \
-"
-inherit ${CLASS_COM}
-
-#配置code路径信息。
-FILESEXTRAPATHS_prepend :="${APP-OPEN-PATH}/test:"
-SRC_URI = " \
-    file://wifi_demo \		  
-    "
-
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/zte;md5=c075689d1d1e06d4ab5bbe53623a6808"
-S = "${WORKDIR}"
-
-#引用公用头文件和编译选项。
-include ${BSPDIR}/sources/meta-zxic/conf/app_com.inc
-
-
-do_compile() {
-	make -C wifi_demo
-}
-
-do_install () {
-	install -d ${D}${bindir}/
-	install -m 0755 ${S}/wifi_demo/wifi_demo ${D}${bindir}/
-	install -m 0755 ${S}/wifi_demo/apsta_demo ${D}${bindir}/
-	
-	#install elfs
-	install -d ${ELFS-PATH}/
-	install -m 0755 ${S}/wifi_demo/wifi_demo ${ELFS-PATH}/
-	install -m 0755 ${S}/wifi_demo/apsta_demo ${ELFS-PATH}/
-}
-
-do_cleanlibs () {
-	rm -fr ${ELFS-PATH}/wifi_demo
-	rm -fr ${ELFS-PATH}/apsta_demo
-}
-
-addtask  cleanlibs after do_clean  before do_cleansstate
-
-FILES_${PN} = "\
-    ${bindir}/ \
-    "
-
-RDEPENDS_${PN} = " libsctel"
diff --git a/esdk/layers/meta-zxic/recipes-app/zxic-debug/zxic-debug.bb b/esdk/layers/meta-zxic/recipes-app/zxic-debug/zxic-debug.bb
deleted file mode 100755
index c7f87d1..0000000
--- a/esdk/layers/meta-zxic/recipes-app/zxic-debug/zxic-debug.bb
+++ /dev/null
@@ -1,61 +0,0 @@
-DESCRIPTION = "zxic-debug"
-#zxic-debug依赖libnvram库
-DEPENDS     = "libnvram"
-SECTION     = "app"
-LICENSE     = "zte"
-PV = "1.0.0"
-PR = "r0"
-
-CLASS_COM = " \
-    ${@bb.utils.contains('DISTRO_FEATURES', 'procd', 'openwrt openwrt-services', '', d)} \
-    ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', '', d)} \
-"
-inherit ${CLASS_COM}
-
-#配置code路径信息。
-FILESEXTRAPATHS_prepend :="${APP-OPEN-PATH}/platform:"
-SRC_URI = " \
-    file://zxic_debug \
-	${@bb.utils.contains("DISTRO_FEATURES", "sysvinit", "file://zxic_debug.sysvinit","", d)} \
-    "
-
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/zte;md5=c075689d1d1e06d4ab5bbe53623a6808"
-S = "${WORKDIR}"
-
-#引用公用头文件和编译选项。
-include ${BSPDIR}/sources/meta-zxic/conf/app_com.inc
-include ${BSPDIR}/sources/meta-zxic/conf/pub.inc
-CFLAGS_append = "${ZXIC_EXTRA_CFLAGS}"
-
-#编译
-do_compile() {
-	make -C zxic_debug
-}
-
-#库文件的安装
-do_install() {
-	install -d ${D}${bindir}/
-	install -m 0755 ${S}/zxic_debug/zxic_debug ${D}${bindir}/
-
-	if ${@bb.utils.contains('DISTRO_FEATURES','sysvinit','true','false',d)}; then
-		install -Dm 0755 ${WORKDIR}/zxic_debug.sysvinit ${D}${sysconfdir}/init.d/zxic_debug
-		install -d ${D}${sysconfdir}/rcS.d
-		ln -s ../init.d/zxic_debug ${D}${sysconfdir}/rcS.d/S90zxic_debug
-	fi
-
-	#install elfs
-	install -d ${ELFS-PATH}/
-	install -m 0755 ${S}/zxic_debug/zxic_debug ${ELFS-PATH}/		
-}
-#清库
-do_cleanlibs () {
-	rm -fr ${ELFS-PATH}/zxic_debug
-}
-
-addtask  cleanlibs after do_clean  before do_cleansstate
-
-#rootfs包含的文件
-FILES_${PN} = "\
-    ${bindir}/ \
-	${@bb.utils.contains("DISTRO_FEATURES", "sysvinit", "${sysconfdir}/","", d)} \
-    "
diff --git a/esdk/layers/meta-zxic/recipes-app/zxic-mainctrl/zxic-mainctrl.bb b/esdk/layers/meta-zxic/recipes-app/zxic-mainctrl/zxic-mainctrl.bb
deleted file mode 100755
index dba5672..0000000
--- a/esdk/layers/meta-zxic/recipes-app/zxic-mainctrl/zxic-mainctrl.bb
+++ /dev/null
@@ -1,77 +0,0 @@
-DESCRIPTION = "zxic_mainctrl"
-DEPENDS     = "libnvram libsofttimer libatutils libsoftap openssl libscipc libupi-ab"
-SECTION     = "app"
-LICENSE     = "zte"
-PV = "1.0.0"
-PR = "r0"
-
-CLASS_COM = " \
-    ${@bb.utils.contains('DISTRO_FEATURES', 'procd', 'openwrt openwrt-services', '', d)} \
-    ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', '', d)} \
-"
-inherit ${CLASS_COM}
-
-#配置code路径信息。
-FILESEXTRAPATHS_prepend :="${APP-OPEN-PATH}/platform:"
-SRC_URI = " \
-          file://zxic_mainctrl \
-		  ${@bb.utils.contains("DISTRO_FEATURES", "procd", "file://zxic_mainctrl.init","", d)} \
-		  ${@bb.utils.contains("DISTRO_FEATURES", "systemd", "file://zxic_mainctrl.service","", d)} \
-		  ${@bb.utils.contains("DISTRO_FEATURES", "sysvinit", "file://zxic_mainctrl.sysvinit","", d)} \
-          "
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/zte;md5=c075689d1d1e06d4ab5bbe53623a6808"
-S = "${WORKDIR}"
-S_SRC_PATH = "${S}/zxic_mainctrl"
-#引用公用头文件和编译选项。
-include ${BSPDIR}/sources/meta-zxic/conf/app_com.inc
-
-#inherit autotools pkgconfig systemd
-
-do_compile() {
-	#echo "TOPDIR = ${TOPDIR}"
-	
-	make -C ${S_SRC_PATH}
-}
-
-do_install () {
-	install -d ${D}${bindir}/
-	install -m 0755 ${S_SRC_PATH}/zxic_mainctrl ${D}${bindir}/
-	install -m 0755 ${S_SRC_PATH}/router_msg_proxy ${D}${bindir}/
-	
-	if ${@bb.utils.contains('DISTRO_FEATURES','procd','true','false',d)}; then
-		install -Dm 0755 ${WORKDIR}/zxic_mainctrl.init ${D}${sysconfdir}/init.d/zxic_mainctrl
-	fi
-
-	if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
-		install -d ${D}${systemd_unitdir}/system
-		install -m 0644 ${WORKDIR}/zxic_mainctrl.service ${D}${systemd_unitdir}/system
-	fi
-	
-	if ${@bb.utils.contains('DISTRO_FEATURES','sysvinit','true','false',d)}; then
-		install -Dm 0755 ${WORKDIR}/zxic_mainctrl.sysvinit ${D}${sysconfdir}/init.d/zxic_mainctrl
-		install -d ${D}${sysconfdir}/rcS.d
-		ln -s ../init.d/zxic_mainctrl ${D}${sysconfdir}/rcS.d/S40zxic_mainctrl
-	fi
-
-	#install elfs
-	install -d ${ELFS-PATH}/
-	install -m 0755 ${S_SRC_PATH}/zxic_mainctrl ${ELFS-PATH}/
-	install -m 0755 ${S_SRC_PATH}/router_msg_proxy ${ELFS-PATH}/	
-}
-
-do_cleanlibs () {
-	rm -fr ${ELFS-PATH}/zxic_mainctrl
-	rm -fr ${ELFS-PATH}/router_msg_proxy
-}
-
-addtask  cleanlibs after do_clean  before do_cleansstate
-
-FILES_${PN} = "\
-    ${bindir}/ \
-    ${@bb.utils.contains("DISTRO_FEATURES", "procd", "${sysconfdir}/init.d/zxic_mainctrl","", d)} \
-    ${@bb.utils.contains("DISTRO_FEATURES", "sysvinit", "${sysconfdir}/","", d)} \
-    "
-SYSTEMD_SERVICE_${PN}     = "zxic_mainctrl.service"
-SYSTEMD_AUTO_ENABLE_${PN} = "enable"
-
-RDEPENDS_${PN} = " libnvram libsofttimer libatutils libsoftap openssl libscipc libupi-ab"
diff --git a/esdk/layers/meta-zxic/recipes-core/glibc/glibc_%.bbappend b/esdk/layers/meta-zxic/recipes-core/glibc/glibc_%.bbappend
deleted file mode 100755
index 0314602..0000000
--- a/esdk/layers/meta-zxic/recipes-core/glibc/glibc_%.bbappend
+++ /dev/null
@@ -1,36 +0,0 @@
-
-FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
-
-SRC_URI += " \
-           file://0001-write-log-to-zcat-tool.patch \
-"
-
-do_install_append() {
-    install -d ${ELFS-PATH}/
-    cp -rv ${D}${base_libdir}/ld-2.31.so  ${ELFS-PATH}/
-    cp -rv ${D}${base_libdir}/libc-2.31.so ${ELFS-PATH}/
-    cp -rv ${D}${base_libdir}/libthread_db-1.0.so ${ELFS-PATH}/
-    cp -rv ${D}${base_libdir}/libpthread-2.31.so ${ELFS-PATH}/
-    cp -rv ${D}${base_libdir}/libm-2.31.so ${ELFS-PATH}/
-    cp -rv ${D}${base_libdir}/libnss_hesiod-2.31.so ${ELFS-PATH}/
-    cp -rv ${D}${base_libdir}/libnss_db-2.31.so  ${ELFS-PATH}/
-    cp -rv ${D}${base_libdir}/libnss_files-2.31.so ${ELFS-PATH}/
-    cp -rv ${D}${base_libdir}/libnss_compat-2.31.so  ${ELFS-PATH}/
-    cp -rv ${D}${base_libdir}/libpcprofile.so ${ELFS-PATH}/
-    cp -rv ${D}${base_libdir}/libnss_dns-2.31.so  ${ELFS-PATH}/
-    cp -rv ${D}${base_libdir}/librt-2.31.so  ${ELFS-PATH}/
-    cp -rv ${D}${base_libdir}/libdl-2.31.so  ${ELFS-PATH}/
-    cp -rv ${D}${base_libdir}/libmemusage.so  ${ELFS-PATH}/
-    cp -rv ${D}${base_libdir}/libSegFault.so  ${ELFS-PATH}/
-    cp -rv ${D}${base_libdir}/libresolv-2.31.so  ${ELFS-PATH}/
-    cp -rv ${D}${base_libdir}/libutil-2.31.so  ${ELFS-PATH}/
-    cp -rv ${D}${base_libdir}/libanl-2.31.so  ${ELFS-PATH}/
-    cp -rv ${D}${base_libdir}/libnsl-2.31.so  ${ELFS-PATH}/
-    cp -rv ${D}${base_libdir}/libBrokenLocale-2.31.so  ${ELFS-PATH}/    
-}
-
-do_cleanlibs () {
-    rm -fr ${ELFS-PATH}/libc.so
-}
-
-addtask  cleanlibs after do_clean  before do_cleansstate
diff --git a/esdk/layers/meta-zxic/recipes-kernel/linux/files/zx297520v3/linux-5_10-vehicle_dc_ref-normal-defconfig b/esdk/layers/meta-zxic/recipes-kernel/linux/files/zx297520v3/linux-5_10-vehicle_dc_ref-normal-defconfig
deleted file mode 100755
index ef22244..0000000
--- a/esdk/layers/meta-zxic/recipes-kernel/linux/files/zx297520v3/linux-5_10-vehicle_dc_ref-normal-defconfig
+++ /dev/null
@@ -1,3112 +0,0 @@
-#
-# Automatically generated file; DO NOT EDIT.
-# Linux/arm 5.10.156 Kernel Configuration
-#
-CONFIG_CC_VERSION_TEXT="arm-zxic-linux-gnueabi-gcc (GCC) 9.3.0"
-CONFIG_CC_IS_GCC=y
-CONFIG_GCC_VERSION=90300
-CONFIG_LD_VERSION=234000000
-CONFIG_CLANG_VERSION=0
-CONFIG_LLD_VERSION=0
-CONFIG_CC_CAN_LINK=y
-CONFIG_CC_CAN_LINK_STATIC=y
-CONFIG_CC_HAS_ASM_GOTO=y
-CONFIG_CC_HAS_ASM_INLINE=y
-CONFIG_IRQ_WORK=y
-CONFIG_BUILDTIME_TABLE_SORT=y
-
-#
-# General setup
-#
-CONFIG_BROKEN_ON_SMP=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-# CONFIG_COMPILE_TEST is not set
-CONFIG_LOCALVERSION=""
-CONFIG_LOCALVERSION_AUTO=y
-CONFIG_BUILD_SALT=""
-CONFIG_HAVE_KERNEL_GZIP=y
-CONFIG_HAVE_KERNEL_LZMA=y
-CONFIG_HAVE_KERNEL_XZ=y
-CONFIG_HAVE_KERNEL_LZO=y
-CONFIG_HAVE_KERNEL_LZ4=y
-CONFIG_KERNEL_GZIP=y
-# CONFIG_KERNEL_LZMA is not set
-# CONFIG_KERNEL_XZ is not set
-# CONFIG_KERNEL_LZO is not set
-# CONFIG_KERNEL_LZ4 is not set
-CONFIG_DEFAULT_INIT=""
-CONFIG_DEFAULT_HOSTNAME="(none)"
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-CONFIG_SYSVIPC_SYSCTL=y
-CONFIG_POSIX_MQUEUE=y
-CONFIG_POSIX_MQUEUE_SYSCTL=y
-# CONFIG_WATCH_QUEUE is not set
-CONFIG_CROSS_MEMORY_ATTACH=y
-# CONFIG_USELIB is not set
-CONFIG_HAVE_ARCH_AUDITSYSCALL=y
-
-#
-# IRQ subsystem
-#
-CONFIG_GENERIC_IRQ_PROBE=y
-CONFIG_GENERIC_IRQ_SHOW=y
-CONFIG_GENERIC_IRQ_SHOW_LEVEL=y
-CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y
-CONFIG_HARDIRQS_SW_RESEND=y
-CONFIG_IRQ_DOMAIN=y
-CONFIG_IRQ_DOMAIN_HIERARCHY=y
-CONFIG_GENERIC_MSI_IRQ=y
-CONFIG_GENERIC_MSI_IRQ_DOMAIN=y
-CONFIG_HANDLE_DOMAIN_IRQ=y
-CONFIG_IRQ_FORCED_THREADING=y
-CONFIG_SPARSE_IRQ=y
-# CONFIG_GENERIC_IRQ_DEBUGFS is not set
-# end of IRQ subsystem
-
-CONFIG_GENERIC_IRQ_MULTI_HANDLER=y
-CONFIG_GENERIC_CLOCKEVENTS=y
-
-#
-# Timers subsystem
-#
-CONFIG_TICK_ONESHOT=y
-CONFIG_NO_HZ_COMMON=y
-# CONFIG_HZ_PERIODIC is not set
-CONFIG_NO_HZ_IDLE=y
-CONFIG_NO_HZ=y
-CONFIG_HIGH_RES_TIMERS=y
-# end of Timers subsystem
-
-# CONFIG_PREEMPT_NONE is not set
-# CONFIG_PREEMPT_VOLUNTARY is not set
-CONFIG_PREEMPT=y
-CONFIG_PREEMPT_COUNT=y
-CONFIG_PREEMPTION=y
-
-#
-# CPU/Task time and stats accounting
-#
-CONFIG_TICK_CPU_ACCOUNTING=y
-# CONFIG_VIRT_CPU_ACCOUNTING_GEN is not set
-# CONFIG_IRQ_TIME_ACCOUNTING is not set
-# CONFIG_BSD_PROCESS_ACCT is not set
-# CONFIG_PSI is not set
-# end of CPU/Task time and stats accounting
-
-#
-# RCU Subsystem
-#
-CONFIG_TREE_RCU=y
-CONFIG_PREEMPT_RCU=y
-# CONFIG_RCU_EXPERT is not set
-CONFIG_SRCU=y
-CONFIG_TREE_SRCU=y
-CONFIG_TASKS_RCU_GENERIC=y
-CONFIG_TASKS_RCU=y
-CONFIG_RCU_STALL_COMMON=y
-CONFIG_RCU_NEED_SEGCBLIST=y
-# end of RCU Subsystem
-
-# CONFIG_IKCONFIG is not set
-# CONFIG_IKHEADERS is not set
-CONFIG_LOG_BUF_SHIFT=15
-CONFIG_PRINTK_SAFE_LOG_BUF_SHIFT=13
-CONFIG_GENERIC_SCHED_CLOCK=y
-
-#
-# Scheduler features
-#
-# end of Scheduler features
-
-# CONFIG_CGROUPS is not set
-CONFIG_NAMESPACES=y
-CONFIG_UTS_NS=y
-CONFIG_IPC_NS=y
-CONFIG_USER_NS=y
-CONFIG_PID_NS=y
-CONFIG_NET_NS=y
-# CONFIG_CHECKPOINT_RESTORE is not set
-# CONFIG_SCHED_AUTOGROUP is not set
-# CONFIG_SYSFS_DEPRECATED is not set
-# CONFIG_RELAY is not set
-# CONFIG_BLK_DEV_INITRD is not set
-# CONFIG_BOOT_CONFIG is not set
-# CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE is not set
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_LD_ORPHAN_WARN=y
-CONFIG_SYSCTL=y
-CONFIG_HAVE_UID16=y
-CONFIG_EXPERT=y
-CONFIG_UID16=y
-CONFIG_MULTIUSER=y
-# CONFIG_SGETMASK_SYSCALL is not set
-CONFIG_SYSFS_SYSCALL=y
-# CONFIG_FHANDLE is not set
-CONFIG_POSIX_TIMERS=y
-CONFIG_PRINTK=y
-CONFIG_PRINTK_NMI=y
-CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-# CONFIG_BASE_FULL is not set
-CONFIG_FUTEX=y
-CONFIG_FUTEX_PI=y
-CONFIG_HAVE_FUTEX_CMPXCHG=y
-CONFIG_EPOLL=y
-CONFIG_SIGNALFD=y
-CONFIG_TIMERFD=y
-CONFIG_EVENTFD=y
-# CONFIG_SHMEM is not set
-CONFIG_AIO=y
-CONFIG_IO_URING=y
-CONFIG_ADVISE_SYSCALLS=y
-CONFIG_MEMBARRIER=y
-CONFIG_KALLSYMS=y
-CONFIG_KALLSYMS_ALL=y
-CONFIG_KALLSYMS_BASE_RELATIVE=y
-# CONFIG_BPF_SYSCALL is not set
-# CONFIG_USERFAULTFD is not set
-CONFIG_ARCH_HAS_MEMBARRIER_SYNC_CORE=y
-# CONFIG_KCMP is not set
-CONFIG_RSEQ=y
-# CONFIG_DEBUG_RSEQ is not set
-CONFIG_EMBEDDED=y
-CONFIG_HAVE_PERF_EVENTS=y
-CONFIG_PERF_USE_VMALLOC=y
-# CONFIG_PC104 is not set
-
-#
-# Kernel Performance Events And Counters
-#
-# CONFIG_PERF_EVENTS is not set
-# end of Kernel Performance Events And Counters
-
-CONFIG_VM_EVENT_COUNTERS=y
-CONFIG_SLUB_DEBUG=y
-CONFIG_COMPAT_BRK=y
-# CONFIG_SLAB is not set
-CONFIG_SLUB=y
-# CONFIG_SLOB is not set
-CONFIG_SLAB_MERGE_DEFAULT=y
-# CONFIG_SLAB_FREELIST_RANDOM is not set
-# CONFIG_SLAB_FREELIST_HARDENED is not set
-# CONFIG_SHUFFLE_PAGE_ALLOCATOR is not set
-# CONFIG_PROFILING is not set
-# end of General setup
-
-CONFIG_ARM=y
-CONFIG_ARM_HAS_SG_CHAIN=y
-CONFIG_SYS_SUPPORTS_APM_EMULATION=y
-CONFIG_HAVE_PROC_CPU=y
-CONFIG_STACKTRACE_SUPPORT=y
-CONFIG_LOCKDEP_SUPPORT=y
-CONFIG_TRACE_IRQFLAGS_SUPPORT=y
-CONFIG_FIX_EARLYCON_MEM=y
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_ARCH_SUPPORTS_UPROBES=y
-# CONFIG_ARM_PATCH_PHYS_VIRT is not set
-CONFIG_PHYS_OFFSET=0x22C00000
-CONFIG_GENERIC_BUG=y
-CONFIG_PGTABLE_LEVELS=2
-
-#
-# System Type
-#
-CONFIG_MMU=y
-CONFIG_ARCH_MMAP_RND_BITS_MIN=8
-CONFIG_ARCH_MMAP_RND_BITS_MAX=16
-CONFIG_ARCH_MULTIPLATFORM=y
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_EP93XX is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_IOP32X is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_DOVE is not set
-# CONFIG_ARCH_PXA is not set
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_SA1100 is not set
-# CONFIG_ARCH_S3C24XX is not set
-# CONFIG_ARCH_OMAP1 is not set
-
-#
-# Multiple platform selection
-#
-
-#
-# CPU Core family selection
-#
-# CONFIG_ARCH_MULTI_V6 is not set
-CONFIG_ARCH_MULTI_V7=y
-CONFIG_ARCH_MULTI_V6_V7=y
-# end of Multiple platform selection
-
-CONFIG_ARCH_VIRT=y
-# CONFIG_ARCH_ACTIONS is not set
-# CONFIG_ARCH_ALPINE is not set
-# CONFIG_ARCH_ARTPEC is not set
-# CONFIG_ARCH_ASPEED is not set
-# CONFIG_ARCH_AT91 is not set
-# CONFIG_ARCH_BCM is not set
-# CONFIG_ARCH_BERLIN is not set
-# CONFIG_ARCH_DIGICOLOR is not set
-# CONFIG_ARCH_EXYNOS is not set
-# CONFIG_ARCH_HIGHBANK is not set
-# CONFIG_ARCH_HISI is not set
-# CONFIG_ARCH_MXC is not set
-# CONFIG_ARCH_KEYSTONE is not set
-# CONFIG_ARCH_MEDIATEK is not set
-# CONFIG_ARCH_MESON is not set
-# CONFIG_ARCH_MILBEAUT is not set
-# CONFIG_ARCH_MMP is not set
-# CONFIG_ARCH_MSTARV7 is not set
-# CONFIG_ARCH_MVEBU is not set
-# CONFIG_ARCH_NPCM is not set
-
-#
-# TI OMAP/AM/DM/DRA Family
-#
-# CONFIG_ARCH_OMAP3 is not set
-# CONFIG_ARCH_OMAP4 is not set
-# CONFIG_SOC_OMAP5 is not set
-# CONFIG_SOC_AM33XX is not set
-# CONFIG_SOC_AM43XX is not set
-# CONFIG_SOC_DRA7XX is not set
-# end of TI OMAP/AM/DM/DRA Family
-
-# CONFIG_ARCH_SIRF is not set
-# CONFIG_ARCH_QCOM is not set
-# CONFIG_ARCH_RDA is not set
-# CONFIG_ARCH_REALTEK is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_ROCKCHIP is not set
-# CONFIG_ARCH_S5PV210 is not set
-# CONFIG_ARCH_RENESAS is not set
-# CONFIG_ARCH_SOCFPGA is not set
-# CONFIG_PLAT_SPEAR is not set
-# CONFIG_ARCH_STI is not set
-# CONFIG_ARCH_STM32 is not set
-# CONFIG_ARCH_SUNXI is not set
-# CONFIG_ARCH_TANGO is not set
-# CONFIG_ARCH_TEGRA is not set
-# CONFIG_ARCH_UNIPHIER is not set
-# CONFIG_ARCH_U8500 is not set
-# CONFIG_ARCH_VEXPRESS is not set
-# CONFIG_ARCH_WM8850 is not set
-# CONFIG_ARCH_ZX is not set
-# CONFIG_ARCH_ZYNQ is not set
-CONFIG_ARCH_ZX297520V3=y
-
-#
-# ZX297520V3 Board Type
-#
-# CONFIG_ARCH_ZX297520V3_EVB is not set
-CONFIG_ARCH_ZX297520V3_MDL=y
-# CONFIG_ARCH_ZX297520V3_MIFI is not set
-# CONFIG_ARCH_ZX297520V3_UFI is not set
-# CONFIG_ARCH_ZX297520V3_PHONE is not set
-# CONFIG_ARCH_ZX297520V3_FWP is not set
-# CONFIG_ARCH_ZX297520V3_WATCH is not set
-# CONFIG_ARCH_ZX297520V3_CPE is not set
-# CONFIG_ARCH_ZX297520V3_CPE_SWITCH is not set
-# CONFIG_ARCH_ZX297520V3_POC is not set
-# CONFIG_ARCH_ZX297520V3_FPGA is not set
-# CONFIG_ARCH_ZX297520V3_CAP is not set
-# CONFIG_MIN_VERSION is not set
-# CONFIG_MIN_8M_VERSION is not set
-
-#
-# Processor Type
-#
-CONFIG_CPU_V7=y
-CONFIG_CPU_THUMB_CAPABLE=y
-CONFIG_CPU_32v6K=y
-CONFIG_CPU_32v7=y
-CONFIG_CPU_ABRT_EV7=y
-CONFIG_CPU_PABRT_V7=y
-CONFIG_CPU_CACHE_V7=y
-CONFIG_CPU_CACHE_VIPT=y
-CONFIG_CPU_COPY_V6=y
-CONFIG_CPU_TLB_V7=y
-CONFIG_CPU_HAS_ASID=y
-CONFIG_CPU_CP15=y
-CONFIG_CPU_CP15_MMU=y
-
-#
-# Processor Features
-#
-# CONFIG_ARM_LPAE is not set
-CONFIG_ARM_THUMB=y
-# CONFIG_ARM_THUMBEE is not set
-CONFIG_ARM_VIRT_EXT=y
-# CONFIG_SWP_EMULATE is not set
-# CONFIG_CPU_BIG_ENDIAN is not set
-# CONFIG_CPU_ICACHE_DISABLE is not set
-# CONFIG_CPU_DCACHE_DISABLE is not set
-# CONFIG_CPU_BPREDICT_DISABLE is not set
-CONFIG_CPU_SPECTRE=y
-CONFIG_HARDEN_BRANCH_PREDICTOR=y
-CONFIG_HARDEN_BRANCH_HISTORY=y
-CONFIG_KUSER_HELPERS=y
-# CONFIG_VDSO is not set
-CONFIG_MIGHT_HAVE_CACHE_L2X0=y
-# CONFIG_CACHE_L2X0 is not set
-CONFIG_ARM_L1_CACHE_SHIFT_6=y
-CONFIG_ARM_L1_CACHE_SHIFT=6
-CONFIG_ARM_DMA_MEM_BUFFERABLE=y
-CONFIG_ARCH_SUPPORTS_BIG_ENDIAN=y
-CONFIG_DEBUG_ALIGN_RODATA=y
-# CONFIG_ARM_ERRATA_430973 is not set
-CONFIG_ARM_ERRATA_720789=y
-CONFIG_ARM_ERRATA_754322=y
-# CONFIG_ARM_ERRATA_775420 is not set
-# CONFIG_ARM_ERRATA_773022 is not set
-# CONFIG_ARM_ERRATA_818325_852422 is not set
-# CONFIG_ARM_ERRATA_821420 is not set
-# CONFIG_ARM_ERRATA_825619 is not set
-# CONFIG_ARM_ERRATA_857271 is not set
-# CONFIG_ARM_ERRATA_852421 is not set
-# CONFIG_ARM_ERRATA_852423 is not set
-# CONFIG_ARM_ERRATA_857272 is not set
-# end of System Type
-
-#
-# Bus support
-#
-# CONFIG_ARM_ERRATA_814220 is not set
-# end of Bus support
-
-#
-# Kernel Features
-#
-CONFIG_HAVE_SMP=y
-# CONFIG_SMP is not set
-CONFIG_HAVE_ARM_ARCH_TIMER=y
-CONFIG_VMSPLIT_3G=y
-# CONFIG_VMSPLIT_3G_OPT is not set
-# CONFIG_VMSPLIT_2G is not set
-# CONFIG_VMSPLIT_1G is not set
-CONFIG_PAGE_OFFSET=0xC0000000
-CONFIG_ARM_PSCI=y
-CONFIG_ARCH_NR_GPIO=0
-CONFIG_HZ_FIXED=0
-CONFIG_HZ_100=y
-# CONFIG_HZ_200 is not set
-# CONFIG_HZ_250 is not set
-# CONFIG_HZ_300 is not set
-# CONFIG_HZ_500 is not set
-# CONFIG_HZ_1000 is not set
-CONFIG_HZ=100
-CONFIG_SCHED_HRTICK=y
-CONFIG_THUMB2_KERNEL=y
-CONFIG_ARM_PATCH_IDIV=y
-CONFIG_AEABI=y
-CONFIG_ARCH_SELECT_MEMORY_MODEL=y
-CONFIG_ARCH_FLATMEM_ENABLE=y
-CONFIG_ARCH_SPARSEMEM_ENABLE=y
-CONFIG_HAVE_ARCH_PFN_VALID=y
-# CONFIG_HIGHMEM is not set
-CONFIG_CPU_SW_DOMAIN_PAN=y
-CONFIG_ARCH_WANT_GENERAL_HUGETLB=y
-CONFIG_ARM_MODULE_PLTS=y
-CONFIG_FORCE_MAX_ZONEORDER=11
-CONFIG_ALIGNMENT_TRAP=y
-# CONFIG_UACCESS_WITH_MEMCPY is not set
-# CONFIG_PARAVIRT is not set
-# CONFIG_PARAVIRT_TIME_ACCOUNTING is not set
-# CONFIG_XEN is not set
-# end of Kernel Features
-
-#
-# Boot options
-#
-CONFIG_USE_OF=y
-CONFIG_ATAGS=y
-# CONFIG_DEPRECATED_PARAM_STRUCT is not set
-CONFIG_ZBOOT_ROM_TEXT=0x10000000
-CONFIG_ZBOOT_ROM_BSS=0x20040000
-# CONFIG_ARM_APPENDED_DTB is not set
-CONFIG_CMDLINE=""
-# CONFIG_KEXEC is not set
-# CONFIG_CRASH_DUMP is not set
-#CONFIG_AUTO_ZRELADDR is not set
-# CONFIG_EFI is not set
-# end of Boot options
-
-#
-# CPU Power Management
-#
-
-#
-# CPU Frequency scaling
-#
-CONFIG_CPU_FREQ=y
-CONFIG_CPU_FREQ_GOV_ATTR_SET=y
-CONFIG_CPU_FREQ_GOV_COMMON=y
-CONFIG_CPU_FREQ_STAT=y
-# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
-# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
-# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
-# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
-CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE=y
-CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
-# CONFIG_CPU_FREQ_GOV_USERSPACE is not set
-# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set
-CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
-
-#
-# CPU frequency scaling drivers
-#
-# CONFIG_CPUFREQ_DT is not set
-CONFIG_ARM_ZX_CPUFREQ=y
-# end of CPU Frequency scaling
-
-#
-# CPU Idle
-#
-CONFIG_CPU_IDLE=y
-# CONFIG_CPU_IDLE_GOV_LADDER is not set
-CONFIG_CPU_IDLE_GOV_MENU=y
-# CONFIG_CPU_IDLE_GOV_TEO is not set
-
-#
-# ARM CPU Idle Drivers
-#
-# CONFIG_ARM_CPUIDLE is not set
-# CONFIG_ARM_PSCI_CPUIDLE is not set
-# CONFIG_ARM_HIGHBANK_CPUIDLE is not set
-# end of ARM CPU Idle Drivers
-# end of CPU Idle
-# end of CPU Power Management
-
-#
-# Floating point emulation
-#
-
-#
-# At least one emulation must be selected
-#
-# CONFIG_VFP is not set
-# end of Floating point emulation
-
-#
-# Power management options
-#
-CONFIG_SUSPEND=y
-CONFIG_SUSPEND_FREEZER=y
-# CONFIG_SUSPEND_SKIP_SYNC is not set
-# CONFIG_HIBERNATION is not set
-CONFIG_PM_SLEEP=y
-CONFIG_PM_AUTOSLEEP=y
-CONFIG_PM_WAKELOCKS=y
-CONFIG_PM_WAKELOCKS_LIMIT=100
-CONFIG_PM_WAKELOCKS_GC=y
-CONFIG_PM=y
-CONFIG_PM_DEBUG=y
-CONFIG_PM_ADVANCED_DEBUG=y
-CONFIG_PM_SLEEP_DEBUG=y
-# CONFIG_APM_EMULATION is not set
-CONFIG_PM_CLK=y
-# CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set
-CONFIG_CPU_PM=y
-CONFIG_ARCH_SUSPEND_POSSIBLE=y
-CONFIG_ARM_CPU_SUSPEND=y
-CONFIG_ARCH_HIBERNATION_POSSIBLE=y
-CONFIG_MFD_ZX234290=y
-# end of Power management options
-
-#
-# Firmware Drivers
-#
-# CONFIG_ARM_SCMI_PROTOCOL is not set
-# CONFIG_FIRMWARE_MEMMAP is not set
-# CONFIG_FW_CFG_SYSFS is not set
-# CONFIG_TRUSTED_FOUNDATIONS is not set
-# CONFIG_GOOGLE_FIRMWARE is not set
-CONFIG_ARM_PSCI_FW=y
-CONFIG_HAVE_ARM_SMCCC=y
-CONFIG_HAVE_ARM_SMCCC_DISCOVERY=y
-CONFIG_ARM_SMCCC_SOC_ID=y
-
-#
-# Tegra firmware driver
-#
-# end of Tegra firmware driver
-# end of Firmware Drivers
-
-CONFIG_AS_VFP_VMRS_FPINST=y
-
-#
-# General architecture-dependent options
-#
-CONFIG_SET_FS=y
-CONFIG_HAVE_OPROFILE=y
-# CONFIG_KPROBES is not set
-# CONFIG_JUMP_LABEL is not set
-CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
-CONFIG_ARCH_USE_BUILTIN_BSWAP=y
-CONFIG_HAVE_KPROBES=y
-CONFIG_HAVE_KRETPROBES=y
-CONFIG_HAVE_NMI=y
-CONFIG_HAVE_ARCH_TRACEHOOK=y
-CONFIG_HAVE_DMA_CONTIGUOUS=y
-CONFIG_GENERIC_SMP_IDLE_THREAD=y
-CONFIG_GENERIC_IDLE_POLL_SETUP=y
-CONFIG_ARCH_HAS_FORTIFY_SOURCE=y
-CONFIG_ARCH_HAS_KEEPINITRD=y
-CONFIG_ARCH_HAS_SET_MEMORY=y
-CONFIG_HAVE_ARCH_THREAD_STRUCT_WHITELIST=y
-CONFIG_ARCH_32BIT_OFF_T=y
-CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
-CONFIG_HAVE_RSEQ=y
-CONFIG_HAVE_PERF_REGS=y
-CONFIG_HAVE_PERF_USER_STACK_DUMP=y
-CONFIG_HAVE_ARCH_JUMP_LABEL=y
-CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
-CONFIG_HAVE_ARCH_SECCOMP=y
-CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
-# CONFIG_SECCOMP is not set
-CONFIG_HAVE_STACKPROTECTOR=y
-CONFIG_STACKPROTECTOR=y
-CONFIG_STACKPROTECTOR_STRONG=y
-CONFIG_HAVE_CONTEXT_TRACKING=y
-CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y
-CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y
-CONFIG_HAVE_MOD_ARCH_SPECIFIC=y
-CONFIG_MODULES_USE_ELF_REL=y
-CONFIG_ARCH_HAS_ELF_RANDOMIZE=y
-CONFIG_HAVE_ARCH_MMAP_RND_BITS=y
-CONFIG_HAVE_EXIT_THREAD=y
-CONFIG_ARCH_MMAP_RND_BITS=8
-CONFIG_ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT=y
-CONFIG_CLONE_BACKWARDS=y
-CONFIG_OLD_SIGSUSPEND3=y
-CONFIG_OLD_SIGACTION=y
-CONFIG_COMPAT_32BIT_TIME=y
-CONFIG_ARCH_OPTIONAL_KERNEL_RWX=y
-CONFIG_ARCH_OPTIONAL_KERNEL_RWX_DEFAULT=y
-CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y
-CONFIG_STRICT_KERNEL_RWX=y
-CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y
-CONFIG_STRICT_MODULE_RWX=y
-CONFIG_ARCH_HAS_PHYS_TO_DMA=y
-# CONFIG_LOCK_EVENT_COUNTS is not set
-CONFIG_ARCH_WANT_LD_ORPHAN_WARN=y
-
-#
-# GCOV-based kernel profiling
-#
-# CONFIG_GCOV_KERNEL is not set
-CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y
-# end of GCOV-based kernel profiling
-
-CONFIG_HAVE_GCC_PLUGINS=y
-CONFIG_GCC_PLUGINS=y
-# CONFIG_GCC_PLUGIN_CYC_COMPLEXITY is not set
-# CONFIG_GCC_PLUGIN_LATENT_ENTROPY is not set
-# CONFIG_GCC_PLUGIN_RANDSTRUCT is not set
-# end of General architecture-dependent options
-
-CONFIG_RT_MUTEXES=y
-CONFIG_BASE_SMALL=1
-CONFIG_MODULES=y
-# CONFIG_MODULE_FORCE_LOAD is not set
-CONFIG_MODULE_UNLOAD=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-# CONFIG_MODULE_SIG is not set
-# CONFIG_MODULE_COMPRESS is not set
-# CONFIG_MODULE_ALLOW_MISSING_NAMESPACE_IMPORTS is not set
-CONFIG_UNUSED_SYMBOLS=y
-CONFIG_BLOCK=y
-# CONFIG_BLK_DEV_BSG is not set
-# CONFIG_BLK_DEV_BSGLIB is not set
-# CONFIG_BLK_DEV_INTEGRITY is not set
-# CONFIG_BLK_DEV_ZONED is not set
-# CONFIG_BLK_CMDLINE_PARSER is not set
-# CONFIG_BLK_WBT is not set
-CONFIG_BLK_DEBUG_FS=y
-# CONFIG_BLK_SED_OPAL is not set
-# CONFIG_BLK_INLINE_ENCRYPTION is not set
-
-#
-# Partition Types
-#
-# CONFIG_PARTITION_ADVANCED is not set
-CONFIG_MSDOS_PARTITION=y
-CONFIG_EFI_PARTITION=y
-# end of Partition Types
-
-CONFIG_BLK_PM=y
-
-#
-# IO Schedulers
-#
-# CONFIG_MQ_IOSCHED_DEADLINE is not set
-# CONFIG_MQ_IOSCHED_KYBER is not set
-# CONFIG_IOSCHED_BFQ is not set
-# end of IO Schedulers
-
-CONFIG_UNINLINE_SPIN_UNLOCK=y
-CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y
-CONFIG_ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE=y
-CONFIG_FREEZER=y
-
-#
-# Executable file formats
-#
-CONFIG_BINFMT_ELF=y
-# CONFIG_BINFMT_ELF_FDPIC is not set
-CONFIG_ELFCORE=y
-CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
-CONFIG_BINFMT_SCRIPT=y
-CONFIG_ARCH_HAS_BINFMT_FLAT=y
-# CONFIG_BINFMT_FLAT is not set
-CONFIG_BINFMT_FLAT_ARGVP_ENVP_ON_STACK=y
-CONFIG_BINFMT_MISC=y
-CONFIG_COREDUMP=y
-# end of Executable file formats
-
-#
-# Memory Management options
-#
-CONFIG_SELECT_MEMORY_MODEL=y
-CONFIG_FLATMEM_MANUAL=y
-# CONFIG_SPARSEMEM_MANUAL is not set
-CONFIG_FLATMEM=y
-CONFIG_FLAT_NODE_MEM_MAP=y
-CONFIG_ARCH_KEEP_MEMBLOCK=y
-CONFIG_SPLIT_PTLOCK_CPUS=4
-CONFIG_COMPACTION=y
-# CONFIG_PAGE_REPORTING is not set
-CONFIG_MIGRATION=y
-# CONFIG_KSM is not set
-CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
-CONFIG_NEED_PER_CPU_KM=y
-# CONFIG_CLEANCACHE is not set
-# CONFIG_FRONTSWAP is not set
-# CONFIG_CMA is not set
-# CONFIG_ZPOOL is not set
-# CONFIG_ZBUD is not set
-# CONFIG_ZSMALLOC is not set
-CONFIG_GENERIC_EARLY_IOREMAP=y
-# CONFIG_IDLE_PAGE_TRACKING is not set
-# CONFIG_PERCPU_STATS is not set
-# CONFIG_GUP_BENCHMARK is not set
-# end of Memory Management options
-
-CONFIG_NET=y
-CONFIG_NET_INGRESS=y
-CONFIG_SKB_EXTENSIONS=y
-
-#
-# Networking options
-#
-CONFIG_PACKET=y
-# CONFIG_PACKET_DIAG is not set
-CONFIG_UNIX=y
-CONFIG_UNIX_SCM=y
-CONFIG_UNIX_DIAG=y
-# CONFIG_TLS is not set
-CONFIG_XFRM=y
-CONFIG_XFRM_ALGO=y
-# CONFIG_XFRM_USER is not set
-# CONFIG_XFRM_INTERFACE is not set
-# CONFIG_XFRM_SUB_POLICY is not set
-# CONFIG_XFRM_MIGRATE is not set
-# CONFIG_XFRM_STATISTICS is not set
-CONFIG_XFRM_IPCOMP=y
-# CONFIG_NET_KEY is not set
-CONFIG_INET=y
-# CONFIG_IP_MULTICAST is not set
-CONFIG_IP_ADVANCED_ROUTER=y
-# CONFIG_IP_FIB_TRIE_STATS is not set
-CONFIG_IP_MULTIPLE_TABLES=y
-# CONFIG_IP_ROUTE_MULTIPATH is not set
-# CONFIG_IP_ROUTE_VERBOSE is not set
-# CONFIG_IP_PNP is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE_DEMUX is not set
-CONFIG_NET_IP_TUNNEL=y
-CONFIG_IP_MROUTE_COMMON=y
-CONFIG_SYN_COOKIES=y
-# CONFIG_NET_IPVTI is not set
-# CONFIG_NET_FOU is not set
-# CONFIG_NET_FOU_IP_TUNNELS is not set
-# CONFIG_INET_AH is not set
-# CONFIG_INET_ESP is not set
-# CONFIG_INET_IPCOMP is not set
-CONFIG_INET_TUNNEL=y
-CONFIG_INET_DIAG=y
-CONFIG_INET_TCP_DIAG=y
-# CONFIG_INET_UDP_DIAG is not set
-# CONFIG_INET_RAW_DIAG is not set
-# CONFIG_INET_DIAG_DESTROY is not set
-# CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_CUBIC=y
-CONFIG_DEFAULT_TCP_CONG="cubic"
-# CONFIG_TCP_MD5SIG is not set
-CONFIG_IPV6=y
-CONFIG_IPV6_ROUTER_PREF=y
-CONFIG_IPV6_ROUTE_INFO=y
-CONFIG_IPV6_OPTIMISTIC_DAD=y
-# CONFIG_INET6_AH is not set
-# CONFIG_INET6_ESP is not set
-CONFIG_INET6_IPCOMP=y
-# CONFIG_IPV6_MIP6 is not set
-# CONFIG_IPV6_ILA is not set
-CONFIG_INET6_XFRM_TUNNEL=y
-CONFIG_INET6_TUNNEL=y
-# CONFIG_IPV6_VTI is not set
-CONFIG_IPV6_SIT=y
-# CONFIG_IPV6_SIT_6RD is not set
-CONFIG_IPV6_NDISC_NODETYPE=y
-CONFIG_IPV6_TUNNEL=y
-CONFIG_IPV6_MULTIPLE_TABLES=y
-CONFIG_IPV6_SUBTREES=y
-CONFIG_IPV6_MROUTE=y
-CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y
-CONFIG_IPV6_PIMSM_V2=y
-# CONFIG_IPV6_SEG6_LWTUNNEL is not set
-# CONFIG_IPV6_SEG6_HMAC is not set
-# CONFIG_IPV6_RPL_LWTUNNEL is not set
-# CONFIG_MPTCP is not set
-# CONFIG_NETWORK_SECMARK is not set
-# CONFIG_NETWORK_PHY_TIMESTAMPING is not set
-CONFIG_FASTNAT_MODULE=y
-CONFIG_NETFILTER=y
-CONFIG_NETFILTER_ADVANCED=y
-CONFIG_BRIDGE_NETFILTER=y
-
-#
-# Core Netfilter Configuration
-#
-CONFIG_NETFILTER_INGRESS=y
-CONFIG_NETFILTER_NETLINK=y
-CONFIG_NETFILTER_FAMILY_BRIDGE=y
-CONFIG_NETFILTER_NETLINK_ACCT=y
-CONFIG_NETFILTER_NETLINK_QUEUE=y
-# CONFIG_NETFILTER_NETLINK_LOG is not set
-CONFIG_NETFILTER_NETLINK_OSF=y
-CONFIG_NF_CONNTRACK=y
-# CONFIG_NF_LOG_NETDEV is not set
-# CONFIG_NF_CONNTRACK_MARK is not set
-# CONFIG_NF_CONNTRACK_ZONES is not set
-CONFIG_NF_CONNTRACK_PROCFS=y
-# CONFIG_NF_CONNTRACK_EVENTS is not set
-# CONFIG_NF_CONNTRACK_TIMEOUT is not set
-# CONFIG_NF_CONNTRACK_TIMESTAMP is not set
-# CONFIG_NF_CONNTRACK_LABELS is not set
-CONFIG_NF_CT_PROTO_DCCP=y
-CONFIG_NF_CT_PROTO_SCTP=y
-CONFIG_NF_CT_PROTO_UDPLITE=y
-# CONFIG_NF_CONNTRACK_AMANDA is not set
-# CONFIG_NF_CONNTRACK_FTP is not set
-# CONFIG_NF_CONNTRACK_H323 is not set
-# CONFIG_NF_CONNTRACK_IRC is not set
-# CONFIG_NF_CONNTRACK_NETBIOS_NS is not set
-# CONFIG_NF_CONNTRACK_SNMP is not set
-# CONFIG_NF_CONNTRACK_PPTP is not set
-# CONFIG_NF_CONNTRACK_SANE is not set
-# CONFIG_NF_CONNTRACK_SIP is not set
-# CONFIG_NF_CONNTRACK_TFTP is not set
-# CONFIG_NF_CT_NETLINK is not set
-CONFIG_NF_NAT=y
-CONFIG_NF_NAT_REDIRECT=y
-CONFIG_NF_NAT_MASQUERADE=y
-# CONFIG_NF_TABLES is not set
-CONFIG_NETFILTER_XTABLES=y
-# CONFIG_IPC_SOCKET is not set
-#
-# Xtables combined modules
-#
-CONFIG_NETFILTER_XT_MARK=y
-# CONFIG_NETFILTER_XT_CONNMARK is not set
-
-#
-# Xtables targets
-#
-# CONFIG_NETFILTER_XT_TARGET_CHECKSUM is not set
-# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
-# CONFIG_NETFILTER_XT_TARGET_CONNMARK is not set
-# CONFIG_NETFILTER_XT_TARGET_CT is not set
-# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
-# CONFIG_NETFILTER_XT_TARGET_HL is not set
-# CONFIG_NETFILTER_XT_TARGET_HMARK is not set
-# CONFIG_NETFILTER_XT_TARGET_IDLETIMER is not set
-# CONFIG_NETFILTER_XT_TARGET_LOG is not set
-# CONFIG_NETFILTER_XT_TARGET_MARK is not set
-CONFIG_NETFILTER_XT_NAT=y
-CONFIG_NETFILTER_XT_TARGET_NETMAP=y
-# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
-# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
-# CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set
-# CONFIG_NETFILTER_XT_TARGET_RATEEST is not set
-CONFIG_NETFILTER_XT_TARGET_REDIRECT=y
-CONFIG_NETFILTER_XT_TARGET_MASQUERADE=y
-# CONFIG_NETFILTER_XT_TARGET_TEE is not set
-# CONFIG_NETFILTER_XT_TARGET_TPROXY is not set
-# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
-# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
-# CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP is not set
-
-#
-# Xtables matches
-#
-# CONFIG_NETFILTER_XT_MATCH_ADDRTYPE is not set
-# CONFIG_NETFILTER_XT_MATCH_BPF is not set
-# CONFIG_NETFILTER_XT_MATCH_CLUSTER is not set
-# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
-# CONFIG_NETFILTER_XT_MATCH_CONNBYTES is not set
-# CONFIG_NETFILTER_XT_MATCH_CONNLABEL is not set
-# CONFIG_NETFILTER_XT_MATCH_CONNLIMIT is not set
-# CONFIG_NETFILTER_XT_MATCH_CONNMARK is not set
-# CONFIG_NETFILTER_XT_MATCH_CONNTRACK is not set
-# CONFIG_NETFILTER_XT_MATCH_CPU is not set
-# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
-# CONFIG_NETFILTER_XT_MATCH_DEVGROUP is not set
-# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
-# CONFIG_NETFILTER_XT_MATCH_ECN is not set
-# CONFIG_NETFILTER_XT_MATCH_ESP is not set
-# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
-# CONFIG_NETFILTER_XT_MATCH_HELPER is not set
-# CONFIG_NETFILTER_XT_MATCH_HL is not set
-# CONFIG_NETFILTER_XT_MATCH_IPCOMP is not set
-# CONFIG_NETFILTER_XT_MATCH_IPRANGE is not set
-# CONFIG_NETFILTER_XT_MATCH_L2TP is not set
-# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set
-# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set
-# CONFIG_NETFILTER_XT_MATCH_MAC is not set
-# CONFIG_NETFILTER_XT_MATCH_MARK is not set
-# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
-# CONFIG_NETFILTER_XT_MATCH_NFACCT is not set
-# CONFIG_NETFILTER_XT_MATCH_OSF is not set
-# CONFIG_NETFILTER_XT_MATCH_OWNER is not set
-# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
-# CONFIG_NETFILTER_XT_MATCH_PHYSDEV is not set
-# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
-# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
-# CONFIG_NETFILTER_XT_MATCH_RATEEST is not set
-# CONFIG_NETFILTER_XT_MATCH_REALM is not set
-# CONFIG_NETFILTER_XT_MATCH_RECENT is not set
-# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
-# CONFIG_NETFILTER_XT_MATCH_SOCKET is not set
-# CONFIG_NETFILTER_XT_MATCH_STATE is not set
-# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
-# CONFIG_NETFILTER_XT_MATCH_STRING is not set
-# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
-# CONFIG_NETFILTER_XT_MATCH_TIME is not set
-# CONFIG_NETFILTER_XT_MATCH_U32 is not set
-# end of Core Netfilter Configuration
-
-# CONFIG_IP_SET is not set
-# CONFIG_IP_VS is not set
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_NF_DEFRAG_IPV4=y
-CONFIG_NF_SOCKET_IPV4=y
-CONFIG_NF_TPROXY_IPV4=y
-# CONFIG_NF_DUP_IPV4 is not set
-# CONFIG_NF_LOG_ARP is not set
-# CONFIG_NF_LOG_IPV4 is not set
-CONFIG_NF_REJECT_IPV4=y
-CONFIG_IP_NF_IPTABLES=y
-# CONFIG_IP_NF_MATCH_AH is not set
-# CONFIG_IP_NF_MATCH_ECN is not set
-# CONFIG_IP_NF_MATCH_RPFILTER is not set
-# CONFIG_IP_NF_MATCH_TTL is not set
-CONFIG_IP_NF_FILTER=y
-CONFIG_IP_NF_TARGET_REJECT=y
-# CONFIG_IP_NF_TARGET_SYNPROXY is not set
-CONFIG_IP_NF_NAT=y
-CONFIG_IP_NF_TARGET_MASQUERADE=y
-CONFIG_IP_NF_TARGET_NETMAP=y
-CONFIG_IP_NF_TARGET_REDIRECT=y
-CONFIG_IP_NF_MANGLE=y
-# CONFIG_IP_NF_TARGET_CLUSTERIP is not set
-# CONFIG_IP_NF_TARGET_ECN is not set
-# CONFIG_IP_NF_TARGET_TTL is not set
-CONFIG_IP_NF_RAW=y
-# CONFIG_IP_NF_ARPTABLES is not set
-# end of IP: Netfilter Configuration
-
-#
-# IPv6: Netfilter Configuration
-#
-CONFIG_NF_SOCKET_IPV6=y
-CONFIG_NF_TPROXY_IPV6=y
-# CONFIG_NF_DUP_IPV6 is not set
-CONFIG_NF_REJECT_IPV6=y
-# CONFIG_NF_LOG_IPV6 is not set
-CONFIG_IP6_NF_IPTABLES=y
-# CONFIG_IP6_NF_MATCH_AH is not set
-# CONFIG_IP6_NF_MATCH_EUI64 is not set
-# CONFIG_IP6_NF_MATCH_FRAG is not set
-# CONFIG_IP6_NF_MATCH_OPTS is not set
-# CONFIG_IP6_NF_MATCH_HL is not set
-# CONFIG_IP6_NF_MATCH_IPV6HEADER is not set
-# CONFIG_IP6_NF_MATCH_MH is not set
-# CONFIG_IP6_NF_MATCH_RPFILTER is not set
-# CONFIG_IP6_NF_MATCH_RT is not set
-# CONFIG_IP6_NF_MATCH_SRH is not set
-# CONFIG_IP6_NF_TARGET_HL is not set
-CONFIG_IP6_NF_FILTER=y
-CONFIG_IP6_NF_TARGET_REJECT=y
-# CONFIG_IP6_NF_TARGET_SYNPROXY is not set
-CONFIG_IP6_NF_MANGLE=y
-CONFIG_IP6_NF_RAW=y
-CONFIG_IP6_NF_NAT=y
-CONFIG_IP6_NF_TARGET_MASQUERADE=y
-CONFIG_IP6_NF_TARGET_NPT=y
-# end of IPv6: Netfilter Configuration
-
-CONFIG_NF_DEFRAG_IPV6=y
-# CONFIG_NF_CONNTRACK_BRIDGE is not set
-# CONFIG_BRIDGE_NF_EBTABLES is not set
-# CONFIG_BPFILTER is not set
-# CONFIG_IP_DCCP is not set
-# CONFIG_IP_SCTP is not set
-# CONFIG_RDS is not set
-# CONFIG_TIPC is not set
-# CONFIG_ATM is not set
-# CONFIG_L2TP is not set
-CONFIG_STP=y
-CONFIG_BRIDGE=y
-CONFIG_BRIDGE_IGMP_SNOOPING=y
-CONFIG_BRIDGE_VLAN_FILTERING=y
-# CONFIG_BRIDGE_MRP is not set
-CONFIG_HAVE_NET_DSA=y
-# CONFIG_NET_DSA is not set
-CONFIG_VLAN_8021Q=y
-# CONFIG_VLAN_8021Q_GVRP is not set
-# CONFIG_VLAN_8021Q_MVRP is not set
-# CONFIG_DECNET is not set
-CONFIG_LLC=y
-# CONFIG_LLC2 is not set
-# CONFIG_ATALK is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_PHONET is not set
-# CONFIG_6LOWPAN is not set
-# CONFIG_IEEE802154 is not set
-# CONFIG_NET_SCHED is not set
-# CONFIG_DCB is not set
-# CONFIG_DNS_RESOLVER is not set
-# CONFIG_BATMAN_ADV is not set
-# CONFIG_OPENVSWITCH is not set
-# CONFIG_VSOCKETS is not set
-# CONFIG_NETLINK_DIAG is not set
-# CONFIG_MPLS is not set
-# CONFIG_NET_NSH is not set
-# CONFIG_HSR is not set
-# CONFIG_NET_SWITCHDEV is not set
-# CONFIG_NET_L3_MASTER_DEV is not set
-# CONFIG_QRTR is not set
-# CONFIG_NET_NCSI is not set
-CONFIG_NET_RX_BUSY_POLL=y
-CONFIG_BQL=y
-# CONFIG_BPF_JIT is not set
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-# end of Network testing
-# end of Networking options
-
-# CONFIG_HAMRADIO is not set
-# CONFIG_CAN is not set
-# CONFIG_BT is not set
-# CONFIG_AF_RXRPC is not set
-# CONFIG_AF_KCM is not set
-CONFIG_FIB_RULES=y
-CONFIG_WIRELESS=y
-# CONFIG_CFG80211 is not set
-
-#
-# CFG80211 needs to be enabled for MAC80211
-#
-CONFIG_MAC80211_STA_HASH_MAX_SIZE=0
-# CONFIG_WIMAX is not set
-# CONFIG_RFKILL is not set
-# CONFIG_NET_9P is not set
-# CONFIG_CAIF is not set
-# CONFIG_CEPH_LIB is not set
-# CONFIG_NFC is not set
-# CONFIG_PSAMPLE is not set
-# CONFIG_NET_IFE is not set
-# CONFIG_LWTUNNEL is not set
-CONFIG_DST_CACHE=y
-CONFIG_GRO_CELLS=y
-# CONFIG_FAILOVER is not set
-CONFIG_ETHTOOL_NETLINK=y
-CONFIG_HAVE_EBPF_JIT=y
-
-#
-# Device Drivers
-#
-CONFIG_ARM_AMBA=y
-CONFIG_HAVE_PCI=y
-# CONFIG_PCI is not set
-# CONFIG_PCCARD is not set
-
-#
-# Generic Driver Options
-#
-# CONFIG_UEVENT_HELPER is not set
-CONFIG_DEVTMPFS=y
-# CONFIG_DEVTMPFS_MOUNT is not set
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-
-#
-# Firmware loader
-#
-CONFIG_FW_LOADER=y
-CONFIG_EXTRA_FIRMWARE=""
-# CONFIG_FW_LOADER_USER_HELPER is not set
-# CONFIG_FW_LOADER_COMPRESS is not set
-CONFIG_FW_CACHE=y
-# end of Firmware loader
-
-CONFIG_ALLOW_DEV_COREDUMP=y
-# CONFIG_DEBUG_DRIVER is not set
-# CONFIG_DEBUG_DEVRES is not set
-# CONFIG_DEBUG_TEST_DRIVER_REMOVE is not set
-# CONFIG_TEST_ASYNC_DRIVER_PROBE is not set
-CONFIG_GENERIC_CPU_AUTOPROBE=y
-CONFIG_GENERIC_CPU_VULNERABILITIES=y
-CONFIG_SOC_BUS=y
-CONFIG_REGMAP=y
-CONFIG_REGMAP_I2C=y
-CONFIG_REGMAP_MMIO=y
-# end of Generic Driver Options
-
-#
-# Bus devices
-#
-# CONFIG_BRCMSTB_GISB_ARB is not set
-# CONFIG_SIMPLE_PM_BUS is not set
-# CONFIG_VEXPRESS_CONFIG is not set
-# CONFIG_MHI_BUS is not set
-# end of Bus devices
-
-# CONFIG_GNSS is not set
-CONFIG_MTD=y
-# CONFIG_MTD_TESTS is not set
-
-#
-# Partition parsers
-#
-# CONFIG_MTD_AR7_PARTS is not set
-CONFIG_MTD_CMDLINE_PARTS=y
-CONFIG_MTD_OF_PARTS=y
-# CONFIG_MTD_AFS_PARTS is not set
-# CONFIG_MTD_REDBOOT_PARTS is not set
-# end of Partition parsers
-
-#
-# User Modules And Translation Layers
-#
-CONFIG_MTD_BLKDEVS=y
-CONFIG_MTD_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-# CONFIG_INFTL is not set
-# CONFIG_RFD_FTL is not set
-# CONFIG_SSFDC is not set
-# CONFIG_SM_FTL is not set
-# CONFIG_MTD_OOPS is not set
-# CONFIG_MTD_SWAP is not set
-# CONFIG_MTD_PARTITIONED_MASTER is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-# CONFIG_MTD_CFI is not set
-# CONFIG_MTD_JEDECPROBE is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_RAM is not set
-# CONFIG_MTD_ROM is not set
-# CONFIG_MTD_ABSENT is not set
-# end of RAM/ROM/Flash chip drivers
-
-#
-# Mapping drivers for chip access
-#
-# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-# CONFIG_MTD_PLATRAM is not set
-# end of Mapping drivers for chip access
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_PHRAM is not set
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_BLOCK2MTD is not set
-
-#
-# Disk-On-Chip Device Drivers
-#
-# CONFIG_MTD_DOCG3 is not set
-# end of Self-contained MTD device drivers
-
-#
-# NAND
-#
-CONFIG_MTD_NAND_CORE=y
-# CONFIG_MTD_ONENAND is not set
-# CONFIG_MTD_RAW_NAND is not set
-CONFIG_MTD_SPI_NAND=y
-
-#
-# ECC engine support
-#
-# end of ECC engine support
-# end of NAND
-
-#
-# LPDDR & LPDDR2 PCM memory drivers
-#
-# CONFIG_MTD_LPDDR is not set
-# CONFIG_MTD_LPDDR2_NVM is not set
-# end of LPDDR & LPDDR2 PCM memory drivers
-
-# CONFIG_MTD_SPI_NOR is not set
-CONFIG_MTD_UBI=y
-CONFIG_MTD_UBI_WL_THRESHOLD=4096
-CONFIG_MTD_UBI_BEB_LIMIT=20
-# CONFIG_MTD_UBI_FASTMAP is not set
-# CONFIG_MTD_UBI_GLUEBI is not set
-CONFIG_MTD_UBI_BLOCK=y
-CONFIG_MTD_UBI_EXCEPTION=y
-# CONFIG_MTD_HYPERBUS is not set
-CONFIG_DTC=y
-CONFIG_OF=y
-# CONFIG_OF_UNITTEST is not set
-CONFIG_OF_FLATTREE=y
-CONFIG_OF_EARLY_FLATTREE=y
-CONFIG_OF_KOBJ=y
-CONFIG_OF_ADDRESS=y
-CONFIG_OF_IRQ=y
-CONFIG_OF_NET=y
-CONFIG_OF_RESERVED_MEM=y
-# CONFIG_OF_OVERLAY is not set
-CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
-# CONFIG_PARPORT is not set
-CONFIG_BLK_DEV=y
-# CONFIG_BLK_DEV_NULL_BLK is not set
-CONFIG_BLK_DEV_LOOP=y
-CONFIG_BLK_DEV_LOOP_MIN_COUNT=8
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_DRBD is not set
-# CONFIG_BLK_DEV_NBD is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=16
-CONFIG_BLK_DEV_RAM_SIZE=16384
-# CONFIG_CDROM_PKTCDVD is not set
-# CONFIG_ATA_OVER_ETH is not set
-# CONFIG_BLK_DEV_RBD is not set
-
-#
-# NVME Support
-#
-# CONFIG_NVME_FC is not set
-# CONFIG_NVME_TCP is not set
-# end of NVME Support
-
-#
-# Misc devices
-#
-# CONFIG_AD525X_DPOT is not set
-# CONFIG_DUMMY_IRQ is not set
-# CONFIG_ICS932S401 is not set
-# CONFIG_ENCLOSURE_SERVICES is not set
-# CONFIG_APDS9802ALS is not set
-# CONFIG_ISL29003 is not set
-# CONFIG_ISL29020 is not set
-# CONFIG_SENSORS_TSL2550 is not set
-# CONFIG_SENSORS_BH1770 is not set
-# CONFIG_SENSORS_APDS990X is not set
-# CONFIG_HMC6352 is not set
-# CONFIG_DS1682 is not set
-# CONFIG_SRAM is not set
-# CONFIG_XILINX_SDFEC is not set
-# CONFIG_PVPANIC is not set
-# CONFIG_C2PORT is not set
-
-#
-# EEPROM support
-#
-# CONFIG_EEPROM_AT24 is not set
-# CONFIG_EEPROM_LEGACY is not set
-# CONFIG_EEPROM_MAX6875 is not set
-# CONFIG_EEPROM_93CX6 is not set
-# CONFIG_EEPROM_IDT_89HPESX is not set
-# CONFIG_EEPROM_EE1004 is not set
-# end of EEPROM support
-
-#
-# Texas Instruments shared transport line discipline
-#
-# end of Texas Instruments shared transport line discipline
-
-# CONFIG_ALTERA_STAPL is not set
-# CONFIG_ECHO is not set
-# end of Misc devices
-
-#
-# SCSI device support
-#
-CONFIG_SCSI_MOD=y
-# CONFIG_RAID_ATTRS is not set
-# CONFIG_SCSI is not set
-# end of SCSI device support
-
-# CONFIG_ATA is not set
-# CONFIG_MD is not set
-# CONFIG_TARGET_CORE is not set
-CONFIG_NETDEVICES=y
-CONFIG_NET_CORE=y
-# CONFIG_BONDING is not set
-# CONFIG_DUMMY is not set
-# CONFIG_WIREGUARD is not set
-# CONFIG_EQUALIZER is not set
-# CONFIG_IFB is not set
-# CONFIG_NET_TEAM is not set
-# CONFIG_MACVLAN is not set
-# CONFIG_IPVLAN is not set
-# CONFIG_VXLAN is not set
-# CONFIG_GENEVE is not set
-# CONFIG_BAREUDP is not set
-# CONFIG_GTP is not set
-# CONFIG_MACSEC is not set
-# CONFIG_NETCONSOLE is not set
-# CONFIG_TUN is not set
-# CONFIG_TUN_VNET_CROSS_LE is not set
-# CONFIG_VETH is not set
-# CONFIG_NLMON is not set
-
-#
-# Distributed Switch Architecture drivers
-#
-# end of Distributed Switch Architecture drivers
-
-CONFIG_ETHERNET=y
-# CONFIG_NET_VENDOR_ALACRITECH is not set
-# CONFIG_ALTERA_TSE is not set
-# CONFIG_NET_VENDOR_AMAZON is not set
-# CONFIG_NET_VENDOR_AQUANTIA is not set
-# CONFIG_NET_VENDOR_ARC is not set
-# CONFIG_NET_VENDOR_AURORA is not set
-# CONFIG_NET_VENDOR_BROADCOM is not set
-# CONFIG_NET_VENDOR_CADENCE is not set
-# CONFIG_NET_VENDOR_CAVIUM is not set
-# CONFIG_NET_VENDOR_CIRRUS is not set
-# CONFIG_NET_VENDOR_CORTINA is not set
-# CONFIG_DM9000 is not set
-# CONFIG_DNET is not set
-# CONFIG_NET_VENDOR_EZCHIP is not set
-# CONFIG_NET_VENDOR_FARADAY is not set
-# CONFIG_NET_VENDOR_GOOGLE is not set
-# CONFIG_NET_VENDOR_HISILICON is not set
-# CONFIG_NET_VENDOR_HUAWEI is not set
-# CONFIG_NET_VENDOR_INTEL is not set
-# CONFIG_NET_VENDOR_MARVELL is not set
-# CONFIG_NET_VENDOR_MELLANOX is not set
-# CONFIG_NET_VENDOR_MICREL is not set
-# CONFIG_NET_VENDOR_MICROCHIP is not set
-# CONFIG_NET_VENDOR_MICROSEMI is not set
-# CONFIG_NET_VENDOR_NATSEMI is not set
-# CONFIG_NET_VENDOR_NETRONOME is not set
-# CONFIG_NET_VENDOR_NI is not set
-# CONFIG_ETHOC is not set
-# CONFIG_NET_VENDOR_PENSANDO is not set
-# CONFIG_NET_VENDOR_QUALCOMM is not set
-# CONFIG_NET_VENDOR_RENESAS is not set
-# CONFIG_NET_VENDOR_ROCKER is not set
-# CONFIG_NET_VENDOR_SAMSUNG is not set
-# CONFIG_NET_VENDOR_SEEQ is not set
-# CONFIG_NET_VENDOR_SOLARFLARE is not set
-# CONFIG_NET_VENDOR_SMSC is not set
-# CONFIG_NET_VENDOR_SOCIONEXT is not set
-# CONFIG_NET_VENDOR_STMICRO is not set
-# CONFIG_NET_VENDOR_SYNOPSYS is not set
-# CONFIG_NET_VENDOR_VIA is not set
-# CONFIG_NET_VENDOR_WIZNET is not set
-# CONFIG_NET_VENDOR_XILINX is not set
-CONFIG_NET_VENDOR_ZTE=y
-CONFIG_ZX29_GMAC=y
-# zw.wang modify for T106BUG-423 20240118 start
-CONFIG_BOOT_WITHOUT_LOCK=y
-# zw.wang modify for T106BUG-423 20240118  end
-CONFIG_PHYLIB=y
-CONFIG_SWPHY=y
-CONFIG_FIXED_PHY=y
-
-#
-# MII PHY device drivers
-#
-# CONFIG_AMD_PHY is not set
-# CONFIG_ADIN_PHY is not set
-# CONFIG_AQUANTIA_PHY is not set
-# CONFIG_AX88796B_PHY is not set
-# CONFIG_BROADCOM_PHY is not set
-# CONFIG_BCM54140_PHY is not set
-# CONFIG_BCM7XXX_PHY is not set
-# CONFIG_BCM84881_PHY is not set
-# CONFIG_BCM87XX_PHY is not set
-# CONFIG_CICADA_PHY is not set
-# CONFIG_CORTINA_PHY is not set
-# CONFIG_DAVICOM_PHY is not set
-CONFIG_ICPLUS_PHY=y
-# CONFIG_LXT_PHY is not set
-# CONFIG_INTEL_XWAY_PHY is not set
-# CONFIG_LSI_ET1011C_PHY is not set
-# CONFIG_MARVELL_PHY is not set
-# CONFIG_MARVELL_10G_PHY is not set
-# CONFIG_MICREL_PHY is not set
-# CONFIG_MICROCHIP_PHY is not set
-# CONFIG_MICROCHIP_T1_PHY is not set
-# CONFIG_MICROSEMI_PHY is not set
-# CONFIG_NATIONAL_PHY is not set
-# CONFIG_QSEMI_PHY is not set
-# CONFIG_REALTEK_PHY is not set
-# CONFIG_RENESAS_PHY is not set
-# CONFIG_ROCKCHIP_PHY is not set
-# CONFIG_SMSC_PHY is not set
-# CONFIG_STE10XP is not set
-# CONFIG_TERANETICS_PHY is not set
-# CONFIG_DP83822_PHY is not set
-# CONFIG_DP83TC811_PHY is not set
-# CONFIG_DP83848_PHY is not set
-# CONFIG_DP83867_PHY is not set
-# CONFIG_DP83869_PHY is not set
-# CONFIG_VITESSE_PHY is not set
-# CONFIG_XILINX_GMII2RGMII is not set
-# CONFIG_MICREL_KS8995MA is not set
-CONFIG_JLSEMI_PHY=y
-CONFIG_MDIO_DEVICE=y
-CONFIG_MDIO_BUS=y
-CONFIG_OF_MDIO=y
-CONFIG_MDIO_DEVRES=y
-# zw.wang Customer chooses phy c22/c45 issues on 20240301 start
-CONFIG_MDIO_C45=y
-# zw.wang Customer chooses phy c22/c45 issues on 20240301 end
-# CONFIG_MDIO_BITBANG is not set
-# CONFIG_MDIO_BCM_UNIMAC is not set
-# CONFIG_MDIO_HISI_FEMAC is not set
-# CONFIG_MDIO_MSCC_MIIM is not set
-# CONFIG_MDIO_IPQ4019 is not set
-# CONFIG_MDIO_IPQ8064 is not set
-
-#
-# MDIO Multiplexers
-#
-# CONFIG_MDIO_BUS_MUX_GPIO is not set
-# CONFIG_MDIO_BUS_MUX_MULTIPLEXER is not set
-# CONFIG_MDIO_BUS_MUX_MMIOREG is not set
-
-#
-# PCS device drivers
-#
-# CONFIG_PCS_XPCS is not set
-# end of PCS device drivers
-
-# CONFIG_PPP is not set
-# CONFIG_SLIP is not set
-
-#
-# Host-side USB support is needed for USB Network Adapter support
-#
-CONFIG_WLAN=y
-# CONFIG_WIRELESS_WDS is not set
-CONFIG_WLAN_VENDOR_ADMTEK=y
-CONFIG_WLAN_VENDOR_ATH=y
-# CONFIG_ATH_DEBUG is not set
-CONFIG_WLAN_VENDOR_ATMEL=y
-CONFIG_WLAN_VENDOR_BROADCOM=y
-CONFIG_WLAN_VENDOR_CISCO=y
-CONFIG_WLAN_VENDOR_INTEL=y
-CONFIG_WLAN_VENDOR_INTERSIL=y
-# CONFIG_HOSTAP is not set
-CONFIG_WLAN_VENDOR_MARVELL=y
-CONFIG_WLAN_VENDOR_MEDIATEK=y
-CONFIG_WLAN_VENDOR_MICROCHIP=y
-CONFIG_WLAN_VENDOR_RALINK=y
-CONFIG_WLAN_VENDOR_REALTEK=y
-CONFIG_WLAN_VENDOR_RSI=y
-CONFIG_WLAN_VENDOR_ST=y
-CONFIG_WLAN_VENDOR_TI=y
-CONFIG_WLAN_VENDOR_ZYDAS=y
-CONFIG_WLAN_VENDOR_QUANTENNA=y
-
-#
-# Enable WiMAX (Networking options) to see the WiMAX drivers
-#
-# CONFIG_WAN is not set
-# CONFIG_NETDEVSIM is not set
-# CONFIG_NET_FAILOVER is not set
-CONFIG_ZV_NET=y
-# CONFIG_ISDN is not set
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-CONFIG_KEYBOARD_ZX29=y
-CONFIG_INPUT_EVDEV=y
-#
-# Hardware I/O ports
-#
-# CONFIG_SERIO is not set
-# CONFIG_GAMEPORT is not set
-# end of Hardware I/O ports
-# end of Input device support
-
-#
-# Character devices
-#
-CONFIG_TTY=y
-# CONFIG_VT is not set
-CONFIG_UNIX98_PTYS=y
-CONFIG_LEGACY_PTYS=y
-CONFIG_LEGACY_PTY_COUNT=0
-CONFIG_LDISC_AUTOLOAD=y
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_EARLYCON=y
-# CONFIG_SERIAL_8250 is not set
-
-#
-# Non-8250 serial port support
-#
-# CONFIG_SERIAL_AMBA_PL010 is not set
-# CONFIG_SERIAL_AMBA_PL011 is not set
-# CONFIG_SERIAL_AMBA_PL011_CONSOLE is not set
-# CONFIG_SERIAL_EARLYCON_ARM_SEMIHOST is not set
-# CONFIG_SERIAL_UARTLITE is not set
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-# CONFIG_SERIAL_SIFIVE is not set
-# CONFIG_SERIAL_SCCNXP is not set
-# CONFIG_SERIAL_SC16IS7XX is not set
-# CONFIG_SERIAL_BCM63XX is not set
-# CONFIG_SERIAL_ALTERA_JTAGUART is not set
-# CONFIG_SERIAL_ALTERA_UART is not set
-# CONFIG_SERIAL_XILINX_PS_UART is not set
-# CONFIG_SERIAL_ARC is not set
-# CONFIG_SERIAL_FSL_LPUART is not set
-# CONFIG_SERIAL_FSL_LINFLEXUART is not set
-# CONFIG_SERIAL_CONEXANT_DIGICOLOR is not set
-# CONFIG_SERIAL_ST_ASC is not set
-# CONFIG_SERIAL_SPRD is not set
-CONFIG_SERIAL_ZX29_UART=y
-CONFIG_SERIAL_ZX29_UART_CONSOLE=y
-CONFIG_UART_CONSOLE_ID=1
-# end of Serial drivers
-
-CONFIG_SERIAL_NONSTANDARD=y
-# CONFIG_N_HDLC is not set
-# CONFIG_NULL_TTY is not set
-# CONFIG_TRACE_SINK is not set
-# CONFIG_HVC_DCC is not set
-# CONFIG_SERIAL_DEV_BUS is not set
-# CONFIG_TTY_PRINTK is not set
-# CONFIG_VIRTIO_CONSOLE is not set
-# CONFIG_IPMI_HANDLER is not set
-# CONFIG_HW_RANDOM is not set
-CONFIG_DEVMEM=y
-# CONFIG_DEVKMEM is not set
-# CONFIG_RAW_DRIVER is not set
-# CONFIG_TCG_TPM is not set
-# CONFIG_XILLYBUS is not set
-# CONFIG_RANDOM_TRUST_BOOTLOADER is not set
-# end of Character devices
-
-#
-# I2C support
-#
-CONFIG_I2C=y
-CONFIG_I2C_BOARDINFO=y
-CONFIG_I2C_COMPAT=y
-CONFIG_I2C_CHARDEV=y
-# CONFIG_I2C_MUX is not set
-CONFIG_I2C_HELPER_AUTO=y
-
-#
-# I2C Hardware Bus support
-#
-
-#
-# I2C system bus drivers (mostly embedded / system-on-chip)
-#
-# CONFIG_I2C_CBUS_GPIO is not set
-# CONFIG_I2C_DESIGNWARE_PLATFORM is not set
-# CONFIG_I2C_EMEV2 is not set
-# CONFIG_I2C_GPIO is not set
-# CONFIG_I2C_NOMADIK is not set
-# CONFIG_I2C_OCORES is not set
-# CONFIG_I2C_PCA_PLATFORM is not set
-# CONFIG_I2C_RK3X is not set
-# CONFIG_I2C_SIMTEC is not set
-# CONFIG_I2C_XILINX is not set
-
-#
-# External I2C/SMBus adapter drivers
-#
-# CONFIG_I2C_TAOS_EVM is not set
-
-#
-# Other I2C/SMBus bus drivers
-#
-CONFIG_I2C_ZX29=y
-#CONFIG_I2C_ZX29_SLAVE=y
-# end of I2C Hardware Bus support
-
-# CONFIG_I2C_STUB is not set
-# CONFIG_I2C_SLAVE is not set
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-# end of I2C support
-
-# CONFIG_I3C is not set
-CONFIG_SPI=y
-# CONFIG_SPI_DEBUG is not set
-CONFIG_SPI_MASTER=y
-CONFIG_SPI_MEM=y
-
-#
-# SPI Master Controller Drivers
-#
-# CONFIG_SPI_ALTERA is not set
-# CONFIG_SPI_AXI_SPI_ENGINE is not set
-# CONFIG_SPI_BITBANG is not set
-# CONFIG_SPI_CADENCE is not set
-# CONFIG_SPI_CADENCE_QUADSPI is not set
-# CONFIG_SPI_DESIGNWARE is not set
-# CONFIG_SPI_NXP_FLEXSPI is not set
-# CONFIG_SPI_GPIO is not set
-# CONFIG_SPI_FSL_SPI is not set
-# CONFIG_SPI_OC_TINY is not set
-# CONFIG_SPI_PL022 is not set
-# CONFIG_SPI_ROCKCHIP is not set
-# CONFIG_SPI_SC18IS602 is not set
-# CONFIG_SPI_SIFIVE is not set
-# CONFIG_SPI_MXIC is not set
-# CONFIG_SPI_XCOMM is not set
-# CONFIG_SPI_XILINX is not set
-# CONFIG_SPI_ZYNQMP_GQSPI is not set
-# CONFIG_SPI_AMD is not set
-
-#
-# SPI Multiplexer support
-#
-# CONFIG_SPI_MUX is not set
-
-#
-# SPI Protocol Masters
-#
-# CONFIG_SPI_SPIDEV is not set
-CONFIG_SPI_SPIDEV=y
-# CONFIG_SPI_LOOPBACK_TEST is not set
-# CONFIG_SPI_TLE62X0 is not set
-# CONFIG_SPI_ZX is not set
-# CONFIG_SPI_ZX_SFC is not set
-# CONFIG_SPI_ZX_29 is not set
-CONFIG_SPI_ZX29=y
-CONFIG_SPI_ZXIC_SPIFC=y
-# CONFIG_SPI_SLAVE is not set
-# CONFIG_SPMI is not set
-# CONFIG_HSI is not set
-# CONFIG_PPS is not set
-
-#
-# PTP clock support
-#
-
-#
-# Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks.
-#
-# end of PTP clock support
-
-CONFIG_PINCTRL=y
-CONFIG_GENERIC_PINCTRL_GROUPS=y
-CONFIG_PINMUX=y
-CONFIG_GENERIC_PINMUX_FUNCTIONS=y
-CONFIG_PINCONF=y
-CONFIG_GENERIC_PINCONF=y
-CONFIG_DEBUG_PINCTRL=y
-# CONFIG_PINCTRL_MCP23S08 is not set
-# CONFIG_PINCTRL_SINGLE is not set
-# CONFIG_PINCTRL_SX150X is not set
-# CONFIG_PINCTRL_STMFX is not set
-# CONFIG_PINCTRL_OCELOT is not set
-
-#
-# Renesas pinctrl drivers
-#
-# end of Renesas pinctrl drivers
-
-CONFIG_PINCTRL_ZX297520V3=y
-CONFIG_ARCH_HAVE_CUSTOM_GPIO_H=y
-CONFIG_GPIOLIB=y
-CONFIG_GPIOLIB_FASTPATH_LIMIT=512
-CONFIG_OF_GPIO=y
-CONFIG_GPIOLIB_IRQCHIP=y
-CONFIG_DEBUG_GPIO=y
-CONFIG_GPIO_SYSFS=y
-CONFIG_GPIO_CDEV=y
-CONFIG_GPIO_CDEV_V1=y
-
-#
-# Memory mapped GPIO drivers
-#
-# CONFIG_GPIO_74XX_MMIO is not set
-# CONFIG_GPIO_ALTERA is not set
-# CONFIG_GPIO_CADENCE is not set
-# CONFIG_GPIO_DWAPB is not set
-# CONFIG_GPIO_FTGPIO010 is not set
-# CONFIG_GPIO_GENERIC_PLATFORM is not set
-# CONFIG_GPIO_GRGPIO is not set
-# CONFIG_GPIO_HLWD is not set
-# CONFIG_GPIO_LOGICVC is not set
-# CONFIG_GPIO_MB86S7X is not set
-# CONFIG_GPIO_MPC8XXX is not set
-# CONFIG_GPIO_PL061 is not set
-# CONFIG_GPIO_SAMA5D2_PIOBU is not set
-# CONFIG_GPIO_SIFIVE is not set
-# CONFIG_GPIO_SYSCON is not set
-# CONFIG_GPIO_XILINX is not set
-# CONFIG_GPIO_ZEVIO is not set
-CONFIG_GPIO_ZX29=y
-# CONFIG_GPIO_AMD_FCH is not set
-# end of Memory mapped GPIO drivers
-
-#
-# I2C GPIO expanders
-#
-# CONFIG_GPIO_ADP5588 is not set
-# CONFIG_GPIO_ADNP is not set
-# CONFIG_GPIO_GW_PLD is not set
-# CONFIG_GPIO_MAX7300 is not set
-# CONFIG_GPIO_MAX732X is not set
-# CONFIG_GPIO_PCA953X is not set
-# CONFIG_GPIO_PCA9570 is not set
-# CONFIG_GPIO_PCF857X is not set
-# CONFIG_GPIO_TPIC2810 is not set
-# end of I2C GPIO expanders
-
-#
-# MFD GPIO expanders
-#
-# CONFIG_HTC_EGPIO is not set
-# end of MFD GPIO expanders
-
-# CONFIG_GPIO_AGGREGATOR is not set
-# CONFIG_GPIO_MOCKUP is not set
-# CONFIG_W1 is not set
-# CONFIG_POWER_RESET is not set
-# CONFIG_POWER_SUPPLY is not set
-# CONFIG_HWMON is not set
-# CONFIG_THERMAL is not set
-CONFIG_SSB_POSSIBLE=y
-
-CONFIG_WATCHDOG=y
-CONFIG_WATCHDOG_CORE=y
-CONFIG_ZX29_WATCHDOG=y
-
-# CONFIG_SSB is not set
-CONFIG_BCMA_POSSIBLE=y
-# CONFIG_BCMA is not set
-
-#
-# Multifunction device drivers
-#
-# CONFIG_MFD_ACT8945A is not set
-# CONFIG_MFD_AS3711 is not set
-# CONFIG_MFD_AS3722 is not set
-# CONFIG_PMIC_ADP5520 is not set
-# CONFIG_MFD_AAT2870_CORE is not set
-# CONFIG_MFD_ATMEL_FLEXCOM is not set
-# CONFIG_MFD_ATMEL_HLCDC is not set
-# CONFIG_MFD_BCM590XX is not set
-# CONFIG_MFD_BD9571MWV is not set
-# CONFIG_MFD_AXP20X_I2C is not set
-# CONFIG_MFD_MADERA is not set
-# CONFIG_MFD_ASIC3 is not set
-# CONFIG_PMIC_DA903X is not set
-# CONFIG_MFD_DA9052_I2C is not set
-# CONFIG_MFD_DA9055 is not set
-# CONFIG_MFD_DA9062 is not set
-# CONFIG_MFD_DA9063 is not set
-# CONFIG_MFD_DA9150 is not set
-# CONFIG_MFD_GATEWORKS_GSC is not set
-# CONFIG_MFD_MC13XXX_I2C is not set
-# CONFIG_MFD_MP2629 is not set
-# CONFIG_MFD_HI6421_PMIC is not set
-# CONFIG_HTC_PASIC3 is not set
-# CONFIG_HTC_I2CPLD is not set
-# CONFIG_MFD_IQS62X is not set
-# CONFIG_MFD_KEMPLD is not set
-# CONFIG_MFD_88PM800 is not set
-# CONFIG_MFD_88PM805 is not set
-# CONFIG_MFD_88PM860X is not set
-# CONFIG_MFD_MAX14577 is not set
-# CONFIG_MFD_MAX77620 is not set
-# CONFIG_MFD_MAX77650 is not set
-# CONFIG_MFD_MAX77686 is not set
-# CONFIG_MFD_MAX77693 is not set
-# CONFIG_MFD_MAX77843 is not set
-# CONFIG_MFD_MAX8907 is not set
-# CONFIG_MFD_MAX8925 is not set
-# CONFIG_MFD_MAX8997 is not set
-# CONFIG_MFD_MAX8998 is not set
-# CONFIG_MFD_MT6360 is not set
-# CONFIG_MFD_MT6397 is not set
-# CONFIG_MFD_MENF21BMC is not set
-# CONFIG_MFD_RETU is not set
-# CONFIG_MFD_PCF50633 is not set
-# CONFIG_MFD_PM8XXX is not set
-# CONFIG_MFD_RT5033 is not set
-# CONFIG_MFD_RC5T583 is not set
-# CONFIG_MFD_RK808 is not set
-# CONFIG_MFD_RN5T618 is not set
-# CONFIG_MFD_SEC_CORE is not set
-# CONFIG_MFD_SI476X_CORE is not set
-# CONFIG_MFD_SM501 is not set
-# CONFIG_MFD_SKY81452 is not set
-# CONFIG_ABX500_CORE is not set
-# CONFIG_MFD_STMPE is not set
-CONFIG_MFD_SYSCON=y
-# CONFIG_MFD_TI_AM335X_TSCADC is not set
-# CONFIG_MFD_LP3943 is not set
-# CONFIG_MFD_LP8788 is not set
-# CONFIG_MFD_TI_LMU is not set
-# CONFIG_MFD_PALMAS is not set
-# CONFIG_TPS6105X is not set
-# CONFIG_TPS65010 is not set
-# CONFIG_TPS6507X is not set
-# CONFIG_MFD_TPS65086 is not set
-# CONFIG_MFD_TPS65090 is not set
-# CONFIG_MFD_TPS65217 is not set
-# CONFIG_MFD_TI_LP873X is not set
-# CONFIG_MFD_TI_LP87565 is not set
-# CONFIG_MFD_TPS65218 is not set
-# CONFIG_MFD_TPS6586X is not set
-# CONFIG_MFD_TPS65910 is not set
-# CONFIG_MFD_TPS65912_I2C is not set
-# CONFIG_MFD_TPS80031 is not set
-# CONFIG_TWL4030_CORE is not set
-# CONFIG_TWL6040_CORE is not set
-# CONFIG_MFD_WL1273_CORE is not set
-# CONFIG_MFD_LM3533 is not set
-# CONFIG_MFD_TC3589X is not set
-# CONFIG_MFD_T7L66XB is not set
-# CONFIG_MFD_TC6387XB is not set
-# CONFIG_MFD_TC6393XB is not set
-# CONFIG_MFD_TQMX86 is not set
-# CONFIG_MFD_LOCHNAGAR is not set
-# CONFIG_MFD_ARIZONA_I2C is not set
-# CONFIG_MFD_WM8400 is not set
-# CONFIG_MFD_WM831X_I2C is not set
-# CONFIG_MFD_WM8350_I2C is not set
-# CONFIG_MFD_WM8994 is not set
-# CONFIG_MFD_ROHM_BD718XX is not set
-# CONFIG_MFD_ROHM_BD70528 is not set
-# CONFIG_MFD_ROHM_BD71828 is not set
-# CONFIG_MFD_STPMIC1 is not set
-# CONFIG_MFD_STMFX is not set
-# end of Multifunction device drivers
-
-# CONFIG_REGULATOR is not set
-# CONFIG_MEDIA_CEC_SUPPORT is not set
-# CONFIG_MEDIA_SUPPORT is not set
-
-#
-# Graphics support
-#
-# CONFIG_IMX_IPUV3_CORE is not set
-# CONFIG_DRM is not set
-
-#
-# ARM devices
-#
-# end of ARM devices
-
-#
-# Frame buffer Devices
-#
-# CONFIG_FB is not set
-# end of Frame buffer Devices
-
-#
-# Backlight & LCD device support
-#
-# CONFIG_LCD_CLASS_DEVICE is not set
-# CONFIG_BACKLIGHT_CLASS_DEVICE is not set
-# end of Backlight & LCD device support
-# end of Graphics support
-
-CONFIG_SOUND=y
-CONFIG_SND=y
-CONFIG_SND_TIMER=y
-CONFIG_SND_PCM=y
-CONFIG_SND_JACK=y
-# CONFIG_SND_OSSEMUL is not set
-CONFIG_SND_PCM_TIMER=y
-# CONFIG_SND_HRTIMER is not set
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-CONFIG_SND_PROC_FS=y
-CONFIG_SND_VERBOSE_PROCFS=y
-# CONFIG_SND_VERBOSE_PRINTK is not set
-# CONFIG_SND_DEBUG is not set
-# CONFIG_SND_SEQUENCER is not set
-CONFIG_SND_DRIVERS=y
-# CONFIG_SND_DUMMY is not set
-# CONFIG_SND_ALOOP is not set
-# CONFIG_SND_MTPAV is not set
-# CONFIG_SND_SERIAL_U16550 is not set
-# CONFIG_SND_MPU401 is not set
-
-#
-# HD-Audio
-#
-# end of HD-Audio
-
-CONFIG_SND_HDA_PREALLOC_SIZE=64
-CONFIG_SND_ARM=y
-# CONFIG_SND_ARMAACI is not set
-CONFIG_SND_SPI=y
-CONFIG_SND_SOC=y
-# CONFIG_SND_SOC_AMD_ACP is not set
-# CONFIG_SND_ATMEL_SOC is not set
-# CONFIG_SND_BCM63XX_I2S_WHISTLER is not set
-# CONFIG_SND_DESIGNWARE_I2S is not set
-
-#
-# SoC Audio for Freescale CPUs
-#
-
-#
-# Common SoC Audio options for Freescale CPUs:
-#
-# CONFIG_SND_SOC_FSL_ASRC is not set
-# CONFIG_SND_SOC_FSL_SAI is not set
-# CONFIG_SND_SOC_FSL_AUDMIX is not set
-# CONFIG_SND_SOC_FSL_SSI is not set
-# CONFIG_SND_SOC_FSL_SPDIF is not set
-# CONFIG_SND_SOC_FSL_ESAI is not set
-# CONFIG_SND_SOC_FSL_MICFIL is not set
-# CONFIG_SND_SOC_IMX_AUDMUX is not set
-# end of SoC Audio for Freescale CPUs
-
-# CONFIG_SND_I2S_HI6210_I2S is not set
-# CONFIG_SND_SOC_IMG is not set
-# CONFIG_SND_SOC_MTK_BTCVSD is not set
-# CONFIG_SND_SOC_SOF_TOPLEVEL is not set
-
-#
-# STMicroelectronics STM32 SOC audio support
-#
-# end of STMicroelectronics STM32 SOC audio support
-
-# CONFIG_SND_SOC_XILINX_I2S is not set
-# CONFIG_SND_SOC_XILINX_AUDIO_FORMATTER is not set
-# CONFIG_SND_SOC_XILINX_SPDIF is not set
-# CONFIG_SND_SOC_XTFPGA_I2S is not set
-# CONFIG_ZX_TDM is not set
-CONFIG_SND_SOC_SANECHIPS=y
-# CONFIG_SND_SOC_ZX29_TI3100 is not set
-#dongyu@modify for codec start
-# CONFIG_SND_SOC_ZX29_NAU8810 is not set
-# CONFIG_SND_SOC_ZX29_TI3104 is not set
-# CONFIG_SND_SOC_ZX29_ES8374 is not set
-# CONFIG_SND_SOC_ZX29_ES8312 is not set
-# CONFIG_SND_SOC_ZX29_AK4940 is not set
-# CONFIG_SND_SOC_ZX29_MAX9867 is not set
-CONFIG_SND_SOC_ZX29_ES8311=y
-CONFIG_SND_SOC_ZX_VOICE=y
-CONFIG_SND_SOC_ZX297520V3=y
-CONFIG_SND_SOC_ZX_I2S=y
-CONFIG_SND_SOC_ZX_PCM=y
-# CONFIG_SND_SOC_ZX_TDM is not set
-# CONFIG_SND_SOC_TLV320AIC31XX is not set
-# CONFIG_SND_SOC_NAU8810 is not set
-# CONFIG_SND_SOC_TLV320AIC3X is not set
-# CONFIG_SND_SOC_MAX9867 is not set
-CONFIG_SND_SOC_ES8311=y
-#dongyu@modify for codec end
-CONFIG_SND_EXTRA_CTRL=y
-CONFIG_USE_TOP_I2S0=y
-# CONFIG_USE_TOP_I2S1 is not set
-# CONFIG_USE_TOP_TDM is not set
-CONFIG_SND_SOC_ZX29_PCM_DMA=y
-CONFIG_SND_SOC_I2C_AND_SPI=y
-
-#
-# CODEC drivers
-#
-# CONFIG_SND_SOC_AC97_CODEC is not set
-# CONFIG_SND_SOC_ADAU1701 is not set
-# CONFIG_SND_SOC_ADAU1761_I2C is not set
-# CONFIG_SND_SOC_ADAU1761_SPI is not set
-# CONFIG_SND_SOC_ADAU7002 is not set
-# CONFIG_SND_SOC_ADAU7118_HW is not set
-# CONFIG_SND_SOC_ADAU7118_I2C is not set
-# CONFIG_SND_SOC_AK4104 is not set
-# CONFIG_SND_SOC_AK4118 is not set
-# CONFIG_SND_SOC_AK4458 is not set
-# CONFIG_SND_SOC_AK4554 is not set
-# CONFIG_SND_SOC_AK4613 is not set
-# CONFIG_SND_SOC_AK4642 is not set
-# CONFIG_SND_SOC_AK5386 is not set
-# CONFIG_SND_SOC_AK5558 is not set
-# CONFIG_SND_SOC_ALC5623 is not set
-# CONFIG_SND_SOC_BD28623 is not set
-# CONFIG_SND_SOC_BT_SCO is not set
-# CONFIG_SND_SOC_CS35L32 is not set
-# CONFIG_SND_SOC_CS35L33 is not set
-# CONFIG_SND_SOC_CS35L34 is not set
-# CONFIG_SND_SOC_CS35L35 is not set
-# CONFIG_SND_SOC_CS35L36 is not set
-# CONFIG_SND_SOC_CS42L42 is not set
-# CONFIG_SND_SOC_CS42L51_I2C is not set
-# CONFIG_SND_SOC_CS42L73 is not set
-# CONFIG_SND_SOC_CS4234 is not set
-# CONFIG_SND_SOC_CS4265 is not set
-# CONFIG_SND_SOC_CS4270 is not set
-# CONFIG_SND_SOC_CS4271_I2C is not set
-# CONFIG_SND_SOC_CS4271_SPI is not set
-# CONFIG_SND_SOC_CS42XX8_I2C is not set
-# CONFIG_SND_SOC_CS43130 is not set
-# CONFIG_SND_SOC_CS4341 is not set
-# CONFIG_SND_SOC_CS4349 is not set
-# CONFIG_SND_SOC_CS53L30 is not set
-# CONFIG_SND_SOC_CX2072X is not set
-# CONFIG_SND_SOC_DA7213 is not set
-# CONFIG_SND_SOC_DMIC is not set
-# CONFIG_SND_SOC_ES7134 is not set
-# CONFIG_SND_SOC_ES7241 is not set
-# CONFIG_SND_SOC_ES8316 is not set
-# CONFIG_SND_SOC_ES8328_I2C is not set
-# CONFIG_SND_SOC_ES8328_SPI is not set
-# CONFIG_SND_SOC_GTM601 is not set
-# CONFIG_SND_SOC_INNO_RK3036 is not set
-# CONFIG_SND_SOC_MAX98088 is not set
-# CONFIG_SND_SOC_MAX98357A is not set
-# CONFIG_SND_SOC_MAX98504 is not set
-# CONFIG_SND_SOC_MAX9867 is not set
-# CONFIG_SND_SOC_MAX98927 is not set
-# CONFIG_SND_SOC_MAX98373_I2C is not set
-# CONFIG_SND_SOC_MAX98390 is not set
-# CONFIG_SND_SOC_MAX9860 is not set
-# CONFIG_SND_SOC_MSM8916_WCD_DIGITAL is not set
-# CONFIG_SND_SOC_PCM1681 is not set
-# CONFIG_SND_SOC_PCM1789_I2C is not set
-# CONFIG_SND_SOC_PCM179X_I2C is not set
-# CONFIG_SND_SOC_PCM179X_SPI is not set
-# CONFIG_SND_SOC_PCM186X_I2C is not set
-# CONFIG_SND_SOC_PCM186X_SPI is not set
-# CONFIG_SND_SOC_PCM3060_I2C is not set
-# CONFIG_SND_SOC_PCM3060_SPI is not set
-# CONFIG_SND_SOC_PCM3168A_I2C is not set
-# CONFIG_SND_SOC_PCM3168A_SPI is not set
-# CONFIG_SND_SOC_PCM512x_I2C is not set
-# CONFIG_SND_SOC_PCM512x_SPI is not set
-# CONFIG_SND_SOC_RK3328 is not set
-# CONFIG_SND_SOC_RT5616 is not set
-# CONFIG_SND_SOC_RT5631 is not set
-# CONFIG_SND_SOC_SGTL5000 is not set
-# CONFIG_SND_SOC_SIMPLE_AMPLIFIER is not set
-# CONFIG_SND_SOC_SIRF_AUDIO_CODEC is not set
-# CONFIG_SND_SOC_SPDIF is not set
-# CONFIG_SND_SOC_SSM2305 is not set
-# CONFIG_SND_SOC_SSM2602_SPI is not set
-# CONFIG_SND_SOC_SSM2602_I2C is not set
-# CONFIG_SND_SOC_SSM4567 is not set
-# CONFIG_SND_SOC_STA32X is not set
-# CONFIG_SND_SOC_STA350 is not set
-# CONFIG_SND_SOC_STI_SAS is not set
-# CONFIG_SND_SOC_TAS2552 is not set
-# CONFIG_SND_SOC_TAS2562 is not set
-# CONFIG_SND_SOC_TAS2764 is not set
-# CONFIG_SND_SOC_TAS2770 is not set
-# CONFIG_SND_SOC_TAS5086 is not set
-# CONFIG_SND_SOC_TAS571X is not set
-# CONFIG_SND_SOC_TAS5720 is not set
-# CONFIG_SND_SOC_TAS6424 is not set
-# CONFIG_SND_SOC_TDA7419 is not set
-# CONFIG_SND_SOC_TFA9879 is not set
-# CONFIG_SND_SOC_TLV320AIC23_I2C is not set
-# CONFIG_SND_SOC_TLV320AIC23_SPI is not set
-# CONFIG_SND_SOC_TLV320AIC32X4_I2C is not set
-# CONFIG_SND_SOC_TLV320AIC32X4_SPI is not set
-# CONFIG_SND_SOC_TLV320AIC3X is not set
-# CONFIG_SND_SOC_TLV320ADCX140 is not set
-# CONFIG_SND_SOC_TS3A227E is not set
-# CONFIG_SND_SOC_TSCS42XX is not set
-# CONFIG_SND_SOC_TSCS454 is not set
-# CONFIG_SND_SOC_UDA1334 is not set
-# CONFIG_SND_SOC_WM8510 is not set
-# CONFIG_SND_SOC_WM8523 is not set
-# CONFIG_SND_SOC_WM8524 is not set
-# CONFIG_SND_SOC_WM8580 is not set
-# CONFIG_SND_SOC_WM8711 is not set
-# CONFIG_SND_SOC_WM8728 is not set
-# CONFIG_SND_SOC_WM8731 is not set
-# CONFIG_SND_SOC_WM8737 is not set
-# CONFIG_SND_SOC_WM8741 is not set
-# CONFIG_SND_SOC_WM8750 is not set
-# CONFIG_SND_SOC_WM8753 is not set
-# CONFIG_SND_SOC_WM8770 is not set
-# CONFIG_SND_SOC_WM8776 is not set
-# CONFIG_SND_SOC_WM8782 is not set
-# CONFIG_SND_SOC_WM8804_I2C is not set
-# CONFIG_SND_SOC_WM8804_SPI is not set
-# CONFIG_SND_SOC_WM8903 is not set
-# CONFIG_SND_SOC_WM8904 is not set
-# CONFIG_SND_SOC_WM8960 is not set
-# CONFIG_SND_SOC_WM8974 is not set
-# CONFIG_SND_SOC_WM8978 is not set
-# CONFIG_SND_SOC_WM8985 is not set
-# CONFIG_SND_SOC_ZL38060 is not set
-# CONFIG_SND_SOC_ZX_AUD96P22 is not set
-# CONFIG_SND_SOC_MAX9759 is not set
-# CONFIG_SND_SOC_MT6351 is not set
-# CONFIG_SND_SOC_MT6358 is not set
-# CONFIG_SND_SOC_MT6660 is not set
-# CONFIG_SND_SOC_NAU8540 is not set
-# CONFIG_SND_SOC_NAU8822 is not set
-# CONFIG_SND_SOC_NAU8824 is not set
-# CONFIG_SND_SOC_TPA6130A2 is not set
-# end of CODEC drivers
-
-# CONFIG_SND_SIMPLE_CARD is not set
-# CONFIG_SND_AUDIO_GRAPH_CARD is not set
-CONFIG_MMC=y
-CONFIG_MMC_DW=y
-CONFIG_MMC_DW_ZX29=y
-# CONFIG_MEMSTICK is not set
-# CONFIG_NEW_LEDS is not set
-# CONFIG_ACCESSIBILITY is not set
-CONFIG_EDAC_ATOMIC_SCRUB=y
-CONFIG_EDAC_SUPPORT=y
-CONFIG_RTC_LIB=y
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_HCTOSYS=y
-CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_DEV=y
-CONFIG_RTC_ZX234290=y
-CONFIG_DMADEVICES=y
-# CONFIG_DMADEVICES_DEBUG is not set
-
-CONFIG_USB_SUPPORT=y
-CONFIG_USB_COMMON=y
-# CONFIG_USB_ULPI_BUS is not set
-# CONFIG_USB_CONN_GPIO is not set
-CONFIG_USB_ARCH_HAS_HCD=y
-# CONFIG_USB is not set
-# CONFIG_USB_CDNS3 is not set
-# CONFIG_USB_MUSB_HDRC is not set
-# CONFIG_USB_DWC3 is not set
-# CONFIG_USB_DWC2 is not set
-# CONFIG_USB_CHIPIDEA is not set
-# CONFIG_USB_ISP1760 is not set
-
-#
-# USB port drivers
-#
-
-#
-# USB Physical Layer drivers
-#
-# CONFIG_NOP_USB_XCEIV is not set
-# CONFIG_USB_GPIO_VBUS is not set
-# CONFIG_USB_ISP1301 is not set
-# CONFIG_USB_ULPI is not set
-# end of USB Physical Layer drivers
-
-CONFIG_USB_GADGET=y
-# CONFIG_USB_GADGET_DEBUG is not set
-# CONFIG_USB_GADGET_DEBUG_FILES is not set
-# CONFIG_USB_GADGET_DEBUG_FS is not set
-CONFIG_USB_GADGET_VBUS_DRAW=2
-CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2
-
-#
-# USB Peripheral Controller
-#
-# CONFIG_USB_FUSB300 is not set
-# CONFIG_USB_FOTG210_UDC is not set
-# CONFIG_USB_GR_UDC is not set
-# CONFIG_USB_R8A66597 is not set
-# CONFIG_USB_PXA27X is not set
-# CONFIG_USB_MV_UDC is not set
-# CONFIG_USB_MV_U3D is not set
-# CONFIG_USB_SNP_UDC_PLAT is not set
-# CONFIG_USB_M66592 is not set
-# CONFIG_USB_BDC_UDC is not set
-# CONFIG_USB_NET2272 is not set
-# CONFIG_USB_GADGET_XILINX is not set
-# CONFIG_USB_MAX3420_UDC is not set
-# end of USB Peripheral Controller
-
-CONFIG_USB_F_ADB_CLIENT=y
-# CONFIG_USB_CONFIGFS is not set
-
-#
-# USB Gadget precomposed configurations
-#
-# CONFIG_USB_ZERO is not set
-# CONFIG_USB_GADGETFS is not set
-# CONFIG_USB_FUNCTIONFS is not set
-# CONFIG_USB_MASS_STORAGE is not set
-# CONFIG_USB_G_SERIAL is not set
-# CONFIG_USB_G_PRINTER is not set
-# CONFIG_USB_G_ACM_MS is not set
-# CONFIG_USB_G_HID is not set
-# CONFIG_USB_G_DBGP is not set
-# CONFIG_USB_RAW_GADGET is not set
-# end of USB Gadget precomposed configurations
-
-#
-# DMA Devices
-#
-CONFIG_DMA_ENGINE=y
-CONFIG_DMA_OF=y
-# CONFIG_ALTERA_MSGDMA is not set
-# CONFIG_AMBA_PL08X is not set
-# CONFIG_DW_AXI_DMAC is not set
-# CONFIG_FSL_EDMA is not set
-# CONFIG_FSL_QDMA is not set
-# CONFIG_INTEL_IDMA64 is not set
-# CONFIG_NBPFAXI_DMA is not set
-# CONFIG_PL330_DMA is not set
-# CONFIG_XILINX_ZYNQMP_DPDMA is not set
-# CONFIG_QCOM_HIDMA_MGMT is not set
-# CONFIG_QCOM_HIDMA is not set
-# CONFIG_DW_DMAC is not set
-# CONFIG_SF_PDMA is not set
-
-#
-# DMA Clients
-#
-# CONFIG_ASYNC_TX_DMA is not set
-# CONFIG_DMATEST is not set
-
-#
-# DMABUF options
-#
-# CONFIG_SYNC_FILE is not set
-# CONFIG_DMABUF_HEAPS is not set
-# end of DMABUF options
-
-# CONFIG_AUXDISPLAY is not set
-# CONFIG_UIO is not set
-# CONFIG_VFIO is not set
-# CONFIG_VIRT_DRIVERS is not set
-# CONFIG_VIRTIO_MENU is not set
-# CONFIG_VDPA is not set
-CONFIG_VHOST_MENU=y
-# CONFIG_VHOST_NET is not set
-# CONFIG_VHOST_CROSS_ENDIAN_LEGACY is not set
-
-#
-# Microsoft Hyper-V guest support
-#
-# end of Microsoft Hyper-V guest support
-
-# CONFIG_GREYBUS is not set
-# CONFIG_STAGING is not set
-#
-# ZX297520 voice buffer driver
-#
-# CONFIG_VOICE_BUFFER_DRV is not set
-# CONFIG_VBUFF_IN_MULTI_CORE is not set
-# CONFIG_GOLDFISH is not set
-# CONFIG_CHROME_PLATFORMS is not set
-# CONFIG_MELLANOX_PLATFORM is not set
-CONFIG_HAVE_CLK=y
-CONFIG_CLKDEV_LOOKUP=y
-CONFIG_HAVE_CLK_PREPARE=y
-CONFIG_COMMON_CLK=y
-# CONFIG_COMMON_CLK_MAX9485 is not set
-# CONFIG_COMMON_CLK_SI5341 is not set
-# CONFIG_COMMON_CLK_SI5351 is not set
-# CONFIG_COMMON_CLK_SI514 is not set
-# CONFIG_COMMON_CLK_SI544 is not set
-# CONFIG_COMMON_CLK_SI570 is not set
-# CONFIG_COMMON_CLK_CDCE706 is not set
-# CONFIG_COMMON_CLK_CDCE925 is not set
-# CONFIG_COMMON_CLK_CS2000_CP is not set
-# CONFIG_CLK_QORIQ is not set
-# CONFIG_COMMON_CLK_VC5 is not set
-# CONFIG_COMMON_CLK_FIXED_MMIO is not set
-# CONFIG_HWSPINLOCK is not set
-
-#
-# Clock Source drivers
-#
-CONFIG_TIMER_OF=y
-CONFIG_TIMER_PROBE=y
-CONFIG_ARM_ARCH_TIMER=y
-CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y
-# CONFIG_MICROCHIP_PIT64B is not set
-# end of Clock Source drivers
-
-# CONFIG_MAILBOX is not set
-# CONFIG_IOMMU_SUPPORT is not set
-
-#
-# Remoteproc drivers
-#
-# CONFIG_REMOTEPROC is not set
-# end of Remoteproc drivers
-
-#
-# Rpmsg drivers
-#
-# CONFIG_RPMSG_VIRTIO is not set
-# end of Rpmsg drivers
-
-# CONFIG_SOUNDWIRE is not set
-
-#
-# SOC (System On Chip) specific Drivers
-#
-
-#
-# Amlogic SoC drivers
-#
-# end of Amlogic SoC drivers
-
-#
-# Aspeed SoC drivers
-#
-# end of Aspeed SoC drivers
-
-#
-# Broadcom SoC drivers
-#
-# CONFIG_SOC_BRCMSTB is not set
-# end of Broadcom SoC drivers
-
-#
-# NXP/Freescale QorIQ SoC drivers
-#
-# CONFIG_QUICC_ENGINE is not set
-# CONFIG_FSL_RCPM is not set
-# end of NXP/Freescale QorIQ SoC drivers
-
-#
-# i.MX SoC drivers
-#
-# end of i.MX SoC drivers
-
-#
-# Qualcomm SoC drivers
-#
-# end of Qualcomm SoC drivers
-
-# CONFIG_SOC_TI is not set
-
-#
-# Xilinx SoC drivers
-#
-# CONFIG_XILINX_VCU is not set
-# end of Xilinx SoC drivers
-
-CONFIG_SOC_ZTE=y
-CONFIG_ZTE_RPMSG=y
-CONFIG_ZX29_ICP=y
-CONFIG_ZTE_PCU=y
-CONFIG_ZX_RAM_CONSOLE=y
-CONFIG_ZX_PM_DEBUG=y
-# CONFIG_ZX_PM_DEBUG_TIME is not set
-CONFIG_AXI_FREQ=y
-# end of SOC (System On Chip) specific Drivers
-
-# CONFIG_PM_DEVFREQ is not set
-# CONFIG_EXTCON is not set
-# CONFIG_MEMORY is not set
-# CONFIG_IIO is not set
-# CONFIG_PWM is not set
-
-#
-# IRQ chip support
-#
-CONFIG_IRQCHIP=y
-CONFIG_ARM_GIC=y
-CONFIG_ARM_GIC_MAX_NR=1
-CONFIG_ARM_GIC_V3=y
-CONFIG_ARM_GIC_V3_ITS=y
-# CONFIG_AL_FIC is not set
-CONFIG_PARTITION_PERCPU=y
-# end of IRQ chip support
-
-# CONFIG_IPACK_BUS is not set
-CONFIG_RESET_CONTROLLER=y
-CONFIG_RESET_SIMPLE=y
-# CONFIG_RESET_TI_SYSCON is not set
-CONFIG_RESET_ZX29=y
-
-#
-# PHY Subsystem
-#
-# CONFIG_GENERIC_PHY is not set
-# CONFIG_BCM_KONA_USB2_PHY is not set
-# CONFIG_PHY_CADENCE_TORRENT is not set
-# CONFIG_PHY_CADENCE_DPHY is not set
-# CONFIG_PHY_CADENCE_SIERRA is not set
-# CONFIG_PHY_CADENCE_SALVO is not set
-# CONFIG_PHY_FSL_IMX8MQ_USB is not set
-# CONFIG_PHY_MIXEL_MIPI_DPHY is not set
-# CONFIG_PHY_PXA_28NM_HSIC is not set
-# CONFIG_PHY_PXA_28NM_USB2 is not set
-# CONFIG_PHY_OCELOT_SERDES is not set
-# end of PHY Subsystem
-
-# CONFIG_POWERCAP is not set
-# CONFIG_MCB is not set
-# CONFIG_RAS is not set
-
-#
-# Android
-#
-CONFIG_ANDROID=y
-CONFIG_ANDROID_BINDER_IPC=y
-CONFIG_ASHMEM=y
-# CONFIG_ANDROID_BINDER_RPC is not set
-# CONFIG_ANDROID_LOGGER is not set
-# CONFIG_ANDROID_RAM_CONSOLE is not set
-# CONFIG_PERSISTENT_TRACER is not set
-# CONFIG_ANDROID_TIMED_OUTPUT is not set
-# CONFIG_ANDROID_LOW_MEMORY_KILLER is not set
-# CONFIG_ANDROID_SWITCH is not set
-# CONFIG_ANDROID_INTF_ALARM_DEV is not set
-# end of Android
-
-# CONFIG_DAX is not set
-# CONFIG_NVMEM is not set
-
-#
-# HW tracing support
-#
-# CONFIG_STM is not set
-# CONFIG_INTEL_TH is not set
-# end of HW tracing support
-
-# CONFIG_FPGA is not set
-# CONFIG_FSI is not set
-# CONFIG_TEE is not set
-CONFIG_PM_OPP=y
-# CONFIG_SIOX is not set
-# CONFIG_SLIMBUS is not set
-# CONFIG_INTERCONNECT is not set
-# CONFIG_COUNTER is not set
-# end of Device Drivers
-
-#
-# File systems
-#
-CONFIG_DCACHE_WORD_ACCESS=y
-# CONFIG_VALIDATE_FS_PARSER is not set
-# CONFIG_EXT2_FS is not set
-# CONFIG_EXT3_FS is not set
-CONFIG_EXT4_FS=y
-# CONFIG_EXT4_USE_FOR_EXT2 is not set
-CONFIG_EXT4_FS_POSIX_ACL=y
-CONFIG_EXT4_FS_SECURITY=y
-CONFIG_EXT4_DEBUG=y
-CONFIG_JBD2=y
-CONFIG_JBD2_DEBUG=y
-CONFIG_FS_MBCACHE=y
-# CONFIG_REISERFS_FS is not set
-# CONFIG_JFS_FS is not set
-# CONFIG_XFS_FS is not set
-# CONFIG_GFS2_FS is not set
-# CONFIG_BTRFS_FS is not set
-# CONFIG_NILFS2_FS is not set
-# CONFIG_F2FS_FS is not set
-# CONFIG_EXPORTFS_BLOCK_OPS is not set
-CONFIG_FILE_LOCKING=y
-CONFIG_MANDATORY_FILE_LOCKING=y
-# CONFIG_FS_ENCRYPTION is not set
-# CONFIG_FS_VERITY is not set
-CONFIG_FSNOTIFY=y
-CONFIG_DNOTIFY=y
-CONFIG_INOTIFY_USER=y
-# CONFIG_FANOTIFY is not set
-# CONFIG_QUOTA is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_FUSE_FS is not set
-# CONFIG_OVERLAY_FS is not set
-
-#
-# Caches
-#
-# CONFIG_FSCACHE is not set
-# end of Caches
-
-#
-# CD-ROM/DVD Filesystems
-#
-CONFIG_ISO9660_FS=y
-# CONFIG_JOLIET is not set
-# CONFIG_ZISOFS is not set
-# CONFIG_UDF_FS is not set
-# end of CD-ROM/DVD Filesystems
-
-#
-# DOS/FAT/EXFAT/NT Filesystems
-#
-# CONFIG_MSDOS_FS is not set
-# CONFIG_VFAT_FS is not set
-# CONFIG_EXFAT_FS is not set
-# CONFIG_NTFS_FS is not set
-# end of DOS/FAT/EXFAT/NT Filesystems
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_PROC_SYSCTL=y
-CONFIG_PROC_PAGE_MONITOR=y
-# CONFIG_PROC_CHILDREN is not set
-CONFIG_KERNFS=y
-CONFIG_SYSFS=y
-# CONFIG_CONFIGFS_FS is not set
-# end of Pseudo filesystems
-
-CONFIG_MISC_FILESYSTEMS=y
-# CONFIG_ORANGEFS_FS is not set
-# CONFIG_ADFS_FS is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_HFSPLUS_FS is not set
-# CONFIG_BEFS_FS is not set
-# CONFIG_BFS_FS is not set
-# CONFIG_EFS_FS is not set
-CONFIG_JFFS2_FS=y
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_WRITEBUFFER=y
-CONFIG_JFFS2_FS_WBUF_VERIFY=y
-# CONFIG_JFFS2_SUMMARY is not set
-# CONFIG_JFFS2_FS_XATTR is not set
-CONFIG_JFFS2_COMPRESSION_OPTIONS=y
-CONFIG_JFFS2_ZLIB=y
-CONFIG_JFFS2_LZO=y
-CONFIG_JFFS2_RTIME=y
-CONFIG_JFFS2_RUBIN=y
-# CONFIG_JFFS2_CMODE_NONE is not set
-CONFIG_JFFS2_CMODE_PRIORITY=y
-# CONFIG_JFFS2_CMODE_SIZE is not set
-# CONFIG_JFFS2_CMODE_FAVOURLZO is not set
-CONFIG_UBIFS_FS=y
-CONFIG_UBIFS_FS_ADVANCED_COMPR=y
-CONFIG_UBIFS_FS_LZO=y
-CONFIG_UBIFS_FS_ZLIB=y
-CONFIG_UBIFS_FS_ZSTD=y
-# CONFIG_UBIFS_ATIME_SUPPORT is not set
-# CONFIG_UBIFS_FS_XATTR is not set
-# CONFIG_UBIFS_FS_AUTHENTICATION is not set
-# CONFIG_CRAMFS is not set
-CONFIG_SQUASHFS=y
-CONFIG_SQUASHFS_FILE_CACHE=y
-# CONFIG_SQUASHFS_FILE_DIRECT is not set
-CONFIG_SQUASHFS_DECOMP_SINGLE=y
-# CONFIG_SQUASHFS_DECOMP_MULTI is not set
-# CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU is not set
-# CONFIG_SQUASHFS_XATTR is not set
-CONFIG_SQUASHFS_ZLIB=y
-CONFIG_SQUASHFS_LZ4=y
-CONFIG_SQUASHFS_LZO=y
-CONFIG_SQUASHFS_XZ=y
-CONFIG_SQUASHFS_ZSTD=y
-# CONFIG_SQUASHFS_4K_DEVBLK_SIZE is not set
-# CONFIG_SQUASHFS_EMBEDDED is not set
-CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
-# CONFIG_VXFS_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_OMFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_QNX6FS_FS is not set
-# CONFIG_ROMFS_FS is not set
-# CONFIG_PSTORE is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-# CONFIG_EROFS_FS is not set
-CONFIG_NLS=y
-CONFIG_NLS_DEFAULT=""
-# CONFIG_NLS_CODEPAGE_437 is not set
-# CONFIG_NLS_CODEPAGE_737 is not set
-# CONFIG_NLS_CODEPAGE_775 is not set
-# CONFIG_NLS_CODEPAGE_850 is not set
-# CONFIG_NLS_CODEPAGE_852 is not set
-# CONFIG_NLS_CODEPAGE_855 is not set
-# CONFIG_NLS_CODEPAGE_857 is not set
-# CONFIG_NLS_CODEPAGE_860 is not set
-# CONFIG_NLS_CODEPAGE_861 is not set
-# CONFIG_NLS_CODEPAGE_862 is not set
-# CONFIG_NLS_CODEPAGE_863 is not set
-# CONFIG_NLS_CODEPAGE_864 is not set
-# CONFIG_NLS_CODEPAGE_865 is not set
-# CONFIG_NLS_CODEPAGE_866 is not set
-# CONFIG_NLS_CODEPAGE_869 is not set
-# CONFIG_NLS_CODEPAGE_936 is not set
-# CONFIG_NLS_CODEPAGE_950 is not set
-# CONFIG_NLS_CODEPAGE_932 is not set
-# CONFIG_NLS_CODEPAGE_949 is not set
-# CONFIG_NLS_CODEPAGE_874 is not set
-# CONFIG_NLS_ISO8859_8 is not set
-# CONFIG_NLS_CODEPAGE_1250 is not set
-# CONFIG_NLS_CODEPAGE_1251 is not set
-# CONFIG_NLS_ASCII is not set
-# CONFIG_NLS_ISO8859_1 is not set
-# CONFIG_NLS_ISO8859_2 is not set
-# CONFIG_NLS_ISO8859_3 is not set
-# CONFIG_NLS_ISO8859_4 is not set
-# CONFIG_NLS_ISO8859_5 is not set
-# CONFIG_NLS_ISO8859_6 is not set
-# CONFIG_NLS_ISO8859_7 is not set
-# CONFIG_NLS_ISO8859_9 is not set
-# CONFIG_NLS_ISO8859_13 is not set
-# CONFIG_NLS_ISO8859_14 is not set
-# CONFIG_NLS_ISO8859_15 is not set
-# CONFIG_NLS_KOI8_R is not set
-# CONFIG_NLS_KOI8_U is not set
-# CONFIG_NLS_MAC_ROMAN is not set
-# CONFIG_NLS_MAC_CELTIC is not set
-# CONFIG_NLS_MAC_CENTEURO is not set
-# CONFIG_NLS_MAC_CROATIAN is not set
-# CONFIG_NLS_MAC_CYRILLIC is not set
-# CONFIG_NLS_MAC_GAELIC is not set
-# CONFIG_NLS_MAC_GREEK is not set
-# CONFIG_NLS_MAC_ICELAND is not set
-# CONFIG_NLS_MAC_INUIT is not set
-# CONFIG_NLS_MAC_ROMANIAN is not set
-# CONFIG_NLS_MAC_TURKISH is not set
-# CONFIG_NLS_UTF8 is not set
-# CONFIG_UNICODE is not set
-CONFIG_IO_WQ=y
-# end of File systems
-
-#
-# Security options
-#
-CONFIG_KEYS=y
-# CONFIG_KEYS_REQUEST_CACHE is not set
-# CONFIG_PERSISTENT_KEYRINGS is not set
-# CONFIG_ENCRYPTED_KEYS is not set
-# CONFIG_KEY_DH_OPERATIONS is not set
-# CONFIG_SECURITY_DMESG_RESTRICT is not set
-# CONFIG_SECURITY is not set
-# CONFIG_SECURITYFS is not set
-CONFIG_HAVE_HARDENED_USERCOPY_ALLOCATOR=y
-# CONFIG_HARDENED_USERCOPY is not set
-# CONFIG_FORTIFY_SOURCE is not set
-# CONFIG_STATIC_USERMODEHELPER is not set
-CONFIG_DEFAULT_SECURITY_DAC=y
-CONFIG_LSM="lockdown,yama,loadpin,safesetid,integrity"
-
-#
-# Kernel hardening options
-#
-
-#
-# Memory initialization
-#
-CONFIG_INIT_STACK_NONE=y
-# CONFIG_GCC_PLUGIN_STRUCTLEAK_USER is not set
-# CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF is not set
-# CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF_ALL is not set
-# CONFIG_INIT_ON_ALLOC_DEFAULT_ON is not set
-# CONFIG_INIT_ON_FREE_DEFAULT_ON is not set
-# end of Memory initialization
-# end of Kernel hardening options
-# end of Security options
-
-CONFIG_CRYPTO=y
-
-#
-# Crypto core or helper
-#
-CONFIG_CRYPTO_ALGAPI=y
-CONFIG_CRYPTO_ALGAPI2=y
-CONFIG_CRYPTO_SKCIPHER=y
-CONFIG_CRYPTO_SKCIPHER2=y
-CONFIG_CRYPTO_HASH=y
-CONFIG_CRYPTO_HASH2=y
-CONFIG_CRYPTO_RNG2=y
-CONFIG_CRYPTO_ACOMP2=y
-# CONFIG_CRYPTO_MANAGER is not set
-# CONFIG_CRYPTO_USER is not set
-CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y
-# CONFIG_CRYPTO_NULL is not set
-# CONFIG_CRYPTO_CRYPTD is not set
-# CONFIG_CRYPTO_AUTHENC is not set
-# CONFIG_CRYPTO_TEST is not set
-
-#
-# Public-key cryptography
-#
-# CONFIG_CRYPTO_RSA is not set
-# CONFIG_CRYPTO_DH is not set
-# CONFIG_CRYPTO_ECDH is not set
-# CONFIG_CRYPTO_ECRDSA is not set
-# CONFIG_CRYPTO_SM2 is not set
-# CONFIG_CRYPTO_CURVE25519 is not set
-
-#
-# Authenticated Encryption with Associated Data
-#
-# CONFIG_CRYPTO_CCM is not set
-# CONFIG_CRYPTO_GCM is not set
-# CONFIG_CRYPTO_CHACHA20POLY1305 is not set
-# CONFIG_CRYPTO_AEGIS128 is not set
-# CONFIG_CRYPTO_SEQIV is not set
-# CONFIG_CRYPTO_ECHAINIV is not set
-
-#
-# Block modes
-#
-# CONFIG_CRYPTO_CBC is not set
-# CONFIG_CRYPTO_CFB is not set
-# CONFIG_CRYPTO_CTR is not set
-# CONFIG_CRYPTO_CTS is not set
-# CONFIG_CRYPTO_ECB is not set
-# CONFIG_CRYPTO_LRW is not set
-# CONFIG_CRYPTO_OFB is not set
-# CONFIG_CRYPTO_PCBC is not set
-# CONFIG_CRYPTO_XTS is not set
-# CONFIG_CRYPTO_KEYWRAP is not set
-# CONFIG_CRYPTO_ADIANTUM is not set
-# CONFIG_CRYPTO_ESSIV is not set
-
-#
-# Hash modes
-#
-# CONFIG_CRYPTO_CMAC is not set
-# CONFIG_CRYPTO_HMAC is not set
-# CONFIG_CRYPTO_XCBC is not set
-# CONFIG_CRYPTO_VMAC is not set
-
-#
-# Digest
-#
-CONFIG_CRYPTO_CRC32C=y
-# CONFIG_CRYPTO_CRC32 is not set
-# CONFIG_CRYPTO_XXHASH is not set
-# CONFIG_CRYPTO_BLAKE2B is not set
-# CONFIG_CRYPTO_BLAKE2S is not set
-# CONFIG_CRYPTO_CRCT10DIF is not set
-# CONFIG_CRYPTO_GHASH is not set
-# CONFIG_CRYPTO_POLY1305 is not set
-# CONFIG_CRYPTO_MD4 is not set
-# CONFIG_CRYPTO_MD5 is not set
-# CONFIG_CRYPTO_MICHAEL_MIC is not set
-# CONFIG_CRYPTO_RMD128 is not set
-# CONFIG_CRYPTO_RMD160 is not set
-# CONFIG_CRYPTO_RMD256 is not set
-# CONFIG_CRYPTO_RMD320 is not set
-CONFIG_CRYPTO_SHA1=y
-CONFIG_CRYPTO_SHA256=y
-CONFIG_CRYPTO_SHA512=y
-# CONFIG_CRYPTO_SHA3 is not set
-# CONFIG_CRYPTO_SM3 is not set
-# CONFIG_CRYPTO_STREEBOG is not set
-# CONFIG_CRYPTO_TGR192 is not set
-# CONFIG_CRYPTO_WP512 is not set
-
-#
-# Ciphers
-#
-# CONFIG_CRYPTO_AES is not set
-# CONFIG_CRYPTO_AES_TI is not set
-# CONFIG_CRYPTO_BLOWFISH is not set
-# CONFIG_CRYPTO_CAMELLIA is not set
-# CONFIG_CRYPTO_CAST5 is not set
-# CONFIG_CRYPTO_CAST6 is not set
-# CONFIG_CRYPTO_DES is not set
-# CONFIG_CRYPTO_FCRYPT is not set
-# CONFIG_CRYPTO_SALSA20 is not set
-# CONFIG_CRYPTO_CHACHA20 is not set
-# CONFIG_CRYPTO_SERPENT is not set
-# CONFIG_CRYPTO_SM4 is not set
-# CONFIG_CRYPTO_TWOFISH is not set
-
-#
-# Compression
-#
-CONFIG_CRYPTO_DEFLATE=y
-CONFIG_CRYPTO_LZO=y
-# CONFIG_CRYPTO_842 is not set
-# CONFIG_CRYPTO_LZ4 is not set
-# CONFIG_CRYPTO_LZ4HC is not set
-CONFIG_CRYPTO_ZSTD=y
-
-#
-# Random Number Generation
-#
-# CONFIG_CRYPTO_ANSI_CPRNG is not set
-# CONFIG_CRYPTO_DRBG_MENU is not set
-# CONFIG_CRYPTO_JITTERENTROPY is not set
-# CONFIG_CRYPTO_USER_API_HASH is not set
-# CONFIG_CRYPTO_USER_API_SKCIPHER is not set
-# CONFIG_CRYPTO_USER_API_RNG is not set
-# CONFIG_CRYPTO_USER_API_AEAD is not set
-CONFIG_CRYPTO_HASH_INFO=y
-CONFIG_CRYPTO_HW=y
-# CONFIG_CRYPTO_DEV_ATMEL_ECC is not set
-# CONFIG_CRYPTO_DEV_ATMEL_SHA204A is not set
-# CONFIG_CRYPTO_DEV_SAFEXCEL is not set
-# CONFIG_CRYPTO_DEV_CCREE is not set
-# CONFIG_CRYPTO_DEV_AMLOGIC_GXL is not set
-# CONFIG_ASYMMETRIC_KEY_TYPE is not set
-
-#
-# Certificates for signature checking
-#
-# CONFIG_SYSTEM_BLACKLIST_KEYRING is not set
-# end of Certificates for signature checking
-
-#
-# Library routines
-#
-# CONFIG_PACKING is not set
-CONFIG_BITREVERSE=y
-CONFIG_HAVE_ARCH_BITREVERSE=y
-CONFIG_GENERIC_STRNCPY_FROM_USER=y
-CONFIG_GENERIC_STRNLEN_USER=y
-CONFIG_GENERIC_NET_UTILS=y
-# CONFIG_CORDIC is not set
-# CONFIG_PRIME_NUMBERS is not set
-CONFIG_RATIONAL=y
-CONFIG_GENERIC_PCI_IOMAP=y
-CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y
-
-#
-# Crypto library routines
-#
-CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
-# CONFIG_CRYPTO_LIB_CURVE25519 is not set
-CONFIG_CRYPTO_LIB_POLY1305_RSIZE=9
-# CONFIG_CRYPTO_LIB_POLY1305 is not set
-# end of Crypto library routines
-
-CONFIG_CRC_CCITT=y
-CONFIG_CRC16=y
-# CONFIG_CRC_T10DIF is not set
-CONFIG_CRC_ITU_T=y
-CONFIG_CRC32=y
-# CONFIG_CRC32_SELFTEST is not set
-CONFIG_CRC32_SLICEBY8=y
-# CONFIG_CRC32_SLICEBY4 is not set
-# CONFIG_CRC32_SARWATE is not set
-# CONFIG_CRC32_BIT is not set
-# CONFIG_CRC64 is not set
-# CONFIG_CRC4 is not set
-# CONFIG_CRC7 is not set
-# CONFIG_LIBCRC32C is not set
-# CONFIG_CRC8 is not set
-CONFIG_XXHASH=y
-# CONFIG_RANDOM32_SELFTEST is not set
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
-CONFIG_LZO_COMPRESS=y
-CONFIG_LZO_DECOMPRESS=y
-CONFIG_LZ4_DECOMPRESS=y
-CONFIG_ZSTD_DECOMPRESS=y
-CONFIG_XZ_DEC=y
-CONFIG_XZ_DEC_X86=y
-CONFIG_XZ_DEC_POWERPC=y
-CONFIG_XZ_DEC_IA64=y
-CONFIG_XZ_DEC_ARM=y
-CONFIG_XZ_DEC_ARMTHUMB=y
-CONFIG_XZ_DEC_SPARC=y
-CONFIG_XZ_DEC_BCJ=y
-# CONFIG_XZ_DEC_TEST is not set
-CONFIG_DECOMPRESS_GZIP=y
-CONFIG_DECOMPRESS_BZIP2=y
-CONFIG_DECOMPRESS_LZMA=y
-CONFIG_DECOMPRESS_XZ=y
-CONFIG_DECOMPRESS_LZO=y
-CONFIG_DECOMPRESS_LZ4=y
-CONFIG_DECOMPRESS_ZSTD=y
-CONFIG_GENERIC_ALLOCATOR=y
-CONFIG_ASSOCIATIVE_ARRAY=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT_MAP=y
-CONFIG_HAS_DMA=y
-CONFIG_DMA_OPS=y
-CONFIG_NEED_DMA_MAP_STATE=y
-CONFIG_DMA_DECLARE_COHERENT=y
-CONFIG_ARCH_HAS_SETUP_DMA_OPS=y
-CONFIG_ARCH_HAS_TEARDOWN_DMA_OPS=y
-CONFIG_DMA_NONCOHERENT_MMAP=y
-CONFIG_DMA_REMAP=y
-# CONFIG_DMA_API_DEBUG is not set
-CONFIG_GLOB=y
-# CONFIG_GLOB_SELFTEST is not set
-# CONFIG_IRQ_POLL is not set
-CONFIG_LIBFDT=y
-CONFIG_SBITMAP=y
-# CONFIG_STRING_SELFTEST is not set
-# end of Library routines
-
-#
-# Kernel hacking
-#
-
-#
-# printk and dmesg options
-#
-CONFIG_PRINTK_TIME=y
-# CONFIG_PRINTK_CALLER is not set
-CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7
-CONFIG_CONSOLE_LOGLEVEL_QUIET=4
-CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
-# CONFIG_BOOT_PRINTK_DELAY is not set
-# CONFIG_DYNAMIC_DEBUG is not set
-# CONFIG_DYNAMIC_DEBUG_CORE is not set
-CONFIG_SYMBOLIC_ERRNAME=y
-# CONFIG_DEBUG_BUGVERBOSE is not set
-# end of printk and dmesg options
-
-#
-# Compile-time checks and compiler options
-#
-CONFIG_DEBUG_INFO=y
-# CONFIG_DEBUG_INFO_REDUCED is not set
-# CONFIG_DEBUG_INFO_COMPRESSED is not set
-# CONFIG_DEBUG_INFO_SPLIT is not set
-# CONFIG_DEBUG_INFO_DWARF4 is not set
-# CONFIG_DEBUG_INFO_BTF is not set
-# CONFIG_GDB_SCRIPTS is not set
-CONFIG_ENABLE_MUST_CHECK=y
-CONFIG_FRAME_WARN=1024
-# CONFIG_STRIP_ASM_SYMS is not set
-# CONFIG_READABLE_ASM is not set
-# CONFIG_HEADERS_INSTALL is not set
-# CONFIG_DEBUG_SECTION_MISMATCH is not set
-CONFIG_SECTION_MISMATCH_WARN_ONLY=y
-# CONFIG_DEBUG_FORCE_FUNCTION_ALIGN_32B is not set
-# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
-# end of Compile-time checks and compiler options
-
-#
-# Generic Kernel Debugging Instruments
-#
-CONFIG_MAGIC_SYSRQ=y
-CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x1
-CONFIG_MAGIC_SYSRQ_SERIAL=y
-CONFIG_MAGIC_SYSRQ_SERIAL_SEQUENCE=""
-CONFIG_DEBUG_FS=y
-CONFIG_DEBUG_FS_ALLOW_ALL=y
-# CONFIG_DEBUG_FS_DISALLOW_MOUNT is not set
-# CONFIG_DEBUG_FS_ALLOW_NONE is not set
-CONFIG_HAVE_ARCH_KGDB=y
-# CONFIG_KGDB is not set
-# CONFIG_UBSAN is not set
-# end of Generic Kernel Debugging Instruments
-
-CONFIG_DEBUG_KERNEL=y
-CONFIG_DEBUG_MISC=y
-
-#
-# Memory Debugging
-#
-# CONFIG_PAGE_EXTENSION is not set
-# CONFIG_DEBUG_PAGEALLOC is not set
-# CONFIG_PAGE_OWNER is not set
-# CONFIG_PAGE_POISONING is not set
-# CONFIG_DEBUG_RODATA_TEST is not set
-# CONFIG_DEBUG_WX is not set
-# CONFIG_DEBUG_OBJECTS is not set
-# CONFIG_SLUB_DEBUG_ON is not set
-# CONFIG_SLUB_STATS is not set
-CONFIG_HAVE_DEBUG_KMEMLEAK=y
-# CONFIG_DEBUG_KMEMLEAK is not set
-# CONFIG_DEBUG_STACK_USAGE is not set
-# CONFIG_SCHED_STACK_END_CHECK is not set
-# CONFIG_DEBUG_VM is not set
-CONFIG_ARCH_HAS_DEBUG_VIRTUAL=y
-# CONFIG_DEBUG_VIRTUAL is not set
-CONFIG_DEBUG_MEMORY_INIT=y
-CONFIG_CC_HAS_KASAN_GENERIC=y
-CONFIG_CC_HAS_WORKING_NOSANITIZE_ADDRESS=y
-# end of Memory Debugging
-
-# CONFIG_DEBUG_SHIRQ is not set
-
-#
-# Debug Oops, Lockups and Hangs
-#
-CONFIG_PANIC_ON_OOPS=y
-CONFIG_PANIC_ON_OOPS_VALUE=1
-CONFIG_PANIC_TIMEOUT=0
-# CONFIG_SOFTLOCKUP_DETECTOR is not set
-# CONFIG_DETECT_HUNG_TASK is not set
-# CONFIG_WQ_WATCHDOG is not set
-# CONFIG_TEST_LOCKUP is not set
-# end of Debug Oops, Lockups and Hangs
-
-#
-# Scheduler Debugging
-#
-# CONFIG_SCHED_DEBUG is not set
-# CONFIG_SCHEDSTATS is not set
-# end of Scheduler Debugging
-
-# CONFIG_DEBUG_TIMEKEEPING is not set
-CONFIG_DEBUG_PREEMPT=y
-CONFIG_RAMDUMP=y
-#xf.li modify for close ramdump start
-#CONFIG_RAMDUMP_USER=y
-#CONFIG_RAMDUMP_ABNORMAL_EXIT_TASK=y
-CONFIG_RAMDUMP_EMMC=y
-CONFIG_RAMDUMP_EMMC_BASE=0x4000
-CONFIG_RAMDUMP_EMMC_SIZE=0x6300000
-#xf.li modify for close ramdump end
-#
-# Lock Debugging (spinlocks, mutexes, etc...)
-#
-CONFIG_LOCK_DEBUGGING_SUPPORT=y
-# CONFIG_PROVE_LOCKING is not set
-# CONFIG_LOCK_STAT is not set
-# CONFIG_DEBUG_RT_MUTEXES is not set
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_MUTEXES is not set
-# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set
-# CONFIG_DEBUG_RWSEMS is not set
-# CONFIG_DEBUG_LOCK_ALLOC is not set
-# CONFIG_DEBUG_ATOMIC_SLEEP is not set
-# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
-# CONFIG_LOCK_TORTURE_TEST is not set
-# CONFIG_WW_MUTEX_SELFTEST is not set
-# CONFIG_SCF_TORTURE_TEST is not set
-# end of Lock Debugging (spinlocks, mutexes, etc...)
-
-CONFIG_STACKTRACE=y
-# CONFIG_WARN_ALL_UNSEEDED_RANDOM is not set
-# CONFIG_DEBUG_KOBJECT is not set
-
-#
-# Debug kernel data structures
-#
-# CONFIG_DEBUG_LIST is not set
-# CONFIG_DEBUG_PLIST is not set
-# CONFIG_DEBUG_SG is not set
-# CONFIG_DEBUG_NOTIFIERS is not set
-# CONFIG_BUG_ON_DATA_CORRUPTION is not set
-# end of Debug kernel data structures
-
-# CONFIG_DEBUG_CREDENTIALS is not set
-
-#
-# RCU Debugging
-#
-# CONFIG_RCU_SCALE_TEST is not set
-# CONFIG_RCU_TORTURE_TEST is not set
-# CONFIG_RCU_REF_SCALE_TEST is not set
-CONFIG_RCU_CPU_STALL_TIMEOUT=21
-# CONFIG_RCU_TRACE is not set
-# CONFIG_RCU_EQS_DEBUG is not set
-# end of RCU Debugging
-
-# CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set
-# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
-# CONFIG_LATENCYTOP is not set
-CONFIG_HAVE_FUNCTION_TRACER=y
-CONFIG_HAVE_DYNAMIC_FTRACE=y
-CONFIG_HAVE_DYNAMIC_FTRACE_WITH_REGS=y
-CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
-CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
-CONFIG_HAVE_C_RECORDMCOUNT=y
-CONFIG_TRACING_SUPPORT=y
-# CONFIG_FTRACE is not set
-# CONFIG_SAMPLES is not set
-CONFIG_ARCH_HAS_DEVMEM_IS_ALLOWED=y
-# CONFIG_STRICT_DEVMEM is not set
-
-#
-# arm Debugging
-#
-# CONFIG_ARM_PTDUMP_DEBUGFS is not set
-CONFIG_UNWINDER_ARM=y
-CONFIG_ARM_UNWIND=y
-CONFIG_DEBUG_USER=y
-# CONFIG_DEBUG_LL is not set
-CONFIG_DEBUG_LL_INCLUDE="mach/debug-macro.S"
-CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h"
-# CONFIG_PID_IN_CONTEXTIDR is not set
-# CONFIG_CORESIGHT is not set
-# end of arm Debugging
-
-#
-# Kernel Testing and Coverage
-#
-# CONFIG_KUNIT is not set
-# CONFIG_NOTIFIER_ERROR_INJECTION is not set
-# CONFIG_FAULT_INJECTION is not set
-CONFIG_ARCH_HAS_KCOV=y
-CONFIG_CC_HAS_SANCOV_TRACE_PC=y
-# CONFIG_KCOV is not set
-CONFIG_RUNTIME_TESTING_MENU=y
-# CONFIG_LKDTM is not set
-# CONFIG_TEST_LIST_SORT is not set
-# CONFIG_TEST_MIN_HEAP is not set
-# CONFIG_TEST_SORT is not set
-# CONFIG_BACKTRACE_SELF_TEST is not set
-# CONFIG_RBTREE_TEST is not set
-# CONFIG_REED_SOLOMON_TEST is not set
-# CONFIG_INTERVAL_TREE_TEST is not set
-# CONFIG_PERCPU_TEST is not set
-# CONFIG_ATOMIC64_SELFTEST is not set
-# CONFIG_TEST_HEXDUMP is not set
-# CONFIG_TEST_STRING_HELPERS is not set
-# CONFIG_TEST_STRSCPY is not set
-# CONFIG_TEST_KSTRTOX is not set
-# CONFIG_TEST_PRINTF is not set
-# CONFIG_TEST_BITMAP is not set
-# CONFIG_TEST_UUID is not set
-# CONFIG_TEST_XARRAY is not set
-# CONFIG_TEST_OVERFLOW is not set
-# CONFIG_TEST_RHASHTABLE is not set
-# CONFIG_TEST_HASH is not set
-# CONFIG_TEST_IDA is not set
-# CONFIG_TEST_LKM is not set
-# CONFIG_TEST_BITOPS is not set
-# CONFIG_TEST_VMALLOC is not set
-# CONFIG_TEST_USER_COPY is not set
-# CONFIG_FIND_BIT_BENCHMARK is not set
-# CONFIG_TEST_FIRMWARE is not set
-# CONFIG_TEST_SYSCTL is not set
-# CONFIG_TEST_UDELAY is not set
-# CONFIG_TEST_STATIC_KEYS is not set
-# CONFIG_TEST_MEMCAT_P is not set
-# CONFIG_TEST_STACKINIT is not set
-# CONFIG_TEST_MEMINIT is not set
-# CONFIG_TEST_FREE_PAGES is not set
-# CONFIG_MEMTEST is not set
-# end of Kernel Testing and Coverage
-# end of Kernel hacking
-CONFIG_FLAGS_UTILS=y
-# CONFIG_TEST_FLAGS_UTILS is not set
diff --git a/esdk/layers/meta-zxic/recipes-kernel/linux/linux-zxic_5.10.bb b/esdk/layers/meta-zxic/recipes-kernel/linux/linux-zxic_5.10.bb
deleted file mode 100755
index a8c7f65..0000000
--- a/esdk/layers/meta-zxic/recipes-kernel/linux/linux-zxic_5.10.bb
+++ /dev/null
@@ -1,93 +0,0 @@
-SUMMARY = "zxic Linux kernel"
-SECTION = "kernel"
-PV      = "${LINUX_VERSION}"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM ?= "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
-LINUX_VERSION    ?= "5.10.156"
-BSPDIR = "${TOPDIR}/../upstream"
-#pub include
-include ${TOPDIR}/layers/meta-zxic/conf/pub_esdk.inc
-
-DEPENDS += "kern-tools-native"
-DEPENDS += "${@bb.utils.contains('DISTRO_FEATURES','dm-verity','zstd-native','',d)}"
-inherit kernel  siteinfo  
-
-EXTRA_OEMAKE_append = " LOADADDR=${KERNEL_LOADADDR} EXTRA_CFLAGS='${ZXIC_EXTRA_CFLAGS}' "
-FILESEXTRAPATHS_prepend :="${TOPDIR}/../upstream:"
-# PR_CONFIG_cpe = "linux-5_10-cpe-${BOOT_CTL}-defconfig"
-# PR_CONFIG_v2x = "linux-5_10-v2x-${BOOT_CTL}-defconfig"
-PR_CONFIG_vehicle_dc = "linux-5_10-vehicle_dc-${BOOT_CTL}-defconfig"
-PR_CONFIG_vehicle_dc_4Gb = "linux-5_10-vehicle_dc_4Gb-${BOOT_CTL}-defconfig"
-S = "${WORKDIR}/linux-5.10"
-
-do_install[nostamp] = "1"
-
-SRC_URI = "\
-    file://linux-5.10    \
-    file://${MACHINE}/${LINUX_BASE_CONFIG} \
-    "
-
-# returns all the elements from the src uri that are .cfg files
-def find_cfgs(d):
-    sources=src_patches(d, True)
-    sources_list=[]
-    for s in sources:
-        if s.endswith('.cfg'):
-            sources_list.append(s)
-
-    return sources_list
-
-kernel_do_configure() {
-	# fixes extra + in /lib/modules/2.6.37+
-	# $ scripts/setlocalversion . => +
-	# $ make kernelversion => 2.6.37
-	# $ make kernelrelease => 2.6.37+
-	touch ${B}/.scmversion ${S}/.scmversion
-	
-	cp ${WORKDIR}/${MACHINE}/${LINUX_BASE_CONFIG}  ${WORKDIR}/defconfig 
-	if [ "${S}" != "${B}" ] && [ -f "${S}/.config" ] && [ ! -f "${B}/.config" ]; then
-		mv "${S}/.config" "${B}/.config"
-	fi
-
-	# Copy defconfig to .config if .config does not exist. This allows
-	# recipes to manage the .config themselves in do_configure_prepend().
-	if [ -f "${WORKDIR}/defconfig" ] && [ ! -f "${B}/.config" ]; then
-		cp "${WORKDIR}/defconfig" "${B}/.config"
-	fi
-	
-	merge_config.sh -m  ${WORKDIR}/defconfig ${@" ".join(find_cfgs(d))}
-	${KERNEL_CONFIG_COMMAND}
-}
-
-fakeroot do_cpio () {
-	if ${@bb.utils.contains('DISTRO_FEATURES','dm-verity','true','false',d)}; then
-		cp  -v  ${BSPDIR}/../esdk/sources/meta-zxic-custom/conf/distro/dm-verity/${KERNEL_INITRAMFS_CPIO}   ${B}/
-	fi
-}
-
-do_install_append () {
-	#install elfs
-	install -d ${ELFS-PATH}/
-	install -d ${BINS-PATH}/
-	install -m 0755 ${WORKDIR}/image/boot/uImage ${ELFS-PATH}/uImage
-	install -m 0755 ${WORKDIR}/image/boot/${MACHINE}-${DISTRO}.dtb  ${BINS-PATH}/ap_cpucap.dtb
-	install -m 0755 ${WORKDIR}/image/boot/${MACHINE}-${DISTRO}.dtb  ${ELFS-PATH}/
-
-	install -m 0755 ${B}/vmlinux              ${ELFS-PATH}/vmlinux
-	install -m 0755 ${B}/System.map           ${ELFS-PATH}/System.map
-	if [ -d ${WORKDIR}/image/lib/modules ]; then
-		cp -rf  ${WORKDIR}/image/lib/modules      ${ELFS-PATH}/${PN}/
-	fi
-}
-
-do_cleanlibs () {
-	rm -fr ${ELFS-PATH}/uImage
-	rm -fr ${ELFS-PATH}/${MACHINE}-${DISTRO}.dtb
-	rm -fr ${ELFS-PATH}/vmlinux
-	rm -fr ${ELFS-PATH}/System.map
-	rm -fr ${ELFS-PATH}/${PN}/modules	
-}
-addtask  cleanlibs after do_clean  before do_cleansstate
-addtask  do_cpio   after do_configure before do_compile
-
-COMPATIBLE_MACHINE = "^zxic$"
diff --git a/esdk/layers/meta-zxic/recipes-kernel/linux/linux_bb.diff b/esdk/layers/meta-zxic/recipes-kernel/linux/linux_bb.diff
deleted file mode 100755
index 34dda2f..0000000
--- a/esdk/layers/meta-zxic/recipes-kernel/linux/linux_bb.diff
+++ /dev/null
@@ -1,33 +0,0 @@
-diff --git a/linux-zxic_5.10.bb b/linux-zxic_5.10.bb
-index abadd9b..a8c7f65 100755
---- a/linux-zxic_5.10.bb
-+++ b/linux-zxic_5.10.bb
-@@ -4,16 +4,16 @@ PV      = "${LINUX_VERSION}"
- LICENSE = "GPLv2"
- LIC_FILES_CHKSUM ?= "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
- LINUX_VERSION    ?= "5.10.156"
--
-+BSPDIR = "${TOPDIR}/../upstream"
- #pub include
--include ${BSPDIR}/sources/meta-zxic/conf/pub.inc
-+include ${TOPDIR}/layers/meta-zxic/conf/pub_esdk.inc
- 
- DEPENDS += "kern-tools-native"
- DEPENDS += "${@bb.utils.contains('DISTRO_FEATURES','dm-verity','zstd-native','',d)}"
- inherit kernel  siteinfo  
- 
- EXTRA_OEMAKE_append = " LOADADDR=${KERNEL_LOADADDR} EXTRA_CFLAGS='${ZXIC_EXTRA_CFLAGS}' "
--FILESEXTRAPATHS_prepend :="${SRC-PATH}:"
-+FILESEXTRAPATHS_prepend :="${TOPDIR}/../upstream:"
- # PR_CONFIG_cpe = "linux-5_10-cpe-${BOOT_CTL}-defconfig"
- # PR_CONFIG_v2x = "linux-5_10-v2x-${BOOT_CTL}-defconfig"
- PR_CONFIG_vehicle_dc = "linux-5_10-vehicle_dc-${BOOT_CTL}-defconfig"
-@@ -61,7 +61,7 @@ kernel_do_configure() {
- 
- fakeroot do_cpio () {
- 	if ${@bb.utils.contains('DISTRO_FEATURES','dm-verity','true','false',d)}; then
--		cp  -v  ${BSPDIR}/sources/meta-zxic-custom/conf/distro/dm-verity/${KERNEL_INITRAMFS_CPIO}   ${B}/
-+		cp  -v  ${BSPDIR}/../esdk/sources/meta-zxic-custom/conf/distro/dm-verity/${KERNEL_INITRAMFS_CPIO}   ${B}/
- 	fi
- }
-
diff --git a/upstream/linux-5.10/arch/arm/kernel/svc_s.S b/upstream/linux-5.10/arch/arm/kernel/svc_s.S
deleted file mode 100755
index a52abb7..0000000
--- a/upstream/linux-5.10/arch/arm/kernel/svc_s.S
+++ /dev/null
@@ -1,101 +0,0 @@
-
-#define	GIC_DIST_BASE			(0xF2000000)
-#define	GIC_RDIST_BASE			(0xF2040000)
-
-#define	REAL_TXT_ADDR			(CONFIG_PHYS_OFFSET + 0x8000)
-#define	DTB_ADDR			(CONFIG_DTB_ADDR)	
-
-secure_init:
-
-#if 0
-	mov	r5, r0
-	mov	r6, r1
-	mov	r7, r2
-#endif	
-	mov	r4, lr
-
-#if 1
-	/* use r0--r4 only */
-	bl  	get_core_id
-	mov 	r1, r0
-	bl  	get_cluster_id
-	mov 	r2, r0	
-
-	ldr 	r3, =GIC_DIST_BASE
-	ldr	r0, =0x50
-	str	r0, [r3]
-
-	ldr 	r3, =GIC_RDIST_BASE
-	lsl  	r2, r2, #2
-	add 	r1, r1, r2
-	lsl  	r1, r1, #17
-
-	add 	r1, r1, r3
-	add 	r1, r1, #0x14
-
-	LDR  R0, [R1]
-	LDR  R2, =0xfffffffd
-	AND  R0, R0, R2
-	STR  R0, [R1]
-
-	LDR  R2, = 0xFFFFFFFB
-wait:  
-	LDR  R0, [R1]  
-	AND  R0, R0, R2
-	CMP  R0, #0
-	BNE  wait
-
-	SUB  R1, R1, #0x14
-	LDR  R2, =0x10080
-	ADD  R1, R1, R2
-	LDR  R2, =0xFFFFFFFF
-	STR  R2, [R1]
-#endif
-
-	MRS   R0, CPSR
-	BIC    R0,  #0x1F
-	ORR   R0,  #0xD6
-	MSR   CPSR_c,  R0
-
-	MOV  r3, #0xD
-	MCR  p15,#0x6,r3,c12,c12,#5
-	MCR      p15,0,r3,c12,c12,#5
-
-	MRC    p15,0,r1,c1,c1,0
-	MOV    r2, r1
-	ORR    r2, #0x1
-	MCR    p15,0,r2,c1,c1,0
-
-	MCR      p15,#0x4,r3,c12,c9,#5
-
-	MRS   R0, CPSR  
-	BIC    R0,  #0x1F
-	ORR   R0,  #0xD3
-	MSR   CPSR_c,  R0
-
-#if 0
-	mov	r0, r5
-	mov	r1, r6
-	mov	r2, r7
-#else
-	ldr	r0, =0
-	ldr	r1, =REAL_TXT_ADDR
-	ldr	r2, =DTB_ADDR
-#endif
-	mov	lr, r4
-
-	ret	lr
-ENDPROC(secure_init)
-
-get_core_id:
-	MRC   	p15, 0, R0, c0, c0, 5
-	AND   	R0, R0, #0xFF
-	BX R14
-ENDPROC(get_core_id)
-
-get_cluster_id:
-	MRC   	p15, 0, r0, c0, c0, 5
-	AND   	r0, r0, #0xFF00
-	LSR   	r0, r0, #0x8
-	BX    	lr
-ENDPROC(get_cluster_id)
diff --git a/upstream/linux-5.10/drivers/misc/zcat/debug_info.c b/upstream/linux-5.10/drivers/misc/zcat/debug_info.c
deleted file mode 100755
index d23e340..0000000
--- a/upstream/linux-5.10/drivers/misc/zcat/debug_info.c
+++ /dev/null
@@ -1,396 +0,0 @@
-
-#include <linux/module.h>
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/cdev.h>
-#include <linux/semaphore.h>
-#include <linux/timer.h>
-
-// #include <linux/fs.h>
-#include <linux/ioport.h>
-// #include <linux/serial_reg.h>
-#include <linux/poll.h>
-#include <linux/delay.h>
-#include <linux/wait.h>
-#include <linux/err.h>
-#include <linux/interrupt.h>
-#include <linux/sched.h>
-#include <linux/types.h>
-#include <linux/device.h>
-#include <linux/miscdevice.h>
-// #include <linux/spinlock.h>
-#include <linux/list.h>
-#include <linux/slab.h>
-#include <linux/sched.h>
-// #include <linux/kthread.h>
-#include <asm/io.h>
-
-#include <linux/vmalloc.h>
-#include <linux/soc/zte/rpmsg.h>
-// #include <linux/syscalls.h>
-
-// #include "debuginfo.h"
-#include "pub_debug_info.h"
-#include "ringbuf.h"
-
-
-#if defined(_USE_ZXIC_DEBUG_INFO) && !defined(CONFIG_SYSTEM_RECOVERY)
-/*******************************************************************************
- *                                   宏定义                                     *
- *******************************************************************************/
-#define DEBUG_INFO_SHARE_MEM_LEN    (0x2000)
-#define DEBUG_INFO_READABLE_LEN     (0x1400)
-#define DEBUG_INFO_MAX_DATA_LEN     (128)
-#define DEBUG_INFO_MAX_TOTAL_LEN    (140) // 8 + 128 + 4
-#define DEBUG_INFO_READ_TIME_MSECS  (10000)
-
-#define DEBUG_INFO_CHANNEL          (9)
-#define DEBUG_INFO_MSG_CAP_SIZE     (2 * 1024)
-
-#define DEBUG_INFO_OK               (0)
-#define DEBUG_INFO_ERROR            (-1)
-
-#define DEBUG_INFO_IOCTL_SET_DISABLE  (0x1001)
-
-/*******************************************************************************
- *                                结构体定义                                     *
- *******************************************************************************/
-typedef unsigned int UINT32;
-typedef unsigned short UINT16;
-typedef unsigned char UINT8;
-
-typedef struct
-{
-    UINT16 module_id; // 模块id
-    UINT16 sub_len;   // 用户数据长度
-    UINT32 time;
-    char sub_data[]; // 用户数据
-} T_SHARED_MEM_DATA;
-
-typedef struct
-{
-    UINT32 head;                  // 0x010a0a0a
-    UINT32 total_len;             // 数据内容长度
-    long long time;               // time()函数获取
-} T_SAVE_FILE_DATA;
-
-/*******************************************************************************
- *                                  全局变量                                     *
- *******************************************************************************/
-volatile T_RINGBUFFER *g_debug_info_buf = NULL;
-static struct semaphore debug_sem;
-static DEFINE_RAW_SPINLOCK(debugWr_lock);
-static int g_init_flag = 0;
-
-/*******************************************************************************
- *                              内部函数定义                                     *
- *******************************************************************************/
-static int sc_debug_info_read_to_user(char *buf, unsigned short count);
-static int sc_debug_info_record_from_user(const char *info, unsigned short count);
-static int sc_debug_info_write(UINT32 flag, const UINT8 *buf, UINT32 len);
-static void sc_debug_info_from_ap(void *buf, unsigned int len);
-
-static void kernel_timer_timeout(struct timer_list *t);
-static ssize_t debug_info_read(struct file *fp, char __user *buf, size_t count, loff_t *pos);
-static ssize_t debug_info_write(struct file *fp, const char __user *buf, size_t count, loff_t *pos);
-static int debug_info_open(struct inode *ip, struct file *fp);
-static long debug_info_ioctl(struct file *fp, unsigned int cmd, unsigned long arg);
-static int debug_info_release(struct inode *ip, struct file *fp);
-
-//初始化timer
-static DEFINE_TIMER(timer, kernel_timer_timeout);
-
-static const struct file_operations debug_info_fops = {
-    .owner = THIS_MODULE,
-    .read = debug_info_read,
-    .write = debug_info_write,
-    .open = debug_info_open,
-    .unlocked_ioctl = debug_info_ioctl,
-    .release = debug_info_release,
-};
-
-static struct miscdevice debug_info_device = {
-    .minor = MISC_DYNAMIC_MINOR,
-    .name = "debug_info",
-    .fops = &debug_info_fops,
-};
-
-static void kernel_timer_timeout(struct timer_list *t)
-{
-    if (debug_sem.count == 0)
-    {
-        up(&debug_sem);
-    }
-    /* 因为内核定时器是一个单次的定时器,所以如果想要多次重复定时需要在定时器绑定的函数结尾重新装载时间,并启动定时 */
-    /* Kernel Timer restart */
-    mod_timer(&timer, jiffies + msecs_to_jiffies(DEBUG_INFO_READ_TIME_MSECS));    
-}
-
-static ssize_t debug_info_read(struct file *fp, char __user *buf, size_t count, loff_t *pos)
-{
-    int ret;
-    int rd_len;
-
-    ret = down_interruptible(&debug_sem);
-    if(ret < 0)
-    {
-        return ret;
-    }
-    else
-    {
-        rd_len = sc_debug_info_read_to_user(buf, count);
-    }
-
-    return rd_len;
-}
-
-static ssize_t debug_info_write(struct file *fp, const char __user *buf, size_t count, loff_t *pos)
-{
-    int wr_len = sc_debug_info_record_from_user(buf, count);
-
-    return wr_len;
-}
-
-static int debug_info_open(struct inode *ip, struct file *fp)
-{
-    return 0;
-}
-
-static long debug_info_ioctl(struct file *fp, unsigned int cmd, unsigned long arg)
-{
-    switch(cmd)
-    {
-        case DEBUG_INFO_IOCTL_SET_DISABLE:
-            *(volatile UINT32 *)ZCAT_DEBUG_INFO_DISABLE = arg;
-            break;
-
-        default:
-            break;
-    }
-    return 0;
-}
-
-static int debug_info_release(struct inode *ip, struct file *fp)
-{
-    return 0;
-}
-
-static void sc_debug_info_from_ap(void *buf, unsigned int len)
-{
-    T_SHARED_MEM_DATA *debug_msg = (T_SHARED_MEM_DATA *)buf;
-    debug_msg->time = jiffies;
-
-    sc_debug_info_write(ZCAT_MEM_TYPE_KERNEL, buf, len);
-}
-
-static int __init debug_info_init(void)
-{
-    int ret = misc_register(&debug_info_device);
-    if (ret)
-    {
-        printk("debug_info_device init.\n");
-        return DEBUG_INFO_ERROR;
-    }
-
-    void *mem;
-    mem = vmalloc(DEBUG_INFO_SHARE_MEM_LEN);
-    if (!mem)
-    {
-        printk("vmalloc failed.\n");
-        return DEBUG_INFO_ERROR;
-    }
-
-    g_debug_info_buf = CreateRingBuffer((UINT8 *)mem, DEBUG_INFO_SHARE_MEM_LEN);
-    if (g_debug_info_buf == NULL)
-    {
-        printk("CreateRingBuffer failed.\n");
-        return DEBUG_INFO_ERROR;
-    }
-#if 1
-    ret = rpmsgCreateChannel(
-        CORE_PS0, 
-        DEBUG_INFO_CHANNEL,
-        DEBUG_INFO_MSG_CAP_SIZE);
-    if (ret != DEBUG_INFO_OK) 
-    {
-        printk("rpmsgCreateChannel failed, ret = %d\n", ret);
-        return DEBUG_INFO_ERROR;
-    }  
-    
-    ret = rpmsgRegCallBack(
-            CORE_PS0,
-            DEBUG_INFO_CHANNEL, 
-            sc_debug_info_from_ap);
-    if (ret != DEBUG_INFO_OK) 
-    {
-        printk("rpmsgRegCallBack failed,ret = %d\n", ret);
-        return DEBUG_INFO_ERROR;
-    } 
-#endif
-    sema_init(&debug_sem, 0);
-    /* 添加并启动定时器, 10ms */
-    mod_timer(&timer, jiffies + 1);    
-
-    g_init_flag = 1;
-
-    return 0;
-}
-
-static void __exit debug_info_exit(void)
-{
-    misc_deregister(&debug_info_device);
-
-    del_timer(&timer);
-}
-
-static int sc_debug_info_write(UINT32 flag, const UINT8 *buf, UINT32 len)
-{
-    UINT32 writelen;
-    UINT32 used_space;
-    unsigned long flags;
-
-    if (len == 0 || g_debug_info_buf == NULL)
-    {
-        printk("sc_debug_info_write:: (len == 0 || g_debug_info_buf == NULL).\n");
-        return DEBUG_INFO_ERROR;
-    }
-
-    raw_spin_lock_irqsave(&debugWr_lock, flags);
-    writelen = WriteRingBuffer(g_debug_info_buf, buf, len, flag);
-    raw_spin_unlock_irqrestore(&debugWr_lock, flags);
-    used_space = GetRingBufferSize(g_debug_info_buf);
-    if (used_space > DEBUG_INFO_READABLE_LEN)
-    {
-        if (debug_sem.count == 0)
-        {
-            up(&debug_sem);
-        }
-    }
-
-    return writelen;
-}
-
-static int sc_debug_info_read_to_user(char *buf, unsigned short count)
-{
-    unsigned int bufSize_used = 0;
-    unsigned int readLen = 0;
-    unsigned int bufLen = 0;
-    T_SAVE_FILE_DATA fileDataHead;
-
-    if (g_init_flag == 0)
-    {
-        printk("debug_info not init.\n");
-        return DEBUG_INFO_ERROR;
-    }
-    if (count == 0 || buf == NULL || g_debug_info_buf == NULL)
-    {
-        printk("sc_debug_info_read_to_user:: (count == 0 || buf == NULL || g_debug_info_buf == NULL).\n");
-        return DEBUG_INFO_ERROR;
-    }
-
-    bufSize_used = GetRingBufferSize(g_debug_info_buf);
-    if (bufSize_used == 0)
-    {
-        // printk("sc_debug_info_read_to_user:: ringBuf is empty.\n");
-        return 0;
-    }
-
-    fileDataHead.head = 0x010a0a0a;
-    fileDataHead.time = 0;
-    fileDataHead.total_len = bufSize_used;
-
-    copy_to_user(buf, &fileDataHead, sizeof(T_SAVE_FILE_DATA));
-
-    readLen = ReadRingBuffer(g_debug_info_buf, (buf + sizeof(T_SAVE_FILE_DATA)), bufSize_used, ZCAT_MEM_TYPE_USER);
-    if (readLen == 0)
-    {
-        // printk("ReadRingBuffer failed.\n");
-        return 0;
-    }
-
-    return (readLen + sizeof(T_SAVE_FILE_DATA));
-}
-
-static int sc_debug_info_record_from_user(const char *info, unsigned short count)
-{
-    unsigned int cnt = 0;
-    unsigned int my_jiffies = jiffies;
-
-    if (g_init_flag == 0)
-    {
-        printk("debug_info not init.\n");
-        return DEBUG_INFO_ERROR;
-    }
-    if (info == NULL)
-    {
-        printk("sc_debug_info_record_from_user:: info is NULL.\n");
-        return DEBUG_INFO_ERROR;
-    }
-
-    copy_to_user(info + 4, &my_jiffies, sizeof(my_jiffies));
-    cnt = sc_debug_info_write(ZCAT_MEM_TYPE_USER, (UINT8 *)info, count);
-
-    return cnt;
-}
-
-module_init(debug_info_init);
-module_exit(debug_info_exit);
-
-MODULE_AUTHOR("jcw");
-MODULE_DESCRIPTION("debug_info driver");
-MODULE_LICENSE("GPL");
-
-
-int sc_debug_info_vrecord(unsigned int id, const char *format, va_list args)
-{
-    int len;
-    UINT32 writelen;
-    // va_list args;
-    char str_buf[DEBUG_INFO_MAX_TOTAL_LEN] __attribute__((aligned(4)));
-    T_SHARED_MEM_DATA *shareMemData = (T_SHARED_MEM_DATA *)str_buf;
-
-    if (g_init_flag == 0)
-    {
-        printk("debug_info not init.\n");
-        return DEBUG_INFO_ERROR;
-    }
-
-    /* args是一个char*类型指针,指向format之后的第一个参数*/
-    // va_start(args, format);
-    len = vsnprintf(shareMemData->sub_data, DEBUG_INFO_MAX_DATA_LEN, format, args);
-    // va_end(args);
-    if (len < 0)
-    {
-        printk("vsnprintf format error.\n");
-        return DEBUG_INFO_ERROR;
-    }
-
-    shareMemData->module_id = (UINT16)(id & 0xFFFF);
-    shareMemData->sub_len = len;
-    shareMemData->time = jiffies;
-
-    writelen = sc_debug_info_write(ZCAT_MEM_TYPE_KERNEL, (UINT8 *)shareMemData, len + sizeof(T_SHARED_MEM_DATA));
-    return writelen;
-}
-EXPORT_SYMBOL(sc_debug_info_vrecord);
-
-int sc_debug_info_record(unsigned int id, const char *format, ...)
-{
-    va_list args;
-	int r;
-
-	va_start(args, format);
-	r = sc_debug_info_vrecord(id, format, args);
-	va_end(args);
-
-
-    return r;
-}
-EXPORT_SYMBOL(sc_debug_info_record);
-#else
-int sc_debug_info_record(unsigned int id, const char *format, ...)
-{
-	return 0;
-}
-#endif   /*  _USE_ZXIC_DEBUG_INFO */
-
diff --git a/upstream/linux-5.10/drivers/net/zvnet/zvnet_dev.h b/upstream/linux-5.10/drivers/net/zvnet/zvnet_dev.h
deleted file mode 100755
index d1feaa5..0000000
--- a/upstream/linux-5.10/drivers/net/zvnet/zvnet_dev.h
+++ /dev/null
@@ -1,76 +0,0 @@
-#ifndef ZV_NET_H

-#define ZV_NET_H

-

-#include <linux/interrupt.h>

-#include <linux/kthread.h>

-#include <linux/spinlock.h>

-#include <linux/semaphore.h>

-#include <linux/netdevice.h>

-#include <linux/skbuff.h>

-#include <linux/soc/zte/rpmsg.h>

-

-//#define ZVNET_DEBUG

-#ifdef ZVNET_DEBUG

-#define zv_dbg(format, arg...) printk(KERN_DEBUG "[zvnet]<%s>: " format "\n" , \

-	__func__ , ## arg)

-#define zv_info(format, arg...) printk(KERN_INFO "[zvnet]<%s>: " format "\n" , \

-	__func__ , ## arg)

-#else

-#define zv_dbg(format, arg...) do {} while (0)

-#define zv_info(format, arg...) do {} while (0)

-#endif

-

-#define zv_err(format, arg...) printk(KERN_ERR "[zvnet]<%s>: " format "\n" , \

-	__func__ , ## arg)

-

-#define zv_warn(format, arg...) printk(KERN_WARNING "[zvnet]<%s>: " format "\n" , \

-	__func__ , ## arg)

-

-//zvnetÉ豸×î´óÊý

-#define DDR_ZVNET_DEV_MAX 10

-#define ZVNET_IFNAME_PREFIX "zvnet"

-

-#define  ICP_CHN_ZVNET1 20 //ICP_CHANNEL_WAN1

-#define  ICP_CHN_ZVNET2 21 //ICP_CHANNEL_WAN2 

-#define  ICP_CHN_ZVNET3 22 //ICP_CHANNEL_WAN3 

-#define  ICP_CHN_ZVNET4 23 //ICP_CHANNEL_WAN4 

-

-#define	 ICP_CHANNEL_SIZE 	(8 * 1024 *2)

-

-#define zvnetCreateChannel rpmsgCreateChannel

-#define zvnetWrite         rpmsgWrite

-#define zvnetRead          rpmsgRead

-

-struct zvnet_channel {

-    T_RpMsg_CoreID core_id;

-    T_RpMsg_ChID channel_id;

-    unsigned int channel_size;

-    struct task_struct *rcv_thread;

-};

-

-struct zvnet {

-    struct net_device  *net;

-    struct sk_buff_head rxq;

-    struct tasklet_struct bh;

-    void *dev_priv;

-};

-

-struct zvnet_device {

-    struct zvnet *dev;

-    struct net_device *net;

-    //struct zvnet_channel chn_info;

-    unsigned char retran_times;

-    //int (*write)(struct sk_buff *,struct v2x_hdr *, unsigned int, struct net_device *);

-};

-

-struct zvp_header {

-    unsigned int magic_word;

-    unsigned short chnid;

-    unsigned short tlen;

-};

-

-#define ZVP_MAGIC_WORD  0x5A5A5A5A

-#define ZVP_HEAD_LEN 	sizeof(struct zvp_header)

-

-#endif

-

diff --git a/upstream/linux-5.10/drivers/rtc/class.c b/upstream/linux-5.10/drivers/rtc/class.c
deleted file mode 100755
index 625effe..0000000
--- a/upstream/linux-5.10/drivers/rtc/class.c
+++ /dev/null
@@ -1,487 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/*
- * RTC subsystem, base class
- *
- * Copyright (C) 2005 Tower Technologies
- * Author: Alessandro Zummo <a.zummo@towertech.it>
- *
- * class skeleton from drivers/hwmon/hwmon.c
- */
-
-#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-
-#include <linux/module.h>
-#include <linux/of.h>
-#include <linux/rtc.h>
-#include <linux/kdev_t.h>
-#include <linux/idr.h>
-#include <linux/slab.h>
-#include <linux/workqueue.h>
-
-#include "rtc-core.h"
-
-static DEFINE_IDA(rtc_ida);
-struct class *rtc_class;
-
-static void rtc_device_release(struct device *dev)
-{
-	struct rtc_device *rtc = to_rtc_device(dev);
-	struct timerqueue_head *head = &rtc->timerqueue;
-	struct timerqueue_node *node;
-
-	mutex_lock(&rtc->ops_lock);
-	while ((node = timerqueue_getnext(head)))
-		timerqueue_del(head, node);
-	mutex_unlock(&rtc->ops_lock);
-
-	cancel_work_sync(&rtc->irqwork);
-
-	ida_simple_remove(&rtc_ida, rtc->id);
-	kfree(rtc);
-}
-
-#ifdef CONFIG_RTC_HCTOSYS_DEVICE
-/* Result of the last RTC to system clock attempt. */
-int rtc_hctosys_ret = -ENODEV;
-
-/* IMPORTANT: the RTC only stores whole seconds. It is arbitrary
- * whether it stores the most close value or the value with partial
- * seconds truncated. However, it is important that we use it to store
- * the truncated value. This is because otherwise it is necessary,
- * in an rtc sync function, to read both xtime.tv_sec and
- * xtime.tv_nsec. On some processors (i.e. ARM), an atomic read
- * of >32bits is not possible. So storing the most close value would
- * slow down the sync API. So here we have the truncated value and
- * the best guess is to add 0.5s.
- */
-
-static void rtc_hctosys(struct rtc_device *rtc)
-{
-	int err;
-	struct rtc_time tm;
-	struct timespec64 tv64 = {
-		.tv_nsec = NSEC_PER_SEC >> 1,
-	};
-
-	err = rtc_read_time(rtc, &tm);
-	if (err) {
-		dev_err(rtc->dev.parent,
-			"hctosys: unable to read the hardware clock\n");
-		goto err_read;
-	}
-
-	tv64.tv_sec = rtc_tm_to_time64(&tm);
-
-#if BITS_PER_LONG == 32
-	if (tv64.tv_sec > INT_MAX) {
-		err = -ERANGE;
-		goto err_read;
-	}
-#endif
-
-	err = do_settimeofday64(&tv64);
-
-	dev_info(rtc->dev.parent, "setting system clock to %ptR UTC (%lld)\n",
-		 &tm, (long long)tv64.tv_sec);
-
-err_read:
-	rtc_hctosys_ret = err;
-}
-#endif
-
-#if defined(CONFIG_PM_SLEEP) && defined(CONFIG_RTC_HCTOSYS_DEVICE)
-/*
- * On suspend(), measure the delta between one RTC and the
- * system's wall clock; restore it on resume().
- */
-
-static struct timespec64 old_rtc, old_system, old_delta;
-
-static int rtc_suspend(struct device *dev)
-{
-	struct rtc_device	*rtc = to_rtc_device(dev);
-	struct rtc_time		tm;
-	struct timespec64	delta, delta_delta;
-	int err;
-
-	if (timekeeping_rtc_skipsuspend())
-		return 0;
-
-	if (strcmp(dev_name(&rtc->dev), CONFIG_RTC_HCTOSYS_DEVICE) != 0)
-		return 0;
-
-	/* snapshot the current RTC and system time at suspend*/
-	err = rtc_read_time(rtc, &tm);
-	if (err < 0) {
-		pr_debug("%s:  fail to read rtc time\n", dev_name(&rtc->dev));
-		return 0;
-	}
-
-	ktime_get_real_ts64(&old_system);
-	old_rtc.tv_sec = rtc_tm_to_time64(&tm);
-
-	/*
-	 * To avoid drift caused by repeated suspend/resumes,
-	 * which each can add ~1 second drift error,
-	 * try to compensate so the difference in system time
-	 * and rtc time stays close to constant.
-	 */
-	delta = timespec64_sub(old_system, old_rtc);
-	delta_delta = timespec64_sub(delta, old_delta);
-	if (delta_delta.tv_sec < -2 || delta_delta.tv_sec >= 2) {
-		/*
-		 * if delta_delta is too large, assume time correction
-		 * has occurred and set old_delta to the current delta.
-		 */
-		old_delta = delta;
-	} else {
-		/* Otherwise try to adjust old_system to compensate */
-		old_system = timespec64_sub(old_system, delta_delta);
-	}
-
-	return 0;
-}
-
-static int rtc_resume(struct device *dev)
-{
-	struct rtc_device	*rtc = to_rtc_device(dev);
-	struct rtc_time		tm;
-	struct timespec64	new_system, new_rtc;
-	struct timespec64	sleep_time;
-	int err;
-
-	if (timekeeping_rtc_skipresume())
-		return 0;
-
-	rtc_hctosys_ret = -ENODEV;
-	if (strcmp(dev_name(&rtc->dev), CONFIG_RTC_HCTOSYS_DEVICE) != 0)
-		return 0;
-
-	/* snapshot the current rtc and system time at resume */
-	ktime_get_real_ts64(&new_system);
-	err = rtc_read_time(rtc, &tm);
-	if (err < 0) {
-		pr_debug("%s:  fail to read rtc time\n", dev_name(&rtc->dev));
-		return 0;
-	}
-
-	new_rtc.tv_sec = rtc_tm_to_time64(&tm);
-	new_rtc.tv_nsec = 0;
-
-	if (new_rtc.tv_sec < old_rtc.tv_sec) {
-		pr_debug("%s:  time travel!\n", dev_name(&rtc->dev));
-		return 0;
-	}
-
-	/* calculate the RTC time delta (sleep time)*/
-	sleep_time = timespec64_sub(new_rtc, old_rtc);
-
-	/*
-	 * Since these RTC suspend/resume handlers are not called
-	 * at the very end of suspend or the start of resume,
-	 * some run-time may pass on either sides of the sleep time
-	 * so subtract kernel run-time between rtc_suspend to rtc_resume
-	 * to keep things accurate.
-	 */
-	sleep_time = timespec64_sub(sleep_time,
-				    timespec64_sub(new_system, old_system));
-
-	if (sleep_time.tv_sec >= 0)
-		timekeeping_inject_sleeptime64(&sleep_time);
-	rtc_hctosys_ret = 0;
-	return 0;
-}
-
-static SIMPLE_DEV_PM_OPS(rtc_class_dev_pm_ops, rtc_suspend, rtc_resume);
-#define RTC_CLASS_DEV_PM_OPS	(&rtc_class_dev_pm_ops)
-#else
-#define RTC_CLASS_DEV_PM_OPS	NULL
-#endif
-
-/* Ensure the caller will set the id before releasing the device */
-static struct rtc_device *rtc_allocate_device(void)
-{
-	struct rtc_device *rtc;
-
-	rtc = kzalloc(sizeof(*rtc), GFP_KERNEL);
-	if (!rtc)
-		return NULL;
-
-	device_initialize(&rtc->dev);
-
-	/* Drivers can revise this default after allocating the device. */
-	rtc->set_offset_nsec =  NSEC_PER_SEC / 2;
-
-	rtc->irq_freq = 1;
-	rtc->max_user_freq = 64;
-	rtc->dev.class = rtc_class;
-	rtc->dev.groups = rtc_get_dev_attribute_groups();
-	rtc->dev.release = rtc_device_release;
-
-	mutex_init(&rtc->ops_lock);
-	spin_lock_init(&rtc->irq_lock);
-	init_waitqueue_head(&rtc->irq_queue);
-
-	/* Init timerqueue */
-	timerqueue_init_head(&rtc->timerqueue);
-	INIT_WORK(&rtc->irqwork, rtc_timer_do_work);
-	/* Init aie timer */
-	rtc_timer_init(&rtc->aie_timer, rtc_aie_update_irq, rtc);
-	/* Init uie timer */
-	rtc_timer_init(&rtc->uie_rtctimer, rtc_uie_update_irq, rtc);
-	/* Init pie timer */
-	hrtimer_init(&rtc->pie_timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
-	rtc->pie_timer.function = rtc_pie_update_irq;
-	rtc->pie_enabled = 0;
-
-	return rtc;
-}
-
-static int rtc_device_get_id(struct device *dev)
-{
-	int of_id = -1, id = -1;
-
-	if (dev->of_node)
-		of_id = of_alias_get_id(dev->of_node, "rtc");
-	else if (dev->parent && dev->parent->of_node)
-		of_id = of_alias_get_id(dev->parent->of_node, "rtc");
-
-	if (of_id >= 0) {
-		id = ida_simple_get(&rtc_ida, of_id, of_id + 1, GFP_KERNEL);
-		if (id < 0)
-			dev_warn(dev, "/aliases ID %d not available\n", of_id);
-	}
-
-	if (id < 0)
-		id = ida_simple_get(&rtc_ida, 0, 0, GFP_KERNEL);
-
-	return id;
-}
-
-static void rtc_device_get_offset(struct rtc_device *rtc)
-{
-	time64_t range_secs;
-	u32 start_year;
-	int ret;
-
-	/*
-	 * If RTC driver did not implement the range of RTC hardware device,
-	 * then we can not expand the RTC range by adding or subtracting one
-	 * offset.
-	 */
-	if (rtc->range_min == rtc->range_max)
-		return;
-
-	ret = device_property_read_u32(rtc->dev.parent, "start-year",
-				       &start_year);
-	if (!ret) {
-		rtc->start_secs = mktime64(start_year, 1, 1, 0, 0, 0);
-		rtc->set_start_time = true;
-	}
-
-	/*
-	 * If user did not implement the start time for RTC driver, then no
-	 * need to expand the RTC range.
-	 */
-	if (!rtc->set_start_time)
-		return;
-
-	range_secs = rtc->range_max - rtc->range_min + 1;
-
-	/*
-	 * If the start_secs is larger than the maximum seconds (rtc->range_max)
-	 * supported by RTC hardware or the maximum seconds of new expanded
-	 * range (start_secs + rtc->range_max - rtc->range_min) is less than
-	 * rtc->range_min, which means the minimum seconds (rtc->range_min) of
-	 * RTC hardware will be mapped to start_secs by adding one offset, so
-	 * the offset seconds calculation formula should be:
-	 * rtc->offset_secs = rtc->start_secs - rtc->range_min;
-	 *
-	 * If the start_secs is larger than the minimum seconds (rtc->range_min)
-	 * supported by RTC hardware, then there is one region is overlapped
-	 * between the original RTC hardware range and the new expanded range,
-	 * and this overlapped region do not need to be mapped into the new
-	 * expanded range due to it is valid for RTC device. So the minimum
-	 * seconds of RTC hardware (rtc->range_min) should be mapped to
-	 * rtc->range_max + 1, then the offset seconds formula should be:
-	 * rtc->offset_secs = rtc->range_max - rtc->range_min + 1;
-	 *
-	 * If the start_secs is less than the minimum seconds (rtc->range_min),
-	 * which is similar to case 2. So the start_secs should be mapped to
-	 * start_secs + rtc->range_max - rtc->range_min + 1, then the
-	 * offset seconds formula should be:
-	 * rtc->offset_secs = -(rtc->range_max - rtc->range_min + 1);
-	 *
-	 * Otherwise the offset seconds should be 0.
-	 */
-	if (rtc->start_secs > rtc->range_max ||
-	    rtc->start_secs + range_secs - 1 < rtc->range_min)
-		rtc->offset_secs = rtc->start_secs - rtc->range_min;
-	else if (rtc->start_secs > rtc->range_min)
-		rtc->offset_secs = range_secs;
-	else if (rtc->start_secs < rtc->range_min)
-		rtc->offset_secs = -range_secs;
-	else
-		rtc->offset_secs = 0;
-}
-
-/**
- * rtc_device_unregister - removes the previously registered RTC class device
- *
- * @rtc: the RTC class device to destroy
- */
-static void rtc_device_unregister(struct rtc_device *rtc)
-{
-	mutex_lock(&rtc->ops_lock);
-	/*
-	 * Remove innards of this RTC, then disable it, before
-	 * letting any rtc_class_open() users access it again
-	 */
-	rtc_proc_del_device(rtc);
-	cdev_device_del(&rtc->char_dev, &rtc->dev);
-	rtc->ops = NULL;
-	mutex_unlock(&rtc->ops_lock);
-	put_device(&rtc->dev);
-}
-
-static void devm_rtc_release_device(struct device *dev, void *res)
-{
-	struct rtc_device *rtc = *(struct rtc_device **)res;
-
-	rtc_nvmem_unregister(rtc);
-
-	if (rtc->registered)
-		rtc_device_unregister(rtc);
-	else
-		put_device(&rtc->dev);
-}
-
-struct rtc_device *devm_rtc_allocate_device(struct device *dev)
-{
-	struct rtc_device **ptr, *rtc;
-	int id, err;
-
-	id = rtc_device_get_id(dev);
-	if (id < 0)
-		return ERR_PTR(id);
-
-	ptr = devres_alloc(devm_rtc_release_device, sizeof(*ptr), GFP_KERNEL);
-	if (!ptr) {
-		err = -ENOMEM;
-		goto exit_ida;
-	}
-
-	rtc = rtc_allocate_device();
-	if (!rtc) {
-		err = -ENOMEM;
-		goto exit_devres;
-	}
-
-	*ptr = rtc;
-	devres_add(dev, ptr);
-
-	rtc->id = id;
-	rtc->dev.parent = dev;
-	dev_set_name(&rtc->dev, "rtc%d", id);
-
-	return rtc;
-
-exit_devres:
-	devres_free(ptr);
-exit_ida:
-	ida_simple_remove(&rtc_ida, id);
-	return ERR_PTR(err);
-}
-EXPORT_SYMBOL_GPL(devm_rtc_allocate_device);
-
-int __rtc_register_device(struct module *owner, struct rtc_device *rtc)
-{
-	struct rtc_wkalrm alrm;
-	int err;
-
-	if (!rtc->ops) {
-		dev_dbg(&rtc->dev, "no ops set\n");
-		return -EINVAL;
-	}
-
-	rtc->owner = owner;
-	rtc_device_get_offset(rtc);
-
-	/* Check to see if there is an ALARM already set in hw */
-	err = __rtc_read_alarm(rtc, &alrm);
-	if (!err && !rtc_valid_tm(&alrm.time))
-		rtc_initialize_alarm(rtc, &alrm);
-
-	rtc_dev_prepare(rtc);
-
-	err = cdev_device_add(&rtc->char_dev, &rtc->dev);
-	if (err)
-		dev_warn(rtc->dev.parent, "failed to add char device %d:%d\n",
-			 MAJOR(rtc->dev.devt), rtc->id);
-	else
-		dev_dbg(rtc->dev.parent, "char device (%d:%d)\n",
-			MAJOR(rtc->dev.devt), rtc->id);
-
-	rtc_proc_add_device(rtc);
-
-	rtc->registered = true;
-	dev_info(rtc->dev.parent, "registered as %s\n",
-		 dev_name(&rtc->dev));
-
-#ifdef CONFIG_RTC_HCTOSYS_DEVICE
-	if (!strcmp(dev_name(&rtc->dev), CONFIG_RTC_HCTOSYS_DEVICE))
-		rtc_hctosys(rtc);
-#endif
-
-	return 0;
-}
-EXPORT_SYMBOL_GPL(__rtc_register_device);
-
-/**
- * devm_rtc_device_register - resource managed rtc_device_register()
- * @dev: the device to register
- * @name: the name of the device (unused)
- * @ops: the rtc operations structure
- * @owner: the module owner
- *
- * @return a struct rtc on success, or an ERR_PTR on error
- *
- * Managed rtc_device_register(). The rtc_device returned from this function
- * are automatically freed on driver detach.
- * This function is deprecated, use devm_rtc_allocate_device and
- * rtc_register_device instead
- */
-struct rtc_device *devm_rtc_device_register(struct device *dev,
-					    const char *name,
-					    const struct rtc_class_ops *ops,
-					    struct module *owner)
-{
-	struct rtc_device *rtc;
-	int err;
-
-	rtc = devm_rtc_allocate_device(dev);
-	if (IS_ERR(rtc))
-		return rtc;
-
-	rtc->ops = ops;
-
-	err = __rtc_register_device(owner, rtc);
-	if (err)
-		return ERR_PTR(err);
-
-	return rtc;
-}
-EXPORT_SYMBOL_GPL(devm_rtc_device_register);
-
-static int __init rtc_init(void)
-{
-	rtc_class = class_create(THIS_MODULE, "rtc");
-	if (IS_ERR(rtc_class)) {
-		pr_err("couldn't create class\n");
-		return PTR_ERR(rtc_class);
-	}
-	rtc_class->pm = RTC_CLASS_DEV_PM_OPS;
-	rtc_dev_init();
-	return 0;
-}
-subsys_initcall(rtc_init);
diff --git a/upstream/linux-5.10/drivers/soc/sc/pcu/pcu-zx297520v3.c b/upstream/linux-5.10/drivers/soc/sc/pcu/pcu-zx297520v3.c
deleted file mode 100755
index 66c8cf3..0000000
--- a/upstream/linux-5.10/drivers/soc/sc/pcu/pcu-zx297520v3.c
+++ /dev/null
@@ -1,976 +0,0 @@
-/*
- *
- * Copyright (C) 2015-2022 ZTE-TSP
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- */
-#include <linux/kernel.h> 
-#include <linux/errno.h>
-#include <linux/irq.h>
-#include <linux/module.h>
-#include <linux/platform_device.h>
-#include <linux/of_device.h>
-#include <linux/of_irq.h>
-#include <linux/of_address.h>
-#include <linux/interrupt.h>
-#include <linux/irqdomain.h>
-#include <linux/irqchip/chained_irq.h>
-#include <linux/of.h>
-#include <linux/of_address.h>
-#include <linux/of_irq.h>
-#include <linux/percpu.h>
-#include <linux/refcount.h>
-#include <linux/slab.h>
-#include <linux/irqchip.h>
-#include <linux/suspend.h>
-#include <linux/syscore_ops.h>
-#include <linux/mfd/syscon.h>
-#include <linux/regmap.h>
-#include <dt-bindings/interrupt-controller/arm-gic.h>
-
-#include <linux/soc/sc/common.h>
-#include <linux/soc/sc/spinlock.h>
-#include <linux/soc/sc/pcu.h>
-#include <linux/soc/sc/rpmsg.h>
-#include <dt-bindings/soc/zx297520v3-irq.h>
-#include <uapi/linux/sc_bsp/bsp_api.h>
-
-#include "pcu-common.h"
-
-#if 0
-
-#define pm_ram_log(fmt, args...)      	\
-{	\
-	pm_printk("[SLP] " fmt, ##args);	\
-}
-#else
-#define pm_ram_log(fmt, args...)      	\
-{	\
-	printk(KERN_INFO "[SLP] " fmt, ##args);	\
-}
-
-#endif
-
-#define ZX_IRQ_NUM			(IRQ_ZX297520V3_SPI_NUM + 32)
-
-#define PCU_LOCK		reg_spin_lock();
-#define PCU_UNLOCK		reg_spin_unlock();
-
-static struct zx_pcu_int_info zx297520v3_pcu_int_info[] = 
-{
-	{
-		.pcu_index		= PCU_AP_TIMER1_INT,
-	 	.gic_index		= AP_TIMER1_INT,
-		.status_index	= 51,
-	 	.wake_index		= 0,
-	 	.int_name		= "ap_timer1",
-	 	.irq_type		= IRQ_TYPE_EDGE_RISING,
-	 	.wl_type		= PM_WL_EVENT_AP_TIMER1,
-	},
-	{
-		.pcu_index		= PCU_AP_TIMER2_INT,
-	 	.gic_index		= AP_TIMER2_INT,
-	 	.status_index	= 52,	 	
-		.wake_index 	= 1,
-	 	.int_name		= "ap_timer2",
-	 	.irq_type		= IRQ_TYPE_EDGE_RISING,
-	 	.wl_type		= PM_WL_EVENT_AP_TIMER2,
-	},
-	{
-		.pcu_index		= PCU_ICP_PS2AP_INT,
-		.gic_index		= ICP_PS2AP_INT,
-	 	.status_index	= 53,		
-		.wake_index 	= 2,
-		.int_name		= "icp_ps_ap",
-		.irq_type		= IRQ_TYPE_LEVEL_HIGH,
-		.wl_type		= PM_WL_EVENT_ICP_PS2AP,
-	},
-	{
-		.pcu_index		= PCU_USB_POWERDWN_UP_INT,
-		.gic_index		= USB_POWERDWN_UP_INT,
-	 	.status_index	= 6,		
-		.wake_index 	= 3,
-		.int_name		= "usb_up",
-		.irq_type		= IRQ_TYPE_EDGE_RISING,
-		.wl_type		= PM_WL_EVENT_USB_POWERDWN_UP,
-	},
-	{
-		.pcu_index		= PCU_USB_POWERDWN_DOWN_INT,
-		.gic_index		= USB_POWERDWN_DOWN_INT,
-	 	.status_index	= 7,		
-		.wake_index 	= 4,
-		.int_name		= "usb_down",
-		.irq_type		= IRQ_TYPE_EDGE_FALLING,
-		.wl_type		= PM_WL_EVENT_USB_POWERDWN_DOWN,
-	},
-	{
-		.pcu_index		= PCU_HSIC_POWERDWN_UP_INT,
-		.gic_index		= HSIC_POWERDWN_UP_INT,
-	 	.status_index	= 8,		
-		.wake_index 	= 5,
-		.int_name		= "hsic_up",
-		.irq_type		= IRQ_TYPE_EDGE_RISING,
-		.wl_type		= PM_WL_EVENT_HSIC_POWERDWN_UP,
-	},
-	{
-		.pcu_index		= PCU_HSIC_POWERDWN_DOWN_INT,
-		.gic_index		= HSIC_POWERDWN_DOWN_INT,
-	 	.status_index	= 9,		
-		.wake_index 	= 6,
-		.int_name		= "hsic_down",
-		.irq_type		= IRQ_TYPE_EDGE_FALLING,
-		.wl_type		= PM_WL_EVENT_HSIC_POWERDWN_DOWN,
-	},
-	{
-		.pcu_index		= PCU_ICP_M02AP_INT,
-		.gic_index		= ICP_M02AP_INT,
-	 	.status_index	= 54,		
-		.wake_index 	= 7,
-		.int_name		= "icp_m0_ap",
-		.irq_type		= IRQ_TYPE_LEVEL_HIGH,
-		.wl_type		= PM_WL_EVENT_ICP_M02AP,
-	},
-	{
-		.pcu_index		= PCU_RTC_ALARM_INT,
-		.gic_index		= RTC_ALARM_INT,
-	 	.status_index	= 12,		
-		.wake_index 	= 8,
-		.int_name		= "rtc_alarm",
-		.irq_type		= IRQ_TYPE_LEVEL_LOW,
-		.wl_type		= PM_WL_EVENT_ALARM,
-	},
-	{
-		.pcu_index		= PCU_RTC_TIMER_INT,
-		.gic_index		= RTC_TIMER_INT,
-	 	.status_index	= 13,		
-		.wake_index 	= 9,
-		.int_name		= "rtc_timer",
-		.irq_type		= IRQ_TYPE_LEVEL_LOW,
-		.wl_type		= PM_WL_EVENT_RTC_TIMER,
-	},
-	{
-		.pcu_index		= PCU_KEYPAD_INT,
-		.gic_index		= KEYPAD_INT,
-	 	.status_index	= 14,		
-		.wake_index 	= 10,
-		.int_name		= "kpd",
-		.irq_type		= IRQ_TYPE_EDGE_RISING,
-		.wl_type		= PM_WL_EVENT_KEYPAD,
-	},
-	{
-		.pcu_index		= PCU_SD1_DATA1_INT,
-		.gic_index		= SD1_DATA1_INT,
-	 	.status_index	= 15,		
-		.wake_index 	= 11,
-		.int_name		= "sd1_d1",
-		.irq_type		= IRQ_TYPE_LEVEL_LOW,
-		.wl_type		= PM_WL_EVENT_SD1_DATA1,
-	},
-	{
-		.pcu_index		= PCU_EX0_INT,
-		.gic_index		= EX0_INT,
-	 	.status_index	= 30,		
-		.wake_index 	= 14,
-		.int_name		= "ext0",
-		.irq_type		= IRQ_TYPE_LEVEL_HIGH,
-		.wl_type		= PM_WL_EVENT_EXT0,
-	},
-	{
-		.pcu_index		= PCU_EX1_INT,
-		.gic_index		= EX1_INT,
-	 	.status_index	= 31,		
-		.wake_index 	= 15,
-		.int_name		= "ext1",
-		.irq_type		= IRQ_TYPE_LEVEL_HIGH,
-		.wl_type		= PM_WL_EVENT_EXT1,
-	},
-	{
-		.pcu_index		= PCU_EX2_INT,
-		.gic_index		= EX2_INT,
-	 	.status_index	= 32,		
-		.wake_index 	= 16,
-		.int_name		= "ext2",
-		.irq_type		= IRQ_TYPE_LEVEL_HIGH,
-		.wl_type		= PM_WL_EVENT_EXT2,
-	},
-	{
-		.pcu_index		= PCU_EX3_INT,
-		.gic_index		= EX3_INT,
-	 	.status_index	= 33,		
-		.wake_index 	= 17,
-		.int_name		= "ext3",
-		.irq_type		= IRQ_TYPE_LEVEL_HIGH,
-		.wl_type		= PM_WL_EVENT_EXT3,
-	},
-	{
-		.pcu_index		= PCU_EX4_INT,
-		.gic_index		= EX4_INT,
-	 	.status_index	= 34,		
-		.wake_index 	= 18,
-		.int_name		= "ext4",
-		.irq_type		= IRQ_TYPE_LEVEL_HIGH,
-		.wl_type		= PM_WL_EVENT_EXT4,
-	},
-	{
-		.pcu_index		= PCU_EX5_INT,
-		.gic_index		= EX5_INT,
-	 	.status_index	= 35,		
-		.wake_index 	= 19,
-		.int_name		= "ext5",
-		.irq_type		= IRQ_TYPE_LEVEL_HIGH,
-		.wl_type		= PM_WL_EVENT_EXT5,
-	},
-	{
-		.pcu_index		= PCU_EX6_INT,
-		.gic_index		= EX6_INT,
-	 	.status_index	= 36,		
-		.wake_index 	= 20,
-		.int_name		= "ext6",
-		.irq_type		= IRQ_TYPE_LEVEL_HIGH,
-		.wl_type		= PM_WL_EVENT_EXT6,
-	},
-	{
-		.pcu_index		= PCU_EX7_INT,
-		.gic_index		= EX7_INT,
-	 	.status_index	= 37,		
-		.wake_index 	= 21,
-		.int_name		= "ext7",
-		.irq_type		= IRQ_TYPE_LEVEL_HIGH,
-		.wl_type		= PM_WL_EVENT_EXT7,
-	},
-	{
-		.pcu_index		= PCU_EX8_INT,
-		.gic_index		= EX8IN1_INT,
-	 	.status_index	= 38,		
-		.wake_index 	= 22,
-		.int_name		= "ext8",
-		.irq_type		= IRQ_TYPE_LEVEL_HIGH,
-		.wl_type		= PM_WL_EVENT_EXT8,
-	},
-	{
-		.pcu_index		= PCU_EX9_INT,
-		.gic_index		= EX8IN1_INT,
-	 	.status_index	= 39,
-		.wake_index 	= 23,
-		.int_name		= "ext9",
-		.irq_type		= IRQ_TYPE_LEVEL_HIGH,
-		.wl_type		= PM_WL_EVENT_EXT9,
-	},
-	{
-		.pcu_index		= PCU_EX10_INT,
-		.gic_index		= EX8IN1_INT,
-	 	.status_index	= 40,		
-		.wake_index 	= 24,
-		.int_name		= "ext10",
-		.irq_type		= IRQ_TYPE_LEVEL_HIGH,
-		.wl_type		= PM_WL_EVENT_EXT10,
-	},
-	{
-		.pcu_index		= PCU_EX11_INT,
-		.gic_index		= EX8IN1_INT,
-	 	.status_index	= 41,		
-		.wake_index 	= 25,
-		.int_name		= "ext11",
-		.irq_type		= IRQ_TYPE_LEVEL_HIGH,
-		.wl_type		= PM_WL_EVENT_EXT11,
-	},
-	{
-		.pcu_index		= PCU_EX12_INT,
-		.gic_index		= EX8IN1_INT,
-	 	.status_index	= 42,		
-		.wake_index 	= 26,
-		.int_name		= "ext12",
-		.irq_type		= IRQ_TYPE_LEVEL_HIGH,
-		.wl_type		= PM_WL_EVENT_EXT12,
-	},
-	{
-		.pcu_index		= PCU_EX13_INT,
-		.gic_index		= EX8IN1_INT,
-	 	.status_index	= 43,		
-		.wake_index 	= 27,
-		.int_name		= "ext13",
-		.irq_type		= IRQ_TYPE_LEVEL_HIGH,
-		.wl_type		= PM_WL_EVENT_EXT13,
-	},
-	{
-		.pcu_index		= PCU_EX14_INT,
-		.gic_index		= EX8IN1_INT,
-	 	.status_index	= 44,		
-		.wake_index 	= 28,
-		.int_name		= "ext14",
-		.irq_type		= IRQ_TYPE_LEVEL_HIGH,
-		.wl_type		= PM_WL_EVENT_EXT14,
-	},
-	{
-		.pcu_index		= PCU_EX15_INT,
-		.gic_index		= EX8IN1_INT,
-	 	.status_index	= 45,		
-		.wake_index 	= 29,
-		.int_name		= "ext15",
-		.irq_type		= IRQ_TYPE_LEVEL_HIGH,
-		.wl_type		= PM_WL_EVENT_EXT15,
-	},
-	{
-		.pcu_index		= PCU_SD0_DATA1_INT,
-		.gic_index		= SD0_DATA1_INT,
-	 	.status_index	= 2,		
-		.wake_index 	= 30,
-		.int_name		= "sd0_d1",
-		.irq_type		= IRQ_TYPE_LEVEL_LOW,
-		.wl_type		= PM_WL_EVENT_SD0_DATA1,
-	},
-	{
-		.pcu_index		= PCU_ICP_PHY2AP_INT,
-		.gic_index		= ICP_PHY2AP_INT,
-		.status_index	= 55,		
-		.wake_index 	= 31,
-		.int_name		= "icp_phy_ap",
-		.irq_type		= IRQ_TYPE_LEVEL_HIGH,
-		.wl_type		= PM_WL_EVENT_ICP_PHY2AP,
-	},
-	{
-		.pcu_index		= PCU_GMACPHY_WAKE_INT,
-		.gic_index		= GMACPHY_WAKE_INT,
-		.status_index	= 60,		
-		.wake_index 	= 0xff,
-		.int_name		= "gmacphy_wake",
-		.irq_type		= IRQ_TYPE_LEVEL_HIGH,
-		.wl_type		= 0xff,
-	},
-	{
-		.pcu_index		= PCU_UART0_RXD_INT,
-		.gic_index		= UART0_RXD_INT,
-		.status_index	= 59,		
-		.wake_index 	= 42,
-		.int_name		= "uart0_rxd",
-		.irq_type		= IRQ_TYPE_EDGE_FALLING,
-		.wl_type		= 0xff,
-
-	},
-	{
-		.pcu_index		= PCU_GMAC_INT,
-		.gic_index		= GMAC_INT,
-		.status_index	= 16,		
-		.wake_index 	= 0xff,
-		.int_name		= "gmac",
-		.irq_type		= IRQ_TYPE_LEVEL_HIGH,
-		.wl_type		= 0xff,
-	},
-	{
-		.pcu_index		= PCU_GMACPHY_INT,
-		.gic_index		= GMACPHY_INT,
-		.status_index	= 61,		
-		.wake_index 	= 0xff,
-		.int_name		= "gmacphy",
-		.irq_type		= IRQ_TYPE_LEVEL_HIGH,
-		.wl_type		= 0xff,
-	},
-};
-
-static int zx_pcu_get_irqchip_state(struct irq_data *data,
-				     enum irqchip_irq_state which, bool *val)
-{
-	data = data->parent_data;
-
-	if (data->chip->irq_get_irqchip_state)
-		return data->chip->irq_get_irqchip_state(data, which, val);
-
-	return -ENOSYS;
-}
-
-static int zx_pcu_set_irqchip_state(struct irq_data *data,
-				     enum irqchip_irq_state which, bool val)
-{
-	data = data->parent_data;
-
-	if (data->chip->irq_set_irqchip_state)
-		return data->chip->irq_set_irqchip_state(data, which, val);
-
-	return -ENOSYS;
-}
-
-static int zx_pcu_nmi_setup(struct irq_data *data)
-{
-	data = data->parent_data;
-
-	if (data->chip->irq_nmi_setup)
-		return data->chip->irq_nmi_setup(data);
-
-	return -ENOSYS;
-}
-
-static void zx_pcu_nmi_teardown(struct irq_data *data)
-{
-	data = data->parent_data;
-
-	if (data->chip->irq_nmi_teardown)
-		data->chip->irq_nmi_teardown(data);
-}
-
-static int zx_pcu_set_wake(struct irq_data *data, unsigned int on)
-{
-	pcu_set_irq_wake(data->hwirq, on);
-
-/*	pr_info("irq:%d, onoff:%d", data->hwirq, on);*/
-	
-	return 0;
-}
-
-static void zx_pcu_eoi_irq(struct irq_data *data)
-{
-	pcu_clr_irq_pending(data->hwirq);
-
-	irq_chip_eoi_parent(data);
-}
-
-static int zx_pcu_set_type(struct irq_data *data, unsigned int type)
-{
-	unsigned int new_type = type;
-
-	if(!pcu_set_irq_type(data->hwirq, type))
-		new_type = IRQ_TYPE_LEVEL_HIGH;
-
-	return irq_chip_set_type_parent(data, new_type);
-}
-
-static int zx_pcu_set_affinity(struct irq_data *data,
-				 const struct cpumask *dest, bool force)
-{
-/*
-	if (data->hwirq == IRQ_ZX298501_AP_TIMER1)
-		return irq_chip_set_affinity_parent(data, cpumask_of(0), force); // ???
-	else
-*/		return irq_chip_set_affinity_parent(data, dest, force);
-}
-
-static struct irq_chip zx_pcu_chip = {
-	.name			= "PCU",
-	.irq_eoi		= zx_pcu_eoi_irq,
-	.irq_mask		= irq_chip_mask_parent,
-	.irq_unmask		= irq_chip_unmask_parent,
-	.irq_set_wake	= zx_pcu_set_wake,
-	.irq_set_type	= zx_pcu_set_type,
-	
-	.irq_set_affinity		= zx_pcu_set_affinity,
-	.irq_get_irqchip_state	= zx_pcu_get_irqchip_state,
-	.irq_set_irqchip_state	= zx_pcu_set_irqchip_state,
-	.irq_set_vcpu_affinity	= irq_chip_set_vcpu_affinity_parent,
-	.irq_nmi_setup			= zx_pcu_nmi_setup,
-	.irq_nmi_teardown		= zx_pcu_nmi_teardown,	
-	.flags					= IRQCHIP_MASK_ON_SUSPEND | IRQCHIP_SET_TYPE_MASKED,
-};
-
-static int zx_pcu_domain_translate(struct irq_domain *d,
-					struct irq_fwspec *fwspec,
-					unsigned long *hwirq,
-					unsigned int *type)
-{
-	if (is_of_node(fwspec->fwnode)) {
-		if (fwspec->param_count != 3)
-			return -EINVAL;
-
-		/* No PPI should point to this domain */
-		if (fwspec->param[0] != 0)
-			return -EINVAL;
-
-		*hwirq = fwspec->param[1];
-		*type = fwspec->param[2] & IRQ_TYPE_SENSE_MASK;
-		return 0;
-	}
-
-	return -EINVAL;
-}
-
-static int zx_pcu_domain_alloc(struct irq_domain *domain,
-				    unsigned int virq,
-				    unsigned int nr_irqs, void *data)
-{
-	struct irq_fwspec *fwspec = data;
-	struct irq_fwspec parent_fwspec;
-	struct zx_pcu_dev *pcu = domain->host_data;
-	irq_hw_number_t hwirq;
-	unsigned int i;
-
-	if (fwspec->param_count != 3)
-		return -EINVAL;	/* Not GIC compliant */
-	if (fwspec->param[0] != GIC_SPI)
-		return -EINVAL;	/* No PPI should point to this domain */
-
-	hwirq = fwspec->param[1];
-	if (hwirq >= ZX_IRQ_NUM)
-		return -EINVAL;
-
-	for (i = 0; i < nr_irqs; i++) {
-		irq_domain_set_hwirq_and_chip(domain, virq + i, hwirq + i,
-					      &zx_pcu_chip,
-					      (void __force *)pcu->top_reg_base);
-	}
-
-	parent_fwspec = *fwspec;
-	parent_fwspec.fwnode = domain->parent->fwnode;
-	return irq_domain_alloc_irqs_parent(domain, virq, nr_irqs,
-					    &parent_fwspec);
-}
-
-static const struct irq_domain_ops zx_pcu_domain_ops = {
-	.translate	= zx_pcu_domain_translate,
-	.alloc		= zx_pcu_domain_alloc,
-	.free		= irq_domain_free_irqs_common,
-};
-
-static int __init zx_pcu_init(struct device_node *node,
-				   struct device_node *parent)
-{
-	struct irq_domain *parent_domain, *domain;
-	struct zx_pcu_dev *pcu;
-
-	if (!parent) {
-		pr_err("%pOF: no parent found\n", node);
-		return -ENODEV;
-	}
-
-	parent_domain = irq_find_host(parent);
-	if (!parent_domain) {
-		pr_err("%pOF: unable to obtain parent domain\n", node);
-		return -ENXIO;
-	}
-
-	pcu = &pcu_dev;
-	pcu->np				= node;
-	pcu->top_reg_base	= of_iomap(node, 0);
-	WARN(!pcu->top_reg_base, "unable to map top pcu registers\n");
-
-	pcu->int_info = zx297520v3_pcu_int_info;
-	pcu->int_count = ARRAY_SIZE(zx297520v3_pcu_int_info);
-
-	pcu_init();
-
-	domain = irq_domain_add_hierarchy(parent_domain, 0, ZX_IRQ_NUM,
-					  node, &zx_pcu_domain_ops,
-					  pcu);
-	if (!domain) {
-		pr_err("%pOF: failed to allocated domain\n", node);
-		return -ENOMEM;
-	}
-
-//	set_smp_cross_call();
-	pm_pcu_init();
-
-	return 0;
-}
-
-IRQCHIP_DECLARE(zx297520v3_pcu, "zte,zx297520v3-pcu", zx_pcu_init);
-
-/* pcu debug */
-#ifdef CONFIG_PM
-#define PCU_TOP						(pcu_dev.top_reg_base)
-
-#define ARM_AP_CONFIG_REG           (PCU_TOP + 0x0)
-#define ARM_AP_SLEEP_TIME_REG       (PCU_TOP + 4*0x3C)
-#define AP_INT_WAKE_DIS_REG        	(PCU_TOP + 4*0xD)
-#define CORE_SWITCH_CONFIG_REG    	(PCU_TOP + 4*0x2b)
-
-#define M0_INT_WAKE_DIS_REG        	(PCU_TOP + 4*0xE)
-#define PCU_INT_READOUT_REG1		(PCU_TOP + 4*0x1EB)
-#define PCU_INT_READOUT_REG2		(PCU_TOP + 4*0x1EC)
-#define PCU_INT_READOUT_REG3		(PCU_TOP + 4*0x1ED)
-
-
-/*ARM_AP_CONFIG_REG*/
-#define	PCU_SLEEP_MODE				(1U << 0)
-#define	PCU_POWEROFF_MODE			(1U << 1)
-#define	PCU_L2_CLK_GATE				(1U << 2)		/*1-can turn off*/
-#define PCU_SLEEP_2M0               (1U << 3)
-#define	PCU_SLEEP_DONE_BYPASS		(1U << 4)	 	
-#define	PCU_SW_CONFIG_MASK			(1U << 5)	 	/* ?????  */
-
-#define	PCU_MODE_MASK				(0x3U << 0)
-
-/*ARM_AP_SLEEP_TIME_REG*/
-#define	PCU_AP_SLEEP_TIME_DIS       (1U << 31)
-
-
-
-/* low power function */
-extern unsigned int pm_get_wakesource(void);
-
-/**
- * clear pcu sleep mode.
- * 
- */
-void pm_clear_pcu(void)
-{
-	zx_clr_reg(ARM_AP_CONFIG_REG, PCU_MODE_MASK);
-}
-
-void pm_pcu_init(void)
-{
-	zx_clr_reg(ARM_AP_CONFIG_REG, PCU_MODE_MASK);
-	zx_set_reg(ARM_AP_CONFIG_REG, PCU_L2_CLK_GATE);
-	zx_write_reg(AP_INT_WAKE_DIS_REG, ~(pm_get_wakesource()));
-}
-
-void zx_apmgclken_set(unsigned en)
-{
-	unsigned tmp;
-	if(en){
-		//set ps_clk_switch=1
-		tmp = zx_read_reg(CORE_SWITCH_CONFIG_REG);
-		tmp |= (0x1<<2);
-		zx_write_reg(CORE_SWITCH_CONFIG_REG, tmp);
-	} else{
-		//set ps_clk_switch=0
-		tmp = zx_read_reg(CORE_SWITCH_CONFIG_REG);
-		tmp &= ~(0x1<<2);
-		zx_write_reg(CORE_SWITCH_CONFIG_REG, tmp);
-	}
-}
-
-
-/**
- * config pcu before poweroff
- * 
- */
-void pm_set_pcu_poweroff(u32 sleep_time)
-{
-	zx_set_reg(ARM_AP_CONFIG_REG, PCU_POWEROFF_MODE);
-	zx_write_reg(ARM_AP_SLEEP_TIME_REG, sleep_time);
-}
-EXPORT_SYMBOL(pm_set_pcu_poweroff);
-
-
-/**
- * config pcu before sleep
- * 
- */
-void pm_set_pcu_sleep(u32 sleep_time)
-{
-	zx_set_reg(ARM_AP_CONFIG_REG, PCU_SLEEP_MODE);
-	zx_write_reg(ARM_AP_SLEEP_TIME_REG, sleep_time);
-}
-
-/**
- * get wakeup setting.
- * 
- */
-unsigned int pcu_get_wakeup_setting(void)
-{
-	return zx_read_reg(AP_INT_WAKE_DIS_REG);
-}
-/**
- * set wakeup enable by gic.
- * 
- * 
- */
-unsigned int  gic_wake_enable[3]=
-{
-	(1<<ICP_PS2AP_INT) |(1<<ICP_M02AP_INT) | (1<<AP_TIMER1_INT) | (1<<EX8IN1_INT),
-	0, 
-	0
-};
-
-extern void show_icp_state(T_RpMsg_CoreID actorID);
-void pm_get_wake_cause(void)
-{
-	unsigned int	int_status[2];
-	int 			i = 0;
-	int 			index_found = 0xff;
-	unsigned int	pcu_wake_setting[2];
-		
-	/* when wake up, the level is high&the value is 0*/
-	int_status[0] = zx_read_reg(PCU_INT_READOUT_REG1);
-	int_status[1] = zx_read_reg(PCU_INT_READOUT_REG2);
-
-	pcu_wake_setting[0] = zx_read_reg(AP_INT_WAKE_DIS_REG);
-	pcu_wake_setting[1] = zx_read_reg(M0_INT_WAKE_DIS_REG);
-
-	for(i=0; i<ARRAY_SIZE(zx297520v3_pcu_int_info); i++)
-	{
-		if (zx297520v3_pcu_int_info[i].wake_index == 0xff)
-			continue;
-
-		if(pcu_wake_setting[0]&BIT(zx297520v3_pcu_int_info[i].wake_index))	
-			continue;
-
-		if(int_status[zx297520v3_pcu_int_info[i].status_index/32]&(1<<(zx297520v3_pcu_int_info[i].status_index%32)))
-			continue;
-
-		index_found = i;
-		break;
-	}
-	
-	if(index_found != 0xff)
-	{
-		pm_ram_log(" wake: %d  [%s]\n", zx297520v3_pcu_int_info[index_found].gic_index, zx297520v3_pcu_int_info[index_found].int_name);
-
-		if(zx297520v3_pcu_int_info[index_found].gic_index ==ICP_PS2AP_INT) {
-			show_icp_state(CORE_PS0);
-		}
-		pm_ram_log(" pcu int status:0x%x 0x%x\n",int_status[0], int_status[1]);
-
-		pm_wl_set_event(pcu_get_wl_index_by_gic(zx297520v3_pcu_int_info[index_found].gic_index));
-	}
-	else
-	{
-		pm_ram_log(" wake abnormal\n");
-		pm_ram_log(" pcu int status:0x%x 0x%x\n",int_status[0], int_status[1]);
-	}
-}
-
-static struct wakeup_source *zx_main_ws;
-static int zx_pcu_pm_callback(struct notifier_block *nb,
-			unsigned long action, void *ptr)
-{
-	switch (action) {
-
-	case PM_POST_SUSPEND:
-		__pm_wakeup_event(zx_main_ws, 1000);		
-		break;
-
-	default:
-		return NOTIFY_DONE;
-	}
-
-	return NOTIFY_OK;
-}
-
-static int pcu_pm_suspend(void)
-{
-	int ret = 0;
-
-	return ret;
-}
-
-static void pcu_pm_resume(void)
-{
-//	pcu_get_wake_cause();
-}
-
-static struct syscore_ops pcu_pm_syscore_ops = {
-	.suspend = pcu_pm_suspend,
-	.resume = pcu_pm_resume,
-};
-
-static int pcu_pm_init(void)
-{
-	zx_main_ws = wakeup_source_register(NULL, "zx_main");
-	if (!zx_main_ws)
-		return -ENOMEM;
-
-	pm_notifier(zx_pcu_pm_callback, 0);
-
-	register_syscore_ops(&pcu_pm_syscore_ops);
-	return 0;
-}
-core_initcall(pcu_pm_init);
-#endif
-
-/* --------------------------------------------------------------------
- * extint_8in1
- * -------------------------------------------------------------------- */
-
-struct ext8in1_info {
-	struct irq_domain   *domain;
-	struct regmap 		*regmap;
-	int                 parent_irq;
-	
-};
-
-struct ext8in1_info ext8in1_dev = {0};
-
-/*
- * return external interrupt number from ex8-ex15,
- * return value is 0-7
- */
-static unsigned int pcu_get_8in1_int_source(void)
-{  
-	unsigned int vector_8in1 = 0;
- 
-	vector_8in1 = zx_read_reg(pcu_dev.top_reg_base+0x12C);	 
-	
-	return 	(vector_8in1&0x7);
-}
- 
-
-/*external int 8-15 need extra clear*/
-static void pcu_int_clear_8in1(unsigned int pcu_index)
-{	
-	unsigned int vector=0;
-	
-	if ( (pcu_index >= PCU_EX8_INT)&&(pcu_index <= PCU_EX15_INT) )
-	{
-		/*
-		 *in 7510 platform, 8in1 interrupt would be used by different cores.
-		 *when any core installs a new 8in1 interrupt, another core may be 
-		 * responding another 8in1 interrupt, so  8in1 interrupt shouldn't be 
-		 *cleared. in this case, nothing to be done. but a new problem comes,
-		 * the core install new  8in1 interrupt will receive a fake interrupt.
-		 */
-		vector = pcu_get_8in1_int_source();
-		if (pcu_index != (vector + PCU_EX8_INT) )
-			return;
-
-		PCU_LOCK
-   		zx_write_reg(pcu_dev.top_reg_base+0x128, 0x1);
-		PCU_UNLOCK
-
-		pcu_int_clear(pcu_index);
-	}
-}
-
-static void ext8in1_irq_lock(struct irq_data *data){}
-static void ext8in1_irq_sync_unlock(struct irq_data *data){}
-static void ext8in1_irq_mask(struct irq_data *data){}
-static void ext8in1_irq_unmask(struct irq_data *data){}
-static int ext8in1_irq_set_wake(struct irq_data *data, unsigned int on)
-{
-	if (!data)
-		return -EINVAL;
-
-	pcu_set_irq_wake_by_pcu(data->hwirq + PCU_EX8_INT, on);
-
-	return 0;
-}
-
-static int ext8in1_irq_set_type(struct irq_data *data, unsigned int type)
-{
-	if (!data)
-		return -EINVAL;
-
-	pcu_int_set_type(data->hwirq + PCU_EX8_INT, type);
-
-	pcu_int_clear_8in1(data->hwirq + PCU_EX8_INT);
-
-	return 0;
-}
-
-static struct irq_chip ext8in1_irq_chip =
-{
-    .name           		= "ext8in1",
-
-	.irq_set_wake			= ext8in1_irq_set_wake,
-	.irq_set_type			= ext8in1_irq_set_type,
-	.irq_mask				= ext8in1_irq_mask,
-	.irq_unmask				= ext8in1_irq_unmask,
-	.irq_bus_lock			= ext8in1_irq_lock,
-	.irq_bus_sync_unlock	= ext8in1_irq_sync_unlock,
-};
-
-static void ext8in1_handle_irq(struct irq_desc *desc)
-{
-	struct ext8in1_info *data = irq_desc_get_handler_data(desc);
-	struct irq_chip *chip = irq_desc_get_chip(desc);
-	int virq;
-	int hwirq, new_hwirq;
-
-	chained_irq_enter(chip, desc);
-   
-    hwirq = pcu_get_8in1_int_source();
-
-	while(1) {
-		pcu_int_clear_8in1(hwirq + PCU_EX8_INT);
-
-		virq = irq_find_mapping(data->domain, hwirq);
-		if (virq > 0)
-			generic_handle_irq(virq);
-
-		new_hwirq = pcu_get_8in1_int_source();
-        if (hwirq == new_hwirq)
-            break;
-        else
-            hwirq = new_hwirq;
-	}
-
-	chained_irq_exit(chip, desc);
-}
-
-extern void mask_irq(struct irq_desc *desc);
-extern void unmask_irq(struct irq_desc *desc);
-static int ext8in1_irq_resume(struct device *dev)
-{
-	unmask_irq(irq_to_desc(ext8in1_dev.parent_irq));
-
-	return 0;
-}
-
-static int ext8in1_irq_suspend(struct device *dev)
-{
-	mask_irq(irq_to_desc(ext8in1_dev.parent_irq));
-
-	return 0;
-}
-
-static int zx_ext8in1_probe(struct platform_device *pdev)
-{
-	struct device_node *np = pdev->dev.of_node;
-	struct device_node *parent_np;
-	struct regmap *regmap;
-	struct ext8in1_info *data = &ext8in1_dev;
-	int i;
-
-	parent_np = of_parse_phandle(pdev->dev.of_node, "parent-syscon", 0);
-	if (!parent_np) {
-		dev_err(&pdev->dev, "Can't get parent-syscon\n");
-		return -EINVAL;
-	}
-	
-	regmap = syscon_node_to_regmap(parent_np);
-	if (IS_ERR(regmap)) {
-		of_node_put(parent_np);
-		return PTR_ERR(regmap);
-	}	
-	data->regmap = regmap;
-
-	data->parent_irq = platform_get_irq(pdev, 0);
-	if (data->parent_irq <= 0)
-		return -EPROBE_DEFER;
-
-	data->domain = irq_domain_add_linear(np, 8, &irq_domain_simple_ops, NULL);
-	if (!data->domain)
-		return -ENODEV;
-
-	for (i = EX8_INT; i <= EX15_INT; i++) {
-		int virq = irq_create_mapping(data->domain, i);
-
-		irq_set_chip_and_handler(virq, &ext8in1_irq_chip,
-					 handle_simple_irq);
-		irq_set_chip_data(virq, data);
-	}
-
-	irq_set_chained_handler_and_data(data->parent_irq,
-					 ext8in1_handle_irq, data);
-	enable_irq_wake(data->parent_irq);
-
-	pr_info("zx_ext8in1 init OK. \n");
-
-	return 0;
-}
-
-static const struct of_device_id zx_ext8in1_match[] = {
-	{ .compatible = "zte,zx297520v3-ext8in1" },
-	{ }
-};
-
-static const struct dev_pm_ops ext8in1_irq_pm_ops = {
-	.resume = ext8in1_irq_resume,
-	.suspend = ext8in1_irq_suspend,
-};
-
-static struct platform_driver zx_ext8in1_driver = {
-	.probe = zx_ext8in1_probe,
-	.driver = {
-		.name = "zx_ext8in1_drv",
-		.of_match_table = zx_ext8in1_match,
-		.pm = &ext8in1_irq_pm_ops,
-	},
-};
-
-static int __init zx_ext8in1_driver_init(void)
-{
-	return platform_driver_register(&zx_ext8in1_driver);
-}
-core_initcall(zx_ext8in1_driver_init);
-
diff --git a/upstream/linux-5.10/drivers/soc/sc/rpmsg/zx29_icp.c b/upstream/linux-5.10/drivers/soc/sc/rpmsg/zx29_icp.c
deleted file mode 100755
index aae42a2..0000000
--- a/upstream/linux-5.10/drivers/soc/sc/rpmsg/zx29_icp.c
+++ /dev/null
@@ -1,490 +0,0 @@
-#include <linux/kernel.h>
-#include <linux/interrupt.h>
-#include <linux/irq.h>
-#include <linux/clockchips.h>
-#include <linux/clk.h>
-#include <linux/module.h>
-#include <linux/err.h>
-#include <linux/syscore_ops.h>
-#include <linux/gpio.h>
-#include <linux/of_device.h>
-#include <linux/of_irq.h>
-#include <linux/of_address.h>
-#include <linux/platform_device.h>
-#include <linux/pm_domain.h>
-#include <linux/pm_runtime.h>
-#include <linux/soc/sc/common.h>
-#include <linux/soc/sc/spinlock.h>
-
-#include "icp_dev.h"
-#include "zx29_icp.h"
-#include "icp_rpmsg.h"
-
-static icp_callback_fn	_icp_fn;
-static T_HalIcp_Reg *icp_ap2m0_reg;
-static T_HalIcp_Reg *icp_ap2ps_reg;
-
-static inline T_HalIcp_Reg *icp_get_reg(T_ZDrvRpMsg_ActorID actor_id)
-{
-	if (CORE_M0 == actor_id )
-		return icp_ap2m0_reg;
-	else if (CORE_PS0 == actor_id )
-		return icp_ap2ps_reg;
-	else
-		BUG();
-}
-
-/*******************************************************************************
-* Function: icp_set_int
-* Description: This function is used for generating icp interrupt to inform remote cpu;
-* Parameters:
-*   Input:
-           actorID: id of remote cpu
-           chID: id of channel
-*   Output:None
-*
-* Returns:None
-*
-*
-* Others:
-********************************************************************************/
-static int icp_set_int(T_ZDrvRpMsg_ActorID actorID, T_ZDrvRpMsg_ChID chID)
-{
-	T_HalIcp_Reg *icp_reg;
-
-    if ((actorID >= CORE_MAXID) || (chID >= CHANNEL_MAXID(actorID)))
-        return -EINVAL;
-
-	icp_reg = icp_get_reg(actorID);
-
-    if(chID<32)
-		icp_reg->control.low_word	= (1<<chID);
-    else
-		icp_reg->control.high_word	= (1<<(chID-32));
-
-	return 0;
-}
-  
-/*******************************************************************************
-* Function: icp_clear_int
-* Description: This function is used for clear icp interrupt from remote cpu;
-* Parameters:
-*   Input:
-           actorID: id of remote cpu
-           chID: id of channel
-*   Output:None
-*
-* Returns:None
-*
-*
-* Others:
-********************************************************************************/
-static void icp_clear_int(T_ZDrvRpMsg_ActorID actorID, T_ZDrvRpMsg_ChID chID)
-{
-	T_HalIcp_Reg *icp_reg = icp_get_reg(actorID);
-
-    if(chID<32)
-        icp_reg->clear.low_word  = (1<<chID);
-    else
-       	icp_reg->clear.high_word = (1<<(chID-32)) ;
-}
-
-/*******************************************************************************
-* Function: icp_get_int
-* Description: This function is used for get icp interrupt from remote cpu;
-* Parameters:
-*   Input:
-*           actorID: id of remote cpu
-*           chID: id of channel
-*   Output:None
-*
-* Returns:None
-*
-*
-* Others:
-********************************************************************************/
-T_HalIcp_Dword icp_get_int(T_ZDrvRpMsg_ActorID actorID)
-{
-	T_HalIcp_Dword IcpState;
-	T_HalIcp_Reg *icp_reg;
-
-    if (actorID >= CORE_MAXID)
-    {
-		IcpState.high_word	= 0;
-		IcpState.low_word	= 0;
-    
-        return IcpState;
-    }
-
-	icp_reg = icp_get_reg(actorID);
-	
-	IcpState.high_word 	= icp_reg->state.high_word;
-	IcpState.low_word 	= icp_reg->state.low_word;
-	
-	return IcpState;
-}
-
-/*******************************************************************************
-* Function: icp_get_int_state
-* Description: This function is used for get the state of icp interruptting  of remote cpu;
-* Parameters:
-*   Input:
-           actorID: id of remote cpu
-           chID: id of channel
-*   Output:None
-*
-* Returns:None
-*
-*
-* Others:
-********************************************************************************/
-static int icp_get_int_state(T_ZDrvRpMsg_ActorID actorID, T_ZDrvRpMsg_ChID chID)
-{
-	T_HalIcp_Reg *icp_reg;
-
-	icp_reg = icp_get_reg(actorID);
-
-	if(chID<32)
-	{
-		if(icp_reg->in_state.low_word & (0x1<<chID))
-			return true;
-	}
-	else
-	{
-		if(icp_reg->in_state.high_word & (0x1<<(chID-32)))
-			return true;
-	}
-
-	return false;
-}
-	
-/*******************************************************************************
-* Function: icp_mask_int
-* Description: This function is used for Mask interrupt of channel;
-* Parameters:
-*   Input:
-*   Output:
-*
-* Returns:  NONE
-*
-*
-* Others:
-********************************************************************************/
-static int icp_mask_int(T_ZDrvRpMsg_ActorID actorID, T_ZDrvRpMsg_ChID chID)
-{
-	T_HalIcp_Reg *icp_reg;
-
-    if ((actorID >= CORE_MAXID) || (chID >= CHANNEL_MAXID(actorID)))
-        return -EINVAL;
-
-	icp_reg = icp_get_reg(actorID);
-
-    if(chID<32)
-        icp_reg->mask.low_word  |= (0x1<<chID);
-    else
-        icp_reg->mask.high_word |= (0x1<<(chID-32));
-
-	return 0;
-}
-
-/*******************************************************************************
-* Function: icp_unmask_int
-* Description: This function is used for unmask interrupt of channel;
-* Parameters:
-*   Input:
-*   Output:
-*
-* Returns:
-*            NONE
-*
-*
-* Others:
-********************************************************************************/
-static int icp_unmask_int(T_ZDrvRpMsg_ActorID actorID, T_ZDrvRpMsg_ChID chID)
-{
-	T_HalIcp_Reg *icp_reg;
-
-    if ((actorID >= CORE_MAXID) || (chID >= CHANNEL_MAXID(actorID)))
-        return -EINVAL;
-
-	icp_reg = icp_get_reg(actorID);
-
-	if(chID < 32)
-		icp_reg->mask.low_word  &= ~(0x1<<chID);
-    else
-		icp_reg->mask.high_word &= ~(0x1<<(chID-32));
-
-	return 0;
-}
-
-int icp_int_count = 0;
-#ifdef CONFIG_ZX29_WATCHDOG
-extern void zx_wdt_icp_wake(void);
-#endif
-irqreturn_t icp_isr(int irq, void *data)
-{
-	icp_msg	_icp_msg;	
-	T_HalIcp_Dword IcpState;	
-	unsigned int i;
-
-	_icp_msg.src_id = (unsigned int)data;
-
-	IcpState = icp_get_int(_icp_msg.src_id);
-
-	for(i=0; i<CHANNEL_MAXID(_icp_msg.src_id); i++)
-	{
-		if((((i<32)&&((IcpState.low_word>>i) & 0x1))||((i>=32)&&((IcpState.high_word>>(i-32)) & 0x1)))) {
-			_icp_msg.event_id = i;			
-		#ifdef CONFIG_ZX29_WATCHDOG			
-			if((CORE_M0 == _icp_msg.src_id)&&(2 == i))
-	  			zx_wdt_icp_wake();
-		#endif
-			if(_icp_fn)
-				_icp_fn(&_icp_msg);
-			
-			icp_clear_int(_icp_msg.src_id, i);
-		}
-	}
-
-	icp_int_count ++;
-
-	return IRQ_HANDLED;
-}
-
-/*
- * for loopback test
- */
-void fake_icp_isr(T_RpMsg_CoreID src_core, T_RpMsg_CoreID dest_core, T_RpMsg_ChID ch)
-{
-	icp_msg	_icp_msg;
-	unsigned int i;
-
-	_icp_msg.src_id 	= src_core;
-	_icp_msg.dest_core 	= dest_core;	
-	_icp_msg.event_id 	= ch;
-
-	if(_icp_fn)
-		_icp_fn(&_icp_msg);
-}
-
-/*
- * for get wake state
- */
-void icp_get_int_info(T_ZDrvRpMsg_ActorID actorID, unsigned int *high_word, unsigned int *low_word)
-{
-	T_HalIcp_Dword IcpState;
-
-	IcpState = icp_get_int(actorID);
-
-	*high_word = IcpState.high_word;
-	*low_word = IcpState.low_word;
-}
-
-static const char * const ps_channel_info[64] = {
-	[0] = "drv test",
-	[2] = "Power Management",
-	[3] = "ADB agent",
-	[4] = "USB app config",
-	[5] = "USB kernel config",
-	[6] = "audio",
-	[7] = "console switch",
-	[8] = "NV",
-	[9] = "debug",
-	[10] = "ramdump",
-	[11] = "tee common",
-	[12] = "tee RPC",
-	[13] = "ap2cap message queue",
-	[14] = "cap2ap message queue",
-	[15] = "AMT framework",
-	[16] = "APP rsvd 16",
-	[17] = "APP rsvd 17",
-	[18] = "APP rsvd 18",
-	[19] = "APP rsvd 19",
-	[20] = "zvnet 20",
-	[21] = "zvnet 21",
-	[22] = "zvnet 22",
-	[23] = "zvnet 23",
-	[24] = "zvnet 24",
-	[25] = "zvnet 25",
-	[26] = "zvnet 26",
-	[27] = "zvnet 27",
-	[28] = "zvnet 28",
-	[29] = "free skb",
-	[30] = "ttygs0",
-	[31] = "ttygs1",
-	[32] = "socket ipc",
-	[33] = "binder ipc",
-	[34] = "at channel 34",
-	[35] = "at channel 35",
-	[36] = "at channel 36",
-	[37] = "at channel 37",
-	[38] = "at channel 38",
-	[39] = "at channel 39",
-	[40] = "at channel 40",
-	[41] = "voice buffer",
-};
-
-void show_icp_state(T_ZDrvRpMsg_ActorID actorID)
-{
-	unsigned int	hw, lw;
-	int i;
-
-	if (actorID != CORE_PS0)
-		return;
-
-	icp_get_int_info(actorID, &hw, &lw);
-	pr_info("[SLP] icpwake: 0x%x 0x%x\n", hw, lw);
-
-	for (i=0; i<32; i++)
-		if (lw&BIT(i))
-			pr_info("[SLP] icpwake: channel(%d) function(%s)\n", i, ps_channel_info[i] ? ps_channel_info[i] : "NA");
-
-	for (i=0; i<32; i++)
-		if (hw&BIT(i))
-			pr_info("[SLP] icpwake: channel(%d) function(%s)\n", i+32, ps_channel_info[i+32] ? ps_channel_info[i+32] : "NA");
-}
-
-static void icp_register_callback(icp_callback_fn cb)
-{
-	_icp_fn = cb;
-}
-
-static int icp_send_message(unsigned int core_id, icp_msg *icp_msg)
-{
-	if(!icp_msg || icp_msg->dest_core > CORE_MAXID )
-		return -EINVAL;
-		
-	if(icp_get_int_state(icp_msg->dest_core, icp_msg->event_id)==false)
-	{
-		icp_set_int(icp_msg->dest_core, icp_msg->event_id);
-	}
-	
-	return 0;	
-}
-
-static t_icpdev_ops zx29_icp_ops = {
-	.register_callback	= icp_register_callback,
-	.send_message		= icp_send_message, 
-	.mask_int			= icp_mask_int,
-	.unmask_int			= icp_unmask_int,
-	.set_int			= icp_set_int,
-};
-
-static int icp_ap2ps_init(struct device *dev)
-{
-	void __iomem *reg_base;
-	unsigned int irq;
-	int ret;
-	struct device_node *np = dev->of_node;
-
-	reg_base = of_iomap(np, 0);
-	if ( !reg_base ){
-		pr_err("%s: [ICP]Cannot get IORESOURCE_MEM\n", __func__);
-		return -ENOENT;
-	}
-	
-	icp_ap2ps_reg = (T_HalIcp_Reg *)reg_base;
-
-	irq = irq_of_parse_and_map(np, 0);
-	if( !irq ){
-		pr_err("%s: [ICP]Cannot get IORESOURCE_IRQ\n", __func__);
-		return -ENOENT;
-	}		
-
-	icp_ap2ps_reg->mask.high_word	= 0xffffffff;
-	icp_ap2ps_reg->mask.low_word	= 0xffffffff;
-
-	ret = request_irq(irq, icp_isr, 0, "zx_icp", CORE_PS0);
-	if (ret)
-	{
-		pr_err("%s: [ICP]register irq failed\n", __func__);
-		return ret;
-	}
-	
-	enable_irq_wake(irq);
-
-	icpdev_register_ops(&zx29_icp_ops);
-		
-	rpmsgInit(CORE_PS0, np);
-/*
-	dev->id = CORE_PS0;
-	ret = icp_rpmsg_device_register(dev);
-*/
-	pr_info("%s: ok! irq(%d) icp_address(%llx \n", __func__, irq, reg_base );
-
-	return ret;
-}
-
-static int icp_ap2m0_init(struct device *dev)
-{
-	void __iomem *reg_base;
-	unsigned int irq;
-	int ret;
-	struct device_node *np = dev->of_node;
-
-	pr_info("%s: enter \n", __func__);
-
-	reg_base = of_iomap(np, 0);
-	if ( !reg_base ){
-		pr_err("%s: [ICP]Cannot get IORESOURCE_MEM\n", __func__);
-		return -ENOENT;
-	}
-	
-	icp_ap2m0_reg = (T_HalIcp_Reg *)reg_base;
-
-	irq = irq_of_parse_and_map(np, 0);
-	if( !irq ){
-		pr_err("%s: [ICP]Cannot get IORESOURCE_IRQ\n", __func__);
-		return -ENOENT;
-	}		
-
-	icp_ap2m0_reg->mask.high_word	= 0xffffffff;
-	icp_ap2m0_reg->mask.low_word	= 0xffffffff;
-
-	ret = request_irq(irq, icp_isr, 0, "zx_icp", CORE_M0);
-	if (ret)
-	{
-		pr_err("%s: [ICP]register irq failed\n", __func__);
-		return ret;
-	}
-
-	enable_irq_wake(irq);
-
-	icpdev_register_ops(&zx29_icp_ops);
-
-	rpmsgInit(CORE_M0, np);
-
-	pr_info("%s: ok! irq(%d) icp_address(%llx \n", __func__, irq, reg_base );
-
-	return 0;
-}
-
-static const struct of_device_id zx29_icp_dt_ids[] = {
-	{	.compatible = "zte,zx29-icp-ap2m0", .data = &icp_ap2m0_init	}, 
-	{	.compatible = "zte,zx29-icp-ap2ps", .data = &icp_ap2ps_init	}, 		
-	{	/* sentinel */	}
-};
-
-static int zx29_icp_probe(struct platform_device *pdev)
-{
-	int (*init_fn)(struct device *dev);
-
-	init_fn = of_device_get_match_data(&pdev->dev);
-	if (!init_fn) {
-		dev_err(&pdev->dev, "Error: No device match found\n");
-		return -ENODEV;
-	}
-
-	return init_fn(&pdev->dev);
-}
-	
-static struct platform_driver zx29_icp_driver = {
-	.driver = {
-		.name = "zx29-icp",
-		.owner = THIS_MODULE,
-		.of_match_table = of_match_ptr(zx29_icp_dt_ids),
-	},
-	.probe	= zx29_icp_probe,
-};
-
-builtin_platform_driver(zx29_icp_driver)
diff --git a/upstream/linux-5.10/drivers/tty/tty_io.c b/upstream/linux-5.10/drivers/tty/tty_io.c
deleted file mode 100755
index 669aef7..0000000
--- a/upstream/linux-5.10/drivers/tty/tty_io.c
+++ /dev/null
@@ -1,3602 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/*
- *  Copyright (C) 1991, 1992  Linus Torvalds
- */
-
-/*
- * 'tty_io.c' gives an orthogonal feeling to tty's, be they consoles
- * or rs-channels. It also implements echoing, cooked mode etc.
- *
- * Kill-line thanks to John T Kohl, who also corrected VMIN = VTIME = 0.
- *
- * Modified by Theodore Ts'o, 9/14/92, to dynamically allocate the
- * tty_struct and tty_queue structures.  Previously there was an array
- * of 256 tty_struct's which was statically allocated, and the
- * tty_queue structures were allocated at boot time.  Both are now
- * dynamically allocated only when the tty is open.
- *
- * Also restructured routines so that there is more of a separation
- * between the high-level tty routines (tty_io.c and tty_ioctl.c) and
- * the low-level tty routines (serial.c, pty.c, console.c).  This
- * makes for cleaner and more compact code.  -TYT, 9/17/92
- *
- * Modified by Fred N. van Kempen, 01/29/93, to add line disciplines
- * which can be dynamically activated and de-activated by the line
- * discipline handling modules (like SLIP).
- *
- * NOTE: pay no attention to the line discipline code (yet); its
- * interface is still subject to change in this version...
- * -- TYT, 1/31/92
- *
- * Added functionality to the OPOST tty handling.  No delays, but all
- * other bits should be there.
- *	-- Nick Holloway <alfie@dcs.warwick.ac.uk>, 27th May 1993.
- *
- * Rewrote canonical mode and added more termios flags.
- * 	-- julian@uhunix.uhcc.hawaii.edu (J. Cowley), 13Jan94
- *
- * Reorganized FASYNC support so mouse code can share it.
- *	-- ctm@ardi.com, 9Sep95
- *
- * New TIOCLINUX variants added.
- *	-- mj@k332.feld.cvut.cz, 19-Nov-95
- *
- * Restrict vt switching via ioctl()
- *      -- grif@cs.ucr.edu, 5-Dec-95
- *
- * Move console and virtual terminal code to more appropriate files,
- * implement CONFIG_VT and generalize console device interface.
- *	-- Marko Kohtala <Marko.Kohtala@hut.fi>, March 97
- *
- * Rewrote tty_init_dev and tty_release_dev to eliminate races.
- *	-- Bill Hawes <whawes@star.net>, June 97
- *
- * Added devfs support.
- *      -- C. Scott Ananian <cananian@alumni.princeton.edu>, 13-Jan-1998
- *
- * Added support for a Unix98-style ptmx device.
- *      -- C. Scott Ananian <cananian@alumni.princeton.edu>, 14-Jan-1998
- *
- * Reduced memory usage for older ARM systems
- *      -- Russell King <rmk@arm.linux.org.uk>
- *
- * Move do_SAK() into process context.  Less stack use in devfs functions.
- * alloc_tty_struct() always uses kmalloc()
- *			 -- Andrew Morton <andrewm@uow.edu.eu> 17Mar01
- */
-
-#include <linux/types.h>
-#include <linux/major.h>
-#include <linux/errno.h>
-#include <linux/signal.h>
-#include <linux/fcntl.h>
-#include <linux/sched/signal.h>
-#include <linux/sched/task.h>
-#include <linux/interrupt.h>
-#include <linux/tty.h>
-#include <linux/tty_driver.h>
-#include <linux/tty_flip.h>
-#include <linux/devpts_fs.h>
-#include <linux/file.h>
-#include <linux/fdtable.h>
-#include <linux/console.h>
-#include <linux/timer.h>
-#include <linux/ctype.h>
-#include <linux/kd.h>
-#include <linux/mm.h>
-#include <linux/string.h>
-#include <linux/slab.h>
-#include <linux/poll.h>
-#include <linux/ppp-ioctl.h>
-#include <linux/proc_fs.h>
-#include <linux/init.h>
-#include <linux/module.h>
-#include <linux/device.h>
-#include <linux/wait.h>
-#include <linux/bitops.h>
-#include <linux/delay.h>
-#include <linux/seq_file.h>
-#include <linux/serial.h>
-#include <linux/ratelimit.h>
-#include <linux/compat.h>
-
-#include <linux/uaccess.h>
-
-#include <linux/kbd_kern.h>
-#include <linux/vt_kern.h>
-#include <linux/selection.h>
-
-#include <linux/kmod.h>
-#include <linux/nsproxy.h>
-
-#undef TTY_DEBUG_HANGUP
-#ifdef TTY_DEBUG_HANGUP
-# define tty_debug_hangup(tty, f, args...)	tty_debug(tty, f, ##args)
-#else
-# define tty_debug_hangup(tty, f, args...)	do { } while (0)
-#endif
-
-#define TTY_PARANOIA_CHECK 1
-#define CHECK_TTY_COUNT 1
-
-struct ktermios tty_std_termios = {	/* for the benefit of tty drivers  */
-	.c_iflag = ICRNL | IXON,
-	.c_oflag = OPOST | ONLCR,
-	.c_cflag = B38400 | CS8 | CREAD | HUPCL,
-	.c_lflag = ISIG | ICANON | ECHO | ECHOE | ECHOK |
-		   ECHOCTL | ECHOKE | IEXTEN,
-	.c_cc = INIT_C_CC,
-	.c_ispeed = 38400,
-	.c_ospeed = 38400,
-	/* .c_line = N_TTY, */
-};
-
-EXPORT_SYMBOL(tty_std_termios);
-
-/* This list gets poked at by procfs and various bits of boot up code. This
-   could do with some rationalisation such as pulling the tty proc function
-   into this file */
-
-LIST_HEAD(tty_drivers);			/* linked list of tty drivers */
-
-/* Mutex to protect creating and releasing a tty */
-DEFINE_MUTEX(tty_mutex);
-
-static ssize_t tty_read(struct kiocb *, struct iov_iter *);
-static ssize_t tty_write(struct kiocb *, struct iov_iter *);
-static __poll_t tty_poll(struct file *, poll_table *);
-static int tty_open(struct inode *, struct file *);
-#ifdef CONFIG_COMPAT
-static long tty_compat_ioctl(struct file *file, unsigned int cmd,
-				unsigned long arg);
-#else
-#define tty_compat_ioctl NULL
-#endif
-static int __tty_fasync(int fd, struct file *filp, int on);
-static int tty_fasync(int fd, struct file *filp, int on);
-static void release_tty(struct tty_struct *tty, int idx);
-
-/**
- *	free_tty_struct		-	free a disused tty
- *	@tty: tty struct to free
- *
- *	Free the write buffers, tty queue and tty memory itself.
- *
- *	Locking: none. Must be called after tty is definitely unused
- */
-
-static void free_tty_struct(struct tty_struct *tty)
-{
-	tty_ldisc_deinit(tty);
-	put_device(tty->dev);
-	kfree(tty->write_buf);
-	tty->magic = 0xDEADDEAD;
-	kfree(tty);
-}
-
-static inline struct tty_struct *file_tty(struct file *file)
-{
-	return ((struct tty_file_private *)file->private_data)->tty;
-}
-
-int tty_alloc_file(struct file *file)
-{
-	struct tty_file_private *priv;
-
-	priv = kmalloc(sizeof(*priv), GFP_KERNEL);
-	if (!priv)
-		return -ENOMEM;
-
-	file->private_data = priv;
-
-	return 0;
-}
-
-/* Associate a new file with the tty structure */
-void tty_add_file(struct tty_struct *tty, struct file *file)
-{
-	struct tty_file_private *priv = file->private_data;
-
-	priv->tty = tty;
-	priv->file = file;
-
-	spin_lock(&tty->files_lock);
-	list_add(&priv->list, &tty->tty_files);
-	spin_unlock(&tty->files_lock);
-}
-
-/**
- * tty_free_file - free file->private_data
- *
- * This shall be used only for fail path handling when tty_add_file was not
- * called yet.
- */
-void tty_free_file(struct file *file)
-{
-	struct tty_file_private *priv = file->private_data;
-
-	file->private_data = NULL;
-	kfree(priv);
-}
-
-/* Delete file from its tty */
-static void tty_del_file(struct file *file)
-{
-	struct tty_file_private *priv = file->private_data;
-	struct tty_struct *tty = priv->tty;
-
-	spin_lock(&tty->files_lock);
-	list_del(&priv->list);
-	spin_unlock(&tty->files_lock);
-	tty_free_file(file);
-}
-
-/**
- *	tty_name	-	return tty naming
- *	@tty: tty structure
- *
- *	Convert a tty structure into a name. The name reflects the kernel
- *	naming policy and if udev is in use may not reflect user space
- *
- *	Locking: none
- */
-
-const char *tty_name(const struct tty_struct *tty)
-{
-	if (!tty) /* Hmm.  NULL pointer.  That's fun. */
-		return "NULL tty";
-	return tty->name;
-}
-
-EXPORT_SYMBOL(tty_name);
-
-const char *tty_driver_name(const struct tty_struct *tty)
-{
-	if (!tty || !tty->driver)
-		return "";
-	return tty->driver->name;
-}
-
-static int tty_paranoia_check(struct tty_struct *tty, struct inode *inode,
-			      const char *routine)
-{
-#ifdef TTY_PARANOIA_CHECK
-	if (!tty) {
-		pr_warn("(%d:%d): %s: NULL tty\n",
-			imajor(inode), iminor(inode), routine);
-		return 1;
-	}
-	if (tty->magic != TTY_MAGIC) {
-		pr_warn("(%d:%d): %s: bad magic number\n",
-			imajor(inode), iminor(inode), routine);
-		return 1;
-	}
-#endif
-	return 0;
-}
-
-/* Caller must hold tty_lock */
-static int check_tty_count(struct tty_struct *tty, const char *routine)
-{
-#ifdef CHECK_TTY_COUNT
-	struct list_head *p;
-	int count = 0, kopen_count = 0;
-
-	spin_lock(&tty->files_lock);
-	list_for_each(p, &tty->tty_files) {
-		count++;
-	}
-	spin_unlock(&tty->files_lock);
-	if (tty->driver->type == TTY_DRIVER_TYPE_PTY &&
-	    tty->driver->subtype == PTY_TYPE_SLAVE &&
-	    tty->link && tty->link->count)
-		count++;
-	if (tty_port_kopened(tty->port))
-		kopen_count++;
-	if (tty->count != (count + kopen_count)) {
-		tty_warn(tty, "%s: tty->count(%d) != (#fd's(%d) + #kopen's(%d))\n",
-			 routine, tty->count, count, kopen_count);
-		return (count + kopen_count);
-	}
-#endif
-	return 0;
-}
-
-/**
- *	get_tty_driver		-	find device of a tty
- *	@device: device identifier
- *	@index: returns the index of the tty
- *
- *	This routine returns a tty driver structure, given a device number
- *	and also passes back the index number.
- *
- *	Locking: caller must hold tty_mutex
- */
-
-static struct tty_driver *get_tty_driver(dev_t device, int *index)
-{
-	struct tty_driver *p;
-
-	list_for_each_entry(p, &tty_drivers, tty_drivers) {
-		dev_t base = MKDEV(p->major, p->minor_start);
-		if (device < base || device >= base + p->num)
-			continue;
-		*index = device - base;
-		return tty_driver_kref_get(p);
-	}
-	return NULL;
-}
-
-/**
- *	tty_dev_name_to_number	-	return dev_t for device name
- *	@name: user space name of device under /dev
- *	@number: pointer to dev_t that this function will populate
- *
- *	This function converts device names like ttyS0 or ttyUSB1 into dev_t
- *	like (4, 64) or (188, 1). If no corresponding driver is registered then
- *	the function returns -ENODEV.
- *
- *	Locking: this acquires tty_mutex to protect the tty_drivers list from
- *		being modified while we are traversing it, and makes sure to
- *		release it before exiting.
- */
-int tty_dev_name_to_number(const char *name, dev_t *number)
-{
-	struct tty_driver *p;
-	int ret;
-	int index, prefix_length = 0;
-	const char *str;
-
-	for (str = name; *str && !isdigit(*str); str++)
-		;
-
-	if (!*str)
-		return -EINVAL;
-
-	ret = kstrtoint(str, 10, &index);
-	if (ret)
-		return ret;
-
-	prefix_length = str - name;
-	mutex_lock(&tty_mutex);
-
-	list_for_each_entry(p, &tty_drivers, tty_drivers)
-		if (prefix_length == strlen(p->name) && strncmp(name,
-					p->name, prefix_length) == 0) {
-			if (index < p->num) {
-				*number = MKDEV(p->major, p->minor_start + index);
-				goto out;
-			}
-		}
-
-	/* if here then driver wasn't found */
-	ret = -ENODEV;
-out:
-	mutex_unlock(&tty_mutex);
-	return ret;
-}
-EXPORT_SYMBOL_GPL(tty_dev_name_to_number);
-
-#ifdef CONFIG_CONSOLE_POLL
-
-/**
- *	tty_find_polling_driver	-	find device of a polled tty
- *	@name: name string to match
- *	@line: pointer to resulting tty line nr
- *
- *	This routine returns a tty driver structure, given a name
- *	and the condition that the tty driver is capable of polled
- *	operation.
- */
-struct tty_driver *tty_find_polling_driver(char *name, int *line)
-{
-	struct tty_driver *p, *res = NULL;
-	int tty_line = 0;
-	int len;
-	char *str, *stp;
-
-	for (str = name; *str; str++)
-		if ((*str >= '0' && *str <= '9') || *str == ',')
-			break;
-	if (!*str)
-		return NULL;
-
-	len = str - name;
-	tty_line = simple_strtoul(str, &str, 10);
-
-	mutex_lock(&tty_mutex);
-	/* Search through the tty devices to look for a match */
-	list_for_each_entry(p, &tty_drivers, tty_drivers) {
-		if (!len || strncmp(name, p->name, len) != 0)
-			continue;
-		stp = str;
-		if (*stp == ',')
-			stp++;
-		if (*stp == '\0')
-			stp = NULL;
-
-		if (tty_line >= 0 && tty_line < p->num && p->ops &&
-		    p->ops->poll_init && !p->ops->poll_init(p, tty_line, stp)) {
-			res = tty_driver_kref_get(p);
-			*line = tty_line;
-			break;
-		}
-	}
-	mutex_unlock(&tty_mutex);
-
-	return res;
-}
-EXPORT_SYMBOL_GPL(tty_find_polling_driver);
-#endif
-
-static ssize_t hung_up_tty_read(struct kiocb *iocb, struct iov_iter *to)
-{
-	return 0;
-}
-
-static ssize_t hung_up_tty_write(struct kiocb *iocb, struct iov_iter *from)
-{
-	return -EIO;
-}
-
-/* No kernel lock held - none needed ;) */
-static __poll_t hung_up_tty_poll(struct file *filp, poll_table *wait)
-{
-	return EPOLLIN | EPOLLOUT | EPOLLERR | EPOLLHUP | EPOLLRDNORM | EPOLLWRNORM;
-}
-
-static long hung_up_tty_ioctl(struct file *file, unsigned int cmd,
-		unsigned long arg)
-{
-	return cmd == TIOCSPGRP ? -ENOTTY : -EIO;
-}
-
-static long hung_up_tty_compat_ioctl(struct file *file,
-				     unsigned int cmd, unsigned long arg)
-{
-	return cmd == TIOCSPGRP ? -ENOTTY : -EIO;
-}
-
-static int hung_up_tty_fasync(int fd, struct file *file, int on)
-{
-	return -ENOTTY;
-}
-
-static void tty_show_fdinfo(struct seq_file *m, struct file *file)
-{
-	struct tty_struct *tty = file_tty(file);
-
-	if (tty && tty->ops && tty->ops->show_fdinfo)
-		tty->ops->show_fdinfo(tty, m);
-}
-
-static const struct file_operations tty_fops = {
-	.llseek		= no_llseek,
-	.read_iter	= tty_read,
-	.write_iter	= tty_write,
-	.splice_read	= generic_file_splice_read,
-	.splice_write	= iter_file_splice_write,
-	.poll		= tty_poll,
-	.unlocked_ioctl	= tty_ioctl,
-	.compat_ioctl	= tty_compat_ioctl,
-	.open		= tty_open,
-	.release	= tty_release,
-	.fasync		= tty_fasync,
-	.show_fdinfo	= tty_show_fdinfo,
-};
-
-static const struct file_operations console_fops = {
-	.llseek		= no_llseek,
-	.read_iter	= tty_read,
-	.write_iter	= redirected_tty_write,
-	.splice_read	= generic_file_splice_read,
-	.splice_write	= iter_file_splice_write,
-	.poll		= tty_poll,
-	.unlocked_ioctl	= tty_ioctl,
-	.compat_ioctl	= tty_compat_ioctl,
-	.open		= tty_open,
-	.release	= tty_release,
-	.fasync		= tty_fasync,
-};
-
-static const struct file_operations hung_up_tty_fops = {
-	.llseek		= no_llseek,
-	.read_iter	= hung_up_tty_read,
-	.write_iter	= hung_up_tty_write,
-	.poll		= hung_up_tty_poll,
-	.unlocked_ioctl	= hung_up_tty_ioctl,
-	.compat_ioctl	= hung_up_tty_compat_ioctl,
-	.release	= tty_release,
-	.fasync		= hung_up_tty_fasync,
-};
-
-static DEFINE_SPINLOCK(redirect_lock);
-static struct file *redirect;
-
-extern void tty_sysctl_init(void);
-
-/**
- *	tty_wakeup	-	request more data
- *	@tty: terminal
- *
- *	Internal and external helper for wakeups of tty. This function
- *	informs the line discipline if present that the driver is ready
- *	to receive more output data.
- */
-
-void tty_wakeup(struct tty_struct *tty)
-{
-	struct tty_ldisc *ld;
-
-	if (test_bit(TTY_DO_WRITE_WAKEUP, &tty->flags)) {
-		ld = tty_ldisc_ref(tty);
-		if (ld) {
-			if (ld->ops->write_wakeup)
-				ld->ops->write_wakeup(tty);
-			tty_ldisc_deref(ld);
-		}
-	}
-	wake_up_interruptible_poll(&tty->write_wait, EPOLLOUT);
-}
-
-EXPORT_SYMBOL_GPL(tty_wakeup);
-
-/**
- *	__tty_hangup		-	actual handler for hangup events
- *	@tty: tty device
- *
- *	This can be called by a "kworker" kernel thread.  That is process
- *	synchronous but doesn't hold any locks, so we need to make sure we
- *	have the appropriate locks for what we're doing.
- *
- *	The hangup event clears any pending redirections onto the hung up
- *	device. It ensures future writes will error and it does the needed
- *	line discipline hangup and signal delivery. The tty object itself
- *	remains intact.
- *
- *	Locking:
- *		BTM
- *		  redirect lock for undoing redirection
- *		  file list lock for manipulating list of ttys
- *		  tty_ldiscs_lock from called functions
- *		  termios_rwsem resetting termios data
- *		  tasklist_lock to walk task list for hangup event
- *		    ->siglock to protect ->signal/->sighand
- */
-static void __tty_hangup(struct tty_struct *tty, int exit_session)
-{
-	struct file *cons_filp = NULL;
-	struct file *filp, *f = NULL;
-	struct tty_file_private *priv;
-	int    closecount = 0, n;
-	int refs;
-
-	if (!tty)
-		return;
-
-
-	spin_lock(&redirect_lock);
-	if (redirect && file_tty(redirect) == tty) {
-		f = redirect;
-		redirect = NULL;
-	}
-	spin_unlock(&redirect_lock);
-
-	tty_lock(tty);
-
-	if (test_bit(TTY_HUPPED, &tty->flags)) {
-		tty_unlock(tty);
-		return;
-	}
-
-	/*
-	 * Some console devices aren't actually hung up for technical and
-	 * historical reasons, which can lead to indefinite interruptible
-	 * sleep in n_tty_read().  The following explicitly tells
-	 * n_tty_read() to abort readers.
-	 */
-	set_bit(TTY_HUPPING, &tty->flags);
-
-	/* inuse_filps is protected by the single tty lock,
-	   this really needs to change if we want to flush the
-	   workqueue with the lock held */
-	check_tty_count(tty, "tty_hangup");
-
-	spin_lock(&tty->files_lock);
-	/* This breaks for file handles being sent over AF_UNIX sockets ? */
-	list_for_each_entry(priv, &tty->tty_files, list) {
-		filp = priv->file;
-		if (filp->f_op->write_iter == redirected_tty_write)
-			cons_filp = filp;
-		if (filp->f_op->write_iter != tty_write)
-			continue;
-		closecount++;
-		__tty_fasync(-1, filp, 0);	/* can't block */
-		filp->f_op = &hung_up_tty_fops;
-	}
-	spin_unlock(&tty->files_lock);
-
-	refs = tty_signal_session_leader(tty, exit_session);
-	/* Account for the p->signal references we killed */
-	while (refs--)
-		tty_kref_put(tty);
-
-	tty_ldisc_hangup(tty, cons_filp != NULL);
-
-	spin_lock_irq(&tty->ctrl_lock);
-	clear_bit(TTY_THROTTLED, &tty->flags);
-	clear_bit(TTY_DO_WRITE_WAKEUP, &tty->flags);
-	put_pid(tty->session);
-	put_pid(tty->pgrp);
-	tty->session = NULL;
-	tty->pgrp = NULL;
-	tty->ctrl_status = 0;
-	spin_unlock_irq(&tty->ctrl_lock);
-
-	/*
-	 * If one of the devices matches a console pointer, we
-	 * cannot just call hangup() because that will cause
-	 * tty->count and state->count to go out of sync.
-	 * So we just call close() the right number of times.
-	 */
-	if (cons_filp) {
-		if (tty->ops->close)
-			for (n = 0; n < closecount; n++)
-				tty->ops->close(tty, cons_filp);
-	} else if (tty->ops->hangup)
-		tty->ops->hangup(tty);
-	/*
-	 * We don't want to have driver/ldisc interactions beyond the ones
-	 * we did here. The driver layer expects no calls after ->hangup()
-	 * from the ldisc side, which is now guaranteed.
-	 */
-	set_bit(TTY_HUPPED, &tty->flags);
-	clear_bit(TTY_HUPPING, &tty->flags);
-	tty_unlock(tty);
-
-	if (f)
-		fput(f);
-}
-
-static void do_tty_hangup(struct work_struct *work)
-{
-	struct tty_struct *tty =
-		container_of(work, struct tty_struct, hangup_work);
-
-	__tty_hangup(tty, 0);
-}
-
-/**
- *	tty_hangup		-	trigger a hangup event
- *	@tty: tty to hangup
- *
- *	A carrier loss (virtual or otherwise) has occurred on this like
- *	schedule a hangup sequence to run after this event.
- */
-
-void tty_hangup(struct tty_struct *tty)
-{
-	tty_debug_hangup(tty, "hangup\n");
-	schedule_work(&tty->hangup_work);
-}
-
-EXPORT_SYMBOL(tty_hangup);
-
-/**
- *	tty_vhangup		-	process vhangup
- *	@tty: tty to hangup
- *
- *	The user has asked via system call for the terminal to be hung up.
- *	We do this synchronously so that when the syscall returns the process
- *	is complete. That guarantee is necessary for security reasons.
- */
-
-void tty_vhangup(struct tty_struct *tty)
-{
-	tty_debug_hangup(tty, "vhangup\n");
-	__tty_hangup(tty, 0);
-}
-
-EXPORT_SYMBOL(tty_vhangup);
-
-
-/**
- *	tty_vhangup_self	-	process vhangup for own ctty
- *
- *	Perform a vhangup on the current controlling tty
- */
-
-void tty_vhangup_self(void)
-{
-	struct tty_struct *tty;
-
-	tty = get_current_tty();
-	if (tty) {
-		tty_vhangup(tty);
-		tty_kref_put(tty);
-	}
-}
-
-/**
- *	tty_vhangup_session		-	hangup session leader exit
- *	@tty: tty to hangup
- *
- *	The session leader is exiting and hanging up its controlling terminal.
- *	Every process in the foreground process group is signalled SIGHUP.
- *
- *	We do this synchronously so that when the syscall returns the process
- *	is complete. That guarantee is necessary for security reasons.
- */
-
-void tty_vhangup_session(struct tty_struct *tty)
-{
-	tty_debug_hangup(tty, "session hangup\n");
-	__tty_hangup(tty, 1);
-}
-
-/**
- *	tty_hung_up_p		-	was tty hung up
- *	@filp: file pointer of tty
- *
- *	Return true if the tty has been subject to a vhangup or a carrier
- *	loss
- */
-
-int tty_hung_up_p(struct file *filp)
-{
-	return (filp && filp->f_op == &hung_up_tty_fops);
-}
-
-EXPORT_SYMBOL(tty_hung_up_p);
-
-/**
- *	stop_tty	-	propagate flow control
- *	@tty: tty to stop
- *
- *	Perform flow control to the driver. May be called
- *	on an already stopped device and will not re-call the driver
- *	method.
- *
- *	This functionality is used by both the line disciplines for
- *	halting incoming flow and by the driver. It may therefore be
- *	called from any context, may be under the tty atomic_write_lock
- *	but not always.
- *
- *	Locking:
- *		flow_lock
- */
-
-void __stop_tty(struct tty_struct *tty)
-{
-	if (tty->stopped)
-		return;
-	tty->stopped = 1;
-	if (tty->ops->stop)
-		tty->ops->stop(tty);
-}
-
-void stop_tty(struct tty_struct *tty)
-{
-	unsigned long flags;
-
-	spin_lock_irqsave(&tty->flow_lock, flags);
-	__stop_tty(tty);
-	spin_unlock_irqrestore(&tty->flow_lock, flags);
-}
-EXPORT_SYMBOL(stop_tty);
-
-/**
- *	start_tty	-	propagate flow control
- *	@tty: tty to start
- *
- *	Start a tty that has been stopped if at all possible. If this
- *	tty was previous stopped and is now being started, the driver
- *	start method is invoked and the line discipline woken.
- *
- *	Locking:
- *		flow_lock
- */
-
-void __start_tty(struct tty_struct *tty)
-{
-	if (!tty->stopped || tty->flow_stopped)
-		return;
-	tty->stopped = 0;
-	if (tty->ops->start)
-		tty->ops->start(tty);
-	tty_wakeup(tty);
-}
-
-void start_tty(struct tty_struct *tty)
-{
-	unsigned long flags;
-
-	spin_lock_irqsave(&tty->flow_lock, flags);
-	__start_tty(tty);
-	spin_unlock_irqrestore(&tty->flow_lock, flags);
-}
-EXPORT_SYMBOL(start_tty);
-
-static void tty_update_time(struct timespec64 *time)
-{
-	time64_t sec = ktime_get_real_seconds();
-
-	/*
-	 * We only care if the two values differ in anything other than the
-	 * lower three bits (i.e every 8 seconds).  If so, then we can update
-	 * the time of the tty device, otherwise it could be construded as a
-	 * security leak to let userspace know the exact timing of the tty.
-	 */
-	if ((sec ^ time->tv_sec) & ~7)
-		time->tv_sec = sec;
-}
-
-/*
- * Iterate on the ldisc ->read() function until we've gotten all
- * the data the ldisc has for us.
- *
- * The "cookie" is something that the ldisc read function can fill
- * in to let us know that there is more data to be had.
- *
- * We promise to continue to call the ldisc until it stops returning
- * data or clears the cookie. The cookie may be something that the
- * ldisc maintains state for and needs to free.
- */
-static int iterate_tty_read(struct tty_ldisc *ld, struct tty_struct *tty,
-		struct file *file, struct iov_iter *to)
-{
-	int retval = 0;
-	void *cookie = NULL;
-	unsigned long offset = 0;
-	char kernel_buf[64];
-	size_t count = iov_iter_count(to);
-
-	do {
-		int size, copied;
-
-		size = count > sizeof(kernel_buf) ? sizeof(kernel_buf) : count;
-		size = ld->ops->read(tty, file, kernel_buf, size, &cookie, offset);
-		if (!size)
-			break;
-
-		if (size < 0) {
-			/* Did we have an earlier error (ie -EFAULT)? */
-			if (retval)
-				break;
-			retval = size;
-
-			/*
-			 * -EOVERFLOW means we didn't have enough space
-			 * for a whole packet, and we shouldn't return
-			 * a partial result.
-			 */
-			if (retval == -EOVERFLOW)
-				offset = 0;
-			break;
-		}
-
-		copied = copy_to_iter(kernel_buf, size, to);
-		offset += copied;
-		count -= copied;
-
-		/*
-		 * If the user copy failed, we still need to do another ->read()
-		 * call if we had a cookie to let the ldisc clear up.
-		 *
-		 * But make sure size is zeroed.
-		 */
-		if (unlikely(copied != size)) {
-			count = 0;
-			retval = -EFAULT;
-		}
-	} while (cookie);
-
-	/* We always clear tty buffer in case they contained passwords */
-	memzero_explicit(kernel_buf, sizeof(kernel_buf));
-	return offset ? offset : retval;
-}
-
-
-/**
- *	tty_read	-	read method for tty device files
- *	@file: pointer to tty file
- *	@buf: user buffer
- *	@count: size of user buffer
- *	@ppos: unused
- *
- *	Perform the read system call function on this terminal device. Checks
- *	for hung up devices before calling the line discipline method.
- *
- *	Locking:
- *		Locks the line discipline internally while needed. Multiple
- *	read calls may be outstanding in parallel.
- */
-
-static ssize_t tty_read(struct kiocb *iocb, struct iov_iter *to)
-{
-	int i;
-	struct file *file = iocb->ki_filp;
-	struct inode *inode = file_inode(file);
-	struct tty_struct *tty = file_tty(file);
-	struct tty_ldisc *ld;
-
-	if (tty_paranoia_check(tty, inode, "tty_read"))
-		return -EIO;
-	if (!tty || tty_io_error(tty))
-		return -EIO;
-
-	/* We want to wait for the line discipline to sort out in this
-	   situation */
-	ld = tty_ldisc_ref_wait(tty);
-	if (!ld)
-		return hung_up_tty_read(iocb, to);
-	i = -EIO;
-	if (ld->ops->read)
-		i = iterate_tty_read(ld, tty, file, to);
-	tty_ldisc_deref(ld);
-
-	if (i > 0)
-		tty_update_time(&inode->i_atime);
-
-	return i;
-}
-
-static void tty_write_unlock(struct tty_struct *tty)
-{
-	mutex_unlock(&tty->atomic_write_lock);
-	wake_up_interruptible_poll(&tty->write_wait, EPOLLOUT);
-}
-
-static int tty_write_lock(struct tty_struct *tty, int ndelay)
-{
-	if (!mutex_trylock(&tty->atomic_write_lock)) {
-		if (ndelay)
-			return -EAGAIN;
-		if (mutex_lock_interruptible(&tty->atomic_write_lock))
-			return -ERESTARTSYS;
-	}
-	return 0;
-}
-
-/*
- * Split writes up in sane blocksizes to avoid
- * denial-of-service type attacks
- */
-static inline ssize_t do_tty_write(
-	ssize_t (*write)(struct tty_struct *, struct file *, const unsigned char *, size_t),
-	struct tty_struct *tty,
-	struct file *file,
-	struct iov_iter *from)
-{
-	size_t count = iov_iter_count(from);
-	ssize_t ret, written = 0;
-	unsigned int chunk;
-
-	ret = tty_write_lock(tty, file->f_flags & O_NDELAY);
-	if (ret < 0)
-		return ret;
-
-	/*
-	 * We chunk up writes into a temporary buffer. This
-	 * simplifies low-level drivers immensely, since they
-	 * don't have locking issues and user mode accesses.
-	 *
-	 * But if TTY_NO_WRITE_SPLIT is set, we should use a
-	 * big chunk-size..
-	 *
-	 * The default chunk-size is 2kB, because the NTTY
-	 * layer has problems with bigger chunks. It will
-	 * claim to be able to handle more characters than
-	 * it actually does.
-	 *
-	 * FIXME: This can probably go away now except that 64K chunks
-	 * are too likely to fail unless switched to vmalloc...
-	 */
-	chunk = 2048;
-	if (test_bit(TTY_NO_WRITE_SPLIT, &tty->flags))
-		chunk = 65536;
-	if (count < chunk)
-		chunk = count;
-
-	/* write_buf/write_cnt is protected by the atomic_write_lock mutex */
-	if (tty->write_cnt < chunk) {
-		unsigned char *buf_chunk;
-
-		if (chunk < 1024)
-			chunk = 1024;
-
-		buf_chunk = kmalloc(chunk, GFP_KERNEL);
-		if (!buf_chunk) {
-			ret = -ENOMEM;
-			goto out;
-		}
-		kfree(tty->write_buf);
-		tty->write_cnt = chunk;
-		tty->write_buf = buf_chunk;
-	}
-
-	/* Do the write .. */
-	for (;;) {
-		size_t size = count;
-		if (size > chunk)
-			size = chunk;
-
-		ret = -EFAULT;
-		if (copy_from_iter(tty->write_buf, size, from) != size)
-			break;
-
-		ret = write(tty, file, tty->write_buf, size);
-		if (ret <= 0)
-			break;
-
-		written += ret;
-		if (ret > size)
-			break;
-
-		/* FIXME! Have Al check this! */
-		if (ret != size)
-			iov_iter_revert(from, size-ret);
-
-		count -= ret;
-		if (!count)
-			break;
-		ret = -ERESTARTSYS;
-		if (signal_pending(current))
-			break;
-		cond_resched();
-	}
-	if (written) {
-		tty_update_time(&file_inode(file)->i_mtime);
-		ret = written;
-	}
-out:
-	tty_write_unlock(tty);
-	return ret;
-}
-
-/**
- * tty_write_message - write a message to a certain tty, not just the console.
- * @tty: the destination tty_struct
- * @msg: the message to write
- *
- * This is used for messages that need to be redirected to a specific tty.
- * We don't put it into the syslog queue right now maybe in the future if
- * really needed.
- *
- * We must still hold the BTM and test the CLOSING flag for the moment.
- */
-
-void tty_write_message(struct tty_struct *tty, char *msg)
-{
-	if (tty) {
-		mutex_lock(&tty->atomic_write_lock);
-		tty_lock(tty);
-		if (tty->ops->write && tty->count > 0)
-			tty->ops->write(tty, msg, strlen(msg));
-		tty_unlock(tty);
-		tty_write_unlock(tty);
-	}
-	return;
-}
-
-
-/**
- *	tty_write		-	write method for tty device file
- *	@file: tty file pointer
- *	@buf: user data to write
- *	@count: bytes to write
- *	@ppos: unused
- *
- *	Write data to a tty device via the line discipline.
- *
- *	Locking:
- *		Locks the line discipline as required
- *		Writes to the tty driver are serialized by the atomic_write_lock
- *	and are then processed in chunks to the device. The line discipline
- *	write method will not be invoked in parallel for each device.
- */
-
-static ssize_t file_tty_write(struct file *file, struct kiocb *iocb, struct iov_iter *from)
-{
-	struct tty_struct *tty = file_tty(file);
- 	struct tty_ldisc *ld;
-	ssize_t ret;
-
-	if (tty_paranoia_check(tty, file_inode(file), "tty_write"))
-		return -EIO;
-	if (!tty || !tty->ops->write ||	tty_io_error(tty))
-			return -EIO;
-	/* Short term debug to catch buggy drivers */
-	if (tty->ops->write_room == NULL)
-		tty_err(tty, "missing write_room method\n");
-	ld = tty_ldisc_ref_wait(tty);
-	if (!ld)
-		return hung_up_tty_write(iocb, from);
-	if (!ld->ops->write)
-		ret = -EIO;
-	else
-		ret = do_tty_write(ld->ops->write, tty, file, from);
-	tty_ldisc_deref(ld);
-	return ret;
-}
-
-static ssize_t tty_write(struct kiocb *iocb, struct iov_iter *from)
-{
-	return file_tty_write(iocb->ki_filp, iocb, from);
-}
-
-ssize_t redirected_tty_write(struct kiocb *iocb, struct iov_iter *iter)
-{
-	struct file *p = NULL;
-
-	spin_lock(&redirect_lock);
-	if (redirect)
-		p = get_file(redirect);
-	spin_unlock(&redirect_lock);
-
-	/*
-	 * We know the redirected tty is just another tty, we can can
-	 * call file_tty_write() directly with that file pointer.
-	 */
-	if (p) {
-		ssize_t res;
-		res = file_tty_write(p, iocb, iter);
-		fput(p);
-		return res;
-	}
-	return tty_write(iocb, iter);
-}
-
-/**
- *	tty_send_xchar	-	send priority character
- *
- *	Send a high priority character to the tty even if stopped
- *
- *	Locking: none for xchar method, write ordering for write method.
- */
-
-int tty_send_xchar(struct tty_struct *tty, char ch)
-{
-	int	was_stopped = tty->stopped;
-
-	if (tty->ops->send_xchar) {
-		down_read(&tty->termios_rwsem);
-		tty->ops->send_xchar(tty, ch);
-		up_read(&tty->termios_rwsem);
-		return 0;
-	}
-
-	if (tty_write_lock(tty, 0) < 0)
-		return -ERESTARTSYS;
-
-	down_read(&tty->termios_rwsem);
-	if (was_stopped)
-		start_tty(tty);
-	tty->ops->write(tty, &ch, 1);
-	if (was_stopped)
-		stop_tty(tty);
-	up_read(&tty->termios_rwsem);
-	tty_write_unlock(tty);
-	return 0;
-}
-
-static char ptychar[] = "pqrstuvwxyzabcde";
-
-/**
- *	pty_line_name	-	generate name for a pty
- *	@driver: the tty driver in use
- *	@index: the minor number
- *	@p: output buffer of at least 6 bytes
- *
- *	Generate a name from a driver reference and write it to the output
- *	buffer.
- *
- *	Locking: None
- */
-static void pty_line_name(struct tty_driver *driver, int index, char *p)
-{
-	int i = index + driver->name_base;
-	/* ->name is initialized to "ttyp", but "tty" is expected */
-	sprintf(p, "%s%c%x",
-		driver->subtype == PTY_TYPE_SLAVE ? "tty" : driver->name,
-		ptychar[i >> 4 & 0xf], i & 0xf);
-}
-
-/**
- *	tty_line_name	-	generate name for a tty
- *	@driver: the tty driver in use
- *	@index: the minor number
- *	@p: output buffer of at least 7 bytes
- *
- *	Generate a name from a driver reference and write it to the output
- *	buffer.
- *
- *	Locking: None
- */
-static ssize_t tty_line_name(struct tty_driver *driver, int index, char *p)
-{
-	if (driver->flags & TTY_DRIVER_UNNUMBERED_NODE)
-		return sprintf(p, "%s", driver->name);
-	else
-		return sprintf(p, "%s%d", driver->name,
-			       index + driver->name_base);
-}
-
-/**
- *	tty_driver_lookup_tty() - find an existing tty, if any
- *	@driver: the driver for the tty
- *	@idx:	 the minor number
- *
- *	Return the tty, if found. If not found, return NULL or ERR_PTR() if the
- *	driver lookup() method returns an error.
- *
- *	Locking: tty_mutex must be held. If the tty is found, bump the tty kref.
- */
-static struct tty_struct *tty_driver_lookup_tty(struct tty_driver *driver,
-		struct file *file, int idx)
-{
-	struct tty_struct *tty;
-
-	if (driver->ops->lookup)
-		if (!file)
-			tty = ERR_PTR(-EIO);
-		else
-			tty = driver->ops->lookup(driver, file, idx);
-	else
-		tty = driver->ttys[idx];
-
-	if (!IS_ERR(tty))
-		tty_kref_get(tty);
-	return tty;
-}
-
-/**
- *	tty_init_termios	-  helper for termios setup
- *	@tty: the tty to set up
- *
- *	Initialise the termios structure for this tty. This runs under
- *	the tty_mutex currently so we can be relaxed about ordering.
- */
-
-void tty_init_termios(struct tty_struct *tty)
-{
-	struct ktermios *tp;
-	int idx = tty->index;
-
-	if (tty->driver->flags & TTY_DRIVER_RESET_TERMIOS)
-		tty->termios = tty->driver->init_termios;
-	else {
-		/* Check for lazy saved data */
-		tp = tty->driver->termios[idx];
-		if (tp != NULL) {
-			tty->termios = *tp;
-			tty->termios.c_line  = tty->driver->init_termios.c_line;
-		} else
-			tty->termios = tty->driver->init_termios;
-	}
-	/* Compatibility until drivers always set this */
-	tty->termios.c_ispeed = tty_termios_input_baud_rate(&tty->termios);
-	tty->termios.c_ospeed = tty_termios_baud_rate(&tty->termios);
-}
-EXPORT_SYMBOL_GPL(tty_init_termios);
-
-int tty_standard_install(struct tty_driver *driver, struct tty_struct *tty)
-{
-	tty_init_termios(tty);
-	tty_driver_kref_get(driver);
-	tty->count++;
-	driver->ttys[tty->index] = tty;
-	return 0;
-}
-EXPORT_SYMBOL_GPL(tty_standard_install);
-
-/**
- *	tty_driver_install_tty() - install a tty entry in the driver
- *	@driver: the driver for the tty
- *	@tty: the tty
- *
- *	Install a tty object into the driver tables. The tty->index field
- *	will be set by the time this is called. This method is responsible
- *	for ensuring any need additional structures are allocated and
- *	configured.
- *
- *	Locking: tty_mutex for now
- */
-static int tty_driver_install_tty(struct tty_driver *driver,
-						struct tty_struct *tty)
-{
-	return driver->ops->install ? driver->ops->install(driver, tty) :
-		tty_standard_install(driver, tty);
-}
-
-/**
- *	tty_driver_remove_tty() - remove a tty from the driver tables
- *	@driver: the driver for the tty
- *	@tty: tty to remove
- *
- *	Remvoe a tty object from the driver tables. The tty->index field
- *	will be set by the time this is called.
- *
- *	Locking: tty_mutex for now
- */
-static void tty_driver_remove_tty(struct tty_driver *driver, struct tty_struct *tty)
-{
-	if (driver->ops->remove)
-		driver->ops->remove(driver, tty);
-	else
-		driver->ttys[tty->index] = NULL;
-}
-
-/**
- *	tty_reopen()	- fast re-open of an open tty
- *	@tty: the tty to open
- *
- *	Return 0 on success, -errno on error.
- *	Re-opens on master ptys are not allowed and return -EIO.
- *
- *	Locking: Caller must hold tty_lock
- */
-static int tty_reopen(struct tty_struct *tty)
-{
-	struct tty_driver *driver = tty->driver;
-	struct tty_ldisc *ld;
-	int retval = 0;
-
-	if (driver->type == TTY_DRIVER_TYPE_PTY &&
-	    driver->subtype == PTY_TYPE_MASTER)
-		return -EIO;
-
-	if (!tty->count)
-		return -EAGAIN;
-
-	if (test_bit(TTY_EXCLUSIVE, &tty->flags) && !capable(CAP_SYS_ADMIN))
-		return -EBUSY;
-
-	ld = tty_ldisc_ref_wait(tty);
-	if (ld) {
-		tty_ldisc_deref(ld);
-	} else {
-		retval = tty_ldisc_lock(tty, 5 * HZ);
-		if (retval)
-			return retval;
-
-		if (!tty->ldisc)
-			retval = tty_ldisc_reinit(tty, tty->termios.c_line);
-		tty_ldisc_unlock(tty);
-	}
-
-	if (retval == 0)
-		tty->count++;
-
-	return retval;
-}
-
-/**
- *	tty_init_dev		-	initialise a tty device
- *	@driver: tty driver we are opening a device on
- *	@idx: device index
- *
- *	Prepare a tty device. This may not be a "new" clean device but
- *	could also be an active device. The pty drivers require special
- *	handling because of this.
- *
- *	Locking:
- *		The function is called under the tty_mutex, which
- *	protects us from the tty struct or driver itself going away.
- *
- *	On exit the tty device has the line discipline attached and
- *	a reference count of 1. If a pair was created for pty/tty use
- *	and the other was a pty master then it too has a reference count of 1.
- *
- * WSH 06/09/97: Rewritten to remove races and properly clean up after a
- * failed open.  The new code protects the open with a mutex, so it's
- * really quite straightforward.  The mutex locking can probably be
- * relaxed for the (most common) case of reopening a tty.
- *
- *	Return: returned tty structure
- */
-
-struct tty_struct *tty_init_dev(struct tty_driver *driver, int idx)
-{
-	struct tty_struct *tty;
-	int retval;
-
-	/*
-	 * First time open is complex, especially for PTY devices.
-	 * This code guarantees that either everything succeeds and the
-	 * TTY is ready for operation, or else the table slots are vacated
-	 * and the allocated memory released.  (Except that the termios
-	 * may be retained.)
-	 */
-
-	if (!try_module_get(driver->owner))
-		return ERR_PTR(-ENODEV);
-
-	tty = alloc_tty_struct(driver, idx);
-	if (!tty) {
-		retval = -ENOMEM;
-		goto err_module_put;
-	}
-
-	tty_lock(tty);
-	retval = tty_driver_install_tty(driver, tty);
-	if (retval < 0)
-		goto err_free_tty;
-
-	if (!tty->port)
-		tty->port = driver->ports[idx];
-
-	if (WARN_RATELIMIT(!tty->port,
-			"%s: %s driver does not set tty->port. This would crash the kernel. Fix the driver!\n",
-			__func__, tty->driver->name)) {
-		retval = -EINVAL;
-		goto err_release_lock;
-	}
-
-	retval = tty_ldisc_lock(tty, 5 * HZ);
-	if (retval)
-		goto err_release_lock;
-	tty->port->itty = tty;
-
-	/*
-	 * Structures all installed ... call the ldisc open routines.
-	 * If we fail here just call release_tty to clean up.  No need
-	 * to decrement the use counts, as release_tty doesn't care.
-	 */
-	retval = tty_ldisc_setup(tty, tty->link);
-	if (retval)
-		goto err_release_tty;
-	tty_ldisc_unlock(tty);
-	/* Return the tty locked so that it cannot vanish under the caller */
-	return tty;
-
-err_free_tty:
-	tty_unlock(tty);
-	free_tty_struct(tty);
-err_module_put:
-	module_put(driver->owner);
-	return ERR_PTR(retval);
-
-	/* call the tty release_tty routine to clean out this slot */
-err_release_tty:
-	tty_ldisc_unlock(tty);
-	tty_info_ratelimited(tty, "ldisc open failed (%d), clearing slot %d\n",
-			     retval, idx);
-err_release_lock:
-	tty_unlock(tty);
-	release_tty(tty, idx);
-	return ERR_PTR(retval);
-}
-
-/**
- * tty_save_termios() - save tty termios data in driver table
- * @tty: tty whose termios data to save
- *
- * Locking: Caller guarantees serialisation with tty_init_termios().
- */
-void tty_save_termios(struct tty_struct *tty)
-{
-	struct ktermios *tp;
-	int idx = tty->index;
-
-	/* If the port is going to reset then it has no termios to save */
-	if (tty->driver->flags & TTY_DRIVER_RESET_TERMIOS)
-		return;
-
-	/* Stash the termios data */
-	tp = tty->driver->termios[idx];
-	if (tp == NULL) {
-		tp = kmalloc(sizeof(*tp), GFP_KERNEL);
-		if (tp == NULL)
-			return;
-		tty->driver->termios[idx] = tp;
-	}
-	*tp = tty->termios;
-}
-EXPORT_SYMBOL_GPL(tty_save_termios);
-
-/**
- *	tty_flush_works		-	flush all works of a tty/pty pair
- *	@tty: tty device to flush works for (or either end of a pty pair)
- *
- *	Sync flush all works belonging to @tty (and the 'other' tty).
- */
-static void tty_flush_works(struct tty_struct *tty)
-{
-	flush_work(&tty->SAK_work);
-	flush_work(&tty->hangup_work);
-	if (tty->link) {
-		flush_work(&tty->link->SAK_work);
-		flush_work(&tty->link->hangup_work);
-	}
-}
-
-/**
- *	release_one_tty		-	release tty structure memory
- *	@work: work of tty we are obliterating
- *
- *	Releases memory associated with a tty structure, and clears out the
- *	driver table slots. This function is called when a device is no longer
- *	in use. It also gets called when setup of a device fails.
- *
- *	Locking:
- *		takes the file list lock internally when working on the list
- *	of ttys that the driver keeps.
- *
- *	This method gets called from a work queue so that the driver private
- *	cleanup ops can sleep (needed for USB at least)
- */
-static void release_one_tty(struct work_struct *work)
-{
-	struct tty_struct *tty =
-		container_of(work, struct tty_struct, hangup_work);
-	struct tty_driver *driver = tty->driver;
-	struct module *owner = driver->owner;
-
-	if (tty->ops->cleanup)
-		tty->ops->cleanup(tty);
-
-	tty->magic = 0;
-	tty_driver_kref_put(driver);
-	module_put(owner);
-
-	spin_lock(&tty->files_lock);
-	list_del_init(&tty->tty_files);
-	spin_unlock(&tty->files_lock);
-
-	put_pid(tty->pgrp);
-	put_pid(tty->session);
-	free_tty_struct(tty);
-}
-
-static void queue_release_one_tty(struct kref *kref)
-{
-	struct tty_struct *tty = container_of(kref, struct tty_struct, kref);
-
-	/* The hangup queue is now free so we can reuse it rather than
-	   waste a chunk of memory for each port */
-	INIT_WORK(&tty->hangup_work, release_one_tty);
-	schedule_work(&tty->hangup_work);
-}
-
-/**
- *	tty_kref_put		-	release a tty kref
- *	@tty: tty device
- *
- *	Release a reference to a tty device and if need be let the kref
- *	layer destruct the object for us
- */
-
-void tty_kref_put(struct tty_struct *tty)
-{
-	if (tty)
-		kref_put(&tty->kref, queue_release_one_tty);
-}
-EXPORT_SYMBOL(tty_kref_put);
-
-/**
- *	release_tty		-	release tty structure memory
- *
- *	Release both @tty and a possible linked partner (think pty pair),
- *	and decrement the refcount of the backing module.
- *
- *	Locking:
- *		tty_mutex
- *		takes the file list lock internally when working on the list
- *	of ttys that the driver keeps.
- *
- */
-static void release_tty(struct tty_struct *tty, int idx)
-{
-	/* This should always be true but check for the moment */
-	WARN_ON(tty->index != idx);
-	WARN_ON(!mutex_is_locked(&tty_mutex));
-	if (tty->ops->shutdown)
-		tty->ops->shutdown(tty);
-	tty_save_termios(tty);
-	tty_driver_remove_tty(tty->driver, tty);
-	if (tty->port)
-		tty->port->itty = NULL;
-	if (tty->link)
-		tty->link->port->itty = NULL;
-	if (tty->port)
-		tty_buffer_cancel_work(tty->port);
-	if (tty->link)
-		tty_buffer_cancel_work(tty->link->port);
-
-	tty_kref_put(tty->link);
-	tty_kref_put(tty);
-}
-
-/**
- *	tty_release_checks - check a tty before real release
- *	@tty: tty to check
- *	@idx: index of the tty
- *
- *	Performs some paranoid checking before true release of the @tty.
- *	This is a no-op unless TTY_PARANOIA_CHECK is defined.
- */
-static int tty_release_checks(struct tty_struct *tty, int idx)
-{
-#ifdef TTY_PARANOIA_CHECK
-	if (idx < 0 || idx >= tty->driver->num) {
-		tty_debug(tty, "bad idx %d\n", idx);
-		return -1;
-	}
-
-	/* not much to check for devpts */
-	if (tty->driver->flags & TTY_DRIVER_DEVPTS_MEM)
-		return 0;
-
-	if (tty != tty->driver->ttys[idx]) {
-		tty_debug(tty, "bad driver table[%d] = %p\n",
-			  idx, tty->driver->ttys[idx]);
-		return -1;
-	}
-	if (tty->driver->other) {
-		struct tty_struct *o_tty = tty->link;
-
-		if (o_tty != tty->driver->other->ttys[idx]) {
-			tty_debug(tty, "bad other table[%d] = %p\n",
-				  idx, tty->driver->other->ttys[idx]);
-			return -1;
-		}
-		if (o_tty->link != tty) {
-			tty_debug(tty, "bad link = %p\n", o_tty->link);
-			return -1;
-		}
-	}
-#endif
-	return 0;
-}
-
-/**
- *      tty_kclose      -       closes tty opened by tty_kopen
- *      @tty: tty device
- *
- *      Performs the final steps to release and free a tty device. It is the
- *      same as tty_release_struct except that it also resets TTY_PORT_KOPENED
- *      flag on tty->port.
- */
-void tty_kclose(struct tty_struct *tty)
-{
-	/*
-	 * Ask the line discipline code to release its structures
-	 */
-	tty_ldisc_release(tty);
-
-	/* Wait for pending work before tty destruction commmences */
-	tty_flush_works(tty);
-
-	tty_debug_hangup(tty, "freeing structure\n");
-	/*
-	 * The release_tty function takes care of the details of clearing
-	 * the slots and preserving the termios structure.
-	 */
-	mutex_lock(&tty_mutex);
-	tty_port_set_kopened(tty->port, 0);
-	release_tty(tty, tty->index);
-	mutex_unlock(&tty_mutex);
-}
-EXPORT_SYMBOL_GPL(tty_kclose);
-
-/**
- *	tty_release_struct	-	release a tty struct
- *	@tty: tty device
- *	@idx: index of the tty
- *
- *	Performs the final steps to release and free a tty device. It is
- *	roughly the reverse of tty_init_dev.
- */
-void tty_release_struct(struct tty_struct *tty, int idx)
-{
-	/*
-	 * Ask the line discipline code to release its structures
-	 */
-	tty_ldisc_release(tty);
-
-	/* Wait for pending work before tty destruction commmences */
-	tty_flush_works(tty);
-
-	tty_debug_hangup(tty, "freeing structure\n");
-	/*
-	 * The release_tty function takes care of the details of clearing
-	 * the slots and preserving the termios structure.
-	 */
-	mutex_lock(&tty_mutex);
-	release_tty(tty, idx);
-	mutex_unlock(&tty_mutex);
-}
-EXPORT_SYMBOL_GPL(tty_release_struct);
-
-/**
- *	tty_release		-	vfs callback for close
- *	@inode: inode of tty
- *	@filp: file pointer for handle to tty
- *
- *	Called the last time each file handle is closed that references
- *	this tty. There may however be several such references.
- *
- *	Locking:
- *		Takes bkl. See tty_release_dev
- *
- * Even releasing the tty structures is a tricky business.. We have
- * to be very careful that the structures are all released at the
- * same time, as interrupts might otherwise get the wrong pointers.
- *
- * WSH 09/09/97: rewritten to avoid some nasty race conditions that could
- * lead to double frees or releasing memory still in use.
- */
-
-int tty_release(struct inode *inode, struct file *filp)
-{
-	struct tty_struct *tty = file_tty(filp);
-	struct tty_struct *o_tty = NULL;
-	int	do_sleep, final;
-	int	idx;
-	long	timeout = 0;
-	int	once = 1;
-
-	if (tty_paranoia_check(tty, inode, __func__))
-		return 0;
-
-	tty_lock(tty);
-	check_tty_count(tty, __func__);
-
-	__tty_fasync(-1, filp, 0);
-
-	idx = tty->index;
-	if (tty->driver->type == TTY_DRIVER_TYPE_PTY &&
-	    tty->driver->subtype == PTY_TYPE_MASTER)
-		o_tty = tty->link;
-
-	if (tty_release_checks(tty, idx)) {
-		tty_unlock(tty);
-		return 0;
-	}
-
-	tty_debug_hangup(tty, "releasing (count=%d)\n", tty->count);
-
-	if (tty->ops->close)
-		tty->ops->close(tty, filp);
-
-	/* If tty is pty master, lock the slave pty (stable lock order) */
-	tty_lock_slave(o_tty);
-
-	/*
-	 * Sanity check: if tty->count is going to zero, there shouldn't be
-	 * any waiters on tty->read_wait or tty->write_wait.  We test the
-	 * wait queues and kick everyone out _before_ actually starting to
-	 * close.  This ensures that we won't block while releasing the tty
-	 * structure.
-	 *
-	 * The test for the o_tty closing is necessary, since the master and
-	 * slave sides may close in any order.  If the slave side closes out
-	 * first, its count will be one, since the master side holds an open.
-	 * Thus this test wouldn't be triggered at the time the slave closed,
-	 * so we do it now.
-	 */
-	while (1) {
-		do_sleep = 0;
-
-		if (tty->count <= 1) {
-			if (waitqueue_active(&tty->read_wait)) {
-				wake_up_poll(&tty->read_wait, EPOLLIN);
-				do_sleep++;
-			}
-			if (waitqueue_active(&tty->write_wait)) {
-				wake_up_poll(&tty->write_wait, EPOLLOUT);
-				do_sleep++;
-			}
-		}
-		if (o_tty && o_tty->count <= 1) {
-			if (waitqueue_active(&o_tty->read_wait)) {
-				wake_up_poll(&o_tty->read_wait, EPOLLIN);
-				do_sleep++;
-			}
-			if (waitqueue_active(&o_tty->write_wait)) {
-				wake_up_poll(&o_tty->write_wait, EPOLLOUT);
-				do_sleep++;
-			}
-		}
-		if (!do_sleep)
-			break;
-
-		if (once) {
-			once = 0;
-			tty_warn(tty, "read/write wait queue active!\n");
-		}
-		schedule_timeout_killable(timeout);
-		if (timeout < 120 * HZ)
-			timeout = 2 * timeout + 1;
-		else
-			timeout = MAX_SCHEDULE_TIMEOUT;
-	}
-
-	if (o_tty) {
-		if (--o_tty->count < 0) {
-			tty_warn(tty, "bad slave count (%d)\n", o_tty->count);
-			o_tty->count = 0;
-		}
-	}
-	if (--tty->count < 0) {
-		tty_warn(tty, "bad tty->count (%d)\n", tty->count);
-		tty->count = 0;
-	}
-
-	/*
-	 * We've decremented tty->count, so we need to remove this file
-	 * descriptor off the tty->tty_files list; this serves two
-	 * purposes:
-	 *  - check_tty_count sees the correct number of file descriptors
-	 *    associated with this tty.
-	 *  - do_tty_hangup no longer sees this file descriptor as
-	 *    something that needs to be handled for hangups.
-	 */
-	tty_del_file(filp);
-
-	/*
-	 * Perform some housekeeping before deciding whether to return.
-	 *
-	 * If _either_ side is closing, make sure there aren't any
-	 * processes that still think tty or o_tty is their controlling
-	 * tty.
-	 */
-	if (!tty->count) {
-		read_lock(&tasklist_lock);
-		session_clear_tty(tty->session);
-		if (o_tty)
-			session_clear_tty(o_tty->session);
-		read_unlock(&tasklist_lock);
-	}
-
-	/* check whether both sides are closing ... */
-	final = !tty->count && !(o_tty && o_tty->count);
-
-	tty_unlock_slave(o_tty);
-	tty_unlock(tty);
-
-	/* At this point, the tty->count == 0 should ensure a dead tty
-	   cannot be re-opened by a racing opener */
-
-	if (!final)
-		return 0;
-
-	tty_debug_hangup(tty, "final close\n");
-
-	tty_release_struct(tty, idx);
-	return 0;
-}
-
-/**
- *	tty_open_current_tty - get locked tty of current task
- *	@device: device number
- *	@filp: file pointer to tty
- *	@return: locked tty of the current task iff @device is /dev/tty
- *
- *	Performs a re-open of the current task's controlling tty.
- *
- *	We cannot return driver and index like for the other nodes because
- *	devpts will not work then. It expects inodes to be from devpts FS.
- */
-static struct tty_struct *tty_open_current_tty(dev_t device, struct file *filp)
-{
-	struct tty_struct *tty;
-	int retval;
-
-	if (device != MKDEV(TTYAUX_MAJOR, 0))
-		return NULL;
-
-	tty = get_current_tty();
-	if (!tty)
-		return ERR_PTR(-ENXIO);
-
-	filp->f_flags |= O_NONBLOCK; /* Don't let /dev/tty block */
-	/* noctty = 1; */
-	tty_lock(tty);
-	tty_kref_put(tty);	/* safe to drop the kref now */
-
-	retval = tty_reopen(tty);
-	if (retval < 0) {
-		tty_unlock(tty);
-		tty = ERR_PTR(retval);
-	}
-	return tty;
-}
-
-/**
- *	tty_lookup_driver - lookup a tty driver for a given device file
- *	@device: device number
- *	@filp: file pointer to tty
- *	@index: index for the device in the @return driver
- *	@return: driver for this inode (with increased refcount)
- *
- * 	If @return is not erroneous, the caller is responsible to decrement the
- * 	refcount by tty_driver_kref_put.
- *
- *	Locking: tty_mutex protects get_tty_driver
- */
-static struct tty_driver *tty_lookup_driver(dev_t device, struct file *filp,
-		int *index)
-{
-	struct tty_driver *driver = NULL;
-
-	switch (device) {
-#ifdef CONFIG_VT
-	case MKDEV(TTY_MAJOR, 0): {
-		extern struct tty_driver *console_driver;
-		driver = tty_driver_kref_get(console_driver);
-		*index = fg_console;
-		break;
-	}
-#endif
-	case MKDEV(TTYAUX_MAJOR, 1): {
-		struct tty_driver *console_driver = console_device(index);
-		if (console_driver) {
-			driver = tty_driver_kref_get(console_driver);
-			if (driver && filp) {
-				/* Don't let /dev/console block */
-				filp->f_flags |= O_NONBLOCK;
-				break;
-			}
-		}
-		if (driver)
-			tty_driver_kref_put(driver);
-		return ERR_PTR(-ENODEV);
-	}
-	default:
-		driver = get_tty_driver(device, index);
-		if (!driver)
-			return ERR_PTR(-ENODEV);
-		break;
-	}
-	return driver;
-}
-
-/**
- *	tty_kopen	-	open a tty device for kernel
- *	@device: dev_t of device to open
- *
- *	Opens tty exclusively for kernel. Performs the driver lookup,
- *	makes sure it's not already opened and performs the first-time
- *	tty initialization.
- *
- *	Returns the locked initialized &tty_struct
- *
- *	Claims the global tty_mutex to serialize:
- *	  - concurrent first-time tty initialization
- *	  - concurrent tty driver removal w/ lookup
- *	  - concurrent tty removal from driver table
- */
-struct tty_struct *tty_kopen(dev_t device)
-{
-	struct tty_struct *tty;
-	struct tty_driver *driver;
-	int index = -1;
-
-	mutex_lock(&tty_mutex);
-	driver = tty_lookup_driver(device, NULL, &index);
-	if (IS_ERR(driver)) {
-		mutex_unlock(&tty_mutex);
-		return ERR_CAST(driver);
-	}
-
-	/* check whether we're reopening an existing tty */
-	tty = tty_driver_lookup_tty(driver, NULL, index);
-	if (IS_ERR(tty))
-		goto out;
-
-	if (tty) {
-		/* drop kref from tty_driver_lookup_tty() */
-		tty_kref_put(tty);
-		tty = ERR_PTR(-EBUSY);
-	} else { /* tty_init_dev returns tty with the tty_lock held */
-		tty = tty_init_dev(driver, index);
-		if (IS_ERR(tty))
-			goto out;
-		tty_port_set_kopened(tty->port, 1);
-	}
-out:
-	mutex_unlock(&tty_mutex);
-	tty_driver_kref_put(driver);
-	return tty;
-}
-EXPORT_SYMBOL_GPL(tty_kopen);
-
-/**
- *	tty_open_by_driver	-	open a tty device
- *	@device: dev_t of device to open
- *	@filp: file pointer to tty
- *
- *	Performs the driver lookup, checks for a reopen, or otherwise
- *	performs the first-time tty initialization.
- *
- *	Returns the locked initialized or re-opened &tty_struct
- *
- *	Claims the global tty_mutex to serialize:
- *	  - concurrent first-time tty initialization
- *	  - concurrent tty driver removal w/ lookup
- *	  - concurrent tty removal from driver table
- */
-static struct tty_struct *tty_open_by_driver(dev_t device,
-					     struct file *filp)
-{
-	struct tty_struct *tty;
-	struct tty_driver *driver = NULL;
-	int index = -1;
-	int retval;
-
-	mutex_lock(&tty_mutex);
-	driver = tty_lookup_driver(device, filp, &index);
-	if (IS_ERR(driver)) {
-		mutex_unlock(&tty_mutex);
-		return ERR_CAST(driver);
-	}
-
-	/* check whether we're reopening an existing tty */
-	tty = tty_driver_lookup_tty(driver, filp, index);
-	if (IS_ERR(tty)) {
-		mutex_unlock(&tty_mutex);
-		goto out;
-	}
-
-	if (tty) {
-		if (tty_port_kopened(tty->port)) {
-			tty_kref_put(tty);
-			mutex_unlock(&tty_mutex);
-			tty = ERR_PTR(-EBUSY);
-			goto out;
-		}
-		mutex_unlock(&tty_mutex);
-		retval = tty_lock_interruptible(tty);
-		tty_kref_put(tty);  /* drop kref from tty_driver_lookup_tty() */
-		if (retval) {
-			if (retval == -EINTR)
-				retval = -ERESTARTSYS;
-			tty = ERR_PTR(retval);
-			goto out;
-		}
-		retval = tty_reopen(tty);
-		if (retval < 0) {
-			tty_unlock(tty);
-			tty = ERR_PTR(retval);
-		}
-	} else { /* Returns with the tty_lock held for now */
-		tty = tty_init_dev(driver, index);
-		mutex_unlock(&tty_mutex);
-	}
-out:
-	tty_driver_kref_put(driver);
-	return tty;
-}
-
-/**
- *	tty_open		-	open a tty device
- *	@inode: inode of device file
- *	@filp: file pointer to tty
- *
- *	tty_open and tty_release keep up the tty count that contains the
- *	number of opens done on a tty. We cannot use the inode-count, as
- *	different inodes might point to the same tty.
- *
- *	Open-counting is needed for pty masters, as well as for keeping
- *	track of serial lines: DTR is dropped when the last close happens.
- *	(This is not done solely through tty->count, now.  - Ted 1/27/92)
- *
- *	The termios state of a pty is reset on first open so that
- *	settings don't persist across reuse.
- *
- *	Locking: tty_mutex protects tty, tty_lookup_driver and tty_init_dev.
- *		 tty->count should protect the rest.
- *		 ->siglock protects ->signal/->sighand
- *
- *	Note: the tty_unlock/lock cases without a ref are only safe due to
- *	tty_mutex
- */
-
-static int tty_open(struct inode *inode, struct file *filp)
-{
-	struct tty_struct *tty;
-	int noctty, retval;
-	dev_t device = inode->i_rdev;
-	unsigned saved_flags = filp->f_flags;
-
-	nonseekable_open(inode, filp);
-
-retry_open:
-	retval = tty_alloc_file(filp);
-	if (retval)
-		return -ENOMEM;
-
-	tty = tty_open_current_tty(device, filp);
-	if (!tty)
-		tty = tty_open_by_driver(device, filp);
-
-	if (IS_ERR(tty)) {
-		tty_free_file(filp);
-		retval = PTR_ERR(tty);
-		if (retval != -EAGAIN || signal_pending(current))
-			return retval;
-		schedule();
-		goto retry_open;
-	}
-
-	tty_add_file(tty, filp);
-
-	check_tty_count(tty, __func__);
-	tty_debug_hangup(tty, "opening (count=%d)\n", tty->count);
-
-	if (tty->ops->open)
-		retval = tty->ops->open(tty, filp);
-	else
-		retval = -ENODEV;
-	filp->f_flags = saved_flags;
-
-	if (retval) {
-		tty_debug_hangup(tty, "open error %d, releasing\n", retval);
-
-		tty_unlock(tty); /* need to call tty_release without BTM */
-		tty_release(inode, filp);
-		if (retval != -ERESTARTSYS)
-			return retval;
-
-		if (signal_pending(current))
-			return retval;
-
-		schedule();
-		/*
-		 * Need to reset f_op in case a hangup happened.
-		 */
-		if (tty_hung_up_p(filp))
-			filp->f_op = &tty_fops;
-		goto retry_open;
-	}
-	clear_bit(TTY_HUPPED, &tty->flags);
-
-	noctty = (filp->f_flags & O_NOCTTY) ||
-		 (IS_ENABLED(CONFIG_VT) && device == MKDEV(TTY_MAJOR, 0)) ||
-		 device == MKDEV(TTYAUX_MAJOR, 1) ||
-		 (tty->driver->type == TTY_DRIVER_TYPE_PTY &&
-		  tty->driver->subtype == PTY_TYPE_MASTER);
-	if (!noctty)
-		tty_open_proc_set_tty(filp, tty);
-	tty_unlock(tty);
-	return 0;
-}
-
-
-
-/**
- *	tty_poll	-	check tty status
- *	@filp: file being polled
- *	@wait: poll wait structures to update
- *
- *	Call the line discipline polling method to obtain the poll
- *	status of the device.
- *
- *	Locking: locks called line discipline but ldisc poll method
- *	may be re-entered freely by other callers.
- */
-
-static __poll_t tty_poll(struct file *filp, poll_table *wait)
-{
-	struct tty_struct *tty = file_tty(filp);
-	struct tty_ldisc *ld;
-	__poll_t ret = 0;
-
-	if (tty_paranoia_check(tty, file_inode(filp), "tty_poll"))
-		return 0;
-
-	ld = tty_ldisc_ref_wait(tty);
-	if (!ld)
-		return hung_up_tty_poll(filp, wait);
-	if (ld->ops->poll)
-		ret = ld->ops->poll(tty, filp, wait);
-	tty_ldisc_deref(ld);
-	return ret;
-}
-
-static int __tty_fasync(int fd, struct file *filp, int on)
-{
-	struct tty_struct *tty = file_tty(filp);
-	unsigned long flags;
-	int retval = 0;
-
-	if (tty_paranoia_check(tty, file_inode(filp), "tty_fasync"))
-		goto out;
-
-	retval = fasync_helper(fd, filp, on, &tty->fasync);
-	if (retval <= 0)
-		goto out;
-
-	if (on) {
-		enum pid_type type;
-		struct pid *pid;
-
-		spin_lock_irqsave(&tty->ctrl_lock, flags);
-		if (tty->pgrp) {
-			pid = tty->pgrp;
-			type = PIDTYPE_PGID;
-		} else {
-			pid = task_pid(current);
-			type = PIDTYPE_TGID;
-		}
-		get_pid(pid);
-		spin_unlock_irqrestore(&tty->ctrl_lock, flags);
-		__f_setown(filp, pid, type, 0);
-		put_pid(pid);
-		retval = 0;
-	}
-out:
-	return retval;
-}
-
-static int tty_fasync(int fd, struct file *filp, int on)
-{
-	struct tty_struct *tty = file_tty(filp);
-	int retval = -ENOTTY;
-
-	tty_lock(tty);
-	if (!tty_hung_up_p(filp))
-		retval = __tty_fasync(fd, filp, on);
-	tty_unlock(tty);
-
-	return retval;
-}
-
-/**
- *	tiocsti			-	fake input character
- *	@tty: tty to fake input into
- *	@p: pointer to character
- *
- *	Fake input to a tty device. Does the necessary locking and
- *	input management.
- *
- *	FIXME: does not honour flow control ??
- *
- *	Locking:
- *		Called functions take tty_ldiscs_lock
- *		current->signal->tty check is safe without locks
- */
-
-static int tiocsti(struct tty_struct *tty, char __user *p)
-{
-	char ch, mbz = 0;
-	struct tty_ldisc *ld;
-
-	if ((current->signal->tty != tty) && !capable(CAP_SYS_ADMIN))
-		return -EPERM;
-	if (get_user(ch, p))
-		return -EFAULT;
-	tty_audit_tiocsti(tty, ch);
-	ld = tty_ldisc_ref_wait(tty);
-	if (!ld)
-		return -EIO;
-	tty_buffer_lock_exclusive(tty->port);
-	if (ld->ops->receive_buf)
-		ld->ops->receive_buf(tty, &ch, &mbz, 1);
-	tty_buffer_unlock_exclusive(tty->port);
-	tty_ldisc_deref(ld);
-	return 0;
-}
-
-/**
- *	tiocgwinsz		-	implement window query ioctl
- *	@tty: tty
- *	@arg: user buffer for result
- *
- *	Copies the kernel idea of the window size into the user buffer.
- *
- *	Locking: tty->winsize_mutex is taken to ensure the winsize data
- *		is consistent.
- */
-
-static int tiocgwinsz(struct tty_struct *tty, struct winsize __user *arg)
-{
-	int err;
-
-	mutex_lock(&tty->winsize_mutex);
-	err = copy_to_user(arg, &tty->winsize, sizeof(*arg));
-	mutex_unlock(&tty->winsize_mutex);
-
-	return err ? -EFAULT: 0;
-}
-
-/**
- *	tty_do_resize		-	resize event
- *	@tty: tty being resized
- *	@ws: new dimensions
- *
- *	Update the termios variables and send the necessary signals to
- *	peform a terminal resize correctly
- */
-
-int tty_do_resize(struct tty_struct *tty, struct winsize *ws)
-{
-	struct pid *pgrp;
-
-	/* Lock the tty */
-	mutex_lock(&tty->winsize_mutex);
-	if (!memcmp(ws, &tty->winsize, sizeof(*ws)))
-		goto done;
-
-	/* Signal the foreground process group */
-	pgrp = tty_get_pgrp(tty);
-	if (pgrp)
-		kill_pgrp(pgrp, SIGWINCH, 1);
-	put_pid(pgrp);
-
-	tty->winsize = *ws;
-done:
-	mutex_unlock(&tty->winsize_mutex);
-	return 0;
-}
-EXPORT_SYMBOL(tty_do_resize);
-
-/**
- *	tiocswinsz		-	implement window size set ioctl
- *	@tty: tty side of tty
- *	@arg: user buffer for result
- *
- *	Copies the user idea of the window size to the kernel. Traditionally
- *	this is just advisory information but for the Linux console it
- *	actually has driver level meaning and triggers a VC resize.
- *
- *	Locking:
- *		Driver dependent. The default do_resize method takes the
- *	tty termios mutex and ctrl_lock. The console takes its own lock
- *	then calls into the default method.
- */
-
-static int tiocswinsz(struct tty_struct *tty, struct winsize __user *arg)
-{
-	struct winsize tmp_ws;
-	if (copy_from_user(&tmp_ws, arg, sizeof(*arg)))
-		return -EFAULT;
-
-	if (tty->ops->resize)
-		return tty->ops->resize(tty, &tmp_ws);
-	else
-		return tty_do_resize(tty, &tmp_ws);
-}
-
-/**
- *	tioccons	-	allow admin to move logical console
- *	@file: the file to become console
- *
- *	Allow the administrator to move the redirected console device
- *
- *	Locking: uses redirect_lock to guard the redirect information
- */
-
-static int tioccons(struct file *file)
-{
-	if (!capable(CAP_SYS_ADMIN))
-		return -EPERM;
-	if (file->f_op->write_iter == redirected_tty_write) {
-		struct file *f;
-		spin_lock(&redirect_lock);
-		f = redirect;
-		redirect = NULL;
-		spin_unlock(&redirect_lock);
-		if (f)
-			fput(f);
-		return 0;
-	}
-	if (file->f_op->write_iter != tty_write)
-		return -ENOTTY;
-	if (!(file->f_mode & FMODE_WRITE))
-		return -EBADF;
-	if (!(file->f_mode & FMODE_CAN_WRITE))
-		return -EINVAL;
-	spin_lock(&redirect_lock);
-	if (redirect) {
-		spin_unlock(&redirect_lock);
-		return -EBUSY;
-	}
-	redirect = get_file(file);
-	spin_unlock(&redirect_lock);
-	return 0;
-}
-
-/**
- *	tiocsetd	-	set line discipline
- *	@tty: tty device
- *	@p: pointer to user data
- *
- *	Set the line discipline according to user request.
- *
- *	Locking: see tty_set_ldisc, this function is just a helper
- */
-
-static int tiocsetd(struct tty_struct *tty, int __user *p)
-{
-	int disc;
-	int ret;
-
-	if (get_user(disc, p))
-		return -EFAULT;
-
-	ret = tty_set_ldisc(tty, disc);
-
-	return ret;
-}
-
-/**
- *	tiocgetd	-	get line discipline
- *	@tty: tty device
- *	@p: pointer to user data
- *
- *	Retrieves the line discipline id directly from the ldisc.
- *
- *	Locking: waits for ldisc reference (in case the line discipline
- *		is changing or the tty is being hungup)
- */
-
-static int tiocgetd(struct tty_struct *tty, int __user *p)
-{
-	struct tty_ldisc *ld;
-	int ret;
-
-	ld = tty_ldisc_ref_wait(tty);
-	if (!ld)
-		return -EIO;
-	ret = put_user(ld->ops->num, p);
-	tty_ldisc_deref(ld);
-	return ret;
-}
-
-/**
- *	send_break	-	performed time break
- *	@tty: device to break on
- *	@duration: timeout in mS
- *
- *	Perform a timed break on hardware that lacks its own driver level
- *	timed break functionality.
- *
- *	Locking:
- *		atomic_write_lock serializes
- *
- */
-
-static int send_break(struct tty_struct *tty, unsigned int duration)
-{
-	int retval;
-
-	if (tty->ops->break_ctl == NULL)
-		return 0;
-
-	if (tty->driver->flags & TTY_DRIVER_HARDWARE_BREAK)
-		retval = tty->ops->break_ctl(tty, duration);
-	else {
-		/* Do the work ourselves */
-		if (tty_write_lock(tty, 0) < 0)
-			return -EINTR;
-		retval = tty->ops->break_ctl(tty, -1);
-		if (retval)
-			goto out;
-		if (!signal_pending(current))
-			msleep_interruptible(duration);
-		retval = tty->ops->break_ctl(tty, 0);
-out:
-		tty_write_unlock(tty);
-		if (signal_pending(current))
-			retval = -EINTR;
-	}
-	return retval;
-}
-
-/**
- *	tty_tiocmget		-	get modem status
- *	@tty: tty device
- *	@p: pointer to result
- *
- *	Obtain the modem status bits from the tty driver if the feature
- *	is supported. Return -ENOTTY if it is not available.
- *
- *	Locking: none (up to the driver)
- */
-
-static int tty_tiocmget(struct tty_struct *tty, int __user *p)
-{
-	int retval = -ENOTTY;
-
-	if (tty->ops->tiocmget) {
-		retval = tty->ops->tiocmget(tty);
-
-		if (retval >= 0)
-			retval = put_user(retval, p);
-	}
-	return retval;
-}
-
-/**
- *	tty_tiocmset		-	set modem status
- *	@tty: tty device
- *	@cmd: command - clear bits, set bits or set all
- *	@p: pointer to desired bits
- *
- *	Set the modem status bits from the tty driver if the feature
- *	is supported. Return -ENOTTY if it is not available.
- *
- *	Locking: none (up to the driver)
- */
-
-static int tty_tiocmset(struct tty_struct *tty, unsigned int cmd,
-	     unsigned __user *p)
-{
-	int retval;
-	unsigned int set, clear, val;
-
-	if (tty->ops->tiocmset == NULL)
-		return -ENOTTY;
-
-	retval = get_user(val, p);
-	if (retval)
-		return retval;
-	set = clear = 0;
-	switch (cmd) {
-	case TIOCMBIS:
-		set = val;
-		break;
-	case TIOCMBIC:
-		clear = val;
-		break;
-	case TIOCMSET:
-		set = val;
-		clear = ~val;
-		break;
-	}
-	set &= TIOCM_DTR|TIOCM_RTS|TIOCM_OUT1|TIOCM_OUT2|TIOCM_LOOP;
-	clear &= TIOCM_DTR|TIOCM_RTS|TIOCM_OUT1|TIOCM_OUT2|TIOCM_LOOP;
-	return tty->ops->tiocmset(tty, set, clear);
-}
-
-static int tty_tiocgicount(struct tty_struct *tty, void __user *arg)
-{
-	int retval = -EINVAL;
-	struct serial_icounter_struct icount;
-	memset(&icount, 0, sizeof(icount));
-	if (tty->ops->get_icount)
-		retval = tty->ops->get_icount(tty, &icount);
-	if (retval != 0)
-		return retval;
-	if (copy_to_user(arg, &icount, sizeof(icount)))
-		return -EFAULT;
-	return 0;
-}
-
-static int tty_tiocsserial(struct tty_struct *tty, struct serial_struct __user *ss)
-{
-	static DEFINE_RATELIMIT_STATE(depr_flags,
-			DEFAULT_RATELIMIT_INTERVAL,
-			DEFAULT_RATELIMIT_BURST);
-	char comm[TASK_COMM_LEN];
-	struct serial_struct v;
-	int flags;
-
-	if (copy_from_user(&v, ss, sizeof(*ss)))
-		return -EFAULT;
-
-	flags = v.flags & ASYNC_DEPRECATED;
-
-	if (flags && __ratelimit(&depr_flags))
-		pr_warn("%s: '%s' is using deprecated serial flags (with no effect): %.8x\n",
-			__func__, get_task_comm(comm, current), flags);
-	if (!tty->ops->set_serial)
-		return -ENOTTY;
-	return tty->ops->set_serial(tty, &v);
-}
-
-static int tty_tiocgserial(struct tty_struct *tty, struct serial_struct __user *ss)
-{
-	struct serial_struct v;
-	int err;
-
-	memset(&v, 0, sizeof(v));
-	if (!tty->ops->get_serial)
-		return -ENOTTY;
-	err = tty->ops->get_serial(tty, &v);
-	if (!err && copy_to_user(ss, &v, sizeof(v)))
-		err = -EFAULT;
-	return err;
-}
-
-/*
- * if pty, return the slave side (real_tty)
- * otherwise, return self
- */
-static struct tty_struct *tty_pair_get_tty(struct tty_struct *tty)
-{
-	if (tty->driver->type == TTY_DRIVER_TYPE_PTY &&
-	    tty->driver->subtype == PTY_TYPE_MASTER)
-		tty = tty->link;
-	return tty;
-}
-
-/*
- * Split this up, as gcc can choke on it otherwise..
- */
-long tty_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
-{
-	struct tty_struct *tty = file_tty(file);
-	struct tty_struct *real_tty;
-	void __user *p = (void __user *)arg;
-	int retval;
-	struct tty_ldisc *ld;
-
-	if (tty_paranoia_check(tty, file_inode(file), "tty_ioctl"))
-		return -EINVAL;
-
-	real_tty = tty_pair_get_tty(tty);
-
-	/*
-	 * Factor out some common prep work
-	 */
-	switch (cmd) {
-	case TIOCSETD:
-	case TIOCSBRK:
-	case TIOCCBRK:
-	case TCSBRK:
-	case TCSBRKP:
-		retval = tty_check_change(tty);
-		if (retval)
-			return retval;
-		if (cmd != TIOCCBRK) {
-			tty_wait_until_sent(tty, 0);
-			if (signal_pending(current))
-				return -EINTR;
-		}
-		break;
-	}
-
-	/*
-	 *	Now do the stuff.
-	 */
-	switch (cmd) {
-	case TIOCSTI:
-		return tiocsti(tty, p);
-	case TIOCGWINSZ:
-		return tiocgwinsz(real_tty, p);
-	case TIOCSWINSZ:
-		return tiocswinsz(real_tty, p);
-	case TIOCCONS:
-		return real_tty != tty ? -EINVAL : tioccons(file);
-	case TIOCEXCL:
-		set_bit(TTY_EXCLUSIVE, &tty->flags);
-		return 0;
-	case TIOCNXCL:
-		clear_bit(TTY_EXCLUSIVE, &tty->flags);
-		return 0;
-	case TIOCGEXCL:
-	{
-		int excl = test_bit(TTY_EXCLUSIVE, &tty->flags);
-		return put_user(excl, (int __user *)p);
-	}
-	case TIOCGETD:
-		return tiocgetd(tty, p);
-	case TIOCSETD:
-		return tiocsetd(tty, p);
-	case TIOCVHANGUP:
-		if (!capable(CAP_SYS_ADMIN))
-			return -EPERM;
-		tty_vhangup(tty);
-		return 0;
-	case TIOCGDEV:
-	{
-		unsigned int ret = new_encode_dev(tty_devnum(real_tty));
-		return put_user(ret, (unsigned int __user *)p);
-	}
-	/*
-	 * Break handling
-	 */
-	case TIOCSBRK:	/* Turn break on, unconditionally */
-		if (tty->ops->break_ctl)
-			return tty->ops->break_ctl(tty, -1);
-		return 0;
-	case TIOCCBRK:	/* Turn break off, unconditionally */
-		if (tty->ops->break_ctl)
-			return tty->ops->break_ctl(tty, 0);
-		return 0;
-	case TCSBRK:   /* SVID version: non-zero arg --> no break */
-		/* non-zero arg means wait for all output data
-		 * to be sent (performed above) but don't send break.
-		 * This is used by the tcdrain() termios function.
-		 */
-		if (!arg)
-			return send_break(tty, 250);
-		return 0;
-	case TCSBRKP:	/* support for POSIX tcsendbreak() */
-		return send_break(tty, arg ? arg*100 : 250);
-
-	case TIOCMGET:
-		return tty_tiocmget(tty, p);
-	case TIOCMSET:
-	case TIOCMBIC:
-	case TIOCMBIS:
-		return tty_tiocmset(tty, cmd, p);
-	case TIOCGICOUNT:
-		return tty_tiocgicount(tty, p);
-	case TCFLSH:
-		switch (arg) {
-		case TCIFLUSH:
-		case TCIOFLUSH:
-		/* flush tty buffer and allow ldisc to process ioctl */
-			tty_buffer_flush(tty, NULL);
-			break;
-		}
-		break;
-	case TIOCSSERIAL:
-		return tty_tiocsserial(tty, p);
-	case TIOCGSERIAL:
-		return tty_tiocgserial(tty, p);
-	case TIOCGPTPEER:
-		/* Special because the struct file is needed */
-		return ptm_open_peer(file, tty, (int)arg);
-	default:
-		retval = tty_jobctrl_ioctl(tty, real_tty, file, cmd, arg);
-		if (retval != -ENOIOCTLCMD)
-			return retval;
-	}
-	if (tty->ops->ioctl) {
-		retval = tty->ops->ioctl(tty, cmd, arg);
-		if (retval != -ENOIOCTLCMD)
-			return retval;
-	}
-	ld = tty_ldisc_ref_wait(tty);
-	if (!ld)
-		return hung_up_tty_ioctl(file, cmd, arg);
-	retval = -EINVAL;
-	if (ld->ops->ioctl) {
-		retval = ld->ops->ioctl(tty, file, cmd, arg);
-		if (retval == -ENOIOCTLCMD)
-			retval = -ENOTTY;
-	}
-	tty_ldisc_deref(ld);
-	return retval;
-}
-
-#ifdef CONFIG_COMPAT
-
-struct serial_struct32 {
-	compat_int_t    type;
-	compat_int_t    line;
-	compat_uint_t   port;
-	compat_int_t    irq;
-	compat_int_t    flags;
-	compat_int_t    xmit_fifo_size;
-	compat_int_t    custom_divisor;
-	compat_int_t    baud_base;
-	unsigned short  close_delay;
-	char    io_type;
-	char    reserved_char;
-	compat_int_t    hub6;
-	unsigned short  closing_wait; /* time to wait before closing */
-	unsigned short  closing_wait2; /* no longer used... */
-	compat_uint_t   iomem_base;
-	unsigned short  iomem_reg_shift;
-	unsigned int    port_high;
-	/* compat_ulong_t  iomap_base FIXME */
-	compat_int_t    reserved;
-};
-
-static int compat_tty_tiocsserial(struct tty_struct *tty,
-		struct serial_struct32 __user *ss)
-{
-	static DEFINE_RATELIMIT_STATE(depr_flags,
-			DEFAULT_RATELIMIT_INTERVAL,
-			DEFAULT_RATELIMIT_BURST);
-	char comm[TASK_COMM_LEN];
-	struct serial_struct32 v32;
-	struct serial_struct v;
-	int flags;
-
-	if (copy_from_user(&v32, ss, sizeof(*ss)))
-		return -EFAULT;
-
-	memcpy(&v, &v32, offsetof(struct serial_struct32, iomem_base));
-	v.iomem_base = compat_ptr(v32.iomem_base);
-	v.iomem_reg_shift = v32.iomem_reg_shift;
-	v.port_high = v32.port_high;
-	v.iomap_base = 0;
-
-	flags = v.flags & ASYNC_DEPRECATED;
-
-	if (flags && __ratelimit(&depr_flags))
-		pr_warn("%s: '%s' is using deprecated serial flags (with no effect): %.8x\n",
-			__func__, get_task_comm(comm, current), flags);
-	if (!tty->ops->set_serial)
-		return -ENOTTY;
-	return tty->ops->set_serial(tty, &v);
-}
-
-static int compat_tty_tiocgserial(struct tty_struct *tty,
-			struct serial_struct32 __user *ss)
-{
-	struct serial_struct32 v32;
-	struct serial_struct v;
-	int err;
-
-	memset(&v, 0, sizeof(v));
-	memset(&v32, 0, sizeof(v32));
-
-	if (!tty->ops->get_serial)
-		return -ENOTTY;
-	err = tty->ops->get_serial(tty, &v);
-	if (!err) {
-		memcpy(&v32, &v, offsetof(struct serial_struct32, iomem_base));
-		v32.iomem_base = (unsigned long)v.iomem_base >> 32 ?
-			0xfffffff : ptr_to_compat(v.iomem_base);
-		v32.iomem_reg_shift = v.iomem_reg_shift;
-		v32.port_high = v.port_high;
-		if (copy_to_user(ss, &v32, sizeof(v32)))
-			err = -EFAULT;
-	}
-	return err;
-}
-static long tty_compat_ioctl(struct file *file, unsigned int cmd,
-				unsigned long arg)
-{
-	struct tty_struct *tty = file_tty(file);
-	struct tty_ldisc *ld;
-	int retval = -ENOIOCTLCMD;
-
-	switch (cmd) {
-	case TIOCOUTQ:
-	case TIOCSTI:
-	case TIOCGWINSZ:
-	case TIOCSWINSZ:
-	case TIOCGEXCL:
-	case TIOCGETD:
-	case TIOCSETD:
-	case TIOCGDEV:
-	case TIOCMGET:
-	case TIOCMSET:
-	case TIOCMBIC:
-	case TIOCMBIS:
-	case TIOCGICOUNT:
-	case TIOCGPGRP:
-	case TIOCSPGRP:
-	case TIOCGSID:
-	case TIOCSERGETLSR:
-	case TIOCGRS485:
-	case TIOCSRS485:
-#ifdef TIOCGETP
-	case TIOCGETP:
-	case TIOCSETP:
-	case TIOCSETN:
-#endif
-#ifdef TIOCGETC
-	case TIOCGETC:
-	case TIOCSETC:
-#endif
-#ifdef TIOCGLTC
-	case TIOCGLTC:
-	case TIOCSLTC:
-#endif
-	case TCSETSF:
-	case TCSETSW:
-	case TCSETS:
-	case TCGETS:
-#ifdef TCGETS2
-	case TCGETS2:
-	case TCSETSF2:
-	case TCSETSW2:
-	case TCSETS2:
-#endif
-	case TCGETA:
-	case TCSETAF:
-	case TCSETAW:
-	case TCSETA:
-	case TIOCGLCKTRMIOS:
-	case TIOCSLCKTRMIOS:
-#ifdef TCGETX
-	case TCGETX:
-	case TCSETX:
-	case TCSETXW:
-	case TCSETXF:
-#endif
-	case TIOCGSOFTCAR:
-	case TIOCSSOFTCAR:
-
-	case PPPIOCGCHAN:
-	case PPPIOCGUNIT:
-		return tty_ioctl(file, cmd, (unsigned long)compat_ptr(arg));
-	case TIOCCONS:
-	case TIOCEXCL:
-	case TIOCNXCL:
-	case TIOCVHANGUP:
-	case TIOCSBRK:
-	case TIOCCBRK:
-	case TCSBRK:
-	case TCSBRKP:
-	case TCFLSH:
-	case TIOCGPTPEER:
-	case TIOCNOTTY:
-	case TIOCSCTTY:
-	case TCXONC:
-	case TIOCMIWAIT:
-	case TIOCSERCONFIG:
-		return tty_ioctl(file, cmd, arg);
-	}
-
-	if (tty_paranoia_check(tty, file_inode(file), "tty_ioctl"))
-		return -EINVAL;
-
-	switch (cmd) {
-	case TIOCSSERIAL:
-		return compat_tty_tiocsserial(tty, compat_ptr(arg));
-	case TIOCGSERIAL:
-		return compat_tty_tiocgserial(tty, compat_ptr(arg));
-	}
-	if (tty->ops->compat_ioctl) {
-		retval = tty->ops->compat_ioctl(tty, cmd, arg);
-		if (retval != -ENOIOCTLCMD)
-			return retval;
-	}
-
-	ld = tty_ldisc_ref_wait(tty);
-	if (!ld)
-		return hung_up_tty_compat_ioctl(file, cmd, arg);
-	if (ld->ops->compat_ioctl)
-		retval = ld->ops->compat_ioctl(tty, file, cmd, arg);
-	if (retval == -ENOIOCTLCMD && ld->ops->ioctl)
-		retval = ld->ops->ioctl(tty, file,
-				(unsigned long)compat_ptr(cmd), arg);
-	tty_ldisc_deref(ld);
-
-	return retval;
-}
-#endif
-
-static int this_tty(const void *t, struct file *file, unsigned fd)
-{
-	if (likely(file->f_op->read_iter != tty_read))
-		return 0;
-	return file_tty(file) != t ? 0 : fd + 1;
-}
-	
-/*
- * This implements the "Secure Attention Key" ---  the idea is to
- * prevent trojan horses by killing all processes associated with this
- * tty when the user hits the "Secure Attention Key".  Required for
- * super-paranoid applications --- see the Orange Book for more details.
- *
- * This code could be nicer; ideally it should send a HUP, wait a few
- * seconds, then send a INT, and then a KILL signal.  But you then
- * have to coordinate with the init process, since all processes associated
- * with the current tty must be dead before the new getty is allowed
- * to spawn.
- *
- * Now, if it would be correct ;-/ The current code has a nasty hole -
- * it doesn't catch files in flight. We may send the descriptor to ourselves
- * via AF_UNIX socket, close it and later fetch from socket. FIXME.
- *
- * Nasty bug: do_SAK is being called in interrupt context.  This can
- * deadlock.  We punt it up to process context.  AKPM - 16Mar2001
- */
-void __do_SAK(struct tty_struct *tty)
-{
-#ifdef TTY_SOFT_SAK
-	tty_hangup(tty);
-#else
-	struct task_struct *g, *p;
-	struct pid *session;
-	int		i;
-	unsigned long flags;
-
-	if (!tty)
-		return;
-
-	spin_lock_irqsave(&tty->ctrl_lock, flags);
-	session = get_pid(tty->session);
-	spin_unlock_irqrestore(&tty->ctrl_lock, flags);
-
-	tty_ldisc_flush(tty);
-
-	tty_driver_flush_buffer(tty);
-
-	read_lock(&tasklist_lock);
-	/* Kill the entire session */
-	do_each_pid_task(session, PIDTYPE_SID, p) {
-		tty_notice(tty, "SAK: killed process %d (%s): by session\n",
-			   task_pid_nr(p), p->comm);
-		group_send_sig_info(SIGKILL, SEND_SIG_PRIV, p, PIDTYPE_SID);
-	} while_each_pid_task(session, PIDTYPE_SID, p);
-
-	/* Now kill any processes that happen to have the tty open */
-	do_each_thread(g, p) {
-		if (p->signal->tty == tty) {
-			tty_notice(tty, "SAK: killed process %d (%s): by controlling tty\n",
-				   task_pid_nr(p), p->comm);
-			group_send_sig_info(SIGKILL, SEND_SIG_PRIV, p, PIDTYPE_SID);
-			continue;
-		}
-		task_lock(p);
-		i = iterate_fd(p->files, 0, this_tty, tty);
-		if (i != 0) {
-			tty_notice(tty, "SAK: killed process %d (%s): by fd#%d\n",
-				   task_pid_nr(p), p->comm, i - 1);
-			group_send_sig_info(SIGKILL, SEND_SIG_PRIV, p, PIDTYPE_SID);
-		}
-		task_unlock(p);
-	} while_each_thread(g, p);
-	read_unlock(&tasklist_lock);
-	put_pid(session);
-#endif
-}
-
-static void do_SAK_work(struct work_struct *work)
-{
-	struct tty_struct *tty =
-		container_of(work, struct tty_struct, SAK_work);
-	__do_SAK(tty);
-}
-
-/*
- * The tq handling here is a little racy - tty->SAK_work may already be queued.
- * Fortunately we don't need to worry, because if ->SAK_work is already queued,
- * the values which we write to it will be identical to the values which it
- * already has. --akpm
- */
-void do_SAK(struct tty_struct *tty)
-{
-	if (!tty)
-		return;
-	schedule_work(&tty->SAK_work);
-}
-
-EXPORT_SYMBOL(do_SAK);
-
-/* Must put_device() after it's unused! */
-static struct device *tty_get_device(struct tty_struct *tty)
-{
-	dev_t devt = tty_devnum(tty);
-	return class_find_device_by_devt(tty_class, devt);
-}
-
-
-/**
- *	alloc_tty_struct
- *
- *	This subroutine allocates and initializes a tty structure.
- *
- *	Locking: none - tty in question is not exposed at this point
- */
-
-struct tty_struct *alloc_tty_struct(struct tty_driver *driver, int idx)
-{
-	struct tty_struct *tty;
-
-	tty = kzalloc(sizeof(*tty), GFP_KERNEL);
-	if (!tty)
-		return NULL;
-
-	kref_init(&tty->kref);
-	tty->magic = TTY_MAGIC;
-	if (tty_ldisc_init(tty)) {
-		kfree(tty);
-		return NULL;
-	}
-	tty->session = NULL;
-	tty->pgrp = NULL;
-	mutex_init(&tty->legacy_mutex);
-	mutex_init(&tty->throttle_mutex);
-	init_rwsem(&tty->termios_rwsem);
-	mutex_init(&tty->winsize_mutex);
-	init_ldsem(&tty->ldisc_sem);
-	init_waitqueue_head(&tty->write_wait);
-	init_waitqueue_head(&tty->read_wait);
-	INIT_WORK(&tty->hangup_work, do_tty_hangup);
-	mutex_init(&tty->atomic_write_lock);
-	spin_lock_init(&tty->ctrl_lock);
-	spin_lock_init(&tty->flow_lock);
-	spin_lock_init(&tty->files_lock);
-	INIT_LIST_HEAD(&tty->tty_files);
-	INIT_WORK(&tty->SAK_work, do_SAK_work);
-
-	tty->driver = driver;
-	tty->ops = driver->ops;
-	tty->index = idx;
-	tty_line_name(driver, idx, tty->name);
-	tty->dev = tty_get_device(tty);
-
-	return tty;
-}
-
-/**
- *	tty_put_char	-	write one character to a tty
- *	@tty: tty
- *	@ch: character
- *
- *	Write one byte to the tty using the provided put_char method
- *	if present. Returns the number of characters successfully output.
- *
- *	Note: the specific put_char operation in the driver layer may go
- *	away soon. Don't call it directly, use this method
- */
-
-int tty_put_char(struct tty_struct *tty, unsigned char ch)
-{
-	if (tty->ops->put_char)
-		return tty->ops->put_char(tty, ch);
-	return tty->ops->write(tty, &ch, 1);
-}
-EXPORT_SYMBOL_GPL(tty_put_char);
-
-struct class *tty_class;
-
-static int tty_cdev_add(struct tty_driver *driver, dev_t dev,
-		unsigned int index, unsigned int count)
-{
-	int err;
-
-	/* init here, since reused cdevs cause crashes */
-	driver->cdevs[index] = cdev_alloc();
-	if (!driver->cdevs[index])
-		return -ENOMEM;
-	driver->cdevs[index]->ops = &tty_fops;
-	driver->cdevs[index]->owner = driver->owner;
-	err = cdev_add(driver->cdevs[index], dev, count);
-	if (err)
-		kobject_put(&driver->cdevs[index]->kobj);
-	return err;
-}
-
-/**
- *	tty_register_device - register a tty device
- *	@driver: the tty driver that describes the tty device
- *	@index: the index in the tty driver for this tty device
- *	@device: a struct device that is associated with this tty device.
- *		This field is optional, if there is no known struct device
- *		for this tty device it can be set to NULL safely.
- *
- *	Returns a pointer to the struct device for this tty device
- *	(or ERR_PTR(-EFOO) on error).
- *
- *	This call is required to be made to register an individual tty device
- *	if the tty driver's flags have the TTY_DRIVER_DYNAMIC_DEV bit set.  If
- *	that bit is not set, this function should not be called by a tty
- *	driver.
- *
- *	Locking: ??
- */
-
-struct device *tty_register_device(struct tty_driver *driver, unsigned index,
-				   struct device *device)
-{
-	return tty_register_device_attr(driver, index, device, NULL, NULL);
-}
-EXPORT_SYMBOL(tty_register_device);
-
-static void tty_device_create_release(struct device *dev)
-{
-	dev_dbg(dev, "releasing...\n");
-	kfree(dev);
-}
-
-/**
- *	tty_register_device_attr - register a tty device
- *	@driver: the tty driver that describes the tty device
- *	@index: the index in the tty driver for this tty device
- *	@device: a struct device that is associated with this tty device.
- *		This field is optional, if there is no known struct device
- *		for this tty device it can be set to NULL safely.
- *	@drvdata: Driver data to be set to device.
- *	@attr_grp: Attribute group to be set on device.
- *
- *	Returns a pointer to the struct device for this tty device
- *	(or ERR_PTR(-EFOO) on error).
- *
- *	This call is required to be made to register an individual tty device
- *	if the tty driver's flags have the TTY_DRIVER_DYNAMIC_DEV bit set.  If
- *	that bit is not set, this function should not be called by a tty
- *	driver.
- *
- *	Locking: ??
- */
-struct device *tty_register_device_attr(struct tty_driver *driver,
-				   unsigned index, struct device *device,
-				   void *drvdata,
-				   const struct attribute_group **attr_grp)
-{
-	char name[64];
-	dev_t devt = MKDEV(driver->major, driver->minor_start) + index;
-	struct ktermios *tp;
-	struct device *dev;
-	int retval;
-
-	if (index >= driver->num) {
-		pr_err("%s: Attempt to register invalid tty line number (%d)\n",
-		       driver->name, index);
-		return ERR_PTR(-EINVAL);
-	}
-
-	if (driver->type == TTY_DRIVER_TYPE_PTY)
-		pty_line_name(driver, index, name);
-	else
-		tty_line_name(driver, index, name);
-
-	dev = kzalloc(sizeof(*dev), GFP_KERNEL);
-	if (!dev)
-		return ERR_PTR(-ENOMEM);
-
-	dev->devt = devt;
-	dev->class = tty_class;
-	dev->parent = device;
-	dev->release = tty_device_create_release;
-	dev_set_name(dev, "%s", name);
-	dev->groups = attr_grp;
-	dev_set_drvdata(dev, drvdata);
-
-	dev_set_uevent_suppress(dev, 1);
-
-	retval = device_register(dev);
-	if (retval)
-		goto err_put;
-
-	if (!(driver->flags & TTY_DRIVER_DYNAMIC_ALLOC)) {
-		/*
-		 * Free any saved termios data so that the termios state is
-		 * reset when reusing a minor number.
-		 */
-		tp = driver->termios[index];
-		if (tp) {
-			driver->termios[index] = NULL;
-			kfree(tp);
-		}
-
-		retval = tty_cdev_add(driver, devt, index, 1);
-		if (retval)
-			goto err_del;
-	}
-
-	dev_set_uevent_suppress(dev, 0);
-	kobject_uevent(&dev->kobj, KOBJ_ADD);
-
-	return dev;
-
-err_del:
-	device_del(dev);
-err_put:
-	put_device(dev);
-
-	return ERR_PTR(retval);
-}
-EXPORT_SYMBOL_GPL(tty_register_device_attr);
-
-/**
- * 	tty_unregister_device - unregister a tty device
- * 	@driver: the tty driver that describes the tty device
- * 	@index: the index in the tty driver for this tty device
- *
- * 	If a tty device is registered with a call to tty_register_device() then
- *	this function must be called when the tty device is gone.
- *
- *	Locking: ??
- */
-
-void tty_unregister_device(struct tty_driver *driver, unsigned index)
-{
-	device_destroy(tty_class,
-		MKDEV(driver->major, driver->minor_start) + index);
-	if (!(driver->flags & TTY_DRIVER_DYNAMIC_ALLOC)) {
-		cdev_del(driver->cdevs[index]);
-		driver->cdevs[index] = NULL;
-	}
-}
-EXPORT_SYMBOL(tty_unregister_device);
-
-/**
- * __tty_alloc_driver -- allocate tty driver
- * @lines: count of lines this driver can handle at most
- * @owner: module which is responsible for this driver
- * @flags: some of TTY_DRIVER_* flags, will be set in driver->flags
- *
- * This should not be called directly, some of the provided macros should be
- * used instead. Use IS_ERR and friends on @retval.
- */
-struct tty_driver *__tty_alloc_driver(unsigned int lines, struct module *owner,
-		unsigned long flags)
-{
-	struct tty_driver *driver;
-	unsigned int cdevs = 1;
-	int err;
-
-	if (!lines || (flags & TTY_DRIVER_UNNUMBERED_NODE && lines > 1))
-		return ERR_PTR(-EINVAL);
-
-	driver = kzalloc(sizeof(*driver), GFP_KERNEL);
-	if (!driver)
-		return ERR_PTR(-ENOMEM);
-
-	kref_init(&driver->kref);
-	driver->magic = TTY_DRIVER_MAGIC;
-	driver->num = lines;
-	driver->owner = owner;
-	driver->flags = flags;
-
-	if (!(flags & TTY_DRIVER_DEVPTS_MEM)) {
-		driver->ttys = kcalloc(lines, sizeof(*driver->ttys),
-				GFP_KERNEL);
-		driver->termios = kcalloc(lines, sizeof(*driver->termios),
-				GFP_KERNEL);
-		if (!driver->ttys || !driver->termios) {
-			err = -ENOMEM;
-			goto err_free_all;
-		}
-	}
-
-	if (!(flags & TTY_DRIVER_DYNAMIC_ALLOC)) {
-		driver->ports = kcalloc(lines, sizeof(*driver->ports),
-				GFP_KERNEL);
-		if (!driver->ports) {
-			err = -ENOMEM;
-			goto err_free_all;
-		}
-		cdevs = lines;
-	}
-
-	driver->cdevs = kcalloc(cdevs, sizeof(*driver->cdevs), GFP_KERNEL);
-	if (!driver->cdevs) {
-		err = -ENOMEM;
-		goto err_free_all;
-	}
-
-	return driver;
-err_free_all:
-	kfree(driver->ports);
-	kfree(driver->ttys);
-	kfree(driver->termios);
-	kfree(driver->cdevs);
-	kfree(driver);
-	return ERR_PTR(err);
-}
-EXPORT_SYMBOL(__tty_alloc_driver);
-
-static void destruct_tty_driver(struct kref *kref)
-{
-	struct tty_driver *driver = container_of(kref, struct tty_driver, kref);
-	int i;
-	struct ktermios *tp;
-
-	if (driver->flags & TTY_DRIVER_INSTALLED) {
-		for (i = 0; i < driver->num; i++) {
-			tp = driver->termios[i];
-			if (tp) {
-				driver->termios[i] = NULL;
-				kfree(tp);
-			}
-			if (!(driver->flags & TTY_DRIVER_DYNAMIC_DEV))
-				tty_unregister_device(driver, i);
-		}
-		proc_tty_unregister_driver(driver);
-		if (driver->flags & TTY_DRIVER_DYNAMIC_ALLOC)
-			cdev_del(driver->cdevs[0]);
-	}
-	kfree(driver->cdevs);
-	kfree(driver->ports);
-	kfree(driver->termios);
-	kfree(driver->ttys);
-	kfree(driver);
-}
-
-void tty_driver_kref_put(struct tty_driver *driver)
-{
-	kref_put(&driver->kref, destruct_tty_driver);
-}
-EXPORT_SYMBOL(tty_driver_kref_put);
-
-void tty_set_operations(struct tty_driver *driver,
-			const struct tty_operations *op)
-{
-	driver->ops = op;
-};
-EXPORT_SYMBOL(tty_set_operations);
-
-void put_tty_driver(struct tty_driver *d)
-{
-	tty_driver_kref_put(d);
-}
-EXPORT_SYMBOL(put_tty_driver);
-
-/*
- * Called by a tty driver to register itself.
- */
-int tty_register_driver(struct tty_driver *driver)
-{
-	int error;
-	int i;
-	dev_t dev;
-	struct device *d;
-
-	if (!driver->major) {
-		error = alloc_chrdev_region(&dev, driver->minor_start,
-						driver->num, driver->name);
-		if (!error) {
-			driver->major = MAJOR(dev);
-			driver->minor_start = MINOR(dev);
-		}
-	} else {
-		dev = MKDEV(driver->major, driver->minor_start);
-		error = register_chrdev_region(dev, driver->num, driver->name);
-	}
-	if (error < 0)
-		goto err;
-
-	if (driver->flags & TTY_DRIVER_DYNAMIC_ALLOC) {
-		error = tty_cdev_add(driver, dev, 0, driver->num);
-		if (error)
-			goto err_unreg_char;
-	}
-
-	mutex_lock(&tty_mutex);
-	list_add(&driver->tty_drivers, &tty_drivers);
-	mutex_unlock(&tty_mutex);
-
-	if (!(driver->flags & TTY_DRIVER_DYNAMIC_DEV)) {
-		for (i = 0; i < driver->num; i++) {
-			d = tty_register_device(driver, i, NULL);
-			if (IS_ERR(d)) {
-				error = PTR_ERR(d);
-				goto err_unreg_devs;
-			}
-		}
-	}
-	proc_tty_register_driver(driver);
-	driver->flags |= TTY_DRIVER_INSTALLED;
-	return 0;
-
-err_unreg_devs:
-	for (i--; i >= 0; i--)
-		tty_unregister_device(driver, i);
-
-	mutex_lock(&tty_mutex);
-	list_del(&driver->tty_drivers);
-	mutex_unlock(&tty_mutex);
-
-err_unreg_char:
-	unregister_chrdev_region(dev, driver->num);
-err:
-	return error;
-}
-EXPORT_SYMBOL(tty_register_driver);
-
-/*
- * Called by a tty driver to unregister itself.
- */
-int tty_unregister_driver(struct tty_driver *driver)
-{
-#if 0
-	/* FIXME */
-	if (driver->refcount)
-		return -EBUSY;
-#endif
-	unregister_chrdev_region(MKDEV(driver->major, driver->minor_start),
-				driver->num);
-	mutex_lock(&tty_mutex);
-	list_del(&driver->tty_drivers);
-	mutex_unlock(&tty_mutex);
-	return 0;
-}
-
-EXPORT_SYMBOL(tty_unregister_driver);
-
-dev_t tty_devnum(struct tty_struct *tty)
-{
-	return MKDEV(tty->driver->major, tty->driver->minor_start) + tty->index;
-}
-EXPORT_SYMBOL(tty_devnum);
-
-void tty_default_fops(struct file_operations *fops)
-{
-	*fops = tty_fops;
-}
-
-static char *tty_devnode(struct device *dev, umode_t *mode)
-{
-	if (!mode)
-		return NULL;
-	if (dev->devt == MKDEV(TTYAUX_MAJOR, 0) ||
-	    dev->devt == MKDEV(TTYAUX_MAJOR, 2))
-		*mode = 0666;
-	return NULL;
-}
-
-static int __init tty_class_init(void)
-{
-	tty_class = class_create(THIS_MODULE, "tty");
-	if (IS_ERR(tty_class))
-		return PTR_ERR(tty_class);
-	tty_class->devnode = tty_devnode;
-	return 0;
-}
-
-postcore_initcall(tty_class_init);
-
-/* 3/2004 jmc: why do these devices exist? */
-static struct cdev tty_cdev, console_cdev;
-
-static ssize_t show_cons_active(struct device *dev,
-				struct device_attribute *attr, char *buf)
-{
-	struct console *cs[16];
-	int i = 0;
-	struct console *c;
-	ssize_t count = 0;
-
-	console_lock();
-	for_each_console(c) {
-		if (!c->device)
-			continue;
-		if (!c->write)
-			continue;
-		if ((c->flags & CON_ENABLED) == 0)
-			continue;
-		cs[i++] = c;
-		if (i >= ARRAY_SIZE(cs))
-			break;
-	}
-	while (i--) {
-		int index = cs[i]->index;
-		struct tty_driver *drv = cs[i]->device(cs[i], &index);
-
-		/* don't resolve tty0 as some programs depend on it */
-		if (drv && (cs[i]->index > 0 || drv->major != TTY_MAJOR))
-			count += tty_line_name(drv, index, buf + count);
-		else
-			count += sprintf(buf + count, "%s%d",
-					 cs[i]->name, cs[i]->index);
-
-		count += sprintf(buf + count, "%c", i ? ' ':'\n');
-	}
-	console_unlock();
-
-	return count;
-}
-static DEVICE_ATTR(active, S_IRUGO, show_cons_active, NULL);
-
-static struct attribute *cons_dev_attrs[] = {
-	&dev_attr_active.attr,
-	NULL
-};
-
-ATTRIBUTE_GROUPS(cons_dev);
-
-static struct device *consdev;
-
-void console_sysfs_notify(void)
-{
-	if (consdev)
-		sysfs_notify(&consdev->kobj, NULL, "active");
-}
-
-/*
- * Ok, now we can initialize the rest of the tty devices and can count
- * on memory allocations, interrupts etc..
- */
-int __init tty_init(void)
-{
-	tty_sysctl_init();
-	cdev_init(&tty_cdev, &tty_fops);
-	if (cdev_add(&tty_cdev, MKDEV(TTYAUX_MAJOR, 0), 1) ||
-	    register_chrdev_region(MKDEV(TTYAUX_MAJOR, 0), 1, "/dev/tty") < 0)
-		panic("Couldn't register /dev/tty driver\n");
-	device_create(tty_class, NULL, MKDEV(TTYAUX_MAJOR, 0), NULL, "tty");
-
-	cdev_init(&console_cdev, &console_fops);
-	if (cdev_add(&console_cdev, MKDEV(TTYAUX_MAJOR, 1), 1) ||
-	    register_chrdev_region(MKDEV(TTYAUX_MAJOR, 1), 1, "/dev/console") < 0)
-		panic("Couldn't register /dev/console driver\n");
-	consdev = device_create_with_groups(tty_class, NULL,
-					    MKDEV(TTYAUX_MAJOR, 1), NULL,
-					    cons_dev_groups, "console");
-	if (IS_ERR(consdev))
-		consdev = NULL;
-
-#ifdef CONFIG_VT
-	vty_init(&console_fops);
-#endif
-	return 0;
-}
-
diff --git a/upstream/linux-5.10/include/net/SI/netioc_proc.h b/upstream/linux-5.10/include/net/SI/netioc_proc.h
deleted file mode 100755
index f0c8aa4..0000000
--- a/upstream/linux-5.10/include/net/SI/netioc_proc.h
+++ /dev/null
@@ -1,492 +0,0 @@
-/************************************************************************
-*¹¦ÄܽéÉÜ£ºlinuxÖÐÍøÂçfastnat¡¢fastbrÏà¹Ø²Ù×÷½Ó¿Ú
-*¸ºÔðÈË£º
-*±¸·ÝÈË£º
-*ÐÞ¸ÄÈÕ£º
-*ÐÞ¸ÄÄÚÈÝ£º
-*°æ±¾ºÅ£º
-************************************************************************/
-#ifndef _NETIO_PROC_H_
-#define _NETIO_PROC_H_
-
-
-#include <net/SI/net_track.h>
-#include <net/SI/ext_mem.h>
-
-
-#define  PC_MAX_NUM   100
-#define  DEV_NAME_LEN 50
-
-#define  DEV_NAME_LEN_20 20
-
-#define ETH_ALEN            6
-
-#define SLAB_NUM  21
-
-#define HASH_ARRAY_COUNT 512
-//SKBͳ¼ÆÖµ£¬°üÀ¨Òì³£µãµÄͳ¼ÆÖµ
-enum skbinfo_type{
-    SKB_TYPE_ALL = 0,     //skb½á¹¹ÌåÕýÔÚ¹¤×÷µÄ¸öÊý
-    SKB_TYPE_DATA,        //SKBÖеÄslab»úÖÆµÄdataÕýÔÚ¹¤×÷µÄ¸öÊý£¬°üº¬SKB_TYPE_TOCP£¬µ«²»°üº¬SKB_TYPE_FROMCP
-    SKB_TYPE_TOCP,        //·¢ÍùCPµÄskbÕýÔÚ¹¤×÷µÄ¸öÊý
-    SKB_TYPE_FROMCP,      //´ÓCP½ÓÊÕµ½µÄPSBUFÕýÔÚ¹¤×÷µÄ¸öÊý
-    SKB_DATA_BYTES,        //µ±Ç°ÉêÇëµÄdata×Ü×Ö½ÚÊý  £¬ksize·½Ê½ÀÛ¼ÓµÄ
-
-    //ÐÔÄÜÏà¹ØµÄÈ«¾ÖÐÅÏ¢£¬Äں˽öÀÛ¼Ó·¢ÉúµÄ´ÎÊý£¬²»¸ºÔð·ÖÎö
-    SKB_QUEUE_STOP,      //xmit_stopÔì³ÉµÄ¶ª°ü¸öÊý£¬ÀÛ¼ÓÖµ
-    SKB_QUEUE_LOCK,      //QUEUE_LOCKÔì³ÉµÄ¶ª°ü¸öÊý£¬ÀÛ¼ÓÖµ
-    SKB_COPY_CACHE,      //net_cacheÔ´ÎļþÖнøÐÐÈ«¿½±´µÄÀÛ¼ÓÖµ£¬Ä¿Ç°½öÔÚPPPºÍ·ÖƬʱ¿½±´£¬Ó°ÏìÐÔÄÜ
-    SKB_IRQ_FREE,           //ͨ¹ýÈíÖжÏÊͷŵÄskb£¬ÐÔÄÜÏà¹Ø
-    SKB_COPY,                   //Êý¾Ý¿½±´µÄskb£¬ÐÔÄÜÏà¹Ø
-    SKB_FLOOD,                 //·ººéµÄskb£¬ÐÔÄÜÏà¹Ø
-    SKB_ERRFREE,             //devÔ´ÎļþÖдíÎóÊͷŵÄskb¼ÆÊý£¬°üÀ¨SKB_QUEUE_STOPºÍSKB_QUEUE_LOCKÁ½¸ö¼ÆÊýÖµ
-    SKB_FRAG,                   //½ÓÊÕµ½µÄ·ÖƬ±¨ÎÄ£¬ÐÔÄÜÏà¹Ø
-    SKB_OVER_MTU,           //fastÖÐÊý¾Ý³¤¶È´óÓÚ³ö¿Údev MTUʱ£¬fastʧ°Ü¸öÊýͳ¼Æ
-    SKB_LOOP,                   //ͶµÝ¸øÇý¶¯£¬ÓÖ´ÓÇý¶¯ÊÕµ½µÄÒì³£»Ø»·¸öÊýͳ¼Æ£¬´óÓÚ0±íʾÇý¶¯Òì³£
-    SKB_ALLOC_FIAL,         //ÉêÇëskbʧ°ÜµÄ¸öÊýÀÛ¼ÓÖµ
-    SKB_INFO_MAX,
-};
-
-//ÍøÂçÄÚºËÔËÐÐʱµÄͳ¼ÆÖµ£¬ÖØµã¹Ø×¢½á¹¹ÌåµÄÉêÇëµã
-enum net_run_info{
-    BR_MAC_CHANGE = 0,        //ÍøÇÅmacµØÖ·±»¸Ä±ä´ÎÊý
-    NEIGH_ALLOC,                    //neighbourÉêÇë´ÎÊý
-    NEIGH_FREE,                        //neighbourÊͷŵãÀÛ¼ÓÖµ
-    BR_NEIGH_VARY,               //ÇŵãµÄ³ö¿ÚdevµÄMACµØÖ·±»¶à¸öPC¹²Ïí
-    CONN_ALLOC,                      //CONNÉêÇë´ÎÊýÀÛ¼ÓÖµ
-    CONN_FREE,                         //CONNÊͷŵãÀÛ¼ÓÖµ
-    BRFDB_ALLOC,                    //ÇŵãÉêÇë´ÎÊýÀÛ¼ÓÖµ
-    DST_ALLOC,                         //dst_entryÉêÇëÀÛ¼ÓÖµ
-    DST_FREE,                            //dst_entryÊͷŵãÀÛ¼ÓÖµ
-    HH_UPDATE,                         //HH¶þ²ãMACÍ·¸üÐÂÀÛ¼ÓÖµ
-    RT_CACHE_INVALID,               //Çå¿Õ·ÓÉcacheµÄÀÛ¼ÓÖµ
-    RT_HASH_ADD,                        //ÐÂÔört_hash_table½ÚµãµÄÀÛ¼ÓÖµ
-    RT_HASH_DEL,                        //ɾ³ýrt_hash_table½ÚµãµÄÀÛ¼ÓÖµ
-    SSMAC_CHANGE_INDEV,                //ͬһԴMACµØÖ·Èë¿Údev¸Ä±äµÄ´ÎÊý
-    NET_INFO_MAX,
-};
-enum dev_opt_state{
-    DEV_UNOPT=0,    //ÈôÓû§Î´×öÈκβÙ×÷£¬³õʼֵΪ0
-    DEV_NOPRESENT,  //¶ÔÓ¦!netif_device_presentÒì³££¬±íÃ÷Çý¶¯µ×²ãÉÐδ׼±¸ºÃ
-    DEV_OPENED,     //dev is opened
-    DEV_OPEN_FAIL,      //open  fail
-    DEV_CLOSED,          //dev is closed 
-};
-
-enum slabinfo_file{
-    FAST_SLAB = 0,
-    SKB_SLAB,
-    BRFDB_SLAB,
-    DST_SLAB,
-    FIB_TRIE_SLAB,
-    FLOW_SLAB,
-    INETPEER_SLAB,
-    INET_HASHTABLES_SLAB,
-    INET_TIMEWAIT_SOCK_SLAB,
-    MYSOCKET_SLAB,
-    NF_CONNTRACK_CORE_SLAB,
-    NF_CONNTRACK_EXCEPT_SLAB,
-    REQUEST_SOCK_SLAB,
-    SOCK_SLAB,
-    SOCKET_SLAB,
-    XFRM6_TUNNEL_SLAB,
-    XT_HASHLIMIT_SLAB,
-    SOCK_ALLOC_PAGES,           //ÓÉÓÚÎÞ·¨×¼È·ÕÒµ½Êͷŵ㣬ËùÒÔ½öÓÐ++¶¯×÷£¬--Ó¦¸ÃÓÉput_page´¥·¢
-    IP6_OUTPUT_ALLOC_PAGES,     //ÓÉÓÚÎÞ·¨×¼È·ÕÒµ½Êͷŵ㣬ËùÒÔ½öÓÐ++¶¯×÷£¬--Ó¦¸ÃÓÉput_page´¥·¢
-    IP_OUTPUT_ALLOC_PAGES,      //ÓÉÓÚÎÞ·¨×¼È·ÕÒµ½Êͷŵ㣬ËùÒÔ½öÓÐ++¶¯×÷£¬--Ó¦¸ÃÓÉput_page´¥·¢
-    SKB_ALLOC_PAGES,            //ÓÉÓÚÎÞ·¨×¼È·ÕÒµ½Êͷŵ㣬ËùÒÔ½öÓÐ++¶¯×÷£¬--Ó¦¸ÃÓÉput_page´¥·¢
-};
-
-
-/*±¾µØTCPͳ¼ÆÐÅÏ¢*/
-enum tcp_stat_info
-{
-    TCP_RECV_PKTS = 0,       /*½ÓÊÕµÄTCPÊýÄ¿*/
-    TCP_SEND_PKTS,           /*·¢Ë͵ÄTCPÊýÄ¿*/
-    TCP_RETRANS_PKTS,        /*·¢Ë͵ÄÖØ´«TCPÊýÄ¿*/
-    TCP_RECV_DROPS,          /*½ÓÊն˵ÄTCP¶ª°üÊý*/
-    TCP_SEND_DROPS,          /*·¢ËͶ˵ÄTCP¶ª°üÊý*/
-    TCP_RST_SEND_NUM,        /*·¢Ë͵ÄRSTÊý*/
-    TCP_RST_RECV_NUM,        /*½ÓÊÕµÄRSTÊý*/
-    TCP_STATS_MAX,
-};
-
-
-struct tcp_sock_stat
-{
-    unsigned long tcp_recv_num;
-    unsigned long tcp_send_num;
-    unsigned long tcp_retrans_num;
-    unsigned long tcp_recv_drops;
-    unsigned long tcp_send_drops;
-    unsigned long tcp_rst_send;
-    unsigned long tcp_rst_recv;
-};
-
-/****×ÊԴʹÓü°ÉÏÏÞÐÅÏ¢£¬ËùÓбê×¼ÄÚºËÓÐÉÏÏÞÇé¿öµÄ£¬½ÔÐè¼ì²â£¬ÒÔ·ÀÖ¹Òì³£·¢Éú****/
-struct net_max_check_msg
-{
-    /*nf_conntrack*/
-    unsigned long nf_conntrack_max;  //nf_conntrack_max = 4832
-    unsigned long nf_conntrack_now;  //net->ct.count
-    /*enqueue*/
-    int             netdev_max_backlog;    //netdev_max_backlog=1000
-    int          input_queue_len;          //²Î¿´enqueue_to_backlog½Ó¿ÚʵÏÖ
-    int          rx_dropped;                 //ÒòΪÈë¶ÓÁÐÒÑÂúÔì³ÉµÄÈë¶ÓÁжª°üµÄÀÛ¼ÓÖµ
-    /*ÐÔÄÜÏà¹Ø*/
-    int          fastnat_link_max;                //nf_conntrack_max
-    int          fastnat_link_now;                //working_list.count
-    int          fast6_link_max;                  //nf_conntrack_max
-    int          fast6_link_now;                  //working_list6.count
-    
-    /*ÍøÂçÄÚºËÔËÐÐʱµÄͳ¼ÆÖµ£¬ÖØµã¹Ø×¢½á¹¹ÌåµÄÉêÇëµã*/
-    unsigned long br_mac_change;          //ÍøÇÅmacµØÖ·±»¸Ä±ä´ÎÊý
-    unsigned long neigh_alloc;                   //neighbourÉêÇë´ÎÊý
-    unsigned long neigh_free;                      //neighbourÊͷŵãÀÛ¼ÓÖµ
-    unsigned long br_neigh_vary;                //ÇŵãµÄ³ö¿ÚdevµÄmacµØÖ·±»¶à¸öpc¹²Ïí
-    unsigned long conn_alloc;                    //connÉêÇë´ÎÊýÀÛ¼ÓÖµ
-    unsigned long conn_free;                          //connÊͷŵãÀÛ¼ÓÖµ
-    unsigned long brfdb_alloc;                    //ÇŵãÉêÇë´ÎÊýÀÛ¼ÓÖµ
-    unsigned long dst_alloc;                          //dst_entryÉêÇëÀÛ¼ÓÖµ
-    unsigned long dst_free;                            //dst_entryÊͷŵãÀÛ¼ÓÖµ
-    unsigned long hh_update;                          //hh¶þ²ãmacÍ·¸üÐÂÀÛ¼ÓÖµ
-    unsigned long rt_cache_invalid;                           //Çå¿Õ·ÓÉcacheµÄÀÛ¼ÓÖµ
-    unsigned long rt_hash_add;                        //ÐÂÔört_hash_table½ÚµãµÄÀÛ¼ÓÖµ
-    unsigned long rt_hash_del;                        //ɾ³ýrt_hash_table½ÚµãµÄÀÛ¼ÓÖµ
-    unsigned long ssmac_change_indev;           //ͬһԴMACµØÖ·Èë¿Údev¸Ä±äµÄ´ÎÊý
-};
-
-/*************************  SKBÏà¹ØÐÅÏ¢£¬°üÀ¨Í³¼ÆÐÅÏ¢ºÍfastÐÅÏ¢ ***********************/
-struct skb_and_fast_msg
-{
-    int  skb_num4;              //½ÓÊÕµ½µÄV4Êý¾Ý°ü
-    int  skb_num6;              //½ÓÊÕµ½µÄV6Êý¾Ý°ü
-    int  skb_big_num;           //len³¤¶È³¬¹ý1000µÄÊý¾Ý°ü£¬º¬V4ºÍV6
-    int  skb_small_num;         //len³¤¶ÈСÓÚ100µÄÊý¾Ý°ü£¬º¬V4ºÍV6
-    int  skb_bytes4;            //½ÓÊÕµ½µÄV4Êý¾Ý°ü×Ö½ÚÊý
-    int  skb_bytes6;            //½ÓÊÕµ½µÄV6Êý¾Ý°ü×Ö½ÚÊý
-    int  skb_unknown;           //½ÓÊÕµ½µÄδ֪ЭÒéÊý¾Ý°ü£¬°üÀ¨ARPµÈ·ÇV4ºÍV6µÄ±¨ÎÄ
-    int  skb_tcpnum;            //½ÓÊÕµ½µÄtcpÊý¾Ý°ü£¬º¬V4ºÍV6£¬µ«²»º¬fastbrµÄ±¨ÎÄ
-    int  skb_udpnum;            //½ÓÊÕµ½µÄudpÊý¾Ý°ü£¬º¬V4ºÍV6£¬µ«²»º¬fastbrµÄ±¨ÎÄ
-    int  broadcast_num4;        //½ÓÊÕµ½µÄV4¹ã²¥°ü
-    int  broadcast_num6;        //½ÓÊÕµ½µÄV6¹ã²¥°ü
-    int  multicast_num4;        //½ÓÊÕµ½µÄV4×é²¥±¨
-    int  multicast_num6;        //½ÓÊÕµ½µÄV6×é²¥±¨
-    int  fastnat_num;           //fastnat³É¹¦µÄ±¨ÎÄ
-    int  fast6_num;             //fast6³É¹¦µÄ±¨ÎÄ
-    int  fastbr_num;            //fastbr³É¹¦µÄ±¨ÎÄ
-    int  fastnat_level;         //²Î¿´FAST_NET_DEVICE
-    int  fastbr_level;          //²¼¶ûÀàÐÍ
-    //ÏÂÃæ¼¸¸öֵΪÀÛ¼ÓÖµ£¬ÐÔÄÜÏà¹Ø
-    int  irqfree_num;           //ͨ¹ýÈíÖжÏÊͷŵÄskb£¬ÐÔÄÜÏà¹Ø
-    int  skbcopy_num;           //Êý¾Ý¿½±´µÄskb£¬ÐÔÄÜÏà¹Ø
-    int  cache_copy;             //net_cacheÔ´Îļþ½øÐп½±´µÄÀÛ»ý¼ÆÊý£¬ÐÔÄÜÏà¹Ø
-    int  skbflood_num;          //·ººéµÄskb£¬ÐÔÄÜÏà¹Ø
-    int  errfree_num;          //devÔ´ÎļþÖдíÎóÊͷŵÄskb¼ÆÊý£¬°üÀ¨SKB_QUEUE_STOPºÍSKB_QUEUE_LOCKÁ½¸ö¼ÆÊýÖµ
-    int  frag_num;              //½ÓÊÕµ½µÄ·ÖƬ±¨ÎÄ£¬ÐÔÄÜÏà¹Ø
-    int  mtu_num;               //fastÖÐÊý¾Ý³¤¶È´óÓÚ³ö¿Údev MTUʱ£¬fastʧ°Ü¸öÊýͳ¼Æ
-    int  fast_loop;             //ͶµÝ¸øÇý¶¯£¬ÓÖ´ÓÇý¶¯ÊÕµ½µÄÒì³£»Ø»·¸öÊýͳ¼Æ
-    int  skb_alloc_fail ;        //ÉêÇëskbʧ°ÜµÄ¸öÊýÀÛ¼ÓÖµ
-    int  xmit_lock_num;        //xmit_lock_owner±»Ëø×¡Ôì³ÉµÄ¶ª°üµÄÀÛ¼Ó¼ÆÊý£¬Çý¶¯Ôì³ÉµÄ
-    int  xmit_stop_num;      //!netif_xmit_stopped(txq)Ôì³ÉµÄ¶ª°üµÄÀÛ¼Ó¼ÆÊý£¬Çý¶¯Ôì³ÉµÄ
-    int  br_mac_change_num;      //ÍøÇÅmacµØÖ·±»¸Ä±ä´ÎÊý
-    int  fast_tcpdump_num;      //fast×¥°ü¸öÊý
-    int  fast_switch;
-    int  fast_local4_rcv_num;       //±¾µØfast_local4³É¹¦½ÓÊÕ±¨ÎÄ
-    int  fast_local6_rcv_num;       //±¾µØfast_local6³É¹¦½ÓÊÕ±¨ÎÄ
-    int  fast_local4_output_num;    //±¾µØfast_local4³É¹¦·¢Ëͱ¨ÎÄ
-    int  fast_local6_output_num;    //±¾µØfast_local6³É¹¦·¢Ëͱ¨ÎÄ
-};
-
-struct skb_using_msg
-{
-    unsigned long skb_all;
-    unsigned long skb_tocp;
-    unsigned long skb_fromcp;
-    unsigned long skb_data_num;
-    unsigned long skb_data_size;
-    unsigned long skb_stop;
-    unsigned long skb_lock;
-    unsigned long skb_panic;
-    unsigned long skb_fail;
-};
-
-/*************************  ½á¹¹Ì嶨Òå    DEV  ***********************/
-//ÍøÂçÌí¼Ó£¬Í³¼ÆÍøÂç²ãÃæÊÕ·¢°üÇé¿ö
-struct net_dev_skbinfo {
-    unsigned long    rx_packets;  //Çý¶¯·¢ËÍÀ´µÄÊý¾Ý°ü¸öÊý£¬ÔÚnetif_rxÍ·ÀÛ¼Ó
-    unsigned long    tx_packets;  //·¢Ë͸øÇý¶¯µÄÊý¾Ý°ü¸öÊý£¬ÔÚdev_queue_xmitÍ·ÀÛ¼Ó
-    unsigned long    rx_bytes;    //×Ö½ÚÊý
-    unsigned long    tx_bytes;    //×Ö½ÚÊý
-    unsigned long    rx_dropped;  //netif_rxÄÚ²¿Á÷³ÌÖÐËùÓÐÒì³£ÊÍ·ÅskbµÄÀÛ¼Ó£¬Èç´ïµ½netdev_max_backlogÈë¶ÓÁÐÉÏÏÞ¶ø¶ª°ü
-    unsigned long    tx_dropped;  //dev_queue_xmitÄÚ²¿Á÷³ÌÖÐËùÓÐÒì³£ÊÍ·ÅskbµÄÀÛ¼Ó£¬Èç(txq->xmit_lock_owner == cpu)Ôì³ÉµÄ¶ª°ü
-};
-
-//ÍøÂçÌí¼Ó£¬connÊÕ·¢°üÇé¿ö
-struct conn_skbinfo {
-    unsigned long    packets;  //Êý¾Ý°ü¸öÊý
-    unsigned long    bytes;    //×Ö½ÚÊý
-};
-
-/* ¸Ã½á¹¹ÌåÖеÄËùÓÐÐÅÏ¢½ÔÓÉÇý¶¯¸³Öµ£¬ÍøÂç×é²»»á¸³Öµ */
-//Õâ¸ö½á¹¹Ì屨ÐëºÍ <linux/netdevice.h>ÖеÄnet_device_stats±£³ÖÒ»Ö   
-struct net_dev_stats {
-            unsigned long    rx_packets;
-            unsigned long    tx_packets;
-            unsigned long    rx_bytes;
-            unsigned long    tx_bytes;
-            unsigned long    rx_errors;   //Ðè¼à¿Ø
-            unsigned long    tx_errors;   //Ðè¼à¿Ø
-            unsigned long    rx_dropped;   //Ðè¼à¿Ø
-            unsigned long    tx_dropped;   //Ðè¼à¿Ø
-            unsigned long    multicast;
-            unsigned long    collisions;
-            unsigned long    rx_length_errors;   //Ðè¼à¿Ø
-            unsigned long    rx_over_errors;   //Ðè¼à¿Ø
-            unsigned long    rx_crc_errors;   //Ðè¼à¿Ø
-            unsigned long    rx_frame_errors;   //Ðè¼à¿Ø
-            unsigned long    rx_fifo_errors;   //Ðè¼à¿Ø
-            unsigned long    rx_missed_errors;   //Ðè¼à¿Ø
-            unsigned long    tx_aborted_errors;   //Ðè¼à¿Ø
-            unsigned long    tx_carrier_errors;   //Ðè¼à¿Ø
-            unsigned long    tx_fifo_errors;   //Ðè¼à¿Ø
-            unsigned long    tx_heartbeat_errors;   //Ðè¼à¿Ø
-            unsigned long    tx_window_errors;   //Ðè¼à¿Ø
-            unsigned long    rx_compressed;
-            unsigned long    tx_compressed;         
-};
-
-struct ioctl_dev_netstats
-{
-    char dev_name[20];
-    struct net_dev_skbinfo  stats_dbg;  //ÍøÂçÌí¼ÓµÄ£¬Í³¼ÆÍøÂç²ãÃæÊÕ·¢°üÇé¿ö
-    struct net_dev_stats  stats;     //Êý¾ÝÊÕ·¢Í³¼ÆÖµ£¬¸Ãֵȫ²¿ÓÉÇý¶¯¸³ÖµµÄ£¬ÍøÂç²»¸³Öµ
-    unsigned int        flags;           //IFF_UPµÈ
-    unsigned char       operstate;    //ĿǰûɶÓÃ
-    unsigned long       state;           //µ×²ãÇý¶¯×´Ì¬£¬__LINK_STATE_NOCARRIER
-    int                 net_flag;        //Óû§ifconfigµÄ½á¹û״̬£¬ÈçDEV_OPEN_FAIL
-    unsigned long       que_state;       //¶ÓÁÐ״̬£¬¶ÔÓ¦ dev->_tx[0].state£¬Èç__QUEUE_STATE_DRV_XOFF
-    unsigned int        num_tx_queues;   //TX¶ÓÁÐÊýÁ¿£¬¶àÊýÇý¶¯Ê¹ÓÃΨһ¶ÓÁУ¬ÔòֵΪ1
-};
-
-
-/*************************  ½á¹¹Ì嶨Òå    OTHER  ***********************/
-struct pc_info
-{  
-    unsigned char mac_addr[6];
-    char dev_name[DEV_NAME_LEN];
-};
-
-struct pc_node
-{
-    unsigned int num;
-    struct pc_info info[PC_MAX_NUM];
-};
-
-struct leak_info
-{  
-    void *addr;
-    int user_num;  //µ±Ç°data»òskb±»Ê¹ÓõļÆÊýÖµ£¬°éËæskbÖеÄusersºÍdataref¶ø±ä»¯
-    int track_num; //¼Ç¼ÒѼǼµ½Êý×é¹ì¼£µÄϱêË÷Òý
-    char func_track[10][100];//º¯Êý»ØËݹ켣
-};
-
-struct slab_info
-{
-    int num[SLAB_NUM][2];
-};
-
- 
-struct hash_info
-{
-    int max_hash_size;
-    int current_hash_num;
-    int hash[HASH_ARRAY_COUNT][2];
-    int current_array_size;
-};
-
-struct ptype_info
-{
-    unsigned long ptype_all[5];
-    unsigned long ptype_base[15];
-};
-
-struct pkt_lost_stats
-{
-    unsigned int send_drops;
-    unsigned int send_drop_bytes;
-    unsigned int recv_drops;
-    unsigned int recv_drop_bytes;
-    unsigned int total_packets;
-    unsigned int total_bytes;
-};
-
-struct pkt_lost_info
-{
-    struct pkt_lost_stats stats[2];
-};
-
-typedef struct
-{
-    char usb[DEV_NAME_LEN_20];
-    char ps[DEV_NAME_LEN_20];
-    char wifi_wan[DEV_NAME_LEN_20];
-    char wifi_lan[DEV_NAME_LEN_20];
-    char eth_wan[DEV_NAME_LEN_20];
-    char eth_lan[DEV_NAME_LEN_20];
-    char ps_ext1[DEV_NAME_LEN_20];
-    char ps_ext2[DEV_NAME_LEN_20];
-    char ps_ext3[DEV_NAME_LEN_20];
-    char ps_ext4[DEV_NAME_LEN_20];
-} net_dbg_dev_info_t;
-
-struct time_list{
-    struct timeval tv;
-    struct list_head packet_list;
-};
-
-struct net_debug_packet_list{
-    struct list_head list;
-    struct list_head time;
-    int pid;
-	int tgid;
-	char pname[DEV_NAME_LEN];
-    int count;
-};
-
-/******************************±äÁ¿ÉùÃ÷***********************/
-/******************************±äÁ¿ÉùÃ÷***********************/
-/******************************±äÁ¿ÉùÃ÷***********************/
-extern int leak_set;      // 1±íʾ¸ú×Ùskb¼°dataÉêÇëÊͷŵ㣻2±íʾ¸ú×Ùusers£¬ÒÔ¼ì²âΪºÎskbʼÖÕ²»ÄÜÊÍ·Å£¬ÔÝʱ¸Ã¹¦ÄÜÉв»¿ÉÓÃ
-extern int leak_list_max; // ÈÝÐí»º´æµÄ´ýÊͷŵÄskb¼°dataµÄ¸öÊý£¬¿Éµ÷Õû£»
-extern int track_max;     //¹ì¼£¸ú×ÙÊý×éµÄÉÏÏÞ£¬½öµ±user++--ʱ²ÅÐèÒªÀ©´ó£¬·ñÔò2¼´¿É£»
-extern int stack_lenmax;  //Õ»º¯Êý¹ì¼£µÄ×Ö·û¸öÊýÉÏÏÞ£»
-extern int leak_full_panic;
-extern unsigned long  now_time; //µ±Ç°Ê±¿Ìµã
-extern spinlock_t  leak_lock;   //·ÀÖ¹ÔÚbhÖб»µ÷Óã¬Ê¹ÓÃbhËø
-
-
-extern struct leak_list data_leak[TRACK_END];
-extern struct leak_list data_free[TRACK_END];//·Ö±ð¶ÔÓ¦ÕýÔÚʹÓõÄÊý¾ÝºÍÒѾ­ÊͷŵÄÊý¾ÝÁ´±í
-extern void *data_head[TRACK_END];//ÿ¸öÄÚ´æ¼à¿ØÀàÐ͵ijõʼ»¯Ê×µØÖ·£¬È·±£Á´±íµÄÊý¾ÝÇøÁ¬Ðø£¬ÒÔ±ãramdumpʱֱ½ÓËÑË÷
-extern int init_finish ;//Á´±í³õʼ»¯±êÖ¾
-
-/*dump stkÓõ½µÄÏà¹Ø±äÁ¿*/
-extern unsigned int skb_dump_len;
-extern char skb_dump_str[];
-
-/*ºË¼äÖØ¸´Êͷżì²â¿ª¹Ø*/
-extern int set_psbufleak ;  
-extern int set_extskbleak ;
-
-extern unsigned long skbinfo_dbg[SKB_INFO_MAX];
-extern unsigned long netruninfo_dbg[NET_INFO_MAX]; 
-extern unsigned char br_ipchange_flag; //br0 ip´Û¸Ä¶ÏÑÔ
-extern int set_tcpdump; //¶¨µã×¥°ü¿ª¹Ø
-
-extern unsigned char ignoremac[ETH_ALEN];
-
-/*¶Ô±¾µØTCP½øÐÐÏà¹ØÍ³¼Æ*/
-extern unsigned long tcp_stats_dbg[TCP_STATS_MAX];
-
-extern char br_name[];
-extern char ps_name[];
-extern char usb_name[];
-extern char ppp_name[];
-
-
-//sqÌí¼Ó£¬ÓÃÓÚÊý¾Ý°ü½¨Ä£ÒÔ¼°ÐÔÄÜͳ¼ÆÏà¹Ø£¬net_info_numÈ«¾ÖÖÐÐÔÄÜÏà¹ØµÄͳ¼ÆÒ²ÐèÌåÏÖ
-extern  int  skb_num4;                  //½ÓÊÕµ½µÄV4Êý¾Ý°ü
-extern  int  skb_num6;                  //½ÓÊÕµ½µÄV6Êý¾Ý°ü
-extern  int  skb_big_num;               //len³¤¶È³¬¹ý1000µÄÊý¾Ý°ü£¬º¬V4ºÍV6
-extern  int  skb_small_num;             //len³¤¶ÈСÓÚ100µÄÊý¾Ý°ü£¬º¬V4ºÍV6
-extern  int  skb_bytes4;                //½ÓÊÕµ½µÄV4Êý¾Ý°ü×Ö½ÚÊý
-extern  int  skb_bytes6;                //½ÓÊÕµ½µÄV6Êý¾Ý°ü×Ö½ÚÊý
-extern  int  skb_unknown;               //½ÓÊÕµ½µÄδ֪ЭÒéÊý¾Ý°ü£¬°üÀ¨ARP
-extern  int  skb_tcpnum;                //½ÓÊÕµ½µÄtcpÊý¾Ý°ü£¬º¬V4ºÍV6
-extern  int  skb_udpnum;                //½ÓÊÕµ½µÄudpÊý¾Ý°ü£¬º¬V4ºÍV6
-extern  int  broadcast_num4;            //½ÓÊÕµ½µÄV4¹ã²¥°ü
-extern  int  broadcast_num6;            //½ÓÊÕµ½µÄV6¹ã²¥°ü
-extern  int  multicast_num4;            //½ÓÊÕµ½µÄV4×é²¥±¨
-extern  int  multicast_num6;            //½ÓÊÕµ½µÄV6×é²¥±¨
-extern  int  fastnat_num;               //fastnat³É¹¦µÄ±¨ÎÄ
-extern  int  fast6_num;                 //fast6³É¹¦µÄ±¨ÎÄ
-extern  int  fastbr_num;                //fastbr³É¹¦µÄ±¨ÎÄ
-extern  int  fast_local4_rcv_num;       //±¾µØfast_local4³É¹¦½ÓÊÕ±¨ÎÄ
-extern  int  fast_local6_rcv_num;       //±¾µØfast_local6³É¹¦½ÓÊÕ±¨ÎÄ
-extern  int  fast_local4_output_num;    //±¾µØfast_local4³É¹¦·¢Ëͱ¨ÎÄ
-extern  int  fast_local6_output_num;    //±¾µØfast_local6³É¹¦·¢Ëͱ¨ÎÄ
-extern  int  fast_tcpdump_num;          //fast×¥°üÊýÁ¿
-
-extern int double_mac; 
-
-extern int net_debug_ping;               //×ÔÑÐping°ü¼Ç¼¶ª°üʱÑÓ¹¦ÄÜ
-extern int net_debug_perf;               //×ÔÑÐtcp/udp°ü¼Ç¼¶ª°üʱÑÓ¹¦ÄÜ£¬ÐèÒªserver¶ÎÄܰ²×°×ÔÑÐÓ¦ÓÃ
-
-//slabÄÚ´æÊ¹ÓÃÏà¹ØÍ³¼Æ£¬Î´¿¼ÂÇͨÓÃslabµØÖ·³Ø£¬Èçkmalloc
-extern struct slab_info slab_count;
-
-//·¢Ë͸øCP´¦ÀíµÄ£¬´ýÊͷŵÄskbÁ´±í£¬ÓÃÓÚlog¸ú×Ù£¬·ÀÖ¹ºË¼äÄÚ´æÐ¹Â©£»
-extern struct ext_list toCp_listlog[MAX_EXT_MEM_HASH];
-
-//CP·¢Ë͸øAPµÄpsbufÐÅÏ¢Á´±í£¬ÓÃÓÚlog¸ú×Ù£¬·ÀÖ¹ºË¼äÄÚ´æÐ¹Â©;
-extern struct ext_list fromCp_list[MAX_EXT_MEM_HASH];
-
-/*½øÐÐTCPͳ¼Æ*/
-#define TCP_PKT_STATS_INC(_mod)    tcp_stats_dbg[_mod]++
-
-
-/******************************Íⲿ½Ó¿ÚÉùÃ÷***********************/
-/******************************Íⲿ½Ó¿ÚÉùÃ÷***********************/
-/******************************Íⲿ½Ó¿ÚÉùÃ÷***********************/
-extern void skbinfo_add(unsigned char *addr,unsigned int skb_type);
-extern void skbinfo_del(unsigned char *addr,unsigned int skb_type);
-extern void netruninfo_add(unsigned char *addr,unsigned int info_type);
-extern void netruninfo_del(unsigned char *addr,unsigned int info_type);
-
-extern int get_skbcnt(unsigned long arg);
-extern int get_dev_info(unsigned long arg);
-extern int get_skb_using(unsigned long arg);
-extern int network_get_pcmac(unsigned long arg);
-extern int get_kernelparam(unsigned long arg);
-extern int get_slab_info(unsigned long arg);
-extern int get_hash_info(unsigned long arg);
-
-extern int set_fastnat_level(void *arg);
-extern int set_fastbr_level(void *arg);
-extern int set_fast_debug_panic(void *arg);
-extern int set_fast_dev_xmit(void *arg);
-extern int set_ackdrop(void *arg);
-extern int set_dumpflag(void *arg);
-extern int set_skb_dump(unsigned long arg);
-extern int set_print_opt(void *arg);
-extern int set_sq_tcpdump(void *arg);
-extern int set_leak(void *arg);
-extern int set_max(unsigned long arg);
-extern int set_stacklenmax(unsigned long arg);
-extern int set_trackmax(unsigned long arg);
-extern int set_tcpdump_opt(unsigned long arg);
-extern int set_br_name(void *arg);
-extern int set_ps_name(void *arg);
-extern int set_usb_name(void *arg);
-extern int set_ppp_name(void *arg);
-extern int set_brip(unsigned long arg);
-extern int set_kernelparam(unsigned long arg);
-extern int set_errno_procname(void *arg);
-extern int get_neigh_ip(unsigned long arg);
-extern int get_skb_fast(unsigned long arg);
-extern int get_max_msg(unsigned long arg);
-extern int get_ptype(unsigned long arg);
-extern int get_process_info(void *arg);
-extern void netslab_inc(int i);
-extern void netslab_dec(int i);
-extern void track_netlink(struct sk_buff *skb,u32 group);
-//extern void record_app_atcive_net();
-
-int get_pkt_lost_info(unsigned long arg);
-
-int get_tcp_stat_info(unsigned long arg);
-
-#endif //end _NETIO_FASTINFO_H_
-
-
diff --git a/upstream/linux-5.10/include/net/netfilter/nf_conntrack.h b/upstream/linux-5.10/include/net/netfilter/nf_conntrack.h
deleted file mode 100755
index 04ab917..0000000
--- a/upstream/linux-5.10/include/net/netfilter/nf_conntrack.h
+++ /dev/null
@@ -1,368 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Connection state tracking for netfilter.  This is separated from,
- * but required by, the (future) NAT layer; it can also be used by an iptables
- * extension.
- *
- * 16 Dec 2003: Yasuyuki Kozakai @USAGI <yasuyuki.kozakai@toshiba.co.jp>
- *	- generalize L3 protocol dependent part.
- *
- * Derived from include/linux/netfiter_ipv4/ip_conntrack.h
- */
-
-#ifndef _NF_CONNTRACK_H
-#define _NF_CONNTRACK_H
-
-#include <linux/bitops.h>
-#include <linux/compiler.h>
-
-#include <linux/netfilter/nf_conntrack_common.h>
-#include <linux/netfilter/nf_conntrack_tcp.h>
-#include <linux/netfilter/nf_conntrack_dccp.h>
-#include <linux/netfilter/nf_conntrack_sctp.h>
-#include <linux/netfilter/nf_conntrack_proto_gre.h>
-#include <net/SI/netioc_proc.h>
-
-#include <net/netfilter/nf_conntrack_tuple.h>
-#ifdef CONFIG_FASTNAT_MODULE
-#include <net/SI/pkt_lost_track.h>
-#endif
-
-
-
-struct nf_ct_udp {
-	unsigned long	stream_ts;
-};
-
-/* per conntrack: protocol private data */
-union nf_conntrack_proto {
-	/* insert conntrack proto private data here */
-	struct nf_ct_dccp dccp;
-	struct ip_ct_sctp sctp;
-	struct ip_ct_tcp tcp;
-	struct nf_ct_udp udp;
-	struct nf_ct_gre gre;
-	unsigned int tmpl_padto;
-};
-
-union nf_conntrack_expect_proto {
-	/* insert expect proto private data here */
-};
-
-struct nf_conntrack_net {
-	unsigned int users4;
-	unsigned int users6;
-	unsigned int users_bridge;
-};
-
-#include <linux/types.h>
-#include <linux/skbuff.h>
-
-#include <net/netfilter/ipv4/nf_conntrack_ipv4.h>
-#include <net/netfilter/ipv6/nf_conntrack_ipv6.h>
-#ifdef CONFIG_FASTNAT_MODULE
-struct fast_ct_ext{
-    union {
-        struct {
-            struct dst_entry  __rcu *fast_dst[IP_CT_DIR_MAX];
-            struct net_device __rcu *fast_brport[IP_CT_DIR_MAX];
-        };
-        struct sock __rcu *sk;
-    };
-    unsigned char isFast; 
-};
-#endif
-
-struct nf_conn {
-	/* Usage count in here is 1 for hash table, 1 per skb,
-	 * plus 1 for any connection(s) we are `master' for
-	 *
-	 * Hint, SKB address this struct and refcnt via skb->_nfct and
-	 * helpers nf_conntrack_get() and nf_conntrack_put().
-	 * Helper nf_ct_put() equals nf_conntrack_put() by dec refcnt,
-	 * beware nf_ct_get() is different and don't inc refcnt.
-	 */
-	struct nf_conntrack ct_general;
-
-	spinlock_t	lock;
-	/* jiffies32 when this ct is considered dead */
-	u32 timeout;
-
-#ifdef CONFIG_NF_CONNTRACK_ZONES
-	struct nf_conntrack_zone zone;
-#endif
-	/* XXX should I move this to the tail ? - Y.K */
-	/* These are my tuples; original and reply */
-	struct nf_conntrack_tuple_hash tuplehash[IP_CT_DIR_MAX];
-
-	/* Have we seen traffic both ways yet? (bitset) */
-	unsigned long status;
-
-	u16		cpu;
-	possible_net_t ct_net;
-
-#if IS_ENABLED(CONFIG_NF_NAT)
-	struct hlist_node	nat_bysource;
-#endif
-	/* all members below initialized via memset */
-	struct { } __nfct_init_offset;
-
-	/* If we were expected by an expectation, this will be it */
-	struct nf_conn *master;
-
-#if defined(CONFIG_NF_CONNTRACK_MARK)
-	u_int32_t mark;
-#endif
-
-#ifdef CONFIG_NF_CONNTRACK_SECMARK
-	u_int32_t secmark;
-#endif
-
-	/* Extensions */
-	struct nf_ct_ext *ext;
-
-	/* Storage reserved for other modules, must be the last member */
-	union nf_conntrack_proto proto;
-#ifdef CONFIG_FASTNAT_MODULE
-	struct fast_ct_ext fast_ct;
-	struct conn_seq_track conn_pktloss[IP_CT_DIR_MAX];
-#endif
-
-	struct conn_skbinfo packet_info[IP_CT_DIR_MAX];
-	struct net_device* indev[IP_CT_DIR_MAX];
-	struct net_device* outdev[IP_CT_DIR_MAX];
-};
-
-static inline struct nf_conn *
-nf_ct_tuplehash_to_ctrack(const struct nf_conntrack_tuple_hash *hash)
-{
-	return container_of(hash, struct nf_conn,
-			    tuplehash[hash->tuple.dst.dir]);
-}
-
-static inline u_int16_t nf_ct_l3num(const struct nf_conn *ct)
-{
-	return ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.src.l3num;
-}
-
-static inline u_int8_t nf_ct_protonum(const struct nf_conn *ct)
-{
-	return ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.dst.protonum;
-}
-
-#define nf_ct_tuple(ct, dir) (&(ct)->tuplehash[dir].tuple)
-
-/* get master conntrack via master expectation */
-#define master_ct(conntr) (conntr->master)
-
-extern struct net init_net;
-
-static inline struct net *nf_ct_net(const struct nf_conn *ct)
-{
-	return read_pnet(&ct->ct_net);
-}
-
-/* Alter reply tuple (maybe alter helper). */
-void nf_conntrack_alter_reply(struct nf_conn *ct,
-			      const struct nf_conntrack_tuple *newreply);
-
-/* Is this tuple taken? (ignoring any belonging to the given
-   conntrack). */
-int nf_conntrack_tuple_taken(const struct nf_conntrack_tuple *tuple,
-			     const struct nf_conn *ignored_conntrack);
-
-/* Return conntrack_info and tuple hash for given skb. */
-static inline struct nf_conn *
-nf_ct_get(const struct sk_buff *skb, enum ip_conntrack_info *ctinfo)
-{
-	unsigned long nfct = skb_get_nfct(skb);
-
-	*ctinfo = nfct & NFCT_INFOMASK;
-	return (struct nf_conn *)(nfct & NFCT_PTRMASK);
-}
-
-/* decrement reference count on a conntrack */
-static inline void nf_ct_put(struct nf_conn *ct)
-{
-	WARN_ON(!ct);
-	nf_conntrack_put(&ct->ct_general);
-}
-
-/* Protocol module loading */
-int nf_ct_l3proto_try_module_get(unsigned short l3proto);
-void nf_ct_l3proto_module_put(unsigned short l3proto);
-
-/* load module; enable/disable conntrack in this namespace */
-int nf_ct_netns_get(struct net *net, u8 nfproto);
-void nf_ct_netns_put(struct net *net, u8 nfproto);
-
-/*
- * Allocate a hashtable of hlist_head (if nulls == 0),
- * or hlist_nulls_head (if nulls == 1)
- */
-void *nf_ct_alloc_hashtable(unsigned int *sizep, int nulls);
-
-void nf_ct_free_hashtable(void *hash, unsigned int size);
-int nf_conntrack_hash_check_insert(struct nf_conn *ct);
-bool nf_ct_delete(struct nf_conn *ct, u32 pid, int report);
-
-bool nf_ct_get_tuplepr(const struct sk_buff *skb, unsigned int nhoff,
-		       u_int16_t l3num, struct net *net,
-		       struct nf_conntrack_tuple *tuple);
-
-void __nf_ct_refresh_acct(struct nf_conn *ct, enum ip_conntrack_info ctinfo,
-			  const struct sk_buff *skb,
-			  u32 extra_jiffies, bool do_acct);
-
-/* Refresh conntrack for this many jiffies and do accounting */
-static inline void nf_ct_refresh_acct(struct nf_conn *ct,
-				      enum ip_conntrack_info ctinfo,
-				      const struct sk_buff *skb,
-				      u32 extra_jiffies)
-{
-	__nf_ct_refresh_acct(ct, ctinfo, skb, extra_jiffies, true);
-}
-
-/* Refresh conntrack for this many jiffies */
-static inline void nf_ct_refresh(struct nf_conn *ct,
-				 const struct sk_buff *skb,
-				 u32 extra_jiffies)
-{
-	__nf_ct_refresh_acct(ct, 0, skb, extra_jiffies, false);
-}
-
-/* kill conntrack and do accounting */
-bool nf_ct_kill_acct(struct nf_conn *ct, enum ip_conntrack_info ctinfo,
-		     const struct sk_buff *skb);
-
-/* kill conntrack without accounting */
-static inline bool nf_ct_kill(struct nf_conn *ct)
-{
-	return nf_ct_delete(ct, 0, 0);
-}
-
-/* Set all unconfirmed conntrack as dying */
-void nf_ct_unconfirmed_destroy(struct net *);
-
-/* Iterate over all conntracks: if iter returns true, it's deleted. */
-void nf_ct_iterate_cleanup_net(struct net *net,
-			       int (*iter)(struct nf_conn *i, void *data),
-			       void *data, u32 portid, int report);
-
-/* also set unconfirmed conntracks as dying. Only use in module exit path. */
-void nf_ct_iterate_destroy(int (*iter)(struct nf_conn *i, void *data),
-			   void *data);
-
-struct nf_conntrack_zone;
-
-void nf_conntrack_free(struct nf_conn *ct);
-struct nf_conn *nf_conntrack_alloc(struct net *net,
-				   const struct nf_conntrack_zone *zone,
-				   const struct nf_conntrack_tuple *orig,
-				   const struct nf_conntrack_tuple *repl,
-				   gfp_t gfp);
-
-static inline int nf_ct_is_template(const struct nf_conn *ct)
-{
-	return test_bit(IPS_TEMPLATE_BIT, &ct->status);
-}
-
-/* It's confirmed if it is, or has been in the hash table. */
-static inline int nf_ct_is_confirmed(const struct nf_conn *ct)
-{
-	return test_bit(IPS_CONFIRMED_BIT, &ct->status);
-}
-
-static inline int nf_ct_is_dying(const struct nf_conn *ct)
-{
-	return test_bit(IPS_DYING_BIT, &ct->status);
-}
-
-/* Packet is received from loopback */
-static inline bool nf_is_loopback_packet(const struct sk_buff *skb)
-{
-	return skb->dev && skb->skb_iif && skb->dev->flags & IFF_LOOPBACK;
-}
-
-#define nfct_time_stamp ((u32)(jiffies))
-
-/* jiffies until ct expires, 0 if already expired */
-static inline unsigned long nf_ct_expires(const struct nf_conn *ct)
-{
-	s32 timeout = READ_ONCE(ct->timeout) - nfct_time_stamp;
-
-	return timeout > 0 ? timeout : 0;
-}
-
-static inline bool nf_ct_is_expired(const struct nf_conn *ct)
-{
-	return (__s32)(READ_ONCE(ct->timeout) - nfct_time_stamp) <= 0;
-}
-
-/* use after obtaining a reference count */
-static inline bool nf_ct_should_gc(const struct nf_conn *ct)
-{
-	return nf_ct_is_expired(ct) && nf_ct_is_confirmed(ct) &&
-	       !nf_ct_is_dying(ct);
-}
-
-#define	NF_CT_DAY	(86400 * HZ)
-
-/* Set an arbitrary timeout large enough not to ever expire, this save
- * us a check for the IPS_OFFLOAD_BIT from the packet path via
- * nf_ct_is_expired().
- */
-static inline void nf_ct_offload_timeout(struct nf_conn *ct)
-{
-	if (nf_ct_expires(ct) < NF_CT_DAY / 2)
-		WRITE_ONCE(ct->timeout, nfct_time_stamp + NF_CT_DAY);
-}
-
-struct kernel_param;
-
-int nf_conntrack_set_hashsize(const char *val, const struct kernel_param *kp);
-int nf_conntrack_hash_resize(unsigned int hashsize);
-
-extern struct hlist_nulls_head *nf_conntrack_hash;
-extern unsigned int nf_conntrack_htable_size;
-extern seqcount_spinlock_t nf_conntrack_generation;
-extern unsigned int nf_conntrack_max;
-
-/* must be called with rcu read lock held */
-static inline void
-nf_conntrack_get_ht(struct hlist_nulls_head **hash, unsigned int *hsize)
-{
-	struct hlist_nulls_head *hptr;
-	unsigned int sequence, hsz;
-
-	do {
-		sequence = read_seqcount_begin(&nf_conntrack_generation);
-		hsz = nf_conntrack_htable_size;
-		hptr = nf_conntrack_hash;
-	} while (read_seqcount_retry(&nf_conntrack_generation, sequence));
-
-	*hash = hptr;
-	*hsize = hsz;
-}
-
-struct nf_conn *nf_ct_tmpl_alloc(struct net *net,
-				 const struct nf_conntrack_zone *zone,
-				 gfp_t flags);
-void nf_ct_tmpl_free(struct nf_conn *tmpl);
-
-u32 nf_ct_get_id(const struct nf_conn *ct);
-
-static inline void
-nf_ct_set(struct sk_buff *skb, struct nf_conn *ct, enum ip_conntrack_info info)
-{
-	skb_set_nfct(skb, (unsigned long)ct | info);
-}
-
-#define NF_CT_STAT_INC(net, count)	  __this_cpu_inc((net)->ct.stat->count)
-#define NF_CT_STAT_INC_ATOMIC(net, count) this_cpu_inc((net)->ct.stat->count)
-#define NF_CT_STAT_ADD_ATOMIC(net, count, v) this_cpu_add((net)->ct.stat->count, (v))
-
-#define MODULE_ALIAS_NFCT_HELPER(helper) \
-        MODULE_ALIAS("nfct-helper-" helper)
-
-#endif /* _NF_CONNTRACK_H */
diff --git a/upstream/linux-5.10/init/main.c b/upstream/linux-5.10/init/main.c
deleted file mode 100755
index 83d93ea..0000000
--- a/upstream/linux-5.10/init/main.c
+++ /dev/null
@@ -1,1571 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- *  linux/init/main.c
- *
- *  Copyright (C) 1991, 1992  Linus Torvalds
- *
- *  GK 2/5/95  -  Changed to support mounting root fs via NFS
- *  Added initrd & change_root: Werner Almesberger & Hans Lermen, Feb '96
- *  Moan early if gcc is old, avoiding bogus kernels - Paul Gortmaker, May '96
- *  Simplified starting of init:  Michael A. Griffith <grif@acm.org>
- */
-
-#define DEBUG		/* Enable initcall_debug */
-
-#include <linux/types.h>
-#include <linux/extable.h>
-#include <linux/module.h>
-#include <linux/proc_fs.h>
-#include <linux/binfmts.h>
-#include <linux/kernel.h>
-#include <linux/syscalls.h>
-#include <linux/stackprotector.h>
-#include <linux/string.h>
-#include <linux/ctype.h>
-#include <linux/delay.h>
-#include <linux/ioport.h>
-#include <linux/init.h>
-#include <linux/initrd.h>
-#include <linux/memblock.h>
-#include <linux/acpi.h>
-#include <linux/bootconfig.h>
-#include <linux/console.h>
-#include <linux/nmi.h>
-#include <linux/percpu.h>
-#include <linux/kmod.h>
-#include <linux/kprobes.h>
-#include <linux/vmalloc.h>
-#include <linux/kernel_stat.h>
-#include <linux/start_kernel.h>
-#include <linux/security.h>
-#include <linux/smp.h>
-#include <linux/profile.h>
-#include <linux/rcupdate.h>
-#include <linux/moduleparam.h>
-#include <linux/kallsyms.h>
-#include <linux/writeback.h>
-#include <linux/cpu.h>
-#include <linux/cpuset.h>
-#include <linux/cgroup.h>
-#include <linux/efi.h>
-#include <linux/tick.h>
-#include <linux/sched/isolation.h>
-#include <linux/interrupt.h>
-#include <linux/taskstats_kern.h>
-#include <linux/delayacct.h>
-#include <linux/unistd.h>
-#include <linux/utsname.h>
-#include <linux/rmap.h>
-#include <linux/mempolicy.h>
-#include <linux/key.h>
-#include <linux/buffer_head.h>
-#include <linux/page_ext.h>
-#include <linux/debug_locks.h>
-#include <linux/debugobjects.h>
-#include <linux/lockdep.h>
-#include <linux/kmemleak.h>
-#include <linux/padata.h>
-#include <linux/pid_namespace.h>
-#include <linux/device/driver.h>
-#include <linux/kthread.h>
-#include <linux/sched.h>
-#include <linux/sched/init.h>
-#include <linux/signal.h>
-#include <linux/idr.h>
-#include <linux/kgdb.h>
-#include <linux/ftrace.h>
-#include <linux/async.h>
-#include <linux/sfi.h>
-#include <linux/shmem_fs.h>
-#include <linux/slab.h>
-#include <linux/perf_event.h>
-#include <linux/ptrace.h>
-#include <linux/pti.h>
-#include <linux/blkdev.h>
-#include <linux/elevator.h>
-#include <linux/sched/clock.h>
-#include <linux/sched/task.h>
-#include <linux/sched/task_stack.h>
-#include <linux/context_tracking.h>
-#include <linux/random.h>
-#include <linux/list.h>
-#include <linux/integrity.h>
-#include <linux/proc_ns.h>
-#include <linux/io.h>
-#include <linux/cache.h>
-#include <linux/rodata_test.h>
-#include <linux/jump_label.h>
-#include <linux/mem_encrypt.h>
-#include <linux/kcsan.h>
-#include <linux/init_syscalls.h>
-
-#include <asm/io.h>
-#include <asm/bugs.h>
-#include <asm/setup.h>
-#include <asm/sections.h>
-#include <asm/cacheflush.h>
-
-#define CREATE_TRACE_POINTS
-#include <trace/events/initcall.h>
-
-#include <kunit/test.h>
-
-#ifdef CONFIG_FLAGS_UTILS
-#include <linux/reboot.h>
-#include "pub_flags.h"
-#endif
-
-static int kernel_init(void *);
-
-extern void init_IRQ(void);
-extern void radix_tree_init(void);
-
-/*
- * Debug helper: via this flag we know that we are in 'early bootup code'
- * where only the boot processor is running with IRQ disabled.  This means
- * two things - IRQ must not be enabled before the flag is cleared and some
- * operations which are not allowed with IRQ disabled are allowed while the
- * flag is set.
- */
-bool early_boot_irqs_disabled __read_mostly;
-
-enum system_states system_state __read_mostly;
-EXPORT_SYMBOL(system_state);
-
-/*
- * Boot command-line arguments
- */
-#define MAX_INIT_ARGS CONFIG_INIT_ENV_ARG_LIMIT
-#define MAX_INIT_ENVS CONFIG_INIT_ENV_ARG_LIMIT
-
-extern void time_init(void);
-/* Default late time init is NULL. archs can override this later. */
-void (*__initdata late_time_init)(void);
-
-/* Untouched command line saved by arch-specific code. */
-char __initdata boot_command_line[COMMAND_LINE_SIZE];
-/* Untouched saved command line (eg. for /proc) */
-char *saved_command_line;
-/* Command line for parameter parsing */
-static char *static_command_line;
-/* Untouched extra command line */
-static char *extra_command_line;
-/* Extra init arguments */
-static char *extra_init_args;
-
-#ifdef CONFIG_BOOT_CONFIG
-/* Is bootconfig on command line? */
-static bool bootconfig_found;
-static bool initargs_found;
-#else
-# define bootconfig_found false
-# define initargs_found false
-#endif
-
-static char *execute_command;
-static char *ramdisk_execute_command = "/init";
-
-/*
- * Used to generate warnings if static_key manipulation functions are used
- * before jump_label_init is called.
- */
-bool static_key_initialized __read_mostly;
-EXPORT_SYMBOL_GPL(static_key_initialized);
-
-/*
- * If set, this is an indication to the drivers that reset the underlying
- * device before going ahead with the initialization otherwise driver might
- * rely on the BIOS and skip the reset operation.
- *
- * This is useful if kernel is booting in an unreliable environment.
- * For ex. kdump situation where previous kernel has crashed, BIOS has been
- * skipped and devices will be in unknown state.
- */
-unsigned int reset_devices;
-EXPORT_SYMBOL(reset_devices);
-
-static int __init set_reset_devices(char *str)
-{
-	reset_devices = 1;
-	return 1;
-}
-
-__setup("reset_devices", set_reset_devices);
-
-static const char *argv_init[MAX_INIT_ARGS+2] = { "init", NULL, };
-const char *envp_init[MAX_INIT_ENVS+2] = { "HOME=/", "TERM=linux", NULL, };
-static const char *panic_later, *panic_param;
-
-extern const struct obs_kernel_param __setup_start[], __setup_end[];
-
-static bool __init obsolete_checksetup(char *line)
-{
-	const struct obs_kernel_param *p;
-	bool had_early_param = false;
-
-	p = __setup_start;
-	do {
-		int n = strlen(p->str);
-		if (parameqn(line, p->str, n)) {
-			if (p->early) {
-				/* Already done in parse_early_param?
-				 * (Needs exact match on param part).
-				 * Keep iterating, as we can have early
-				 * params and __setups of same names 8( */
-				if (line[n] == '\0' || line[n] == '=')
-					had_early_param = true;
-			} else if (!p->setup_func) {
-				pr_warn("Parameter %s is obsolete, ignored\n",
-					p->str);
-				return true;
-			} else if (p->setup_func(line + n))
-				return true;
-		}
-		p++;
-	} while (p < __setup_end);
-
-	return had_early_param;
-}
-
-/*
- * This should be approx 2 Bo*oMips to start (note initial shift), and will
- * still work even if initially too large, it will just take slightly longer
- */
-unsigned long loops_per_jiffy = (1<<12);
-EXPORT_SYMBOL(loops_per_jiffy);
-
-static int __init debug_kernel(char *str)
-{
-	console_loglevel = CONSOLE_LOGLEVEL_DEBUG;
-	return 0;
-}
-
-static int __init quiet_kernel(char *str)
-{
-	console_loglevel = CONSOLE_LOGLEVEL_QUIET;
-	return 0;
-}
-
-early_param("debug", debug_kernel);
-early_param("quiet", quiet_kernel);
-
-static int __init loglevel(char *str)
-{
-	int newlevel;
-
-	/*
-	 * Only update loglevel value when a correct setting was passed,
-	 * to prevent blind crashes (when loglevel being set to 0) that
-	 * are quite hard to debug
-	 */
-	if (get_option(&str, &newlevel)) {
-		console_loglevel = newlevel;
-		return 0;
-	}
-
-	return -EINVAL;
-}
-
-early_param("loglevel", loglevel);
-
-#ifdef CONFIG_BLK_DEV_INITRD
-static void * __init get_boot_config_from_initrd(u32 *_size, u32 *_csum)
-{
-	u32 size, csum;
-	char *data;
-	u32 *hdr;
-	int i;
-
-	if (!initrd_end)
-		return NULL;
-
-	data = (char *)initrd_end - BOOTCONFIG_MAGIC_LEN;
-	/*
-	 * Since Grub may align the size of initrd to 4, we must
-	 * check the preceding 3 bytes as well.
-	 */
-	for (i = 0; i < 4; i++) {
-		if (!memcmp(data, BOOTCONFIG_MAGIC, BOOTCONFIG_MAGIC_LEN))
-			goto found;
-		data--;
-	}
-	return NULL;
-
-found:
-	hdr = (u32 *)(data - 8);
-	size = le32_to_cpu(hdr[0]);
-	csum = le32_to_cpu(hdr[1]);
-
-	data = ((void *)hdr) - size;
-	if ((unsigned long)data < initrd_start) {
-		pr_err("bootconfig size %d is greater than initrd size %ld\n",
-			size, initrd_end - initrd_start);
-		return NULL;
-	}
-
-	/* Remove bootconfig from initramfs/initrd */
-	initrd_end = (unsigned long)data;
-	if (_size)
-		*_size = size;
-	if (_csum)
-		*_csum = csum;
-
-	return data;
-}
-#else
-static void * __init get_boot_config_from_initrd(u32 *_size, u32 *_csum)
-{
-	return NULL;
-}
-#endif
-
-#ifdef CONFIG_BOOT_CONFIG
-
-static char xbc_namebuf[XBC_KEYLEN_MAX] __initdata;
-
-#define rest(dst, end) ((end) > (dst) ? (end) - (dst) : 0)
-
-static int __init xbc_snprint_cmdline(char *buf, size_t size,
-				      struct xbc_node *root)
-{
-	struct xbc_node *knode, *vnode;
-	char *end = buf + size;
-	const char *val;
-	int ret;
-
-	xbc_node_for_each_key_value(root, knode, val) {
-		ret = xbc_node_compose_key_after(root, knode,
-					xbc_namebuf, XBC_KEYLEN_MAX);
-		if (ret < 0)
-			return ret;
-
-		vnode = xbc_node_get_child(knode);
-		if (!vnode) {
-			ret = snprintf(buf, rest(buf, end), "%s ", xbc_namebuf);
-			if (ret < 0)
-				return ret;
-			buf += ret;
-			continue;
-		}
-		xbc_array_for_each_value(vnode, val) {
-			ret = snprintf(buf, rest(buf, end), "%s=\"%s\" ",
-				       xbc_namebuf, val);
-			if (ret < 0)
-				return ret;
-			buf += ret;
-		}
-	}
-
-	return buf - (end - size);
-}
-#undef rest
-
-/* Make an extra command line under given key word */
-static char * __init xbc_make_cmdline(const char *key)
-{
-	struct xbc_node *root;
-	char *new_cmdline;
-	int ret, len = 0;
-
-	root = xbc_find_node(key);
-	if (!root)
-		return NULL;
-
-	/* Count required buffer size */
-	len = xbc_snprint_cmdline(NULL, 0, root);
-	if (len <= 0)
-		return NULL;
-
-	new_cmdline = memblock_alloc(len + 1, SMP_CACHE_BYTES);
-	if (!new_cmdline) {
-		pr_err("Failed to allocate memory for extra kernel cmdline.\n");
-		return NULL;
-	}
-
-	ret = xbc_snprint_cmdline(new_cmdline, len + 1, root);
-	if (ret < 0 || ret > len) {
-		pr_err("Failed to print extra kernel cmdline.\n");
-		memblock_free(__pa(new_cmdline), len + 1);
-		return NULL;
-	}
-
-	return new_cmdline;
-}
-
-static u32 boot_config_checksum(unsigned char *p, u32 size)
-{
-	u32 ret = 0;
-
-	while (size--)
-		ret += *p++;
-
-	return ret;
-}
-
-static int __init bootconfig_params(char *param, char *val,
-				    const char *unused, void *arg)
-{
-	if (strcmp(param, "bootconfig") == 0) {
-		bootconfig_found = true;
-	}
-	return 0;
-}
-
-static void __init setup_boot_config(const char *cmdline)
-{
-	static char tmp_cmdline[COMMAND_LINE_SIZE] __initdata;
-	const char *msg;
-	int pos;
-	u32 size, csum;
-	char *data, *copy, *err;
-	int ret;
-
-	/* Cut out the bootconfig data even if we have no bootconfig option */
-	data = get_boot_config_from_initrd(&size, &csum);
-
-	strlcpy(tmp_cmdline, boot_command_line, COMMAND_LINE_SIZE);
-	err = parse_args("bootconfig", tmp_cmdline, NULL, 0, 0, 0, NULL,
-			 bootconfig_params);
-
-	if (IS_ERR(err) || !bootconfig_found)
-		return;
-
-	/* parse_args() stops at '--' and returns an address */
-	if (err)
-		initargs_found = true;
-
-	if (!data) {
-		pr_err("'bootconfig' found on command line, but no bootconfig found\n");
-		return;
-	}
-
-	if (size >= XBC_DATA_MAX) {
-		pr_err("bootconfig size %d greater than max size %d\n",
-			size, XBC_DATA_MAX);
-		return;
-	}
-
-	if (boot_config_checksum((unsigned char *)data, size) != csum) {
-		pr_err("bootconfig checksum failed\n");
-		return;
-	}
-
-	copy = memblock_alloc(size + 1, SMP_CACHE_BYTES);
-	if (!copy) {
-		pr_err("Failed to allocate memory for bootconfig\n");
-		return;
-	}
-
-	memcpy(copy, data, size);
-	copy[size] = '\0';
-
-	ret = xbc_init(copy, &msg, &pos);
-	if (ret < 0) {
-		if (pos < 0)
-			pr_err("Failed to init bootconfig: %s.\n", msg);
-		else
-			pr_err("Failed to parse bootconfig: %s at %d.\n",
-				msg, pos);
-	} else {
-		pr_info("Load bootconfig: %d bytes %d nodes\n", size, ret);
-		/* keys starting with "kernel." are passed via cmdline */
-		extra_command_line = xbc_make_cmdline("kernel");
-		/* Also, "init." keys are init arguments */
-		extra_init_args = xbc_make_cmdline("init");
-	}
-	return;
-}
-
-#else
-
-static void __init setup_boot_config(const char *cmdline)
-{
-	/* Remove bootconfig data from initrd */
-	get_boot_config_from_initrd(NULL, NULL);
-}
-
-static int __init warn_bootconfig(char *str)
-{
-	pr_warn("WARNING: 'bootconfig' found on the kernel command line but CONFIG_BOOT_CONFIG is not set.\n");
-	return 0;
-}
-early_param("bootconfig", warn_bootconfig);
-
-#endif
-
-/* Change NUL term back to "=", to make "param" the whole string. */
-static void __init repair_env_string(char *param, char *val)
-{
-	if (val) {
-		/* param=val or param="val"? */
-		if (val == param+strlen(param)+1)
-			val[-1] = '=';
-		else if (val == param+strlen(param)+2) {
-			val[-2] = '=';
-			memmove(val-1, val, strlen(val)+1);
-		} else
-			BUG();
-	}
-}
-
-/* Anything after -- gets handed straight to init. */
-static int __init set_init_arg(char *param, char *val,
-			       const char *unused, void *arg)
-{
-	unsigned int i;
-
-	if (panic_later)
-		return 0;
-
-	repair_env_string(param, val);
-
-	for (i = 0; argv_init[i]; i++) {
-		if (i == MAX_INIT_ARGS) {
-			panic_later = "init";
-			panic_param = param;
-			return 0;
-		}
-	}
-	argv_init[i] = param;
-	return 0;
-}
-
-/*
- * Unknown boot options get handed to init, unless they look like
- * unused parameters (modprobe will find them in /proc/cmdline).
- */
-static int __init unknown_bootoption(char *param, char *val,
-				     const char *unused, void *arg)
-{
-	size_t len = strlen(param);
-
-	repair_env_string(param, val);
-
-	/* Handle obsolete-style parameters */
-	if (obsolete_checksetup(param))
-		return 0;
-
-	/* Unused module parameter. */
-	if (strnchr(param, len, '.'))
-		return 0;
-
-	if (panic_later)
-		return 0;
-
-	if (val) {
-		/* Environment option */
-		unsigned int i;
-		for (i = 0; envp_init[i]; i++) {
-			if (i == MAX_INIT_ENVS) {
-				panic_later = "env";
-				panic_param = param;
-			}
-			if (!strncmp(param, envp_init[i], len+1))
-				break;
-		}
-		envp_init[i] = param;
-	} else {
-		/* Command line option */
-		unsigned int i;
-		for (i = 0; argv_init[i]; i++) {
-			if (i == MAX_INIT_ARGS) {
-				panic_later = "init";
-				panic_param = param;
-			}
-		}
-		argv_init[i] = param;
-	}
-	return 0;
-}
-
-static int __init init_setup(char *str)
-{
-	unsigned int i;
-
-	execute_command = str;
-	/*
-	 * In case LILO is going to boot us with default command line,
-	 * it prepends "auto" before the whole cmdline which makes
-	 * the shell think it should execute a script with such name.
-	 * So we ignore all arguments entered _before_ init=... [MJ]
-	 */
-	for (i = 1; i < MAX_INIT_ARGS; i++)
-		argv_init[i] = NULL;
-	return 1;
-}
-__setup("init=", init_setup);
-
-static int __init rdinit_setup(char *str)
-{
-	unsigned int i;
-
-	ramdisk_execute_command = str;
-	/* See "auto" comment in init_setup */
-	for (i = 1; i < MAX_INIT_ARGS; i++)
-		argv_init[i] = NULL;
-	return 1;
-}
-__setup("rdinit=", rdinit_setup);
-
-#ifndef CONFIG_SMP
-static const unsigned int setup_max_cpus = NR_CPUS;
-static inline void setup_nr_cpu_ids(void) { }
-static inline void smp_prepare_cpus(unsigned int maxcpus) { }
-#endif
-
-/*
- * We need to store the untouched command line for future reference.
- * We also need to store the touched command line since the parameter
- * parsing is performed in place, and we should allow a component to
- * store reference of name/value for future reference.
- */
-static void __init setup_command_line(char *command_line)
-{
-	size_t len, xlen = 0, ilen = 0;
-
-	if (extra_command_line)
-		xlen = strlen(extra_command_line);
-	if (extra_init_args)
-		ilen = strlen(extra_init_args) + 4; /* for " -- " */
-
-	len = xlen + strlen(boot_command_line) + 1;
-
-	saved_command_line = memblock_alloc(len + ilen, SMP_CACHE_BYTES);
-	if (!saved_command_line)
-		panic("%s: Failed to allocate %zu bytes\n", __func__, len + ilen);
-
-	static_command_line = memblock_alloc(len, SMP_CACHE_BYTES);
-	if (!static_command_line)
-		panic("%s: Failed to allocate %zu bytes\n", __func__, len);
-
-	if (xlen) {
-		/*
-		 * We have to put extra_command_line before boot command
-		 * lines because there could be dashes (separator of init
-		 * command line) in the command lines.
-		 */
-		strcpy(saved_command_line, extra_command_line);
-		strcpy(static_command_line, extra_command_line);
-	}
-	strcpy(saved_command_line + xlen, boot_command_line);
-	strcpy(static_command_line + xlen, command_line);
-
-	if (ilen) {
-		/*
-		 * Append supplemental init boot args to saved_command_line
-		 * so that user can check what command line options passed
-		 * to init.
-		 */
-		len = strlen(saved_command_line);
-		if (initargs_found) {
-			saved_command_line[len++] = ' ';
-		} else {
-			strcpy(saved_command_line + len, " -- ");
-			len += 4;
-		}
-
-		strcpy(saved_command_line + len, extra_init_args);
-	}
-}
-
-/*
- * We need to finalize in a non-__init function or else race conditions
- * between the root thread and the init thread may cause start_kernel to
- * be reaped by free_initmem before the root thread has proceeded to
- * cpu_idle.
- *
- * gcc-3.4 accidentally inlines this function, so use noinline.
- */
-
-static __initdata DECLARE_COMPLETION(kthreadd_done);
-
-noinline void __ref rest_init(void)
-{
-	struct task_struct *tsk;
-	int pid;
-
-	rcu_scheduler_starting();
-	/*
-	 * We need to spawn init first so that it obtains pid 1, however
-	 * the init task will end up wanting to create kthreads, which, if
-	 * we schedule it before we create kthreadd, will OOPS.
-	 */
-	pid = kernel_thread(kernel_init, NULL, CLONE_FS);
-	/*
-	 * Pin init on the boot CPU. Task migration is not properly working
-	 * until sched_init_smp() has been run. It will set the allowed
-	 * CPUs for init to the non isolated CPUs.
-	 */
-	rcu_read_lock();
-	tsk = find_task_by_pid_ns(pid, &init_pid_ns);
-	set_cpus_allowed_ptr(tsk, cpumask_of(smp_processor_id()));
-	rcu_read_unlock();
-
-	numa_default_policy();
-	pid = kernel_thread(kthreadd, NULL, CLONE_FS | CLONE_FILES);
-	rcu_read_lock();
-	kthreadd_task = find_task_by_pid_ns(pid, &init_pid_ns);
-	rcu_read_unlock();
-
-	/*
-	 * Enable might_sleep() and smp_processor_id() checks.
-	 * They cannot be enabled earlier because with CONFIG_PREEMPTION=y
-	 * kernel_thread() would trigger might_sleep() splats. With
-	 * CONFIG_PREEMPT_VOLUNTARY=y the init task might have scheduled
-	 * already, but it's stuck on the kthreadd_done completion.
-	 */
-	system_state = SYSTEM_SCHEDULING;
-
-	complete(&kthreadd_done);
-
-	/*
-	 * The boot idle thread must execute schedule()
-	 * at least once to get things moving:
-	 */
-	schedule_preempt_disabled();
-	/* Call into cpu_idle with preempt disabled */
-	cpu_startup_entry(CPUHP_ONLINE);
-}
-
-/* Check for early params. */
-static int __init do_early_param(char *param, char *val,
-				 const char *unused, void *arg)
-{
-	const struct obs_kernel_param *p;
-
-	for (p = __setup_start; p < __setup_end; p++) {
-		if ((p->early && parameq(param, p->str)) ||
-		    (strcmp(param, "console") == 0 &&
-		     strcmp(p->str, "earlycon") == 0)
-		) {
-			if (p->setup_func(val) != 0)
-				pr_warn("Malformed early option '%s'\n", param);
-		}
-	}
-	/* We accept everything at this stage. */
-	return 0;
-}
-
-void __init parse_early_options(char *cmdline)
-{
-	parse_args("early options", cmdline, NULL, 0, 0, 0, NULL,
-		   do_early_param);
-}
-
-/* Arch code calls this early on, or if not, just before other parsing. */
-void __init parse_early_param(void)
-{
-	static int done __initdata;
-	static char tmp_cmdline[COMMAND_LINE_SIZE] __initdata;
-
-	if (done)
-		return;
-
-	/* All fall through to do_early_param. */
-	strlcpy(tmp_cmdline, boot_command_line, COMMAND_LINE_SIZE);
-	parse_early_options(tmp_cmdline);
-	done = 1;
-}
-
-void __init __weak arch_post_acpi_subsys_init(void) { }
-
-void __init __weak smp_setup_processor_id(void)
-{
-}
-
-# if THREAD_SIZE >= PAGE_SIZE
-void __init __weak thread_stack_cache_init(void)
-{
-}
-#endif
-
-void __init __weak mem_encrypt_init(void) { }
-
-void __init __weak poking_init(void) { }
-
-void __init __weak pgtable_cache_init(void) { }
-
-bool initcall_debug;
-core_param(initcall_debug, initcall_debug, bool, 0644);
-
-#ifdef TRACEPOINTS_ENABLED
-static void __init initcall_debug_enable(void);
-#else
-static inline void initcall_debug_enable(void)
-{
-}
-#endif
-
-/* Report memory auto-initialization states for this boot. */
-static void __init report_meminit(void)
-{
-	const char *stack;
-
-	if (IS_ENABLED(CONFIG_INIT_STACK_ALL_PATTERN))
-		stack = "all(pattern)";
-	else if (IS_ENABLED(CONFIG_INIT_STACK_ALL_ZERO))
-		stack = "all(zero)";
-	else if (IS_ENABLED(CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF_ALL))
-		stack = "byref_all(zero)";
-	else if (IS_ENABLED(CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF))
-		stack = "byref(zero)";
-	else if (IS_ENABLED(CONFIG_GCC_PLUGIN_STRUCTLEAK_USER))
-		stack = "__user(zero)";
-	else
-		stack = "off";
-
-	pr_info("mem auto-init: stack:%s, heap alloc:%s, heap free:%s\n",
-		stack, want_init_on_alloc(GFP_KERNEL) ? "on" : "off",
-		want_init_on_free() ? "on" : "off");
-	if (want_init_on_free())
-		pr_info("mem auto-init: clearing system memory may take some time...\n");
-}
-
-/*
- * Set up kernel memory allocators
- */
-static void __init mm_init(void)
-{
-	/*
-	 * page_ext requires contiguous pages,
-	 * bigger than MAX_ORDER unless SPARSEMEM.
-	 */
-	page_ext_init_flatmem();
-	init_debug_pagealloc();
-	report_meminit();
-	mem_init();
-	kmem_cache_init();
-	kmemleak_init();
-	pgtable_init();
-	debug_objects_mem_init();
-	vmalloc_init();
-	ioremap_huge_init();
-	/* Should be run before the first non-init thread is created */
-	init_espfix_bsp();
-	/* Should be run after espfix64 is set up. */
-	pti_init();
-}
-
-void __init __weak arch_call_rest_init(void)
-{
-	rest_init();
-}
-
-void __weak early_drv_init(void) {}
-
-asmlinkage __visible void __init __no_sanitize_address start_kernel(void)
-{
-	char *command_line;
-	char *after_dashes;
-
-	set_task_stack_end_magic(&init_task);
-	smp_setup_processor_id();
-	debug_objects_early_init();
-
-	cgroup_init_early();
-
-	local_irq_disable();
-	early_boot_irqs_disabled = true;
-
-	/*
-	 * Interrupts are still disabled. Do necessary setups, then
-	 * enable them.
-	 */
-	boot_cpu_init();
-	page_address_init();
-	pr_notice("%s", linux_banner);
-	early_security_init();
-	setup_arch(&command_line);
-	setup_boot_config(command_line);
-	setup_command_line(command_line);
-	setup_nr_cpu_ids();
-	setup_per_cpu_areas();
-	smp_prepare_boot_cpu();	/* arch-specific boot-cpu hooks */
-	boot_cpu_hotplug_init();
-
-	build_all_zonelists(NULL);
-	page_alloc_init();
-
-	pr_notice("Kernel command line: %s\n", saved_command_line);
-	/* parameters may set static keys */
-	jump_label_init();
-	parse_early_param();
-	after_dashes = parse_args("Booting kernel",
-				  static_command_line, __start___param,
-				  __stop___param - __start___param,
-				  -1, -1, NULL, &unknown_bootoption);
-	if (!IS_ERR_OR_NULL(after_dashes))
-		parse_args("Setting init args", after_dashes, NULL, 0, -1, -1,
-			   NULL, set_init_arg);
-	if (extra_init_args)
-		parse_args("Setting extra init args", extra_init_args,
-			   NULL, 0, -1, -1, NULL, set_init_arg);
-
-	/*
-	 * These use large bootmem allocations and must precede
-	 * kmem_cache_init()
-	 */
-	setup_log_buf(0);
-	vfs_caches_init_early();
-	sort_main_extable();
-	trap_init();
-	mm_init();
-
-	ftrace_init();
-
-	/* trace_printk can be enabled here */
-	early_trace_init();
-
-	/*
-	 * Set up the scheduler prior starting any interrupts (such as the
-	 * timer interrupt). Full topology setup happens at smp_init()
-	 * time - but meanwhile we still have a functioning scheduler.
-	 */
-	sched_init();
-
-	if (WARN(!irqs_disabled(),
-		 "Interrupts were enabled *very* early, fixing it\n"))
-		local_irq_disable();
-	radix_tree_init();
-
-	/*
-	 * Set up housekeeping before setting up workqueues to allow the unbound
-	 * workqueue to take non-housekeeping into account.
-	 */
-	housekeeping_init();
-
-	/*
-	 * Allow workqueue creation and work item queueing/cancelling
-	 * early.  Work item execution depends on kthreads and starts after
-	 * workqueue_init().
-	 */
-	workqueue_init_early();
-
-	rcu_init();
-
-	/* Trace events are available after this */
-	trace_init();
-
-	if (initcall_debug)
-		initcall_debug_enable();
-
-	context_tracking_init();
-
-	early_drv_init();
-	
-	/* init some links before init_ISA_irqs() */
-	early_irq_init();
-	init_IRQ();
-	tick_init();
-	rcu_init_nohz();
-	init_timers();
-	hrtimers_init();
-	softirq_init();
-	timekeeping_init();
-	time_init();
-
-	/*
-	 * For best initial stack canary entropy, prepare it after:
-	 * - setup_arch() for any UEFI RNG entropy and boot cmdline access
-	 * - timekeeping_init() for ktime entropy used in random_init()
-	 * - time_init() for making random_get_entropy() work on some platforms
-	 * - random_init() to initialize the RNG from from early entropy sources
-	 */
-	random_init(command_line);
-	boot_init_stack_canary();
-
-	perf_event_init();
-	profile_init();
-	call_function_init();
-	WARN(!irqs_disabled(), "Interrupts were enabled early\n");
-
-	early_boot_irqs_disabled = false;
-	local_irq_enable();
-
-	kmem_cache_init_late();
-
-	/*
-	 * HACK ALERT! This is early. We're enabling the console before
-	 * we've done PCI setups etc, and console_init() must be aware of
-	 * this. But we do want output early, in case something goes wrong.
-	 */
-	console_init();
-	if (panic_later)
-		panic("Too many boot %s vars at `%s'", panic_later,
-		      panic_param);
-
-	lockdep_init();
-
-	/*
-	 * Need to run this when irqs are enabled, because it wants
-	 * to self-test [hard/soft]-irqs on/off lock inversion bugs
-	 * too:
-	 */
-	locking_selftest();
-
-	/*
-	 * This needs to be called before any devices perform DMA
-	 * operations that might use the SWIOTLB bounce buffers. It will
-	 * mark the bounce buffers as decrypted so that their usage will
-	 * not cause "plain-text" data to be decrypted when accessed.
-	 */
-	mem_encrypt_init();
-
-#ifdef CONFIG_BLK_DEV_INITRD
-	if (initrd_start && !initrd_below_start_ok &&
-	    page_to_pfn(virt_to_page((void *)initrd_start)) < min_low_pfn) {
-		pr_crit("initrd overwritten (0x%08lx < 0x%08lx) - disabling it.\n",
-		    page_to_pfn(virt_to_page((void *)initrd_start)),
-		    min_low_pfn);
-		initrd_start = 0;
-	}
-#endif
-	setup_per_cpu_pageset();
-	numa_policy_init();
-	acpi_early_init();
-	if (late_time_init)
-		late_time_init();
-	sched_clock_init();
-	calibrate_delay();
-	pid_idr_init();
-	anon_vma_init();
-#ifdef CONFIG_X86
-	if (efi_enabled(EFI_RUNTIME_SERVICES))
-		efi_enter_virtual_mode();
-#endif
-	thread_stack_cache_init();
-	cred_init();
-	fork_init();
-	proc_caches_init();
-	uts_ns_init();
-	buffer_init();
-	key_init();
-	security_init();
-	dbg_late_init();
-	vfs_caches_init();
-	pagecache_init();
-	signals_init();
-	seq_file_init();
-	proc_root_init();
-	nsfs_init();
-	cpuset_init();
-	cgroup_init();
-	taskstats_init_early();
-	delayacct_init();
-
-	poking_init();
-	check_bugs();
-
-	acpi_subsystem_init();
-	arch_post_acpi_subsys_init();
-	sfi_init_late();
-	kcsan_init();
-
-	/* Do the rest non-__init'ed, we're now alive */
-	arch_call_rest_init();
-
-	prevent_tail_call_optimization();
-}
-
-/* Call all constructor functions linked into the kernel. */
-static void __init do_ctors(void)
-{
-#ifdef CONFIG_CONSTRUCTORS
-	ctor_fn_t *fn = (ctor_fn_t *) __ctors_start;
-
-	for (; fn < (ctor_fn_t *) __ctors_end; fn++)
-		(*fn)();
-#endif
-}
-
-#ifdef CONFIG_KALLSYMS
-struct blacklist_entry {
-	struct list_head next;
-	char *buf;
-};
-
-static __initdata_or_module LIST_HEAD(blacklisted_initcalls);
-
-static int __init initcall_blacklist(char *str)
-{
-	char *str_entry;
-	struct blacklist_entry *entry;
-
-	/* str argument is a comma-separated list of functions */
-	do {
-		str_entry = strsep(&str, ",");
-		if (str_entry) {
-			pr_debug("blacklisting initcall %s\n", str_entry);
-			entry = memblock_alloc(sizeof(*entry),
-					       SMP_CACHE_BYTES);
-			if (!entry)
-				panic("%s: Failed to allocate %zu bytes\n",
-				      __func__, sizeof(*entry));
-			entry->buf = memblock_alloc(strlen(str_entry) + 1,
-						    SMP_CACHE_BYTES);
-			if (!entry->buf)
-				panic("%s: Failed to allocate %zu bytes\n",
-				      __func__, strlen(str_entry) + 1);
-			strcpy(entry->buf, str_entry);
-			list_add(&entry->next, &blacklisted_initcalls);
-		}
-	} while (str_entry);
-
-	return 1;
-}
-
-static bool __init_or_module initcall_blacklisted(initcall_t fn)
-{
-	struct blacklist_entry *entry;
-	char fn_name[KSYM_SYMBOL_LEN];
-	unsigned long addr;
-
-	if (list_empty(&blacklisted_initcalls))
-		return false;
-
-	addr = (unsigned long) dereference_function_descriptor(fn);
-	sprint_symbol_no_offset(fn_name, addr);
-
-	/*
-	 * fn will be "function_name [module_name]" where [module_name] is not
-	 * displayed for built-in init functions.  Strip off the [module_name].
-	 */
-	strreplace(fn_name, ' ', '\0');
-
-	list_for_each_entry(entry, &blacklisted_initcalls, next) {
-		if (!strcmp(fn_name, entry->buf)) {
-			pr_debug("initcall %s blacklisted\n", fn_name);
-			return true;
-		}
-	}
-
-	return false;
-}
-#else
-static int __init initcall_blacklist(char *str)
-{
-	pr_warn("initcall_blacklist requires CONFIG_KALLSYMS\n");
-	return 0;
-}
-
-static bool __init_or_module initcall_blacklisted(initcall_t fn)
-{
-	return false;
-}
-#endif
-__setup("initcall_blacklist=", initcall_blacklist);
-
-static __init_or_module void
-trace_initcall_start_cb(void *data, initcall_t fn)
-{
-	ktime_t *calltime = (ktime_t *)data;
-
-	printk(KERN_DEBUG "calling  %pS @ %i\n", fn, task_pid_nr(current));
-	*calltime = ktime_get();
-}
-
-static __init_or_module void
-trace_initcall_finish_cb(void *data, initcall_t fn, int ret)
-{
-	ktime_t *calltime = (ktime_t *)data;
-	ktime_t delta, rettime;
-	unsigned long long duration;
-
-	rettime = ktime_get();
-	delta = ktime_sub(rettime, *calltime);
-	duration = (unsigned long long) ktime_to_ns(delta) >> 10;
-	printk(KERN_DEBUG "initcall %pS returned %d after %lld usecs\n",
-		 fn, ret, duration);
-}
-
-static ktime_t initcall_calltime;
-
-#ifdef TRACEPOINTS_ENABLED
-static void __init initcall_debug_enable(void)
-{
-	int ret;
-
-	ret = register_trace_initcall_start(trace_initcall_start_cb,
-					    &initcall_calltime);
-	ret |= register_trace_initcall_finish(trace_initcall_finish_cb,
-					      &initcall_calltime);
-	WARN(ret, "Failed to register initcall tracepoints\n");
-}
-# define do_trace_initcall_start	trace_initcall_start
-# define do_trace_initcall_finish	trace_initcall_finish
-#else
-static inline void do_trace_initcall_start(initcall_t fn)
-{
-	if (!initcall_debug)
-		return;
-	trace_initcall_start_cb(&initcall_calltime, fn);
-}
-static inline void do_trace_initcall_finish(initcall_t fn, int ret)
-{
-	if (!initcall_debug)
-		return;
-	trace_initcall_finish_cb(&initcall_calltime, fn, ret);
-}
-#endif /* !TRACEPOINTS_ENABLED */
-
-int __init_or_module do_one_initcall(initcall_t fn)
-{
-	int count = preempt_count();
-	char msgbuf[64];
-	int ret;
-
-	if (initcall_blacklisted(fn))
-		return -EPERM;
-
-	do_trace_initcall_start(fn);
-	ret = fn();
-	do_trace_initcall_finish(fn, ret);
-
-	msgbuf[0] = 0;
-
-	if (preempt_count() != count) {
-		sprintf(msgbuf, "preemption imbalance ");
-		preempt_count_set(count);
-	}
-	if (irqs_disabled()) {
-		strlcat(msgbuf, "disabled interrupts ", sizeof(msgbuf));
-		local_irq_enable();
-	}
-	WARN(msgbuf[0], "initcall %pS returned with %s\n", fn, msgbuf);
-
-	add_latent_entropy();
-	return ret;
-}
-
-
-extern initcall_entry_t __initcall_start[];
-extern initcall_entry_t __initcall0_start[];
-extern initcall_entry_t __initcall1_start[];
-extern initcall_entry_t __initcall2_start[];
-extern initcall_entry_t __initcall3_start[];
-extern initcall_entry_t __initcall4_start[];
-extern initcall_entry_t __initcall5_start[];
-extern initcall_entry_t __initcall6_start[];
-extern initcall_entry_t __initcall7_start[];
-extern initcall_entry_t __initcall_end[];
-
-static initcall_entry_t *initcall_levels[] __initdata = {
-	__initcall0_start,
-	__initcall1_start,
-	__initcall2_start,
-	__initcall3_start,
-	__initcall4_start,
-	__initcall5_start,
-	__initcall6_start,
-	__initcall7_start,
-	__initcall_end,
-};
-
-/* Keep these in sync with initcalls in include/linux/init.h */
-static const char *initcall_level_names[] __initdata = {
-	"pure",
-	"core",
-	"postcore",
-	"arch",
-	"subsys",
-	"fs",
-	"device",
-	"late",
-};
-
-static int __init ignore_unknown_bootoption(char *param, char *val,
-			       const char *unused, void *arg)
-{
-	return 0;
-}
-
-static void __init do_initcall_level(int level, char *command_line)
-{
-	initcall_entry_t *fn;
-
-	parse_args(initcall_level_names[level],
-		   command_line, __start___param,
-		   __stop___param - __start___param,
-		   level, level,
-		   NULL, ignore_unknown_bootoption);
-
-	trace_initcall_level(initcall_level_names[level]);
-	for (fn = initcall_levels[level]; fn < initcall_levels[level+1]; fn++)
-		do_one_initcall(initcall_from_entry(fn));
-}
-
-static void __init do_initcalls(void)
-{
-	int level;
-	size_t len = strlen(saved_command_line) + 1;
-	char *command_line;
-
-	command_line = kzalloc(len, GFP_KERNEL);
-	if (!command_line)
-		panic("%s: Failed to allocate %zu bytes\n", __func__, len);
-
-	for (level = 0; level < ARRAY_SIZE(initcall_levels) - 1; level++) {
-		/* Parser modifies command_line, restore it each time */
-		strcpy(command_line, saved_command_line);
-		do_initcall_level(level, command_line);
-	}
-
-	kfree(command_line);
-}
-
-/*
- * Ok, the machine is now initialized. None of the devices
- * have been touched yet, but the CPU subsystem is up and
- * running, and memory and process management works.
- *
- * Now we can finally start doing some real work..
- */
-static void __init do_basic_setup(void)
-{
-	cpuset_init_smp();
-	driver_init();
-	init_irq_proc();
-	do_ctors();
-	usermodehelper_enable();
-	do_initcalls();
-}
-
-static void __init do_pre_smp_initcalls(void)
-{
-	initcall_entry_t *fn;
-
-	trace_initcall_level("early");
-	for (fn = __initcall_start; fn < __initcall0_start; fn++)
-		do_one_initcall(initcall_from_entry(fn));
-}
-
-static int run_init_process(const char *init_filename)
-{
-	const char *const *p;
-
-	argv_init[0] = init_filename;
-	pr_info("Run %s as init process\n", init_filename);
-	pr_debug("  with arguments:\n");
-	for (p = argv_init; *p; p++)
-		pr_debug("    %s\n", *p);
-	pr_debug("  with environment:\n");
-	for (p = envp_init; *p; p++)
-		pr_debug("    %s\n", *p);
-	return kernel_execve(init_filename, argv_init, envp_init);
-}
-
-static int try_to_run_init_process(const char *init_filename)
-{
-	int ret;
-
-	ret = run_init_process(init_filename);
-
-	if (ret && ret != -ENOENT) {
-		pr_err("Starting init: %s exists but couldn't execute it (error %d)\n",
-		       init_filename, ret);
-	}
-
-	return ret;
-}
-
-static noinline void __init kernel_init_freeable(void);
-
-#if defined(CONFIG_STRICT_KERNEL_RWX) || defined(CONFIG_STRICT_MODULE_RWX)
-bool rodata_enabled __ro_after_init = true;
-static int __init set_debug_rodata(char *str)
-{
-	if (strtobool(str, &rodata_enabled))
-		pr_warn("Invalid option string for rodata: '%s'\n", str);
-	return 1;
-}
-__setup("rodata=", set_debug_rodata);
-#endif
-
-#ifdef CONFIG_STRICT_KERNEL_RWX
-static void mark_readonly(void)
-{
-	if (rodata_enabled) {
-		/*
-		 * load_module() results in W+X mappings, which are cleaned
-		 * up with call_rcu().  Let's make sure that queued work is
-		 * flushed so that we don't hit false positives looking for
-		 * insecure pages which are W+X.
-		 */
-		rcu_barrier();
-		mark_rodata_ro();
-		rodata_test();
-	} else
-		pr_info("Kernel memory protection disabled.\n");
-}
-#elif defined(CONFIG_ARCH_HAS_STRICT_KERNEL_RWX)
-static inline void mark_readonly(void)
-{
-	pr_warn("Kernel memory protection not selected by kernel config.\n");
-}
-#else
-static inline void mark_readonly(void)
-{
-	pr_warn("This architecture does not have kernel memory protection.\n");
-}
-#endif
-
-void __weak free_initmem(void)
-{
-	free_initmem_default(POISON_FREE_INITMEM);
-}
-
-static int __ref kernel_init(void *unused)
-{
-	int ret;
-
-	kernel_init_freeable();
-	/* need to finish all async __init code before freeing the memory */
-	async_synchronize_full();
-	kprobe_free_init_mem();
-	ftrace_free_init_mem();
-	kgdb_free_init_mem();
-	free_initmem();
-	mark_readonly();
-
-	/*
-	 * Kernel mappings are now finalized - update the userspace page-table
-	 * to finalize PTI.
-	 */
-	pti_finalize();
-
-	system_state = SYSTEM_RUNNING;
-	numa_default_policy();
-
-	rcu_end_inkernel_boot();
-
-	do_sysctl_args();
-
-	if (ramdisk_execute_command) {
-		ret = run_init_process(ramdisk_execute_command);
-		if (!ret)
-			return 0;
-		pr_err("Failed to execute %s (error %d)\n",
-		       ramdisk_execute_command, ret);
-	}
-
-	/*
-	 * We try each of these until one succeeds.
-	 *
-	 * The Bourne shell can be used instead of init if we are
-	 * trying to recover a really broken machine.
-	 */
-	if (execute_command) {
-		ret = run_init_process(execute_command);
-		if (!ret)
-			return 0;
-		panic("Requested init %s failed (error %d).",
-		      execute_command, ret);
-	}
-
-	if (CONFIG_DEFAULT_INIT[0] != '\0') {
-		ret = run_init_process(CONFIG_DEFAULT_INIT);
-		if (ret)
-			pr_err("Default init %s failed (error %d)\n",
-			       CONFIG_DEFAULT_INIT, ret);
-		else
-			return 0;
-	}
-
-	if (!try_to_run_init_process("/sbin/init") ||
-	    !try_to_run_init_process("/etc/init") ||
-	    !try_to_run_init_process("/bin/init") ||
-	    !try_to_run_init_process("/bin/sh"))
-		return 0;
-#ifdef CONFIG_FLAGS_UTILS
-{
-	extern int flags_sys_switch(void);
-	int ret;
-	printk(KERN_EMERG "No working init found.  Try passing init= option to kernel. "
-	      "See Linux Documentation/admin-guide/init.rst for guidance.");
-	ret = flags_sys_switch();
-	if (ret < 0)
-		panic("VFS: flags_sys_switch fail");
-	else
-		kernel_restart("VFS: Switch to another system, please reset machine");
-}
-#endif
-	panic("No working init found.  Try passing init= option to kernel. "
-	      "See Linux Documentation/admin-guide/init.rst for guidance.");
-}
-
-/* Open /dev/console, for stdin/stdout/stderr, this should never fail */
-void __init console_on_rootfs(void)
-{
-	struct file *file = filp_open("/dev/console", O_RDWR, 0);
-
-	if (IS_ERR(file)) {
-		pr_err("Warning: unable to open an initial console.\n");
-		return;
-	}
-	init_dup(file);
-	init_dup(file);
-	init_dup(file);
-	fput(file);
-}
-
-static noinline void __init kernel_init_freeable(void)
-{
-	/*
-	 * Wait until kthreadd is all set-up.
-	 */
-	wait_for_completion(&kthreadd_done);
-
-	/* Now the scheduler is fully set up and can do blocking allocations */
-	gfp_allowed_mask = __GFP_BITS_MASK;
-
-	/*
-	 * init can allocate pages on any node
-	 */
-	set_mems_allowed(node_states[N_MEMORY]);
-
-	cad_pid = get_pid(task_pid(current));
-
-	smp_prepare_cpus(setup_max_cpus);
-
-	workqueue_init();
-
-	init_mm_internals();
-
-	rcu_init_tasks_generic();
-	do_pre_smp_initcalls();
-	lockup_detector_init();
-
-	smp_init();
-	sched_init_smp();
-
-	padata_init();
-	page_alloc_init_late();
-	/* Initialize page ext after all struct pages are initialized. */
-	page_ext_init();
-
-	do_basic_setup();
-
-	kunit_run_all_tests();
-
-	console_on_rootfs();
-
-	/*
-	 * check if there is an early userspace init.  If yes, let it do all
-	 * the work
-	 */
-	if (init_eaccess(ramdisk_execute_command) != 0) {
-		ramdisk_execute_command = NULL;
-		prepare_namespace();
-	}
-
-	/*
-	 * Ok, we have completed the initial bootup, and
-	 * we're essentially up and running. Get rid of the
-	 * initmem segments and start the user-mode stuff..
-	 *
-	 * rootfs is available now, try loading the public keys
-	 * and default modules
-	 */
-
-	integrity_load_keys();
-}
diff --git a/upstream/linux-5.10/kernel/ramdump/ramdump_device_trans.c b/upstream/linux-5.10/kernel/ramdump/ramdump_device_trans.c
deleted file mode 100755
index 40c920d..0000000
--- a/upstream/linux-5.10/kernel/ramdump/ramdump_device_trans.c
+++ /dev/null
@@ -1,753 +0,0 @@
-/**
- * @file oss_ramdump_osa.c
- * @brief Implementation of Ramdump os adapt
- *
- * Copyright (C) 2017 Sanechips Technology Co., Ltd.
- * @author Qing Wang <wang.qing@sanechips.com.cn>
- * @ingroup si_ap_oss_ramdump_id
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may
- * not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0 
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-/*******************************************************************************
- *                           Include header files                              *
- ******************************************************************************/
-#include "ramdump.h"
-#include <linux/lzo.h>
-#include "ramdump_compress.h"
-#ifdef CONFIG_RAMDUMP_EMMC
-#include "ramdump_emmc.h"
-#endif
-#ifdef CONFIG_MTD_SPI_NAND
-#include "ramdump_spinand.h"
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*******************************************************************************
-*                          Extern function declarations                        *
-*******************************************************************************/
-extern unsigned char *ramdump_phy_to_vir(unsigned long phy, unsigned long size);
-extern int dump_printk_text(char *buffer, unsigned long len);
-
-/*******************************************************************************
-*                          Extern variable declarations                        *
-*******************************************************************************/
-extern unsigned int ramdump_compress_flag;
-extern unsigned char *ramdump_log_buf;
-extern unsigned int ramdump_export_mode;
-
-/*******************************************************************************
- *                             Macro definitions                               *
- ******************************************************************************/
-/*Ö¸ÁîÖ¡³¤¶È */
-#define RAMDUMP_INTERACTIVE_DATA_LEN        40
-#define RAMDUMP_INTERACTIVE_ARRAY_LEN       10
-
-/* ramdump ºÍ ¹²ÏíÄÚ´æ½»»¥ÃüÁîÔ¼¶¨ */
-/*ͬ²½ÇëÇó*/
-#define RAMDUMP_PC_INTERACTIVE_REQ                  1
-/*ͬ²½ÇëÇóÓ¦´ð,´«ÊäramdumpµÄÎļþÊýÄ¿*/
-#define RAMDUMP_TRANS_SERVER_INTERACTIVE_RSP        2
-/*ÇëÇó´«µÝÖ¸¶¨Îļþ±àºÅµÄÎļþÐÅÏ¢*/
-#define RAMDUMP_PC_FILE_INFO_READ_REQ               3
-/*ÇëÇó´«µÝÖ¸¶¨Îļþ±àºÅµÄÎļþÐÅÏ¢µÄÓ¦´ð£¬´«ÊäÎļþÃû¼°´óС*/
-#define RAMDUMP_TRANS_SERVER_FILE_INFO_READ_RSP     4
-/*ÇëÇó¶Áȡָ¶¨Îļþ±àºÅµÄÎļþÄÚÈÝ*/
-#define RAMDUMP_PC_FILE_DATA_TRANS_REQ              5
-/*ÇëÇó¶Áȡָ¶¨Îļþ±àºÅµÄÎļþÄÚÈݵÄÓ¦´ð£¬´«ÊäÎļþÄÚÈÝ*/
-#define RAMDUMP_TRANS_SERVER_FILE_DATA_TRANS_RSP    6
-/*´«Êä½áÊø*/
-#define RAMDUMP_PC_FILE_TRANS_DONE_REQ              7
-/*´«Êä½áÊøÓ¦´ð*/ 
-#define RAMDUMP_TRANS_SERVER_FILE_TRANS_DONE_RSP    8
-
-/* ´íÎóÀàÐÍ */
-/*Ö¸Áî´íÎó*/
-#define RAMDUMP_INTERACTIVE_CMD_ERROR               9
-/*ÇëÇó´«µÝÖ¸¶¨Îļþ±àºÅ´í*/
-#define RAMDUMP_FILE_NUMBER_ERROR                   10
-/*ÇëÇó´«µÝÖ¸¶¨ÎļþλÖôóС´í*/
-#define RAMDUMP_FILE_SIZE_ERROR                     11
-
-#define RAMDUMP_DELAY_MS_COUNT (2500)
-
-/*******************************************************************************
- *                             Type definitions                                *
- ******************************************************************************/
-/*
- * struct TRANS WITH AP
- */
-
-/* trans_server rsp pc, interactive msg struct */
-typedef struct
-{
-	unsigned int cmd;
-	unsigned int file_num;
-} ramdump_trans_server_interactive_req;
-
-/* trans_server rsp pc, file info msg struct */
-typedef struct
-{
-	unsigned int cmd;
-	char    file_name[RAMDUMP_RAMCONF_FILENAME_MAXLEN];
-	unsigned int file_size;
-} ramdump_trans_server_file_info_req;
-
-/* pc req trans_server, file info msg struct */
-typedef struct
-{
-	unsigned int cmd;
-	unsigned int file_id;
-} ramdump_pc_file_info_rsp;
-
-/* trans_server rsp pc, trans data msg struct */
-typedef struct
-{
-	unsigned int cmd;
-	unsigned int buf_addr;
-	unsigned int buf_left_size;
-} ramdump_trans_server_data_trans_req;
-
-/* pc req trans_server, trans data msg struct */
-typedef struct
-{
-	unsigned int   cmd;
-	unsigned int   file_id;      /* Îļþ±àºÅ         */
-	unsigned int   offset;       /* offsetΪÊý¾ÝÆ«ÒÆ */
-	unsigned int   length;       /* lengthΪÊý¾Ý³¤¶È */
-} ramdump_pc_trans_data_rsp;
-
-/*******************************************************************************
- *                        Local function declarations                          *
- ******************************************************************************/
-
-/*******************************************************************************
- *                         Local variable definitions                          *
- ******************************************************************************/
-char *ramdump_log_buf_region = NULL;
-unsigned int ramdump_log_buf_len = 0;
-
-/*******************************************************************************
- *                        Global variable definitions                          *
- ******************************************************************************/
-unsigned char *ramdump_shared_mem_base = NULL;
-unsigned char *ramdump_export_flag_base = NULL;
-int ramdump_file_num = 0;
-ramdump_file_t ramdump_device_fp = {0};
-ramdump_file_t ramdump_spinand_fp = {0};
-ramdump_file_t *g_ramdump_dev_fp;
-unsigned int   ramdump_device_file_cnt = 0;
-unsigned char *ramdump_log_buf = NULL; /* ¸´ÓÃramdump´æ´¢µÄ128KB(Æ«ÒÆ16KB) */
-
-/*******************************************************************************
- *                      Inline function implementations                        *
- ******************************************************************************/
-static inline void ramdump_wait_delay( unsigned long ms)
-{
-	volatile int j = 0;
-	for (j = 0; j < 10000; j++);
-}
-/*******************************************************************************
- *                      extern function implementations                         *
- ******************************************************************************/
-
-/*******************************************************************************
-* ¹¦ÄÜÃèÊö:    ramdump_oss_data_trans_write
-* ²ÎÊý˵Ã÷:     
-*   (´«Èë²ÎÊý) void
-*   (´«³ö²ÎÊý) void
-* ·µ »Ø Öµ:    void 
-* ÆäËü˵Ã÷:    This function is used for ramdump to trans dump data to PC
-*******************************************************************************/
-int ramdump_oss_data_trans_write(unsigned char *buffer, unsigned int size)
-{
-	int ret;
-	ramdump_shmem_t *msg = (ramdump_shmem_t *)ramdump_shared_mem_base;
-
-	if (size > (RAMDUMP_SHARED_MEM_LEN- roundup(sizeof(ramdump_shmem_t), RAMDUMP_SHMEM_ALIGN_SIZE)));
-		ret = -1;
-
-	while(1){
-		if ((msg->core_flag == 1) && (msg->rw_flag == 1)){
-			memcpy(msg->buf, buffer, size);
-			msg->size = size;
-			msg->core_flag = 0;
-			msg->rw_flag = 2;
-			ret = size;
-			break;
-		}
-		else
-			ramdump_wait_delay(0);
-	}
-	return ret;
-}
-
-/*******************************************************************************
-* ¹¦ÄÜÃèÊö:    ramdump_oss_data_trans_read
-* ²ÎÊý˵Ã÷:     
-*   (´«Èë²ÎÊý) void
-*   (´«³ö²ÎÊý) void
-* ·µ »Ø Öµ:    void 
-* ÆäËü˵Ã÷:    This function is used for ramdump to trans dump data to PC
-*******************************************************************************/
-int ramdump_oss_data_trans_read(unsigned char *buffer, unsigned int size)
-{
-	int ret;
-	ramdump_shmem_t *msg = (ramdump_shmem_t *)ramdump_shared_mem_base;
-
-	if (size > (RAMDUMP_SHARED_MEM_LEN - roundup(sizeof(ramdump_shmem_t), RAMDUMP_SHMEM_ALIGN_SIZE)))
-		ret = -1;
-
-	while(1){
-		if ((msg->core_flag == 1) && (msg->rw_flag == 2)){
-			if (size < msg->size)
-				return -1;
-			memcpy(buffer, msg->buf, msg->size);
-			msg->size = size;
-			msg->core_flag = 1;
-			msg->rw_flag = 1;
-			ret = size;
-			break;
-		}
-		else
-			ramdump_wait_delay(0);
-	}
-	return ret;
-}
-
-/*******************************************************************************
-* ¹¦ÄÜÃèÊö:    ramdump_oss_data_trans_init
-* ²ÎÊý˵Ã÷:     
-*   (´«Èë²ÎÊý) void
-*   (´«³ö²ÎÊý) void
-* ·µ »Ø Öµ:    void 
-* ÆäËü˵Ã÷:    This function is used for map ramdump_shared_mem_base
-*******************************************************************************/
-void ramdump_oss_data_trans_init(void)
-{
-	ramdump_shmem_t *msg = (ramdump_shmem_t *)ramdump_shared_mem_base;
-
-	memset(msg, 0, sizeof(ramdump_shmem_t));
-	msg->core_flag = 1;
-	msg->rw_flag = 1;
-}
-
-/*******************************************************************************
-* ¹¦ÄÜÃèÊö:    ramdump_device_init
-* ²ÎÊý˵Ã÷:     
-*   (´«Èë²ÎÊý) void
-*   (´«³ö²ÎÊý) void
-* ·µ »Ø Öµ:    void 
-* ÆäËü˵Ã÷:    This function is used for init fp head
-*******************************************************************************/
-int ramdump_device_init(void)
-{
-	int ret = 0;
-
-	ramdump_lzo_init();
-	if(ramdump_export_mode == RAMDUMP_MODE_EMMC)
-	{
-#ifdef CONFIG_RAMDUMP_EMMC
-		ret = ramdump_emmc_init(&ramdump_device_fp);
-#endif
-		g_ramdump_dev_fp = &ramdump_device_fp;
-	}
-	else if(ramdump_export_mode == RAMDUMP_MODE_SPINAND)
-	{
-#ifdef CONFIG_MTD_SPI_NAND
-		ret = ramdump_spinand_init(&ramdump_spinand_fp);
-#endif
-		g_ramdump_dev_fp = &ramdump_spinand_fp;
-	}
-	return ret;
-}
-
-/*******************************************************************************
-* ¹¦ÄÜÃèÊö:    ramdump_device_close
-* ²ÎÊý˵Ã÷:     
-*   (´«Èë²ÎÊý) void
-*   (´«³ö²ÎÊý) void
-* ·µ »Ø Öµ:    void 
-* ÆäËü˵Ã÷:    This function is used for print close msg
-*******************************************************************************/
-void ramdump_device_close(void)
-{
-	if(ramdump_export_mode == RAMDUMP_MODE_EMMC)
-	{
-#ifdef CONFIG_RAMDUMP_EMMC
-		ramdump_emmc_close(&ramdump_device_fp);
-#endif
-	}
-	else if (ramdump_export_mode == RAMDUMP_MODE_SPINAND)
-	{
-#ifdef CONFIG_MTD_SPI_NAND
-		ramdump_spinand_close(&ramdump_spinand_fp);
-#endif
-	}
-}
-
-/*******************************************************************************
-* ¹¦ÄÜÃèÊö:    ramdump_fill_header
-* ²ÎÊý˵Ã÷:     
-*   (´«Èë²ÎÊý) 
-*   (´«³ö²ÎÊý) void
-* ·µ »Ø Öµ:    void 
-* ÆäËü˵Ã÷:    This function is used for  ramdump file header
-*******************************************************************************/
-int ramdump_fill_header(char *file_name, unsigned int file_size, ramdump_file_t *fp, unsigned int offset)
-{
-	if (ramdump_device_file_cnt >= RAMDUMP_FILE_NUM_MAX)
-		return -1;
-
-	fp->file_fp[ramdump_device_file_cnt].magic = 0x3A3A3A3A;
-	strncpy(fp->file_fp[ramdump_device_file_cnt].file_name, file_name, RAMDUMP_RAMCONF_FILENAME_MAXLEN - 1);
-	fp->file_fp[ramdump_device_file_cnt].offset = offset;
-	fp->file_fp[ramdump_device_file_cnt].size = file_size;
-	return 0;
-}
-
-/*******************************************************************************
-* ¹¦ÄÜÃèÊö:    ramdump_device_write_file
-* ²ÎÊý˵Ã÷:     
-*   (´«Èë²ÎÊý) void
-*   (´«³ö²ÎÊý) void
-* ·µ »Ø Öµ:    void 
-* ÆäËü˵Ã÷:    This function is used for write file infomation
-*******************************************************************************/
-int ramdump_device_write_file(ramdump_trans_server_file_info_req *server_to_cap)
-{
-	int ret = -1;
-	
-	if(ramdump_export_mode == RAMDUMP_MODE_EMMC)
-	{
-#ifdef CONFIG_RAMDUMP_EMMC
-		if (ramdump_emmc_offset >= RAMDUMP_TRANS_EMMC_LEN)
-			return -1;
-
-		ret = ramdump_fill_header(server_to_cap->file_name, 
-								 server_to_cap->file_size, 
-								 &ramdump_device_fp, 
-								 ramdump_emmc_offset);
-#endif
-	}
-	else if(ramdump_export_mode == RAMDUMP_MODE_SPINAND)
-	{
-#ifdef CONFIG_MTD_SPI_NAND
-		if (ramdump_spinand_offset >= RAMDUMP_SPINAND_LEN)
-			return -1;
-
-		ret = ramdump_fill_header(server_to_cap->file_name, 
-								  server_to_cap->file_size,
-								  &ramdump_spinand_fp, 
-								  ramdump_spinand_offset);
-#endif
-	}
-	return ret;
-}
-
-/*******************************************************************************
-* ¹¦ÄÜÃèÊö:	ramdump_device_write_file
-* ²ÎÊý˵Ã÷:	 
-*   (´«Èë²ÎÊý) fp£º	  Îļþ¾ä±ú
-*   (´«³ö²ÎÊý) file_size Îļþ´óС
-* ·µ »Ø Öµ:	³É¹¦·µ»Ø0£¬Ê§°Ü·µ»Ø-1 
-* ÆäËü˵Ã÷:	This function is used for write file infomation
-*******************************************************************************/
-int ramdump_device_modify_file_size(ssize_t file_size)
-{
-	int ret = -1;
-	ramdump_file_t *fp = g_ramdump_dev_fp;
-
-	if(fp)
-	{
-		fp->file_fp[ramdump_device_file_cnt].size = file_size;
-		return 0;
-	}
-	return ret;
-}
-
-/*******************************************************************************
-* ¹¦ÄÜÃèÊö:	ramdump_device_write_file_head
-* ²ÎÊý˵Ã÷:	 
-*   (´«Èë²ÎÊý) void
-*   (´«³ö²ÎÊý) void
-* ·µ »Ø Öµ:	void 
-* ÆäËü˵Ã÷:	This function is used for write file head
-*******************************************************************************/
-int ramdump_device_write_file_head(void)
-{
-	int ret = -1;
-	
-	if(ramdump_export_mode == RAMDUMP_MODE_EMMC)
-	{
-#ifdef CONFIG_RAMDUMP_EMMC
-		ret = ramdump_emmc_write_file_head(&ramdump_device_fp);		
-#endif
-	}
-	else if(ramdump_export_mode == RAMDUMP_MODE_SPINAND)
-	{
-#ifdef CONFIG_MTD_SPI_NAND
-		ret = ramdump_spinand_write_file_head(&ramdump_spinand_fp);
-#endif
-	}
-	return ret;
-}
-
-int ramdump_do_write_log_txt(ramdump_file_t *fp)
-{
-	int ret = -1;
-	size_t dst_len = 0;	
-	size_t send_len = 0;
-	ramdump_shmem_t *msg = (ramdump_shmem_t *)ramdump_shared_mem_base;
-	char *buf = NULL;
-
-	memset(ramdump_log_buf, 0, RAMDUMP_LOG_BUF);
-	ret = dump_printk_text(ramdump_log_buf, RAMDUMP_LOG_BUF);
-	if(ret < 0){
-		printk("ramdump printk log buf failed!!\n");
-		return ret;
-	}
-	if (ramdump_compress_flag == 1){
-		ret = ramdump_lzo_compress(ramdump_log_buf, RAMDUMP_LOG_BUF, msg->buf, &dst_len);
-		buf = msg->buf;
-	}
-	if (ret != LZO_E_OK){
-		dst_len = RAMDUMP_LOG_BUF;
-		buf = ramdump_log_buf;
-	}
-	fp->file_num += 1;
-	fp->file_fp[ramdump_device_file_cnt].magic = 0x3A3A3A3A;
-	strncpy(fp->file_fp[ramdump_device_file_cnt].file_name, "cap_log_buf.txt", RAMDUMP_RAMCONF_FILENAME_MAXLEN - 1);
-
-	if (fp == &ramdump_device_fp)
-	{
-#ifdef CONFIG_RAMDUMP_EMMC
-		fp->file_fp[ramdump_device_file_cnt].size = roundup(dst_len, RAMDUMP_EMMC_ALIGN_SIZE);
-		fp->file_fp[ramdump_device_file_cnt].offset = ramdump_emmc_offset;
-		ret = mmc_bwrite(RAMDUMP_EMMC_ADDR + ramdump_emmc_offset, dst_len, buf);
-		ramdump_emmc_write_file_head(fp);
-		ramdump_emmc_offset = ramdump_emmc_offset + roundup(dst_len, RAMDUMP_EMMC_ALIGN_SIZE);
-#endif
-	}
-	else if (fp == &ramdump_spinand_fp)
-	{
-#ifdef CONFIG_MTD_SPI_NAND
-		send_len = roundup(dst_len, RAMDUMP_FLASH_ALIGN_SIZE);
-		fp->file_fp[ramdump_device_file_cnt].size = send_len;
-		fp->file_fp[ramdump_device_file_cnt].offset = ramdump_spinand_offset;
-		ret = write_data(RAMDUMP_SPINAND_ADDR + ramdump_spinand_offset, send_len, buf);
-		ramdump_spinand_offset = ramdump_spinand_offset + send_len;
-#endif
-	}
-	else
-	{
-		printk("ramdump_do_write_logbuf error fp!\n");
-		return -1;
-	}
-	ramdump_device_file_cnt += 1;
-	return ret;
-}
-
-int ramdump_do_write_logbuf(ramdump_file_t *fp)
-{
-	char   *buf = NULL;
-	int	ret  = -1;
-	size_t dst_len = 0;
-	size_t send_len = 0;
-	ramdump_shmem_t *msg = (ramdump_shmem_t *)ramdump_shared_mem_base;
-
-	if(!fp)
-	{
-		printk("ramdump_do_write_logbuf error: fp is Null\n");
-		return -1;
-	}
-
-	ramdump_log_buf_region = log_buf_addr_get();
-	ramdump_log_buf_len = log_buf_len_get();
-
-	if (ramdump_compress_flag == 1){
-		ret = ramdump_lzo_compress(ramdump_log_buf_region, ramdump_log_buf_len, msg->buf, &dst_len);
-		buf = msg->buf;
-	}
-	if (ret != LZO_E_OK){
-		dst_len = ramdump_log_buf_len;
-		buf = ramdump_log_buf_region;
-	}
-
-	fp->file_num += 1;
-	fp->file_fp[ramdump_device_file_cnt].magic = 0x3A3A3A3A;
-	strncpy(fp->file_fp[ramdump_device_file_cnt].file_name, "cap_log_buf.bin", RAMDUMP_RAMCONF_FILENAME_MAXLEN - 1);
-
-	if (fp == &ramdump_device_fp)
-	{
-#ifdef CONFIG_RAMDUMP_EMMC
-		fp->file_fp[ramdump_device_file_cnt].size = roundup(dst_len, RAMDUMP_EMMC_ALIGN_SIZE);
-		ret = mmc_bwrite(RAMDUMP_EMMC_ADDR + ramdump_emmc_offset, dst_len, buf);
-		fp->file_fp[ramdump_device_file_cnt].offset = ramdump_emmc_offset;
-		ramdump_emmc_write_file_head(fp);
-		ramdump_emmc_offset = ramdump_emmc_offset + roundup(dst_len, RAMDUMP_EMMC_ALIGN_SIZE);
-#endif
-	}
-	else if (fp == &ramdump_spinand_fp)
-	{
-#ifdef CONFIG_MTD_SPI_NAND
-		send_len = roundup(dst_len, RAMDUMP_FLASH_ALIGN_SIZE);
-		fp->file_fp[ramdump_device_file_cnt].size = send_len;
-		fp->file_fp[ramdump_device_file_cnt].offset = ramdump_spinand_offset;
-		ret = write_data(RAMDUMP_SPINAND_ADDR + ramdump_spinand_offset, send_len, buf);
-		ramdump_spinand_offset = ramdump_spinand_offset + send_len;
-#endif
-	}
-	else
-	{
-		printk("ramdump_do_write_logbuf error fp!\n");
-		return -1;
-	}
-	
-	ramdump_device_file_cnt += 1;
-	ramdump_do_write_log_txt(fp);
-
-	return ret;
-}
-
-/*******************************************************************************
-* ¹¦ÄÜÃèÊö:	ramdump_device_write_logbuf
-* ²ÎÊý˵Ã÷:	 
-*   (´«Èë²ÎÊý) void
-*   (´«³ö²ÎÊý) void
-* ·µ »Ø Öµ:	void 
-* ÆäËü˵Ã÷:	This function is used for  write cap logbuf
-*******************************************************************************/
-int ramdump_device_write_logbuf(void)
-{
-	int ret = -1;
-
-	ret = ramdump_do_write_logbuf(g_ramdump_dev_fp);
-	if (ret < 0)
-		ramdump_printf("device memory trans file:cap_log_buf error!!!\n");
-	else
-		ramdump_printf("device memory trans file:cap_log_buf success!!!\n");
-	return ret;
-}
-
-/*******************************************************************************
-* ¹¦ÄÜÃèÊö:	ramdump_device_write_data
-* ²ÎÊý˵Ã÷:	 
-*   (´«Èë²ÎÊý) void
-*   (´«³ö²ÎÊý) void
-* ·µ »Ø Öµ:	void 
-* ÆäËü˵Ã÷:	This function is used for write data
-*******************************************************************************/
-int ramdump_device_write_data(ramdump_shmem_t *msg, unsigned int size, ssize_t *dstlen)
-{
-	int ret = 0;
-		
-	if(ramdump_export_mode == RAMDUMP_MODE_EMMC)
-	{		
-#ifdef CONFIG_RAMDUMP_EMMC
-		ret = ramdump_emmc_write_data(msg, &ramdump_device_fp, size);
-		if(ret < 0)
-			*dstlen = 0;
-		else
-			*dstlen += roundup(ret, RAMDUMP_EMMC_ALIGN_SIZE);
-#endif
-	}
-	else if(ramdump_export_mode == RAMDUMP_MODE_SPINAND)
-	{
-#ifdef CONFIG_MTD_SPI_NAND
-		ret = ramdump_spinand_write_data(msg, &ramdump_spinand_fp, size);
-		if(ret < 0)
-			*dstlen = 0;
-		else
-			*dstlen += ret;
-#endif
-	}
-	else
-		return 0;
-	return ret;
-}
-
-/*******************************************************************************
- *                  Global function implementations                            *
- ******************************************************************************/
-void ramdump_shared_mem_init(void)
-{
-	ramdump_shared_mem_base = ramdump_phy_to_vir((unsigned long)RAMDUMP_SHARED_MEM_BASE, (unsigned long)RAMDUMP_MEM_LEN);
-	ramdump_export_flag_base = ramdump_phy_to_vir((unsigned long)IRAM_BASE_ADDR_RAMDUMP_MODE, sizeof(unsigned long));
-	ramdump_log_buf = ramdump_shared_mem_base + 0x4000;
-	ramdump_flash_alloc_transbuf();
-}
-
-/*******************************************************************************
-* ¹¦ÄÜÃèÊö:	ramdump_data_transfer_to_device
-* ²ÎÊý˵Ã÷:
-*   (´«Èë²ÎÊý) void
-*   (´«³ö²ÎÊý) void
-* ·µ »Ø Öµ:	void 
-* ÆäËü˵Ã÷:	This function is used for ramdump to trans dump data to ap
-*******************************************************************************/
-void ramdump_data_transfer_to_device(void)
-{
-	int data_trans_max;
-	int file_cnt = 0;
-	int file_size = 0;
-	int file_offset = 0;
-	int file_left_size = 0;
-	int file_trans_size = 0;
-	int error_cmd = 0;
-	int ret = 0;
-	ssize_t file_dstlen = 0;
-
-	unsigned int req_buf[RAMDUMP_INTERACTIVE_ARRAY_LEN] = {0};
-	ramdump_trans_server_interactive_req cap_to_server_msg = {0};
-
-	/* interactive begin */
-	if(ramdump_device_init() < 0)
-		return;
-	data_trans_max = RAMDUMP_SHARED_MEM_LEN - roundup(sizeof(ramdump_shmem_t), RAMDUMP_SHMEM_ALIGN_SIZE) - RAMDUMP_COMPRESS_OUT_LEN;
-	cap_to_server_msg.cmd = RAMDUMP_PC_INTERACTIVE_REQ;
-	ramdump_oss_data_trans_write((unsigned char*)(&cap_to_server_msg), sizeof(cap_to_server_msg));
-
-	for(;;)
-	{
-		ramdump_oss_data_trans_read((unsigned char *)req_buf, RAMDUMP_INTERACTIVE_DATA_LEN);
-		switch (*(unsigned int *)req_buf)
-		{
-			case RAMDUMP_TRANS_SERVER_INTERACTIVE_RSP:
-			{
-				ramdump_pc_file_info_rsp cap_to_server_msg ={0};
-				ramdump_trans_server_interactive_req *server_to_cap_msg = (ramdump_trans_server_interactive_req *)req_buf;
-				/* data from server to cap */
-				ramdump_file_num = server_to_cap_msg->file_num;
-				ramdump_device_fp.file_num  = ramdump_file_num;
-				ramdump_spinand_fp.file_num = ramdump_file_num;
-
-				/* data from cap to server */
-				cap_to_server_msg.cmd = RAMDUMP_PC_FILE_INFO_READ_REQ;
-				cap_to_server_msg.file_id = file_cnt;
-
-				ramdump_oss_data_trans_write(
-					(unsigned char*)(&cap_to_server_msg),
-					sizeof(cap_to_server_msg));
-
-				break;
-			}
-			case RAMDUMP_TRANS_SERVER_FILE_INFO_READ_RSP:
-			{
-				ramdump_pc_trans_data_rsp cap_to_server_msg = {0};
-				ramdump_trans_server_file_info_req *server_to_cap_msg = (ramdump_trans_server_file_info_req *)req_buf;
-				/* data from server to cap */
-				/*device memory file create*/
-				if(ramdump_device_write_file(server_to_cap_msg) == -1){
-					cap_to_server_msg.cmd = RAMDUMP_PC_FILE_TRANS_DONE_REQ;
-					ramdump_device_write_file_head();//±£Ö¤³ö´íǰ¼¸¸öÎļþ¾ùд¶Ô¡£
-					ramdump_printf("ramdump write emmc file error!\n");
-				}
-				file_size = server_to_cap_msg->file_size;
-				file_offset = 0;
-				file_left_size = file_size;
-				/* data from cap to server */
-				cap_to_server_msg.cmd = RAMDUMP_PC_FILE_DATA_TRANS_REQ;
-				cap_to_server_msg.file_id = file_cnt;
-				cap_to_server_msg.offset = file_offset;
-				if (file_size >= data_trans_max)
-					cap_to_server_msg.length = data_trans_max;
-				else
-					cap_to_server_msg.length = file_size;
-				file_trans_size = cap_to_server_msg.length;
-				file_left_size = file_left_size - cap_to_server_msg.length;
-				file_offset = file_offset + cap_to_server_msg.length;
-				printk("device memory trans file:%s !!!\n", server_to_cap_msg->file_name);
-				/* interactive data trans */
-				ramdump_oss_data_trans_write(
-					(unsigned char*)(&cap_to_server_msg), 
-					sizeof(cap_to_server_msg));
-
-				break;
-			}
-			case RAMDUMP_TRANS_SERVER_FILE_DATA_TRANS_RSP:
-			{
-				int write_len = 0;
-				ramdump_pc_trans_data_rsp cap_to_server_msg = {0};
-				/* data from server to cap */
-				ramdump_shmem_t *server_to_cap_msg = (ramdump_shmem_t *)ramdump_shared_mem_base;
-				server_to_cap_msg->core_flag = 0;
-				/*data from cap to emmc*/
-				
-				write_len = ramdump_device_write_data(server_to_cap_msg, file_left_size, &file_dstlen);
-				if(write_len < 0)
-				{
-					ramdump_printf("ramdump write emmc data error!\n");
-				}
-				
-				/*ÅжÏÊ£Óà´óС*/
-				if (file_left_size == 0)
-				{
-					file_cnt++;
-					if (file_cnt == ramdump_file_num)
-					{
-						cap_to_server_msg.cmd = RAMDUMP_PC_FILE_TRANS_DONE_REQ;
-					}
-					else
-					{
-						cap_to_server_msg.cmd = RAMDUMP_PC_FILE_INFO_READ_REQ;
-						cap_to_server_msg.file_id = file_cnt;
-					}
-					ramdump_device_modify_file_size(file_dstlen);
-					file_dstlen = 0;
-					ramdump_device_file_cnt++;
-				}
-				else
-				{
-					/* data from cap to server */
-					if (file_left_size >= data_trans_max)
-						cap_to_server_msg.length = data_trans_max;
-					else
-						cap_to_server_msg.length = file_left_size;
-					cap_to_server_msg.cmd = RAMDUMP_PC_FILE_DATA_TRANS_REQ;
-					cap_to_server_msg.file_id = file_cnt;
-					cap_to_server_msg.offset = file_offset;
-					file_left_size = file_left_size - cap_to_server_msg.length;
-					file_offset= file_offset + cap_to_server_msg.length;
-				}
-
-				ramdump_oss_data_trans_write((unsigned char *)(&cap_to_server_msg), sizeof(cap_to_server_msg));
-				continue;
-			}
-			case RAMDUMP_TRANS_SERVER_FILE_TRANS_DONE_RSP:
-			{
-				ramdump_device_write_logbuf();
-				ramdump_device_close();
-				return;
-			}
-			default:
-			{
-				error_cmd = RAMDUMP_INTERACTIVE_CMD_ERROR;
-				ramdump_printf("ramdump trans emmc error:%d!\n", error_cmd);
-				/* interactive data trans */
-				break;
-			}
-		}
-	}
-}
-
-#ifdef __cplusplus
-}
-#endif
-
diff --git a/upstream/linux-5.10/net/8021q/vlan_dev.c b/upstream/linux-5.10/net/8021q/vlan_dev.c
deleted file mode 100755
index 86a1c99..0000000
--- a/upstream/linux-5.10/net/8021q/vlan_dev.c
+++ /dev/null
@@ -1,842 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-or-later
-/* -*- linux-c -*-
- * INET		802.1Q VLAN
- *		Ethernet-type device handling.
- *
- * Authors:	Ben Greear <greearb@candelatech.com>
- *              Please send support related email to: netdev@vger.kernel.org
- *              VLAN Home Page: http://www.candelatech.com/~greear/vlan.html
- *
- * Fixes:       Mar 22 2001: Martin Bokaemper <mbokaemper@unispherenetworks.com>
- *                - reset skb->pkt_type on incoming packets when MAC was changed
- *                - see that changed MAC is saddr for outgoing packets
- *              Oct 20, 2001:  Ard van Breeman:
- *                - Fix MC-list, finally.
- *                - Flush MC-list on VLAN destroy.
- */
-
-#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-
-#include <linux/module.h>
-#include <linux/slab.h>
-#include <linux/skbuff.h>
-#include <linux/netdevice.h>
-#include <linux/net_tstamp.h>
-#include <linux/etherdevice.h>
-#include <linux/ethtool.h>
-#include <linux/phy.h>
-#include <net/arp.h>
-
-#include "vlan.h"
-#include "vlanproc.h"
-#include <linux/if_vlan.h>
-#include <linux/netpoll.h>
-
-/*
- *	Create the VLAN header for an arbitrary protocol layer
- *
- *	saddr=NULL	means use device source address
- *	daddr=NULL	means leave destination address (eg unresolved arp)
- *
- *  This is called when the SKB is moving down the stack towards the
- *  physical devices.
- */
-static int vlan_dev_hard_header(struct sk_buff *skb, struct net_device *dev,
-				unsigned short type,
-				const void *daddr, const void *saddr,
-				unsigned int len)
-{
-	struct vlan_dev_priv *vlan = vlan_dev_priv(dev);
-	struct vlan_hdr *vhdr;
-	unsigned int vhdrlen = 0;
-	u16 vlan_tci = 0;
-	int rc;
-
-	if (!(vlan->flags & VLAN_FLAG_REORDER_HDR)) {
-		vhdr = skb_push(skb, VLAN_HLEN);
-
-		vlan_tci = vlan->vlan_id;
-		vlan_tci |= vlan_dev_get_egress_qos_mask(dev, skb->priority);
-		vhdr->h_vlan_TCI = htons(vlan_tci);
-
-		/*
-		 *  Set the protocol type. For a packet of type ETH_P_802_3/2 we
-		 *  put the length in here instead.
-		 */
-		if (type != ETH_P_802_3 && type != ETH_P_802_2)
-			vhdr->h_vlan_encapsulated_proto = htons(type);
-		else
-			vhdr->h_vlan_encapsulated_proto = htons(len);
-
-		skb->protocol = vlan->vlan_proto;
-		type = ntohs(vlan->vlan_proto);
-		vhdrlen = VLAN_HLEN;
-	}
-
-	/* Before delegating work to the lower layer, enter our MAC-address */
-	if (saddr == NULL)
-		saddr = dev->dev_addr;
-
-	/* Now make the underlying real hard header */
-	dev = vlan->real_dev;
-	rc = dev_hard_header(skb, dev, type, daddr, saddr, len + vhdrlen);
-	if (rc > 0)
-		rc += vhdrlen;
-	return rc;
-}
-
-static inline netdev_tx_t vlan_netpoll_send_skb(struct vlan_dev_priv *vlan, struct sk_buff *skb)
-{
-#ifdef CONFIG_NET_POLL_CONTROLLER
-	return netpoll_send_skb(vlan->netpoll, skb);
-#else
-	BUG();
-	return NETDEV_TX_OK;
-#endif
-}
-
-static netdev_tx_t vlan_dev_hard_start_xmit(struct sk_buff *skb,
-					    struct net_device *dev)
-{
-	struct vlan_dev_priv *vlan = vlan_dev_priv(dev);
-	struct vlan_ethhdr *veth = (struct vlan_ethhdr *)(skb->data);
-	unsigned int len;
-	int ret;
-
-	/* Handle non-VLAN frames if they are sent to us, for example by DHCP.
-	 *
-	 * NOTE: THIS ASSUMES DIX ETHERNET, SPECIFICALLY NOT SUPPORTING
-	 * OTHER THINGS LIKE FDDI/TokenRing/802.3 SNAPs...
-	 */
-	if (veth->h_vlan_proto != vlan->vlan_proto ||
-	    vlan->flags & VLAN_FLAG_REORDER_HDR) {
-		u16 vlan_tci;
-		vlan_tci = vlan->vlan_id;
-		vlan_tci |= vlan_dev_get_egress_qos_mask(dev, skb->priority);
-		__vlan_hwaccel_put_tag(skb, vlan->vlan_proto, vlan_tci);
-	}
-
-	skb->dev = vlan->real_dev;
-	len = skb->len;
-	if (unlikely(netpoll_tx_running(dev)))
-		return vlan_netpoll_send_skb(vlan, skb);
-
-	ret = dev_queue_xmit(skb);
-
-	if (likely(ret == NET_XMIT_SUCCESS || ret == NET_XMIT_CN)) {
-		struct vlan_pcpu_stats *stats;
-
-		stats = this_cpu_ptr(vlan->vlan_pcpu_stats);
-		u64_stats_update_begin(&stats->syncp);
-		stats->tx_packets++;
-		stats->tx_bytes += len;
-		u64_stats_update_end(&stats->syncp);
-	} else {
-		this_cpu_inc(vlan->vlan_pcpu_stats->tx_dropped);
-	}
-
-	return ret;
-}
-
-static int vlan_dev_change_mtu(struct net_device *dev, int new_mtu)
-{
-	struct net_device *real_dev = vlan_dev_priv(dev)->real_dev;
-	unsigned int max_mtu = real_dev->mtu;
-
-	if (netif_reduces_vlan_mtu(real_dev))
-		max_mtu -= VLAN_HLEN;
-	if (max_mtu < new_mtu)
-		return -ERANGE;
-
-	dev->mtu = new_mtu;
-
-	return 0;
-}
-
-void vlan_dev_set_ingress_priority(const struct net_device *dev,
-				   u32 skb_prio, u16 vlan_prio)
-{
-	struct vlan_dev_priv *vlan = vlan_dev_priv(dev);
-
-	if (vlan->ingress_priority_map[vlan_prio & 0x7] && !skb_prio)
-		vlan->nr_ingress_mappings--;
-	else if (!vlan->ingress_priority_map[vlan_prio & 0x7] && skb_prio)
-		vlan->nr_ingress_mappings++;
-
-	vlan->ingress_priority_map[vlan_prio & 0x7] = skb_prio;
-}
-
-int vlan_dev_set_egress_priority(const struct net_device *dev,
-				 u32 skb_prio, u16 vlan_prio)
-{
-	struct vlan_dev_priv *vlan = vlan_dev_priv(dev);
-	struct vlan_priority_tci_mapping *mp = NULL;
-	struct vlan_priority_tci_mapping *np;
-	u32 vlan_qos = (vlan_prio << VLAN_PRIO_SHIFT) & VLAN_PRIO_MASK;
-
-	/* See if a priority mapping exists.. */
-	mp = vlan->egress_priority_map[skb_prio & 0xF];
-	while (mp) {
-		if (mp->priority == skb_prio) {
-			if (mp->vlan_qos && !vlan_qos)
-				vlan->nr_egress_mappings--;
-			else if (!mp->vlan_qos && vlan_qos)
-				vlan->nr_egress_mappings++;
-			mp->vlan_qos = vlan_qos;
-			return 0;
-		}
-		mp = mp->next;
-	}
-
-	/* Create a new mapping then. */
-	mp = vlan->egress_priority_map[skb_prio & 0xF];
-	np = kmalloc(sizeof(struct vlan_priority_tci_mapping), GFP_KERNEL);
-	if (!np)
-		return -ENOBUFS;
-
-	np->next = mp;
-	np->priority = skb_prio;
-	np->vlan_qos = vlan_qos;
-	/* Before inserting this element in hash table, make sure all its fields
-	 * are committed to memory.
-	 * coupled with smp_rmb() in vlan_dev_get_egress_qos_mask()
-	 */
-	smp_wmb();
-	vlan->egress_priority_map[skb_prio & 0xF] = np;
-	if (vlan_qos)
-		vlan->nr_egress_mappings++;
-	return 0;
-}
-
-/* Flags are defined in the vlan_flags enum in
- * include/uapi/linux/if_vlan.h file.
- */
-int vlan_dev_change_flags(const struct net_device *dev, u32 flags, u32 mask)
-{
-	struct vlan_dev_priv *vlan = vlan_dev_priv(dev);
-	u32 old_flags = vlan->flags;
-
-	if (mask & ~(VLAN_FLAG_REORDER_HDR | VLAN_FLAG_GVRP |
-		     VLAN_FLAG_LOOSE_BINDING | VLAN_FLAG_MVRP |
-		     VLAN_FLAG_BRIDGE_BINDING))
-		return -EINVAL;
-
-	vlan->flags = (old_flags & ~mask) | (flags & mask);
-
-	if (netif_running(dev) && (vlan->flags ^ old_flags) & VLAN_FLAG_GVRP) {
-		if (vlan->flags & VLAN_FLAG_GVRP)
-			vlan_gvrp_request_join(dev);
-		else
-			vlan_gvrp_request_leave(dev);
-	}
-
-	if (netif_running(dev) && (vlan->flags ^ old_flags) & VLAN_FLAG_MVRP) {
-		if (vlan->flags & VLAN_FLAG_MVRP)
-			vlan_mvrp_request_join(dev);
-		else
-			vlan_mvrp_request_leave(dev);
-	}
-	return 0;
-}
-
-void vlan_dev_get_realdev_name(const struct net_device *dev, char *result)
-{
-	strncpy(result, vlan_dev_priv(dev)->real_dev->name, 23);
-}
-
-bool vlan_dev_inherit_address(struct net_device *dev,
-			      struct net_device *real_dev)
-{
-	if (dev->addr_assign_type != NET_ADDR_STOLEN)
-		return false;
-
-	ether_addr_copy(dev->dev_addr, real_dev->dev_addr);
-	call_netdevice_notifiers(NETDEV_CHANGEADDR, dev);
-	return true;
-}
-
-static int vlan_dev_open(struct net_device *dev)
-{
-	struct vlan_dev_priv *vlan = vlan_dev_priv(dev);
-	struct net_device *real_dev = vlan->real_dev;
-	int err;
-
-	if (!(real_dev->flags & IFF_UP) &&
-	    !(vlan->flags & VLAN_FLAG_LOOSE_BINDING))
-		return -ENETDOWN;
-
-	if (!ether_addr_equal(dev->dev_addr, real_dev->dev_addr) &&
-	    !vlan_dev_inherit_address(dev, real_dev)) {
-		err = dev_uc_add(real_dev, dev->dev_addr);
-		if (err < 0)
-			goto out;
-	}
-
-	if (dev->flags & IFF_ALLMULTI) {
-		err = dev_set_allmulti(real_dev, 1);
-		if (err < 0)
-			goto del_unicast;
-	}
-	if (dev->flags & IFF_PROMISC) {
-		err = dev_set_promiscuity(real_dev, 1);
-		if (err < 0)
-			goto clear_allmulti;
-	}
-
-	ether_addr_copy(vlan->real_dev_addr, real_dev->dev_addr);
-
-	if (vlan->flags & VLAN_FLAG_GVRP)
-		vlan_gvrp_request_join(dev);
-
-	if (vlan->flags & VLAN_FLAG_MVRP)
-		vlan_mvrp_request_join(dev);
-
-	if (netif_carrier_ok(real_dev) &&
-	    !(vlan->flags & VLAN_FLAG_BRIDGE_BINDING))
-		netif_carrier_on(dev);
-	return 0;
-
-clear_allmulti:
-	if (dev->flags & IFF_ALLMULTI)
-		dev_set_allmulti(real_dev, -1);
-del_unicast:
-	if (!ether_addr_equal(dev->dev_addr, real_dev->dev_addr))
-		dev_uc_del(real_dev, dev->dev_addr);
-out:
-	netif_carrier_off(dev);
-	return err;
-}
-
-static int vlan_dev_stop(struct net_device *dev)
-{
-	struct vlan_dev_priv *vlan = vlan_dev_priv(dev);
-	struct net_device *real_dev = vlan->real_dev;
-
-	dev_mc_unsync(real_dev, dev);
-	dev_uc_unsync(real_dev, dev);
-	if (dev->flags & IFF_ALLMULTI)
-		dev_set_allmulti(real_dev, -1);
-	if (dev->flags & IFF_PROMISC)
-		dev_set_promiscuity(real_dev, -1);
-
-	if (!ether_addr_equal(dev->dev_addr, real_dev->dev_addr))
-		dev_uc_del(real_dev, dev->dev_addr);
-
-	if (!(vlan->flags & VLAN_FLAG_BRIDGE_BINDING))
-		netif_carrier_off(dev);
-	return 0;
-}
-
-static int vlan_dev_set_mac_address(struct net_device *dev, void *p)
-{
-	struct net_device *real_dev = vlan_dev_priv(dev)->real_dev;
-	struct sockaddr *addr = p;
-	int err;
-
-	if (!is_valid_ether_addr(addr->sa_data))
-		return -EADDRNOTAVAIL;
-
-	if (!(dev->flags & IFF_UP))
-		goto out;
-
-	if (!ether_addr_equal(addr->sa_data, real_dev->dev_addr)) {
-		err = dev_uc_add(real_dev, addr->sa_data);
-		if (err < 0)
-			return err;
-	}
-
-	if (!ether_addr_equal(dev->dev_addr, real_dev->dev_addr))
-		dev_uc_del(real_dev, dev->dev_addr);
-
-out:
-	ether_addr_copy(dev->dev_addr, addr->sa_data);
-	return 0;
-}
-
-static int vlan_dev_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
-{
-	struct net_device *real_dev = vlan_dev_priv(dev)->real_dev;
-	const struct net_device_ops *ops = real_dev->netdev_ops;
-	struct ifreq ifrr;
-	int err = -EOPNOTSUPP;
-
-	strncpy(ifrr.ifr_name, real_dev->name, IFNAMSIZ);
-	ifrr.ifr_ifru = ifr->ifr_ifru;
-
-	switch (cmd) {
-	case SIOCSHWTSTAMP:
-		if (!net_eq(dev_net(dev), &init_net))
-			break;
-		fallthrough;
-	case SIOCGMIIPHY:
-	case SIOCGMIIREG:
-	case SIOCSMIIREG:
-	case SIOCGHWTSTAMP:
-		if (netif_device_present(real_dev) && ops->ndo_do_ioctl)
-			err = ops->ndo_do_ioctl(real_dev, &ifrr, cmd);
-		break;
-	}
-
-	if (!err)
-		ifr->ifr_ifru = ifrr.ifr_ifru;
-
-	return err;
-}
-
-static int vlan_dev_neigh_setup(struct net_device *dev, struct neigh_parms *pa)
-{
-	struct net_device *real_dev = vlan_dev_priv(dev)->real_dev;
-	const struct net_device_ops *ops = real_dev->netdev_ops;
-	int err = 0;
-
-	if (netif_device_present(real_dev) && ops->ndo_neigh_setup)
-		err = ops->ndo_neigh_setup(real_dev, pa);
-
-	return err;
-}
-
-#if IS_ENABLED(CONFIG_FCOE)
-static int vlan_dev_fcoe_ddp_setup(struct net_device *dev, u16 xid,
-				   struct scatterlist *sgl, unsigned int sgc)
-{
-	struct net_device *real_dev = vlan_dev_priv(dev)->real_dev;
-	const struct net_device_ops *ops = real_dev->netdev_ops;
-	int rc = 0;
-
-	if (ops->ndo_fcoe_ddp_setup)
-		rc = ops->ndo_fcoe_ddp_setup(real_dev, xid, sgl, sgc);
-
-	return rc;
-}
-
-static int vlan_dev_fcoe_ddp_done(struct net_device *dev, u16 xid)
-{
-	struct net_device *real_dev = vlan_dev_priv(dev)->real_dev;
-	const struct net_device_ops *ops = real_dev->netdev_ops;
-	int len = 0;
-
-	if (ops->ndo_fcoe_ddp_done)
-		len = ops->ndo_fcoe_ddp_done(real_dev, xid);
-
-	return len;
-}
-
-static int vlan_dev_fcoe_enable(struct net_device *dev)
-{
-	struct net_device *real_dev = vlan_dev_priv(dev)->real_dev;
-	const struct net_device_ops *ops = real_dev->netdev_ops;
-	int rc = -EINVAL;
-
-	if (ops->ndo_fcoe_enable)
-		rc = ops->ndo_fcoe_enable(real_dev);
-	return rc;
-}
-
-static int vlan_dev_fcoe_disable(struct net_device *dev)
-{
-	struct net_device *real_dev = vlan_dev_priv(dev)->real_dev;
-	const struct net_device_ops *ops = real_dev->netdev_ops;
-	int rc = -EINVAL;
-
-	if (ops->ndo_fcoe_disable)
-		rc = ops->ndo_fcoe_disable(real_dev);
-	return rc;
-}
-
-static int vlan_dev_fcoe_ddp_target(struct net_device *dev, u16 xid,
-				    struct scatterlist *sgl, unsigned int sgc)
-{
-	struct net_device *real_dev = vlan_dev_priv(dev)->real_dev;
-	const struct net_device_ops *ops = real_dev->netdev_ops;
-	int rc = 0;
-
-	if (ops->ndo_fcoe_ddp_target)
-		rc = ops->ndo_fcoe_ddp_target(real_dev, xid, sgl, sgc);
-
-	return rc;
-}
-#endif
-
-#ifdef NETDEV_FCOE_WWNN
-static int vlan_dev_fcoe_get_wwn(struct net_device *dev, u64 *wwn, int type)
-{
-	struct net_device *real_dev = vlan_dev_priv(dev)->real_dev;
-	const struct net_device_ops *ops = real_dev->netdev_ops;
-	int rc = -EINVAL;
-
-	if (ops->ndo_fcoe_get_wwn)
-		rc = ops->ndo_fcoe_get_wwn(real_dev, wwn, type);
-	return rc;
-}
-#endif
-
-static void vlan_dev_change_rx_flags(struct net_device *dev, int change)
-{
-	struct net_device *real_dev = vlan_dev_priv(dev)->real_dev;
-
-	if (dev->flags & IFF_UP) {
-		if (change & IFF_ALLMULTI)
-			dev_set_allmulti(real_dev, dev->flags & IFF_ALLMULTI ? 1 : -1);
-		if (change & IFF_PROMISC)
-			dev_set_promiscuity(real_dev, dev->flags & IFF_PROMISC ? 1 : -1);
-	}
-}
-
-static void vlan_dev_set_rx_mode(struct net_device *vlan_dev)
-{
-	dev_mc_sync(vlan_dev_priv(vlan_dev)->real_dev, vlan_dev);
-	dev_uc_sync(vlan_dev_priv(vlan_dev)->real_dev, vlan_dev);
-}
-
-/*
- * vlan network devices have devices nesting below it, and are a special
- * "super class" of normal network devices; split their locks off into a
- * separate class since they always nest.
- */
-static struct lock_class_key vlan_netdev_xmit_lock_key;
-static struct lock_class_key vlan_netdev_addr_lock_key;
-
-static void vlan_dev_set_lockdep_one(struct net_device *dev,
-				     struct netdev_queue *txq,
-				     void *unused)
-{
-	lockdep_set_class(&txq->_xmit_lock, &vlan_netdev_xmit_lock_key);
-}
-
-static void vlan_dev_set_lockdep_class(struct net_device *dev)
-{
-	lockdep_set_class(&dev->addr_list_lock,
-			  &vlan_netdev_addr_lock_key);
-	netdev_for_each_tx_queue(dev, vlan_dev_set_lockdep_one, NULL);
-}
-
-static const struct header_ops vlan_header_ops = {
-	.create	 = vlan_dev_hard_header,
-	.parse	 = eth_header_parse,
-};
-
-static int vlan_passthru_hard_header(struct sk_buff *skb, struct net_device *dev,
-				     unsigned short type,
-				     const void *daddr, const void *saddr,
-				     unsigned int len)
-{
-	struct vlan_dev_priv *vlan = vlan_dev_priv(dev);
-	struct net_device *real_dev = vlan->real_dev;
-
-	if (saddr == NULL)
-		saddr = dev->dev_addr;
-
-	return dev_hard_header(skb, real_dev, type, daddr, saddr, len);
-}
-
-static const struct header_ops vlan_passthru_header_ops = {
-	.create	 = vlan_passthru_hard_header,
-	.parse	 = eth_header_parse,
-};
-
-static struct device_type vlan_type = {
-	.name	= "vlan",
-};
-
-static const struct net_device_ops vlan_netdev_ops;
-
-static int vlan_dev_init(struct net_device *dev)
-{
-	struct vlan_dev_priv *vlan = vlan_dev_priv(dev);
-	struct net_device *real_dev = vlan->real_dev;
-
-	netif_carrier_off(dev);
-
-	/* IFF_BROADCAST|IFF_MULTICAST; ??? */
-	dev->flags  = real_dev->flags & ~(IFF_UP | IFF_PROMISC | IFF_ALLMULTI |
-					  IFF_MASTER | IFF_SLAVE);
-	dev->state  = (real_dev->state & ((1<<__LINK_STATE_NOCARRIER) |
-					  (1<<__LINK_STATE_DORMANT))) |
-		      (1<<__LINK_STATE_PRESENT);
-
-	if (vlan->flags & VLAN_FLAG_BRIDGE_BINDING)
-		dev->state |= (1 << __LINK_STATE_NOCARRIER);
-
-	dev->hw_features = NETIF_F_HW_CSUM | NETIF_F_SG |
-			   NETIF_F_FRAGLIST | NETIF_F_GSO_SOFTWARE |
-			   NETIF_F_GSO_ENCAP_ALL |
-			   NETIF_F_HIGHDMA | NETIF_F_SCTP_CRC |
-			   NETIF_F_ALL_FCOE;
-
-	dev->features |= dev->hw_features | NETIF_F_LLTX;
-	dev->gso_max_size = real_dev->gso_max_size;
-	dev->gso_max_segs = real_dev->gso_max_segs;
-	if (dev->features & NETIF_F_VLAN_FEATURES)
-		netdev_warn(real_dev, "VLAN features are set incorrectly.  Q-in-Q configurations may not work correctly.\n");
-
-	dev->vlan_features = real_dev->vlan_features & ~NETIF_F_ALL_FCOE;
-	dev->hw_enc_features = vlan_tnl_features(real_dev);
-	dev->mpls_features = real_dev->mpls_features;
-
-	/* ipv6 shared card related stuff */
-	dev->dev_id = real_dev->dev_id;
-
-	if (is_zero_ether_addr(dev->dev_addr)) {
-		ether_addr_copy(dev->dev_addr, real_dev->dev_addr);
-		dev->addr_assign_type = NET_ADDR_STOLEN;
-	}
-	if (is_zero_ether_addr(dev->broadcast))
-		memcpy(dev->broadcast, real_dev->broadcast, dev->addr_len);
-
-#if IS_ENABLED(CONFIG_FCOE)
-	dev->fcoe_ddp_xid = real_dev->fcoe_ddp_xid;
-#endif
-
-	dev->needed_headroom = real_dev->needed_headroom;
-	if (vlan_hw_offload_capable(real_dev->features, vlan->vlan_proto)) {
-		dev->header_ops      = &vlan_passthru_header_ops;
-		dev->hard_header_len = real_dev->hard_header_len;
-	} else {
-		dev->header_ops      = &vlan_header_ops;
-		dev->hard_header_len = real_dev->hard_header_len + VLAN_HLEN;
-	}
-
-	dev->netdev_ops = &vlan_netdev_ops;
-
-	SET_NETDEV_DEVTYPE(dev, &vlan_type);
-
-	vlan_dev_set_lockdep_class(dev);
-
-	vlan->vlan_pcpu_stats = netdev_alloc_pcpu_stats(struct vlan_pcpu_stats);
-	if (!vlan->vlan_pcpu_stats)
-		return -ENOMEM;
-
-	/* Get vlan's reference to real_dev */
-	dev_hold(real_dev);
-
-	return 0;
-}
-
-/* Note: this function might be called multiple times for the same device. */
-void vlan_dev_uninit(struct net_device *dev)
-{
-	struct vlan_priority_tci_mapping *pm;
-	struct vlan_dev_priv *vlan = vlan_dev_priv(dev);
-	int i;
-
-	for (i = 0; i < ARRAY_SIZE(vlan->egress_priority_map); i++) {
-		while ((pm = vlan->egress_priority_map[i]) != NULL) {
-			vlan->egress_priority_map[i] = pm->next;
-			kfree(pm);
-		}
-	}
-}
-
-static netdev_features_t vlan_dev_fix_features(struct net_device *dev,
-	netdev_features_t features)
-{
-	struct net_device *real_dev = vlan_dev_priv(dev)->real_dev;
-	netdev_features_t old_features = features;
-	netdev_features_t lower_features;
-
-	lower_features = netdev_intersect_features((real_dev->vlan_features |
-						    NETIF_F_RXCSUM),
-						   real_dev->features);
-
-	/* Add HW_CSUM setting to preserve user ability to control
-	 * checksum offload on the vlan device.
-	 */
-	if (lower_features & (NETIF_F_IP_CSUM|NETIF_F_IPV6_CSUM))
-		lower_features |= NETIF_F_HW_CSUM;
-	features = netdev_intersect_features(features, lower_features);
-	features |= old_features & (NETIF_F_SOFT_FEATURES | NETIF_F_GSO_SOFTWARE);
-	features |= NETIF_F_LLTX;
-
-	return features;
-}
-
-static int vlan_ethtool_get_link_ksettings(struct net_device *dev,
-					   struct ethtool_link_ksettings *cmd)
-{
-	const struct vlan_dev_priv *vlan = vlan_dev_priv(dev);
-
-	return __ethtool_get_link_ksettings(vlan->real_dev, cmd);
-}
-
-static void vlan_ethtool_get_drvinfo(struct net_device *dev,
-				     struct ethtool_drvinfo *info)
-{
-	strlcpy(info->driver, vlan_fullname, sizeof(info->driver));
-	strlcpy(info->version, vlan_version, sizeof(info->version));
-	strlcpy(info->fw_version, "N/A", sizeof(info->fw_version));
-}
-
-static int vlan_ethtool_get_ts_info(struct net_device *dev,
-				    struct ethtool_ts_info *info)
-{
-	const struct vlan_dev_priv *vlan = vlan_dev_priv(dev);
-	const struct ethtool_ops *ops = vlan->real_dev->ethtool_ops;
-	struct phy_device *phydev = vlan->real_dev->phydev;
-
-	if (phy_has_tsinfo(phydev)) {
-		return phy_ts_info(phydev, info);
-	} else if (ops->get_ts_info) {
-		return ops->get_ts_info(vlan->real_dev, info);
-	} else {
-		info->so_timestamping = SOF_TIMESTAMPING_RX_SOFTWARE |
-			SOF_TIMESTAMPING_SOFTWARE;
-		info->phc_index = -1;
-	}
-
-	return 0;
-}
-
-static void vlan_dev_get_stats64(struct net_device *dev,
-				 struct rtnl_link_stats64 *stats)
-{
-	struct vlan_pcpu_stats *p;
-	u32 rx_errors = 0, tx_dropped = 0;
-	int i;
-
-	for_each_possible_cpu(i) {
-		u64 rxpackets, rxbytes, rxmulticast, txpackets, txbytes;
-		unsigned int start;
-
-		p = per_cpu_ptr(vlan_dev_priv(dev)->vlan_pcpu_stats, i);
-		do {
-			start = u64_stats_fetch_begin_irq(&p->syncp);
-			rxpackets	= p->rx_packets;
-			rxbytes		= p->rx_bytes;
-			rxmulticast	= p->rx_multicast;
-			txpackets	= p->tx_packets;
-			txbytes		= p->tx_bytes;
-		} while (u64_stats_fetch_retry_irq(&p->syncp, start));
-
-		stats->rx_packets	+= rxpackets;
-		stats->rx_bytes		+= rxbytes;
-		stats->multicast	+= rxmulticast;
-		stats->tx_packets	+= txpackets;
-		stats->tx_bytes		+= txbytes;
-		/* rx_errors & tx_dropped are u32 */
-		rx_errors	+= p->rx_errors;
-		tx_dropped	+= p->tx_dropped;
-	}
-	stats->rx_errors  = rx_errors;
-	stats->tx_dropped = tx_dropped;
-}
-
-#ifdef CONFIG_NET_POLL_CONTROLLER
-static void vlan_dev_poll_controller(struct net_device *dev)
-{
-	return;
-}
-
-static int vlan_dev_netpoll_setup(struct net_device *dev, struct netpoll_info *npinfo)
-{
-	struct vlan_dev_priv *vlan = vlan_dev_priv(dev);
-	struct net_device *real_dev = vlan->real_dev;
-	struct netpoll *netpoll;
-	int err = 0;
-
-	netpoll = kzalloc(sizeof(*netpoll), GFP_KERNEL);
-	err = -ENOMEM;
-	if (!netpoll)
-		goto out;
-
-	err = __netpoll_setup(netpoll, real_dev);
-	if (err) {
-		kfree(netpoll);
-		goto out;
-	}
-
-	vlan->netpoll = netpoll;
-
-out:
-	return err;
-}
-
-static void vlan_dev_netpoll_cleanup(struct net_device *dev)
-{
-	struct vlan_dev_priv *vlan= vlan_dev_priv(dev);
-	struct netpoll *netpoll = vlan->netpoll;
-
-	if (!netpoll)
-		return;
-
-	vlan->netpoll = NULL;
-	__netpoll_free(netpoll);
-}
-#endif /* CONFIG_NET_POLL_CONTROLLER */
-
-static int vlan_dev_get_iflink(const struct net_device *dev)
-{
-	struct net_device *real_dev = vlan_dev_priv(dev)->real_dev;
-
-	return real_dev->ifindex;
-}
-
-static const struct ethtool_ops vlan_ethtool_ops = {
-	.get_link_ksettings	= vlan_ethtool_get_link_ksettings,
-	.get_drvinfo	        = vlan_ethtool_get_drvinfo,
-	.get_link		= ethtool_op_get_link,
-	.get_ts_info		= vlan_ethtool_get_ts_info,
-};
-
-static const struct net_device_ops vlan_netdev_ops = {
-	.ndo_change_mtu		= vlan_dev_change_mtu,
-	.ndo_init		= vlan_dev_init,
-	.ndo_uninit		= vlan_dev_uninit,
-	.ndo_open		= vlan_dev_open,
-	.ndo_stop		= vlan_dev_stop,
-	.ndo_start_xmit =  vlan_dev_hard_start_xmit,
-	.ndo_validate_addr	= eth_validate_addr,
-	.ndo_set_mac_address	= vlan_dev_set_mac_address,
-	.ndo_set_rx_mode	= vlan_dev_set_rx_mode,
-	.ndo_change_rx_flags	= vlan_dev_change_rx_flags,
-	.ndo_do_ioctl		= vlan_dev_ioctl,
-	.ndo_neigh_setup	= vlan_dev_neigh_setup,
-	.ndo_get_stats64	= vlan_dev_get_stats64,
-#if IS_ENABLED(CONFIG_FCOE)
-	.ndo_fcoe_ddp_setup	= vlan_dev_fcoe_ddp_setup,
-	.ndo_fcoe_ddp_done	= vlan_dev_fcoe_ddp_done,
-	.ndo_fcoe_enable	= vlan_dev_fcoe_enable,
-	.ndo_fcoe_disable	= vlan_dev_fcoe_disable,
-	.ndo_fcoe_ddp_target	= vlan_dev_fcoe_ddp_target,
-#endif
-#ifdef NETDEV_FCOE_WWNN
-	.ndo_fcoe_get_wwn	= vlan_dev_fcoe_get_wwn,
-#endif
-#ifdef CONFIG_NET_POLL_CONTROLLER
-	.ndo_poll_controller	= vlan_dev_poll_controller,
-	.ndo_netpoll_setup	= vlan_dev_netpoll_setup,
-	.ndo_netpoll_cleanup	= vlan_dev_netpoll_cleanup,
-#endif
-	.ndo_fix_features	= vlan_dev_fix_features,
-	.ndo_get_iflink		= vlan_dev_get_iflink,
-};
-
-static void vlan_dev_free(struct net_device *dev)
-{
-	struct vlan_dev_priv *vlan = vlan_dev_priv(dev);
-
-	free_percpu(vlan->vlan_pcpu_stats);
-	vlan->vlan_pcpu_stats = NULL;
-
-	/* Get rid of the vlan's reference to real_dev */
-	dev_put(vlan->real_dev);
-}
-
-void vlan_setup(struct net_device *dev)
-{
-	ether_setup(dev);
-
-	dev->priv_flags		|= IFF_802_1Q_VLAN | IFF_NO_QUEUE;
-	dev->priv_flags		|= IFF_UNICAST_FLT;
-	dev->priv_flags		&= ~IFF_TX_SKB_SHARING;
-	netif_keep_dst(dev);
-
-	dev->netdev_ops		= &vlan_netdev_ops;
-	dev->needs_free_netdev	= true;
-	dev->priv_destructor	= vlan_dev_free;
-	dev->ethtool_ops	= &vlan_ethtool_ops;
-
-	dev->min_mtu		= 0;
-	dev->max_mtu		= ETH_MAX_MTU;
-
-	eth_zero_addr(dev->broadcast);
-}
diff --git a/upstream/linux-5.10/net/bridge/br_fdb.c b/upstream/linux-5.10/net/bridge/br_fdb.c
deleted file mode 100755
index 65a6054..0000000
--- a/upstream/linux-5.10/net/bridge/br_fdb.c
+++ /dev/null
@@ -1,1611 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-or-later
-/*
- *	Forwarding database
- *	Linux ethernet bridge
- *
- *	Authors:
- *	Lennert Buytenhek		<buytenh@gnu.org>
- */
-
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/rculist.h>
-#include <linux/spinlock.h>
-#include <linux/times.h>
-#include <linux/netdevice.h>
-#include <linux/etherdevice.h>
-#include <linux/jhash.h>
-#include <linux/random.h>
-#include <linux/slab.h>
-#include <linux/atomic.h>
-#include <asm/unaligned.h>
-#include <linux/if_vlan.h>
-#include <net/switchdev.h>
-#include <trace/events/bridge.h>
-#include "br_private.h"
-#ifdef CONFIG_FASTNAT_MODULE
-#include <net/SI/fast_common.h>
-#include <net/SI/net_track.h>
-#include <net/SI/netioc_proc.h>
-#endif
-
-static const struct rhashtable_params br_fdb_rht_params = {
-	.head_offset = offsetof(struct net_bridge_fdb_entry, rhnode),
-	.key_offset = offsetof(struct net_bridge_fdb_entry, key),
-	.key_len = sizeof(struct net_bridge_fdb_key),
-	.automatic_shrinking = true,
-};
-
-static struct kmem_cache *br_fdb_cache __read_mostly;
-static int fdb_insert(struct net_bridge *br, struct net_bridge_port *source,
-		      const unsigned char *addr, u16 vid);
-static void fdb_notify(struct net_bridge *br,
-		       const struct net_bridge_fdb_entry *, int, bool);
-
-int __init br_fdb_init(void)
-{
-	br_fdb_cache = kmem_cache_create("bridge_fdb_cache",
-					 sizeof(struct net_bridge_fdb_entry),
-					 0,
-					 SLAB_HWCACHE_ALIGN, NULL);
-	if (!br_fdb_cache)
-		return -ENOMEM;
-
-	return 0;
-}
-
-void br_fdb_fini(void)
-{
-	kmem_cache_destroy(br_fdb_cache);
-}
-
-int br_fdb_hash_init(struct net_bridge *br)
-{
-	return rhashtable_init(&br->fdb_hash_tbl, &br_fdb_rht_params);
-}
-
-void br_fdb_hash_fini(struct net_bridge *br)
-{
-	rhashtable_destroy(&br->fdb_hash_tbl);
-}
-
-/* if topology_changing then use forward_delay (default 15 sec)
- * otherwise keep longer (default 5 minutes)
- */
-static inline unsigned long hold_time(const struct net_bridge *br)
-{
-	return br->topology_change ? br->forward_delay : br->ageing_time;
-}
-
-static inline int has_expired(const struct net_bridge *br,
-				  const struct net_bridge_fdb_entry *fdb)
-{
-	return !test_bit(BR_FDB_STATIC, &fdb->flags) &&
-	       !test_bit(BR_FDB_ADDED_BY_EXT_LEARN, &fdb->flags) &&
-	       time_before_eq(fdb->updated + hold_time(br), jiffies);
-}
-
-static void fdb_rcu_free(struct rcu_head *head)
-{
-	struct net_bridge_fdb_entry *ent
-		= container_of(head, struct net_bridge_fdb_entry, rcu);
-	kmem_cache_free(br_fdb_cache, ent);
-}
-
-static struct net_bridge_fdb_entry *fdb_find_rcu(struct rhashtable *tbl,
-						 const unsigned char *addr,
-						 __u16 vid)
-{
-	struct net_bridge_fdb_key key;
-
-	WARN_ON_ONCE(!rcu_read_lock_held());
-
-	key.vlan_id = vid;
-	memcpy(key.addr.addr, addr, sizeof(key.addr.addr));
-
-	return rhashtable_lookup(tbl, &key, br_fdb_rht_params);
-}
-
-/* requires bridge hash_lock */
-static struct net_bridge_fdb_entry *br_fdb_find(struct net_bridge *br,
-						const unsigned char *addr,
-						__u16 vid)
-{
-	struct net_bridge_fdb_entry *fdb;
-
-	lockdep_assert_held_once(&br->hash_lock);
-
-	rcu_read_lock();
-	fdb = fdb_find_rcu(&br->fdb_hash_tbl, addr, vid);
-	rcu_read_unlock();
-
-	return fdb;
-}
-
-struct net_device *br_fdb_find_port(const struct net_device *br_dev,
-				    const unsigned char *addr,
-				    __u16 vid)
-{
-	struct net_bridge_fdb_entry *f;
-	struct net_device *dev = NULL;
-	struct net_bridge *br;
-
-	ASSERT_RTNL();
-
-	if (!netif_is_bridge_master(br_dev))
-		return NULL;
-
-	br = netdev_priv(br_dev);
-	rcu_read_lock();
-	f = br_fdb_find_rcu(br, addr, vid);
-	if (f && f->dst)
-		dev = f->dst->dev;
-	rcu_read_unlock();
-
-	return dev;
-}
-EXPORT_SYMBOL_GPL(br_fdb_find_port);
-
-struct net_bridge_fdb_entry *br_fdb_find_rcu(struct net_bridge *br,
-					     const unsigned char *addr,
-					     __u16 vid)
-{
-	return fdb_find_rcu(&br->fdb_hash_tbl, addr, vid);
-}
-
-/* When a static FDB entry is added, the mac address from the entry is
- * added to the bridge private HW address list and all required ports
- * are then updated with the new information.
- * Called under RTNL.
- */
-static void fdb_add_hw_addr(struct net_bridge *br, const unsigned char *addr)
-{
-	int err;
-	struct net_bridge_port *p;
-
-	ASSERT_RTNL();
-
-	list_for_each_entry(p, &br->port_list, list) {
-		if (!br_promisc_port(p)) {
-			err = dev_uc_add(p->dev, addr);
-			if (err)
-				goto undo;
-		}
-	}
-
-	return;
-undo:
-	list_for_each_entry_continue_reverse(p, &br->port_list, list) {
-		if (!br_promisc_port(p))
-			dev_uc_del(p->dev, addr);
-	}
-}
-
-/* When a static FDB entry is deleted, the HW address from that entry is
- * also removed from the bridge private HW address list and updates all
- * the ports with needed information.
- * Called under RTNL.
- */
-static void fdb_del_hw_addr(struct net_bridge *br, const unsigned char *addr)
-{
-	struct net_bridge_port *p;
-
-	ASSERT_RTNL();
-
-	list_for_each_entry(p, &br->port_list, list) {
-		if (!br_promisc_port(p))
-			dev_uc_del(p->dev, addr);
-	}
-}
-
-static void fdb_delete(struct net_bridge *br, struct net_bridge_fdb_entry *f,
-		       bool swdev_notify)
-{
-	trace_fdb_delete(br, f);
-
-	if (test_bit(BR_FDB_STATIC, &f->flags))
-		fdb_del_hw_addr(br, f->key.addr.addr);
-
-	hlist_del_init_rcu(&f->fdb_node);
-	rhashtable_remove_fast(&br->fdb_hash_tbl, &f->rhnode,
-			       br_fdb_rht_params);
-	fdb_notify(br, f, RTM_DELNEIGH, swdev_notify);
-	call_rcu(&f->rcu, fdb_rcu_free);
-}
-
-/* Delete a local entry if no other port had the same address. */
-static void fdb_delete_local(struct net_bridge *br,
-			     const struct net_bridge_port *p,
-			     struct net_bridge_fdb_entry *f)
-{
-	const unsigned char *addr = f->key.addr.addr;
-	struct net_bridge_vlan_group *vg;
-	const struct net_bridge_vlan *v;
-	struct net_bridge_port *op;
-	u16 vid = f->key.vlan_id;
-
-	/* Maybe another port has same hw addr? */
-	list_for_each_entry(op, &br->port_list, list) {
-		vg = nbp_vlan_group(op);
-		if (op != p && ether_addr_equal(op->dev->dev_addr, addr) &&
-		    (!vid || br_vlan_find(vg, vid))) {
-			f->dst = op;
-			clear_bit(BR_FDB_ADDED_BY_USER, &f->flags);
-			return;
-		}
-	}
-
-	vg = br_vlan_group(br);
-	v = br_vlan_find(vg, vid);
-	/* Maybe bridge device has same hw addr? */
-	if (p && ether_addr_equal(br->dev->dev_addr, addr) &&
-	    (!vid || (v && br_vlan_should_use(v)))) {
-		f->dst = NULL;
-		clear_bit(BR_FDB_ADDED_BY_USER, &f->flags);
-		return;
-	}
-
-	fdb_delete(br, f, true);
-}
-
-void br_fdb_find_delete_local(struct net_bridge *br,
-			      const struct net_bridge_port *p,
-			      const unsigned char *addr, u16 vid)
-{
-	struct net_bridge_fdb_entry *f;
-
-	spin_lock_bh(&br->hash_lock);
-	f = br_fdb_find(br, addr, vid);
-	if (f && test_bit(BR_FDB_LOCAL, &f->flags) &&
-	    !test_bit(BR_FDB_ADDED_BY_USER, &f->flags) && f->dst == p)
-		fdb_delete_local(br, p, f);
-	spin_unlock_bh(&br->hash_lock);
-}
-
-void br_fdb_changeaddr(struct net_bridge_port *p, const unsigned char *newaddr)
-{
-	struct net_bridge_vlan_group *vg;
-	struct net_bridge_fdb_entry *f;
-	struct net_bridge *br = p->br;
-	struct net_bridge_vlan *v;
-
-	spin_lock_bh(&br->hash_lock);
-	vg = nbp_vlan_group(p);
-	hlist_for_each_entry(f, &br->fdb_list, fdb_node) {
-		if (f->dst == p && test_bit(BR_FDB_LOCAL, &f->flags) &&
-		    !test_bit(BR_FDB_ADDED_BY_USER, &f->flags)) {
-			/* delete old one */
-			fdb_delete_local(br, p, f);
-
-			/* if this port has no vlan information
-			 * configured, we can safely be done at
-			 * this point.
-			 */
-			if (!vg || !vg->num_vlans)
-				goto insert;
-		}
-	}
-
-insert:
-	/* insert new address,  may fail if invalid address or dup. */
-	fdb_insert(br, p, newaddr, 0);
-
-	if (!vg || !vg->num_vlans)
-		goto done;
-
-	/* Now add entries for every VLAN configured on the port.
-	 * This function runs under RTNL so the bitmap will not change
-	 * from under us.
-	 */
-	list_for_each_entry(v, &vg->vlan_list, vlist)
-		fdb_insert(br, p, newaddr, v->vid);
-
-done:
-	spin_unlock_bh(&br->hash_lock);
-}
-
-void br_fdb_change_mac_address(struct net_bridge *br, const u8 *newaddr)
-{
-	struct net_bridge_vlan_group *vg;
-	struct net_bridge_fdb_entry *f;
-	struct net_bridge_vlan *v;
-
-	spin_lock_bh(&br->hash_lock);
-
-	/* If old entry was unassociated with any port, then delete it. */
-	f = br_fdb_find(br, br->dev->dev_addr, 0);
-	if (f && test_bit(BR_FDB_LOCAL, &f->flags) &&
-	    !f->dst && !test_bit(BR_FDB_ADDED_BY_USER, &f->flags))
-		fdb_delete_local(br, NULL, f);
-
-	fdb_insert(br, NULL, newaddr, 0);
-	vg = br_vlan_group(br);
-	if (!vg || !vg->num_vlans)
-		goto out;
-	/* Now remove and add entries for every VLAN configured on the
-	 * bridge.  This function runs under RTNL so the bitmap will not
-	 * change from under us.
-	 */
-	list_for_each_entry(v, &vg->vlan_list, vlist) {
-		if (!br_vlan_should_use(v))
-			continue;
-		f = br_fdb_find(br, br->dev->dev_addr, v->vid);
-		if (f && test_bit(BR_FDB_LOCAL, &f->flags) &&
-		    !f->dst && !test_bit(BR_FDB_ADDED_BY_USER, &f->flags))
-			fdb_delete_local(br, NULL, f);
-		fdb_insert(br, NULL, newaddr, v->vid);
-	}
-out:
-	spin_unlock_bh(&br->hash_lock);
-}
-
-void br_fdb_cleanup(struct work_struct *work)
-{
-	struct net_bridge *br = container_of(work, struct net_bridge,
-					     gc_work.work);
-	struct net_bridge_fdb_entry *f = NULL;
-	unsigned long delay = hold_time(br);
-	unsigned long work_delay = delay;
-	unsigned long now = jiffies;
-
-	/* this part is tricky, in order to avoid blocking learning and
-	 * consequently forwarding, we rely on rcu to delete objects with
-	 * delayed freeing allowing us to continue traversing
-	 */
-	rcu_read_lock();
-	hlist_for_each_entry_rcu(f, &br->fdb_list, fdb_node) {
-		unsigned long this_timer = f->updated + delay;
-
-		if (test_bit(BR_FDB_STATIC, &f->flags) ||
-		    test_bit(BR_FDB_ADDED_BY_EXT_LEARN, &f->flags)) {
-			if (test_bit(BR_FDB_NOTIFY, &f->flags)) {
-				if (time_after(this_timer, now))
-					work_delay = min(work_delay,
-							 this_timer - now);
-				else if (!test_and_set_bit(BR_FDB_NOTIFY_INACTIVE,
-							   &f->flags))
-					fdb_notify(br, f, RTM_NEWNEIGH, false);
-			}
-			continue;
-		}
-
-		if (time_after(this_timer, now)) {
-			work_delay = min(work_delay, this_timer - now);
-		} else {
-			spin_lock_bh(&br->hash_lock);
-			if (!hlist_unhashed(&f->fdb_node))
-				fdb_delete(br, f, true);
-			spin_unlock_bh(&br->hash_lock);
-		}
-	}
-	rcu_read_unlock();
-
-	/* Cleanup minimum 10 milliseconds apart */
-	work_delay = max_t(unsigned long, work_delay, msecs_to_jiffies(10));
-	mod_delayed_work(system_long_wq, &br->gc_work, work_delay);
-}
-
-/* Completely flush all dynamic entries in forwarding database.*/
-void br_fdb_flush(struct net_bridge *br)
-{
-	struct net_bridge_fdb_entry *f;
-	struct hlist_node *tmp;
-
-	spin_lock_bh(&br->hash_lock);
-	hlist_for_each_entry_safe(f, tmp, &br->fdb_list, fdb_node) {
-		if (!test_bit(BR_FDB_STATIC, &f->flags))
-			fdb_delete(br, f, true);
-	}
-	spin_unlock_bh(&br->hash_lock);
-}
-
-/* Flush all entries referring to a specific port.
- * if do_all is set also flush static entries
- * if vid is set delete all entries that match the vlan_id
- */
-void br_fdb_delete_by_port(struct net_bridge *br,
-			   const struct net_bridge_port *p,
-			   u16 vid,
-			   int do_all)
-{
-	struct net_bridge_fdb_entry *f;
-	struct hlist_node *tmp;
-
-	spin_lock_bh(&br->hash_lock);
-	hlist_for_each_entry_safe(f, tmp, &br->fdb_list, fdb_node) {
-		if (f->dst != p)
-			continue;
-
-		if (!do_all)
-			if (test_bit(BR_FDB_STATIC, &f->flags) ||
-			    (test_bit(BR_FDB_ADDED_BY_EXT_LEARN, &f->flags) &&
-			     !test_bit(BR_FDB_OFFLOADED, &f->flags)) ||
-			    (vid && f->key.vlan_id != vid))
-				continue;
-
-		if (test_bit(BR_FDB_LOCAL, &f->flags))
-			fdb_delete_local(br, p, f);
-		else
-			fdb_delete(br, f, true);
-	}
-	spin_unlock_bh(&br->hash_lock);
-}
-
-#if IS_ENABLED(CONFIG_ATM_LANE)
-/* Interface used by ATM LANE hook to test
- * if an addr is on some other bridge port */
-int br_fdb_test_addr(struct net_device *dev, unsigned char *addr)
-{
-	struct net_bridge_fdb_entry *fdb;
-	struct net_bridge_port *port;
-	int ret;
-
-	rcu_read_lock();
-	port = br_port_get_rcu(dev);
-	if (!port)
-		ret = 0;
-	else {
-		fdb = br_fdb_find_rcu(port->br, addr, 0);
-		ret = fdb && fdb->dst && fdb->dst->dev != dev &&
-			fdb->dst->state == BR_STATE_FORWARDING;
-	}
-	rcu_read_unlock();
-
-	return ret;
-}
-#endif /* CONFIG_ATM_LANE */
-
-/*
- * Fill buffer with forwarding table records in
- * the API format.
- */
-int br_fdb_fillbuf(struct net_bridge *br, void *buf,
-		   unsigned long maxnum, unsigned long skip)
-{
-	struct net_bridge_fdb_entry *f;
-	struct __fdb_entry *fe = buf;
-	int num = 0;
-
-	memset(buf, 0, maxnum*sizeof(struct __fdb_entry));
-
-	rcu_read_lock();
-	hlist_for_each_entry_rcu(f, &br->fdb_list, fdb_node) {
-		if (num >= maxnum)
-			break;
-
-		if (has_expired(br, f))
-			continue;
-
-		/* ignore pseudo entry for local MAC address */
-		if (!f->dst)
-			continue;
-
-		if (skip) {
-			--skip;
-			continue;
-		}
-
-		/* convert from internal format to API */
-		memcpy(fe->mac_addr, f->key.addr.addr, ETH_ALEN);
-
-		/* due to ABI compat need to split into hi/lo */
-		fe->port_no = f->dst->port_no;
-		fe->port_hi = f->dst->port_no >> 8;
-
-		fe->is_local = test_bit(BR_FDB_LOCAL, &f->flags);
-		if (!test_bit(BR_FDB_STATIC, &f->flags))
-			fe->ageing_timer_value = jiffies_delta_to_clock_t(jiffies - f->updated);
-		++fe;
-		++num;
-	}
-	rcu_read_unlock();
-
-	return num;
-}
-
-static struct net_bridge_fdb_entry *fdb_create(struct net_bridge *br,
-					       struct net_bridge_port *source,
-					       const unsigned char *addr,
-					       __u16 vid,
-					       unsigned long flags)
-{
-	struct net_bridge_fdb_entry *fdb;
-
-	fdb = kmem_cache_alloc(br_fdb_cache, GFP_ATOMIC);
-	if (fdb) {
-		memcpy(fdb->key.addr.addr, addr, ETH_ALEN);
-		fdb->dst = source;
-		fdb->key.vlan_id = vid;
-		fdb->flags = flags;
-		fdb->updated = fdb->used = jiffies;
-		if (rhashtable_lookup_insert_fast(&br->fdb_hash_tbl,
-						  &fdb->rhnode,
-						  br_fdb_rht_params)) {
-			kmem_cache_free(br_fdb_cache, fdb);
-			fdb = NULL;
-		} else {
-			hlist_add_head_rcu(&fdb->fdb_node, &br->fdb_list);
-		}
-	}
-	return fdb;
-}
-
-static int fdb_insert(struct net_bridge *br, struct net_bridge_port *source,
-		  const unsigned char *addr, u16 vid)
-{
-	struct net_bridge_fdb_entry *fdb;
-
-	if (!is_valid_ether_addr(addr))
-		return -EINVAL;
-
-	fdb = br_fdb_find(br, addr, vid);
-	if (fdb) {
-		/* it is okay to have multiple ports with same
-		 * address, just use the first one.
-		 */
-		if (test_bit(BR_FDB_LOCAL, &fdb->flags))
-			return 0;
-		br_warn(br, "adding interface %s with same address as a received packet (addr:%pM, vlan:%u)\n",
-		       source ? source->dev->name : br->dev->name, addr, vid);
-		fdb_delete(br, fdb, true);
-	}
-
-	fdb = fdb_create(br, source, addr, vid,
-			 BIT(BR_FDB_LOCAL) | BIT(BR_FDB_STATIC));
-	if (!fdb)
-		return -ENOMEM;
-
-	fdb_add_hw_addr(br, addr);
-	fdb_notify(br, fdb, RTM_NEWNEIGH, true);
-	return 0;
-}
-
-/* Add entry for local address of interface */
-int br_fdb_insert(struct net_bridge *br, struct net_bridge_port *source,
-		  const unsigned char *addr, u16 vid)
-{
-	int ret;
-
-	spin_lock_bh(&br->hash_lock);
-	ret = fdb_insert(br, source, addr, vid);
-	spin_unlock_bh(&br->hash_lock);
-	return ret;
-}
-
-/* returns true if the fdb was modified */
-static bool __fdb_mark_active(struct net_bridge_fdb_entry *fdb)
-{
-	return !!(test_bit(BR_FDB_NOTIFY_INACTIVE, &fdb->flags) &&
-		  test_and_clear_bit(BR_FDB_NOTIFY_INACTIVE, &fdb->flags));
-}
-
-void br_fdb_update(struct net_bridge *br, struct net_bridge_port *source,
-		   const unsigned char *addr, u16 vid, unsigned long flags)
-{
-	struct net_bridge_fdb_entry *fdb;
-
-	/* some users want to always flood. */
-	if (hold_time(br) == 0)
-		return;
-
-	fdb = fdb_find_rcu(&br->fdb_hash_tbl, addr, vid);
-	if (likely(fdb)) {
-		/* attempt to update an entry for a local interface */
-		if (unlikely(test_bit(BR_FDB_LOCAL, &fdb->flags))) {
-			if (net_ratelimit())
-				br_warn(br, "received packet on %s with own address as source address (addr:%pM, vlan:%u)\n",
-					source->dev->name, addr, vid);
-		} else {
-			unsigned long now = jiffies;
-			bool fdb_modified = false;
-
-			if (now != fdb->updated) {
-				fdb->updated = now;
-				fdb_modified = __fdb_mark_active(fdb);
-			}
-
-			/* fastpath: update of existing entry */
-			if (unlikely(source != fdb->dst &&
-				     !test_bit(BR_FDB_STICKY, &fdb->flags))) {
-				fdb->dst = source;
-				fdb_modified = true;
-				/* Take over HW learned entry */
-				if (unlikely(test_bit(BR_FDB_ADDED_BY_EXT_LEARN,
-						      &fdb->flags)))
-					clear_bit(BR_FDB_ADDED_BY_EXT_LEARN,
-						  &fdb->flags);
-			}
-
-			if (unlikely(test_bit(BR_FDB_ADDED_BY_USER, &flags)))
-				set_bit(BR_FDB_ADDED_BY_USER, &fdb->flags);
-			if (unlikely(fdb_modified)) {
-				trace_br_fdb_update(br, source, addr, vid, flags);
-				fdb_notify(br, fdb, RTM_NEWNEIGH, true);
-			}
-		}
-	} else {
-		spin_lock(&br->hash_lock);
-		fdb = fdb_create(br, source, addr, vid, flags);
-		if (fdb) {
-			trace_br_fdb_update(br, source, addr, vid, flags);
-			fdb_notify(br, fdb, RTM_NEWNEIGH, true);
-		}
-		/* else  we lose race and someone else inserts
-		 * it first, don't bother updating
-		 */
-		spin_unlock(&br->hash_lock);
-	}
-}
-
-static int fdb_to_nud(const struct net_bridge *br,
-		      const struct net_bridge_fdb_entry *fdb)
-{
-	if (test_bit(BR_FDB_LOCAL, &fdb->flags))
-		return NUD_PERMANENT;
-	else if (test_bit(BR_FDB_STATIC, &fdb->flags))
-		return NUD_NOARP;
-	else if (has_expired(br, fdb))
-		return NUD_STALE;
-	else
-		return NUD_REACHABLE;
-}
-
-static int fdb_fill_info(struct sk_buff *skb, const struct net_bridge *br,
-			 const struct net_bridge_fdb_entry *fdb,
-			 u32 portid, u32 seq, int type, unsigned int flags)
-{
-	unsigned long now = jiffies;
-	struct nda_cacheinfo ci;
-	struct nlmsghdr *nlh;
-	struct ndmsg *ndm;
-
-	nlh = nlmsg_put(skb, portid, seq, type, sizeof(*ndm), flags);
-	if (nlh == NULL)
-		return -EMSGSIZE;
-
-	ndm = nlmsg_data(nlh);
-	ndm->ndm_family	 = AF_BRIDGE;
-	ndm->ndm_pad1    = 0;
-	ndm->ndm_pad2    = 0;
-	ndm->ndm_flags	 = 0;
-	ndm->ndm_type	 = 0;
-	ndm->ndm_ifindex = fdb->dst ? fdb->dst->dev->ifindex : br->dev->ifindex;
-	ndm->ndm_state   = fdb_to_nud(br, fdb);
-
-	if (test_bit(BR_FDB_OFFLOADED, &fdb->flags))
-		ndm->ndm_flags |= NTF_OFFLOADED;
-	if (test_bit(BR_FDB_ADDED_BY_EXT_LEARN, &fdb->flags))
-		ndm->ndm_flags |= NTF_EXT_LEARNED;
-	if (test_bit(BR_FDB_STICKY, &fdb->flags))
-		ndm->ndm_flags |= NTF_STICKY;
-
-	if (nla_put(skb, NDA_LLADDR, ETH_ALEN, &fdb->key.addr))
-		goto nla_put_failure;
-	if (nla_put_u32(skb, NDA_MASTER, br->dev->ifindex))
-		goto nla_put_failure;
-	ci.ndm_used	 = jiffies_to_clock_t(now - fdb->used);
-	ci.ndm_confirmed = 0;
-	ci.ndm_updated	 = jiffies_to_clock_t(now - fdb->updated);
-	ci.ndm_refcnt	 = 0;
-	if (nla_put(skb, NDA_CACHEINFO, sizeof(ci), &ci))
-		goto nla_put_failure;
-
-	if (fdb->key.vlan_id && nla_put(skb, NDA_VLAN, sizeof(u16),
-					&fdb->key.vlan_id))
-		goto nla_put_failure;
-
-	if (test_bit(BR_FDB_NOTIFY, &fdb->flags)) {
-		struct nlattr *nest = nla_nest_start(skb, NDA_FDB_EXT_ATTRS);
-		u8 notify_bits = FDB_NOTIFY_BIT;
-
-		if (!nest)
-			goto nla_put_failure;
-		if (test_bit(BR_FDB_NOTIFY_INACTIVE, &fdb->flags))
-			notify_bits |= FDB_NOTIFY_INACTIVE_BIT;
-
-		if (nla_put_u8(skb, NFEA_ACTIVITY_NOTIFY, notify_bits)) {
-			nla_nest_cancel(skb, nest);
-			goto nla_put_failure;
-		}
-
-		nla_nest_end(skb, nest);
-	}
-
-	nlmsg_end(skb, nlh);
-	return 0;
-
-nla_put_failure:
-	nlmsg_cancel(skb, nlh);
-	return -EMSGSIZE;
-}
-
-static inline size_t fdb_nlmsg_size(void)
-{
-	return NLMSG_ALIGN(sizeof(struct ndmsg))
-		+ nla_total_size(ETH_ALEN) /* NDA_LLADDR */
-		+ nla_total_size(sizeof(u32)) /* NDA_MASTER */
-		+ nla_total_size(sizeof(u16)) /* NDA_VLAN */
-		+ nla_total_size(sizeof(struct nda_cacheinfo))
-		+ nla_total_size(0) /* NDA_FDB_EXT_ATTRS */
-		+ nla_total_size(sizeof(u8)); /* NFEA_ACTIVITY_NOTIFY */
-}
-
-static void fdb_notify(struct net_bridge *br,
-		       const struct net_bridge_fdb_entry *fdb, int type,
-		       bool swdev_notify)
-{
-	struct net *net = dev_net(br->dev);
-	struct sk_buff *skb;
-	int err = -ENOBUFS;
-
-	if (swdev_notify)
-		br_switchdev_fdb_notify(fdb, type);
-
-	skb = nlmsg_new(fdb_nlmsg_size(), GFP_ATOMIC);
-	if (skb == NULL)
-		goto errout;
-
-	err = fdb_fill_info(skb, br, fdb, 0, 0, type, 0);
-	if (err < 0) {
-		/* -EMSGSIZE implies BUG in fdb_nlmsg_size() */
-		WARN_ON(err == -EMSGSIZE);
-		kfree_skb(skb);
-		goto errout;
-	}
-	rtnl_notify(skb, net, 0, RTNLGRP_NEIGH, NULL, GFP_ATOMIC);
-	return;
-errout:
-	rtnl_set_sk_err(net, RTNLGRP_NEIGH, err);
-}
-
-/* Dump information about entries, in response to GETNEIGH */
-int br_fdb_dump(struct sk_buff *skb,
-		struct netlink_callback *cb,
-		struct net_device *dev,
-		struct net_device *filter_dev,
-		int *idx)
-{
-	struct net_bridge *br = netdev_priv(dev);
-	struct net_bridge_fdb_entry *f;
-	int err = 0;
-
-	if (!(dev->priv_flags & IFF_EBRIDGE))
-		return err;
-
-	if (!filter_dev) {
-		err = ndo_dflt_fdb_dump(skb, cb, dev, NULL, idx);
-		if (err < 0)
-			return err;
-	}
-
-	rcu_read_lock();
-	hlist_for_each_entry_rcu(f, &br->fdb_list, fdb_node) {
-		if (*idx < cb->args[2])
-			goto skip;
-		if (filter_dev && (!f->dst || f->dst->dev != filter_dev)) {
-			if (filter_dev != dev)
-				goto skip;
-			/* !f->dst is a special case for bridge
-			 * It means the MAC belongs to the bridge
-			 * Therefore need a little more filtering
-			 * we only want to dump the !f->dst case
-			 */
-			if (f->dst)
-				goto skip;
-		}
-		if (!filter_dev && f->dst)
-			goto skip;
-
-		err = fdb_fill_info(skb, br, f,
-				    NETLINK_CB(cb->skb).portid,
-				    cb->nlh->nlmsg_seq,
-				    RTM_NEWNEIGH,
-				    NLM_F_MULTI);
-		if (err < 0)
-			break;
-skip:
-		*idx += 1;
-	}
-	rcu_read_unlock();
-
-	return err;
-}
-
-int br_fdb_get(struct sk_buff *skb,
-	       struct nlattr *tb[],
-	       struct net_device *dev,
-	       const unsigned char *addr,
-	       u16 vid, u32 portid, u32 seq,
-	       struct netlink_ext_ack *extack)
-{
-	struct net_bridge *br = netdev_priv(dev);
-	struct net_bridge_fdb_entry *f;
-	int err = 0;
-
-	rcu_read_lock();
-	f = br_fdb_find_rcu(br, addr, vid);
-	if (!f) {
-		NL_SET_ERR_MSG(extack, "Fdb entry not found");
-		err = -ENOENT;
-		goto errout;
-	}
-
-	err = fdb_fill_info(skb, br, f, portid, seq,
-			    RTM_NEWNEIGH, 0);
-errout:
-	rcu_read_unlock();
-	return err;
-}
-
-/* returns true if the fdb is modified */
-static bool fdb_handle_notify(struct net_bridge_fdb_entry *fdb, u8 notify)
-{
-	bool modified = false;
-
-	/* allow to mark an entry as inactive, usually done on creation */
-	if ((notify & FDB_NOTIFY_INACTIVE_BIT) &&
-	    !test_and_set_bit(BR_FDB_NOTIFY_INACTIVE, &fdb->flags))
-		modified = true;
-
-	if ((notify & FDB_NOTIFY_BIT) &&
-	    !test_and_set_bit(BR_FDB_NOTIFY, &fdb->flags)) {
-		/* enabled activity tracking */
-		modified = true;
-	} else if (!(notify & FDB_NOTIFY_BIT) &&
-		   test_and_clear_bit(BR_FDB_NOTIFY, &fdb->flags)) {
-		/* disabled activity tracking, clear notify state */
-		clear_bit(BR_FDB_NOTIFY_INACTIVE, &fdb->flags);
-		modified = true;
-	}
-
-	return modified;
-}
-
-/* Update (create or replace) forwarding database entry */
-static int fdb_add_entry(struct net_bridge *br, struct net_bridge_port *source,
-			 const u8 *addr, struct ndmsg *ndm, u16 flags, u16 vid,
-			 struct nlattr *nfea_tb[])
-{
-	bool is_sticky = !!(ndm->ndm_flags & NTF_STICKY);
-	bool refresh = !nfea_tb[NFEA_DONT_REFRESH];
-	struct net_bridge_fdb_entry *fdb;
-	u16 state = ndm->ndm_state;
-	bool modified = false;
-	u8 notify = 0;
-
-	/* If the port cannot learn allow only local and static entries */
-	if (source && !(state & NUD_PERMANENT) && !(state & NUD_NOARP) &&
-	    !(source->state == BR_STATE_LEARNING ||
-	      source->state == BR_STATE_FORWARDING))
-		return -EPERM;
-
-	if (!source && !(state & NUD_PERMANENT)) {
-		pr_info("bridge: RTM_NEWNEIGH %s without NUD_PERMANENT\n",
-			br->dev->name);
-		return -EINVAL;
-	}
-
-	if (is_sticky && (state & NUD_PERMANENT))
-		return -EINVAL;
-
-	if (nfea_tb[NFEA_ACTIVITY_NOTIFY]) {
-		notify = nla_get_u8(nfea_tb[NFEA_ACTIVITY_NOTIFY]);
-		if ((notify & ~BR_FDB_NOTIFY_SETTABLE_BITS) ||
-		    (notify & BR_FDB_NOTIFY_SETTABLE_BITS) == FDB_NOTIFY_INACTIVE_BIT)
-			return -EINVAL;
-	}
-
-	fdb = br_fdb_find(br, addr, vid);
-	if (fdb == NULL) {
-		if (!(flags & NLM_F_CREATE))
-			return -ENOENT;
-
-		fdb = fdb_create(br, source, addr, vid, 0);
-		if (!fdb)
-			return -ENOMEM;
-
-		modified = true;
-	} else {
-		if (flags & NLM_F_EXCL)
-			return -EEXIST;
-
-		if (fdb->dst != source) {
-			fdb->dst = source;
-			modified = true;
-		}
-	}
-
-	if (fdb_to_nud(br, fdb) != state) {
-		if (state & NUD_PERMANENT) {
-			set_bit(BR_FDB_LOCAL, &fdb->flags);
-			if (!test_and_set_bit(BR_FDB_STATIC, &fdb->flags))
-				fdb_add_hw_addr(br, addr);
-		} else if (state & NUD_NOARP) {
-			clear_bit(BR_FDB_LOCAL, &fdb->flags);
-			if (!test_and_set_bit(BR_FDB_STATIC, &fdb->flags))
-				fdb_add_hw_addr(br, addr);
-		} else {
-			clear_bit(BR_FDB_LOCAL, &fdb->flags);
-			if (test_and_clear_bit(BR_FDB_STATIC, &fdb->flags))
-				fdb_del_hw_addr(br, addr);
-		}
-
-		modified = true;
-	}
-
-	if (is_sticky != test_bit(BR_FDB_STICKY, &fdb->flags)) {
-		change_bit(BR_FDB_STICKY, &fdb->flags);
-		modified = true;
-	}
-
-	if (fdb_handle_notify(fdb, notify))
-		modified = true;
-
-	set_bit(BR_FDB_ADDED_BY_USER, &fdb->flags);
-
-	fdb->used = jiffies;
-	if (modified) {
-		if (refresh)
-			fdb->updated = jiffies;
-		fdb_notify(br, fdb, RTM_NEWNEIGH, true);
-	}
-
-	return 0;
-}
-
-static int __br_fdb_add(struct ndmsg *ndm, struct net_bridge *br,
-			struct net_bridge_port *p, const unsigned char *addr,
-			u16 nlh_flags, u16 vid, struct nlattr *nfea_tb[],
-			struct netlink_ext_ack *extack)
-{
-	int err = 0;
-
-	if (ndm->ndm_flags & NTF_USE) {
-		if (!p) {
-			pr_info("bridge: RTM_NEWNEIGH %s with NTF_USE is not supported\n",
-				br->dev->name);
-			return -EINVAL;
-		}
-		if (!nbp_state_should_learn(p))
-			return 0;
-
-		local_bh_disable();
-		rcu_read_lock();
-		br_fdb_update(br, p, addr, vid, BIT(BR_FDB_ADDED_BY_USER));
-		rcu_read_unlock();
-		local_bh_enable();
-	} else if (ndm->ndm_flags & NTF_EXT_LEARNED) {
-		if (!p && !(ndm->ndm_state & NUD_PERMANENT)) {
-			NL_SET_ERR_MSG_MOD(extack,
-					   "FDB entry towards bridge must be permanent");
-			return -EINVAL;
-		}
-		err = br_fdb_external_learn_add(br, p, addr, vid, true);
-	} else {
-		spin_lock_bh(&br->hash_lock);
-		err = fdb_add_entry(br, p, addr, ndm, nlh_flags, vid, nfea_tb);
-		spin_unlock_bh(&br->hash_lock);
-	}
-
-	return err;
-}
-
-static const struct nla_policy br_nda_fdb_pol[NFEA_MAX + 1] = {
-	[NFEA_ACTIVITY_NOTIFY]	= { .type = NLA_U8 },
-	[NFEA_DONT_REFRESH]	= { .type = NLA_FLAG },
-};
-
-/* Add new permanent fdb entry with RTM_NEWNEIGH */
-int br_fdb_add(struct ndmsg *ndm, struct nlattr *tb[],
-	       struct net_device *dev,
-	       const unsigned char *addr, u16 vid, u16 nlh_flags,
-	       struct netlink_ext_ack *extack)
-{
-	struct nlattr *nfea_tb[NFEA_MAX + 1], *attr;
-	struct net_bridge_vlan_group *vg;
-	struct net_bridge_port *p = NULL;
-	struct net_bridge_vlan *v;
-	struct net_bridge *br = NULL;
-	int err = 0;
-
-	trace_br_fdb_add(ndm, dev, addr, vid, nlh_flags);
-
-	if (!(ndm->ndm_state & (NUD_PERMANENT|NUD_NOARP|NUD_REACHABLE))) {
-		pr_info("bridge: RTM_NEWNEIGH with invalid state %#x\n", ndm->ndm_state);
-		return -EINVAL;
-	}
-
-	if (is_zero_ether_addr(addr)) {
-		pr_info("bridge: RTM_NEWNEIGH with invalid ether address\n");
-		return -EINVAL;
-	}
-
-	if (dev->priv_flags & IFF_EBRIDGE) {
-		br = netdev_priv(dev);
-		vg = br_vlan_group(br);
-	} else {
-		p = br_port_get_rtnl(dev);
-		if (!p) {
-			pr_info("bridge: RTM_NEWNEIGH %s not a bridge port\n",
-				dev->name);
-			return -EINVAL;
-		}
-		br = p->br;
-		vg = nbp_vlan_group(p);
-	}
-
-	if (tb[NDA_FDB_EXT_ATTRS]) {
-		attr = tb[NDA_FDB_EXT_ATTRS];
-		err = nla_parse_nested(nfea_tb, NFEA_MAX, attr,
-				       br_nda_fdb_pol, extack);
-		if (err)
-			return err;
-	} else {
-		memset(nfea_tb, 0, sizeof(struct nlattr *) * (NFEA_MAX + 1));
-	}
-
-	if (vid) {
-		v = br_vlan_find(vg, vid);
-		if (!v || !br_vlan_should_use(v)) {
-			pr_info("bridge: RTM_NEWNEIGH with unconfigured vlan %d on %s\n", vid, dev->name);
-			return -EINVAL;
-		}
-
-		/* VID was specified, so use it. */
-		err = __br_fdb_add(ndm, br, p, addr, nlh_flags, vid, nfea_tb,
-				   extack);
-	} else {
-		err = __br_fdb_add(ndm, br, p, addr, nlh_flags, 0, nfea_tb,
-				   extack);
-		if (err || !vg || !vg->num_vlans)
-			goto out;
-
-		/* We have vlans configured on this port and user didn't
-		 * specify a VLAN.  To be nice, add/update entry for every
-		 * vlan on this port.
-		 */
-		list_for_each_entry(v, &vg->vlan_list, vlist) {
-			if (!br_vlan_should_use(v))
-				continue;
-			err = __br_fdb_add(ndm, br, p, addr, nlh_flags, v->vid,
-					   nfea_tb, extack);
-			if (err)
-				goto out;
-		}
-	}
-
-out:
-	return err;
-}
-
-static int fdb_delete_by_addr_and_port(struct net_bridge *br,
-				       const struct net_bridge_port *p,
-				       const u8 *addr, u16 vlan)
-{
-	struct net_bridge_fdb_entry *fdb;
-
-	fdb = br_fdb_find(br, addr, vlan);
-	if (!fdb || fdb->dst != p)
-		return -ENOENT;
-
-	fdb_delete(br, fdb, true);
-
-	return 0;
-}
-
-static int __br_fdb_delete(struct net_bridge *br,
-			   const struct net_bridge_port *p,
-			   const unsigned char *addr, u16 vid)
-{
-	int err;
-
-	spin_lock_bh(&br->hash_lock);
-	err = fdb_delete_by_addr_and_port(br, p, addr, vid);
-	spin_unlock_bh(&br->hash_lock);
-
-	return err;
-}
-
-/* Remove neighbor entry with RTM_DELNEIGH */
-int br_fdb_delete(struct ndmsg *ndm, struct nlattr *tb[],
-		  struct net_device *dev,
-		  const unsigned char *addr, u16 vid)
-{
-	struct net_bridge_vlan_group *vg;
-	struct net_bridge_port *p = NULL;
-	struct net_bridge_vlan *v;
-	struct net_bridge *br;
-	int err;
-
-	if (dev->priv_flags & IFF_EBRIDGE) {
-		br = netdev_priv(dev);
-		vg = br_vlan_group(br);
-	} else {
-		p = br_port_get_rtnl(dev);
-		if (!p) {
-			pr_info("bridge: RTM_DELNEIGH %s not a bridge port\n",
-				dev->name);
-			return -EINVAL;
-		}
-		vg = nbp_vlan_group(p);
-		br = p->br;
-	}
-
-	if (vid) {
-		v = br_vlan_find(vg, vid);
-		if (!v) {
-			pr_info("bridge: RTM_DELNEIGH with unconfigured vlan %d on %s\n", vid, dev->name);
-			return -EINVAL;
-		}
-
-		err = __br_fdb_delete(br, p, addr, vid);
-	} else {
-		err = -ENOENT;
-		err &= __br_fdb_delete(br, p, addr, 0);
-		if (!vg || !vg->num_vlans)
-			return err;
-
-		list_for_each_entry(v, &vg->vlan_list, vlist) {
-			if (!br_vlan_should_use(v))
-				continue;
-			err &= __br_fdb_delete(br, p, addr, v->vid);
-		}
-	}
-
-	return err;
-}
-
-int br_fdb_sync_static(struct net_bridge *br, struct net_bridge_port *p)
-{
-	struct net_bridge_fdb_entry *f, *tmp;
-	int err = 0;
-
-	ASSERT_RTNL();
-
-	/* the key here is that static entries change only under rtnl */
-	rcu_read_lock();
-	hlist_for_each_entry_rcu(f, &br->fdb_list, fdb_node) {
-		/* We only care for static entries */
-		if (!test_bit(BR_FDB_STATIC, &f->flags))
-			continue;
-		err = dev_uc_add(p->dev, f->key.addr.addr);
-		if (err)
-			goto rollback;
-	}
-done:
-	rcu_read_unlock();
-
-	return err;
-
-rollback:
-	hlist_for_each_entry_rcu(tmp, &br->fdb_list, fdb_node) {
-		/* We only care for static entries */
-		if (!test_bit(BR_FDB_STATIC, &tmp->flags))
-			continue;
-		if (tmp == f)
-			break;
-		dev_uc_del(p->dev, tmp->key.addr.addr);
-	}
-
-	goto done;
-}
-
-void br_fdb_unsync_static(struct net_bridge *br, struct net_bridge_port *p)
-{
-	struct net_bridge_fdb_entry *f;
-
-	ASSERT_RTNL();
-
-	rcu_read_lock();
-	hlist_for_each_entry_rcu(f, &br->fdb_list, fdb_node) {
-		/* We only care for static entries */
-		if (!test_bit(BR_FDB_STATIC, &f->flags))
-			continue;
-
-		dev_uc_del(p->dev, f->key.addr.addr);
-	}
-	rcu_read_unlock();
-}
-
-int br_fdb_external_learn_add(struct net_bridge *br, struct net_bridge_port *p,
-			      const unsigned char *addr, u16 vid,
-			      bool swdev_notify)
-{
-	struct net_bridge_fdb_entry *fdb;
-	bool modified = false;
-	int err = 0;
-
-	trace_br_fdb_external_learn_add(br, p, addr, vid);
-
-	spin_lock_bh(&br->hash_lock);
-
-	fdb = br_fdb_find(br, addr, vid);
-	if (!fdb) {
-		unsigned long flags = BIT(BR_FDB_ADDED_BY_EXT_LEARN);
-
-		if (swdev_notify)
-			flags |= BIT(BR_FDB_ADDED_BY_USER);
-
-		if (!p)
-			flags |= BIT(BR_FDB_LOCAL);
-
-		fdb = fdb_create(br, p, addr, vid, flags);
-		if (!fdb) {
-			err = -ENOMEM;
-			goto err_unlock;
-		}
-		fdb_notify(br, fdb, RTM_NEWNEIGH, swdev_notify);
-	} else {
-		fdb->updated = jiffies;
-
-		if (fdb->dst != p) {
-			fdb->dst = p;
-			modified = true;
-		}
-
-		if (test_bit(BR_FDB_ADDED_BY_EXT_LEARN, &fdb->flags)) {
-			/* Refresh entry */
-			fdb->used = jiffies;
-		} else if (!test_bit(BR_FDB_ADDED_BY_USER, &fdb->flags)) {
-			/* Take over SW learned entry */
-			set_bit(BR_FDB_ADDED_BY_EXT_LEARN, &fdb->flags);
-			modified = true;
-		}
-
-		if (swdev_notify)
-			set_bit(BR_FDB_ADDED_BY_USER, &fdb->flags);
-
-		if (!p)
-			set_bit(BR_FDB_LOCAL, &fdb->flags);
-
-		if (modified)
-			fdb_notify(br, fdb, RTM_NEWNEIGH, swdev_notify);
-	}
-
-err_unlock:
-	spin_unlock_bh(&br->hash_lock);
-
-	return err;
-}
-
-int br_fdb_external_learn_del(struct net_bridge *br, struct net_bridge_port *p,
-			      const unsigned char *addr, u16 vid,
-			      bool swdev_notify)
-{
-	struct net_bridge_fdb_entry *fdb;
-	int err = 0;
-
-	spin_lock_bh(&br->hash_lock);
-
-	fdb = br_fdb_find(br, addr, vid);
-	if (fdb && test_bit(BR_FDB_ADDED_BY_EXT_LEARN, &fdb->flags))
-		fdb_delete(br, fdb, swdev_notify);
-	else
-		err = -ENOENT;
-
-	spin_unlock_bh(&br->hash_lock);
-
-	return err;
-}
-
-void br_fdb_offloaded_set(struct net_bridge *br, struct net_bridge_port *p,
-			  const unsigned char *addr, u16 vid, bool offloaded)
-{
-	struct net_bridge_fdb_entry *fdb;
-
-	spin_lock_bh(&br->hash_lock);
-
-	fdb = br_fdb_find(br, addr, vid);
-	if (fdb && offloaded != test_bit(BR_FDB_OFFLOADED, &fdb->flags))
-		change_bit(BR_FDB_OFFLOADED, &fdb->flags);
-
-	spin_unlock_bh(&br->hash_lock);
-}
-#ifdef CONFIG_FASTNAT_MODULE
-int fast_br(struct sk_buff *skb)
-{
-	//lium_fastnat_del
-	const unsigned char *dest = NULL;
-	struct hlist_head *head;
-	struct net_bridge_fdb_entry *fdb;
-	struct net_bridge_port *p;
-	struct net_bridge *br;
-	u16 vid = 0;
-	int ntl_port_id = 0xff;
-	
-	if(!skb->dev)
-	{
-		//print_sun(SUN_DBG, "fast_br  skb->dev err skb->dev = %x\n", skb->dev);
-		return 0;
-	}
-					  
-	/*if(skb->mac_header == 0 || skb->mac_header == ~0U)
-		panic("driver  not  set  macheader !!!\n");*/
-					  
-	dest = eth_hdr(skb)->h_dest;
-				  
-
-	p = br_port_get_rtnl(skb->dev);
-	if (p == NULL || p->br == NULL)		  
-	{
-		//print_sun(SUN_DBG, "fast_br  br_port_get_rtnl err p = %x\n", p);
-		return 0;
-	}
-				  
-	br = p->br;
-	br_should_learn(p, skb, &vid);
-
-	//head = &br->hash[br_mac_hash(dest, vid)];
-					  
-	//if((fdb = fdb_find_rcu(head, dest,vid)) != NULL)
-	if((fdb = fdb_find_rcu(&(br->fdb_hash_tbl), dest,vid)) != NULL)
-	{
-		
-		if((!(test_bit(BR_FDB_LOCAL, &fdb->flags))) && fdb->dst && fdb->dst->dev && 
-			(((fdb->dst->flags & BR_HAIRPIN_MODE) || skb->dev != fdb->dst->dev) &&fdb->dst->state == BR_STATE_FORWARDING)) 
-		{
-			fast_tcpdump(skb);
-			if(fastnat_level == FAST_NET_DEVICE){
-				skb->dev->stats.rx_packets++;
-				skb->dev->stats.rx_bytes += skb->len;
-			}
-			skb->dev = fdb->dst->dev;
-			skb->isFastbr = 1;
-			fdb->updated = jiffies;
-			skb->now_location |= FASTBR_SUCC;
-			skb_rest_data_byproto(skb);
-
-			br_dev_queue_push_xmit(NULL, NULL, skb);
-			return 1;
-		}
-			  
-		
-		if((!(test_bit(BR_FDB_LOCAL, &fdb->flags))) && fdb->dst && fdb->dst->dev && 
-			(skb->dev == fdb->dst->dev) && fdb->dst->state == BR_STATE_FORWARDING)
-		{
-			skbinfo_add(NULL,SKB_LOOP);
-			skb->dev->stats.rx_dropped++;
-			//print_sun(SUN_ERR,"fast_br loop data discarded, dev:%s \n", skb->dev->name);
-			kfree_skb(skb);
-			return 1;
-		}
-	}
-	//print_sun(SUN_DBG, "fast_br  fdb_find_rcu err fdb = %x \n",fdb);
-	
-	return 0;
-}
-EXPORT_SYMBOL(fast_br);
-
-
-
-struct net_device *getbrport_bydst(struct net_device *dev,unsigned char *dest)
-{
-	//lium_fastnat_del
-	//struct hlist_head *head;
-	struct net_bridge_fdb_entry *fdb;
-	struct net_bridge_port *p;
-	struct net_bridge *br;
-	struct net_bridge_vlan_group *vg;
-	__u16 vid;
-#if FASTNAT_DEBUG
-	printk("getbrport_bydst() begine");
-#endif
-
-	if (dev == NULL || !(dev->priv_flags & IFF_EBRIDGE))
-		return dev;
-#if FASTNAT_DEBUG
-	printk("getbrport_bydst() 1");
-#endif
-	br = netdev_priv(dev);
-	vg = br_vlan_group_rcu(br);
-	vid = br_get_pvid(vg);
-#if FASTNAT_DEBUG
-	printk("getbrport_bydst() 2");
-#endif
-	
-	//head = &br->hash[br_mac_hash(dest,vid)];
-#if FASTNAT_DEBUG
-	printk("getbrport_bydst() 3");
-#endif
-	//if((fdb = fdb_find_rcu(head, dest,vid)) != NULL)
-	if((fdb = fdb_find_rcu(&(br->fdb_hash_tbl), dest,vid)) != NULL)
-	{
-	
-		if((!(test_bit(BR_FDB_LOCAL, &fdb->flags))) && fdb->dst && fdb->dst->dev && 
-			(fdb->dst->state == BR_STATE_FORWARDING)) //(fdb->dst->flags & BR_HAIRPIN_MODE)
-		{
-			return fdb->dst->dev;
-		}
-	}
-	return dev;
-}
-
-extern void fast_tcpdump(struct sk_buff *skb);
-extern struct neigh_table arp_tbl;
-extern char default_route_name[IFNAMSIZ];
-char default_br_name[IFNAMSIZ] = {0};
-int fast_fwd_ip4addr_conflict(struct sk_buff *skb)
-{
-	struct iphdr *iph = ip_hdr(skb);
-	__be32 saddr,daddr,wan_ip,br_ip=0,br_bcast=0;
-	struct net_device* in_dev = NULL;
-	struct net_device* out_dev = NULL;
-	struct ethhdr *eth;
-	struct net_bridge_port *p;
-	struct net_bridge *br = NULL;
-	struct net_device *default_route_dev;
-	struct net_device *default_br_dev;
-	struct in_device *ip_ptr;
-
-	if(iph->version != 4 || skb->indev == NULL)
-	{
-		return 0;
-	}
-	default_route_dev = dev_get_by_name(&init_net, default_route_name);
-	if(default_route_dev == NULL)
-	{
-		return 0;
-	}
-	ip_ptr = __in_dev_get_rtnl(default_route_dev);
-	if(ip_ptr && ip_ptr->ifa_list)
-	{
-		wan_ip = ip_ptr->ifa_list->ifa_local;
-	}
-	else
-	{
-		default_br_name[0] = 0;
-		dev_put(default_route_dev);
-		return 0;
-	}
-	in_dev = skb->indev;
-	saddr = iph->saddr;
-	daddr = iph->daddr;
-	p = br_port_get_rtnl(in_dev);
-	if (p != NULL) 		
-	{
-		br = p->br;
-		if (br && br->dev && strncmp(br->dev->name, default_br_name, IFNAMSIZ-1))
-		{
-			strncpy(default_br_name, br->dev->name, IFNAMSIZ-1);
-		}
-	}
-	default_br_dev = dev_get_by_name(&init_net, default_br_name);
-	if(default_br_dev)
-	{
-		ip_ptr = __in_dev_get_rtnl(default_br_dev);
-		if(ip_ptr && ip_ptr->ifa_list)
-		{
-			br_ip = ip_ptr->ifa_list->ifa_local;
-			br_bcast = ip_ptr->ifa_list->ifa_broadcast;
-		}
-	}
-	else
-	{
-		dev_put(default_route_dev);
-		return 0;
-	}
-	if(br && ((daddr == br_ip) || (daddr == br_bcast) || (daddr == wan_ip)))
-	{
-		//printk("@!@1saddr=%08x,daddr=%08x,br_ip=%08x,br_bcast=%08x,wan_ip=%08x\n",saddr, daddr,  br_ip, br_bcast, wan_ip);
-		if (IPPROTO_UDP == iph->protocol)
-		{
-			struct udphdr *udph = (struct udphdr *)(skb->data + iph->ihl * 4);
-			if(udph->source == 0x4300 || udph->source == 0x4400
-				|| udph->dest == 0x4300 || udph->dest == 0x4400)
-			{
-				//printk("@!@dhcp packet\n");
-				dev_put(default_route_dev);
-				dev_put(default_br_dev);
-				return 0;
-			}
-		}
-		out_dev = default_route_dev;
-		skb_push(skb, ETH_HLEN);
-		eth = (struct ethhdr*)(skb->data);
-		memcpy(eth->h_source, in_dev->dev_addr, ETH_ALEN);
-		memcpy(eth->h_dest, out_dev->dev_addr, ETH_ALEN);
-		fast_tcpdump(skb);
-		skb->dev = out_dev;
-	}
-	else if(in_dev == default_route_dev && ((saddr == br_ip) || (saddr == br_bcast) || (saddr == wan_ip)))
-	{
-		struct neighbour *neigh  = neigh_lookup(&arp_tbl, &daddr, default_br_dev);
-		//printk("@!@2saddr=%08x,daddr=%08x,neigh=%08x,wan_ip=%08x\n",saddr, daddr, neigh, wan_ip);
-		if(neigh)
-		{
-			//printk("@!@neigh=%s\n",neigh->dev->name);
-			out_dev = getbrport_bydst(default_br_dev,neigh->ha);
-			if(out_dev)
-			{
-				//printk("@!@out_dev=%s\n",out_dev->name);
-				skb_push(skb, ETH_HLEN);
-				eth = (struct ethhdr*)(skb->data);
-				memcpy(eth->h_source, out_dev->dev_addr, ETH_ALEN);
-				memcpy(eth->h_dest, neigh->ha, ETH_ALEN);
-				//printk("@!@mac=%02x %02x %02x %02x %02x %02x\n",eth->h_dest[0],eth->h_dest[1],eth->h_dest[2],eth->h_dest[3],eth->h_dest[4],eth->h_dest[5]);
-			}
-			neigh_release(neigh);
-		}
-		if(out_dev == NULL)
-		{
-			printk("@!@dev: br port not found\n");
-			dev_put(default_route_dev);
-			dev_put(default_br_dev);
-			return 0;
-		}
-		fast_tcpdump(skb);
-		skb->dev = out_dev;
-	}
-	else
-	{
-		dev_put(default_route_dev);
-		dev_put(default_br_dev);
-		return 0;
-	}
-		
-	eth->h_proto = htons(ETH_P_IP);
-	skb->now_location |= FASTNAT_SUCC;
-	dev_queue_xmit(skb);
-	
-	dev_put(default_route_dev);
-	dev_put(default_br_dev);
-	return 1;
-}
-
-int fast_for_multicast(struct sk_buff *skb)
-{
-	if (skb->indev && !strncmp(skb->indev->name, default_route_name, IFNAMSIZ-1))
-	{
-		struct net_device* dev = NULL;
-		struct net_bridge *br;
-		struct net_bridge_port *p;
-		
-		dev = dev_get_by_name(&init_net, default_br_name);
-		if (dev == NULL || !(dev->priv_flags & IFF_EBRIDGE))
-		{
-			printk("@!@dev: br not found\n");
-			return 0;
-		}
-		br = (struct net_bridge *)netdev_priv(dev);
-		p = br_get_port(br, 1);
-		if(p && p->dev)
-		{
-			struct ethhdr *eth;
-			struct iphdr *iph = ip_hdr(skb);
-			
-			skb_push(skb, ETH_HLEN);
-			eth = (struct ethhdr *)skb->data;
-			memcpy(eth->h_source, p->dev->dev_addr, ETH_ALEN); 
-			ip_eth_mc_map(iph->daddr, eth->h_dest);
-			eth->h_proto = htons(ETH_P_IP);
-			skb->dev = p->dev;
-			skb->now_location |= FASTNAT_SUCC;
-			dev_queue_xmit(skb);
-			dev_put(dev);
-			return 1;
-		}
-		dev_put(dev);
-	}
-	return 0;
-}
-#endif
-
-void br_fdb_clear_offload(const struct net_device *dev, u16 vid)
-{
-	struct net_bridge_fdb_entry *f;
-	struct net_bridge_port *p;
-
-	ASSERT_RTNL();
-
-	p = br_port_get_rtnl(dev);
-	if (!p)
-		return;
-
-	spin_lock_bh(&p->br->hash_lock);
-	hlist_for_each_entry(f, &p->br->fdb_list, fdb_node) {
-		if (f->dst == p && f->key.vlan_id == vid)
-			clear_bit(BR_FDB_OFFLOADED, &f->flags);
-	}
-	spin_unlock_bh(&p->br->hash_lock);
-}
-EXPORT_SYMBOL_GPL(br_fdb_clear_offload);
diff --git a/upstream/linux-5.10/net/core/SI/net_other.c b/upstream/linux-5.10/net/core/SI/net_other.c
deleted file mode 100755
index a6748c7..0000000
--- a/upstream/linux-5.10/net/core/SI/net_other.c
+++ /dev/null
@@ -1,1222 +0,0 @@
-#include <linux/module.h>
-#include <linux/kernel.h>
-#include <linux/fs.h>
-#include <linux/init.h>
-#include <linux/delay.h>
-#include <linux/irq.h>
-#include <linux/netdevice.h>
-#include <linux/etherdevice.h>
-#include <linux/if_bridge.h>
-#include <asm/uaccess.h>
-#include <asm/irq.h>
-#include <asm/io.h>
-#include <linux/device.h>
-#include <linux/string.h>
-#include <linux/skbuff.h>
-#include <linux/jhash.h>
-#include <linux/ip.h>
-#include <linux/ipv6.h>
-#include <linux/udp.h>
-#include <linux/tcp.h>
-#include <linux/icmp.h>
-#include <net/ip.h>
-#include "../../bridge/br_private.h"
-#include <net/arp.h>
-#include <net/SI/netioc_proc.h>
-#include <net/SI/netioctl.h>
-#include <net/SI/errno_track.h>
-#include <net/ipv6.h>
-#include <net/SI/net_other.h>
-#include <linux/if_arp.h>
-
-#ifdef NETLINK_UC 
-#include "../../../../drivers/net/fast6/fast6.h"
-#include "../../../../drivers/net/fastnat/fastnat.h"
-#else
-#include <net/SI/fastnat.h>
-#include <net/SI/fast6.h>
-#endif
-#ifdef CONFIG_SPEED_OPT
-extern size_t skb_sys_pool_size(const void *ptr);
-#endif
-unsigned long check_pkt = 0;
-EXPORT_SYMBOL(check_pkt);
-int set_print_pkt = 0;  /*´òÓ¡°üÄÚÈÝ*/
-
-/*¼Ç¼±¨ÎijöÈë¶ÔÐÅÏ¢*/
-struct check_pkt_info skb_insert_info = {0};
-EXPORT_SYMBOL(skb_insert_info);
-struct check_pkt_info skb_unlink_info = {0};
-EXPORT_SYMBOL(skb_unlink_info);
-
-/*½«skbÌø×ªµ½ARP/IPV4Í·²¿,·µ»ØÍøÂç²ãЭÒ飬²»¸Ä±äskb*/
-static unsigned char* skip_mac_header(struct sk_buff *skb, unsigned short *protocol)
-{
-    __be16 next_pro;
-    unsigned char *curr_ptr = NULL;
-
-    if(skb_mac_header_was_set(skb))
-    {
-        curr_ptr = skb_mac_header(skb);
-        curr_ptr += ETH_HLEN;
-        next_pro = *(__be16 *)(curr_ptr - 2);
-    }
-    else
-    {
-        curr_ptr = skb->data + ETH_HLEN;
-        next_pro = *(__be16 *)(curr_ptr - 2);
-    }
-
-again:
-    if (htons(ETH_P_IP) == next_pro || htons(ETH_P_ARP) == next_pro)
-    {
-        *protocol = ntohs(next_pro);
-        return curr_ptr;
-    }
-    //vlan
-    else if (next_pro == cpu_to_be16(ETH_P_8021Q))
-    {
-        curr_ptr += VLAN_HLEN;
-        next_pro = *((__be16 *)(curr_ptr - 2));
-        goto again;
-    }
-    //pppoe 
-    else if (next_pro == htons(ETH_P_PPP_SES))
-    {
-        if (*(curr_ptr + 6) == 0x00 && (*(curr_ptr + 7) == 0x21 || *(curr_ptr + 7) == 0x57))
-        {
-            next_pro = htons(ETH_P_IP);
-            curr_ptr += PPPOE_HEADER_LEN;
-            goto again;
-        }
-    }    
-    return NULL;
-}
-
-
-/*½âÎöDHCPÑ¡Ïî×ֶΣ¬»ñÈ¡¶ÔÓ¦message type,ûÓнâoverload*/
-unsigned char *dhcp_option_get(unsigned char *data, int data_len, int code)
-{
-	unsigned char *opt_ptr;
-	int len;
-	int overload = 0;
-
-	opt_ptr = data;
-	while (1) {
-		if (data_len <= 0)
-			return NULL;
-
-		if (opt_ptr[0] == DHCP_PADDING) 
-        {
-			data_len--;
-			opt_ptr++;
-			continue;
-		}
-		if (opt_ptr[0] == DHCP_END)
-			return NULL;
-        
-		len = 2 + opt_ptr[1];
-		data_len -= len;
-		if (data_len < 0)
-			return NULL;
-
-		if (opt_ptr[0] == code)
-			return opt_ptr + 2;
-
-		opt_ptr += len;
-	}
-
-	return NULL;
-}
-
-
-void print_check_pkt_info(struct check_pkt_info *pkt_info, int num)
-{
-    int i = 0;
-    
-    num = num > MAX_PKT_NUM ? MAX_PKT_NUM : num;
-    printk("\n%10s %10s %10s\n", "Protocol", "MsgType", "Time");
-    for(i = 0; i < num; i++)
-    {
-        printk("%10s %10d %10lu\n", 
-            proto_str[pkt_info->info[i].proto_type], 
-            pkt_info->info[i].msg_type, 
-            pkt_info->info[i].time);
-    }
-}
-EXPORT_SYMBOL(print_check_pkt_info);
-
-/*¼ì²âÊý¾Ý°üÊÇ·ñÊÇÖ¸¶¨ÀàÐ͵İü²¢¼Ç¼ʱ¼ä*/
-/*pkt_info·µ»Ø½âÎöµÄЭÒéÏà¹ØÄÚÈÝ*/
-int check_packet_type(struct sk_buff *skb, struct pkt_info *pkt_info)
-{
-    struct iphdr *ip_hdr = NULL;
-    struct icmphdr *icmphdr = NULL;
-    struct udphdr *udp_hdr = NULL;
-    struct arphdr *arp_hdr = NULL;
-    unsigned char *data_ptr = NULL;
-    unsigned char *opt_ptr = NULL;
-    unsigned short data_len = 0;
-    unsigned short protocol = 0;
-
-    if(0 == check_pkt)
-        return 0;
-
-    memset(pkt_info, 0, sizeof(struct pkt_info));
-
-    /*Ìø¹ýMACÍ·£¬µ½ARP/IPV4*/
-    data_ptr = skip_mac_header(skb, &protocol);
-    if(NULL == data_ptr)
-        return 0;
-
-    if(ETH_P_ARP == protocol)
-    {
-        if(test_bit(PKT_TYPE_ARP_BIT, &check_pkt))
-        {
-            arp_hdr = (struct arphdr *)data_ptr;
-            pkt_info->proto_type = PROTO_TYPE_ARP;
-            pkt_info->msg_type   = ntohs(arp_hdr->ar_op);
-            pkt_info->time       = jiffies;
-            return 1;
-        }
-    }
-    else if(ETH_P_IP == protocol)
-    {   
-        ip_hdr = (struct iphdr *)data_ptr;
-
-        /*¶ÔÓÚ·ÖÆ¬°ü£¬Ö»Ê¶±ðÊׯ¬*/
-        if(ntohs(ip_hdr->frag_off) & IP_OFFSET)
-        {
-            return 0;
-        }
-
-        data_len = ntohs(ip_hdr->tot_len);
-
-        switch(ip_hdr->protocol)
-        {
-            case IPPROTO_UDP:
-                udp_hdr = (struct udphdr *)((unsigned char *)ip_hdr + ip_hdr->ihl * 4);
-                if(test_bit(PKT_TYPE_DHCP_BIT, &check_pkt))
-                {
-                    if((DHCP_CLIENT_PORT == ntohs(udp_hdr->source) && DHCP_SERVER_PORT == ntohs(udp_hdr->dest)) || 
-                        (DHCP_CLIENT_PORT == ntohs(udp_hdr->dest) && DHCP_SERVER_PORT == ntohs(udp_hdr->source)))
-                    {
-                        /*Ìø¹ýUDPÍ·*/
-                        data_ptr = (unsigned char *)udp_hdr + 8;
-                        /*Ìø¹ýDHCP¹Ì¶¨Í·*/
-                        data_ptr += 236;
-                        /*Ìø¹ýmagic cookies*/
-                        data_ptr += 4;
-                        data_len = data_len - ip_hdr->ihl * 4 - 8 - 236 - 4;
-
-                        /*È¡DHCPµÄmessage type*/
-                        opt_ptr = dhcp_option_get(data_ptr, data_len, DHCP_MSG_TYPE);
-                        if(opt_ptr)
-                            pkt_info->msg_type = opt_ptr[0];
-
-                        pkt_info->proto_type = PROTO_TYPE_DHCP;
-                        pkt_info->time = jiffies;
-
-                        return 1;
-                    }
-                }
-                break;
-                
-            case IPPROTO_TCP:
-                break;
-            case IPPROTO_ICMP:
-                icmphdr = (struct icmphdr *)((unsigned char *)ip_hdr + ip_hdr->ihl * 4);
-                if(test_bit(PKT_TYPE_PING_BIT, &check_pkt))
-                {
-                    if(ICMP_ECHOREPLY == icmphdr->type || ICMP_ECHO == icmphdr->type)
-                    {
-                        pkt_info->proto_type = PROTO_TYPE_PING;
-                        pkt_info->msg_type   = icmphdr->type;
-                        pkt_info->time       = jiffies;
-                        return 1;
-                    }
-                }
-                break;
-            default:
-                break;
-        }
-    }
-
-    return 0;
-}
-EXPORT_SYMBOL(check_packet_type);
-
-
-#ifdef CONFIG_NETCTL
-
-void net_print_packet(unsigned char *data, unsigned int len, int flag)
-{
-    int i = 0;
-
-    if(set_print_pkt && net_ratelimit())
-    {
-        if(0 == flag)
-            printk("\nrecv packet:\n");
-        else if(1 == flag)
-            printk("\nsend packet:\n");
-        else
-            printk("\nprint packet:\n");
-
-        for(i = 0; i < len; i++)
-        {
-            if(i % 16 == 0)
-                printk("\n");
-            printk("%2x ", data[i]);
-        }
-    }
-}
-
-
-void track_netlink(struct sk_buff *skb,u32 group)
-{
-	struct nlmsghdr *nlh;	
-
-	nlh = (struct nlmsghdr*)(skb->data);	
-	net_run_track(PRT_RTNL_SEND,"rtnetlink_send,msg_type =%d;group = %d",nlh->nlmsg_type,group);
-}
-
-
-/*½«MACµØÖ·ºÍnet_deviceµØÖ·½øÐбȽÏ
-  ³öÏֵij¡¾°£º
-  1.Êý¾Ý»Ø»·
-  2.Êý¾ÝͨѶÕý³££¬Á½¸öCPEÓÐÏàͬµÄMACµØÖ·
- */
-void check_macaddr_only(unsigned char *ha, unsigned char ha_len)
-{
-	struct net_device *dev;
-	unsigned char addr_len = 0;
-	unsigned char addr[ETH_ALEN] = {0};
-	
-	if(0 == addr_check)
-	{
-		return;
-	}
-	
-	read_lock(&dev_base_lock);
-
-	for_each_netdev(&init_net, dev)
-	{
-		if(dev->addr_len != ha_len)
-		{
-			//ÐÞ¸ÄÔ­Òò£ºÄ¬ÈÏsit0µÄaddr_len=4ÇÒdev_addrĬÈÏΪȫ0£¬µ±ÆäËûÉ豸macµØÖ·[0:3]ҲȫΪ0ʱ¾Í»á¶ÏÑÔËÀ»ú¡£
-			continue;
-		}
-		//addr_len = dev->addr_len > ha_len ? ha_len : dev->addr_len;
-		addr_len = ha_len;
-		if((addr_len > 0) && !memcmp(dev->dev_addr, ha, addr_len))
-		{
-			addr_len = addr_len > ETH_ALEN ? ETH_ALEN : addr_len;
-			memcpy(addr, ha, addr_len);
-			
-			panic("check_macaddr_only: mac address of pc is same as the device, dev name: %s, mac %x:%x:%x:%x:%x:%x\n", 
-				dev->name, addr[0], addr[1], addr[2], addr[3], addr[4], addr[5]);		
-			read_unlock(&dev_base_lock);
-			return;
-		}
-	}
-
-	read_unlock(&dev_base_lock);
-
-	return;
-}
-
-
-void skbinfo_add(unsigned char *addr,unsigned int skbinfo_type)
-{
-	struct sk_buff *skb;
-	skbinfo_dbg[skbinfo_type] ++;
-/*
-	if(skb_max_panic && skbinfo_type == SKB_TYPE_ALL)
-	{
-		//´Ë´¦Î´ÓÃspinlock±£»¤£¬Ò»µ©Ê¹Óøù¦ÄÜ£¬ÐèÒªÓÃËø±£»¤
-		if(skbinfo_dbg[SKB_TYPE_ALL] > skb_max_panic)
-			panic("too much skb is alloced,pleasw check data_leak ");
-	}
-*/
-	if(skbinfo_type == SKB_TYPE_DATA)
-	{
-		skb = (struct sk_buff *)addr;
-        //if(skb->isExtern == 0)
-		//    skbinfo_dbg[SKB_DATA_BYTES] += ksize(skb->head);
-        //else
-            skbinfo_dbg[SKB_DATA_BYTES] += skb->data - skb->head + skb->len;
-	}
-	if(skbinfo_type==(skb_info_track&0X7F)) 
-	{ 
-		printk("net resource monitor!!!");   
-		dump_stack(); 
-		if(skb_info_track&0X80)
-			panic("net team dbg panic !!!");
-	} 
-	
-}
-
-
-void skbinfo_del(unsigned char *addr,unsigned int skbinfo_type)
-{
-	struct sk_buff *skb;
-	skbinfo_dbg[skbinfo_type] --;
-	
-	if(skbinfo_type == SKB_TYPE_DATA)
-	{
-		skb = (struct sk_buff *)addr;
-        //if(skb->isExtern == 0)
-		//    skbinfo_dbg[SKB_DATA_BYTES] -= ksize(skb->head);
-        //else
-            skbinfo_dbg[SKB_DATA_BYTES] -= skb->data - skb->head + skb->len;
-	}
-
-}
-
-void netruninfo_add(unsigned char *addr,unsigned int info_type)
-{
-	netruninfo_dbg[info_type] ++;	
-	if(info_type==(net_info_track&0X7F)) 
-	{ 
-		printk("net resource monitor!!!");   
-		dump_stack(); 
-		if(net_info_track&0X80)
-			panic("net team dbg panic !!!");
-	} 
-}
-
-void netruninfo_del(unsigned char *addr,unsigned int info_type)
-{
-	netruninfo_dbg[info_type] --;
-}
-static int filter(void *start1, void *start2, unsigned int len)
-{
-    int i = 100, ret = -1;
-    int *p = start1, *q = start2;
-
-    do {
-        if (!memcmp(p, q, len)) {
-            ret = 0;
-            break;
-        }
-        ++p;
-    }while(i--);
-
-    return ret;
-}
-
-//¸Ãº¯ÊýÓÃÓÚÅжÏskb->network_headerÓÐЧÐÔ£¬·µ»Ø»ñÈ¡ÓÐЧµÄipÍ·
-unsigned char * check_skb_for_dump(struct sk_buff *skb, int *mark)
-{
-    unsigned char * mac_head, *net_head, *tsp_head;
-    //dri->net 0; net->dri 1;
-    mac_head = skb_mac_head(skb);
-    net_head = skb_network_head(skb);
-    tsp_head = skb_transport_head(skb);
-    *mark = 0;
-    if (!skb->dev){
-   //     printk("skb->dev = NULL err in %s.\n", __func__);
-        return NULL;
-    }
-    if (skb->data == NULL){
-        printk("skb->data = NULL err in %s.\n", __func__);
-        return NULL;
-    }
-    if (skb->data == mac_head){
-        if(net_head && net_head < (mac_head + skb->dev->hard_header_len )){
-            *mark = -2;
-            return mac_head + skb->dev->hard_header_len;
-        }
-        *mark = 2;
-         return mac_head + skb->dev->hard_header_len;  
-    }
-    else if(skb->data == net_head){
-        if(mac_head && net_head < (mac_head + skb->dev->hard_header_len )){
-            *mark = -23;
-            return mac_head + skb->dev->hard_header_len;
-        }
-        if(tsp_head && net_head < (tsp_head - 20)){
-            *mark = -3;
-            return net_head;
-        }
-        *mark = 3;
-        return net_head;
-    }
-    else if(skb->data == tsp_head ){
-        if((!net_head) || (net_head && net_head < (tsp_head - 20))){
-            *mark = -4;
-            return NULL;
-        }
-        *mark = 4;
-        return net_head;
-    }
-    else{
-     //   printk("unexpected err in %s\n", __func__);
-        return NULL;
-    }
-        
-}
-
-extern struct nf_conntrack_tuple tuple_info;
-extern int getconn_type;
-
-//ÔÚskb_release_dataʱ½øÐÐÄÚÈݵÄ×Ö·û´®Æ¥Å䣬²¢µ¼³öÕ»¹ì¼£
-void dump_net_stack(struct sk_buff *skb, unsigned int offset)
-{
-    if(getconn_type != 8 && getconn_type != 10)
-        return;
-    int mark = 0;
-    struct iphdr *iphv4;
-    struct ipv6hdr *iphv6;
-    unsigned char *tsp_start = NULL;
-    unsigned char *iph = check_skb_for_dump(skb, &mark);
-    
-    if(getconn_type == 10 && iph){
-        if (skb->now_location & FASTNAT_SUCC){
-            printk("skb->len = %d now_location = %d\n", skb->len, skb->now_location);
-            struct tcphdr *th = (struct tcphdr *)(iph + 20);
-            printk("th->seq=%lu, th->sport=%ld, th->dport=%ld\n", htonl(th->seq), htons(th->source), htons(th->dest));
-            goto out;
-        }
-        return;
-    }
-    if(iph){
-        if((iph[0] & 0xf0) == 0x40){
-            iphv4 = (struct iphdr*)iph;
-            if(tuple_info.dst.protonum && tuple_info.dst.protonum != iphv4->protocol){
-                return;
-            }
-            if(tuple_info.dst.u3.ip && memcmp(&tuple_info.dst.u3.ip, &iphv4->daddr, 4) != 0){
-                return;
-            }
-            if(tuple_info.src.u3.ip && memcmp(&tuple_info.src.u3.ip, &iphv4->saddr, 4) != 0){
-                return;
-            }
-            tsp_start = (unsigned char*)iphv4 + (iphv4->ihl << 2);
-        }
-        else if((iph[0] & 0xf0) == 0x60){
-            iphv6 = (struct ipv6hdr*)iph;
-            if(tuple_info.dst.protonum && tuple_info.dst.protonum != iphv6->nexthdr){
-                return;
-            }
-            if(tuple_info.dst.u3.ip && memcmp(&tuple_info.dst.u3.in6, &iphv6->daddr, 16) != 0){
-                return;
-            }
-            if(tuple_info.src.u3.ip && memcmp(&tuple_info.src.u3.in6, &iphv6->saddr, 16) != 0){
-                return;
-            }
-            tsp_start = (unsigned char*)iphv6 + 40;
-        }
-    }
-    //Èç¹ûÊÍ·ÅʱֻÓд«ÊäͷûÓÐÍøÂçÍ·£¬Ö»±È½ÏÓÐЧport
-    if(mark == -4){
-        tsp_start = skb->data; 
-    }
-    if(tsp_start == NULL)
-        return;
-    
-    if(tuple_info.src.u.all && memcmp(&tuple_info.src.u.all, tsp_start, 2) != 0){
-        return;
-    }
-    if(tuple_info.dst.u.all && memcmp(&tuple_info.dst.u.all, tsp_start + 2, 2) != 0) {
-        return;
-    }
-    
-    printk("free skb match mark = %d:\n", mark);
-    if(tuple_info.dst.protonum && mark != -4)
-        printk("protonum = %d ",tuple_info.dst.protonum);
-    if(tuple_info.src.u3.ip && mark != -4){
-        if(iph && (iph[0] & 0xf0) == 0x40){
-            printk("sip: %08x ", ntohl(tuple_info.src.u3.ip));
-        }else if(iph && (iph[0] & 0xf0) == 0x60){
-            printk("sip: %x:%x:%x:%x:%x:%x:%x:%x ", ntohs(tuple_info.src.u3.in6.s6_addr16[0]), ntohs(tuple_info.src.u3.in6.s6_addr16[1]), ntohs(tuple_info.src.u3.in6.s6_addr16[2]), ntohs(tuple_info.src.u3.in6.s6_addr16[3]), 
-                    ntohs(tuple_info.src.u3.in6.s6_addr16[4]), ntohs(tuple_info.src.u3.in6.s6_addr16[5]), ntohs(tuple_info.src.u3.in6.s6_addr16[6]), ntohs(tuple_info.src.u3.in6.s6_addr16[7]));
-        }
-    }
-    if(tuple_info.src.u.all){
-        printk("sport : %d ", ntohs(tuple_info.src.u.all));
-    }
-    if(tuple_info.dst.u3.ip && mark != -4){
-        if(iph && (iph[0] & 0xf0) == 0x40){
-            printk("%dip: %08x ", ntohl(tuple_info.dst.u3.ip));
-        }else if(iph && (iph[0] & 0xf0) == 0x60){
-            printk("dip: %x:%x:%x:%x:%x:%x:%x:%x ", ntohs(tuple_info.dst.u3.in6.s6_addr16[0]), ntohs(tuple_info.dst.u3.in6.s6_addr16[1]), ntohs(tuple_info.dst.u3.in6.s6_addr16[2]), ntohs(tuple_info.dst.u3.in6.s6_addr16[3]), 
-                    ntohs(tuple_info.dst.u3.in6.s6_addr16[4]), ntohs(tuple_info.dst.u3.in6.s6_addr16[5]), ntohs(tuple_info.dst.u3.in6.s6_addr16[6]), ntohs(tuple_info.dst.u3.in6.s6_addr16[7]));
-        }
-    }
-    if(tuple_info.dst.u.all) {
-        printk("dport : %d ", ntohs(tuple_info.dst.u.all));
-    }
-    printk("\n");
-   // if (skb_dump_len) 
-      //  if(!filter((skb->head + offset), skb_dump_str, skb_dump_len))
-out:
-    dump_stack();
-}
-
-
-
-/***********************************************************************************************************/
-/*ÒÔÏÂÎªÍøÂç×éÐÂÔöµÄ½Ó¿Ú£¬ÓÉÓÚñîºÏÇ¿£¬²»ÄܶÀÁ¢³ÉÔ´Îļþ£¬µ«Ðè×¢ÊÍÇå³þ*/
-/***********************************************************************************************************/
-
-extern int set_tcpdump;
-extern char br_name[];
-
-//ÐèÒªskb->mac_headerÒѾ­¸³Öµ
-unsigned int get_network_head_len(struct sk_buff *skb)
-{
-#ifdef NET_SKBUFF_DATA_USES_OFFSET
-    unsigned char *buf = (unsigned char *)skb->head + skb->mac_header + ETH_HLEN;
-#else
-    unsigned char *buf = (unsigned char *)skb->mac_header + ETH_HLEN;
-#endif
-
-    if ((((unsigned)buf[0]) & 0xF0) == 0x40)
-        return 20; //ipv4 ipÍ·³¤¶È20
-        
-    if ((((unsigned)buf[0]) & 0xF0) == 0x60)
-        return 40; //ipv6 ipÍ·³¤¶È40
-        
-    return 20; //ĬÈÏipv4´¦Àí
-}
-
-//ËïȪÌí¼Ó£¬²Î¿¼__netif_receive_skb£¬ÓÃÓÚץȡ½ÓÊÕ·½ÏòµÄ¶¨ÖƱ¨ÎÄ£¬ÈçfastnatµÈÈë¿Ú±¨ÎÄ£¬°´ÕÕtcpdumpÕý³£·½Ê½Ê¹Óü´¿É£¬µ«»áÓ°ÏìÐÔÄÜ£¬ËùÒÔÐèÒªÓÃproc±äÁ¿¿ØÖÆ
-void tcpdumpin_sq(struct sk_buff *skb)
-{
-    unsigned char        *data_priv;
-    struct packet_type *ptype;
-    __be16 type;
-    unsigned int len_priv;
-    int dev_flag = 0;
-
-    if (!(set_tcpdump & 1))
-        return;
-    
-    if (list_empty(&ptype_all))
-    {
-        return;
-    }
-
-    //±£´æµ±Ç°±¨ÎĵÄÊý¾ÝÖ¡Í·ÐÅÏ¢£¬×¥°ü½áÊøºó»Ö¸´
-    data_priv = skb->data;
-    len_priv = skb->len;
-    
-    //½«³¤¶ÈºÍdataÖ¸ÏòMACÍ·£¬¸ù¾Ýµ±Ç°Çé¿ö¶¯Ì¬µ÷Õû
-    if (skb->mac_header == 0 || skb->mac_header == ~0U)
-    {
-        skb_reset_mac_header(skb);
-        skb->network_header = skb->mac_header + ETH_HLEN;
-        skb->transport_header = skb->network_header + get_network_head_len(skb);
-    }
-    else if (skb->network_header == 0 || skb->network_header == ~0U)
-    {
-        skb->network_header = skb->mac_header + ETH_HLEN;
-        skb->transport_header = skb->network_header + get_network_head_len(skb);
-        skb_reset_data_bymachd(skb);
-        skb_push(skb, ETH_HLEN);
-    }
-    else if (skb->transport_header == 0 || skb->transport_header == ~0U)
-    {
-        skb->network_header = skb->mac_header + ETH_HLEN;
-        skb->transport_header = skb->network_header + get_network_head_len(skb);
-        skb_reset_data_bymachd(skb);
-        skb_push(skb, ETH_HLEN);
-    }
-    
-    //devΪ¿Õʱ£¬ÎªÁ˱£Ö¤ËùÓе㶼ÄÜ×¥µ½±¨£¬½«°ÑdevÉèΪptype->dev
-    if (skb->dev == NULL)
-    {
-        dev_flag = 1;
-    }
-
-    rcu_read_lock();
-    list_for_each_entry_rcu(ptype, &ptype_all, list) {
-        //Èë¿ÚskbÊÇÍêÕûµÄMACÖ¡£¬²»ÐèÒª½øÐÐÈÎºÎÆ«ÒƵ÷Õû
-        if ((!ptype->dev || !skb->dev || ptype->dev == skb->dev))  // && (ptype->func == packet_rcv)
-        {
-            //packet_rcvÄÚ²¿ÒªÇóskb->dev±ØÐ벻Ϊ¿Õ£¬ËùÒÔ´Ë´¦½øÐÐÁËС¼¼ÇÉ£¬µ«¿ÉÄÜÓжàÓà°ü±»×¥µ½
-            if(skb->dev == NULL && ptype->dev)
-                skb->dev = ptype->dev;
-            else if(skb->dev == NULL)
-                skb->dev = __dev_get_by_name(&init_net, br_name);
-
-            atomic_inc(&skb->users);
-            //track_add(skb, 0, USER_INFO, 0);
-            ptype->func(skb, skb->dev, ptype, skb->dev);
-            if(dev_flag == 1)
-                skb->dev = NULL;
-        }
-    }
-    rcu_read_unlock();
-
-    //»Ö¸´skb³õʼ״̬
-    skb->data = data_priv;
-    skb->len = len_priv;
-    if(dev_flag == 1)
-        skb->dev = NULL;
-}
-
-//ËïȪÌí¼Ó£¬²Î¿¼dev_queue_xmit_nit£¬ÓÃÓÚץȡ·¢ËÍ·½ÏòµÄ¶¨ÖƱ¨ÎÄ£¬ÈçfastnatµÈ³ö¿Ú±¨ÎÄ£¬°´ÕÕtcpdumpÕý³£·½Ê½Ê¹Óü´¿É£¬µ«»áÓ°ÏìÐÔÄÜ£¬ËùÒÔÐèÒªÓÃproc±äÁ¿¿ØÖÆ
-void tcpdumpout_sq(struct sk_buff *skb)
-{
-    struct packet_type *ptype;
-    struct sk_buff *skb2 = NULL;
-    int dev_flag = 0;
-    sk_buff_data_t        transport_header;
-    sk_buff_data_t        network_header;
-    sk_buff_data_t        mac_header;
-    unsigned char        *data_priv;
-    unsigned int len_priv;
-    
-    if (!(set_tcpdump & 2))
-        return;
-    
-    if (list_empty(&ptype_all))
-    {
-        return;
-    }
-
-    //±£´æµ±Ç°±¨ÎĵÄÊý¾ÝÖ¡Í·ÐÅÏ¢£¬×¥°ü½áÊøºó»Ö¸´
-    data_priv = skb->data;
-    len_priv = skb->len;
-    transport_header = skb->transport_header;
-    network_header = skb->network_header;
-    mac_header = skb->mac_header;
-
-    if (skb->mac_header == 0 || skb->mac_header == ~0U)
-    {
-        skb_reset_mac_header(skb);
-        skb->network_header = skb->mac_header + ETH_HLEN;
-        skb->transport_header = skb->network_header + get_network_head_len(skb);
-    }
-    else if (skb->network_header == 0 || skb->network_header == ~0U)
-    {
-        skb->network_header = skb->mac_header + ETH_HLEN;
-        skb->transport_header = skb->network_header + get_network_head_len(skb);
-        skb_reset_data_bymachd(skb);
-        skb_push(skb, ETH_HLEN);
-    }
-    else if (skb->transport_header == 0 || skb->transport_header == ~0U)
-    {
-        skb->transport_header = skb->network_header + get_network_head_len(skb);
-        skb_reset_data_bymachd(skb);
-        skb_push(skb, ETH_HLEN);
-    }
-
-    //TCP²ãÃæÉÐδÀ´µÃ¼°¸³Öµ³ö¿Údev£¬´Ë´¦Ç¿Ðи³ÖµÎªbr0£¬ËùÒÔÒªÇó×¥³ö¿Ú±¨ÎÄʱ£¬Òª²»ÏÞÖÆdev²ÅÐУ¬·ñÔòÍâÍø¿Ú±¨ÎÄ×¥²»µ½
-    if(skb->dev == NULL)
-    {
-        dev_flag = 1;
-    }
-    
-    rcu_read_lock();
-    list_for_each_entry_rcu(ptype, &ptype_all, list) {
-        //ÈôÔÚTCP»òIP²ãÃæ£¬´ËʱdataδָÏòMACÍ·£¬µ«ÓÉÓÚÎÒÃǽøÐÐÁËÆ«ÒÆ£¬Ö¸ÏòÁËMACÍ·£¬ËùÒÔÄÜץȡÍêÕû±¨ÎÄ£¬µ«PPPoEÀ౨ÎÄ£¬ÎÞ·¨×¥È«
-        if ((ptype->dev == skb->dev || !ptype->dev || !skb->dev) && (ptype->af_packet_priv != NULL) &&
-          (struct sock *)ptype->af_packet_priv != skb->sk) // && (ptype->func == packet_rcv)
-        {
-            //packet_rcvÄÚ²¿ÒªÇóskb->dev±ØÐ벻Ϊ¿Õ£¬ËùÒÔ´Ë´¦½øÐÐÁËС¼¼ÇÉ£¬µ«¿ÉÄÜÓжàÓà°ü±»×¥µ½
-            if(skb->dev == NULL && ptype->dev)
-                skb->dev = ptype->dev;
-            else if(skb->dev == NULL)
-                skb->dev = __dev_get_by_name(&init_net, br_name);
-            
-            skb2 = skb_clone(skb, GFP_ATOMIC);
-            if (!skb2)
-                break;
-            ptype->func(skb2, skb->dev, ptype, skb->dev);
-            
-            if (dev_flag == 1)
-                skb->dev = NULL;
-        }
-    }
-    rcu_read_unlock();
-
-    //»Ö¸´skb³õʼ״̬
-    if(dev_flag == 1)
-        skb->dev = NULL;
-    skb->transport_header = transport_header;
-    skb->network_header = network_header;
-    skb->mac_header = mac_header;
-    skb->data = data_priv;
-    skb->len = len_priv;
-}
-
-
-
-
-/*¸ù¾ÝdevÆ¥Åä²éÕÒÁÚ¾Ó±íarp_tblÖеÄÁÚ¾Ó½Úµã*/
-void get_neigh_bydev(struct neigh_table *tbl, struct net_device *dev, struct dev_neigh_info *neigh_info)
-{
-    int i;
-    int len;
-    unsigned int neigh_num = 0;
-    struct neigh_hash_table *nht;
-
-    if(tbl->family != AF_INET && tbl->family != AF_INET6)
-        return;
-
-    rcu_read_lock_bh();
-    nht = rcu_dereference_bh(tbl->nht);
-
-    for(i = 0; i < (1 << nht->hash_shift); i++)
-    {
-        struct neighbour *neigh;
-
-        for(neigh = rcu_dereference_bh(nht->hash_buckets[i]); neigh != NULL; neigh = rcu_dereference_bh(neigh->next))
-        {
-            if(neigh->dev == dev)
-            {
-                len = tbl->key_len > MAX_IPADDR_LEN ? MAX_IPADDR_LEN : tbl->key_len;
-
-                memcpy(neigh_info->neigh_nod[neigh_num].ip_addr, neigh->primary_key, len);
-                neigh_info->neigh_nod[neigh_num].ip_len = len;
-                memcpy(neigh_info->neigh_nod[neigh_num].mac_addr, neigh->ha, MAX_MACADDR_LEN);
-                neigh_num++;
-                if(neigh_num >= 20)
-                    goto end;
-            }
-        }
-    }
-
-end:
-    neigh_info->num = neigh_num;
-
-    rcu_read_unlock_bh();
-
-    return;
-}
-
-/*¸ù¾ÝÔ¶¶ËÁÚ¾ÓµÄMACµØÖ·ÕÒµ½arp_tblÖеÄÁÚ¾ÓIPµØÖ·µÈÐÅÏ¢*/
-void get_neigh_bymac(struct neigh_table *tbl,mac_addr *addr, struct neigh_info *info)
-{
-    int i;
-    int len;
-    struct neigh_hash_table *nht;
-
-    if(tbl->family != AF_INET && tbl->family != AF_INET6)
-        return;
-
-    nht = rcu_dereference_bh(tbl->nht);
-
-    for(i = 0; i < (1 << nht->hash_shift); i++)
-    {
-        struct neighbour *neigh;
-
-        for(neigh = rcu_dereference_bh(nht->hash_buckets[i]); neigh != NULL; neigh = rcu_dereference_bh(neigh->next))
-        {
-            if(!compare_ether_addr(neigh->ha,addr->addr)) 
-            {
-                len = tbl->key_len > MAX_IPADDR_LEN ? MAX_IPADDR_LEN : tbl->key_len;
-
-                memcpy(info->ip_addr, neigh->primary_key, len);
-                info->ip_len = len;
-                memcpy(info->mac_addr, neigh->ha, MAX_MACADDR_LEN);
-                return;
-            }
-        }
-	}
-}
-
-//»ñȡij2²ãÇŵãÉ豸µÄÁÚ¾ÓÁбíÐÅÏ¢£¬Ïȸù¾Ý³ö¿ÚdevÕÒµ½ËùÓеÄÔ¶³ÌÁÚ¾ÓMACµØÖ·£¬ÔÙ¸ù¾ÝMACµØÖ·ÕÒµ½arp_tblÖеÄÁÚ¾ÓIPµØÖ·µÈÐÅÏ¢
-void getneigh_ofdev(struct net_device *dst_dev,struct dev_neigh_info  *neigh_info)
-{
-	int i;
-	int neigh_num = 0;
-	struct net_device *br_dev;
-	struct net_bridge *br;
-	
-	br_dev = dev_get_by_name(&init_net, br_name);
-	br = netdev_priv(br_dev);
-	
-	spin_lock_bh(&br->hash_lock);
-	for (i = 0; i < BR_HASH_SIZE; i++) {
-		struct hlist_node *h;
-		hlist_for_each(h, &br->hash[i]) {
-			struct net_bridge_fdb_entry *f;
-
-			f = hlist_entry(h, struct net_bridge_fdb_entry, hlist);
-			if (f->dst && f->dst->dev == dst_dev && !(test_bit(0, &f->flags))) {//BR_FDB_LOCAL==0
-			   get_neigh_bymac(&arp_tbl, &f->addr,neigh_info->neigh_nod+neigh_num);
-	                neigh_num++;
-
-			}
-		}
-	}
-	spin_unlock_bh(&br->hash_lock);
-	neigh_info->num = neigh_num;
-}
-
-void update_brport_info(struct devlist_info *dev_info){
-    int i = 0, j = 0, k = 0;
-    struct net_device *br_dev;
-    struct net_device *temp_dev;
-    struct dev_neigh_info *temp_neigh;
-    int temp_count ;
-    for(i = 0; i < dev_info->num; i++){
-        if(dev_info->info[i].dev_layer == BR_DEV){
-            br_dev = dev_get_by_name(&init_net, dev_info->info[i].name);
-            for(j = 0; j < dev_info->info[i].dev_neigh.num; j++){
-                temp_dev = getbrport_bydst(br_dev, dev_info->info[i].dev_neigh.neigh_nod[j].mac_addr);
-                if(!temp_dev || temp_dev->ifindex == br_dev->ifindex){
-                    printk("temp_dev error!!!\n");
-                    continue;
-                }        
-                for(k = 0 ; k < dev_info->num; k++){
-                    if(strcmp(dev_info->info[k].name, temp_dev->name) == 0){
-						temp_neigh = &(dev_info->info[k].dev_neigh);
-						if(temp_neigh->num >= 20){
-							printk("dev=%s , neigh info is full!\n", temp_dev->name);
-						    break;
-						}
-                        temp_count = temp_neigh->num;			
-                        memcpy(temp_neigh->neigh_nod[temp_count].ip_addr, dev_info->info[i].dev_neigh.neigh_nod[j].ip_addr,  dev_info->info[i].dev_neigh.neigh_nod[j].ip_len);
-                        temp_neigh->neigh_nod[temp_count].ip_len = dev_info->info[i].dev_neigh.neigh_nod[j].ip_len;
-                        memcpy(temp_neigh->neigh_nod[temp_count].mac_addr, dev_info->info[i].dev_neigh.neigh_nod[j].mac_addr, MAX_MACADDR_LEN);
-                        temp_count ++;
-                        temp_neigh->num = temp_count;
-                        break;
-                    }
-                }
-            }
-			if(br_dev)
-				dev_put(br_dev);
-        }
-    }
-}
-
-/*»ñÈ¡init_netÖÐÍøÂçÉ豸Ïà¹ØÐÅÏ¢£¬°üÀ¨IP¡¢MAC¡¢³ö¿Údev¡¢ÁÚ¾ÓÁбíµÈ*/
-int get_devlist_info(unsigned long arg)
-{
-    struct devlist_info *dev_info;
-    struct net_device *dev;
-    struct net_device *temp_dev;
-    struct dev_neigh_info *temp_neigh;
-    unsigned int temp_count = 0;
-    unsigned int dev_num = 0;
-	
-    dev_info=(struct devlist_info*)kzalloc(sizeof(struct devlist_info), GFP_KERNEL);
-    if(!dev_info)
-        return -EFAULT;
-
-    read_lock(&dev_base_lock);
-
-    for_each_netdev(&init_net, dev)
-    {
-        if(dev->flags & IFF_UP && strcmp(dev->name, "lo") != 0)
-        {
-        	//¼Ç¼±¾µØÍø¿ÚµÄÐÅÏ¢
-            strcpy(dev_info->info[dev_num].name, dev->name);
-            if(dev->ip_ptr && dev->ip_ptr->ifa_list)
-                dev_info->info[dev_num].ipv4_addr = dev->ip_ptr->ifa_list->ifa_address; 
-            if(dev->header_ops && dev->dev_addr){
-                memcpy(dev_info->info[dev_num].mac_addr, dev->dev_addr, dev->addr_len);
-                if(is_zero_ether_addr(dev->dev_addr))
-                    dev_info->info[dev_num].mac_errtype = ZERO_ADDRERR;
-                else if(is_broadcast_ether_addr(dev->dev_addr))
-                    dev_info->info[dev_num].mac_errtype = BROADCAST_ADDRERR;
-                else if(is_multicast_ether_addr(dev->dev_addr))
-                    dev_info->info[dev_num].mac_errtype = MULTICAST_ADDRERR;              
-            }
-
-		//ÒÔÏÂΪ¸üб¾µØÍø¿Ú¹ØÁªµÄÔ¶³ÌÁÚ¾ÓÁбíÐÅÏ¢
-		//¶ÔÓÚÇŵãÉ豸£¬Ïȸù¾Ý³ö¿ÚdevÕÒµ½ËùÓеÄÔ¶³ÌÁÚ¾ÓMACµØÖ·£¬ÔÙ¸ù¾ÝMACµØÖ·ÕÒµ½arp_tblÖеÄÁÚ¾ÓIPµØÖ·µÈÐÅÏ¢
-            if(dev->priv_flags & IFF_BRIDGE_PORT){
-		    	dev_info->info[dev_num].dev_layer = L2_DEV;
-                dev_info->info[dev_num].dev_neigh.num = 0;
-		//	getneigh_ofdev(dev,&(dev_info->info[dev_num].dev_neigh));
-            }
-		//br0ÌØÊâÍø¹Ø£¬»ñÈ¡ÆäÁÚ¾ÓÁбí
-            else if(dev->priv_flags & IFF_EBRIDGE){
-                dev_info->info[dev_num].dev_layer = BR_DEV;
-                get_neigh_bydev(&arp_tbl, dev,&(dev_info->info[dev_num].dev_neigh));
-            }
-		//¶ÔÓÚÆÕͨµÄ3²ãÉ豸£¬»ñÈ¡ÆäÁÚ¾ÓÁбíÐÅÏ¢
-            else{
-                //Åųý·Çarp½Ó¿Ú
-                if(!(dev->flags & IFF_NOARP))
-                    get_neigh_bydev(&arp_tbl, dev,&(dev_info->info[dev_num].dev_neigh));
-                dev_info->info[dev_num].dev_layer = L3_DEV;         
-            }
-		    dev_num++;
-            if(dev_num >= MAX_DEV_NUM)
-            {
-                break;
-            }
-        }
-    }
-    dev_info->num = dev_num;
-    update_brport_info(dev_info);
-    read_unlock(&dev_base_lock);
-    
-    if (copy_to_user((char *)arg, dev_info, sizeof(struct devlist_info)))
-    {
-        kfree(dev_info);
-        return -EFAULT;
-    }
-    kfree(dev_info);
-
-    return 0;
-}
-
-extern wait_queue_head_t skb_wait_queue;
-//extern atomic_t  skb_used;
-extern atomic_t  skb_tops;
-extern atomic_t  skb_fromps;
-//ÓÃÓÚ¸ú×Ùskb½á¹¹ÌåµÄÉêÇ룬°üº¬Íⲿ´«µÝÀ´µÄdata
-void skb_alloc_track(struct sk_buff *skb)
-{
-#ifndef CONFIG_SPEED_OPT
-	netslab_inc(SKB_SLAB);
-	//track_add(skb, 0, SKB_INFO, skb->truesize);
-	skbinfo_add(skb,SKB_TYPE_ALL);
-#endif
-//	atomic_inc(&skb_used);
-}
-//ÓÃÓÚ¸ú×Ùskb½á¹¹ÌåµÄÊÍ·Å£¬°üº¬Íⲿ´«µÝÀ´µÄdata
-extern wait_queue_head_t skb_wait_queue;
-void skb_free_track(struct sk_buff *skb)
-{
-#ifndef CONFIG_SPEED_OPT
-	track_del(skb, 0, SKB_INFO);
-	skbinfo_del(skb,SKB_TYPE_ALL);
-	netslab_dec(SKB_SLAB);	
-#endif
-	//2017.6.3  add by linxu  set a limit for skb
-//	atomic_dec(&skb_used);
-	if(waitqueue_active(&skb_wait_queue))
-	{
-		wake_up(&skb_wait_queue);		
-	}
-}
-//ÓÃÓÚ¸ú×Ùslab»úÖÆµÄskb->data½á¹¹ÌåµÄÉêÇë,²»°üº¬ÍⲿPSBUF
-void skbdata_alloc_track(struct sk_buff *skb)
-{
-#ifndef CONFIG_SPEED_OPT
-	skbinfo_add((unsigned char *)skb,SKB_TYPE_DATA);
-	//track_add(skb->head, 0, DATA_INFO, skb->len);
-#endif
-}
-//ÓÃÓÚ¸ú×Ùslab»úÖÆµÄskb->data½á¹¹ÌåµÄÊÍ·Å,²»°üº¬ÍⲿPSBUF
-void skbdata_free_track(struct sk_buff *skb)
-{
-#ifndef CONFIG_SPEED_OPT
-	track_del(skb->head, 0, DATA_INFO);
-	skbinfo_del(skb,SKB_TYPE_DATA);
-#endif
-}
-
-//ÓÃÓÚ¸ú×ÙÍⲿ´«µÝÀ´µÄdataÉêÇë
-void fromext_alloc_track(struct sk_buff *skb)
-{
-#ifndef CONFIG_SPEED_OPT
-	//track_add(skb, 0, DATA_INFO,  skb->len);
-	skbinfo_add((unsigned char *)skb,SKB_TYPE_FROMCP);
-#endif
-	atomic_inc(&skb_fromps);
-}
-//ÓÃÓÚ¸ú×ÙÍⲿ´«µÝÀ´µÄdataµÄÊÍ·Å
-void fromext_free_track(struct sk_buff *skb)
-{
-#ifndef CONFIG_SPEED_OPT
-	track_del(skb->head, 0, DATA_INFO);
-	skbinfo_del(skb,SKB_TYPE_FROMCP);
-#endif	
-	atomic_dec(&skb_fromps);
-}
-//ÓÃÓÚ¸ú×Ù·¢Ë͸øÍⲿµÄÉêÇë
-void toext_alloc_track(struct sk_buff *skb)
-{
-#ifndef CONFIG_SPEED_OPT
-	skbinfo_add((unsigned char *)skb,SKB_TYPE_TOCP);
-#endif
-	atomic_inc(&skb_tops);
-}
-//ÓÃÓÚ¸ú×Ù·¢Ë͸øÍⲿµÄÊÍ·Å
-void toext_free_track(struct sk_buff *skb)
-{
-#ifndef CONFIG_SPEED_OPT
-	skbinfo_del(skb,SKB_TYPE_TOCP);
-#endif
-	atomic_dec(&skb_tops);
-}
-#else
-
-
-
-int set_print = 0;       //ÍøÂç×Ô¶¨ÒåµÄ´òÓ¡¿ª¹Ø
-EXPORT_SYMBOL(set_print);
-
-int set_tcpdump = 0;  //ÈÎÒâµã×¥°ü¿ª¹Ø
-
-//´æ·Åµ±Ç°skbÏà¹ØµÄͳ¼ÆÐÅÏ¢£¬°üÀ¨Ò»Ð©Òì³£Ïà¹ØÐÅÏ¢
-unsigned long skbinfo_dbg[SKB_INFO_MAX]= {0}; 
-
-//¸÷ÖÖÍøÂçÔËÐÐ×ÊÔ´µÄͳ¼ÆÖµ£¬ÓÈÆäÊǸ÷¸ö¹Ø¼ü½á¹¹ÌåµÄÉêÇ룬ÒÔ¹©ÄÚ²¿Ñ§Ï°ºÍ¶¨Î»
-unsigned long netruninfo_dbg[NET_INFO_MAX]= {0}; 
-
-//skbÉêÇëÉÏÏÞµÄÅäÖÃÈ«¾Ö£¬Ä¿Ç°ÉÐδʹÓÃ
-unsigned long skb_max_panic = 0; //skb×ÜÊýÉÏÏÞ£¬³¬³ö»áµ¼ÖÂpanic
-unsigned long skb_num_limit = 6000;  //skb×ÜÊýÉÏÏÞ£¬³¬³ö·µ»ØNULL
-
-//¶ÔÌØ¶¨µÄskbÔÚÊͷŵãʱ½øÐÐÕ»¸ú×Ù
-char skb_dump_str[NIOCTL_MAX_MSGLEN] = {0};
-unsigned int skb_dump_len = 0;
-
-/*¶Ô±¾µØTCP½øÐÐÏà¹ØÍ³¼Æ*/
-unsigned long tcp_stats_dbg[TCP_STATS_MAX] = {0};
-
-
-//ÒÔÏÂΪÊý¾Ý°üµÄ½¨Ä£ÐÅÏ¢£¬ÒÔͳ¼Æ³öÊý¾Ý°üÄ£ÐÍ
-int  skb_num4 = 0;                  //½ÓÊÕµ½µÄV4Êý¾Ý°ü
-int  skb_num6 = 0;                  //½ÓÊÕµ½µÄV6Êý¾Ý°ü
-int  skb_big_num;                   //len³¤¶È³¬¹ý1000µÄÊý¾Ý°ü£¬º¬V4ºÍV6
-int  skb_small_num;                 //len³¤¶ÈСÓÚ100µÄÊý¾Ý°ü£¬º¬V4ºÍV6
-int  skb_bytes4 = 0;                //½ÓÊÕµ½µÄV4Êý¾Ý°ü×Ö½ÚÊý
-int  skb_bytes6 = 0;                //½ÓÊÕµ½µÄV6Êý¾Ý°ü×Ö½ÚÊý
-int  skb_unknown = 0;               //½ÓÊÕµ½µÄδ֪ЭÒéÊý¾Ý°ü£¬°üÀ¨ARPµÈ·ÇV4ºÍV6µÄ±¨ÎÄ
-int  skb_tcpnum = 0;                //½ÓÊÕµ½µÄtcpÊý¾Ý°ü£¬º¬V4ºÍV6£¬µ«²»º¬fastbrµÄ±¨ÎÄ
-int  skb_udpnum = 0;                //½ÓÊÕµ½µÄudpÊý¾Ý°ü£¬º¬V4ºÍV6£¬µ«²»º¬fastbrµÄ±¨ÎÄ
-int  broadcast_num4 = 0;            //½ÓÊÕµ½µÄV4¹ã²¥°ü
-int  broadcast_num6 = 0;            //½ÓÊÕµ½µÄV6¹ã²¥°ü
-int  multicast_num4 = 0;            //½ÓÊÕµ½µÄV4×é²¥±¨
-int  multicast_num6 = 0;            //½ÓÊÕµ½µÄV6×é²¥±¨
-int  fastnat_num = 0;               //fastnat³É¹¦µÄ±¨ÎÄ
-int  fast6_num = 0;                 //fast6³É¹¦µÄ±¨ÎÄ
-int  fastbr_num = 0;                //fastbr³É¹¦µÄ±¨ÎÄ
-int  fast_local4_rcv_num = 0;       //±¾µØfast_local4³É¹¦½ÓÊÕ±¨ÎÄ
-int  fast_local6_rcv_num = 0;       //±¾µØfast_local6³É¹¦½ÓÊÕ±¨ÎÄ
-int  fast_local4_output_num = 0;    //±¾µØfast_local4³É¹¦·¢Ëͱ¨ÎÄ
-int  fast_local6_output_num = 0;    //±¾µØfast_local6³É¹¦·¢Ëͱ¨ÎÄ
-int  fast_tcpdump_num = 0;          //fast×¥°üÊýÁ¿
-
-
-int double_mac = 0; //mac¼ì²é¿ª¹Ø
-//slabÄÚ´æÊ¹ÓÃÏà¹ØÍ³¼Æ£¬Î´¿¼ÂÇͨÓÃslabµØÖ·³Ø£¬Èçkmalloc
-struct slab_info slab_count = {0};
-
-/*½øÐÐTCPͳ¼Æ*/
-#define TCP_PKT_STATS_INC(_mod)    tcp_stats_dbg[_mod]++
-
-void dump_net_stack(struct sk_buff *skb, unsigned int offset)
-{
-   
-}
-
-
-void check_macaddr_only(unsigned char *ha, unsigned char ha_len)
-{
-	
-}
-
-//ÓÃÓÚ¸ú×Ùskb½á¹¹ÌåµÄÉêÇ룬°üº¬Íⲿ´«µÝÀ´µÄdata
-void skb_alloc_track(struct sk_buff *skb)
-{
-	
-}
-//ÓÃÓÚ¸ú×Ùskb½á¹¹ÌåµÄÊÍ·Å£¬°üº¬Íⲿ´«µÝÀ´µÄdata
-void skb_free_track(struct sk_buff *skb)
-{
-	
-}
-//ÓÃÓÚ¸ú×Ùslab»úÖÆµÄskb->data½á¹¹ÌåµÄÉêÇë,²»°üº¬ÍⲿPSBUF
-void skbdata_alloc_track(struct sk_buff *skb)
-{
-	
-}
-//ÓÃÓÚ¸ú×Ùslab»úÖÆµÄskb->data½á¹¹ÌåµÄÊÍ·Å,²»°üº¬ÍⲿPSBUF
-void skbdata_free_track(struct sk_buff *skb)
-{
-	
-}
-
-//ÓÃÓÚ¸ú×ÙÍⲿ´«µÝÀ´µÄdataÉêÇë
-void fromext_alloc_track(struct sk_buff *skb)
-{
-	
-
-}
-//ÓÃÓÚ¸ú×ÙÍⲿ´«µÝÀ´µÄdataµÄÊÍ·Å
-void fromext_free_track(struct sk_buff *skb)
-{
-	
-}
-//ÓÃÓÚ¸ú×Ù·¢Ë͸øÍⲿµÄÉêÇë
-void toext_alloc_track(struct sk_buff *skb)
-{
-	
-}
-//ÓÃÓÚ¸ú×Ù·¢Ë͸øÍⲿµÄÊÍ·Å
-void toext_free_track(struct sk_buff *skb)
-{
-	
-}
-
-void net_print_packet(unsigned char *data, unsigned int len, int flag)
-{
-   
-}
-
-
-void tcpdumpin_sq(struct sk_buff *skb)
-{
-    
-}
-
-void track_netlink(struct sk_buff *skb,u32 group)
-{
-
-}
-
-void netslab_inc(int i)
-{
-
-}
-
-void netslab_dec(int i)
-{
-
-}
-
-void netruninfo_add(unsigned char *addr,unsigned int info_type)
-{
-}
-
-void netruninfo_del(unsigned char *addr,unsigned int info_type)
-{
-}
-
-void skbinfo_add(unsigned char *addr,unsigned int skbinfo_type)
-{
-}
-
-void skbinfo_del(unsigned char *addr,unsigned int skbinfo_type)
-{
-}
-
-int net_debug_packet = 0;
-struct timeval net_debug_packet_tv = {0, 0};
-struct list_head net_debug_packet_list_head; 
-int net_debug_packet_sec = 0;
-
-#if 0
-//¼Ç¼ӦÓ÷¢°üÇé¿ö
-void record_app_atcive_net()
-{
-
-}
-#endif
-int get_tcp_stat_info(unsigned long arg)
-{
-    return 0;
-}
-#endif
-
-#ifdef _USE_TestHarness 
-int *vir_addr_ddrnet = 0;
-
-void psnet_freepsbuf(void *head)
-{
-}
-#endif
\ No newline at end of file
diff --git a/upstream/linux-5.10/net/core/fastproc/fast4_fw.c b/upstream/linux-5.10/net/core/fastproc/fast4_fw.c
deleted file mode 100755
index 0ef32e4..0000000
--- a/upstream/linux-5.10/net/core/fastproc/fast4_fw.c
+++ /dev/null
@@ -1,829 +0,0 @@
-#include <linux/in.h>
-#include <linux/ip.h>
-#include <linux/udp.h>
-#include <linux/tcp.h>
-#include <linux/icmp.h>
-#include <net/ip.h>
-#include <linux/if_arp.h>
-#include <linux/inetdevice.h>
-#include <linux/netfilter.h>
-#include <linux/netfilter_ipv4.h>
-#include <linux/netfilter_arp.h>
-#include <linux/netfilter_ipv4/ip_tables.h>
-#include <linux/netfilter/xt_multiport.h>
-#include <linux/netfilter/xt_iprange.h>
-#include <linux/netfilter/nf_conntrack_tcp.h>
-#include <net/checksum.h>
-#include <net/dsfield.h>
-#include <net/route.h>
-#include <net/netfilter/nf_nat.h>
-#include <net/netfilter/nf_conntrack_helper.h>
-#include <linux/module.h>
-#include <linux/proc_fs.h>
-#include <net/SI/fast_common.h>
-#include <net/inet_hashtables.h>
-#include <linux/igmp.h>
-#include <net/netfilter/nf_conntrack_l4proto.h>
-#include <net/netfilter/nf_conntrack.h>
-#include <net/netfilter/nf_conntrack_expect.h>
-#include <net/netfilter/nf_conntrack_helper.h>
-#include <net/netfilter/nf_conntrack_core.h>
-#include <net/netfilter/nf_conntrack_extend.h>
-#include <net/netfilter/nf_conntrack_acct.h>
-#include <net/netfilter/nf_conntrack_ecache.h>
-#include <net/netfilter/nf_conntrack_zones.h>
-#include <net/netfilter/nf_conntrack_timestamp.h>
-#include <net/netfilter/nf_conntrack_timeout.h>
-#include <net/netfilter/nf_nat.h>
-#include <net/SI/net_track.h>
-#include <net/SI/net_other.h>
-#include <net/SI/netioc_proc.h>
-#include <net/SI/net_cache.h>
-#include <net/SI/print_sun.h>
-
-#include <linux/netfilter/xt_tcpudp.h>
-
-MODULE_LICENSE("GPL");
-
-
-static struct task_struct *ct_iptables_syn;
-static struct tasklet_struct ct_iptables_bh;
-unsigned int ct_iptables_syn_sw;
-enum table_index {
-	IPTABLE_RAW,
-	IPTABLE_MANGLE,
-	IPTABLE_NAT,
-	IPTABLE_FILTER
-};
-
-
-/* ***************** ipv4 ¿ìËÙת·¢Ïà¹Ø±äÁ¿ ********************************/
-#ifndef CONFIG_PREEMPT_RT_FULL
-extern int *vir_addr_ddrnet;
-#endif
-/* ******************************** º¯ÊýÉêÃ÷ ********************************/
-
-
-/* ******************************** º¯ÊýʵÏÖ ********************************/
-int dst_expire_count = 0;
-extern int no_neighbour;
-
-static inline int rt_is_expired(struct rtable *rth)
-{
-    return rth->rt_genid != atomic_read(&(dev_net(rth->dst.dev))->ipv4.rt_genid);
-}
-
-void __flush_dcache_area(void *addr, size_t len)
-{
-      //´ò×®º¯Êý,ºóÐø¿´ÈçºÎʹÓà  
-}
-
-
-extern void ntl_ct_set_iw(struct sk_buff *skb, struct nf_conn *ct, int ct_dir);
-int fast4_fw_recv(struct nf_conn *tmpl,
-                  struct sk_buff *skb,
-                  struct nf_conn *ct,
-                  struct nf_conntrack_l4proto *l4proto,
-                  unsigned int dataoff,
-                  int dir,
-                  u_int8_t protonum)
-{
-    struct iphdr *iph = ip_hdr(skb);
-    struct udphdr *udph = NULL;
-    struct tcphdr *tcph = NULL;
-    __sum16 *cksum = NULL;
-    __be32 *oldip = NULL;
-    __be16 *oldport = 0;
-    struct net_device *dev = NULL;
-    u_int32_t skip_nat = 0;
-
-    enum ip_conntrack_info ctinfo;
-    int ret;
-    int rdir;
-    int type;
-    u_int32_t      nat_addr;
-    u_int16_t      nat_port;
-    struct ethhdr * eth;
-    struct dst_entry *dst_dir = NULL, *dst_rdir = NULL;
-    struct neighbour *_neighbour = NULL;
-	
-	__be16			vlan_proto_raw = skb->vlan_proto;
-	__u16			vlan_tci_raw = skb->vlan_tci;
-
-    /*²Î¿¼tcf_ipt_act()*/
-    struct nf_hook_state state = {
-        .hook = NF_INET_PRE_ROUTING,
-        .net = &init_net,
-        .in	= skb->dev,
-        .pf	= NFPROTO_IPV4,
-    };
-
-
-    rdir = (IP_CT_DIR_ORIGINAL == dir) ? IP_CT_DIR_REPLY: IP_CT_DIR_ORIGINAL;
-    dst_dir = dst_get_by_ct(ct, dir);
-
-    if (!dst_dir)
-    {
-        goto err_out;
-    }
-
-    if (rt_is_expired((struct rtable*)dst_dir))
-    {
-        dst_expire_count++;
-        fast_fw_conn_release(ct);
-        goto err_out;
-    }
-
-    // Èç¹û¼Ç¼ÁËÇŵ㣬¾ÍÖ±½ÓÖ¸ÏòÇŵã
-    if (ct->fast_ct.fast_brport[dir])
-    {
-        rcu_read_lock();
-        dev = rcu_dereference_protected(ct->fast_ct.fast_brport[dir], 1);
-        rcu_read_unlock();
-    }
-    else {
-        dev = dst_dir->dev;
-    }
-
-    /*¼ì²é°ü³¤¶ÈÊÇ·ñ³¬¹ý³ö¿ÚÉ豸MTU*/
-
-    if (!dev || (skb->len > dev->mtu))
-    {
-        skbinfo_add(NULL, SKB_OVER_MTU);
-        goto err_out;
-    }
-
-    //»Ø´«µÄ°üÖ±½ÓÊͷŲ¢¼ÆÊý
-    if (strcmp(skb->dev->name, dev->name) == 0)
-    {
-        skbinfo_add(NULL, SKB_LOOP);
-
-        kfree_skb(skb);
-        goto drop_packet;
-    }
-
-    //²Î¿¼resolve_normal_ct
-    if (dir == 1) {
-        ctinfo = IP_CT_ESTABLISHED_REPLY;
-    } else {
-        if (test_bit(IPS_SEEN_REPLY_BIT, &ct->status)) {
-            ctinfo = IP_CT_ESTABLISHED;
-        } else if (test_bit(IPS_EXPECTED_BIT, &ct->status)) {
-            ctinfo = IP_CT_RELATED;
-        } else {
-            ctinfo = IP_CT_NEW;
-        }
-    }
-
-
-    ret = nf_conntrack_handle_packet_fast(ct, skb, dataoff, ctinfo, &state);
-    if (ret <= 0) {
-        skb->_nfct = 0;
-        goto err_out; // fastʧ°Üǰ¶¼²»Äܸü¸ÄskbµÄÄÚÈÝ£¬·ñÔòʧ°Ü¾ÍÒª×ö»Ö¸´²Ù×÷
-    }
-    //Åжϳö¿ÚdevµÄÍ·²¿¿Õ¼äÊÇ·ñ×ã¹»£¬²»¹»ÐèÒªexpand
-    if (!(skb = fast_expand_headroom(skb, dev))) {
-        goto drop_packet;
-    }
-
-    fast_tcpdump(skb);
-
-    //Èç¹û×¥°üÃüÖУ¬Êý¾Ý»áclone£¬fast³É¹¦ÐèÒª¸Ä±ädataÄÚÈÝ£¬ÐèÒªÖØÐÂcopyÒ»·Ý
-    if (skb_cloned(skb))
-    {
-        if (pskb_expand_head(skb, 0, 0, GFP_ATOMIC))
-        {
-            print_sun(SUN_DBG, "fast4_fw_recv clone copy failed !!!\n");
-            kfree_skb(skb);
-            goto drop_packet;
-        }
-        clean_cache(skb->data,skb->len);
-    }
-
-    iph = ip_hdr(skb);
-
-    //½öµ±fastnat³É¹¦£¬²ÅÄÜÉèÖÃIPÍ·Ê×µØÖ·,ÒÔ¹©cacheË¢ÐÂʱʹÓÃ
-    skb_reset_network_header(skb);
-    skb->isFastnat = 1;
-    nf_ct_set(skb, (struct nf_conn *)&ct->ct_general, ctinfo);
-
-    if (test_bit(IPS_SRC_NAT_BIT, &ct->status))
-    {
-        if(IP_CT_DIR_ORIGINAL == dir)
-        {
-            nat_addr = ct->tuplehash[rdir].tuple.dst.u3.ip;
-            nat_port = ct->tuplehash[rdir].tuple.dst.u.all;
-            type = FN_TYPE_SRC;
-        }
-        else
-        {
-            nat_addr = ct->tuplehash[rdir].tuple.src.u3.ip;
-            nat_port = ct->tuplehash[rdir].tuple.src.u.all;
-            type = FN_TYPE_DST;
-        }
-    }
-    else if (test_bit(IPS_DST_NAT_BIT, &ct->status))
-    {
-        if (IP_CT_DIR_ORIGINAL == dir)
-        {
-            nat_addr = ct->tuplehash[rdir].tuple.src.u3.ip;
-            nat_port = ct->tuplehash[rdir].tuple.src.u.all;
-            type = FN_TYPE_DST;
-        }
-        else
-        {
-            nat_addr = ct->tuplehash[rdir].tuple.dst.u3.ip;
-            nat_port = ct->tuplehash[rdir].tuple.dst.u.all;
-            type = FN_TYPE_SRC;
-        }
-    }
-    else
-    {
-        skip_nat = 1;
-    }
-
-    if (!skip_nat)
-    {
-        /*½øÐÐnatת»»*/
-        if (IPPROTO_TCP == iph->protocol)
-        {
-            tcph = (struct tcphdr *)(skb->data + iph->ihl * 4);
-            cksum = &tcph->check;
-            oldport = (FN_TYPE_SRC == type)? (&tcph->source): (&tcph->dest);
-        }
-        else if (IPPROTO_UDP == iph->protocol)
-        {
-            udph = (struct udphdr *)(skb->data + iph->ihl * 4);
-            cksum = &udph->check;
-            oldport = (FN_TYPE_SRC == type)? (&udph->source): (&udph->dest);
-        }
-
-        oldip = (FN_TYPE_SRC == type)? (&iph->saddr) : (&iph->daddr);
-
-        if (cksum != NULL && (0!=*cksum || IPPROTO_TCP == iph->protocol))
-        {
-            inet_proto_csum_replace4(cksum, skb, *oldip, nat_addr, 0);
-            inet_proto_csum_replace2(cksum, skb, *oldport, nat_port, 0);
-        }
-        csum_replace4(&iph->check, *oldip, nat_addr);
-        if(oldport)
-            *oldport = nat_port;
-        *oldip = nat_addr;
-    }
-    else
-    {
-        if (IPPROTO_TCP == iph->protocol)
-        {
-            tcph = (struct tcphdr *)(skb->data + iph->ihl * 4);
-        }
-    }
-
-	//»ùÓÚctÁ´½ÓµÄÁ÷Á¿Í³¼Æ
-    ct->packet_info[dir].packets++;
-    ct->packet_info[dir].bytes += skb->len;
-    //»ùÓÚÍø¿ÚµÄÁ÷Á¿Í³¼Æ  --- ²Î¿¼linuxÔ­ÉúµÄÇý¶¯£¬Í³¼ÆµÄ¶¼ÊÇIP°ü³¤¶È
-    if (fastnat_level == FAST_NET_DEVICE)
-    {
-        skb->dev->stats.rx_packets++;
-        skb->dev->stats.rx_bytes += skb->len;
-    }
-
-
-    if (dev->flags & IFF_UP)
-    {
-        if (!(dev->flags & IFF_POINTOPOINT)) {
-            skb_push(skb, ETH_HLEN);
-			skb_reset_mac_header(skb);
-			if(skb->isvlan == 1)
-			{
-				struct vlan_ethhdr *vlan_eth = (struct vlan_ethhdr*)(skb->data - VLAN_HLEN);
-				skb->vlan_proto = vlan_eth->h_vlan_proto;
-				skb->vlan_tci = ntohs(vlan_eth->h_vlan_TCI);				
-			}
-            eth = (struct ethhdr *)skb->data;
-            _neighbour = dst_neigh_lookup_skb(dst_dir, skb);
-            //³ö¿Údev macµØÖ·×÷ΪÊý¾Ý°üÔ´macµØÖ·
-            memcpy(eth->h_source, dev->dev_addr, ETH_ALEN);
-            if (_neighbour)
-            {
-                memcpy(eth->h_dest, _neighbour->ha, ETH_ALEN);
-                neigh_release(_neighbour);
-            }
-            else {
-                __flush_dcache_area(skb->data, skb->len);
-                kfree_skb(skb);
-                no_neighbour++;
-                goto drop_packet;
-            }
-            eth->h_proto = htons(ETH_P_IP);
-        }
-        skb->dev = dev;
-        skb->now_location |= FASTNAT_SUCC;
-
-	if(ct->indev[dir] == NULL && skb->indev != NULL)
-	{
-		ct->indev[dir] = skb->indev;
-	}
-
-	if(ct->outdev[dir] == NULL && skb->dev != NULL)
-	{
-		ct->outdev[dir] = skb->dev;
-	}
-
-	skb->vlan_proto = vlan_proto_raw;
-	skb->vlan_tci = vlan_tci_raw;
-        __flush_dcache_area(skb->data, skb->len);
-        spin_unlock_bh(&fast_fw_spinlock);
-        dev_queue_xmit(skb);
-		spin_lock_bh(&fast_fw_spinlock);
-    }
-    else
-    {
-        print_sun(SUN_DBG, "ERR &&&&&& %s DOWN, kfree_skb!!!!!!!! \n", skb->dev->name);
-        kfree_skb(skb);
-    }
-
-
-    print_sun(SUN_DBG, "skb : 0x%x, new fastnat succ--------", skb);
-
-succ_out:
-drop_packet:
-    if (tmpl)
-        nf_conntrack_put(&tmpl->ct_general);
-    dst_release(dst_dir);
-    return 1;
-
-err_out :
-    dst_release(dst_dir);
-    nf_conntrack_put(&ct->ct_general);
-    print_sun(SUN_DBG, "skb : 0x%x, new fastnat FAIL!!!!!!!!!!", skb);
-    if (tmpl) {
-        nf_ct_set(skb, (struct nf_conn *)&tmpl->ct_general, IP_CT_NEW);
-    }
-    else {
-        skb->_nfct = 0;
-    }
-    return 0; /* not fast nat */
-}
-
-//¹¤×÷ÔÚPOST_ROUTING½Úµã£¬ÓÃÓÚfastÏà¹ØÊý¾ÝµÄ¸³Öµ
-unsigned int napt_handle4_fw(void *priv,
-                             struct sk_buff *skb,
-                             const struct nf_hook_state *state)
-{
-    struct nf_conn *ct;
-    enum ip_conntrack_info ctinfo;
-    u_int8_t protocol;
-    enum ip_conntrack_dir dir, rdir;
-    struct dst_entry *dst = skb_dst(skb);
-#ifdef CONFIG_ATHRS_HW_NAT
-    u_int32_t mask =0;
-#endif
-    struct neighbour *_neighbour = NULL;
-    struct net_device *out = state->out;
-
-
-    //¿ìËÙת·¢×Ü¿ª¹Ø
-    if (fastnat_level == FAST_CLOSE || fastnat_level == FAST_CLOSE_KEEP_LINK)
-    {
-        return NF_ACCEPT;
-    }
-
-    //Ö»ÓÐTCP¡¢UDPÖ§³Öfast£¬ICMPÕÒµ½µÄct¿ÉÄÜÊÇTCP¡¢UDPµÄ£¬ÀýÈç: ¶Ë¿Ú²»¿É´ï£¬ËùÒÔ±ØÐëÏÔʾÅжÏ
-    if (ip_hdr(skb)->protocol != IPPROTO_TCP && ip_hdr(skb)->protocol != IPPROTO_UDP)
-    {
-        return NF_ACCEPT;
-    }
-    //¿ìËÙת·¢×Ó¹¦ÄÜλͼ¿ª¹Ø
-
-    if (!test_bit(FAST_TYPE_VERSION_BIT, &fast_switch)
-            || !test_bit(FAST_TYPE_FW4_BIT, &fast_switch) )
-    {
-        return NF_ACCEPT;
-    }
-
-    if (!out)
-    {
-        return NF_ACCEPT;
-    }
-
-    //¹ã²¥¡¢×é²¥²»½¨Á´
-    if (ipv4_is_multicast(ip_hdr(skb)->daddr) || ipv4_is_lbcast(ip_hdr(skb)->daddr))
-    {
-        return NF_ACCEPT;
-    }
-
-    if(!dst)
-    {
-        return NF_ACCEPT;
-    }
-
-    _neighbour = dst_neigh_lookup_skb(dst, skb);
-    if (!_neighbour)
-    {
-        return NF_ACCEPT;
-    }
-    if (memcmp(_neighbour->ha, zeromac, ETH_ALEN) == 0)
-    {
-        if (!(skb->dev->flags & IFF_POINTOPOINT))
-            goto accept;
-    }
-
-    /*¼ì²é°ü³¤¶ÈÊÇ·ñ³¬¹ý³ö¿ÚÉ豸MTU*/
-    if (dst->dev && (skb->len > dst->dev->mtu))
-    {
-        goto accept;
-    }
-
-    ct = nf_ct_get(skb, &ctinfo);
-
-    if (!ct)
-    {
-        goto accept;
-    }
-
-    protocol = nf_ct_protonum(ct);
-
-    if (ct->master == NULL)
-    {
-        struct nf_conn_help *temp_help = nfct_help(ct);
-        //¶ÔÓÚijÌõÁ´½ÓÉÏ´æÔÚhelpµÈ¹³×Ó£¬±ØÐë½»ÓÉlinux±ê×¢Äں˴¦Àí£¬·ñÔòÄں˲»ÄÜ»ñÈ¡Ïà¹ØµÄÊý¾Ý°üÐÅÏ¢
-        if(temp_help!=NULL)
-        {
-            goto accept;
-        }
-    }
-
-    /* only forward */
-    if (!skb->skb_iif)
-    {
-        goto accept;
-    }
-
-    //¹ýÂ˲»ÐèÒª¾­¹ýfastnatµÄЭÒé°ü,¸ù¾Ý¶Ë¿ÚºÅ½øÐйýÂË
-    if (check_skip_ports(ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.dst.u.all))
-    {
-        goto accept;
-    }
-
-    dir = CTINFO2DIR(ctinfo);
-
-    rdir = (IP_CT_DIR_ORIGINAL == dir) ? IP_CT_DIR_REPLY: IP_CT_DIR_ORIGINAL;
-
-    /*Ö»Õë¶ÔTCP/UDP½øÐÐfastnat*/
-    if (IPPROTO_TCP == protocol)
-    {
-        /*TCPÈý´ÎÎÕÊֳɹ¦*/
-        if(!test_bit(IPS_ASSURED_BIT, &ct->status))
-        {
-            goto accept;
-        }
-    }
-    else if (IPPROTO_UDP != protocol)
-    {
-        goto accept;
-    }
-
-    spin_lock_bh(&fast_fw_spinlock);
-    if (ct->fast_ct.fast_dst[dir] && (ct->fast_ct.fast_dst[dir] != dst))
-    {
-        fast_fw_conn_release(ct);
-    }
-
-    if (!ct->fast_ct.fast_dst[dir])
-    {
-        rcu_assign_pointer(ct->fast_ct.fast_dst[dir], dst);
-        ct->fast_ct.fast_brport[dir] = getBridgePort(_neighbour, out);
-        fast_dst_add_ct(dst, ct);
-    }
-
-    ct->fast_ct.isFast = FAST_CT_FW4;
-    spin_unlock_bh(&fast_fw_spinlock);
-
-accept:
-
-    neigh_release(_neighbour);
-    return NF_ACCEPT;
-}
-
-static struct nf_hook_ops fast4_fw_hook = {
-    .hook = napt_handle4_fw,
-    //.owner = THIS_MODULE,
-    .pf = PF_INET,
-    .hooknum = NF_INET_POST_ROUTING,
-    .priority = NF_IP_PRI_LAST,
-};
-
-static inline bool
-port_match(u_int16_t min, u_int16_t max, u_int16_t port, bool invert)
-{
-	return (port >= min && port <= max) ^ invert;
-}
-
-static bool ctable_mt(struct nf_conn* ct, struct xt_action_param *par,int dir, int* match_filter)
-{
-	const struct xt_tcp *tcpinfo = par->matchinfo;
-
-	if (!port_match(tcpinfo->spts[0], tcpinfo->spts[1],
-			ntohs(ct->tuplehash[dir].tuple.src.u.tcp.port),
-			!!(tcpinfo->invflags & XT_TCP_INV_SRCPT)))
-		return false;
-	if((tcpinfo->spts[0] || tcpinfo->spts[1]) ^ (!!(tcpinfo->invflags & XT_TCP_INV_SRCPT)))
-		*match_filter = 1;
-	if (!port_match(tcpinfo->dpts[0], tcpinfo->dpts[1],
-			ntohs(ct->tuplehash[dir].tuple.dst.u.tcp.port),
-			!!(tcpinfo->invflags & XT_TCP_INV_DSTPT)))
-		return false;
-	if((tcpinfo->dpts[0] || tcpinfo->dpts[1]) ^ (!!(tcpinfo->invflags & XT_TCP_INV_DSTPT)))
-		*match_filter = 1;
-	return true;
-}
-
-static inline bool
-ip_packet_match(const struct ipt_ip *ipinfo,struct nf_conn* ct,int dir, int* match_filter)
-{
-	unsigned long ret;
-	if (NF_INVF(ipinfo, IPT_INV_SRCIP,
-		    (ct->tuplehash[dir].tuple.src.u3.ip & ipinfo->smsk.s_addr) != ipinfo->src.s_addr) ||
-	    NF_INVF(ipinfo, IPT_INV_DSTIP,
-		    (ct->tuplehash[dir].tuple.dst.u3.ip & ipinfo->dmsk.s_addr) != ipinfo->dst.s_addr))
-		return false;
-	if(ipinfo->src.s_addr || ipinfo->dst.s_addr)
-		*match_filter = 1;
-
-	if(ct->indev[dir] != NULL)
-	{
-		ret = ifname_compare_aligned(ct->indev[dir]->name, ipinfo->iniface, ipinfo->iniface_mask);
-	}
-	
-	if(ipinfo->iniface[0] != '\0')
-		*match_filter = 1;
-		
-	if (NF_INVF(ipinfo, IPT_INV_VIA_IN, ret != 0))
-		return false;
-	if(ct->outdev[dir] != NULL)
-	{
-		ret = ifname_compare_aligned(ct->outdev[dir]->name, ipinfo->outiface, ipinfo->outiface_mask);
-	}
-
-	if(ipinfo->outiface[0] != '\0')
-		*match_filter = 1;
-
-	if (NF_INVF(ipinfo, IPT_INV_VIA_OUT, ret != 0))
-		return false;
-
-	if (ipinfo->proto &&
-	    NF_INVF(ipinfo, IPT_INV_PROTO, ct->tuplehash[dir].tuple.dst.protonum != ipinfo->proto))
-		return false;
-
-	return true;
-}
-
-static inline bool
-ip_packet_match_neg(const struct ipt_ip *ipinfo,struct nf_conn* ct,int dir, int* match_filter)
-{
-	unsigned long ret;
-	if (NF_INVF(ipinfo, IPT_INV_SRCIP,
-		    (ct->tuplehash[dir].tuple.dst.u3.ip & ipinfo->smsk.s_addr) != ipinfo->src.s_addr) ||
-	    NF_INVF(ipinfo, IPT_INV_DSTIP,
-		    (ct->tuplehash[dir].tuple.src.u3.ip & ipinfo->dmsk.s_addr) != ipinfo->dst.s_addr))
-		return false;
-	if(ipinfo->src.s_addr || ipinfo->dst.s_addr)
-		*match_filter = 1;
-
-	if(ct->outdev[dir] != NULL)
-	{
-		ret = ifname_compare_aligned(ct->outdev[dir]->name, ipinfo->iniface, ipinfo->iniface_mask);
-	}
-	
-	if(ipinfo->iniface[0] != '\0')
-		*match_filter = 1;
-		
-	if (NF_INVF(ipinfo, IPT_INV_VIA_IN, ret != 0))
-		return false;
-	if(ct->indev[dir] != NULL)
-	{
-		ret = ifname_compare_aligned(ct->indev[dir]->name, ipinfo->outiface, ipinfo->outiface_mask);
-	}
-
-	if(ipinfo->outiface[0] != '\0')
-		*match_filter = 1;
-
-	if (NF_INVF(ipinfo, IPT_INV_VIA_OUT, ret != 0))
-		return false;
-
-	if (ipinfo->proto &&
-	    NF_INVF(ipinfo, IPT_INV_PROTO, ct->tuplehash[dir].tuple.dst.protonum != ipinfo->proto))
-		return false;
-
-	return true;
-}
-
-static inline struct ipt_entry *
-get_entry(const void *base, unsigned int offset)
-{
-	return (struct ipt_entry *)(base + offset);
-}
-
-static inline
-struct ipt_entry *ipt_next_entry(const struct ipt_entry *entry)
-{
-	return (void *)entry + entry->next_offset;
-}
-
-
-
-//ͬ²½ctͳ¼ÆÐÅÏ¢µ½iptables,ͬ²½ÖÜÆÚÔݶ¨1s
-static int ct_iptables_syn_thread(void *param)
-{
-	while (1) 
-	{
-		if(ct_iptables_syn_sw)
-		{
-			rcu_read_lock();
-			tasklet_schedule(&ct_iptables_bh);
-			rcu_read_unlock();
-			//ÿ´Îͬ²½¼ä¸ôΪ1s.
-		}
-		msleep(1*1000);
-	}
-	return 0;
-}
-
-void ct_iptables_syn_handle(struct nf_conn *ct,struct xt_table_info *private,int table_id)
-{
-	void *table_base;
-	struct ipt_entry *e;
-	const struct xt_entry_match *ematch;
-	struct xt_action_param acpar;
-	struct xt_counters *counter;
-	int match_flag = 0;
-	int match_filter = 0;
-	int num = 0;
-
-
-	table_base = private->entries;
-	num = private->number;
-	switch(table_id)
-	{
-		case 0:
-		case 1:
-		case 2:
-			e = get_entry(table_base, private->hook_entry[NF_INET_PRE_ROUTING]);
-			break;
-		case 3:
-			e = get_entry(table_base, private->hook_entry[NF_INET_LOCAL_IN]);
-			break;
-		default:
-			break;
-	}
-	while(num--)
-	{
-		match_flag = 0;
-		match_filter = 0;
-		if(!ip_packet_match(&e->ip, ct, IP_CT_DIR_ORIGINAL,&match_filter) &&
-			!ip_packet_match_neg(&e->ip, ct, IP_CT_DIR_REPLY,&match_filter))
-		{
-		}
-		else
-		{
-			xt_ematch_foreach(ematch, e) 
-			{
-				acpar.matchinfo = ematch->data;
-				if (!ctable_mt(ct, &acpar, IP_CT_DIR_ORIGINAL,&match_filter))
-				{
-					match_flag = 1;
-					break;
-				}
-				else
-				{
-				}
-			}
-			if(!match_flag)
-			{
-				if(match_filter)
-				{
-					counter = xt_get_this_cpu_counter(&e->counters);
-					ADD_COUNTER(*counter, ct->packet_info[IP_CT_DIR_ORIGINAL].bytes,ct->packet_info[IP_CT_DIR_ORIGINAL].packets);
-				}
-				e = ipt_next_entry(e);
-				continue;
-			}
-			match_flag = 0;
-			match_filter = 0;
-		}
-		
-		if (!ip_packet_match(&e->ip, ct, IP_CT_DIR_REPLY,&match_filter) &&
-			!ip_packet_match_neg(&e->ip, ct, IP_CT_DIR_ORIGINAL,&match_filter))
-		{
-			e = ipt_next_entry(e);
-			continue;
-		}
-		else
-		{
-			xt_ematch_foreach(ematch, e) 
-			{
-				acpar.matchinfo = ematch->data;
-				if (!ctable_mt(ct, &acpar, IP_CT_DIR_REPLY,&match_filter))
-				{
-					match_flag = 1;
-					break;
-				}
-			}
-			if(!match_flag)
-			{
-				if(match_filter)
-				{
-					counter = xt_get_this_cpu_counter(&e->counters);
-					ADD_COUNTER(*counter, ct->packet_info[IP_CT_DIR_REPLY].bytes,ct->packet_info[IP_CT_DIR_REPLY].packets);
-				}
-				e = ipt_next_entry(e);
-				continue;
-			}
-		}
-	}
-
-}
-
-static void ct_iptables_bhfunc(unsigned long param)
-{
-	int hash = 0;
-	struct nf_conntrack_tuple_hash *h;
-	struct hlist_nulls_node *n;
-	struct nf_conn *ct;
-	struct xt_table_info *private;
-	struct net * net;
-	unsigned int addend;
-	local_bh_disable();
-	addend = xt_write_recseq_begin();
-	for(hash = 0; hash < nf_conntrack_htable_size; hash++)
-    {
-	   	hlist_nulls_for_each_entry_rcu(h,n,&nf_conntrack_hash[hash],hnnode)
-		{
-	   		if(h)
-			{
-	   			ct = nf_ct_tuplehash_to_ctrack(h);
-				if(ct->fast_ct.isFast)
-				{
-					net = nf_ct_net(ct);
-					private = READ_ONCE(net->ipv4.iptable_raw->private);
-					ct_iptables_syn_handle(ct,private,IPTABLE_RAW);
-					private = READ_ONCE(net->ipv4.iptable_mangle->private);
-					ct_iptables_syn_handle(ct,private,IPTABLE_MANGLE);
-					private = READ_ONCE(net->ipv4.nat_table->private);
-					ct_iptables_syn_handle(ct,private,IPTABLE_NAT);
-					private = READ_ONCE(net->ipv4.iptable_filter->private);	
-					ct_iptables_syn_handle(ct,private,IPTABLE_FILTER);
-				}
-				else
-					continue;
-				spin_lock_bh(&fast_fw_spinlock);
-				ct->packet_info[IP_CT_DIR_ORIGINAL].bytes = 0;
-				ct->packet_info[IP_CT_DIR_ORIGINAL].packets = 0;
-				ct->packet_info[IP_CT_DIR_REPLY].bytes = 0;
-				ct->packet_info[IP_CT_DIR_REPLY].packets = 0;
-				spin_unlock_bh(&fast_fw_spinlock);
-			}
-	   	}
-    }
-	xt_write_recseq_end(addend);
-	local_bh_enable();
-}
-
-
-int fast4_fw_init(void)
-{
-    int ret = 0;
-
-    ret = nf_register_net_hook(&init_net, &fast4_fw_hook);
-    if (ret != 0)
-    {
-        print_sun(SUN_ERR,"init fast4_fw_init failed\n");
-        return -EINVAL;
-    }
-    print_sun(SUN_DBG,"init fast4_fw_init done\n");
-	
-	ct_iptables_bh.func = ct_iptables_bhfunc;
-	ct_iptables_syn = kthread_create(ct_iptables_syn_thread, (void *)0, "ct_iptables_syn" );
-    if (!IS_ERR(ct_iptables_syn))
-    {
-        printk("ntl_syn_task thread's init is succ");
-        wake_up_process(ct_iptables_syn);
-    }
-
-    return 0;
-}
-
-int fast4_fw_cleanup(void)
-{
-    fast_release_all(RELEASE_ALL_DST);
-    nf_unregister_net_hook(&init_net, &fast4_fw_hook);
-	if (ct_iptables_syn) 
-	{
-    	kthread_stop(ct_iptables_syn);
-    	ct_iptables_syn = NULL;
-	}
-	tasklet_kill(&ct_iptables_bh);
-    return 0;
-}
-
diff --git a/upstream/linux-5.10/net/core/fastproc/fast6.c b/upstream/linux-5.10/net/core/fastproc/fast6.c
deleted file mode 100755
index d5fab9c..0000000
--- a/upstream/linux-5.10/net/core/fastproc/fast6.c
+++ /dev/null
@@ -1,626 +0,0 @@
-/* * Copyright (c) 2011 Qualcomm Atheros, Inc. * */
-
-#include <linux/in.h>
-#include <linux/ip.h>
-#include <linux/udp.h>
-#include <linux/tcp.h>
-#include <linux/icmp.h>
-#include <net/ip.h>
-#include <linux/if_arp.h>
-#include <linux/inetdevice.h>
-#include <linux/netfilter.h>
-#include <linux/netfilter_ipv6.h>
-#include <linux/netfilter_arp.h>
-#include <linux/netfilter/xt_multiport.h>
-#include <linux/netfilter/xt_iprange.h>
-#include <linux/netfilter/nf_conntrack_tcp.h>
-#include <net/checksum.h>
-#include <net/dsfield.h>
-#include <net/route.h>
-#include <net/netfilter/nf_nat.h>
-#include <net/netfilter/nf_conntrack_acct.h>
-#include <net/netfilter/nf_conntrack_helper.h>
-#include <linux/module.h>
-#include <linux/proc_fs.h>
-#include <net/SI/fast6.h>
-#include <net/SI/netioc_proc.h>
-#include <net/SI/print_sun.h>
-#include <net/netfilter/nf_conntrack_acct.h>
-#include <net/SI/net_track.h>
-
-
-MODULE_LICENSE("GPL");
-
-/* ***************** ipv6 ¿ìËÙת·¢Ïà¹Ø±äÁ¿ ********************************/
-spinlock_t fast6_spinlock; //×ÔÐýËø£¬±£»¤Á´±íµÄ²Ù×÷
-fast_list_t working_list6 = {0};
-struct hlist_nulls_head *working_hash6;
-
-/* ******************************** º¯ÊýÉêÃ÷ ********************************/
-
-
-/* ******************************** º¯ÊýʵÏÖ ********************************/
-// ipv6±¨Í·À©Õ¹Ñ¡ÏÅжÏÊÇ·ñ°üº¬l4head
-static int ip6nol4head(int type)
-{
-    int i, count;
-    int optarray[] = {IPPROTO_ESP}; //ÔÝʱµ÷ÊÔÖ»ÖªµÀESP£¬½«À´Ñо¿Ð­ÒéºóÀ©Õ¹
-
-    count = sizeof(optarray)/sizeof(optarray[0]);
-    for (i = 0; i < count; i++)
-    {
-        if (type == optarray[i])
-            return (1);
-    }
-    return (0);
-}
-
-/*ÅжÏÊÇ·ñÊÇIPV6À©Õ¹Í·*/
-static int ip6option(int type)
-{
-    int i, optarray[8] = {IPPROTO_HOPOPTS, IPPROTO_IPV6, IPPROTO_ROUTING, IPPROTO_FRAGMENT,
-            IPPROTO_ESP, IPPROTO_AH, IPPROTO_DSTOPTS, IPPROTO_NONE};
-    
-    for (i = 0; i < 8; i++)
-    {
-        if (type == optarray[i])
-            return(optarray[i]);
-    }
-    return (0);
-}
-
-//skb->dataÐèÒªÖ¸ÏòipÍ·
-/*Ìø¹ýIPV6Í·¼°À©Õ¹Í·£¬Ö¸ÏòL4Í·,²¢·µ»ØL4ЭÒéÀàÐÍ*/
-unsigned char *getipv6uppkg(unsigned char *ippkg, unsigned char *protocol, int *uppkglen)
-{
-    unsigned char *ippkgpos = ippkg + 40;
-    struct ip6_hdr *hdr = (struct ip6_hdr *)ippkg;
-    struct ip6_opthdr *opthdr;
-    int ip6hdrlen;
-    int proto = 0;
-
-    proto = ip6option(hdr->ip6_nxt);
-    if (proto)
-    {
-        return NULL;
-#if 0
-        if (ip6nol4head(proto))
-            return NULL;
-
-        opthdr =(struct ip6_opthdr *)ippkgpos;
-        while (proto = ip6option(opthdr->nxt))
-        {
-            if (ip6nol4head(proto))
-                return NULL;
-            ippkgpos += (opthdr->len + 1) << 3;
-            opthdr = (struct ip6_opthdr *)ippkgpos;
-        }
-        if (protocol)
-            *protocol = opthdr->nxt;
-        ippkgpos += (opthdr->len + 1) << 3;
-#endif
-    }
-    else
-        if (protocol)
-            *protocol = hdr->ip6_nxt;
-        
-    ip6hdrlen = ippkgpos - ippkg;
-    
-    if (uppkglen)
-        *uppkglen = ntohs(hdr->ip6_plen) + 40 - ip6hdrlen;
-    
-    return (ippkgpos);
-}
-
-/*»ñÈ¡IPV6ÎåÔª×éÐÅÏ¢£¬Ä¿Ç°½ö´¦ÀíTCP/UDP/ICMP°ü*/
-int fast6_get_tuple(struct sk_buff *skb, struct nf_conntrack_tuple *tuple)
-{
-    if (!skb || !tuple)
-    {
-        return -1;
-    }
-    __u8 next_hdr;
-    unsigned char *l4head;
-    struct ipv6hdr *iph = (struct ipv6hdr *)skb->data;
-    struct udphdr *udph = NULL;
-    struct tcphdr *tcph = NULL;
-    struct icmp6hdr *icmph = NULL;
-
-
-    /* only IPv6 packets */    
-    if (htons(ETH_P_IPV6) != skb->protocol)
-    {
-        return -1;
-    }
-    
-    if (skb->len - sizeof(struct ipv6hdr) >= 0)
-    {
-        l4head = getipv6uppkg(skb->data, &next_hdr, NULL);
-        if (l4head == NULL)
-            return -1;
-    }
-    else
-        return -1;
-    
-    memset(tuple, 0, sizeof(struct nf_conntrack_tuple));
-
-    /* only tcp/udp */
-    if (NEXTHDR_UDP == next_hdr)
-    {
-        udph = (struct udphdr *)l4head;
-        tuple->src.u.udp.port = udph->source;
-        tuple->dst.u.udp.port = udph->dest;
-        skb_udpnum++;
-    }
-    else if (NEXTHDR_TCP == next_hdr)
-    {
-        tcph = (struct tcphdr *)l4head;
-        tuple->src.u.tcp.port = tcph->source;
-        tuple->dst.u.tcp.port = tcph->dest;
-        skb_tcpnum++;
-    }
-    else if (NEXTHDR_ICMP == next_hdr)
-    {
-        icmph = (struct icmp6hdr *)l4head; /* point to ICMPv4 header */
-        tuple->src.u.icmp.id = icmph->icmp6_identifier;
-        tuple->dst.u.icmp.type = icmph->icmp6_type;
-        tuple->dst.u.icmp.code = icmph->icmp6_code;
-    }
-    else
-    {
-        return -1;
-    }
-
-    tuple->src.l3num = AF_INET6;
-    tuple->src.u3.in6 = iph->saddr;
-    tuple->dst.u3.in6 = iph->daddr;
-    tuple->dst.protonum = next_hdr;
-    tuple->dst.dir = IP_CT_DIR_ORIGINAL;
-
-    return 0;
-}
-
-//´Ë´¦ÐèÒª±£³ÖºÍdev_xmit_completeÒ»ÖÂ
-//ÓÃinlineÎÞ·¨ÌáÈ¡µ½¹«¹²ÎļþÖУ¬Ö»ÄÜfastnat¡¢fast6¸÷·ÅÒ»·Ý
-static inline bool start_xmit_complete(int rc)
-{
-    /*
-     * Positive cases with an skb consumed by a driver:
-     * - successful transmission (rc == NETDEV_TX_OK)
-     * - error while transmitting (rc < 0)
-     * - error while queueing to a different device (rc & NET_XMIT_MASK)
-     */
-    if (likely(rc < NET_XMIT_MASK))
-        return true;
-
-    return false;
-}
-
-//ipv6Êý¾Ý°üµÄ¿ìËÙ´¦Àí£¬hashÓÃRCU»úÖÆ½øÐб£»¤£¬×ܵÄÁ¬½ÓÁ´±íÓÃspin½øÐб£»¤
-int fast6_recv(struct sk_buff *skb)
-{
-    struct nf_conntrack_tuple tuple;
-    fast_entry_data_t *fast6_entry_data = NULL;
-    fast_entry_t *fast6_entry = NULL;
-    struct tcphdr *tcph = NULL;
-    struct net_device *dev = NULL;
-    __u8 next_hdr = 0;
-    unsigned char *l4head;
-    struct ipv6hdr *ip6;
-    
-    print_sun(SUN_DBG, "enter fast_6_recv \n");
-
-    if (fastnat_level == FAST_CLOSE)
-    {
-        return 0;
-    }
-    
-    if (fast6_get_tuple(skb, &tuple) < 0)
-    {
-        print_sun(SUN_DBG, "fast_6_recv get tuple err \n");
-        return 0;
-    }
-    
-    ip6 = ipv6_hdr(skb);
-    if (ip6->nexthdr != IPPROTO_TCP && ip6->nexthdr != IPPROTO_UDP)
-        return 0;
-    
-    rcu_read_lock();
-
-    fast6_entry_data = fast_find_entry_data(working_hash6, &tuple);
-    if (fast6_entry_data == NULL)
-    {
-        rcu_read_unlock();
-
-        print_sun(SUN_DBG, "fast_6_recv fast_6_find null \n");
-        return 0;
-    }
-    
-    /*Åжϱ¨Îij¤¶ÈÊÇ·ñ³¬¹ý³ö¿ÚDEVµÄMTU*/
-    dev = fast6_entry_data->outdev;
-    if (!dev || (skb->len > dev->mtu))
-    {
-        skbinfo_add(NULL, SKB_OVER_MTU);
-        rcu_read_unlock();
-
-        print_sun(SUN_DBG, "fast_6_recv outdev err \n");
-        return 0;
-    }
-    
-    //»Ø´«µÄ°üÖ±½ÓÊͷŲ¢¼ÆÊý
-    if (strcmp(skb->dev->name, dev->name) == 0)
-    {
-        skbinfo_add(NULL, SKB_LOOP);
-        rcu_read_unlock();
-
-        kfree_skb(skb);
-        printk("loopback skb, free skb\n");
-        return 1;
-    }
-
-    fast6_entry = fast_data_to_entry(fast6_entry_data);
-    if (!fast6_entry)
-    {
-        rcu_read_unlock();
-
-        print_sun(SUN_DBG, "fast_6_recv fast6_entry is null \n");
-        return 0;
-    }
-
-    /* Ö»Óе±Ë«Ïò¿ìËÙÁ´½Ó¶¼½¨Á¢³É¹¦²Å×ßFASTNAT£¬·ñÔò×ß±ê×¼Á÷³Ì */
-	/* udp²»ÐèҪ˫Ïò½¨Á´        */
-	if ((fast6_entry->flags != FAST_ALL_DIR) && (ipv6_hdr(skb)->nexthdr != IPPROTO_UDP))
-    {
-        rcu_read_unlock();
-
-        print_sun(SUN_DBG, "fast_6_recv flags is not FAST_ALL_DIR \n");
-        return 0;
-    }
-
-    /*Ìø¹ýIPV6Í·£¬»ñÈ¡L4Í·Ö¸Õë*/
-    l4head = getipv6uppkg(skb->data, &next_hdr, NULL);
-    if (l4head == NULL)
-    {
-        rcu_read_unlock();
-
-        print_sun(SUN_DBG, "fast_6_recv l4head is null \n");
-        return 0;
-    }
-
-
-
-    if (!(skb = fast_expand_headroom_v6(skb, dev))){
-		rcu_read_unlock();
-        return 1;
-    }
-
-    fast_tcpdump(skb);
-    
-    //Èç¹û×¥°üÃüÖУ¬Êý¾Ý»áclone£¬fast³É¹¦ÐèÒª¸Ä±ädataÄÚÈÝ£¬ÐèÒªÖØÐÂcopyÒ»·Ý
-    if (skb_cloned(skb))
-    {
-        print_sun(SUN_DBG, "fast6_recv clone \n");
-        if (pskb_expand_head(skb, 0, 0, GFP_ATOMIC))
-        {
-            rcu_read_unlock();
-
-            print_sun(SUN_DBG, "fast6_recv clone copy failed !!!\n");
-            printk("pskb_expand_head skb failed, free skb\n");
-            kfree_skb(skb);
-            return 1;
-        }
-    }
-
-    //½öµ±fast6³É¹¦£¬²ÅÄÜÉèÖÃIPÍ·Ê×µØÖ·,ÒÔ¹©cacheË¢ÐÂʱʹÓÃ
-    skb_reset_network_header(skb);
-    skb->isFastnat = 1;
-    skb->priority = fast6_entry_data->priority;
-    skb->mark = fast6_entry_data->mark;
-
-
-    //ÄÚºË×Ô´øµÄ»ùÓÚÁ´½ÓµÄÁ÷Á¿Í³¼Æ
-    struct nf_conn_counter *acct = (struct nf_conn_counter*)nf_conn_acct_find(fast6_entry->ct);
-    if (acct) {
-        enum ip_conntrack_info ctinfo;
-        if (fast6_entry_data->tuplehash.tuple.dst.dir == IP_CT_DIR_ORIGINAL)
-            ctinfo = IP_CT_ESTABLISHED;
-        else 
-            ctinfo = IP_CT_ESTABLISHED_REPLY;
-
-        atomic64_inc(&acct[CTINFO2DIR(ctinfo)].packets);
-        atomic64_add(skb->len, &acct[CTINFO2DIR(ctinfo)].bytes);
-    }
-	
-    /* ¶¨Öƹ¦ÄÜ£¬ÎªÁ˽â¾öµ¥UDP¹à°üʱ£¬ÎÞ·¨ÖªÏþindev½øÐÐÁ÷Á¿Í³¼ÆÎÊÌâ¶¨ÖÆ */
-    if ((fast6_entry_data->indev == NULL) && skb->dev)
-    {
-        fast6_entry_data->indev = skb->dev;
-    }
-
-    // ͳ¼ÆÈë¿ÚÍøÂçÉ豸µÄ½ÓÊÕ°üÊýÁ¿  --- ²Î¿¼linuxÔ­ÉúµÄÇý¶¯£¬Í³¼ÆµÄ¶¼ÊÇIP°ü³¤¶È
-    if (fast6_entry_data->indev && (fastnat_level == FAST_NET_DEVICE))
-    {
-        fast6_entry_data->indev->stats.rx_packets++;
-        fast6_entry_data->indev->stats.rx_bytes += skb->len;
-    }  
-    
-    skb->dev = dev;
-
-    //Ö»Óе±ÓÐMACÍ·Ô¤¸³ÖµÊ±£¬²Å×¼¸³Öµ£¬·ñÔòΪIPÍ·
-    skb_push(skb, ETH_HLEN);
-
-    memcpy(skb->data, fast6_entry_data->hh_data, ETH_HLEN);
-    /*¸üÐÂÁ¬½Ó³¬Ê±*/
-    if (IPPROTO_TCP == tuple.dst.protonum)
-    {
-        mod_timer(&fast6_entry->timeout, jiffies + tcp_timeouts[fast6_entry->ct->proto.tcp.state]);
-        tcph = (struct tcphdr *)l4head;
-        update_tcp_timeout(fast6_entry, fast6_entry_data, tcph);
-		fast6_entry->ct->timeout = jiffies + tcp_timeouts[fast6_entry->ct->proto.tcp.state];
-    }
-    else if (IPPROTO_UDP == tuple.dst.protonum)
-    {
-        /*udp*/
-        if (test_bit(IPS_SEEN_REPLY_BIT, &fast6_entry->ct->status))
-        {
-            mod_timer(&fast6_entry->timeout, jiffies + fast_udp_timeout_stream);
-			fast6_entry->ct->timeout = jiffies + fast_udp_timeout_stream;
-        }
-        else
-        {
-            mod_timer(&fast6_entry->timeout, jiffies + fast_udp_timeout);
-			fast6_entry->ct->timeout = jiffies + fast_udp_timeout;
-        }
-    }
-
-    if (skb->dev->flags & IFF_UP)
-    {
-        //pppÖ»ÐèÒª´«ÊäIP°ü
-        if (strncmp(skb->dev->name, ppp_name, strlen(ppp_name)) == 0)
-        {
-           skb_pull(skb, ETH_HLEN);
-        }
-        
-        skb->now_location |= FAST6_SUCC;
-        if (fastnat_level == FAST_NET_DEVICE)
-        {
-            print_sun(SUN_DBG, "fastnat-2 dev_queue_xmit, send to:%s !!!!!!!! \n", skb->dev->name);
-            dev_queue_xmit(skb);
-        }
-        //¶ÔÓÚÁ÷¿ØµÈÌØÊâÓ¦Óã¬Ö»ÄÜ×ß±ê×¼µÄfastnatÁ÷³Ì£¬·ñÔòÎÞ·¨½øÐвå¼þÖ´ÐÐ
-        else if (fastnat_level == FAST_NET_CORE)
-        {
-            dev_queue_xmit(skb);
-        }
-        /*add by jiangjing*/
-        fast6_entry_data->packet_num++;
-
-    }
-    else
-    {
-        print_sun(SUN_DBG, "fast6_recv ERR &&&&&& %s DOWN, kfree_skb!!!!!!!! \n", skb->dev->name);
-        kfree_skb(skb);
-    }
-
-    rcu_read_unlock();
-
-    print_sun(SUN_DBG, "fast_6_recv okokok \n");
-    return 1;
-}
-
-static struct nf_hook_ops fast6_hook = {
-    .hook = napt6_handle,
-    //.owner = THIS_MODULE,
-    .pf = PF_INET6,
-    .hooknum = NF_INET_POST_ROUTING,
-    .priority = NF_IP6_PRI_LAST,
-};
-
-//¹¤×÷ÔÚPOST_ROUTING½Úµã£¬ÓÃÓÚfastÁ´½ÓµÄ¸³ÖµºÍÌí¼Óhash±í
-unsigned int napt6_handle(void* priv,
-            struct sk_buff *skb,
-            const struct nf_hook_state *state)
-{
-    struct nf_conn *ct;
-    enum ip_conntrack_info ctinfo;
-    u_int8_t protocol;
-    fast_entry_t *fast6_entry;
-    fast_entry_data_t *fast6_entry_data;
-    enum ip_conntrack_dir dir, rdir;
-    struct dst_entry *dst = skb_dst(skb);
-#ifdef CONFIG_ATHRS_HW_NAT
-    u_int32_t mask =0;
-#endif
-	struct neighbour *_neighbour = NULL;
-	struct net_device *out = state->out;
-
-
-    if (fastnat_level == FAST_CLOSE || fastnat_level == FAST_CLOSE_KEEP_LINK)
-    {
-        return NF_ACCEPT;
-    }
-
-    if (test_bit(FAST_TYPE_VERSION_BIT, &fast_switch))
-    {
-        return NF_ACCEPT;
-    }
-    
-    if (!out)
-    {
-        return NF_ACCEPT;
-    }
-    
-    if (ipv6_hdr(skb)->nexthdr != IPPROTO_TCP && ipv6_hdr(skb)->nexthdr != IPPROTO_UDP)
-        return NF_ACCEPT;
-
-    //×é²¥²»½¨Á´
-    if (ipv6_addr_is_multicast(&ipv6_hdr(skb)->daddr))
-    {
-        return NF_ACCEPT;
-    }
-
-    //´Ë´¦Òª¹Ø×¢ÊÇ·ñ»áƵ·±³öÏÖfastÁ´½ÓÒÑÂúÇé¿ö£¬Èç¹û¾­³£³öÏÖ£¬ÊÇ·ñ¿¼ÂÇ×î¾É¸²¸ÇÇé¿ö
-    if (working_list6.count > nf_conntrack_max)
-    {
-        return NF_ACCEPT;
-    }
-    /*ÅжÏÊÇ·ñÓÐÏÂÒ»Ìø*/
-    if (!dst)
-    { 
-        return NF_ACCEPT;
-    }
-	_neighbour = dst_neigh_lookup_skb(dst, skb);
-	if(!_neighbour)
-	{
-		return NF_ACCEPT;
-	}
-    
-    if (memcmp(_neighbour->ha, zeromac, ETH_ALEN) == 0)
-    {
-        goto accept;
-    }
-
-    if (!(ct = nf_ct_get(skb, &ctinfo)))
-    {
-        goto accept;
-    }
-    protocol = nf_ct_protonum(ct);
-
-
-    /* only forward */
-    if (!skb->skb_iif)
-    {
-        goto accept;
-    }
-
-
-    //¹ýÂ˲»ÐèÒª¾­¹ýfastnatµÄЭÒé°ü
-    if (check_skip_ports(ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.dst.u.all))
-    {
-        goto accept;
-    }
-
-    dir = CTINFO2DIR(ctinfo);
-    
-    rdir = (IP_CT_DIR_ORIGINAL == dir) ? IP_CT_DIR_REPLY: IP_CT_DIR_ORIGINAL;
-    
-    if (IPPROTO_TCP == protocol)
-    {
-        /* only established */
-        if(!test_bit(IPS_ASSURED_BIT, &ct->status))
-        {
-			goto accept;
-        }
-    }
-    else if (IPPROTO_UDP != protocol)
-    {
-        goto accept;
-    }
-
-    spin_lock_bh(&fast6_spinlock);
-    if (!(fast6_entry = fast_get_entry(&working_list6, ct, dir)))
-    {
-        spin_unlock_bh(&fast6_spinlock);
-        goto accept;
-    }
-    fast6_entry->fast_spinlock = &fast6_spinlock;
-
-    //Ê״ν¨Á´£¬»ñÈ¡ct¼ÆÊýËø£¬²¢É¾³ýct¶¨Ê±Æ÷£»Ê״ν¨Á´Öظ´°ü£¬²»ÄܲÙ×÷
-    if (!(fast6_entry->flags & FAST_ALL_DIR))
-    {
-        nf_conntrack_get(&ct->ct_general);
-        //del_timer(&ct->timeout);
-        ct->timeout = fast6_entry->timeout.expires;
-    }
-
-    fast6_entry_data = &fast6_entry->data[dir];
-    fast6_entry_data->tuplehash.tuple = ct->tuplehash[dir].tuple;
-
-    memcpy(fast6_entry_data->dmac, _neighbour->ha, ETH_ALEN);
-    fast6_entry_data->priority = skb->priority;
-    fast6_entry_data->mark = skb->mark;
-    fast6_entry_data->outdev = out;
-
-    if (!record_MAC_header(working_hash6, ct, fast6_entry, fast6_entry_data, _neighbour, out, htons(ETH_P_IPV6)))
-    {
-        spin_unlock_bh(&fast6_spinlock);
-        goto accept;
-    }
-
-    //´Ë´¦±£Ö¤Õý·´Á½¸ö±ê¼Çλ²»³åÍ»
-    fast6_entry->flags = fast6_entry->flags | (1 << dir);
-    
-    fast_add_entry(working_hash6, fast6_entry_data);
-    
-    if (fast6_entry->flags == FAST_ALL_DIR)
-    {
-        fast6_entry->data[0].indev = fast6_entry->data[1].outdev;
-        fast6_entry->data[1].indev = fast6_entry->data[0].outdev;
-    }
-
-    spin_unlock_bh(&fast6_spinlock);
-
-    ct->fast_ct.isFast = FAST_CT_WND6;
-
-accept:
-	
-	neigh_release(_neighbour);
-    return NF_ACCEPT;
-}
-
-/*´¦Àí֪ͨÁ´Ê¼þ*/
-int fast6_event(traverse_command_t *cmd)
-{
-    spin_lock_bh(&fast6_spinlock);
-    traverse_process(&working_list6, cmd);
-    spin_unlock_bh(&fast6_spinlock);
-	return 0;
-}
-
-//fastnat_level¹Ø±Õ£¬Çå¿ÕËùÓÐipv6¿ìËÙת·¢ÐÅÏ¢
-void fast6_cleanup_links(void)
-{
-    spin_lock_bh(&fast6_spinlock);
-    fast_cleanup_links(&working_list6);
-    spin_unlock_bh(&fast6_spinlock);
-}
-
-int tsp_fast6_init(void)
-{
-    int ret;
-    
-    print_sun(SUN_DBG,"start init fast6\n");
-
-    working_hash6 = nf_ct_alloc_hashtable(&nf_conntrack_htable_size, /*&fast6hash_vmalloc,*/ 1);
-    if (!working_hash6) 
-    {
-        print_sun(SUN_DBG, "Unable to create working_hash6\n");
-        return -EINVAL;
-    }
-
-    spin_lock_init(&fast6_spinlock);
-
-    ret = nf_register_net_hook(&init_net, &fast6_hook);
-    if (ret != 0)
-    {
-        print_sun(SUN_DBG,"init fast6 failed\n");
-        goto err;
-    }
-    
-    print_sun(SUN_DBG,"init fast6 done\n");
-    return 0;
-    
-err:
-    nf_ct_free_hashtable(working_hash6, /*fast6_hash_vmalloc, */nf_conntrack_htable_size);
-    return -EINVAL;
-}
-
-int tsp_fast6_cleanup(void)
-{
-    nf_unregister_net_hook(&init_net, &fast6_hook);
-    nf_ct_free_hashtable(working_hash6, /*fast6_hash_vmalloc,*/ nf_conntrack_htable_size);
-    
-    print_sun(SUN_DBG,"fast6 cleanup done\n");
-    return 0;
-}
-
diff --git a/upstream/linux-5.10/net/core/fastproc/fast6_fw.c b/upstream/linux-5.10/net/core/fastproc/fast6_fw.c
deleted file mode 100755
index 322175b..0000000
--- a/upstream/linux-5.10/net/core/fastproc/fast6_fw.c
+++ /dev/null
@@ -1,395 +0,0 @@
-#include <linux/in.h>
-#include <linux/ip.h>
-#include <linux/udp.h>
-#include <linux/tcp.h>
-#include <linux/icmp.h>
-#include <net/ip.h>
-#include <linux/if_arp.h>
-#include <linux/inetdevice.h>
-#include <linux/netfilter.h>
-#include <linux/netfilter_ipv6.h>
-#include <linux/netfilter_arp.h>
-#include <linux/netfilter/xt_multiport.h>
-#include <linux/netfilter/xt_iprange.h>
-#include <linux/netfilter/nf_conntrack_tcp.h>
-#include <net/checksum.h>
-#include <net/dsfield.h>
-#include <net/route.h>
-#include <net/netfilter/nf_nat.h>
-#include <net/netfilter/nf_conntrack_helper.h>
-#include <linux/module.h>
-#include <linux/proc_fs.h>
-#include <net/SI/fast6.h>
-#include <net/SI/fast_common.h>
-#include <net/netfilter/nf_conntrack_l4proto.h>
-#include <net/netfilter/nf_conntrack.h>
-#include <net/netfilter/nf_conntrack_expect.h>
-#include <net/netfilter/nf_conntrack_helper.h>
-#include <net/netfilter/nf_conntrack_core.h>
-#include <net/netfilter/nf_conntrack_extend.h>
-#include <net/netfilter/nf_conntrack_acct.h>
-#include <net/netfilter/nf_conntrack_ecache.h>
-#include <net/netfilter/nf_conntrack_zones.h>
-#include <net/netfilter/nf_conntrack_timestamp.h>
-#include <net/netfilter/nf_conntrack_timeout.h>
-#include <net/netfilter/nf_nat.h>
-#include <net/ip6_fib.h>
-#include <net/SI/net_track.h>
-#include <net/SI/net_other.h>
-#include <net/SI/netioc_proc.h>
-#include <net/SI/net_cache.h>
-#include <net/SI/print_sun.h>
-
-MODULE_LICENSE("GPL");
-
-/* ***************** ipv6 ¿ìËÙת·¢Ïà¹Ø±äÁ¿ ************************* */
-
-
-/* **************************** º¯ÊýÉêÃ÷ ************************ */
-
-
-/* **************************** º¯ÊýʵÏÖ ************************ */
-extern u32 rt6_peer_genid(void);
-
-int dst_expire_count_v6 = 0;
-extern int no_neighbour;
-extern void ntl_ct_set_iw(struct sk_buff *skb, struct nf_conn *ct, int ct_dir);
-int fast6_fw_recv(struct nf_conn *tmpl,
-                  struct sk_buff *skb,
-                  struct nf_conn *ct,
-                  struct nf_conntrack_l4proto *l4proto,
-                  unsigned int dataoff,
-                  int dir,
-                  u_int8_t protonum)
-{
-    struct net_device *dev = NULL;
-    enum ip_conntrack_info ctinfo;
-    int ret;
-    int  rdir;
-    struct ethhdr * eth;
-    __u8 next_hdr = 0;
-    unsigned char *l4head;
-    struct dst_entry *dst_dir = NULL;
-    struct neighbour *_neighbour = NULL;
-
-	__be16			vlan_proto_raw = skb->vlan_proto;
-	__u16			vlan_tci_raw = skb->vlan_tci;
-	
-    rdir = (IP_CT_DIR_ORIGINAL == dir) ? IP_CT_DIR_REPLY: IP_CT_DIR_ORIGINAL;
-    dst_dir = dst_get_by_ct(ct, dir);
-
-    struct nf_hook_state state = {
-        .hook = NF_INET_PRE_ROUTING,
-        .net = &init_net,
-        .in	= skb->dev,
-        .pf	= NFPROTO_IPV6,
-    };
-
-
-    //TCP±ØÐëË«Ïò½¨Á´£¬UDPµ¥Ïò¼´¿É
-    if (!dst_dir)
-    {
-        goto err_out;
-    }
-
-    // Èç¹û¼Ç¼ÁËÇŵ㣬¾ÍÖ±½ÓÖ¸ÏòÇŵã
-    if (ct->fast_ct.fast_brport[dir])
-    {
-        rcu_read_lock();
-        dev = rcu_dereference_protected(ct->fast_ct.fast_brport[dir], 1);
-        rcu_read_unlock();
-    }
-    else {
-        dev = dst_dir->dev;
-    }
-
-    /*¼ì²é°ü³¤¶ÈÊÇ·ñ³¬¹ý³ö¿ÚÉ豸MTU*/
-    if (!dev || (skb->len > dev->mtu))
-    {
-        skbinfo_add(NULL, SKB_OVER_MTU);
-        goto err_out;
-    }
-
-    //»Ø´«µÄ°üÖ±½ÓÊͷŲ¢¼ÆÊý
-    if (strcmp(skb->dev->name, dev->name) == 0)
-    {
-        skbinfo_add(NULL, SKB_LOOP);
-        //nf_conntrack_put(&ct->ct_general);
-        kfree_skb(skb);
-        goto drop_packet;
-    }
-
-    if (dir == 1) {
-        ctinfo = IP_CT_ESTABLISHED_REPLY;
-    } else {
-        if (test_bit(IPS_SEEN_REPLY_BIT, &ct->status)) {
-            ctinfo = IP_CT_ESTABLISHED;
-        } else if (test_bit(IPS_EXPECTED_BIT, &ct->status)) {
-            ctinfo = IP_CT_RELATED;
-        } else {
-            ctinfo = IP_CT_NEW;
-        }
-    }
-
-
-
-    ret = nf_conntrack_handle_packet_fast(ct, skb, dataoff, ctinfo, &state);
-    if (ret <= 0) {
-        skb->_nfct = 0;
-        goto err_out; // fastʧ°Üǰ¶¼²»Äܸü¸ÄskbµÄÄÚÈÝ£¬·ñÔòʧ°Ü¾ÍÒª×ö»Ö¸´²Ù×÷
-    }
-    //Åжϳö¿ÚdevµÄÍ·²¿¿Õ¼äÊÇ·ñ×ã¹»£¬²»¹»ÐèÒªexpand
-    if (!(skb = fast_expand_headroom_v6(skb, dev))) {
-        //nf_conntrack_put(&ct->ct_general);
-        goto drop_packet;
-    }
-
-    fast_tcpdump(skb);
-
-    //Èç¹û×¥°üÃüÖУ¬Êý¾Ý»áclone£¬fast³É¹¦ÐèÒª¸Ä±ädataÄÚÈÝ£¬ÐèÒªÖØÐÂcopyÒ»·Ý
-    if (skb_cloned(skb))
-    {
-        if (pskb_expand_head(skb, 0, 0, GFP_ATOMIC))
-        {
-            print_sun(SUN_DBG, "fast6_fw_recv clone copy failed !!!\n");
-            kfree_skb(skb);
-            goto drop_packet;
-        }
-        clean_cache(skb->data,skb->len);
-    }
-
-    //½öµ±fastnat³É¹¦£¬²ÅÄÜÉèÖÃIPÍ·Ê×µØÖ·,ÒÔ¹©cacheË¢ÐÂʱʹÓÃ
-    skb_reset_network_header(skb);
-    skb->isFastnat = 1;
-    nf_ct_set(skb, (struct nf_conn *)&ct->ct_general, ctinfo);
-
-
-    //»ùÓÚÍø¿ÚµÄÁ÷Á¿Í³¼Æ  --- ²Î¿¼linuxÔ­ÉúµÄÇý¶¯£¬Í³¼ÆµÄ¶¼ÊÇIP°ü³¤¶È
-    if (fastnat_level == FAST_NET_DEVICE)
-    {
-        skb->dev->stats.rx_packets++;
-        skb->dev->stats.rx_bytes += skb->len;
-    }
-
-    if (dev->flags & IFF_UP)
-    {
-        if (!(dev->flags & IFF_POINTOPOINT)) {
-            //·Çppp¶Ë¿Ú²Å×¼¸³Öµ£¬·ñÔòΪIPÍ·
-            skb_push(skb, ETH_HLEN);
-			skb_reset_mac_header(skb);
-			if(skb->isvlan == 1)
-			{
-				struct vlan_ethhdr *vlan_eth = (struct vlan_ethhdr*)(skb->data - VLAN_HLEN);
-				skb->vlan_proto = vlan_eth->h_vlan_proto;
-				skb->vlan_tci = ntohs(vlan_eth->h_vlan_TCI);				
-			}
-            eth = (struct ethhdr *)skb->data;
-            //³ö¿Údev macµØÖ·×÷ΪÊý¾Ý°üÔ´macµØÖ·
-            memcpy(eth->h_source, dev->dev_addr, ETH_ALEN);
-            _neighbour = dst_neigh_lookup_skb(dst_dir, skb);
-            if (_neighbour)
-            {
-                memcpy(eth->h_dest, _neighbour->ha, ETH_ALEN);
-                neigh_release(_neighbour);
-            }
-            else {
-                __flush_dcache_area(skb->data, skb->len);
-                kfree_skb(skb);
-                no_neighbour++;
-                goto drop_packet;
-            }
-
-            eth->h_proto = htons(ETH_P_IPV6);
-        }
-        skb->dev = dev;
-        skb->now_location |= FASTNAT_SUCC;
-		skb->vlan_proto = vlan_proto_raw;
-		skb->vlan_tci = vlan_tci_raw;
-        __flush_dcache_area(skb->data, skb->len);
-        spin_unlock_bh(&fast_fw_spinlock);
-        dev_queue_xmit(skb);
-		spin_lock_bh(&fast_fw_spinlock);
-    }
-    else
-    {
-        print_sun(SUN_DBG, "ERR &&&&&& %s DOWN, kfree_skb!!!!!!!! \n", skb->dev->name);
-        kfree_skb(skb);
-    }
-
-
-    print_sun(SUN_DBG, "skb : 0x%x, fast6_fw succ--------", skb);
-
-succ_out:
-drop_packet:
-    if (tmpl)
-        nf_conntrack_put(&tmpl->ct_general);
-    dst_release(dst_dir);
-    return 1;
-
-err_out :
-    dst_release(dst_dir);
-
-    nf_conntrack_put(&ct->ct_general);
-    print_sun(SUN_DBG, "skb : 0x%x, fast6_fw fail!!!!!!!!!!", skb);
-    if (tmpl) {
-        nf_ct_set(skb, (struct nf_conn *)&tmpl->ct_general, IP_CT_NEW);
-    }
-    else {
-        skb->_nfct = 0;
-    }
-    return 0; /* not fast nat */
-}
-
-//¹¤×÷ÔÚPOST_ROUTING½Úµã£¬ÓÃÓÚfastÁ´½ÓµÄ¸³ÖµºÍÌí¼Óhash±í
-unsigned int napt_handle6_fw(void *priv,
-                             struct sk_buff *skb,
-                             const struct nf_hook_state *state)
-{
-    struct nf_conn *ct;
-    enum ip_conntrack_info ctinfo;
-    u_int8_t protocol;
-    enum ip_conntrack_dir dir;
-    struct dst_entry *dst = skb_dst(skb);
-#ifdef CONFIG_ATHRS_HW_NAT
-    u_int32_t mask =0;
-#endif
-    struct neighbour *_neighbour = NULL;
-    struct net_device *out = state->out;
-
-    //¿ìËÙת·¢×Ü¿ª¹Ø
-    if (fastnat_level == FAST_CLOSE || fastnat_level == FAST_CLOSE_KEEP_LINK)
-    {
-        return NF_ACCEPT;
-    }
-
-    //¿ìËÙת·¢×Ó¹¦ÄÜλͼ¿ª¹Ø
-    if (!test_bit(FAST_TYPE_VERSION_BIT, &fast_switch)
-            || !test_bit(FAST_TYPE_FW6_BIT, &fast_switch))
-    {
-        return NF_ACCEPT;
-    }
-
-    if (!out)
-    {
-        return NF_ACCEPT;
-    }
-
-    //Ö»ÓÐTCP¡¢UDPÖ§³Öfast£¬ICMPÕÒµ½µÄct¿ÉÄÜÊÇTCP¡¢UDPµÄ£¬ÀýÈç: ¶Ë¿Ú²»¿É´ï£¬ËùÒÔ±ØÐëÏÔʾÅжÏ
-    if (ipv6_hdr(skb)->nexthdr != IPPROTO_TCP && ipv6_hdr(skb)->nexthdr != IPPROTO_UDP)
-        return NF_ACCEPT;
-
-    //×é²¥²»½¨Á´
-    if (ipv6_addr_is_multicast(&ipv6_hdr(skb)->daddr))
-    {
-        return NF_ACCEPT;
-    }
-
-    /*ÅжÏÊÇ·ñÓÐÏÂÒ»Ìø*/
-    if(!dst)
-    {
-        return NF_ACCEPT;
-    }
-
-    _neighbour = dst_neigh_lookup_skb(dst, skb);
-    if(!_neighbour)
-    {
-        return NF_ACCEPT;
-    }
-
-    if (memcmp(_neighbour->ha, zeromac, ETH_ALEN) == 0)
-    {
-        goto accept;
-    }
-
-    /*¼ì²é°ü³¤¶ÈÊÇ·ñ³¬¹ý³ö¿ÚÉ豸MTU*/
-    if (dst->dev && (skb->len > dst->dev->mtu))
-    {
-        goto accept;
-    }
-    if (!(ct = nf_ct_get(skb, &ctinfo)))
-    {
-        goto accept;
-    }
-
-    protocol = nf_ct_protonum(ct);
-
-    /* only forward */
-    if (!skb->skb_iif)
-    {
-        goto accept;
-    }
-
-    //¹ýÂ˲»ÐèÒª¾­¹ýfastnatµÄЭÒé°ü
-    if (check_skip_ports(ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.dst.u.all))
-    {
-        goto accept;
-    }
-
-    dir = CTINFO2DIR(ctinfo);
-
-    /*Ö»Õë¶ÔTCP/UDP½øÐÐfastnat*/
-    if (IPPROTO_TCP == protocol)
-    {
-        /*TCPÈý´ÎÎÕÊֳɹ¦*/
-        if(!test_bit(IPS_ASSURED_BIT, &ct->status))
-        {
-            goto accept;
-        }
-    }
-    else if (IPPROTO_UDP != protocol)
-    {
-        goto accept;
-    }
-
-    spin_lock_bh(&fast_fw_spinlock);
-    if (ct->fast_ct.fast_dst[dir] && (ct->fast_ct.fast_dst[dir] != dst))
-    {
-        fast_fw_conn_release(ct);
-    }
-
-    if (!ct->fast_ct.fast_dst[dir])
-    {
-        rcu_assign_pointer(ct->fast_ct.fast_dst[dir], dst);
-        ct->fast_ct.fast_brport[dir] = getBridgePort(_neighbour, out);
-        fast_dst_add_ct(dst, ct);
-    }
-
-    ct->fast_ct.isFast = FAST_CT_FW6;
-    spin_unlock_bh(&fast_fw_spinlock);
-accept:
-
-    neigh_release(_neighbour);
-    return NF_ACCEPT;
-}
-
-static struct nf_hook_ops fast6_fw_hook = {
-    .hook = napt_handle6_fw,
-    //.owner = THIS_MODULE,
-    .pf = PF_INET6,
-    .hooknum = NF_INET_POST_ROUTING,
-    .priority = NF_IP6_PRI_LAST,
-};
-
-
-int fast6_fw_init(void)
-{
-    int ret = 0;
-
-    ret = nf_register_net_hook(&init_net, &fast6_fw_hook);
-    if (ret != 0)
-    {
-        print_sun(SUN_ERR,"init fast6_fw_init failed\n");
-        return -EINVAL;
-    }
-    print_sun(SUN_DBG,"init fast6_fw_init done\n");
-
-    return 0;
-}
-
-int fast6_fw_cleanup(void)
-{
-    fast_release_all(RELEASE_ALL_DST);
-    nf_unregister_net_hook(&init_net, &fast6_fw_hook);
-    return 0;
-}
-
diff --git a/upstream/linux-5.10/net/core/fastproc/fast_common.c b/upstream/linux-5.10/net/core/fastproc/fast_common.c
deleted file mode 100755
index 69f3761..0000000
--- a/upstream/linux-5.10/net/core/fastproc/fast_common.c
+++ /dev/null
@@ -1,2113 +0,0 @@
-#include <linux/in.h>
-#include <linux/ip.h>
-#include <linux/udp.h>
-#include <linux/tcp.h>
-#include <linux/icmp.h>
-#include <net/ip.h>
-#include <linux/if_arp.h>
-#include <linux/inetdevice.h>
-#include <linux/netfilter.h>
-#include <linux/netfilter_ipv4.h>
-#include <linux/netfilter_arp.h>
-#include <linux/netfilter_ipv4/ip_tables.h>
-#include <linux/netfilter/xt_multiport.h>
-#include <linux/netfilter/xt_iprange.h>
-#include <linux/netfilter/nf_conntrack_tcp.h>
-#include <net/checksum.h>
-#include <net/dsfield.h>
-#include <net/route.h>
-#include <net/netfilter/nf_nat.h>
-#include <net/netfilter/nf_conntrack_helper.h>
-#include <linux/module.h>
-#include <linux/proc_fs.h>
-#include <net/SI/fast_common.h>
-#include <net/netfilter/nf_conntrack.h>
-#include <net/netfilter/nf_conntrack_l4proto.h>
-#include <net/netfilter/nf_conntrack_expect.h>
-#include <net/netfilter/nf_conntrack_helper.h>
-#include <net/netfilter/nf_conntrack_core.h>
-#include <net/netfilter/nf_conntrack_extend.h>
-#include <net/netfilter/nf_conntrack_acct.h>
-#include <net/netfilter/nf_conntrack_ecache.h>
-#include <net/netfilter/nf_conntrack_zones.h>
-#include <net/netfilter/nf_conntrack_timestamp.h>
-#include <net/netfilter/nf_conntrack_timeout.h>
-#include <net/netfilter/nf_nat.h>
-#include <net/SI/net_track.h>
-#include <net/SI/net_other.h>
-#include <net/SI/netioc_proc.h>
-#include <net/SI/net_cache.h>
-#include <net/SI/print_sun.h>
-#include <net/netfilter/nf_conntrack_zones.h>
-
-
-MODULE_LICENSE("GPL");
-
-/* ************************** ¿ìËÙת·¢¹«ÓõıäÁ¿ ************************** */
-struct kmem_cache *fast_head_cache;
-
-spinlock_t fast_fw_spinlock;             //×ÔÐýËø£¬±£»¤×ª·¢Êý¾ÝÏ໥²Ù×÷
-spinlock_t fastlocal_spinlock;           //×ÔÐýËø£¬±£»¤±¾µØÊý¾ÝÏ໥²Ù×÷
-
-/*
-* 0: ¹Ø±Õfastnat£¬×ß±ê×¼linux£¬¿ÉÒÔÖжÏÔ­Á´½ÓÖØÐÂÁ´½Ó
-* 1: ×ßIP²ã±ê×¼fasnat£¬½ø¶øÒýÓÃÈíÖжϵ÷¶È£¬ÐÔÄÜÂԲ³¡¾°ÈçÁ÷¿Ø¹¦ÄÜ
-* 2: ×ßnet_device²ãÃæµÄÇý¶¯µ½Çý¶¯£¬ÎÞÈíÖжÏ
-* 5: ¹Ø±Õfastnat£¬×ß±ê×¼linux£¬±£³ÖÔ­Á´½Ó²»ÖØÐÂÁ´½Ó
-* ¿ÉÒÔͨ¹ýprocÐÞ¸ÄÖµ
-*/
-int fastnat_level = FAST_NET_DEVICE;/*FAST_NET_DEVICE; modify by zdd, close fastnat*/
-
-/* λͼ·½Ê½  --- ¸÷×Ó¹¦ÄÜ¿ìËÙת·¢¿ª¹Ø£¬²Î¿¼fast_common.hÖж¨Òå*/
-
-//unsigned long fast_switch = 0x67;
-unsigned long fast_switch = 0x0;
-
-/* ************************ ×ÓÍø¼ä ¿ìËÙת·¢Ïà¹Ø±äÁ¿ ************************ */
-int fastbr_level = 1;                 //ÊÇ·ñ´ò¿ªfastbr¹¦ÄÜ
-
-/* **************************** ƽ̨»¯Ïà¹Ø±äÁ¿ **************************** */
-/*
- *ÏÂÃæbr_nameµÈ¼¸¸ö×Ö·û´®Êý×éͨ¹ýproc½ÚµãÉèÖã¬
- *´Ë´¦½öÊǶ¨ÒåºÍ¸³³õÖµ¡£
- */
-char br_name[MAX_NET_DEVICE_NAME_LEN + 1] = "br0";
-char ps_name[MAX_NET_DEVICE_NAME_LEN + 1] = "wan1";
-char usb_name[MAX_NET_DEVICE_NAME_LEN + 1] = "usblan0";
-char ppp_name[MAX_NET_DEVICE_NAME_LEN + 1] = "ppp";
-//cp:µ¥ºË£¬Ä£¿éÐÎ̬ÐèҪ·Óɶ¨ÖÆ
-//ap:Ë«ºË£¬Ä£¿éÐÎ̬¿É¼òµ¥ÇŽÓ
-char need_jilian[MAX_NET_DEVICE_NAME_LEN + 1] = "0";
-
-//ÒÔÏÂÈý¸öÓÅÏȼ¶ÅäÖã¬Ö»×¼ÍøÂç×é¹Ç¸Éµ÷Õû£¬·ñÔòÑÏÖØÓ°Ïì¸÷¸ö·½ÏòµÄÐÔÄÜ
-int  fast_br_level = 1;
-int  fast_fwd_level = 2;
-int  fast_local_level = 0;
-unsigned char zeromac[ETH_ALEN] = "";
-
-/* ÄÚºËÁ´Â·×´Ì¬µÈµÄ±äÁ¿¡¢½Ó¿ÚÌ壬À´×ÔÄںˣ¬ÒÆÖ²ÐÂÄÚºËʱÐèÒª¸üÐÂ*/
-#define sNO TCP_CONNTRACK_NONE
-#define sSS TCP_CONNTRACK_SYN_SENT
-#define sSR TCP_CONNTRACK_SYN_RECV
-#define sES TCP_CONNTRACK_ESTABLISHED
-#define sFW TCP_CONNTRACK_FIN_WAIT
-#define sCW TCP_CONNTRACK_CLOSE_WAIT
-#define sLA TCP_CONNTRACK_LAST_ACK
-#define sTW TCP_CONNTRACK_TIME_WAIT
-#define sCL TCP_CONNTRACK_CLOSE
-#define sS2 TCP_CONNTRACK_SYN_SENT2
-#define sIV TCP_CONNTRACK_MAX
-#define sIG TCP_CONNTRACK_IGNORE
-
-/* What TCP flags are set from RST/SYN/FIN/ACK. */
-enum tcp_bit_set {
-    TCP_SYN_SET,
-    TCP_SYNACK_SET,
-    TCP_FIN_SET,
-    TCP_ACK_SET,
-    TCP_RST_SET,
-    TCP_NONE_SET,
-};
-
-//À´×Ônf_conntrack_proto_tcp.c
-static const u8 tcp_conntracks[2][6][TCP_CONNTRACK_MAX] = {
-    {
-        /* ORIGINAL */
-        /*          sNO, sSS, sSR, sES, sFW, sCW, sLA, sTW, sCL, sS2    */
-        /*syn*/       { sSS, sSS, sIG, sIG, sIG, sIG, sIG, sSS, sSS, sS2 },
-        /*
-         *    sNO -> sSS    Initialize a new connection
-         *    sSS -> sSS    Retransmitted SYN
-         *    sS2 -> sS2    Late retransmitted SYN
-         *    sSR -> sIG
-         *    sES -> sIG    Error: SYNs in window outside the SYN_SENT state
-         *            are errors. Receiver will reply with RST
-         *            and close the connection.
-         *            Or we are not in sync and hold a dead connection.
-         *    sFW -> sIG
-         *    sCW -> sIG
-         *    sLA -> sIG
-         *    sTW -> sSS    Reopened connection (RFC 1122).
-         *    sCL -> sSS
-         */
-        /*          sNO, sSS, sSR, sES, sFW, sCW, sLA, sTW, sCL, sS2    */
-        /*synack*/ { sIV, sIV, sSR, sIV, sIV, sIV, sIV, sIV, sIV, sSR },
-        /*
-         *    sNO -> sIV    Too late and no reason to do anything
-         *    sSS -> sIV    Client can't send SYN and then SYN/ACK
-         *    sS2 -> sSR    SYN/ACK sent to SYN2 in simultaneous open
-         *    sSR -> sSR    Late retransmitted SYN/ACK in simultaneous open
-         *    sES -> sIV    Invalid SYN/ACK packets sent by the client
-         *    sFW -> sIV
-         *    sCW -> sIV
-         *    sLA -> sIV
-         *    sTW -> sIV
-         *    sCL -> sIV
-         */
-        /*          sNO, sSS, sSR, sES, sFW, sCW, sLA, sTW, sCL, sS2    */
-        /*fin*/    { sIV, sIV, sFW, sFW, sLA, sLA, sLA, sTW, sCL, sIV },
-        /*
-         *    sNO -> sIV    Too late and no reason to do anything...
-         *    sSS -> sIV    Client migth not send FIN in this state:
-         *            we enforce waiting for a SYN/ACK reply first.
-         *    sS2 -> sIV
-         *    sSR -> sFW    Close started.
-         *    sES -> sFW
-         *    sFW -> sLA    FIN seen in both directions, waiting for
-         *            the last ACK.
-         *            Migth be a retransmitted FIN as well...
-         *    sCW -> sLA
-         *    sLA -> sLA    Retransmitted FIN. Remain in the same state.
-         *    sTW -> sTW
-         *    sCL -> sCL
-         */
-        /*          sNO, sSS, sSR, sES, sFW, sCW, sLA, sTW, sCL, sS2    */
-        /*ack*/       { sES, sIV, sES, sES, sCW, sCW, sTW, sTW, sCL, sIV },
-        /*
-         *    sNO -> sES    Assumed.
-         *    sSS -> sIV    ACK is invalid: we haven't seen a SYN/ACK yet.
-         *    sS2 -> sIV
-         *    sSR -> sES    Established state is reached.
-         *    sES -> sES    :-)
-         *    sFW -> sCW    Normal close request answered by ACK.
-         *    sCW -> sCW
-         *    sLA -> sTW    Last ACK detected.
-         *    sTW -> sTW    Retransmitted last ACK. Remain in the same state.
-         *    sCL -> sCL
-         */
-        /*          sNO, sSS, sSR, sES, sFW, sCW, sLA, sTW, sCL, sS2    */
-        /*rst*/    { sIV, sCL, sCL, sCL, sCL, sCL, sCL, sCL, sCL, sCL },
-        /*none*/   { sIV, sIV, sIV, sIV, sIV, sIV, sIV, sIV, sIV, sIV }
-    },
-    {
-        /* REPLY */
-        /*          sNO, sSS, sSR, sES, sFW, sCW, sLA, sTW, sCL, sS2    */
-        /*syn*/       { sIV, sS2, sIV, sIV, sIV, sIV, sIV, sIV, sIV, sS2 },
-        /*
-         *    sNO -> sIV    Never reached.
-         *    sSS -> sS2    Simultaneous open
-         *    sS2 -> sS2    Retransmitted simultaneous SYN
-         *    sSR -> sIV    Invalid SYN packets sent by the server
-         *    sES -> sIV
-         *    sFW -> sIV
-         *    sCW -> sIV
-         *    sLA -> sIV
-         *    sTW -> sIV    Reopened connection, but server may not do it.
-         *    sCL -> sIV
-         */
-        /*          sNO, sSS, sSR, sES, sFW, sCW, sLA, sTW, sCL, sS2    */
-        /*synack*/ { sIV, sSR, sIG, sIG, sIG, sIG, sIG, sIG, sIG, sSR },
-        /*
-         *    sSS -> sSR    Standard open.
-         *    sS2 -> sSR    Simultaneous open
-         *    sSR -> sIG    Retransmitted SYN/ACK, ignore it.
-         *    sES -> sIG    Late retransmitted SYN/ACK?
-         *    sFW -> sIG    Might be SYN/ACK answering ignored SYN
-         *    sCW -> sIG
-         *    sLA -> sIG
-         *    sTW -> sIG
-         *    sCL -> sIG
-         */
-        /*          sNO, sSS, sSR, sES, sFW, sCW, sLA, sTW, sCL, sS2    */
-        /*fin*/    { sIV, sIV, sFW, sFW, sLA, sLA, sLA, sTW, sCL, sIV },
-        /*
-         *    sSS -> sIV    Server might not send FIN in this state.
-         *    sS2 -> sIV
-         *    sSR -> sFW    Close started.
-         *    sES -> sFW
-         *    sFW -> sLA    FIN seen in both directions.
-         *    sCW -> sLA
-         *    sLA -> sLA    Retransmitted FIN.
-         *    sTW -> sTW
-         *    sCL -> sCL
-         */
-        /*          sNO, sSS, sSR, sES, sFW, sCW, sLA, sTW, sCL, sS2    */
-        /*ack*/       { sIV, sIG, sSR, sES, sCW, sCW, sTW, sTW, sCL, sIG },
-        /*
-         *    sSS -> sIG    Might be a half-open connection.
-         *    sS2 -> sIG
-         *    sSR -> sSR    Might answer late resent SYN.
-         *    sES -> sES    :-)
-         *    sFW -> sCW    Normal close request answered by ACK.
-         *    sCW -> sCW
-         *    sLA -> sTW    Last ACK detected.
-         *    sTW -> sTW    Retransmitted last ACK.
-         *    sCL -> sCL
-         */
-        /*          sNO, sSS, sSR, sES, sFW, sCW, sLA, sTW, sCL, sS2    */
-        /*rst*/    { sIV, sCL, sCL, sCL, sCL, sCL, sCL, sCL, sCL, sCL },
-        /*none*/   { sIV, sIV, sIV, sIV, sIV, sIV, sIV, sIV, sIV, sIV }
-    }
-};
-
-#define SECS * HZ
-#define MINS * 60 SECS
-#define HOURS * 60 MINS
-#define DAYS * 24 HOURS
-
-//À´×Ônf_conntrack_proto_tcp.c
-unsigned int tcp_timeouts[TCP_CONNTRACK_TIMEOUT_MAX] __read_mostly = {
-    [TCP_CONNTRACK_SYN_SENT]    = 2 MINS,
-    [TCP_CONNTRACK_SYN_RECV]    = 5 MINS, //60 SECS,
-    [TCP_CONNTRACK_ESTABLISHED]    = 2 HOURS, //5 DAYS
-    [TCP_CONNTRACK_FIN_WAIT]    = 2 MINS,
-    [TCP_CONNTRACK_CLOSE_WAIT]    = 60 SECS,
-    [TCP_CONNTRACK_LAST_ACK]    = 30 SECS,
-    [TCP_CONNTRACK_TIME_WAIT]    = 2 MINS,
-    [TCP_CONNTRACK_CLOSE]        = 120 SECS, /*normal is 10SEC*/
-    [TCP_CONNTRACK_SYN_SENT2]    = 2 MINS,
-    /* RFC1122 says the R2 limit should be at least 100 seconds.
-       Linux uses 15 packets as limit, which corresponds
-       to ~13-30min depending on RTO. */
-    //[TCP_CONNTRACK_MAX]    = 2 MINS,
-    //[TCP_CONNTRACK_IGNORE]    = 2 MINS,
-    [TCP_CONNTRACK_RETRANS]    = 5 MINS,
-    [TCP_CONNTRACK_UNACK]      = 5 MINS,
-};
-
-unsigned int fast_udp_timeout_stream = 180*HZ;
-unsigned int fast_udp_timeout = 120*HZ; /*normal is 30*HZ*/
-
-//²»Ö§³ÖfastnatµÄЭÒéÀàÐÍ
-//²»ÔÙʹÓ㬸ijÉͨ¹ýproc¶¯Ì¬´«Èëµ½nofast_proto£¬ÔÝʱ±£Áô¶Îʱ¼ä£¬Èÿª·¢Á˽â¶ÔÓ¦µÄ¶Ë¿ÚЭÒéºÅ
-unsigned int nofast_port[NOFAST_PROTO_MAX] = {
-    21,      // FTP¶Ë¿Ú£¬ÓÐʱ±»Îļþ·þÎñЭÒé (FSP)ʹÓÃ
-    22,      // ssh °²È«Shell(SSH)·þÎñ
-    23,      // telnet Telnet ·þÎñ
-    25,      // smtp ¼òµ¥Óʼþ´«ÊäЭÒé(SMTP)
-    53,      // domain ÓòÃû·þÎñ(Èç BIND)
-    67,      // server¶Ëdhcp·þÎñ¶Ë¿Ú
-    68,      // client¶Ëdhcp·þÎñ¶Ë¿Ú
-    69,      // tftp СÎļþ´«ÊäЭÒé(TFTP)
-    110,     // ÓʾÖЭÒé°æ±¾3
-    115,     // sftp °²È«Îļþ´«ÊäЭÒé(SFTP)·þÎñ
-    123,     // ntp ÍøÂçʱ¼äЭÒé(NTP)
-    443,     // https °²È«³¬Îı¾´«ÊäЭÒé(HTTP)
-    500,     // isakmp »¥ÁªÍø°²È«¹ØÁªºÍÔ¿³×¹ÜÀíЭÒé(ISAKMP)
-    1352,    // Lotus Notes
-    1723,    // PPTP TCP
-    1990,    // stun-p1 cisco STUN Priority 1 port
-    1991,    // stun-p2 cisco STUN Priority 2 port
-    1992,    // stun-p3 cisco STUN Priority 3 port,ipsendmsg IPsendmsg
-    1993,    // snmp-tcp-port cisco SNMP TCP port
-    1994,    // stun-port cisco serial tunnel portTCP
-    1995,    // perf-port cisco perf portTCP
-    1996,    // tr-rsrb-port cisco Remote SRB portTCP
-    1997,    // gdp-port Cisco Íø¹Ø·¢ÏÖЭÒé(GDP)
-    1998,    // x25-svc-port cisco X.25 service
-    4500,    // NAT-T UDP
-    5060     // ¶Ë¿Ú¶Ë¿Ú:5060/udpÃèÊö:SessionInitiationProtocol(SIP»Ø»°·¢ÆðЭÒé)
-};
-
-/* ******************************* º¯ÊýÉêÃ÷ ******************************* */
-int (*fast_nat4_proc)(struct sk_buff *skb);
-int (*fast_nat6_proc)(struct sk_buff *skb);
-int (*fast_fw4_proc)(struct nf_conn *tmpl,
-                     struct sk_buff *skb,
-                     struct nf_conn *ct,
-                     struct nf_conntrack_l4proto *l4proto,
-                     unsigned int dataoff,
-                     int dir,
-                     u_int8_t protonum);
-int (*fast_fw6_proc)(struct nf_conn *tmpl,
-                     struct sk_buff *skb,
-                     struct nf_conn *ct,
-                     struct nf_conntrack_l4proto *l4proto,
-                     unsigned int dataoff,
-                     int dir,
-                     u_int8_t protonum);
-
-int (*fast_local4_proc)(struct nf_conn *tmpl,
-                        struct sk_buff *skb,
-                        struct nf_conn *ct,
-                        struct nf_conntrack_l4proto *l4proto,
-                        unsigned int dataoff,
-                        int dir,
-                        u_int8_t protonum);
-int (*fast_local6_proc)(struct nf_conn *tmpl,
-                        struct sk_buff *skb,
-                        struct nf_conn *ct,
-                        struct nf_conntrack_l4proto *l4proto,
-                        unsigned int dataoff,
-                        int dir,
-                        u_int8_t protonum);
-int (*fast_local4_output_proc)(struct sk_buff *skb);
-int (*fast_local6_output_proc)(struct sk_buff *skb);
-
-int (*fast_br_proc)(struct sk_buff *skb);
-
-extern int fast_nat_recv(struct sk_buff *skb);
-extern int fast6_recv(struct sk_buff *skb);
-
-unsigned long iphdr_err_num =0;
-unsigned long ip6hdr_err_num =0;
-unsigned long tcphdr_err_num =0;
-unsigned long tcp6hdr_err_num =0;
-
-extern int fast4_fw_recv(struct nf_conn *tmpl,
-                         struct sk_buff *skb,
-                         struct nf_conn *ct,
-                         struct nf_conntrack_l4proto *l4proto,
-                         unsigned int dataoff,
-                         int dir,
-                         u_int8_t protonum);
-extern int fast6_fw_recv(struct nf_conn *tmpl,
-                         struct sk_buff *skb,
-                         struct nf_conn *ct,
-                         struct nf_conntrack_l4proto *l4proto,
-                         unsigned int dataoff,
-                         int dir,
-                         u_int8_t protonum);
-
-//extern int fast_br(struct sk_buff *skb);
-//extern struct net_device *getbrport_bydst(struct net_device *dev,unsigned char *dest);
-extern struct nf_conntrack_tuple_hash *
-nf_conntrack_find_get(struct net *net, const struct nf_conntrack_zone *zone,
-                      const struct nf_conntrack_tuple *tuple);
-
-
-extern int (*fast_from_softirq) (struct sk_buff *skb);
-extern int (*fast_from_driver)(struct sk_buff *skb, struct net_device* dev);
-
-extern void fastnat_cleanup_links(void);
-extern void fast6_cleanup_links(void);
-
-extern fast_entry_t *cur_timeout_entry;
-extern int tcpack_timeout(fast_entry_t *entry, unsigned long *next_schedule, int *set_next);
-extern int tcpack_rel(fast_entry_t *entry);
-
-extern int tsp_fastnat_init(void);
-extern int tsp_fastnat_cleanup(void);
-
-extern int fast4_fw_init(void);
-extern int fast6_fw_init(void);
-
-extern int fast4_fw_cleanup(void);
-extern int fast6_fw_cleanup(void);
-
-extern int tsp_fast6_init(void);
-extern int tsp_fast6_cleanup(void);
-
-extern int fastnat_event(traverse_command_t *cmd);
-extern int fast6_event(traverse_command_t *cmd);
-
-//¿ìËÙת·¢procÎļþµÄ³õʼ»¯
-extern int fast_conntrack_init_proc(void );
-
-//ÄÚºËÆ½Ì¨»¯procÎļþµÄ³õʼ»¯
-extern int net_adapter_init_proc(void );
-
-unsigned int (*tsp_mirror_handle)(struct sk_buff *skb);
-
-extern void net_dbg_perf_dev_recv(char * packet_addr,char* node_str);
-extern void net_dbg_perf_clear_last_item(struct sk_buff *skb);
-
-
-/* ******************************* º¯ÊýʵÏÖ ******************************* */
-static int fast_iphdr_check(struct sk_buff *skb, int proto)
-{
-    const struct iphdr *iph;
-    const struct ipv6hdr *ip6h;
-    u32 len;
-
-    if (proto == ETH_P_IP)
-    {
-        iph = ip_hdr(skb);
-
-        if (iph->ihl < 5 || iph->version != 4)
-            return 0;
-
-        len = ntohs(iph->tot_len);
-        if (skb->len < len) {
-            return 0;
-        }
-        if (len < (iph->ihl*4))
-            return 0;
-    }
-    else if(proto == ETH_P_IPV6)
-    {
-        ip6h = ipv6_hdr(skb);
-        if (ip6h->version != 6)
-            return 0;
-
-        len = ntohs(ip6h->payload_len);
-        if (len || ip6h->nexthdr != NEXTHDR_HOP) {
-            if (len + sizeof(struct ipv6hdr) > skb->len) {
-                return 0;
-            }
-        }
-
-    }
-
-    return 1;
-}
-
-/*
- * Based on ipv6_skip_exthdr() in net/ipv6/exthdr.c
- *
- * This function parses (probably truncated) exthdr set "hdr"
- * of length "len". "nexthdrp" initially points to some place,
- * where type of the first header can be found.
- *
- * It skips all well-known exthdrs, and returns pointer to the start
- * of unparsable area i.e. the first header with unknown type.
- * if success, *nexthdr is updated by type/protocol of this header.
- *
- * NOTES: - it may return pointer pointing beyond end of packet,
- *          if the last recognized header is truncated in the middle.
- *        - if packet is truncated, so that all parsed headers are skipped,
- *          it returns -1.
- *        - if packet is fragmented, return pointer of the fragment header.
- *        - ESP is unparsable for now and considered like
- *          normal payload protocol.
- *        - Note also special handling of AUTH header. Thanks to IPsec wizards.
- */
-
-static int nf_ct_ipv6_skip_exthdr(const struct sk_buff *skb, int start,
-                                  u8 *nexthdrp, int len)
-{
-    u8 nexthdr = *nexthdrp;
-
-    while (ipv6_ext_hdr(nexthdr)) {
-        struct ipv6_opt_hdr hdr;
-        int hdrlen;
-
-        if (len < (int)sizeof(struct ipv6_opt_hdr))
-            return -1;
-        if (nexthdr == NEXTHDR_NONE)
-            break;
-        if (nexthdr == NEXTHDR_FRAGMENT)
-            break;
-        if (skb_copy_bits(skb, start, &hdr, sizeof(hdr)))
-            BUG();
-        if (nexthdr == NEXTHDR_AUTH)
-            hdrlen = (hdr.hdrlen+2)<<2;
-        else
-            hdrlen = ipv6_optlen(&hdr);
-
-        nexthdr = hdr.nexthdr;
-        len -= hdrlen;
-        start += hdrlen;
-    }
-
-    *nexthdrp = nexthdr;
-    return start;
-}
-
-
-static int fast_tcphdr_check(struct sk_buff *skb, int proto)
-{
-    const struct iphdr *iph = NULL;
-    const struct ipv6hdr *ip6h = NULL;
-    struct tcphdr *tcph = NULL;
-    unsigned int iphdr_len = 0;
-    unsigned int ip6hdr_len = 0;
-    unsigned int tcphdr_len = 0;
-    unsigned char *l4head = NULL;
-    __u8 protonum;
-    int extoff = 0;
-
-
-
-    if (proto == ETH_P_IP)
-    {
-        iph = ip_hdr(skb);
-        iphdr_len = iph->ihl * 4;
-        tcph = (struct tcphdr *)((unsigned char*)iph + iphdr_len);
-        tcphdr_len = sizeof(struct tcphdr);
-
-        if (tcphdr_len > skb->len - iphdr_len)
-            return 0;
-
-        //tcpÍ·³¤¶ÈºÍdoffÊÇ·ñÆ¥Åä
-        if (tcph->doff < tcphdr_len/4)
-            return 0;
-
-        if (tcph->doff*4 > skb->len - iphdr_len)
-            return 0;
-    }
-    else if(proto == ETH_P_IPV6)
-    {
-        ip6h = ipv6_hdr(skb);
-        ip6hdr_len = sizeof(struct ipv6hdr);
-        tcphdr_len = sizeof(struct tcphdr);
-
-        //²Î¿¼º¯Êýipv6_get_l4proto£¬È¡³öËIJãЭÒéºÅ
-        extoff = skb_network_offset(skb) + ip6hdr_len;
-        protonum = 0;
-        if (skb_copy_bits(skb, skb_network_offset(skb) + offsetof(struct ipv6hdr, nexthdr),
-                          &protonum, sizeof(protonum)) != 0) {
-            return 0;
-        }
-        extoff = nf_ct_ipv6_skip_exthdr(skb, extoff, &protonum, skb->len - extoff);
-
-        if(protonum != NEXTHDR_TCP)
-            return 1;
-
-        tcph = (struct tcphdr *)((unsigned char*)ip6h + extoff);
-        if (tcphdr_len > skb->len - extoff)
-            return 0;
-
-        //tcpÍ·³¤¶ÈºÍdoffÊÇ·ñÆ¥Åä
-        if (tcph->doff < tcphdr_len/4)
-            return 0;
-
-        if (tcph->doff*4 > skb->len - extoff)
-            return 0;
-    }
-
-
-    return 1;
-}
-static inline int deliver_skb(struct sk_buff *skb,
-                              struct packet_type *pt_prev,
-                              struct net_device *orig_dev)
-{
-    atomic_inc(&skb->users.refs);
-    return pt_prev->func(skb, skb->dev, pt_prev, orig_dev);
-}
-
-void *get_ct_for_ap(struct sk_buff *skb)
-{
-	if(skb){
-		enum ip_conntrack_info ctinfo;
-		struct nf_conn * ct = nf_ct_get(skb, &ctinfo);
-		if(ct){
-			nf_conntrack_get(&ct->ct_general);
-			nf_conntrack_get(&ct->ct_general);
-			return &ct->ct_general;
-		}
-	}
-	return NULL;
-}
-
-void put_ct_for_ap(void *pct)
-{
-	struct nf_conn *ct = (struct nf_conn *)pct;
-	nf_conntrack_put((struct nf_conntrack *)ct);
-	nf_conntrack_put((struct nf_conntrack *)ct);
-}
-
-//´Ë´¦½øÐÐRAW_PACKETÀàÐ͵Äsocket½ÓÊÕ´¦Àí£¬ÒÔ½â¾ö__netif_receive_skbÖÐÕý³£×¥°üʱ£¬Êý¾Ý°üÄÚÈÝÒѱ»Ð޸ĵÄÇé¿ö
-void fast_tcpdump(struct sk_buff *skb)
-{
-    struct packet_type *ptype = NULL;
-
-    rcu_read_lock();
-    list_for_each_entry_rcu(ptype, &ptype_all, list)
-    {
-        if (!ptype->dev || ptype->dev == skb->dev)
-        {
-            skbinfo_add(NULL, SKB_IRQ_FREE);
-            deliver_skb(skb, ptype, skb->dev);
-        }
-    }
-    rcu_read_unlock();
-}
-
-//²Î¿¼ip_finish_output2,À©³äskbÍ·²¿
-struct sk_buff *fast_expand_headroom(struct sk_buff *skb, struct net_device *dev) {
-    unsigned int hh_len = LL_RESERVED_SPACE(dev);
-    struct sk_buff *skb2 = NULL;
-    if (unlikely(skb_headroom(skb) < hh_len && dev->header_ops)) {
-        skb2 = skb_realloc_headroom(skb, max(hh_len, NET_SKB_PAD));
-        if(skb2)
-            clean_cache(skb2->data,skb2->len);
-        kfree_skb(skb);
-        return skb2;
-    }
-    return skb;
-}
-
-//²Î¿¼ip6_xmit,À©³äskbÍ·²¿
-struct sk_buff *fast_expand_headroom_v6(struct sk_buff *skb, struct net_device *dev) {
-    unsigned int hh_len = LL_RESERVED_SPACE(dev) + sizeof(struct ipv6hdr);
-    struct sk_buff *skb2 = NULL;
-    if (unlikely(skb_headroom(skb) < hh_len)) {
-        skb2 = skb_realloc_headroom(skb, max(hh_len, NET_SKB_PAD));
-        if(skb2)
-            clean_cache(skb2->data,skb2->len);
-        kfree_skb(skb);
-        return skb2;
-    }
-    return skb;
-}
-
-
-/* ɾ³ýÒ»ÌõÁ¬½Ó */
-fast_entry_t *fn_list_del(fast_list_t *list_head, fast_entry_t *entry)
-{
-    fast_entry_t *ret_entry = NULL, **pprev = NULL;
-
-    if (!entry)
-    {
-        return NULL;
-    }
-
-    pprev = &list_head->next;
-    for (ret_entry = list_head->next; ret_entry; ret_entry = ret_entry->next)
-    {
-        if (ret_entry == entry)
-        {
-            *pprev = ret_entry->next;
-            list_head->count--;
-            break;
-        }
-        pprev = &ret_entry->next;
-    }
-    kmem_cache_free(fast_head_cache, entry);
-    netslab_dec(FAST_SLAB);
-    return NULL;
-}
-
-//Ìí¼Ó½Úµã
-void fn_list_add(fast_list_t *list_head, fast_entry_t *entry)
-{
-    entry->next = list_head->next;
-    list_head->next = entry;
-    list_head->count++;
-}
-
-//²éѯÊý¾Ý
-fast_entry_data_t *fast_find_entry_data(const struct hlist_nulls_head *working_hash, const struct nf_conntrack_tuple *tuple)
-{
-    struct nf_conntrack_tuple_hash *h;
-    struct hlist_nulls_node *n;
-    unsigned int hash;
-
-    hash = hash_conntrack_fast(tuple);
-    hlist_nulls_for_each_entry_rcu(h, n, &working_hash[hash], hnnode)
-    {
-        if (nf_ct_tuple_equal(tuple, &h->tuple))
-        {
-            return fast_hash_to_data(h);
-        }
-    }
-
-    return NULL;
-}
-
-//Ìí¼Ó½Úµã
-int fast_add_entry(struct hlist_nulls_head *working_hash, fast_entry_data_t *entry_data)
-{
-    unsigned int hash;
-
-    hash = hash_conntrack_fast(&entry_data->tuplehash.tuple);
-    if (fast_find_entry_data(working_hash, &entry_data->tuplehash.tuple))
-    {
-        return 0;
-    }
-
-    hlist_nulls_add_head_rcu(&entry_data->tuplehash.hnnode, &working_hash[hash]);
-    //ÒòΪÔÚµ±Ç°Á÷³ÌÖУ¬devÒѾ­±»holdסÁË£¬ËùÒÔ´Ë´¦²»ÓÃrcu_read_lock();±£»¤£¬ÎÊÌâ²»´ó
-    dev_hold(entry_data->outdev);
-
-    return 0;
-}
-
-static void workinghash_del_node(fast_entry_t *entry)
-{
-    int i = 0;
-
-    for (i = 0; i < IP_CT_DIR_MAX; i++)
-    {
-        //if (entry->flags & (1 << i))
-        if ((entry->flags & (1 << i))&&(0 != entry->data[i].tuplehash.hnnode.next))
-        {
-            hlist_nulls_del_rcu(&entry->data[i].tuplehash.hnnode);
-            //hlist_nulls_del(&entry->data[i].tuplehash.hnnode);
-            dev_put(entry->data[i].outdev);
-        }
-    }
-}
-
-/*ɾ³ýÁ¬½Ó*/
-static void fastlist_del_entry(fast_list_t *list_head, fast_entry_t *entry)
-{
-    tcpack_rel(entry);
-    //nf_ct_put(entry->ct);
-    atomic_dec(&(entry->ct->ct_general.use));
-    fn_list_del(list_head, entry);
-}
-
-/*fast³¬Ê±´¦Àí£¬É¾³ýÁ¬½Ó*/
-/*jiangjing, ÐÞ¸ÄÈë¿Ú²ÎÊýÀàÐÍΪunsigned long*/
-extern spinlock_t fast6_spinlock;
-extern spinlock_t fastnat_spinlock;
-static void fast_timeout(struct timer_list *ptimer)
-{
-    fast_entry_t *entry = (fast_entry_t *)(ptimer->data);
-    fast_entry_t *ret_entry = NULL;
-    struct fast_list_s *list_head = entry->list_head;
-    spinlock_t *fast_spinlock = entry->fast_spinlock;
-    if(fast_spinlock == &fast6_spinlock || fast_spinlock == &fastnat_spinlock)
-    {
-        spin_lock_bh(fast_spinlock);
-
-        for (ret_entry = list_head->next; ret_entry; ret_entry = ret_entry->next)
-        {
-            if (ret_entry == entry)
-            {
-                workinghash_del_node(entry);
-                fastlist_del_entry(entry->list_head, entry);
-                spin_unlock_bh(fast_spinlock);
-                return;
-            }
-        }
-        spin_unlock_bh(fast_spinlock);
-    }
-}
-
-//²éѯ½Úµã£¬²é²»µ½Ôòд´½¨
-fast_entry_t *fast_get_entry(fast_list_t *list_head, struct nf_conn *ct, char dir)
-{
-    fast_entry_t *ret = NULL;
-    u_int8_t protocol;
-    unsigned long expires;
-
-    for (ret = list_head->next; ret; ret = ret->next)
-    {
-        if (ret->ct == ct)
-        {
-            protocol = nf_ct_protonum(ct);
-            if (IPPROTO_TCP == protocol)
-            {
-                /*tcp*/
-                expires = jiffies + tcp_timeouts[ct->proto.tcp.state];
-            }
-            else
-            {
-                /*udp*/
-                if (test_bit(IPS_SEEN_REPLY_BIT, &ct->status))
-                {
-                    expires = jiffies + fast_udp_timeout_stream;
-                }
-                else
-                {
-                    expires = jiffies + fast_udp_timeout;
-                }
-
-
-            }
-            mod_timer(&ret->timeout, expires);
-            return ret;
-        }
-    }
-
-    /*Ö»Õë¶Ôoriginal·½Ïò´´½¨Á¬½Ó*/
-    if (IP_CT_DIR_ORIGINAL != dir)
-    {
-        return NULL;
-    }
-
-    //Á½ÖÖ¶¼ÊÇslab»úÖÆ£¬kmallocÊÇͨÓÃslab£¬ºóÕßÊÇרÊôslab£¬¸Ä³ÉרÊôslab
-    ret = kmem_cache_alloc(fast_head_cache, GFP_ATOMIC);
-    if (ret == NULL)
-    {
-        print_sun(SUN_ERR,"fast_get_entry: kmalloc fail!\n");
-        return NULL;
-    }
-    netslab_inc(FAST_SLAB);
-    memset(ret, 0, sizeof(fast_entry_t));
-    ret->ct = ct;
-    ret->list_head = list_head;
-
-    //ÉèÖö¨Ê±Æ÷
-    __init_timer(&ret->timeout, NULL, 0);
-
-    protocol = nf_ct_protonum(ct);
-    if (IPPROTO_TCP == protocol)
-    {
-        /*tcp*/
-        ret->timeout.expires = jiffies + tcp_timeouts[ct->proto.tcp.state];
-    }
-    else
-    {
-        /*udp*/
-        if (test_bit(IPS_SEEN_REPLY_BIT, &ct->status))
-        {
-            ret->timeout.expires = jiffies + fast_udp_timeout_stream;
-        }
-        else
-        {
-            ret->timeout.expires = jiffies + fast_udp_timeout;
-        }
-    }
-
-    ret->timeout.data = (unsigned long)ret;
-    ret->timeout.function = fast_timeout;
-    add_timer(&ret->timeout);
-
-    fn_list_add(list_head, ret);
-
-    return ret;
-}
-
-unsigned int get_conntrack_index(const struct tcphdr *tcph)
-{
-    if (tcph->rst) return TCP_RST_SET;
-    else if (tcph->syn) return (tcph->ack ? TCP_SYNACK_SET : TCP_SYN_SET);
-    else if (tcph->fin) return TCP_FIN_SET;
-    else if (tcph->ack) return TCP_ACK_SET;
-    else return TCP_NONE_SET;
-}
-
-/*¸üÐÂtcp³¬Ê±¶¨Ê±Æ÷*/
-void update_tcp_timeout(fast_entry_t *entry, fast_entry_data_t *entry_data, struct tcphdr *tcph)
-{
-    enum tcp_conntrack new_state, old_state;
-    unsigned int dir, index;
-
-    old_state = entry->ct->proto.tcp.state;
-    dir = entry_data->tuplehash.tuple.dst.dir;
-
-    if (tcph == NULL || old_state >=TCP_CONNTRACK_MAX)
-    {
-        print_sun(SUN_ERR,"update_tcp_timeout tcph is null! \n");
-        return;
-    }
-    index = get_conntrack_index(tcph);
-
-    /*¸üÐÂTCPÁ´½Ó״̬*/
-    new_state = tcp_conntracks[dir][index][old_state];
-    if(old_state != new_state)
-    {
-        //²Î¿¼nf_conntrack_proto_tcp.cº¯Êýtcp_packet
-        if (new_state == TCP_CONNTRACK_IGNORE)
-            new_state = TCP_CONNTRACK_SYN_RECV;
-        else if (new_state == TCP_CONNTRACK_MAX)
-            return;
-
-        entry->ct->proto.tcp.state = new_state;
-        //¶¨Ê±Æ÷´æ»îʱ¼ä¸Ä±äʱ²Åµ÷Óó¬Ê±¼ì²â£¬¼õÉÙ±éÀúÁ´±í´ÎÊý
-        mod_timer(&entry->timeout, jiffies + tcp_timeouts[new_state]);
-    }
-}
-
-/* ¼Ç¼¶ÔÓ¦µÄmacÐÅÏ¢£¬³É¹¦·µ»Ø1£¬·ñÔò·µ»Ø0 */
-int record_MAC_header(const struct hlist_nulls_head *working_hash, struct nf_conn *ct,
-                      fast_entry_t *entry, fast_entry_data_t *entry_data,
-                      struct neighbour *neigh, const struct net_device *out, int proto)
-{
-    struct ethhdr *eth;
-    struct net_device *dst_out = NULL;
-    int i;
-
-    if (out == NULL)
-        goto REL;
-
-    //½ö¶ÔÒÔÌ«ÍøÀàÍø¿Ú½øÐÐMACÍ·Ô¤¸³Öµ£¬ÆäËüµÄÈçPPP¡¢PPPoEÕâЩ£¬½ÔÊǿɱäµÄ£¬²»ÄÜÔ¤¸³Öµ£»²Î¼ûalloc_netdevºÍalloc_etherdev½Ó¿Ú
-    if (out->type != ARPHRD_ETHER)
-        return 1;
-
-    //¶ÔÓÚ³ö¿ÚÎªÍøÇÅbrʱ£¬Ö±½Ó»ñÈ¡L2ÍøÂçÉ豸£¬¼´usb0»òwifi0
-    if (out->priv_flags & IFF_EBRIDGE)
-    {
-        if(out->dev_addr == NULL)
-            goto REL;
-
-        if (fastbr_level == 1)
-        {
-            dst_out = getbrport_bydst(out, neigh->ha);
-            if (dst_out == NULL)
-            {
-                print_sun(SUN_DBG,"!!!!! getbrport_bydst fail \n");
-                goto REL;
-            }
-            entry_data->outdev = dst_out;
-        }
-        else
-        {
-            entry_data->outdev = out;
-        }
-        entry_data->hh_flag = 1;
-        eth = (struct ethhdr *)entry_data->hh_data;
-        eth->h_proto = proto;
-        memcpy(eth->h_source, out->dev_addr, ETH_ALEN);
-        memcpy(eth->h_dest, neigh->ha, ETH_ALEN);
-    }
-    //pppת·¢£¬Ö»ÐèÒª´«ËÍIP°ü
-    else if (strncmp(out->name, ppp_name, strlen(ppp_name)) == 0)
-    {
-        if(out->dev_addr == NULL)
-            goto REL;
-
-        entry_data->outdev = out;
-        entry_data->hh_flag = 0;
-    }
-    //ÆÕͨµÄÒÔÌ«ÍøÊý¾Ýת·¢
-    else
-    {
-        if(out->dev_addr == NULL)
-            goto REL;
-
-        //¶ÔÓÚwifi station/RJ45/USBµÈ£¬ÐèÒª¸³ÖµMACÍ·
-        entry_data->outdev = out;
-        entry_data->hh_flag = 1;
-        eth = (struct ethhdr *)entry_data->hh_data;
-        eth->h_proto = proto;
-        memcpy(eth->h_source, out->dev_addr, ETH_ALEN);
-        memcpy(eth->h_dest, neigh->ha, ETH_ALEN);
-    }
-    return 1;
-
-REL:
-    //֮ǰÁ´½Ó¿ÉÄÜÒѱ»´´½¨£¬ÐèҪɾ³ýËùÓÐ×ÊÔ´
-    for (i = 0; i < IP_CT_DIR_MAX; i++)
-    {
-        if (entry->flags & (1 << i))
-        {
-            hlist_nulls_del(&entry->data[i].tuplehash.hnnode);
-            dev_put(entry->data[i].outdev);
-        }
-    }
-    //»Ö¸´ctµÄ³¬Ê±
-    //add_timer(&ct->timeout);
-    //nf_ct_put(ct);
-    atomic_dec(&(ct->ct_general.use));
-    del_timer(&entry->timeout);
-    fn_list_del(entry->list_head, entry);
-    return 0;
-}
-
-/* ¸ù¾ÝÄ¿µÄMACºÍÍøÇŲéÕÒÇŵ㣬ÕÒµ½·µ»ØÇŵ㣬·ñÔò·µ»ØNULL */
-struct net_device *getBridgePort(struct neighbour *neigh, const struct net_device *out)
-{
-    struct net_device *dst_out = NULL;
-
-    if (!test_bit(FAST_TYPE_BR_LOCAL_BIT, &fast_switch))
-        return NULL;
-
-    if (!out || !neigh)
-        return NULL;
-
-    //½ö¶ÔÒÔÌ«ÍøÀàÍø¿Ú½øÐÐMACÍ·Ô¤¸³Öµ
-    if (out->type != ARPHRD_ETHER)
-        return NULL;
-
-    //¶ÔÓÚ³ö¿ÚÎªÍøÇÅʱ£¬Ö±½Ó»ñÈ¡L2ÇŵãÉ豸
-    if (out->priv_flags & IFF_EBRIDGE)
-    {
-        if (out->dev_addr == NULL)
-            return NULL;
-
-        //»ñÈ¡Çŵã
-        dst_out = getbrport_bydst(out, neigh->ha);
-        if (dst_out && dst_out != out)
-            return dst_out;
-
-        print_sun(SUN_DBG, "!!!!! getbrport_bydst fail \n");
-    }
-    return NULL;
-}
-
-//Åжϲ»ÐèÒª¾­¹ýfastnatµÄЭÒé°ü
-int check_skip_ports(unsigned int net_dst_port)
-{
-    int i = 0;
-    unsigned int dst_port = htons(net_dst_port);
-
-    if (!dst_port)
-        return 0;
-
-    for (i = 0; i < sizeof(nofast_port)/sizeof(nofast_port[0]); i++)
-    {
-        if (dst_port == nofast_port[i])
-        {
-            return 1;
-        }
-    }
-    return 0;
-}
-
-//Á´±íµÄ²Ù×÷Ö÷Ì庯Êý£¬ÄÚ²¿ÊµÏÖ³¬Ê±¡¢É豸ʼþµÈÁ´±í²Ù×÷
-void traverse_process(fast_list_t *list_head, unsigned long param)
-{
-    fast_entry_t *entry, *next;
-    traverse_command_t *cmd;
-    int i, need_del;
-
-    cmd = (traverse_command_t *)param;
-    if (!cmd)
-    {
-        return;
-    }
-
-    for(entry = list_head->next; entry; entry = next)
-    {
-        next = entry->next;
-        need_del = 0;
-
-        if (cmd->cmd == TRAVERSE_CMD_DEV_DOWN)
-        {
-            for (i = 0; i < IP_CT_DIR_MAX; i++)
-            {
-                if (entry->flags & (1 << i))
-                {
-                    const struct nf_conn_nat *nat = nfct_nat(entry->ct);
-                    if ((entry->data[i].outdev && entry->data[i].outdev->ifindex == cmd->arg)
-                            || (nat && nat->masq_index == cmd->arg))
-                    {
-                        need_del = FAST_ALL_DIR;
-                        break;
-                    }
-                }
-            }
-        }
-
-        if (need_del)
-        {
-            del_timer(&entry->timeout);
-            workinghash_del_node(entry);
-            if (need_del == FAST_ALL_DIR)
-            {
-                fastlist_del_entry(entry->list_head, entry);
-            }
-        }
-    }
-}
-
-//fastnat_level¹Ø±Õ£¬Çå¿ÕËùÓÐipv4,ipv6¿ìËÙת·¢ÐÅÏ¢£¬±£ÁôÔ­ctÁ¬½Ó
-void fast_cleanup_links(fast_list_t *list_head)
-{
-    fast_entry_t *entry, *next;
-
-    for (entry = list_head->next; entry; entry = next)
-    {
-        next = entry->next;
-        //ɾ³ýentry×Ô¶¨ÒåµÄ¶¨Ê±Æ÷
-        del_timer(&entry->timeout);
-
-        workinghash_del_node(entry);
-
-        //»Ö¸´ctµÄ³¬Ê±
-        //add_timer(&entry->ct->timeout);
-        fn_list_del(list_head, entry);
-
-    }
-}
-
-void athr_fast_dump(int ctl)
-{
-
-}
-/* Built-in default zone used e.g. by modules. */
-const struct nf_conntrack_zone nf_ct_zone_dflt_fast = {
-    .id	= NF_CT_DEFAULT_ZONE_ID,
-    .dir	= NF_CT_DEFAULT_ZONE_DIR,
-};
-
-/* ***************** ¿ìËÙת·¢Í³Ò»´¦Àíº¯Êý ********************************/
-/* ²éѯÂú×ã¿ìËÙת·¢µÄctÐÅÏ¢ --- ²Î¿¼nf_conntrack_inʵÏÖ */
-struct nf_conn *skb_get_ct(struct nf_conn **tmpl,
-                           struct sk_buff *skb,
-                           struct nf_conntrack_l4proto **l4proto,
-                           unsigned int *dataoff,
-                           u_int8_t pf,
-                           unsigned int hooknum,
-                           int *dir,
-                           u_int8_t *protonum)
-{
-    int ret;
-    struct nf_conntrack_tuple tuple;
-    struct nf_conntrack_tuple_hash *h;
-    struct nf_conn *ct;
-    struct nf_conntrack_zone * zone;
-    enum ip_conntrack_info ctinfo;
-    struct nf_conntrack_zone tmp;
-    u32 hash;
-
-
-    //ÒÔϲο¼nf_conntrack_inʵÏÖ²éѯÒÑÓÐct
-    *tmpl = nf_ct_get(skb, &ctinfo);
-    if (*tmpl || ctinfo == IP_CT_UNTRACKED) {
-        /* Previously seen (loopback or untracked)?  Ignore. */
-        if ((*tmpl && !nf_ct_is_template(*tmpl)) ||
-                ctinfo == IP_CT_UNTRACKED) {
-            goto err_out;
-        }
-        skb->_nfct = 0;
-    }
-
-    *dataoff = get_l4proto_fast(skb, skb_network_offset(skb), pf, protonum);
-
-    if (*dataoff <= 0) {
-        goto err_out;
-    }
-
-
-    *l4proto = nf_ct_l4proto_find(*protonum);
-
-
-    if (*protonum != IPPROTO_TCP && *protonum != IPPROTO_UDP)
-        goto err_out;
-
-    if (!nf_ct_get_tuple_fast(skb, skb_network_offset(skb),
-                              *dataoff, pf, *protonum, &init_net, &tuple)) {
-        goto err_out;
-    }
-
-
-    zone = nf_ct_zone_tmpl(*tmpl, skb, &tmp);
-    hash = hash_conntrack_raw_fast(&tuple, &init_net);
-
-    h = nf_conntrack_find_fast(&init_net, zone, &tuple, hash);
-
-    if (!h || IS_ERR(h))
-        goto err_out;
-
-    ct = nf_ct_tuplehash_to_ctrack(h);
-
-
-    if (!ct || IS_ERR(ct)) {
-        goto err_out;
-    }
-
-    if (test_bit(IPS_DYING_BIT, &ct->status) || test_bit(IPS_UNTRACKED_BIT, &ct->status))
-    {
-        nf_conntrack_put(&ct->ct_general);
-        goto err_out;
-    }
-
-    if (*tmpl && *tmpl == ct)
-    {
-        nf_conntrack_put(&ct->ct_general);
-        goto err_out;
-    }
-
-    //TCP±ØÐëË«Ïò½¨Á´ºó²Å×ß¿ìËÙת·¢
-    if (IPPROTO_TCP == *protonum && !test_bit(IPS_ASSURED_BIT, &ct->status))
-    {
-        nf_conntrack_put(&ct->ct_general);
-        goto err_out;
-    }
-
-    if (NF_CT_DIRECTION(h) == IP_CT_DIR_REPLY) {
-        *dir = 1;
-    } else {
-        *dir = 0;
-    }
-    return ct;
-
-err_out :
-    print_sun(SUN_DBG, "skb : 0x%x, skb_get_ct fail!!!!!!!!!!", skb);
-    if (*tmpl) {
-        nf_ct_set(skb, (struct nf_conn *)&((*tmpl)->ct_general), ctinfo);
-    }
-    else {
-        skb->_nfct = 0;
-    }
-    return NULL;
-}
-
-//еÄfastģʽ´¦Àí·½Ê½
-int fast_for_ip_new(struct sk_buff *skb,
-                    int(*fast_fw)(struct nf_conn *, struct sk_buff *, struct nf_conn *,
-                                  struct nf_conntrack_l4proto *, unsigned int, int, u_int8_t),
-                    int(*fast_local_proc)(struct nf_conn *, struct sk_buff *, struct nf_conn *,
-                            struct nf_conntrack_l4proto *, unsigned int, int, u_int8_t),
-                    int proto)
-{
-    struct nf_conn *ct = NULL, *tmpl = NULL;
-    struct nf_conntrack_l4proto *l4proto;
-    unsigned int dataoff;
-    u_int8_t protonum;
-    int dir = 0;
-    int ret = 0;
-
-    if (proto == ETH_P_IP)
-        ct = skb_get_ct(&tmpl, skb, &l4proto, &dataoff, PF_INET, NF_INET_PRE_ROUTING, &dir, &protonum);
-    else if (proto == ETH_P_IPV6)
-        ct = skb_get_ct(&tmpl, skb, &l4proto, &dataoff, PF_INET6, NF_INET_PRE_ROUTING, &dir, &protonum);
-    if (!ct)
-    {
-        if (fast_br_proc && fast_br_proc(skb))
-        {
-            fastbr_num++;
-            return 1;
-        }
-        return 0;
-    }
-
-    spin_lock_bh(&fast_fw_spinlock);
-    /*TCP±ØÐëÈý´ÎÎÕÊֳɹ¦¡¢fast½¨Á´³É¹¦*/
-    if (IPPROTO_TCP == protonum || NEXTHDR_TCP == protonum)
-    {
-        int rdir = (IP_CT_DIR_ORIGINAL == dir) ? IP_CT_DIR_REPLY: IP_CT_DIR_ORIGINAL;
-        if (!test_bit(IPS_ASSURED_BIT, &ct->status)) {
-            nf_conntrack_put(&ct->ct_general);
-            spin_unlock_bh(&fast_fw_spinlock);
-            return 0;
-        }
-        if (!(ct->fast_ct.fast_dst[dir] && ct->fast_ct.fast_dst[rdir])) {
-            nf_conntrack_put(&ct->ct_general);
-            spin_unlock_bh(&fast_fw_spinlock);
-            return 0;
-        }
-    }
-    switch(ct->fast_ct.isFast)
-    {
-    case FAST_CT_FW4:
-    case FAST_CT_FW6:
-        if (fast_fw && fast_fw(tmpl, skb, ct, l4proto, dataoff, dir, protonum)) {
-            if (proto == ETH_P_IP)
-            {
-                fastnat_num++;
-            }
-
-            else if (proto == ETH_P_IPV6)
-                fast6_num++;
-            ret = 1;
-            break;
-        }
-        ret = 0;
-        break;
-    case FAST_CT_LOCAL4:
-    case FAST_CT_LOCAL6:
-        if (fast_local_proc && fast_local_proc(tmpl, skb, ct, l4proto, dataoff, dir, protonum)) {
-            if (proto == ETH_P_IP)
-                fast_local4_rcv_num++;
-            else if (proto == ETH_P_IPV6)
-                fast_local6_rcv_num++;
-            ret = 1;
-            break;
-        }
-        ret = 0;
-        break;
-    default:
-        nf_conntrack_put(&ct->ct_general);
-        if (fast_br_proc && fast_br_proc(skb)) {
-            fastbr_num++;
-            ret = 1;
-            break;
-        }
-        ret = 0;
-        break;
-    }
-
-    spin_unlock_bh(&fast_fw_spinlock);
-    return ret;
-}
-
-//¾ÉµÄfastģʽ´¦Àí·½Ê½
-int fast_for_ip(struct sk_buff *skb, int(*fast_fw)(struct sk_buff *),
-                int(* fast_local_proc)(struct nf_conn *, struct sk_buff *, struct nf_conn *,
-                                       struct nf_conntrack_l4proto *, unsigned int, int, u_int8_t),
-                int proto)
-{
-    struct nf_conn *ct = NULL, *tmpl = NULL;
-    struct nf_conntrack_l4proto *l4proto;
-    unsigned int dataoff;
-    u_int8_t protonum;
-    int dir = 0;
-    //ת·¢¡¢ÇŽӡ¢±¾µØË³Ðò´¦Àí
-    if (fast_fwd_level > fast_br_level && fast_br_level > fast_local_level)
-    {
-        if (fast_fw && fast_fw(skb))
-        {
-            if (proto == ETH_P_IP)
-            {
-                fastnat_num++;
-            }
-            else if (proto == ETH_P_IPV6)
-                fast6_num++;
-            return 1;
-        }
-        else if (fast_br_proc && fast_br_proc(skb) == 1)
-        {
-            fastbr_num++;
-            return 1;
-        }
-    }
-    //ת·¢¡¢±¾µØ¡¢ÇŽÓ˳Ðò´¦Àí
-    else if (fast_fwd_level > fast_local_level && fast_local_level > fast_br_level)
-    {
-        if (fast_fw && fast_fw(skb))
-        {
-            if (proto == ETH_P_IP)
-                fastnat_num++;
-            else if (proto == ETH_P_IPV6)
-                fast6_num++;
-            return 1;
-        }
-        else if (fast_br_proc && fast_br_proc(skb) == 1)
-        {
-            fastbr_num++;
-            return 1;
-        }
-    }
-    //ÇŽӡ¢×ª·¢¡¢±¾µØË³Ðò´¦Àí
-    else if (fast_br_level > fast_fwd_level && fast_fwd_level > fast_local_level)
-    {
-        if (fast_br_proc && fast_br_proc(skb) == 1)
-        {
-            fastbr_num++;
-            return 1;
-        }
-        else if (fast_fw && fast_fw(skb))
-        {
-            if (proto == ETH_P_IP)
-                fastnat_num++;
-            else if (proto == ETH_P_IPV6)
-                fast6_num++;
-            return 1;
-        }
-    }
-    //ÇŽӡ¢±¾µØ¡¢×ª·¢Ë³Ðò´¦Àí
-    else if(fast_br_level > fast_local_level && fast_local_level > fast_fwd_level)
-    {
-        if (fast_br_proc && fast_br_proc(skb) == 1)
-        {
-            fastbr_num++;
-            return 1;
-        }
-        else if (fast_local_proc)
-        {
-            if (proto == ETH_P_IP)
-                ct = skb_get_ct(&tmpl, skb, &l4proto, &dataoff, PF_INET, NF_INET_PRE_ROUTING, &dir, &protonum);
-            else if (proto == ETH_P_IPV6)
-                ct = skb_get_ct(&tmpl, skb, &l4proto, &dataoff, PF_INET6, NF_INET_PRE_ROUTING, &dir, &protonum);
-
-            if(!ct)
-                return 0;
-
-            if (fast_local_proc(tmpl, skb, ct, l4proto, dataoff, dir, protonum)) {
-                if (proto == ETH_P_IP)
-                    fast_local4_rcv_num++;
-                else if (proto == ETH_P_IPV6)
-                    fast_local6_rcv_num++;
-                return 1;
-            }
-        }
-        else if (fast_fw && fast_fw(skb))
-        {
-            if (proto == ETH_P_IP)
-                fastnat_num ++;
-            else if (proto == ETH_P_IPV6)
-                fast6_num++;
-            return 1;
-        }
-    }
-    //±¾µØ¡¢×ª·¢¡¢ÇŽÓ˳Ðò´¦Àí
-    else if(fast_local_level > fast_fwd_level && fast_fwd_level > fast_br_level)
-    {
-        if (fast_fw && fast_fw(skb))
-        {
-            if (proto == ETH_P_IP)
-                fastnat_num++;
-            else if (proto == ETH_P_IPV6)
-                fast6_num++;
-            return 1;
-        }
-        else if (fast_br_proc == 1 && fast_br_proc(skb) == 1)
-        {
-            fastbr_num++;
-            return 1;
-        }
-    }
-    //±¾µØ¡¢ÇŽӡ¢×ª·¢Ë³Ðò´¦Àí
-    else if(fast_local_level > fast_br_level && fast_br_level > fast_fwd_level)
-    {
-        if (fast_br_proc && fast_br_proc(skb) == 1)
-        {
-            fastbr_num++;
-            return 1;
-        }
-        else if (fast_fw && fast_fw(skb))
-        {
-            if (proto == ETH_P_IP)
-                fastnat_num++;
-            else if (proto == ETH_P_IPV6)
-                fast6_num++;
-            return 1;
-        }
-    }
-    return 0;
-}
-
-int btrunk_fw = 0;
-module_param(btrunk_fw, int, 0644);
-//extern int fast_fwd_ip4addr_conflict(struct sk_buff *skb);
-//extern int fast_for_multicast(struct sk_buff *skb);
-/*ÓÉÓÚ¿ÉÄܲ»´æÔÚMACÖ¡Í·£¬ÈçPSÍø¿Ú£¬ËùÒÔÐèҪͨ¹ýIPͷʶ±ð³öskb->protocolÖµ*/
-int fast_for_ipdata(struct sk_buff *skb)
-{
-
-    struct iphdr *iph;
-
-    if (skb->len > 1000)
-        skb_big_num++;
-    else if (skb->len < 100)
-        skb_small_num++;
-
-    if (skb->dev == NULL)
-        return 0;
-    if (skb->protocol == htons(ETH_P_IP)) //ipv4
-    {
-        skb_num4++;
-        skb_bytes4 += skb->len;
-
-        if(btrunk_fw && fast_fwd_ip4addr_conflict(skb) == 1)
-        {
-            return 1;
-        }
-        //Ö÷²¥µÄ¿ìËÙת·¢£¬´ýʵÏÖ£¬ÔÝʱֻ×öͳ¼Æ
-        if (ipv4_is_multicast(ip_hdr(skb)->daddr))
-        {
-            multicast_num4++;
-            if(btrunk_fw && fast_for_multicast(skb) == 1)
-            {
-                return 1;
-            }
-            return 0;
-        }
-        //¹ã²¥²»Ö§³Ö¿ìËÙת·¢£¬Ö»×öͳ¼Æ
-        else if (ipv4_is_lbcast(ip_hdr(skb)->daddr)) {
-            broadcast_num4++;
-            return 0;
-        }
-
-        if (ip_is_fragment(ip_hdr(skb)))
-        {
-            skbinfo_add(NULL, SKB_FRAG);
-            return 0;
-        }
-
-        //Ö»ÓÐTCPºÍUDP½øÐпìËÙת·¢
-        if (ip_hdr(skb)->protocol != IPPROTO_TCP && ip_hdr(skb)->protocol != IPPROTO_UDP)
-        {
-            return 0;
-        }
-
-        if(!fast_iphdr_check(skb, ETH_P_IP))
-        {
-            iphdr_err_num++;
-            kfree_skb(skb);
-            return 1;
-        }
-
-        /*Èç¹ûÓÐpadding£¬ÔòÈ¥³ýskbβ²¿µÄpadding, ²Î¿¼ip_rcv*/
-        skb_trim(skb, ntohs(ip_hdr(skb)->tot_len));
-
-        /* tcpÍ·²¿ÐÅÏ¢¼à²â*/
-        if (ip_hdr(skb)->protocol == IPPROTO_TCP) {
-            if (!fast_tcphdr_check(skb, ETH_P_IP))	{
-                tcphdr_err_num++;
-                //kfree_skb(skb);
-                return 0;
-            }
-        }
-        if (!test_bit(FAST_TYPE_VERSION_BIT, &fast_switch))
-            return fast_for_ip(skb, fast_nat4_proc, fast_local4_proc, ETH_P_IP);
-        else
-            return fast_for_ip_new(skb, fast_fw4_proc, fast_local4_proc, ETH_P_IP);
-
-    }
-    else if (skb->protocol == htons(ETH_P_IPV6)) //ipv6
-    {
-        skb_num6++;
-        skb_bytes6 += skb->len;
-
-        //×é²¥µÄ¿ìËÙת·¢£¬´ýʵÏÖ£¬ÔÝʱֱ½Ó·µ»Ø¿ìËÙת·¢Ê§°Ü
-        if(ipv6_addr_is_multicast(&ipv6_hdr(skb)->daddr))
-        {
-            multicast_num6++;
-            return 0;
-        }
-
-        if(!fast_iphdr_check(skb, ETH_P_IPV6))
-        {
-            ip6hdr_err_num++;
-            kfree_skb(skb);
-            return 1;
-        }
-        /*Èç¹ûÓÐpadding£¬ÔòÈ¥³ýskbβ²¿µÄpadding£¬²Î¿¼ipv6_rcv*/
-        skb_trim(skb, ntohs(ipv6_hdr(skb)->payload_len) + sizeof(struct ipv6hdr));
-        /* tcpÍ·²¿ÐÅÏ¢¼à²â*/
-        if (!fast_tcphdr_check(skb, ETH_P_IPV6))	{
-            tcp6hdr_err_num++;
-            //kfree_skb(skb);
-            return 0;
-        }
-        if (!test_bit(FAST_TYPE_VERSION_BIT, &fast_switch))
-            return fast_for_ip(skb, fast_nat6_proc, fast_local6_proc, ETH_P_IPV6);
-        else
-            return fast_for_ip_new(skb, fast_fw6_proc, fast_local6_proc, ETH_P_IPV6);
-    }
-    else
-        skb_unknown++;
-    return 0;
-}
-
-/*skbÖ¸ÕëÌø×ªµ½IPÍ·*/
-static int set_skbdata_toip(struct sk_buff *skb)
-{
-    __be16 next_pro = skb->protocol;
-again:
-    if (next_pro == htons(ETH_P_IP) || next_pro == htons(ETH_P_IPV6))
-    {
-        skb_set_network_header(skb, 0);
-        skb_reset_mac_len(skb);
-        skb->protocol = next_pro;
-        return 1;
-    }
-    //vlan
-    else if (next_pro == cpu_to_be16(ETH_P_8021Q))
-    {
-        skb->isvlan = 1;
-        skb_pull(skb, VLAN_HLEN);
-        next_pro = *((__be16 *)(skb->data - 2));
-        goto again;
-    }
-
-    //pppoe
-    else if (next_pro == htons(ETH_P_PPP_SES))
-    {
-        if (*(skb->data + 6) == 0x00 && *(skb->data + 7) == 0x21)
-        {
-            next_pro = htons(ETH_P_IP);
-            __skb_pull(skb, PPPOE_HEADER_LEN);
-            goto again;
-        }
-        else if(*(skb->data+ 6) == 0x00 && *(skb->data + 7) == 0x57)
-        {
-            next_pro = htons(ETH_P_IPV6);
-            __skb_pull(skb, PPPOE_HEADER_LEN);
-            goto again;
-        }
-    }
-    return 0;
-}
-
-/*¶ÔÄÚºËdev.cÖÐÊý¾Ý½øÐпìËÙ´¦Àí£¬ÓÐip°ü¡¢ppp°üµÈ*/
-static int try_fast_for_netcoredata(struct sk_buff *skb)
-{
-    __be16 old_pro = skb->protocol;
-    unsigned int old_len = skb->len;
-    unsigned char * old_data = skb->data;
-    __be16 old_netheader = skb->network_header;
-
-    //ipÍ·4×Ö½Ú¶ÔÆë
-    //if (((unsigned long)skb->data)%4 != 0)
-    //panic("ERR: fast from dev skb->data%4 != 0");
-
-    if (skb->indev == NULL)
-        skb->indev = skb->dev;
-    //ÐèҪ׼ȷ¶¨Î»µ½IPÍ·£¬ÆÚ¼ä¿ÉÄÜÌø¹ýppp/mac/pppoeµÈ¸÷ÖÖ²ã2Í·²¿
-    if (set_skbdata_toip(skb) == 1 && fast_for_ipdata(skb))
-        return 1;
-
-    //Èç¹û¿ìËÙ´¦Àíʧ°Ü£¬±ØÐëͨ¹ýÈçϸ³Öµ·µ»Ø»ØÔ­Ê¼skb²ÎÊýÖµ£¬½»Óɱê×¼linuxÄں˴¦Àí
-    skb->protocol = old_pro;
-    skb->data = old_data;
-    skb->len = old_len;
-    skb->network_header = old_netheader;
-    return 0;
-}
-
-/*¶ÔskbÖÐÖ¸ÏòMACÖ¡Í·µÄÇý¶¯Éϱ¨Êý¾Ý½øÐпìËÙ´¦Àí£¬¿ÉÓÃÓÚËùÓÐÒÔÌ«Íø¼Ü¹¹µÄÍøÂçÉ豸Éϱ¨Êý¾ÝµÄ¿ìËÙ´¦Àí*/
-static int try_fast_for_macdata(struct sk_buff *skb, struct net_device *dev)
-{
-    /*
-    struct ethhdr *eth;
-    if (!(skb->network_header == 0 || skb->network_header == ~0U))
-        panic("network_header    ERR!!!!!!!!!!\n");
-    skb->dev = dev;
-    if (skb->indev == NULL)
-        skb->indev = dev;
-    skb_reset_mac_header(skb);
-    eth = eth_hdr(skb);
-    skb->protocol = eth->h_proto;
-    skb_pull(skb, ETH_HLEN);
-    */
-
-    //if (tsp_mirror_handle)
-        //tsp_mirror_handle(skb);
-
-    //×ÔÑÐtcp/udp°ü¼Ç¼¶ª°üʱÑÓ¹¦ÄÜ£¬ÐèÒªserver¶ÎÄܰ²×°×ÔÑÐÓ¦Óã¬Èç¹û¿ìËÙת·¢Ê§°Ü£¬ÐèÒªÇå³þ¼Ç¼
-    //net_dbg_perf_dev_recv((char *)skb, skb->dev->name);
-    if (try_fast_for_netcoredata(skb))
-    {
-        return 1;
-    }
-    //×ÔÑÐtcp/udp°ü¼Ç¼¶ª°üʱÑÓ¹¦ÄÜ£¬ÐèÒªserver¶ÎÄܰ²×°×ÔÑÐÓ¦ÓÃ
-    //net_dbg_perf_clear_last_item(skb);
-
-    //skb_push(skb, ETH_HLEN);
-    return 0;
-}
-
-EXPORT_SYMBOL_GPL(tsp_mirror_handle);
-
-/*´¦Àí֪ͨÁ´Ê¼þ*/
-static int fast_event(struct notifier_block *this, unsigned long event, struct net_device *dev)
-{
-    traverse_command_t cmd;
-
-    switch (event) {
-    case NETDEV_DOWN:
-        if (dev)
-        {
-            cmd.cmd = TRAVERSE_CMD_DEV_DOWN;
-            cmd.arg = dev->ifindex;
-
-            fastnat_event(&cmd);
-            fast6_event(&cmd);
-        }
-        break;
-    }
-    return NOTIFY_DONE;
-}
-
-static int fast_device_event(struct notifier_block *this, unsigned long event, void *ptr)
-{
-    struct net_device *dev = (struct net_device *)ptr;
-
-    return fast_event(this, event, dev);
-}
-
-static int fast_inet_event(struct notifier_block *this, unsigned long event, void *ptr)
-{
-    struct net_device *dev = ((struct in_ifaddr *)ptr)->ifa_dev->dev;
-
-    return fast_event(this, event, dev);
-}
-
-/*priority should be higher than masquerade, otherwise kernel will hang*/
-static struct notifier_block fast_dev_notifier = {
-    .notifier_call    = fast_device_event,
-    .priority = 1,
-};
-
-/*priority should be higher than masquerade, otherwise kernel will hang*/
-static struct notifier_block fast_inet_notifier = {
-    .notifier_call    = fast_inet_event,
-    .priority = 1,
-};
-
-void fast_device_down_event_by_name(char *dev_name)
-{
-    struct net_device *dev = NULL;
-
-    if (!dev_name)
-    {
-        print_sun(SUN_ERR,"fast_device_down_event_by_name dev_name is null \n");
-        return;
-    }
-
-    dev = dev_get_by_name(&init_net, dev_name);
-    if (!dev)
-    {
-        print_sun(SUN_ERR,"fast_device_down_event_by_name dev not found \n");
-        return;
-    }
-
-    fast_event(NULL, NETDEV_DOWN, dev);
-
-    /*add by jiangjing*/
-    dev_put(dev);
-}
-
-/**** ÒÔϲ¿·ÖÊÇеÄfastģʽʹÓú¯Êý ****/
-extern void fast_local_conn_release(struct nf_conn *ct);
-extern void fast_local_sock_release(struct sock *sk);
-
-
-/* ½«¿ìËÙת·¢¹ØÁªµÄct¼Óµ½sock¼Ç¼ÖÐ */
-void fast_dst_add_ct(struct dst_entry *dst, struct nf_conn *ct)
-{
-    struct conn_list *entry;
-    int conn_flag = 0;
-
-    list_for_each_entry_rcu(entry, &dst->conn_head, list)
-    {
-        if (entry->nfct == ct)
-        {
-            conn_flag = 1;
-            break;
-        }
-    }
-
-    if (conn_flag == 0)
-    {
-        struct conn_list *conn_list_node =(struct conn_list*)kzalloc(sizeof(struct conn_list), GFP_KERNEL);
-        if(conn_list_node) {
-            rcu_assign_pointer(conn_list_node->nfct, ct);
-            list_add_rcu(&conn_list_node->list, &dst->conn_head);
-        }
-    }
-}
-
-/* ¸ù¾Ýnet_deviceµÄÊÍ·Å£¬ÊÍ·Åת·¢ÀàÏà¹ØÄÚÈÝ */
-void fast_fw_conn_release_by_dev(struct net_device* dev)
-{
-    int hash = 0;
-    struct nf_conntrack_tuple_hash *h;
-    struct hlist_nulls_node *n;
-    struct nf_conn *ct;
-    int dir;
-    struct net_device *net;
-
-    if(fastnat_level == FAST_CLOSE)
-        return ;
-
-    rcu_read_lock();
-    for (hash = 0; hash < nf_conntrack_htable_size; hash++)
-    {
-        local_bh_disable();
-        hlist_nulls_for_each_entry_rcu(h, n, &nf_conntrack_hash[hash], hnnode)
-        {
-            if (h)
-            {
-                ct = nf_ct_tuplehash_to_ctrack(h);
-
-                //ÊÍ·Å´ËÁ´½ÓÏà¹Ø¿ìËÙת·¢ÐÅÏ¢
-                spin_lock_bh(&fast_fw_spinlock);
-                for (dir = IP_CT_DIR_ORIGINAL; dir < IP_CT_DIR_MAX; dir++)
-                {
-                    net = ct->fast_ct.fast_brport[dir];
-                    if (net != NULL)
-                    {
-                        if(!strcmp(dev->name, net->name))
-                        {
-                            ct->fast_ct.fast_brport[dir] = NULL;
-                        }
-                    }
-                }
-                spin_unlock_bh(&fast_fw_spinlock);
-            }
-        }
-        local_bh_enable();
-    }
-    rcu_read_unlock();
-}
-/* ¸ù¾ÝconnµÄÊÍ·Å£¬ÊÍ·Åת·¢ÀàÏà¹ØÄÚÈÝ */
-void fast_fw_conn_release(struct nf_conn *ct)
-{
-    struct dst_entry *dst;
-    struct conn_list *entry;
-    int dir;
-
-    for (dir = IP_CT_DIR_ORIGINAL; dir < IP_CT_DIR_MAX; dir++)
-    {
-        if (!(dst = dst_get_by_ct(ct, dir)))
-            continue;
-
-        list_for_each_entry_rcu(entry, &dst->conn_head, list)
-        {
-            if (entry->nfct == ct)
-            {
-                entry->nfct = NULL;
-                __list_del_entry(&entry->list);
-                kfree(entry);
-                break;
-            }
-        }
-        //ÔÚdst_get_by_ctÖÐholdһϣ¬ËùÒÔÕâÀïÒªrelease
-        dst_release(dst);
-        rcu_assign_pointer(ct->fast_ct.fast_dst[dir], NULL);
-        ct->fast_ct.fast_brport[dir] = NULL;
-    }
-    ct->fast_ct.isFast = 0;
-}
-
-//¸ù¾Ýdst_entryµÄÊÍ·Å£¬ÊÍ·Åת·¢ÀàÏà¹ØÄÚÈÝ
-void fast_fw_dst_entry_release(struct dst_entry *dst)
-{
-    struct conn_list *entry = NULL;
-    struct conn_list *entry_tmp = NULL;
-    struct nf_conn *ct;
-    struct list_head *tmp;
-
-    list_for_each_entry_safe(entry, entry_tmp, &dst->conn_head, list) {
-
-        rcu_assign_pointer(ct, entry->nfct);
-        if (!ct)
-            continue;
-
-        if (ct->fast_ct.fast_dst[IP_CT_DIR_ORIGINAL] && ct->fast_ct.fast_dst[IP_CT_DIR_ORIGINAL] == dst) {
-            rcu_assign_pointer(ct->fast_ct.fast_dst[IP_CT_DIR_ORIGINAL], NULL);
-            ct->fast_ct.fast_brport[IP_CT_DIR_ORIGINAL]   = NULL;
-        }
-        else if (ct->fast_ct.fast_dst[IP_CT_DIR_REPLY] && ct->fast_ct.fast_dst[IP_CT_DIR_REPLY] == dst) {
-            rcu_assign_pointer(ct->fast_ct.fast_dst[IP_CT_DIR_REPLY], NULL);
-            ct->fast_ct.fast_brport[IP_CT_DIR_REPLY]      = NULL;
-        }
-        else
-            print_sun(SUN_ERR,"fast_fw_dst_entry_release \n");
-
-        if (!ct->fast_ct.fast_brport[IP_CT_DIR_ORIGINAL] && !ct->fast_ct.fast_brport[IP_CT_DIR_REPLY])
-            ct->fast_ct.isFast = 0;
-        entry->nfct = NULL;
-        __list_del_entry(&entry->list);
-        kfree(entry);
-    }
-}
-
-/* connÊÍ·Å֪ͨº¯Êý£¬Í¨ÖªfastÊÍ·ÅÏà¹ØÄÚÈÝ */
-void fast_conn_release(struct nf_conn *ct, int mark)
-{
-    spin_lock_bh(&fast_fw_spinlock);
-    if ((ct->fast_ct.isFast == FAST_CT_FW4 || ct->fast_ct.isFast == FAST_CT_FW6) && (mark & RELEASE_ALL_DST))
-    {
-        fast_fw_conn_release(ct);
-    }
-    spin_unlock_bh(&fast_fw_spinlock);
-}
-
-/* dst_entryÊÍ·Å֪ͨº¯Êý£¬Í¨ÖªfastÊÍ·ÅÏà¹ØÄÚÈÝ */
-void fast_dst_entry_release(struct dst_entry * dst)
-{
-    spin_lock_bh(&fast_fw_spinlock);
-    fast_fw_dst_entry_release(dst);
-    spin_unlock_bh(&fast_fw_spinlock);
-}
-
-/* ÊÍ·ÅÐÂfastģʽÏÂËùÓпìËÙת·¢ÐÅÏ¢: Ö»ÓÐctÊǺÍdst¡¢sk¶¼¹ØÁªµÄ£¬ËùÒÔͨ¹ýctÀ´²éѯ */
-void fast_release_all(int mark)
-{
-    int hash = 0;
-    struct nf_conntrack_tuple_hash *h;
-    struct hlist_nulls_node *n;
-    struct nf_conn *ct;
-
-    rcu_read_lock();
-    for (hash = 0; hash < nf_conntrack_htable_size; hash++) {
-        local_bh_disable();
-        hlist_nulls_for_each_entry_rcu(h, n, &nf_conntrack_hash[hash], hnnode) {
-            if (h)
-            {
-                ct = nf_ct_tuplehash_to_ctrack(h);
-                if (unlikely(!atomic_inc_not_zero(&ct->ct_general.use)))
-                    continue;
-
-                //ÊÍ·Å´ËÁ´½ÓÏà¹Ø¿ìËÙת·¢ÐÅÏ¢
-                fast_conn_release(ct, mark);
-
-                nf_ct_put(ct);
-            }
-        }
-        local_bh_enable();
-    }
-    rcu_read_unlock();
-}
-
-/**** ÒÔϲ¿·ÖÊÇоÉfastģʽ¹²Óõĺ¯Êý ****/
-
-//¸ù¾ÝÓÅÏȼ¶ÅäÖò»Í¬²ã´ÎµÄ¹³×Óº¯Êý£¬Ä¿Ç°µÄ²ßÂÔÊǸߵȼ¶µÄ¹³×Óº¯Êý±»¸³Öµºó£¬µÍµÈ¼¶µÄ¹³×Óº¯ÊýÒ²Ò»¶¨´æÔÚ£¬
-//ÒÔ½â¾öijЩÉ豸ûÓиߵȼ¶µÄ¹³×Óº¯ÊýÇé¿ö£»¸Ã²ßÂÔ½ö»áÔì³É¹³×Óº¯Êý¶à´ÎÆ¥Åäʧ°ÜµÄ¿ÕÅÜ£¬²»»á´æÔÚÐÔÄÜÆ¿¾±
-void set_fast_level_cb(int param)
-{
-    //¸ù¾Ý¿ìËÙת·¢¼¶±ðÉèÖù©Íⲿµ÷Óú¯ÊýÖ¸Õë
-    if (param == FAST_CLOSE || param == FAST_CLOSE_KEEP_LINK)  //¹Ø±Õ¿ìËÙת·¢
-    {
-        fast_from_softirq = NULL;
-        fast_from_driver = NULL;
-    }
-    else if (param == FAST_NET_CORE) //Äں˲ã¿ìËÙת·¢£¬FAST_NEWÖ»Ö§³ÖÈíÖжÏÖе÷ÓÿìËÙת·¢
-    {
-        fast_from_softirq = try_fast_for_netcoredata;
-        fast_from_driver = NULL;
-    }
-    //net_deviceµ½net_device£¬²»½øÈëIPÈíÖжÏ
-    else if (param == FAST_NET_DEVICE)
-    {
-        fast_from_softirq = try_fast_for_netcoredata;
-        fast_from_driver = try_fast_for_macdata;
-    }
-    else
-        print_sun(SUN_ERR,"fastnat_level error, shoud be 0~2!\n");
-}
-
-/* ÉèÖø÷×Ó¹¦ÄܵĿìËÙת·¢µ÷Óú¯Êý */
-void set_fast_switch_cb(unsigned long param)
-{
-    //¸ù¾ÝоɿìËÙת·¢ÉèÖÃʹÓõIJ»Í¬ipv4¡¢ipv6½Ó¿Ú
-    if (test_bit(FAST_TYPE_VERSION_BIT, &param)) //еÄfastģʽ
-    {
-        //еÄfastģʽÏÂ: ÉèÖÃIPv4±¾µØ¿ìËÙת·¢»Øµ÷º¯Êý
-        if (test_bit(FAST_TYPE_FW4_BIT, &fast_switch))
-            fast_fw4_proc = fast4_fw_recv;
-        else
-            fast_fw4_proc = NULL;
-
-        //еÄfastģʽÏÂ: ÉèÖÃIPv6±¾µØ¿ìËÙת·¢»Øµ÷º¯Êý
-        if (test_bit(FAST_TYPE_FW6_BIT, &fast_switch))
-            fast_fw6_proc = fast6_fw_recv;
-        else
-            fast_fw6_proc = NULL;
-
-        fast_local4_proc        = NULL;
-        fast_local4_output_proc = NULL;
-
-        fast_local6_proc        = NULL;
-        fast_local6_output_proc = NULL;
-
-        //ÉèÖÃ×ÓÍø¼ä¿ìËÙת·¢»Øµ÷º¯Êý
-        if (test_bit(FAST_TYPE_BR_BIT, &fast_switch))
-            fast_br_proc = fast_br;
-        else
-            fast_br_proc = NULL;
-
-        fast_nat4_proc = NULL;
-        fast_nat6_proc = NULL;
-    }
-    else //ÀϵÄfastģʽ
-    {
-        //ÀϵÄfastģʽÏÂ: ÉèÖÃIPv4±¾µØ¿ìËÙת·¢»Øµ÷º¯Êý
-        fast_nat4_proc = fast_nat_recv;
-
-        //ÀϵÄfastģʽÏÂ: ÉèÖÃIPv6±¾µØ¿ìËÙת·¢»Øµ÷º¯Êý
-        fast_nat6_proc = fast6_recv;
-
-        fast_br_proc = fast_br;
-        fast_local4_proc         = NULL;
-        fast_local4_output_proc  = NULL;
-        fast_local6_proc         = NULL;
-        fast_local6_output_proc  = NULL;
-        fast_fw4_proc = NULL;
-        fast_fw6_proc = NULL;
-    }
-}
-
-void fast_level_change(int new_level)
-{
-    int old_level = 0;
-
-    old_level = fastnat_level;
-
-    if (old_level == new_level)
-        return;
-
-    fastnat_level = new_level;
-
-    //¸ù¾Ý×îеÄfastnat level£¬µ÷Õû»Øµ÷º¯Êý
-    set_fast_level_cb(fastnat_level);
-
-    //fastnat¹Ø±Õ£¬Çå¿ÕËùÓÐÐÅÏ¢
-    if (fastnat_level == FAST_CLOSE || fastnat_level == FAST_CLOSE_KEEP_LINK)
-    {
-        if (!test_bit(FAST_TYPE_VERSION_BIT, &fast_switch))
-        {
-            fastnat_cleanup_links();
-            fast6_cleanup_links();
-        }
-        else
-        {
-            fast_release_all(RELEASE_ALL_DST | RELEASE_ALL_SK);
-        }
-    }
-}
-
-void fast_switch_change(unsigned long new_switch)
-{
-    unsigned long old_switch = fast_switch;
-
-    if (old_switch == new_switch)
-        return;
-
-    fast_switch = new_switch;
-
-    //¸ù¾Ý×Ó¹¦ÄÜ¿ìËÙת·¢µÄλͼ¿ª¹Ø£¬ÉèÖÃ×Ó¹¦Äܻص÷º¯Êý
-    set_fast_switch_cb(fast_switch);
-
-    //×Ó¹¦ÄÜ¿ìËÙת·¢´Ó´ò¿ªµ½¹Ø±ÕµÄ£¬ÐèÒªÇå³þÏà¹Ø¿ìËÙת·¢ÐÅÏ¢
-    //´ÓÀϵÄfastÇе½ÐµÄfast£¬ÐèÒªÇå³þÀÏfast±£´æµÄÏà¹Ø¿ìËÙת·¢Êý¾Ý
-    if (!test_bit(FAST_TYPE_VERSION_BIT, &old_switch) && test_bit(FAST_TYPE_VERSION_BIT, &new_switch))
-    {
-        //ÀϵÄfast²»Çø·ÖIPv4¡¢IPv6µÄ·Ö¿ª¿ØÖÆ
-        fastnat_cleanup_links();
-
-        fast6_cleanup_links();
-    }
-    //´ÓеÄfastÇе½¾ÉµÄfast£¬ÐèÒªÇå³þÐÂfast±£´æµÄÏà¹Ø¿ìËÙת·¢Êý¾Ý
-    else if (test_bit(FAST_TYPE_VERSION_BIT, &old_switch) && !test_bit(FAST_TYPE_VERSION_BIT, &new_switch))
-    {
-        fast_release_all(RELEASE_ALL_DST | RELEASE_ALL_SK);
-    }
-
-    if (test_bit(FAST_TYPE_VERSION_BIT, &new_switch) && (!test_bit(FAST_TYPE_FW4_BIT, &new_switch) || !test_bit(FAST_TYPE_FW6_BIT, &new_switch))) {
-        fast_release_all(RELEASE_ALL_DST);
-    }
-    if (test_bit(FAST_TYPE_VERSION_BIT, &new_switch) && (!test_bit(FAST_TYPE_LOCAL4_BIT, &new_switch) || !test_bit(FAST_TYPE_LOCAL6_BIT, &new_switch))) {
-        fast_release_all(RELEASE_ALL_SK);
-    }
-}
-
-//¼Ç¼ÓÐDST_NOCACHE±êÖ¾µÄdst³öÏֵĴÎÊý
-int no_cache = 0;
-//¼Ç¼ÔÚʹÓÃdstʱ£¬dst->neighbourΪ¿ÕµÄ´ÎÊý
-int no_neighbour = 0;
-struct dst_entry * dst_get_by_ct(struct nf_conn * ct, int dir)
-{
-    struct dst_entry *dst;
-    struct neighbour *_neighbour = NULL;
-
-    rcu_read_lock();
-    dst = rcu_dereference_protected(ct->fast_ct.fast_dst[dir], 1);
-
-    if(dst)
-        dst_hold_and_use(dst, jiffies);
-    else {
-        dst = NULL;
-    }
-    rcu_read_unlock();
-    return dst;
-}
-
-/*fast³õʼ»¯*/
-static int __init
-tsp_fast_init(void)
-{
-    int ret4 = 0, ret6 = 0;
-
-    memset(zeromac, 0, sizeof(zeromac));
-
-    spin_lock_init(&fast_fw_spinlock);
-    //²ÉÓÃרÊôslab»úÖÆ
-    fast_head_cache = kmem_cache_create("fast_head_cache",
-                                        sizeof(struct fast_entry_s),
-                                        0,
-                                        SLAB_HWCACHE_ALIGN|SLAB_PANIC,
-                                        NULL);
-
-    //·Ö±ðµ÷ÓÃipv4¡¢ipv6µÄ³õʼ»¯º¯Êý
-    ret4 = tsp_fastnat_init();
-    ret6 = tsp_fast6_init();
-    fast4_fw_init();
-    fast6_fw_init();
-
-    if ((ret4 != 0) && (ret6 != 0))
-        return -EINVAL;
-
-    /*×¢²á֪ͨÁ´*/
-    register_netdevice_notifier(&fast_dev_notifier);
-    register_inetaddr_notifier(&fast_inet_notifier);
-
-    //¿ìËÙת·¢ºÍƽ̨»¯procÎļþ³õʼ»¯
-    set_fast_level_cb(fastnat_level);
-    set_fast_switch_cb(fast_switch);
-    fast_conntrack_init_proc();
-
-    net_adapter_init_proc();
-    return 0;
-}
-
-static void __exit
-tsp_fast_cleanup(void)
-{
-    set_fast_level_cb(FAST_CLOSE);
-    set_fast_switch_cb(0);
-    unregister_netdevice_notifier(&fast_dev_notifier);
-    unregister_inetaddr_notifier(&fast_inet_notifier);
-
-    //·Ö±ðµ÷ÓÃipv4¡¢ipv6µÄ×¢Ïúº¯Êý
-    tsp_fastnat_cleanup();
-    tsp_fast6_cleanup();
-    fast4_fw_cleanup();
-    fast6_fw_cleanup();
-}
-
-late_initcall(tsp_fast_init);
-module_exit(tsp_fast_cleanup);
-
diff --git a/upstream/linux-5.10/net/core/fastproc/fast_track.c b/upstream/linux-5.10/net/core/fastproc/fast_track.c
deleted file mode 100755
index 37f3cfc..0000000
--- a/upstream/linux-5.10/net/core/fastproc/fast_track.c
+++ /dev/null
@@ -1,1203 +0,0 @@
-#include <linux/types.h>

-#include <linux/netfilter.h>

-#include <linux/slab.h>

-#include <linux/module.h>

-#include <linux/proc_fs.h>    /* Necessary because we use proc fs */

-#include <linux/skbuff.h>

-#include <linux/proc_fs.h>

-#include <linux/seq_file.h>

-#include <linux/percpu.h>

-#include <linux/netdevice.h>

-#include <linux/security.h>

-#include <net/net_namespace.h>

-#ifdef CONFIG_SYSCTL

-#include <linux/sysctl.h>

-#endif

-#include <linux/rculist_nulls.h>

-#include <net/netfilter/nf_conntrack.h>

-#include <net/netfilter/nf_conntrack_core.h>

-#include <net/netfilter/nf_conntrack_l4proto.h>

-#include <net/netfilter/nf_conntrack_expect.h>

-#include <net/netfilter/nf_conntrack_helper.h>

-#include <net/netfilter/nf_conntrack_acct.h>

-#include <net/netfilter/nf_conntrack_zones.h>

-#include <net/netfilter/nf_conntrack_timestamp.h>

-#include <net/SI/fastnat.h>

-#include <net/SI/fast6.h>

-#include <net/SI/fast_common.h>

-#include <net/SI/netioc_proc.h>

-

-

-#define PORT_LEN 10

-extern int fastnat_ack_param;

-extern int ackdrop_maxnum;

-extern unsigned int ct_iptables_syn_sw;

-

-

-static unsigned int seq_print_acct(struct seq_file *s, const struct nf_conn *ct, int dir)

-{

-    struct nf_conn_acct *acct;

-    struct nf_conn_counter *counter;

-

-    acct = nf_conn_acct_find(ct);

-    if (!acct)

-        return 0;

-

-    counter = acct->counter;

-    seq_printf(s, "packets=%llu bytes=%llu ",

-               (unsigned long long)atomic64_read(&counter[dir].packets),

-               (unsigned long long)atomic64_read(&counter[dir].bytes));

-

-    return 0;

-}

-

-static void *fastnat_level_seq_start(struct seq_file *seq, loff_t *pos)

-__acquires(RCU)

-{

-    if (*pos >= 1)

-        return NULL;

-    return 1;

-}

-

-static void *fastnat_level_seq_next(struct seq_file *s, void *v, loff_t *pos)

-{

-    (*pos)++;

-    return NULL;

-}

-

-static void fastnat_level_seq_stop(struct seq_file *s, void *v)

-__releases(RCU)

-{

-    return;

-}

-

-/* return 0 on success, 1 in case of error */

-static int fastnat_level_seq_show(struct seq_file *s, void *v)

-{

-    seq_printf(s, "fastnat_level: %d\n", fastnat_level);

-    return 0;

-}

-

-static const struct seq_operations fastnat_level_seq_ops = {

-    .start = fastnat_level_seq_start,

-    .next  = fastnat_level_seq_next,

-    .stop  = fastnat_level_seq_stop,

-    .show  = fastnat_level_seq_show

-};

-

-static int fastnat_level_open(struct inode *inode, struct file *file)

-{

-    return seq_open(file, &fastnat_level_seq_ops);

-}

-

-//Óû§Ð´ÃüÁîµÄ²Î¿¼´úÂ룬¿ÉÓÃÀ´ÅäÖùØÁªÉèÖá¢Íø¿ÚÃûµÈ²Ù×÷

-static ssize_t fastnat_level_set(struct file *file,

-                                 const char __user *buffer, size_t count, loff_t *pos)

-{

-    size_t size;

-    char char_fastnat[5] = {0};

-    int level = 0;

-

-    //countβ²¿°üº¬ÁË1¸ö½áÊø·û£¬Ö»Ö§³Ö0-3ÊäÈë

-    if (count != 2)

-        return -EINVAL;

-

-    if (copy_from_user(char_fastnat, buffer, 1))

-        return -EFAULT;

-

-    if ((char_fastnat[0] < '0' || char_fastnat[0] > '2') && (char_fastnat[0] != '5'))

-        return -EINVAL;

-

-    level = (int)(char_fastnat[0] - '0');

-

-    //ÖØÐÂÉèÖÿìËÙת·¢¹³×Óº¯Êý

-    fast_level_change(level);

-    return count;

-}

-

-static void *fast_switch_seq_start(struct seq_file *seq, loff_t *pos)

-__acquires(RCU)

-{

-    if (*pos >= 1)

-        return NULL;

-    return 1;

-}

-

-static void *fast_switch_seq_next(struct seq_file *s, void *v, loff_t *pos)

-{

-    (*pos)++;

-    return NULL;

-}

-

-static void fast_switch_seq_stop(struct seq_file *s, void *v)

-__releases(RCU)

-{

-    return;

-}

-

-/* return 0 on success, 1 in case of error */

-static int fast_switch_seq_show(struct seq_file *s, void *v)

-{

-    seq_printf(s, "fast_switch: 0x%x\n", (unsigned int)fast_switch);

-    return 0;

-}

-

-static const struct seq_operations fast_switch_seq_ops = {

-    .start = fast_switch_seq_start,

-    .next  = fast_switch_seq_next,

-    .stop  = fast_switch_seq_stop,

-    .show  = fast_switch_seq_show

-};

-

-static int fast_switch_open(struct inode *inode, struct file *file)

-{

-    return seq_open(file, &fast_switch_seq_ops);

-}

-

-//Óû§Ð´ÃüÁîµÄ²Î¿¼´úÂ룬¿ÉÓÃÀ´ÅäÖùØÁªÉèÖá¢Íø¿ÚÃûµÈ²Ù×÷

-static ssize_t fast_switch_set(struct file *file,

-                               const char __user *buffer, size_t count, loff_t *pos)

-{

-    size_t size;

-    char char_fastnat[5] = {0};

-    int level = 0, i = 0;

-

-    //countβ²¿°üº¬ÁË1¸ö½áÊø·û£¬Ö»Ö§³Ö0-3ÊäÈë

-    if (count > 5)

-        return -EINVAL;

-

-    memset(char_fastnat, 0,  5);

-    if (copy_from_user(char_fastnat, buffer, 5))

-        return -EFAULT;

-

-    for(i = 0; i < count - 1; i++) {

-        if(char_fastnat[i] < '0' || char_fastnat[i] > '9')

-            return -EINVAL;

-        level = (int)(char_fastnat[i] - '0') + level*10;

-    }

-

-    //ÖØÐÂÉèÖÿìËÙת·¢¹³×Óº¯Êý

-    fast_switch_change(level);

-    return count;

-}

-

-static void *fastbr_level_seq_start(struct seq_file *seq, loff_t *pos)

-__acquires(RCU)

-{

-    if (*pos >= 1)

-        return NULL;

-    return 1;

-}

-

-static void *fastbr_level_seq_next(struct seq_file *s, void *v, loff_t *pos)

-{

-    (*pos)++;

-    return NULL;

-}

-

-static void fastbr_level_seq_stop(struct seq_file *s, void *v)

-__releases(RCU)

-{

-    return;

-}

-

-/* return 0 on success, 1 in case of error */

-static int fastbr_level_seq_show(struct seq_file *s, void *v)

-{

-    seq_printf(s, "fastbr_level: %d\n", fastbr_level);

-    return 0;

-}

-

-static const struct seq_operations fastbr_level_seq_ops = {

-    .start = fastbr_level_seq_start,

-    .next  = fastbr_level_seq_next,

-    .stop  = fastbr_level_seq_stop,

-    .show  = fastbr_level_seq_show

-};

-

-static int fastbr_level_open(struct inode *inode, struct file *file)

-{

-    return seq_open(file, &fastbr_level_seq_ops);

-}

-

-//Óû§Ð´ÃüÁîµÄ²Î¿¼´úÂ룬¿ÉÓÃÀ´ÅäÖùØÁªÉèÖá¢Íø¿ÚÃûµÈ²Ù×÷

-static ssize_t fastbr_level_set(struct file *file,

-                                const char __user *buffer, size_t count, loff_t *pos)

-{

-    size_t size;

-    char char_fastbr[5] = {0};

-

-    //countβ²¿°üº¬ÁË1¸ö½áÊø·û£¬Ö»Ö§³Ö0-1ÊäÈë

-    if (count != 2)

-        return -EINVAL;

-

-    if (copy_from_user(char_fastbr, buffer, 1))

-        return -EFAULT;

-

-    if (char_fastbr[0] < '0' || char_fastbr[0] > '1')

-        return -EINVAL;

-

-    fastbr_level = (int)(char_fastbr[0] - '0');

-

-    return count;

-}

-

-static void *fastnat_seq_start(struct seq_file *seq, loff_t *pos)

-__acquires(RCU)

-{

-    spin_lock_bh(&fastnat_spinlock);

-    if (*pos >= nf_conntrack_htable_size)

-        return NULL;

-    else

-    {

-        if (*pos == 0)

-        {

-            seq_printf(seq, "fastnat have %d conn!!!\nskb_num4:%d,fastnat_num:%d\n",

-                       working_list.count, skb_num4, fastnat_num);

-            seq_printf(seq, "fastbr_sum:%d,fastbr_num:%d\n",

-                       skb_num4 + skb_num6 + skb_unknown - fastnat_num - fast6_num, fastbr_num);

-

-            if ((fastnat_ack_param == 1) && (ackdrop_maxnum  >= 1))

-            {

-                seq_printf(seq, "fastnat ack_delay_stats : total_count = %u, forword_count = %u, drop_count = %u, "

-                           "timeout_xmit_count = %u, timeout_drop_count = %u\n",

-                           (unsigned int)ack_delay_stats.total_count, (unsigned int)ack_delay_stats.forword_count,

-                           (unsigned int)ack_delay_stats.drop_count, (unsigned int)ack_delay_stats.timeout_xmit_count,

-                           (unsigned int)ack_delay_stats.timeout_drop_count);

-            }

-        }

-        return &working_hash[*pos];

-    }

-

-}

-

-static void *fastnat_seq_next(struct seq_file *s, void *v, loff_t *pos)

-{

-    (*pos)++;

-    //return fastnat_get_next(s, v);

-    if (*pos >= nf_conntrack_htable_size)

-        return NULL;

-    else

-        return &working_hash[*pos];

-}

-

-

-static void fastnat_seq_stop(struct seq_file *s, void *v)

-__releases(RCU)

-{

-    spin_unlock_bh(&fastnat_spinlock);

-}

-

-/* return 0 on success, 1 in case of error */

-static int fastnat_seq_show(struct seq_file *s, void *v)

-{

-    struct hlist_nulls_head    *head = (struct hlist_nulls_head *) v;

-    struct nf_conntrack_tuple_hash *h;

-    struct hlist_nulls_node *n;

-    fast_entry_data_t *nat_entry_data;

-    fast_entry_t *nat_entry = NULL;

-    const struct nf_conntrack_l3proto *l3proto;

-    const struct nf_conntrack_l4proto *l4proto;

-    int ret = 0;

-

-    hlist_nulls_for_each_entry(h, n, head, hnnode)

-    {

-        nat_entry_data = fast_hash_to_data(h);

-        nat_entry = fast_data_to_entry(nat_entry_data);

-

-        if (unlikely(!atomic_inc_not_zero(&nat_entry->ct->ct_general.use)))

-            return 0;

-

-        /* we only want to print DIR_ORIGINAL */

-        if (NF_CT_DIRECTION(h))

-        {

-            nf_ct_put(nat_entry->ct);

-            continue;

-        }

-

-        l4proto = nf_ct_l4proto_find(nf_ct_protonum(nat_entry->ct));

-

-

-        ret = -ENOSPC;

-        seq_printf(s, "l3proto: %u l4proto: %u %lu %lu %lu ",

-                   nf_ct_l3num(nat_entry->ct), nf_ct_protonum(nat_entry->ct),

-                   (unsigned long)(nat_entry->timeout.expires/HZ),

-                   (unsigned long)(tcp_timeouts[nat_entry->ct->proto.tcp.state]/HZ), (unsigned long)(jiffies/HZ));

-        //tcp_conntrack_namesÖ»¶¨ÒåÁ˵½TCP_CONNTRACK_MAXµÄÃû³Æ£¬¶østateºóÃæ»¹ÓжàÓàµÄ״̬

-        if (nat_entry->ct->proto.tcp.state < TCP_CONNTRACK_MAX)

-        {

-#ifdef CONFIG_NF_CONNTRACK_PROCFS

-            if (l4proto->print_conntrack)

-            {

-                l4proto->print_conntrack(s, nat_entry->ct);

-            }

-#endif

-        }

-

-        print_tuple(s, &nat_entry->ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple,

-                    l4proto);

-

-        if (seq_print_acct(s, nat_entry->ct, IP_CT_DIR_ORIGINAL))

-        {

-            nf_ct_put(nat_entry->ct);

-            continue;

-        }

-

-        if (!(test_bit(IPS_SEEN_REPLY_BIT, &nat_entry->ct->status)))

-            seq_printf(s, "[UNREPLIED] ");

-

-

-        print_tuple(s, &nat_entry->ct->tuplehash[IP_CT_DIR_REPLY].tuple,

-                    l4proto);

-

-        if (seq_print_acct(s, nat_entry->ct, IP_CT_DIR_REPLY))

-        {

-            nf_ct_put(nat_entry->ct);

-            continue;

-        }

-

-        if (test_bit(IPS_ASSURED_BIT, &nat_entry->ct->status))

-            seq_printf(s, "[ASSURED] ");

-

-

-        seq_printf(s, "NAT_ip=%pI4 NAT_port==%hu  \n",&nat_entry->data[IP_CT_DIR_ORIGINAL].nat_addr,ntohs(nat_entry->data[IP_CT_DIR_ORIGINAL].nat_port));

-        nf_ct_put(nat_entry->ct);

-    }

-

-    return 0;

-}

-

-

-static const struct seq_operations fastnat_seq_ops = {

-    .start = fastnat_seq_start,

-    .next  = fastnat_seq_next,

-    .stop  = fastnat_seq_stop,

-    .show  = fastnat_seq_show

-};

-

-static int fastnat_open(struct inode *inode, struct file *file)

-{

-    return seq_open(file, &fastnat_seq_ops);

-}

-

-static void *fast6_seq_start(struct seq_file *seq, loff_t *pos)

-__acquires(RCU)

-{

-    spin_lock_bh(&fast6_spinlock);

-    if (*pos >= nf_conntrack_htable_size)

-        return NULL;

-    else

-    {

-        if (*pos == 0)

-        {

-#if 0

-            seq_printf(seq, "fastnat ack_delay_stats : total_count = %d, forword_count = %d, drop_count = %d, "

-                       "timeout_xmit_count = %d, timeout_drop_count = %d\n",

-                       ack_delay_stats.total_count, ack_delay_stats.forword_count, ack_delay_stats.drop_count,

-                       ack_delay_stats.timeout_xmit_count, ack_delay_stats.timeout_drop_count);

-            seq_printf(seq, "fastnat have %d conn!!!\nfastnat_recv_count:%d,fastnat_real_count:%d\n",

-                       working_list.count,fastnat_recv_count,fastnat_real_count);

-            seq_printf(seq, "send_2_ps_failed:%u, send_2_usb_failed:%u\n", send_2_ps_failed, send_2_usb_failed);

-#endif

-            seq_printf(seq, "fast6 have %d conn!!!\nskb_num6:%d,fast6_num:%d\n",

-                       working_list6.count, skb_num6, fast6_num);

-        }

-        return &working_hash6[*pos];

-    }

-

-}

-

-static void *fast6_seq_next(struct seq_file *s, void *v, loff_t *pos)

-{

-    (*pos)++;

-    if (*pos >= nf_conntrack_htable_size)

-        return NULL;

-    else

-        return &working_hash6[*pos];

-}

-

-

-static void fast6_seq_stop(struct seq_file *s, void *v)

-__releases(RCU)

-{

-    spin_unlock_bh(&fast6_spinlock);

-}

-

-/* return 0 on success, 1 in case of error */

-static int fast6_seq_show(struct seq_file *s, void *v)

-{

-    struct hlist_nulls_head    *head = (struct hlist_nulls_head *) v;

-    struct nf_conntrack_tuple_hash *h;

-    struct hlist_nulls_node *n;

-    fast_entry_data_t *fast6_entry_data;

-    fast_entry_t *fast6_entry = NULL;

-    const struct nf_conntrack_l3proto *l3proto;

-    const struct nf_conntrack_l4proto *l4proto;

-    int ret = 0;

-

-    hlist_nulls_for_each_entry(h, n, head, hnnode)

-    {

-        fast6_entry_data = fast_hash_to_data(h);

-        fast6_entry = fast_data_to_entry(fast6_entry_data);

-

-        if (unlikely(!atomic_inc_not_zero(&fast6_entry->ct->ct_general.use)))

-            return 0;

-

-        /* we only want to print DIR_ORIGINAL */

-        if (NF_CT_DIRECTION(h))

-        {

-            nf_ct_put(fast6_entry->ct);

-            continue;

-        }

-

-        l4proto = nf_ct_l4proto_find(nf_ct_protonum(fast6_entry->ct));

-

-        ret = -ENOSPC;

-        seq_printf(s, "l3proto: %u l4proto: %u %lu %lu %lu ",

-                   nf_ct_l3num(fast6_entry->ct), nf_ct_protonum(fast6_entry->ct),

-                   (unsigned long)(fast6_entry->timeout.expires/HZ),

-                   (unsigned long)(tcp_timeouts[fast6_entry->ct->proto.tcp.state]/HZ), (unsigned long)(jiffies/HZ));

-

-        //tcp_conntrack_namesÖ»¶¨ÒåÁ˵½TCP_CONNTRACK_MAXµÄÃû³Æ£¬¶østateºóÃæ»¹ÓжàÓàµÄ״̬

-        if (fast6_entry->ct->proto.tcp.state < TCP_CONNTRACK_MAX)

-        {

-#ifdef CONFIG_NF_CONNTRACK_PROCFS

-            if (l4proto->print_conntrack)

-            {

-                l4proto->print_conntrack(s, fast6_entry->ct);

-            }

-#endif

-        }

-

-        print_tuple(s, &fast6_entry->ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple,

-                    l4proto);

-

-        if (seq_print_acct(s, fast6_entry->ct, IP_CT_DIR_ORIGINAL))

-        {

-            nf_ct_put(fast6_entry->ct);

-            continue;

-        }

-

-        if (!(test_bit(IPS_SEEN_REPLY_BIT, &fast6_entry->ct->status)))

-            seq_printf(s, "[UNREPLIED] ");

-

-        print_tuple(s, &fast6_entry->ct->tuplehash[IP_CT_DIR_REPLY].tuple,

-                    l4proto);

-

-        if (seq_print_acct(s, fast6_entry->ct, IP_CT_DIR_REPLY))

-        {

-            nf_ct_put(fast6_entry->ct);

-            continue;

-        }

-

-        if (test_bit(IPS_ASSURED_BIT, &fast6_entry->ct->status))

-            seq_printf(s, "[ASSURED] ");

-

-

-        seq_printf(s, "\n");

-        nf_ct_put(fast6_entry->ct);

-    }

-

-    return 0;

-}

-

-static const struct seq_operations fast6_seq_ops = {

-    .start = fast6_seq_start,

-    .next  = fast6_seq_next,

-    .stop  = fast6_seq_stop,

-    .show  = fast6_seq_show

-};

-

-static int fast6_open(struct inode *inode, struct file *file)

-{

-    return seq_open(file, &fast6_seq_ops);

-}

-

-//Óû§Ð´ÃüÁîµÄ²Î¿¼´úÂ룬¿ÉÓÃÀ´ÅäÖùØÁªÉèÖá¢Íø¿ÚÃûµÈ²Ù×÷

-static ssize_t dev_down_set(struct file *file,

-                            const char __user *buffer, size_t count, loff_t *pos)

-{

-    size_t size;

-    char dev_name[MAX_NET_DEVICE_NAME_LEN + 1] = {0};

-

-    //countβ²¿°üº¬ÁË1¸ö½áÊø·û

-    size = min(count - 1, MAX_NET_DEVICE_NAME_LEN);

-    if (copy_from_user(dev_name, buffer, size))

-        return -EFAULT;

-

-    //ɾ³ý´ËÍøÂçÉ豸Ïà¹Øipv4,ipv6Á´½Ó

-    fast_device_down_event_by_name(dev_name);

-

-    return count;

-}

-

-static void *nofast_port_seq_start(struct seq_file *seq, loff_t *pos)

-__acquires(RCU)

-{

-    if (*pos >= 1)

-        return NULL;

-    return 1;

-}

-

-static void *nofast_port_seq_next(struct seq_file *s, void *v, loff_t *pos)

-{

-    (*pos)++;

-    return NULL;

-}

-

-static void nofast_port_seq_stop(struct seq_file *s, void *v)

-__releases(RCU)

-{

-    return;

-}

-

-static int nofast_port_seq_show(struct seq_file *s, void *v)

-{

-    int i = 0;

-

-    if (nofast_port[0] == 0)

-    {

-        seq_printf(s, "All ports support fast! \n");

-    }

-    else

-    {

-        seq_printf(s, "Not supported ports include:\n%d", nofast_port[0]);

-

-        for (i = 1; i < NOFAST_PROTO_MAX; i++)

-        {

-            //¶Ë¿ÚºÅÓöµ½0½áÊø

-            if (nofast_port[i] == 0)

-                break;

-            seq_printf(s, "+%d", nofast_port[i]);

-        }

-        seq_printf(s, "\n\n");

-    }

-    return 0;

-}

-

-static const struct seq_operations nofast_port_seq_ops = {

-    .start = nofast_port_seq_start,

-    .next  = nofast_port_seq_next,

-    .stop  = nofast_port_seq_stop,

-    .show  = nofast_port_seq_show

-};

-

-static int nofast_port_open(struct inode *inode, struct file *file)

-{

-    return seq_open(file, &nofast_port_seq_ops);

-}

-

-struct nf_conntrack_tuple tuple_info;

-/*

-1~6 fast Á´½ÓÐÅÏ¢²éѯ

-8 skbÊͷŵã²éѯ

-9 socket ¸ú×ÙÐÅÏ¢²éѯ

-*/

-int getconn_type = 0;

-

-static void *conn_datainfo_seq_start(struct seq_file *seq, loff_t *pos)

-__acquires(RCU)

-{

-    if (*pos >= 1)

-        return NULL;

-    seq_printf(seq, "start fast4 count:%ld, fw:%ld, local4_recv:%ld, local4_output:%ld\n",

-               (long)skb_num4, (long)fastnat_num, (long)fast_local4_rcv_num, (long)fast_local4_output_num);

-    seq_printf(seq, "start fast6 count:%ld, fw:%ld, local6_recv:%ld, local6_output:%ld\n",

-               (long)skb_num6, (long)fast6_num, (long)fast_local6_rcv_num, (long)fast_local6_output_num);

-    return 1;

-}

-

-static void *conn_datainfo_seq_next(struct seq_file *s, void *v, loff_t *pos)

-{

-    (*pos)++;

-    return NULL;

-}

-

-static void conn_datainfo_seq_stop(struct seq_file *s, void *v)

-__releases(RCU)

-{

-    return;

-}

-

-static int conn_datainfo_seq_show(struct seq_file *s, void *v)

-{

-    int i = 0, j = 0;

-    struct nf_conntrack_tuple_hash *h;

-    struct nf_conntrack_tuple_hash *h_rdir;

-    struct nf_conn * ct;

-    struct hlist_nulls_node *n;

-

-    for(i = 0; i < nf_conntrack_htable_size; i++) {

-        hlist_nulls_for_each_entry(h, n, &nf_conntrack_hash[i], hnnode) {

-            if(h->tuple.dst.dir != IP_CT_DIR_ORIGINAL)

-                continue;

-            if(tuple_info.dst.protonum && tuple_info.dst.protonum != h->tuple.dst.protonum)

-                continue;

-            if(tuple_info.dst.u3.ip && memcmp(&tuple_info.dst.u3.ip6, h->tuple.dst.u3.ip6, 16) != 0)

-                continue;

-            if(tuple_info.src.u3.ip && memcmp(&tuple_info.src.u3.ip6, h->tuple.src.u3.ip6, 16) != 0)

-                continue;

-            if(tuple_info.dst.u.all && tuple_info.dst.u.all != h->tuple.dst.u.all) {

-                continue;

-            }

-            if(tuple_info.src.u.all && tuple_info.src.u.all != h->tuple.src.u.all) {

-                continue;

-            }

-

-            ct = container_of(h, struct nf_conn, tuplehash[h->tuple.dst.dir]);

-

-            spin_lock_bh(&fast_fw_spinlock);

-            if(getconn_type && getconn_type != ct->fast_ct.isFast)

-            {

-                spin_unlock_bh(&fast_fw_spinlock);

-                continue;

-            }

-            if (unlikely(!atomic_inc_not_zero(&ct->ct_general.use)))

-            {

-                spin_unlock_bh(&fast_fw_spinlock);

-                continue;

-            }

-

-            h_rdir = &ct->tuplehash[IP_CT_DIR_REPLY];

-            if(h->tuple.src.l3num == AF_INET) {

-                /*seq_printf(s, "ctinfo protonum: %d  Original sip: %08x, sport: %d, dip: %08x, dport: %d, packets: %lu , bytes: %lu;",

-                    h->tuple.dst.protonum, ntohl(h->tuple.src.u3.ip), ntohs(h->tuple.src.u.all), ntohl(h->tuple.dst.u3.ip), ntohs(h->tuple.dst.u.all),

-                    ct->packet_info[IP_CT_DIR_ORIGINAL].packets, ct->packet_info[IP_CT_DIR_ORIGINAL].bytes);

-                seq_printf(s, "    reply sip: %08x, sport: %d, dip: %08x, dport: %d, packets: %lu , bytes: %lu\n",

-                    ntohl(h_rdir->tuple.src.u3.ip), ntohs(h_rdir->tuple.src.u.all), ntohl(h_rdir->tuple.dst.u3.ip), ntohs(h_rdir->tuple.dst.u.all),

-                    ct->packet_info[IP_CT_DIR_REPLY].packets, ct->packet_info[IP_CT_DIR_REPLY].bytes);*/

-                seq_printf(s, "ctinfo protonum: %d  Original sip: %08x, sport: %d, dip: %08x, dport: %d;",

-                           h->tuple.dst.protonum, ntohl(h->tuple.src.u3.ip), ntohs(h->tuple.src.u.all), ntohl(h->tuple.dst.u3.ip), ntohs(h->tuple.dst.u.all));

-                seq_printf(s, "    reply sip: %08x, sport: %d, dip: %08x, dport: %d\n",

-                           ntohl(h_rdir->tuple.src.u3.ip), ntohs(h_rdir->tuple.src.u.all), ntohl(h_rdir->tuple.dst.u3.ip), ntohs(h_rdir->tuple.dst.u.all));

-            }

-            else if(h->tuple.src.l3num == AF_INET6) {

-                /*seq_printf(s, "ctinfo  protonum: %d  Original sip: %x:%x:%x:%x:%x:%x:%x:%x sport: %d, dip: %x:%x:%x:%x:%x:%x:%x:%x, dport: %d, packets: %lu , bytes: %lu;",

-                    h->tuple.dst.protonum, ntohs(h->tuple.src.u3.in6.s6_addr16[0]), ntohs(h->tuple.src.u3.in6.s6_addr16[1]), ntohs(h->tuple.src.u3.in6.s6_addr16[2]), ntohs(h->tuple.src.u3.in6.s6_addr16[3]),

-                    ntohs(h->tuple.src.u3.in6.s6_addr16[4]), ntohs(h->tuple.src.u3.in6.s6_addr16[5]), ntohs(h->tuple.src.u3.in6.s6_addr16[6]), ntohs(h->tuple.src.u3.in6.s6_addr16[7]), ntohs(h->tuple.src.u.all),

-                    ntohs(h->tuple.dst.u3.in6.s6_addr16[0]), ntohs(h->tuple.dst.u3.in6.s6_addr16[1]), ntohs(h->tuple.dst.u3.in6.s6_addr16[2]), ntohs(h->tuple.dst.u3.in6.s6_addr16[3]),

-                    ntohs(h->tuple.dst.u3.in6.s6_addr16[4]), ntohs(h->tuple.dst.u3.in6.s6_addr16[5]), ntohs(h->tuple.dst.u3.in6.s6_addr16[6]), ntohs(h->tuple.dst.u3.in6.s6_addr16[7]), ntohs(h->tuple.dst.u.all),

-                    ct->packet_info[IP_CT_DIR_ORIGINAL].packets, ct->packet_info[IP_CT_DIR_ORIGINAL].bytes);

-                seq_printf(s, "    Reply sip: %x:%x:%x:%x:%x:%x:%x:%x sport: %d, dip: %x:%x:%x:%x:%x:%x:%x:%x, dport: %d, packets: %lu , bytes: %lu\n",

-                    ntohs(h_rdir->tuple.src.u3.in6.s6_addr16[0]), ntohs(h_rdir->tuple.src.u3.in6.s6_addr16[1]), ntohs(h_rdir->tuple.src.u3.in6.s6_addr16[2]), ntohs(h_rdir->tuple.src.u3.in6.s6_addr16[3]),

-                    ntohs(h_rdir->tuple.src.u3.in6.s6_addr16[4]), ntohs(h_rdir->tuple.src.u3.in6.s6_addr16[5]), ntohs(h_rdir->tuple.src.u3.in6.s6_addr16[6]), ntohs(h_rdir->tuple.src.u3.in6.s6_addr16[7]), ntohs(h_rdir->tuple.src.u.all),

-                    ntohs(h_rdir->tuple.dst.u3.in6.s6_addr16[0]), ntohs(h_rdir->tuple.dst.u3.in6.s6_addr16[1]), ntohs(h_rdir->tuple.dst.u3.in6.s6_addr16[2]), ntohs(h_rdir->tuple.dst.u3.in6.s6_addr16[3]),

-                    ntohs(h_rdir->tuple.dst.u3.in6.s6_addr16[4]), ntohs(h_rdir->tuple.dst.u3.in6.s6_addr16[5]), ntohs(h_rdir->tuple.dst.u3.in6.s6_addr16[6]), ntohs(h_rdir->tuple.dst.u3.in6.s6_addr16[7]), ntohs(h_rdir->tuple.dst.u.all),

-                    ct->packet_info[IP_CT_DIR_REPLY].packets, ct->packet_info[IP_CT_DIR_REPLY].bytes);*/

-                seq_printf(s, "ctinfo  protonum: %d  Original sip: %x:%x:%x:%x:%x:%x:%x:%x sport: %d, dip: %x:%x:%x:%x:%x:%x:%x:%x, dport: %d, packets: xx , bytes: xx;",

-                           h->tuple.dst.protonum, ntohs(h->tuple.src.u3.in6.s6_addr16[0]), ntohs(h->tuple.src.u3.in6.s6_addr16[1]), ntohs(h->tuple.src.u3.in6.s6_addr16[2]), ntohs(h->tuple.src.u3.in6.s6_addr16[3]),

-                           ntohs(h->tuple.src.u3.in6.s6_addr16[4]), ntohs(h->tuple.src.u3.in6.s6_addr16[5]), ntohs(h->tuple.src.u3.in6.s6_addr16[6]), ntohs(h->tuple.src.u3.in6.s6_addr16[7]), ntohs(h->tuple.src.u.all),

-                           ntohs(h->tuple.dst.u3.in6.s6_addr16[0]), ntohs(h->tuple.dst.u3.in6.s6_addr16[1]), ntohs(h->tuple.dst.u3.in6.s6_addr16[2]), ntohs(h->tuple.dst.u3.in6.s6_addr16[3]),

-                           ntohs(h->tuple.dst.u3.in6.s6_addr16[4]), ntohs(h->tuple.dst.u3.in6.s6_addr16[5]), ntohs(h->tuple.dst.u3.in6.s6_addr16[6]), ntohs(h->tuple.dst.u3.in6.s6_addr16[7]), ntohs(h->tuple.dst.u.all));

-                seq_printf(s, "    Reply sip: %x:%x:%x:%x:%x:%x:%x:%x sport: %d, dip: %x:%x:%x:%x:%x:%x:%x:%x, dport: %d, packets: xx , bytes: xx\n",

-                           ntohs(h_rdir->tuple.src.u3.in6.s6_addr16[0]), ntohs(h_rdir->tuple.src.u3.in6.s6_addr16[1]), ntohs(h_rdir->tuple.src.u3.in6.s6_addr16[2]), ntohs(h_rdir->tuple.src.u3.in6.s6_addr16[3]),

-                           ntohs(h_rdir->tuple.src.u3.in6.s6_addr16[4]), ntohs(h_rdir->tuple.src.u3.in6.s6_addr16[5]), ntohs(h_rdir->tuple.src.u3.in6.s6_addr16[6]), ntohs(h_rdir->tuple.src.u3.in6.s6_addr16[7]), ntohs(h_rdir->tuple.src.u.all),

-                           ntohs(h_rdir->tuple.dst.u3.in6.s6_addr16[0]), ntohs(h_rdir->tuple.dst.u3.in6.s6_addr16[1]), ntohs(h_rdir->tuple.dst.u3.in6.s6_addr16[2]), ntohs(h_rdir->tuple.dst.u3.in6.s6_addr16[3]),

-                           ntohs(h_rdir->tuple.dst.u3.in6.s6_addr16[4]), ntohs(h_rdir->tuple.dst.u3.in6.s6_addr16[5]), ntohs(h_rdir->tuple.dst.u3.in6.s6_addr16[6]), ntohs(h_rdir->tuple.dst.u3.in6.s6_addr16[7]), ntohs(h_rdir->tuple.dst.u.all));

-            }

-            if(ct->fast_ct.isFast == FAST_CT_LOCAL6 || ct->fast_ct.isFast == FAST_CT_LOCAL4) {

-                seq_printf(s, "ctinfo ->ISFAST: %d, sk: %#llx\n", ct->fast_ct.isFast, (UINT64)ct->fast_ct.sk);

-            } else if(ct->fast_ct.isFast == FAST_CT_FW6 || ct->fast_ct.isFast == FAST_CT_FW4) {

-                seq_printf(s, "ctinfo ->ISFAST: %d", ct->fast_ct.isFast);

-                if(ct->fast_ct.fast_dst[IP_CT_DIR_ORIGINAL])

-                    seq_printf(s, "    Original fast_dst: %#llx", (UINT64)ct->fast_ct.fast_dst[IP_CT_DIR_ORIGINAL]);

-                if(ct->fast_ct.fast_dst[IP_CT_DIR_REPLY])

-                    seq_printf(s, "    Reply fast_dst: %#llx", (UINT64)ct->fast_ct.fast_dst[IP_CT_DIR_REPLY]);

-                if(ct->fast_ct.fast_brport[IP_CT_DIR_ORIGINAL])

-                    seq_printf(s, "    Original fast_brport: %#llx", (UINT64)ct->fast_ct.fast_brport[IP_CT_DIR_ORIGINAL]);

-                if(ct->fast_ct.fast_brport[IP_CT_DIR_REPLY])

-                    seq_printf(s, "    Reply fast_brport: %#llx", (UINT64)ct->fast_ct.fast_brport[IP_CT_DIR_REPLY]);

-                seq_printf(s, "\n");

-            }

-

-            spin_unlock_bh(&fast_fw_spinlock);

-            nf_ct_put(ct);

-        }

-    }

-    return 0;

-}

-

-static const struct seq_operations conn_datainfo_seq_ops= {

-    .start = conn_datainfo_seq_start,

-    .next  = conn_datainfo_seq_next,

-    .stop  = conn_datainfo_seq_stop,

-    .show  = conn_datainfo_seq_show

-

-};

-

-static int conn_datainfo_open(struct inode *inode, struct file *file)

-{

-    return seq_open(file, &conn_datainfo_seq_ops);

-}

-

-//Ê®½øÖÆ×Ö·û´®×ª»¯ÎªÕûÊý

-static int str2int(char *str)

-{

-    int i = 0, value = 0, negative = 1;

-    int len = strlen(str);

-

-    for (i = 0; i < len; i++)

-    {

-        //Ìø¹ýÇ°ÃæµÄ¿Õ¸ñ

-        if ((value == 0) && (str[i] == ' '))

-            continue;

-

-        //µÚÒ»¸öÓÐЧ×Ö·ûÊǸººÅ

-        if ((negative == 1) && (str[i] == '-'))

-        {

-            negative = -1;

-            continue;

-        }

-

-        //Óöµ½·ÇÊ®½øÖÆÊý×ÖÔò½áÊø

-        if (str[i] < '0' || str[i] > '9')

-            break;

-        value = value * 10 + (str[i] - '0');

-    }

-    return value * negative;

-}

-

-static void parse_nofast_port(const char *str, char split)

-{

-    char *p = NULL;

-    char *pre = str;

-    char portStr[PORT_LEN] = {0}; //ЭÒé¶Ë¿ÚºÅ×î´óΪ65535

-    int count = 0, port = 0, len = 0;

-

-    memset(nofast_port, 0, NOFAST_PROTO_MAX * sizeof(nofast_port[0]));

-

-    for (; (p = strchr(pre, split)) != NULL; pre = p + 1)

-    {

-        //µÚÒ»¸ö×Ö·û¾ÍÊÇ·Ö¸ô·û

-        if (p == pre)

-            continue;

-

-        memset(portStr, 0, PORT_LEN);

-        len = min(p - pre, PORT_LEN - 1);

-        snprintf(portStr,len+1,"%s",pre);

-        port = str2int(portStr);

-        if (port <= 0 || port > 65535) //¶Ë¿ÚºÅ×î´ó65535

-        {

-            continue;

-        }

-        nofast_port[count++] = port;

-        if (count == NOFAST_PROTO_MAX)

-            return;

-    }

-

-    if (*pre != '\0') //×îºóÒ»¸ö²»ÊÇ·Ö¸ô·û

-    {

-        memset(portStr, 0, PORT_LEN);

-        len = min(str + strlen(str) - pre, PORT_LEN - 1);

-        snprintf(portStr,len+1,"%s",pre);

-        port = str2int(portStr);

-        if (port <= 0 || port > 65535) //¶Ë¿ÚºÅ×î´ó65535

-        {

-            return;

-        }

-        nofast_port[count++] = port;

-    }

-}

-

-//Óû§Ð´ÃüÁîµÄ²Î¿¼´úÂ룬¿ÉÓÃÀ´ÅäÖùØÁªÉèÖá¢Íø¿ÚÃûµÈ²Ù×÷

-static ssize_t nofast_port_set(struct file *file,

-                               const char __user *buffer, size_t count, loff_t *pos)

-{

-    size_t size;

-    char proto[1024] = {0};

-

-    //countβ²¿°üº¬ÁË1¸ö½áÊø·û

-    size = min(count - 1, 1024);

-    if (copy_from_user(proto, buffer, size))

-        return -EFAULT;

-

-    //½âÎö×Ö·û´®

-    parse_nofast_port(proto, '+');

-

-    return count;

-}

-

-extern int in4_pton(const char *src, int srclen,

-                    u8 *dst,

-                    int delim, const char **end);

-extern int in6_pton(const char *src, int srclen,

-                    u8 *dst,

-                    int delim, const char **end);

-

-

-static void conn_datainfo_get_str(char *str, char *start, char *end) {

-    strncat(str, start, end - start);

-    *(str + (unsigned long)end - (unsigned long)start) = '\0';

-}

-

-/***************************************

-ÊäÈë¸ñʽ:    Ô´ip+Ô´port+Ä¿µÄip+Ä¿µÄport+l4ЭÒéÀàÐÍ+fastÁ´½ÓÀàÐÍ(²Î¿¼ enum conn_fast_type)

-ʵÀý:        192.168.0.100+1111+192.168.30.102+2222+6+4

-×¢Òâ:        ȱʡijһÏĬÈÏÄÇÒ»ÏîȫƥÅä

-            +++++:±íʾÊä³öÈ«²¿Á´½ÓÐÅÏ¢

-***************************************/

-static ssize_t conn_datainfo_set(struct file *file,

-                                 const char __user *buffer, size_t count, loff_t *pos)

-{

-    char tuple[1024] = "";

-    int i = 0;

-    char *split[5];

-    char sip[40] = "";

-    char sport[6] = "";

-    char dip[40] = "";

-    char dport[6] = "";

-    char protonum[6] = "";

-    char conn_type[6] = "";

-    const char *end;

-

-    tuple[1023] = '\0';

-    if (strncpy_from_user(tuple, (char *)buffer, count) <= 0) {

-        return -EFAULT;

-    }

-    memset(&tuple_info, 0,sizeof(struct nf_conntrack_tuple));

-    for(i = 0; i < 5; i++) {

-        if(i == 0)

-            split[i] = strchr(tuple, '+');

-        else

-            split[i] = strchr(split[i-1] + 1, '+');

-        if(!split[i])

-            goto err_out;

-        switch(i) {

-        case 0:

-            conn_datainfo_get_str(sip, tuple, split[i]);

-            break;

-        case 1:

-            conn_datainfo_get_str(sport, split[i-1] + 1, split[i]);

-            break;

-        case 2:

-            conn_datainfo_get_str(dip, split[i-1] + 1, split[i]);

-            break;

-        case 3:

-            conn_datainfo_get_str(dport, split[i-1] + 1, split[i]);

-            break;

-        case 4:

-            conn_datainfo_get_str(protonum, split[i-1] + 1, split[i]);

-            break;

-        default:

-            goto err_out;

-        }

-    }

-    strncat(conn_type, split[i-1] + 1, sizeof(conn_type)-strlen(conn_type)-1);

-    if(strlen(sip) > 0) {

-        if(strchr(sip,'.') != NULL && in4_pton(sip, strlen(sip), (u8 *)&tuple_info.src.u3.in, -1, &end) != 1)

-            goto err_out;

-        else if(strchr(sip,':') != NULL && in6_pton(sip, strlen(sip), (u8 *)&tuple_info.src.u3.in6, -1, &end) != 1)

-            goto err_out;

-    }

-    if(strlen(sport) > 0) {

-        for(i = 0; i < strlen(sport); i++) {

-            if(sport[i] < '0' || sport[i] > '9')

-                goto err_out;

-            tuple_info.src.u.all = sport[i] - '0' + tuple_info.src.u.all*10;

-        }

-        if(tuple_info.src.u.all > 65535)

-            goto err_out;

-        tuple_info.src.u.all = htons(tuple_info.src.u.all);

-    }

-    if(strlen(dip) > 0) {

-        if(strchr(dip,'.') != NULL && in4_pton(dip, strlen(dip), (u8 *)&tuple_info.dst.u3.in, -1, &end) != 1)

-            goto err_out;

-        else if(strchr(dip,':') != NULL && in6_pton(dip, strlen(dip), (u8 *)&tuple_info.dst.u3.in6, -1, &end) != 1)

-            goto err_out;

-    }

-    if(strlen(dport) > 0) {

-        for(i = 0; i < strlen(dport); i++) {

-            if(dport[i] < '0' || dport[i] > '9')

-                goto err_out;

-            tuple_info.dst.u.all = dport[i] - '0' + tuple_info.dst.u.all*10;

-        }

-        if(tuple_info.dst.u.all > 65535)

-            goto err_out;

-        tuple_info.dst.u.all = htons(tuple_info.dst.u.all);

-    }

-    if(strlen(protonum) > 0) {

-        for(i = 0; i < strlen(protonum); i++) {

-            if(protonum[i] < '0' || protonum[i] > '9')

-                goto err_out;

-            tuple_info.dst.protonum = protonum[i] - '0' + tuple_info.dst.protonum*10;

-        }

-    }

-    if(strlen(conn_type) > 0) {

-        getconn_type = 0;

-        for(i = 0; i < strlen(conn_type) - 1; i++) {

-            if(conn_type[i] < '0' || conn_type[i] > '9')

-                goto err_out;

-            getconn_type = conn_type[i] - '0' + getconn_type*10;

-        }

-    }

-    return count;

-err_out:

-    memset(&tuple_info, 0,sizeof(struct nf_conntrack_tuple));

-    getconn_type = 0;

-    return -EFAULT;

-}

-

-extern int pkt_lost_track;

-static void *pkt_lostinfo_seq_start(struct seq_file *seq, loff_t *pos)

-__acquires(RCU)

-{

-    if (*pos >= 1)

-        return NULL;

-    return 1;

-}

-

-static void *pkt_lostinfo_seq_next(struct seq_file *s, void *v, loff_t *pos)

-{

-    (*pos)++;

-    return NULL;

-}

-

-static void pkt_lostinfo_seq_stop(struct seq_file *s, void *v)

-__releases(RCU)

-{

-    return;

-}

-

-static int pkt_lostinfo_seq_show(struct seq_file *s, void *v)

-{

-    return 0;

-

-}

-

-static const struct seq_operations pkt_lostinfo_seq_ops= {

-    .start = pkt_lostinfo_seq_start,

-    .next  = pkt_lostinfo_seq_next,

-    .stop  = pkt_lostinfo_seq_stop,

-    .show  = pkt_lostinfo_seq_show,

-};

-

-static int pkt_lostinfo_open(struct inode *inode, struct file *file)

-{

-    return seq_open(file, &pkt_lostinfo_seq_ops);

-}

-

-static ssize_t pkt_lostinfo_set(struct file *file,

-                                const char __user *buffer, size_t count, loff_t *pos)

-{

-    size_t size;

-    char temp[5] = {0};

-

-    //countβ²¿°üº¬ÁË1¸ö½áÊø·û£¬Ö»Ö§³Ö0-1ÊäÈë

-    if (count != 2)

-        return -EINVAL;

-

-    if (copy_from_user(temp, buffer, 1))

-        return -EFAULT;

-

-    if (temp[0] < '0' || temp[0] > '1')

-        return -EINVAL;

-

-

-

-    return count;

-}

-

-

-static ssize_t dev_reset_set(struct file *file,

-		const char __user *buffer, size_t count, loff_t *pos)

-{

-	struct net_device *dev = NULL;

-	size_t size;

-	char dev_name[MAX_NET_DEVICE_NAME_LEN + 1] = {0};

-

-	//countβ²¿°üº¬ÁË1¸ö½áÊø·û

-	size = min(count - 1, MAX_NET_DEVICE_NAME_LEN);

-	if (copy_from_user(dev_name, buffer, size))

-		return -EFAULT;

-

-	//ɾ³ý´ËÍøÂçÉ豸Ïà¹Østat

-	dev = dev_get_by_name(&init_net, dev_name);

-	if (dev){

-		memset(&dev->stats, 0, sizeof(struct net_device_stats));

-		atomic_long_set(&dev->rx_dropped, 0);

-		dev_put(dev);

-	}else

-		printk("dev_reset_set %s not find\n", dev_name);

-	return count;

-}

-

-

-static void *ct_iptables_syn_seq_start(struct seq_file *seq, loff_t *pos)

-__acquires(RCU)

-{

-	if (*pos >= 1)

-		return NULL;

-	return 1;

-}

-

-static void *ct_iptables_syn_seq_next(struct seq_file *s, void *v, loff_t *pos)

-{

-	(*pos)++;

-	return NULL;

-}

-

-static void ct_iptables_syn_seq_stop(struct seq_file *s, void *v)

-__releases(RCU)

-{

-	return;

-}

-

-static int ct_iptables_syn_seq_show(struct seq_file *s, void *v)

-{

-	seq_printf(s, "ct_iptables_syn_sw: %u\n", ct_iptables_syn_sw);

-	return 0;

-

-}

-

-static const struct seq_operations ct_iptables_syn_seq_ops= {

-	.start = ct_iptables_syn_seq_start,

-	.next  = ct_iptables_syn_seq_next,

-	.stop  = ct_iptables_syn_seq_stop,

-	.show  = ct_iptables_syn_seq_show,

-};

-

-static int ct_iptables_syn_open(struct inode *inode, struct file *file)

-{

-    return seq_open(file, &ct_iptables_syn_seq_ops);

-}

-

-static ssize_t ct_iptables_syn_set(struct file *file,

-                                const char __user *buffer, size_t count, loff_t *pos)

-{

-    size_t size;

-    char temp[5] = {0};

-

-    //countβ²¿°üº¬ÁË1¸ö½áÊø·û£¬Ö»Ö§³Ö0-1ÊäÈë

-    if (count != 2)

-        return -EINVAL;

-

-    if (copy_from_user(temp, buffer, 1))

-        return -EFAULT;

-

-    if (temp[0] < '0' || temp[0] > '1')

-        return -EINVAL;

-

-	ct_iptables_syn_sw = (unsigned int)(temp[0] - '0');

-

-    return count;

-}

-

-static const struct proc_ops fastnat_level_file_ops = {

-    .proc_open    = fastnat_level_open,

-    .proc_read    = seq_read,

-    .proc_lseek  = seq_lseek,

-    .proc_release = seq_release, //seq_release_privateËÆºõÒ²¿ÉÒÔ£¬µ«ÊÇsingle_release£¬seq_release_net»áÓпÕÖ¸ÕëÒì³£

-    .proc_write = fastnat_level_set,

-};

-

-static const struct proc_ops fast_switch_file_ops = {

-    .proc_open    = fast_switch_open,

-    .proc_read    = seq_read,

-    .proc_lseek  = seq_lseek,

-    .proc_release = seq_release, //seq_release_privateËÆºõÒ²¿ÉÒÔ£¬µ«ÊÇsingle_release£¬seq_release_net»áÓпÕÖ¸ÕëÒì³£

-    .proc_write = fast_switch_set,

-};

-

-static const struct proc_ops fastbr_level_file_ops = {

-    .proc_open    = fastbr_level_open,

-    .proc_read    = seq_read,

-    .proc_lseek  = seq_lseek,

-    .proc_release = seq_release,

-    .proc_write = fastbr_level_set,

-};

-

-static const struct proc_ops fastnat_file_ops = {

-    .proc_open    = fastnat_open,

-    .proc_read    = seq_read,

-    .proc_lseek  = seq_lseek,

-    .proc_release = seq_release,

-};

-

-static const struct proc_ops fast6_file_ops = {

-    .proc_open    = fast6_open,

-    .proc_read    = seq_read,

-    .proc_lseek  = seq_lseek,

-    .proc_release = seq_release,

-};

-

-static const struct proc_ops dev_down_file_ops = {

-    .proc_write = dev_down_set,

-};

-

-static const struct proc_ops nofast_port_file_ops = {

-    .proc_open    = nofast_port_open,

-    .proc_read    = seq_read,

-    .proc_lseek  = seq_lseek,

-    .proc_release = seq_release,

-    .proc_write = nofast_port_set,

-};

-

-static const struct proc_ops conn_datainfo_file_ops = {

-    .proc_open = conn_datainfo_open,

-    .proc_read = seq_read,

-    .proc_lseek = seq_lseek,

-    .proc_release = seq_release,

-    .proc_write = conn_datainfo_set

-};

-

-static const struct proc_ops pkt_lostinfo_file_ops = {

-    .proc_open = pkt_lostinfo_open,

-    .proc_read = seq_read,

-    .proc_lseek = seq_lseek,

-    .proc_release = seq_release,

-    .proc_write = pkt_lostinfo_set,

-};

-

-static const struct proc_ops dev_reset_file_ops = {

-	.proc_write = dev_reset_set,

-};

-

-static const struct proc_ops ct_iptables_syn_file_ops = {

-    .proc_open = ct_iptables_syn_open,

-    .proc_read = seq_read,

-    .proc_lseek = seq_lseek,

-    .proc_release = seq_release,

-    .proc_write = ct_iptables_syn_set,

-};

-

-

-//¿ìËÙת·¢procÎļþµÄ³õʼ»¯

-int fast_conntrack_init_proc(void)

-{

-    //Èý²ã¿ìËÙת·¢×Ü¿ª¹Ø

-    proc_create("fastnat_level", 0440, init_net.proc_net, &fastnat_level_file_ops);

-

-    //Èý²ã¿ìËÙת·¢Ð¾ɿª¹Ø£¬¸÷ÀàÐÍ¿ª¹Ø

-    proc_create("fast_switch", 0440, init_net.proc_net, &fast_switch_file_ops);

-

-    //¶þ²ã¿ìËÙת·¢µÈ¼¶0-1

-    proc_create("fastbr_level", 0440, init_net.proc_net, &fastbr_level_file_ops);

-

-    //ipv4¿ìËÙת·¢Ïà¹ØÍ³¼Æ

-    proc_create("fastnat", 0440, init_net.proc_net, &fastnat_file_ops);

-

-    //ipv6¿ìËÙת·¢Ïà¹ØÍ³¼Æ

-    proc_create("fast6", 0440, init_net.proc_net, &fast6_file_ops);

-

-    //ijЩÉ豸²»ÄÜdown²Ù×÷£¬µ«ÊÇÈ¥¼¤»îºóÓÖҪɾ³ýÏà¹ØÁ´½Ó

-    proc_create("dev_down", 0440, init_net.proc_net, &dev_down_file_ops);

-

-    //²»Ö§³ÖfastnatµÄЭÒé¶Ë¿Ú£¬Ö§³Ö¶¯Ì¬ÅäÖÃ

-    proc_create("nofast_port", 0440, init_net.proc_net, &nofast_port_file_ops);

-

-    //¶ÁÈ¡Á´½ÓÐÅÏ¢

-    proc_create("conn_datainfo", 0440, init_net.proc_net, &conn_datainfo_file_ops);

-

-    //¶ÁÈ¡Á´½Ó¶ª°üÐÅÏ¢

-    //proc_create("pkt_lostinfo", 0440, init_net.proc_net, &pkt_lostinfo_file_ops);

-

-    //reset dev stats

-    proc_create("dev_reset_stats", 0440, init_net.proc_net, &dev_reset_file_ops);

-

-	proc_create("ct_iptables_syn", 0440, init_net.proc_net, &ct_iptables_syn_file_ops);

-    return 1;

-}

-

-EXPORT_SYMBOL(fast_conntrack_init_proc);

-

-

diff --git a/upstream/linux-5.10/net/core/fastproc/fastnat.c b/upstream/linux-5.10/net/core/fastproc/fastnat.c
deleted file mode 100755
index 717454c..0000000
--- a/upstream/linux-5.10/net/core/fastproc/fastnat.c
+++ /dev/null
@@ -1,687 +0,0 @@
-#include <linux/in.h>
-#include <linux/ip.h>
-#include <linux/udp.h>
-#include <linux/tcp.h>
-#include <linux/icmp.h>
-#include <net/ip.h>
-#include <linux/if_arp.h>
-#include <linux/timer.h>
-#include <linux/inetdevice.h>
-#include <linux/netfilter.h>
-#include <linux/netfilter_ipv4.h>
-#include <linux/netfilter_arp.h>
-#include <linux/netfilter_ipv4/ip_tables.h>
-#include <linux/netfilter/xt_multiport.h>
-#include <linux/netfilter/xt_iprange.h>
-#include <linux/netfilter/nf_conntrack_tcp.h>
-#include <net/checksum.h>
-#include <net/dsfield.h>
-#include <net/route.h>
-#include <net/netfilter/nf_nat.h>
-#include <net/netfilter/nf_conntrack_acct.h>
-#include <net/netfilter/nf_conntrack_helper.h>
-#include <linux/module.h>
-#include <linux/proc_fs.h>
-#include <net/SI/fastnat.h>
-#include <net/SI/net_other.h>
-#include <net/SI/netioc_proc.h>
-#include <net/SI/print_sun.h>
-#include <net/SI/net_track.h>
-#include <linux/netfilter.h>
-#include <net/SI/fast_common.h>
-
-MODULE_LICENSE("GPL");
-
-/* ***************** ipv4 ¿ìËÙת·¢Ïà¹Ø±äÁ¿ ************************* */
-spinlock_t fastnat_spinlock;          //×ÔÐýËø£¬±£»¤Á´±íµÄ²Ù×÷
-fast_list_t working_list = {0};
-struct hlist_nulls_head *working_hash;
-
-/* **************************** º¯ÊýÉêÃ÷ ************************ */
-
-
-/* **************************** º¯ÊýʵÏÖ ************************ */
-
-/*»ñÈ¡±¨ÎÄÎåÔª×éÐÅÏ¢*/
-static inline int fast_nat_get_tuple(struct sk_buff *skb, struct nf_conntrack_tuple *tuple)
-{
-    struct iphdr  *iph;
-    struct udphdr *udph;
-    struct tcphdr *tcph;
-#if 0
-    if (!skb || !tuple)
-    {
-        return -1;
-    }
-
-    /* only IP packets */
-    if (htons(ETH_P_IP) != skb->protocol)
-    {
-        return -1;
-    }
-#endif
-    iph = (struct iphdr *)skb->data;
-#if 0
-    /* not deal with fragment packets now */
-    if (ntohs(iph->frag_off) & (IP_MF | IP_OFFSET))
-    {
-        skbinfo_add(NULL,SKB_FRAG);
-        return -1;
-    }
-
-    if (iph->ttl <= 1)
-    {
-        return -1;
-    }
-#endif
-    memset(tuple, 0, sizeof(struct nf_conntrack_tuple));
-
-    /* only tcp/udp */
-    if (IPPROTO_UDP == iph->protocol)
-    {
-        udph = (struct udphdr *)(skb->data + iph->ihl * 4);
-        tuple->src.u.udp.port = udph->source;
-        tuple->dst.u.udp.port = udph->dest;
-        skb_udpnum++;
-    }
-    else if (IPPROTO_TCP == iph->protocol)
-    {
-        tcph = (struct tcphdr *)(skb->data + iph->ihl * 4);
-        tuple->src.u.tcp.port = tcph->source;
-        tuple->dst.u.tcp.port = tcph->dest;
-        skb_tcpnum++;
-    }
-    else
-    {
-        return -1;
-    }
-
-    tuple->src.l3num = AF_INET;
-    tuple->src.u3.ip = iph->saddr;
-    tuple->dst.u3.ip = iph->daddr;
-    tuple->dst.protonum = iph->protocol;
-    tuple->dst.dir = IP_CT_DIR_ORIGINAL;
-
-    return 0;
-}
-
-//´Ë´¦ÐèÒª±£³ÖºÍdev_xmit_completeÒ»ÖÂ
-//ÓÃinlineÎÞ·¨ÌáÈ¡µ½¹«¹²ÎļþÖУ¬Ö»ÄÜfastnat¡¢fast6¸÷·ÅÒ»·Ý
-static inline bool start_xmit_complete(int rc)
-{
-    /*
-     * Positive cases with an skb consumed by a driver:
-     * - successful transmission (rc == NETDEV_TX_OK)
-     * - error while transmitting (rc < 0)
-     * - error while queueing to a different device (rc & NET_XMIT_MASK)
-     */
-    if (likely(rc < NET_XMIT_MASK))
-        return true;
-
-    return false;
-}
-#ifndef CONFIG_PREEMPT_RT_FULL
-extern int *vir_addr_ddrnet;
-#endif
-
-//ipv4Êý¾Ý°üµÄ¿ìËÙ´¦Àí£¬hashÓÃRCU»úÖÆ½øÐб£»¤£¬×ܵÄÁ¬½ÓÁ´±íÓÃspin½øÐб£»¤
-int fast_nat_recv(struct sk_buff *skb)
-{
-    struct nf_conntrack_tuple tuple;
-    fast_entry_data_t *nat_entry_data = NULL;
-    fast_entry_t *nat_entry = NULL;
-    struct iphdr *iph = NULL;
-    struct udphdr *udph = NULL;
-    struct tcphdr *tcph = NULL;
-    __sum16 *cksum = NULL;
-    __be32 *oldip = NULL;
-    __be16 *oldport = NULL;
-    struct net_device *dev = NULL;
-    //u_int32_t skip_nat = 0;
-    struct sk_buff *skb2 = NULL;
-
-    iph = (struct iphdr *)skb->data;
-    //if (iph->protocol != IPPROTO_TCP && iph->protocol != IPPROTO_UDP)
-        //goto err_out;
-
-    if (fast_nat_get_tuple(skb, &tuple) < 0)
-    {
-        print_sun(SUN_DBG, "fast_nat_get_tuple  ERR  !!!\n");
-        goto err_out;
-    }
-
-    rcu_read_lock();
-    nat_entry_data = fast_find_entry_data(working_hash, &tuple);
-    if (unlikely(nat_entry_data == NULL))
-    {
-        rcu_read_unlock();
-        print_sun(SUN_DBG, "fast_nat_find  ERR  !!!\n");
-        goto err_out;
-    }
-
-    dev = nat_entry_data->outdev;
-    if (unlikely(!dev))
-    {
-        rcu_read_unlock();
-        goto err_out;
-    }
-
-    /*¼ì²é°ü³¤¶ÈÊÇ·ñ³¬¹ý³ö¿ÚÉ豸MTU*/
-    if (unlikely(skb->len > dev->mtu))
-    {
-        skbinfo_add(NULL, SKB_OVER_MTU);
-        rcu_read_unlock();
-        print_sun(SUN_DBG, "fast_nat_recv outdev mtu ERR !!!\n");
-        goto err_out;
-    }
-	
-    //»Ø´«µÄ°üÖ±½ÓÊͷŲ¢¼ÆÊý
-    if (unlikely(skb->dev == dev))
-    {
-        skbinfo_add(NULL, SKB_LOOP);
-        rcu_read_unlock();
-        kfree_skb(skb);
-        return 1;
-    }
-
-    nat_entry = fast_data_to_entry(nat_entry_data);
-    if (unlikely(!nat_entry))
-    {
-        rcu_read_unlock();
-        print_sun(SUN_DBG, "fast_nat_recv fast_nat_data_to_entry null !!!\n");
-        goto err_out;
-    }
-
-    /* Ö»Óе±Ë«Ïò¿ìËÙÁ´½Ó¶¼½¨Á¢³É¹¦²Å×ßFASTNAT£¬·ñÔò×ß±ê×¼Á÷³Ì */
-    if ((nat_entry->flags != FAST_ALL_DIR) && (IPPROTO_UDP != iph->protocol))
-    {
-        rcu_read_unlock();
-        print_sun(SUN_DBG, "fast_nat_recv flags is not FAST_ALL_DIR !!!\n");
-        goto err_out;
-    }
-
-    if (unlikely(!(skb2 = fast_expand_headroom(skb, dev)))) {
-        rcu_read_unlock();
-        return 1;
-    }
-
-    if (unlikely(skb2 != skb))
-    {
-        iph = (struct iphdr *)skb2->data;
-        skb = skb2;
-    }
-
-    fast_tcpdump(skb);
-
-    //Èç¹û×¥°üÃüÖУ¬Êý¾Ý»áclone£¬fast³É¹¦ÐèÒª¸Ä±ädataÄÚÈÝ£¬ÐèÒªÖØÐÂcopyÒ»·Ý
-    if (skb_cloned(skb))
-    {
-        print_sun(SUN_DBG, "fast_nat_recv clone \n");
-        if (pskb_expand_head(skb, 0, 0, GFP_ATOMIC))
-        {
-            rcu_read_unlock();
-            print_sun(SUN_DBG, "fast_nat_recv clone copy failed !!!\n");
-            kfree_skb(skb);
-            return 1;
-        }
-    }
-
-
-    //½öµ±fastnat³É¹¦£¬²ÅÄÜÉèÖÃIPÍ·Ê×µØÖ·,ÒÔ¹©cacheË¢ÐÂʱʹÓÃ
-    skb_reset_network_header(skb);
-    skb->isFastnat = 1;
-	if (likely(skb_get_nfct(skb) == 0)){
-		skb_set_nfct(skb, (unsigned long)nat_entry->ct);
-		nf_conntrack_get(&nat_entry->ct->ct_general);
-	}
-    //²»Ö§³ÖNAT£¬Ô´µØÖ·/Ä¿µÄµØÖ·/¶Ë¿ÚºÅ¶¼²»ÐèÒª¸Ä±ä£¬Ö±½Ó͸´«¾ÍÐÐ
-    //if (nat_entry_data->is_not_nat)
-        //skip_nat = 1;
-    if (!nat_entry_data->is_not_nat)//(!skip_nat)
-    {
-        /*½øÐÐnatת»»*/
-        if (IPPROTO_TCP == iph->protocol)
-        {
-            tcph = (struct tcphdr *)(skb->data + iph->ihl * 4);
-            cksum = &tcph->check;
-            oldport = (FN_TYPE_SRC == nat_entry_data->type)? (&tcph->source): (&tcph->dest);
-        }
-        else if (IPPROTO_UDP == iph->protocol)
-        {
-            udph = (struct udphdr *)(skb->data + iph->ihl * 4);
-            cksum = &udph->check;
-            oldport = (FN_TYPE_SRC == nat_entry_data->type)? (&udph->source): (&udph->dest);
-        }
-
-        oldip = (FN_TYPE_SRC == nat_entry_data->type)? (&iph->saddr) : (&iph->daddr);
-
-        if (cksum != NULL && (0!=*cksum || IPPROTO_TCP == iph->protocol))
-        {
-            inet_proto_csum_replace4(cksum, skb, *oldip, nat_entry_data->nat_addr, 0);
-            inet_proto_csum_replace2(cksum, skb, *oldport, nat_entry_data->nat_port, 0);
-        }
-        csum_replace4(&iph->check, *oldip, nat_entry_data->nat_addr);
-        if(oldport)
-            *oldport = nat_entry_data->nat_port;
-        *oldip = nat_entry_data->nat_addr;
-    }
-    else
-    {
-        if (IPPROTO_TCP == iph->protocol)
-        {
-            tcph = (struct tcphdr *)(skb->data + iph->ihl * 4);
-        }
-    }
-
-    skb->priority = nat_entry_data->priority;
-    skb->mark = nat_entry_data->mark;
-
-    //»ùÓÚctÁ´½ÓµÄÁ÷Á¿Í³¼Æ --- ͳ¼ÆIP°ü²»ÊÇMAC°ü
-    if (nat_entry_data->tuplehash.tuple.dst.dir == IP_CT_DIR_ORIGINAL){
-        nat_entry->ct->packet_info[IP_CT_DIR_ORIGINAL].packets++;
-        nat_entry->ct->packet_info[IP_CT_DIR_ORIGINAL].bytes += skb->len;
-		if(unlikely(nat_entry->ct->indev[IP_CT_DIR_ORIGINAL] == NULL))
-			nat_entry->ct->indev[IP_CT_DIR_ORIGINAL] = skb->indev;
-		if(unlikely(nat_entry->ct->outdev[IP_CT_DIR_ORIGINAL] == NULL))
-			nat_entry->ct->outdev[IP_CT_DIR_ORIGINAL] = dev;
-    } else if (nat_entry_data->tuplehash.tuple.dst.dir == IP_CT_DIR_REPLY){
-        nat_entry->ct->packet_info[IP_CT_DIR_REPLY].packets++;
-        nat_entry->ct->packet_info[IP_CT_DIR_REPLY].bytes += skb->len;
-		if(unlikely(nat_entry->ct->indev[IP_CT_DIR_REPLY] == NULL))
-			nat_entry->ct->indev[IP_CT_DIR_REPLY] = skb->indev;
-		if(unlikely(nat_entry->ct->outdev[IP_CT_DIR_REPLY] == NULL))
-			nat_entry->ct->outdev[IP_CT_DIR_REPLY] = dev;
-    } else {
-        printk("fastnat packet error\n");
-    }
-
-    //ÄÚºË×Ô´øµÄ»ùÓÚÁ´½ÓµÄÁ÷Á¿Í³¼Æ
-    struct nf_conn_counter *acct = (struct nf_conn_counter *)nf_conn_acct_find((const struct nf_conn *)nat_entry->ct);
-    if (acct) {
-        enum ip_conntrack_info ctinfo;
-        if (nat_entry_data->tuplehash.tuple.dst.dir == IP_CT_DIR_ORIGINAL)
-            ctinfo = IP_CT_ESTABLISHED;
-        else
-            ctinfo = IP_CT_ESTABLISHED_REPLY;
-
-        atomic64_inc(&acct[CTINFO2DIR(ctinfo)].packets);
-        atomic64_add(skb->len, &acct[CTINFO2DIR(ctinfo)].bytes);
-    }
-
-    /* ¶¨Öƹ¦ÄÜ£¬ÎªÁ˽â¾öµ¥UDP¹à°üʱ£¬ÎÞ·¨ÖªÏþindev½øÐÐÁ÷Á¿Í³¼ÆÎÊÌâ¶¨ÖÆ */
-    if (unlikely(nat_entry_data->indev == NULL))
-    {
-        nat_entry_data->indev = skb->dev;
-    }
-
-    // ͳ¼ÆÈë¿ÚÍøÂçÉ豸µÄ½ÓÊÕ°üÊýÁ¿  --- ²Î¿¼linuxÔ­ÉúµÄÇý¶¯£¬Í³¼ÆµÄ¶¼ÊÇIP°ü³¤¶È
-    if (likely(fastnat_level == FAST_NET_DEVICE))
-    {
-        nat_entry_data->indev->stats.rx_packets++;
-        nat_entry_data->indev->stats.rx_bytes += skb->len;
-    }
-
-    skb->dev = dev;
-
-    //Ö»Óе±ÓÐMACÍ·Ô¤¸³ÖµÊ±£¬²Å×¼¸³Öµ£¬·ñÔòΪIPÍ·
-    skb_push(skb, ETH_HLEN);
-    if (likely(nat_entry_data->hh_flag))
-    {
-        memcpy(skb->data, nat_entry_data->hh_data, ETH_HLEN);
-    }
-
-    /*¸üÐÂÁ´½Ó³¬Ê±*/
-    if (IPPROTO_TCP == iph->protocol)
-    {
-        mod_timer(&nat_entry->timeout, jiffies + tcp_timeouts[nat_entry->ct->proto.tcp.state]);
-        update_tcp_timeout(nat_entry, nat_entry_data, tcph);
-        nat_entry->ct->timeout = jiffies + tcp_timeouts[nat_entry->ct->proto.tcp.state];
-
-        if(ackfilter(skb, nat_entry, &working_list) == 1)
-        {
-            rcu_read_unlock();
-            //spin_unlock_bh(&fastnat_spinlock);
-            return 1;
-        }
-    }
-    else if (IPPROTO_UDP == iph->protocol)
-    {
-        /*udp*/
-        if (test_bit(IPS_SEEN_REPLY_BIT, &nat_entry->ct->status))
-        {
-            mod_timer(&nat_entry->timeout, jiffies + fast_udp_timeout_stream);
-            nat_entry->ct->timeout = jiffies + fast_udp_timeout_stream;
-        }
-        else
-        {
-            mod_timer(&nat_entry->timeout, jiffies + fast_udp_timeout);
-            nat_entry->ct->timeout = jiffies + fast_udp_timeout;
-        }
-    }
-
-    if (likely(skb->dev->flags & IFF_UP))
-    {
-        //pppÖ»ÐèÒª´«ÊäIP°ü
-		if (unlikely(skb->dev->type == ARPHRD_PPP))//(strncmp(skb->dev->name, ppp_name, strlen(ppp_name)) == 0)
-        {
-            skb_pull(skb, ETH_HLEN);
-        }
-
-        skb->now_location |= FASTNAT_SUCC;
-        if (likely(fastnat_level == FAST_NET_DEVICE))
-        {
-            //print_sun(SUN_DBG, "fastnat-2 dev_queue_xmit, send to:%s iph->id=0x%02x!!!!!!!! \n", skb->dev->name, iph->id);
-			if (skb->dev->netdev_ops->ndo_start_xmit(skb, skb->dev) >= NET_XMIT_MASK) {
-				skb->dev->stats.tx_dropped++;
-				kfree_skb(skb);
-			}
-        }
-        //¶ÔÓÚÁ÷¿ØµÈÌØÊâÓ¦Óã¬Ö»ÄÜ×ß±ê×¼µÄfastnatÁ÷³Ì£¬·ñÔòÎÞ·¨½øÐвå¼þÖ´ÐÐ
-        else if (fastnat_level == FAST_NET_CORE)
-        {
-            //print_sun(SUN_DBG, "fastnat ok-1, send to:%s !!!!!!!! \n", skb->dev->name);
-
-            dev_queue_xmit(skb);
-        }
-        else
-            print_sun(SUN_DBG,"fastnat_level:%d is not supported !!!!!!!! \n", fastnat_level);
-
-        nat_entry_data->packet_num++;
-    }
-    else
-    {
-        print_sun(SUN_DBG, "ERR &&&&&& %s DOWN, kfree_skb!!!!!!!! \n", skb->dev->name);
-        kfree_skb(skb);
-    }
-
-    //print_sun(SUN_DBG, "skb : 0x%x, fastnat succ--------", skb);
-    //nf_ct_dump_tuple(&tuple);
-    rcu_read_unlock();
-
-    return 1;
-
-err_out :
-    print_sun(SUN_DBG, "skb : 0x%x, fastnat FAIL!!!!!!!!!!", skb);
-    return 0; /* not fast nat */
-}
-
-static struct nf_hook_ops nat_hook = {
-    .hook = napt_handle,
-//    .owner = THIS_MODULE,
-    .pf = PF_INET,
-    .hooknum = NF_INET_POST_ROUTING,
-    .priority = NF_IP_PRI_LAST,
-};
-
-//¹¤×÷ÔÚPOST_ROUTING½Úµã£¬ÓÃÓÚfastÁ´½ÓµÄ¸³ÖµºÍÌí¼Óhash±í
-unsigned int napt_handle(void *priv,
-                         struct sk_buff *skb,
-                         const struct nf_hook_state *state)
-{
-    struct nf_conn *ct;
-    enum ip_conntrack_info ctinfo;
-    u_int8_t protocol;
-    fast_entry_t *nat_entry;
-    fast_entry_data_t *entry_data;
-    enum ip_conntrack_dir dir, rdir;
-    struct dst_entry *dst = skb_dst(skb);
-    struct net_device *out = state->out;
-#ifdef CONFIG_ATHRS_HW_NAT
-    u_int32_t mask =0;
-#endif
-    struct neighbour *_neighbour = NULL;
-
-    if (fastnat_level == FAST_CLOSE || fastnat_level == FAST_CLOSE_KEEP_LINK)
-    {
-        return NF_ACCEPT;
-    }
-
-    if (test_bit(FAST_TYPE_VERSION_BIT, &fast_switch))
-    {
-        return NF_ACCEPT;
-    }
-
-    if (ip_hdr(skb)->protocol != IPPROTO_TCP && ip_hdr(skb)->protocol != IPPROTO_UDP)
-        return NF_ACCEPT;
-
-    if (!out)
-    {
-        return NF_ACCEPT;
-    }
-
-    //¹ã²¥¡¢×é²¥²»½¨Á´
-    if (ipv4_is_multicast(ip_hdr(skb)->daddr) || ipv4_is_lbcast(ip_hdr(skb)->daddr))
-    {
-        return NF_ACCEPT;
-    }
-
-    //´Ë´¦Òª¹Ø×¢ÊÇ·ñ»áƵ·±³öÏÖfastÁ´½ÓÒÑÂúÇé¿ö£¬Èç¹û¾­³£³öÏÖ£¬ÊÇ·ñ¿¼ÂÇ×î¾É¸²¸ÇÇé¿ö
-    if (working_list.count > nf_conntrack_max)
-    {
-        return NF_ACCEPT;
-    }
-
-    if (!dst)
-    {
-        return NF_ACCEPT;
-    }
-
-    _neighbour = dst_neigh_lookup_skb(dst, skb);
-    if (!_neighbour)
-    {
-        print_sun(SUN_DBG,"napt_handle() _neighbour = null\n");
-        return NF_ACCEPT;
-    }
-
-    if (memcmp(_neighbour->ha, zeromac, ETH_ALEN) == 0)
-    {
-        if (strncmp(out->name, ppp_name, strlen(ppp_name)) != 0)
-        {
-            goto accept;
-        }
-    }
-
-    if (!(ct = nf_ct_get(skb, &ctinfo)))
-    {
-        print_sun(SUN_DBG,"napt_handle() ct = null\n");
-        goto accept;
-    }
-
-    protocol = nf_ct_protonum(ct);
-    print_sun(SUN_DBG,"napt_handle() protocol = %d\n", protocol);
-
-    if (ct->master == NULL)
-    {
-        //const struct nf_conntrack_helper *helper;
-        struct nf_conn_help *temp_help = nfct_help(ct);
-        //¶ÔÓÚijÌõÁ´½ÓÉÏ´æÔÚhelpµÈ¹³×Ó£¬±ØÐë½»ÓÉlinux±ê×¢Äں˴¦Àí£¬·ñÔòÄں˲»ÄÜ»ñÈ¡Ïà¹ØµÄÊý¾Ý°üÐÅÏ¢
-        if(temp_help!=NULL)
-        {
-            //helper = rcu_dereference(temp_help->helper);
-            //if(!(helper->tuple.src.u.all == htons(21)&&helper->tuple.dst.protonum == IPPROTO_TCP)) {
-            goto accept;
-            //   }
-        }
-    }
-
-
-    /* only forward */
-    if (!skb->skb_iif)
-    {
-        goto accept;
-    }
-
-
-    //¹ýÂ˲»ÐèÒª¾­¹ýfastnatµÄЭÒé°ü,¸ù¾Ý¶Ë¿ÚºÅ½øÐйýÂË
-    if (check_skip_ports(ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.dst.u.all))
-    {
-        goto accept;
-    }
-
-    dir = CTINFO2DIR(ctinfo);
-
-    rdir = (IP_CT_DIR_ORIGINAL == dir) ? IP_CT_DIR_REPLY: IP_CT_DIR_ORIGINAL;
-    print_sun(SUN_DBG,"napt_handle() dir=%d, rdir=%d\n", dir, rdir);
-    /*Ö»Õë¶ÔTCP/UDP½øÐÐfastnat*/
-    if (IPPROTO_TCP == protocol)
-    {
-        /* only established */
-        /*TCPÈý´ÎÎÕÊֳɹ¦*/
-        if(!test_bit(IPS_ASSURED_BIT, &ct->status))
-        {
-            goto accept;
-        }
-    }
-    else if (IPPROTO_UDP != protocol)
-    {
-        goto accept;
-    }
-
-    spin_lock_bh(&fastnat_spinlock);
-    if (!(nat_entry = fast_get_entry(&working_list, ct, dir)))
-    {
-        print_sun(SUN_DBG,"napt_handle() nat_entry=%p\n", nat_entry);
-        spin_unlock_bh(&fastnat_spinlock);
-        goto accept;
-    }
-    nat_entry->fast_spinlock = &fastnat_spinlock;
-
-    //Ê״ν¨Á´£¬»ñÈ¡ct¼ÆÊýËø£¬²¢É¾³ýct¶¨Ê±Æ÷£»Ê״ν¨Á´Öظ´°ü£¬²»ÄܲÙ×÷
-    if (!(nat_entry->flags & FAST_ALL_DIR))
-    {
-        nf_conntrack_get(&ct->ct_general);
-        //del_timer(&ct->timeout);
-        ct->timeout = nat_entry->timeout.expires;
-
-    }
-
-    entry_data = &nat_entry->data[dir];
-    entry_data->tuplehash.tuple = ct->tuplehash[dir].tuple;
-    memcpy(entry_data->dmac, _neighbour->ha, ETH_ALEN);
-    entry_data->priority = skb->priority;
-    entry_data->mark = skb->mark;
-    entry_data->outdev = out;
-
-    /*¼Ç¼MACµØÖ·µ½entry_data->hh_data*/
-    if (!record_MAC_header(working_hash, ct, nat_entry, entry_data, _neighbour, out, htons(ETH_P_IP)))
-    {
-        spin_unlock_bh(&fastnat_spinlock);
-        goto accept;
-    }
-    print_sun(SUN_DBG,"napt_handle() ct->status=0x%x\n", ct->status);
-    /*»ñÈ¡natת»»ÐèÒªµÄIPºÍportÐÅÏ¢*/
-    if (test_bit(IPS_SRC_NAT_BIT, &ct->status))
-    {
-        if(IP_CT_DIR_ORIGINAL == dir)
-        {
-            entry_data->nat_addr = ct->tuplehash[rdir].tuple.dst.u3.ip;
-            entry_data->nat_port = ct->tuplehash[rdir].tuple.dst.u.all;
-            entry_data->type = FN_TYPE_SRC;
-        }
-        else
-        {
-            entry_data->nat_addr = ct->tuplehash[rdir].tuple.src.u3.ip;
-            entry_data->nat_port = ct->tuplehash[rdir].tuple.src.u.all;
-            entry_data->type = FN_TYPE_DST;
-        }
-    }
-    else if (test_bit(IPS_DST_NAT_BIT, &ct->status))
-    {
-        if (IP_CT_DIR_ORIGINAL == dir)
-        {
-            entry_data->nat_addr = ct->tuplehash[rdir].tuple.src.u3.ip;
-            entry_data->nat_port = ct->tuplehash[rdir].tuple.src.u.all;
-            entry_data->type = FN_TYPE_DST;
-        }
-        else
-        {
-            entry_data->nat_addr = ct->tuplehash[rdir].tuple.dst.u3.ip;
-            entry_data->nat_port = ct->tuplehash[rdir].tuple.dst.u.all;
-            entry_data->type = FN_TYPE_SRC;
-        }
-    }
-    else //²»Ö§³ÖNATµÄ³¡¾°
-    {
-        //´ËÖÖ³¡¾°£¬Ô´µØÖ·/Ä¿µÄµØÖ·/¶Ë¿ÚºÅ¶¼²»ÐèÒª¸Ä±ä£¬Ö±½Ó͸´«¾ÍÐÐ
-        entry_data->is_not_nat = 1;
-    }
-
-    //´Ë´¦±£Ö¤Õý·´Á½¸ö±ê¼Çλ²»³åÍ»
-    nat_entry->flags = nat_entry->flags | (1 << dir);
-
-    //Ìí¼Óhash½Úµã
-    fast_add_entry(working_hash, entry_data);
-    if (nat_entry->flags == FAST_ALL_DIR)
-    {
-        nat_entry->data[0].indev = nat_entry->data[1].outdev;
-        nat_entry->data[1].indev = nat_entry->data[0].outdev;
-    }
-
-    spin_lock_bh(&fast_fw_spinlock);
-    ct->fast_ct.isFast = FAST_CT_WND4;
-    spin_unlock_bh(&fast_fw_spinlock);
-
-    spin_unlock_bh(&fastnat_spinlock);
-
-accept:
-    neigh_release(_neighbour);
-    return NF_ACCEPT;
-}
-
-/*´¦Àí֪ͨÁ´Ê¼þ*/
-int fastnat_event(traverse_command_t *cmd)
-{
-    spin_lock_bh(&fastnat_spinlock);
-    traverse_process(&working_list, cmd);
-    spin_unlock_bh(&fastnat_spinlock);
-    return 0;
-}
-
-//fastnat_level¹Ø±Õ£¬Çå¿ÕËùÓÐipv4¿ìËÙת·¢ÐÅÏ¢
-void fastnat_cleanup_links(void)
-{
-    spin_lock_bh(&fastnat_spinlock);
-    fast_cleanup_links(&working_list);
-    spin_unlock_bh(&fastnat_spinlock);
-}
-
-/*fastnat³õʼ»¯*/
-int tsp_fastnat_init(void)
-{
-    int ret;
-
-    print_sun(SUN_DBG,"start init fastnat\n");
-
-    working_hash = nf_ct_alloc_hashtable(&nf_conntrack_htable_size, /*&fastnat_hash_vmalloc,*/ 1);
-    if (!working_hash)
-    {
-        print_sun(SUN_ERR, "Unable to create working_hash\n");
-        return -EINVAL;
-    }
-
-    spin_lock_init(&fastnat_spinlock);
-
-    ret = nf_register_net_hook(&init_net, &nat_hook);
-    if (ret != 0)
-    {
-        print_sun(SUN_ERR,"init fastnat failed\n");
-        goto err;
-    }
-    print_sun(SUN_DBG,"init fastnat done\n");
-
-    return 0;
-
-err:
-    nf_ct_free_hashtable(working_hash, /*fastnat_hash_vmalloc, */nf_conntrack_htable_size);
-    return -EINVAL;
-}
-
-int tsp_fastnat_cleanup(void)
-{
-    nf_unregister_net_hook(&init_net, &nat_hook);
-    nf_ct_free_hashtable(working_hash, /*fastnat_hash_vmalloc,*/ nf_conntrack_htable_size);
-
-    print_sun(SUN_DBG,"fastnat cleanup done\n");
-    return 0;
-}
-
diff --git a/upstream/linux-5.10/net/netfilter/nf_conntrack_core.c b/upstream/linux-5.10/net/netfilter/nf_conntrack_core.c
deleted file mode 100755
index e92413e..0000000
--- a/upstream/linux-5.10/net/netfilter/nf_conntrack_core.c
+++ /dev/null
@@ -1,2837 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/* Connection state tracking for netfilter.  This is separated from,
-   but required by, the NAT layer; it can also be used by an iptables
-   extension. */
-
-/* (C) 1999-2001 Paul `Rusty' Russell
- * (C) 2002-2006 Netfilter Core Team <coreteam@netfilter.org>
- * (C) 2003,2004 USAGI/WIDE Project <http://www.linux-ipv6.org>
- * (C) 2005-2012 Patrick McHardy <kaber@trash.net>
- */
-
-#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-
-#include <linux/types.h>
-#include <linux/netfilter.h>
-#include <linux/module.h>
-#include <linux/sched.h>
-#include <linux/skbuff.h>
-#include <linux/proc_fs.h>
-#include <linux/vmalloc.h>
-#include <linux/stddef.h>
-#include <linux/slab.h>
-#include <linux/random.h>
-#include <linux/jhash.h>
-#include <linux/siphash.h>
-#include <linux/err.h>
-#include <linux/percpu.h>
-#include <linux/moduleparam.h>
-#include <linux/notifier.h>
-#include <linux/kernel.h>
-#include <linux/netdevice.h>
-#include <linux/socket.h>
-#include <linux/mm.h>
-#include <linux/nsproxy.h>
-#include <linux/rculist_nulls.h>
-
-#include <net/netfilter/nf_conntrack.h>
-#include <net/netfilter/nf_conntrack_l4proto.h>
-#include <net/netfilter/nf_conntrack_expect.h>
-#include <net/netfilter/nf_conntrack_helper.h>
-#include <net/netfilter/nf_conntrack_seqadj.h>
-#include <net/netfilter/nf_conntrack_core.h>
-#include <net/netfilter/nf_conntrack_extend.h>
-#include <net/netfilter/nf_conntrack_acct.h>
-#include <net/netfilter/nf_conntrack_ecache.h>
-#include <net/netfilter/nf_conntrack_zones.h>
-#include <net/netfilter/nf_conntrack_timestamp.h>
-#include <net/netfilter/nf_conntrack_timeout.h>
-#include <net/netfilter/nf_conntrack_labels.h>
-#include <net/netfilter/nf_conntrack_synproxy.h>
-#include <net/netfilter/nf_nat.h>
-#include <net/netfilter/nf_nat_helper.h>
-#include <net/netns/hash.h>
-#include <net/ip.h>
-
-#include "nf_internals.h"
-
-#ifdef CONFIG_FASTNAT_MODULE
-#include <net/SI/fast_common.h>
-#endif
-
-__cacheline_aligned_in_smp spinlock_t nf_conntrack_locks[CONNTRACK_LOCKS];
-EXPORT_SYMBOL_GPL(nf_conntrack_locks);
-
-__cacheline_aligned_in_smp DEFINE_SPINLOCK(nf_conntrack_expect_lock);
-EXPORT_SYMBOL_GPL(nf_conntrack_expect_lock);
-
-struct hlist_nulls_head *nf_conntrack_hash __read_mostly;
-EXPORT_SYMBOL_GPL(nf_conntrack_hash);
-
-struct conntrack_gc_work {
-	struct delayed_work	dwork;
-	u32			next_bucket;
-	bool			exiting;
-	bool			early_drop;
-};
-
-static __read_mostly struct kmem_cache *nf_conntrack_cachep;
-static DEFINE_SPINLOCK(nf_conntrack_locks_all_lock);
-static __read_mostly bool nf_conntrack_locks_all;
-
-/* serialize hash resizes and nf_ct_iterate_cleanup */
-static DEFINE_MUTEX(nf_conntrack_mutex);
-
-#define GC_SCAN_INTERVAL	(120u * HZ)
-#define GC_SCAN_MAX_DURATION	msecs_to_jiffies(10)
-
-static struct conntrack_gc_work conntrack_gc_work;
-
-void nf_conntrack_lock(spinlock_t *lock) __acquires(lock)
-{
-	/* 1) Acquire the lock */
-	spin_lock(lock);
-
-	/* 2) read nf_conntrack_locks_all, with ACQUIRE semantics
-	 * It pairs with the smp_store_release() in nf_conntrack_all_unlock()
-	 */
-	if (likely(smp_load_acquire(&nf_conntrack_locks_all) == false))
-		return;
-
-	/* fast path failed, unlock */
-	spin_unlock(lock);
-
-	/* Slow path 1) get global lock */
-	spin_lock(&nf_conntrack_locks_all_lock);
-
-	/* Slow path 2) get the lock we want */
-	spin_lock(lock);
-
-	/* Slow path 3) release the global lock */
-	spin_unlock(&nf_conntrack_locks_all_lock);
-}
-EXPORT_SYMBOL_GPL(nf_conntrack_lock);
-
-static void nf_conntrack_double_unlock(unsigned int h1, unsigned int h2)
-{
-	h1 %= CONNTRACK_LOCKS;
-	h2 %= CONNTRACK_LOCKS;
-	spin_unlock(&nf_conntrack_locks[h1]);
-	if (h1 != h2)
-		spin_unlock(&nf_conntrack_locks[h2]);
-}
-
-/* return true if we need to recompute hashes (in case hash table was resized) */
-static bool nf_conntrack_double_lock(struct net *net, unsigned int h1,
-				     unsigned int h2, unsigned int sequence)
-{
-	h1 %= CONNTRACK_LOCKS;
-	h2 %= CONNTRACK_LOCKS;
-	if (h1 <= h2) {
-		nf_conntrack_lock(&nf_conntrack_locks[h1]);
-		if (h1 != h2)
-			spin_lock_nested(&nf_conntrack_locks[h2],
-					 SINGLE_DEPTH_NESTING);
-	} else {
-		nf_conntrack_lock(&nf_conntrack_locks[h2]);
-		spin_lock_nested(&nf_conntrack_locks[h1],
-				 SINGLE_DEPTH_NESTING);
-	}
-	if (read_seqcount_retry(&nf_conntrack_generation, sequence)) {
-		nf_conntrack_double_unlock(h1, h2);
-		return true;
-	}
-	return false;
-}
-
-static void nf_conntrack_all_lock(void)
-	__acquires(&nf_conntrack_locks_all_lock)
-{
-	int i;
-
-	spin_lock(&nf_conntrack_locks_all_lock);
-
-	nf_conntrack_locks_all = true;
-
-	for (i = 0; i < CONNTRACK_LOCKS; i++) {
-		spin_lock(&nf_conntrack_locks[i]);
-
-		/* This spin_unlock provides the "release" to ensure that
-		 * nf_conntrack_locks_all==true is visible to everyone that
-		 * acquired spin_lock(&nf_conntrack_locks[]).
-		 */
-		spin_unlock(&nf_conntrack_locks[i]);
-	}
-}
-
-static void nf_conntrack_all_unlock(void)
-	__releases(&nf_conntrack_locks_all_lock)
-{
-	/* All prior stores must be complete before we clear
-	 * 'nf_conntrack_locks_all'. Otherwise nf_conntrack_lock()
-	 * might observe the false value but not the entire
-	 * critical section.
-	 * It pairs with the smp_load_acquire() in nf_conntrack_lock()
-	 */
-	smp_store_release(&nf_conntrack_locks_all, false);
-	spin_unlock(&nf_conntrack_locks_all_lock);
-}
-
-unsigned int nf_conntrack_htable_size __read_mostly;
-EXPORT_SYMBOL_GPL(nf_conntrack_htable_size);
-
-unsigned int nf_conntrack_max __read_mostly;
-EXPORT_SYMBOL_GPL(nf_conntrack_max);
-seqcount_spinlock_t nf_conntrack_generation __read_mostly;
-static unsigned int nf_conntrack_hash_rnd __read_mostly;
-
-static u32 hash_conntrack_raw(const struct nf_conntrack_tuple *tuple,
-			      const struct net *net)
-{
-	unsigned int n;
-	u32 seed;
-
-	get_random_once(&nf_conntrack_hash_rnd, sizeof(nf_conntrack_hash_rnd));
-
-	/* The direction must be ignored, so we hash everything up to the
-	 * destination ports (which is a multiple of 4) and treat the last
-	 * three bytes manually.
-	 */
-	seed = nf_conntrack_hash_rnd ^ net_hash_mix(net);
-	n = (sizeof(tuple->src) + sizeof(tuple->dst.u3)) / sizeof(u32);
-	return jhash2((u32 *)tuple, n, seed ^
-		      (((__force __u16)tuple->dst.u.all << 16) |
-		      tuple->dst.protonum));
-}
-
-#ifdef CONFIG_FASTNAT_MODULE
-u32 hash_conntrack_raw_fast(const struct nf_conntrack_tuple *tuple,
-			      const struct net *net)
-{
-	return hash_conntrack_raw(tuple, net);
-}
-#endif
-
-static u32 scale_hash(u32 hash)
-{
-	return reciprocal_scale(hash, nf_conntrack_htable_size);
-}
-
-static u32 __hash_conntrack(const struct net *net,
-			    const struct nf_conntrack_tuple *tuple,
-			    unsigned int size)
-{
-	return reciprocal_scale(hash_conntrack_raw(tuple, net), size);
-}
-
-static u32 hash_conntrack(const struct net *net,
-			  const struct nf_conntrack_tuple *tuple)
-{
-	return scale_hash(hash_conntrack_raw(tuple, net));
-}
-
-#ifdef CONFIG_FASTNAT_MODULE
-u_int32_t hash_conntrack_fast(const struct nf_conntrack_tuple *tuple)
-{
-  return __hash_conntrack(&init_net, tuple, 32);
-}
-#endif
-
-static bool nf_ct_get_tuple_ports(const struct sk_buff *skb,
-				  unsigned int dataoff,
-				  struct nf_conntrack_tuple *tuple)
-{	struct {
-		__be16 sport;
-		__be16 dport;
-	} _inet_hdr, *inet_hdr;
-
-	/* Actually only need first 4 bytes to get ports. */
-	inet_hdr = skb_header_pointer(skb, dataoff, sizeof(_inet_hdr), &_inet_hdr);
-	if (!inet_hdr)
-		return false;
-
-	tuple->src.u.udp.port = inet_hdr->sport;
-	tuple->dst.u.udp.port = inet_hdr->dport;
-	return true;
-}
-
-static bool
-nf_ct_get_tuple(const struct sk_buff *skb,
-		unsigned int nhoff,
-		unsigned int dataoff,
-		u_int16_t l3num,
-		u_int8_t protonum,
-		struct net *net,
-		struct nf_conntrack_tuple *tuple)
-{
-	unsigned int size;
-	const __be32 *ap;
-	__be32 _addrs[8];
-
-	memset(tuple, 0, sizeof(*tuple));
-
-	tuple->src.l3num = l3num;
-	switch (l3num) {
-	case NFPROTO_IPV4:
-		nhoff += offsetof(struct iphdr, saddr);
-		size = 2 * sizeof(__be32);
-		break;
-	case NFPROTO_IPV6:
-		nhoff += offsetof(struct ipv6hdr, saddr);
-		size = sizeof(_addrs);
-		break;
-	default:
-		return true;
-	}
-
-	ap = skb_header_pointer(skb, nhoff, size, _addrs);
-	if (!ap)
-		return false;
-
-	switch (l3num) {
-	case NFPROTO_IPV4:
-		tuple->src.u3.ip = ap[0];
-		tuple->dst.u3.ip = ap[1];
-		break;
-	case NFPROTO_IPV6:
-		memcpy(tuple->src.u3.ip6, ap, sizeof(tuple->src.u3.ip6));
-		memcpy(tuple->dst.u3.ip6, ap + 4, sizeof(tuple->dst.u3.ip6));
-		break;
-	}
-
-	tuple->dst.protonum = protonum;
-	tuple->dst.dir = IP_CT_DIR_ORIGINAL;
-
-	switch (protonum) {
-#if IS_ENABLED(CONFIG_IPV6)
-	case IPPROTO_ICMPV6:
-		return icmpv6_pkt_to_tuple(skb, dataoff, net, tuple);
-#endif
-	case IPPROTO_ICMP:
-		return icmp_pkt_to_tuple(skb, dataoff, net, tuple);
-#ifdef CONFIG_NF_CT_PROTO_GRE
-	case IPPROTO_GRE:
-		return gre_pkt_to_tuple(skb, dataoff, net, tuple);
-#endif
-	case IPPROTO_TCP:
-	case IPPROTO_UDP: /* fallthrough */
-		return nf_ct_get_tuple_ports(skb, dataoff, tuple);
-#ifdef CONFIG_NF_CT_PROTO_UDPLITE
-	case IPPROTO_UDPLITE:
-		return nf_ct_get_tuple_ports(skb, dataoff, tuple);
-#endif
-#ifdef CONFIG_NF_CT_PROTO_SCTP
-	case IPPROTO_SCTP:
-		return nf_ct_get_tuple_ports(skb, dataoff, tuple);
-#endif
-#ifdef CONFIG_NF_CT_PROTO_DCCP
-	case IPPROTO_DCCP:
-		return nf_ct_get_tuple_ports(skb, dataoff, tuple);
-#endif
-	default:
-		break;
-	}
-
-	return true;
-}
-
-#ifdef CONFIG_FASTNAT_MODULE
-bool nf_ct_get_tuple_fast(const struct sk_buff *skb,
-		unsigned int nhoff,
-		unsigned int dataoff,
-		u_int16_t l3num,
-		u_int8_t protonum,
-		struct net *net,
-		struct nf_conntrack_tuple *tuple)
-{
-  return nf_ct_get_tuple(skb, nhoff, dataoff, l3num, protonum, net, tuple);
-}
-#endif
-
-static int ipv4_get_l4proto(const struct sk_buff *skb, unsigned int nhoff,
-			    u_int8_t *protonum)
-{
-	int dataoff = -1;
-	const struct iphdr *iph;
-	struct iphdr _iph;
-
-	iph = skb_header_pointer(skb, nhoff, sizeof(_iph), &_iph);
-	if (!iph)
-		return -1;
-
-	/* Conntrack defragments packets, we might still see fragments
-	 * inside ICMP packets though.
-	 */
-	if (iph->frag_off & htons(IP_OFFSET))
-		return -1;
-
-	dataoff = nhoff + (iph->ihl << 2);
-	*protonum = iph->protocol;
-
-	/* Check bogus IP headers */
-	if (dataoff > skb->len) {
-		pr_debug("bogus IPv4 packet: nhoff %u, ihl %u, skblen %u\n",
-			 nhoff, iph->ihl << 2, skb->len);
-		return -1;
-	}
-	return dataoff;
-}
-
-#if IS_ENABLED(CONFIG_IPV6)
-static int ipv6_get_l4proto(const struct sk_buff *skb, unsigned int nhoff,
-			    u8 *protonum)
-{
-	int protoff = -1;
-	unsigned int extoff = nhoff + sizeof(struct ipv6hdr);
-	__be16 frag_off;
-	u8 nexthdr;
-
-	if (skb_copy_bits(skb, nhoff + offsetof(struct ipv6hdr, nexthdr),
-			  &nexthdr, sizeof(nexthdr)) != 0) {
-		pr_debug("can't get nexthdr\n");
-		return -1;
-	}
-	protoff = ipv6_skip_exthdr(skb, extoff, &nexthdr, &frag_off);
-	/*
-	 * (protoff == skb->len) means the packet has not data, just
-	 * IPv6 and possibly extensions headers, but it is tracked anyway
-	 */
-	if (protoff < 0 || (frag_off & htons(~0x7)) != 0) {
-		pr_debug("can't find proto in pkt\n");
-		return -1;
-	}
-
-	*protonum = nexthdr;
-	return protoff;
-}
-#endif
-
-static int get_l4proto(const struct sk_buff *skb,
-		       unsigned int nhoff, u8 pf, u8 *l4num)
-{
-	switch (pf) {
-	case NFPROTO_IPV4:
-		return ipv4_get_l4proto(skb, nhoff, l4num);
-#if IS_ENABLED(CONFIG_IPV6)
-	case NFPROTO_IPV6:
-		return ipv6_get_l4proto(skb, nhoff, l4num);
-#endif
-	default:
-		*l4num = 0;
-		break;
-	}
-	return -1;
-}
-
-#ifdef CONFIG_FASTNAT_MODULE
-int get_l4proto_fast(const struct sk_buff *skb,
-		       unsigned int nhoff, u8 pf, u8 *l4num)
-{
-	return get_l4proto(skb, nhoff, pf, l4num);
-}
-#endif
-
-bool nf_ct_get_tuplepr(const struct sk_buff *skb, unsigned int nhoff,
-		       u_int16_t l3num,
-		       struct net *net, struct nf_conntrack_tuple *tuple)
-{
-	u8 protonum;
-	int protoff;
-
-	protoff = get_l4proto(skb, nhoff, l3num, &protonum);
-	if (protoff <= 0)
-		return false;
-
-	return nf_ct_get_tuple(skb, nhoff, protoff, l3num, protonum, net, tuple);
-}
-EXPORT_SYMBOL_GPL(nf_ct_get_tuplepr);
-
-bool
-nf_ct_invert_tuple(struct nf_conntrack_tuple *inverse,
-		   const struct nf_conntrack_tuple *orig)
-{
-	memset(inverse, 0, sizeof(*inverse));
-
-	inverse->src.l3num = orig->src.l3num;
-
-	switch (orig->src.l3num) {
-	case NFPROTO_IPV4:
-		inverse->src.u3.ip = orig->dst.u3.ip;
-		inverse->dst.u3.ip = orig->src.u3.ip;
-		break;
-	case NFPROTO_IPV6:
-		inverse->src.u3.in6 = orig->dst.u3.in6;
-		inverse->dst.u3.in6 = orig->src.u3.in6;
-		break;
-	default:
-		break;
-	}
-
-	inverse->dst.dir = !orig->dst.dir;
-
-	inverse->dst.protonum = orig->dst.protonum;
-
-	switch (orig->dst.protonum) {
-	case IPPROTO_ICMP:
-		return nf_conntrack_invert_icmp_tuple(inverse, orig);
-#if IS_ENABLED(CONFIG_IPV6)
-	case IPPROTO_ICMPV6:
-		return nf_conntrack_invert_icmpv6_tuple(inverse, orig);
-#endif
-	}
-
-	inverse->src.u.all = orig->dst.u.all;
-	inverse->dst.u.all = orig->src.u.all;
-	return true;
-}
-EXPORT_SYMBOL_GPL(nf_ct_invert_tuple);
-
-/* Generate a almost-unique pseudo-id for a given conntrack.
- *
- * intentionally doesn't re-use any of the seeds used for hash
- * table location, we assume id gets exposed to userspace.
- *
- * Following nf_conn items do not change throughout lifetime
- * of the nf_conn:
- *
- * 1. nf_conn address
- * 2. nf_conn->master address (normally NULL)
- * 3. the associated net namespace
- * 4. the original direction tuple
- */
-u32 nf_ct_get_id(const struct nf_conn *ct)
-{
-	static __read_mostly siphash_key_t ct_id_seed;
-	unsigned long a, b, c, d;
-
-	net_get_random_once(&ct_id_seed, sizeof(ct_id_seed));
-
-	a = (unsigned long)ct;
-	b = (unsigned long)ct->master;
-	c = (unsigned long)nf_ct_net(ct);
-	d = (unsigned long)siphash(&ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple,
-				   sizeof(ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple),
-				   &ct_id_seed);
-#ifdef CONFIG_64BIT
-	return siphash_4u64((u64)a, (u64)b, (u64)c, (u64)d, &ct_id_seed);
-#else
-	return siphash_4u32((u32)a, (u32)b, (u32)c, (u32)d, &ct_id_seed);
-#endif
-}
-EXPORT_SYMBOL_GPL(nf_ct_get_id);
-
-static void
-clean_from_lists(struct nf_conn *ct)
-{
-	pr_debug("clean_from_lists(%p)\n", ct);
-	hlist_nulls_del_rcu(&ct->tuplehash[IP_CT_DIR_ORIGINAL].hnnode);
-	hlist_nulls_del_rcu(&ct->tuplehash[IP_CT_DIR_REPLY].hnnode);
-
-	/* Destroy all pending expectations */
-	nf_ct_remove_expectations(ct);
-}
-
-/* must be called with local_bh_disable */
-static void nf_ct_add_to_dying_list(struct nf_conn *ct)
-{
-	struct ct_pcpu *pcpu;
-
-	/* add this conntrack to the (per cpu) dying list */
-	ct->cpu = smp_processor_id();
-	pcpu = per_cpu_ptr(nf_ct_net(ct)->ct.pcpu_lists, ct->cpu);
-
-	spin_lock(&pcpu->lock);
-	hlist_nulls_add_head(&ct->tuplehash[IP_CT_DIR_ORIGINAL].hnnode,
-			     &pcpu->dying);
-	spin_unlock(&pcpu->lock);
-}
-
-/* must be called with local_bh_disable */
-static void nf_ct_add_to_unconfirmed_list(struct nf_conn *ct)
-{
-	struct ct_pcpu *pcpu;
-
-	/* add this conntrack to the (per cpu) unconfirmed list */
-	ct->cpu = smp_processor_id();
-	pcpu = per_cpu_ptr(nf_ct_net(ct)->ct.pcpu_lists, ct->cpu);
-
-	spin_lock(&pcpu->lock);
-	hlist_nulls_add_head(&ct->tuplehash[IP_CT_DIR_ORIGINAL].hnnode,
-			     &pcpu->unconfirmed);
-	spin_unlock(&pcpu->lock);
-}
-
-/* must be called with local_bh_disable */
-static void nf_ct_del_from_dying_or_unconfirmed_list(struct nf_conn *ct)
-{
-	struct ct_pcpu *pcpu;
-
-	/* We overload first tuple to link into unconfirmed or dying list.*/
-	pcpu = per_cpu_ptr(nf_ct_net(ct)->ct.pcpu_lists, ct->cpu);
-
-	spin_lock(&pcpu->lock);
-	BUG_ON(hlist_nulls_unhashed(&ct->tuplehash[IP_CT_DIR_ORIGINAL].hnnode));
-	hlist_nulls_del_rcu(&ct->tuplehash[IP_CT_DIR_ORIGINAL].hnnode);
-	spin_unlock(&pcpu->lock);
-}
-
-#define NFCT_ALIGN(len)	(((len) + NFCT_INFOMASK) & ~NFCT_INFOMASK)
-
-/* Released via destroy_conntrack() */
-struct nf_conn *nf_ct_tmpl_alloc(struct net *net,
-				 const struct nf_conntrack_zone *zone,
-				 gfp_t flags)
-{
-	struct nf_conn *tmpl, *p;
-
-	if (ARCH_KMALLOC_MINALIGN <= NFCT_INFOMASK) {
-		tmpl = kzalloc(sizeof(*tmpl) + NFCT_INFOMASK, flags);
-		if (!tmpl)
-			return NULL;
-
-		p = tmpl;
-		tmpl = (struct nf_conn *)NFCT_ALIGN((unsigned long)p);
-		if (tmpl != p) {
-			tmpl = (struct nf_conn *)NFCT_ALIGN((unsigned long)p);
-			tmpl->proto.tmpl_padto = (char *)tmpl - (char *)p;
-		}
-	} else {
-		tmpl = kzalloc(sizeof(*tmpl), flags);
-		if (!tmpl)
-			return NULL;
-	}
-
-	tmpl->status = IPS_TEMPLATE;
-	write_pnet(&tmpl->ct_net, net);
-	nf_ct_zone_add(tmpl, zone);
-	atomic_set(&tmpl->ct_general.use, 0);
-
-	return tmpl;
-}
-EXPORT_SYMBOL_GPL(nf_ct_tmpl_alloc);
-
-void nf_ct_tmpl_free(struct nf_conn *tmpl)
-{
-	nf_ct_ext_destroy(tmpl);
-
-	if (ARCH_KMALLOC_MINALIGN <= NFCT_INFOMASK)
-		kfree((char *)tmpl - tmpl->proto.tmpl_padto);
-	else
-		kfree(tmpl);
-}
-EXPORT_SYMBOL_GPL(nf_ct_tmpl_free);
-
-static void destroy_gre_conntrack(struct nf_conn *ct)
-{
-#ifdef CONFIG_NF_CT_PROTO_GRE
-	struct nf_conn *master = ct->master;
-
-	if (master)
-		nf_ct_gre_keymap_destroy(master);
-#endif
-}
-
-static void
-destroy_conntrack(struct nf_conntrack *nfct)
-{
-	struct nf_conn *ct = (struct nf_conn *)nfct;
-
-	pr_debug("destroy_conntrack(%p)\n", ct);
-	WARN_ON(atomic_read(&nfct->use) != 0);
-
-	if (unlikely(nf_ct_is_template(ct))) {
-		nf_ct_tmpl_free(ct);
-		return;
-	}
-
-	if (unlikely(nf_ct_protonum(ct) == IPPROTO_GRE))
-		destroy_gre_conntrack(ct);
-
-	local_bh_disable();
-	/* Expectations will have been removed in clean_from_lists,
-	 * except TFTP can create an expectation on the first packet,
-	 * before connection is in the list, so we need to clean here,
-	 * too.
-	 */
-	nf_ct_remove_expectations(ct);
-
-	nf_ct_del_from_dying_or_unconfirmed_list(ct);
-
-	local_bh_enable();
-
-	if (ct->master)
-		nf_ct_put(ct->master);
-
-	pr_debug("destroy_conntrack: returning ct=%p to slab\n", ct);
-	nf_conntrack_free(ct);
-}
-
-static void nf_ct_delete_from_lists(struct nf_conn *ct)
-{
-	struct net *net = nf_ct_net(ct);
-	unsigned int hash, reply_hash;
-	unsigned int sequence;
-
-	nf_ct_helper_destroy(ct);
-
-	local_bh_disable();
-	do {
-		sequence = read_seqcount_begin(&nf_conntrack_generation);
-		hash = hash_conntrack(net,
-				      &ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple);
-		reply_hash = hash_conntrack(net,
-					   &ct->tuplehash[IP_CT_DIR_REPLY].tuple);
-	} while (nf_conntrack_double_lock(net, hash, reply_hash, sequence));
-
-	clean_from_lists(ct);
-	nf_conntrack_double_unlock(hash, reply_hash);
-
-	nf_ct_add_to_dying_list(ct);
-
-	local_bh_enable();
-}
-
-bool nf_ct_delete(struct nf_conn *ct, u32 portid, int report)
-{
-	struct nf_conn_tstamp *tstamp;
-
-	if (test_and_set_bit(IPS_DYING_BIT, &ct->status))
-		return false;
-
-	tstamp = nf_conn_tstamp_find(ct);
-	if (tstamp) {
-		s32 timeout = READ_ONCE(ct->timeout) - nfct_time_stamp;
-
-		tstamp->stop = ktime_get_real_ns();
-		if (timeout < 0)
-			tstamp->stop -= jiffies_to_nsecs(-timeout);
-	}
-
-	if (nf_conntrack_event_report(IPCT_DESTROY, ct,
-				    portid, report) < 0) {
-		/* destroy event was not delivered. nf_ct_put will
-		 * be done by event cache worker on redelivery.
-		 */
-		nf_ct_delete_from_lists(ct);
-		nf_conntrack_ecache_delayed_work(nf_ct_net(ct));
-		return false;
-	}
-
-	nf_conntrack_ecache_work(nf_ct_net(ct));
-	nf_ct_delete_from_lists(ct);
-	nf_ct_put(ct);
-	return true;
-}
-EXPORT_SYMBOL_GPL(nf_ct_delete);
-
-static inline bool
-nf_ct_key_equal(struct nf_conntrack_tuple_hash *h,
-		const struct nf_conntrack_tuple *tuple,
-		const struct nf_conntrack_zone *zone,
-		const struct net *net)
-{
-	struct nf_conn *ct = nf_ct_tuplehash_to_ctrack(h);
-
-	/* A conntrack can be recreated with the equal tuple,
-	 * so we need to check that the conntrack is confirmed
-	 */
-	return nf_ct_tuple_equal(tuple, &h->tuple) &&
-	       nf_ct_zone_equal(ct, zone, NF_CT_DIRECTION(h)) &&
-	       nf_ct_is_confirmed(ct) &&
-	       net_eq(net, nf_ct_net(ct));
-}
-
-static inline bool
-nf_ct_match(const struct nf_conn *ct1, const struct nf_conn *ct2)
-{
-	return nf_ct_tuple_equal(&ct1->tuplehash[IP_CT_DIR_ORIGINAL].tuple,
-				 &ct2->tuplehash[IP_CT_DIR_ORIGINAL].tuple) &&
-	       nf_ct_tuple_equal(&ct1->tuplehash[IP_CT_DIR_REPLY].tuple,
-				 &ct2->tuplehash[IP_CT_DIR_REPLY].tuple) &&
-	       nf_ct_zone_equal(ct1, nf_ct_zone(ct2), IP_CT_DIR_ORIGINAL) &&
-	       nf_ct_zone_equal(ct1, nf_ct_zone(ct2), IP_CT_DIR_REPLY) &&
-	       net_eq(nf_ct_net(ct1), nf_ct_net(ct2));
-}
-
-/* caller must hold rcu readlock and none of the nf_conntrack_locks */
-static void nf_ct_gc_expired(struct nf_conn *ct)
-{
-	if (!atomic_inc_not_zero(&ct->ct_general.use))
-		return;
-
-	if (nf_ct_should_gc(ct))
-		nf_ct_kill(ct);
-
-	nf_ct_put(ct);
-}
-
-/*
- * Warning :
- * - Caller must take a reference on returned object
- *   and recheck nf_ct_tuple_equal(tuple, &h->tuple)
- */
-static struct nf_conntrack_tuple_hash *
-____nf_conntrack_find(struct net *net, const struct nf_conntrack_zone *zone,
-		      const struct nf_conntrack_tuple *tuple, u32 hash)
-{
-	struct nf_conntrack_tuple_hash *h;
-	struct hlist_nulls_head *ct_hash;
-	struct hlist_nulls_node *n;
-	unsigned int bucket, hsize;
-
-begin:
-	nf_conntrack_get_ht(&ct_hash, &hsize);
-	bucket = reciprocal_scale(hash, hsize);
-
-	hlist_nulls_for_each_entry_rcu(h, n, &ct_hash[bucket], hnnode) {
-		struct nf_conn *ct;
-
-		ct = nf_ct_tuplehash_to_ctrack(h);
-		if (nf_ct_is_expired(ct)) {
-			nf_ct_gc_expired(ct);
-			continue;
-		}
-
-		if (nf_ct_key_equal(h, tuple, zone, net))
-			return h;
-	}
-	/*
-	 * if the nulls value we got at the end of this lookup is
-	 * not the expected one, we must restart lookup.
-	 * We probably met an item that was moved to another chain.
-	 */
-	if (get_nulls_value(n) != bucket) {
-		NF_CT_STAT_INC_ATOMIC(net, search_restart);
-		goto begin;
-	}
-
-	return NULL;
-}
-
-/* Find a connection corresponding to a tuple. */
-static struct nf_conntrack_tuple_hash *
-__nf_conntrack_find_get(struct net *net, const struct nf_conntrack_zone *zone,
-			const struct nf_conntrack_tuple *tuple, u32 hash)
-{
-	struct nf_conntrack_tuple_hash *h;
-	struct nf_conn *ct;
-
-	rcu_read_lock();
-
-	h = ____nf_conntrack_find(net, zone, tuple, hash);
-	if (h) {
-		/* We have a candidate that matches the tuple we're interested
-		 * in, try to obtain a reference and re-check tuple
-		 */
-		ct = nf_ct_tuplehash_to_ctrack(h);
-		if (likely(atomic_inc_not_zero(&ct->ct_general.use))) {
-			if (likely(nf_ct_key_equal(h, tuple, zone, net)))
-				goto found;
-
-			/* TYPESAFE_BY_RCU recycled the candidate */
-			nf_ct_put(ct);
-		}
-
-		h = NULL;
-	}
-found:
-	rcu_read_unlock();
-
-	return h;
-}
-
-#ifdef CONFIG_FASTNAT_MODULE
-struct nf_conntrack_tuple_hash *nf_conntrack_find_fast(struct net *net, const struct nf_conntrack_zone *zone,
-			  const struct nf_conntrack_tuple *tuple, u32 hash)
-{
-	return __nf_conntrack_find_get(net, zone, tuple, hash);
-}
-#endif
-
-struct nf_conntrack_tuple_hash *
-nf_conntrack_find_get(struct net *net, const struct nf_conntrack_zone *zone,
-		      const struct nf_conntrack_tuple *tuple)
-{
-	return __nf_conntrack_find_get(net, zone, tuple,
-				       hash_conntrack_raw(tuple, net));
-}
-EXPORT_SYMBOL_GPL(nf_conntrack_find_get);
-
-static void __nf_conntrack_hash_insert(struct nf_conn *ct,
-				       unsigned int hash,
-				       unsigned int reply_hash)
-{
-	hlist_nulls_add_head_rcu(&ct->tuplehash[IP_CT_DIR_ORIGINAL].hnnode,
-			   &nf_conntrack_hash[hash]);
-	hlist_nulls_add_head_rcu(&ct->tuplehash[IP_CT_DIR_REPLY].hnnode,
-			   &nf_conntrack_hash[reply_hash]);
-}
-
-int
-nf_conntrack_hash_check_insert(struct nf_conn *ct)
-{
-	const struct nf_conntrack_zone *zone;
-	struct net *net = nf_ct_net(ct);
-	unsigned int hash, reply_hash;
-	struct nf_conntrack_tuple_hash *h;
-	struct hlist_nulls_node *n;
-	unsigned int sequence;
-
-	zone = nf_ct_zone(ct);
-
-	local_bh_disable();
-	do {
-		sequence = read_seqcount_begin(&nf_conntrack_generation);
-		hash = hash_conntrack(net,
-				      &ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple);
-		reply_hash = hash_conntrack(net,
-					   &ct->tuplehash[IP_CT_DIR_REPLY].tuple);
-	} while (nf_conntrack_double_lock(net, hash, reply_hash, sequence));
-
-	/* See if there's one in the list already, including reverse */
-	hlist_nulls_for_each_entry(h, n, &nf_conntrack_hash[hash], hnnode)
-		if (nf_ct_key_equal(h, &ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple,
-				    zone, net))
-			goto out;
-
-	hlist_nulls_for_each_entry(h, n, &nf_conntrack_hash[reply_hash], hnnode)
-		if (nf_ct_key_equal(h, &ct->tuplehash[IP_CT_DIR_REPLY].tuple,
-				    zone, net))
-			goto out;
-
-	smp_wmb();
-	/* The caller holds a reference to this object */
-	atomic_set(&ct->ct_general.use, 2);
-	__nf_conntrack_hash_insert(ct, hash, reply_hash);
-	nf_conntrack_double_unlock(hash, reply_hash);
-	NF_CT_STAT_INC(net, insert);
-	local_bh_enable();
-	return 0;
-
-out:
-	nf_conntrack_double_unlock(hash, reply_hash);
-	local_bh_enable();
-	return -EEXIST;
-}
-EXPORT_SYMBOL_GPL(nf_conntrack_hash_check_insert);
-
-void nf_ct_acct_add(struct nf_conn *ct, u32 dir, unsigned int packets,
-		    unsigned int bytes)
-{
-	struct nf_conn_acct *acct;
-
-	acct = nf_conn_acct_find(ct);
-	if (acct) {
-		struct nf_conn_counter *counter = acct->counter;
-
-		atomic64_add(packets, &counter[dir].packets);
-		atomic64_add(bytes, &counter[dir].bytes);
-	}
-}
-EXPORT_SYMBOL_GPL(nf_ct_acct_add);
-
-static void nf_ct_acct_merge(struct nf_conn *ct, enum ip_conntrack_info ctinfo,
-			     const struct nf_conn *loser_ct)
-{
-	struct nf_conn_acct *acct;
-
-	acct = nf_conn_acct_find(loser_ct);
-	if (acct) {
-		struct nf_conn_counter *counter = acct->counter;
-		unsigned int bytes;
-
-		/* u32 should be fine since we must have seen one packet. */
-		bytes = atomic64_read(&counter[CTINFO2DIR(ctinfo)].bytes);
-		nf_ct_acct_update(ct, CTINFO2DIR(ctinfo), bytes);
-	}
-}
-
-static void __nf_conntrack_insert_prepare(struct nf_conn *ct)
-{
-	struct nf_conn_tstamp *tstamp;
-
-	atomic_inc(&ct->ct_general.use);
-	ct->status |= IPS_CONFIRMED;
-
-	/* set conntrack timestamp, if enabled. */
-	tstamp = nf_conn_tstamp_find(ct);
-	if (tstamp)
-		tstamp->start = ktime_get_real_ns();
-}
-
-/* caller must hold locks to prevent concurrent changes */
-static int __nf_ct_resolve_clash(struct sk_buff *skb,
-				 struct nf_conntrack_tuple_hash *h)
-{
-	/* This is the conntrack entry already in hashes that won race. */
-	struct nf_conn *ct = nf_ct_tuplehash_to_ctrack(h);
-	enum ip_conntrack_info ctinfo;
-	struct nf_conn *loser_ct;
-
-	loser_ct = nf_ct_get(skb, &ctinfo);
-
-	if (nf_ct_is_dying(ct))
-		return NF_DROP;
-
-	if (((ct->status & IPS_NAT_DONE_MASK) == 0) ||
-	    nf_ct_match(ct, loser_ct)) {
-		struct net *net = nf_ct_net(ct);
-
-		nf_conntrack_get(&ct->ct_general);
-
-		nf_ct_acct_merge(ct, ctinfo, loser_ct);
-		nf_ct_add_to_dying_list(loser_ct);
-		nf_conntrack_put(&loser_ct->ct_general);
-		nf_ct_set(skb, ct, ctinfo);
-
-		NF_CT_STAT_INC(net, clash_resolve);
-		return NF_ACCEPT;
-	}
-
-	return NF_DROP;
-}
-
-/**
- * nf_ct_resolve_clash_harder - attempt to insert clashing conntrack entry
- *
- * @skb: skb that causes the collision
- * @repl_idx: hash slot for reply direction
- *
- * Called when origin or reply direction had a clash.
- * The skb can be handled without packet drop provided the reply direction
- * is unique or there the existing entry has the identical tuple in both
- * directions.
- *
- * Caller must hold conntrack table locks to prevent concurrent updates.
- *
- * Returns NF_DROP if the clash could not be handled.
- */
-static int nf_ct_resolve_clash_harder(struct sk_buff *skb, u32 repl_idx)
-{
-	struct nf_conn *loser_ct = (struct nf_conn *)skb_nfct(skb);
-	const struct nf_conntrack_zone *zone;
-	struct nf_conntrack_tuple_hash *h;
-	struct hlist_nulls_node *n;
-	struct net *net;
-
-	zone = nf_ct_zone(loser_ct);
-	net = nf_ct_net(loser_ct);
-
-	/* Reply direction must never result in a clash, unless both origin
-	 * and reply tuples are identical.
-	 */
-	hlist_nulls_for_each_entry(h, n, &nf_conntrack_hash[repl_idx], hnnode) {
-		if (nf_ct_key_equal(h,
-				    &loser_ct->tuplehash[IP_CT_DIR_REPLY].tuple,
-				    zone, net))
-			return __nf_ct_resolve_clash(skb, h);
-	}
-
-	/* We want the clashing entry to go away real soon: 1 second timeout. */
-	WRITE_ONCE(loser_ct->timeout, nfct_time_stamp + HZ);
-
-	/* IPS_NAT_CLASH removes the entry automatically on the first
-	 * reply.  Also prevents UDP tracker from moving the entry to
-	 * ASSURED state, i.e. the entry can always be evicted under
-	 * pressure.
-	 */
-	loser_ct->status |= IPS_FIXED_TIMEOUT | IPS_NAT_CLASH;
-
-	__nf_conntrack_insert_prepare(loser_ct);
-
-	/* fake add for ORIGINAL dir: we want lookups to only find the entry
-	 * already in the table.  This also hides the clashing entry from
-	 * ctnetlink iteration, i.e. conntrack -L won't show them.
-	 */
-	hlist_nulls_add_fake(&loser_ct->tuplehash[IP_CT_DIR_ORIGINAL].hnnode);
-
-	hlist_nulls_add_head_rcu(&loser_ct->tuplehash[IP_CT_DIR_REPLY].hnnode,
-				 &nf_conntrack_hash[repl_idx]);
-
-	NF_CT_STAT_INC(net, clash_resolve);
-	return NF_ACCEPT;
-}
-
-/**
- * nf_ct_resolve_clash - attempt to handle clash without packet drop
- *
- * @skb: skb that causes the clash
- * @h: tuplehash of the clashing entry already in table
- * @reply_hash: hash slot for reply direction
- *
- * A conntrack entry can be inserted to the connection tracking table
- * if there is no existing entry with an identical tuple.
- *
- * If there is one, @skb (and the assocated, unconfirmed conntrack) has
- * to be dropped.  In case @skb is retransmitted, next conntrack lookup
- * will find the already-existing entry.
- *
- * The major problem with such packet drop is the extra delay added by
- * the packet loss -- it will take some time for a retransmit to occur
- * (or the sender to time out when waiting for a reply).
- *
- * This function attempts to handle the situation without packet drop.
- *
- * If @skb has no NAT transformation or if the colliding entries are
- * exactly the same, only the to-be-confirmed conntrack entry is discarded
- * and @skb is associated with the conntrack entry already in the table.
- *
- * Failing that, the new, unconfirmed conntrack is still added to the table
- * provided that the collision only occurs in the ORIGINAL direction.
- * The new entry will be added only in the non-clashing REPLY direction,
- * so packets in the ORIGINAL direction will continue to match the existing
- * entry.  The new entry will also have a fixed timeout so it expires --
- * due to the collision, it will only see reply traffic.
- *
- * Returns NF_DROP if the clash could not be resolved.
- */
-static __cold noinline int
-nf_ct_resolve_clash(struct sk_buff *skb, struct nf_conntrack_tuple_hash *h,
-		    u32 reply_hash)
-{
-	/* This is the conntrack entry already in hashes that won race. */
-	struct nf_conn *ct = nf_ct_tuplehash_to_ctrack(h);
-	const struct nf_conntrack_l4proto *l4proto;
-	enum ip_conntrack_info ctinfo;
-	struct nf_conn *loser_ct;
-	struct net *net;
-	int ret;
-
-	loser_ct = nf_ct_get(skb, &ctinfo);
-	net = nf_ct_net(loser_ct);
-
-	l4proto = nf_ct_l4proto_find(nf_ct_protonum(ct));
-	if (!l4proto->allow_clash)
-		goto drop;
-
-	ret = __nf_ct_resolve_clash(skb, h);
-	if (ret == NF_ACCEPT)
-		return ret;
-
-	ret = nf_ct_resolve_clash_harder(skb, reply_hash);
-	if (ret == NF_ACCEPT)
-		return ret;
-
-drop:
-	nf_ct_add_to_dying_list(loser_ct);
-	NF_CT_STAT_INC(net, drop);
-	NF_CT_STAT_INC(net, insert_failed);
-	return NF_DROP;
-}
-
-/* Confirm a connection given skb; places it in hash table */
-int
-__nf_conntrack_confirm(struct sk_buff *skb)
-{
-	const struct nf_conntrack_zone *zone;
-	unsigned int hash, reply_hash;
-	struct nf_conntrack_tuple_hash *h;
-	struct nf_conn *ct;
-	struct nf_conn_help *help;
-	struct hlist_nulls_node *n;
-	enum ip_conntrack_info ctinfo;
-	struct net *net;
-	unsigned int sequence;
-	int ret = NF_DROP;
-
-	ct = nf_ct_get(skb, &ctinfo);
-	net = nf_ct_net(ct);
-
-	/* ipt_REJECT uses nf_conntrack_attach to attach related
-	   ICMP/TCP RST packets in other direction.  Actual packet
-	   which created connection will be IP_CT_NEW or for an
-	   expected connection, IP_CT_RELATED. */
-	if (CTINFO2DIR(ctinfo) != IP_CT_DIR_ORIGINAL)
-		return NF_ACCEPT;
-
-	zone = nf_ct_zone(ct);
-	local_bh_disable();
-
-	do {
-		sequence = read_seqcount_begin(&nf_conntrack_generation);
-		/* reuse the hash saved before */
-		hash = *(unsigned long *)&ct->tuplehash[IP_CT_DIR_REPLY].hnnode.pprev;
-		hash = scale_hash(hash);
-		reply_hash = hash_conntrack(net,
-					   &ct->tuplehash[IP_CT_DIR_REPLY].tuple);
-
-	} while (nf_conntrack_double_lock(net, hash, reply_hash, sequence));
-
-	/* We're not in hash table, and we refuse to set up related
-	 * connections for unconfirmed conns.  But packet copies and
-	 * REJECT will give spurious warnings here.
-	 */
-
-	/* Another skb with the same unconfirmed conntrack may
-	 * win the race. This may happen for bridge(br_flood)
-	 * or broadcast/multicast packets do skb_clone with
-	 * unconfirmed conntrack.
-	 */
-	if (unlikely(nf_ct_is_confirmed(ct))) {
-		WARN_ON_ONCE(1);
-		nf_conntrack_double_unlock(hash, reply_hash);
-		local_bh_enable();
-		return NF_DROP;
-	}
-
-	pr_debug("Confirming conntrack %p\n", ct);
-	/* We have to check the DYING flag after unlink to prevent
-	 * a race against nf_ct_get_next_corpse() possibly called from
-	 * user context, else we insert an already 'dead' hash, blocking
-	 * further use of that particular connection -JM.
-	 */
-	nf_ct_del_from_dying_or_unconfirmed_list(ct);
-
-	if (unlikely(nf_ct_is_dying(ct))) {
-		nf_ct_add_to_dying_list(ct);
-		NF_CT_STAT_INC(net, insert_failed);
-		goto dying;
-	}
-
-	/* See if there's one in the list already, including reverse:
-	   NAT could have grabbed it without realizing, since we're
-	   not in the hash.  If there is, we lost race. */
-	hlist_nulls_for_each_entry(h, n, &nf_conntrack_hash[hash], hnnode)
-		if (nf_ct_key_equal(h, &ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple,
-				    zone, net))
-			goto out;
-
-	hlist_nulls_for_each_entry(h, n, &nf_conntrack_hash[reply_hash], hnnode)
-		if (nf_ct_key_equal(h, &ct->tuplehash[IP_CT_DIR_REPLY].tuple,
-				    zone, net))
-			goto out;
-
-	/* Timer relative to confirmation time, not original
-	   setting time, otherwise we'd get timer wrap in
-	   weird delay cases. */
-	ct->timeout += nfct_time_stamp;
-
-	__nf_conntrack_insert_prepare(ct);
-
-	/* Since the lookup is lockless, hash insertion must be done after
-	 * starting the timer and setting the CONFIRMED bit. The RCU barriers
-	 * guarantee that no other CPU can find the conntrack before the above
-	 * stores are visible.
-	 */
-	__nf_conntrack_hash_insert(ct, hash, reply_hash);
-	nf_conntrack_double_unlock(hash, reply_hash);
-	local_bh_enable();
-
-	help = nfct_help(ct);
-	if (help && help->helper)
-		nf_conntrack_event_cache(IPCT_HELPER, ct);
-
-	nf_conntrack_event_cache(master_ct(ct) ?
-				 IPCT_RELATED : IPCT_NEW, ct);
-	return NF_ACCEPT;
-
-out:
-	ret = nf_ct_resolve_clash(skb, h, reply_hash);
-dying:
-	nf_conntrack_double_unlock(hash, reply_hash);
-	local_bh_enable();
-	return ret;
-}
-EXPORT_SYMBOL_GPL(__nf_conntrack_confirm);
-
-/* Returns true if a connection correspondings to the tuple (required
-   for NAT). */
-int
-nf_conntrack_tuple_taken(const struct nf_conntrack_tuple *tuple,
-			 const struct nf_conn *ignored_conntrack)
-{
-	struct net *net = nf_ct_net(ignored_conntrack);
-	const struct nf_conntrack_zone *zone;
-	struct nf_conntrack_tuple_hash *h;
-	struct hlist_nulls_head *ct_hash;
-	unsigned int hash, hsize;
-	struct hlist_nulls_node *n;
-	struct nf_conn *ct;
-
-	zone = nf_ct_zone(ignored_conntrack);
-
-	rcu_read_lock();
- begin:
-	nf_conntrack_get_ht(&ct_hash, &hsize);
-	hash = __hash_conntrack(net, tuple, hsize);
-
-	hlist_nulls_for_each_entry_rcu(h, n, &ct_hash[hash], hnnode) {
-		ct = nf_ct_tuplehash_to_ctrack(h);
-
-		if (ct == ignored_conntrack)
-			continue;
-
-		if (nf_ct_is_expired(ct)) {
-			nf_ct_gc_expired(ct);
-			continue;
-		}
-
-		if (nf_ct_key_equal(h, tuple, zone, net)) {
-			/* Tuple is taken already, so caller will need to find
-			 * a new source port to use.
-			 *
-			 * Only exception:
-			 * If the *original tuples* are identical, then both
-			 * conntracks refer to the same flow.
-			 * This is a rare situation, it can occur e.g. when
-			 * more than one UDP packet is sent from same socket
-			 * in different threads.
-			 *
-			 * Let nf_ct_resolve_clash() deal with this later.
-			 */
-			if (nf_ct_tuple_equal(&ignored_conntrack->tuplehash[IP_CT_DIR_ORIGINAL].tuple,
-					      &ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple) &&
-					      nf_ct_zone_equal(ct, zone, IP_CT_DIR_ORIGINAL))
-				continue;
-
-			NF_CT_STAT_INC_ATOMIC(net, found);
-			rcu_read_unlock();
-			return 1;
-		}
-	}
-
-	if (get_nulls_value(n) != hash) {
-		NF_CT_STAT_INC_ATOMIC(net, search_restart);
-		goto begin;
-	}
-
-	rcu_read_unlock();
-
-	return 0;
-}
-EXPORT_SYMBOL_GPL(nf_conntrack_tuple_taken);
-
-#define NF_CT_EVICTION_RANGE	8
-
-/* There's a small race here where we may free a just-assured
-   connection.  Too bad: we're in trouble anyway. */
-static unsigned int early_drop_list(struct net *net,
-				    struct hlist_nulls_head *head)
-{
-	struct nf_conntrack_tuple_hash *h;
-	struct hlist_nulls_node *n;
-	unsigned int drops = 0;
-	struct nf_conn *tmp;
-
-	hlist_nulls_for_each_entry_rcu(h, n, head, hnnode) {
-		tmp = nf_ct_tuplehash_to_ctrack(h);
-
-		if (test_bit(IPS_OFFLOAD_BIT, &tmp->status))
-			continue;
-
-		if (nf_ct_is_expired(tmp)) {
-			nf_ct_gc_expired(tmp);
-			continue;
-		}
-
-		if (test_bit(IPS_ASSURED_BIT, &tmp->status) ||
-		    !net_eq(nf_ct_net(tmp), net) ||
-		    nf_ct_is_dying(tmp))
-			continue;
-
-		if (!atomic_inc_not_zero(&tmp->ct_general.use))
-			continue;
-
-		/* kill only if still in same netns -- might have moved due to
-		 * SLAB_TYPESAFE_BY_RCU rules.
-		 *
-		 * We steal the timer reference.  If that fails timer has
-		 * already fired or someone else deleted it. Just drop ref
-		 * and move to next entry.
-		 */
-		if (net_eq(nf_ct_net(tmp), net) &&
-		    nf_ct_is_confirmed(tmp) &&
-		    nf_ct_delete(tmp, 0, 0))
-			drops++;
-
-		nf_ct_put(tmp);
-	}
-
-	return drops;
-}
-
-static noinline int early_drop(struct net *net, unsigned int hash)
-{
-	unsigned int i, bucket;
-
-	for (i = 0; i < NF_CT_EVICTION_RANGE; i++) {
-		struct hlist_nulls_head *ct_hash;
-		unsigned int hsize, drops;
-
-		rcu_read_lock();
-		nf_conntrack_get_ht(&ct_hash, &hsize);
-		if (!i)
-			bucket = reciprocal_scale(hash, hsize);
-		else
-			bucket = (bucket + 1) % hsize;
-
-		drops = early_drop_list(net, &ct_hash[bucket]);
-		rcu_read_unlock();
-
-		if (drops) {
-			NF_CT_STAT_ADD_ATOMIC(net, early_drop, drops);
-			return true;
-		}
-	}
-
-	return false;
-}
-
-static bool gc_worker_skip_ct(const struct nf_conn *ct)
-{
-	return !nf_ct_is_confirmed(ct) || nf_ct_is_dying(ct);
-}
-
-static bool gc_worker_can_early_drop(const struct nf_conn *ct)
-{
-	const struct nf_conntrack_l4proto *l4proto;
-
-	if (!test_bit(IPS_ASSURED_BIT, &ct->status))
-		return true;
-
-	l4proto = nf_ct_l4proto_find(nf_ct_protonum(ct));
-	if (l4proto->can_early_drop && l4proto->can_early_drop(ct))
-		return true;
-
-	return false;
-}
-
-static void gc_worker(struct work_struct *work)
-{
-	unsigned long end_time = jiffies + GC_SCAN_MAX_DURATION;
-	unsigned int i, hashsz, nf_conntrack_max95 = 0;
-	unsigned long next_run = GC_SCAN_INTERVAL;
-	struct conntrack_gc_work *gc_work;
-	gc_work = container_of(work, struct conntrack_gc_work, dwork.work);
-
-	i = gc_work->next_bucket;
-	if (gc_work->early_drop)
-		nf_conntrack_max95 = nf_conntrack_max / 100u * 95u;
-
-	do {
-		struct nf_conntrack_tuple_hash *h;
-		struct hlist_nulls_head *ct_hash;
-		struct hlist_nulls_node *n;
-		struct nf_conn *tmp;
-
-		rcu_read_lock();
-
-		nf_conntrack_get_ht(&ct_hash, &hashsz);
-		if (i >= hashsz) {
-			rcu_read_unlock();
-			break;
-		}
-
-		hlist_nulls_for_each_entry_rcu(h, n, &ct_hash[i], hnnode) {
-			struct net *net;
-
-			tmp = nf_ct_tuplehash_to_ctrack(h);
-
-			if (test_bit(IPS_OFFLOAD_BIT, &tmp->status)) {
-				nf_ct_offload_timeout(tmp);
-				continue;
-			}
-
-			if (nf_ct_is_expired(tmp)) {
-				nf_ct_gc_expired(tmp);
-				continue;
-			}
-
-			if (nf_conntrack_max95 == 0 || gc_worker_skip_ct(tmp))
-				continue;
-
-			net = nf_ct_net(tmp);
-			if (atomic_read(&net->ct.count) < nf_conntrack_max95)
-				continue;
-
-			/* need to take reference to avoid possible races */
-			if (!atomic_inc_not_zero(&tmp->ct_general.use))
-				continue;
-
-			if (gc_worker_skip_ct(tmp)) {
-				nf_ct_put(tmp);
-				continue;
-			}
-
-			if (gc_worker_can_early_drop(tmp))
-				nf_ct_kill(tmp);
-
-			nf_ct_put(tmp);
-		}
-
-		/* could check get_nulls_value() here and restart if ct
-		 * was moved to another chain.  But given gc is best-effort
-		 * we will just continue with next hash slot.
-		 */
-		rcu_read_unlock();
-		cond_resched();
-		i++;
-
-		if (time_after(jiffies, end_time) && i < hashsz) {
-			gc_work->next_bucket = i;
-			next_run = 0;
-			break;
-		}
-	} while (i < hashsz);
-
-	if (gc_work->exiting)
-		return;
-
-	/*
-	 * Eviction will normally happen from the packet path, and not
-	 * from this gc worker.
-	 *
-	 * This worker is only here to reap expired entries when system went
-	 * idle after a busy period.
-	 */
-	if (next_run) {
-		gc_work->early_drop = false;
-		gc_work->next_bucket = 0;
-	}
-	queue_delayed_work(system_power_efficient_wq, &gc_work->dwork, next_run);
-}
-
-static void conntrack_gc_work_init(struct conntrack_gc_work *gc_work)
-{
-	INIT_DEFERRABLE_WORK(&gc_work->dwork, gc_worker);
-	gc_work->exiting = false;
-}
-
-static struct nf_conn *
-__nf_conntrack_alloc(struct net *net,
-		     const struct nf_conntrack_zone *zone,
-		     const struct nf_conntrack_tuple *orig,
-		     const struct nf_conntrack_tuple *repl,
-		     gfp_t gfp, u32 hash)
-{
-	struct nf_conn *ct;
-
-	/* We don't want any race condition at early drop stage */
-	atomic_inc(&net->ct.count);
-
-	if (nf_conntrack_max &&
-	    unlikely(atomic_read(&net->ct.count) > nf_conntrack_max)) {
-		if (!early_drop(net, hash)) {
-			if (!conntrack_gc_work.early_drop)
-				conntrack_gc_work.early_drop = true;
-			atomic_dec(&net->ct.count);
-			net_warn_ratelimited("nf_conntrack: table full, dropping packet\n");
-			return ERR_PTR(-ENOMEM);
-		}
-	}
-
-	/*
-	 * Do not use kmem_cache_zalloc(), as this cache uses
-	 * SLAB_TYPESAFE_BY_RCU.
-	 */
-	ct = kmem_cache_alloc(nf_conntrack_cachep, gfp);
-	if (ct == NULL)
-		goto out;
-
-	spin_lock_init(&ct->lock);
-	ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple = *orig;
-	ct->tuplehash[IP_CT_DIR_ORIGINAL].hnnode.pprev = NULL;
-	ct->tuplehash[IP_CT_DIR_REPLY].tuple = *repl;
-	/* save hash for reusing when confirming */
-	*(unsigned long *)(&ct->tuplehash[IP_CT_DIR_REPLY].hnnode.pprev) = hash;
-	ct->status = 0;
-	WRITE_ONCE(ct->timeout, 0);
-	write_pnet(&ct->ct_net, net);
-	memset(&ct->__nfct_init_offset, 0,
-	       offsetof(struct nf_conn, proto) -
-	       offsetof(struct nf_conn, __nfct_init_offset));
-
-	nf_ct_zone_add(ct, zone);
-
-	/* Because we use RCU lookups, we set ct_general.use to zero before
-	 * this is inserted in any list.
-	 */
-	atomic_set(&ct->ct_general.use, 0);
-	return ct;
-out:
-	atomic_dec(&net->ct.count);
-	return ERR_PTR(-ENOMEM);
-}
-
-struct nf_conn *nf_conntrack_alloc(struct net *net,
-				   const struct nf_conntrack_zone *zone,
-				   const struct nf_conntrack_tuple *orig,
-				   const struct nf_conntrack_tuple *repl,
-				   gfp_t gfp)
-{
-	return __nf_conntrack_alloc(net, zone, orig, repl, gfp, 0);
-}
-EXPORT_SYMBOL_GPL(nf_conntrack_alloc);
-
-void nf_conntrack_free(struct nf_conn *ct)
-{
-	struct net *net = nf_ct_net(ct);
-
-	/* A freed object has refcnt == 0, that's
-	 * the golden rule for SLAB_TYPESAFE_BY_RCU
-	 */
-	WARN_ON(atomic_read(&ct->ct_general.use) != 0);
-
-	nf_ct_ext_destroy(ct);
-	kmem_cache_free(nf_conntrack_cachep, ct);
-	smp_mb__before_atomic();
-	atomic_dec(&net->ct.count);
-}
-EXPORT_SYMBOL_GPL(nf_conntrack_free);
-
-
-/* Allocate a new conntrack: we return -ENOMEM if classification
-   failed due to stress.  Otherwise it really is unclassifiable. */
-static noinline struct nf_conntrack_tuple_hash *
-init_conntrack(struct net *net, struct nf_conn *tmpl,
-	       const struct nf_conntrack_tuple *tuple,
-	       struct sk_buff *skb,
-	       unsigned int dataoff, u32 hash)
-{
-	struct nf_conn *ct;
-	struct nf_conn_help *help;
-	struct nf_conntrack_tuple repl_tuple;
-	struct nf_conntrack_ecache *ecache;
-	struct nf_conntrack_expect *exp = NULL;
-	const struct nf_conntrack_zone *zone;
-	struct nf_conn_timeout *timeout_ext;
-	struct nf_conntrack_zone tmp;
-	int dir = 0;
-
-	if (!nf_ct_invert_tuple(&repl_tuple, tuple)) {
-		pr_debug("Can't invert tuple.\n");
-		return NULL;
-	}
-
-	zone = nf_ct_zone_tmpl(tmpl, skb, &tmp);
-	ct = __nf_conntrack_alloc(net, zone, tuple, &repl_tuple, GFP_ATOMIC,
-				  hash);
-	if (IS_ERR(ct))
-		return (struct nf_conntrack_tuple_hash *)ct;
-		
-#ifdef CONFIG_FASTNAT_MODULE
-    RCU_INIT_POINTER(ct->fast_ct.fast_dst[IP_CT_DIR_ORIGINAL], NULL);
-    RCU_INIT_POINTER(ct->fast_ct.fast_dst[IP_CT_DIR_REPLY], NULL);
-    ct->fast_ct.fast_brport[IP_CT_DIR_ORIGINAL] = NULL;
-    ct->fast_ct.fast_brport[IP_CT_DIR_REPLY]    = NULL;
-    ct->fast_ct.isFast = 0; //CT_FAST_NOT
-    RCU_INIT_POINTER(ct->fast_ct.sk, NULL);
-#endif
-	ct->packet_info[IP_CT_DIR_ORIGINAL].packets = 0;
-    ct->packet_info[IP_CT_DIR_ORIGINAL].bytes   = 0;
-    ct->packet_info[IP_CT_DIR_REPLY].packets    = 0;
-    ct->packet_info[IP_CT_DIR_REPLY].bytes      = 0;
-	for(dir = IP_CT_DIR_ORIGINAL; dir < IP_CT_DIR_MAX; dir++)
-	{
-		ct->indev[dir] = NULL;
-		ct->outdev[dir] = NULL;
-	}
-	if (!nf_ct_add_synproxy(ct, tmpl)) {
-		nf_conntrack_free(ct);
-		return ERR_PTR(-ENOMEM);
-	}
-
-	timeout_ext = tmpl ? nf_ct_timeout_find(tmpl) : NULL;
-
-	if (timeout_ext)
-		nf_ct_timeout_ext_add(ct, rcu_dereference(timeout_ext->timeout),
-				      GFP_ATOMIC);
-
-	nf_ct_acct_ext_add(ct, GFP_ATOMIC);
-	nf_ct_tstamp_ext_add(ct, GFP_ATOMIC);
-	nf_ct_labels_ext_add(ct);
-
-	ecache = tmpl ? nf_ct_ecache_find(tmpl) : NULL;
-	nf_ct_ecache_ext_add(ct, ecache ? ecache->ctmask : 0,
-				 ecache ? ecache->expmask : 0,
-			     GFP_ATOMIC);
-
-	local_bh_disable();
-	if (net->ct.expect_count) {
-		spin_lock(&nf_conntrack_expect_lock);
-		exp = nf_ct_find_expectation(net, zone, tuple);
-		if (exp) {
-			pr_debug("expectation arrives ct=%p exp=%p\n",
-				 ct, exp);
-			/* Welcome, Mr. Bond.  We've been expecting you... */
-			__set_bit(IPS_EXPECTED_BIT, &ct->status);
-			/* exp->master safe, refcnt bumped in nf_ct_find_expectation */
-			ct->master = exp->master;
-			if (exp->helper) {
-				help = nf_ct_helper_ext_add(ct, GFP_ATOMIC);
-				if (help)
-					rcu_assign_pointer(help->helper, exp->helper);
-			}
-
-#ifdef CONFIG_NF_CONNTRACK_MARK
-			ct->mark = exp->master->mark;
-#endif
-#ifdef CONFIG_NF_CONNTRACK_SECMARK
-			ct->secmark = exp->master->secmark;
-#endif
-			NF_CT_STAT_INC(net, expect_new);
-		}
-		spin_unlock(&nf_conntrack_expect_lock);
-	}
-	if (!exp)
-		__nf_ct_try_assign_helper(ct, tmpl, GFP_ATOMIC);
-
-	/* Now it is inserted into the unconfirmed list, bump refcount */
-	nf_conntrack_get(&ct->ct_general);
-	nf_ct_add_to_unconfirmed_list(ct);
-
-	local_bh_enable();
-
-	if (exp) {
-		if (exp->expectfn)
-			exp->expectfn(ct, exp);
-		nf_ct_expect_put(exp);
-	}
-
-	return &ct->tuplehash[IP_CT_DIR_ORIGINAL];
-}
-
-/* On success, returns 0, sets skb->_nfct | ctinfo */
-static int
-resolve_normal_ct(struct nf_conn *tmpl,
-		  struct sk_buff *skb,
-		  unsigned int dataoff,
-		  u_int8_t protonum,
-		  const struct nf_hook_state *state)
-{
-	const struct nf_conntrack_zone *zone;
-	struct nf_conntrack_tuple tuple;
-	struct nf_conntrack_tuple_hash *h;
-	enum ip_conntrack_info ctinfo;
-	struct nf_conntrack_zone tmp;
-	struct nf_conn *ct;
-	u32 hash;
-
-	if (!nf_ct_get_tuple(skb, skb_network_offset(skb),
-			     dataoff, state->pf, protonum, state->net,
-			     &tuple)) {
-		pr_debug("Can't get tuple\n");
-		return 0;
-	}
-
-	/* look for tuple match */
-	zone = nf_ct_zone_tmpl(tmpl, skb, &tmp);
-	hash = hash_conntrack_raw(&tuple, state->net);
-	h = __nf_conntrack_find_get(state->net, zone, &tuple, hash);
-	if (!h) {
-		h = init_conntrack(state->net, tmpl, &tuple,
-				   skb, dataoff, hash);
-		if (!h)
-			return 0;
-		if (IS_ERR(h))
-			return PTR_ERR(h);
-	}
-	ct = nf_ct_tuplehash_to_ctrack(h);
-
-	/* It exists; we have (non-exclusive) reference. */
-	if (NF_CT_DIRECTION(h) == IP_CT_DIR_REPLY) {
-		ctinfo = IP_CT_ESTABLISHED_REPLY;
-	} else {
-		/* Once we've had two way comms, always ESTABLISHED. */
-		if (test_bit(IPS_SEEN_REPLY_BIT, &ct->status)) {
-			pr_debug("normal packet for %p\n", ct);
-			ctinfo = IP_CT_ESTABLISHED;
-		} else if (test_bit(IPS_EXPECTED_BIT, &ct->status)) {
-			pr_debug("related packet for %p\n", ct);
-			ctinfo = IP_CT_RELATED;
-		} else {
-			pr_debug("new packet for %p\n", ct);
-			ctinfo = IP_CT_NEW;
-		}
-	}
-	nf_ct_set(skb, ct, ctinfo);
-	return 0;
-}
-
-/*
- * icmp packets need special treatment to handle error messages that are
- * related to a connection.
- *
- * Callers need to check if skb has a conntrack assigned when this
- * helper returns; in such case skb belongs to an already known connection.
- */
-static unsigned int __cold
-nf_conntrack_handle_icmp(struct nf_conn *tmpl,
-			 struct sk_buff *skb,
-			 unsigned int dataoff,
-			 u8 protonum,
-			 const struct nf_hook_state *state)
-{
-	int ret;
-
-	if (state->pf == NFPROTO_IPV4 && protonum == IPPROTO_ICMP)
-		ret = nf_conntrack_icmpv4_error(tmpl, skb, dataoff, state);
-#if IS_ENABLED(CONFIG_IPV6)
-	else if (state->pf == NFPROTO_IPV6 && protonum == IPPROTO_ICMPV6)
-		ret = nf_conntrack_icmpv6_error(tmpl, skb, dataoff, state);
-#endif
-	else
-		return NF_ACCEPT;
-
-	if (ret <= 0)
-		NF_CT_STAT_INC_ATOMIC(state->net, error);
-
-	return ret;
-}
-
-static int generic_packet(struct nf_conn *ct, struct sk_buff *skb,
-			  enum ip_conntrack_info ctinfo)
-{
-	const unsigned int *timeout = nf_ct_timeout_lookup(ct);
-
-	if (!timeout)
-		timeout = &nf_generic_pernet(nf_ct_net(ct))->timeout;
-
-	nf_ct_refresh_acct(ct, ctinfo, skb, *timeout);
-	return NF_ACCEPT;
-}
-
-/* Returns verdict for packet, or -1 for invalid. */
-static int nf_conntrack_handle_packet(struct nf_conn *ct,
-				      struct sk_buff *skb,
-				      unsigned int dataoff,
-				      enum ip_conntrack_info ctinfo,
-				      const struct nf_hook_state *state)
-{
-	switch (nf_ct_protonum(ct)) {
-	case IPPROTO_TCP:
-		return nf_conntrack_tcp_packet(ct, skb, dataoff,
-					       ctinfo, state);
-	case IPPROTO_UDP:
-		return nf_conntrack_udp_packet(ct, skb, dataoff,
-					       ctinfo, state);
-	case IPPROTO_ICMP:
-		return nf_conntrack_icmp_packet(ct, skb, ctinfo, state);
-#if IS_ENABLED(CONFIG_IPV6)
-	case IPPROTO_ICMPV6:
-		return nf_conntrack_icmpv6_packet(ct, skb, ctinfo, state);
-#endif
-#ifdef CONFIG_NF_CT_PROTO_UDPLITE
-	case IPPROTO_UDPLITE:
-		return nf_conntrack_udplite_packet(ct, skb, dataoff,
-						   ctinfo, state);
-#endif
-#ifdef CONFIG_NF_CT_PROTO_SCTP
-	case IPPROTO_SCTP:
-		return nf_conntrack_sctp_packet(ct, skb, dataoff,
-						ctinfo, state);
-#endif
-#ifdef CONFIG_NF_CT_PROTO_DCCP
-	case IPPROTO_DCCP:
-		return nf_conntrack_dccp_packet(ct, skb, dataoff,
-						ctinfo, state);
-#endif
-#ifdef CONFIG_NF_CT_PROTO_GRE
-	case IPPROTO_GRE:
-		return nf_conntrack_gre_packet(ct, skb, dataoff,
-					       ctinfo, state);
-#endif
-	}
-
-	return generic_packet(ct, skb, ctinfo);
-}
-
-#ifdef CONFIG_FASTNAT_MODULE
-int nf_conntrack_handle_packet_fast(struct nf_conn *ct,
-				      struct sk_buff *skb,
-				      unsigned int dataoff,
-				      enum ip_conntrack_info ctinfo,
-				      const struct nf_hook_state *state)
-{
-	return nf_conntrack_handle_packet(ct, skb, dataoff, ctinfo, state);
-}
-
-void nf_conntrack_put(struct nf_conntrack *nfct)
-{ 
-    if (nfct && atomic_dec_and_test(&nfct->use)){
-        fast_conn_release((struct nf_conn *)nfct, RELEASE_ALL_DST | RELEASE_ALL_SK);
-        nf_conntrack_destroy(nfct);
-    }
-}
-EXPORT_SYMBOL_GPL(nf_conntrack_put);
-#endif
-
-
-
-unsigned int
-nf_conntrack_in(struct sk_buff *skb, const struct nf_hook_state *state)
-{
-	enum ip_conntrack_info ctinfo;
-	struct nf_conn *ct, *tmpl;
-	u_int8_t protonum;
-	int dataoff, ret;
-
-	tmpl = nf_ct_get(skb, &ctinfo);
-	if (tmpl || ctinfo == IP_CT_UNTRACKED) {
-		/* Previously seen (loopback or untracked)?  Ignore. */
-		if ((tmpl && !nf_ct_is_template(tmpl)) ||
-		     ctinfo == IP_CT_UNTRACKED)
-			return NF_ACCEPT;
-		skb->_nfct = 0;
-	}
-
-	/* rcu_read_lock()ed by nf_hook_thresh */
-	dataoff = get_l4proto(skb, skb_network_offset(skb), state->pf, &protonum);
-	if (dataoff <= 0) {
-		pr_debug("not prepared to track yet or error occurred\n");
-		NF_CT_STAT_INC_ATOMIC(state->net, invalid);
-		ret = NF_ACCEPT;
-		goto out;
-	}
-
-	if (protonum == IPPROTO_ICMP || protonum == IPPROTO_ICMPV6) {
-		ret = nf_conntrack_handle_icmp(tmpl, skb, dataoff,
-					       protonum, state);
-		if (ret <= 0) {
-			ret = -ret;
-			goto out;
-		}
-		/* ICMP[v6] protocol trackers may assign one conntrack. */
-		if (skb->_nfct)
-			goto out;
-	}
-repeat:
-	ret = resolve_normal_ct(tmpl, skb, dataoff,
-				protonum, state);
-	if (ret < 0) {
-		/* Too stressed to deal. */
-		NF_CT_STAT_INC_ATOMIC(state->net, drop);
-		ret = NF_DROP;
-		goto out;
-	}
-
-	ct = nf_ct_get(skb, &ctinfo);
-	if (!ct) {
-		/* Not valid part of a connection */
-		NF_CT_STAT_INC_ATOMIC(state->net, invalid);
-		ret = NF_ACCEPT;
-		goto out;
-	}
-
-	ret = nf_conntrack_handle_packet(ct, skb, dataoff, ctinfo, state);
-	if (ret <= 0) {
-		/* Invalid: inverse of the return code tells
-		 * the netfilter core what to do */
-		pr_debug("nf_conntrack_in: Can't track with proto module\n");
-		nf_conntrack_put(&ct->ct_general);
-		skb->_nfct = 0;
-		/* Special case: TCP tracker reports an attempt to reopen a
-		 * closed/aborted connection. We have to go back and create a
-		 * fresh conntrack.
-		 */
-		if (ret == -NF_REPEAT)
-			goto repeat;
-
-		NF_CT_STAT_INC_ATOMIC(state->net, invalid);
-		if (ret == -NF_DROP)
-			NF_CT_STAT_INC_ATOMIC(state->net, drop);
-
-		ret = -ret;
-		goto out;
-	}
-
-	if (ctinfo == IP_CT_ESTABLISHED_REPLY &&
-	    !test_and_set_bit(IPS_SEEN_REPLY_BIT, &ct->status))
-		nf_conntrack_event_cache(IPCT_REPLY, ct);
-out:
-	if (tmpl)
-		nf_ct_put(tmpl);
-
-	return ret;
-}
-EXPORT_SYMBOL_GPL(nf_conntrack_in);
-
-/* Alter reply tuple (maybe alter helper).  This is for NAT, and is
-   implicitly racy: see __nf_conntrack_confirm */
-void nf_conntrack_alter_reply(struct nf_conn *ct,
-			      const struct nf_conntrack_tuple *newreply)
-{
-	struct nf_conn_help *help = nfct_help(ct);
-
-	/* Should be unconfirmed, so not in hash table yet */
-	WARN_ON(nf_ct_is_confirmed(ct));
-
-	pr_debug("Altering reply tuple of %p to ", ct);
-	nf_ct_dump_tuple(newreply);
-
-	ct->tuplehash[IP_CT_DIR_REPLY].tuple = *newreply;
-	if (ct->master || (help && !hlist_empty(&help->expectations)))
-		return;
-
-	rcu_read_lock();
-	__nf_ct_try_assign_helper(ct, NULL, GFP_ATOMIC);
-	rcu_read_unlock();
-}
-EXPORT_SYMBOL_GPL(nf_conntrack_alter_reply);
-
-/* Refresh conntrack for this many jiffies and do accounting if do_acct is 1 */
-void __nf_ct_refresh_acct(struct nf_conn *ct,
-			  enum ip_conntrack_info ctinfo,
-			  const struct sk_buff *skb,
-			  u32 extra_jiffies,
-			  bool do_acct)
-{
-	/* Only update if this is not a fixed timeout */
-	if (test_bit(IPS_FIXED_TIMEOUT_BIT, &ct->status))
-		goto acct;
-
-	/* If not in hash table, timer will not be active yet */
-	if (nf_ct_is_confirmed(ct))
-		extra_jiffies += nfct_time_stamp;
-
-	if (READ_ONCE(ct->timeout) != extra_jiffies)
-		WRITE_ONCE(ct->timeout, extra_jiffies);
-acct:
-	if (do_acct)
-		nf_ct_acct_update(ct, CTINFO2DIR(ctinfo), skb->len);
-}
-EXPORT_SYMBOL_GPL(__nf_ct_refresh_acct);
-
-bool nf_ct_kill_acct(struct nf_conn *ct,
-		     enum ip_conntrack_info ctinfo,
-		     const struct sk_buff *skb)
-{
-	nf_ct_acct_update(ct, CTINFO2DIR(ctinfo), skb->len);
-
-	return nf_ct_delete(ct, 0, 0);
-}
-EXPORT_SYMBOL_GPL(nf_ct_kill_acct);
-
-#if IS_ENABLED(CONFIG_NF_CT_NETLINK)
-
-#include <linux/netfilter/nfnetlink.h>
-#include <linux/netfilter/nfnetlink_conntrack.h>
-#include <linux/mutex.h>
-
-/* Generic function for tcp/udp/sctp/dccp and alike. */
-int nf_ct_port_tuple_to_nlattr(struct sk_buff *skb,
-			       const struct nf_conntrack_tuple *tuple)
-{
-	if (nla_put_be16(skb, CTA_PROTO_SRC_PORT, tuple->src.u.tcp.port) ||
-	    nla_put_be16(skb, CTA_PROTO_DST_PORT, tuple->dst.u.tcp.port))
-		goto nla_put_failure;
-	return 0;
-
-nla_put_failure:
-	return -1;
-}
-EXPORT_SYMBOL_GPL(nf_ct_port_tuple_to_nlattr);
-
-const struct nla_policy nf_ct_port_nla_policy[CTA_PROTO_MAX+1] = {
-	[CTA_PROTO_SRC_PORT]  = { .type = NLA_U16 },
-	[CTA_PROTO_DST_PORT]  = { .type = NLA_U16 },
-};
-EXPORT_SYMBOL_GPL(nf_ct_port_nla_policy);
-
-int nf_ct_port_nlattr_to_tuple(struct nlattr *tb[],
-			       struct nf_conntrack_tuple *t,
-			       u_int32_t flags)
-{
-	if (flags & CTA_FILTER_FLAG(CTA_PROTO_SRC_PORT)) {
-		if (!tb[CTA_PROTO_SRC_PORT])
-			return -EINVAL;
-
-		t->src.u.tcp.port = nla_get_be16(tb[CTA_PROTO_SRC_PORT]);
-	}
-
-	if (flags & CTA_FILTER_FLAG(CTA_PROTO_DST_PORT)) {
-		if (!tb[CTA_PROTO_DST_PORT])
-			return -EINVAL;
-
-		t->dst.u.tcp.port = nla_get_be16(tb[CTA_PROTO_DST_PORT]);
-	}
-
-	return 0;
-}
-EXPORT_SYMBOL_GPL(nf_ct_port_nlattr_to_tuple);
-
-unsigned int nf_ct_port_nlattr_tuple_size(void)
-{
-	static unsigned int size __read_mostly;
-
-	if (!size)
-		size = nla_policy_len(nf_ct_port_nla_policy, CTA_PROTO_MAX + 1);
-
-	return size;
-}
-EXPORT_SYMBOL_GPL(nf_ct_port_nlattr_tuple_size);
-#endif
-
-/* Used by ipt_REJECT and ip6t_REJECT. */
-static void nf_conntrack_attach(struct sk_buff *nskb, const struct sk_buff *skb)
-{
-	struct nf_conn *ct;
-	enum ip_conntrack_info ctinfo;
-
-	/* This ICMP is in reverse direction to the packet which caused it */
-	ct = nf_ct_get(skb, &ctinfo);
-	if (CTINFO2DIR(ctinfo) == IP_CT_DIR_ORIGINAL)
-		ctinfo = IP_CT_RELATED_REPLY;
-	else
-		ctinfo = IP_CT_RELATED;
-
-	/* Attach to new skbuff, and increment count */
-	nf_ct_set(nskb, ct, ctinfo);
-	nf_conntrack_get(skb_nfct(nskb));
-}
-
-static int __nf_conntrack_update(struct net *net, struct sk_buff *skb,
-				 struct nf_conn *ct,
-				 enum ip_conntrack_info ctinfo)
-{
-	struct nf_conntrack_tuple_hash *h;
-	struct nf_conntrack_tuple tuple;
-	struct nf_nat_hook *nat_hook;
-	unsigned int status;
-	int dataoff;
-	u16 l3num;
-	u8 l4num;
-
-	l3num = nf_ct_l3num(ct);
-
-	dataoff = get_l4proto(skb, skb_network_offset(skb), l3num, &l4num);
-	if (dataoff <= 0)
-		return -1;
-
-	if (!nf_ct_get_tuple(skb, skb_network_offset(skb), dataoff, l3num,
-			     l4num, net, &tuple))
-		return -1;
-
-	if (ct->status & IPS_SRC_NAT) {
-		memcpy(tuple.src.u3.all,
-		       ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.src.u3.all,
-		       sizeof(tuple.src.u3.all));
-		tuple.src.u.all =
-			ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.src.u.all;
-	}
-
-	if (ct->status & IPS_DST_NAT) {
-		memcpy(tuple.dst.u3.all,
-		       ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.dst.u3.all,
-		       sizeof(tuple.dst.u3.all));
-		tuple.dst.u.all =
-			ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.dst.u.all;
-	}
-
-	h = nf_conntrack_find_get(net, nf_ct_zone(ct), &tuple);
-	if (!h)
-		return 0;
-
-	/* Store status bits of the conntrack that is clashing to re-do NAT
-	 * mangling according to what it has been done already to this packet.
-	 */
-	status = ct->status;
-
-	nf_ct_put(ct);
-	ct = nf_ct_tuplehash_to_ctrack(h);
-	nf_ct_set(skb, ct, ctinfo);
-
-	nat_hook = rcu_dereference(nf_nat_hook);
-	if (!nat_hook)
-		return 0;
-
-	if (status & IPS_SRC_NAT &&
-	    nat_hook->manip_pkt(skb, ct, NF_NAT_MANIP_SRC,
-				IP_CT_DIR_ORIGINAL) == NF_DROP)
-		return -1;
-
-	if (status & IPS_DST_NAT &&
-	    nat_hook->manip_pkt(skb, ct, NF_NAT_MANIP_DST,
-				IP_CT_DIR_ORIGINAL) == NF_DROP)
-		return -1;
-
-	return 0;
-}
-
-/* This packet is coming from userspace via nf_queue, complete the packet
- * processing after the helper invocation in nf_confirm().
- */
-static int nf_confirm_cthelper(struct sk_buff *skb, struct nf_conn *ct,
-			       enum ip_conntrack_info ctinfo)
-{
-	const struct nf_conntrack_helper *helper;
-	const struct nf_conn_help *help;
-	int protoff;
-
-	help = nfct_help(ct);
-	if (!help)
-		return 0;
-
-	helper = rcu_dereference(help->helper);
-	if (!(helper->flags & NF_CT_HELPER_F_USERSPACE))
-		return 0;
-
-	switch (nf_ct_l3num(ct)) {
-	case NFPROTO_IPV4:
-		protoff = skb_network_offset(skb) + ip_hdrlen(skb);
-		break;
-#if IS_ENABLED(CONFIG_IPV6)
-	case NFPROTO_IPV6: {
-		__be16 frag_off;
-		u8 pnum;
-
-		pnum = ipv6_hdr(skb)->nexthdr;
-		protoff = ipv6_skip_exthdr(skb, sizeof(struct ipv6hdr), &pnum,
-					   &frag_off);
-		if (protoff < 0 || (frag_off & htons(~0x7)) != 0)
-			return 0;
-		break;
-	}
-#endif
-	default:
-		return 0;
-	}
-
-	if (test_bit(IPS_SEQ_ADJUST_BIT, &ct->status) &&
-	    !nf_is_loopback_packet(skb)) {
-		if (!nf_ct_seq_adjust(skb, ct, ctinfo, protoff)) {
-			NF_CT_STAT_INC_ATOMIC(nf_ct_net(ct), drop);
-			return -1;
-		}
-	}
-
-	/* We've seen it coming out the other side: confirm it */
-	return nf_conntrack_confirm(skb) == NF_DROP ? - 1 : 0;
-}
-
-static int nf_conntrack_update(struct net *net, struct sk_buff *skb)
-{
-	enum ip_conntrack_info ctinfo;
-	struct nf_conn *ct;
-	int err;
-
-	ct = nf_ct_get(skb, &ctinfo);
-	if (!ct)
-		return 0;
-
-	if (!nf_ct_is_confirmed(ct)) {
-		err = __nf_conntrack_update(net, skb, ct, ctinfo);
-		if (err < 0)
-			return err;
-
-		ct = nf_ct_get(skb, &ctinfo);
-	}
-
-	return nf_confirm_cthelper(skb, ct, ctinfo);
-}
-
-static bool nf_conntrack_get_tuple_skb(struct nf_conntrack_tuple *dst_tuple,
-				       const struct sk_buff *skb)
-{
-	const struct nf_conntrack_tuple *src_tuple;
-	const struct nf_conntrack_tuple_hash *hash;
-	struct nf_conntrack_tuple srctuple;
-	enum ip_conntrack_info ctinfo;
-	struct nf_conn *ct;
-
-	ct = nf_ct_get(skb, &ctinfo);
-	if (ct) {
-		src_tuple = nf_ct_tuple(ct, CTINFO2DIR(ctinfo));
-		memcpy(dst_tuple, src_tuple, sizeof(*dst_tuple));
-		return true;
-	}
-
-	if (!nf_ct_get_tuplepr(skb, skb_network_offset(skb),
-			       NFPROTO_IPV4, dev_net(skb->dev),
-			       &srctuple))
-		return false;
-
-	hash = nf_conntrack_find_get(dev_net(skb->dev),
-				     &nf_ct_zone_dflt,
-				     &srctuple);
-	if (!hash)
-		return false;
-
-	ct = nf_ct_tuplehash_to_ctrack(hash);
-	src_tuple = nf_ct_tuple(ct, !hash->tuple.dst.dir);
-	memcpy(dst_tuple, src_tuple, sizeof(*dst_tuple));
-	nf_ct_put(ct);
-
-	return true;
-}
-
-/* Bring out ya dead! */
-static struct nf_conn *
-get_next_corpse(int (*iter)(struct nf_conn *i, void *data),
-		void *data, unsigned int *bucket)
-{
-	struct nf_conntrack_tuple_hash *h;
-	struct nf_conn *ct;
-	struct hlist_nulls_node *n;
-	spinlock_t *lockp;
-
-	for (; *bucket < nf_conntrack_htable_size; (*bucket)++) {
-		struct hlist_nulls_head *hslot = &nf_conntrack_hash[*bucket];
-
-		if (hlist_nulls_empty(hslot))
-			continue;
-
-		lockp = &nf_conntrack_locks[*bucket % CONNTRACK_LOCKS];
-		local_bh_disable();
-		nf_conntrack_lock(lockp);
-		hlist_nulls_for_each_entry(h, n, hslot, hnnode) {
-			if (NF_CT_DIRECTION(h) != IP_CT_DIR_REPLY)
-				continue;
-			/* All nf_conn objects are added to hash table twice, one
-			 * for original direction tuple, once for the reply tuple.
-			 *
-			 * Exception: In the IPS_NAT_CLASH case, only the reply
-			 * tuple is added (the original tuple already existed for
-			 * a different object).
-			 *
-			 * We only need to call the iterator once for each
-			 * conntrack, so we just use the 'reply' direction
-			 * tuple while iterating.
-			 */
-			ct = nf_ct_tuplehash_to_ctrack(h);
-			if (iter(ct, data))
-				goto found;
-		}
-		spin_unlock(lockp);
-		local_bh_enable();
-		cond_resched();
-	}
-
-	return NULL;
-found:
-	atomic_inc(&ct->ct_general.use);
-	spin_unlock(lockp);
-	local_bh_enable();
-	return ct;
-}
-
-static void nf_ct_iterate_cleanup(int (*iter)(struct nf_conn *i, void *data),
-				  void *data, u32 portid, int report)
-{
-	unsigned int bucket = 0;
-	struct nf_conn *ct;
-
-	might_sleep();
-
-	mutex_lock(&nf_conntrack_mutex);
-	while ((ct = get_next_corpse(iter, data, &bucket)) != NULL) {
-		/* Time to push up daises... */
-
-		nf_ct_delete(ct, portid, report);
-		nf_ct_put(ct);
-		cond_resched();
-	}
-	mutex_unlock(&nf_conntrack_mutex);
-}
-
-struct iter_data {
-	int (*iter)(struct nf_conn *i, void *data);
-	void *data;
-	struct net *net;
-};
-
-static int iter_net_only(struct nf_conn *i, void *data)
-{
-	struct iter_data *d = data;
-
-	if (!net_eq(d->net, nf_ct_net(i)))
-		return 0;
-
-	return d->iter(i, d->data);
-}
-
-static void
-__nf_ct_unconfirmed_destroy(struct net *net)
-{
-	int cpu;
-
-	for_each_possible_cpu(cpu) {
-		struct nf_conntrack_tuple_hash *h;
-		struct hlist_nulls_node *n;
-		struct ct_pcpu *pcpu;
-
-		pcpu = per_cpu_ptr(net->ct.pcpu_lists, cpu);
-
-		spin_lock_bh(&pcpu->lock);
-		hlist_nulls_for_each_entry(h, n, &pcpu->unconfirmed, hnnode) {
-			struct nf_conn *ct;
-
-			ct = nf_ct_tuplehash_to_ctrack(h);
-
-			/* we cannot call iter() on unconfirmed list, the
-			 * owning cpu can reallocate ct->ext at any time.
-			 */
-			set_bit(IPS_DYING_BIT, &ct->status);
-		}
-		spin_unlock_bh(&pcpu->lock);
-		cond_resched();
-	}
-}
-
-void nf_ct_unconfirmed_destroy(struct net *net)
-{
-	might_sleep();
-
-	if (atomic_read(&net->ct.count) > 0) {
-		__nf_ct_unconfirmed_destroy(net);
-		nf_queue_nf_hook_drop(net);
-		synchronize_net();
-	}
-}
-EXPORT_SYMBOL_GPL(nf_ct_unconfirmed_destroy);
-
-void nf_ct_iterate_cleanup_net(struct net *net,
-			       int (*iter)(struct nf_conn *i, void *data),
-			       void *data, u32 portid, int report)
-{
-	struct iter_data d;
-
-	might_sleep();
-
-	if (atomic_read(&net->ct.count) == 0)
-		return;
-
-	d.iter = iter;
-	d.data = data;
-	d.net = net;
-
-	nf_ct_iterate_cleanup(iter_net_only, &d, portid, report);
-}
-EXPORT_SYMBOL_GPL(nf_ct_iterate_cleanup_net);
-
-/**
- * nf_ct_iterate_destroy - destroy unconfirmed conntracks and iterate table
- * @iter: callback to invoke for each conntrack
- * @data: data to pass to @iter
- *
- * Like nf_ct_iterate_cleanup, but first marks conntracks on the
- * unconfirmed list as dying (so they will not be inserted into
- * main table).
- *
- * Can only be called in module exit path.
- */
-void
-nf_ct_iterate_destroy(int (*iter)(struct nf_conn *i, void *data), void *data)
-{
-	struct net *net;
-
-	down_read(&net_rwsem);
-	for_each_net(net) {
-		if (atomic_read(&net->ct.count) == 0)
-			continue;
-		__nf_ct_unconfirmed_destroy(net);
-		nf_queue_nf_hook_drop(net);
-	}
-	up_read(&net_rwsem);
-
-	/* Need to wait for netns cleanup worker to finish, if its
-	 * running -- it might have deleted a net namespace from
-	 * the global list, so our __nf_ct_unconfirmed_destroy() might
-	 * not have affected all namespaces.
-	 */
-	net_ns_barrier();
-
-	/* a conntrack could have been unlinked from unconfirmed list
-	 * before we grabbed pcpu lock in __nf_ct_unconfirmed_destroy().
-	 * This makes sure its inserted into conntrack table.
-	 */
-	synchronize_net();
-
-	nf_ct_iterate_cleanup(iter, data, 0, 0);
-}
-EXPORT_SYMBOL_GPL(nf_ct_iterate_destroy);
-
-static int kill_all(struct nf_conn *i, void *data)
-{
-	return net_eq(nf_ct_net(i), data);
-}
-
-void nf_ct_free_hashtable(void *hash, unsigned int size)
-{
-	if (is_vmalloc_addr(hash))
-		vfree(hash);
-	else
-		free_pages((unsigned long)hash,
-			   get_order(sizeof(struct hlist_head) * size));
-}
-EXPORT_SYMBOL_GPL(nf_ct_free_hashtable);
-
-void nf_conntrack_cleanup_start(void)
-{
-	conntrack_gc_work.exiting = true;
-	RCU_INIT_POINTER(ip_ct_attach, NULL);
-}
-
-void nf_conntrack_cleanup_end(void)
-{
-	RCU_INIT_POINTER(nf_ct_hook, NULL);
-	cancel_delayed_work_sync(&conntrack_gc_work.dwork);
-	kvfree(nf_conntrack_hash);
-
-	nf_conntrack_proto_fini();
-	nf_conntrack_seqadj_fini();
-	nf_conntrack_labels_fini();
-	nf_conntrack_helper_fini();
-	nf_conntrack_timeout_fini();
-	nf_conntrack_ecache_fini();
-	nf_conntrack_tstamp_fini();
-	nf_conntrack_acct_fini();
-	nf_conntrack_expect_fini();
-
-	kmem_cache_destroy(nf_conntrack_cachep);
-}
-
-/*
- * Mishearing the voices in his head, our hero wonders how he's
- * supposed to kill the mall.
- */
-void nf_conntrack_cleanup_net(struct net *net)
-{
-	LIST_HEAD(single);
-
-	list_add(&net->exit_list, &single);
-	nf_conntrack_cleanup_net_list(&single);
-}
-
-void nf_conntrack_cleanup_net_list(struct list_head *net_exit_list)
-{
-	int busy;
-	struct net *net;
-
-	/*
-	 * This makes sure all current packets have passed through
-	 *  netfilter framework.  Roll on, two-stage module
-	 *  delete...
-	 */
-	synchronize_net();
-i_see_dead_people:
-	busy = 0;
-	list_for_each_entry(net, net_exit_list, exit_list) {
-		nf_ct_iterate_cleanup(kill_all, net, 0, 0);
-		if (atomic_read(&net->ct.count) != 0)
-			busy = 1;
-	}
-	if (busy) {
-		schedule();
-		goto i_see_dead_people;
-	}
-
-	list_for_each_entry(net, net_exit_list, exit_list) {
-		nf_conntrack_proto_pernet_fini(net);
-		nf_conntrack_ecache_pernet_fini(net);
-		nf_conntrack_expect_pernet_fini(net);
-		free_percpu(net->ct.stat);
-		free_percpu(net->ct.pcpu_lists);
-	}
-}
-
-void *nf_ct_alloc_hashtable(unsigned int *sizep, int nulls)
-{
-	struct hlist_nulls_head *hash;
-	unsigned int nr_slots, i;
-
-	if (*sizep > (UINT_MAX / sizeof(struct hlist_nulls_head)))
-		return NULL;
-
-	BUILD_BUG_ON(sizeof(struct hlist_nulls_head) != sizeof(struct hlist_head));
-	nr_slots = *sizep = roundup(*sizep, PAGE_SIZE / sizeof(struct hlist_nulls_head));
-
-	hash = kvcalloc(nr_slots, sizeof(struct hlist_nulls_head), GFP_KERNEL);
-
-	if (hash && nulls)
-		for (i = 0; i < nr_slots; i++)
-			INIT_HLIST_NULLS_HEAD(&hash[i], i);
-
-	return hash;
-}
-EXPORT_SYMBOL_GPL(nf_ct_alloc_hashtable);
-
-int nf_conntrack_hash_resize(unsigned int hashsize)
-{
-	int i, bucket;
-	unsigned int old_size;
-	struct hlist_nulls_head *hash, *old_hash;
-	struct nf_conntrack_tuple_hash *h;
-	struct nf_conn *ct;
-
-	if (!hashsize)
-		return -EINVAL;
-
-	hash = nf_ct_alloc_hashtable(&hashsize, 1);
-	if (!hash)
-		return -ENOMEM;
-
-	mutex_lock(&nf_conntrack_mutex);
-	old_size = nf_conntrack_htable_size;
-	if (old_size == hashsize) {
-		mutex_unlock(&nf_conntrack_mutex);
-		kvfree(hash);
-		return 0;
-	}
-
-	local_bh_disable();
-	nf_conntrack_all_lock();
-	write_seqcount_begin(&nf_conntrack_generation);
-
-	/* Lookups in the old hash might happen in parallel, which means we
-	 * might get false negatives during connection lookup. New connections
-	 * created because of a false negative won't make it into the hash
-	 * though since that required taking the locks.
-	 */
-
-	for (i = 0; i < nf_conntrack_htable_size; i++) {
-		while (!hlist_nulls_empty(&nf_conntrack_hash[i])) {
-			h = hlist_nulls_entry(nf_conntrack_hash[i].first,
-					      struct nf_conntrack_tuple_hash, hnnode);
-			ct = nf_ct_tuplehash_to_ctrack(h);
-			hlist_nulls_del_rcu(&h->hnnode);
-			bucket = __hash_conntrack(nf_ct_net(ct),
-						  &h->tuple, hashsize);
-			hlist_nulls_add_head_rcu(&h->hnnode, &hash[bucket]);
-		}
-	}
-	old_size = nf_conntrack_htable_size;
-	old_hash = nf_conntrack_hash;
-
-	nf_conntrack_hash = hash;
-	nf_conntrack_htable_size = hashsize;
-
-	write_seqcount_end(&nf_conntrack_generation);
-	nf_conntrack_all_unlock();
-	local_bh_enable();
-
-	mutex_unlock(&nf_conntrack_mutex);
-
-	synchronize_net();
-	kvfree(old_hash);
-	return 0;
-}
-
-int nf_conntrack_set_hashsize(const char *val, const struct kernel_param *kp)
-{
-	unsigned int hashsize;
-	int rc;
-
-	if (current->nsproxy->net_ns != &init_net)
-		return -EOPNOTSUPP;
-
-	/* On boot, we can set this without any fancy locking. */
-	if (!nf_conntrack_hash)
-		return param_set_uint(val, kp);
-
-	rc = kstrtouint(val, 0, &hashsize);
-	if (rc)
-		return rc;
-
-	return nf_conntrack_hash_resize(hashsize);
-}
-
-static __always_inline unsigned int total_extension_size(void)
-{
-	/* remember to add new extensions below */
-	BUILD_BUG_ON(NF_CT_EXT_NUM > 9);
-
-	return sizeof(struct nf_ct_ext) +
-	       sizeof(struct nf_conn_help)
-#if IS_ENABLED(CONFIG_NF_NAT)
-		+ sizeof(struct nf_conn_nat)
-#endif
-		+ sizeof(struct nf_conn_seqadj)
-		+ sizeof(struct nf_conn_acct)
-#ifdef CONFIG_NF_CONNTRACK_EVENTS
-		+ sizeof(struct nf_conntrack_ecache)
-#endif
-#ifdef CONFIG_NF_CONNTRACK_TIMESTAMP
-		+ sizeof(struct nf_conn_tstamp)
-#endif
-#ifdef CONFIG_NF_CONNTRACK_TIMEOUT
-		+ sizeof(struct nf_conn_timeout)
-#endif
-#ifdef CONFIG_NF_CONNTRACK_LABELS
-		+ sizeof(struct nf_conn_labels)
-#endif
-#if IS_ENABLED(CONFIG_NETFILTER_SYNPROXY)
-		+ sizeof(struct nf_conn_synproxy)
-#endif
-	;
-};
-
-int nf_conntrack_init_start(void)
-{
-	unsigned long nr_pages = totalram_pages();
-	int max_factor = 8;
-	int ret = -ENOMEM;
-	int i;
-
-	/* struct nf_ct_ext uses u8 to store offsets/size */
-	BUILD_BUG_ON(total_extension_size() > 255u);
-
-	seqcount_spinlock_init(&nf_conntrack_generation,
-			       &nf_conntrack_locks_all_lock);
-
-	for (i = 0; i < CONNTRACK_LOCKS; i++)
-		spin_lock_init(&nf_conntrack_locks[i]);
-
-	if (!nf_conntrack_htable_size) {
-		/* Idea from tcp.c: use 1/16384 of memory.
-		 * On i386: 32MB machine has 512 buckets.
-		 * >= 1GB machines have 16384 buckets.
-		 * >= 4GB machines have 65536 buckets.
-		 */
-		nf_conntrack_htable_size
-			= (((nr_pages << PAGE_SHIFT) / 16384)
-			   / sizeof(struct hlist_head));
-		if (nr_pages > (4 * (1024 * 1024 * 1024 / PAGE_SIZE)))
-			nf_conntrack_htable_size = 65536;
-		else if (nr_pages > (1024 * 1024 * 1024 / PAGE_SIZE))
-			nf_conntrack_htable_size = 16384;
-		if (nf_conntrack_htable_size < 32)
-			nf_conntrack_htable_size = 32;
-
-		/* Use a max. factor of four by default to get the same max as
-		 * with the old struct list_heads. When a table size is given
-		 * we use the old value of 8 to avoid reducing the max.
-		 * entries. */
-		max_factor = 4;
-	}
-
-	nf_conntrack_hash = nf_ct_alloc_hashtable(&nf_conntrack_htable_size, 1);
-	if (!nf_conntrack_hash)
-		return -ENOMEM;
-
-	nf_conntrack_max = max_factor * nf_conntrack_htable_size;
-
-	nf_conntrack_cachep = kmem_cache_create("nf_conntrack",
-						sizeof(struct nf_conn),
-						NFCT_INFOMASK + 1,
-						SLAB_TYPESAFE_BY_RCU | SLAB_HWCACHE_ALIGN, NULL);
-	if (!nf_conntrack_cachep)
-		goto err_cachep;
-
-	ret = nf_conntrack_expect_init();
-	if (ret < 0)
-		goto err_expect;
-
-	ret = nf_conntrack_acct_init();
-	if (ret < 0)
-		goto err_acct;
-
-	ret = nf_conntrack_tstamp_init();
-	if (ret < 0)
-		goto err_tstamp;
-
-	ret = nf_conntrack_ecache_init();
-	if (ret < 0)
-		goto err_ecache;
-
-	ret = nf_conntrack_timeout_init();
-	if (ret < 0)
-		goto err_timeout;
-
-	ret = nf_conntrack_helper_init();
-	if (ret < 0)
-		goto err_helper;
-
-	ret = nf_conntrack_labels_init();
-	if (ret < 0)
-		goto err_labels;
-
-	ret = nf_conntrack_seqadj_init();
-	if (ret < 0)
-		goto err_seqadj;
-
-	ret = nf_conntrack_proto_init();
-	if (ret < 0)
-		goto err_proto;
-
-	conntrack_gc_work_init(&conntrack_gc_work);
-	queue_delayed_work(system_power_efficient_wq, &conntrack_gc_work.dwork, HZ);
-
-	return 0;
-
-err_proto:
-	nf_conntrack_seqadj_fini();
-err_seqadj:
-	nf_conntrack_labels_fini();
-err_labels:
-	nf_conntrack_helper_fini();
-err_helper:
-	nf_conntrack_timeout_fini();
-err_timeout:
-	nf_conntrack_ecache_fini();
-err_ecache:
-	nf_conntrack_tstamp_fini();
-err_tstamp:
-	nf_conntrack_acct_fini();
-err_acct:
-	nf_conntrack_expect_fini();
-err_expect:
-	kmem_cache_destroy(nf_conntrack_cachep);
-err_cachep:
-	kvfree(nf_conntrack_hash);
-	return ret;
-}
-
-static struct nf_ct_hook nf_conntrack_hook = {
-	.update		= nf_conntrack_update,
-	.destroy	= destroy_conntrack,
-	.get_tuple_skb  = nf_conntrack_get_tuple_skb,
-};
-
-void nf_conntrack_init_end(void)
-{
-	/* For use by REJECT target */
-	RCU_INIT_POINTER(ip_ct_attach, nf_conntrack_attach);
-	RCU_INIT_POINTER(nf_ct_hook, &nf_conntrack_hook);
-}
-
-/*
- * We need to use special "null" values, not used in hash table
- */
-#define UNCONFIRMED_NULLS_VAL	((1<<30)+0)
-#define DYING_NULLS_VAL		((1<<30)+1)
-
-int nf_conntrack_init_net(struct net *net)
-{
-	int ret = -ENOMEM;
-	int cpu;
-
-	BUILD_BUG_ON(IP_CT_UNTRACKED == IP_CT_NUMBER);
-	BUILD_BUG_ON_NOT_POWER_OF_2(CONNTRACK_LOCKS);
-	atomic_set(&net->ct.count, 0);
-
-	net->ct.pcpu_lists = alloc_percpu(struct ct_pcpu);
-	if (!net->ct.pcpu_lists)
-		goto err_stat;
-
-	for_each_possible_cpu(cpu) {
-		struct ct_pcpu *pcpu = per_cpu_ptr(net->ct.pcpu_lists, cpu);
-
-		spin_lock_init(&pcpu->lock);
-		INIT_HLIST_NULLS_HEAD(&pcpu->unconfirmed, UNCONFIRMED_NULLS_VAL);
-		INIT_HLIST_NULLS_HEAD(&pcpu->dying, DYING_NULLS_VAL);
-	}
-
-	net->ct.stat = alloc_percpu(struct ip_conntrack_stat);
-	if (!net->ct.stat)
-		goto err_pcpu_lists;
-
-	ret = nf_conntrack_expect_pernet_init(net);
-	if (ret < 0)
-		goto err_expect;
-
-	nf_conntrack_acct_pernet_init(net);
-	nf_conntrack_tstamp_pernet_init(net);
-	nf_conntrack_ecache_pernet_init(net);
-	nf_conntrack_helper_pernet_init(net);
-	nf_conntrack_proto_pernet_init(net);
-
-	return 0;
-
-err_expect:
-	free_percpu(net->ct.stat);
-err_pcpu_lists:
-	free_percpu(net->ct.pcpu_lists);
-err_stat:
-	return ret;
-}
diff --git a/upstream/linux-5.10/net/netfilter/xt_DSCP.c b/upstream/linux-5.10/net/netfilter/xt_DSCP.c
deleted file mode 100755
index eababc3..0000000
--- a/upstream/linux-5.10/net/netfilter/xt_DSCP.c
+++ /dev/null
@@ -1,161 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/* x_tables module for setting the IPv4/IPv6 DSCP field, Version 1.8
- *
- * (C) 2002 by Harald Welte <laforge@netfilter.org>
- * based on ipt_FTOS.c (C) 2000 by Matthew G. Marsh <mgm@paktronix.com>
- *
- * See RFC2474 for a description of the DSCP field within the IP Header.
-*/
-#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-#include <linux/module.h>
-#include <linux/skbuff.h>
-#include <linux/ip.h>
-#include <linux/ipv6.h>
-#include <net/dsfield.h>
-
-#include <linux/netfilter/x_tables.h>
-#include <linux/netfilter/xt_DSCP.h>
-
-MODULE_AUTHOR("Harald Welte <laforge@netfilter.org>");
-MODULE_DESCRIPTION("Xtables: DSCP/TOS field modification");
-MODULE_LICENSE("GPL");
-MODULE_ALIAS("ipt_DSCP");
-MODULE_ALIAS("ip6t_DSCP");
-MODULE_ALIAS("ipt_TOS");
-MODULE_ALIAS("ip6t_TOS");
-
-static unsigned int
-dscp_tg(struct sk_buff *skb, const struct xt_action_param *par)
-{
-	const struct xt_DSCP_info *dinfo = par->targinfo;
-	u_int8_t dscp = ipv4_get_dsfield(ip_hdr(skb)) >> XT_DSCP_SHIFT;
-
-	if (dscp != dinfo->dscp) {
-		if (skb_ensure_writable(skb, sizeof(struct iphdr)))
-			return NF_DROP;
-
-		ipv4_change_dsfield(ip_hdr(skb),
-				    (__force __u8)(~XT_DSCP_MASK),
-				    dinfo->dscp << XT_DSCP_SHIFT);
-
-	}
-	return XT_CONTINUE;
-}
-
-static unsigned int
-dscp_tg6(struct sk_buff *skb, const struct xt_action_param *par)
-{
-	const struct xt_DSCP_info *dinfo = par->targinfo;
-	u_int8_t dscp = ipv6_get_dsfield(ipv6_hdr(skb)) >> XT_DSCP_SHIFT;
-
-	if (dscp != dinfo->dscp) {
-		if (skb_ensure_writable(skb, sizeof(struct ipv6hdr)))
-			return NF_DROP;
-
-		ipv6_change_dsfield(ipv6_hdr(skb),
-				    (__force __u8)(~XT_DSCP_MASK),
-				    dinfo->dscp << XT_DSCP_SHIFT);
-	}
-	return XT_CONTINUE;
-}
-
-static int dscp_tg_check(const struct xt_tgchk_param *par)
-{
-	const struct xt_DSCP_info *info = par->targinfo;
-
-	if (info->dscp > XT_DSCP_MAX)
-		return -EDOM;
-	return 0;
-}
-
-static unsigned int
-tos_tg(struct sk_buff *skb, const struct xt_action_param *par)
-{
-	const struct xt_tos_target_info *info = par->targinfo;
-	struct iphdr *iph = ip_hdr(skb);
-	u_int8_t orig, nv;
-
-	orig = ipv4_get_dsfield(iph);
-	nv   = (orig & ~info->tos_mask) ^ info->tos_value;
-
-	if (orig != nv) {
-		if (skb_ensure_writable(skb, sizeof(struct iphdr)))
-			return NF_DROP;
-		iph = ip_hdr(skb);
-		ipv4_change_dsfield(iph, 0, nv);
-	}
-
-	return XT_CONTINUE;
-}
-
-static unsigned int
-tos_tg6(struct sk_buff *skb, const struct xt_action_param *par)
-{
-	const struct xt_tos_target_info *info = par->targinfo;
-	struct ipv6hdr *iph = ipv6_hdr(skb);
-	u_int8_t orig, nv;
-
-	orig = ipv6_get_dsfield(iph);
-	nv   = (orig & ~info->tos_mask) ^ info->tos_value;
-
-	if (orig != nv) {
-		if (skb_ensure_writable(skb, sizeof(struct iphdr)))
-			return NF_DROP;
-		iph = ipv6_hdr(skb);
-		ipv6_change_dsfield(iph, 0, nv);
-	}
-
-	return XT_CONTINUE;
-}
-
-static struct xt_target dscp_tg_reg[] __read_mostly = {
-	{
-		.name		= "DSCP",
-		.family		= NFPROTO_IPV4,
-		.checkentry	= dscp_tg_check,
-		.target		= dscp_tg,
-		.targetsize	= sizeof(struct xt_DSCP_info),
-		.table		= "mangle",
-		.me		= THIS_MODULE,
-	},
-	{
-		.name		= "DSCP",
-		.family		= NFPROTO_IPV6,
-		.checkentry	= dscp_tg_check,
-		.target		= dscp_tg6,
-		.targetsize	= sizeof(struct xt_DSCP_info),
-		.table		= "mangle",
-		.me		= THIS_MODULE,
-	},
-	{
-		.name		= "TOS",
-		.revision	= 1,
-		.family		= NFPROTO_IPV4,
-		.table		= "mangle",
-		.target		= tos_tg,
-		.targetsize	= sizeof(struct xt_tos_target_info),
-		.me		= THIS_MODULE,
-	},
-	{
-		.name		= "TOS",
-		.revision	= 1,
-		.family		= NFPROTO_IPV6,
-		.table		= "mangle",
-		.target		= tos_tg6,
-		.targetsize	= sizeof(struct xt_tos_target_info),
-		.me		= THIS_MODULE,
-	},
-};
-
-static int __init dscp_tg_init(void)
-{
-	return xt_register_targets(dscp_tg_reg, ARRAY_SIZE(dscp_tg_reg));
-}
-
-static void __exit dscp_tg_exit(void)
-{
-	xt_unregister_targets(dscp_tg_reg, ARRAY_SIZE(dscp_tg_reg));
-}
-
-module_init(dscp_tg_init);
-module_exit(dscp_tg_exit);
diff --git a/upstream/linux-5.10/net/netfilter/xt_RATEEST.c b/upstream/linux-5.10/net/netfilter/xt_RATEEST.c
deleted file mode 100755
index 0d5c422..0000000
--- a/upstream/linux-5.10/net/netfilter/xt_RATEEST.c
+++ /dev/null
@@ -1,232 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * (C) 2007 Patrick McHardy <kaber@trash.net>
- */
-#include <linux/module.h>
-#include <linux/skbuff.h>
-#include <linux/gen_stats.h>
-#include <linux/jhash.h>
-#include <linux/rtnetlink.h>
-#include <linux/random.h>
-#include <linux/slab.h>
-#include <net/gen_stats.h>
-#include <net/netlink.h>
-#include <net/netns/generic.h>
-
-#include <linux/netfilter/x_tables.h>
-#include <linux/netfilter/xt_RATEEST.h>
-#include <net/netfilter/xt_rateest.h>
-
-#define RATEEST_HSIZE	16
-
-struct xt_rateest_net {
-	struct mutex hash_lock;
-	struct hlist_head hash[RATEEST_HSIZE];
-};
-
-static unsigned int xt_rateest_id;
-
-static unsigned int jhash_rnd __read_mostly;
-
-static unsigned int xt_rateest_hash(const char *name)
-{
-	return jhash(name, sizeof_field(struct xt_rateest, name), jhash_rnd) &
-	       (RATEEST_HSIZE - 1);
-}
-
-static void xt_rateest_hash_insert(struct xt_rateest_net *xn,
-				   struct xt_rateest *est)
-{
-	unsigned int h;
-
-	h = xt_rateest_hash(est->name);
-	hlist_add_head(&est->list, &xn->hash[h]);
-}
-
-static struct xt_rateest *__xt_rateest_lookup(struct xt_rateest_net *xn,
-					      const char *name)
-{
-	struct xt_rateest *est;
-	unsigned int h;
-
-	h = xt_rateest_hash(name);
-	hlist_for_each_entry(est, &xn->hash[h], list) {
-		if (strcmp(est->name, name) == 0) {
-			est->refcnt++;
-			return est;
-		}
-	}
-
-	return NULL;
-}
-
-struct xt_rateest *xt_rateest_lookup(struct net *net, const char *name)
-{
-	struct xt_rateest_net *xn = net_generic(net, xt_rateest_id);
-	struct xt_rateest *est;
-
-	mutex_lock(&xn->hash_lock);
-	est = __xt_rateest_lookup(xn, name);
-	mutex_unlock(&xn->hash_lock);
-	return est;
-}
-EXPORT_SYMBOL_GPL(xt_rateest_lookup);
-
-void xt_rateest_put(struct net *net, struct xt_rateest *est)
-{
-	struct xt_rateest_net *xn = net_generic(net, xt_rateest_id);
-
-	mutex_lock(&xn->hash_lock);
-	if (--est->refcnt == 0) {
-		hlist_del(&est->list);
-		gen_kill_estimator(&est->rate_est);
-		/*
-		 * gen_estimator est_timer() might access est->lock or bstats,
-		 * wait a RCU grace period before freeing 'est'
-		 */
-		kfree_rcu(est, rcu);
-	}
-	mutex_unlock(&xn->hash_lock);
-}
-EXPORT_SYMBOL_GPL(xt_rateest_put);
-
-static unsigned int
-xt_rateest_tg(struct sk_buff *skb, const struct xt_action_param *par)
-{
-	const struct xt_rateest_target_info *info = par->targinfo;
-	struct gnet_stats_basic_packed *stats = &info->est->bstats;
-
-	spin_lock_bh(&info->est->lock);
-	stats->bytes += skb->len;
-	stats->packets++;
-	spin_unlock_bh(&info->est->lock);
-
-	return XT_CONTINUE;
-}
-
-static int xt_rateest_tg_checkentry(const struct xt_tgchk_param *par)
-{
-	struct xt_rateest_net *xn = net_generic(par->net, xt_rateest_id);
-	struct xt_rateest_target_info *info = par->targinfo;
-	struct xt_rateest *est;
-	struct {
-		struct nlattr		opt;
-		struct gnet_estimator	est;
-	} cfg;
-	int ret;
-
-	if (strnlen(info->name, sizeof(est->name)) >= sizeof(est->name))
-		return -ENAMETOOLONG;
-
-	net_get_random_once(&jhash_rnd, sizeof(jhash_rnd));
-
-	mutex_lock(&xn->hash_lock);
-	est = __xt_rateest_lookup(xn, info->name);
-	if (est) {
-		mutex_unlock(&xn->hash_lock);
-		/*
-		 * If estimator parameters are specified, they must match the
-		 * existing estimator.
-		 */
-		if ((!info->interval && !info->ewma_log) ||
-		    (info->interval != est->params.interval ||
-		     info->ewma_log != est->params.ewma_log)) {
-			xt_rateest_put(par->net, est);
-			return -EINVAL;
-		}
-		info->est = est;
-		return 0;
-	}
-
-	ret = -ENOMEM;
-	est = kzalloc(sizeof(*est), GFP_KERNEL);
-	if (!est)
-		goto err1;
-
-	strlcpy(est->name, info->name, sizeof(est->name));
-	spin_lock_init(&est->lock);
-	est->refcnt		= 1;
-	est->params.interval	= info->interval;
-	est->params.ewma_log	= info->ewma_log;
-
-	cfg.opt.nla_len		= nla_attr_size(sizeof(cfg.est));
-	cfg.opt.nla_type	= TCA_STATS_RATE_EST;
-	cfg.est.interval	= info->interval;
-	cfg.est.ewma_log	= info->ewma_log;
-
-	ret = gen_new_estimator(&est->bstats, NULL, &est->rate_est,
-				&est->lock, NULL, &cfg.opt);
-	if (ret < 0)
-		goto err2;
-
-	info->est = est;
-	xt_rateest_hash_insert(xn, est);
-	mutex_unlock(&xn->hash_lock);
-	return 0;
-
-err2:
-	kfree(est);
-err1:
-	mutex_unlock(&xn->hash_lock);
-	return ret;
-}
-
-static void xt_rateest_tg_destroy(const struct xt_tgdtor_param *par)
-{
-	struct xt_rateest_target_info *info = par->targinfo;
-
-	xt_rateest_put(par->net, info->est);
-}
-
-static struct xt_target xt_rateest_tg_reg __read_mostly = {
-	.name       = "RATEEST",
-	.revision   = 0,
-	.family     = NFPROTO_UNSPEC,
-	.target     = xt_rateest_tg,
-	.checkentry = xt_rateest_tg_checkentry,
-	.destroy    = xt_rateest_tg_destroy,
-	.targetsize = sizeof(struct xt_rateest_target_info),
-	.usersize   = offsetof(struct xt_rateest_target_info, est),
-	.me         = THIS_MODULE,
-};
-
-static __net_init int xt_rateest_net_init(struct net *net)
-{
-	struct xt_rateest_net *xn = net_generic(net, xt_rateest_id);
-	int i;
-
-	mutex_init(&xn->hash_lock);
-	for (i = 0; i < ARRAY_SIZE(xn->hash); i++)
-		INIT_HLIST_HEAD(&xn->hash[i]);
-	return 0;
-}
-
-static struct pernet_operations xt_rateest_net_ops = {
-	.init = xt_rateest_net_init,
-	.id   = &xt_rateest_id,
-	.size = sizeof(struct xt_rateest_net),
-};
-
-static int __init xt_rateest_tg_init(void)
-{
-	int err = register_pernet_subsys(&xt_rateest_net_ops);
-
-	if (err)
-		return err;
-	return xt_register_target(&xt_rateest_tg_reg);
-}
-
-static void __exit xt_rateest_tg_fini(void)
-{
-	xt_unregister_target(&xt_rateest_tg_reg);
-	unregister_pernet_subsys(&xt_rateest_net_ops);
-}
-
-
-MODULE_AUTHOR("Patrick McHardy <kaber@trash.net>");
-MODULE_LICENSE("GPL");
-MODULE_DESCRIPTION("Xtables: packet rate estimator");
-MODULE_ALIAS("ipt_RATEEST");
-MODULE_ALIAS("ip6t_RATEEST");
-module_init(xt_rateest_tg_init);
-module_exit(xt_rateest_tg_fini);
diff --git a/upstream/linux-5.10/net/netfilter/xt_TCPMSS.c b/upstream/linux-5.10/net/netfilter/xt_TCPMSS.c
deleted file mode 100755
index 122db9f..0000000
--- a/upstream/linux-5.10/net/netfilter/xt_TCPMSS.c
+++ /dev/null
@@ -1,345 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * This is a module which is used for setting the MSS option in TCP packets.
- *
- * Copyright (C) 2000 Marc Boucher <marc@mbsi.ca>
- * Copyright (C) 2007 Patrick McHardy <kaber@trash.net>
- */
-#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-#include <linux/module.h>
-#include <linux/skbuff.h>
-#include <linux/ip.h>
-#include <linux/gfp.h>
-#include <linux/ipv6.h>
-#include <linux/tcp.h>
-#include <net/dst.h>
-#include <net/flow.h>
-#include <net/ipv6.h>
-#include <net/route.h>
-#include <net/tcp.h>
-
-#include <linux/netfilter_ipv4/ip_tables.h>
-#include <linux/netfilter_ipv6/ip6_tables.h>
-#include <linux/netfilter/x_tables.h>
-#include <linux/netfilter/xt_tcpudp.h>
-#include <linux/netfilter/xt_TCPMSS.h>
-
-MODULE_LICENSE("GPL");
-MODULE_AUTHOR("Marc Boucher <marc@mbsi.ca>");
-MODULE_DESCRIPTION("Xtables: TCP Maximum Segment Size (MSS) adjustment");
-MODULE_ALIAS("ipt_TCPMSS");
-MODULE_ALIAS("ip6t_TCPMSS");
-
-static inline unsigned int
-optlen(const u_int8_t *opt, unsigned int offset)
-{
-	/* Beware zero-length options: make finite progress */
-	if (opt[offset] <= TCPOPT_NOP || opt[offset+1] == 0)
-		return 1;
-	else
-		return opt[offset+1];
-}
-
-static u_int32_t tcpmss_reverse_mtu(struct net *net,
-				    const struct sk_buff *skb,
-				    unsigned int family)
-{
-	struct flowi fl;
-	struct rtable *rt = NULL;
-	u_int32_t mtu     = ~0U;
-
-	if (family == PF_INET) {
-		struct flowi4 *fl4 = &fl.u.ip4;
-		memset(fl4, 0, sizeof(*fl4));
-		fl4->daddr = ip_hdr(skb)->saddr;
-	} else {
-		struct flowi6 *fl6 = &fl.u.ip6;
-
-		memset(fl6, 0, sizeof(*fl6));
-		fl6->daddr = ipv6_hdr(skb)->saddr;
-	}
-
-	nf_route(net, (struct dst_entry **)&rt, &fl, false, family);
-	if (rt != NULL) {
-		mtu = dst_mtu(&rt->dst);
-		dst_release(&rt->dst);
-	}
-	return mtu;
-}
-
-static int
-tcpmss_mangle_packet(struct sk_buff *skb,
-		     const struct xt_action_param *par,
-		     unsigned int family,
-		     unsigned int tcphoff,
-		     unsigned int minlen)
-{
-	const struct xt_tcpmss_info *info = par->targinfo;
-	struct tcphdr *tcph;
-	int len, tcp_hdrlen;
-	unsigned int i;
-	__be16 oldval;
-	u16 newmss;
-	u8 *opt;
-
-	/* This is a fragment, no TCP header is available */
-	if (par->fragoff != 0)
-		return 0;
-
-	if (skb_ensure_writable(skb, skb->len))
-		return -1;
-
-	len = skb->len - tcphoff;
-	if (len < (int)sizeof(struct tcphdr))
-		return -1;
-
-	tcph = (struct tcphdr *)(skb_network_header(skb) + tcphoff);
-	tcp_hdrlen = tcph->doff * 4;
-
-	if (len < tcp_hdrlen || tcp_hdrlen < sizeof(struct tcphdr))
-		return -1;
-
-	if (info->mss == XT_TCPMSS_CLAMP_PMTU) {
-		struct net *net = xt_net(par);
-		unsigned int in_mtu = tcpmss_reverse_mtu(net, skb, family);
-		unsigned int min_mtu = min(dst_mtu(skb_dst(skb)), in_mtu);
-
-		if (min_mtu <= minlen) {
-			net_err_ratelimited("unknown or invalid path-MTU (%u)\n",
-					    min_mtu);
-			return -1;
-		}
-		newmss = min_mtu - minlen;
-	} else
-		newmss = info->mss;
-
-	opt = (u_int8_t *)tcph;
-	for (i = sizeof(struct tcphdr); i <= tcp_hdrlen - TCPOLEN_MSS; i += optlen(opt, i)) {
-		if (opt[i] == TCPOPT_MSS && opt[i+1] == TCPOLEN_MSS) {
-			u_int16_t oldmss;
-
-			oldmss = (opt[i+2] << 8) | opt[i+3];
-
-			/* Never increase MSS, even when setting it, as
-			 * doing so results in problems for hosts that rely
-			 * on MSS being set correctly.
-			 */
-			if (oldmss <= newmss)
-				return 0;
-
-			opt[i+2] = (newmss & 0xff00) >> 8;
-			opt[i+3] = newmss & 0x00ff;
-
-			inet_proto_csum_replace2(&tcph->check, skb,
-						 htons(oldmss), htons(newmss),
-						 false);
-			return 0;
-		}
-	}
-
-	/* There is data after the header so the option can't be added
-	 * without moving it, and doing so may make the SYN packet
-	 * itself too large. Accept the packet unmodified instead.
-	 */
-	if (len > tcp_hdrlen)
-		return 0;
-
-	/* tcph->doff has 4 bits, do not wrap it to 0 */
-	if (tcp_hdrlen >= 15 * 4)
-		return 0;
-
-	/*
-	 * MSS Option not found ?! add it..
-	 */
-	if (skb_tailroom(skb) < TCPOLEN_MSS) {
-		if (pskb_expand_head(skb, 0,
-				     TCPOLEN_MSS - skb_tailroom(skb),
-				     GFP_ATOMIC))
-			return -1;
-		tcph = (struct tcphdr *)(skb_network_header(skb) + tcphoff);
-	}
-
-	skb_put(skb, TCPOLEN_MSS);
-
-	/*
-	 * IPv4: RFC 1122 states "If an MSS option is not received at
-	 * connection setup, TCP MUST assume a default send MSS of 536".
-	 * IPv6: RFC 2460 states IPv6 has a minimum MTU of 1280 and a minimum
-	 * length IPv6 header of 60, ergo the default MSS value is 1220
-	 * Since no MSS was provided, we must use the default values
-	 */
-	if (xt_family(par) == NFPROTO_IPV4)
-		newmss = min(newmss, (u16)536);
-	else
-		newmss = min(newmss, (u16)1220);
-
-	opt = (u_int8_t *)tcph + sizeof(struct tcphdr);
-	memmove(opt + TCPOLEN_MSS, opt, len - sizeof(struct tcphdr));
-
-	inet_proto_csum_replace2(&tcph->check, skb,
-				 htons(len), htons(len + TCPOLEN_MSS), true);
-	opt[0] = TCPOPT_MSS;
-	opt[1] = TCPOLEN_MSS;
-	opt[2] = (newmss & 0xff00) >> 8;
-	opt[3] = newmss & 0x00ff;
-
-	inet_proto_csum_replace4(&tcph->check, skb, 0, *((__be32 *)opt), false);
-
-	oldval = ((__be16 *)tcph)[6];
-	tcph->doff += TCPOLEN_MSS/4;
-	inet_proto_csum_replace2(&tcph->check, skb,
-				 oldval, ((__be16 *)tcph)[6], false);
-	return TCPOLEN_MSS;
-}
-
-static unsigned int
-tcpmss_tg4(struct sk_buff *skb, const struct xt_action_param *par)
-{
-	struct iphdr *iph = ip_hdr(skb);
-	__be16 newlen;
-	int ret;
-
-	ret = tcpmss_mangle_packet(skb, par,
-				   PF_INET,
-				   iph->ihl * 4,
-				   sizeof(*iph) + sizeof(struct tcphdr));
-	if (ret < 0)
-		return NF_DROP;
-	if (ret > 0) {
-		iph = ip_hdr(skb);
-		newlen = htons(ntohs(iph->tot_len) + ret);
-		csum_replace2(&iph->check, iph->tot_len, newlen);
-		iph->tot_len = newlen;
-	}
-	return XT_CONTINUE;
-}
-
-#if IS_ENABLED(CONFIG_IP6_NF_IPTABLES)
-static unsigned int
-tcpmss_tg6(struct sk_buff *skb, const struct xt_action_param *par)
-{
-	struct ipv6hdr *ipv6h = ipv6_hdr(skb);
-	u8 nexthdr;
-	__be16 frag_off, oldlen, newlen;
-	int tcphoff;
-	int ret;
-
-	nexthdr = ipv6h->nexthdr;
-	tcphoff = ipv6_skip_exthdr(skb, sizeof(*ipv6h), &nexthdr, &frag_off);
-	if (tcphoff < 0)
-		return NF_DROP;
-	ret = tcpmss_mangle_packet(skb, par,
-				   PF_INET6,
-				   tcphoff,
-				   sizeof(*ipv6h) + sizeof(struct tcphdr));
-	if (ret < 0)
-		return NF_DROP;
-	if (ret > 0) {
-		ipv6h = ipv6_hdr(skb);
-		oldlen = ipv6h->payload_len;
-		newlen = htons(ntohs(oldlen) + ret);
-		if (skb->ip_summed == CHECKSUM_COMPLETE)
-			skb->csum = csum_add(csum_sub(skb->csum, oldlen),
-					     newlen);
-		ipv6h->payload_len = newlen;
-	}
-	return XT_CONTINUE;
-}
-#endif
-
-/* Must specify -p tcp --syn */
-static inline bool find_syn_match(const struct xt_entry_match *m)
-{
-	const struct xt_tcp *tcpinfo = (const struct xt_tcp *)m->data;
-
-	if (strcmp(m->u.kernel.match->name, "tcp") == 0 &&
-	    tcpinfo->flg_cmp & TCPHDR_SYN &&
-	    !(tcpinfo->invflags & XT_TCP_INV_FLAGS))
-		return true;
-
-	return false;
-}
-
-static int tcpmss_tg4_check(const struct xt_tgchk_param *par)
-{
-	const struct xt_tcpmss_info *info = par->targinfo;
-	const struct ipt_entry *e = par->entryinfo;
-	const struct xt_entry_match *ematch;
-
-	if (info->mss == XT_TCPMSS_CLAMP_PMTU &&
-	    (par->hook_mask & ~((1 << NF_INET_FORWARD) |
-			   (1 << NF_INET_LOCAL_OUT) |
-			   (1 << NF_INET_POST_ROUTING))) != 0) {
-		pr_info_ratelimited("path-MTU clamping only supported in FORWARD, OUTPUT and POSTROUTING hooks\n");
-		return -EINVAL;
-	}
-	if (par->nft_compat)
-		return 0;
-
-	xt_ematch_foreach(ematch, e)
-		if (find_syn_match(ematch))
-			return 0;
-	pr_info_ratelimited("Only works on TCP SYN packets\n");
-	return -EINVAL;
-}
-
-#if IS_ENABLED(CONFIG_IP6_NF_IPTABLES)
-static int tcpmss_tg6_check(const struct xt_tgchk_param *par)
-{
-	const struct xt_tcpmss_info *info = par->targinfo;
-	const struct ip6t_entry *e = par->entryinfo;
-	const struct xt_entry_match *ematch;
-
-	if (info->mss == XT_TCPMSS_CLAMP_PMTU &&
-	    (par->hook_mask & ~((1 << NF_INET_FORWARD) |
-			   (1 << NF_INET_LOCAL_OUT) |
-			   (1 << NF_INET_POST_ROUTING))) != 0) {
-		pr_info_ratelimited("path-MTU clamping only supported in FORWARD, OUTPUT and POSTROUTING hooks\n");
-		return -EINVAL;
-	}
-	if (par->nft_compat)
-		return 0;
-
-	xt_ematch_foreach(ematch, e)
-		if (find_syn_match(ematch))
-			return 0;
-	pr_info_ratelimited("Only works on TCP SYN packets\n");
-	return -EINVAL;
-}
-#endif
-
-static struct xt_target tcpmss_tg_reg[] __read_mostly = {
-	{
-		.family		= NFPROTO_IPV4,
-		.name		= "TCPMSS",
-		.checkentry	= tcpmss_tg4_check,
-		.target		= tcpmss_tg4,
-		.targetsize	= sizeof(struct xt_tcpmss_info),
-		.proto		= IPPROTO_TCP,
-		.me		= THIS_MODULE,
-	},
-#if IS_ENABLED(CONFIG_IP6_NF_IPTABLES)
-	{
-		.family		= NFPROTO_IPV6,
-		.name		= "TCPMSS",
-		.checkentry	= tcpmss_tg6_check,
-		.target		= tcpmss_tg6,
-		.targetsize	= sizeof(struct xt_tcpmss_info),
-		.proto		= IPPROTO_TCP,
-		.me		= THIS_MODULE,
-	},
-#endif
-};
-
-static int __init tcpmss_tg_init(void)
-{
-	return xt_register_targets(tcpmss_tg_reg, ARRAY_SIZE(tcpmss_tg_reg));
-}
-
-static void __exit tcpmss_tg_exit(void)
-{
-	xt_unregister_targets(tcpmss_tg_reg, ARRAY_SIZE(tcpmss_tg_reg));
-}
-
-module_init(tcpmss_tg_init);
-module_exit(tcpmss_tg_exit);
diff --git a/upstream/linux-5.10/net/netfilter/xt_hl.c b/upstream/linux-5.10/net/netfilter/xt_hl.c
deleted file mode 100755
index c1a70f8..0000000
--- a/upstream/linux-5.10/net/netfilter/xt_hl.c
+++ /dev/null
@@ -1,93 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * IP tables module for matching the value of the TTL
- * (C) 2000,2001 by Harald Welte <laforge@netfilter.org>
- *
- * Hop Limit matching module
- * (C) 2001-2002 Maciej Soltysiak <solt@dns.toxicfilms.tv>
- */
-
-#include <linux/ip.h>
-#include <linux/ipv6.h>
-#include <linux/module.h>
-#include <linux/skbuff.h>
-
-#include <linux/netfilter/x_tables.h>
-#include <linux/netfilter_ipv4/ipt_ttl.h>
-#include <linux/netfilter_ipv6/ip6t_hl.h>
-
-MODULE_AUTHOR("Maciej Soltysiak <solt@dns.toxicfilms.tv>");
-MODULE_DESCRIPTION("Xtables: Hoplimit/TTL field match");
-MODULE_LICENSE("GPL");
-MODULE_ALIAS("ipt_ttl");
-MODULE_ALIAS("ip6t_hl");
-
-static bool ttl_mt(const struct sk_buff *skb, struct xt_action_param *par)
-{
-	const struct ipt_ttl_info *info = par->matchinfo;
-	const u8 ttl = ip_hdr(skb)->ttl;
-
-	switch (info->mode) {
-	case IPT_TTL_EQ:
-		return ttl == info->ttl;
-	case IPT_TTL_NE:
-		return ttl != info->ttl;
-	case IPT_TTL_LT:
-		return ttl < info->ttl;
-	case IPT_TTL_GT:
-		return ttl > info->ttl;
-	}
-
-	return false;
-}
-
-static bool hl_mt6(const struct sk_buff *skb, struct xt_action_param *par)
-{
-	const struct ip6t_hl_info *info = par->matchinfo;
-	const struct ipv6hdr *ip6h = ipv6_hdr(skb);
-
-	switch (info->mode) {
-	case IP6T_HL_EQ:
-		return ip6h->hop_limit == info->hop_limit;
-	case IP6T_HL_NE:
-		return ip6h->hop_limit != info->hop_limit;
-	case IP6T_HL_LT:
-		return ip6h->hop_limit < info->hop_limit;
-	case IP6T_HL_GT:
-		return ip6h->hop_limit > info->hop_limit;
-	}
-
-	return false;
-}
-
-static struct xt_match hl_mt_reg[] __read_mostly = {
-	{
-		.name       = "ttl",
-		.revision   = 0,
-		.family     = NFPROTO_IPV4,
-		.match      = ttl_mt,
-		.matchsize  = sizeof(struct ipt_ttl_info),
-		.me         = THIS_MODULE,
-	},
-	{
-		.name       = "hl",
-		.revision   = 0,
-		.family     = NFPROTO_IPV6,
-		.match      = hl_mt6,
-		.matchsize  = sizeof(struct ip6t_hl_info),
-		.me         = THIS_MODULE,
-	},
-};
-
-static int __init hl_mt_init(void)
-{
-	return xt_register_matches(hl_mt_reg, ARRAY_SIZE(hl_mt_reg));
-}
-
-static void __exit hl_mt_exit(void)
-{
-	xt_unregister_matches(hl_mt_reg, ARRAY_SIZE(hl_mt_reg));
-}
-
-module_init(hl_mt_init);
-module_exit(hl_mt_exit);
diff --git a/upstream/pub/include/infra/pub_debug_info.h b/upstream/pub/include/infra/pub_debug_info.h
deleted file mode 100755
index 10357aa..0000000
--- a/upstream/pub/include/infra/pub_debug_info.h
+++ /dev/null
@@ -1,67 +0,0 @@
-#ifndef _PUB_DEBUG_INFO_H_
-#define _PUB_DEBUG_INFO_H_
-
-#include <stdarg.h>
-
-#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_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_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_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, ...);
-#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; }
-#endif
-
-#endif
\ No newline at end of file
diff --git a/upstream/pub/project/zx297520v3/include/drv/NvParam_drv.h b/upstream/pub/project/zx297520v3/include/drv/NvParam_drv.h
deleted file mode 100755
index 66c6f6d..0000000
--- a/upstream/pub/project/zx297520v3/include/drv/NvParam_drv.h
+++ /dev/null
@@ -1,223 +0,0 @@
-/***********************************************************************

-* Copyright (C) 2016, ZTE Corporation.

-*

-* File Name:  nvparam_drv.h

-* File Mark:

-* Description:  

-* Others:

-* Version:   v1.0

-* Author:   wangxia

-* Date:         2016-03-12

-*

-* History 1:

-*     Date:

-*     Version:

-*     Author:

-*     Modification:

-* History 2:

-**********************************************************************/

-#ifndef NVPARAM_DRV_H

-#define NVPARAM_DRV_H

-

-/**************************************************************************

- *                                  Include files                         *

- **************************************************************************/

-#include "RWNvConfig.h"

-#include "NvParam_tsc.h"

-/**************************************************************************

- *                                  Macro                                 *

- **************************************************************************/

-#define	DRV_NV_ADDR					OS_FLASH_DRV_RW_NONFAC_BASE_ADDR

-#define	DRV_NV_SIZE					OS_FLASH_DRV_RW_NONFAC_SIZE	/*16K*/

-

-/*=====================================================================================================================

-|----------------|----------------|---------------|--------------|----------------|-----------------|-----------------|

-|  public(256B)  |    system(3K)  |  platfor(3K)  | highspeed(4K)| peripheral(3K) | 	audio(1K) 	| reserved(1.75K) |

-|----------------|----------------|---------------|--------------|----------------|-----------------|-----------------|

-=======================================================================================================================*/

-

-#define	DRV_PUB_NV_ADDR				DRV_NV_ADDR

-#define	DRV_PUB_NV_SIZE				(256)

-#define	DRV_SYS_NV_ADDR				(DRV_PUB_NV_ADDR + DRV_PUB_NV_SIZE)

-#define	DRV_SYS_NV_SIZE				(3 * 1024)

-#define	DRV_PLAT_NV_ADDR			(DRV_SYS_NV_ADDR + DRV_SYS_NV_SIZE)

-#define	DRV_PLAT_NV_SIZE			(3 * 1024)

-#define	DRV_HS_PERI_NV_ADDR			(DRV_PLAT_NV_ADDR + DRV_PLAT_NV_SIZE)

-#define	DRV_HS_PERI_NV_SIZE			(4 * 1024)

-#define	DRV_PERI_NV_ADDR			(DRV_HS_PERI_NV_ADDR + DRV_HS_PERI_NV_SIZE)

-#define	DRV_PERI_NV_SIZE			(3 * 1024)

-#define	DRV_AUDIO_NV_ADDR			(DRV_PERI_NV_ADDR + DRV_PERI_NV_SIZE)

-#define	DRV_AUDIO_NV_SIZE			(1 * 1024)

-#define	DRV_RSVD_NV_ADDR			(DRV_AUDIO_NV_ADDR + DRV_AUDIO_NV_SIZE)

-#define	DRV_RSVD_NV_SIZE			(1 * 1024 + 768)

-

-#define	DRV_TOTAL_NV_SIZE			(DRV_PUB_NV_SIZE+DRV_SYS_NV_SIZE+DRV_PLAT_NV_SIZE+DRV_HS_PERI_NV_SIZE+DRV_PERI_NV_SIZE+DRV_AUDIO_NV_SIZE+DRV_RSVD_NV_SIZE)

-

-/* user interface */

-#define DRV_PUB_NV_ITEM_ADDR(x) 	(DRV_PUB_NV_ADDR + (UINT32)(&(((T_ZDrvNv_PubData*)(0x0))->x)))

-#define DRV_PUB_NV_ITEM_SIZE(x) 	(sizeof(((T_ZDrvNv_PubData*)(0x0))->x))

-

-#define DRV_SYS_NV_ITEM_ADDR(x) 	(DRV_SYS_NV_ADDR + (UINT32)(&(((T_ZDrvNv_SysData*)(0x0))->x)))

-#define DRV_SYS_NV_ITEM_SIZE(x) 	(sizeof(((T_ZDrvNv_SysData*)(0x0))->x))

-

-#define DRV_PLAT_NV_ITEM_ADDR(x) 	(DRV_PLAT_NV_ADDR + (UINT32)(&(((T_ZDrvNv_PlatData*)(0x0))->x)))

-#define DRV_PLAT_NV_ITEM_SIZE(x) 	(sizeof(((T_ZDrvNv_PlatData*)(0x0))->x))

-

-#define DRV_HS_PERI_NV_ITEM_ADDR(x) (DRV_HS_PERI_NV_ADDR + (UINT32)(&(((T_ZDrvNv_HSPeriData*)(0x0))->x)))

-#define DDRV_HS_PER_NV_ITEM_SIZE(x) (sizeof(((T_ZDrvNv_HSPeriData*)(0x0))->x))

-

-#define DRV_PER_NV_ITEM_ADDR(x) 	(DRV_PERI_NV_ADDR + (UINT32)(&(((T_ZDrvNv_PeriData*)(0x0))->x)))

-#define DRV_PER_NV_ITEM_SIZE(x) 	(sizeof(((T_ZDrvNv_PeriData*)(0x0))->x))

-

-#define DRV_AUDIO_NV_ITEM_ADDR(x) 	(DRV_AUDIO_NV_ADDR + (UINT32)(&(((T_ZDrvNv_AudioData*)(0x0))->x)))

-#define DRV_AUDIO_NV_ITEM_SIZE(x) 	(sizeof(((T_ZDrvNv_AudioData*)(0x0))->x))

-

-#define OS_FLASH_VOICE_DRV_RW_NONFAC_BASE_ADDR         (OS_FLASH_DRV_RW_NONFAC_BASE_ADDR + 15360)

-#define OS_FLASH_VOICE_DRV_NONFAC_SIZE     1024

-

-#if DRV_TOTAL_NV_SIZE > (OS_FLASH_DRV_RW_NONFAC_SIZE)

-#error "error drv nv config!!!"

-#endif

-

-/****************************************************************************

-* 	                         Types

-****************************************************************************/

-

-

-/******************************************************

-* 	         Drv NV Config

-******************************************************/

-/***********************************

-1. public nv_data

-************************************/

-typedef struct _T_ZDrvNv_PubData

-{

-	/* 0x00 */ 	CHAR  	chipName[16];

-	/* 0x10 */ 	CHAR	prjName[16];

-	/* 0x20 */ 	CHAR 	externalVer[16];

-	/* 0x30 */ 	CHAR 	internalVer[16];

-	/* 0x40 */ 	CHAR 	releaseTime[16];

-	/* 0x50 */ 	UINT8 	productType;

-	/* 0x51 */ 	UINT8 	reserved[DRV_PUB_NV_SIZE - 0x51];

-} __attribute__ ((packed)) T_ZDrvNv_PubData;

-

-/***********************************

-2. system group nv_data

-************************************/

-typedef struct _T_ZDrvNv_SysData

-{

-	/* 0x000 */	T_SYS_NV_TSC_CONFIG tsc_config;

-				UINT8 reserved0[12];

-	/* 0x70 */	UINT32 buck1OnoffFlag;

-	/* 0x74  */	UINT32 wdtSwitch;

-	/* 0x78  */	UINT32 wdtPriority;

-	/* 0x7C */	UINT8 uiccmodeSwitch;

-	/* 0x7D */	UINT8 uiccPreSwitch; 

-	/* 0x7E */	UINT8 uicc1modeSwitch;

-	/* 0x7F */	UINT8 uicc1PreSwitch; 

-	/* 0x80 */	UINT8 ishpnotsupported;

-              UINT8 reserved[DRV_SYS_NV_SIZE - 129];

-} __attribute__ ((packed)) T_ZDrvNv_SysData;

-

-/***********************************

-3. platform group nv_data

-************************************/

-typedef struct _T_ZDrvNv_PlatData

-{

-	UINT8 reserved[DRV_PLAT_NV_SIZE];

-} __attribute__ ((packed)) T_ZDrvNv_PlatData;

-

-/***********************************

-4. hign-speed peripheral group nv_data

-************************************/

-typedef struct _T_ZDrvNv_HSPeriData

-{

-	UINT8 reserved[DRV_HS_PERI_NV_SIZE];

-} __attribute__ ((packed)) T_ZDrvNv_HSPeriData;

-

-/***********************************

-5. common peripheral group nv_data

-************************************/

-typedef struct _T_ZDrvNv_PeriData

-{

-    UINT8 bat_det;

-    UINT8 reserved[DRV_PERI_NV_SIZE-1];

-} __attribute__ ((packed)) T_ZDrvNv_PeriData;

-

-/***********************************

-6. audio group nv_data

-************************************/

-typedef struct _T_ZDrvNv_AudioData

-{

-    UINT8 reserved[DRV_AUDIO_NV_SIZE];

-} __attribute__ ((packed)) T_ZDrvNv_AudioData;

-

-/***********************************

-7. all driver_used nv_data

-************************************/

-typedef struct _T_ZDrv_NvData

-{

-	/* 0x0000 */	T_ZDrvNv_PubData	pubData;

-	/* 0x0100 */	T_ZDrvNv_SysData	sysData;

-	/* 0x0D00 */	T_ZDrvNv_PlatData	platData;

-	/* 0x1900 */	T_ZDrvNv_HSPeriData	HSPeriData;

-	/* 0x2900 */	T_ZDrvNv_PeriData	periData;

-	/* 0x3500 */	T_ZDrvNv_AudioData	audioData;

-	/* 0x3900 */	UINT8				reserved[DRV_RSVD_NV_SIZE];

-} T_ZDrv_NvData;

-

-

-/******************************************************

-* 	check struct size

-******************************************************/

-static inline CHAR zDrvNv_CheckTypeSize(void)

-{ \

-	CHAR __dummy1[(sizeof(T_ZDrv_NvData)==DRV_NV_SIZE)?1:-1]={0}; \

-	CHAR __dummy2[(sizeof(T_ZDrvNv_PubData)==DRV_PUB_NV_SIZE)?1:-1]={0}; \

-	CHAR __dummy3[(sizeof(T_ZDrvNv_SysData)==DRV_SYS_NV_SIZE)?1:-1]={0}; \

-	CHAR __dummy4[(sizeof(T_ZDrvNv_PlatData)==DRV_PLAT_NV_SIZE)?1:-1]={0}; \

-	CHAR __dummy5[(sizeof(T_ZDrvNv_HSPeriData)==DRV_HS_PERI_NV_SIZE)?1:-1]={0}; \

-	CHAR __dummy6[(sizeof(T_ZDrvNv_PeriData)==DRV_PERI_NV_SIZE)?1:-1]={0}; \

-	CHAR __dummy7[(sizeof(T_ZDrvNv_AudioData)==DRV_AUDIO_NV_SIZE)?1:-1]={0}; \

-	return (__dummy1[0]+__dummy2[0]+__dummy3[0]+__dummy4[0]+__dummy5[0]+__dummy6[0]+__dummy7[0]); \

-}

-

-/******************************************************

-* 	old struct

-******************************************************/

-#if 0

-typedef struct _T_Sys_Drv_Nv_Data

-{

-	T_SYS_NV_TSC_CONFIG tsc_config;

-	UINT8 reserved[6];

-	UINT32 wdtSwitch;

-}T_Sys_Drv_Nv_Data;

-#endif

-typedef struct _T_Drv_Nv_Data

-{

-	UINT32 VpData[1024];//add by lvwenhua for voice 2013.12.6

-}T_Drv_Nv_Data;

-

-#define DRV_NV_ITEM_ADDRESS(x) (DRV_AUDIO_NV_ADDR + (UINT32)(&(((T_Drv_Nv_Data*)(0x0))->x)))

-//flag use 32byte

-typedef struct _T_Audio_NvFlag

-{

-    UINT8           isVpConfigInitOn;

-    UINT8           isVpParamInNv;

-    UINT8           isUseSlicCodec;

-    UINT8           isUseVoiceProc;//4 UINT8           isUseNXP;

-    UINT8           isUseCodecDsp;	

-	UINT8			isUseNvWrite;

-	UINT8			isCloseVpBufferBak;

-	UINT8			isUseTdm;//8

-	UINT8			isUseRxDtmfDet;

-	UINT8			isUseTxDtmfDet;     

-    UINT8			isUseRxMixData;

-	UINT8			isUseTxMixData;//12

-	UINT8			isUseEcall;

-    UINT8           reserved[19];//32-13

-	

-}  T_Audio_NvFlag;

-

-#endif

-

diff --git a/upstream/pub/project/zx297520v3/include/infra/ram_base_config_7520v3.h b/upstream/pub/project/zx297520v3/include/infra/ram_base_config_7520v3.h
deleted file mode 100755
index 6a1626d..0000000
--- a/upstream/pub/project/zx297520v3/include/infra/ram_base_config_7520v3.h
+++ /dev/null
@@ -1,347 +0,0 @@
-/*******************************************************************************

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

-* 

-* ÎļþÃû³Æ:     ram_config_7520v3.h

-* Îļþ±êʶ:     ram_config_7520v3.h

-* ÄÚÈÝÕªÒª:     zx297520v3оƬƽ̨´æ´¢µØÖ·ÅäÖÃÍ·Îļþ

-* ʹÓ÷½·¨:     #include "ram_config.h"

-* 

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

-* ------------------------------------------------------------------------------

-* 2015/06/08      V1.0        Create          ÁõÑÇÄÏ          ´´½¨

-* 

-*******************************************************************************/

-

-#ifndef _RAM_BASE_CONFIG_7520V3

-#define _RAM_BASE_CONFIG_7520V3

-

-/*******************************************************************************

-*                                   Í·Îļþ                                     *

-*******************************************************************************/

-

-/*******************************************************************************

-*                                   ºê¶¨Òå                                     *

-*******************************************************************************/

-

-/* IRAM0»ùµØÖ· */

-#ifdef DDR_BASE_ADDR_LINUX_VA

-#define IRAM_BASE_ADDR                  ((unsigned long)(ZX_IRAM0_BASE))

-#else

-#define IRAM_BASE_ADDR                  (0x82000000UL>>CPU_SHIFT)

-#endif

-#define IRAM_BASE_LEN                   (0x00010000UL>>CPU_SHIFT)

-

-/* 1K, Òì³£ÏòÁ¿±í: 0x82000000/0x41000000 */

-#define IRAM_BASE_ADDR_VECTOR           (IRAM_BASE_ADDR) 

-#define IRAM_BASE_LEN_VECTOR            ((1 * 1024UL)>>CPU_SHIFT)

-#define OTP_SECURE_PUK_BASE              IRAM_BASE_ADDR_VECTOR + 0x4

-

-/* 12K£¬Çý¶¯ºË¼äͨѶ */

-#define IRAM_BASE_ADDR_DRV              (IRAM_BASE_ADDR_VECTOR + IRAM_BASE_LEN_VECTOR)

-#define IRAM_BASE_LEN_DRV               ((12 * 1024UL)>>CPU_SHIFT)

-

-/* 1K£¬Ê¡µçÃüÁî½»»¥ */

-#define IRAM_BASE_ADDR_PSM              (IRAM_BASE_ADDR_DRV + IRAM_BASE_LEN_DRV)

-#define IRAM_BASE_LEN_PSM               ((1 * 1024UL)>>CPU_SHIFT)

-

-/* 4K£¬PSÓëPHYÐÅÏ¢½»»¥£¬¹«¹²ÒµÎñ  */

-#define IRAM_BASE_ADDR_PUB              (IRAM_BASE_ADDR_PSM + IRAM_BASE_LEN_PSM)

-#define IRAM_BASE_LEN_PUB               ((4 * 1024UL)>>CPU_SHIFT)

-

-/* 512B£¬PSÓëPHYÐÅÏ¢½»»¥£¬É䯵¹«¹²ÒµÎñ  */

-#define IRAM_BASE_ADDR_PUB_RF           (IRAM_BASE_ADDR_PUB)

-#define IRAM_BASE_LEN_PUB_RF            (512UL>>CPU_SHIFT)

-

-/* 32B£¬¸¨Ä£Ê½AFC»º´æÊý¾Ý¿Õ¼ä    */

-#define IRAM_BASE_ADDR_SLAVE_AFC        (IRAM_BASE_ADDR_PUB_RF + IRAM_BASE_LEN_PUB_RF)

-#define IRAM_BASE_LEN_SLAVE_AFC         (32UL>>CPU_SHIFT)

-

-/* 1K£¬Î¿ØÊý¾Ý´æ·Å  */

-#define IRAM_BASE_ADDR_TPC              (IRAM_BASE_ADDR_PUB + IRAM_BASE_LEN_PUB)

-#define IRAM_BASE_LEN_TPC               ((1 * 1024UL)>>CPU_SHIFT)

-

-/* 2K£¬ÖжÏÏ̹߳켣´æ·Å */

-#define IRAM_BASE_ADDR_OS_STATISTIC     (IRAM_BASE_ADDR_TPC + IRAM_BASE_LEN_TPC)

-#define IRAM_BASE_LEN_OS_STATISTIC      ((2 * 1024UL)>>CPU_SHIFT)

-

-/* 1K,ϵͳ¸ú×ټǼ */

-#define IRAM_BASE_ADDR_SYS_TRACE        (IRAM_BASE_ADDR_OS_STATISTIC + IRAM_BASE_LEN_OS_STATISTIC)

-#define IRAM_BASE_LEN_SYS_TRACE         ((1 * 1024UL)>>CPU_SHIFT)

-

-/* IRAM ICPµØÖ·     */

-#define ICP_CMD_BASE_ADDR               (IRAM_BASE_ADDR)

-#define ICP_DRV_BASE_ADDR               (IRAM_BASE_ADDR_DRV)

-#define DUAL_STANDBY_INTERF_GSM_USE_INFO_BASE_ADDR  (IRAM_BASE_ADDR_GSM)

-

-/* ¸÷ºËIRAM¹ì¼£µØÖ· */

-#define IRAM_BASE_ADDR_OS_STATISTIC_PSCPU   (IRAM_BASE_ADDR_OS_STATISTIC)

-#define IRAM_BASE_LEN_OS_STATISTIC_PSCPU    (0x200UL>>CPU_SHIFT)

-#define IRAM_BASE_ADDR_OS_STATISTIC_PHYCPU  (IRAM_BASE_ADDR_OS_STATISTIC_PSCPU + IRAM_BASE_LEN_OS_STATISTIC_PSCPU)

-#define IRAM_BASE_LEN_OS_STATISTIC_PHYCPU   (0x200UL>>CPU_SHIFT)

-#define IRAM_BASE_ADDR_OS_STATISTIC_APCPU   (IRAM_BASE_ADDR_OS_STATISTIC_PHYCPU + IRAM_BASE_LEN_OS_STATISTIC_PHYCPU)

-#define IRAM_BASE_LEN_OS_STATISTIC_APCPU    (0x400UL>>CPU_SHIFT)

-

-/* ¸÷ºËIRAM¸ú×ÙµØÖ· */

-#define IRAM_BASE_ADDR_SYS_TRACE_RMCPU      (IRAM_BASE_ADDR_SYS_TRACE)

-#define IRAM_BASE_ADDR_SYS_TRACE_APCPU      (IRAM_BASE_ADDR_SYS_TRACE + (0x10>>CPU_SHIFT))

-#define IRAM_BASE_ADDR_SYS_TRACE_PSCPU      (IRAM_BASE_ADDR_SYS_TRACE + (0x20>>CPU_SHIFT))

-#define IRAM_BASE_ADDR_SYS_TRACE_PHYCPU     (IRAM_BASE_ADDR_SYS_TRACE + (0x30>>CPU_SHIFT))

-

-/* phy logÓÅ»¯·½°¸¸´Óà IRAM_BASE_ADDR_SYS_TRACE ºó512×Ö½Ú¿Õ¼ä */

-#define IRAM_BASE_ADDR_ZCAT_PHY_LOG         (IRAM_BASE_ADDR_SYS_TRACE + (0x200>>CPU_SHIFT))

-

-/* phy log¶ªÊ§¸ú×Ù·½°¸¸´Óà IRAM_BASE_ADDR_SYS_TRACE ºó64×Ö½Ú¿Õ¼ä */

-#define IRAM_BASE_PHY_LOG_DROP_TRACE    	(IRAM_BASE_ADDR_ZCAT_PHY_LOG + (0x200>>CPU_SHIFT) - (0x40>>CPU_SHIFT))

-

-/* ¼Ç¼ramdumpģʽ: 4×Ö½Ú¿Õ¼ä*/

-#define IRAM_BASE_ADDR_RAMDUMP_MODE         (IRAM_BASE_PHY_LOG_DROP_TRACE - (0x04>>CPU_SHIFT))

-

-/* ¼Ç¼SHM bufferµØÖ·: 16×Ö½Ú¿Õ¼ä*/

-#define IRAM_BASE_ADDR_SHM_REMOTE_REGION    (IRAM_BASE_ADDR_RAMDUMP_MODE - (0x10>>CPU_SHIFT))

-

-/* ¼Ç¼zcatģʽ: 4×Ö½Ú¿Õ¼ä*/

-#define IRAM_BASE_ADDR_ZCAT_MODE            (IRAM_BASE_ADDR_SHM_REMOTE_REGION - (0x04>>CPU_SHIFT))

-

-/* ¸´Óù켣µÄǰ4¸ö×ֽڼǼboot´«µÝµÄDDR sizeÐÅÏ¢ */

-#define IRAM_BASE_ADDR_BOOT_DDR             (IRAM_BASE_ADDR_DRV - (0x04>>CPU_SHIFT))

-

-/* IRAM1»ùµØÖ· */

-#ifdef  DDR_BASE_ADDR_LINUX_VA

-#define IRAM1_BASE_ADDR                  ((unsigned long)(ZX_IRAM1_BASE))

-#else

-#define IRAM1_BASE_ADDR                  (0x00100000>>CPU_SHIFT)

-#endif

-#define IRAM1_BASE_LEN                   (0x00003000>>CPU_SHIFT)

-

-

-#define DDR_BASE_ADDR                   (0x20000000UL>>CPU_SHIFT)

-

-/* 3M£¬ÎïÀí²ã°æ±¾£¬ÓÉPS¼ÓÔØ  */

-/* 7520µÄZSPÅäÖÃΪ·ÇCacheÇø£¬Ö»ÄÜÅäÖÃ4¸ö¶Î£¬ÇÒÿ¸ö¶ÎµØÖ·»¹ÓÐÌØ¶¨ÒªÇ󣬸õØÖ·±ä¶¯ÐèÓëÎïÀí²ãÈ·ÈÏ */

-#ifdef  DDR_BASE_ADDR_LINUX_VA

-#define DDR_BASE_ADDR_PHY               ((unsigned long)(ZX_DDR_PHYCODE_BASE))

-#else

-#define DDR_BASE_ADDR_PHY               (DDR_BASE_ADDR)

-#endif

-

-#ifdef _USE_LTE_ONLY

-#define DDR_BASE_LEN_PHY                (0x00200000UL>>CPU_SHIFT)

-#else

-#define DDR_BASE_LEN_PHY                (0x00300000UL>>CPU_SHIFT)

-#endif

-#define DDR_BASE_OFF_PHY                (0)

-

-/* 1.5M£¬ÎïÀí²ãDATA/HARQ/CRC */

-#define DDR_BASE_ADDR_PHY_DATA          (DDR_BASE_ADDR_PHY + DDR_BASE_LEN_PHY)

-#define DDR_BASE_LEN_PHY_DATA           (0x00180000UL>>CPU_SHIFT)

-#define DDR_BASE_OFF_PHY_DATA           (DDR_BASE_OFF_PHY + DDR_BASE_LEN_PHY)

-

-/* 1.0M£¬Ð­ÒéÕ»ÓëÎïÀí²ã½»»¥ */ 

-#define DDR_BASE_ADDR_LTE_DATA          (DDR_BASE_ADDR_PHY + DDR_BASE_LEN_PHY) //DDR_BASE_LEN_PHY_NV

-#define DDR_BASE_LEN_LTE_DATA           (0x00100000UL>>CPU_SHIFT)

-#define DDR_BASE_OFF_LTE_DATA           (DDR_BASE_OFF_PHY + DDR_BASE_LEN_PHY)

-

-/* 0.25M£¬Ö§³Åµ¼³öRamdump       */

-#define DDR_BASE_ADDR_RAMDUMP           (DDR_BASE_ADDR_LTE_DATA + DDR_BASE_LEN_LTE_DATA)

-#define DDR_BASE_LEN_RAMDUMP            (0x00040000UL>>CPU_SHIFT)

-#define DDR_BASE_OFF_RAMDUMP            (DDR_BASE_OFF_LTE_DATA + DDR_BASE_LEN_LTE_DATA)

-

-#ifdef _USE_VEHICLE_DC /* ³µÔØË«ºËLinux */

-/* 37.75M£¬AP¹²ºË°æ±¾(´Ë´óСÊǰ´ÕÕº¬CAPºËµÄ64MÄÚ´æÅäÖö¨Ò壬¸Ãºê±ð´¦²»»á±»Ê¹ÓÃ) */

-#define DDR_BASE_ADDR_AP                (DDR_BASE_ADDR_RAMDUMP + DDR_BASE_LEN_RAMDUMP)

-#define DDR_BASE_LEN_AP                 (0x025C0000UL>>CPU_SHIFT)

-#define DDR_BASE_OFF_AP                 (DDR_BASE_OFF_RAMDUMP + DDR_BASE_LEN_RAMDUMP)

-

-/* 2M, share memory between ap and cap */

-#define DDR_BASE_ADDR_CAP_BUF           (DDR_BASE_ADDR_AP + DDR_BASE_LEN_AP)

-#define DDR_BASE_LEN_CAP_BUF            (0x00200000UL>>CPU_SHIFT)

-#define DDR_BASE_OFF_CAP_BUF            (DDR_BASE_OFF_AP + DDR_BASE_LEN_AP)

-

-/* 84M/212M, cap°æ±¾ */

-#define DDR_BASE_ADDR_CAP               (DDR_BASE_ADDR_CAP_BUF + DDR_BASE_LEN_CAP_BUF)

-#define DDR_BASE_LEN_CAP                (0x05400000UL>>CPU_SHIFT)

-#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))

-#else

-/* 42.75M£¬AP¹²ºË°æ±¾(´Ë´óСÊǰ´ÕÕº¬CAPºËµÄ64MÄÚ´æÅäÖö¨Ò壬¸Ãºê±ð´¦²»»á±»Ê¹ÓÃ) */

-#define DDR_BASE_ADDR_AP                (DDR_BASE_ADDR_RAMDUMP + DDR_BASE_LEN_RAMDUMP)

-#ifdef _USE_LTE_ONLY

-#define DDR_BASE_LEN_AP                 (0x02BC0000UL>>CPU_SHIFT)

-#else

-#define DDR_BASE_LEN_AP                 (0x02AC0000UL>>CPU_SHIFT)

-#endif

-#define DDR_BASE_OFF_AP                 (DDR_BASE_OFF_RAMDUMP + DDR_BASE_LEN_RAMDUMP)

-

-/* 1M, share memory between ap and cap */

-#define DDR_BASE_ADDR_CAP_BUF           (DDR_BASE_ADDR_AP + DDR_BASE_LEN_AP)

-#ifndef DDR_BASE_LEN_CAP_BUF

-#define DDR_BASE_LEN_CAP_BUF            (0x00100000UL>>CPU_SHIFT)

-#endif

-#define DDR_BASE_OFF_CAP_BUF            (DDR_BASE_OFF_AP + DDR_BASE_LEN_AP)

-

-/* 16M, cap°æ±¾ */

-#define DDR_BASE_ADDR_CAP               (DDR_BASE_ADDR_CAP_BUF + DDR_BASE_LEN_CAP_BUF)

-#ifndef DDR_BASE_LEN_CAP

-#define DDR_BASE_LEN_CAP                (0x01000000UL>>CPU_SHIFT)

-#endif

-#define DDR_BASE_OFF_CAP                (DDR_BASE_OFF_CAP_BUF + DDR_BASE_LEN_CAP_BUF)

-#endif

-

-#define DDR_BASE_PHYCODE_ADDR_PA     	(DDR_BASE_ADDR)

-#define DDR_BASE_MODEM_ADDR_PA       	(DDR_BASE_PHYCODE_ADDR_PA + DDR_BASE_LEN_PHY)

-#define DDR_BASE_MODEM_SIZE          	(DDR_BASE_LEN_LTE_DATA + DDR_BASE_LEN_RAMDUMP)

-#define DDR_BASE_AP_ADDR_PA             (DDR_BASE_MODEM_ADDR_PA + DDR_BASE_MODEM_SIZE)

-

-#define DDR_BASE_CAPBUF_ADDR_PA         (DDR_BASE_AP_ADDR_PA + DDR_BASE_LEN_AP)

-#define DDR_BASE_CAP_ADDR_PA            (DDR_BASE_CAPBUF_ADDR_PA + DDR_BASE_LEN_CAP_BUF)

-

-

-/* 1M£¬ÎïÀí²ãNV     ¿Õ¼ä¸´Óà         */

-#define DDR_BASE_ADDR_PHY_NV            (DDR_BASE_ADDR_LTE_DATA)

-#define DDR_BASE_LEN_PHY_NV             (0x00100000UL>>CPU_SHIFT)

-

-/* 0.375M£¬Çý¶¯Ê¡µç·þÓÃPS<->PHY½»»¥¿Õ¼ä */

-#define DDR_BASE_ADDR_PSM               (DDR_BASE_ADDR_LTE_DATA)

-#define DDR_BASE_LEN_PSM                (0x00060000UL>>CPU_SHIFT)

-#define DDR_BASE_OFF_PSM                (DDR_BASE_OFF_RAMDUMP)

-

-/* 1M£¬Ð­ÒéÕ»ÓëÎïÀí²ã½»»¥  ¿Õ¼ä¸´Óà */

-#define DDR_BASE_ADDR_WCDMA_DATA        (DDR_BASE_ADDR_LTE_DATA)

-#define DDR_BASE_LEN_WCDMA_DATA         (DDR_BASE_LEN_LTE_DATA)

-

-#if 0

-/* PsBuffer»ùÖ· */

-#define PS_BUF_BASE_ADDR                (DDR_BASE_ADDR_PSBUF)

-#endif

-

-/* ICP»ùÖ·      */

-#define ICP_DATA_BASE_ADDR              (DDR_BASE_ADDR_LTE_DATA)

-

-/* WCDMA»ùÖ·    */

-#define DDR_BASE_ADDR_FOR_W             (DDR_BASE_ADDR_WCDMA_DATA)

-

-/* ¹¤¾ß´úÀí»ùÖ· */

-/* #define TOOL_AGENT_BASE_ADDR            (DDR_BASE_ADDR_TOOL_AGENT) */

-

-#if 0

-/* PPP»ùÖ·      */

-#define PLAT_PPP_BASE_ADDR              (PS_BUF_BASE_ADDR)

-#endif

-

-/**/

-#define SHARE_BUF_AP_CP_BASE_ADDR       (DDR_BASE_ADDR_AP_CP_SHAREBUF)

-

-#if defined(_USE_CAP_SYS) || defined(_USE_VEHICLE_DC)

-#define ICP_CAP_BUF_ADDR                DDR_BASE_ADDR_CAP_BUF

-#define ICP_CAP_BUF_LEN                 ((924 * 1024UL)>>CPU_SHIFT)

-#define TOOL_CAP_BUF_ADDR               (ICP_CAP_BUF_ADDR + ICP_CAP_BUF_LEN)

-#define TOOL_CAP_BUF_LEN                ((60 * 1024UL)>>CPU_SHIFT)

-#define RINGBUF_CAP_TO_AP_ADDR          (TOOL_CAP_BUF_ADDR + TOOL_CAP_BUF_LEN)

-#define RINGBUF_CAP_TO_AP_LEN           ((32  * 1024UL)>>CPU_SHIFT)

-#define ADB_CAP_BUF_ADDR                (RINGBUF_CAP_TO_AP_ADDR + RINGBUF_CAP_TO_AP_LEN)

-#define ADB_CAP_BUF_LEN                 ((4 * 1024UL)>>CPU_SHIFT)

-#define RAMDUMP_CAP_CMM_BUF_ADDR        (ADB_CAP_BUF_ADDR + ADB_CAP_BUF_LEN)

-#define RAMDUMP_CAP_CMM_BUF_LEN         ((4 * 1024UL)>>CPU_SHIFT)

-#define RINGBUF_AP_TO_CAP_ADDR          (RAMDUMP_CAP_CMM_BUF_ADDR + RAMDUMP_CAP_CMM_BUF_LEN)

-#define RINGBUF_AP_TO_CAP_LEN           ((128 * 1024UL)>>CPU_SHIFT)

-#define TOOL_ZSP_TO_CAP_LOG_ADDR        (RINGBUF_AP_TO_CAP_ADDR + RINGBUF_AP_TO_CAP_LEN)

-#define TOOL_ZSP_TO_CAP_LOG_LEN         ((384 * 1024UL)>>CPU_SHIFT)

-#define RAMDUMP_AP_TO_CAP_BUF_ADDR      (TOOL_ZSP_TO_CAP_LOG_ADDR + TOOL_ZSP_TO_CAP_LOG_LEN)

-#define RAMDUMP_AP_TO_CAP_BUF_LEN       ((128 * 1024UL)>>CPU_SHIFT)

-#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)

-

-#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)

-#define ADB_CAP_BUF_ADDR_PA             (RINGBUF_CAP_TO_AP_ADDR_PA + RINGBUF_CAP_TO_AP_LEN)

-#define RAMDUMP_CAP_CMM_BUF_ADDR_PA     (ADB_CAP_BUF_ADDR_PA + ADB_CAP_BUF_LEN)

-#define RINGBUF_AP_TO_CAP_ADDR_PA       (RAMDUMP_CAP_CMM_BUF_ADDR_PA + RAMDUMP_CAP_CMM_BUF_LEN)

-#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)

-#endif

-

-/* 7520V3оƬIRAM0ѹËõ£¬Ð­ÒéÕ»ÎïÀí²ã½»»¥¿Õ¼äÒÆ¶¯µ½DDR£¬¸´ÓÃRamdump¿Õ¼ä */

-/* 34K£¬PSÓëPHYÐÅÏ¢½»»¥£¬LTEÒµÎñ */

-/* #define IRAM_BASE_ADDR_LTE              (DDR_BASE_ADDR_RAMDUMP) */

-/* 10K£¬PSÓëPHYÐÅÏ¢½»»¥£¬LTEÒµÎñ ʹÓÃIRAM0£¬¹¦ºÄÓÅ»¯ 7K+3K, 3k for embms*/

-#define IRAM_BASE_ADDR_LTE              (IRAM_BASE_ADDR_SYS_TRACE + IRAM_BASE_LEN_SYS_TRACE)

-#define IRAM_BASE_LEN_LTE               ((10 * 1024UL)>>CPU_SHIFT)

-

-/* 24K£¬PSÓëPHYµÄICP½»»¥£¬Ê¹ÓÃIRAM*/

-#define IRAM_BASE_ADDR_PS_PHY_SHAREBUF    (IRAM_BASE_ADDR_LTE + IRAM_BASE_LEN_LTE)

-#define IRAM_BASE_LEN_PS_PHY_SHAREBUF    ((24 * 1024UL)>>CPU_SHIFT)

-

-/* 221K£¬PSÓëPHYµÄICP½»»¥£¬Ê¹ÓÃDDR, ¸´ÓÃRAMDUMP*/

-#define DDR_BASE_ADDR_PS_PHY_SHAREBUF    (DDR_BASE_ADDR_RAMDUMP)

-#define DDR_BASE_LEN_PS_PHY_SHAREBUF    ((221 * 1024UL)>>CPU_SHIFT)

-

-/* 2k£¬zsp RAMDUMP*/

-#define DDR_BASE_ADDR_PHY_RAMDUMP        (DDR_BASE_ADDR_PS_PHY_SHAREBUF + DDR_BASE_LEN_PS_PHY_SHAREBUF)

-#define DDR_BASE_LEN_PHY_RAMDUMP        ((2 * 1024UL)>>CPU_SHIFT)

-

-/* 1K£¬PSÓëPHYÐÅÏ¢½»»¥£¬TDÒµÎñ ʹÓÃDDR*/

-#define IRAM_BASE_ADDR_TD               (DDR_BASE_ADDR_PHY_RAMDUMP + DDR_BASE_LEN_PHY_RAMDUMP)

-/* #define IRAM_BASE_LEN_TD                ((25 * 1024UL)>>CPU_SHIFT) */

-#define IRAM_BASE_LEN_TD                ((1 * 1024UL)>>CPU_SHIFT)

-

-/* 12K£¬PSÓëPHYÐÅÏ¢½»»¥£¬WÒµÎñ ʹÓÃDDR*/

-#define IRAM_BASE_ADDR_WCDMA            (IRAM_BASE_ADDR_TD + IRAM_BASE_LEN_TD)

-/* #define IRAM_BASE_LEN_WCDMA             ((48 * 1024UL)>>CPU_SHIFT) */

-#define IRAM_BASE_LEN_WCDMA             ((12 * 1024UL)>>CPU_SHIFT)

-

-/* 20K£¬W UPA ¿Õ¼ä */

-#define DDR_BASE_ADDR_WUPA_DATA         (IRAM_BASE_ADDR_WCDMA + IRAM_BASE_LEN_WCDMA)

-#define DDR_BASE_LEN_WUPA_DATA          ((20 * 1024UL)>>CPU_SHIFT)

-

-/* IRAM WCDMA»ùÖ·   */

-#define IRAM_BASE_ADDR_FOR_W            (IRAM_BASE_ADDR_WCDMA)

-

-/* DPRAM»ùÖ·        */

-#define DPRAM_BASE_ADDR                 (IRAM_BASE_ADDR_TD)

-

-/* DPRAM DDR»ùÖ·    */

-#define DPRAM_MEM_BASE_ADDR             (IRAM_BASE_ADDR_TD)

-

-/* PS tcm config for ramdump */

-#define RAMDUMP_PS_ITCM_BASE_EXTER      (0x0)

-#define RAMDUMP_PS_ITCM_BASE_INTER      (0x0)

-#define RAMDUMP_PS_ITCM_SIZE            (0x0)

-#define RAMDUMP_PS_DTCM_BASE_EXTER      (0x0)

-#define RAMDUMP_PS_DTCM_BASE_INTER      (0x0)

-#define RAMDUMP_PS_DTCM_SIZE            (0x0)

-

-/* ZSP Ramdump */

-/* #ifdef _USE_ZSP_RAMDUMP */

-# define RAMDUMP_ZSP_ITCM_BASE          (0x81040000UL)

-# define RAMDUMP_ZSP_ITCM_SIZE          (0x00010000UL)

-# define RAMDUMP_ZSP_DTCM_BASE          (0x81000000UL)

-# define RAMDUMP_ZSP_DTCM_SIZE          (0x00010000UL)

-

-# define RAMDUMP_ZSP_CODE_SIZE          (0x1b0000>>CPU_SHIFT)

-# define RAMDUMP_ZSP_IDDR_BASE          (DDR_BASE_ADDR_PHY)

-# define RAMDUMP_ZSP_IDDR_SIZE          (RAMDUMP_ZSP_CODE_SIZE)

-# define RAMDUMP_ZSP_DDDR_BASE          (RAMDUMP_ZSP_IDDR_BASE + RAMDUMP_ZSP_CODE_SIZE)

-# define RAMDUMP_ZSP_DDDR_SIZE          (DDR_BASE_LEN_PHY - RAMDUMP_ZSP_CODE_SIZE)

-

-# define RAMDUMP_ZSP_ITCM_SELF_BASE     (0x0)

-# define RAMDUMP_ZSP_DTCM_SELF_BASE     (0x10000UL)

-/* #endif */

-

-/*******************************************************************************

-*                                Êý¾ÝÀàÐͶ¨Òå                                  *

-*******************************************************************************/

-

-/*******************************************************************************

-*                                È«¾Ö±äÁ¿ÉùÃ÷                                  *

-*******************************************************************************/

-

-/*******************************************************************************

-*                                È«¾Öº¯ÊýÉùÃ÷                                  *

-*******************************************************************************/

-

-#endif  // #ifndef _RAM_BASE_CONFIG_7520V3

-