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, ¶meter, &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, ¶ms, &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, ¶meter, &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, ¶m)) //еÄ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
-